From 7d418c4db0c3342e28ad0c3a266ddb34362e8cf5 Mon Sep 17 00:00:00 2001 From: Will Date: Sat, 15 Jun 2019 20:36:44 +0200 Subject: [PATCH 01/86] WIP: Conversion to ts The linter has no more error The project builds Polkabot starts but fails shortly after --- .eslintignore | 2 + .eslintrc.yml | 40 + package.json | 36 +- src/{index.js => index.ts} | 32 +- .../{plugin-loader.js => plugin-loader.ts} | 12 +- .../{plugin-scanner.js => plugin-scanner.ts} | 12 +- src/polkabot.js | 6 +- tsconfig.json | 35 + yarn.lock | 1586 +++++------------ 9 files changed, 572 insertions(+), 1189 deletions(-) create mode 100644 .eslintignore create mode 100644 .eslintrc.yml rename src/{index.js => index.ts} (91%) rename src/lib/{plugin-loader.js => plugin-loader.ts} (73%) rename src/lib/{plugin-scanner.js => plugin-scanner.ts} (82%) create mode 100644 tsconfig.json diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000..e3fbd98 --- /dev/null +++ b/.eslintignore @@ -0,0 +1,2 @@ +build +node_modules diff --git a/.eslintrc.yml b/.eslintrc.yml new file mode 100644 index 0000000..e396988 --- /dev/null +++ b/.eslintrc.yml @@ -0,0 +1,40 @@ +env: + browser: true + es6: true + node: true +extends: + - "eslint:recommended" + - "plugin:@typescript-eslint/eslint-recommended" + - "plugin:@typescript-eslint/recommended" +globals: + Atomics: readonly + SharedArrayBuffer: readonly +parserOptions: + ecmaVersion: 2018 + sourceType: module +plugins: ["@typescript-eslint"] +rules: { + "no-console": "off", + "no-undef": "off", + "@typescript-eslint/explicit-function-return-type": ["warn", { + "allowExpressions": true + }], + "@typescript-eslint/no-use-before-define": "warn", + '@typescript-eslint/indent': ['error', 2], + "no-warning-comments": ["warn", { + "terms": + ["todo", "fixme", "xxx"], "location": "anywhere" + } + ], + "no-unused-vars": "off", + "@typescript-eslint/no-unused-vars": [ + "error", { + "vars": "all", + "args": "after-used", + "ignoreRestSiblings": true, + "argsIgnorePattern": "^_", + "varsIgnorePattern": "^_" } + ], + quotes: ["error", "single"] +} +parser: "@typescript-eslint/parser" diff --git a/package.json b/package.json index 9fe8825..5bac2a5 100644 --- a/package.json +++ b/package.json @@ -9,13 +9,13 @@ "repository": "https://gitlab.com/Polkabot/polkabot", "scripts": { "dev": "nodemon ./src/polkabot -c ./config.js --exec babel-node --presets env", - "start": "yarn patch; babel-node ./src/polkabot -c ./config.js", - "test": "mocha --timeout 5000 --require babel-core/register test/* --exit", + "build": "tsc --build tsconfig.json", + "start": "yarn build && node build/src/polkabot.js", + "test": "yarn lint --quiet && yarn build && mocha --recursive build/test --exit", "test:local": "mocha --require babel-core/register test/* --exit", "test:watch": "mocha --watch --require babel-core/register test/* --exit", - "lint": "standard", + "lint": "eslint --ext .js,.ts src", "clean": "rm -rf .nyc_output build coverage node_modules out dist", - "build": "babel src -d dist --ignore config*.js", "prepublishOnly": "npm run build", "build:doc": "jsdoc -r -d out -c jsdoc.conf", "build:docker": "docker build -t chevdor/polkabot .", @@ -32,30 +32,38 @@ "Matrix.org" ], "dependencies": { - "@polkadot/api": "0.80.1", + "@polkadot/api": "0.81.1", "bn.js": "^4.11.8", "matrix-js-sdk": "^1.0.4", - "minimongo": "^5.1.2", + "minimongo": "^5.3.0", "nedb": "^1.8.0", "olm": "https://matrix.org/packages/npm/olm/olm-3.0.0.tgz", "yargs": "13.2.4" }, "devDependencies": { - "babel-cli": "^6.0.0", - "babel-core": "^6.26.0", - "babel-eslint": "^10.0.1", - "babel-polyfill": "^6.26.0", - "babel-preset-env": "^1.6.1", - "babel-register": "^6.26.0", + "@types/dotenv": "^6.1.1", + "@types/mocha": "^5.2.7", + "@typescript-eslint/eslint-plugin": "^1.10.2", + "@typescript-eslint/parser": "^1.10.2", "chai": "4.2.0", "chai-http": "4.3.0", "dotenv": "8.0.0", + "eslint": "^5.16.0", + "eslint-config-prettier": "^5.0.0", + "eslint-config-standard": "^12.0.0", + "eslint-plugin-import": "^2.17.3", + "eslint-plugin-node": "^9.1.0", + "eslint-plugin-promise": "^4.1.1", + "eslint-plugin-react": "^7.13.0", + "eslint-plugin-standard": "^4.0.0", "jsdoc": "3.6.2", "jsdoc-route-plugin": "^0.1.0", - "mocha": "6.1.4", + "mocha": "^6.1.4", "nodemon": "1.19.1", "snazzy": "^8.0.0", - "standard": "12.0.1" + "standard": "12.0.1", + "typescript": "^3.5.1", + "yarn": "^1.16.0" }, "standard": { "parser": "babel-eslint", diff --git a/src/index.js b/src/index.ts similarity index 91% rename from src/index.js rename to src/index.ts index ef1d369..96083d2 100644 --- a/src/index.js +++ b/src/index.ts @@ -1,5 +1,5 @@ -import 'babel-core/register' -import 'babel-polyfill' +// import 'babel-core/register' +// import 'babel-polyfill' import Olm from 'olm' import minimongo from 'minimongo' import { ApiPromise, WsProvider } from '@polkadot/api' @@ -8,11 +8,11 @@ import Datastore from 'nedb' import pkg from '../package.json' import PluginScanner from './lib/plugin-scanner' import PluginLoader from './lib/plugin-loader' +import * as path from 'path' +import sdk from 'matrix-js-sdk' -var path = require('path') - +//@ts-ignore global.Olm = Olm -const sdk = require('matrix-js-sdk') // comment out if you need to trouble shoot matrix issues // matrix.on('event', function (event) { @@ -20,12 +20,18 @@ const sdk = require('matrix-js-sdk') // }) export default class Polkabot { - constructor (args) { + private args: any; + private db: any; + private config: any; + private matrix: any; + private polkadot: any; + + public constructor (args) { this.args = args this.db = new Datastore({ filename: 'polkabot.db' }) } - loadPlugins () { + private loadPlugins (): void { console.log('Polkabot - Loading plugins:') const pluginScanner = new PluginScanner(pkg.name + '-plugin') @@ -33,7 +39,7 @@ export default class Polkabot { if (err) console.error(err) const pluginLoader = new PluginLoader(module) pluginLoader.load(Plugin => { - let plugin = new Plugin({ + const plugin = new Plugin({ config: this.config, pkg: pkg, db: this.db, @@ -50,7 +56,7 @@ export default class Polkabot { }) } - start (syncState) { + private start (_syncState): void { // Send message to the room notifying users of the bot's state // we dont want to bother users, the following should be removed @@ -79,9 +85,9 @@ export default class Polkabot { this.loadPlugins() } - async run () { + public async run () { console.log(`${pkg.name} v${pkg.version}`) - console.log(`===========================`) + console.log('===========================') const configLocation = this.args.config ? this.args.config @@ -140,7 +146,7 @@ export default class Polkabot { } } - this.matrix.once('sync', (state, prevState, data) => { + this.matrix.once('sync', (state, _prevState, _data) => { switch (state) { case 'PREPARED': console.log(`Polkabot - Detected client sync state: ${state}`) @@ -174,7 +180,7 @@ export default class Polkabot { this.matrix.startClient(this.config.matrix.MESSAGES_TO_SHOW || 20) } - isCustomBaseUrl () { + private isCustomBaseUrl () { const { baseUrl } = this.config.matrix return baseUrl && baseUrl !== 'https://matrix.org' diff --git a/src/lib/plugin-loader.js b/src/lib/plugin-loader.ts similarity index 73% rename from src/lib/plugin-loader.js rename to src/lib/plugin-loader.ts index c91babd..bf436f7 100644 --- a/src/lib/plugin-loader.js +++ b/src/lib/plugin-loader.ts @@ -1,17 +1,21 @@ -var path = require('path') -const fs = require('fs') +/* eslint-disable @typescript-eslint/no-var-requires */ +import * as path from 'path' +import * as fs from 'fs' export default class PluginLoader { - constructor (plugin) { + private plugin: any; + + public constructor (plugin) { this.plugin = plugin } - load (cb) { + public load (cb: Function) { // console.log('loading ', this.plugin.path) fs.realpath(this.plugin.path, (err, pluginPath) => { if (err) console.log('ERR:', err) // console.log('Resolved ' + this.plugin.path + ' to ' + pluginPath) + const plugin = require(pluginPath) const pkg = require(path.join(pluginPath, 'package.json')) console.log(` - ${pkg.name} version ${pkg.version} from ${pkg.author.name || pkg.author}`) diff --git a/src/lib/plugin-scanner.js b/src/lib/plugin-scanner.ts similarity index 82% rename from src/lib/plugin-scanner.js rename to src/lib/plugin-scanner.ts index e48fda8..29949dc 100644 --- a/src/lib/plugin-scanner.js +++ b/src/lib/plugin-scanner.ts @@ -1,17 +1,19 @@ -var path = require('path') -var fs = require('fs') +import * as path from 'path' +import * as fs from 'fs' export default class PluginScanner { - constructor (name) { + private name: string; + + public constructor (name) { this.name = name } // FIXME - this appears to only be scanning the global npm folder. // i.e. where npm modules are installed when you run `npm install -g ` - scan (cb, done) { + public scan (cb, done) { const basepath = path.join(path.dirname(process.argv0), '../lib/node_modules') console.log('PluginScanner scanning basepath for Polkabot plugins: ', basepath) - var modules = [] + const modules = [] fs.readdir(basepath, (err, items) => { if (err) console.error(err) diff --git a/src/polkabot.js b/src/polkabot.js index e8ed8ff..b5d4067 100755 --- a/src/polkabot.js +++ b/src/polkabot.js @@ -3,13 +3,9 @@ import Polkabot from './index.js' const argv = require('yargs') .usage('Usage: $0 [options]') - .alias('c', 'config') - .nargs('c', 1) - .describe('c', 'Select config file') - .demandOption(['c']) .help('h') .alias('h', 'help') - .epilog('chevdor-(C)2018') + .epilog('chevdor-(C) 2018-2019') .argv var polkabot = new Polkabot(argv) diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..942fb8d --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,35 @@ +{ + "compilerOptions": { + "module": "commonjs", + "moduleResolution": "node", + "esModuleInterop": true, + "resolveJsonModule": true, + "allowJs": true, + "target": "es5", + "noImplicitAny": false, + "sourceMap": true, + "preserveConstEnums": true, + "lib": [ + "es2015", + "dom" + ], + "noUnusedLocals": true, + "noImplicitReturns": true, + "noImplicitThis": true, + "alwaysStrict": true, + "strictNullChecks": false, + "noUnusedParameters": false, + "pretty": true, + "allowUnreachableCode": false, + "experimentalDecorators": true, + "suppressImplicitAnyIndexErrors": true, + "outDir": "./build", + }, + "include": [ + "./bin/**/*", + "./src/**/*", + "./test/**/*", + "./package.json" + ], + "compileOnSave": true +} diff --git a/yarn.lock b/yarn.lock index adf5c80..89d5252 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9,40 +9,6 @@ dependencies: "@babel/highlight" "^7.0.0" -"@babel/generator@^7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.4.0.tgz#c230e79589ae7a729fd4631b9ded4dc220418196" - integrity sha512-/v5I+a1jhGSKLgZDcmAUZ4K/VePi43eRkUs3yePW1HB1iANOD5tqJXwGSG4BZhSksP8J9ejSlwGeTiiOFZOrXQ== - dependencies: - "@babel/types" "^7.4.0" - jsesc "^2.5.1" - lodash "^4.17.11" - source-map "^0.5.0" - trim-right "^1.0.1" - -"@babel/helper-function-name@^7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz#a0ceb01685f73355d4360c1247f582bfafc8ff53" - integrity sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw== - dependencies: - "@babel/helper-get-function-arity" "^7.0.0" - "@babel/template" "^7.1.0" - "@babel/types" "^7.0.0" - -"@babel/helper-get-function-arity@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz#83572d4320e2a4657263734113c42868b64e49c3" - integrity sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ== - dependencies: - "@babel/types" "^7.0.0" - -"@babel/helper-split-export-declaration@^7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.0.tgz#571bfd52701f492920d63b7f735030e9a3e10b55" - integrity sha512-7Cuc6JZiYShaZnybDmfwhY4UYHzI6rlqhWjaIqbsJGsIqPimEYy5uh3akSRLMg65LSdSEnJ8a8/bWQN6u2oMGw== - dependencies: - "@babel/types" "^7.4.0" - "@babel/highlight@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0.tgz#f710c38c8d458e6dd9a201afb637fcb781ce99e4" @@ -52,11 +18,6 @@ esutils "^2.0.2" js-tokens "^4.0.0" -"@babel/parser@^7.0.0", "@babel/parser@^7.4.0", "@babel/parser@^7.4.3": - version "7.4.3" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.4.3.tgz#eb3ac80f64aa101c907d4ce5406360fe75b7895b" - integrity sha512-gxpEUhTS1sGA63EGQGuA+WESPR/6tz6ng7tSHFCmaTJK/cGK8y37cBTspX+U2xCAue2IQVvF6Z0oigmjwD8YGQ== - "@babel/parser@^7.4.4": version "7.4.5" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.4.5.tgz#04af8d5d5a2b044a2a1bffacc1e5e6673544e872" @@ -69,156 +30,111 @@ dependencies: regenerator-runtime "^0.13.2" -"@babel/template@^7.1.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.4.0.tgz#12474e9c077bae585c5d835a95c0b0b790c25c8b" - integrity sha512-SOWwxxClTTh5NdbbYZ0BmaBVzxzTh2tO/TeLTbF6MO6EzVhHTnff8CdBXx3mEtazFBoysmEM6GU/wF+SuSx4Fw== - dependencies: - "@babel/code-frame" "^7.0.0" - "@babel/parser" "^7.4.0" - "@babel/types" "^7.4.0" - -"@babel/traverse@^7.0.0": - version "7.4.3" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.4.3.tgz#1a01f078fc575d589ff30c0f71bf3c3d9ccbad84" - integrity sha512-HmA01qrtaCwwJWpSKpA948cBvU5BrmviAief/b3AVw936DtcdsTexlbyzNuDnthwhOQ37xshn7hvQaEQk7ISYQ== - dependencies: - "@babel/code-frame" "^7.0.0" - "@babel/generator" "^7.4.0" - "@babel/helper-function-name" "^7.1.0" - "@babel/helper-split-export-declaration" "^7.4.0" - "@babel/parser" "^7.4.3" - "@babel/types" "^7.4.0" - debug "^4.1.0" - globals "^11.1.0" - lodash "^4.17.11" - -"@babel/types@^7.0.0", "@babel/types@^7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.4.0.tgz#670724f77d24cce6cc7d8cf64599d511d164894c" - integrity sha512-aPvkXyU2SPOnztlgo8n9cEiXW755mgyvueUPcpStqdzoSPm0fjO0vQBjLkt3JKJW7ufikfcnMTTPsN1xaTsBPA== - dependencies: - esutils "^2.0.2" - lodash "^4.17.11" - to-fast-properties "^2.0.0" - -"@polkadot/api-derive@^0.80.1": - version "0.80.1" - resolved "https://registry.yarnpkg.com/@polkadot/api-derive/-/api-derive-0.80.1.tgz#bd2eab337e33be4239c232887c7cdc1190429532" - integrity sha512-lfkCQB1OoBzM4aLLzpM2yuhZNT/ozcb2fQa+JGqMg6FhVWoIfN3KW9ZUJg6siegBbwLjB+KT5+rF4U9fIqIEvA== +"@polkadot/api-derive@^0.81.1": + version "0.81.1" + resolved "https://registry.yarnpkg.com/@polkadot/api-derive/-/api-derive-0.81.1.tgz#0b29de12c024fffab196a7f9c0a48ea80311a418" + integrity sha512-+4DQX9n/o54QElOMW/UdsOsJ4boQTLqzlZ1YC7gr3Aa7YLZt42lldLltRHHORx1P+MZ7ombfkwDiEXqrAsA8WA== dependencies: "@babel/runtime" "^7.4.5" - "@polkadot/api" "^0.80.1" - "@polkadot/keyring" "^0.92.1" - "@polkadot/types" "^0.80.1" + "@polkadot/api" "^0.81.1" + "@polkadot/types" "^0.81.1" "@types/memoizee" "^0.4.2" memoizee "^0.4.14" -"@polkadot/api@0.80.1", "@polkadot/api@^0.80.1": - version "0.80.1" - resolved "https://registry.yarnpkg.com/@polkadot/api/-/api-0.80.1.tgz#23970877b690667d7fed3424d638f4afdbfd9574" - integrity sha512-ipeB85jczdy7ka89plcUqElu4qqKmQ1Aoeu0O+Yzlpp4A42E8cv9dv5DKSkVdsd0Ack8aLXDFakcMJpo8o7MOQ== - dependencies: - "@babel/runtime" "^7.4.5" - "@polkadot/api-derive" "^0.80.1" - "@polkadot/extrinsics" "^0.80.1" - "@polkadot/rpc-provider" "^0.80.1" - "@polkadot/rpc-rx" "^0.80.1" - "@polkadot/storage" "^0.80.1" - "@polkadot/types" "^0.80.1" - "@polkadot/util-crypto" "^0.92.1" - -"@polkadot/extrinsics@^0.80.1": - version "0.80.1" - resolved "https://registry.yarnpkg.com/@polkadot/extrinsics/-/extrinsics-0.80.1.tgz#a0c066c7507cf6ca0aa4d3da6edc654a113cd5dc" - integrity sha512-It5aumfM6yvayCMPijGimJkoSR2lt8Tg84XUxnQ6Lu4x+3xyfny2vvx8z6uVQmiCu6BybgFpHpkZEts9DzBttA== +"@polkadot/api@0.81.1", "@polkadot/api@^0.81.1": + version "0.81.1" + resolved "https://registry.yarnpkg.com/@polkadot/api/-/api-0.81.1.tgz#bc4feefd6d3aa2c69093a9f8a79bbc581ea72f2b" + integrity sha512-BDB0mKxdnMk/0qfga1g42xRnEp+CQOo1mV0BRb/gmZloCR/0nef+abW2XrVvml3jbyvIBKDe5szKJbHVX/6LHQ== dependencies: "@babel/runtime" "^7.4.5" - "@polkadot/types" "^0.80.1" - "@polkadot/util" "^0.92.1" - -"@polkadot/jsonrpc@^0.80.1": - version "0.80.1" - resolved "https://registry.yarnpkg.com/@polkadot/jsonrpc/-/jsonrpc-0.80.1.tgz#fe0324b92134d9f077b6fd0e00e7c56088099e06" - integrity sha512-Idi4lJJha7TT+UC/6kPdwsTTLEb7mCI3YhnlGGKlYvTMTWmTaJvk/izhSryFEz6+D86sv5pbHTiYKU1Kn/kROw== + "@polkadot/api-derive" "^0.81.1" + "@polkadot/extrinsics" "^0.81.1" + "@polkadot/rpc-provider" "^0.81.1" + "@polkadot/rpc-rx" "^0.81.1" + "@polkadot/storage" "^0.81.1" + "@polkadot/types" "^0.81.1" + "@polkadot/util-crypto" "^0.93.1" + +"@polkadot/extrinsics@^0.81.1": + version "0.81.1" + resolved "https://registry.yarnpkg.com/@polkadot/extrinsics/-/extrinsics-0.81.1.tgz#5834c929151d201e8e0edc044131ed01f20c85f9" + integrity sha512-Te/NFukWdjfCLJaep/mMhXtSPrBPjc9RCZJtQV0SWFZSjTOchIrncgnlzzljGbWa3mq2LGwD3XvEraOAKKpf6w== dependencies: "@babel/runtime" "^7.4.5" + "@polkadot/types" "^0.81.1" + "@polkadot/util" "^0.93.1" -"@polkadot/keyring@^0.92.1": - version "0.92.1" - resolved "https://registry.yarnpkg.com/@polkadot/keyring/-/keyring-0.92.1.tgz#6841fcf5371ff148ddaf4e14891ab2a5ece8f6f1" - integrity sha512-20nvbhozxxxc8/vf90Ot9SJybbeZFtSw6ULp9vh+1315NJdtFyP7etXRYlJNW1Qyo97cImWnnlvjkNX0bRzyvQ== +"@polkadot/jsonrpc@^0.81.1": + version "0.81.1" + resolved "https://registry.yarnpkg.com/@polkadot/jsonrpc/-/jsonrpc-0.81.1.tgz#804bac1c698859220085d8bc3cb37725519b0dee" + integrity sha512-0L4wMEiE5A+nXXeL7acgXImYtfwAMlyND/tBvoketSQ5xwcd3UbiepNfA3idK3KY1QKShaoBmHuNDdwlGXDNIg== dependencies: "@babel/runtime" "^7.4.5" - "@polkadot/util" "^0.92.1" - "@polkadot/util-crypto" "^0.92.1" - "@types/bs58" "^4.0.0" - bs58 "^4.0.1" -"@polkadot/rpc-core@^0.80.1": - version "0.80.1" - resolved "https://registry.yarnpkg.com/@polkadot/rpc-core/-/rpc-core-0.80.1.tgz#1da1b5f6c0fc2659e21654ad5b33eded8e7f2da7" - integrity sha512-Ok00yCFluRt45axSHuZZEcXTByiCAsSYKBp/GDKu0rOQ41P8Ke1vvtlRd1nohGLp75nu+6+nfpZUWS9KMbZmBg== +"@polkadot/rpc-core@^0.81.1": + version "0.81.1" + resolved "https://registry.yarnpkg.com/@polkadot/rpc-core/-/rpc-core-0.81.1.tgz#85421218378090c507590a84afae89576cf786be" + integrity sha512-za4puLj0PclCwibd7hrzy4UKw5PssY3dM9Gbf2lmzQ/frZr3DxuHRHIUGYGCy8UagQrmqSJDllfDfY+JNVWoGg== dependencies: "@babel/runtime" "^7.4.5" - "@polkadot/jsonrpc" "^0.80.1" - "@polkadot/rpc-provider" "^0.80.1" - "@polkadot/types" "^0.80.1" - "@polkadot/util" "^0.92.1" + "@polkadot/jsonrpc" "^0.81.1" + "@polkadot/rpc-provider" "^0.81.1" + "@polkadot/types" "^0.81.1" + "@polkadot/util" "^0.93.1" -"@polkadot/rpc-provider@^0.80.1": - version "0.80.1" - resolved "https://registry.yarnpkg.com/@polkadot/rpc-provider/-/rpc-provider-0.80.1.tgz#3bb9a98ac52251dc659ee3a731bb3815eaff3571" - integrity sha512-E6i13gyimkBBiE5aZpkIffPcc6jdJs4YaQ5NI+vsM/0SP1ackIUqPM0wlDWAg4SBQjcaqX13gBreKfrKS8NsxQ== +"@polkadot/rpc-provider@^0.81.1": + version "0.81.1" + resolved "https://registry.yarnpkg.com/@polkadot/rpc-provider/-/rpc-provider-0.81.1.tgz#1605c858d3732dd28415d209ff9162dace49df6f" + integrity sha512-e6U05Tv7aP0t9xwfbmP6wnqjnqkVqRZEWfqZsMk9v0EHCkTJx7vNiCKL/N5TyRoVuUhUx/bPQr3DUeNVZLbKrQ== dependencies: "@babel/runtime" "^7.4.5" - "@polkadot/storage" "^0.80.1" - "@polkadot/util" "^0.92.1" - "@polkadot/util-crypto" "^0.92.1" + "@polkadot/storage" "^0.81.1" + "@polkadot/util" "^0.93.1" + "@polkadot/util-crypto" "^0.93.1" "@types/nock" "^10.0.3" eventemitter3 "^3.1.0" isomorphic-fetch "^2.2.1" websocket "^1.0.28" -"@polkadot/rpc-rx@^0.80.1": - version "0.80.1" - resolved "https://registry.yarnpkg.com/@polkadot/rpc-rx/-/rpc-rx-0.80.1.tgz#e9d103012ad05f3b083a303856a4b08b9f072658" - integrity sha512-4MZ0LXi+vzsIA5DtUM4zRmiq4T9xLOMh6EHv1kt8vxCmOVZ7CaLB5iWGKpeYesYf0cSGROqc7kMjwNjj8ykr4A== +"@polkadot/rpc-rx@^0.81.1": + version "0.81.1" + resolved "https://registry.yarnpkg.com/@polkadot/rpc-rx/-/rpc-rx-0.81.1.tgz#08610053e7a68e15881d0def3f4d793d4821ef0a" + integrity sha512-He1JsmsUpVIoVRtopZfAnTMOx5hP8SiGEOMg6Tw//6RFRQOnHmcK9Sf3WUoHNas2F4/7g5cZfQGeznmZdQSQgQ== dependencies: "@babel/runtime" "^7.4.5" - "@polkadot/rpc-core" "^0.80.1" - "@polkadot/rpc-provider" "^0.80.1" + "@polkadot/rpc-core" "^0.81.1" + "@polkadot/rpc-provider" "^0.81.1" "@types/memoizee" "^0.4.2" "@types/rx" "^4.1.1" memoizee "^0.4.14" rxjs "^6.5.2" -"@polkadot/storage@^0.80.1": - version "0.80.1" - resolved "https://registry.yarnpkg.com/@polkadot/storage/-/storage-0.80.1.tgz#a196602d50f544551ddea7be3f07b918c2b66e44" - integrity sha512-97GmOmfIi3gQ27AUvDaZRBXjypnwO4sCYWUBTxRoa+LWGp/QDkF7IDq9uiFyBCqQLNoSCV5ZWAg0ZeDyq5c6FQ== +"@polkadot/storage@^0.81.1": + version "0.81.1" + resolved "https://registry.yarnpkg.com/@polkadot/storage/-/storage-0.81.1.tgz#ffb5b7f63fcb35043c5cad52b7f6ff3c9e0e6070" + integrity sha512-yue/TL6772P4Oss4YAOBwMIrxYryFeLcxAumC1uIQjRMMVh+GlWbm8P47Oy8HMiqv8ZqtyOPxEtElMFgGkI2Wg== dependencies: "@babel/runtime" "^7.4.5" - "@polkadot/types" "^0.80.1" - "@polkadot/util" "^0.92.1" - "@polkadot/util-crypto" "^0.92.1" + "@polkadot/types" "^0.81.1" + "@polkadot/util" "^0.93.1" + "@polkadot/util-crypto" "^0.93.1" -"@polkadot/types@^0.80.1": - version "0.80.1" - resolved "https://registry.yarnpkg.com/@polkadot/types/-/types-0.80.1.tgz#2623f84f927b62e401c370cbb09a74d5bb223571" - integrity sha512-uqdJUbntbpo7YPBi7W26WYkkDnpHvaPB/0cRyDaDOQfLRfy4+ZWS6bsFkaf6uFaBA7fLWJwaUSlblqz6koIivg== +"@polkadot/types@^0.81.1": + version "0.81.1" + resolved "https://registry.yarnpkg.com/@polkadot/types/-/types-0.81.1.tgz#63505692224e047dd7b4631e7dbbd0b095f9149c" + integrity sha512-slJNfQmpQMamHbGQEoh66XeLma/YfU+4Pm7iZMDL8IQxVAqbA2kEn/4MHJrgDjH70Tfu2/jinIiXDdZPf0M5vA== dependencies: "@babel/runtime" "^7.4.5" - "@polkadot/keyring" "^0.92.1" - "@polkadot/util" "^0.92.1" + "@polkadot/util" "^0.93.1" + "@polkadot/util-crypto" "^0.93.1" -"@polkadot/util-crypto@^0.92.1": - version "0.92.1" - resolved "https://registry.yarnpkg.com/@polkadot/util-crypto/-/util-crypto-0.92.1.tgz#7aef6661804ea9602703a01b5c98da37a2b1753f" - integrity sha512-sacWyQREP0lmPEhRySLeB8OUmbJBVd8YPubkovDsFpEYe0SWwbefwdyeESqTqwlTAgQciBS1XhpULkJBMIWVYw== +"@polkadot/util-crypto@^0.93.1": + version "0.93.1" + resolved "https://registry.yarnpkg.com/@polkadot/util-crypto/-/util-crypto-0.93.1.tgz#5cd2506f601cd80b28f0556bb8dd3187857059a4" + integrity sha512-oSTUnJxWQkd6XopK+HFOa8sgTSTJW6LOoTg8iv6QCkddyEhsk8XkTe43AE4F+RA0VOi7MOiiBEl6Pl5eFIer9g== dependencies: "@babel/runtime" "^7.4.5" - "@polkadot/util" "^0.92.1" + "@polkadot/util" "^0.93.1" "@polkadot/wasm-crypto" "^0.11.1" "@types/bip39" "^2.4.2" "@types/pbkdf2" "^3.0.0" @@ -231,10 +147,10 @@ tweetnacl "^1.0.1" xxhashjs "^0.2.2" -"@polkadot/util@^0.92.1": - version "0.92.1" - resolved "https://registry.yarnpkg.com/@polkadot/util/-/util-0.92.1.tgz#0665a9b6f0ce1d2f8f1da2a1d45ff69ae39ead53" - integrity sha512-UB1KSotfcv78LJoKmjjvwZeX0r1b50XDuzvOKFlqvfSoxbpXgwDaNENAKRLIm+Q7ODgv/F1+9YBW8zwWg6gInQ== +"@polkadot/util@^0.93.1": + version "0.93.1" + resolved "https://registry.yarnpkg.com/@polkadot/util/-/util-0.93.1.tgz#d07d633b35e02640da1361259750c061022d4e05" + integrity sha512-ORqpaCf7pDtg07/TVPnXyEKTyL7YhlTT9xFU1UFv3WoTLPrGThFlZnWQrfOVYuuMtlnsdpt2evJ1i5V9alGdOQ== dependencies: "@babel/runtime" "^7.4.5" "@types/bn.js" "^4.11.5" @@ -352,13 +268,6 @@ "@turf/helpers" "6.x" "@turf/invariant" "6.x" -"@types/base-x@*": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@types/base-x/-/base-x-3.0.0.tgz#a1365259d1d3fa3ff973ab543192a6bdd4cb2f90" - integrity sha512-vnqSlpsv9uFX5/z8GyKWAfWHhLGJDBkrgRRsnxlsX23DHOlNyqP/eHQiv4TwnYcZULzQIxaWA/xRWU9Dyy4qzw== - dependencies: - "@types/node" "*" - "@types/bip39@^2.4.2": version "2.4.2" resolved "https://registry.yarnpkg.com/@types/bip39/-/bip39-2.4.2.tgz#f5d6617212be496bb998d3969f657f77a10c5287" @@ -373,13 +282,6 @@ dependencies: "@types/node" "*" -"@types/bs58@^4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@types/bs58/-/bs58-4.0.0.tgz#baec75cb007b419ede3ec6b3410d2c8f14c92fc5" - integrity sha512-gYX+MHD4G/R+YGYwdhG5gbJj4LsEQGr3Vg6gVDAbe7xC5Bn8dNNG2Lpo6uDX/rT5dE7VBj0rGEFuV8L0AEx4Rg== - dependencies: - "@types/base-x" "*" - "@types/chai@4": version "4.1.7" resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.1.7.tgz#1b8e33b61a8c09cbe1f85133071baa0dbf9fa71a" @@ -395,11 +297,28 @@ resolved "https://registry.yarnpkg.com/@types/deasync/-/deasync-0.1.0.tgz#b2bd6c3fcde3cf67b8be4c2f70136ba8f157b45a" integrity sha512-jxUH53LtGvbIL3TX2hD/XQuAgYJeATtx9kDXq5XtCZrWQABsiCQPjWi/KQXECUF+p9FuR6/tawnEDjXlEr4rFA== +"@types/dotenv@^6.1.1": + version "6.1.1" + resolved "https://registry.yarnpkg.com/@types/dotenv/-/dotenv-6.1.1.tgz#f7ce1cc4fe34f0a4373ba99fefa437b0bec54b46" + integrity sha512-ftQl3DtBvqHl9L16tpqqzA4YzCSXZfi7g8cQceTz5rOlYtk/IZbFjAv3mLOQlNIgOaylCQWQoBdDQHPgEBJPHg== + dependencies: + "@types/node" "*" + +"@types/eslint-visitor-keys@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#1ee30d79544ca84d68d4b3cdb0af4f205663dd2d" + integrity sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag== + "@types/memoizee@^0.4.2": version "0.4.2" resolved "https://registry.yarnpkg.com/@types/memoizee/-/memoizee-0.4.2.tgz#a500158999a8144a9b46cf9a9fb49b15f1853573" integrity sha512-bhdZXZWKfpkQuuiQjVjnPiNeBHpIAC6rfOFqlJXKD3VC35mCcolfVfXYTnk9Ppee5Mkmmz3Llgec7xCdJAbzWw== +"@types/mocha@^5.2.7": + version "5.2.7" + resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-5.2.7.tgz#315d570ccb56c53452ff8638738df60726d5b6ea" + integrity sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ== + "@types/nock@^10.0.3": version "10.0.3" resolved "https://registry.yarnpkg.com/@types/nock/-/nock-10.0.3.tgz#dab1d18ffbccfbf2db811dab9584304eeb6e1c4c" @@ -542,6 +461,43 @@ dependencies: "@types/node" "*" +"@typescript-eslint/eslint-plugin@^1.10.2": + version "1.10.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-1.10.2.tgz#552fc64cfcb19c6162190360217c945e8faa330a" + integrity sha512-7449RhjE1oLFIy5E/5rT4wG5+KsfPzakJuhvpzXJ3C46lq7xywY0/Rjo9ZBcwrfbk0nRZ5xmUHkk7DZ67tSBKw== + dependencies: + "@typescript-eslint/experimental-utils" "1.10.2" + eslint-utils "^1.3.1" + functional-red-black-tree "^1.0.1" + regexpp "^2.0.1" + tsutils "^3.7.0" + +"@typescript-eslint/experimental-utils@1.10.2": + version "1.10.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-1.10.2.tgz#cd548c03fc1a2b3ba5c136d1599001a1ede24215" + integrity sha512-Hf5lYcrnTH5Oc67SRrQUA7KuHErMvCf5RlZsyxXPIT6AXa8fKTyfFO6vaEnUmlz48RpbxO4f0fY3QtWkuHZNjg== + dependencies: + "@typescript-eslint/typescript-estree" "1.10.2" + eslint-scope "^4.0.0" + +"@typescript-eslint/parser@^1.10.2": + version "1.10.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-1.10.2.tgz#36cfe8c6bf1b6c1dd81da56f88c8588f4b1a852b" + integrity sha512-xWDWPfZfV0ENU17ermIUVEVSseBBJxKfqBcRCMZ8nAjJbfA5R7NWMZmFFHYnars5MjK4fPjhu4gwQv526oZIPQ== + dependencies: + "@types/eslint-visitor-keys" "^1.0.0" + "@typescript-eslint/experimental-utils" "1.10.2" + "@typescript-eslint/typescript-estree" "1.10.2" + eslint-visitor-keys "^1.0.0" + +"@typescript-eslint/typescript-estree@1.10.2": + version "1.10.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-1.10.2.tgz#8403585dd74b6cfb6f78aa98b6958de158b5897b" + integrity sha512-Kutjz0i69qraOsWeI8ETqYJ07tRLvD9URmdrMoF10bG8y8ucLmPtSxROvVejWvlJUGl2et/plnMiKRDW+rhEhw== + dependencies: + lodash.unescape "4.0.1" + semver "5.5.0" + abbrev@1: version "1.1.1" resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" @@ -552,7 +508,7 @@ acorn-jsx@^5.0.0: resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.0.1.tgz#32a064fd925429216a09b141102bfdd185fae40e" integrity sha512-HJ7CfNHrfJLlNTzIEUTj43LNWGkqpRLxm3YjAlcD0ACydk9XynzYsCBHxut+iqt+1aBXkx9UP/w/ZqMr13XIzg== -acorn@^6.0.2: +acorn@^6.0.2, acorn@^6.0.7: version "6.1.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.1.1.tgz#7d25ae05bb8ad1f9b699108e1094ecd7884adc1f" integrity sha512-jPTiwtOxaHNaAPg/dmrJ/beuzLRnXtB0kQPQ8JpotKJgTB6rX6c8mlf315941pyjBSaPg8NHXS9fhP4u17DpGA== @@ -562,7 +518,7 @@ ajv-keywords@^3.0.0: resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.4.0.tgz#4b831e7b531415a7cc518cd404e73f6193c6349d" integrity sha512-aUjdRFISbuFOl0EIZc+9e4FfZp0bDZgAdOOf30bJmw8VM9v84SHyVyxDfbWxpGYbdZD/9XoKxfHVNmxPkhwyGw== -ajv@^6.0.1, ajv@^6.5.0, ajv@^6.5.5: +ajv@^6.0.1, ajv@^6.5.0, ajv@^6.5.5, ajv@^6.9.1: version "6.10.0" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.0.tgz#90d0d54439da587cd7e843bfb7045f50bd22bdf1" integrity sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg== @@ -589,7 +545,7 @@ ansi-colors@3.2.3: resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.3.tgz#57d35b8686e851e2cc04c403f1c00203976a1813" integrity sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw== -ansi-escapes@^3.0.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== @@ -621,14 +577,6 @@ ansi-styles@^3.2.0, ansi-styles@^3.2.1: dependencies: color-convert "^1.9.0" -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" @@ -657,19 +605,12 @@ 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: +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== @@ -687,11 +628,6 @@ array-includes@^3.0.3: define-properties "^1.1.2" es-abstract "^1.7.0" -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" @@ -719,7 +655,12 @@ assign-symbols@^1.0.0: resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= -async-each@^1.0.0, async-each@^1.0.1: +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.1: version "1.0.3" resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== @@ -754,28 +695,6 @@ aws4@^1.8.0: resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f" integrity sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ== -babel-cli@^6.0.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-cli/-/babel-cli-6.26.0.tgz#502ab54874d7db88ad00b887a06383ce03d002f1" - integrity sha1-UCq1SHTX24itALiHoGODzgPQAvE= - dependencies: - babel-core "^6.26.0" - babel-polyfill "^6.26.0" - babel-register "^6.26.0" - babel-runtime "^6.26.0" - commander "^2.11.0" - convert-source-map "^1.5.0" - fs-readdir-recursive "^1.0.0" - glob "^7.1.2" - lodash "^4.17.4" - output-file-sync "^1.1.2" - path-is-absolute "^1.0.1" - slash "^1.0.0" - source-map "^0.5.6" - v8flags "^2.1.1" - optionalDependencies: - chokidar "^1.6.1" - 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" @@ -785,481 +704,7 @@ babel-code-frame@^6.26.0: esutils "^2.0.2" js-tokens "^3.0.2" -babel-core@^6.26.0: - version "6.26.3" - resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.3.tgz#b2e2f09e342d0f0c88e2f02e067794125e75c207" - integrity sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA== - dependencies: - babel-code-frame "^6.26.0" - babel-generator "^6.26.0" - babel-helpers "^6.24.1" - babel-messages "^6.23.0" - babel-register "^6.26.0" - babel-runtime "^6.26.0" - babel-template "^6.26.0" - babel-traverse "^6.26.0" - babel-types "^6.26.0" - babylon "^6.18.0" - convert-source-map "^1.5.1" - debug "^2.6.9" - json5 "^0.5.1" - lodash "^4.17.4" - minimatch "^3.0.4" - path-is-absolute "^1.0.1" - private "^0.1.8" - slash "^1.0.0" - source-map "^0.5.7" - -babel-eslint@^10.0.1: - version "10.0.1" - resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-10.0.1.tgz#919681dc099614cd7d31d45c8908695092a1faed" - integrity sha512-z7OT1iNV+TjOwHNLLyJk+HN+YVWX+CLE6fPD2SymJZOZQBs+QIexFjhm4keGTm8MW9xr4EC9Q0PbaLB24V5GoQ== - dependencies: - "@babel/code-frame" "^7.0.0" - "@babel/parser" "^7.0.0" - "@babel/traverse" "^7.0.0" - "@babel/types" "^7.0.0" - eslint-scope "3.7.1" - eslint-visitor-keys "^1.0.0" - -babel-generator@^6.26.0: - version "6.26.1" - resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.1.tgz#1844408d3b8f0d35a404ea7ac180f087a601bd90" - integrity sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA== - dependencies: - babel-messages "^6.23.0" - babel-runtime "^6.26.0" - babel-types "^6.26.0" - detect-indent "^4.0.0" - jsesc "^1.3.0" - lodash "^4.17.4" - source-map "^0.5.7" - trim-right "^1.0.1" - -babel-helper-builder-binary-assignment-operator-visitor@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz#cce4517ada356f4220bcae8a02c2b346f9a56664" - integrity sha1-zORReto1b0IgvK6KAsKzRvmlZmQ= - dependencies: - babel-helper-explode-assignable-expression "^6.24.1" - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-helper-call-delegate@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz#ece6aacddc76e41c3461f88bfc575bd0daa2df8d" - integrity sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340= - dependencies: - babel-helper-hoist-variables "^6.24.1" - babel-runtime "^6.22.0" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helper-define-map@^6.24.1: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz#a5f56dab41a25f97ecb498c7ebaca9819f95be5f" - integrity sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8= - dependencies: - babel-helper-function-name "^6.24.1" - babel-runtime "^6.26.0" - babel-types "^6.26.0" - lodash "^4.17.4" - -babel-helper-explode-assignable-expression@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz#f25b82cf7dc10433c55f70592d5746400ac22caa" - integrity sha1-8luCz33BBDPFX3BZLVdGQArCLKo= - dependencies: - babel-runtime "^6.22.0" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helper-function-name@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz#d3475b8c03ed98242a25b48351ab18399d3580a9" - integrity sha1-00dbjAPtmCQqJbSDUasYOZ01gKk= - dependencies: - babel-helper-get-function-arity "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helper-get-function-arity@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz#8f7782aa93407c41d3aa50908f89b031b1b6853d" - integrity sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0= - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-helper-hoist-variables@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz#1ecb27689c9d25513eadbc9914a73f5408be7a76" - integrity sha1-HssnaJydJVE+rbyZFKc/VAi+enY= - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-helper-optimise-call-expression@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz#f7a13427ba9f73f8f4fa993c54a97882d1244257" - integrity sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc= - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-helper-regex@^6.24.1: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz#325c59f902f82f24b74faceed0363954f6495e72" - integrity sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI= - dependencies: - babel-runtime "^6.26.0" - babel-types "^6.26.0" - lodash "^4.17.4" - -babel-helper-remap-async-to-generator@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz#5ec581827ad723fecdd381f1c928390676e4551b" - integrity sha1-XsWBgnrXI/7N04HxySg5BnbkVRs= - dependencies: - babel-helper-function-name "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helper-replace-supers@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz#bf6dbfe43938d17369a213ca8a8bf74b6a90ab1a" - integrity sha1-v22/5Dk40XNpohPKiov3S2qQqxo= - dependencies: - babel-helper-optimise-call-expression "^6.24.1" - babel-messages "^6.23.0" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helpers@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2" - integrity sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI= - dependencies: - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-messages@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" - integrity sha1-8830cDhYA1sqKVHG7F7fbGLyYw4= - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-check-es2015-constants@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz#35157b101426fd2ffd3da3f75c7d1e91835bbf8a" - integrity sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o= - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-syntax-async-functions@^6.8.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95" - integrity sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU= - -babel-plugin-syntax-exponentiation-operator@^6.8.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz#9ee7e8337290da95288201a6a57f4170317830de" - integrity sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4= - -babel-plugin-syntax-trailing-function-commas@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz#ba0360937f8d06e40180a43fe0d5616fff532cf3" - integrity sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM= - -babel-plugin-transform-async-to-generator@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz#6536e378aff6cb1d5517ac0e40eb3e9fc8d08761" - integrity sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E= - dependencies: - babel-helper-remap-async-to-generator "^6.24.1" - babel-plugin-syntax-async-functions "^6.8.0" - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-arrow-functions@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz#452692cb711d5f79dc7f85e440ce41b9f244d221" - integrity sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE= - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-block-scoped-functions@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz#bbc51b49f964d70cb8d8e0b94e820246ce3a6141" - integrity sha1-u8UbSflk1wy42OC5ToICRs46YUE= - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-block-scoping@^6.23.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz#d70f5299c1308d05c12f463813b0a09e73b1895f" - integrity sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8= - dependencies: - babel-runtime "^6.26.0" - babel-template "^6.26.0" - babel-traverse "^6.26.0" - babel-types "^6.26.0" - lodash "^4.17.4" - -babel-plugin-transform-es2015-classes@^6.23.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz#5a4c58a50c9c9461e564b4b2a3bfabc97a2584db" - integrity sha1-WkxYpQyclGHlZLSyo7+ryXolhNs= - dependencies: - babel-helper-define-map "^6.24.1" - babel-helper-function-name "^6.24.1" - babel-helper-optimise-call-expression "^6.24.1" - babel-helper-replace-supers "^6.24.1" - babel-messages "^6.23.0" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-computed-properties@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz#6fe2a8d16895d5634f4cd999b6d3480a308159b3" - integrity sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM= - dependencies: - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-plugin-transform-es2015-destructuring@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz#997bb1f1ab967f682d2b0876fe358d60e765c56d" - integrity sha1-mXux8auWf2gtKwh2/jWNYOdlxW0= - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-duplicate-keys@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz#73eb3d310ca969e3ef9ec91c53741a6f1576423e" - integrity sha1-c+s9MQypaePvnskcU3QabxV2Qj4= - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-for-of@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz#f47c95b2b613df1d3ecc2fdb7573623c75248691" - integrity sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE= - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-function-name@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz#834c89853bc36b1af0f3a4c5dbaa94fd8eacaa8b" - integrity sha1-g0yJhTvDaxrw86TF26qU/Y6sqos= - dependencies: - babel-helper-function-name "^6.24.1" - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-literals@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz#4f54a02d6cd66cf915280019a31d31925377ca2e" - integrity sha1-T1SgLWzWbPkVKAAZox0xklN3yi4= - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-modules-amd@^6.22.0, babel-plugin-transform-es2015-modules-amd@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz#3b3e54017239842d6d19c3011c4bd2f00a00d154" - integrity sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ= - dependencies: - babel-plugin-transform-es2015-modules-commonjs "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-plugin-transform-es2015-modules-commonjs@^6.23.0, babel-plugin-transform-es2015-modules-commonjs@^6.24.1: - version "6.26.2" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz#58a793863a9e7ca870bdc5a881117ffac27db6f3" - integrity sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q== - dependencies: - babel-plugin-transform-strict-mode "^6.24.1" - babel-runtime "^6.26.0" - babel-template "^6.26.0" - babel-types "^6.26.0" - -babel-plugin-transform-es2015-modules-systemjs@^6.23.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz#ff89a142b9119a906195f5f106ecf305d9407d23" - integrity sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM= - dependencies: - babel-helper-hoist-variables "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-plugin-transform-es2015-modules-umd@^6.23.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz#ac997e6285cd18ed6176adb607d602344ad38468" - integrity sha1-rJl+YoXNGO1hdq22B9YCNErThGg= - dependencies: - babel-plugin-transform-es2015-modules-amd "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-plugin-transform-es2015-object-super@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz#24cef69ae21cb83a7f8603dad021f572eb278f8d" - integrity sha1-JM72muIcuDp/hgPa0CH1cusnj40= - dependencies: - babel-helper-replace-supers "^6.24.1" - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-parameters@^6.23.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz#57ac351ab49caf14a97cd13b09f66fdf0a625f2b" - integrity sha1-V6w1GrScrxSpfNE7CfZv3wpiXys= - dependencies: - babel-helper-call-delegate "^6.24.1" - babel-helper-get-function-arity "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-shorthand-properties@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz#24f875d6721c87661bbd99a4622e51f14de38aa0" - integrity sha1-JPh11nIch2YbvZmkYi5R8U3jiqA= - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-spread@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz#d6d68a99f89aedc4536c81a542e8dd9f1746f8d1" - integrity sha1-1taKmfia7cRTbIGlQujdnxdG+NE= - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-sticky-regex@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz#00c1cdb1aca71112cdf0cf6126c2ed6b457ccdbc" - integrity sha1-AMHNsaynERLN8M9hJsLta0V8zbw= - dependencies: - babel-helper-regex "^6.24.1" - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-template-literals@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz#a84b3450f7e9f8f1f6839d6d687da84bb1236d8d" - integrity sha1-qEs0UPfp+PH2g51taH2oS7EjbY0= - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-typeof-symbol@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz#dec09f1cddff94b52ac73d505c84df59dcceb372" - integrity sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I= - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-unicode-regex@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz#d38b12f42ea7323f729387f18a7c5ae1faeb35e9" - integrity sha1-04sS9C6nMj9yk4fxinxa4frrNek= - dependencies: - babel-helper-regex "^6.24.1" - babel-runtime "^6.22.0" - regexpu-core "^2.0.0" - -babel-plugin-transform-exponentiation-operator@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz#2ab0c9c7f3098fa48907772bb813fe41e8de3a0e" - integrity sha1-KrDJx/MJj6SJB3cruBP+QejeOg4= - dependencies: - babel-helper-builder-binary-assignment-operator-visitor "^6.24.1" - babel-plugin-syntax-exponentiation-operator "^6.8.0" - babel-runtime "^6.22.0" - -babel-plugin-transform-regenerator@^6.22.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz#e0703696fbde27f0a3efcacf8b4dca2f7b3a8f2f" - integrity sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8= - dependencies: - regenerator-transform "^0.10.0" - -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-polyfill@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-polyfill/-/babel-polyfill-6.26.0.tgz#379937abc67d7895970adc621f284cd966cf2153" - integrity sha1-N5k3q8Z9eJWXCtxiHyhM2WbPIVM= - dependencies: - babel-runtime "^6.26.0" - core-js "^2.5.0" - regenerator-runtime "^0.10.5" - -babel-preset-env@^1.6.1: - version "1.7.0" - resolved "https://registry.yarnpkg.com/babel-preset-env/-/babel-preset-env-1.7.0.tgz#dea79fa4ebeb883cd35dab07e260c1c9c04df77a" - integrity sha512-9OR2afuKDneX2/q2EurSftUYM0xGu4O2D9adAhVfADDhrYDaxXV0rBbevVYoY9n6nyX1PmQW/0jtpJvUNr9CHg== - dependencies: - babel-plugin-check-es2015-constants "^6.22.0" - babel-plugin-syntax-trailing-function-commas "^6.22.0" - babel-plugin-transform-async-to-generator "^6.22.0" - babel-plugin-transform-es2015-arrow-functions "^6.22.0" - babel-plugin-transform-es2015-block-scoped-functions "^6.22.0" - babel-plugin-transform-es2015-block-scoping "^6.23.0" - babel-plugin-transform-es2015-classes "^6.23.0" - babel-plugin-transform-es2015-computed-properties "^6.22.0" - babel-plugin-transform-es2015-destructuring "^6.23.0" - babel-plugin-transform-es2015-duplicate-keys "^6.22.0" - babel-plugin-transform-es2015-for-of "^6.23.0" - babel-plugin-transform-es2015-function-name "^6.22.0" - babel-plugin-transform-es2015-literals "^6.22.0" - babel-plugin-transform-es2015-modules-amd "^6.22.0" - babel-plugin-transform-es2015-modules-commonjs "^6.23.0" - babel-plugin-transform-es2015-modules-systemjs "^6.23.0" - babel-plugin-transform-es2015-modules-umd "^6.23.0" - babel-plugin-transform-es2015-object-super "^6.22.0" - babel-plugin-transform-es2015-parameters "^6.23.0" - babel-plugin-transform-es2015-shorthand-properties "^6.22.0" - babel-plugin-transform-es2015-spread "^6.22.0" - babel-plugin-transform-es2015-sticky-regex "^6.22.0" - babel-plugin-transform-es2015-template-literals "^6.22.0" - babel-plugin-transform-es2015-typeof-symbol "^6.23.0" - babel-plugin-transform-es2015-unicode-regex "^6.22.0" - babel-plugin-transform-exponentiation-operator "^6.22.0" - babel-plugin-transform-regenerator "^6.22.0" - browserslist "^3.2.6" - invariant "^2.2.2" - semver "^5.3.0" - -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.18.0, babel-runtime@^6.22.0, babel-runtime@^6.26.0: +babel-runtime@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4= @@ -1267,47 +712,6 @@ babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.26.0: core-js "^2.4.0" regenerator-runtime "^0.11.0" -babel-template@^6.24.1, babel-template@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02" - integrity sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI= - dependencies: - babel-runtime "^6.26.0" - babel-traverse "^6.26.0" - babel-types "^6.26.0" - babylon "^6.18.0" - lodash "^4.17.4" - -babel-traverse@^6.24.1, babel-traverse@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee" - integrity sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4= - dependencies: - babel-code-frame "^6.26.0" - babel-messages "^6.23.0" - babel-runtime "^6.26.0" - babel-types "^6.26.0" - babylon "^6.18.0" - debug "^2.6.8" - globals "^9.18.0" - invariant "^2.2.2" - lodash "^4.17.4" - -babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" - integrity sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc= - 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" @@ -1430,15 +834,6 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" -braces@^1.8.2: - version "1.8.5" - resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" - integrity sha1-uneWLhLf+WnWt2cR6RS3N4V79qc= - dependencies: - expand-range "^1.8.1" - preserve "^0.2.0" - repeat-element "^1.1.2" - braces@^2.3.1, braces@^2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" @@ -1482,14 +877,6 @@ browserify-aes@^1.0.6: inherits "^2.0.1" safe-buffer "^5.0.1" -browserslist@^3.2.6: - version "3.2.8" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-3.2.8.tgz#b0005361d6471f0f5952797a76fc985f1f978fc6" - integrity sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ== - dependencies: - caniuse-lite "^1.0.30000844" - electron-to-chromium "^1.3.47" - bs58@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/bs58/-/bs58-4.0.1.tgz#be161e76c354f6f788ae4071f63f34e8c4f0a42a" @@ -1534,6 +921,11 @@ callsites@^0.2.0: resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca" integrity sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo= +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@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" @@ -1544,11 +936,6 @@ camelcase@^5.0.0, camelcase@^5.3.1: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== -caniuse-lite@^1.0.30000844: - version "1.0.30000962" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000962.tgz#6c10c3ab304b89bea905e66adf98c0905088ee44" - integrity sha512-WXYsW38HK+6eaj5IZR16Rn91TGhU3OhbwjKZvJ4HN/XBIABLKfbij9Mnd3pM0VEwZSlltWjoWg3I8FQ0DGgNOA== - 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" @@ -1616,27 +1003,16 @@ chardet@^0.4.0: resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.4.2.tgz#b5473b33dc97c424e5d98dc87d55d4d8a29c8bf2" integrity sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I= +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== + check-error@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82" integrity sha1-V00xLt2Iu13YkS6Sht1sCu1KrII= -chokidar@^1.6.1: - version "1.7.0" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" - integrity sha1-eY5ol3gVHIB2tLNg5e3SjNortGg= - dependencies: - anymatch "^1.3.0" - async-each "^1.0.0" - glob-parent "^2.0.0" - inherits "^2.0.1" - is-binary-path "^1.0.0" - is-glob "^2.0.0" - path-is-absolute "^1.0.0" - readdirp "^2.0.0" - optionalDependencies: - fsevents "^1.0.0" - chokidar@^2.1.5: version "2.1.5" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.5.tgz#0ae8434d962281a5f56c72869e79cb6d9d86ad4d" @@ -1756,11 +1132,6 @@ combined-stream@^1.0.6, combined-stream@~1.0.6: dependencies: delayed-stream "~1.0.0" -commander@^2.11.0: - version "2.20.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422" - integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ== - component-emitter@^1.2.0, component-emitter@^1.2.1: version "1.3.0" resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" @@ -1808,13 +1179,6 @@ content-type@^1.0.2: resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== -convert-source-map@^1.5.0, convert-source-map@^1.5.1: - version "1.6.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.6.0.tgz#51b537a8c43e0f04dec1993bffcdd504e758ac20" - integrity sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A== - dependencies: - safe-buffer "~5.1.1" - cookiejar@^2.1.0, cookiejar@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/cookiejar/-/cookiejar-2.1.2.tgz#dd8a235530752f988f9a0844f3fc589e3111125c" @@ -1825,7 +1189,7 @@ copy-descriptor@^0.1.0: resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= -core-js@^2.4.0, core-js@^2.5.0: +core-js@^2.4.0: version "2.6.5" resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.5.tgz#44bc8d249e7fb2ff5d00e0341a7ffb94fbf67895" integrity sha512-klh/kDpwX8hryYL14M9w/xei6vrv6sE8gTHDG7/T/+SEovB/G4ejwcfE/CBzO6Edsu+OETZMZ3wcX/EjUkrl5A== @@ -1928,7 +1292,7 @@ debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9: dependencies: ms "2.0.0" -debug@^4.1.0: +debug@^4.0.1, debug@^4.1.0: version "4.1.1" resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== @@ -2013,13 +1377,6 @@ delegates@^1.0.0: resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= -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" @@ -2045,6 +1402,13 @@ doctrine@^2.1.0: dependencies: esutils "^2.0.2" +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + dependencies: + esutils "^2.0.2" + dot-prop@^4.1.0: version "4.2.0" resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.0.tgz#1f19e0c2e1aa0e32797c49799f2837ac6af69c57" @@ -2079,11 +1443,6 @@ ecc-jsbn@~0.1.1: jsbn "~0.1.0" safer-buffer "^2.1.0" -electron-to-chromium@^1.3.47: - version "1.3.125" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.125.tgz#dbde0e95e64ebe322db0eca764d951f885a5aff2" - integrity sha512-XxowpqQxJ4nDwUXHtVtmEhRqBpm2OnjBomZmZtHD0d2Eo0244+Ojezhk3sD/MBSSe2nxCdGQFRXHIsf/LUTL9A== - elliptic@^6.4.1: version "6.4.1" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.1.tgz#c2d0b7776911b86722c632c3c06c60f2f819939a" @@ -2128,7 +1487,7 @@ error-ex@^1.2.0, error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" -es-abstract@^1.5.1, es-abstract@^1.7.0: +es-abstract@^1.11.0, es-abstract@^1.5.1, es-abstract@^1.7.0: version "1.13.0" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.13.0.tgz#ac86145fdd5099d8dd49558ccba2eaf9b88e24e9" integrity sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg== @@ -2195,17 +1554,24 @@ escape-string-regexp@^2.0.0: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== +eslint-config-prettier@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-5.0.0.tgz#f7a94b2b8ae7cbf25842c36fa96c6d32cd0a697c" + integrity sha512-c17Aqiz5e8LEqoc/QPmYnaxQFAHTx2KlCZBPxXXjEMmNchOLnV/7j0HoPZuC+rL/tDC9bazUYOKJW9bOhftI/w== + dependencies: + get-stdin "^6.0.0" + eslint-config-standard-jsx@6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/eslint-config-standard-jsx/-/eslint-config-standard-jsx-6.0.2.tgz#90c9aa16ac2c4f8970c13fc7efc608bacd02da70" integrity sha512-D+YWAoXw+2GIdbMBRAzWwr1ZtvnSf4n4yL0gKGg7ShUOGXkSOLerI17K4F6LdQMJPNMoWYqepzQD/fKY+tXNSg== -eslint-config-standard@12.0.0: +eslint-config-standard@12.0.0, eslint-config-standard@^12.0.0: version "12.0.0" resolved "https://registry.yarnpkg.com/eslint-config-standard/-/eslint-config-standard-12.0.0.tgz#638b4c65db0bd5a41319f96bba1f15ddad2107d9" integrity sha512-COUz8FnXhqFitYj4DTqHzidjIL/t4mumGZto5c7DrBpvWoie+Sn3P4sLEzUGeYhRElWuFEf8K1S1EfvD1vixCQ== -eslint-import-resolver-node@^0.3.1: +eslint-import-resolver-node@^0.3.1, eslint-import-resolver-node@^0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz#58f15fb839b8d0576ca980413476aab2472db66a" integrity sha512-sfmTqJfPSizWu4aymbPr4Iidp5yKm8yDkHp+Ir3YiTHiiDfxh69mOUsmiqW6RZ9zRXFaF64GtYmN7e+8GHBv6Q== @@ -2213,7 +1579,7 @@ eslint-import-resolver-node@^0.3.1: debug "^2.6.9" resolve "^1.5.0" -eslint-module-utils@^2.2.0: +eslint-module-utils@^2.2.0, eslint-module-utils@^2.4.0: version "2.4.0" resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.4.0.tgz#8b93499e9b00eab80ccb6614e69f03678e84e09a" integrity sha512-14tltLm38Eu3zS+mt0KvILC3q8jyIAH518MlG+HO0p+yK885Lb1UHTY/UgR91eOyGdmxAPb+OLoW4znqIT6Ndw== @@ -2221,7 +1587,7 @@ eslint-module-utils@^2.2.0: debug "^2.6.8" pkg-dir "^2.0.0" -eslint-plugin-es@^1.3.1: +eslint-plugin-es@^1.3.1, eslint-plugin-es@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/eslint-plugin-es/-/eslint-plugin-es-1.4.0.tgz#475f65bb20c993fc10e8c8fe77d1d60068072da6" integrity sha512-XfFmgFdIUDgvaRAlaXUkxrRg5JSADoRC8IkKLc/cISeR3yHVMefFHQZpcyXXEUUPHfy5DwviBcrfqlyqEwlQVw== @@ -2229,6 +1595,23 @@ eslint-plugin-es@^1.3.1: eslint-utils "^1.3.0" regexpp "^2.0.1" +eslint-plugin-import@^2.17.3: + version "2.17.3" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.17.3.tgz#00548b4434c18faebaba04b24ae6198f280de189" + integrity sha512-qeVf/UwXFJbeyLbxuY8RgqDyEKCkqV7YC+E5S5uOjAp4tOc8zj01JP3ucoBM8JcEqd1qRasJSg6LLlisirfy0Q== + dependencies: + array-includes "^3.0.3" + contains-path "^0.1.0" + debug "^2.6.9" + doctrine "1.5.0" + eslint-import-resolver-node "^0.3.2" + eslint-module-utils "^2.4.0" + has "^1.0.3" + lodash "^4.17.11" + minimatch "^3.0.4" + read-pkg-up "^2.0.0" + resolve "^1.11.0" + eslint-plugin-import@~2.14.0: version "2.14.0" resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.14.0.tgz#6b17626d2e3e6ad52cfce8807a845d15e22111a8" @@ -2245,6 +1628,18 @@ eslint-plugin-import@~2.14.0: read-pkg-up "^2.0.0" resolve "^1.6.0" +eslint-plugin-node@^9.1.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-node/-/eslint-plugin-node-9.1.0.tgz#f2fd88509a31ec69db6e9606d76dabc5adc1b91a" + integrity sha512-ZwQYGm6EoV2cfLpE1wxJWsfnKUIXfM/KM09/TlorkukgCAwmkgajEJnPCmyzoFPQQkmvo5DrW/nyKutNIw36Mw== + dependencies: + eslint-plugin-es "^1.4.0" + eslint-utils "^1.3.1" + ignore "^5.1.1" + minimatch "^3.0.4" + resolve "^1.10.1" + semver "^6.1.0" + eslint-plugin-node@~7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/eslint-plugin-node/-/eslint-plugin-node-7.0.1.tgz#a6e054e50199b2edd85518b89b4e7b323c9f36db" @@ -2257,11 +1652,29 @@ eslint-plugin-node@~7.0.1: resolve "^1.8.1" semver "^5.5.0" +eslint-plugin-promise@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-4.1.1.tgz#1e08cb68b5b2cd8839f8d5864c796f56d82746db" + integrity sha512-faAHw7uzlNPy7b45J1guyjazw28M+7gJokKUjC5JSFoYfUEyy6Gw/i7YQvmv2Yk00sUjWcmzXQLpU1Ki/C2IZQ== + eslint-plugin-promise@~4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-4.0.1.tgz#2d074b653f35a23d1ba89d8e976a985117d1c6a2" integrity sha512-Si16O0+Hqz1gDHsys6RtFRrW7cCTB6P7p3OJmKp3Y3dxpQE2qwOA7d3xnV+0mBmrPoi0RBnxlCKvqu70te6wjg== +eslint-plugin-react@^7.13.0: + version "7.13.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.13.0.tgz#bc13fd7101de67996ea51b33873cd9dc2b7e5758" + integrity sha512-uA5LrHylu8lW/eAH3bEQe9YdzpPaFd9yAJTwTi/i/BKTD7j6aQMKVAdGM/ML72zD6womuSK7EiGtMKuK06lWjQ== + dependencies: + array-includes "^3.0.3" + doctrine "^2.1.0" + has "^1.0.3" + jsx-ast-utils "^2.1.0" + object.fromentries "^2.0.0" + prop-types "^15.7.2" + resolve "^1.10.1" + eslint-plugin-react@~7.11.1: version "7.11.1" resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.11.1.tgz#c01a7af6f17519457d6116aa94fc6d2ccad5443c" @@ -2273,20 +1686,12 @@ eslint-plugin-react@~7.11.1: jsx-ast-utils "^2.0.1" prop-types "^15.6.2" -eslint-plugin-standard@~4.0.0: +eslint-plugin-standard@^4.0.0, eslint-plugin-standard@~4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/eslint-plugin-standard/-/eslint-plugin-standard-4.0.0.tgz#f845b45109c99cd90e77796940a344546c8f6b5c" integrity sha512-OwxJkR6TQiYMmt1EsNRMe5qG3GsbjlcOhbGUBY4LtavF9DsLaTcoR+j2Tdjqi23oUwKNUqX7qcn5fPStafMdlA== -eslint-scope@3.7.1: - version "3.7.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.1.tgz#3d63c3edfda02e06e01a452ad88caacc7cdcb6e8" - integrity sha1-PWPD7f2gLgbgGkUq2IyqzHzctug= - dependencies: - esrecurse "^4.1.0" - estraverse "^4.1.1" - -eslint-scope@^4.0.0: +eslint-scope@^4.0.0, eslint-scope@^4.0.3: version "4.0.3" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== @@ -2304,6 +1709,48 @@ eslint-visitor-keys@^1.0.0: resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#3f3180fb2e291017716acb4c9d6d5b5c34a6a81d" integrity sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ== +eslint@^5.16.0: + version "5.16.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-5.16.0.tgz#a1e3ac1aae4a3fbd8296fcf8f7ab7314cbb6abea" + integrity sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg== + dependencies: + "@babel/code-frame" "^7.0.0" + ajv "^6.9.1" + chalk "^2.1.0" + cross-spawn "^6.0.5" + debug "^4.0.1" + doctrine "^3.0.0" + eslint-scope "^4.0.3" + eslint-utils "^1.3.1" + eslint-visitor-keys "^1.0.0" + espree "^5.0.1" + esquery "^1.0.1" + esutils "^2.0.2" + file-entry-cache "^5.0.1" + functional-red-black-tree "^1.0.1" + glob "^7.1.2" + globals "^11.7.0" + ignore "^4.0.6" + import-fresh "^3.0.0" + imurmurhash "^0.1.4" + inquirer "^6.2.2" + js-yaml "^3.13.0" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.3.0" + lodash "^4.17.11" + minimatch "^3.0.4" + mkdirp "^0.5.1" + natural-compare "^1.4.0" + optionator "^0.8.2" + path-is-inside "^1.0.2" + progress "^2.0.0" + regexpp "^2.0.1" + semver "^5.5.1" + strip-ansi "^4.0.0" + strip-json-comments "^2.0.1" + table "^5.2.3" + text-table "^0.2.0" + eslint@~5.4.0: version "5.4.0" resolved "https://registry.yarnpkg.com/eslint/-/eslint-5.4.0.tgz#d068ec03006bb9e06b429dc85f7e46c1b69fac62" @@ -2357,6 +1804,15 @@ espree@^4.0.0: acorn-jsx "^5.0.0" eslint-visitor-keys "^1.0.0" +espree@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-5.0.1.tgz#5d6526fa4fc7f0788a5cf75b15f30323e2f81f7a" + integrity sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A== + dependencies: + acorn "^6.0.7" + acorn-jsx "^5.0.0" + eslint-visitor-keys "^1.0.0" + esprima@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" @@ -2433,13 +1889,6 @@ execa@^1.0.0: signal-exit "^3.0.0" strip-eof "^1.0.0" -expand-brackets@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" - integrity sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s= - dependencies: - is-posix-bracket "^0.1.0" - expand-brackets@^2.1.4: version "2.1.4" resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" @@ -2453,13 +1902,6 @@ expand-brackets@^2.1.4: snapdragon "^0.8.1" to-regex "^3.0.1" -expand-range@^1.8.1: - version "1.8.2" - resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" - integrity sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc= - dependencies: - fill-range "^2.1.0" - extend-shallow@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" @@ -2489,12 +1931,14 @@ external-editor@^2.1.0: iconv-lite "^0.4.17" 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= +external-editor@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.0.3.tgz#5866db29a97826dbe4bf3afd24070ead9ea43a27" + integrity sha512-bn71H9+qWoOQKyZDo25mOMVpSmXROAsTJVVVYzrrtol3d4y+AsKjf4Iwl2Q+IuT0kFSQ1qo166UuIwqYq7mGnA== dependencies: - is-extglob "^1.0.0" + chardet "^0.7.0" + iconv-lite "^0.4.24" + tmp "^0.0.33" extglob@^2.0.4: version "2.0.4" @@ -2550,27 +1994,18 @@ file-entry-cache@^2.0.0: flat-cache "^1.2.1" object-assign "^4.0.1" +file-entry-cache@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c" + integrity sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g== + dependencies: + flat-cache "^2.0.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== -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= - -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" @@ -2610,6 +2045,15 @@ flat-cache@^1.2.1: rimraf "~2.6.2" write "^0.2.1" +flat-cache@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" + integrity sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA== + dependencies: + flatted "^2.0.0" + rimraf "2.6.3" + write "1.0.3" + flat@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/flat/-/flat-4.1.0.tgz#090bec8b05e39cba309747f1d588f04dbaf98db2" @@ -2617,18 +2061,16 @@ flat@^4.1.0: dependencies: is-buffer "~2.0.3" -for-in@^1.0.1, for-in@^1.0.2: +flatted@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.0.tgz#55122b6536ea496b4b44893ee2608141d10d9916" + integrity sha512-R+H8IZclI8AAkSBRQJLVOsxwAoHd6WC40b4QTNWIjzAa6BXOBfQcM587MXDTVPeYaopFNWHUFLx7eNmHDSxMWg== + +for-in@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= -for-own@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" - integrity sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4= - 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" @@ -2662,17 +2104,12 @@ fs-minipass@^1.2.5: dependencies: minipass "^2.2.1" -fs-readdir-recursive@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz#e32fc030a2ccee44a6b5371308da54be0b397d27" - integrity sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA== - 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.7: +fsevents@^1.2.7: version "1.2.8" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.8.tgz#57ea5320f762cd4696e5e8e87120eccc8b11cacf" integrity sha512-tPvHgPGB7m40CZ68xqFGkKuzN+RnpGmSV+hgeKxhRpbxdqKXUFJGC3yonBOLzQBcJyGpdZFDfCsdOC2KFsXzeA== @@ -2758,21 +2195,6 @@ getpass@^0.1.1: dependencies: assert-plus "^1.0.0" -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@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" @@ -2800,16 +2222,11 @@ global-dirs@^0.1.0: dependencies: ini "^1.3.4" -globals@^11.1.0, globals@^11.7.0: +globals@^11.7.0: version "11.11.0" resolved "https://registry.yarnpkg.com/globals/-/globals-11.11.0.tgz#dcf93757fa2de5486fbeed7118538adf789e9c2e" integrity sha512-WHq43gS+6ufNOEqlrDBxVEbb8ntfXrfAUU2ZOpCxrBdGKW3gyv8mCxAfIBD0DroPKGrJ2eSsXsLtY9MPntsyTw== -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== - got@^6.7.1: version "6.7.1" resolved "https://registry.yarnpkg.com/got/-/got-6.7.1.tgz#240cd05785a9a18e561dc1b44b41c763ef1e8db0" @@ -2827,7 +2244,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.4, graceful-fs@^4.1.9: +graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.9: version "4.1.15" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00" integrity sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA== @@ -2940,14 +2357,6 @@ hmac-drbg@^1.0.0: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.1" -home-or-tmp@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8" - integrity sha1-42w/LSyufXRqhX440Y1fMqeILbg= - dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.1" - hosted-git-info@^2.1.4: version "2.7.1" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.7.1.tgz#97f236977bd6e125408930ff6de3eec6281ec047" @@ -2962,7 +2371,7 @@ http-signature@~1.2.0: jsprim "^1.2.2" sshpk "^1.7.0" -iconv-lite@^0.4.17, iconv-lite@^0.4.4, iconv-lite@~0.4.13: +iconv-lite@^0.4.17, iconv-lite@^0.4.24, iconv-lite@^0.4.4, iconv-lite@~0.4.13: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== @@ -2991,16 +2400,29 @@ ignore@^3.0.9: resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug== -ignore@^4.0.2: +ignore@^4.0.2, ignore@^4.0.6: version "4.0.6" resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== +ignore@^5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.2.tgz#e28e584d43ad7e92f96995019cc43b9e1ac49558" + integrity sha512-vdqWBp7MyzdmHkkRWV5nY+PfGRbYbahfuvsBCh277tq+w9zyNi7h5CYJCK0kmzti9kU+O/cB7sE8HvKv6aXAKQ== + 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-fresh@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.0.0.tgz#a3d897f420cab0e671236897f75bc14b4885c390" + integrity sha512-pOnA9tfM3Uwics+SaBLCNyZZZbK+4PTu0OPZtLlMIrv17EdBoC15S9Kn8ckJ9TZTyKb3ywNE5y1yeDxxGA7nTQ== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.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" @@ -3048,12 +2470,24 @@ inquirer@^5.2.0: strip-ansi "^4.0.0" through "^2.3.6" -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== +inquirer@^6.2.2: + version "6.3.1" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.3.1.tgz#7a413b5e7950811013a3db491c61d1f3b776e8e7" + integrity sha512-MmL624rfkFt4TG9y/Jvmt8vdmOo836U7Y0Hxr2aFk3RelZEGX4Igk0KabWrcaaZaTv9uzglOqWh1Vly+FAWAXA== dependencies: - loose-envify "^1.0.0" + 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.11" + 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" invert-kv@^2.0.0: version "2.0.0" @@ -3155,18 +2589,6 @@ is-descriptor@^1.0.0, is-descriptor@^1.0.2: is-data-descriptor "^1.0.0" kind-of "^6.0.2" -is-dotfile@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1" - integrity sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE= - -is-equal-shallow@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" - integrity sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ= - dependencies: - is-primitive "^2.0.0" - is-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" @@ -3179,23 +2601,11 @@ is-extendable@^1.0.1: dependencies: is-plain-object "^2.0.4" -is-extglob@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" - integrity sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA= - is-extglob@^2.1.0, is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= -is-finite@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" - integrity sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko= - dependencies: - number-is-nan "^1.0.0" - is-fullwidth-code-point@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" @@ -3208,13 +2618,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-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@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" @@ -3249,13 +2652,6 @@ is-npm@^1.0.0: resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4" integrity sha1-8vtjpl5JBbQGyGBydloaTceTufQ= -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" @@ -3263,11 +2659,6 @@ is-number@^3.0.0: dependencies: kind-of "^3.0.2" -is-number@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff" - integrity sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ== - is-obj@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" @@ -3287,16 +2678,6 @@ is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: dependencies: isobject "^3.0.1" -is-posix-bracket@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" - integrity sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q= - -is-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, is-promise@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" @@ -3406,7 +2787,7 @@ js-tokens@^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.11.0: +js-yaml@3.13.1, js-yaml@^3.11.0, js-yaml@^3.13.0: version "3.13.1" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== @@ -3451,21 +2832,6 @@ jsdoc@3.6.2: taffydb "2.6.2" underscore "~1.9.1" -jsesc@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" - integrity sha1-RsP+yMGJKxKwgz25vHYiF226s0s= - -jsesc@^2.5.1: - version "2.5.2" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" - integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== - -jsesc@~0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" - integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= - 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" @@ -3491,11 +2857,6 @@ json-stringify-safe@~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= - jsprim@^1.2.2: version "1.4.1" resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" @@ -3506,7 +2867,7 @@ jsprim@^1.2.2: json-schema "0.2.3" verror "1.10.0" -jsx-ast-utils@^2.0.1: +jsx-ast-utils@^2.0.1, jsx-ast-utils@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-2.1.0.tgz#0ee4e2c971fb9601c67b5641b71be80faecf0b36" integrity sha512-yDGDG2DS4JcqhA6blsuYbtsT09xL8AoLuUR2Gb5exrw7UEM19sBcOTq+YBBhrNbl0PUC4R4LnFu+dHg2HKeVvA== @@ -3623,6 +2984,11 @@ locate-path@^3.0.0: p-locate "^3.0.0" path-exists "^3.0.0" +lodash.unescape@4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/lodash.unescape/-/lodash.unescape-4.0.1.tgz#bf2249886ce514cda112fae9218cdc065211fc9c" + integrity sha1-vyJJiGzlFM2hEvrpIYzcBlIR/Jw= + lodash@^3.10.1: version "3.10.1" resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6" @@ -3645,7 +3011,7 @@ loglevel@1.6.1: resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.1.tgz#e0fc95133b6ef276cdc8887cdaf24aa6f156f8fa" integrity sha1-4PyVEztu8nbNyIh82vJKpvFW+Po= -loose-envify@^1.0.0, loose-envify@^1.4.0: +loose-envify@^1.4.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== @@ -3727,11 +3093,6 @@ martinez-polygon-clipping@^0.4.3: splaytree "^0.1.4" tinyqueue "^1.2.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== - matrix-js-sdk@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/matrix-js-sdk/-/matrix-js-sdk-1.0.4.tgz#dbfa8399f750a23b020c1ec8f037a2f5c36d4672" @@ -3791,25 +3152,6 @@ methods@^1.1.1, methods@^1.1.2: resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= -micromatch@^2.1.5: - version "2.3.11" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" - integrity sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU= - dependencies: - arr-diff "^2.0.0" - array-unique "^0.2.1" - braces "^1.8.2" - expand-brackets "^0.1.4" - extglob "^0.3.1" - filename-regex "^2.0.0" - is-extglob "^1.0.0" - is-glob "^2.0.1" - kind-of "^3.0.2" - normalize-path "^2.0.1" - object.omit "^2.0.0" - parse-glob "^3.0.4" - regex-cache "^0.4.2" - micromatch@^3.1.10, micromatch@^3.1.4: version "3.1.10" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" @@ -3883,10 +3225,10 @@ minimist@^1.1.0, minimist@^1.1.1, minimist@^1.2.0: resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= -minimongo@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/minimongo/-/minimongo-5.1.2.tgz#87cfce45f67d8b5a05821e6e3e20977a9cf7bb5b" - integrity sha512-wADsYUwEzN/NbjcRCOUoQ981QTcFeito2JxCgUMw0HM0ScGc4sdmAunQ4gYhXxc3kOG5yD3rw1xH0xRmajNuOQ== +minimongo@^5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/minimongo/-/minimongo-5.3.0.tgz#95c965ab94d5851b71ebd67f5a8f4782cdb464f5" + integrity sha512-zJKN79bi9PpBnoJ+i92unfs4ZIoyKdhc+0Wy68RkVe4V7kdhUlHGJ7mDeVrQj57TjS7+jxlLV5Ni/m3W490AOg== dependencies: "@turf/boolean-crosses" "^6.0.1" "@turf/boolean-point-in-polygon" "^6.0.1" @@ -3929,7 +3271,7 @@ mkdirp@0.5.1, mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.1: dependencies: minimist "0.0.8" -mocha@6.1.4: +mocha@^6.1.4: version "6.1.4" resolved "https://registry.yarnpkg.com/mocha/-/mocha-6.1.4.tgz#e35fada242d5434a7e163d555c705f6875951640" integrity sha512-PN8CIy4RXsIoxoFJzS4QNnCH4psUCPWc4/rPrst/ecSJJbLBkubMiyGCP2Kj/9YnWbotFqAoeXyXMucj7gwCFg== @@ -4113,7 +3455,7 @@ normalize-package-data@^2.3.2: semver "2 || 3 || 4 || 5" validate-npm-package-license "^3.0.1" -normalize-path@^2.0.0, normalize-path@^2.0.1, normalize-path@^2.1.1: +normalize-path@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= @@ -4201,6 +3543,16 @@ object.assign@4.1.0: has-symbols "^1.0.0" object-keys "^1.0.11" +object.fromentries@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.0.tgz#49a543d92151f8277b3ac9600f1e930b189d30ab" + integrity sha512-9iLiI6H083uiqUuvzyY6qrlmc/Gz8hLQFOcb/Ri/0xXFkSNS3ctV+CbE6yM2+AnkYfOB3dGjdzC0wrMLIhQICA== + dependencies: + define-properties "^1.1.2" + es-abstract "^1.11.0" + function-bind "^1.1.1" + has "^1.0.1" + object.getownpropertydescriptors@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz#8758c846f5b407adab0f236e0986f14b051caa16" @@ -4209,14 +3561,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" @@ -4268,7 +3612,7 @@ os-locale@^3.0.0, os-locale@^3.1.0: lcid "^2.0.0" mem "^4.0.0" -os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.2: +os-tmpdir@^1.0.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= @@ -4281,15 +3625,6 @@ osenv@^0.1.4: os-homedir "^1.0.0" os-tmpdir "^1.0.0" -output-file-sync@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/output-file-sync/-/output-file-sync-1.1.2.tgz#d0a33eefe61a205facb90092e826598d5245ce76" - integrity sha1-0KM+7+YaIF+suQCS6CZZjVJFznY= - dependencies: - graceful-fs "^4.1.4" - mkdirp "^0.5.1" - object-assign "^4.1.0" - p-defer@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" @@ -4353,15 +3688,12 @@ package-json@^4.0.0: registry-url "^3.0.3" semver "^5.1.0" -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= +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== dependencies: - glob-base "^0.3.0" - is-dotfile "^1.0.0" - is-extglob "^1.0.0" - is-glob "^2.0.0" + callsites "^3.0.0" parse-json@^2.2.0: version "2.2.0" @@ -4393,7 +3725,7 @@ path-exists@^3.0.0: resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= -path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: +path-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= @@ -4495,16 +3827,6 @@ prepend-http@^1.0.1: resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= -preserve@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" - integrity sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks= - -private@^0.1.6, 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.0" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" @@ -4515,7 +3837,7 @@ progress@^2.0.0: resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== -prop-types@^15.6.2: +prop-types@^15.6.2, prop-types@^15.7.2: version "15.7.2" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== @@ -4572,15 +3894,6 @@ quickselect@^1.0.1: resolved "https://registry.yarnpkg.com/quickselect/-/quickselect-1.1.1.tgz#852e412ce418f237ad5b660d70cffac647ae94c2" integrity sha512-qN0Gqdw4c4KGPsBOQafj6yj/PA6c/L63f6CaZ/DCF/xF4Esu3jVmKLUDYxghFx8Kb/O7y9tI7x2RjTSXwdK1iQ== -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" - randombytes@^2.0.1: version "2.1.0" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" @@ -4649,7 +3962,7 @@ readable-stream@^3.0.2: string_decoder "^1.1.1" util-deprecate "^1.0.1" -readdirp@^2.0.0, readdirp@^2.2.1: +readdirp@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== @@ -4658,16 +3971,6 @@ readdirp@^2.0.0, readdirp@^2.2.1: micromatch "^3.1.10" readable-stream "^2.0.2" -regenerate@^1.2.1: - version "1.4.0" - resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" - integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg== - -regenerator-runtime@^0.10.5: - version "0.10.5" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz#336c3efc1220adcedda2c9fab67b5a7955a33658" - integrity sha1-M2w+/BIgrc7dosn6tntaeVWjNlg= - regenerator-runtime@^0.11.0: version "0.11.1" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" @@ -4678,22 +3981,6 @@ regenerator-runtime@^0.13.2: resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.2.tgz#32e59c9a6fb9b1a4aff09b4930ca2d4477343447" integrity sha512-S/TQAZJO+D3m9xeN1WTI8dLKBBiRgXBlTJvbWjCThHWZj9EvHK70Ff50/tYj2J/fvBY6JtFVwRuazHN2E7M9BA== -regenerator-transform@^0.10.0: - version "0.10.1" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.10.1.tgz#1e4996837231da8b7f3cf4114d71b5691a0680dd" - integrity sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q== - dependencies: - babel-runtime "^6.18.0" - babel-types "^6.19.0" - private "^0.1.6" - -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" @@ -4707,15 +3994,6 @@ regexpp@^2.0.0, regexpp@^2.0.1: resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw== -regexpu-core@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240" - integrity sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA= - dependencies: - regenerate "^1.2.1" - regjsgen "^0.2.0" - regjsparser "^0.1.4" - 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" @@ -4731,18 +4009,6 @@ registry-url@^3.0.3: dependencies: rc "^1.0.1" -regjsgen@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" - integrity sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc= - -regjsparser@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c" - integrity sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw= - dependencies: - jsesc "~0.5.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" @@ -4753,18 +4019,11 @@ repeat-element@^1.1.2: resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== -repeat-string@^1.5.2, repeat-string@^1.6.1: +repeat-string@^1.6.1: version "1.6.1" resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= -repeating@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" - integrity sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo= - dependencies: - is-finite "^1.0.0" - request@^2.88.0: version "2.88.0" resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef" @@ -4826,6 +4085,11 @@ resolve-from@^1.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226" integrity sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY= +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + resolve-url@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" @@ -4838,6 +4102,13 @@ resolve@^1.10.0, resolve@^1.5.0, resolve@^1.6.0, resolve@^1.8.1: dependencies: path-parse "^1.0.6" +resolve@^1.10.1, resolve@^1.11.0: + version "1.11.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.11.0.tgz#4014870ba296176b86343d50b60f3b50609ce232" + integrity sha512-WL2pBDjqT6pGUNSUzMw00o4T7If+z4H2x3Gz893WoUQ5KW8Vr9txp00ykiP16VBaZF5+j/OcXJHZ9+PCvdiDKw== + 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" @@ -4851,7 +4122,7 @@ ret@~0.1.10: resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== -rimraf@^2.6.1, rimraf@~2.6.2: +rimraf@2.6.3, rimraf@^2.6.1, rimraf@~2.6.2: version "2.6.3" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== @@ -4885,7 +4156,7 @@ rxjs@^5.5.2: dependencies: symbol-observable "1.0.1" -rxjs@^6.5.2: +rxjs@^6.4.0, rxjs@^6.5.2: version "6.5.2" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.2.tgz#2e35ce815cd46d84d02a209fb4e5921e051dbec7" integrity sha512-HUb7j3kvb7p7eCUHE3FqjoDsC1xfZQ4AHFWfTKSpZ+sAhhz5X1WX0ZuUqWbzB2QhSLp3DoLUG+hMdEDKqWo2Zg== @@ -4935,11 +4206,21 @@ 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.7.0: +"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@^5.7.0: version "5.7.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b" integrity sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA== +semver@5.5.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab" + integrity sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA== + +semver@^6.1.0: + version "6.1.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.1.1.tgz#53f53da9b30b2103cd4f15eab3a18ecbcb210c9b" + integrity sha512-rWYq2e5iYW+fFe/oPPtYJxYgjBm8sC4rmoGdUOgBB7VnwKt6HrL793l2voH1UlsyYZpJ4g0wfjnTEO1s1NP2eQ== + 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" @@ -4990,11 +4271,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= - slice-ansi@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-1.0.0.tgz#044f1a49d8842ff307aad6b505ed178bd950134d" @@ -5002,6 +4278,15 @@ slice-ansi@1.0.0: dependencies: is-fullwidth-code-point "^2.0.0" +slice-ansi@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" + integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== + dependencies: + ansi-styles "^3.2.0" + astral-regex "^1.0.0" + is-fullwidth-code-point "^2.0.0" + snapdragon-node@^2.0.1: version "2.1.1" resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" @@ -5056,19 +4341,12 @@ source-map-resolve@^0.5.0: 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-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, source-map@^0.5.7: +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= @@ -5304,6 +4582,16 @@ table@^4.0.3: slice-ansi "1.0.0" string-width "^2.1.1" +table@^5.2.3: + version "5.4.0" + resolved "https://registry.yarnpkg.com/table/-/table-5.4.0.tgz#d772a3216e68829920a41a32c18eda286c95d780" + integrity sha512-nHFDrxmbrkU7JAFKqKbDJXfzrX2UBsWmrieXFTGxiI5e4ncg3VqsZeI4EzNmX0ncp4XNGVeoxIWJXfCIXwrsvw== + dependencies: + ajv "^6.9.1" + lodash "^4.17.11" + slice-ansi "^2.1.0" + string-width "^3.0.0" + taffydb@2.6.2: version "2.6.2" resolved "https://registry.yarnpkg.com/taffydb/-/taffydb-2.6.2.tgz#7cbcb64b5a141b6a2efc2c5d2c67b4e150b2a268" @@ -5364,16 +4652,6 @@ tmp@^0.0.33: dependencies: os-tmpdir "~1.0.2" -to-fast-properties@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" - integrity sha1-uDVx+k2MJbguIxsG46MFXeTKGkc= - -to-fast-properties@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" - 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" @@ -5414,16 +4692,23 @@ tough-cookie@~2.4.3: psl "^1.1.24" punycode "^1.4.1" -trim-right@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" - integrity sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM= +tslib@^1.8.1: + version "1.10.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a" + integrity sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ== tslib@^1.9.0: version "1.9.3" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286" integrity sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ== +tsutils@^3.7.0: + version "3.14.0" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.14.0.tgz#bf8d5a7bae5369331fa0f2b0a5a10bd7f7396c77" + integrity sha512-SmzGbB0l+8I0QwsPgjooFRaRvHLBLNYM8SeQ0k6rtNDru5sCGeLJcZdwilNndN+GysuFjF5EIYgN8GfFG6UeUw== + 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" @@ -5465,6 +4750,11 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= +typescript@^3.5.1: + version "3.5.2" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.5.2.tgz#a09e1dc69bc9551cadf17dba10ee42cf55e5d56c" + integrity sha512-7KxJovlYhTX5RaRbUdkAXN1KUZ8PwWlTzQdHV6xNqvuFOs7+WBo10TQUqT19Q/Jz2hk5v9TQDIhyLhhJY4p5AA== + uc.micro@^1.0.1, uc.micro@^1.0.5: version "1.0.6" resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.6.tgz#9c411a802a409a91fc6cf74081baba34b24499ac" @@ -5577,11 +4867,6 @@ use@^3.1.0: resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== -user-home@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/user-home/-/user-home-1.1.1.tgz#2b5be23a32b63a7c9deb8d0f28d485724a3df190" - integrity sha1-K1viOjK2Onyd640PKNSFcko98ZA= - 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" @@ -5592,13 +4877,6 @@ uuid@^3.3.2: resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA== -v8flags@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-2.1.1.tgz#aab1a1fa30d45f88dd321148875ac02c0b55e5b4" - integrity sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ= - dependencies: - user-home "^1.1.1" - 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" @@ -5693,6 +4971,13 @@ write-file-atomic@^2.0.0: imurmurhash "^0.1.4" signal-exit "^3.0.2" +write@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3" + integrity sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig== + dependencies: + mkdirp "^0.5.1" + write@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/write/-/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757" @@ -5826,3 +5111,8 @@ yargs@^12.0.5: which-module "^2.0.0" y18n "^3.2.1 || ^4.0.0" yargs-parser "^11.1.1" + +yarn@^1.16.0: + version "1.16.0" + resolved "https://registry.yarnpkg.com/yarn/-/yarn-1.16.0.tgz#5701b58ac555ff91f7b889b7d791b3dc86f8f999" + integrity sha512-cfemyGlnWKA1zopUUgebTPf8C4WkPIZ+TJmklwcEAJ4u6oWPtJeAzrsamaGGh/+b1XWe8W51yzAImC4AWbWR1g== -- GitLab From 295c22bd68475e0f06816fad71f7333d3ed1ce9e Mon Sep 17 00:00:00 2001 From: Will Date: Sat, 15 Jun 2019 20:46:51 +0200 Subject: [PATCH 02/86] Add ConfigSingleton --- src/Config.ts | 107 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 107 insertions(+) create mode 100644 src/Config.ts diff --git a/src/Config.ts b/src/Config.ts new file mode 100644 index 0000000..0f638fd --- /dev/null +++ b/src/Config.ts @@ -0,0 +1,107 @@ +import process = require('process'); +import dotenv from 'dotenv' +import * as path from 'path'; + +// type StringGetter = () => string; + +interface EnvVar { + name: string; + description: string; + masked?: boolean; + regexp?: RegExp; +} + +/** This interface describes how the Config object looks like. */ +export interface Config { + /** This is the configuration related to the Backend itself */ + readonly polkadot: { + url: string; + }; +} + +export interface EnvDictionnary { + [key: string]: EnvVar; +} + +const PREFIX = 'POLKABOT_' +export const ConfigFields: EnvDictionnary = { + // Known ENV for Polkadot + POLKADOT_URL: { name: PREFIX + 'POLKADOT_URL', description: 'The Polkadot WS url' }, + + MATRIX_ROOM: { name: PREFIX + 'MATRIX_ROOM', description: '', regexp: /^.*$/ }, + MATRIX_TOKEN: { name: PREFIX + 'MATRIX_TOKEN', description: '', masked: true, regexp: /^.{3,}/ }, +} + +export class ConfigSingleton { + private static instance: Config | null; + + private constructor() { + ConfigSingleton.refresh() + } + + /** If you need to access the config, use this method */ + public static getInstance(): Config { + if (!ConfigSingleton.instance) { + new ConfigSingleton() + } + return ConfigSingleton.instance + } + + /** You likely will never have to use this function which + * is mostly use for the tests. If you don't know, do NOT call + * this function. + */ + public static refresh() { + const profile = process.env.NODE_ENV || 'production' + const envfile = profile == 'production' ? path.resolve(process.cwd(), '.env') : path.resolve(process.cwd(), '.env.' + profile.toLowerCase()) + dotenv.config({ path: envfile }) + const ENV = process.env + ConfigSingleton.instance = { + polkadot: { + url: ENV[ConfigFields.POLKADOT_URL.name], + } + } + } + + /** Calling this function will get an instance of the Config and attach it + * to the global scope. + */ + public static loadToGlobal(): void { + global['Config'] = ConfigSingleton.getInstance() + } + + /** Validate the config and return wheather it is valid or not */ + public static Validate(): boolean { + let result = true + console.log('Validating process.env variables:') + Object.entries(ConfigFields).map(([_key, env]) => { + if (env.regexp != undefined) { + const value = process.env[env.name] || '' + const regex = RegExp(env.regexp); + const testResult = regex.test(value) + // console.log(`Checking ${env.name} =\t${value} with ${env.regexp} => ${testResult?"OK":"FAIL"}`) + console.log(` - Checking ${env.name} \t=> ${testResult ? 'OK ' : 'FAIL'}\t${env.masked ? '*****' : process.env[env.name]}`) + result = result && testResult + } + }); + return result + } + + /** Show the ENV variables this application cares about */ + public static getSupportedEnv(): EnvDictionnary { + return ConfigFields + } + + /** + * Display the current ENV to ensure everything that is used matches + * the expectations. + */ + public static dumpEnv(): void { + console.log('================== ENV ==================') + Object.entries(ConfigFields).map(([_key, env]) => { + console.log(`- ${env.name}: ${env.description}\n value: ${env.masked ? (process.env[env.name] ? '*****' : 'empty') : process.env[env.name]}`) + }); + + console.log('================== === ==================') + } +} -- GitLab From 7ef0a2288894100a6ab1eab7a25cb2ac0ba35cc3 Mon Sep 17 00:00:00 2001 From: Will Date: Mon, 19 Aug 2019 22:12:04 +0200 Subject: [PATCH 03/86] wip --- .env-sample | 2 +- doc/polkabot_kusama.png | Bin 0 -> 86739 bytes plugins/polkabot-plugin-validators | 1 + src/Config.ts | 136 +++++++++++++++-------------- src/config-sample.js | 30 ------- src/lib/plugin-loader.ts | 27 ++++-- src/lib/plugin-scanner.ts | 4 +- src/{polkabot.js => polkabot.ts} | 2 +- src/types.ts | 28 ++++++ 9 files changed, 125 insertions(+), 105 deletions(-) create mode 100644 doc/polkabot_kusama.png create mode 160000 plugins/polkabot-plugin-validators delete mode 100644 src/config-sample.js rename src/{polkabot.js => polkabot.ts} (86%) create mode 100644 src/types.ts diff --git a/.env-sample b/.env-sample index a5ef760..576d172 100644 --- a/.env-sample +++ b/.env-sample @@ -41,4 +41,4 @@ MATRIX_LOGIN_USER_PASSWORD=your_matrix_user_password # # This field is not required -MATRIX_TOKEN= \ No newline at end of file +MATRIX_TOKEN= diff --git a/doc/polkabot_kusama.png b/doc/polkabot_kusama.png new file mode 100644 index 0000000000000000000000000000000000000000..1817a943850ffe218c6f0bbb9300a2365a01912d GIT binary patch literal 86739 zcmeAS@N?(olHy`uVBq!ia0y~yU{nEN4mJh`hPIzRZx|RD7>k44ofy`glX=O&z`$AH z5n0T@AlnYYjQvkPrZO-vMrMXYltlRYSS9D@>LsS+C#C9D%6TpDb*?3>bECp2Kgj0F?&onVQGHBVe#(9 zcWhQk|My3~-?#qP!`FEYERHRD4_>bdFV(*PYk&0iL$gb(YW|eWFf`T;SjXzu-+p=d zdHL!yvrM&HB1NAT&H6YylQFw-)y%RPnT^I#4h|^?6hAOHpWFTM%lYa<#+-4lbPbq2 zrdRRLJO7DUM1t|+jTaskH5u^|Z|nux*!@}-E(}hr*`s1ObBplG<$t0hBPG+$uj4I# zCGG5;U7e8~FK{rAZOXEo?b@aVY!lX9nWrEAKF6wb(R%Be&!_8U<^KL#ocO!%?!%p> zvrh%ipM0OW{I1ly9e<}4{QoV-A^+=zf6J|1Z9#t|3$(T#6@53$bg}a;CrgEiZ5fT1 zA16P2lCXct^hl<~`YrQ+w*I%RdGc?!Z+pv>!~C^DT9P~KG{3Gs@vP$U%y*npb%zft zC#IyR*z9|D^}}2J|CK)uIM3%16&0N{@0H4g&|`iYQ#@O{E?p75zjI_!5|__|;@}4ART;CD@hO=UtXm*lAz3 zv|;(8ZAvEQt}8Q6FFU(%)vx!wPsDU$WNtmz<@hY7!+X_qtD%15;-m8e8=|XYJnPdK zUV6QH>+*=9qfh3ZJm0(f!fZ>_SFN2b{OZ}2_FtB~m*jh+R)>UzwpuZAJz#i{u=_S+ zmeKw#k+y!Jp{4I^^ZzluT=whm$9?w-zMOctq5Ao@4JAKUZAiHIDL{GUNgqa=&nJxg zPH$sPV|cmg?JXnG$wv&0YP4kD-N|+^DR~vbP%>-Qb14PGRwk8s@t=!!yqz_5;ks>R zJ-w-yx+WC|e40|J#&?X7Ydf<*UQdC~!-E;&x-U4g4UPM zshR2REh|^;QoC~Hj2J_R_w~bBw<1=oTX*SH#M~uIElimUWEvPGdYJjGr*3gnh;DuC zI7!4}DMNBVOw^AzX7-pKeP3)z=j3K}r|S#)eS3B^JX`!IK|NM>M@&u7OT_d z?AM3(F}EL@bd=kvwzl~ZkK~F4SKRVN995e9SGilQ{kyg0qx5`H^I)qE&zC8g0@p5I zR^PCC<64HzEHN`~eY9lrdd#G9>fn`+OB{+{FS~xYv39qruCB4{} zOrz#~TORN}=s?fwpqxfYhg~Aoy1K*BKfIL%fVu z896w;TA8*=E%kGUL&Jx|?R+iIrtQ4NWFYbH&;EM7EnBxeYj_fDHob;nZlLCYN;eIq zyRT+RRm+7(o{?X`T*6|<{P*v}VEezDA9jR&nYMO^*V8WVf5j?-6YYg$7)*?07(0J> z_`cZaH`gk&lCfcJ?q{E@tc;wCa}2DzCT(-RWoP`(dlhTivYhE5<*Kb;8CNi#lv{Lf zp7N|&vK+O0kMnRyJn?XD;A?1bNjad<*`X=ykh1NLD3`O<$_Xtjd);sdT4HA1y=mn`^oY}o~~{Dp5B z)OAlCSrxTaWql4$8|JUGB={vI;27-2X^%r$hDKUh_85)$91yzWpo`r!R0ZYYxNPCnp;( zRKHmva>@E|U+!(5kX2bMDq2=TAKC%fNillKzSOW`%IgVF`kx#$X4}grBy^imN=nLUu9-WN zlk%<1yLT?hvDvI$KRcNiG$Rd{kTWO#{m$55uyH6EDt~cZ$=%l{42M=l&)| znG4ezTf13(K8sD?#xvn&&y^`=KV4t0`*SA$&#`p9Q49|10yBXcfuAAo$6EnlJLLLjNy;S$! z(N$Q~bB3MKzm6eg>z^6tWZzn?`SgDJ?x9t(Tw)fAPvat8237NUCH`H3a2=sZy*dnCRB@}RlcWOh2Z+}o+ zc7wmnkI1rAHuZ!y7B+>M`#iLxkC$>Y2%Y(OZ{CN?_W!jXwx-WF>wLMezuxOMOCAsV z_qSaCKi&V6bz^Jt>PC*PZ&tFdJ73L`=CQfxskkwa?ZB~~JApy7IVSuFWOHb*x)l-} zH2ErL!`ZqV_7&6Sof7?0csRZL<(XmYumQy=e~U_>uvP; zyHZBuOwHS_7dU^0C^0Yk_xQMv;TcJNwyBKG3>^nM9Hojp8w+OF8CLiP9q7wrvrn{1 z=Hb|6v&dTSM-# z!ke2rRcoHv|2_U8zwV{@Ve5C53ORLuT^HAXUAp|R{GW60+v5MPz0Y<1PQh%=`TeEd z^Ouw?o~OkeKb3nWw|(7m|Nh9CwZGcpQ>QMQzT8{d`1r9^TP7VZYq%J(f1}rJp#-ji zi=iIpQ@)B#xLEe$=8c4#l?m&=8R~L+Pg~2?dp7r)+Bf!uQ@55rv3y)*9hJZ~;a*?Z zcbi&;l;(xsZzNu>-_Xu+U}b)Wh=u}ZYFFH{RH+n+$z?{Z2F-WAIyLk+hO+t13(Z=7 z;PJm7i5qmm^Sh3PQo=?q3C6RHW=xa+Jn8S#%sVlq#Pr{y7RUDtuFJhzmgi<&-V7J zVXen9_Ei_|E#xp+n%S$pT5^G&(ST5iAxqgn`Y+ydCIh}H&tsB-uG?zwJZAY^MC8lx6J<^|G)Od^=Zv+xj`}N zD_^YpZ6~tt^VR)4^8ar5-%|6<>tdO*qqJ!LGXK@j|J=5I)-Jkw z{Z+BH)_HS{W=)*o)mxYtYbj%vP5khssjCm4d^hjH&l9H;->l0%Z1mRm*YEXpj$9vhhpa#Qu)W`2 zNbb)C_d|9uIe58!==yXU*ZZ`Z}z41h3{SmY4+JZoiXZr-FufgGVn2tHA+uP>Z%__l?6lYT2qytvLyJ+-!Z$pOAtzT@lt zyMCq5uTt6b;f(S%`!Kfa+EX=yH})8xf4&^lw0XW<_Vn^e4FW7LIwE#GPdj!~O5%-T zk|?()hr>f13FdPS9GUKU_dfiQXt2v=R#;@;Z1^gqX2EX<+sl3L%zI-{r2s&$v>EM*>Pjz#^({!%>wicSuMY^$Y}Tn2d{o3 zG~w5ko+7uGnoTq8tuuDEJpZR8cHw78~xX z<)*(9(}@yVx9i)oOCjeRPdaw_q@StG2bH6h`9Z1?3HKgfI{)U@KF{FhzickKZ)Jlv znaxN!Jp1l9fs<@9JO)Mzk0b?{7TkGjwV>vvji$ZHj4NfGhfZE{jQP~9{x$iI#ni_u#*(?M1Ntc`7@Am($v-L)}*RQJG zzB7C6dOQ>FR0)KiUbUrY*`!$F&Ex{5gY6FNh&RuWv%R!*t=Rpm>%KgF7`0Z&Z0nZeYq)D)Kb^Vpyg&CD50B@| zWs|j7(^Btq@0wD3%ks>YM$O3PuyYY#6BC$S^u8K+{K=W#I4P*apvz>9%G71yZu9r7 ztt=BhEHg*V%jLq7EjG%b2C9d@eEpi?6`cH?zf}G$Pw3REQE#&+ZP{$SX4kW6A8!8t zB!5W%-|qiQinE%x9nbi?Iy-0iH}ikr{0|>j(cPFiDfmZ!&G*+27s~&h`Qc0Qe}Q{H z*Rd}>@y;|L;c&|HM%z{O*Vvet`{pc3Et;^A>81a#9_y(K<{ZmiEXsQCUYGoBvTc&u9z(z9l~I;+40yLD#$| zUGkm6prxHXzSYwp$%~xx98C2L4g+3NVHchti=k{89BAsEfx6ehr{aWoVtOg%# ztwes+PU6cnHmh8>=M|eZe@3Lr-*=JcZshL)<<ZmKj-EbN0S={cJ>TTeSdCtOC3Hh+tYF0fo;kq$M+2G z7Q3bh@;a#n*DN}r|L3{GJ7)PmGa4`Nv%P&teE*NBAGmK-);_=cp11r?>3UhwhcUPJ z|NnZQm;ZiM_KtVUtPl6s=K z*`?pVmo5v~er7Je+LV-M4`ZSe+?=egixpQ%2poPOrflqSeSP&!Gq!EzXN+4-S6em+ z2(fi#vvs{}HoB0w;K<8}DQ!AFFK;@C=E``eW^x!5PWG}=-G7N;yNSpH=F6EIlogI{ zDNyD$NL8-Sn~~D`hFSh6r>ASoG&2_^vkF_i%+I0Ge7828{E%M%YWd;!e-GC4ez*JZ zu)yQ8p_wC70)yaBW7kln#BFmUS6|?IoP3LG!<{KlmplzN)7LJuoZL2j@&pfVss8up z@AYXsyX&%RNBGIc&N7CcHv;Q5_icVTcglT_jxDUwtPvBf3-|b^|F&Y;v;DQ-GEu|G z_wrj`_EaY88YnC7oml35uTAIS{(q;WcrW-RU+Ak`{di$`*m)Cy$B}C^L>c3F`hIA? zRemIy(4n2Sbft)Ea=_FB=}L=*%gm0kZ@O%?;i%)ubuTk^tlb#-J=fUw8}tfX!=yc8%5nmlcNg#Y>DFXvu+`RC^0 z?y{R7d^R~nEwYV?+LX(jCC;q%$8>A)QS;j@7FvgAIzNgjJ^QsRPk;Ys>xa{mB-7@d z-tJK8r|)0=^w*&X$zns>+k2Cn^$z{7zN~s-g*D*QHirn@oYi^Id+^;_Q zt&KmQ?*F;@LudaVj~m-whB8aOI`GV6_hyfT<}J>#E42UF2!DIk?ceHO`zQI~PI35log)Wu& zPTljgY8QX&*Y*1{@?Dl`)cA3${s9&2agL%y?wRxUA59cOS=+Y3;Y~ zSFZP*YB+ahX3Vuk!BNKITYRtCu(?PvNLlc#)0Mu~79L-BZpM1&=kszLE=@SV-jH}WK`>|>p ztIgjppA)bDbAA~AuiL+^{N881+1oZ1vB$OwvG>Ss&^2y7^2x2i@8H4Lf{q;@J}Ing zFz(s@Qj#&%WTLX5Lyl}__P>>~)KPTyoOHIizn5=$etPb*`FsUzX6K)&&(^>8$gFkC&5tu!zrMIy z*tNd?Wqr&45A*G3i)X(-=X>kuo?EBa$9Z$!?f?6&o=5(F=X@hg z4*yHZ6O3)YG@dWHR^nmyL)pXqq@iEA#`Wl%ZgDqGeqx+paHap-#KX6^{tCT4_DcG= z|AZMaQAz)WvUsY~HX_aH;9; zH4~e5ES6kq`b%(jU#6seUP;gOBStHf1a^vuuutQyc>2)n=F(>E(&et6cQa$Y>mSp; zB=D|I)w)R_(?HhvHd{F79Glo>K}V7Wws}bX*;)Vh^uu}8?|JY4`(=J;+gs~m1t+UR zAt4ND&v?FCP5%DA?&tHZj-T8QU%h@m=jDWTjT1e(E-7xDaLM3;px?cVvZ|u%n=dCU zue0$_-;+1_qUd4Sjydz5cPtlNFrliFk@t1@(p<(j;Zl+pKTlZp;>XM5Q|8^hci#4E zM#RovvkKn!mP_zQ&N4pm#CP^>W1&gru7_mUzvXS_EzpRIezxtF`qJQ)9B#}#IlI)P zx4-PL(Y>ize7rGsQkR1D^n)RNX1?{CzAy;$Z#LOvZvF4531iEZ^LO9**EQ(aDQHS*!a;SIJ!BsS;CR-B)vZ`Gg-jg1Jpc9;7b4>v4Vl#-F0M`;4r4rQPrDnBQJ4 z`O*J!=`RoSK>4X{Q;WqNSJ<3AGQIb0@}w;;v5%*heLd*y>HTr>^owbx=iWJsJKU{$ zZd<0>y>#w}*qwXUne3NzIK{Ts+g1A7-W9%m)=Swl`n<9=6E2_a<#Q=KCDwT2{-1L; zb^#UN9H;!6y101%6~D(mQ~3&IYPvq^@-{Lwt6iEpf8p_!Q7o%W^k*;9P^xPXe!#rJ z;D?R>Cj}Yl0>`E=p<7IJ?`)ZR`LoPYzLKn^j(Mr)w1k$I1}Yg!bqi-2Pudh_$giJ0 zu|kXClhM*bo4Z%|t!{OGOMEYM+4S5m*8-_c+a44LHdt=w+>mfUtZ{bU?%QD>icZ@2 ze&H&Ozu7Ql&s;v)JF;=Lnp$gbe_=fG>sMP$xJZ9Z!SRy0OBU^5IkUh=a@&a;FBv@8 zB?>R4|5*3q&7K**mRBzQ=g0lv!TS=o$&7(s@AH;_{_*4Ze0g0>&%htczwqoUQg~z1 z^7vc&`N?~_KFUnkBXi{Iw$En03qmF}#oTw9VQg`MZpZPDiS?*<} zT;{DGj6NRS&bKzR3e2_Aj6Pp?)bq~nD@${gc+0M>PyTmlM(v^gqn~0l&xh+Nq|QBG zH?cS9NZ#EqyF6XjbZq#}@|U5yi$ShT`np&7lhv692_d_tE$N-&82s$x!KciJ56_ud z>33Hy?u)+BUzc4Ra?|{nbTXwTPd$Ix^R&UmxteWr3^sQ&-+UdZu=%)&?fUlP&u{(> z+GR4=0?Fk#R+`&^N)RUjo;>fr20f@!gT*u z?iGC{vX^%5bF8iTtXIn$(LOnFUi`xaC8_d&!`Dy7%$N6}$Xq|9TvrGu>p*i)WU;?dj%6jXvbmHZ8L>_6vSz z`Bs|$xZW|(!>4x6z4vxX+os+2c`9}doxe}a+%$KJ9;d;l;zFPMeJ`Yoa@IWw+I?$R zo3_-Hbvh1S_w00@@BeXUa+yd&t?NsX-t+$rY?J*t6P{G@q;FATUUvS12>TS~$-l)f zAH09~(v}b2naZ(BypD5@mdXZ7-M>4}ZI=7SIew1|gKi~R&RI5R?y=7W{qHNqJ{Rp; z^fq(q;_oJ%&K3!iFTcF`SN)di1EVI-e-&1F{-J#)oXgAiZ|T|A7!=JiVcL$j44o&J z72o_Qe9oz;`^E0BTjTfbs9x&j70#!iny{tz^R5lwj;80{wpZUabJ0z$SrScCjm!9o zS(NU}EAutq{9##qsAT2tJH~Z0UNUrU&#-*_a{0%*=P#Z8qPsGFXUU!Q772Iu&#B#( zDfU?G_6mtQyZM)ms_t%xJwD~v#P=yeK~ZY`lYc#Ywsgv~>23aE>Prv$)_l{Oxy9s0 z{`^*_D5e=~tU>N2TR%3~iGE%8Tkc9~h57LpocF~p@0OYGoxN&$^4mRrk;^wR9b)I% zo_BA-dLNw)+DiPad#vDx|FI?WzTUj?^pgMO((N~Ax=d*b z+4&=LU*?~e8J8=bKhm47S2xc*b87WBn;@(2v(M>GS1*i-Dp~omD^J4yH51{#-!8F7cyA?|N2da+yCE##N7EWuGt2^4_zD^ zS+(@E`~)L|B*|(1TE**4ue%mBD_=JH;;ONJV#ka{ikd(7Nk~kX&o7qlvHhd}-C)D# zC5iLcOLhbw*l6(cr-S$9Pk-*7KRspH^F&Qu<|Cg!d??y>TyuKd#C;xMa(;ZfZ=^y|4I&R|q&VuvRb{g~6gf3)V)^IsBPw%~E^tDcn_4BJ={oeM! zdA;X?6>JrYLPGMz-!c2`*~_qa&d)z@rx-X+w5dO_wue-Kh-_qLEG~m z-OYO<;_APB`f2>JQ2cLq?yH{`w%d*`+*|lLxtrlOBb#aK>+6BS(Y=>N_zZ4sFW;`a z?aucH?n~S*u$wQH`9Ak!=CA3Ke}7_K!qfBP5&QLcgYxIe4RwDG?~B$?n6_gXOGhl>QF56VYvF9GV&>-Ov75Z>o?dD>m)ZSP-Phdj z@%bCB_K&Kiz8GHGAbagBI-rk|)a%N7W_nl4`(>FMm>vX4W7X+llcG-IDbA(iZtf z^--R^NKikz^z#qR&DC>W=JdZVIcmaDZeN~UeY1=C#O0Z%?56MV^RCKQS-zA;NKL!{ck<+I_Q$RE7&?5~vga+M>X*4S0S%ebyLauJx#{x(JK5`!obUgC zIIjOXmvOqdLTWM|?GKkeuVxuk8O?7zxJ$2cL;C%tC7 zCp%j)^JH<+OMcRirf1#nGdngoPPduS$%!o<}$}^R3TQv&`iUBJ&6s00f0^L%Z=$|Sl;1@sF4K-T^p_8K_x|bk=Se$$ z`=^ONb}nC+=`-zH%D>EcPeNH#&)a|3S9$WVV)?rtHF*tBJcHH#PyMrK%bB{RbuXu| zv3hyx+imr`u_Y~N_k~Hvt<^i zT)A>5>p+W!-CeC)OD>x}p2rb$&gQ9v)-PW_cZ)WYqL(jn85VEh+vt-2_x?$?$I;$(`^&TLg-42m_xf-@-5(*ZpX+eSYT^3l9u?nKx^FqT=GHs?G|^nY z+P$^Oa;#;0j$7{jm9)z*c-A=)%Vfd!Jw}forr%PP@=y-;ozpb+(UdQ4>yGpldYyWv zv-?hyV`5c(^D<@yUhlu3PZTXNiQ_v|yJ5)|*K)6Tp2s_9xJ|6v^})n^qwUckf+&*vMZKvbo{fiN%*cn$L_m^6V0*5d76I&+Tt}OkB4qS1EaZ;NEw8 z^D=U_=`RXGVOMP1&xWp#f1y6JE#py$3pHuEg9VpZgE4cUjUw_=E z<336~)!8vzWo<Q)>UU_uts0k#OXzVuK)8&H;{8Gqv|$UN)$&wXXc3|GE5`$H_Zy z6GSA_7Zq9cnoG|8U0vmBZKNC@(rZ8O@AJAqdDhEmv$eZBQ_gR3k6Pw=;@r*IC70uO zvYb%4bu;k%xe;F7*?&oj=~EPSVo zd^gX%K5LaJSI-5>qkba6yFy&<6fJwfzxTN21?%LUz6GZ${N}ZZ|K<4nVbQx2naekK z#^)WV+%>tia*xTKzb7s~o__lNV;?u;nf95!V&eZz;$Eqpc`SOG`EE+0X0GAi&77OJ zDC#h0v{Xu-e)>Lf9{(Q32_n5u4LyHdsJfLm{f|fX9lj@@F7-a`y!@Y)Tf9{^dV9zJ z*@tw?@3~L$z7!MHFvaxawchNny+6(-t~{XObrC zWaW(8@7^~vJ)0w-_DnBb?ZOo06Mq&Ix0T*L$?1JKxc*4pi@h;NcU+kES$o=Q597$X zCC?L&T0H&qspd}Gv$HdbDyynm=4RVH=QDchc=B|?wr$s$w;epI%lN^%&Cb;*ZbL?3 z#P?I)%Qi(+UiF>${WQa)o6mlhU5K@6VA-&u@Mi1Yy1SK>dy{;Q>Z`;=AS|uMJ zWzG^K)i9;;;(}?m*Y|zsk=m`gKW6R5%5|V{-S^V){TZeWPyVe;mXflvHgeDmO4+b- zrcLkTX6>(^ubf)?^vv^Zm&M+0$(grp`SUHR|BVkGde7Q)tyDyAeTILy*dg2XGvW#b z=FhY*;aRZdOy=B}OTL$T^Hi8>`=XnT&t|VO5<8tP_*K34aVE1_*e}gjE;BQYA1%qO z*yUQke(~|bT}6eqYciIXD%4)qR9&#-P=rX><7+mbcYM>RjnRMO{krd+vHFgqVHLaQ z8yh%v?)`Rjc`xIS3T0{epKDByJMMUR@&2r^m?d)m_a6Lo`CzHhB80T5#+4RZ8_U+0yLHi8#&s+QQo1b}eX8x^>ch%CHPkz#S8l9zn{xZ8C%j}|t zy0keF$0l8w*feqa-Q4wy`HSkm{kiLRTJG|Ej!8d6Gu4(%{j%}$F4@O(Z$8WXbH#U0 zk=nB0Eamso8K;jfkA2k7@8@Ek)#a93{E++bov%mJ_v{GIe9LWb!g=zT)6O&cPW!!` zoq`U3JX>+@qfXqeJ7vk&&oWM!#p?5Q+b4(Hmm04vyzF5s{EP9ytd@H-RhPvw@u!Py zS6?#S_D4czq3}zE!&uxPkiP_ z#`#TMCVblcx8IyYJM9aDwl9BJHtSkS>50eUKc<-Ve2i@5Hmh~MXj}4XO6`nEugl8b z-^r7=-urOcZl(Uo$6WLD@*GYrS={`4TRZRi{X!9*52OTDly0Z17;MUnQrjiHVNUkq z>5R%&R;kmr@T-5G?;(6pd#PzTo7;}WB>wq5l9x@?izmBD-M?H?Rqw~%+b+nj$@Vx? zB$wgP-=5F5Mx~lO5sN2p&q^=U$zPq#bfT-DNsM{#^z|kOydKK2&0XqSr?uYu@UwKy zxp(KA>|L4Ua9n@t@=H=neoD=~dN@9!Fui=%^ve^{->|=mo5Z%be&t!4+U;xCNY1Z{ z%KX)0%vWJ~{^~}}bq0z1g%*4{<$Zqk{X<8!^*IA}RWNEYD}Qm*Pp?w8W>a!VdaTTz zezP?<|F%d-(DtuSZvOx1_f6v88=oitZpcmB6+B^PSDDc+lXH@J(tAMeY`S{!GLzC<64O6dL?%v&J7X=@ za*$<4Xz1t6w_4oJoUijTf-^h#i#PE$eNI_^T>I_5%u^m#Pf~vdN=n|(PW@N4En0}< z#P4}V9btt()7#jXQZ{`#)3z++Pmj)}$?PV4bw^Zfd438#OWXDQQ{f+1fv*XEk29CO z+&%yHHLF9WQ=gfYxmB9+#~jPx?WX?rVs%fF=LbbB=2~BK{_E1WlJN|` zAF--P`S!No%kbgdo$xT}vh>DHZTC7-{iPW^-1C=BG*yr-y4bo1pMG;$ZZ+508CP0gOUpi$YuVqz+kYQ7>&UE}z2j|Rkkt3X zcG3TpWDD;a$erka%TUu%-gEf zz1_IJ#UOOGc=Mr-Z%5l6rT)36?P|?D=Z^K;37Z*|8`zxPKNpv0`9D?TQA^se`{NcH z+dqsV5?zNUbuF|onEpt^|Jc6^A5LDV{<9*M#oo#)=XyYi{97*fFO3Hu*Qy^{xiFEj zXP>-&f}*|r9vO>g=EqC&d>2Npp5#4k-G`0`4QzQv3`p1gV8+{~HT z3F!_ZiY#8ch-UqvphN=mx#9^lmE{rdt3SAA0bG0oH-`9`Vw{PkCS z<#%@$Dz9IX$FHBhyu>he$+^qd%5{GCuUPwlJw*2Qwj93h>1#Q}fB#$3%|Ah+<&_5C z*}RIkPcPgvJa1-SbTX>ys}A$yH9nVK3con%e#~0*_FcblzgIIQma`bG+(d zVxq(@yRCwYSM#lr^Gf5II;)QFwcXQo&FrdYU)+8_sl;OOm7V_^&gpsHl9V%i#^f?V zE$#fei>$HShgMy^e$2mNarET_DO%ZYTQ|%J&TpnsIIC?>aD-^$BJ^n6WRpEabt~;^Ta~Lj_mP zx-FW0#qa9Y&AykS_Eb!qTe)WCrRD2cE)+-KzM59bHeu?dOIa$7m;Bc~?y?bFo_9`~ zPp9%FW5UtG{~psn9d)rYJ#g;D-&FS~KEKSUAO5rS8#_HOr{);MMTOX(t5j0lUb>}y z`n>w6uknixKfe_)vv;#fXZNAXLb-LJ$+o|*9Dev>;^D-Plb+7{?UovQ`p!3vWy-QM zSI8aAJ~i!3L%NZa)g9}*xf#I*UVoD%3cVW46k}fQJa~VZkeNaA-ie7a5=+)^zpc`- zZ(nla?`>xv-q@I&7;|~4;NKa1S2G$IEWEd@I&sW@-`T5cw$~PW?`Ax^CUP==!BoFL zV(c5d7Ch?7KJ}E@`QH@v`g7je>|64;pS-1??VcSyRs5yOwZ=`Wdm?Ag3yk{Zx?i#J z*T;SHE-V+9z8v82_rSl{g{xmrP*L2=q_UUsjj8F?U3_JZ5lhO}tFKapLmw;>v%Xl`?abVyBeN?K9vnzkOJ#_RVq=o!-fp{2o}det1*2?EB>@Z+HB7 z{o-Ns!f^3DZ?C6Mowhb&>G{%n72juzisEA$Sd23lyt%hganGkm#fkgAxXn46Ij`Gd z-+{hXgSi{dB{`&id46Tlk&`~R8ZX)!@))r-8MB-0c$t&aeK1$51IN+)t#v#Rl^(}~rDim_%zjol`+;XH)A{R~7Y=@STy{{n_Eh}S z7jLhomo7QrHt}qJLcpcNg)cLIu^$R`pMAJEZ{ZYW|5V7#v$~9fhJ#~xy-L9mwZDWcn31tZO_4SR|Ra1In+4)uVKR3to zea@S^UiQE5!u9WW9LTm=6SL9h!4b`dWgCjVYEAWJ-(DKG$yMLo@5bf#I_nO|e_%WR zQK-o7bmmVbZchvZ7TcNZpb`mWvOx;e1C=lWGG ze$BN@^AF`otmQhLEp=EuJD=0E*i>|%)wS(W`M;<9oM^Pn{DMzScJ$IG$4^P`GCC8n zEi@q~CLuBCY{idjFXtwHIgudo-bTXh;&jd_?n_qK-(3HG%2ysP6~CxEU;MM(-GBV} zWPSLfAHtuU2;bwe{qF=SgYV(X(T(g=_zf*~=EcwPEclvu&?;OnI9;$;>?W zMuunET5FkIhZ2j=uUyBQZN6tt`qc$f_bvQ(`QbV1ys3O_M=N)mz0ljLS+aQ9Wd>1s zY1RdP^ZRx=-r`eeO26>(fc-h|bK!Z7H@8s zE9l&@(*ASs*8A*Lp-iTyZrat?&A6=da)E2}+I3cc^22K_LgE)cEqU6!@2F&*i8N1K z_uUd_52Mbe&7>Vz-@kFH7#8rgQN@4rlfEx2CuHEOn<% zTg&vy^|DcP&;*tF!p^_kW`+H1`e(oY`A(a=jGiUi?-e=k_}BKDCFry1)40Uv+Bc^i zdN6<%V(u5G@IK>ZPu^vn zd$K37SUW_h4qs+`Sh=)P;P7Rp32iI|N55=J`Mk+-{wxumyYo$KVwW%1`E!_I zMjk^f+t-zbdl^`w?#tX05R+TUkp&Ru@k`rRJWI|YwX8vd%nC>;H~i6IetfD`CWtDr^mN$k8S6h@s39>?bq*v?R7DSGd{5j z`9F5LnQyOf(el-d+}UwkWpBppFbmI@_}0H=+gWp2A*J=DOtLddpDp2?Qd%T8??QEZ z;`BQ=6T;Y+`3O#*_WRHTJ9FcLMfPuQ?)3F~@%7=&^m+Wvv#Sq#dRpd5Wj|x7Q)gXe z@PEU-JEsn^ae1F?I4{#E!WG8Qk^V>0fk8xw$H#vAx{D5{+9JaGCw-Dw>!)MBjo(L~ z`J<%EQOE4r46gkv4K&+1V`Lb74&SJ5KD*5O)p>!1t{dilOs;&ifL&-tO`TLFIVc@SdJ?72s z>G#y(q5rKfo$ZRP5B)P4G%u|Ri~cle#oASzf0bv2@lB6YnX>TVtZ5(aeZME2x8tW; z?%5q~vu$SkzH)CWI;lDL*wfs#b_Lt7A9dvXZ=zFbz4rE&ssBH0eyp;}`Mja;&##h8 z=Ow$BUdv6dc>mi@BrLw#TP9rce5F)=``>R&LJ14qEHq_LD&PORt8?dPaUCPovfU*f zbHa`9PGsA7_w^#anb$<5r`i}j&gZq_Vot7FezbDmy{=2_b0^%me|4w*n|oVr-`v?| z`{x0>f6G4KyOCNvZ@M-t*mw2bijFVK*aM@~TvHwdE5Bs#WNJ8YR$5FT$;!2co$nLt zl07~KwOJa*CMy#gBLA#eH!Y3H=t7vLKaXLq`R1LX!MQIcxrBXW?Pl(?OTK8P#TZ z2(v3a-Bi)~&E(J<{?squ%I-0AOh~Jgn<&j7#ndy!{`?hoPp*|+;sRT?Ff&}WsP6k( zdfmZaPjK?pIahrj{(WDsaA)hEYZq!B3*{PKI2I!N(cxjw6&8a;2Dwvnx2@cLUUbTe z>X*y6G2eN5Jc4;bUupTx=>;FFUkLwKYFhFttn6Ci(%lC2dRz`s|4(ghwA8&6xOqxm z&Wl;MZzXykSCd_N`QCcfgPHyV08of{_IF<5ie^`|Ir>S2Q!hISqm&%{+l zmaIInfrsI~Zwx2%>-eRY=AQ|0KlSL$+Y;3moefW(YFu*km$kX`czMao2WodRB~Q3M zPR#tXaSiW+)LS9vDr^olsL!+IJ;0P46slGzXt!p|3++3ZyTw%3nB;nU)Jq&;Tfww7 zaOvYr#)covaUQ1_rrl)HQn8Bj+0*dsnweC^Qf{g3bw9p+Xsmw6zxsY*@r>;Pv6*}4 z+ANTZV_ScDX4xCV@5|?`w60at_2-wqu-NX#8(*tME2V#(m%Y8M&HDW=^*bfMcVEp6 zH&RHQYJc&%tlahK&NuRpu**emow2<^^<>2)`}`EP)yC#|J@&_!d;YIFZqWbC_i?_; zJ-_2q>-$AczVWPlJ9YZu@O^)_7St5StZdpSX11kuUa-}yi7zE3Zmj!l7~K=D%}}Jt zvE9>_)8T*#oA#!=4$bmvvKltQam$K4?5>_Vzf|@BJ2S(~xwg}1+etERk@U56XgcP2 z^3;s2tC<%se`xmfi_z}*yvhBi*77VCe`nNYGNFJW^uVd#%Q&L>QUnv!mWigSo;qi; zb<5;gR!=@ovCo_=Zhv6Oith_6GHW%Y3-|cM)dbw1eue>h7J#?&}=xD+niUX8yiQ}-x%K2Q0c&v~~q?_b+^pe%g1N=mA? zO7eSm{_p88g35pKFzhUJSfn?H!=h@*q3mX_^uU5WzY+oAq=0RPxs>;@DQL)$d z*T2`(U3~0wsK%z}+sE!KRW%m z6~15a*Y0scVapr($u*vLIoHG)5GS2EXw0T-_ z`LkOyALupaFU?!C&baf)QiTi|i-O7fnkTjK$4$%U^0{EaA$a}rCdL`9M=QKEgC}in zKgRp9eXEmkfT7&4tdg#pJxV71o(rRe85d~D@m*eU`jhzk>wT^UQlU2Hxz3UfClCKV zm?QtA%U$+@qGI6_xAR;0CvhI`vS{e_f4ZPp^Q5Cj|7^<@hcnDH7O&INTJ^hBZ^9P_ z@qFcZ3(Ffm?b}#m?8#a6i~shiIZJE3CQa0hVel$q_PG!sKQC8G!@TgK@U^gOEw$>q z)=b&DTI%p}yRYXD&n@5Y{rt?j(>uT{xgN z&5y0j=kl5P22Y=wH1G%Ou!%o4`*5nF=dn=UuPqOEIGuhY)3jE8uBe~e)?kUt&zufs zuLudwitYEY^;#h+(0Qe2s;c+(@(I=tJ8nr{{kJl5qrJy@c8(pPhE{U3+`W796QiVx zrE+$MxzufGZDiPXi-SRF&XkRNZ6{7+;PR0=XZ$foVYMFftXcCVb0%fl(bJa>`|eE7WKR1ME}Xu*v+~<~uEe}^b%}G1$^GF!+WGie?U`-c z(*N2T^02)ZzO==-oKwIt%VEi;MvE=dZ`lMB{uUfUXJpd z{C~v~(Q^z*@|R8S-0m&0t-W>b@x%U)`;wPVu}k`THvF+pegnHfh@8YJcMF9l!4{`_ z8Es;-9_@_NpPx2&VR1s$gUkFa{r`U~-;$oS^P6X;{p4>(8=a1MpYwe)dq?b283V`Z z+b7`D9tPbti3{0xGPh8KARN}TfxCArB;U=VjQ}snojFvH_()*clH21|82LJyIEmv>khnxBb` zwv67grYbah0#AEh?kwpmQyNMFJdz8N6Y3;n)Qa4UmYrM1*s|U0=gEK5jzxKTbu~{h zlb#S%=i#t<=YEd|L6M6;U3=MN)Zq5uaB*whREE9=Hiv`v8(1~n3pLwbc7DluD#-iv zgrnMLbsho64IJz}y?U$LUG0wB-_yS*#^&QGwQ~uJMruOBf+ddp1(E@rQ!KjGnheZT zR=O|$;s3gl=fb0Muj-B`=6*K}PJi8HtvN9$z=i*nYh%fk;!iD4o%aW;E%A)g`=|8j zmr&d6`TnxAw>)3t8pK=6EZ}6UbHT=P)#s)v$+;o>JUk>m9j}OS;IRKS*Mw2+y1n9D z-OM*9mM)e58!pdl|81pzyXxunm&6#)E;mk`{O89`N3TO7e{E%MzdkVIzyHtHc~Cq9Z}xo{*TF^Z*=zSzEZ(=cequ(pR_X4gadKa@C-FzS6dY!k zxb*$*yID0-8Y|re@8)Q67`(N%O+a?QSHYPYwiaK7Zv zb=KC`i}SQY@g>(WU}M4(iEu7US20TcYo(hriEK>@A|m)!_4^qJ`wxNX8T^` z`~Lc#Vk3XB@%*BRGD%zg&)Za9*EY#KEbZ<%>x;9L(!O>_Ze`gw@3(DN>UomykWtZ` zR5AOIP0PYBbCj*NiRfg$;>fjfKl<|9tF~JP%VXISW^XywcI5E^Cnl*m9+ncO!Ba{; zh{fhT;eYWYm!l!$!LkF%4wIJ}GA77~bR<8#xQ%_DaeaN6wNYhe!H)gSUjNQ8d}`+` zV>x=+>P1%SS+@0)86p_C+x8f+`7By35q{Tr15-mseUwo06-UX$C8~CbU6&2k2>)ST z?v!0#A5mDd(U;TzRYX9)O7s#nGgG;X-KixNXO;y0I{R6re%Z5}w-Q%Gax30MWXxaO zymilow4EQoyO`Xt+8$WxOw2J&+ z9{(dMVt-=skGJ=KuYdS!cHZ{0hvMX33E%x#GspHt|L@sQktC__ZAV{lAXy7u~jJ-{}J!M-?v{NhoP8->ljFX=`fj-nU1j*vvYv zc{m%yEcSc;nXQMxIqqh3R4a1=Uw0?(gDp+0i#JtEN2NO)<jeh8Y~$8_5ZT-P{$Ad+zKn;l(&ycR zrEXlPte!k?x31mW_ocS8_kHl$c)6lT`QVOoTJKl$sMts?aFN_xIBmD=1f59#>Fp}} zJ~qr_)bN(y&QsW{zG33NlzyHpucgM#KCf5kU$&inDC3m*rS+?$OP*y{pKsi-diiBB zE1&He`$`VaQ&NfgCZ8DKbvRrizrKRST;E{IjW7QL-#Qm11bOmwJdj_a`CL3FxFg-` z)6z%cKgxF4w*3Edd%xtmeec{f_k>67Tp7M9-}TYVa}n05xfz#MT#}gB)mZEK=E1Xl zdhd?^x+woUQ+o2X{^z&8UlvX3`Vge;?^t5j{O#SXRn?JhZ(eVfv0$0IQ(5|$#bU?I z9VexfvqO^it!dcd`P}3B!3#hCEc>u}{$HOPd%rI5y<8*OTp)2~>dbF$!E!%7^D8t( zPBYDZ6>|FBn;kO!Ame>k<_?k$tWipxb>bZmc3D{^bRJZaJ#se|tR z7iI*_Q(?8b#@4Xmk%DdE@g2>=6B(CBGO0b5eA?|2ZX4}h^DN`~-X&MQRmwixc5n6J zclXY1SX!NbqwbBvjBxwwpI%-n;g6mFa$<-%!xFDu)@M4*>{f**SFh|lti`=YFg~X^ zXH|zuu3Kswf2HK2CGPW&lx*A-rOC16f&7oMK<8?U6|d9kzJ}N7{&|-Fe^>0vrhQjW z&HK{*-ErgkKQ|92KU=!La9Y!?CoS*lv$nl1{`UT+-1!|-Pv~{LKEyalN>1h8*5uXS zBF~%+yJqtI+NQLBZQ)b*eq6Sumd#DGx4duevHFK!KiJ#-Zk6fT!O`2t-chmH(K~(j zi#HFB7}-`k&v09~<4G>7fF;LAo`{Wqx-B)`-2b=82MH}dAoy`&&yDjY?w2p{ud8v7 zxVdibbKP5&dTr~49?V#xP+(9yL1I-=*&DV)7kF=)oN-HyI=u33WSz@=N6G z9JzulgPD7`FaD`5F~RJD#{uQTD<f{OoChZgxD;t|z+}Z2QW{ zY$5T(VfFl}n%?Xmwu)LE`m$-m`uQDp{oYIOMx?w5skr3wP=9vWb3KjuYE>~RZComv zUtjN7cF1G>_3frn|KD0{(%(~1P;9YsbKeW0nYR>wp1E8iefVJ%16Q5HL0*H(U2C=- z%$LcFyK^J&etE1UnizjfNLVE1qL{XeHKES&oC z_Wi>3cNH9F?#+KGaO?QzQcxkBFK2bYr*-X)tFQOz?DM&N=h7N(R?v}7>-)u-jqZKw z`*b6}H}>bu`#*Zm?=kgMUm4Y!*4n&ld)v~Zm01B(Zp84PdYZlM$r`T94fi@K-|V?) zB!8(W{a8&2S7yPa%G<{JZTEjIzR%mgK014nV8W3Fi<%iFzr9`Xx$q>10aHPR_1X&| zSsRx~GNij?DotWGYhiR-GmA0eNa}f^-+>(Mmbv_s4;j`@>dKp6A6hYg-S&t*DI0wc z&*=NeT)?2_z+oF`dTD|~%ffW+^pzzl`S*UQIWn3w%wQ8|?$K6Wv_tOpSrw*idu=B- z;g^g14HUb@O9RjKoNBIE)BSn=CV?Y6jvZTKcJQA1yZ0tf=Y4$4?yud?`BM0N@6@@w zK1^2M&l4TA@55E64jo;G@V|k-R-TL7w}ww_{ZHo8wcx zjw#$$&w7=8*haT|{hF(MbuY^TY!3UssAQ0eeh{!|&z>DsZQ_E_h6(-^9QPio9zEtO za_7Qgf#q|29X?#!N2g1le0l5IQnj$j%v~8~mlGGX_hm{h-WpkUwWuR)jO#JcfqP>mY$7~vU8Mx}%r0lQr zGdP%e)I3;eW5zn^Y{SIV^OZKAz1b9A8lLFj{~%GH`cP7UQNk=}qsMfM8-FyG|Bg=k zXFFbg~#mpE$Ra$v^1{VYGs=6Z&zEZjCbHa`8={%2jcJ~%yB`{>gA#s1g7nH5Rf z4m3}{?74PdVfUdN#>+V$RrL*bA9FDg5te(%et!E4G4J3S?^(~59-n7i?--Q#Wk(A?Y_wbW&gfm)?Y}w~{$Fs@GN14F zXx-Pkmlt=i=ls;VyLax=$4l~;{=LRL$*PG<_Oju`>v5GA%@Q_BcK`0%5!bSq=i^$5 zneA@Ii;r0@R@CXq>t(ZL`2K_El~?Qa`88TKFXi`3nc43%ymM#crFW~tx-2Cay|!&y zXfDQko?p!&i>YVU*7xjzvwycI7+8skF&&92?G#`1b;E&`*$-yy{W@dT(W{dgt0(U) z`gDAKy}_Eeok0&4uTCoMR<`1t_Fmi6)!>=9#M5SZ&oT5?lH&?Te~~I;}sBALuCCUU6gIy40leJLjwL znXciL>z=!FtxV>uNU4?fwNt$V8Wx8})Eylb64oWMaB`s-=>Hdi}2kJ0t##i7!5g&q(HZAaZYE{yg2anO8;fCVvzUHeVve z!18i->}>|YV3Q>>-zEmKmH6JcaB!8o7g(1HhjrFpzu=q-s-S>4MP8x z^nUp}Pu09t-|l0_C%MbvnbU4OjCmK=-)40DS48YoeYWz8KOXs&z8*cqM$3_Xu9S+{o`` zx9i!)4Pn9*AGv!Aau`Y5q<(b^u3JD2l< zqt^ZsO!s(rT;;DqQ?TE+bqbO{i|i!-{ov(qOFcckP3ooGDrpr#&V(7WLNmM4xN_Jg z^e_tNr~R!tF#GK0j5ob&ZBD4an)zh@R?ZTMLw}y17n{&JQ`*3ZsVF!j?9uLxCAk8} zj5hu>I)9pN)eR#kpGQrv9)_vHMxvebKpb8pC3yiK_AYiqb}n{1Yd?J3tV9Rm;ddp}-u z&*;B@W8n3wN{kOFurKp|RP1&#QME zGM-L4vE!03qt`P1q=fF9bAKil&1PGW@N_xj6SLIR4+aT7iL*WXw<%sSbL}#dE;*ND zH^ZxP!u(55pC?TDV)S&oP3;3CfuAQMBG}Bn>6A|i(6LA_$Upr;`u{F@v!1!LWVUQF zSUz_`e%L&l9+o|KZtw&x;q#QSG`Q&JCET3*_0r<&{IfH|f2~egzMIjHZAYZkk?(eg z%98)OTAx_&RePLkxLz-gQM*+0FjX-{=2acS}r9XV;j# zO+)zWx0mynSxQfz@}9-EE^_auUr~2g)`!V+=-To13*WxFZ0AL5uLb{%6y`VGz7$}^ zS7X_*@V9f+C6hUOllBy>i`#W+Ne%-?rexiNr5x`MW~(1D_wah5T6y#1A{Qg~jl2pU z4=ZRU<_T%UnwD>T8~!LVAZZobkD1do&1#N&PZiylyu7bnzviEQj=W$Ei+u8e*7ELS zhlA^1)Rgv}&)s-|#lZCCw_fF28Yj)9j3aMl-ue7iZ^PT4es;^YS3fsfyGoJkn7*OQ zOATqCnH5&C=S-yR>zOY!Yc04 zz2Jd^%PGI$Q>wpq+Hc#bt{H5|+dqBT^j)@hP79Xi6mn&}b&EdnBzK1G>~tod%AE^B zZ|>=F)0^-)BS-W^rfd4|IU*VQ%}#dPJ}6|KxP9-I_3UFCV-JLRL~4rq`XX=8FMX*k+V=2=VCtUahg+9bZ4kBkC{edZ z<6_{$V{P(*z6ZWr&%Y@*ui{DdvKF;F$G8~gOH|xBs8QnVp_Ka0-udgrf*_p)RYPS4WwxyEd?NX)ZleBr?wrNYo)tCDII456s z)~fw%R#w<+og>jwGoFUuVG!D#XzBh%&+vRst;&XQrF<4km9>S*e0>EMF6Ql!={egc zk#T|h#!U66%}p{3c4dG3n&{^qye$7h!z0~Ub1j3D#Kf0<-=1r?wMp-{p@y>J89~u2 zV&Oimo34F3ozk4!Wa1#5yopgtUhQ8g!>3Ir*-K9^Y*s$^Yj}o z?1}tqdnR{@)9iU_55@YQyBun=doItsD&oJ;4raek$pu2w?Iuq-eM((Oq|~&2*%>b5 zfJrS!zN}5Hi>^3-DLUsjdyvqcLneH22RB%;IV4Uv@%Ng?m&q$w1Gh~(V|r(NymM2v^jyf&i{H>E0B4`TflunSDQ}u79!Mai>B3xtMD1i=G}XK2P^t-eJVz$@cN*JJ;*&J8$J( z(4TwF)6;v8OM;w4!%I1~s83BZFYtb3b5=@Pytr}JCx!2)6ihQL}Kaw{LRpj>LnfHpKkC!N8+ZyhOUMGhxE3#da%I zTooIY9Tg`YUVSY6)$ib{i-*!z@V<*K+T1uNYl8OHhoLIE%krKycQvh7C}w_oegBv3 ziT~%xu1aR%{dDxljg9R_^=o{eymw;y>bf&_^?Rj7cjPXJ_gQ~`uP6NZPxa5Jhd+I1 zvR!O&lss0l*3sG_o7LspM;qPZW3}!}f9B2FY3_GX-)vRcr7VFW{%^;w$8(;qeH>{m z$y<!(jYHs6l? zY2&xkuJF>PZP)d++m9~4_dMZ*^ijLQ!r8nlG!5=$A@G|6;8V z_j4F0`Lj=4H{sUKoeT|CuTJ~7-hQ{o`FNaI#{BrrTO}8y z4VPqU&(*ws_EkLP`L}3hkI2;T@9*Y`cNG5={;iVrqo#P-nKBXm%X-3l<|sbeV=g!6 zsr0w(dA0Xm?BJ-6_W3rteM`9yZ~9me{P? z#yj!M&qOAxj=hQoLP^HQ!UJyTU9gJ(>NLGU*wTfU(aGqJGm-#q4WGpE8`8WGfYV4QvyVP8%3pY)Bw$I#ob=tJLYhqtkKV5(N-i?KB@$;{Bb2l8m;&E~Bs^rXw zn_Dl09f)8!xZugR-&HK`aU%%o#QT)nnjf+n0 zvuyv_B`gsM3@YY22bF#@DCt~`S3PR{+o9t0$7PRr4~MMvRsXrutEqCA|J57+{Acay zWmuf|a>51i&cC{qB|bVk?=7#MnzsFnp!2cMnfq*V5~g^v#mT)<61d2hb5Z_!^q%tX z6F>ZV{ra%^_CFUsIf|s)i-ylTv+C;8_^RwYyItlsyX$K?UOVlmKKu0{^Y**aV)x5) zS7i5AM|+&VUFNh;(qX6k(+w+ossqeqpP2|w{CG~|V!v;#M8?H#(Rc;Dd(wfw)MqC; z=KnINRXN~ewqb1#Uk%rZ-)5}GP4=GgwW&IwV%N}FwQ_E3l#=Y7yU~0tzW(dE>;L{b zeC@c;!<(u6{vQ^<->LXz>fzfuPouZ3;gjF|X4L^|yjDg#WgcFfTs0_wI##HZ|qPrGDqlR|s-lvmx|mR`o~My~>x@Ni_;|tL@4= zT)}@KODy19##J7U7fUMKPIr+?k8 zybBLhPrsFvc+Q)x{^{%wrTqHET7MN~M7bvg^_Hx=GjmJjVJlhnNUfEg4YPVb2lae@ zZ1ulk3EzR7+ka-=)HpVwFXH0DqGJJKOvY}@&dPb8(dny?O!g=dD7d)$Wq1PW5<8JV0$RX z0nP&tCM@xEUgqD?d|1MgRr%hNl@9~=oITL^vAusj&+mEnh5kKxn(x^nzqPnT?P_O- zxk6jfMD=o`vsZ7+X69vo|F_}U?s_r1jeqwQ{8zUVcow%;W1IMvtaLp+Z{AD^W}}A9 zCB9xlf(gx*Zx1MzbD8liv6JY%k)d`?*I%58E&mvM9{Z-oPUD&;p2_??H;y@WmYu%S zvOM$l=A%7tGq~!PR<9~ocvGE}{A05E{;b*^n<^K6-MKg8%DfjWdu1yk4NrW$eY4o$ z&qL#S@wz7utPj_I-)C*2o4x&;vEI2~M$aUFHt#3_dOk2mvvbml7W*qJI4u<8L>9 z?#HKneR%BlJIy0D_5Fgj=iI9dr0r+!-EDSzd6nhW{!g>yr!vpj<9O$r+k%6aDpFri|=;g}tIee5=#$d}&|!dE%r;{mfey zFEej4)RePbevJctgyc(__-W|tN|M7b~=kaYNt9&2q&)Jp?j=b-1T?y)fseQ!HIH)sBkG)Mbo^QKKw&!0ZqBVDdHQSRf+ZHlUb z;)j1cYCY-1{p|Mrf5!_7{=bW{`ee7vkKvJIZTd#9dZl=Sds}w3&vHF*?36`%!1wpJ z*BWZPoFwjd%zEjJ{ClPU7&@6=l^6W?yKAxCbGOabpWa-CA~zcZMZ2f3KdSSYPyL?A zG3klN9x}Y$wKev1@(K1eA;*o7#aVCAs&HAL}-;OTP;r@K>%*^W@oeq9=27ssBEae?@o8-}?GWICOk0D>Og_Nhh8>%)uve{RE;#_Z$6O*u`M$`1l7yOykzkWz;E*?bd6`-PvyY=8CP>XK_8w&*Co+ zta9MgwVgE4_jbrZk+sXUG)hb+8H>C-{Hx~TVt)IqiwrzGb6?ByPo7z1{W*Dh+1djW z_@3knhpRW0>g8)*dU8DEZ2qUuE2T1(Y*#XTJ61H?R#o<^Zdup;`(1k^i`7yCTLPU&}j>esTV!8poo)+|E$?3cYR4p>apO&U~FD5!C9zPd5ttVga^iqkRN>a=odjx0f z+9=|6{NNm(vamH1X8G)2!e?|K&}NC+{8fx4$Ifv6`aS#V>GQE>+amR(9ga;oneZiZ zma+236~}jkUG7_VKmW3cip>EHqYxI^dw2L8)U_PmwA1oqQt)x^}^EXW_hsb9QW; zIN^eF;s4sj4l4uAOAPjf$Ca-AruKH@%iAwic>Q1Z-pc2jkf34uXyLiNv;4lUo^ajM zDk^REsz)Zhy%T(HE_$(CD#}%JP57>ef@Bd>wqtiU7M5s6t`M&SO3?sGfeyz6riR{Hd7h#fQh~Rvr+>2ISYZ&RCi3jfm$rqU zGG`g5t4T^GervBv@_T(R?cOf?i0^AWGYnRgTmAf~_T={ayHTkN*K|DiVSGYE`q<@7 z?N9ih?%S7J`Qy^D<1W_6Bq<$GH^DrG)t&- z33=*nUvkxJQ^@PBtHWMv?LL({UB7mt_`VIX>psO*UN_&A+B$WQc3`J>ppTF-gPMRs zhsTqHJZjHdKK}py{@?!i`Q`hJi_c9+xcbZT`ClvhyMMo2_P3Y4S9g4Y$rH!9ef!H+ z)cDPoUVT-rq~_KnKJL3SiuSMYzOv&Ck6mNk!iAT&?`oKrDb4@&p{&QP#+SF3&;OTo z^Y@8jVc*Gnls!_nU+eBnJ94by&A!uKdGp(|n>hA-2w-r0*_yqVhdUt5Za(V=yV(X& z%}ngRsg0VGjf$@FyQ|i%BLMao2$C-`GqIX)>@b9y$pN4vHrfc=P%*e!BMq!7XGhljjW!( zn|=S8KZA0|rmG#Et`jzu{>`{#kl3TMX`*)B-c0x34{vAb|NU{i?Ba|VmH;OFk=9|BqdLgbS?1Hp@Y|LtDiQ*#)*?R@3=)*d*@cG;`;#@Ac1 z<~#G#_h!vGUvqcz)dxS9<$OF}czi?L@dw&79M*cIsx6E3xp~g4cM-q8vgO3OV=M=K z=g36ZEEjwlegDU_#m^Izv$T5;pE&SMqq~}6vC3l3TY{J5Vq!G86lVNjPDn9P`Q&&y z;jc%Zr1C6QhL^LqZE{lk9GD}~dxoxFd=HGIxKyMM11ev&V>YYl#w zIBV~&H*fz|vA>etop;^w_}6{12lC&n-u&;n0A)&&pt=0Z{TjNF(Kwf86ePtCVkHq%qOIBHI2 z-Gw8WQ|4D)UK+UUXYjTq!CYJHSVWn=8~fLtWs-QvD8Hfh|4G~Tn&tN^!y`8b@7_Jj zs<7+V8oSCb-TLx6_v?PKKmEK&RX;p_LO`+f%4btJAByO5n%8G2otLZI`lkMk>(<`9 ze^+h^I6ZsRRR`mUp9XxeV?7-&Y@)IacfK6$Gl~^JZ=n6gP+=n9{GD`^ZB2~cQ`~|NlR>xy<;eP zliB#A=W)H+<)3U$gw+}8x@g;7akMhoIG^p$5vI=RF*B3DP3Q`gG*Q;NBD|!(d+v`G z_1Hs&$KNlw)*n~9RqxiN85jFHyp=bf@J>GHv*KO1>mH7UJ#8GyZ+fguOspl>$ToJL z7iUbIb8p`7*V%SLB^)Z|eNugWDl-hLPW7LYf7@Kz-|YYD+_Gl<%Dv2PPwy^{zucPl z-KHQva%bpwZSS|s*V%p5{qs8iiu$6wYtJX`+qCk}$H()xUo%;5GC|9merxvJaXSH9ejtDAlwF8_HssN0kw?B2v}3teAsy`Cpz zyM5Z)_?r=R|JmnnRS=%dGhxq%hI)aEKCjJnqJ#H+__O$_Ip4c$Yv;eJ5OV93-sf`8 zz~ZTm_`{e7Z2XIOH5)&B?o!RtZZPOmU9gprLzN|n;q6>i_A?DXonKz;@mqE80Z*LC z(xc+9t7rS%ZjiVA+H>FWcJ1f4W&Ekrv|q{?{1fa~(X*M%tGP(k|Io!r4CnS0ihuWK z)+${mHra~#`}?%6Xsz7w-gmzR%b)IAZuRq5r>pV3gTsOJ9N?>?2z>wQyn7nBuT zOw!?)RM5BV^{p2-Z$F=L=c0!>bI39uUbgyEH!X~VcW$}=(!6hKzU|-I`AO<_QD^GQ zp6gGsmEY}OK4blLz3F_PUZ#ex<9}9EckgfXzPR%6`0YFIe7vytsk8Z==Uc7JtaWNa znALkb zpsZrTZPnWHNrx`pW9+p0tn<~~;imsb#%mKFbTZU3$StTZxb*)7KYvDI^?X*hG^vN3 z7bb6Mj;%Z)SYj5tUadl?L7qQhZS=$RulMfxCl^*<5;~bH_l&i7m(NWNnW?kbGK2&p zE+2C4nbGO&D#-A_Zl(Wb8H*2X%@ubK2W#)-SS%0tsr&v_={wS~WpO+9yx+F_ z)GOIp%L?yrbGuSCdEpk%-ghhht_jqQ+!+(RzIR^Rf_dlJ=IvX#j$yY&$*T1E6>j=d zt_7Z!-8VJgOeXx(^0>wu$G3R>czPx?(`fHo)@KXOa!O{}e7#ok_CxXd>H7OV$okj5 zyfEkd&bN)$r$6=nT4nHkhW`3nKa_kj=VolqFmG9VYuma#pP%ivv0bjaFqr>|^WC8R zEw-!gs@N%5ax4&guwzj+gX0k?rR@v~6AlHpC|4vMTKuF}zKP=jk5H6kour9v>|{0m z1IIPR{|H-O-hV@I%>%c|{r9ui?^`teBLAuwp#xvkE2eGQ@=2od|K(dZ_uPJT;Qqz7 zJ7Tf7F1(rISD5_Y^P#$s$DU(_0YWnl^>NQ?a-3n+o;x=puY7{bj3hT>C5}4+UtT26 z<$igQi*j0UJg!SK#+lV7$<1Z2SH7roE+?>cn&>Gdz;D{IDZ8r0nWmyGOj7 z6?v%yXN$YK>OXc-U z4S4$Y`t|ZR?6n;8d;J8XzPuN&|C3``x8~m2B|bgBv+C5g&h&pZO)-AqQiVCjT+D%u zHjbXH$0qz(nR7-!L+#)5EzV#66rY!N75i{W;K<^}MUFf?N)JO=19B^}y|PLq8edAK z+c3=No5-nX#w$?Na9YtVG50|J*X&)>f)AV4IC(u{n(}szSm^w#yVDuVLjIi9UHh6v z$lmAfby@p$at|3)G7~cto^2`GtZ-WD>c;7OJCud(vkedS#`FI;FLv$t?EYG*a|hRR zDqfdWY});KB*_%j>n`B$HvVB1~Yu>7&$f*sbo4?kTNYmqMEQGK+xQ~r6?TeK>s=ke~3n!Rat_V;C~l@oV!s;*boydO8a>gm()RTn~jpW_tKFHx*pda`Bv zM{nt4PquZY*L_L(`RM+&@Le6nTMdktS0;UAeGrwxq9GGx*V^+%rN`@Q-Xn&|J9-Z)H&~f9 z!dn__XT`s{AT>*_`e(zfCDS%O3j3LnZ(HWgTzt>#gu;$nz=e^N#b{e_~i@&7@NhGkx{PwOb!-w10YPa>tAxH)l+d{@zgTW#53Sf7Rid2DeoAJELl#Z>(scMPN zjJ;a(b1ol@yZ3#T>6R(QG5bpXEm@r#@lwS8%!NJQchA||fB*JewXa8V4t0L(zZRIO zsn}4qco)+Qo8_fkbB$fM*uFjfRVTjs>Bpik$A8QAKNhtV$m0JyW11JYt|ePRNK@-# z!8wok?;Yv2yr3;-wA10O@7>*^3Vo+_`j7OBwcSq5dFnqaQ>|uptl^=}c3i$0uTL#K z*egkIsRYwK6-zZQ)Qv;>aWW8_UwDMOZv)(``duI`d$In~W_rF}Zh&i|+ zE$IBm7u^pYC*0@WHRH{keQQ$}d}f~EtFgrSYJ-@W#k2Hc@NCIqI`Q-S(}3k4 zORg4PHS!hq?M(q2u z_}ANgC4UU>TO@vG*1i6c^=)|nzK5o36g8T*K2wj(7VJj$< zBXUqXRC(3EDI4{lZ)7dqb+TdFhL*$E9hPT`G2_++ zO3SQb<0~w+9Phr)GUa?ODO}=a_4vwP!*;$Y$;V&Wx|&S8yu#A?Plmf_@!wvzmeqYG zTMGp_3?u`dznrYuXX|cnV8g)2ZMn4cU(o575pfUvl27_dJP`CtPxzD%br<^LDfJlmQ7>quc-%}M)ZOuf-_1ADC+#rW2lpU+zB ze@l&lxAKP6{k?VWKfn9et*m*>|L@$Ft`CmUOf$X}iM{L)JG}qr&-K&uUwv~edv+rK zQrOl!KZ9S2^4EBOy8PNX`D=~;q8)ug%WM^TKB&vy;>s0HG+8^>!#n1dSVH1#$4Q?Q zr`+J>tK~etE?0C7+YjUPnI8`L?tA!Ad|q|r?kit!319lQL#xfLy8UAQZ#IvfPRnDB zv;Up<%xihsUjOp?sr~;C-=D2AV|nhky-&0itZH8L7Ckz`IrqrARqsU?otLtaZuD@F zxNLiGa`YPEKN}D!zke|*bowk0|@4jz@Ysb5rne%_VtIr}SqSD#9Y^*(()@a38{)*JVp%{aGO zttN|e>%7DBlNn8&wfxN*?NQWNQA<$geR$VNaJO-)h6G-7S~zx_#JNz_jD#av%Q2`X9g7Pr3g~ zzt1!B;?)Bj77yoYpNUqOXqkF*`}eCwUiTTEPg%yjLMB=5^THyPfL(Gz<}Q8_e}v^< zo(|_fm$6-Im6h)WXR$5D^=dk@razKCF)8!(&JJYxEfL>uUDhK0bMp(2sOiyX#P`Ta z-YgRnb?b3~odsZ!o7~LGmUhd6&8_Uy6D7lY8-LB;|K)e;$LZozZKc&C^~+D}|n$!|YY<8qjz;c)_)k zO}C##9N4l;-S34^`58t28CxD6J^y~)*FzhQ=R1b-|6%3-!fw_5ZE) z-&&k5dSLI991e%mRfn18Zxj1^bTY?Qxwf*mHizfSTsP2-nh|OBafN$C&{H=4J)()i z4?QD~PbfR%=yBcs%;L?@sunKi(!M01|MW25e;0w)>zdhOJ3J5Py_VE{q})-lSgC1w zzVxLfz8=QX0>`;ut#Z!yuldjtmR^$ocTP*WQ2DbxtU;IdEv(cmcT$#IxnQPO+S&xw zKMDTM3701E1~u+Dp2ktW@9mSHO~r2JrmPOnePjxHKMJ-fF#b3y$II#H($1^rKI_xv z$LZ|Hyoh^@~`loR?JaYda zV8>gPc3#`q@A|Ta8?kw%a`!(Tj{cha|ZO)m3GLCiSJ{fu)9UC^~aYB zdf5(o&OFGdz|hOQ@T}y@NQEs)w?q>K&bk$+UQYLvUTVp7p!@utss^?rvRAfl9J;Qx zDW5pe-I$wk{n&r!$SH061Y~|3zHiCZY>})xjo)FJ-9yJmeVK+IxEf`zlrBEC|HjMT z3@?8lK7TX!&7^ZTt;%CpE%b4{cjI{D3C~X1+(30 zaT?QRmmQe@)xJSmBHnJ-{dn1D9<1x1ZjcMUpT5RsQoqHLy&3I>Dm=wJPdN8&d7ZGW z!+GwmPtTbS%8BQmy>F7xHT9sd+}Sj4C$)c5+4X(xyDE$UnmkQbnJ@%as{)b)J|#*b9$ z#QRv>Hnn^HD!(q^V-R-ems{t7#JXO$$(EM41dpib{WFnz`J2tdaM?_OITL5>?q%q| z^)_JM-7CSntsX3SGhnKrwYaMKZ}EAXn2O)`*UPNv zIrebMiihXU*$X-d%cmS!I;Exa;=Ub8qAU*{OTN;w=U&>nb&pclp=|f90g7`b?qZY* zZt2~+oFzeNMTdSB(~`{xCe0WB_d%IQEYbKt)7ilEe-G*x zad;(WTqt~PHm9;)t*qTbeV61%4I8d&O4r7$v%H{HQC%GL>fU#*vTZ--{knKLDsugG zsel0cS1dgldrpM&f9qssXDV6zUi5=74|B7yliR05AtpwvGVXK!_Ivd#t1>Ocv+M!0 z!VL?Z!ZhPVhHI<*UbHck<+h}B+`1s8zhg3gwyAdbwbvdinSIVL@2~$HE3a){_vGEC zm)o*Wx#=E=`}{!n>GXG1>sfVzyA7m1u69^^D=z-LVsYdL`Syv^imm4OxH0@FNaVVu z`mJjEpW{-KTLnM0vJ3FFoLL~*+v2Xjr^D{BtjsrYRpVY4i?f0+Snh=L&N!CEzvYDg z-v5iAw)Njxs=q$x`{vio+o${QdE9(yQi;Nr(pxuK_;x&4c|p3I&GJu0f%1tT0m|lv zJPj?9%^6AauI`H67w0T_$?V2)0s9}8HO&T#{uX@xvd8aN+=iudlJ{^d=ehK}^fpVa z(U0SWkNxTj`_C?M7cktw9>ez0Tus3E;b+6==L8c(CohNy}_DQyOor-EqCkX z>@e?{p_HXCHE8AI($1U0%hXjw&x*Tcq_nUUUQST!ky^wqB_nF*BIR~6Y`Wb$6YC$I z-j9=%0?y67^lkm0SaGXWo0fEyv3tr2eZ5v^E9g@twqfW0jMuTd|AhSty619#gWLV` z=uoqJ+cw|X{Wh(3Q?&fj5Ot1q2B9;oUQ`?NSS<-`6qq9&{whkC)AhjTsumBqKWo;O z@GN=e8sU;)aH48s+*8An%+<%A*00snT>E*Z>Z*^yd@oFwPTqazLBQN;YojxDF0|ZM zsQyGydf3%(Nqs=5cpIxE?|rH{W`VhQ&jMG>%I)IbZB2?+|8tc{o#M-abLj@7K~# zcQYsYynUrsAIsBHG3R-LZ(AE1`?H#Z!48@2`B|r)Z8~Jw6m~Q%|Lc=?GNu=bN|jD^ zE4bW#XsdP4&b|1dZv8oF-D}?SV}5N53f75Ra5v_fr1;Z0Y!4Pc7LYsj*q!|Vukt5D zrao?+i`;ucS6t~cc@TW_=C1d*SsYzrW^brmelVp#@>0KUt^dnIFQV91O?qXre#>`( zy%&oMPCNa)@My>Rs;6RiL)Y3f^cG772jzKPkp9N)YQJTVtGCJ9iM3Pv7H_cjtg&$G z&=WL!uyYAd1y@!5IkvY~xKG=8EijO;D_!%;cp2~XL#&tVW^i=t_^9tOuTGrtM|sAD z7Z2?{B<3vX-TOTKyWopu>J74UGR*%nZ7KZ1Gl%7@3U5Z$S`Yd6tqzZjfADJ0R+#+9 zXtCtNS(A-*jFzA1EP3=JFnV%fN4U1mr7c~_%QiX*+__r6%;CWL_9G8Z)E|;~`=W&L zkMkGBK90#-KE8gO>|gOG-T0vI<5>%%Rix&v)<|ox3YuZ^bfK}cyxSZ0vU|^VPhNk$ z>iFWS;y+XJnxDKaZVB8nar1G%*D_~M+a>b8yV(->sZ}h|&F9~t3!b}EZ-2`MS&bWj>oK>m@%<<6CUER+*t@t%b?La|fGir7Bi5uak{ey*Ewwm%)l#IZ{5? z?q%8f&0RC!K*_!(z~o0}RNgJUSur23wmDq$fD0f;rjW<8#Y{T z``xy@{`2gwV#_4$@=HEV;M=GB@sMf!7K=}hYY!>rdheEZ{~C9jf8WQupL(nWqp$z{ z6&Al=q+!?B1gjM?2B!5go0zY~Y(Lp_snlt1o|b9i%5+h)L(@N`@!h((q)KJBgT?Zh zN9Mm(6ny)jbd}l)orYx`i#*wkb1zKQeD^lG?DrKDcZYd4ACi8aOW&UvHP3$K;wJTT zQx@yL)4%`s(&2wx-1)B-&vZI`ih1k3%;)!f^8P-!oINKd`p{QpTi(fR^H>kC+wy0w z;!ruC*>pnimVd74R)2Mi3(J0&^##2C_|0Z!(d1(_7d{$Y-g@A|yV$sw_MMNnz4|5k z?IpT@FY^E5^m8HWt9&U3;cat%MjVj3YtiYpsbJ@mHwHkvZ$mitBDWCVkV~tMj{0c6;UAH;Hp|p1Y+-5-r&+ae14vQC8y^fD$m9LYu z&59B9Vo_=@NjffC%hCT})|96~vsn*yED#jRS^EB}q>`8(nkP+@h0;_r}i12zOsicxx<^C?fMOwB){z& z*8X|M#G7YzW@qC0zD>`xwSARu%`M%O&c8QG?waVqEuYiwYMe^%v8Yaonk8R-Z}vR* zn#18U>QbMa+4!k%Zoam**?QBu6%E^t9dM2n+JBPyGi&<72Sm2sL>N}v>ukC_GuZFZQ{NX-%O5eP_h0AOCI5kGj&@S}aqj5`PetPV z<4U;}Uq1AU>lk}p#cuw$2cK}LEfX$LyO;U+^2xfwZHu2yJ(b++|M573ZA0$%S9dMm za-HRR6|(a3n!;TSEnfdi9E-O*t(QBN*V;NgNzF={VaoKCm(Rc7cVGPXVeu{M<zlz;_nSIr?8!7Xx zvd^|(H0F8xyKsxZu8`Lr)n)fHmZ{{=IK4aX)=%%59?iCS>8s{XX*c1x#&G5sb1=h| z*5|6V3KRJ`a&~0y{=4}`p8NmHEeBitY9B=B%vb8ro1Xlm&s0Y5!~V~G*4cX>ZvVF7 z>^Wh@34SN1=$gFw+%Ru5qshZP(%&O$|2!+7UTU7RGVr)l%sYoI2PXf1U36^5_9LR5 zRguO|7x8?Z=)ZaLh1+kfUbn|9WIk$(n{&zCn@S>GuzWER&Ba>^E2_?OYIkLZ)aYSJ%P>XBSXk8p^dwOD_BGW4y&)b8YeXTQMz(~~6!Y@I(|?%5hF!r3wmneAWJE=V+cJSje2Zn@*;?557ZnUf#9-}8LmrY7B@-1h3f z%MA15|FzXkl7IT%D&kPRRN5)KW1|13a2uPv@V#XCtBOmr?J|JMM3nEV#!e z#l$1W@#TU>(~9Mqb$=h1WO09D`YDN~>C|=XY0qIQLuU&cd0QcV0;(Hgwu=S@|a<(_oqQp_T7% zEO|Ip_}#^S?%Vfl&)N6dihH)t^|UGZF8XCZYhpjnI_tb;;{rv7{Xf2cQw-d^W3TO< zaQ;_<^Ca58X0ALe@vBkRX5nv(xcAG>Gj*-~5&Ce&X?bDS!xbmiou1r0gZW?E;f`k? zjLREY9$mZWH}8U~Hm{Lw_wHF+FP~ZZNI>6T-u{Tgrp0-m_7+{eG)YcPikWu`AMd=A zUzQogRH*aL`f_r&xo{ijVF9rO->&T+EsaaO(i7T#n)IHr>h`Jp_3%?M%QX99mE6?N zx7TUzU)S&aY3Fkv+k?J4S5CgHwRpx4Rh^&bb-Yu149pAVYF-@Nl=XU-qqWzr2R+qo zl8?@O*t6&HrXPCquY6Umjh|j9bm+4{+ul0Wh~SA!y-#iXT{gYG=y$sgL&e9b-`swD zDRGHV&N(D)d;h_7_CFh~_a18aEx+Ubq4U<+S?(>0ZzTiDgavs0}1HY@6xwlUg-3f_{zKEUGH<}$#yXlW6K{I-& z=D-%U#IragVP#d_Q(Jhw9Wux8y5%Ka&of=>8&i&8XJ;&AIZsug`xdaQD}D zP+z+G=i_C1wR1b>n+Wc>&@{bt{?(3u_xHayKRs>ty7fPIf4=hUsqMBaOV6k0_*eJ* zEmYTeW@3M69ZRQibY;~aTfIlm6MxTVUjBXm|G7`^tu_CBIVes$tMFIp;wS8SwDMy2+hg%pn za>!YEy?5U!uy4xzbFBtRRR@=T-Cz6M{q)zWlUH^JzFp&U>dp3z)>R?9wgsNgEzkTN z!1w6vw;;WTmlbvho0Y|%v`plq?)_iz!?|Hkw ziSLYsZap7fTuxfvn|x_r*3?FO*#+}IFr=!=bjW}Ek+@v%p?u4u(%0Ln9Qiiw zTybOdg|7G(&pR`0AH;1gi;dJbop6!8X|dEY#m?@8SJJHZ5)-!6eCk-O5b@?IZ$Uu; z*R-|;&Hb(Zcb*taU$`*)%OkBiKmyClq5Z0zl&+7 zTGOYeC$kv}tryi5RL{C{)OU{dOk2K3Y-!%pKOOUtI`igDgYwhw)9Xx2A3wcy|L=kI zzZOs2v)UtlN$uu92X%hmkKGAO`iX^`E&2?S?!MSJzkb7-8#|7@Kd;!KA?zT1tWUby z&vAamUyq-6iuX8(NMZng3Wm=Gt*ft+)x#CTQ2ZF3V@Gxs<$% z$Jat3XQlWd{(rVr-%@Vwe%zA(RAFAG=H~Uz1u?I#pS8L(J$skrEdCuD!KdvnM}FEF zHDmAfvrQA5+!c5OpO`nSSt+B|q`68iZ=S~`Mc;JKs67I4G8>|n7K=34cd46S-nQ?O zlIP)QYvc8;7bdj($rdk8u-9DZlHAUic+8>Y!V%u?kVW5qJ~%GVdydgpkInkam+X6= z%J2R-)cR^VKbO?}R{}By+wEVkS^Ih}|DBkBtNZ`#IUcYq6R7%h+ zw<|fJ^v(XN)hTxSe}deLr~GI7o{??)dQYBe!oj~yae)sjgLgYTc$#ha?eG=nI~fXP z+J2`VRQ29DnVzHeF2;BI;;D_Bmd=^+{QQewcfSR&PY+a^{`WJVf|NzJ^&RJZf9IM{ zt^ZlPKaKHl$c)WN7uLLg;VgZ^UW(=IIT7A{38#Kbm)Gpr^M1Ph3jaCz5-ozIE&@M| zy}GV97dmO#ve*6ClxZz@;#bj;d(*Rf`VC$jk2GZwc4}o5m9wjQw&QPwDaSl^r4&K8 zHTjd~6>SXpSX!%;^*L?ts=am11>3$JGrKT}UEp%xvv+?te6DzQnZ^H4Tg9pV4;>5F zsIoqACCw^_yS!{fBS88?gOR*4pP zUX!eSGtrcZh1tPbK>xDAxkVQm_E`3_J^Vdc#fD=&Pl)uQTc$x9K9{aOb42AcYi@U_S!n*j*#_axZ3#k?cU<$aR++Nxetq)K=db^J z{=8-`uUG%`%k@7yW#c&3w!gaaaz(v${=Sg;eoT_e>eiOmU%V~8*0Zj1eO&g9J?GlL z*{lsH`!}gzw}#)G)!ToCa-0d9aUnWrov7czUFBY^CcSzwMUx*3ynUs+)&7jf{7(-& zXI5=*i=CdHBXpkM#$hkZ>8%&`d_HLVbpM?%ub;lY|6|$yONR~yZxLOuxa!^oBZu}z z`-^@%Mf%Hm|F`r1E8F?ZcKfd~wrjs5%$wx?MJ(?){$l=CrRl-1-AkOx?q8U+|JR}K zrOFLph zA!=>x_Jao>c}FXVzFth#kEgd~nSsEO zOf5b)&Oe^gxg2xUCj7}<(W575(UR=`;!E9+?*eR!a%FktH7@IQ?)+c8`?S_v1vld) z_7lA~S(;9JIGg=aoFb;1+pD^8OW^b^f9LeE-1+%q?bC_N<+bCh9_~(hWhM0aD#tP* zj))e;1AlM-|1&RM&-`xv?CSv$&ldzM^c>*zEcPhYs8;^_bjFd)b{1vtS?ely`<<<` zoTIF>b?>oxvghQ)byHuwxc2H)K>^|DLbeZ}Y#RGUELf*~x8; zPqqb?KXCJYcmLlLUH+-B@7HjBxOaVh;;thKe6w!P;D5>d;6q8sEGegSP4Rs0Ci_GD z^BB!Cl{;?oSm&HES#va_K#sYV^~LGymuG#byX9kd$A{CsiXp64@Y>p2sV|LUD;Ix& zR?lty4vQ{`yz=Eboco-qGEyOMfmg#ViOdOEW@*J;FYRp|e>}Tv7Q6K0pYnM+uXmb- z*K?@2b%|>67bco;xbIVRv#+|6IrGu0e({FJs47zz<)taooiCy~_BDYzYm)V*5)8^QBu2si-x5`Phe!sgTCTDUV>z?OR*-vc@ z=bLi9U-rv8!E){O0e{V3FTK}0+dPtE?X7Ko+d0;(dO6#GDgTt)a-$0>DY3Jc{fd2? ze?8@jy;HwU;)!9K?H>c??;Zm|ve!Vd3`^0HSa{1Cr zzC1qdZ==(@wN7hp7=MeJX7QPuhXmsy?L4CX>~Yevnmq6LE#Vr~4bSxKkB48IX*5ss z`C8Ytk(;X`*nO%lvD$xgIQ6`avFgWM`{&U!Ia*n^v(AZIv$Q5oJZ#UIsuv6Y8o?kR~Kmpzs|e9bGcFOy-7FfSy6z?r+n8?wc7R53?>;go)q7=a^;+5%VO4V%sT#SQ)u_S z-CME`-@UsgR$1oR{_b$mTyd3p)XZf`&x0Y6Mn~EmO_U}HnP+Ru&7MIuW zKP0#3H~L%+GMjkkmI2d;t?l!5?_ZM*uQrQ)eRtmn&cfv%BMZKK+#oD|`CFg=o8<2;bz_+HrYv3O|-YDKHytXYqG#>;p93``}5B_ z#5XK$e3Q3twM7u!mLX%>E?T*vp+;mME?AJ-dJAv{_nPO5FT+&e(Rf zE8Mqji-VT!?1ZH5!mG2kroO$kHOj>+#GI*{eDB`>+3x#e>OL>at$Lridh3$zUmVI&$@1H;*_W*N z(ln3z>PLyEwZ#p2ZhLmbybsFMO53$c;KB)6_m68rHP0Ap zY887@=9Go%BZZPEi9Ch0Qisd8DhtB*t#;CS>Uf!PN8%>Eme;i&7dNqIa5T&=+4p>f zxLfR#IEkb0R_Lh_&O z{kz#M^34Wn{nG`f@JrkAOu2RJL+Od=?YY{g!`FPtS^8S`a^?oAGI z+}}C>x6IE-kFAoOpN#vxl3BtsD^+VR%YFW_QrGx8ix$U*qSCuxt%{y_SQhW9yC+f4 zhV1&T{_mCP>zI?}Z})7?*=4bF@vLJ_KNy-C-(K8t@L*mv z$2q4${*UiJzdHOpIh}Fp?rrkdmd`pbmp{Myn)(_+g9q|%Q8yc(%rttCeo#ft{dMFT z^V{OFJ0TlXT5)#%IW_q3}-cO34duSo3U^%>*g$> zSy@XqHaMQpi3(fK+16&KtG_GBymsfWutTR0ad^3CHy)Rs-_PkHSHn5u;O8~>Uj2WR zzAwSoR?6bf4Q8fPJ%>FD?P8@qY?Kq(6B*62d__=elaGnokGeVc<6lZJ8F!n$zE-_` zc1h`j^|gZAS-UT_*VXPQkK3zu`^S!pt*TP{9wav`|N5cs^~J?sk3M>^O7Pit>&Z>U zKBu4eH^|$3tFZjiw(q>!Nss5;i+4C=ar?-{UwPkUs%d&k{o^B9bF~7;rnJMyc%MGm z_N!9z&k1ebr!OPBPjfI{aF}y<#>E?6%u7DL{lQs(;Jnl0vb*J9rthkFdwl-ye+?4_ zX9ZqWel6nW|JP<|=ucmJPHC%|tW#!OEZf2wwJKlt&53_%|J!~33vY`^-Y8bl+IJ@- zF;S=5M0Sx1a5MHy=Bv z&a7l(9^R1uX#(5Z4%0Iq)b`xHeObLJUTKY7vS9yWSw;^1OAX>@e=h#MZ}Xa%rKP?f z!(KJ3O^!TyV?95!{0=oPmX{&+AF^jQ+TY=D{`LRgUj6CI=htn!v+?(?)z|t?Y)&t{ zQ{0rgD~{nqOmOdn=0FjHsZ)*?7Pto=P%b={CNEZPs<>@i>H59|;l?VI?Wd}|o=&pa?Ly?4Pf>h%S=-hV%4#~V-3kmuKtE4a$SRUg-UZhz&M%TN7c zm%l!|E6cv3a}SdkS5bmrwGjVhClJRe&>rA(%1N#+AXV>B`!&pJL}OJcEnPZMJ#nep-#mtfkhuHm=fpgSbxk#;Sfj7 z+@$U6{Qk!OfBZjm-rv{x-h0=J-~4G*Z)m}=c{5w$vEw0<$LBUxBu5#ndi=b-bn%Dw zGm3h3pR)psvK(&x>-_J3I)^EF--{~7l!JGc6f57#9)A8v&_wKkz0L2ln=&u6$#&hz_-^ut<$?VLt}qk(Qz{!iMz@45 z6?O8dRM;Rp-NjVay(G*_;$iL9g3vdox5+g;OU(3Q-Y&Fc!q+=YhdP}@rxv&rE|qfL zqGC2DkAr`klyai^n|%vwqOyz}`XVI7!*J%cyGQ6G3d;DjxiaxyH)nAuWq_nf$AS}a4 zqR!!cdjGrUMTxOnwx83Io2TYdwV&h2J^tUKj$4@Kth<;m@S}HHslbZ4E3P*fEj^~s zuy&E?&z|XGC;Io7t+4r}9^zp_*zj!{oUvu}bS-m0k z7H8bKv$JMhiq$<6^K!1T*t4Y!PRDz1Us^grggq(HmSxhD{a242z2Um$$YBV`A6$E>MHzF+2-c{Y4d@mzlU=cHNHKu{@9EohDTy!|M~v3UVl1jZo2qmFOykf z_1jFu4g{aNk@|e)E!SmhJD>Mm_{d+X>cjtqH{!tz;nn^bRxQrn4UA5&!}Yemk>O;x ze)F;V>DT=>;s1WU|DR{^=f!NzR^f-vbG4RVcN7Zw;qLHopU{^Q#kH*7tL68cI&iu= zSMtjN-}z1wPhVS}5!-RH!R~-G(}BLZzx3u`tG;~Akn`}nU5_#Zwr5^@@yO24{ z_O@j@Kd!zEUs8Hscy$W@zX#s31;s(7d&RcZKYY7O^TQ9$`t9@DoPRqCEAjnUE2^ou z+^}MKXANV)=Qvs3oZXME8HF8NwRHW*ISHrwPcvTTRuPKcd-2?=z5a)Gd*t7)*}Gru zQ|tfd@xSM8w!T-nU4Lc#Lgpz_k7Q&SSqtho75JHRZ@pRA?f%hh((e!RX82DnC^?>) zy7{;ckKi2B$tTzU{cUoC`Os{mBiUv)ob$UapWIaPKYH_2;m4*^3Q>_2y%YFfy7Xr< zsi&s@YCR_GaA3079v|L|8+6X3*l+w^Q2F<_{uK9p-{*eX`CR^^c;b%Dv&)qh{!}Qr z<3C$L_|cQ8HtSLj_1mi0?wNaV@`p8|583^d=X_v(P`U5Ln;%7=@7=Cnd-;!c=}o)S z+81&fe|f$Tx!mb)&nIkm#%2>wrl8f1pO-l1MAe7Z|Gnrg{`!nU@b=ZMm7GgbHf5FW zO>Rwosi=PF!23-d2Sh~bJEB_!dR$Z!Kiy(%=I+%r=nYWh^4a`*nQiLTX`xSFG%l`_ zoXVDv;_&;S51ab->8mH|ESYs+;YJD5isicTe;LwKSu(>*UR64nL|GN@?O5XNgWqr`|xxZX4K9k-yeQNaeU%PX=zwY9UPl&yTdu1tBObe{jc45Rgyn{WVfHzKEHQKc*VZpdG>#zA{T#G|DLnw+LuK0(5Xdb9~hlD zX9V*9KJ!-n%gf|u;rbtwGar6BdU`GELH`V|85xf<)GePm{aLeIX~n;g-FyFkk$-J9 z>#q6E|GuY}pBJuG7d`*kLj(2uv(wwt4sKt4!6`y;Ti(wsZoRnd2TNX0x_Y|S zsCuTJQu3}gK*mmf?PfC>h9$yjAE)DYbiZM>F^Q>(z(vG!+C*=aIYMCt~hY(ALwhyun!YoU!hW zITf?-`7Zu^I9M*Cde^CY+)E1!*FWLgYs{-$*D~?twNFmLO7(2^Z}ug*)}C?a)iHP# zrIn}?`^4c61ht& zCR&!A64(=NBz*sC(32^G^`Blh+B81#j%i7LBs72Go3dIyt26AvvbKxQ75<8-bb9T( zM)XH--rF0kk%?w`RyTI0O|}o&8FwgqY22HqQjN>?|($yK~_E?^u{pjtaQu@0>!kBE zw%^;jd(WQo{rA(_PQG};p(1fI+&JceZsn;(MI8ninkH(umzR7~y`&Q)_DMa5=kcE3 z1&1VLnbNLUq#TO*vGVuzUuB6An*}7>QvRKvecOkB+bh*5iHSCc7&_gft{L#nx3e=) z=keOB>Hp~9o(Bo)YVXZ9T08$e+0D1pM=k1cP;7m-L;Bv{)!IM!pmv+_GOzf42zA z3h64AG;b^M=)bUO@zn#;`|d@|)o+^fr+nSD*f&iVF7f@HVE>kH-K}|R?89a~Hx>A? z>Nzhr@71{`ULk>w-F%nwj&x3V`8M`SLQ1OV_n;(Xnjk-qav(FCf{@5o)&r@Jo5;vdtcqyDKzD|ot9A6$PCxpUPz zL*e^9A<1W6me(<@To|*dq;luOV|SlEbl<<6DNJeRi?vN#o~jjI^3ZagZ+0f*{I|)Q1NX|8eOf5Iljo3qNmJAn ztr!u$#X;w%E~@XBe>nNm> zpG*(5$(-}R$o>dF-wVM7HG(S6J02PR(oa2}&64?k%3^)xz>8hF8&(*<4(^?%Y_hEO z&z)mk{O?px?Y`ddyDG>oKSfh-g3*#YQ;wFruV}X5RPQ}~`$f03f-jrsqsi)jcpTW* zEj%b6rQC2}yN3;Lz_q8ji=XV4AGdzAqVK^znV4Ibrg!_!=vdggsOW6z^=ancbls`Pi(&#ZQp{ihi# zYGd|i-NCyu4`HKI;JcPIn8b_9z|4={qAz$@3e>2lR^$9SuKfGXiNYtKNS%-H;`uz0x{tIk-PG)c0W+FFn z!EyF`7YtJsZ{L`l|L9BV`^O6x8dfmf^mG>Xo4G>1hTkrVn|D%?TgBU*sr~1ezv`!l z?~+(p_oBY>i|3t#{qoGFKfgSb+cUNQU+0@2e#+JdVtr#y?sjaZ~p2Q$F1wLSza*&%@m)rK6+Y7yZOW?xh2bl8l+D&t=09})y7v8vGwd9 z)8r0^J===*ZrN;G9upsTzxqVB_KM$Y*e_hTmmAD%X!~%EVDPk_JQJ;dNBBSfj(IeF z;#U4{S+#3MeyjiUQbU%Fv;Df- zITJn|h^UQXFSGZYZ`!rw?dw~v`;S=lP2UwOw6Su6yg~Gyd-ZE-Ctmv+bhlb+@zyUd zqr!}Po=Bg+uu?RAfoQJFjOBMZLzMpfvPpXoJS*m$+s=J3b zM0bVt4ueXGJrQLL54ayKuq=#xkQiII`@^l&)Z<&P^SpLHd7g7hn5)dGsYaG-{ys?m zH(h$6f8EzIhKsWfa>=#LcUV%uAFK7=b+6S{7xSg-E>$gSEI2w_|4ej?VHJbV+`K(6 zt@LN@6w->hdrf^$S(D_E3Hl#DU2xpMZ1{G^A%2VeT|c*d`uE-T#f+KHjgu~H%v4#H zKJA^Bwp!h(v%E9U_3mHJsimFRSaPE9rf}a(gHv<2eC)n?{J31GjBwhS6E=P3XKl6p z5*ZI16Sn@iGW}In{iiAQa_;ZyJm#BpHp`bS&#!!7{?>EP0-nAZALVCr?w>QWN`T$t zUvkWk{=`}LE%@F&;L~3=H%X26hmd)l+4Gx>mv1&R&*7Pu;eKU$&4Ww^^RfzI$A)FR z0oRT!lxL8y_+Nd>xB8x0hS>w(%Fg+}EH~9X5;v9-oN`3}Z^;2=d&9jBhPM`a#N-qd zzRUdjs?>sYvRξ@@+(J9s@c%fB19E%$!Vxk7Q{R-PNTc0QF?TJY(pUrEUE9fryL ztGsjBNOHBTwtq~d&JLcd30XE895Jo-k#MD)ol(L6kaZzeDCQ*g;{Kx%4#ns znOQV1=70TB;m_~($0C0xfAMsVY|{QVMX|8za%rd(gZ1T=OZ+2`SE}S)ike|E&v23U zp9$-ZUv!^;O#NK^+j~MY?@wCxeCChDL+T3)w-|h=V2{|-b|LX_<4f^9r_z|yepuhK zO_lu-`KSKHnT?yW-){Rf@B9AyyJMah&vx^Pm^VfD-7d8?LP7dd*lZKs*9AU$b?eo- zEvxuA{ntJ%nw)b^gYA9I*_U^$*mYi;=Um&mDY}OL)RQ(#!P`@p>V@777VYWfy4CMx zwp-iw)t%xKw|29e-!H1(`Ovw#C3e1N)V51%yN#~dW$2h{q&{>!%KQ29f;YzwT)DO? zs(q=>#XgPZ)7NJHXq|XWR`K7Fmx?@n@%hV@+3V%)Q{Vh8n(I~YrQ%n`%O#I1o;c51 z^7?a!ece31E!&vfTYNutSf~A|p1kdZ{ElkICflEh>gOHq)ZP@DR@8rY$xFpt2EKoK z>_;S*zkmGwtCf09edg;zU*V{pS1=B>pG5RKQfcKp!|hZ{ikx+?|(I6`jd)v(l1YY z`+3QMGcSyzOVe(YgeS9{Q+m5Aak|*1k|}Wk%d<^6%VsU}x;=C5?q4gNdM(tnW(8fI z_QsDnyyWnD&O4u$e|rD-!0##Nn~I*C;p|oMUdwy2;)h~P&6)U>lCd+U8=t!LF(YJM z!Ggw<{A{g;H~#tUJTb-1WAQQh{r?o@UNS!VB2exYeu`C@@d0n%op&Cw>c{vKU1Z#< zj;q_IhDsVF-gvMu&Zh8t+K0((9y4Try?iaXhja0nKWABm%+=VRE?e5FS3B>)GM|?X zn(3cZbPALDUK{vbUhXULMJ8j_q>1r|e*HLRyULh3y1_(qvd+hOnPne^CzzZxu5q-e z@&2uQd7{*{7KSZqCbd7r1t+*>ACjnf82@9Qarl8|{=L!DCD*OBS=%`6^5uoW6&D4+ z3V%Nm(yh=Flee}1mupMvuQwk&H@CH{I1>E&XZE%1iu)yhr%B!VvB!1pX2bf%D*?sN z9<<%veR`wv@m2j^)0O`VFfuJ;T%pphy^`w+S5nyj8BPf?&D9~ie-36UDmC4&Ieq(- zu6_CJ@~bbGoeW_Go`@bYO>0v1(Rmq~@=DKUMafzG9_V_wo3d67I%MfrWn= z0q)(mi^~ z*~jhVPbI{(98|8l-8zk*u>dfvpc2F&y-jjnC1FfEa|Vsf;YEjxw-PRNQilD zHc_zXJbp)_c(K^E`ybbpPw72<{a1{yRQs`|$%+jYQVuaKyuBUETn;OBFmdP>Oy+BF z^khDg!zcYmAYEs{BR*vnBOZ}wez#f@h2~!rU_3VY%M8JckFTx$-x#bHf3bT@t=$se zsz1T!j&xpY`@Obd-@gl!{|GebZPzg7J(j3h|Eg)GZ>ODY>Eo9#?=I(@cfrbphwskb z`1o%}3hzBxV6?;TieuTlEz_BF7UZZc^m!$^;o3cuuT#3a|3!Rovq)}Ne|VllA)}o^ zDgMV?(~uwk?_TP=mOn>^iFcpmpW8;q@;`M%ozi}{=5yG=TR-OS;&_$sdgxrV@8Y`_ zoMCTb*wQopZnt{&-Fo4DG3I>$m?7j89Z>6TRa5CiKUP(B^9g1ikhwa&$hd zaIZ5soh_i%I7mId;Og>xA@}e6vJ5XID-(R$Ll$0M(=7Px{bfOqTLvQUZfIt|`RKm; zus;941F9CT-9Hl5>iYXj7H#{#KvwEv4ukM{(JGt0AEaO0esTSJzuAJEDW*@=_D`vf zy4Pv1`^KxTR<2X}){!N#L1~YUy!$3Tf7Wu*bhdzY&5|z*ID5ac=LeSmnE2K2gJFZ4 zby7g9duH|{p?0H#?+@6{-?e|wUs?Viy1%Dz{+}XU-SENA?@orRaN?1pjk%}XYE++j zo}I%s-;Mu{hLp5UrfZffv=&YJe6_jQWYVd> zX|eOdRV{A^v|e)H(DHF$Pd0Cv>lh=*{UGb?*{a45kLUlHy6NY-+Ap-oGzSFsa#c z(ZPrXy)&iuJlNf0rsz^qZcERkmlhk{A@Cui$JE#envED%k*Hr-4wKDq9G)%kCqy668{lFl7z z%w(SV`GMTw9l5`DJij8YA>PIOU4CZRmBw95Vne6xda>3tYOi+1*>$hK+_5;9cJJM4 zVGkv~4OL%%ZTdXx^`EDLT<+6WlwG{ z?@rh?X~E0OG3WT^*&OMfTjn3<>0jwI`$wXa`j12@f&Ki4Wp}C6eUiLf_D0RlM0x+d z+@^H1$wk3!^X?tv?Kg9npdwS(#qjCDvOf|M7EMg+KM9CGYzcdEUgqNRjQp*pf4UkT z38^oATdMZz->sJ<_kVt+ES8tI(k=ab&Z{79 z-$yt5PA%iP`@j6np0IYq)kX!T>RW=htrqssH4S%I6SZ^Koa>S-QxxtixGR3unUus> z^t<~-=%%o%e2PMjtcDE2?xsh3Zco$Gc{f8~Zrjm2f8Xss?f&oRaiJ&T9)emKj)$@o zAB&q^yJ zsG4E@GKoz;mFw)I=O#&u48LTaoL+Knd$)9>p`Z2Hv(;Pwwpj(OfSm>4JZEEdl+~XX z5l>ph+;%IN1odzEo0Iu*`JaWdU%l>5+9s~?fWN0z;N8Q_k_NTQ3(mI}RH#h&6TIxl z>V!V_`z`_p{qur93G6Y4)as8ee5sc6R=HMjp7t_>CA$tE zT~N$AV?m$y)=vV{vrFY`-v2&z+21yH-~XHMf4;E&k>PSyey!=lv@eNI9-itnm>jim zPLQPK+pb^oZhVs$CNj3HusjozX0h|Q&znsvZJ6_x&-pib%j0vGjxWo5;1wy9)~NK~ zZhoQ6Bei}5!;e3A3+Xr=I>U5Q-J*2kp#v{eJcB-YvCnAJdivt^0+!2*ZuRe)klw%9 z|Mu_641Y3DM@|&-e;VTQcxm3s@cGA5Lrp3co^SsVb!ly`icDo`OVx+=Z_YKJPW;Y% zu+(_|z5`5Uy#DhZxGP+=w>aQESJLERa$Y9G@rj$&PwkbjuC9Dw%P)E@@M4(QDf^#a zo+_`O=eA=xqXol?dcRr`84Y2jwl}M6!>`Y9yYxb&uZZtn_o@#&jnnV`_xL~g&{ggw z(>~wYDt+qo`h6jObF5b8UwQq?EA)x4iJE8V7Eb@CDhx5!rN6Wmyjm?AQ}VJaxYAZJ z=1pPzx=EeQT{~-^mp&D@`xfZ=z4+-#eY?PGFZABF{%X?U?Fm@a7^$8l!gS*$qfOS~ zh*`JwgZ`|^J-{Bv-(` zrm~y8^Krq$js>TGsqXQb>o;fpWs?@c@`Q~lg~#3BY03XSa{TMeH*dw4mQ_%YlL-d^lEZ~3_nL|EGkk|3XRzkVzOfaYuQD~hb2+d@2R* zn7s~JEOEQ@k|Xz*)mA?3-MfpyM`*5QuN1eEZk)o)^=*@!Z9{q8lpl#L(A>Loig;4C zbEs0Nbqj-nfPvZu+uQz9jOriX?|Ck3XZXwf_5V#ZkI(PR6D_}cDO4_0Z_Z^=-dkF( z+)a`dHFmD9tAaaM8LejObG~?^@A*IRmWWf1b~ASw9%>cT4G9U?>wTP>{K);r(lbAn z#y#2Zu-LyvsBjtQvN~BNHa7QDP1RCgWE(#0m~77E5RsSZ64R~(q>I9XHrmJPFZ zs)K~>kCo-q{cBzY|MOd@eCOeLStZcZOyZ+RTCojJUYFJoqtc< zxA*s>zrC&B`{wTU^VcKRT@QDraZu*usv)I1V+W^wlJa_<_SOBdF4`tO;taM}8&o^dmlH2%|m z5WAK2{cOfJ6E-Fu@{?$4cjS&+ymx0k*S*sZp0fPf7$9WF(tkLW{fxWO&POv?a~>@I z|7P*i#rywozF(pHNwrz0V)fI*%0|l@U%Tx6!f-*l+Ll{G@d}Gj(~B!Bg`eK|xR~$z zt|(_PmymWmzOS!=|^(b@07^g-Gx zR(TimE_vY{g5vpieC~R*vz2}5{rmL&{x3g2wby@Go_h3PYwF=mrgEJTN0tc+s&S~D zKO3sX(AH*Hbz@Pq%uc;&1`>UOXR>|QHhx~KGlMtn%*CcXjl9Cj21!lUbDIK74|kb1 z&$d$0NmbCToUASovu^*L&iNHPIFILhS3SQ1Twkqd;sP5lk_|e;@ z{rbNP?tybw$+noyaEL!%7;#88(4Mnj+PLBodwfshw&U|x=Slh)opno|$(zAm@HtcW zmTlom`RHE`Ygb=$zZ!R?nf2B6etDS;#=DiJo!b=km?oMkWxG7G%{caUA&2#rMZ&Mo zO~3!|ZM^>b-xu0X|N1(+=4-((&O+zMGcKRy`I~w-hd3`Z{MdTaw)&mU z_1NvZYkpr`KTW;aBT@%sA(^WTK5kHmj3o;uP+!R~OHcuv)*=CDq+P@k)Y;Rek8$sasDi(X-;<{Lmn6 zT-xVZcO&w7*Mf+3fr42qANVt zHFWQ=U9#`T*OC{HkN8(WiqQQ<`^($$1@8I3eAatSB1ufcxB%^HF_FZ19orjw%MSH_*|PuePYLGwPmhxvOfu~r9oSZD=J$aA(*`qDJ4W*Z2iWIjxK`h* zU+tfGzx4g>uTP(yHO^r9clx5v7o()VM{Mui3=3Sj?Bxqnl}ra6*9Y}}#&d#ixms6z zNZ9#$UiIm{-}mlb6S>t+qjkzY$#t_T;@7@izD{vv%auE=E?@t?Q~nda@!F=`~+x}V}Z#u0{76E8ZY)7`!Qz^aYu|0Yep{r<_shpJ(px*HVA3RG1yo5cS;V0<8a;E#9g?mZ9n zfAsM4Rb2OB(w${-+3Mbn<7ZbZ9GDetKBd3@Px8}ixAVW>P0rrp$K7+i_flQU*RngB z<@uM?i{52im=NOkXwJ3lgya3Py2qDtMjB*puwAUo@OvxI=X>941C}4W&mX0@?$GDu znjKn6A1ih2ZG(L}c7!f`X%f;j`Of{{-xlw(&y4=tF~{wc`Si>zm6y9yG=17$MTCFV zbmy>8D>!ArcfLjA;fy6u74^QWuZ`L2wp-}-Dc|jPg5-X`D?e?%|Kr+Erh27Mw^b~Da`!Hp>at-;Qm1tJqsMIj z8Fb|jJ(hnc_+21e?3F~!1>J8)5-U3GzcIF7(mY_pB->yo|KV54{y)W~1}_CqJP}NE zwfazpNg({Ak_g9gT@Cf8iaZCN@F)7+o5E;c zk+623bDN~Eee_g}A{+P?q2 zbLOEHTW>%85TAP^T46#|pvD%h9+BGP%<>xS-!d;oci)vZ&ow!05WjVcm?1+)knfW9 zHx?!2jm~FNa5hZL+*P5jzWd%hab$6PFI5s7ZZN1!{f-=mDS50 z%xmjj$MGR2NTH$Qc!E>yN&O$1+)n%*@|k;O*EOpA*!+)q9f$9&MzdD?iuXLd5)QNN z7BAL(JFllG?{m|qb>(-%^Y*?CyQ{wByy4qj2d95Iy#23`%a0o#yXK$X7AVf2y+!$U zW_Or5i_qIcX8$T{728(cI@rv9O78B&+W*$~!#7?qTXjB~GymX}+>kqAowe2RI`x0k z>x05x%sL&qI&7-xtyE`&HP;SF#P2%uE=p{hac=Vs=7Z9P1?>}@^PVUl_&>?ur@O7{ zn?2WhBX(FX)D{-mDKmN2uUp#dr#zouyKT>hL*7ph@%K%i-uKpc-$(xF4H;gHGp253 zkhomgq1ad`sbM^q+hcA*fLp|!2Q0^L-tFGPyz>@!hkO4#o$Njx&G_oCFE_pSn42bb zaEiR$h3$!_-D>}a-LJTwxbx^QKI!>-k0$$bELF8qo|gI1=%)DT`8AB$$y5Agd#x{q z&tD(DGskZKo*euAtJYK%2S$dMxGcUnpHF<@^hHbdalDqhvCwi~!0vh7TW)TAv!cD{ zarf)h&Xt1FHO;ZzD|^m7SBY4l9;JFemAQYbf9aIZRvqPzw_eN?UViE!GrP$C^B;qL z^JO0UU-A6!)2UOBpK7|=eY*5__|M>=BTM$IVgIy>t?Be3|4K#<@rGST{iL1D|JXd} zNDE!P_I2e4=0kG2x1ZndNqlzR^w+=Ji*E1qf3vIT@VmRI$Is2(wJUk9sp2#vizlyB zd1T#O8ot~TtXzKgz^&WAV=l@4NL=5ap;eXSU!M>tFSUWQBvCM4=9ZkQ56y#gKX9}sm6s*cft*OpwUgwn%cTVu9X-?v)+PyO#pLpo}^sIko z?86_Oo4#+oe#heXcX^HK@9(tN@BLGyDI_F$v#CC3(WLbkl6FKKS2lcTptacMsq+Ve zMW1R-C1icO=Wg4p&Nr?8>-~TJPaE6qbdFg(`9AqvmgC1gR`(-oFFtHy(Nw-}>C1R- z74zK78r5G;Tr7HZqw~|UH!^;IJg{|O`1JX}m7Y}(F1Uo<3cq@$V{ukivBU0( zzxt$;SKV$sr^5d2sL&DbuZG?%&w{qH&z-$Ap)6tg+Dpgvf3De49=kL#V{Rd5VN3SP zbL-YdtZa?9^IE~LsCRwor_(O4L#1AXt%+THc<1R;MYi50Q<@t4OnfQ@j-B4J;mpyd z|EKr=l0W@Yi0XfZ3yG7VNn*3Vw9huV?gBPF~g4VjEiWp^R%z zO#Qx`d%IS?xwFw(zcK&HrGvXRCI2qtwYXI|ZA0Yx+~RA2k~1Fq+P!%Zp5+pJNYi_t z%9)U}c|TbT&a?lj3pSs;YC)1iga0QlaVa6DmkYnwJxJH;S#dgAf5Hh@(Kg}yoqykb zI>Nti{q3iIKV^hingqHtGc4`|rXD)T`(eKE!-r*7?$-l6va9f`F!Ugr}e&9z1Ckpr|>$~drMiu)Vm(*j#TuPT?kaxs+Z#Wxwb4) z$Kr{b#x?Odf&s4rybdpT@cy>yiC?)S8vT-bFkrZuAeA8bKmcQa#Gl?OpaYJC_-DMB0KhL|?9%BFJ;px^Y{`AH-f1?6FsoM&~ z_5HuWQ-6F-<}02>x3W`({r-J0&GoOh(Tt1N)y+M>w!AlR|I>H#dmWqtILz{IMy}gi z7hd`CxW0$-&6Kus_J)^KWE*_ zn_C%o`+d4e@1op`YZ}(BHv7?A`R2`^d2to%_H6qW5xM^5cCC zbeBGon{WS;|KU@+oPFOG?pIhB%GUQVMAtJr`cmJ!o!{d)qhoiNEtUCvHrwuFeOb(H zt!>YzS?~Ru_ccIPLP=RdGw(!cjg+YvG#29UoTie&zgZ8B5*2?WZrsY?yUme<=Sd$It&;m+@}@^mV$n z1CxJ3M4idPX2+13S9kwBz21*M+q&S9yyM}9W7c6A6>s=9-gA*?J|LN!T>NRq+MH{g z{i_$xop93RlkooEp4@$+7lJN3XRDk#Y$E)3+9`hBT*ao?KhN%ZWoRiL{vxE9bdY(i zuf1>7UA|C@!27Rav*mi*cg72{ge==mfpS;@K z)+h70Ol>$c%Vn-kG$~oYASKSU=2y64+uSb~T8@6V%E}C^cz^HHsnhzi;|xr*RZ1lM zb5kxkz6!4rbSdR(Xgm5#W^T{9Lr!L?@k_RtUA^hS-)ppY)5|{fQ18@_Cf<@w%3F@4 zEZoX&HOch0n*9p)DXbfkn;$aXy2Cv2mY{W0o7L`hUCn0AcS~Nh?)f9*{*b{!@DKA` zneam$1+0_wU$def~-&*i#RqBi?iqE-s0$(7smetEe;H2&=u&ciMX7A~E+QsCX(yXCibe0CR}=n%rr*D#x}E%M`b ztL>YbHeX`0TOY+&dP>+PS@@EIPfA6geW_CHEeZQiW+rn^o~~;#Pt3}VEL`*R1&Xx_51+_av-m!`V&!8Z@o7fjy|(%X{nG?$ zgy$GLFXmO{TUIzpP4fK3lAjsM9rs>&Uz)Pf+_vC~!{tqUY@v(OZNK#Get&J&EC0Hi zQjurG)z+HbpYpkP{lp_$yUt{nztuZ$|G8&tgU+(fBDHy(r$gGj%cNRnWJcWCraa}C zgWcu>7anl!X9=I4CY0ZkJt=Lz=%$i&)u=WTgXY6)#MD&i3%A z35Tq8xiK}5VMczzY5TA8f3*B&@Hw1dc+&e!OhWANV?|>oZv98`e8(Q{SjbqR^PjL~Ph5Z9>y!4F^@LH^ss2#2_>{&Yb7y>D zN?n^eYg+&0?;cG)&wOlz%>y}Rx0JWOxDFfAV`9hPPH-yZ67^ z8?`t5^xlM+0|Lp;8I2Pd6gelsI!+kq~Iu-`+&3uyPWW=&qvsYl-9fxLlMQI7`oU~2$1$S4wt=;c6 z!C~d;?8bDzr}k|V-MYU#?T}+Wy!C{5*@xira7>V`VFC;5k-A(Q{ij$_fO@6>F^L5#$B8k7B zdPm#EOr;Y7<$W6fyMUG#)aEcUT*p__kE3h?MLtb zN%^-`y{F%j)O?n^%ShG!V0~ns>iZ{KA9=oP+qmJ4xp}IiO5zjWGSPXTPt}GWas73q z-TFn+^~1e>Y#ilNyjQj`nSVHZZpGbAQkO0X?-AQEE*~ZzxGH0Qu#%&|H@(VhLC+Z42ZC!XL@6-#w z&%ApdtUYp6)~4;Q%a#ue(lv?68p=LD&Q7j>c6Rpse@|EcpZD+i?fa|STF+Pfdirwj z`?_@2wA92Ob|QTBtObc>TkP_u zCVM_kdsp`7%ynL__`k2}m;B%Ls(#j~{?kA2{hD^&eB%1$k-r|ApISaIZ1)}$!SnMD zti7Ikz|H1g!SoGFZA=Sd8Xxh;9pam@OLoiaho$wL;x$tems%Gv>;3WFwrX9E{@nu) zw{KW8A!*09@WZCxf_sDAA6CptUO%D8yx@su^4obT=gx1qt`^pL%89#iDMNH<&%sy6 zXZ7zF%j!~)nzoufBO;Z-`{)&~eO>EY+oxCD)0%NEp;^x<+Wg5%p7p<9fB3Vh@!*`)0Cd`|G5KrD9uN+qBrfnN((5f8^@nMbAaQ zy#BFt|J>WBPkw%N_1XmQf(iCn!g4#6R~g1|pJX}p@#WUb-)=CQd$Cu`uU?&D+v@z^ z_8ZqpFQ@pB3$A%J{#gh2{LcNke><1zl%VtTawaU9P;089wcyOW&@C68HZDl`U}CQI za*ob|ESJVP(s57wKbV!N2I#F-OJF=zRHEF=k$dB9%eHni?P6fcP*4KNHh<6 zxo`E6+|XsEUK>}5uWr>?eAVjy_rvn{CglD2*n4ev?cMD7spo7Sm&_LU`$v5L9J`Mf z`IoBOeQa9xXKKmp%cV;rKe6WAz2EcRBG4{%&f{H&a{QL_J^kmQ{$^5I`3LV+a}O?V zS+sBB?g>G`UT>bia*<%xzqD$3^B>7Zo%sjY`2xQ^QOVH!xLhplc*h@^#qY8%oou{( z-sbqX6|(CeN?BUkadl2fjrh0!{kz>JbywBne*IqN*fKxPgQL@VSCXdoVXfe)7d&Ix zUMb#OA}Gq0^z_>-^Hz~W%NG+~u;*znshSskP{vQ9a@F(I(IrkdSY=Y{@7L~PEIIPw zi@AJ7`K(3SF#$n|^L`vrUlRW!?Od?`+_jrydp{=$#&6GDk=nmmF8=%V)5kxDep@kT z`h%@~_fN%7Z?{~>)p>V;v&r=h(cgb;+S%K*DE!LqcKz1rpFIL61m2X@ zI>NPUvC?YpNbNo6v=;jGPyVtxY^~YB*#?Ds<~qIS*>3r6!8@tz&liCX%?cFm=r~IBW`|Ov@%RS#7se0$m+;4fUwz*U;=hG94@zxc)iUG=}0MLr7MX0YkM#~i)9`=r@RhOJtQRXxiZ{AU>4 zvkSQ>w7@mtMBELwOS5WPdHn;wg(f^Sh-z)(zTv@q`;Mi2s)e%9yWh7~ex9aW;(v3+ z#a(GEmy>q97j*ys{fCB%k#Khqc#;Z^4?z45aMyqdC~XBv9YH%X?%9pntHhQ z@kEcvo%esf`+nKJ<{S66HNJONZcbmeeeYM_mp9M<^4&9c)=z#N5Ba}0?k|n5`^POk zt?z=Vi2mQh)0dd<{kS!2M_uN1{&hReYF`=upD|4*GHuH;pP5tceOh*Xx%j_#+*V6{ zpETe4`fnkBz0KW<%V*u{C-AlId*Q0@5x(#5+Izu)5C48yZob^V?v?zd+VAJrSEl7ck6!7eVK3nul(h^-Or`?a|7P`)?92AUsAsJ^ZCm+ z)91eIRb_Th&TRMop(Shg@5B8%rN1wJ&A-8wTR->Z@3+rw&G-KFU2n`9SkE|hOTe}G zU#IpjTVMZozt7DJ&ee}tpD!=}dv)r|ImPG9;>=!bwv+#TWcg+Ox`NzWS6d$~>x=t; z>-v)W^(VV^W6kDGq)$FuF;9p>Q&rOora?*G4^eQBxxz9UjjqJhPC z3ZKWm6kT7F8?~XJP*vtm@E32>gm2GcYA&|E{AT^mXMM%h*O$}oow%7ZbwbSYowGil zv$pn~ZDrbIeIv%`dsq0rb1zyy7_#hpe((1e%h_*VcAeJu=GTds@bAIW`bpQ;#D;&o z(0DvzWHiQ8;ZcDLEz zvTXQs>-v7vyI(FxuW~ze*Y^AQYKPLo+*vES&!wH8H#ODaQ|JuqcYCb&{>%+u_W$p} z(#-8)Qw%%eP%-UwzzqZQRcCRoc$7vGs@jRZ28ti%zyq?P*&x zZPN|WwdWFcd+VRN_g3kDWa7e_iW>{h8`(=wjtse_=~{bn>GY?6-S6q`e)K)#X!ZXu z8G-M6@~$0PeBAGfDf{6PMJe+ug%|pNS8TBi+94v>D$N=@N&B!@`2m@UMw32iUtYUj z#Z~Ht{jPtXUy)J^1S-~{$ovbpC-?K6*zT1=aX}179I7z z{D)m^8_Uml)1a33>Gr!rx5-Opa#qY}ypUe{tk3#g*!KGCih(y5a)0>e()C5{>zzX` zhq>$TJ~KOi`~8m9aykFLzLxjPuR3jgY4^RqcEM8^k1#$vU;ps*vI);U3%43co9CIa z?solpB<1hIS^NLDpI`33BD{6av}MMs!G~<8y$j1_{H1t4vAyWl#@yX}m-_N}uFH9+ z@ikxj80-<|WtTJCrnKtT#^iR*#TpvV#7}YYJ`H(h$hCb9%llPk+-{whb<6#%r8s(* z&wVJjB&@B?ZT)iNJ1>3~%ucpG94>EV9FuxcON$3kBo)vv7l_44fY72&%y_I@(W_n80ZOS-j2ci5Jj zlP^d9DxGube{21(=U*1~*W6imQ}s^RW)*k$(=BhdFOomJHR5C8jbrO_ZcXy-*Vuoj z)+G1X8{woKZgG9T;3ftan=j6Ahnim^Vqwgk?#H-&(DOp%D+Zb-m7u z2serP_*I#gG4Aj3{4IaBc(->x*S`NxtUJ$D`GZwA^Rmqqj~?tdp5gI4;O)X)df)cG zubh6CQ`U30bLPHpU-K^pyqdLY-R+Ny-jtlyiQjmsDt`Z8Ykkk{_kNwudss5PEd9v8 zQ0uGr|2Oi_{=>FZB)DM z;2aM7vg)o$TQxI-y24YtkL=)hXFl)O6BEC5Zp#-vH`iCs5QuoSFz-jg zfh(E8moBfbh?-@S8DzVw`M=28dp7^K&zrn%?>l$1_N$BzjC)${eVL|xS>1l4{@=c5 zMRMAoBlvs6< z-z!O?NknvEE;(wEJUMw^!#G`)l8>-v3qh>+}Aa^3b1aU--|pvaEgCJ>Pe8 z`q?be+B1h=Og%TZdjH<5=dHiX_%511`Pqxxr5Y=aADUzK{K}Vo-}h<%y?FY+!QNk6 z^LaXPv5yla_In2lK94QfI9J#9-sF-X<9y+_*6p12=D@txPp^4Q z9)Ya8Wc~kF?Ze#6^K&fkR=F9Li#S}{%6C3+!{Rr$CdTc~t9|tIWUsk2M{oYL3ftdr zHeV9nB2;#5W_rZ>j1_jVq2{@-m6<=esr`Lrkba`k?*^VO?-=~ohKkIboj_VQ)Z=dZQpUl#?0lr`Q_6qsj}>h|J|#`v0H*x3TX3w(GU7 z{QRF+j$byYwOBAE_D*Wmj?+ITWh}pRVt25()HWkW`P*$-Jl8*M4%P0ubH~ahoN=Zl zV_WuzLMNXr_wvGHYb?uHnST4`eDal=%M@}p@~Nw;n`5=-w*R^hcXuaWDf-J+_gf^S zVbzJ(btTT}3g3L!t*`l6Y?Wi>_|xH_nf+WPW7Ejy9V!_)UF>Benxu?dJ+EA67a@5bFf=i~p??0UfYd~4UbLw27o z`Y$_Q`)|HheK?<)N8OXd@2?k5>-!wFhGpOLyY(~uE_*-p=*c>CVIsF$^Z!r!_vYPO zb9U`q$*Q^Q>mT3VVqG(NYG`_qN6c#X# zPS~Fg{_WBid!}>YgrYiipIPh9pW)eR>#1{alZoVY<$xU;D-A*qx;MPxILz1lVTymt z^|xU=S{iT9boAIg>(1RRnclyyZQplWa^_;Oc7?tx?41AKhwqRsX1S5zrtvG(VIm*uQGe(Y_0xIuIl!$yX5+Hg_`~8uk(MMN!RUNH$^{wNA0`K z^~Qg%U;iI#{o?)%y%Tqo)BOAATKp3G+P|}NoopDI-G1;N=VQIexBbb~ZHLo5a`yS14xCshyv*tq z=Oyc=nZnMBfeNcK`X>3zwL85p(yg`d!};m|_qsD2ZkawcQmf|@uTEQ{@Aft`zI$Jy zmt7VKteBx*aWMaXSk)!fx6(kfy@xQZnz1qKT*;>x}rFU-|zkOPEBvqF4>KpTY54T#?ed>$K z*gXC0;`NnxXMfe*x7JsG=L5|*2UflQvFrYWFZXgEn8qFAT63tgU%dK8jc~!YImT~} z@k-BiS)|@j`(jebl$mM%Lf?ZoFTHD)zwytU-Luog?|Mr`FLpY0DpNzR-usBa@)cY3 zJ_(i_&SO8f{pydXm+AJuPnO(F_0MEadl>)YQTQcyyI?@!8K=zKz z_R9Ca?L$uHoCv%7%|vGJME0et7X&pipMNNA^eA}c(x69gX8G4|*xIJ3^Y)F4NxRzF z;|lDH-FmNo-8T8svR>(uTeSsND_-XY`mFi$L2cP~XV(h?Z}vpLz3LeAh0Ck8)%wt4 zro(!VS9!Iq%P2knB}6|t<=1cj|FOTi_y5VB>$rQL?ydcQUhmKTv(JC>qWYC=%lJi< zlIAYiocP#n?$ufMUDlsDe#rH0_?lT0o-9->^qTirE-|9u*}cUFe~Fkp|D?C?MQ7&f zZ_5kr^_1ja>w8}LS)ApE;_W%#ch%q9qh@nT;_0FCcRNiVT%P|Y;@9f(z2VPq*Ii%< zue$b1My`4m-_a>gLv}@94q(ocOr1J8ge|*^>6Pe+`4=XQP~Cp^eMAzFw5; z^}o^bNke;m$z=CGVJBD3=-}SdaX$58PUKND_R^=1`4;%sJ<88L`nLLh{{0>MzRkbC z;p+7LmH&6IzWncP#{C7IDf5&~i=W?{ZuhIxe`)-`Pkd9ell9h##-2JE$DsAO=-xWf zobbdudLRCX?^&WMA?*_Xd-?h;ZGRl^u5bC2UHwydl_E%DqpWFZ6`BHz~pUqz;P2ZzYIN|&L^}pt`Ih<`h_0aXgr4?^Z z&zSTyD9^k6!o@e!wktkmZe`)QEcZKi=YPT3C+@9pzPNl|*|fz5w-(%;>+tMIpofT; zo{ZYAQ{gF*B}aUsId*Bk;-j-)qxvKRi2TjkRv)f;rR_en`nWmoOxMjuJHEQuUb0?f`*G|1Lg8hWH#nE|B)mEj z)L)>o_UzYfm($N(eDWR`n*4yV!Pjh@` zajf0$$G$I{rvG(Zeq!#|MOLnF(p2_*eS2H|Zsm2`yJ2p3RdN&R7=8s9L>-PRe#`$> zpkVdRnb#y_olj;@j=7+~o%~fUd9Ko)k}~%?uOGW+zfRhgfB)vb@4?O)kG6}on?HJ8 z<63b;RV#8y`00gNn@wXDyPtV}?B^Say~_K}mM`*6bC>h8X`N#EScCI3Pj%V*O&@pY zN19EG(ah0mY2VJ0obq~E(8Qy{lDyJC(!M?vjh}q~)mv7R=_|Jy7eC7=GEjCl&-lEz z!tDIsS5yBlmt7Uh=&e%zLx#6_)r&FajefNQcT7gAVXPT9EJzLzBU7WpFwr#=Yw5`kdZNGK!UbMMY!K=)F-Dj4` z!K!0#KQZ1tm$Gu6-cP<%k!>gQb?58|nkj$cv!~9E1w9s8hjwmNyp?HRd8@N{!nS$w ze~y1_+7|XkLx($P|3Bu^$#;)!$$KlcdrzOOW`&nnny^;P+m ztD&NmZ+qy@du10NsrnkYKYAE-y}#}WbJw;Tf$i>}p3bz~oc{X9DgW8)au)LZ|1~#!+49(LA;If3c;4w~wQC(a?QTC~ zng9H2nV;6k-77ks>nr}S@q^mcg}jnWMV9-{pS5Ft*B_ZK$z^|w<*yqG_Obe2H{E}F zn%?EN^Sx(##MJ#vePy}-ep!V(%g@(+j)Gf_S{C~2DnK{|*$;-8R zyry{Rgo?&_6~*oox69qyd(&z;W1-EPn1tD8Ydo*l{eM-`b+6}e8}Idib^CppHd|d4 zKDuPPTvV4=ulkMNu6J>z)%uzRhqs+NTRX2d>q1QSFHT>c@6#Uq`#Ck=d;iMYLcW2A zS}Pdjf_J&zWNGmC-ptRr^n=>l=*pM!dyeRxE@wIRtN%sZ0_nH2Zl?0vr5tSke0g{I z`Y*G>|9V#KZ0puobg6*x|8hHC{`PeiO?G4>eJGfBh%*wPE?qC zH0aL%A3ybPzU|kqe(8N_b==3}X7b^TS7lOb4Kn|I&HppKtg&8m?&|F9n=U7hb559? z!Ewj>pXtYfuiN(}7aKg-Zgj;wnlbLrBk@}w=16O+vT!u`s{9XFy>|YO-TvO1G9KYs zhh~dQtS)d*ayqsk@l$43$3>@@j1!r4zA4^u-{0L%4)4ji?7Q6BPjx?ZwB zJG=O-TLN<3j~MUCy4x~MzO~h%WXZA#4We!Jt0Y%Aq`YQoIV`YF{gUF01zHDe-to`i zP!fq_(Dw=DuTr`C1%cgXac ze^8QdIccF^bmfrlCTaU)(kEE!X0m%6Fzo-_aJaYj-AScQ@nYIxQQ2n%lxC|pFm6^U zvU;}skI|ByQ`}$g)V@*?u%uPIK=k1$MxE!vbAvu~-tQK=d3nB4L&uLDN^Nzl=4)?# zX;s_sJu}?wyX?m`*TecPm%o&Gq&hu(<=hp0!r4>T>MUJz^!c2^xTyVky`>8!j|B?$ z%S~DI@Sz&R(*si`T@}cS-_#}|DxqB-*c&&o%Qs9*zNO%W9t8S zbpNxJetyL+mK6NRF+;k7x!or6UT=8NvO6OD+`kUL>}~w?A*d+FU-8rt&ciDUrBBZ0 zuiy@q3M>1PQQSVqWX&H=W#5Aqe-})y{gD3By<$nc>eC(5ja>sm6*g4pO&2FDNQ<44CjwCw8joCkcz97NadXvwb?Xes1{1A~0jm zsua!%e5Pld4;gW_t6iL>Dth}7_pLpuoGSOq3IfX3Ih|eVay8wHeaZp5x!g~?UR*wB zbKhg$iM`4aHie==b;`XL*w$S>XJLM~^7q&I_xObn7n z6*3Z!?p*yGDE`gkva@UWhc>45HzN+8iF>p_*~{%-Rg_rJv(thP4$6xd z3rF_kX~*vbpPp|}p7l@qrqOJ-r4LTjbGH9pVE69kl)7(>{uNX7HyoRM>e4IEnJwk( zMb~%ttuFVnoG!RyhL*m|%l?W*8pezBRiEWKU*Ol@*w*NGW$JQn$?K+mr(bZj*fjiH zA*8U+{FM8)sWSR{I|CDJSETRkOcA%PiO`puDV)56|67aW!HA?Q&7TwW&AMM@7QOm6 zLEoaWTPOGstcm zh{Y_}?XNP+nmb=b=9vGH+op5R`(FcRYfCPB^~w~p^i5Fd}isaEb-8z119zuB{X=e8}u*CnoEBHcf{Xb!aH0d}oFYXg36}L!C(Rb>-{_K`V zbmbxb7VeGQX12;7ILepmCQVc0JvDdBVuQf4hsVRBO_EO?D0r&s`>@jAm*E1J?%FGl zUU-_s1iO3?`r#L3W0Ci*%g0ZL>Cm||QhN?95KfgfSu4&|rQ5qg|Mf==se6Z9>H^KK zZC2x-vQ|@~ebGPPoeOGMjvtIZHOWj$+TQQ}Z?ARP(%N6=Zl>Gw@NDt^3`&f4O!4 zvlKPyBJoP=i*JOBgLeCB=HA_;cy@lh|E*1>-nZ7Sdr|jxYlVww^91JY`Q>JPR)JGA^8GbnwRVaQUk%mncZ*tvZs5hl}5No(}I#jpz5YynQ}|9CM#xp7k{3f1uitj~9+F4m`x9 zGyBjIo74cQDg4C>HyBuI_gF5z)~%F({6K1#TT{$zaG3&UHZi* zQhLww)Ko?Lddq{Sa{o-^Ke~YDlwaS|2BRs=byBHsYXbhCkT-d8@$;b;`#(0*{C`ZE zz1nd`kD98Pk=%{*DW;nyoi9Gr9M`jZNx_ZuBU2CW4Xjuty=~@)kEa@Ie=j}A%(gV~ z*RBsek;|7eGVcsoKT$oxX5!hCizkE_?wNS#MzpK#w7pfU-`rh&(z-Nor+enBPxOc0Q>-79hGfJyK9DutqUM!uBg%|(IpzA|K2PMaOxb(ry$ZSMm9_3P%$ z3D$V5bf&6d6X)lmiH9$>#oM+Xns)w>gW0^NALQo!?$s}4=k2dlSLRw@wD`~JlgrPr zzx=$sCcx}NcHY-15lb9b@=Q4U*CpCK->|My^OI8w|HPA)d77)vM(IXx&Pm<%Xp{G4 z(eridrkvAUxqsh}JNxfDoZR8YIqCTiuJuJPmR-wJ`r)$GU#``KGib*QC&NmI&-$@9 zt@HjC?s~?4-(TAF{gJ66IRYuG8}h|3M6(`MaW!?ip0Hu>Jm>Z=>;Ck%Oqtlz6617m zNu|V*TP;T18@XqS^lWSs;JVHr!>nkU$a;Rs^}}m7o_?R7D>cL1EW2Q$#1(;rPuiPy z=+1LnvSWe!;!qb+d6T3SF6R%vT)O>;UsYTe&v&!@8&kf$RPFY;5WLB1>g3VR!o1=zpm~TO6eg;#ww1utT-6odj`!ZVOUhTJB#k1;;TX&o5t_&H; z*Izs5e3#nuLg(q6bxu>ZwMv|SW^`{sQ{WnRXA6 zqioIHtkWlRrW11swu^~pJp%cHdx!( zQNnL(vg^*ZXeCY0^_q+mQmYnhNvTerIJ-@A)&<88XFPWB+;6fuBQ--wy5Qc0kDn*l z85~>kC!vy=OGe{)$q`1+%1M?y{$|&HY`*@2S)Y~r@sn1A7s=6SE^8dmUv6b9?nmS6TVxB(I}gq0 zJ&X@9Y5w#6qlU0#c*GaAPe&{hT)VkuaeXN`YQ5~ip~NX7>$a?UKH+D8n}cz(jkje= z{xc7+$!&8VuKli&vE%9ePk}oe`}R2BxI6FpoQ{Wr=Y)T9%#m=b+~W`$K5g65r!`TE z2b(__`ZZtDK7H%-YQgve=`x>0e{TG>B ze<`!EZG66m=|SZbCQ)Ah>l(g&4{ zhdxS*Eeu$Y{8PYJ+DWTLC-H&f{%LYH4b6=AUQBE|Xw_8A+SXnz+x$>pX5xk~92;#M zgtz}|c)K;eZts^FMhWvW`rA@9l&W47r=9nhZu8Ug<($v@KFP=YTU%y3)hWODnDswP zW66rWQAaoRCfuC#GxJ|<@#VYa_hyRe$4)DI;WxX`D*b4DQ(+2oV95{Gp8YMJ&VtiC6f)b*unpQ+a4iCYXh3Jymay~_O=Nw-BhHwftD&v|glmw7_MX8xA#^NtEGW9@s#)E85@y3IZb{? zPR?&$)YGf4e4Kv<-vRxfeML#{+B{1fasr+EH0ql}{ylJRj!N9sXqI~Z)1LRTK|(1` z50|*yywUBQm$C6^i>_+7xSn_V{Nk#rZ=dH)_M0v=%OrK#`$gwU)|z+!F0?c0esk?@ zyl<<>(uA&+$xriZDoTId^k3&2{xW;Z8C_mEn;R^mTV^CXEx0+MZIR;xfwUfO>rWz1 zx{PPtxgs)|E=a9ln0Y7l(4PhGB@0{ybuXWkj1BAXO8(*6WFlH|z(uA^qFcB(!0yqS zB4+0GV&Z4Cd*t~4G-e-EioetnnJikPyeK}MasFYhi>KX8wEk#_FOU87Hf4@Sa8#Fp z)y(|Ejhd5sKCws&KW#ET9Bol|nDOLK<@1iGr)EtNNSVW*v7ka{|Am0a$YY9=yeHn9 z^)p4@W<_fC!OccozAru)UVOW2tsv`<>iQqQU!L6marUl*PUg&0mi6jPQ`pb-E)bH&c?x32x19q+sS?<2pv(I$r;306!G-OE_XZKUHY^VZ%x?xLz5^R0v4 zx0<$g=)9;{yHt70naEGe#qxN2H14pqSjSW`E&U+lc%tVU4Dt6v(+N$ zJyn*1ZH6*aPd2)5t>?J)Xu5&gnxA_2S$92p!XNifJ@eSg=Mpxy3q6#doK>#dT3^3* zLe$mzkK1l-%njc4tor}lf3Ky(v-u~#`#w!zvHT75LlK+@w-?8~`WxZwC@`_;$!v>k zuLl|nF1o4qbUklx^WD9HL1gCposA8?2cmXdHd{E|UTVq1Cl%5G9+5jg9$WC_>Wqwv zPmd2?5%FBYy?%xk?~mY!3kv6#r8Hg?GF^5iXinT-*)VMP#!;F-seBlmozqi{kz*~TaV7a z_=^uC^{%PCzRtCBrA5{}r-;0L5365#$N$*$c1`Mw)Z8ZXH8Oh|GuLPcu!uA-3R?1W z??vsHxa<_U#TMZbieDBqiFqvy@>>$v;=I4{@m}@)JHbNkgo)X#^*fBLK3wurWbJRuvG;5L@Sr~-^{hzC(PvH!$9@!w zoYoJoIUwG?yw|L-shxivi{*{eOj@@l*4Vn<3rRv zzh7F<*Xi-fm;`9&-HO!NIVI)xr7fK6|9qKK5PhD7Atk(?%g9{6Qfl#ARrg;$rt5hjjm>OcXiwT>|dhuHTZijo|_n0HqGx@vw_@W?p@EyRh_!N zSS-Bi;kGVI?_6huJ_kpKfNtwEXUpZ&C!1?cJkG&AyWmn<(Co|Kznu$Q^7)j2ua;0M zoARcc@~$!;)>l8CEj4|SXpzX4`rLAz#(3=|eW{lWmk2C-y?&=w?MLqTHFi-R>sR>C zyW^(u_N@2gL=T1J{5w8|Z8ldobe28NJ>C*wr1S9nft#Oxa!V~|k9geSwm{*}5^38h z84)dyx5-K77f4ERwz);VZJM^<=Td@E%!LEnw((V6wnf)_`LXyhIhv8HFGa1@;qDpaK*uCQ1YZpoU7*8;j4;E4l>@@cPn{I`TKoeZkg{iWO8cd__&{hkoDxsJ#A?N*J0lm325->sok{%NF%Q-Q}}o_J_yK5VlW*|Fhk#yO9tdn!I&`f_ah zo`2U*o#6U^q29~VvgFNV(Zw%5hU9Np_bEtY>GS;`_%G|$q?R6jW|DNpBVR;q(oV*U z1z##=KkW6hIHk2+>1U>gMBUoPS?hlu&umy~|5}nGOn3XDNztmO4&DD?Vwb(?T13DE z6Sw>$wlFs|;azok`H}*e2)R9*_)qTm1 zNQ2cY{A6UTA3j=RSNnVU{QD)oRrhz_U%lCF@>|~A-;r1c5LwTsravozT3EXxu|N5E-}l+;gtjvNe7RWo&z&SG-uU&hW0GF@ z>BKvqPJTW0_Q}>%3m==lGmp2ohiELiyL;R6r>Di1^-5n`t~=ZO)yFvxtVtlOJ8~<`Z_A?v%=klEf3ya;CpvD%}=z4dqtE}UQ8BC)U;>4 zT@Nmu>o9IKo88tqU!Wz9SJPT4M#Sga2j&NdCGS*Z7MbwnduWK{*9aV}Xev?intZVK zi-JJAkV~8Ly-UU_&-E@TbQsr)@>Wb>my+15yZGIDrA^}VPA^pX_&}g<Ojs1^_ah*&f9pBpK@%d_*zsvk9Yc)Df=Ei?TOU+a5KbG=kS{4+zx^o z^0uz8K5pB|-MQwB#@Z8olD0u!nGNUGef4ktBJ}vx6Wd*POFH}*cw~)Sz@yEf6si{ZUKR>(sn>#l1 z_uG=sXYKvFr`gPy_M+s!@^3lc$8Nmd&1_%HA3iWX$6;QqH^=hP+qd}z`AZD_8zv=| zay2VG$eF~s_0F|zF_(N#_+ELs{z%xnj0Q!&hu_;4Uby3+JI^hN_n7p&YDJ+Nt+@x+ zD#@_@x>(`dD9G$~H2&LRro^4Sr=I2*#)q6OVqhrpo3zKQW2NNvPOdGQI+v$}&aA2t z4YW|=51lY!)+DV@k_MuE8)r!J{WA_YAP{{~`0Wf~?t2p7Zhg3MsZ*!AZlXBP^tB5M zoYEd#colAO!?64Wi^Z|F+D$jx5)bDrJ=m_%#xFlh%}-)}+L<})F8_bNlv}SZOUk}* z*F&3m^>X!Gn%c^{j@bV?82WPm{(on;l-}kO7SR$~xM6)~%G0I?KVlfP)!&$YbmnWh z-7GNkkmI6SxkFMrG6ee#tk-bw=A8RLNjIl0r6s)oMd-t#8xwde?$}7i`*E+3+Qa%} zeplSh8;dO+RqyaF@vwJVr1)t0Mbk;G;fFGEX8JAdWqI=^I_7Bh@h4I{R2cT=Bs*R| z;j*Y_yO)$4=L(;94;_?02bZ2`5botLFED6&FOzUMQOoJ!AJ?c4@rNF*TWEH){Sl{3 z`}ZQQn4J2Bl~F$`ZwjW_YTo=2sjJ#IU4g4>{ewqtia!s>eyF?pX=U-VCChCeN4~sr z`TXRdl2ozETAQ2ww=I`M=l@Im_3Z!eU0PeV?>g4}B{TV3*AD|OMF*vs3~3q%y7o;9pV%X-dsQOmOtuS%M2N5p4x||s;L5%n1rk!|tt^cTW zM443jqw|jrUX}mzQ9iLPrSbr)%Z#?}4+a-{!rbODA3n`^$?yIHrj;9%_i<@4EN%=d zyvdjw(W5i%T|=vn*e!(r9^Y`u++rxD0L~cO-wwq~=KPxv{=CeIye5MlXEoR+b zZ8v9Tf&0CthaYC^TxJ zrrBZ3XXouWXZP2%^w`T&1+#Ys9=55hmy74p48OGMY4@e_^}nWt>e$K!yOnhMdatld zQm(C9^j*03u4rGkd7=%k>*I$Z=1z~l+~Ku+q9GD?fmw_-;1~1#6^$Cqc^3+-r2?ES zB@;dhH%U7#xx6VgjWPeg^CL_bpW4^>mNC2AXdT;GI>Bh2OV@`vrrlb1Rdrle@0e5} z95BT<+s)cBdy!C$DXZAL7#~-U?B&-}7hW-%@%(Ug%-OGROFd@T^X^~!v&*ZcFGIOMCN|tav{kVL}slJNWm+T{*))ti{?r+Pw{{O-5 zZ&TUqWNro+{43+JZ)!A%P!5w5Y)DhgO0i+NnP?+ZzK2zMf*-s6$B!-c4>-0Pa7ONs zJ*HT+rTUAsL1MVzR*S&Zmsrf^HT3_PSaoFUBF>s4?CTDSnnXXmTF7+$g{1EbGkdY= zhne>A3IFTJPp?k??slKAt>8sz+O4O$1yN6p4|!QX@V3s_{^Y9ZEN$JYr+ZvV!zb6T z_Z2^=S@&|$(wBYlcXW1s>wf5UtDpV*$@LQgT&~Vu%tU3#FUVCsc?y5$S`7IszqkvQHR@V#CC#cX@?o@E;trrg!~8@6HX zAuc1)xeLV0I4_^OD|^GrXEodXxp6+>UCUqp==0ifCOrIys!ragQj2Agd{X+mtoAl= zTRPdjbqxDzkbA)8yIpN>%Je*=RMQ##OU~_me{W0iaWlge&!j)qTlCCpuu%WLq-<%& zq;;%!=gC!NY}EC)S5n=Q^04X4fjyO(N1ORyo_m!0>(cUiw%Mojt37Mfq=VZYr_W%U zv-`8qz5?k(mkXGMAD-Q|(ERAs4Quc8G44&f!@)nh#2``m&C=aH#twh4NV~K&ix(!k z$6Q$3E*#(Hdb@RP0ef$9s(j|Hvp)+{MG_OYzZU)7y=tLAgwm?YlfnX79v!HrLL;xXSDX)kT!>iqIr zmqguI_Pgud{`cQX&fAtR>)pkX{bomDX3w|00@atwzdk&^#LB;9ef{58CeNk>ZxK&f z5M_|Bcvk!6t3VgNR+nZTRoA1B+;=FS`OC{H@=@^Kfy@hSn7yO;w&-PD+=E4W;vy*Iv?3DaVrEjH1XhME6T$#_m>AviX|7Wr`cDvhg^DQZ> z?rvP;wSj-hbUWQW;rF-S+E`i~wYA1|*ZX_FFEz1to2u1^%)ZdJr16)YH1D+E*=xQp zxffuPz#Y!dX?@5_Yk8ZKBZF7!<%ZH30uv_1z0@m|-tbQAp_1O42fBZ52(~Sd@5*Go ze|JOKOBU|P|8f&IWlVRItW)7yc_#aA?5~@%MJAu0Shli^@1KKT4%B{MTK#^Xx$S~t_v$aYYZ7k>8Dt2=Z(dq{c*ouKlQy)i zHTY%3%PMTEz{=#mM~X9 zzk9nay6Vl3&Ra?LieKN_JG_^=XHb3lU99z+N|)6l8XR`B&(2hw_Gi0S=Gxe;Hns)- z|Gu(3JGE(-|8dW4nfos}gnmkR9cRDlckQ2fvu&14-tzmO(pH;)Pu&#_-yP1ayU6D} zYsL+u2I~i2<;M+@_7*zJG5ciBUjC!=htdjfb&J%)oOO;WGM5_?yPcEgomBeD9AUCU zNWSc)s70Uok*XTMLmn4BJheYD)=A306s%KO=4brE)vl@R$^PcGHi1SV9oiA7g^NuH_{4O|SZe=w0K$(cyn@>S9m8U+GyxW<+Z1Xuw?Xy#ar0g?S#Z79~ zo%>hk)QhLLoV`}`w-wB(m0qxXebtX8Ur+4Y8?`5Lb>IP^TAu_5tM^Ub{;!hN)Ym%Q z+FCq&-}16{t-KDkZ)&f_jxQ|RHTRtfQ=+!Oq^ZnS7Q4frw|#qackQYBx(lzr%kq`^ z79<`i_u6u8^ll^FnfCT~?aT9ay*^icdDYa{YYKZNE%@^OJg>!ti|YBGo_YN-G5dWw z$TzvmO`KPIO5l%;-rFx{%4ww)oiKVcbLHcTjN%x{YcprNvDs=XGk)TfpYn}CcCn(3 zRN{pN4>z1T9J%Jf$}N$civkN%n#}ENrhokL)6Mp?V(ss58>cRA+q8)NVABz~?&r}J zAB1cK#M!K7aB%N$FMDrZ5bbDw>5I!@{+u1&(%b(tE^z;2=+Dypol(R z9mip}!l{X8^O#-du|9rhbkA98zu>ombj?Id9eF{;-=14jevU&08}2QP`UMGupDYfBdm=@!E}U z`#P3SwA=CQ;g$GPIhTGIF1ym?c7svAZuPwnG7DvYnixI0nem)OY2DP=R?drd`KmFm zB|mPO?38r<>%P6eFE2YAeR-Sg?n^5I4__A6w{X9oWNmxa@^6nx>M@_MJ;yvIX76&a zRhahu<;3r=@1D1teP#cCzK2q4|E#qaZ947yWshq0uf@|_J}sKQCGV|PtW<@cl+haz z&i?I_m38JN_tkxRd*vKg+U;$+yDlXz@bh1teq^@uLyk^PFAYU0ll96yEi4vtQgTlF z;_u##4f2a|JoL=?*t5rKe!jwL{{GW#zDn*AOsI|8U)F23Sl8q8`}yh4yLUg=by~dS zqSc=hPb{AI`z$C~Zpu4n`AH2~>(g!t??M-9RW6=&vaF(bMdX(5s$`wV{8wX57u|Uv z@Znw%7l&!#(jsp2UY;3MHEM}mZ5FR(I~Gog&k%V2@yomqpPN413CnDl-<~_s@5Ymf zTV}l!s(Qg@wN$b9(hUFhCuhzT$|i{9mHTmW2vj}cIjx~ybwPURg6o<41#FL>*0Zy> zecR=IIWv9Eyk+O-O+Mx`BW16`I*Ea@XvyVo{ru zT%)!m?5hgszEVAFcHYj~I4RQ#2Pw;>3@O8;8C6+(eI+vA{7Yd~m2-+bs9fJ+m+xjQ z*0%2RF{#|vHVIzyPhxfMIY-*}8}Gh%-~ngV8lP(~nWVj@{dll)iT~lp*Ov-L8rt=xR+jpg#?os*X@d$`N3rBXi5 z?IQOg^K&(6_Gc@iDti;M?>6MfB`B&O<3-=(L~%5kW3 zp!P!mDRS?A?5?<b>j2B?abfM{B67M;?tS>3seCpWk-rsh}Mbd+PX3{3> z-Kxyi5IBNo5a=g~W zgqt-J!fJoNVm+>Yz4~iWu`Fe}#dvb4m z|8m*<`%}%bnWYceCO#?nx}@zUi_yuO7aLZoUkwO4=xt*1$7D{1&048c=H(}Pm`)!P zH(2{dXk7_=&dL-H?t7;`R7G6i+}C_<;;qzw%4fq&yzia*@jyH0H7B>kY(-oB{<+rW z%X?=v#I3*WXgFED-&=g%>QIBX+_P-c{bpI^x=ERq#YnA``^E5iEQ&dja~|^*(ty?-AvqBkv;y#!!~x~L;Zi+*Bm?DXL(V!D)5rtFa8XT zqYk!`Zzg*yF7z=u8|~TF`Jpzw^6x4Sx8@gf@+ltq5awd>!tr8n-1ekakt>U~I7ypKe=%vt>$+dw z&5zTc9H_hHYIo?_VTo%8n)$yAB zo0+Ok4a#Q=cKgnhm3992(D>BB&(Z$fY;O|}xb2(q{?l}c!}aGn-(GpXZu`<+sj|dh z-(@D~?SJ#fB=^@8lhR{bOmdI)nD|9|xAjXcjh1zf?7#C$YUhR19WFD%Uo8%G*&Ws* z>RNSqiDuP@6S*@qRJB!Jsc9=QBrR4gFtbmM`Qd+Zduzb43y&|(w=k&xvTLX8RMGTp z3>twQ;#d4?o}XMi!AbJ%&6#BxC+jaXD6aal&o0vU{0XgS(F^BXjykCK918GIyK=E? z&8E=)rb0(1ImQj~$G3P`rY@e)@p$zzpR7+Z0s35)iA!0NW3xEdpLNc?x4?PQ?8~>V zuDcH%t1|2by&(t>R->b|s_=dbrTJJU?_>`Yr{+j%E5o64;H=b43` zN^go)v@V$uClXckexj(vsrFqdb}P5H#ruf5tUvY6Na(7Dc+9erqMt7Ra+jN@PM&{a z`RDgJQ-7MNh824MWpkW<{KIAMPriHmv%Y`x)BTolS;gz6in01KC$6*ern-hkt~zf0 z{?AG^?(}7WhmWr~HM68lP(yoTs_d2^52hZjwFMy$Lo6Q}x^15@fthBk+HZKlq98x#S&6*UoH7hr2XV%uf z-8z>y{X8sMZQ+*1S-T|c=daBBeX^4Sn=KQh9Ui*We^_?hjol!5;f=SxHz&xP`s{9@ zl40+feY(-|(jupyl~WWoZ5UR{XB?O%X}Rd!oa{>)J0@7aI(E31+j(oK?&9adXZCK< z{@7r)>D}c(u5B4PmkYZ8+P&KU>`0JR^0O@_rLT^d6h7KvQuoK=+CJ};kjLqe{YYT?Hca8=jskEWeTb}VK-4iYoSIqzl~v?|DM$U zF%3C2cUCB#zfm}Oi)~zvm%z2PbpgC(p;oW&cwe~@x#^pnN60+U%=Sa;LpeS!xp>Hh zS!4034VPp^rJ7F2O#bNTy82M@#cw=Q!j!q&DfZHxusM1&8I&Lo!c{KALDqtR4Q$C^p^~c`X9+Z z=j?Q9^RD^M$9iN!-|Ljz8+sDm!uLO%Nlu+|x|>1US!t8w$yq^N4Tshp77J8*YQm)U zrlGUq^W?g=_V|R#HeUIub#;%w-a2ID`umHTc8}{U_Z(q^+bIz@vsbQAn)o+w1OKRjUn6O|FWF_qn--Uo7wD zuGrb1wy3+E%D%Vg>9Oe5@}@gYQXJx~bI$l>iA?{>u_mx9|D%NWJuTgj^QU$T9)25g z`q4t3Q$=5mCMHcZ>PuAD7s>mSl5TdJsqDSogl!osE^eG+y8Lpr!z|O%HF186FLQk5 zY3Gw&1W-S9{knhUY{E$YgW_p_TKxoCsRbY^x4|Nm)t&FwW?R- zMeK#!FW1f!G&`&*(IMw^=6QrzXn$j6z+S`I-wl6oyp7nUC%><@;YQHRmN`=rOSuC3 zzJ3U+yL8B5efj)fm{?)nZGcy~cmiX#rmw!3@I(+HV)6yvP0=db!fbVu2#_sS1bvja9ejC!J#Kdhn6$OC`%$)eMOfg)`?`d2NU`mwR*X z=s};iQ*Z8#?#kKi`{o(ujM%HVuZ*=#*RWqyouZhgpgnr)LE4IJB@-weWWzoiT z|Kk25pKtzrKcUg;!J1@s8E(lHx&q8!G!^=0@?4OU>0A7u&!WnZd1;7+zlBS?`^^KV z%FnVb%z5(ccbd-1&F{~YU0-eU;;Bo2+w`94ThH@u;$@k;uxaC7yGCJ|cB2i`=bgIo z%Eio9E!^$iiC&JX;|yM{GE-)~ouE8@<{pcr9+SgU?H)&OihAU>=cI%9k86{I&97Hg zojUyH@;Sfzzn;}E>7KVI?soFA6+I=38~EORyJ@WfTJm?Pb$ZOQ^ZLCLe5!VLZ|U1! zn{-C;sngA+s;76q-(kvoIqTS!$mOqvR=Ee;m+DuZj{V-edg;&KOHS+6_kFhz;Iqy6 zuNM5JPG`@$30bE!SQxDDJZN?5+F)ciMc5#9kIgx*L%|ogqg zFXM#72W9<>!AdqS1S2nLS2FM=C%#)#Cwu>A*MSD^*?(HCe{j~zvezGR-RV+0S^Y_~ zxUy-;3uH#?4!|F_Vr#9*2&z3?Od-%@Xj&5336MC3~cWy|8 zoc{8~PRhcJaZQ~KivsxMazeIhN?hC~!jk{(&$r`Km9QF4)WwiD8@al(O7g#Iu zNqK#1q`{sU>mRUpIC2skwwV4a6i zJH781-TUNnQ)*-L%KsA@B{u_`H1TWoDkYxp_fvbFO|$ed!llQ1MW8`h0`m z)B5H+ojTRw+xPuWW%tzAF0xs&i_f$Dc5_&}D03YHV@1Ksq?4}xxB2c*Zd<0vTy>&V zH@ob`R5k`5zvV@<4;OCU-0V6_LOAXwhtCe%J=4S*69x37LeEOE$2jdW!#_vYIP)pn>H23#}1D!KE_;yZzLN7^Tu%V|k1%6(Z8XxZ;j-FRb3;gN3h$E^GR>GnT4UX-T! z;W9^i{%`KAv!&?=4y^8L-p;Z5he5m3#@)$A>)$%;wb@gnbYC^+$@;iFLAed3^)2SN z(>p~jP0ramOHSGOwc%s6+urqeXH9+i&boft>VP`u#e#2NYv1-Z zewh3y+vB34r=I#GA z{+owkg}#%n)1kQ5=M^IDhkx=&y5>(r%0rRqk8X&J|W`PWoh|`A1{* z9CiNOzpsBMY^gc-Cn#{8V4jxC%ZjRb3p8fm*9cOONO+;hIBEWe%h?bAEd07)Ld-lK z=UG!YQy)9V=z@acs6=7WqNnfXgmdTb=zP7d zak;?~;mnz9A4(lH+3@~=N!An1m%pUz=UiJGof+*=wQ8-5K;Hd*e=q;w41T-q>f2j7 zr#M<`i?wQ46g}jNXYaDwrlzgDPrLNK?e>@FX4u|ZU=~@Rr+@C>vt3t~zdGLf z$7uVD!xeK5$=hc2WY(-YxLPTkiS@=S!<@eY?I&Af!j`xz==g0EnPs$Ys)Jd9jQIoa z-Nt)_*1hBFS~q3ZY7G{CnW+x4TdV(hEa1~EN|n~WJ8^nh*<6u-8p_?;QUM31-6>bs zzxJVMUgLIqsm1@2@^mxIZ>G2$`_RZgGlMDXZRROwHb+05IW|}253=~(SgUFNpo4vz zXpQZj7R|e%Qm+4YWM{tF@iFuCwA`21qU*D!-tM28&D$L4C9`*yMd2(r)yJjPPsMhB z_)zhELf_vByomv=dOQB>)tV;m{&v&n;+7 z*z#Jdw`VN3E$ltKhC}}Uw-3z@56pM({1`U1#rfs2zlIfyjik#Suf4$Wd0O}Wxtp58 zQXe=j=E1t#mrAey zaZvxYeOcYD-A&WvS8<=M&ir>mOF?{c=&Y+wEGARDLMK_CeW4ioFjpq<=GP42noj`| zEo)?L5@L^vFOe%wH)&W`!O_U~!%F$0#w)I!vU|3&DPOuHyz+6m54-9$1KCqk&FjO8 zcD{{lHnpf0tjMt4pSt&|bfxmvcRQPwPpf>+Ix*g(G>h^6-7ky%UX?`sY&JW4K<)e4 zgAc;EJa4D$*pYi>hG7}c%hT~c7gf13U*25*z4hgp%jf*rO%I;c`|ioIrmQ8j)FUgv@?hj6U#n;QEmLV9z>C&hFSZN>MWJms+ zt1j~~U081~*nU@U-4gf1xnEi4h83np9FXmkt#Q!znVWt~TC3AOt@DR7W5tf+Q+GT( z#%EWkoNeQt)#Uc!UToF8y5tJ6ABodTq%tk`AK22w++Lu~EwXs$jI7t0Z`oRptYtlO zc2kt~`+qyP6^ilfUg;!pxNUyY+-Aq9nb99F2yMOCuAqI$Jub{|MfHAO&KGij9y(6c z6g|iGc3a%SrN;z!x#sU_%WN)P$8k8wg7xtBt6_TabHdigC3AJ{T+(>hLd(GB>trV* zMV3Y*^Z8+o0*}tki)x%URcflVDF0Oh!RsH)Ta*rMcwHcOtsz%5{*k>{-lZ3BGN-zI z5Up67z^AGsRhv2e$I?xjhrR7iaem}r-zMAt_RvAcg|^d{o%8p+{V0TeDd)XcWt`2{ zk6ynM(mSR1DdnZ;j)&$_e>7g}1Z3nzTR&u9l9***bF}5#7Wd1F+NHebW?kjK`L2HV zS|{HQT{C5W$+>ENGv@rtynXi4QT`Vkm#p%mx0<;Kxu2G)ZJjdp;x=9BOU}Q_t}Hm{ z>?6q=YJPE5K-1xK38tEFx$aFCJGVdHUAAobT&u0NDKqqpr5E*E@m;ydxK?7ro%=a_ zu`d>VI;8iqR5Yyr{h9cF?aP+;-tq12Kb*1WqQ$Gq&JP<-|Hz0qn>hFS!-rFnS8q9O zvitG3c|OJO7d&At-*aM@7k@;;pO0$d7K!ZsrS&b>bN%-x_iI-0SpD5H>stKrk{xcT z4Si4F++2M3`|j^cTR*?s&V2gKi)TKH+SC8^N?C@rPg1{e)sp-9{bcu@Z(8enrd+xh z>JcgV_TJ7|sq%TUq7P;V&v6UOy(RR|aqYH+6RNVDb+wnjZ_3H#A>ASI}P?Ggm!4=Iq|ZR{j&!56RwJF5ndv z$X0sC%5U|LX9j7vRzzR%-XzRl!;?INPqqKT!Q^ihZ?B*FX7twg)|SGxwR}12&)Hpi z^u}kww|TwSc%|3unYfxY$m@-$O_*O023|M3@Ab1j=0f z`;2rR9M*g2RW2I;l-+7gU&UeGS*5#|6l%O%ApLx^*PV{+RQ8x7t@5+iRjr=qeSn3p z?5@kcq~+zda`m$Fw^&s(EngyPa%w|E_l`^J4!7?2F+X(cCZl(ahTx@w`sZ9H8omhI zu=-62KQi5{@FUBf+fP62-+4UjQTy%67XNUMze^I>UffBr_ig976p+)vXZ-%EJLk5S ze0puEGVV#o?W}j)G+6oBYUO&d{u_&3{5x|kx#f3+r#~#2tro1jW$WUMzCNd>%+o8T zoH?}f(uUn8jkcb`Hz&vZI4RN3Bbm0czI&Zaq(%JXo4dM_`u(Q!r>$7V^u$hn*POZs zflUnoHzsGYtlf~^8X8uldx~YPT$?@1@R$D~>aImnXAu zCHL+Y%USQ-W}0d*dT{vkCd+kCwu|OJVDVY~qoaGz_U4xX%T_gWFi)S(`q^Xek}1Dl zFKb=6Yg4Nr$Lef;8w3CQXK&{m-}vpN^Qu>BKkM`^K9Kuh_)4=^%GPiG54Xy*#i>(n z=UUhGne2H{CZoBM$=>+vr+;E|wVrKwlOfCb@SNoJ4gZ!^wg^A7I(T<={Q51Q7A_6) zivA+`=C786=$!(+ORuK?dcDPdx7WmzZF{WiCO#6hTzu(pTf~lNPQN3Oi*|0@lC*$x zov4HP;W_Qj)#X<%AGIBoaMqJFuhhf8Ov{dyeA;5Er1LXV)w-08|L}b$CH`iw&Pk^K zS3T`EQQzVfRklb|#qWLiUEAi15n+<98!8X$RVD1x^)51vC7L+p)zZDkK_WNJrDE-8DTG1-R-aWko@b>`x@(e!Uc)!HPO4n)}EVv zzIn@`%+PhEJFI%H_g}A+-Ddr-YUkwb+m^Y;EdQW%MQh*fr`L~k{Fr2vsCKd~q3f}q z=05QgSM{CS__kTE4DisH%li2S(}H^wd8RXXah%EhDZ29Dt!an5EVS=xZ*}_jVVCH- zo+4}W2gg4=-x%s)pm}y@=3%L|D|Ej-t?hOF{nBaUGA41JyKbfruY}*KZZ7Lsck%0* znyMN8%!PvC@wpS8@CZ*YTzL0wL0@LADGyh}mMB|YuH~A!0S8Yn6WP+BeVA!ob1X;f z16H1YRS`#IyJ9~@9&bMGTs`Y~-h%Lt5l@!R>-#xXtXzEK?0MoGY>D@F*1AhsU(3&a z^2}YYxmo?kvpWlGnLH|DrB+`!w=n9er|ti@8ZMTLUhrLancF5?(xiWB#VKQ@?jqhD z9f!(fK1h9vI5z#=0sX|+dt82%edABLDtK&}?Ui{iM81UX<++qKJNCu$TF;oO9hHx( zG&O70VrxDunBvjDp7ZjJwhVLg_!75`x>vo^ciTCp*)GZZkjo=;=={U$0k(ptJN8{& z=Y4IO&YpPTOU{>3?zR7={u0l7ZC_XWYF>O?b?WJP4{@7^bGDS-{RKK6D{fZhtC>5m z-&S9HZQ+a8>wkvr`adte!Z|nCKd!F#VTy|UpPx&9ckX^9_UEv<&FmT%wZ2KRslk)< zFP9#jbi4bB@XkN&h$Mg6+eUx`}n<)1S_+AKAaxOWm)hd3tRm0(z#U1{$ zLI2ZyXXr+5Iq~jK>h^B|v9VSmzx#ir7}_cy+gLVR{%(L@2zV8 z%9OlA!*8b1J*H3o%6lZ&9m#Ba&k=r1zHhf)LHptvUQ+GN@;_Y_@^^jQ_2ruRUgy16 z?Os}*udAy1z58Cab@lRdGbZ2rYA(O=Hv4hk89C*z0wAC7NbcXE`|El-%Xi6UZaw@mui|8W=i{gAraMS#l%ELw zaEEI@A9E)McM)$*Sg~!qYR^{QDf|6Q1p4N$uD*HtxVzyC#jo-Qt{(XNHsjjjX1*n^ zuLS1&Kcc=o(W=6G_mgS7rx{LEo!||!%lg7HxBm9>%H{1_`d_XqxmG!Sg>P1BpIKRhidr_a;$6`^gUVU^{uuP-O$hf9iK+Ac)feNNru{f)+7qK+d#lT4H}J}= zsh+%aZ(vrf$x2%XZI&r~r%rIqu2I@^^Vq9(n$nq_mqQkQoA%n}q{dr=u!kX4x;;NS zxNl58xUFV}!Sgnqr-$|&%H4iv(m9*QS4v(^*7w@}=g;)0hKM95?>ik67hg5DIxQym zg46i@_CE(zU*6mK`O;DGx%1t6r6#`H`d9~AJL)f*Y9Eo0|;W?F^dC1%%|Qh!&xSf_P9V6#ys>+MZ~PuQ|wZu`Nw+;8=} z{Kjh{SFRQm`<&orU=XEal&nsW!Y{~p)Z2^xPk2@0J5BcOiZ<;zED^<4VB#^GjxC+%}K;|CGBj z|ESv6Bc5U<(s{==RQ+#g|C$9KWe?A*NpbYb+_3HPo6DUXZfg8GGuEH?c`H88&TOH0 zxAcn+`QES|eb#TUtsSbTEW7dN!>Om1z{^L%-JO>#$DQugJe)Bm;Yt2DcJGi(%cm9gL zrDAQi_l@ZKjeGSpw!SkvlpL6M*SEQdd*AH4CzhB$vRW(DXYnVoea@6J$@GR_FFh6; z))-58Tr$hh`JiDhfAGl*k9^s<_qs=$ogQ`T*VMN0Tk2fC*4u7sZ{gYK>&z*Yt(X2kDc8+qeN74-0IsCe@8Md=HqvYP$ zCv5m}=}5%6mZwL&R(?zlUwZ2IgH5i#uAI}mJ@@YH^AA@{&@icTFX8_wQXqfxo^a6O zmF2vPA4o5`z02!qAQvMCZ~f+??hj!u-c@TK`9IkZ^x&lO-i5wVnLj^0-#;O2O-!nI z)yJla&r|DjSEn+w^LmEcyk@=jJF$<0mFb*+{tmU;Kac-Um{)P|=1XV!A0D%8Qln-S zKNDUv-SqdD&zE?3pEjf~n)0ir;N+h#8~bZwyiYP;^3U6&%6mOL`TzO(`<7;1iJdCR zHKmCE-|i-Rv5$(%s{T6+kL>iGCll5xUUx|9$Cs)Pldq?>iWjWSsMvXBYU4`5Y`Zhu zyjM1?-CnhE%lf*io8QB2zg%3GYgc_#>>V^TZ;iwyJKM#T&Ne-prc6EKM4MrZ_k6!cAucj$&WUfxvBpCp1HgCRsOr!@>PCjk$VI6uieY4nQZ38 zdD!Noge?2*h426C))zFkM(Ur8ZU1_EjqWaQC#Lqq{TJK5X7{d~xV&ep0ZYHV^()2g zhBF>s+{IzkoA~>hZf4WIwfEw?+D|=BZj9k+HELqJpZs{EsM!~(64g6XGZ*))s<7O1 zNNVrA6@NA}d`KO#2N)PkxS|a>TNcU3V?upNZ)b1Q` z`RLgHQ>N_F{vY4t*W9}pCVcPtzi*%4z83kmOyp5*`Tc2me=e49O;4T6`~JmGo1dGs zO>Ww%+is~zt$OJle`m{^{ds3UeR=$P-`r>C_uie9`ZeuUPw-{#_#ZXR%cqz8%(n~X zZI1nMmUrE|{110`I+aU0`bqgeu)9{aM6l#zve&)YQ-b>Ve>Cvg{3)IF)gWW~7iGEK zMq5m8Nw8H^nXS^c>pQrrwEpbrTUoQ0IkBzad%>_^LffmVNt(gSZ$01kaIqKnzT)4d zi~e!*baC#KG_6|mY*Lt)*)=WUti`$yyziX5)BbOvhfwgMISg?Y@AIVn{bts!sxr}w zNM#J?Ojmo!d9!6(7-PllyzBFp?%(xE*Q{->U2%Jq zp1tE5x3I9V{+p@t;-NiTFO_6^pI)ace^g0io2Xz!#LrE$Ckg%EZ+!k{`n}5e<-gZW zywzC#{PmeLGuInGw=^zpTet3%`Fk1t^U{~uSsrSx+3mf1&H=e;%Qv3WRpa})tiUoy zF1)PZ+gkraYP^*WEVE2E3)&rDzRXv$Me4+xZ3P;lPb;rT-n{fK*81@EeV;bSp1rXr z)A`4zZSFnNY~mbOuG~Cnup?)u*p%06=Uc4)a`i^c}J%9Jf9`~59sTT}F9@z+uH zx;f>-p-c8(6%DVk%bOizckWsH_q9Q0hSaoO!4h{WW8N+Ad#Ud`U+ARC9!c}3Kl06f zxP2{~bAq|NSMyfRPu=V#k84ue0yb>@f9FMpgjCd`-2eTp7w=ZTxu2~;< z$kn<3{XV-#UVLcqZ~EWFzq0b2-C}#~_t<#u!?^i2v*VoNIn&*>c{UYaUsZ z>|v`ES~St#cBi(_tGuMu&z7nu$=sZCmRtAFJ_n^$53ee;+^H8oX#BWjf#WT=gT=}o z0nw6v4~v*3RGz(#uw*&K)~o!`?7%d&O?~$&;wEmiJ>NF*p(F1t*0N2rr%Enji9Y#L z`S%-Te)D?^1x)ilqzG6<g&mu!k2T8 zpDfgPd(*PRX7BUE&p++|nxXzl<<67i*Z!?CU41y%-(LQkyoE@foaD90DM#IWE_~>0 zsE+D4Eof+2TQ8<|?C60zwU6W|MB>p_~D7+{1M;2*cM-TQa!If$M{&`%6qdOKjD^nTy^k}o$%c`m;PS8 z{J&;zOYgd6|J|l7kt`4hJQ(=-vEbT8b6j6+o}!SpOd-PfW+40GORZ9TpOHvQFsZT}}*|6h>4p6&3n-||zK zelaR%Y1&oRe)znZQ|O{;{lhI*OJCaliMn-9zfy9``o}`IZyisH>FAp2z+U^z76u0Dc$;EAJdy6yHs%7nT)bf1y?}+TO zf9Zc?=ZnrcH~D38k4=wr(sth$$ErTI9&SuuAI{^>a#`DuTc1<*`gHyn;a{J66+I=V zi2UR#|IFe!bCa{#!nKa?R(^fGhsoni7FSctxtx&REhnDI2%Y*BsIu?%&b^73kDYHR zdv~)#JL_>o^+w?fdR}=)d@8rxIC*)KO7@#e(T`Vkc^?ic_dVn$_pnECu7A;;5`6qo&6c-Z`q^|#cW8yKGF8chz1m7e`~v! z@GZQp_sg-zV*U|6hL*nk=w$-FO}>l6|B9p@dwl1;*+Yr#wFOHio3@wMPksCIN#Q-i z%8FP1oIX-12jvH1aooM$&z?vt)Qd`Y$2b-|ZN)t`cMgg412 zyqNyu&9+;?>d)5u#PaFheYIZBwzBSN){Y|0xc`jub^8)-YOOBP&#s=4Ti++v)1z}a zI3hiF;^~i`e>d(=lCP>=6dT>Yhxd}rz1;G??%$Hd@1`y0TRYR@=!3HTw^cmumP)F; z+;jI*VIN1!+2uE;-#Qz1zv#n`;CS`DR&9k(ZoIB4`@JERyXUdP|I6(Kr%Ru5^F4mN zYISvEtiGjnWt2N(Qrt0B$t%|XGy4=)2BdK3yj^(zL`l-}N^zFcO$ERG8ABM3`sYQt zR!lh6-{0H1@L}qsz9W(^PjR$xMC{I1e#a3x>8$L(kP^9{S55oGCmpq%bDQ%<&*sEA zih>6lRyKV;H{+yEaYc=lh0%nzIRD!M3pzVybt?QY@xN1eyI$eW_NR8cclKZU&MW=? z>Z_Ye*Y#+>)BYWI<@q(gLjUw5Up@GncU;@|b+z;J1?Lpz))?#jc@pqKE>dXSD;sW^ z>obGZ551UQFW%>+$G9i|cmBOSfvdXuJvr{>-TrrC#V0e?@8<3p}rVW5a@` zqJ6rm|7@5#b6(V5D!sDq@*?)HE#I8uZ%O6tt<8wY}`QB}h=`_S2E zZ0=zi=1(5lpTGWi!)2qpbC<1e@;!WJt&xIHjo0GlEC=>j!<^sB-*0~VnlBYy_x`z^ ztX$QP=#K(xDz3lWeCbo=JEs};H^ifsDv4?;oO)dUC6RQ=!d?{&lFSil9w$8cl z%QmrX-P_*sZ*0C?)|B2VTEAlP^=5_j#kb1&-WO`tNV)GhT=8RfqP5-EvOjN_)VqUs zhfDfDFFdfDVde&#eSs0PTNEtnL>@GisQvx=z{Z-SvUXy literal 0 HcmV?d00001 diff --git a/plugins/polkabot-plugin-validators b/plugins/polkabot-plugin-validators new file mode 160000 index 0000000..b6106ea --- /dev/null +++ b/plugins/polkabot-plugin-validators @@ -0,0 +1 @@ +Subproject commit b6106ea32cd2cdad19bcaf8bcb4a0027e3f78ec3 diff --git a/src/Config.ts b/src/Config.ts index 0f638fd..b26c8ae 100644 --- a/src/Config.ts +++ b/src/Config.ts @@ -1,107 +1,113 @@ -import process = require('process'); -import dotenv from 'dotenv' -import * as path from 'path'; +import process = require("process"); +import dotenv from "dotenv"; +import * as path from "path"; +import { IPolkabotConfig, EnvDictionnary } from "./types"; +const PREFIX = "POLKABOT_"; -// type StringGetter = () => string; - -interface EnvVar { - name: string; - description: string; - masked?: boolean; - regexp?: RegExp; -} - -/** This interface describes how the Config object looks like. */ -export interface Config { - /** This is the configuration related to the Backend itself */ - readonly polkadot: { - url: string; - }; -} - -export interface EnvDictionnary { - [key: string]: EnvVar; -} - -const PREFIX = 'POLKABOT_' export const ConfigFields: EnvDictionnary = { - // Known ENV for Polkadot - POLKADOT_URL: { name: PREFIX + 'POLKADOT_URL', description: 'The Polkadot WS url' }, - - MATRIX_ROOM: { name: PREFIX + 'MATRIX_ROOM', description: '', regexp: /^.*$/ }, - MATRIX_TOKEN: { name: PREFIX + 'MATRIX_TOKEN', description: '', masked: true, regexp: /^.{3,}/ }, -} + POLKADOT_NODE_NAME: { name: PREFIX + "POLKADOT_NODE_NAME", description: "The name of the node we connect to" }, + POLKADOT_URL: { name: PREFIX + "POLKADOT_URL", description: "The Polkadot WS url" }, + + MATRIX_ROOM: { name: PREFIX + "MATRIX_ROOM", description: "", regexp: /^.*$/ }, + MATRIX_TOKEN: { name: PREFIX + "MATRIX_TOKEN", description: "", masked: true, regexp: /^.{3,}/ }, + MATRIX_BOTMASTER_ID: { name: PREFIX + "MATRIX_BOTMASTER_ID", description: "" }, + MATRIX_BOTUSER_ID: { name: PREFIX + "MATRIX_BOTUSER_ID", description: "" } , + MATRIX_BASEURL: { name: PREFIX + "MATRIX_BASEURL", description: "" }, + MATRIX_LOGIN_USER_ID: { name: PREFIX + "MATRIX_LOGIN_USER_ID", description: "" }, + MATRIX_LOGIN_USER_PASSWORD: { name: PREFIX + "MATRIX_LOGIN_USER_PASSWORD", description: "", masked: true, regexp: /^.{3,}/ }, +}; -export class ConfigSingleton { - private static instance: Config | null; +export class ConfigSingleton { + private static instance: IPolkabotConfig | null; private constructor() { - ConfigSingleton.refresh() + ConfigSingleton.refresh(); } /** If you need to access the config, use this method */ public static getInstance(): Config { if (!ConfigSingleton.instance) { - new ConfigSingleton() + new ConfigSingleton(); } - return ConfigSingleton.instance + return ConfigSingleton.instance; } /** You likely will never have to use this function which - * is mostly use for the tests. If you don't know, do NOT call - * this function. - */ - public static refresh() { - const profile = process.env.NODE_ENV || 'production' - const envfile = profile == 'production' ? path.resolve(process.cwd(), '.env') : path.resolve(process.cwd(), '.env.' + profile.toLowerCase()) - dotenv.config({ path: envfile }) - const ENV = process.env + * is mostly use for the tests. If you don't know, do NOT call + * this function, it would take time and likely do nothing + * interesting for you. + */ + public static refresh(): void { + const profile = process.env.NODE_ENV || "production"; + const envfile = + profile == "production" + ? path.resolve(process.cwd(), ".env") + : path.resolve(process.cwd(), ".env." + profile.toLowerCase()); + dotenv.config({ path: envfile }); + const ENV = process.env; ConfigSingleton.instance = { polkadot: { - url: ENV[ConfigFields.POLKADOT_URL.name], - } - } + nodeName: ENV[ConfigFields.POLKADOT_NODE_NAME.name], + host: ENV[ConfigFields.POLKADOT_URL.name], + + }, + matrix: { + botMasterId: ENV[ConfigFields.MATRIX_BOTMASTERID.name], // Who is managing the bot. i.e. '@you:matrix.org' + roomId: ENV[ConfigFields.MATRIX_ROOM.name], + botUserId: ENV[ConfigFields.MATRIX_BOTUSER_ID.name], + token: ENV[ConfigFields.MATRIX_TOKEN.name], + baseUrl: ENV[ConfigFields.MATRIX_BASEURL.name], + loginUserId: ENV[ConfigFields.MATRIX_LOGIN_USER_ID.name], + loginUserPassword: ENV[ConfigFields.MATRIX_LOGIN_USER_PASSWORD.name], + } + }; } - /** Calling this function will get an instance of the Config and attach it - * to the global scope. - */ + /** Calling this function will get an instance of the Config and attach it + * to the global scope. + */ public static loadToGlobal(): void { - global['Config'] = ConfigSingleton.getInstance() + global["Config"] = ConfigSingleton.getInstance(); } /** Validate the config and return wheather it is valid or not */ public static Validate(): boolean { - let result = true - console.log('Validating process.env variables:') + let result = true; + console.log("Validating process.env variables:"); Object.entries(ConfigFields).map(([_key, env]) => { if (env.regexp != undefined) { - const value = process.env[env.name] || '' + const value = process.env[env.name] || ""; const regex = RegExp(env.regexp); - const testResult = regex.test(value) + const testResult = regex.test(value); // console.log(`Checking ${env.name} =\t${value} with ${env.regexp} => ${testResult?"OK":"FAIL"}`) - console.log(` - Checking ${env.name} \t=> ${testResult ? 'OK ' : 'FAIL'}\t${env.masked ? '*****' : process.env[env.name]}`) - result = result && testResult + console.log( + ` - Checking ${env.name} \t=> ${testResult ? "OK " : "FAIL"}\t${env.masked ? "*****" : process.env[env.name]}` + ); + result = result && testResult; } }); - return result + return result; } /** Show the ENV variables this application cares about */ public static getSupportedEnv(): EnvDictionnary { - return ConfigFields + return ConfigFields; } /** - * Display the current ENV to ensure everything that is used matches - * the expectations. - */ + * Display the current ENV to ensure everything that is used matches + * the expectations. + */ public static dumpEnv(): void { - console.log('================== ENV ==================') + console.log("================== ENV =================="); Object.entries(ConfigFields).map(([_key, env]) => { - console.log(`- ${env.name}: ${env.description}\n value: ${env.masked ? (process.env[env.name] ? '*****' : 'empty') : process.env[env.name]}`) + console.log( + `- ${env.name}: ${env.description}\n value: ${ + env.masked ? (process.env[env.name] ? "*****" : "empty") : process.env[env.name] + }` + ); }); - console.log('================== === ==================') + console.log("================== === =================="); } } diff --git a/src/config-sample.js b/src/config-sample.js deleted file mode 100644 index cbbded7..0000000 --- a/src/config-sample.js +++ /dev/null @@ -1,30 +0,0 @@ -import { config as dotenvConfig } from 'dotenv' - -dotenvConfig() - -module.exports = { - - // General Polkadot config - polkadot: { - // This is just for you to remember. i.e. 'Crash Override' - nodeName: process.env.POLKADOT_NODE_NAME, - // WebSocket host:port, usually :9944. i.e. 'ws://127.0.0.1:9944' - host: process.env.POLKADOT_WS_HOST || 'ws://127.0.0.1:9944' - }, - - // General Matrix config - matrix: { - // Who is managing the bot. i.e. '@you:matrix.org' - botMasterId: process.env.MATRIX_BOT_MASTER_USER_ID, - // In what room is the bot active by default. i.e. '!:matrix.org' - roomId: process.env.MATRIX_ROOM_ID, - // Credentials of the bot. i.e. '@...:matrix.org' - botUserId: process.env.MATRIX_BOT_USER_ID, - // Token. i.e. 'your_token_here' - token: process.env.MATRIX_TOKEN, - // Base Matrix URL. i.e. 'https://matrix.org' - baseUrl: process.env.MATRIX_BASE_URL || 'https://matrix.org', - loginUserId: process.env.MATRIX_LOGIN_USER_ID, - loginUserPassword: process.env.MATRIX_LOGIN_USER_PASSWORD - } -} diff --git a/src/lib/plugin-loader.ts b/src/lib/plugin-loader.ts index bf436f7..af562c4 100644 --- a/src/lib/plugin-loader.ts +++ b/src/lib/plugin-loader.ts @@ -2,22 +2,39 @@ import * as path from 'path' import * as fs from 'fs' +// interface Author { +// name: string; +// } + +interface PackageJson { + name: string; + version: string; + author: string | { name: string } ; +} + +interface Plugin { + name: string; + path: string; +} + export default class PluginLoader { - private plugin: any; + private plugin: Plugin; - public constructor (plugin) { + public constructor (plugin: Plugin) { this.plugin = plugin } - public load (cb: Function) { + public load (cb: Function): void { // console.log('loading ', this.plugin.path) fs.realpath(this.plugin.path, (err, pluginPath) => { if (err) console.log('ERR:', err) // console.log('Resolved ' + this.plugin.path + ' to ' + pluginPath) - const plugin = require(pluginPath) - const pkg = require(path.join(pluginPath, 'package.json')) + const plugin: Plugin = require(pluginPath) + const pkg: PackageJson = require(path.join(pluginPath, 'package.json')) + + //@ts-ignore console.log(` - ${pkg.name} version ${pkg.version} from ${pkg.author.name || pkg.author}`) // console.log(` - path: ${this.plugin.path}`) cb(plugin) diff --git a/src/lib/plugin-scanner.ts b/src/lib/plugin-scanner.ts index 29949dc..fe372a9 100644 --- a/src/lib/plugin-scanner.ts +++ b/src/lib/plugin-scanner.ts @@ -8,9 +8,7 @@ export default class PluginScanner { this.name = name } - // FIXME - this appears to only be scanning the global npm folder. - // i.e. where npm modules are installed when you run `npm install -g ` - public scan (cb, done) { + public scan (cb, done): void { const basepath = path.join(path.dirname(process.argv0), '../lib/node_modules') console.log('PluginScanner scanning basepath for Polkabot plugins: ', basepath) const modules = [] diff --git a/src/polkabot.js b/src/polkabot.ts similarity index 86% rename from src/polkabot.js rename to src/polkabot.ts index b5d4067..d03f124 100755 --- a/src/polkabot.js +++ b/src/polkabot.ts @@ -8,6 +8,6 @@ const argv = require('yargs') .epilog('chevdor-(C) 2018-2019') .argv -var polkabot = new Polkabot(argv) +const polkabot = new Polkabot(argv) polkabot.run() diff --git a/src/types.ts b/src/types.ts new file mode 100644 index 0000000..0c34346 --- /dev/null +++ b/src/types.ts @@ -0,0 +1,28 @@ +export interface EnvVar { + name: string; // Name of the envrionment varibale + description: string; // Description of what the var does + masked?: boolean; // true for tokens, passwords, etc.. + regexp?: RegExp; // validation regexp +} + +export interface EnvDictionnary { + [key: string]: EnvVar; +} + +/** This interface describes how the Polkabot Config + * object looks like. */ +export interface IPolkabotConfig { + polkadot: { + nodeName: string; // This is just for you to remember. i.e. 'Crash Override' + host: string; // WebSocket host:port, usually :9944. i.e. 'ws://127.0.0.1:9944' + }, + matrix: { + botMasterId: string; // Who is managing the bot. i.e. '@you:matrix.org' + roomId: string; // In what room is the bot active by default. i.e. '!:matrix.org' + botUserId: string; // Credentials of the bot. i.e. '@...:matrix.org' + token: string; // Token. i.e. 'your_token_here' + baseUrl: string; + loginUserId: string; + loginUserPassword: string; + }; +} -- GitLab From 07769cdd9c88b32cffc922a344a15294601644f2 Mon Sep 17 00:00:00 2001 From: Will Date: Tue, 20 Aug 2019 00:36:05 +0200 Subject: [PATCH 04/86] Add some logs --- src/index.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/index.ts b/src/index.ts index 96083d2..96b206f 100644 --- a/src/index.ts +++ b/src/index.ts @@ -96,6 +96,7 @@ export default class Polkabot { this.config = require(configLocation) + console.log(`Polkabot - Connecting to host: ${JSON.stringify(this.config, null, 2)}`) console.log(`Polkabot - Connecting to host: ${this.config.polkadot.host}`) console.log(`Polkabot - Running with bot user id: ${this.config.matrix.botUserId}`) @@ -124,6 +125,8 @@ export default class Polkabot { }) // TODO - refactor using async/await. See https://github.com/matrix-org/matrix-js-sdk/issues/789 + console.log('Polkabot - creating client') + this.matrix = sdk.createClient({ baseUrl: this.config.matrix.baseUrl, accessToken: this.config.matrix.token, @@ -153,7 +156,7 @@ export default class Polkabot { this.start(state) break default: - console.log('Polkabot - Error. Unable to establish client sync state') + console.log('Polkabot - Error. Unable to establish client sync state, state =', state, data) process.exit(1) } }) -- GitLab From 8170220165131b3e9115cb0226fa10a202ebd458 Mon Sep 17 00:00:00 2001 From: Will Date: Tue, 20 Aug 2019 11:35:15 +0200 Subject: [PATCH 05/86] Fix config --- package.json | 7 ++- src/Config.ts | 139 +++++++++-------------------------------- src/ConfigSingleton.ts | 123 ++++++++++++++++++++++++++++++++++++ src/index.ts | 33 ++++++---- 4 files changed, 175 insertions(+), 127 deletions(-) create mode 100644 src/ConfigSingleton.ts diff --git a/package.json b/package.json index 5bac2a5..98d85fd 100644 --- a/package.json +++ b/package.json @@ -1,16 +1,17 @@ { "name": "polkabot", - "version": "0.4.4", + "version": "0.5.0", "description": "Matrix Bot for Polkadot", - "main": "./dist/polkabot.js", + "main": "./build/src/polkabot.js", "bin": { "polkabot": "./dist/polkabot.js" }, "repository": "https://gitlab.com/Polkabot/polkabot", "scripts": { + "start": "node --inspect=5858 -r ts-node/register ./src/polkadot.ts", + "start:watch": "nodemon", "dev": "nodemon ./src/polkabot -c ./config.js --exec babel-node --presets env", "build": "tsc --build tsconfig.json", - "start": "yarn build && node build/src/polkabot.js", "test": "yarn lint --quiet && yarn build && mocha --recursive build/test --exit", "test:local": "mocha --require babel-core/register test/* --exit", "test:watch": "mocha --watch --require babel-core/register test/* --exit", diff --git a/src/Config.ts b/src/Config.ts index b26c8ae..cbbded7 100644 --- a/src/Config.ts +++ b/src/Config.ts @@ -1,113 +1,30 @@ -import process = require("process"); -import dotenv from "dotenv"; -import * as path from "path"; -import { IPolkabotConfig, EnvDictionnary } from "./types"; -const PREFIX = "POLKABOT_"; - -export const ConfigFields: EnvDictionnary = { - POLKADOT_NODE_NAME: { name: PREFIX + "POLKADOT_NODE_NAME", description: "The name of the node we connect to" }, - POLKADOT_URL: { name: PREFIX + "POLKADOT_URL", description: "The Polkadot WS url" }, - - MATRIX_ROOM: { name: PREFIX + "MATRIX_ROOM", description: "", regexp: /^.*$/ }, - MATRIX_TOKEN: { name: PREFIX + "MATRIX_TOKEN", description: "", masked: true, regexp: /^.{3,}/ }, - MATRIX_BOTMASTER_ID: { name: PREFIX + "MATRIX_BOTMASTER_ID", description: "" }, - MATRIX_BOTUSER_ID: { name: PREFIX + "MATRIX_BOTUSER_ID", description: "" } , - MATRIX_BASEURL: { name: PREFIX + "MATRIX_BASEURL", description: "" }, - MATRIX_LOGIN_USER_ID: { name: PREFIX + "MATRIX_LOGIN_USER_ID", description: "" }, - MATRIX_LOGIN_USER_PASSWORD: { name: PREFIX + "MATRIX_LOGIN_USER_PASSWORD", description: "", masked: true, regexp: /^.{3,}/ }, -}; - -export class ConfigSingleton { - private static instance: IPolkabotConfig | null; - - private constructor() { - ConfigSingleton.refresh(); - } - - /** If you need to access the config, use this method */ - public static getInstance(): Config { - if (!ConfigSingleton.instance) { - new ConfigSingleton(); - } - return ConfigSingleton.instance; - } - - /** You likely will never have to use this function which - * is mostly use for the tests. If you don't know, do NOT call - * this function, it would take time and likely do nothing - * interesting for you. - */ - public static refresh(): void { - const profile = process.env.NODE_ENV || "production"; - const envfile = - profile == "production" - ? path.resolve(process.cwd(), ".env") - : path.resolve(process.cwd(), ".env." + profile.toLowerCase()); - dotenv.config({ path: envfile }); - const ENV = process.env; - ConfigSingleton.instance = { - polkadot: { - nodeName: ENV[ConfigFields.POLKADOT_NODE_NAME.name], - host: ENV[ConfigFields.POLKADOT_URL.name], - - }, - matrix: { - botMasterId: ENV[ConfigFields.MATRIX_BOTMASTERID.name], // Who is managing the bot. i.e. '@you:matrix.org' - roomId: ENV[ConfigFields.MATRIX_ROOM.name], - botUserId: ENV[ConfigFields.MATRIX_BOTUSER_ID.name], - token: ENV[ConfigFields.MATRIX_TOKEN.name], - baseUrl: ENV[ConfigFields.MATRIX_BASEURL.name], - loginUserId: ENV[ConfigFields.MATRIX_LOGIN_USER_ID.name], - loginUserPassword: ENV[ConfigFields.MATRIX_LOGIN_USER_PASSWORD.name], - } - }; - } - - /** Calling this function will get an instance of the Config and attach it - * to the global scope. - */ - public static loadToGlobal(): void { - global["Config"] = ConfigSingleton.getInstance(); - } - - /** Validate the config and return wheather it is valid or not */ - public static Validate(): boolean { - let result = true; - console.log("Validating process.env variables:"); - Object.entries(ConfigFields).map(([_key, env]) => { - if (env.regexp != undefined) { - const value = process.env[env.name] || ""; - const regex = RegExp(env.regexp); - const testResult = regex.test(value); - // console.log(`Checking ${env.name} =\t${value} with ${env.regexp} => ${testResult?"OK":"FAIL"}`) - console.log( - ` - Checking ${env.name} \t=> ${testResult ? "OK " : "FAIL"}\t${env.masked ? "*****" : process.env[env.name]}` - ); - result = result && testResult; - } - }); - return result; - } - - /** Show the ENV variables this application cares about */ - public static getSupportedEnv(): EnvDictionnary { - return ConfigFields; - } - - /** - * Display the current ENV to ensure everything that is used matches - * the expectations. - */ - public static dumpEnv(): void { - console.log("================== ENV =================="); - Object.entries(ConfigFields).map(([_key, env]) => { - console.log( - `- ${env.name}: ${env.description}\n value: ${ - env.masked ? (process.env[env.name] ? "*****" : "empty") : process.env[env.name] - }` - ); - }); - - console.log("================== === =================="); +import { config as dotenvConfig } from 'dotenv' + +dotenvConfig() + +module.exports = { + + // General Polkadot config + polkadot: { + // This is just for you to remember. i.e. 'Crash Override' + nodeName: process.env.POLKADOT_NODE_NAME, + // WebSocket host:port, usually :9944. i.e. 'ws://127.0.0.1:9944' + host: process.env.POLKADOT_WS_HOST || 'ws://127.0.0.1:9944' + }, + + // General Matrix config + matrix: { + // Who is managing the bot. i.e. '@you:matrix.org' + botMasterId: process.env.MATRIX_BOT_MASTER_USER_ID, + // In what room is the bot active by default. i.e. '!:matrix.org' + roomId: process.env.MATRIX_ROOM_ID, + // Credentials of the bot. i.e. '@...:matrix.org' + botUserId: process.env.MATRIX_BOT_USER_ID, + // Token. i.e. 'your_token_here' + token: process.env.MATRIX_TOKEN, + // Base Matrix URL. i.e. 'https://matrix.org' + baseUrl: process.env.MATRIX_BASE_URL || 'https://matrix.org', + loginUserId: process.env.MATRIX_LOGIN_USER_ID, + loginUserPassword: process.env.MATRIX_LOGIN_USER_PASSWORD } } diff --git a/src/ConfigSingleton.ts b/src/ConfigSingleton.ts new file mode 100644 index 0000000..6572767 --- /dev/null +++ b/src/ConfigSingleton.ts @@ -0,0 +1,123 @@ +import process = require("process"); +import dotenv from "dotenv"; +import * as path from "path"; +import { IPolkabotConfig, EnvDictionnary } from "./types"; +import { assert } from '@polkadot/util'; + +const PREFIX = "POLKABOT_"; + +export const ConfigFields: EnvDictionnary = { + POLKADOT_NODE_NAME: { name: PREFIX + "POLKADOT_NODE_NAME", description: "The name of the node we connect to" }, + POLKADOT_URL: { name: PREFIX + "POLKADOT_WS_HOST", description: "The Polkadot WS url" }, + + MATRIX_ROOM: { name: PREFIX + "MATRIX_ROOM_ID", description: "", regexp: /^.*$/ }, + MATRIX_TOKEN: { name: PREFIX + "MATRIX_TOKEN", description: "", masked: true, regexp: /^.{3,}/ }, + MATRIX_BOTMASTER_ID: { name: PREFIX + "MATRIX_BOTMASTER_ID", description: "" }, + MATRIX_BOTUSER_ID: { name: PREFIX + "MATRIX_BOTUSER_ID", description: "" } , + MATRIX_BASEURL: { name: PREFIX + "MATRIX_BASE_URL", description: "" }, + MATRIX_LOGIN_USER_ID: { name: PREFIX + "MATRIX_LOGIN_USER_ID", description: "" }, + MATRIX_LOGIN_USER_PASSWORD: { name: PREFIX + "MATRIX_LOGIN_USER_PASSWORD", description: "", masked: true, regexp: /^.{3,}/ }, +}; + +export class ConfigSingleton { + private static instance: IPolkabotConfig | null; + + private constructor() { + ConfigSingleton.refresh(); + } + + /** If you need to access the config, use this method */ + public static getInstance(): IPolkabotConfig { + console.log('ConfigSingleton.getInstance()') + if (!ConfigSingleton.instance) { + new ConfigSingleton(); + } + return ConfigSingleton.instance; + } + + /** You likely will never have to use this function which + * is mostly use for the tests. If you don't know, do NOT call + * this function, it would take time and likely do nothing + * interesting for you. + */ + public static refresh(): void { + const profile = process.env.NODE_ENV || "production"; + console.log('NODE_ENV profile: ', profile) + const envfile = + profile == "production" + ? path.resolve(process.cwd(), ".env") + : path.resolve(process.cwd(), ".env." + profile.toLowerCase()); + console.log('ENV file:', envfile) + dotenv.config({ path: envfile }); + const ENV = process.env; + console.log('process.env', ENV) + console.log('configFields', ConfigFields) + ConfigSingleton.instance = { + polkadot: { + nodeName: ENV[ConfigFields.POLKADOT_NODE_NAME.name], + host: ENV[ConfigFields.POLKADOT_URL.name], + + }, + matrix: { + botMasterId: ENV[ConfigFields.MATRIX_BOTMASTER_ID.name], // Who is managing the bot. i.e. '@you:matrix.org' + roomId: ENV[ConfigFields.MATRIX_ROOM.name], + botUserId: ENV[ConfigFields.MATRIX_BOTUSER_ID.name], + token: ENV[ConfigFields.MATRIX_TOKEN.name], + baseUrl: ENV[ConfigFields.MATRIX_BASEURL.name], + loginUserId: ENV[ConfigFields.MATRIX_LOGIN_USER_ID.name], + loginUserPassword: ENV[ConfigFields.MATRIX_LOGIN_USER_PASSWORD.name], + } + }; + + console.log(ConfigSingleton.instance) + assert((ConfigSingleton.instance.polkadot.nodeName || '').length > 0, "The extracted config does not look OK") + } + + /** Calling this function will get an instance of the Config and attach it + * to the global scope. + */ + public static loadToGlobal(): void { + global["Config"] = ConfigSingleton.getInstance(); + } + + /** Validate the config and return wheather it is valid or not */ + public static Validate(): boolean { + let result = true; + console.log("Validating process.env variables:"); + Object.entries(ConfigFields).map(([_key, env]) => { + if (env.regexp != undefined) { + const value = process.env[env.name] || ""; + const regex = RegExp(env.regexp); + const testResult = regex.test(value); + // console.log(`Checking ${env.name} =\t${value} with ${env.regexp} => ${testResult?"OK":"FAIL"}`) + console.log( + ` - Checking ${env.name} \t=> ${testResult ? "OK " : "FAIL"}\t${env.masked ? "*****" : process.env[env.name]}` + ); + result = result && testResult; + } + }); + return result; + } + + /** Show the ENV variables this application cares about */ + public static getSupportedEnv(): EnvDictionnary { + return ConfigFields; + } + + /** + * Display the current ENV to ensure everything that is used matches + * the expectations. + */ + public static dumpEnv(): void { + console.log("================== ENV =================="); + Object.entries(ConfigFields).map(([_key, env]) => { + console.log( + `- ${env.name}: ${env.description}\n value: ${ + env.masked ? (process.env[env.name] ? "*****" : "empty") : process.env[env.name] + }` + ); + }); + + console.log("================== === =================="); + } +} diff --git a/src/index.ts b/src/index.ts index 96b206f..59d12c7 100644 --- a/src/index.ts +++ b/src/index.ts @@ -8,8 +8,11 @@ import Datastore from 'nedb' import pkg from '../package.json' import PluginScanner from './lib/plugin-scanner' import PluginLoader from './lib/plugin-loader' -import * as path from 'path' +// import * as path from 'path' import sdk from 'matrix-js-sdk' +import { ConfigSingleton } from './ConfigSingleton.js'; +import { assert } from '@polkadot/util'; +import { IPolkabotConfig } from './types.js'; //@ts-ignore global.Olm = Olm @@ -20,14 +23,14 @@ global.Olm = Olm // }) export default class Polkabot { - private args: any; + // private args: any; private db: any; private config: any; private matrix: any; private polkadot: any; public constructor (args) { - this.args = args + // this.args = args this.db = new Datastore({ filename: 'polkabot.db' }) } @@ -89,16 +92,20 @@ export default class Polkabot { console.log(`${pkg.name} v${pkg.version}`) console.log('===========================') - const configLocation = this.args.config - ? this.args.config - : path.join(__dirname, './config') - console.log('Polkabot - Config location: ', configLocation) + // const configLocation = this.args.config + // ? this.args.config + // : path.join(__dirname, './config') + // console.log('Polkabot - Config location: ', configLocation) - this.config = require(configLocation) - - console.log(`Polkabot - Connecting to host: ${JSON.stringify(this.config, null, 2)}`) - console.log(`Polkabot - Connecting to host: ${this.config.polkadot.host}`) - console.log(`Polkabot - Running with bot user id: ${this.config.matrix.botUserId}`) + // this.config = require(configLocation) + + let config: IPolkabotConfig = ConfigSingleton.getInstance() + assert(config.polkadot.host != null, 'Issue with the config') + + this.config = config + console.log(`Polkabot - config: ${JSON.stringify(this.config, null, 2)}`) + // console.log(`Polkabot - Connecting to host: ${this.config.polkadot.host}`) + // console.log(`Polkabot - Running with bot user id: ${this.config.matrix.botUserId}`) // Reference: https://polkadot.js.org/api/examples/promise/01_simple_connect/ const provider = new WsProvider(this.config.polkadot.host) @@ -149,7 +156,7 @@ export default class Polkabot { } } - this.matrix.once('sync', (state, _prevState, _data) => { + this.matrix.once('sync', (state, _prevState, data) => { switch (state) { case 'PREPARED': console.log(`Polkabot - Detected client sync state: ${state}`) -- GitLab From 168c3aaf334b08f3c699a552b27f0eaca6ba554a Mon Sep 17 00:00:00 2001 From: Will Date: Tue, 20 Aug 2019 14:47:40 +0200 Subject: [PATCH 06/86] Upgrade of half the deps --- package.json | 16 ++--- src/ConfigSingleton.ts | 3 - src/index.ts | 2 +- yarn.lock | 137 +++++++++++++++++++++++++---------------- 4 files changed, 93 insertions(+), 65 deletions(-) diff --git a/package.json b/package.json index 98d85fd..74a8500 100644 --- a/package.json +++ b/package.json @@ -39,7 +39,7 @@ "minimongo": "^5.3.0", "nedb": "^1.8.0", "olm": "https://matrix.org/packages/npm/olm/olm-3.0.0.tgz", - "yargs": "13.2.4" + "yargs": "13.3.0" }, "devDependencies": { "@types/dotenv": "^6.1.1", @@ -48,22 +48,22 @@ "@typescript-eslint/parser": "^1.10.2", "chai": "4.2.0", "chai-http": "4.3.0", - "dotenv": "8.0.0", + "dotenv": "8.1.0", "eslint": "^5.16.0", "eslint-config-prettier": "^5.0.0", "eslint-config-standard": "^12.0.0", - "eslint-plugin-import": "^2.17.3", + "eslint-plugin-import": "2.18.2", "eslint-plugin-node": "^9.1.0", - "eslint-plugin-promise": "^4.1.1", - "eslint-plugin-react": "^7.13.0", - "eslint-plugin-standard": "^4.0.0", - "jsdoc": "3.6.2", + "eslint-plugin-promise": "4.2.1", + "eslint-plugin-react": "7.14.3", + "eslint-plugin-standard": "4.0.1", + "jsdoc": "3.6.3", "jsdoc-route-plugin": "^0.1.0", "mocha": "^6.1.4", "nodemon": "1.19.1", "snazzy": "^8.0.0", "standard": "12.0.1", - "typescript": "^3.5.1", + "typescript": "3.5.3", "yarn": "^1.16.0" }, "standard": { diff --git a/src/ConfigSingleton.ts b/src/ConfigSingleton.ts index 6572767..f86cade 100644 --- a/src/ConfigSingleton.ts +++ b/src/ConfigSingleton.ts @@ -50,8 +50,6 @@ export class ConfigSingleton { console.log('ENV file:', envfile) dotenv.config({ path: envfile }); const ENV = process.env; - console.log('process.env', ENV) - console.log('configFields', ConfigFields) ConfigSingleton.instance = { polkadot: { nodeName: ENV[ConfigFields.POLKADOT_NODE_NAME.name], @@ -69,7 +67,6 @@ export class ConfigSingleton { } }; - console.log(ConfigSingleton.instance) assert((ConfigSingleton.instance.polkadot.nodeName || '').length > 0, "The extracted config does not look OK") } diff --git a/src/index.ts b/src/index.ts index 59d12c7..38fd5fd 100644 --- a/src/index.ts +++ b/src/index.ts @@ -103,7 +103,7 @@ export default class Polkabot { assert(config.polkadot.host != null, 'Issue with the config') this.config = config - console.log(`Polkabot - config: ${JSON.stringify(this.config, null, 2)}`) + // console.log(`Polkabot - config: ${JSON.stringify(this.config, null, 2)}`) // console.log(`Polkabot - Connecting to host: ${this.config.polkadot.host}`) // console.log(`Polkabot - Running with bot user id: ${this.config.matrix.botUserId}`) diff --git a/yarn.lock b/yarn.lock index 89d5252..b8d1475 100644 --- a/yarn.lock +++ b/yarn.lock @@ -946,12 +946,12 @@ caseless@~0.12.0: resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= -catharsis@^0.8.10: - version "0.8.10" - resolved "https://registry.yarnpkg.com/catharsis/-/catharsis-0.8.10.tgz#364198c1fbf084ae17028ee33ec7db53ca942ee6" - integrity sha512-l2OUaz/3PU3MZylspVFJvwHCVfWyvcduPq4lv3AzZ2pJzZCo7kNKFNyatwujD7XgvGkNAE/Jhhbh2uARNwNkfw== +catharsis@^0.8.11: + version "0.8.11" + resolved "http://52.167.60.66:8081/repository/npm-all/catharsis/-/catharsis-0.8.11.tgz#d0eb3d2b82b7da7a3ce2efb1a7b00becc6643468" + integrity sha512-a+xUyMV7hD1BrDQA/3iPV7oc+6W26BgVJO05PGEoatMyIuPScQKsde6i3YorWX1qs+AZjnJ18NqdKoCtKiNh1g== dependencies: - lodash "^4.17.11" + lodash "^4.17.14" chai-http@4.3.0: version "4.3.0" @@ -1326,7 +1326,7 @@ 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= -define-properties@^1.1.2: +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== @@ -1416,10 +1416,10 @@ dot-prop@^4.1.0: dependencies: is-obj "^1.0.0" -dotenv@8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.0.0.tgz#ed310c165b4e8a97bb745b0a9d99c31bda566440" - integrity sha512-30xVGqjLjiUOArT4+M5q9sYdvuR4riM6yK9wMcas9Vbp6zZa+ocC9dp6QoftuhTPhFAiLK/0C5Ni2nou/Bk8lg== +dotenv@8.1.0: + version "8.1.0" + resolved "http://52.167.60.66:8081/repository/npm-all/dotenv/-/dotenv-8.1.0.tgz#d811e178652bfb8a1e593c6dd704ec7e90d85ea2" + integrity sha512-GUE3gqcDCaMltj2++g6bRQ5rBJWtkWTmqmD0fo1RnnMuUqHNCt2oTPeDnS9n6fKYvlhn7AeBkb38lymBtWBQdA== drbg.js@^1.0.1: version "1.0.1" @@ -1487,7 +1487,7 @@ error-ex@^1.2.0, error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" -es-abstract@^1.11.0, es-abstract@^1.5.1, es-abstract@^1.7.0: +es-abstract@^1.11.0, es-abstract@^1.12.0, es-abstract@^1.5.1, es-abstract@^1.7.0: version "1.13.0" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.13.0.tgz#ac86145fdd5099d8dd49558ccba2eaf9b88e24e9" integrity sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg== @@ -1595,10 +1595,10 @@ eslint-plugin-es@^1.3.1, eslint-plugin-es@^1.4.0: eslint-utils "^1.3.0" regexpp "^2.0.1" -eslint-plugin-import@^2.17.3: - version "2.17.3" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.17.3.tgz#00548b4434c18faebaba04b24ae6198f280de189" - integrity sha512-qeVf/UwXFJbeyLbxuY8RgqDyEKCkqV7YC+E5S5uOjAp4tOc8zj01JP3ucoBM8JcEqd1qRasJSg6LLlisirfy0Q== +eslint-plugin-import@2.18.2: + version "2.18.2" + resolved "http://52.167.60.66:8081/repository/npm-all/eslint-plugin-import/-/eslint-plugin-import-2.18.2.tgz#02f1180b90b077b33d447a17a2326ceb400aceb6" + integrity sha512-5ohpsHAiUBRNaBWAF08izwUGlbrJoJJ+W9/TBwsGoR1MnlgfwMIKrFeSjWbt6moabiXW9xNvtFz+97KHRfI4HQ== dependencies: array-includes "^3.0.3" contains-path "^0.1.0" @@ -1607,8 +1607,8 @@ eslint-plugin-import@^2.17.3: eslint-import-resolver-node "^0.3.2" eslint-module-utils "^2.4.0" has "^1.0.3" - lodash "^4.17.11" minimatch "^3.0.4" + object.values "^1.1.0" read-pkg-up "^2.0.0" resolve "^1.11.0" @@ -1652,26 +1652,28 @@ eslint-plugin-node@~7.0.1: resolve "^1.8.1" semver "^5.5.0" -eslint-plugin-promise@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-4.1.1.tgz#1e08cb68b5b2cd8839f8d5864c796f56d82746db" - integrity sha512-faAHw7uzlNPy7b45J1guyjazw28M+7gJokKUjC5JSFoYfUEyy6Gw/i7YQvmv2Yk00sUjWcmzXQLpU1Ki/C2IZQ== +eslint-plugin-promise@4.2.1: + version "4.2.1" + resolved "http://52.167.60.66:8081/repository/npm-all/eslint-plugin-promise/-/eslint-plugin-promise-4.2.1.tgz#845fd8b2260ad8f82564c1222fce44ad71d9418a" + integrity sha512-VoM09vT7bfA7D+upt+FjeBO5eHIJQBUWki1aPvB+vbNiHS3+oGIJGIeyBtKQTME6UPXXy3vV07OL1tHd3ANuDw== eslint-plugin-promise@~4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-4.0.1.tgz#2d074b653f35a23d1ba89d8e976a985117d1c6a2" integrity sha512-Si16O0+Hqz1gDHsys6RtFRrW7cCTB6P7p3OJmKp3Y3dxpQE2qwOA7d3xnV+0mBmrPoi0RBnxlCKvqu70te6wjg== -eslint-plugin-react@^7.13.0: - version "7.13.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.13.0.tgz#bc13fd7101de67996ea51b33873cd9dc2b7e5758" - integrity sha512-uA5LrHylu8lW/eAH3bEQe9YdzpPaFd9yAJTwTi/i/BKTD7j6aQMKVAdGM/ML72zD6womuSK7EiGtMKuK06lWjQ== +eslint-plugin-react@7.14.3: + version "7.14.3" + resolved "http://52.167.60.66:8081/repository/npm-all/eslint-plugin-react/-/eslint-plugin-react-7.14.3.tgz#911030dd7e98ba49e1b2208599571846a66bdf13" + integrity sha512-EzdyyBWC4Uz2hPYBiEJrKCUi2Fn+BJ9B/pJQcjw5X+x/H2Nm59S4MJIvL4O5NEE0+WbnQwEBxWY03oUk+Bc3FA== dependencies: array-includes "^3.0.3" doctrine "^2.1.0" has "^1.0.3" jsx-ast-utils "^2.1.0" + object.entries "^1.1.0" object.fromentries "^2.0.0" + object.values "^1.1.0" prop-types "^15.7.2" resolve "^1.10.1" @@ -1686,7 +1688,12 @@ eslint-plugin-react@~7.11.1: jsx-ast-utils "^2.0.1" prop-types "^15.6.2" -eslint-plugin-standard@^4.0.0, eslint-plugin-standard@~4.0.0: +eslint-plugin-standard@4.0.1: + version "4.0.1" + resolved "http://52.167.60.66:8081/repository/npm-all/eslint-plugin-standard/-/eslint-plugin-standard-4.0.1.tgz#ff0519f7ffaff114f76d1bd7c3996eef0f6e20b4" + integrity sha512-v/KBnfyaOMPmZc/dmc6ozOdWqekGp7bBGq4jLAecEfPGmfKiWS4sA8sC0LqiV9w5qmXAtXVn4M3p1jSyhY85SQ== + +eslint-plugin-standard@~4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/eslint-plugin-standard/-/eslint-plugin-standard-4.0.0.tgz#f845b45109c99cd90e77796940a344546c8f6b5c" integrity sha512-OwxJkR6TQiYMmt1EsNRMe5qG3GsbjlcOhbGUBY4LtavF9DsLaTcoR+j2Tdjqi23oUwKNUqX7qcn5fPStafMdlA== @@ -2812,22 +2819,22 @@ jsdoc-route-plugin@^0.1.0: resolved "https://registry.yarnpkg.com/jsdoc-route-plugin/-/jsdoc-route-plugin-0.1.0.tgz#22d167a92b84c11afd570813794a24144a7892e0" integrity sha1-ItFnqSuEwRr9VwgTeUokFEp4kuA= -jsdoc@3.6.2: - version "3.6.2" - resolved "https://registry.yarnpkg.com/jsdoc/-/jsdoc-3.6.2.tgz#ee289fc6ba9263b7e4eceb99921179fe1c31489a" - integrity sha512-S2vzg99C5+gb7FWlrK4TVdyzVPGGkdvpDkCEJH1JABi2PKzPeLu5/zZffcJUifgWUJqXWl41Hoc+MmuM2GukIg== +jsdoc@3.6.3: + version "3.6.3" + resolved "http://52.167.60.66:8081/repository/npm-all/jsdoc/-/jsdoc-3.6.3.tgz#dccea97d0e62d63d306b8b3ed1527173b5e2190d" + integrity sha512-Yf1ZKA3r9nvtMWHO1kEuMZTlHOF8uoQ0vyo5eH7SQy5YeIiHM+B0DgKnn+X6y6KDYZcF7G2SPkKF+JORCXWE/A== dependencies: "@babel/parser" "^7.4.4" bluebird "^3.5.4" - catharsis "^0.8.10" + catharsis "^0.8.11" escape-string-regexp "^2.0.0" js2xmlparser "^4.0.0" klaw "^3.0.0" markdown-it "^8.4.2" markdown-it-anchor "^5.0.2" - marked "^0.6.2" + marked "^0.7.0" mkdirp "^0.5.1" - requizzle "^0.2.2" + requizzle "^0.2.3" strip-json-comments "^3.0.1" taffydb "2.6.2" underscore "~1.9.1" @@ -2999,6 +3006,11 @@ lodash@^4.17.11, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.3.0: resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg== +lodash@^4.17.14: + version "4.17.15" + resolved "http://52.167.60.66:8081/repository/npm-all/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" + integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== + log-symbols@2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a" @@ -3080,10 +3092,10 @@ markdown-it@^8.4.2: mdurl "^1.0.1" uc.micro "^1.0.5" -marked@^0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/marked/-/marked-0.6.2.tgz#c574be8b545a8b48641456ca1dbe0e37b6dccc1a" - integrity sha512-LqxwVH3P/rqKX4EKGz7+c2G9r98WeM/SW34ybhgNGhUQNKtf1GmmSkJ6cDGJ/t6tiyae49qRkpyTw2B9HOrgUA== +marked@^0.7.0: + version "0.7.0" + resolved "http://52.167.60.66:8081/repository/npm-all/marked/-/marked-0.7.0.tgz#b64201f051d271b1edc10a04d1ae9b74bb8e5c0e" + integrity sha512-c+yYdCZJQrsRjTPhUx7VKkApw9bwDkNbHUKo1ovgcfDjb2kc8rLuRbIFyXL5WOEUwzSSKo3IXpph2K6DqB/KZg== martinez-polygon-clipping@^0.4.3: version "0.4.3" @@ -3543,6 +3555,16 @@ object.assign@4.1.0: has-symbols "^1.0.0" object-keys "^1.0.11" +object.entries@^1.1.0: + version "1.1.0" + resolved "http://52.167.60.66:8081/repository/npm-all/object.entries/-/object.entries-1.1.0.tgz#2024fc6d6ba246aee38bdb0ffd5cfbcf371b7519" + integrity sha512-l+H6EQ8qzGRxbkHOd5I/aHRhHDKoQXQ8g0BYt4uSweQU1/J6dZUOyWh9a2Vky35YCKjzmgxOzta2hH6kf9HuXA== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.12.0" + function-bind "^1.1.1" + has "^1.0.3" + object.fromentries@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.0.tgz#49a543d92151f8277b3ac9600f1e930b189d30ab" @@ -3568,6 +3590,16 @@ object.pick@^1.3.0: dependencies: isobject "^3.0.1" +object.values@^1.1.0: + version "1.1.0" + resolved "http://52.167.60.66:8081/repository/npm-all/object.values/-/object.values-1.1.0.tgz#bf6810ef5da3e5325790eaaa2be213ea84624da9" + integrity sha512-8mf0nKLAoFX6VlNVdhGj31SVYpaNFtUnuoOXWyFEstsWRgU837AK+JYM0iAxwkSzGRbwn8cbFmgbyxj1j4VbXg== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.12.0" + function-bind "^1.1.1" + has "^1.0.3" + "olm@https://matrix.org/packages/npm/olm/olm-3.0.0.tgz": version "3.0.0" resolved "https://matrix.org/packages/npm/olm/olm-3.0.0.tgz#4a6f5e83c5c4d05a268246a5db9bdf0e720311b1" @@ -4073,12 +4105,12 @@ require-uncached@^1.0.3: caller-path "^0.1.0" resolve-from "^1.0.0" -requizzle@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/requizzle/-/requizzle-0.2.2.tgz#df991c0cffbbbdde721504c1455f68f53f7c7bd1" - integrity sha512-oJ6y7JcUJkblRGhMByGNcszeLgU0qDxNKFCiUZR1XyzHyVsev+Mxb1tyygxLd1ORsKee1SA5BInFdUwY64GE/A== +requizzle@^0.2.3: + version "0.2.3" + resolved "http://52.167.60.66:8081/repository/npm-all/requizzle/-/requizzle-0.2.3.tgz#4675c90aacafb2c036bd39ba2daa4a1cb777fded" + integrity sha512-YanoyJjykPxGHii0fZP0uUPEXpvqfBDxWV7s6GKAiiOsiqhX6vHNyW3Qzdmqp/iq/ExbhaGbVrjB4ruEVSM4GQ== dependencies: - lodash "^4.17.11" + lodash "^4.17.14" resolve-from@^1.0.0: version "1.0.1" @@ -4750,10 +4782,10 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= -typescript@^3.5.1: - version "3.5.2" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.5.2.tgz#a09e1dc69bc9551cadf17dba10ee42cf55e5d56c" - integrity sha512-7KxJovlYhTX5RaRbUdkAXN1KUZ8PwWlTzQdHV6xNqvuFOs7+WBo10TQUqT19Q/Jz2hk5v9TQDIhyLhhJY4p5AA== +typescript@3.5.3: + version "3.5.3" + resolved "http://52.167.60.66:8081/repository/npm-all/typescript/-/typescript-3.5.3.tgz#c830f657f93f1ea846819e929092f5fe5983e977" + integrity sha512-ACzBtm/PhXBDId6a6sDJfroT2pOWt/oOnk4/dElG5G33ZL776N3Y6/6bKZJBFpd+b05F3Ct9qDjMeJmRWtE2/g== uc.micro@^1.0.1, uc.micro@^1.0.5: version "1.0.6" @@ -5043,9 +5075,9 @@ yargs-parser@^11.1.1: camelcase "^5.0.0" decamelize "^1.2.0" -yargs-parser@^13.1.0: +yargs-parser@^13.1.1: version "13.1.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.1.tgz#d26058532aa06d365fe091f6a1fc06b2f7e5eca0" + resolved "http://52.167.60.66:8081/repository/npm-all/yargs-parser/-/yargs-parser-13.1.1.tgz#d26058532aa06d365fe091f6a1fc06b2f7e5eca0" integrity sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ== dependencies: camelcase "^5.0.0" @@ -5077,22 +5109,21 @@ yargs@13.2.2: y18n "^4.0.0" yargs-parser "^13.0.0" -yargs@13.2.4: - version "13.2.4" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.2.4.tgz#0b562b794016eb9651b98bd37acf364aa5d6dc83" - integrity sha512-HG/DWAJa1PAnHT9JAhNa8AbAv3FPaiLzioSjCcmuXXhP8MlpHO5vwls4g4j6n30Z74GVQj8Xa62dWVx1QCGklg== +yargs@13.3.0: + version "13.3.0" + resolved "http://52.167.60.66:8081/repository/npm-all/yargs/-/yargs-13.3.0.tgz#4c657a55e07e5f2cf947f8a366567c04a0dedc83" + integrity sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA== dependencies: cliui "^5.0.0" find-up "^3.0.0" get-caller-file "^2.0.1" - os-locale "^3.1.0" require-directory "^2.1.1" require-main-filename "^2.0.0" set-blocking "^2.0.0" string-width "^3.0.0" which-module "^2.0.0" y18n "^4.0.0" - yargs-parser "^13.1.0" + yargs-parser "^13.1.1" yargs@^12.0.5: version "12.0.5" -- GitLab From 531e726a81842b232978e3c7bda5bbc6175f850f Mon Sep 17 00:00:00 2001 From: Will Date: Tue, 20 Aug 2019 15:17:44 +0200 Subject: [PATCH 07/86] Update of deps --- package.json | 16 +- yarn.lock | 801 +++++++++++++++++++++++---------------------------- 2 files changed, 368 insertions(+), 449 deletions(-) diff --git a/package.json b/package.json index 74a8500..1483afd 100644 --- a/package.json +++ b/package.json @@ -34,9 +34,9 @@ ], "dependencies": { "@polkadot/api": "0.81.1", - "bn.js": "^4.11.8", + "bn.js": "5.0.0", "matrix-js-sdk": "^1.0.4", - "minimongo": "^5.3.0", + "minimongo": "6.0.0", "nedb": "^1.8.0", "olm": "https://matrix.org/packages/npm/olm/olm-3.0.0.tgz", "yargs": "13.3.0" @@ -44,14 +44,14 @@ "devDependencies": { "@types/dotenv": "^6.1.1", "@types/mocha": "^5.2.7", - "@typescript-eslint/eslint-plugin": "^1.10.2", - "@typescript-eslint/parser": "^1.10.2", + "@typescript-eslint/eslint-plugin": "2.0.0", + "@typescript-eslint/parser": "2.0.0", "chai": "4.2.0", "chai-http": "4.3.0", "dotenv": "8.1.0", - "eslint": "^5.16.0", - "eslint-config-prettier": "^5.0.0", - "eslint-config-standard": "^12.0.0", + "eslint": "6.2.0", + "eslint-config-prettier": "6.1.0", + "eslint-config-standard": "14.0.0", "eslint-plugin-import": "2.18.2", "eslint-plugin-node": "^9.1.0", "eslint-plugin-promise": "4.2.1", @@ -62,7 +62,7 @@ "mocha": "^6.1.4", "nodemon": "1.19.1", "snazzy": "^8.0.0", - "standard": "12.0.1", + "standard": "14.0.0", "typescript": "3.5.3", "yarn": "^1.16.0" }, diff --git a/yarn.lock b/yarn.lock index b8d1475..01511fe 100644 --- a/yarn.lock +++ b/yarn.lock @@ -309,6 +309,11 @@ resolved "https://registry.yarnpkg.com/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#1ee30d79544ca84d68d4b3cdb0af4f205663dd2d" integrity sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag== +"@types/json-schema@^7.0.3": + version "7.0.3" + resolved "http://52.167.60.66:8081/repository/npm-all/@types/json-schema/-/json-schema-7.0.3.tgz#bdfd69d61e464dcc81b25159c270d75a73c1a636" + integrity sha512-Il2DtDVRGDcqjDtE+rF8iqg1CArehSK84HZJCT7AMITlyXRBpuPhqGLDQMowraqqu1coEaimg4ZOqggt6L6L+A== + "@types/memoizee@^0.4.2": version "0.4.2" resolved "https://registry.yarnpkg.com/@types/memoizee/-/memoizee-0.4.2.tgz#a500158999a8144a9b46cf9a9fb49b15f1853573" @@ -461,42 +466,43 @@ dependencies: "@types/node" "*" -"@typescript-eslint/eslint-plugin@^1.10.2": - version "1.10.2" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-1.10.2.tgz#552fc64cfcb19c6162190360217c945e8faa330a" - integrity sha512-7449RhjE1oLFIy5E/5rT4wG5+KsfPzakJuhvpzXJ3C46lq7xywY0/Rjo9ZBcwrfbk0nRZ5xmUHkk7DZ67tSBKw== +"@typescript-eslint/eslint-plugin@2.0.0": + version "2.0.0" + resolved "http://52.167.60.66:8081/repository/npm-all/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.0.0.tgz#609a5d7b00ce21a6f94d7ef282eba9da57ca1e42" + integrity sha512-Mo45nxTTELODdl7CgpZKJISvLb+Fu64OOO2ZFc2x8sYSnUpFrBUW3H+H/ZGYmEkfnL6VkdtOSxgdt+Av79j0sA== dependencies: - "@typescript-eslint/experimental-utils" "1.10.2" - eslint-utils "^1.3.1" + "@typescript-eslint/experimental-utils" "2.0.0" + eslint-utils "^1.4.0" functional-red-black-tree "^1.0.1" regexpp "^2.0.1" - tsutils "^3.7.0" + tsutils "^3.14.0" -"@typescript-eslint/experimental-utils@1.10.2": - version "1.10.2" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-1.10.2.tgz#cd548c03fc1a2b3ba5c136d1599001a1ede24215" - integrity sha512-Hf5lYcrnTH5Oc67SRrQUA7KuHErMvCf5RlZsyxXPIT6AXa8fKTyfFO6vaEnUmlz48RpbxO4f0fY3QtWkuHZNjg== +"@typescript-eslint/experimental-utils@2.0.0": + version "2.0.0" + resolved "http://52.167.60.66:8081/repository/npm-all/@typescript-eslint/experimental-utils/-/experimental-utils-2.0.0.tgz#f3d298bb411357f35c4184e24280b256b6321949" + integrity sha512-XGJG6GNBXIEx/mN4eTRypN/EUmsd0VhVGQ1AG+WTgdvjHl0G8vHhVBHrd/5oI6RRYBRnedNymSYWW1HAdivtmg== dependencies: - "@typescript-eslint/typescript-estree" "1.10.2" + "@types/json-schema" "^7.0.3" + "@typescript-eslint/typescript-estree" "2.0.0" eslint-scope "^4.0.0" -"@typescript-eslint/parser@^1.10.2": - version "1.10.2" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-1.10.2.tgz#36cfe8c6bf1b6c1dd81da56f88c8588f4b1a852b" - integrity sha512-xWDWPfZfV0ENU17ermIUVEVSseBBJxKfqBcRCMZ8nAjJbfA5R7NWMZmFFHYnars5MjK4fPjhu4gwQv526oZIPQ== +"@typescript-eslint/parser@2.0.0": + version "2.0.0" + resolved "http://52.167.60.66:8081/repository/npm-all/@typescript-eslint/parser/-/parser-2.0.0.tgz#4273bb19d03489daf8372cdaccbc8042e098178f" + integrity sha512-ibyMBMr0383ZKserIsp67+WnNVoM402HKkxqXGlxEZsXtnGGurbnY90pBO3e0nBUM7chEEOcxUhgw9aPq7fEBA== dependencies: "@types/eslint-visitor-keys" "^1.0.0" - "@typescript-eslint/experimental-utils" "1.10.2" - "@typescript-eslint/typescript-estree" "1.10.2" + "@typescript-eslint/experimental-utils" "2.0.0" + "@typescript-eslint/typescript-estree" "2.0.0" eslint-visitor-keys "^1.0.0" -"@typescript-eslint/typescript-estree@1.10.2": - version "1.10.2" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-1.10.2.tgz#8403585dd74b6cfb6f78aa98b6958de158b5897b" - integrity sha512-Kutjz0i69qraOsWeI8ETqYJ07tRLvD9URmdrMoF10bG8y8ucLmPtSxROvVejWvlJUGl2et/plnMiKRDW+rhEhw== +"@typescript-eslint/typescript-estree@2.0.0": + version "2.0.0" + resolved "http://52.167.60.66:8081/repository/npm-all/@typescript-eslint/typescript-estree/-/typescript-estree-2.0.0.tgz#c9f6c0efd1b11475540d6a55dc973cc5b9a67e77" + integrity sha512-NXbmzA3vWrSgavymlzMWNecgNOuiMMp62MO3kI7awZRLRcsA1QrYWo6q08m++uuAGVbXH/prZi2y1AWuhSu63w== dependencies: lodash.unescape "4.0.1" - semver "5.5.0" + semver "^6.2.0" abbrev@1: version "1.1.1" @@ -508,17 +514,22 @@ acorn-jsx@^5.0.0: resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.0.1.tgz#32a064fd925429216a09b141102bfdd185fae40e" integrity sha512-HJ7CfNHrfJLlNTzIEUTj43LNWGkqpRLxm3YjAlcD0ACydk9XynzYsCBHxut+iqt+1aBXkx9UP/w/ZqMr13XIzg== -acorn@^6.0.2, acorn@^6.0.7: - version "6.1.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.1.1.tgz#7d25ae05bb8ad1f9b699108e1094ecd7884adc1f" - integrity sha512-jPTiwtOxaHNaAPg/dmrJ/beuzLRnXtB0kQPQ8JpotKJgTB6rX6c8mlf315941pyjBSaPg8NHXS9fhP4u17DpGA== +acorn@^7.0.0: + version "7.0.0" + resolved "http://52.167.60.66:8081/repository/npm-all/acorn/-/acorn-7.0.0.tgz#26b8d1cd9a9b700350b71c0905546f64d1284e7a" + integrity sha512-PaF/MduxijYYt7unVGRuds1vBC9bFxbNf+VWqhOClfdgy7RlVkQqt610ig1/yxTgsDIfW1cWDel5EBbOy3jdtQ== -ajv-keywords@^3.0.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.4.0.tgz#4b831e7b531415a7cc518cd404e73f6193c6349d" - integrity sha512-aUjdRFISbuFOl0EIZc+9e4FfZp0bDZgAdOOf30bJmw8VM9v84SHyVyxDfbWxpGYbdZD/9XoKxfHVNmxPkhwyGw== +ajv@^6.10.0: + version "6.10.2" + resolved "http://52.167.60.66:8081/repository/npm-all/ajv/-/ajv-6.10.2.tgz#d3cea04d6b017b2894ad69040fec8b623eb4bd52" + integrity sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw== + dependencies: + fast-deep-equal "^2.0.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" -ajv@^6.0.1, ajv@^6.5.0, ajv@^6.5.5, ajv@^6.9.1: +ajv@^6.5.5, ajv@^6.9.1: version "6.10.0" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.0.tgz#90d0d54439da587cd7e843bfb7045f50bd22bdf1" integrity sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg== @@ -540,15 +551,24 @@ ansi-align@^2.0.0: dependencies: string-width "^2.0.0" +ansi-align@^3.0.0: + version "3.0.0" + resolved "http://52.167.60.66:8081/repository/npm-all/ansi-align/-/ansi-align-3.0.0.tgz#b536b371cf687caaef236c18d3e21fe3797467cb" + integrity sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw== + dependencies: + string-width "^3.0.0" + ansi-colors@3.2.3: version "3.2.3" resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.3.tgz#57d35b8686e851e2cc04c403f1c00203976a1813" integrity sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw== -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-escapes@^4.2.1: + version "4.2.1" + resolved "http://52.167.60.66:8081/repository/npm-all/ansi-escapes/-/ansi-escapes-4.2.1.tgz#4dccdb846c3eee10f6d64dea66273eab90c37228" + integrity sha512-Cg3ymMAdN10wOk/VYfLV7KCQyv7EDirJ64500sU7n9UlmioEtDuU5Gd+hj73hXSU/ex7tHJSssmyftDdkMLO8Q== + dependencies: + type-fest "^0.5.2" ansi-regex@^2.0.0: version "2.1.1" @@ -565,11 +585,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-styles@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" - integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= - ansi-styles@^3.2.0, ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" @@ -695,15 +710,6 @@ aws4@^1.8.0: resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f" integrity sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ== -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-runtime@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" @@ -803,6 +809,11 @@ bluebird@^3.5.4: resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.5.tgz#a8d0afd73251effbbd5fe384a77d73003c17a71f" integrity sha512-5am6HnnfN+urzt4yfg7IgTbotDjIT/u8AJpEt0sIU9FtXfVeezXAPKswrG+xKUCOYAINpSdgZVDU6QFh+cuH3w== +bn.js@5.0.0: + version "5.0.0" + resolved "http://52.167.60.66:8081/repository/npm-all/bn.js/-/bn.js-5.0.0.tgz#5c3d398021b3ddb548c1296a16f857e908f35c70" + integrity sha512-bVwDX8AF+72fIUNuARelKAlQUNtPOfG2fRxorbVvFk4zpHbqLrPdOGfVg5vrKwVzLLePqPBiATaOZNELQzmS0A== + bn.js@^4.11.8, bn.js@^4.4.0: version "4.11.8" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" @@ -826,6 +837,20 @@ boxen@^1.2.1: term-size "^1.2.0" widest-line "^2.0.0" +boxen@^3.2.0: + version "3.2.0" + resolved "http://52.167.60.66:8081/repository/npm-all/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" @@ -909,18 +934,6 @@ cache-base@^1.0.1: union-value "^1.0.0" unset-value "^1.0.0" -caller-path@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f" - integrity sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8= - dependencies: - callsites "^0.2.0" - -callsites@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca" - integrity sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo= - callsites@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" @@ -978,17 +991,6 @@ chai@4.2.0: pathval "^1.1.0" type-detect "^4.0.5" -chalk@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" - integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= - dependencies: - ansi-styles "^2.2.1" - escape-string-regexp "^1.0.2" - has-ansi "^2.0.0" - strip-ansi "^3.0.0" - supports-color "^2.0.0" - chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" @@ -998,11 +1000,6 @@ chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.4.2: escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chardet@^0.4.0: - version "0.4.2" - resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.4.2.tgz#b5473b33dc97c424e5d98dc87d55d4d8a29c8bf2" - integrity sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I= - chardet@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" @@ -1042,6 +1039,11 @@ ci-info@^1.5.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 "http://52.167.60.66:8081/repository/npm-all/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" + integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== + cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" @@ -1050,11 +1052,6 @@ cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: inherits "^2.0.1" safe-buffer "^5.0.1" -circular-json@^0.3.1: - version "0.3.3" - resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.3.tgz#815c99ea84f6809529d2f45791bdf82711352d66" - integrity sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A== - class-utils@^0.3.5: version "0.3.6" resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" @@ -1070,12 +1067,17 @@ cli-boxes@^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= +cli-boxes@^2.2.0: + version "2.2.0" + resolved "http://52.167.60.66:8081/repository/npm-all/cli-boxes/-/cli-boxes-2.2.0.tgz#538ecae8f9c6ca508e3c3c95b453fe93cb4c168d" + integrity sha512-gpaBrMAizVEANOpfZp/EEUixTXDyGt7DFzdK5hU+UbWt/J0lB0w20ncZj59Z9a93xHb9u12zF5BS6i9RKbtg4w== + +cli-cursor@^3.1.0: + version "3.1.0" + resolved "http://52.167.60.66:8081/repository/npm-all/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" + integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== dependencies: - restore-cursor "^2.0.0" + restore-cursor "^3.1.0" cli-width@^2.0.0: version "2.2.0" @@ -1355,14 +1357,14 @@ define-property@^2.0.2: is-descriptor "^1.0.2" isobject "^3.0.1" -deglob@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/deglob/-/deglob-2.1.1.tgz#d268e168727799862e8eac07042e165957c1f3be" - integrity sha512-2kjwuGGonL7gWE1XU4Fv79+vVzpoQCl0V+boMwWtOQJV2AGDabCwez++nB1Nli/8BabAfZQ/UuHPlp6AymKdWw== +deglob@^4.0.0: + version "4.0.0" + resolved "http://52.167.60.66:8081/repository/npm-all/deglob/-/deglob-4.0.0.tgz#26df218423dceb0d9001583c0b89b51efbb20059" + integrity sha512-nrUWPTcQ4ap7KWCSeWNDXUgIe4A3nSbsp9cmWrxbKOOxUxLpAVzU1aeatYZfjE+lVHO1lUjXpBmoxOgPYbV5lg== dependencies: find-root "^1.0.0" glob "^7.0.5" - ignore "^3.0.9" + ignore "^5.0.0" pkg-config "^1.1.0" run-parallel "^1.1.2" uniq "^1.0.1" @@ -1461,6 +1463,11 @@ 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 "http://52.167.60.66:8081/repository/npm-all/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + encoding@^0.1.11: version "0.1.12" resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb" @@ -1544,7 +1551,7 @@ es6-weak-map@^2.0.2: es6-iterator "^2.0.1" es6-symbol "^3.1.1" -escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: +escape-string-regexp@1.0.5, 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= @@ -1554,24 +1561,24 @@ escape-string-regexp@^2.0.0: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== -eslint-config-prettier@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-5.0.0.tgz#f7a94b2b8ae7cbf25842c36fa96c6d32cd0a697c" - integrity sha512-c17Aqiz5e8LEqoc/QPmYnaxQFAHTx2KlCZBPxXXjEMmNchOLnV/7j0HoPZuC+rL/tDC9bazUYOKJW9bOhftI/w== +eslint-config-prettier@6.1.0: + version "6.1.0" + resolved "http://52.167.60.66:8081/repository/npm-all/eslint-config-prettier/-/eslint-config-prettier-6.1.0.tgz#e6f678ba367fbd1273998d5510f76f004e9dce7b" + integrity sha512-k9fny9sPjIBQ2ftFTesJV21Rg4R/7a7t7LCtZVrYQiHEp8Nnuk3EGaDmsKSAnsPj0BYcgB2zxzHa2NTkIxcOLg== dependencies: get-stdin "^6.0.0" -eslint-config-standard-jsx@6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/eslint-config-standard-jsx/-/eslint-config-standard-jsx-6.0.2.tgz#90c9aa16ac2c4f8970c13fc7efc608bacd02da70" - integrity sha512-D+YWAoXw+2GIdbMBRAzWwr1ZtvnSf4n4yL0gKGg7ShUOGXkSOLerI17K4F6LdQMJPNMoWYqepzQD/fKY+tXNSg== +eslint-config-standard-jsx@~8.0.0: + version "8.0.0" + resolved "http://52.167.60.66:8081/repository/npm-all/eslint-config-standard-jsx/-/eslint-config-standard-jsx-8.0.0.tgz#62607f2a7c0c47aed46d3a37ad7ebc73b6f7e869" + integrity sha512-Abs/WP+638KfkHI1J961yAztpMhYFvEMTqD4GMUZObAO9yOmLaQZlJY6xke1ty1+zhY4G58AuvHo3ht6avAEVQ== -eslint-config-standard@12.0.0, eslint-config-standard@^12.0.0: - version "12.0.0" - resolved "https://registry.yarnpkg.com/eslint-config-standard/-/eslint-config-standard-12.0.0.tgz#638b4c65db0bd5a41319f96bba1f15ddad2107d9" - integrity sha512-COUz8FnXhqFitYj4DTqHzidjIL/t4mumGZto5c7DrBpvWoie+Sn3P4sLEzUGeYhRElWuFEf8K1S1EfvD1vixCQ== +eslint-config-standard@14.0.0, eslint-config-standard@~14.0.0: + version "14.0.0" + resolved "http://52.167.60.66:8081/repository/npm-all/eslint-config-standard/-/eslint-config-standard-14.0.0.tgz#1de7bf5af37542dc6eef879ab7eb5e5e0f830747" + integrity sha512-bV6e2LFvJEetrLjVAy4KWPOUsIhPWr040c649MigTPR6yUtaGuOt6CEAyNeez2lRiC+2+vjGWa02byjs25EB3A== -eslint-import-resolver-node@^0.3.1, eslint-import-resolver-node@^0.3.2: +eslint-import-resolver-node@^0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz#58f15fb839b8d0576ca980413476aab2472db66a" integrity sha512-sfmTqJfPSizWu4aymbPr4Iidp5yKm8yDkHp+Ir3YiTHiiDfxh69mOUsmiqW6RZ9zRXFaF64GtYmN7e+8GHBv6Q== @@ -1579,7 +1586,7 @@ eslint-import-resolver-node@^0.3.1, eslint-import-resolver-node@^0.3.2: debug "^2.6.9" resolve "^1.5.0" -eslint-module-utils@^2.2.0, eslint-module-utils@^2.4.0: +eslint-module-utils@^2.4.0: version "2.4.0" resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.4.0.tgz#8b93499e9b00eab80ccb6614e69f03678e84e09a" integrity sha512-14tltLm38Eu3zS+mt0KvILC3q8jyIAH518MlG+HO0p+yK885Lb1UHTY/UgR91eOyGdmxAPb+OLoW4znqIT6Ndw== @@ -1587,7 +1594,7 @@ eslint-module-utils@^2.2.0, eslint-module-utils@^2.4.0: debug "^2.6.8" pkg-dir "^2.0.0" -eslint-plugin-es@^1.3.1, eslint-plugin-es@^1.4.0: +eslint-plugin-es@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/eslint-plugin-es/-/eslint-plugin-es-1.4.0.tgz#475f65bb20c993fc10e8c8fe77d1d60068072da6" integrity sha512-XfFmgFdIUDgvaRAlaXUkxrRg5JSADoRC8IkKLc/cISeR3yHVMefFHQZpcyXXEUUPHfy5DwviBcrfqlyqEwlQVw== @@ -1595,7 +1602,7 @@ eslint-plugin-es@^1.3.1, eslint-plugin-es@^1.4.0: eslint-utils "^1.3.0" regexpp "^2.0.1" -eslint-plugin-import@2.18.2: +eslint-plugin-import@2.18.2, eslint-plugin-import@~2.18.0: version "2.18.2" resolved "http://52.167.60.66:8081/repository/npm-all/eslint-plugin-import/-/eslint-plugin-import-2.18.2.tgz#02f1180b90b077b33d447a17a2326ceb400aceb6" integrity sha512-5ohpsHAiUBRNaBWAF08izwUGlbrJoJJ+W9/TBwsGoR1MnlgfwMIKrFeSjWbt6moabiXW9xNvtFz+97KHRfI4HQ== @@ -1612,23 +1619,7 @@ eslint-plugin-import@2.18.2: read-pkg-up "^2.0.0" resolve "^1.11.0" -eslint-plugin-import@~2.14.0: - version "2.14.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.14.0.tgz#6b17626d2e3e6ad52cfce8807a845d15e22111a8" - integrity sha512-FpuRtniD/AY6sXByma2Wr0TXvXJ4nA/2/04VPlfpmUDPOpOY264x+ILiwnrk/k4RINgDAyFZByxqPUbSQ5YE7g== - dependencies: - contains-path "^0.1.0" - debug "^2.6.8" - doctrine "1.5.0" - eslint-import-resolver-node "^0.3.1" - eslint-module-utils "^2.2.0" - has "^1.0.1" - lodash "^4.17.4" - minimatch "^3.0.3" - read-pkg-up "^2.0.0" - resolve "^1.6.0" - -eslint-plugin-node@^9.1.0: +eslint-plugin-node@^9.1.0, eslint-plugin-node@~9.1.0: version "9.1.0" resolved "https://registry.yarnpkg.com/eslint-plugin-node/-/eslint-plugin-node-9.1.0.tgz#f2fd88509a31ec69db6e9606d76dabc5adc1b91a" integrity sha512-ZwQYGm6EoV2cfLpE1wxJWsfnKUIXfM/KM09/TlorkukgCAwmkgajEJnPCmyzoFPQQkmvo5DrW/nyKutNIw36Mw== @@ -1640,29 +1631,12 @@ eslint-plugin-node@^9.1.0: resolve "^1.10.1" semver "^6.1.0" -eslint-plugin-node@~7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-node/-/eslint-plugin-node-7.0.1.tgz#a6e054e50199b2edd85518b89b4e7b323c9f36db" - integrity sha512-lfVw3TEqThwq0j2Ba/Ckn2ABdwmL5dkOgAux1rvOk6CO7A6yGyPI2+zIxN6FyNkp1X1X/BSvKOceD6mBWSj4Yw== - dependencies: - eslint-plugin-es "^1.3.1" - eslint-utils "^1.3.1" - ignore "^4.0.2" - minimatch "^3.0.4" - resolve "^1.8.1" - semver "^5.5.0" - -eslint-plugin-promise@4.2.1: +eslint-plugin-promise@4.2.1, eslint-plugin-promise@~4.2.1: version "4.2.1" resolved "http://52.167.60.66:8081/repository/npm-all/eslint-plugin-promise/-/eslint-plugin-promise-4.2.1.tgz#845fd8b2260ad8f82564c1222fce44ad71d9418a" integrity sha512-VoM09vT7bfA7D+upt+FjeBO5eHIJQBUWki1aPvB+vbNiHS3+oGIJGIeyBtKQTME6UPXXy3vV07OL1tHd3ANuDw== -eslint-plugin-promise@~4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-4.0.1.tgz#2d074b653f35a23d1ba89d8e976a985117d1c6a2" - integrity sha512-Si16O0+Hqz1gDHsys6RtFRrW7cCTB6P7p3OJmKp3Y3dxpQE2qwOA7d3xnV+0mBmrPoi0RBnxlCKvqu70te6wjg== - -eslint-plugin-react@7.14.3: +eslint-plugin-react@7.14.3, eslint-plugin-react@~7.14.2: version "7.14.3" resolved "http://52.167.60.66:8081/repository/npm-all/eslint-plugin-react/-/eslint-plugin-react-7.14.3.tgz#911030dd7e98ba49e1b2208599571846a66bdf13" integrity sha512-EzdyyBWC4Uz2hPYBiEJrKCUi2Fn+BJ9B/pJQcjw5X+x/H2Nm59S4MJIvL4O5NEE0+WbnQwEBxWY03oUk+Bc3FA== @@ -1677,17 +1651,6 @@ eslint-plugin-react@7.14.3: prop-types "^15.7.2" resolve "^1.10.1" -eslint-plugin-react@~7.11.1: - version "7.11.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.11.1.tgz#c01a7af6f17519457d6116aa94fc6d2ccad5443c" - integrity sha512-cVVyMadRyW7qsIUh3FHp3u6QHNhOgVrLQYdQEB1bPWBsgbNCHdFAeNMquBMCcZJu59eNthX053L70l7gRt4SCw== - dependencies: - array-includes "^3.0.3" - doctrine "^2.1.0" - has "^1.0.3" - jsx-ast-utils "^2.0.1" - prop-types "^15.6.2" - eslint-plugin-standard@4.0.1: version "4.0.1" resolved "http://52.167.60.66:8081/repository/npm-all/eslint-plugin-standard/-/eslint-plugin-standard-4.0.1.tgz#ff0519f7ffaff114f76d1bd7c3996eef0f6e20b4" @@ -1698,7 +1661,7 @@ eslint-plugin-standard@~4.0.0: resolved "https://registry.yarnpkg.com/eslint-plugin-standard/-/eslint-plugin-standard-4.0.0.tgz#f845b45109c99cd90e77796940a344546c8f6b5c" integrity sha512-OwxJkR6TQiYMmt1EsNRMe5qG3GsbjlcOhbGUBY4LtavF9DsLaTcoR+j2Tdjqi23oUwKNUqX7qcn5fPStafMdlA== -eslint-scope@^4.0.0, eslint-scope@^4.0.3: +eslint-scope@^4.0.0: version "4.0.3" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== @@ -1706,119 +1669,130 @@ eslint-scope@^4.0.0, eslint-scope@^4.0.3: esrecurse "^4.1.0" estraverse "^4.1.1" +eslint-scope@^5.0.0: + version "5.0.0" + resolved "http://52.167.60.66:8081/repository/npm-all/eslint-scope/-/eslint-scope-5.0.0.tgz#e87c8887c73e8d1ec84f1ca591645c358bfc8fb9" + integrity sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw== + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + eslint-utils@^1.3.0, eslint-utils@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.3.1.tgz#9a851ba89ee7c460346f97cf8939c7298827e512" integrity sha512-Z7YjnIldX+2XMcjr7ZkgEsOj/bREONV60qYeB/bjMAqqqZ4zxKyWX+BOUkdmRmA9riiIPVvo5x86m5elviOk0Q== +eslint-utils@^1.4.0: + version "1.4.2" + resolved "http://52.167.60.66:8081/repository/npm-all/eslint-utils/-/eslint-utils-1.4.2.tgz#166a5180ef6ab7eb462f162fd0e6f2463d7309ab" + integrity sha512-eAZS2sEUMlIeCjBeubdj45dmBHQwPHWyBcT1VSYB7o9x9WRRqKxyUoiXlRjyAwzN7YEzHJlYg0NmzDRWx6GP4Q== + dependencies: + eslint-visitor-keys "^1.0.0" + eslint-visitor-keys@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#3f3180fb2e291017716acb4c9d6d5b5c34a6a81d" integrity sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ== -eslint@^5.16.0: - version "5.16.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-5.16.0.tgz#a1e3ac1aae4a3fbd8296fcf8f7ab7314cbb6abea" - integrity sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg== +eslint-visitor-keys@^1.1.0: + version "1.1.0" + resolved "http://52.167.60.66:8081/repository/npm-all/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz#e2a82cea84ff246ad6fb57f9bde5b46621459ec2" + integrity sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A== + +eslint@6.2.0: + version "6.2.0" + resolved "http://52.167.60.66:8081/repository/npm-all/eslint/-/eslint-6.2.0.tgz#4c42c20e3fc03f28db25f34ccba621a9a47e8b56" + integrity sha512-sS0SZwm5UAoI83F+cgdomz0cBNPs+AnRvEboNYeWvrZ8UcDHCu/5muocwoDL2TkHq9skkP0GvZjmwI8HG7S3sw== dependencies: "@babel/code-frame" "^7.0.0" - ajv "^6.9.1" + ajv "^6.10.0" chalk "^2.1.0" cross-spawn "^6.0.5" debug "^4.0.1" doctrine "^3.0.0" - eslint-scope "^4.0.3" - eslint-utils "^1.3.1" - eslint-visitor-keys "^1.0.0" - espree "^5.0.1" + eslint-scope "^5.0.0" + eslint-utils "^1.4.0" + eslint-visitor-keys "^1.1.0" + espree "^6.1.0" esquery "^1.0.1" esutils "^2.0.2" file-entry-cache "^5.0.1" functional-red-black-tree "^1.0.1" - glob "^7.1.2" + glob-parent "^5.0.0" globals "^11.7.0" ignore "^4.0.6" import-fresh "^3.0.0" imurmurhash "^0.1.4" - inquirer "^6.2.2" - js-yaml "^3.13.0" + inquirer "^6.4.1" + is-glob "^4.0.0" + js-yaml "^3.13.1" json-stable-stringify-without-jsonify "^1.0.1" levn "^0.3.0" - lodash "^4.17.11" + lodash "^4.17.14" minimatch "^3.0.4" mkdirp "^0.5.1" natural-compare "^1.4.0" optionator "^0.8.2" - path-is-inside "^1.0.2" progress "^2.0.0" regexpp "^2.0.1" - semver "^5.5.1" - strip-ansi "^4.0.0" - strip-json-comments "^2.0.1" + semver "^6.1.2" + strip-ansi "^5.2.0" + strip-json-comments "^3.0.1" table "^5.2.3" text-table "^0.2.0" + v8-compile-cache "^2.0.3" -eslint@~5.4.0: - version "5.4.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-5.4.0.tgz#d068ec03006bb9e06b429dc85f7e46c1b69fac62" - integrity sha512-UIpL91XGex3qtL6qwyCQJar2j3osKxK9e3ano3OcGEIRM4oWIpCkDg9x95AXEC2wMs7PnxzOkPZ2gq+tsMS9yg== +eslint@~6.1.0: + version "6.1.0" + resolved "http://52.167.60.66:8081/repository/npm-all/eslint/-/eslint-6.1.0.tgz#06438a4a278b1d84fb107d24eaaa35471986e646" + integrity sha512-QhrbdRD7ofuV09IuE2ySWBz0FyXCq0rriLTZXZqaWSI79CVtHVRdkFuFTViiqzZhkCgfOh9USpriuGN2gIpZDQ== dependencies: - ajv "^6.5.0" - babel-code-frame "^6.26.0" + "@babel/code-frame" "^7.0.0" + ajv "^6.10.0" chalk "^2.1.0" cross-spawn "^6.0.5" - debug "^3.1.0" - doctrine "^2.1.0" - eslint-scope "^4.0.0" + debug "^4.0.1" + doctrine "^3.0.0" + eslint-scope "^5.0.0" eslint-utils "^1.3.1" eslint-visitor-keys "^1.0.0" - espree "^4.0.0" + espree "^6.0.0" esquery "^1.0.1" esutils "^2.0.2" - file-entry-cache "^2.0.0" + file-entry-cache "^5.0.1" functional-red-black-tree "^1.0.1" - glob "^7.1.2" + glob-parent "^5.0.0" globals "^11.7.0" - ignore "^4.0.2" + ignore "^4.0.6" + import-fresh "^3.0.0" imurmurhash "^0.1.4" - inquirer "^5.2.0" - is-resolvable "^1.1.0" - js-yaml "^3.11.0" + inquirer "^6.4.1" + is-glob "^4.0.0" + js-yaml "^3.13.1" json-stable-stringify-without-jsonify "^1.0.1" levn "^0.3.0" - lodash "^4.17.5" + lodash "^4.17.14" minimatch "^3.0.4" mkdirp "^0.5.1" natural-compare "^1.4.0" optionator "^0.8.2" - path-is-inside "^1.0.2" - pluralize "^7.0.0" progress "^2.0.0" - regexpp "^2.0.0" - require-uncached "^1.0.3" - semver "^5.5.0" - strip-ansi "^4.0.0" - strip-json-comments "^2.0.1" - table "^4.0.3" + regexpp "^2.0.1" + semver "^6.1.2" + strip-ansi "^5.2.0" + strip-json-comments "^3.0.1" + table "^5.2.3" text-table "^0.2.0" + v8-compile-cache "^2.0.3" -espree@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/espree/-/espree-4.1.0.tgz#728d5451e0fd156c04384a7ad89ed51ff54eb25f" - integrity sha512-I5BycZW6FCVIub93TeVY1s7vjhP9CY6cXCznIRfiig7nRviKZYdRnj/sHEWC6A7WE9RDWOFq9+7OsWSYz8qv2w== +espree@^6.0.0, espree@^6.1.0: + version "6.1.0" + resolved "http://52.167.60.66:8081/repository/npm-all/espree/-/espree-6.1.0.tgz#a1e8aa65bf29a331d70351ed814a80e7534e0884" + integrity sha512-boA7CHRLlVWUSg3iL5Kmlt/xT3Q+sXnKoRYYzj1YeM10A76TEJBbotV5pKbnK42hEUIr121zTv+QLRM5LsCPXQ== dependencies: - acorn "^6.0.2" + acorn "^7.0.0" acorn-jsx "^5.0.0" - eslint-visitor-keys "^1.0.0" - -espree@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-5.0.1.tgz#5d6526fa4fc7f0788a5cf75b15f30323e2f81f7a" - integrity sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A== - dependencies: - acorn "^6.0.7" - acorn-jsx "^5.0.0" - eslint-visitor-keys "^1.0.0" + eslint-visitor-keys "^1.1.0" esprima@^4.0.0: version "4.0.1" @@ -1929,15 +1903,6 @@ extend@^3.0.0, extend@~3.0.2: resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== -external-editor@^2.1.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.2.0.tgz#045511cfd8d133f3846673d1047c154e214ad3d5" - integrity sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A== - dependencies: - chardet "^0.4.0" - iconv-lite "^0.4.17" - tmp "^0.0.33" - external-editor@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.0.3.tgz#5866db29a97826dbe4bf3afd24070ead9ea43a27" @@ -1986,21 +1951,13 @@ fast-levenshtein@~2.0.4: resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= -figures@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" - integrity sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI= +figures@^3.0.0: + version "3.0.0" + resolved "http://52.167.60.66:8081/repository/npm-all/figures/-/figures-3.0.0.tgz#756275c964646163cc6f9197c7a0295dbfd04de9" + integrity sha512-HKri+WoWoUgr83pehn/SIgLOMZ9nAWC6dcGj26RY2R4F50u4+RTUz0RCrUlOV3nKRAICW1UGzyb+kcX2qK1S/g== dependencies: escape-string-regexp "^1.0.5" -file-entry-cache@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-2.0.0.tgz#c392990c3e684783d838b8c84a45d8a048458361" - integrity sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E= - dependencies: - flat-cache "^1.2.1" - object-assign "^4.0.1" - file-entry-cache@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c" @@ -2042,16 +1999,6 @@ find-up@^2.0.0, find-up@^2.1.0: dependencies: locate-path "^2.0.0" -flat-cache@^1.2.1: - version "1.3.4" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.3.4.tgz#2c2ef77525cc2929007dfffa1dd314aa9c9dee6f" - integrity sha512-VwyB3Lkgacfik2vhqR4uv2rvebqmDvFu4jlN/C1RzWoJEo8I7z4Q404oiqYCkq41mni8EzQnm95emU9seckwtg== - dependencies: - circular-json "^0.3.1" - graceful-fs "^4.1.2" - rimraf "~2.6.2" - write "^0.2.1" - flat-cache@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" @@ -2134,6 +2081,17 @@ functional-red-black-tree@^1.0.1: resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= +funding@^1.0.0: + version "1.0.3" + resolved "http://52.167.60.66:8081/repository/npm-all/funding/-/funding-1.0.3.tgz#a4dcc4bbd4f723dfe6c5b25ce47fec1bf305f5e6" + integrity sha512-NYD7mh7cXbxFmXxk2BruMA6peWAQFOXuBpNgRjhiTPr8AB1DX0/vNUXHRiuqpYNGq0ow3UDDIrTR6it/mlauyg== + dependencies: + boxen "^3.2.0" + chalk "^2.4.2" + ci-info "^2.0.0" + term-size "^2.1.0" + word-wrap "^1.2.3" + gauge@~2.7.3: version "2.7.4" resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" @@ -2178,6 +2136,11 @@ get-stdin@^6.0.0: resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-6.0.0.tgz#9e09bf712b360ab9225e812048f71fde9c89657b" integrity sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g== +get-stdin@^7.0.0: + version "7.0.0" + resolved "http://52.167.60.66:8081/repository/npm-all/get-stdin/-/get-stdin-7.0.0.tgz#8d5de98f15171a125c5e516643c7a6d0ea8a96f6" + integrity sha512-zRKcywvrXlXsA0v0i9Io4KDRaAw7+a1ZpjRwl9Wox8PFlVCCHra7E9c4kqXCoCM9nR5tBkaTTZRBoCm60bFqTQ== + get-stream@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" @@ -2210,7 +2173,14 @@ glob-parent@^3.1.0: is-glob "^3.1.0" path-dirname "^1.0.0" -glob@7.1.3, glob@^7.0.5, glob@^7.1.2, glob@^7.1.3: +glob-parent@^5.0.0: + version "5.0.0" + resolved "http://52.167.60.66:8081/repository/npm-all/glob-parent/-/glob-parent-5.0.0.tgz#1dc99f0f39b006d3e92c2c284068382f0c20e954" + integrity sha512-Z2RwiujPRGluePM6j699ktJYxmPpJKCfpGA13jz2hmFZC7gKetzrWvg5KN3+OsIFmydGyZ1AVwERCq1w/ZZwRg== + dependencies: + is-glob "^4.0.1" + +glob@7.1.3, glob@^7.0.5, glob@^7.1.3: version "7.1.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== @@ -2256,6 +2226,11 @@ graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.9: resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00" integrity sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA== +graceful-fs@^4.1.15: + version "4.2.2" + resolved "http://52.167.60.66:8081/repository/npm-all/graceful-fs/-/graceful-fs-4.2.2.tgz#6f0952605d0140c1cfdb138ed005775b92d67b02" + integrity sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q== + growl@1.10.5: version "1.10.5" resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" @@ -2274,13 +2249,6 @@ har-validator@~5.1.0: 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" - integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= - dependencies: - ansi-regex "^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" @@ -2378,7 +2346,7 @@ http-signature@~1.2.0: jsprim "^1.2.2" sshpk "^1.7.0" -iconv-lite@^0.4.17, iconv-lite@^0.4.24, iconv-lite@^0.4.4, iconv-lite@~0.4.13: +iconv-lite@^0.4.24, iconv-lite@^0.4.4, iconv-lite@~0.4.13: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== @@ -2402,16 +2370,16 @@ ignore-walk@^3.0.1: dependencies: minimatch "^3.0.4" -ignore@^3.0.9: - version "3.3.10" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" - integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug== - -ignore@^4.0.2, ignore@^4.0.6: +ignore@^4.0.6: version "4.0.6" resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== +ignore@^5.0.0: + version "5.1.4" + resolved "http://52.167.60.66:8081/repository/npm-all/ignore/-/ignore-5.1.4.tgz#84b7b3dbe64552b6ef0eca99f6743dbec6d97adf" + integrity sha512-MzbUSahkTW1u7JpKKjY7LCARd1fU5W2rLdxlM4kdkayuCwZImjkpluF9CM1aLewYJguPDqewLam18Y6AU69A8A== + ignore@^5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.2.tgz#e28e584d43ad7e92f96995019cc43b9e1ac49558" @@ -2458,41 +2426,22 @@ ini@^1.3.4, ini@~1.3.0: resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== -inquirer@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-5.2.0.tgz#db350c2b73daca77ff1243962e9f22f099685726" - integrity sha512-E9BmnJbAKLPGonz0HeWHtbKf+EeSP93paWO3ZYoUpq/aowXvYGjjCSuashhXPpzbArIjBbji39THkxTz9ZeEUQ== +inquirer@^6.4.1: + version "6.5.1" + resolved "http://52.167.60.66:8081/repository/npm-all/inquirer/-/inquirer-6.5.1.tgz#8bfb7a5ac02dac6ff641ac4c5ff17da112fcdb42" + integrity sha512-uxNHBeQhRXIoHWTSNYUFhQVrHYFThIt6IVo2fFmSe8aBwdR3/w6b58hJpiL/fMukFkvGzjg+hSxFtwvVmKZmXw== dependencies: - ansi-escapes "^3.0.0" - chalk "^2.0.0" - cli-cursor "^2.1.0" - cli-width "^2.0.0" - external-editor "^2.1.0" - figures "^2.0.0" - lodash "^4.3.0" - mute-stream "0.0.7" - run-async "^2.2.0" - rxjs "^5.5.2" - string-width "^2.1.0" - strip-ansi "^4.0.0" - through "^2.3.6" - -inquirer@^6.2.2: - version "6.3.1" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.3.1.tgz#7a413b5e7950811013a3db491c61d1f3b776e8e7" - integrity sha512-MmL624rfkFt4TG9y/Jvmt8vdmOo836U7Y0Hxr2aFk3RelZEGX4Igk0KabWrcaaZaTv9uzglOqWh1Vly+FAWAXA== - dependencies: - ansi-escapes "^3.2.0" + ansi-escapes "^4.2.1" chalk "^2.4.2" - cli-cursor "^2.1.0" + cli-cursor "^3.1.0" cli-width "^2.0.0" external-editor "^3.0.3" - figures "^2.0.0" - lodash "^4.17.11" - mute-stream "0.0.7" + figures "^3.0.0" + lodash "^4.17.15" + mute-stream "0.0.8" run-async "^2.2.0" rxjs "^6.4.0" - string-width "^2.1.0" + string-width "^4.1.0" strip-ansi "^5.1.0" through "^2.3.6" @@ -2625,6 +2574,11 @@ 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 "http://52.167.60.66:8081/repository/npm-all/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + is-glob@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" @@ -2632,7 +2586,7 @@ is-glob@^3.1.0: dependencies: is-extglob "^2.1.0" -is-glob@^4.0.0: +is-glob@^4.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== @@ -2702,11 +2656,6 @@ is-regex@^1.0.4: dependencies: has "^1.0.1" -is-resolvable@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" - integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg== - is-retry-allowed@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34" @@ -2789,12 +2738,7 @@ js-sha3@^0.8.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.11.0, js-yaml@^3.13.0: +js-yaml@3.13.1, 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== @@ -2874,7 +2818,7 @@ jsprim@^1.2.2: json-schema "0.2.3" verror "1.10.0" -jsx-ast-utils@^2.0.1, jsx-ast-utils@^2.1.0: +jsx-ast-utils@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-2.1.0.tgz#0ee4e2c971fb9601c67b5641b71be80faecf0b36" integrity sha512-yDGDG2DS4JcqhA6blsuYbtsT09xL8AoLuUR2Gb5exrw7UEM19sBcOTq+YBBhrNbl0PUC4R4LnFu+dHg2HKeVvA== @@ -2958,15 +2902,16 @@ load-json-file@^2.0.0: pify "^2.0.0" strip-bom "^3.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= +load-json-file@^5.2.0: + version "5.3.0" + resolved "http://52.167.60.66:8081/repository/npm-all/load-json-file/-/load-json-file-5.3.0.tgz#4d3c1e01fa1c03ea78a60ac7af932c9ce53403f3" + integrity sha512-cJGP40Jc/VXUsp8/OrnyKyTZ1y6v/dphm3bioS+RrKXjK2BB6wHUd6JptZEFDGgGahMT+InnZO5i1Ei9mpC8Bw== dependencies: - graceful-fs "^4.1.2" + graceful-fs "^4.1.15" parse-json "^4.0.0" - pify "^3.0.0" + pify "^4.0.1" strip-bom "^3.0.0" + type-fest "^0.3.0" localforage@^1.3.0: version "1.7.3" @@ -3001,12 +2946,12 @@ lodash@^3.10.1: resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6" integrity sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y= -lodash@^4.17.11, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.3.0: +lodash@^4.17.11: version "4.17.11" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg== -lodash@^4.17.14: +lodash@^4.17.14, lodash@^4.17.15: version "4.17.15" resolved "http://52.167.60.66:8081/repository/npm-all/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== @@ -3200,12 +3145,7 @@ mime@^1.4.1: 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== - -mimic-fn@^2.0.0: +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== @@ -3220,7 +3160,7 @@ minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= -minimatch@3.0.4, minimatch@^3.0.3, minimatch@^3.0.4: +minimatch@3.0.4, 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== @@ -3237,10 +3177,10 @@ minimist@^1.1.0, minimist@^1.1.1, minimist@^1.2.0: resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= -minimongo@^5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/minimongo/-/minimongo-5.3.0.tgz#95c965ab94d5851b71ebd67f5a8f4782cdb464f5" - integrity sha512-zJKN79bi9PpBnoJ+i92unfs4ZIoyKdhc+0Wy68RkVe4V7kdhUlHGJ7mDeVrQj57TjS7+jxlLV5Ni/m3W490AOg== +minimongo@6.0.0: + version "6.0.0" + resolved "http://52.167.60.66:8081/repository/npm-all/minimongo/-/minimongo-6.0.0.tgz#39af86a394646b87185ea15e91dc5801fbf8090c" + integrity sha512-fkjRdpYZxc/9nFhSOFi8v+TMXgr/psBWv8ywJlkepHOaV+TsIKT9L7OhjaKUuROvr43+XbcQ1bNDTqmqmiILmQ== dependencies: "@turf/boolean-crosses" "^6.0.1" "@turf/boolean-point-in-polygon" "^6.0.1" @@ -3327,10 +3267,10 @@ ms@2.1.1, ms@^2.1.1: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== -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 "http://52.167.60.66:8081/repository/npm-all/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" + integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== nan@^2.11.0, nan@^2.12.1: version "2.13.2" @@ -3519,7 +3459,7 @@ oauth-sign@~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.1.1: +object-assign@^4.1.0, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= @@ -3611,12 +3551,12 @@ once@^1.3.0, once@^1.3.1, once@^1.4.0: 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= +onetime@^5.1.0: + version "5.1.0" + resolved "http://52.167.60.66:8081/repository/npm-all/onetime/-/onetime-5.1.0.tgz#fff0f3c91617fe62bb50189636e99ac8a6df7be5" + integrity sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q== dependencies: - mimic-fn "^1.0.0" + mimic-fn "^2.1.0" optionator@^0.8.2: version "0.8.2" @@ -3762,7 +3702,7 @@ path-is-absolute@^1.0.0: 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, path-is-inside@^1.0.2: +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= @@ -3815,13 +3755,18 @@ pify@^3.0.0: resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= -pkg-conf@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/pkg-conf/-/pkg-conf-2.1.0.tgz#2126514ca6f2abfebd168596df18ba57867f0058" - integrity sha1-ISZRTKbyq/69FoWW3xi6V4Z/AFg= +pify@^4.0.1: + version "4.0.1" + resolved "http://52.167.60.66:8081/repository/npm-all/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" + integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== + +pkg-conf@^3.1.0: + version "3.1.0" + resolved "http://52.167.60.66:8081/repository/npm-all/pkg-conf/-/pkg-conf-3.1.0.tgz#d9f9c75ea1bae0e77938cde045b276dac7cc69ae" + integrity sha512-m0OTbR/5VPNPqO1ph6Fqbj7Hv6QU7gR/tQW40ZqrL1rjgCU85W6C1bJn0BItuJqnR98PWzw7Z8hHeChD1WrgdQ== dependencies: - find-up "^2.0.0" - load-json-file "^4.0.0" + find-up "^3.0.0" + load-json-file "^5.2.0" pkg-config@^1.1.0: version "1.1.1" @@ -3839,11 +3784,6 @@ pkg-dir@^2.0.0: dependencies: find-up "^2.1.0" -pluralize@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-7.0.0.tgz#298b89df8b93b0221dbf421ad2b1b1ea23fc6777" - integrity sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow== - 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" @@ -3869,7 +3809,7 @@ progress@^2.0.0: resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== -prop-types@^15.6.2, prop-types@^15.7.2: +prop-types@^15.7.2: version "15.7.2" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== @@ -4021,7 +3961,7 @@ regex-not@^1.0.0, regex-not@^1.0.2: extend-shallow "^3.0.2" safe-regex "^1.1.0" -regexpp@^2.0.0, regexpp@^2.0.1: +regexpp@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw== @@ -4097,14 +4037,6 @@ require-main-filename@^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-uncached@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3" - integrity sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM= - dependencies: - caller-path "^0.1.0" - resolve-from "^1.0.0" - requizzle@^0.2.3: version "0.2.3" resolved "http://52.167.60.66:8081/repository/npm-all/requizzle/-/requizzle-0.2.3.tgz#4675c90aacafb2c036bd39ba2daa4a1cb777fded" @@ -4112,11 +4044,6 @@ requizzle@^0.2.3: dependencies: lodash "^4.17.14" -resolve-from@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226" - integrity sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY= - resolve-from@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" @@ -4127,7 +4054,7 @@ resolve-url@^0.2.1: resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= -resolve@^1.10.0, resolve@^1.5.0, resolve@^1.6.0, resolve@^1.8.1: +resolve@^1.10.0, resolve@^1.5.0: version "1.10.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.10.0.tgz#3bdaaeaf45cc07f375656dfd2e54ed0810b101ba" integrity sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg== @@ -4141,12 +4068,12 @@ resolve@^1.10.1, resolve@^1.11.0: 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= +restore-cursor@^3.1.0: + version "3.1.0" + resolved "http://52.167.60.66:8081/repository/npm-all/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" + integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== dependencies: - onetime "^2.0.0" + onetime "^5.1.0" signal-exit "^3.0.2" ret@~0.1.10: @@ -4154,7 +4081,7 @@ ret@~0.1.10: resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== -rimraf@2.6.3, rimraf@^2.6.1, rimraf@~2.6.2: +rimraf@2.6.3, rimraf@^2.6.1: version "2.6.3" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== @@ -4181,13 +4108,6 @@ run-parallel@^1.1.2: resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.1.9.tgz#c9dd3a7cf9f4b2c4b6244e173a6ed866e61dd679" integrity sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q== -rxjs@^5.5.2: - 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, rxjs@^6.5.2: version "6.5.2" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.2.tgz#2e35ce815cd46d84d02a209fb4e5921e051dbec7" @@ -4238,21 +4158,21 @@ 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@^5.7.0: +"semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@^5.5.0, semver@^5.7.0: version "5.7.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b" integrity sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA== -semver@5.5.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab" - integrity sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA== - semver@^6.1.0: version "6.1.1" resolved "https://registry.yarnpkg.com/semver/-/semver-6.1.1.tgz#53f53da9b30b2103cd4f15eab3a18ecbcb210c9b" integrity sha512-rWYq2e5iYW+fFe/oPPtYJxYgjBm8sC4rmoGdUOgBB7VnwKt6HrL793l2voH1UlsyYZpJ4g0wfjnTEO1s1NP2eQ== +semver@^6.1.2, semver@^6.2.0: + version "6.3.0" + resolved "http://52.167.60.66:8081/repository/npm-all/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + 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" @@ -4303,13 +4223,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= -slice-ansi@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-1.0.0.tgz#044f1a49d8842ff307aad6b505ed178bd950134d" - integrity sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg== - dependencies: - is-fullwidth-code-point "^2.0.0" - slice-ansi@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" @@ -4441,15 +4354,15 @@ sshpk@^1.7.0: safer-buffer "^2.0.2" tweetnacl "~0.14.0" -standard-engine@~9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/standard-engine/-/standard-engine-9.0.0.tgz#d3a3d74c4c1b91f51a1e66362465261ca7610316" - integrity sha512-ZfNfCWZ2Xq67VNvKMPiVMKHnMdvxYzvZkf1AH8/cw2NLDBm5LRsxMqvEJpsjLI/dUosZ3Z1d6JlHDp5rAvvk2w== +standard-engine@^12.0.0: + version "12.0.0" + resolved "http://52.167.60.66:8081/repository/npm-all/standard-engine/-/standard-engine-12.0.0.tgz#1643dceba96ca9c04c535a1fb28d79bfb21b3572" + integrity sha512-gJIIRb0LpL7AHyGbN9+hJ4UJns37lxmNTnMGRLC8CFrzQ+oB/K60IQjKNgPBCB2VP60Ypm6f8DFXvhVWdBOO+g== dependencies: - deglob "^2.1.0" - get-stdin "^6.0.0" + deglob "^4.0.0" + get-stdin "^7.0.0" minimist "^1.1.0" - pkg-conf "^2.0.0" + pkg-conf "^3.1.0" standard-json@^1.0.0: version "1.0.3" @@ -4458,20 +4371,21 @@ standard-json@^1.0.0: dependencies: concat-stream "^1.5.0" -standard@12.0.1: - version "12.0.1" - resolved "https://registry.yarnpkg.com/standard/-/standard-12.0.1.tgz#0fc5a8aa6c34c546c5562aae644242b24dae2e61" - integrity sha512-UqdHjh87OG2gUrNCSM4QRLF5n9h3TFPwrCNyVlkqu31Hej0L/rc8hzKqVvkb2W3x0WMq7PzZdkLfEcBhVOR6lg== - dependencies: - eslint "~5.4.0" - eslint-config-standard "12.0.0" - eslint-config-standard-jsx "6.0.2" - eslint-plugin-import "~2.14.0" - eslint-plugin-node "~7.0.1" - eslint-plugin-promise "~4.0.0" - eslint-plugin-react "~7.11.1" +standard@14.0.0: + version "14.0.0" + resolved "http://52.167.60.66:8081/repository/npm-all/standard/-/standard-14.0.0.tgz#72c1bedb9d24e04ab96adde98b44a512dc109d0f" + integrity sha512-FNKr9wkXQYvqO1txmileQm+r3+NBJp/H+yF1x9Ak3kZgLh3xrmc5HDyiKWizMEekbffBC7yq+PuB8+GMuRp8Vg== + dependencies: + eslint "~6.1.0" + eslint-config-standard "~14.0.0" + eslint-config-standard-jsx "~8.0.0" + eslint-plugin-import "~2.18.0" + eslint-plugin-node "~9.1.0" + eslint-plugin-promise "~4.2.1" + eslint-plugin-react "~7.14.2" eslint-plugin-standard "~4.0.0" - standard-engine "~9.0.0" + funding "^1.0.0" + standard-engine "^12.0.0" static-extend@^0.1.1: version "0.1.2" @@ -4490,7 +4404,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@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== @@ -4507,6 +4421,15 @@ string-width@^3.0.0, string-width@^3.1.0: is-fullwidth-code-point "^2.0.0" strip-ansi "^5.1.0" +string-width@^4.1.0: + version "4.1.0" + resolved "http://52.167.60.66:8081/repository/npm-all/string-width/-/string-width-4.1.0.tgz#ba846d1daa97c3c596155308063e075ed1c99aff" + integrity sha512-NrX+1dVVh+6Y9dnQ19pR0pP4FiEIlUvdTGn8pw6CKTNq5sgib2nIhmUNT5TAmhWmvKr3WcxBcP3E8nWezuipuQ== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^5.2.0" + string_decoder@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.2.0.tgz#fe86e738b19544afe70469243b2a1ee9240eae8d" @@ -4552,7 +4475,7 @@ strip-eof@^1.0.0: resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= -strip-json-comments@2.0.1, strip-json-comments@^2.0.1, strip-json-comments@~2.0.1: +strip-json-comments@2.0.1, 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= @@ -4585,11 +4508,6 @@ supports-color@6.0.0: dependencies: has-flag "^3.0.0" -supports-color@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" - integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= - supports-color@^5.2.0, supports-color@^5.3.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" @@ -4597,23 +4515,6 @@ supports-color@^5.2.0, 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= - -table@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/table/-/table-4.0.3.tgz#00b5e2b602f1794b9acaf9ca908a76386a7813bc" - integrity sha512-S7rnFITmBH1EnyKcvxBh1LjYeQMmnZtCXSEbHcH6S0NoKit24ZuFO/T1vDcLdYsLQkM188PVVhQmzKIuThNkKg== - dependencies: - ajv "^6.0.1" - ajv-keywords "^3.0.0" - chalk "^2.1.0" - lodash "^4.17.4" - slice-ansi "1.0.0" - string-width "^2.1.1" - table@^5.2.3: version "5.4.0" resolved "https://registry.yarnpkg.com/table/-/table-5.4.0.tgz#d772a3216e68829920a41a32c18eda286c95d780" @@ -4649,6 +4550,11 @@ term-size@^1.2.0: dependencies: execa "^0.7.0" +term-size@^2.1.0: + version "2.1.0" + resolved "http://52.167.60.66:8081/repository/npm-all/term-size/-/term-size-2.1.0.tgz#3aec444c07a7cf936e157c1dc224b590c3c7eef2" + integrity sha512-I42EWhJ+2aeNQawGx1VtpO0DFI9YcfuvAMNIdKyf/6sRbHJ4P+ZQ/zIT87tE+ln1ymAGcCJds4dolfSAS0AcNg== + text-table@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" @@ -4734,10 +4640,10 @@ tslib@^1.9.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286" integrity sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ== -tsutils@^3.7.0: - version "3.14.0" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.14.0.tgz#bf8d5a7bae5369331fa0f2b0a5a10bd7f7396c77" - integrity sha512-SmzGbB0l+8I0QwsPgjooFRaRvHLBLNYM8SeQ0k6rtNDru5sCGeLJcZdwilNndN+GysuFjF5EIYgN8GfFG6UeUw== +tsutils@^3.14.0: + version "3.17.1" + resolved "http://52.167.60.66:8081/repository/npm-all/tsutils/-/tsutils-3.17.1.tgz#ed719917f11ca0dee586272b2ac49e015a2dd759" + integrity sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g== dependencies: tslib "^1.8.1" @@ -4770,6 +4676,16 @@ type-detect@^4.0.0, type-detect@^4.0.5: resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== +type-fest@^0.3.0: + version "0.3.1" + resolved "http://52.167.60.66:8081/repository/npm-all/type-fest/-/type-fest-0.3.1.tgz#63d00d204e059474fe5e1b7c011112bbd1dc29e1" + integrity sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ== + +type-fest@^0.5.2: + version "0.5.2" + resolved "http://52.167.60.66:8081/repository/npm-all/type-fest/-/type-fest-0.5.2.tgz#d6ef42a0356c6cd45f49485c3b6281fc148e48a2" + integrity sha512-DWkS49EQKVX//Tbupb9TFa19c7+MK1XmzkrZUR8TAktmE/DizXoaoJV6TZ/tSIPXipqNiRI6CyAe7x69Jb6RSw== + typedarray-to-buffer@^3.1.5: version "3.1.5" resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" @@ -4909,6 +4825,11 @@ uuid@^3.3.2: resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA== +v8-compile-cache@^2.0.3: + version "2.1.0" + resolved "http://52.167.60.66:8081/repository/npm-all/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz#e14de37b31a6d194f5690d67efc4e7f6fc6ab30e" + integrity sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g== + 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" @@ -4967,6 +4888,11 @@ widest-line@^2.0.0: dependencies: string-width "^2.1.1" +word-wrap@^1.2.3: + version "1.2.3" + resolved "http://52.167.60.66:8081/repository/npm-all/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" + integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== + wordwrap@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" @@ -5010,13 +4936,6 @@ write@1.0.3: dependencies: mkdirp "^0.5.1" -write@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/write/-/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757" - integrity sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c= - dependencies: - mkdirp "^0.5.1" - xdg-basedir@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-3.0.0.tgz#496b2cc109eca8dbacfe2dc72b603c17c5870ad4" -- GitLab From 052d9f41e090388a4604ddefd29a04af01c3a70d Mon Sep 17 00:00:00 2001 From: Will Date: Tue, 20 Aug 2019 16:47:15 +0200 Subject: [PATCH 08/86] Update deps --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 1483afd..7cf3e4a 100644 --- a/package.json +++ b/package.json @@ -35,7 +35,7 @@ "dependencies": { "@polkadot/api": "0.81.1", "bn.js": "5.0.0", - "matrix-js-sdk": "^1.0.4", + "matrix-js-sdk": "2.3.0", "minimongo": "6.0.0", "nedb": "^1.8.0", "olm": "https://matrix.org/packages/npm/olm/olm-3.0.0.tgz", -- GitLab From 85624e74d0f740047904bddf85652446b87e9cdb Mon Sep 17 00:00:00 2001 From: Will Date: Tue, 20 Aug 2019 17:29:09 +0200 Subject: [PATCH 09/86] Deps update and some cleanup --- .vscode/settings.json | 3 +++ src/index.ts | 1 + src/lib/plugin-loader.ts | 12 +++------ src/lib/plugin-scanner.ts | 57 ++++++++++++++++++++++----------------- yarn.lock | 16 +++-------- 5 files changed, 45 insertions(+), 44 deletions(-) create mode 100644 .vscode/settings.json diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..4748804 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "eslint.enable": false +} \ No newline at end of file diff --git a/src/index.ts b/src/index.ts index 38fd5fd..48f10e6 100644 --- a/src/index.ts +++ b/src/index.ts @@ -101,6 +101,7 @@ export default class Polkabot { let config: IPolkabotConfig = ConfigSingleton.getInstance() assert(config.polkadot.host != null, 'Issue with the config') + assert(config.matrix.botMasterId != null, 'Missing bot master id') this.config = config // console.log(`Polkabot - config: ${JSON.stringify(this.config, null, 2)}`) diff --git a/src/lib/plugin-loader.ts b/src/lib/plugin-loader.ts index af562c4..cef05a5 100644 --- a/src/lib/plugin-loader.ts +++ b/src/lib/plugin-loader.ts @@ -1,6 +1,7 @@ /* eslint-disable @typescript-eslint/no-var-requires */ import * as path from 'path' import * as fs from 'fs' +import IPlugin from '../plugins/Plugin.interface'; // interface Author { // name: string; @@ -12,15 +13,10 @@ interface PackageJson { author: string | { name: string } ; } -interface Plugin { - name: string; - path: string; -} - export default class PluginLoader { - private plugin: Plugin; + private plugin: IPlugin; - public constructor (plugin: Plugin) { + public constructor (plugin: IPlugin) { this.plugin = plugin } @@ -31,7 +27,7 @@ export default class PluginLoader { // console.log('Resolved ' + this.plugin.path + ' to ' + pluginPath) - const plugin: Plugin = require(pluginPath) + const plugin: IPlugin = require(pluginPath) const pkg: PackageJson = require(path.join(pluginPath, 'package.json')) //@ts-ignore diff --git a/src/lib/plugin-scanner.ts b/src/lib/plugin-scanner.ts index fe372a9..8b35691 100644 --- a/src/lib/plugin-scanner.ts +++ b/src/lib/plugin-scanner.ts @@ -1,32 +1,41 @@ -import * as path from 'path' -import * as fs from 'fs' +import * as path from "path"; +import * as fs from "fs"; export default class PluginScanner { private name: string; - - public constructor (name) { - this.name = name + + public constructor(name) { + this.name = name; } - public scan (cb, done): void { - const basepath = path.join(path.dirname(process.argv0), '../lib/node_modules') - console.log('PluginScanner scanning basepath for Polkabot plugins: ', basepath) - const modules = [] + public scan(cb, done): void { + // console.log('dbg', path.dirname(process.argv0), __filename, __dirname) + const searchPaths: string[] = [ + path.join(path.dirname(process.argv0), "../lib/node_modules"), + // path.join(__dirname, '../../../node_modules') + ]; + console.log("PluginScanner scanning searchPaths for Polkabot plugins: ", searchPaths); + const modules = []; - fs.readdir(basepath, (err, items) => { - if (err) console.error(err) - done(null, items - .filter(i => i.indexOf(this.name) === 0) - .map((plugin) => { - console.log(plugin) - const mod = { - name: plugin, - path: path.join(basepath, plugin) - } - modules.push(mod) - cb(null, mod) - }) - ) - }) + // searchPaths.map(p => { + const p = searchPaths[0] + fs.readdir(p, (err, items) => { + if (err) console.error(err); + done( + null, + items + .filter(i => i.indexOf(this.name) === 0) + .map(plugin => { + console.log(plugin); + const mod = { + name: plugin, + path: path.join(p, plugin) + }; + modules.push(mod); + cb(null, mod); + }) + ); + }); + // }); } } diff --git a/yarn.lock b/yarn.lock index 01511fe..1408ae5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -723,13 +723,6 @@ balanced-match@^1.0.0: resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= -base-x@3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.4.tgz#94c1788736da065edb1d68808869e357c977fa77" - integrity sha512-UYOadoSIkEI/VrRGSG6qp93rp2WdokiAiNYDfGW5qURAY8GiAQkvMbwNNSDYiVJopqv4gCna7xqf4rrNGp+5AA== - dependencies: - safe-buffer "^5.0.1" - base-x@^3.0.2: version "3.0.5" resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.5.tgz#d3ada59afed05b921ab581ec3112e6444ba0795a" @@ -3050,14 +3043,13 @@ martinez-polygon-clipping@^0.4.3: splaytree "^0.1.4" tinyqueue "^1.2.0" -matrix-js-sdk@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/matrix-js-sdk/-/matrix-js-sdk-1.0.4.tgz#dbfa8399f750a23b020c1ec8f037a2f5c36d4672" - integrity sha512-FPx7U1a0SmLbDXhXlR4XHlC+FVKTnK2/+ZBtyOWGLi3nxw4x8hCSSzJ82gzStya1qvhHvbf/y7eblYFVE1l7SQ== +matrix-js-sdk@2.3.0: + version "2.3.0" + resolved "http://52.167.60.66:8081/repository/npm-all/matrix-js-sdk/-/matrix-js-sdk-2.3.0.tgz#ed04172add2e31c532dc87e2f38c26c2a63191c6" + integrity sha512-jeswie7cWK7+XxcD+pQ7LplWnWkOQDa+x6y7FUUnxCdEvaj38cE5Obo9bPMjFgOln2hISlLdR8fzMNE9F4oUJA== dependencies: another-json "^0.2.0" babel-runtime "^6.26.0" - base-x "3.0.4" bluebird "^3.5.0" browser-request "^0.3.3" bs58 "^4.0.1" -- GitLab From 2b70b1ffc8975c6d3bbc9279c676c18d66e50797 Mon Sep 17 00:00:00 2001 From: Will Date: Tue, 20 Aug 2019 17:54:00 +0200 Subject: [PATCH 10/86] Fix search path for plugins to work with yarn links --- package.json | 1 + src/lib/plugin-scanner.ts | 17 ++++---- yarn.lock | 85 ++++++++++++++++++++++++++++++++++++--- 3 files changed, 91 insertions(+), 12 deletions(-) diff --git a/package.json b/package.json index 7cf3e4a..b21c2ba 100644 --- a/package.json +++ b/package.json @@ -35,6 +35,7 @@ "dependencies": { "@polkadot/api": "0.81.1", "bn.js": "5.0.0", + "find-node-modules": "^2.0.0", "matrix-js-sdk": "2.3.0", "minimongo": "6.0.0", "nedb": "^1.8.0", diff --git a/src/lib/plugin-scanner.ts b/src/lib/plugin-scanner.ts index 8b35691..cbe15ef 100644 --- a/src/lib/plugin-scanner.ts +++ b/src/lib/plugin-scanner.ts @@ -1,5 +1,6 @@ import * as path from "path"; import * as fs from "fs"; +import findNodeModules from "find-node-modules"; export default class PluginScanner { private name: string; @@ -10,15 +11,17 @@ export default class PluginScanner { public scan(cb, done): void { // console.log('dbg', path.dirname(process.argv0), __filename, __dirname) - const searchPaths: string[] = [ - path.join(path.dirname(process.argv0), "../lib/node_modules"), - // path.join(__dirname, '../../../node_modules') - ]; + const scriptLocation = path.join(path.dirname(process.argv[1]), ".."); + console.log("script loc", scriptLocation); + const searchPaths: string[] = findNodeModules({ cwd: scriptLocation, relative: false }); + // path.join(scriptLocation, "../lib/node_modules"), + // path.join(__dirname, '../../../node_modules') + console.log("PluginScanner scanning searchPaths for Polkabot plugins: ", searchPaths); const modules = []; - // searchPaths.map(p => { - const p = searchPaths[0] + searchPaths.map(p => { + // const p = searchPaths[0] fs.readdir(p, (err, items) => { if (err) console.error(err); done( @@ -36,6 +39,6 @@ export default class PluginScanner { }) ); }); - // }); + }); } } diff --git a/yarn.lock b/yarn.lock index 1408ae5..c68c823 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1372,6 +1372,11 @@ delegates@^1.0.0: resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= +detect-file@^1.0.0: + version "1.0.0" + resolved "http://52.167.60.66:8081/repository/npm-all/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7" + integrity sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc= + detect-libc@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" @@ -1876,6 +1881,13 @@ expand-brackets@^2.1.4: snapdragon "^0.8.1" to-regex "^3.0.1" +expand-tilde@^2.0.0, expand-tilde@^2.0.2: + version "2.0.2" + resolved "http://52.167.60.66:8081/repository/npm-all/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502" + integrity sha1-l+gBqgUt8CRU3kawK/YhZCzchQI= + dependencies: + homedir-polyfill "^1.0.1" + extend-shallow@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" @@ -1973,6 +1985,14 @@ fill-range@^4.0.0: repeat-string "^1.6.1" to-regex-range "^2.1.0" +find-node-modules@^2.0.0: + version "2.0.0" + resolved "http://52.167.60.66:8081/repository/npm-all/find-node-modules/-/find-node-modules-2.0.0.tgz#5db1fb9e668a3d451db3d618cd167cdd59e41b69" + integrity sha512-8MWIBRgJi/WpjjfVXumjPKCtmQ10B+fjx6zmSA+770GMJirLhWIzg8l763rhjl9xaeaHbnxPNRQKq2mgMhr+aw== + dependencies: + findup-sync "^3.0.0" + merge "^1.2.1" + find-root@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4" @@ -1992,6 +2012,16 @@ find-up@^2.0.0, find-up@^2.1.0: dependencies: locate-path "^2.0.0" +findup-sync@^3.0.0: + version "3.0.0" + resolved "http://52.167.60.66:8081/repository/npm-all/findup-sync/-/findup-sync-3.0.0.tgz#17b108f9ee512dfb7a5c7f3c8b27ea9e1a9c08d1" + integrity sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg== + dependencies: + detect-file "^1.0.0" + is-glob "^4.0.0" + micromatch "^3.0.4" + resolve-dir "^1.0.1" + flat-cache@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" @@ -2192,6 +2222,26 @@ global-dirs@^0.1.0: dependencies: ini "^1.3.4" +global-modules@^1.0.0: + version "1.0.0" + resolved "http://52.167.60.66:8081/repository/npm-all/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea" + integrity sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg== + dependencies: + global-prefix "^1.0.1" + is-windows "^1.0.1" + resolve-dir "^1.0.0" + +global-prefix@^1.0.1: + version "1.0.2" + resolved "http://52.167.60.66:8081/repository/npm-all/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe" + integrity sha1-2/dDxsFJklk8ZVVoy2btMsASLr4= + dependencies: + expand-tilde "^2.0.2" + homedir-polyfill "^1.0.1" + ini "^1.3.4" + is-windows "^1.0.1" + which "^1.2.14" + globals@^11.7.0: version "11.11.0" resolved "https://registry.yarnpkg.com/globals/-/globals-11.11.0.tgz#dcf93757fa2de5486fbeed7118538adf789e9c2e" @@ -2325,6 +2375,13 @@ hmac-drbg@^1.0.0: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.1" +homedir-polyfill@^1.0.1: + version "1.0.3" + resolved "http://52.167.60.66:8081/repository/npm-all/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8" + integrity sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA== + dependencies: + parse-passwd "^1.0.0" + hosted-git-info@^2.1.4: version "2.7.1" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.7.1.tgz#97f236977bd6e125408930ff6de3eec6281ec047" @@ -2671,7 +2728,7 @@ is-typedarray@^1.0.0, is-typedarray@~1.0.0: resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= -is-windows@^1.0.2: +is-windows@^1.0.1, 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== @@ -3096,14 +3153,19 @@ memoizee@^0.4.14: next-tick "1" timers-ext "^0.1.5" +merge@^1.2.1: + version "1.2.1" + resolved "http://52.167.60.66:8081/repository/npm-all/merge/-/merge-1.2.1.tgz#38bebf80c3220a8a487b6fcfb3941bb11720c145" + integrity sha512-VjFo4P5Whtj4vsLzsYBu5ayHhoHJ0UqNm7ibvShmbmoz7tGi0vXaoJbGdB+GmDMLUdg8DpQXEIeVDAe8MaABvQ== + methods@^1.1.1, 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: +micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4: version "3.1.10" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" + resolved "http://52.167.60.66:8081/repository/npm-all/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== dependencies: arr-diff "^4.0.0" @@ -3674,6 +3736,11 @@ parse-json@^4.0.0: error-ex "^1.3.1" json-parse-better-errors "^1.0.1" +parse-passwd@^1.0.0: + version "1.0.0" + resolved "http://52.167.60.66:8081/repository/npm-all/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" + integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY= + pascalcase@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" @@ -4036,6 +4103,14 @@ requizzle@^0.2.3: dependencies: lodash "^4.17.14" +resolve-dir@^1.0.0, resolve-dir@^1.0.1: + version "1.0.1" + resolved "http://52.167.60.66:8081/repository/npm-all/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43" + integrity sha1-eaQGRMNivoLybv/nOcm7U4IEb0M= + dependencies: + expand-tilde "^2.0.0" + global-modules "^1.0.0" + resolve-from@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" @@ -4859,9 +4934,9 @@ which-module@^2.0.0: resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= -which@1.3.1, which@^1.2.9: +which@1.3.1, which@^1.2.14, which@^1.2.9: version "1.3.1" - resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + resolved "http://52.167.60.66:8081/repository/npm-all/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== dependencies: isexe "^2.0.0" -- GitLab From 48e5e67b9b53981d7bdb22fceb59d368dfccf20d Mon Sep 17 00:00:00 2001 From: Will Date: Fri, 23 Aug 2019 19:50:42 +0200 Subject: [PATCH 11/86] Switch to the new beta Kusama API --- .vscode/settings.json | 5 +- package.json | 2 +- plugins/polkabot-plugin-operator | 2 +- src/index.ts | 3 +- tsconfig.json | 58 +- yarn.lock | 1368 +++++++++++++++++++++++------- 6 files changed, 1074 insertions(+), 364 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index 4748804..5241c66 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,3 +1,6 @@ { - "eslint.enable": false + "eslint.enable": false, + "search.exclude": { + "**/node_modules": false + } } \ No newline at end of file diff --git a/package.json b/package.json index b21c2ba..e7401dc 100644 --- a/package.json +++ b/package.json @@ -33,7 +33,7 @@ "Matrix.org" ], "dependencies": { - "@polkadot/api": "0.81.1", + "@polkadot/api": "0.90.0-beta.67", "bn.js": "5.0.0", "find-node-modules": "^2.0.0", "matrix-js-sdk": "2.3.0", diff --git a/plugins/polkabot-plugin-operator b/plugins/polkabot-plugin-operator index b9cd5ce..2e7ad55 160000 --- a/plugins/polkabot-plugin-operator +++ b/plugins/polkabot-plugin-operator @@ -1 +1 @@ -Subproject commit b9cd5ce847bb6cfb28612997dfb8a21137f54ab7 +Subproject commit 2e7ad552d43528dfa950ea5ddce74a6585439a55 diff --git a/src/index.ts b/src/index.ts index 48f10e6..4a63b23 100644 --- a/src/index.ts +++ b/src/index.ts @@ -108,10 +108,9 @@ export default class Polkabot { // console.log(`Polkabot - Connecting to host: ${this.config.polkadot.host}`) // console.log(`Polkabot - Running with bot user id: ${this.config.matrix.botUserId}`) - // Reference: https://polkadot.js.org/api/examples/promise/01_simple_connect/ const provider = new WsProvider(this.config.polkadot.host) // Create the API and wait until ready - this.polkadot = await ApiPromise.create(provider) + this.polkadot = await ApiPromise.create({provider}) // Retrieve the chain & node information information via rpc calls const [chain, nodeName, nodeVersion] = await Promise.all([ diff --git a/tsconfig.json b/tsconfig.json index 942fb8d..8939a72 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,35 +1,27 @@ { - "compilerOptions": { - "module": "commonjs", - "moduleResolution": "node", - "esModuleInterop": true, - "resolveJsonModule": true, - "allowJs": true, - "target": "es5", - "noImplicitAny": false, - "sourceMap": true, - "preserveConstEnums": true, - "lib": [ - "es2015", - "dom" - ], - "noUnusedLocals": true, - "noImplicitReturns": true, - "noImplicitThis": true, - "alwaysStrict": true, - "strictNullChecks": false, - "noUnusedParameters": false, - "pretty": true, - "allowUnreachableCode": false, - "experimentalDecorators": true, - "suppressImplicitAnyIndexErrors": true, - "outDir": "./build", - }, - "include": [ - "./bin/**/*", - "./src/**/*", - "./test/**/*", - "./package.json" - ], - "compileOnSave": true + "compilerOptions": { + "module": "commonjs", + "moduleResolution": "node", + "esModuleInterop": true, + "resolveJsonModule": true, + "allowJs": true, + "target": "es5", + "noImplicitAny": false, + "sourceMap": true, + "preserveConstEnums": true, + "lib": ["es2015", "dom"], + "noUnusedLocals": true, + "noImplicitReturns": true, + "noImplicitThis": true, + "alwaysStrict": true, + "strictNullChecks": false, + "noUnusedParameters": false, + "pretty": true, + "allowUnreachableCode": false, + "experimentalDecorators": true, + "suppressImplicitAnyIndexErrors": true, + "outDir": "./build" + }, + "include": ["./bin/**/*", "./src/**/*", "./test/**/*", "./package.json"], + "compileOnSave": true } diff --git a/yarn.lock b/yarn.lock index c68c823..895c911 100644 --- a/yarn.lock +++ b/yarn.lock @@ -23,148 +23,141 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.4.5.tgz#04af8d5d5a2b044a2a1bffacc1e5e6673544e872" integrity sha512-9mUqkL1FF5T7f0WDFfAoDdiMVPWsdD1gZYzSnaXsxUCUqzuch/8of9G3VUSNiZmMBoRxT3neyVsqeiL/ZPcjew== -"@babel/runtime@^7.4.5": - version "7.4.5" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.4.5.tgz#582bb531f5f9dc67d2fcb682979894f75e253f12" - integrity sha512-TuI4qpWZP6lGOGIuGWtp9sPluqYICmbk8T/1vpSysqJxRPkudh/ofFWyqdcMsDf2s7KvDL4/YHgKyvcS3g9CJQ== +"@babel/runtime@^7.5.5": + version "7.5.5" + resolved "http://52.167.60.66:8081/repository/npm-all/@babel/runtime/-/runtime-7.5.5.tgz#74fba56d35efbeca444091c7850ccd494fd2f132" + integrity sha512-28QvEGyQyNkB0/m2B4FU7IEZGK2NUrcMtT6BZEFALTguLk+AUT6ofsHtPk5QyjAdUkpMJ+/Em+quwz4HOt30AQ== dependencies: regenerator-runtime "^0.13.2" -"@polkadot/api-derive@^0.81.1": - version "0.81.1" - resolved "https://registry.yarnpkg.com/@polkadot/api-derive/-/api-derive-0.81.1.tgz#0b29de12c024fffab196a7f9c0a48ea80311a418" - integrity sha512-+4DQX9n/o54QElOMW/UdsOsJ4boQTLqzlZ1YC7gr3Aa7YLZt42lldLltRHHORx1P+MZ7ombfkwDiEXqrAsA8WA== - dependencies: - "@babel/runtime" "^7.4.5" - "@polkadot/api" "^0.81.1" - "@polkadot/types" "^0.81.1" - "@types/memoizee" "^0.4.2" - memoizee "^0.4.14" +"@polkadot/api-derive@^0.90.0-beta.67", "@polkadot/api-derive@^0.90.0-beta.70": + version "0.90.0-beta.70" + resolved "http://52.167.60.66:8081/repository/npm-all/@polkadot/api-derive/-/api-derive-0.90.0-beta.70.tgz#9ce41f469fd0f8b486b515aa55d7245cea6eba89" + integrity sha512-4ct+DquK2cuLWgEtLKiWP2LDgZxQSQEVPz5fn9LpMRzOqii7SElbrvskUX1/9P8WMglYSHcBkN2IE9jKN2x7Og== + dependencies: + "@babel/runtime" "^7.5.5" + "@polkadot/api" "^0.90.0-beta.70" + "@polkadot/types" "^0.90.0-beta.70" + +"@polkadot/api-metadata@^0.90.0-beta.67", "@polkadot/api-metadata@^0.90.0-beta.70": + version "0.90.0-beta.70" + resolved "http://52.167.60.66:8081/repository/npm-all/@polkadot/api-metadata/-/api-metadata-0.90.0-beta.70.tgz#9ddb0219a878a4422dee64b7bd7139eec3bddd40" + integrity sha512-5O2xOgjXBar3l/2pevZTT3XAkDsV4+okC5VFr/FfjDoA+tFxGSD6bn3C5uxVR+eTvGV09/5itBCAjaJavty8Vg== + dependencies: + "@babel/runtime" "^7.5.5" + "@polkadot/types" "^0.90.0-beta.70" + "@polkadot/util" "^1.1.1" + "@polkadot/util-crypto" "^1.1.1" + +"@polkadot/api@0.90.0-beta.67": + version "0.90.0-beta.67" + resolved "http://52.167.60.66:8081/repository/npm-all/@polkadot/api/-/api-0.90.0-beta.67.tgz#0335a57090a0adcfd2a182531ce883f6618d078d" + integrity sha512-1FgI7Q9nq4Gnx91Fthk8u4huvqo+U9VNZ7Wd0tAuSs0K+1cPHLEnZ0x+QMYEd3Iy4O5oRmc1kWNy3APsdTfDiQ== + dependencies: + "@babel/runtime" "^7.5.5" + "@polkadot/api-derive" "^0.90.0-beta.67" + "@polkadot/api-metadata" "^0.90.0-beta.67" + "@polkadot/rpc-core" "^0.90.0-beta.67" + "@polkadot/rpc-provider" "^0.90.0-beta.67" + "@polkadot/types" "^0.90.0-beta.67" + "@polkadot/util-crypto" "^1.1.1" + +"@polkadot/api@^0.90.0-beta.70": + version "0.90.0-beta.70" + resolved "http://52.167.60.66:8081/repository/npm-all/@polkadot/api/-/api-0.90.0-beta.70.tgz#d2e80791b75a91ca5cfabec514aca3078334f906" + integrity sha512-1c4JELi1nDeEGhX2YDEXURTIyV2LVX/ybuMPB5oPflnGo/PSvSBeeKTQsPTU7yoMHW+bCZzdOHLBAdLAifjqJw== + dependencies: + "@babel/runtime" "^7.5.5" + "@polkadot/api-derive" "^0.90.0-beta.70" + "@polkadot/api-metadata" "^0.90.0-beta.70" + "@polkadot/rpc-core" "^0.90.0-beta.70" + "@polkadot/rpc-provider" "^0.90.0-beta.70" + "@polkadot/types" "^0.90.0-beta.70" + "@polkadot/util-crypto" "^1.1.1" + +"@polkadot/jsonrpc@^0.90.0-beta.70": + version "0.90.0-beta.70" + resolved "http://52.167.60.66:8081/repository/npm-all/@polkadot/jsonrpc/-/jsonrpc-0.90.0-beta.70.tgz#a6d4b75ecbd943ec1c0a2777eaa63039462d1175" + integrity sha512-1E0iLK+oybE2ZMaR6Yz+9urUwnNgwuaAbTBgH927DzB8rJH9t2xlx0qBUBG2ot89GNXHb/xJfx4+VBwz20CGGg== + dependencies: + "@babel/runtime" "^7.5.5" + +"@polkadot/rpc-core@^0.90.0-beta.67", "@polkadot/rpc-core@^0.90.0-beta.70": + version "0.90.0-beta.70" + resolved "http://52.167.60.66:8081/repository/npm-all/@polkadot/rpc-core/-/rpc-core-0.90.0-beta.70.tgz#09c5a5d532e10ccf654262056829e3077ac3c11b" + integrity sha512-DmzH38BNXTjgUTr2jXZGgQQlOV4aSxFZe9tRUxzmAwCnAcwmu0ho9mQQP75H/y/C8Ut7HkYamZcpz8RGmAK4cA== + dependencies: + "@babel/runtime" "^7.5.5" + "@polkadot/jsonrpc" "^0.90.0-beta.70" + "@polkadot/rpc-provider" "^0.90.0-beta.70" + "@polkadot/types" "^0.90.0-beta.70" + "@polkadot/util" "^1.1.1" + rxjs "^6.5.2" -"@polkadot/api@0.81.1", "@polkadot/api@^0.81.1": - version "0.81.1" - resolved "https://registry.yarnpkg.com/@polkadot/api/-/api-0.81.1.tgz#bc4feefd6d3aa2c69093a9f8a79bbc581ea72f2b" - integrity sha512-BDB0mKxdnMk/0qfga1g42xRnEp+CQOo1mV0BRb/gmZloCR/0nef+abW2XrVvml3jbyvIBKDe5szKJbHVX/6LHQ== - dependencies: - "@babel/runtime" "^7.4.5" - "@polkadot/api-derive" "^0.81.1" - "@polkadot/extrinsics" "^0.81.1" - "@polkadot/rpc-provider" "^0.81.1" - "@polkadot/rpc-rx" "^0.81.1" - "@polkadot/storage" "^0.81.1" - "@polkadot/types" "^0.81.1" - "@polkadot/util-crypto" "^0.93.1" - -"@polkadot/extrinsics@^0.81.1": - version "0.81.1" - resolved "https://registry.yarnpkg.com/@polkadot/extrinsics/-/extrinsics-0.81.1.tgz#5834c929151d201e8e0edc044131ed01f20c85f9" - integrity sha512-Te/NFukWdjfCLJaep/mMhXtSPrBPjc9RCZJtQV0SWFZSjTOchIrncgnlzzljGbWa3mq2LGwD3XvEraOAKKpf6w== - dependencies: - "@babel/runtime" "^7.4.5" - "@polkadot/types" "^0.81.1" - "@polkadot/util" "^0.93.1" - -"@polkadot/jsonrpc@^0.81.1": - version "0.81.1" - resolved "https://registry.yarnpkg.com/@polkadot/jsonrpc/-/jsonrpc-0.81.1.tgz#804bac1c698859220085d8bc3cb37725519b0dee" - integrity sha512-0L4wMEiE5A+nXXeL7acgXImYtfwAMlyND/tBvoketSQ5xwcd3UbiepNfA3idK3KY1QKShaoBmHuNDdwlGXDNIg== - dependencies: - "@babel/runtime" "^7.4.5" - -"@polkadot/rpc-core@^0.81.1": - version "0.81.1" - resolved "https://registry.yarnpkg.com/@polkadot/rpc-core/-/rpc-core-0.81.1.tgz#85421218378090c507590a84afae89576cf786be" - integrity sha512-za4puLj0PclCwibd7hrzy4UKw5PssY3dM9Gbf2lmzQ/frZr3DxuHRHIUGYGCy8UagQrmqSJDllfDfY+JNVWoGg== - dependencies: - "@babel/runtime" "^7.4.5" - "@polkadot/jsonrpc" "^0.81.1" - "@polkadot/rpc-provider" "^0.81.1" - "@polkadot/types" "^0.81.1" - "@polkadot/util" "^0.93.1" - -"@polkadot/rpc-provider@^0.81.1": - version "0.81.1" - resolved "https://registry.yarnpkg.com/@polkadot/rpc-provider/-/rpc-provider-0.81.1.tgz#1605c858d3732dd28415d209ff9162dace49df6f" - integrity sha512-e6U05Tv7aP0t9xwfbmP6wnqjnqkVqRZEWfqZsMk9v0EHCkTJx7vNiCKL/N5TyRoVuUhUx/bPQr3DUeNVZLbKrQ== - dependencies: - "@babel/runtime" "^7.4.5" - "@polkadot/storage" "^0.81.1" - "@polkadot/util" "^0.93.1" - "@polkadot/util-crypto" "^0.93.1" +"@polkadot/rpc-provider@^0.90.0-beta.67", "@polkadot/rpc-provider@^0.90.0-beta.70": + version "0.90.0-beta.70" + resolved "http://52.167.60.66:8081/repository/npm-all/@polkadot/rpc-provider/-/rpc-provider-0.90.0-beta.70.tgz#dc3272b73844a425cfcfe2db8554d69161b5aea7" + integrity sha512-kTKihMtAHuoEHctGlpxiP/J8ftH5SU8/5WtR9YMoITvmBib0EgwL3eHCeL96ji+Gkv9gWeoLaKHifpOTB6p5VA== + dependencies: + "@babel/runtime" "^7.5.5" + "@polkadot/api-metadata" "^0.90.0-beta.70" + "@polkadot/util" "^1.1.1" + "@polkadot/util-crypto" "^1.1.1" "@types/nock" "^10.0.3" - eventemitter3 "^3.1.0" + eventemitter3 "^4.0.0" isomorphic-fetch "^2.2.1" - websocket "^1.0.28" + websocket "^1.0.29" -"@polkadot/rpc-rx@^0.81.1": - version "0.81.1" - resolved "https://registry.yarnpkg.com/@polkadot/rpc-rx/-/rpc-rx-0.81.1.tgz#08610053e7a68e15881d0def3f4d793d4821ef0a" - integrity sha512-He1JsmsUpVIoVRtopZfAnTMOx5hP8SiGEOMg6Tw//6RFRQOnHmcK9Sf3WUoHNas2F4/7g5cZfQGeznmZdQSQgQ== +"@polkadot/types@^0.90.0-beta.67", "@polkadot/types@^0.90.0-beta.70": + version "0.90.0-beta.70" + resolved "http://52.167.60.66:8081/repository/npm-all/@polkadot/types/-/types-0.90.0-beta.70.tgz#ed96d3a6410be6bd0e0590421d0ab294d93fed87" + integrity sha512-Pg4z5zi832Gq+NKWqbo+TEwNgJhm3FZAI2dkIy8N+nF5PZAi/PIbXECaZLF55bxi3MdHJqRzSTuEwUcgAQY6og== dependencies: - "@babel/runtime" "^7.4.5" - "@polkadot/rpc-core" "^0.81.1" - "@polkadot/rpc-provider" "^0.81.1" + "@babel/runtime" "^7.5.5" + "@polkadot/util" "^1.1.1" + "@polkadot/util-crypto" "^1.1.1" "@types/memoizee" "^0.4.2" - "@types/rx" "^4.1.1" memoizee "^0.4.14" - rxjs "^6.5.2" -"@polkadot/storage@^0.81.1": - version "0.81.1" - resolved "https://registry.yarnpkg.com/@polkadot/storage/-/storage-0.81.1.tgz#ffb5b7f63fcb35043c5cad52b7f6ff3c9e0e6070" - integrity sha512-yue/TL6772P4Oss4YAOBwMIrxYryFeLcxAumC1uIQjRMMVh+GlWbm8P47Oy8HMiqv8ZqtyOPxEtElMFgGkI2Wg== - dependencies: - "@babel/runtime" "^7.4.5" - "@polkadot/types" "^0.81.1" - "@polkadot/util" "^0.93.1" - "@polkadot/util-crypto" "^0.93.1" - -"@polkadot/types@^0.81.1": - version "0.81.1" - resolved "https://registry.yarnpkg.com/@polkadot/types/-/types-0.81.1.tgz#63505692224e047dd7b4631e7dbbd0b095f9149c" - integrity sha512-slJNfQmpQMamHbGQEoh66XeLma/YfU+4Pm7iZMDL8IQxVAqbA2kEn/4MHJrgDjH70Tfu2/jinIiXDdZPf0M5vA== - dependencies: - "@babel/runtime" "^7.4.5" - "@polkadot/util" "^0.93.1" - "@polkadot/util-crypto" "^0.93.1" - -"@polkadot/util-crypto@^0.93.1": - version "0.93.1" - resolved "https://registry.yarnpkg.com/@polkadot/util-crypto/-/util-crypto-0.93.1.tgz#5cd2506f601cd80b28f0556bb8dd3187857059a4" - integrity sha512-oSTUnJxWQkd6XopK+HFOa8sgTSTJW6LOoTg8iv6QCkddyEhsk8XkTe43AE4F+RA0VOi7MOiiBEl6Pl5eFIer9g== - dependencies: - "@babel/runtime" "^7.4.5" - "@polkadot/util" "^0.93.1" - "@polkadot/wasm-crypto" "^0.11.1" +"@polkadot/util-crypto@^1.1.1": + version "1.1.1" + resolved "http://52.167.60.66:8081/repository/npm-all/@polkadot/util-crypto/-/util-crypto-1.1.1.tgz#c9735058e46f55043feeadf88a9e3476739ff959" + integrity sha512-TxfLP4egz4sD/xP4nN0kTyls042HMTwkz2V1WPiB1aSPbBwfWUgKQkDXQcSYFIqsI7iCx4cV98Yx9oLz9NXBOw== + dependencies: + "@babel/runtime" "^7.5.5" + "@polkadot/util" "^1.1.1" + "@polkadot/wasm-crypto" "^0.13.1" "@types/bip39" "^2.4.2" + "@types/bs58" "^4.0.0" "@types/pbkdf2" "^3.0.0" "@types/secp256k1" "^3.5.0" "@types/xxhashjs" "^0.2.1" + base-x "3.0.5" bip39 "^2.5.0" blakejs "^1.1.0" + bs58 "^4.0.1" js-sha3 "^0.8.0" secp256k1 "^3.7.0" tweetnacl "^1.0.1" xxhashjs "^0.2.2" -"@polkadot/util@^0.93.1": - version "0.93.1" - resolved "https://registry.yarnpkg.com/@polkadot/util/-/util-0.93.1.tgz#d07d633b35e02640da1361259750c061022d4e05" - integrity sha512-ORqpaCf7pDtg07/TVPnXyEKTyL7YhlTT9xFU1UFv3WoTLPrGThFlZnWQrfOVYuuMtlnsdpt2evJ1i5V9alGdOQ== +"@polkadot/util@^1.1.1": + version "1.1.1" + resolved "http://52.167.60.66:8081/repository/npm-all/@polkadot/util/-/util-1.1.1.tgz#44461fe75edab2156e6699bf1cfcc5007a603707" + integrity sha512-53yRPNMTYvyG5gde6sgNAA4QVjacAcupPqqDygJD4rytetOU5tmGGSnrs005FtG149pmGgV1rDUHm1R+3ogE4w== dependencies: - "@babel/runtime" "^7.4.5" + "@babel/runtime" "^7.5.5" "@types/bn.js" "^4.11.5" - "@types/deasync" "^0.1.0" bn.js "^4.11.8" camelcase "^5.3.1" chalk "^2.4.2" ip-regex "^4.1.0" moment "^2.24.0" -"@polkadot/wasm-crypto@^0.11.1": - version "0.11.1" - resolved "https://registry.yarnpkg.com/@polkadot/wasm-crypto/-/wasm-crypto-0.11.1.tgz#5f5544659a81b5706e757577f880001de21cd298" - integrity sha512-zd4p5UjsUlr4oW/5IWKEODHX7VKa6dc94oD8WJSr7++f+UGxSpF84qW+h+16uMDhU5PbHqq31dv1w73cr+KP4Q== +"@polkadot/wasm-crypto@^0.13.1": + version "0.13.1" + resolved "http://52.167.60.66:8081/repository/npm-all/@polkadot/wasm-crypto/-/wasm-crypto-0.13.1.tgz#602305b2ca86fc320a35ce820835e0e2dd9e646e" + integrity sha512-24a63FynhyBHEGxqoDMZHAcaSxJqnjBPnEcmXXYCN2lI7b4iKaJKF2t+/FUmY7XTST+xNgFTJZ7A/o8jjgC/mA== "@turf/bbox@*", "@turf/bbox@6.x": version "6.0.1" @@ -268,6 +261,13 @@ "@turf/helpers" "6.x" "@turf/invariant" "6.x" +"@types/base-x@*": + version "3.0.0" + resolved "http://52.167.60.66:8081/repository/npm-all/@types/base-x/-/base-x-3.0.0.tgz#a1365259d1d3fa3ff973ab543192a6bdd4cb2f90" + integrity sha512-vnqSlpsv9uFX5/z8GyKWAfWHhLGJDBkrgRRsnxlsX23DHOlNyqP/eHQiv4TwnYcZULzQIxaWA/xRWU9Dyy4qzw== + dependencies: + "@types/node" "*" + "@types/bip39@^2.4.2": version "2.4.2" resolved "https://registry.yarnpkg.com/@types/bip39/-/bip39-2.4.2.tgz#f5d6617212be496bb998d3969f657f77a10c5287" @@ -282,6 +282,13 @@ dependencies: "@types/node" "*" +"@types/bs58@^4.0.0": + version "4.0.0" + resolved "http://52.167.60.66:8081/repository/npm-all/@types/bs58/-/bs58-4.0.0.tgz#baec75cb007b419ede3ec6b3410d2c8f14c92fc5" + integrity sha512-gYX+MHD4G/R+YGYwdhG5gbJj4LsEQGr3Vg6gVDAbe7xC5Bn8dNNG2Lpo6uDX/rT5dE7VBj0rGEFuV8L0AEx4Rg== + dependencies: + "@types/base-x" "*" + "@types/chai@4": version "4.1.7" resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.1.7.tgz#1b8e33b61a8c09cbe1f85133071baa0dbf9fa71a" @@ -292,11 +299,6 @@ resolved "https://registry.yarnpkg.com/@types/cookiejar/-/cookiejar-2.1.1.tgz#90b68446364baf9efd8e8349bb36bd3852b75b80" integrity sha512-aRnpPa7ysx3aNW60hTiCtLHlQaIFsXFCgQlpakNgDNVFzbtusSY8PwjAQgRWfSk0ekNoBjO51eQRB6upA9uuyw== -"@types/deasync@^0.1.0": - version "0.1.0" - resolved "https://registry.yarnpkg.com/@types/deasync/-/deasync-0.1.0.tgz#b2bd6c3fcde3cf67b8be4c2f70136ba8f157b45a" - integrity sha512-jxUH53LtGvbIL3TX2hD/XQuAgYJeATtx9kDXq5XtCZrWQABsiCQPjWi/KQXECUF+p9FuR6/tawnEDjXlEr4rFA== - "@types/dotenv@^6.1.1": version "6.1.1" resolved "https://registry.yarnpkg.com/@types/dotenv/-/dotenv-6.1.1.tgz#f7ce1cc4fe34f0a4373ba99fefa437b0bec54b46" @@ -343,107 +345,6 @@ dependencies: "@types/node" "*" -"@types/rx-core-binding@*": - version "4.0.4" - resolved "https://registry.yarnpkg.com/@types/rx-core-binding/-/rx-core-binding-4.0.4.tgz#d969d32f15a62b89e2862c17b3ee78fe329818d3" - integrity sha512-5pkfxnC4w810LqBPUwP5bg7SFR/USwhMSaAeZQQbEHeBp57pjKXRlXmqpMrLJB4y1oglR/c2502853uN0I+DAQ== - dependencies: - "@types/rx-core" "*" - -"@types/rx-core@*": - version "4.0.3" - resolved "https://registry.yarnpkg.com/@types/rx-core/-/rx-core-4.0.3.tgz#0b3354b1238cedbe2b74f6326f139dbc7a591d60" - integrity sha1-CzNUsSOM7b4rdPYybxOdvHpZHWA= - -"@types/rx-lite-aggregates@*": - version "4.0.3" - resolved "https://registry.yarnpkg.com/@types/rx-lite-aggregates/-/rx-lite-aggregates-4.0.3.tgz#6efb2b7f3d5f07183a1cb2bd4b1371d7073384c2" - integrity sha512-MAGDAHy8cRatm94FDduhJF+iNS5//jrZ/PIfm+QYw9OCeDgbymFHChM8YVIvN2zArwsRftKgE33QfRWvQk4DPg== - dependencies: - "@types/rx-lite" "*" - -"@types/rx-lite-async@*": - version "4.0.2" - resolved "https://registry.yarnpkg.com/@types/rx-lite-async/-/rx-lite-async-4.0.2.tgz#27fbf0caeff029f41e2d2aae638b05e91ceb600c" - integrity sha512-vTEv5o8l6702ZwfAM5aOeVDfUwBSDOs+ARoGmWAKQ6LOInQ8J4/zjM7ov12fuTpktUKdMQjkeCp07Vd73mPkxw== - dependencies: - "@types/rx-lite" "*" - -"@types/rx-lite-backpressure@*": - version "4.0.3" - resolved "https://registry.yarnpkg.com/@types/rx-lite-backpressure/-/rx-lite-backpressure-4.0.3.tgz#05abb19bdf87cc740196c355e5d0b37bb50b5d56" - integrity sha512-Y6aIeQCtNban5XSAF4B8dffhIKu6aAy/TXFlScHzSxh6ivfQBQw6UjxyEJxIOt3IT49YkS+siuayM2H/Q0cmgA== - dependencies: - "@types/rx-lite" "*" - -"@types/rx-lite-coincidence@*": - version "4.0.3" - resolved "https://registry.yarnpkg.com/@types/rx-lite-coincidence/-/rx-lite-coincidence-4.0.3.tgz#80bd69acc4054a15cdc1638e2dc8843498cd85c0" - integrity sha512-1VNJqzE9gALUyMGypDXZZXzR0Tt7LC9DdAZQ3Ou/Q0MubNU35agVUNXKGHKpNTba+fr8GdIdkC26bRDqtCQBeQ== - dependencies: - "@types/rx-lite" "*" - -"@types/rx-lite-experimental@*": - version "4.0.1" - resolved "https://registry.yarnpkg.com/@types/rx-lite-experimental/-/rx-lite-experimental-4.0.1.tgz#c532f5cbdf3f2c15da16ded8930d1b2984023cbd" - integrity sha1-xTL1y98/LBXaFt7Ykw0bKYQCPL0= - dependencies: - "@types/rx-lite" "*" - -"@types/rx-lite-joinpatterns@*": - version "4.0.1" - resolved "https://registry.yarnpkg.com/@types/rx-lite-joinpatterns/-/rx-lite-joinpatterns-4.0.1.tgz#f70fe370518a8432f29158cc92ffb56b4e4afc3e" - integrity sha1-9w/jcFGKhDLykVjMkv+1a05K/D4= - dependencies: - "@types/rx-lite" "*" - -"@types/rx-lite-testing@*": - version "4.0.1" - resolved "https://registry.yarnpkg.com/@types/rx-lite-testing/-/rx-lite-testing-4.0.1.tgz#21b19d11f4dfd6ffef5a9d1648e9c8879bfe21e9" - integrity sha1-IbGdEfTf1v/vWp0WSOnIh5v+Iek= - dependencies: - "@types/rx-lite-virtualtime" "*" - -"@types/rx-lite-time@*": - version "4.0.3" - resolved "https://registry.yarnpkg.com/@types/rx-lite-time/-/rx-lite-time-4.0.3.tgz#0eda65474570237598f3448b845d2696f2dbb1c4" - integrity sha512-ukO5sPKDRwCGWRZRqPlaAU0SKVxmWwSjiOrLhoQDoWxZWg6vyB9XLEZViKOzIO6LnTIQBlk4UylYV0rnhJLxQw== - dependencies: - "@types/rx-lite" "*" - -"@types/rx-lite-virtualtime@*": - version "4.0.3" - resolved "https://registry.yarnpkg.com/@types/rx-lite-virtualtime/-/rx-lite-virtualtime-4.0.3.tgz#4b30cacd0fe2e53af29f04f7438584c7d3959537" - integrity sha512-3uC6sGmjpOKatZSVHI2xB1+dedgml669ZRvqxy+WqmGJDVusOdyxcKfyzjW0P3/GrCiN4nmRkLVMhPwHCc5QLg== - dependencies: - "@types/rx-lite" "*" - -"@types/rx-lite@*": - version "4.0.6" - resolved "https://registry.yarnpkg.com/@types/rx-lite/-/rx-lite-4.0.6.tgz#3c02921c4244074234f26b772241bcc20c18c253" - integrity sha512-oYiDrFIcor9zDm0VDUca1UbROiMYBxMLMaM6qzz4ADAfOmA9r1dYEcAFH+2fsPI5BCCjPvV9pWC3X3flbrvs7w== - dependencies: - "@types/rx-core" "*" - "@types/rx-core-binding" "*" - -"@types/rx@^4.1.1": - version "4.1.1" - resolved "https://registry.yarnpkg.com/@types/rx/-/rx-4.1.1.tgz#598fc94a56baed975f194574e0f572fd8e627a48" - integrity sha1-WY/JSla67ZdfGUV04PVy/Y5iekg= - dependencies: - "@types/rx-core" "*" - "@types/rx-core-binding" "*" - "@types/rx-lite" "*" - "@types/rx-lite-aggregates" "*" - "@types/rx-lite-async" "*" - "@types/rx-lite-backpressure" "*" - "@types/rx-lite-coincidence" "*" - "@types/rx-lite-experimental" "*" - "@types/rx-lite-joinpatterns" "*" - "@types/rx-lite-testing" "*" - "@types/rx-lite-time" "*" - "@types/rx-lite-virtualtime" "*" - "@types/secp256k1@^3.5.0": version "3.5.0" resolved "https://registry.yarnpkg.com/@types/secp256k1/-/secp256k1-3.5.0.tgz#0f3baf16b07488c6da2633a63b4160bcf8d0fd5b" @@ -519,7 +420,7 @@ acorn@^7.0.0: resolved "http://52.167.60.66:8081/repository/npm-all/acorn/-/acorn-7.0.0.tgz#26b8d1cd9a9b700350b71c0905546f64d1284e7a" integrity sha512-PaF/MduxijYYt7unVGRuds1vBC9bFxbNf+VWqhOClfdgy7RlVkQqt610ig1/yxTgsDIfW1cWDel5EBbOy3jdtQ== -ajv@^6.10.0: +ajv@^6.10.0, ajv@^6.5.5, ajv@^6.9.1: version "6.10.2" resolved "http://52.167.60.66:8081/repository/npm-all/ajv/-/ajv-6.10.2.tgz#d3cea04d6b017b2894ad69040fec8b623eb4bd52" integrity sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw== @@ -529,16 +430,6 @@ ajv@^6.10.0: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ajv@^6.5.5, ajv@^6.9.1: - version "6.10.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.0.tgz#90d0d54439da587cd7e843bfb7045f50bd22bdf1" - integrity sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg== - dependencies: - fast-deep-equal "^2.0.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - another-json@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/another-json/-/another-json-0.2.0.tgz#b5f4019c973b6dd5c6506a2d93469cb6d32aeedc" @@ -563,6 +454,13 @@ ansi-colors@3.2.3: resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.3.tgz#57d35b8686e851e2cc04c403f1c00203976a1813" integrity sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw== +ansi-colors@^1.0.1: + version "1.1.0" + resolved "http://52.167.60.66:8081/repository/npm-all/ansi-colors/-/ansi-colors-1.1.0.tgz#6374b4dd5d4718ff3ce27a671a3b1cad077132a9" + integrity sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA== + dependencies: + ansi-wrap "^0.1.0" + ansi-escapes@^4.2.1: version "4.2.1" resolved "http://52.167.60.66:8081/repository/npm-all/ansi-escapes/-/ansi-escapes-4.2.1.tgz#4dccdb846c3eee10f6d64dea66273eab90c37228" @@ -570,6 +468,13 @@ ansi-escapes@^4.2.1: dependencies: type-fest "^0.5.2" +ansi-gray@^0.1.1: + version "0.1.1" + resolved "http://52.167.60.66:8081/repository/npm-all/ansi-gray/-/ansi-gray-0.1.1.tgz#2962cf54ec9792c48510a3deb524436861ef7251" + integrity sha1-KWLPVOyXksSFEKPetSRDaGHvclE= + dependencies: + ansi-wrap "0.1.0" + ansi-regex@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" @@ -592,6 +497,11 @@ ansi-styles@^3.2.0, ansi-styles@^3.2.1: dependencies: color-convert "^1.9.0" +ansi-wrap@0.1.0, ansi-wrap@^0.1.0: + version "0.1.0" + resolved "http://52.167.60.66:8081/repository/npm-all/ansi-wrap/-/ansi-wrap-0.1.0.tgz#a82250ddb0015e9a27ca82e82ea603bbfa45efaf" + integrity sha1-qCJQ3bABXponyoLoLqYDu/pF768= + anymatch@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" @@ -600,11 +510,23 @@ anymatch@^2.0.0: micromatch "^3.1.4" normalize-path "^2.1.1" +append-buffer@^1.0.2: + version "1.0.2" + resolved "http://52.167.60.66:8081/repository/npm-all/append-buffer/-/append-buffer-1.0.2.tgz#d8220cf466081525efea50614f3de6514dfa58f1" + integrity sha1-2CIM9GYIFSXv6lBhTz3mUU36WPE= + dependencies: + buffer-equal "^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 "http://52.167.60.66:8081/repository/npm-all/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" @@ -625,16 +547,35 @@ arr-diff@^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: +arr-filter@^1.1.1: + version "1.1.2" + resolved "http://52.167.60.66:8081/repository/npm-all/arr-filter/-/arr-filter-1.1.2.tgz#43fdddd091e8ef11aa4c45d9cdc18e2dff1711ee" + integrity sha1-Q/3d0JHo7xGqTEXZzcGOLf8XEe4= + dependencies: + make-iterator "^1.0.0" + +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-map@^2.0.0, arr-map@^2.0.2: + version "2.0.2" + resolved "http://52.167.60.66:8081/repository/npm-all/arr-map/-/arr-map-2.0.2.tgz#3a77345ffc1cf35e2a91825601f9e58f2e24cac4" + integrity sha1-Onc0X/wc814qkYJWAfnljy4kysQ= + dependencies: + make-iterator "^1.0.0" + 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-each@^1.0.0, array-each@^1.0.1: + version "1.0.1" + resolved "http://52.167.60.66:8081/repository/npm-all/array-each/-/array-each-1.0.1.tgz#a794af0c05ab1752846ee753a1f211a05ba0c44f" + integrity sha1-p5SvDAWrF1KEbudTofIRoFugxE8= + array-includes@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.0.3.tgz#184b48f62d92d7452bb31b323165c7f8bd02266d" @@ -643,6 +584,35 @@ array-includes@^3.0.3: define-properties "^1.1.2" es-abstract "^1.7.0" +array-initial@^1.0.0: + version "1.1.0" + resolved "http://52.167.60.66:8081/repository/npm-all/array-initial/-/array-initial-1.1.0.tgz#2fa74b26739371c3947bd7a7adc73be334b3d795" + integrity sha1-L6dLJnOTccOUe9enrcc74zSz15U= + dependencies: + array-slice "^1.0.0" + is-number "^4.0.0" + +array-last@^1.1.1: + version "1.3.0" + resolved "http://52.167.60.66:8081/repository/npm-all/array-last/-/array-last-1.3.0.tgz#7aa77073fec565ddab2493f5f88185f404a9d336" + integrity sha512-eOCut5rXlI6aCOS7Z7kCplKRKyiFQ6dHFBem4PwlwKeNFk2/XxTrhRh5T9PyaEWGy/NHTZWbY+nsZlNFJu9rYg== + dependencies: + is-number "^4.0.0" + +array-slice@^1.0.0: + version "1.1.0" + resolved "http://52.167.60.66:8081/repository/npm-all/array-slice/-/array-slice-1.1.0.tgz#e368ea15f89bc7069f7ffb89aec3a6c7d4ac22d4" + integrity sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w== + +array-sort@^1.0.0: + version "1.0.0" + resolved "http://52.167.60.66:8081/repository/npm-all/array-sort/-/array-sort-1.0.0.tgz#e4c05356453f56f53512a7d1d6123f2c54c0a88a" + integrity sha512-ihLeJkonmdiAsD7vpgN3CRcx2J2S0TiYW+IS/5zHBI7mKUq3ySvBdzzBfD236ubDBQFiiyG3SWCPc+msQ9KoYg== + dependencies: + default-compare "^1.0.0" + get-value "^2.0.6" + kind-of "^5.0.2" + array-unique@^0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" @@ -675,11 +645,28 @@ astral-regex@^1.0.0: resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== +async-done@^1.2.0, async-done@^1.2.2: + version "1.3.2" + resolved "http://52.167.60.66:8081/repository/npm-all/async-done/-/async-done-1.3.2.tgz#5e15aa729962a4b07414f528a88cdf18e0b290a2" + integrity sha512-uYkTP8dw2og1tu1nmza1n1CMW0qb8gWWlwqMmLb7MhBVs4BXrFziT6HXUd+/RlRA/i4H9AkofYloUbs1fwMqlw== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.2" + process-nextick-args "^2.0.0" + stream-exhaust "^1.0.1" + async-each@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== +async-settle@^1.0.0: + version "1.0.0" + resolved "http://52.167.60.66:8081/repository/npm-all/async-settle/-/async-settle-1.0.0.tgz#1d0a914bb02575bec8a8f3a74e5080f72b2c0c6b" + integrity sha1-HQqRS7Aldb7IqPOnTlCA9yssDGs= + dependencies: + async-done "^1.2.2" + async@0.2.10: version "0.2.10" resolved "https://registry.yarnpkg.com/async/-/async-0.2.10.tgz#b6bbe0b0674b9d719708ca38de8c237cb526c3d1" @@ -718,12 +705,27 @@ babel-runtime@^6.26.0: core-js "^2.4.0" regenerator-runtime "^0.11.0" +bach@^1.0.0: + version "1.2.0" + resolved "http://52.167.60.66:8081/repository/npm-all/bach/-/bach-1.2.0.tgz#4b3ce96bf27134f79a1b414a51c14e34c3bd9880" + integrity sha1-Szzpa/JxNPeaG0FKUcFONMO9mIA= + dependencies: + arr-filter "^1.1.1" + arr-flatten "^1.0.1" + arr-map "^2.0.0" + array-each "^1.0.0" + array-initial "^1.0.0" + array-last "^1.1.1" + async-done "^1.2.2" + async-settle "^1.0.0" + now-and-later "^2.0.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= -base-x@^3.0.2: +base-x@3.0.5, base-x@^3.0.2: version "3.0.5" resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.5.tgz#d3ada59afed05b921ab581ec3112e6444ba0795a" integrity sha512-C3picSgzPSLE+jW3tcBzJoGwitOtazb5B+5YmAxZm2ybmTi9LNgAtDO/jjVEBZwHoXmDBZ9m/IELj3elJVRBcA== @@ -792,12 +794,7 @@ blakejs@^1.1.0: resolved "https://registry.yarnpkg.com/blakejs/-/blakejs-1.1.0.tgz#69df92ef953aa88ca51a32df6ab1c54a155fc7a5" integrity sha1-ad+S75U6qIylGjLfarHFShVfx6U= -bluebird@^3.5.0: - version "3.5.4" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.4.tgz#d6cc661595de30d5b3af5fcedd3c0b3ef6ec5714" - integrity sha512-FG+nFEZChJrbQ9tIccIfZJBz3J7mLrAhxakAbnrJWn8d7aKOC+LWifa0G+p4ZqKp4y13T7juYvdhq9NzKdsrjw== - -bluebird@^3.5.4: +bluebird@^3.5.0, bluebird@^3.5.4: version "3.5.5" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.5.tgz#a8d0afd73251effbbd5fe384a77d73003c17a71f" integrity sha512-5am6HnnfN+urzt4yfg7IgTbotDjIT/u8AJpEt0sIU9FtXfVeezXAPKswrG+xKUCOYAINpSdgZVDU6QFh+cuH3w== @@ -902,6 +899,11 @@ bs58@^4.0.1: dependencies: base-x "^3.0.2" +buffer-equal@^1.0.0: + version "1.0.0" + resolved "http://52.167.60.66:8081/repository/npm-all/buffer-equal/-/buffer-equal-1.0.0.tgz#59616b498304d556abd466966b22eeda3eca5fbe" + integrity sha1-WWFrSYME1Var1GaWayLu2j7KX74= + buffer-from@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" @@ -932,6 +934,11 @@ callsites@^3.0.0: resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== +camelcase@^3.0.0: + version "3.0.0" + resolved "http://52.167.60.66:8081/repository/npm-all/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" + integrity sha1-MvxLn82vhF/N9+c7uXysImHwqwo= + camelcase@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" @@ -1003,7 +1010,7 @@ check-error@^1.0.2: resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82" integrity sha1-V00xLt2Iu13YkS6Sht1sCu1KrII= -chokidar@^2.1.5: +chokidar@^2.0.0, chokidar@^2.1.5: version "2.1.5" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.5.tgz#0ae8434d962281a5f56c72869e79cb6d9d86ad4d" integrity sha512-i0TprVWp+Kj4WRPtInjexJ8Q+BqTE909VpH8xVhXrJkoc5QC8VO9TryGOqTr+2hljzc1sC62t22h5tZePodM/A== @@ -1077,6 +1084,15 @@ cli-width@^2.0.0: resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" integrity sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk= +cliui@^3.2.0: + version "3.2.0" + resolved "http://52.167.60.66:8081/repository/npm-all/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@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49" @@ -1095,11 +1111,44 @@ cliui@^5.0.0: strip-ansi "^5.2.0" wrap-ansi "^5.1.0" +clone-buffer@^1.0.0: + version "1.0.0" + resolved "http://52.167.60.66:8081/repository/npm-all/clone-buffer/-/clone-buffer-1.0.0.tgz#e3e25b207ac4e701af721e2cb5a16792cac3dc58" + integrity sha1-4+JbIHrE5wGvch4staFnksrD3Fg= + +clone-stats@^1.0.0: + version "1.0.0" + resolved "http://52.167.60.66:8081/repository/npm-all/clone-stats/-/clone-stats-1.0.0.tgz#b3782dff8bb5474e18b9b6bf0fdfe782f8777680" + integrity sha1-s3gt/4u1R04Yuba/D9/ngvh3doA= + +clone@^2.1.1: + version "2.1.2" + resolved "http://52.167.60.66:8081/repository/npm-all/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" + integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18= + +cloneable-readable@^1.0.0: + version "1.1.3" + resolved "http://52.167.60.66:8081/repository/npm-all/cloneable-readable/-/cloneable-readable-1.1.3.tgz#120a00cb053bfb63a222e709f9683ea2e11d8cec" + integrity sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ== + dependencies: + inherits "^2.0.1" + process-nextick-args "^2.0.0" + readable-stream "^2.3.5" + 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-map@^1.0.0: + version "1.0.0" + resolved "http://52.167.60.66:8081/repository/npm-all/collection-map/-/collection-map-1.0.0.tgz#aea0f06f8d26c780c2b75494385544b2255af18c" + integrity sha1-rqDwb40mx4DCt1SUOFVEsiVa8Yw= + dependencies: + arr-map "^2.0.2" + for-own "^1.0.0" + make-iterator "^1.0.0" + collection-visit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" @@ -1120,6 +1169,11 @@ color-name@1.1.3: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= +color-support@^1.1.3: + version "1.1.3" + resolved "http://52.167.60.66:8081/repository/npm-all/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" + integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== + combined-stream@^1.0.6, combined-stream@~1.0.6: version "1.0.7" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.7.tgz#2d1d24317afb8abe95d6d2c0b07b57813539d828" @@ -1137,7 +1191,7 @@ concat-map@0.0.1: resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= -concat-stream@^1.5.0: +concat-stream@^1.5.0, concat-stream@^1.6.0: version "1.6.2" resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== @@ -1174,6 +1228,13 @@ content-type@^1.0.2: resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== +convert-source-map@^1.5.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.6.0.tgz#51b537a8c43e0f04dec1993bffcdd504e758ac20" + integrity sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A== + dependencies: + safe-buffer "~5.1.1" + cookiejar@^2.1.0, cookiejar@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/cookiejar/-/cookiejar-2.1.2.tgz#dd8a235530752f988f9a0844f3fc589e3111125c" @@ -1184,6 +1245,14 @@ copy-descriptor@^0.1.0: resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= +copy-props@^2.0.1: + version "2.0.4" + resolved "http://52.167.60.66:8081/repository/npm-all/copy-props/-/copy-props-2.0.4.tgz#93bb1cadfafd31da5bb8a9d4b41f471ec3a72dfe" + integrity sha512-7cjuUME+p+S3HZlbllgsn2CDwS+5eCCX16qBgNC4jgSTf49qR1VKy/Zhl400m0IQXl/bPGEVqncgUUMjrr4s8A== + dependencies: + each-props "^1.3.0" + is-plain-object "^2.0.1" + core-js@^2.4.0: version "2.6.5" resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.5.tgz#44bc8d249e7fb2ff5d00e0341a7ffb94fbf67895" @@ -1294,7 +1363,7 @@ debug@^4.0.1, debug@^4.1.0: dependencies: ms "^2.1.1" -decamelize@^1.2.0: +decamelize@^1.1.1, decamelize@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= @@ -1321,6 +1390,18 @@ 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-compare@^1.0.0: + version "1.0.0" + resolved "http://52.167.60.66:8081/repository/npm-all/default-compare/-/default-compare-1.0.0.tgz#cb61131844ad84d84788fb68fd01681ca7781a2f" + integrity sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ== + dependencies: + kind-of "^5.0.2" + +default-resolution@^2.0.0: + version "2.0.0" + resolved "http://52.167.60.66:8081/repository/npm-all/default-resolution/-/default-resolution-2.0.0.tgz#bcb82baa72ad79b426a76732f1a81ad6df26d684" + integrity sha1-vLgrqnKtebQmp2cy8aga1t8m1oQ= + 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" @@ -1435,6 +1516,24 @@ duplexer3@^0.1.4: resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= +duplexify@^3.6.0: + version "3.7.1" + resolved "http://52.167.60.66:8081/repository/npm-all/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" + integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== + dependencies: + end-of-stream "^1.0.0" + inherits "^2.0.1" + readable-stream "^2.0.0" + stream-shift "^1.0.0" + +each-props@^1.3.0: + version "1.3.2" + resolved "http://52.167.60.66:8081/repository/npm-all/each-props/-/each-props-1.3.2.tgz#ea45a414d16dd5cfa419b1a81720d5ca06892333" + integrity sha512-vV0Hem3zAGkJAyU7JSjixeU66rwdynTAa1vofCrSA5fEln+m67Az9CcnkVD776/fsN/UjIWmBDoNRS6t6G9RfA== + dependencies: + is-plain-object "^2.0.1" + object.defaults "^1.1.0" + ecc-jsbn@~0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" @@ -1473,7 +1572,7 @@ encoding@^0.1.11: dependencies: iconv-lite "~0.4.13" -end-of-stream@^1.1.0: +end-of-stream@^1.0.0, end-of-stream@^1.1.0: version "1.4.1" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43" integrity sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q== @@ -1539,7 +1638,7 @@ es6-symbol@^3.1.1, es6-symbol@~3.1.1: d "1" es5-ext "~0.10.14" -es6-weak-map@^2.0.2: +es6-weak-map@^2.0.1, es6-weak-map@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.2.tgz#5e3ab32251ffd1538a1f8e5ffa1357772f92d96f" integrity sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8= @@ -1649,16 +1748,11 @@ eslint-plugin-react@7.14.3, eslint-plugin-react@~7.14.2: prop-types "^15.7.2" resolve "^1.10.1" -eslint-plugin-standard@4.0.1: +eslint-plugin-standard@4.0.1, eslint-plugin-standard@~4.0.0: version "4.0.1" resolved "http://52.167.60.66:8081/repository/npm-all/eslint-plugin-standard/-/eslint-plugin-standard-4.0.1.tgz#ff0519f7ffaff114f76d1bd7c3996eef0f6e20b4" integrity sha512-v/KBnfyaOMPmZc/dmc6ozOdWqekGp7bBGq4jLAecEfPGmfKiWS4sA8sC0LqiV9w5qmXAtXVn4M3p1jSyhY85SQ== -eslint-plugin-standard@~4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-standard/-/eslint-plugin-standard-4.0.0.tgz#f845b45109c99cd90e77796940a344546c8f6b5c" - integrity sha512-OwxJkR6TQiYMmt1EsNRMe5qG3GsbjlcOhbGUBY4LtavF9DsLaTcoR+j2Tdjqi23oUwKNUqX7qcn5fPStafMdlA== - eslint-scope@^4.0.0: version "4.0.3" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" @@ -1675,24 +1769,14 @@ eslint-scope@^5.0.0: esrecurse "^4.1.0" estraverse "^4.1.1" -eslint-utils@^1.3.0, eslint-utils@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.3.1.tgz#9a851ba89ee7c460346f97cf8939c7298827e512" - integrity sha512-Z7YjnIldX+2XMcjr7ZkgEsOj/bREONV60qYeB/bjMAqqqZ4zxKyWX+BOUkdmRmA9riiIPVvo5x86m5elviOk0Q== - -eslint-utils@^1.4.0: +eslint-utils@^1.3.0, eslint-utils@^1.3.1, eslint-utils@^1.4.0: version "1.4.2" resolved "http://52.167.60.66:8081/repository/npm-all/eslint-utils/-/eslint-utils-1.4.2.tgz#166a5180ef6ab7eb462f162fd0e6f2463d7309ab" integrity sha512-eAZS2sEUMlIeCjBeubdj45dmBHQwPHWyBcT1VSYB7o9x9WRRqKxyUoiXlRjyAwzN7YEzHJlYg0NmzDRWx6GP4Q== dependencies: eslint-visitor-keys "^1.0.0" -eslint-visitor-keys@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#3f3180fb2e291017716acb4c9d6d5b5c34a6a81d" - integrity sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ== - -eslint-visitor-keys@^1.1.0: +eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0: version "1.1.0" resolved "http://52.167.60.66:8081/repository/npm-all/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz#e2a82cea84ff246ad6fb57f9bde5b46621459ec2" integrity sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A== @@ -1829,10 +1913,10 @@ event-emitter@^0.3.5: d "1" es5-ext "~0.10.14" -eventemitter3@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.0.tgz#090b4d6cdbd645ed10bf750d4b5407942d7ba163" - integrity sha512-ivIvhpq/Y0uSjcHDcOIccjmYjGLcP09MFGE7ysAwkAvkXfpZlC985pH2/ui64DKazbTW/4kN3yqozUxlXzI6cA== +eventemitter3@^4.0.0: + version "4.0.0" + resolved "http://52.167.60.66:8081/repository/npm-all/eventemitter3/-/eventemitter3-4.0.0.tgz#d65176163887ee59f386d64c82610b696a4a74eb" + integrity sha512-qerSRB0p+UDEssxTtm6EDKcE7W4OaoisfIMl4CngyEhjpYglocpNg6UEqCvemdGhosAsg4sO2dXJOdyBifPGCg== evp_bytestokey@^1.0.3: version "1.0.3" @@ -1941,6 +2025,16 @@ extsprintf@^1.2.0: resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= +fancy-log@^1.3.2: + version "1.3.3" + resolved "http://52.167.60.66:8081/repository/npm-all/fancy-log/-/fancy-log-1.3.3.tgz#dbc19154f558690150a23953a0adbd035be45fc7" + integrity sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw== + dependencies: + ansi-gray "^0.1.1" + color-support "^1.1.3" + parse-node-version "^1.0.0" + time-stamp "^1.0.0" + 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" @@ -2005,6 +2099,14 @@ find-up@3.0.0, find-up@^3.0.0: dependencies: locate-path "^3.0.0" +find-up@^1.0.0: + version "1.1.2" + resolved "http://52.167.60.66:8081/repository/npm-all/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@^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" @@ -2012,6 +2114,16 @@ find-up@^2.0.0, find-up@^2.1.0: dependencies: locate-path "^2.0.0" +findup-sync@^2.0.0: + version "2.0.0" + resolved "http://52.167.60.66:8081/repository/npm-all/findup-sync/-/findup-sync-2.0.0.tgz#9326b1488c22d1a6088650a86901b2d9a90a2cbc" + integrity sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw= + dependencies: + detect-file "^1.0.0" + is-glob "^3.1.0" + micromatch "^3.0.4" + resolve-dir "^1.0.1" + findup-sync@^3.0.0: version "3.0.0" resolved "http://52.167.60.66:8081/repository/npm-all/findup-sync/-/findup-sync-3.0.0.tgz#17b108f9ee512dfb7a5c7f3c8b27ea9e1a9c08d1" @@ -2022,6 +2134,22 @@ findup-sync@^3.0.0: micromatch "^3.0.4" resolve-dir "^1.0.1" +fined@^1.0.1: + version "1.2.0" + resolved "http://52.167.60.66:8081/repository/npm-all/fined/-/fined-1.2.0.tgz#d00beccf1aa2b475d16d423b0238b713a2c4a37b" + integrity sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng== + dependencies: + expand-tilde "^2.0.2" + is-plain-object "^2.0.3" + object.defaults "^1.1.0" + object.pick "^1.2.0" + parse-filepath "^1.0.1" + +flagged-respawn@^1.0.0: + version "1.0.1" + resolved "http://52.167.60.66:8081/repository/npm-all/flagged-respawn/-/flagged-respawn-1.0.1.tgz#e7de6f1279ddd9ca9aac8a5971d618606b3aab41" + integrity sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q== + flat-cache@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" @@ -2043,11 +2171,26 @@ flatted@^2.0.0: resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.0.tgz#55122b6536ea496b4b44893ee2608141d10d9916" integrity sha512-R+H8IZclI8AAkSBRQJLVOsxwAoHd6WC40b4QTNWIjzAa6BXOBfQcM587MXDTVPeYaopFNWHUFLx7eNmHDSxMWg== -for-in@^1.0.2: +flush-write-stream@^1.0.2: + version "1.1.1" + resolved "http://52.167.60.66:8081/repository/npm-all/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" + integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w== + dependencies: + inherits "^2.0.3" + readable-stream "^2.3.6" + +for-in@^1.0.1, for-in@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= +for-own@^1.0.0: + version "1.0.0" + resolved "http://52.167.60.66:8081/repository/npm-all/for-own/-/for-own-1.0.0.tgz#c63332f415cedc4b04dbfe70cf836494c53cb44b" + integrity sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs= + 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" @@ -2081,6 +2224,14 @@ fs-minipass@^1.2.5: dependencies: minipass "^2.2.1" +fs-mkdirp-stream@^1.0.0: + version "1.0.0" + resolved "http://52.167.60.66:8081/repository/npm-all/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz#0b7815fc3201c6a69e14db98ce098c16935259eb" + integrity sha1-C3gV/DIBxqaeFNuYzgmMFpNSWes= + dependencies: + graceful-fs "^4.1.11" + through2 "^2.0.3" + fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" @@ -2203,7 +2354,35 @@ glob-parent@^5.0.0: dependencies: is-glob "^4.0.1" -glob@7.1.3, glob@^7.0.5, glob@^7.1.3: +glob-stream@^6.1.0: + version "6.1.0" + resolved "http://52.167.60.66:8081/repository/npm-all/glob-stream/-/glob-stream-6.1.0.tgz#7045c99413b3eb94888d83ab46d0b404cc7bdde4" + integrity sha1-cEXJlBOz65SIjYOrRtC0BMx73eQ= + dependencies: + extend "^3.0.0" + glob "^7.1.1" + glob-parent "^3.1.0" + is-negated-glob "^1.0.0" + ordered-read-streams "^1.0.0" + pumpify "^1.3.5" + readable-stream "^2.1.5" + remove-trailing-separator "^1.0.1" + to-absolute-glob "^2.0.0" + unique-stream "^2.0.2" + +glob-watcher@^5.0.3: + version "5.0.3" + resolved "http://52.167.60.66:8081/repository/npm-all/glob-watcher/-/glob-watcher-5.0.3.tgz#88a8abf1c4d131eb93928994bc4a593c2e5dd626" + integrity sha512-8tWsULNEPHKQ2MR4zXuzSmqbdyV5PtwwCaWSGQ1WwHsJ07ilNeN1JB8ntxhckbnpSHaf9dXFUHzIWvm1I13dsg== + dependencies: + anymatch "^2.0.0" + async-done "^1.2.0" + chokidar "^2.0.0" + is-negated-glob "^1.0.0" + just-debounce "^1.0.0" + object.defaults "^1.1.0" + +glob@7.1.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.3: version "7.1.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== @@ -2247,6 +2426,13 @@ globals@^11.7.0: resolved "https://registry.yarnpkg.com/globals/-/globals-11.11.0.tgz#dcf93757fa2de5486fbeed7118538adf789e9c2e" integrity sha512-WHq43gS+6ufNOEqlrDBxVEbb8ntfXrfAUU2ZOpCxrBdGKW3gyv8mCxAfIBD0DroPKGrJ2eSsXsLtY9MPntsyTw== +glogg@^1.0.0: + version "1.0.2" + resolved "http://52.167.60.66:8081/repository/npm-all/glogg/-/glogg-1.0.2.tgz#2d7dd702beda22eb3bffadf880696da6d846313f" + integrity sha512-5mwUoSuBk44Y4EshyiqcH95ZntbDdTQqA3QYSrxmzj28Ai0vXBGMH1ApSANH14j2sIRtqCEyg6PfsuP7ElOEDA== + dependencies: + sparkles "^1.0.0" + got@^6.7.1: version "6.7.1" resolved "https://registry.yarnpkg.com/got/-/got-6.7.1.tgz#240cd05785a9a18e561dc1b44b41c763ef1e8db0" @@ -2264,12 +2450,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.9: - version "4.1.15" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00" - integrity sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA== - -graceful-fs@^4.1.15: +graceful-fs@^4.0.0, graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9: version "4.2.2" resolved "http://52.167.60.66:8081/repository/npm-all/graceful-fs/-/graceful-fs-4.2.2.tgz#6f0952605d0140c1cfdb138ed005775b92d67b02" integrity sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q== @@ -2279,6 +2460,47 @@ growl@1.10.5: resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== +gulp-cli@^2.2.0: + version "2.2.0" + resolved "http://52.167.60.66:8081/repository/npm-all/gulp-cli/-/gulp-cli-2.2.0.tgz#5533126eeb7fe415a7e3e84a297d334d5cf70ebc" + integrity sha512-rGs3bVYHdyJpLqR0TUBnlcZ1O5O++Zs4bA0ajm+zr3WFCfiSLjGwoCBqFs18wzN+ZxahT9DkOK5nDf26iDsWjA== + dependencies: + ansi-colors "^1.0.1" + archy "^1.0.0" + array-sort "^1.0.0" + color-support "^1.1.3" + concat-stream "^1.6.0" + copy-props "^2.0.1" + fancy-log "^1.3.2" + gulplog "^1.0.0" + interpret "^1.1.0" + isobject "^3.0.1" + liftoff "^3.1.0" + matchdep "^2.0.0" + mute-stdout "^1.0.0" + pretty-hrtime "^1.0.0" + replace-homedir "^1.0.0" + semver-greatest-satisfied-range "^1.1.0" + v8flags "^3.0.1" + yargs "^7.1.0" + +gulp@^4.0.2: + version "4.0.2" + resolved "http://52.167.60.66:8081/repository/npm-all/gulp/-/gulp-4.0.2.tgz#543651070fd0f6ab0a0650c6a3e6ff5a7cb09caa" + integrity sha512-dvEs27SCZt2ibF29xYgmnwwCYZxdxhQ/+LFWlbAW8y7jt68L/65402Lz3+CKy0Ov4rOs+NERmDq7YlZaDqUIfA== + dependencies: + glob-watcher "^5.0.3" + gulp-cli "^2.2.0" + undertaker "^1.2.1" + vinyl-fs "^3.0.0" + +gulplog@^1.0.0: + version "1.0.0" + resolved "http://52.167.60.66:8081/repository/npm-all/gulplog/-/gulplog-1.0.0.tgz#e28c4d45d05ecbbed818363ce8f9c5926229ffe5" + integrity sha1-4oxNRdBey77YGDY86PnFkmIp/+U= + dependencies: + glogg "^1.0.0" + har-schema@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" @@ -2425,16 +2647,11 @@ ignore@^4.0.6: resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== -ignore@^5.0.0: +ignore@^5.0.0, ignore@^5.1.1: version "5.1.4" resolved "http://52.167.60.66:8081/repository/npm-all/ignore/-/ignore-5.1.4.tgz#84b7b3dbe64552b6ef0eca99f6743dbec6d97adf" integrity sha512-MzbUSahkTW1u7JpKKjY7LCARd1fU5W2rLdxlM4kdkayuCwZImjkpluF9CM1aLewYJguPDqewLam18Y6AU69A8A== -ignore@^5.1.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.2.tgz#e28e584d43ad7e92f96995019cc43b9e1ac49558" - integrity sha512-vdqWBp7MyzdmHkkRWV5nY+PfGRbYbahfuvsBCh277tq+w9zyNi7h5CYJCK0kmzti9kU+O/cB7sE8HvKv6aXAKQ== - immediate@~3.0.5: version "3.0.6" resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" @@ -2495,6 +2712,16 @@ inquirer@^6.4.1: strip-ansi "^5.1.0" through "^2.3.6" +interpret@^1.1.0: + version "1.2.0" + resolved "http://52.167.60.66:8081/repository/npm-all/interpret/-/interpret-1.2.0.tgz#d5061a6224be58e8083985f5014d844359576296" + integrity sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw== + +invert-kv@^1.0.0: + version "1.0.0" + resolved "http://52.167.60.66:8081/repository/npm-all/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" @@ -2510,6 +2737,14 @@ ip-regex@^4.1.0: resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-4.1.0.tgz#5ad62f685a14edb421abebc2fff8db94df67b455" integrity sha512-pKnZpbgCTfH/1NLIlOduP/V+WRXzC2MOz3Qo8xmxk8C5GudJLgK5QyLVXOSWy3ParAH7Eemurl3xjv/WXYFvMA== +is-absolute@^1.0.0: + version "1.0.0" + resolved "http://52.167.60.66:8081/repository/npm-all/is-absolute/-/is-absolute-1.0.0.tgz#395e1ae84b11f26ad1795e73c17378e48a301576" + integrity sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA== + dependencies: + is-relative "^1.0.0" + is-windows "^1.0.1" + 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" @@ -2658,6 +2893,11 @@ is-ip@^2.0.0: dependencies: ip-regex "^2.0.0" +is-negated-glob@^1.0.0: + version "1.0.0" + resolved "http://52.167.60.66:8081/repository/npm-all/is-negated-glob/-/is-negated-glob-1.0.0.tgz#6910bca5da8c95e784b5751b976cf5a10fee36d2" + integrity sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI= + is-npm@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4" @@ -2670,6 +2910,11 @@ is-number@^3.0.0: dependencies: kind-of "^3.0.2" +is-number@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff" + integrity sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ== + is-obj@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" @@ -2706,6 +2951,13 @@ is-regex@^1.0.4: dependencies: has "^1.0.1" +is-relative@^1.0.0: + version "1.0.0" + resolved "http://52.167.60.66:8081/repository/npm-all/is-relative/-/is-relative-1.0.0.tgz#a1bb6935ce8c5dba1e8b9754b9b2dcc020e2260d" + integrity sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA== + dependencies: + is-unc-path "^1.0.0" + is-retry-allowed@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34" @@ -2728,6 +2980,23 @@ is-typedarray@^1.0.0, is-typedarray@~1.0.0: resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= +is-unc-path@^1.0.0: + version "1.0.0" + resolved "http://52.167.60.66:8081/repository/npm-all/is-unc-path/-/is-unc-path-1.0.0.tgz#d731e8898ed090a12c352ad2eaed5095ad322c9d" + integrity sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ== + dependencies: + unc-path-regex "^0.1.2" + +is-utf8@^0.2.0, is-utf8@^0.2.1: + version "0.2.1" + resolved "http://52.167.60.66:8081/repository/npm-all/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" + integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI= + +is-valid-glob@^1.0.0: + version "1.0.0" + resolved "http://52.167.60.66:8081/repository/npm-all/is-valid-glob/-/is-valid-glob-1.0.0.tgz#29bf3eff701be2d4d315dbacc39bc39fe8f601aa" + integrity sha1-Kb8+/3Ab4tTTFdusw5vDn+j2Aao= + is-windows@^1.0.1, is-windows@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" @@ -2875,6 +3144,11 @@ jsx-ast-utils@^2.1.0: dependencies: array-includes "^3.0.3" +just-debounce@^1.0.0: + version "1.0.0" + resolved "http://52.167.60.66:8081/repository/npm-all/just-debounce/-/just-debounce-1.0.0.tgz#87fccfaeffc0b68cd19d55f6722943f929ea35ea" + integrity sha1-h/zPrv/AtozRnVX2cilD+SnqNeo= + 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" @@ -2889,7 +3163,7 @@ kind-of@^4.0.0: dependencies: is-buffer "^1.1.5" -kind-of@^5.0.0: +kind-of@^5.0.0, kind-of@^5.0.2: version "5.1.0" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== @@ -2906,6 +3180,14 @@ klaw@^3.0.0: dependencies: graceful-fs "^4.1.9" +last-run@^1.1.0: + version "1.1.1" + resolved "http://52.167.60.66:8081/repository/npm-all/last-run/-/last-run-1.1.1.tgz#45b96942c17b1c79c772198259ba943bebf8ca5b" + integrity sha1-RblpQsF7HHnHchmCWbqUO+v4yls= + dependencies: + default-resolution "^2.0.0" + es6-weak-map "^2.0.1" + latest-version@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-3.1.0.tgz#a205383fea322b33b5ae3b18abee0dc2f356ee15" @@ -2913,6 +3195,20 @@ latest-version@^3.0.0: dependencies: package-json "^4.0.0" +lazystream@^1.0.0: + version "1.0.0" + resolved "http://52.167.60.66:8081/repository/npm-all/lazystream/-/lazystream-1.0.0.tgz#f6995fe0f820392f61396be89462407bb77168e4" + integrity sha1-9plf4PggOS9hOWvolGJAe7dxaOQ= + dependencies: + readable-stream "^2.0.5" + +lcid@^1.0.0: + version "1.0.0" + resolved "http://52.167.60.66:8081/repository/npm-all/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" + integrity sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU= + 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" @@ -2920,6 +3216,13 @@ lcid@^2.0.0: dependencies: invert-kv "^2.0.0" +lead@^1.0.0: + version "1.0.0" + resolved "http://52.167.60.66:8081/repository/npm-all/lead/-/lead-1.0.0.tgz#6f14f99a37be3a9dd784f5495690e5903466ee42" + integrity sha1-bxT5mje+Op3XhPVJVpDlkDRm7kI= + dependencies: + flush-write-stream "^1.0.2" + levn@^0.3.0, levn@~0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" @@ -2935,6 +3238,20 @@ lie@3.1.1: dependencies: immediate "~3.0.5" +liftoff@^3.1.0: + version "3.1.0" + resolved "http://52.167.60.66:8081/repository/npm-all/liftoff/-/liftoff-3.1.0.tgz#c9ba6081f908670607ee79062d700df062c52ed3" + integrity sha512-DlIPlJUkCV0Ips2zf2pJP0unEoT1kwYhiiPUGF3s/jtxTCjziNLoiVVh+jqWOWeFi6mmwQ5fNxvAUyPad4Dfog== + dependencies: + extend "^3.0.0" + findup-sync "^3.0.0" + fined "^1.0.1" + flagged-respawn "^1.0.0" + is-plain-object "^2.0.4" + object.map "^1.0.0" + rechoir "^0.6.2" + resolve "^1.1.7" + linkify-it@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-2.1.0.tgz#c4caf38a6cd7ac2212ef3c7d2bde30a91561f9db" @@ -2942,6 +3259,17 @@ linkify-it@^2.0.0: dependencies: uc.micro "^1.0.1" +load-json-file@^1.0.0: + version "1.1.0" + resolved "http://52.167.60.66:8081/repository/npm-all/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@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" @@ -2996,12 +3324,7 @@ lodash@^3.10.1: resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6" integrity sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y= -lodash@^4.17.11: - version "4.17.11" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" - integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg== - -lodash@^4.17.14, lodash@^4.17.15: +lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15: version "4.17.15" resolved "http://52.167.60.66:8081/repository/npm-all/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== @@ -3052,6 +3375,13 @@ make-dir@^1.0.0: dependencies: pify "^3.0.0" +make-iterator@^1.0.0: + version "1.0.1" + resolved "http://52.167.60.66:8081/repository/npm-all/make-iterator/-/make-iterator-1.0.1.tgz#29b33f312aa8f547c4a5e490f56afcec99133ad6" + integrity sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw== + dependencies: + kind-of "^6.0.2" + 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" @@ -3059,7 +3389,7 @@ map-age-cleaner@^0.1.1: dependencies: p-defer "^1.0.0" -map-cache@^0.2.2: +map-cache@^0.2.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= @@ -3100,6 +3430,16 @@ martinez-polygon-clipping@^0.4.3: splaytree "^0.1.4" tinyqueue "^1.2.0" +matchdep@^2.0.0: + version "2.0.0" + resolved "http://52.167.60.66:8081/repository/npm-all/matchdep/-/matchdep-2.0.0.tgz#c6f34834a0d8dbc3b37c27ee8bbcb27c7775582e" + integrity sha1-xvNINKDY28OzfCfui7yyfHd1WC4= + dependencies: + findup-sync "^2.0.0" + micromatch "^3.0.4" + resolve "^1.4.0" + stack-trace "0.0.10" + matrix-js-sdk@2.3.0: version "2.3.0" resolved "http://52.167.60.66:8081/repository/npm-all/matrix-js-sdk/-/matrix-js-sdk-2.3.0.tgz#ed04172add2e31c532dc87e2f38c26c2a63191c6" @@ -3321,17 +3661,17 @@ ms@2.1.1, ms@^2.1.1: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== +mute-stdout@^1.0.0: + version "1.0.1" + resolved "http://52.167.60.66:8081/repository/npm-all/mute-stdout/-/mute-stdout-1.0.1.tgz#acb0300eb4de23a7ddeec014e3e96044b3472331" + integrity sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg== + mute-stream@0.0.8: version "0.0.8" resolved "http://52.167.60.66:8081/repository/npm-all/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== -nan@^2.11.0, nan@^2.12.1: - version "2.13.2" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.13.2.tgz#f51dc7ae66ba7d5d55e1e6d4d8092e802c9aefe7" - integrity sha512-TghvYc72wlMGMVMluVo9WRJc0mB8KxxF/gZ4YYFy7V2ZQX9l7rgbPg7vjS9mt6U5HXODVFVI2bOduCzwOMv/lw== - -nan@^2.14.0: +nan@^2.11.0, nan@^2.12.1, nan@^2.14.0: version "2.14.0" resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c" integrity sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg== @@ -3473,6 +3813,13 @@ normalize-path@^3.0.0: resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== +now-and-later@^2.0.0: + version "2.0.1" + resolved "http://52.167.60.66:8081/repository/npm-all/now-and-later/-/now-and-later-2.0.1.tgz#8e579c8685764a7cc02cb680380e94f43ccb1f7c" + integrity sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ== + dependencies: + once "^1.3.2" + npm-bundled@^1.0.1: version "1.0.6" resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.6.tgz#e7ba9aadcef962bb61248f91721cd932b3fe6bdd" @@ -3539,7 +3886,7 @@ object-visit@^1.0.0: dependencies: isobject "^3.0.0" -object.assign@4.1.0: +object.assign@4.1.0, object.assign@^4.0.4: version "4.1.0" resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== @@ -3549,6 +3896,16 @@ object.assign@4.1.0: has-symbols "^1.0.0" object-keys "^1.0.11" +object.defaults@^1.0.0, object.defaults@^1.1.0: + version "1.1.0" + resolved "http://52.167.60.66:8081/repository/npm-all/object.defaults/-/object.defaults-1.1.0.tgz#3a7f868334b407dea06da16d88d5cd29e435fecf" + integrity sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8= + dependencies: + array-each "^1.0.1" + array-slice "^1.0.0" + for-own "^1.0.0" + isobject "^3.0.0" + object.entries@^1.1.0: version "1.1.0" resolved "http://52.167.60.66:8081/repository/npm-all/object.entries/-/object.entries-1.1.0.tgz#2024fc6d6ba246aee38bdb0ffd5cfbcf371b7519" @@ -3577,13 +3934,29 @@ object.getownpropertydescriptors@^2.0.3: define-properties "^1.1.2" es-abstract "^1.5.1" -object.pick@^1.3.0: +object.map@^1.0.0: + version "1.0.1" + resolved "http://52.167.60.66:8081/repository/npm-all/object.map/-/object.map-1.0.1.tgz#cf83e59dc8fcc0ad5f4250e1f78b3b81bd801d37" + integrity sha1-z4Plncj8wK1fQlDh94s7gb2AHTc= + dependencies: + for-own "^1.0.0" + make-iterator "^1.0.0" + +object.pick@^1.2.0, 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" +object.reduce@^1.0.0: + version "1.0.1" + resolved "http://52.167.60.66:8081/repository/npm-all/object.reduce/-/object.reduce-1.0.1.tgz#6fe348f2ac7fa0f95ca621226599096825bb03ad" + integrity sha1-b+NI8qx/oPlcpiEiZZkJaCW7A60= + dependencies: + for-own "^1.0.0" + make-iterator "^1.0.0" + object.values@^1.1.0: version "1.1.0" resolved "http://52.167.60.66:8081/repository/npm-all/object.values/-/object.values-1.1.0.tgz#bf6810ef5da3e5325790eaaa2be213ea84624da9" @@ -3598,7 +3971,7 @@ object.values@^1.1.0: version "3.0.0" resolved "https://matrix.org/packages/npm/olm/olm-3.0.0.tgz#4a6f5e83c5c4d05a268246a5db9bdf0e720311b1" -once@^1.3.0, once@^1.3.1, once@^1.4.0: +once@^1.3.0, once@^1.3.1, once@^1.3.2, once@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= @@ -3624,11 +3997,25 @@ optionator@^0.8.2: type-check "~0.3.2" wordwrap "~1.0.0" +ordered-read-streams@^1.0.0: + version "1.0.1" + resolved "http://52.167.60.66:8081/repository/npm-all/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz#77c0cb37c41525d64166d990ffad7ec6a0e1363e" + integrity sha1-d8DLN8QVJdZBZtmQ/61+xqDhNj4= + dependencies: + readable-stream "^2.0.1" + os-homedir@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= +os-locale@^1.4.0: + version "1.4.0" + resolved "http://52.167.60.66:8081/repository/npm-all/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" + integrity sha1-IPnxeuKe00XoveWDsT0gCYA8FNk= + dependencies: + lcid "^1.0.0" + os-locale@^3.0.0, os-locale@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" @@ -3721,6 +4108,15 @@ parent-module@^1.0.0: dependencies: callsites "^3.0.0" +parse-filepath@^1.0.1: + version "1.0.2" + resolved "http://52.167.60.66:8081/repository/npm-all/parse-filepath/-/parse-filepath-1.0.2.tgz#a632127f53aaf3d15876f5872f3ffac763d6c891" + integrity sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE= + dependencies: + is-absolute "^1.0.0" + map-cache "^0.2.0" + path-root "^0.1.1" + parse-json@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" @@ -3736,6 +4132,11 @@ parse-json@^4.0.0: error-ex "^1.3.1" json-parse-better-errors "^1.0.1" +parse-node-version@^1.0.0: + version "1.0.1" + resolved "http://52.167.60.66:8081/repository/npm-all/parse-node-version/-/parse-node-version-1.0.1.tgz#e2b5dbede00e7fa9bc363607f53327e8b073189b" + integrity sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA== + parse-passwd@^1.0.0: version "1.0.0" resolved "http://52.167.60.66:8081/repository/npm-all/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" @@ -3751,6 +4152,13 @@ path-dirname@^1.0.0: resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= +path-exists@^2.0.0: + version "2.1.0" + resolved "http://52.167.60.66:8081/repository/npm-all/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" @@ -3776,6 +4184,27 @@ path-parse@^1.0.6: resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== +path-root-regex@^0.1.0: + version "0.1.2" + resolved "http://52.167.60.66:8081/repository/npm-all/path-root-regex/-/path-root-regex-0.1.2.tgz#bfccdc8df5b12dc52c8b43ec38d18d72c04ba96d" + integrity sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0= + +path-root@^0.1.1: + version "0.1.1" + resolved "http://52.167.60.66:8081/repository/npm-all/path-root/-/path-root-0.1.1.tgz#9a4a6814cac1c0cd73360a95f32083c8ea4745b7" + integrity sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc= + dependencies: + path-root-regex "^0.1.0" + +path-type@^1.0.0: + version "1.1.0" + resolved "http://52.167.60.66:8081/repository/npm-all/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@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" @@ -3819,6 +4248,18 @@ pify@^4.0.1: resolved "http://52.167.60.66:8081/repository/npm-all/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== +pinkie-promise@^2.0.0: + version "2.0.1" + resolved "http://52.167.60.66:8081/repository/npm-all/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 "http://52.167.60.66:8081/repository/npm-all/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" + integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= + pkg-conf@^3.1.0: version "3.1.0" resolved "http://52.167.60.66:8081/repository/npm-all/pkg-conf/-/pkg-conf-3.1.0.tgz#d9f9c75ea1bae0e77938cde045b276dac7cc69ae" @@ -3858,7 +4299,12 @@ prepend-http@^1.0.1: resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= -process-nextick-args@~2.0.0: +pretty-hrtime@^1.0.0: + version "1.0.3" + resolved "http://52.167.60.66:8081/repository/npm-all/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz#b7e3ea42435a4c9b2759d99e0f201eb195802ee1" + integrity sha1-t+PqQkNaTJsnWdmeDyAesZWALuE= + +process-nextick-args@^2.0.0, process-nextick-args@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" integrity sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw== @@ -3892,6 +4338,14 @@ pstree.remy@^1.1.6: resolved "https://registry.yarnpkg.com/pstree.remy/-/pstree.remy-1.1.6.tgz#73a55aad9e2d95814927131fbf4dc1b62d259f47" integrity sha512-NdF35+QsqD7EgNEI5mkI/X+UwaxVEbQaz9f4IooEmMUv6ZPmlTQYGjBPJGgrlzNdjSvIy4MWMg6Q6vCgBO2K+w== +pump@^2.0.0: + version "2.0.1" + resolved "http://52.167.60.66:8081/repository/npm-all/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" + integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + pump@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" @@ -3900,6 +4354,15 @@ pump@^3.0.0: end-of-stream "^1.1.0" once "^1.3.1" +pumpify@^1.3.5: + version "1.5.1" + resolved "http://52.167.60.66:8081/repository/npm-all/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" + integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== + dependencies: + duplexify "^3.6.0" + inherits "^2.0.3" + pump "^2.0.0" + punycode@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" @@ -3954,6 +4417,14 @@ react-is@^16.8.1: resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.8.6.tgz#5bbc1e2d29141c9fbdfed456343fe2bc430a6a16" integrity sha512-aUk3bHfZ2bRSVFFbbeVS4i+lNPZr3/WM5jT2J5omUVV1zzcs1nAaf3l51ctA5FFvCRbhrH0bdAsRRQddFJZPtA== +read-pkg-up@^1.0.1: + version "1.0.1" + resolved "http://52.167.60.66:8081/repository/npm-all/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@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" @@ -3962,6 +4433,15 @@ read-pkg-up@^2.0.0: find-up "^2.0.0" read-pkg "^2.0.0" +read-pkg@^1.0.0: + version "1.1.0" + resolved "http://52.167.60.66:8081/repository/npm-all/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@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" @@ -3971,7 +4451,7 @@ read-pkg@^2.0.0: normalize-package-data "^2.3.2" path-type "^2.0.0" -readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.2.2, readable-stream@^2.3.5: +readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@~2.3.6: version "2.3.6" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw== @@ -4002,6 +4482,13 @@ readdirp@^2.2.1: micromatch "^3.1.10" readable-stream "^2.0.2" +rechoir@^0.6.2: + version "0.6.2" + resolved "http://52.167.60.66:8081/repository/npm-all/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" + integrity sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q= + dependencies: + resolve "^1.1.6" + regenerator-runtime@^0.11.0: version "0.11.1" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" @@ -4040,7 +4527,24 @@ registry-url@^3.0.3: dependencies: rc "^1.0.1" -remove-trailing-separator@^1.0.1: +remove-bom-buffer@^3.0.0: + version "3.0.0" + resolved "http://52.167.60.66:8081/repository/npm-all/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz#c2bf1e377520d324f623892e33c10cac2c252b53" + integrity sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ== + dependencies: + is-buffer "^1.1.5" + is-utf8 "^0.2.1" + +remove-bom-stream@^1.2.0: + version "1.2.0" + resolved "http://52.167.60.66:8081/repository/npm-all/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz#05f1a593f16e42e1fb90ebf59de8e569525f9523" + integrity sha1-BfGlk/FuQuH7kOv1nejlaVJflSM= + dependencies: + remove-bom-buffer "^3.0.0" + safe-buffer "^5.1.0" + through2 "^2.0.3" + +remove-trailing-separator@^1.0.1, remove-trailing-separator@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= @@ -4055,6 +4559,20 @@ repeat-string@^1.6.1: resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= +replace-ext@^1.0.0: + version "1.0.0" + resolved "http://52.167.60.66:8081/repository/npm-all/replace-ext/-/replace-ext-1.0.0.tgz#de63128373fcbf7c3ccfa4de5a480c45a67958eb" + integrity sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs= + +replace-homedir@^1.0.0: + version "1.0.0" + resolved "http://52.167.60.66:8081/repository/npm-all/replace-homedir/-/replace-homedir-1.0.0.tgz#e87f6d513b928dde808260c12be7fec6ff6e798c" + integrity sha1-6H9tUTuSjd6AgmDBK+f+xv9ueYw= + dependencies: + homedir-polyfill "^1.0.1" + is-absolute "^1.0.0" + remove-trailing-separator "^1.1.0" + request@^2.88.0: version "2.88.0" resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef" @@ -4116,19 +4634,19 @@ resolve-from@^4.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== +resolve-options@^1.1.0: + version "1.1.0" + resolved "http://52.167.60.66:8081/repository/npm-all/resolve-options/-/resolve-options-1.1.0.tgz#32bb9e39c06d67338dc9378c0d6d6074566ad131" + integrity sha1-MrueOcBtZzONyTeMDW1gdFZq0TE= + dependencies: + value-or-function "^3.0.0" + resolve-url@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= -resolve@^1.10.0, resolve@^1.5.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.10.0.tgz#3bdaaeaf45cc07f375656dfd2e54ed0810b101ba" - integrity sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg== - dependencies: - path-parse "^1.0.6" - -resolve@^1.10.1, resolve@^1.11.0: +resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.10.1, resolve@^1.11.0, resolve@^1.4.0, resolve@^1.5.0: version "1.11.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.11.0.tgz#4014870ba296176b86343d50b60f3b50609ce232" integrity sha512-WL2pBDjqT6pGUNSUzMw00o4T7If+z4H2x3Gz893WoUQ5KW8Vr9txp00ykiP16VBaZF5+j/OcXJHZ9+PCvdiDKw== @@ -4225,17 +4743,19 @@ semver-diff@^2.0.0: dependencies: semver "^5.0.3" +semver-greatest-satisfied-range@^1.1.0: + version "1.1.0" + resolved "http://52.167.60.66:8081/repository/npm-all/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-1.1.0.tgz#13e8c2658ab9691cb0cd71093240280d36f77a5b" + integrity sha1-E+jCZYq5aRywzXEJMkAoDTb3els= + dependencies: + sver-compat "^1.5.0" + "semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@^5.5.0, semver@^5.7.0: version "5.7.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b" integrity sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA== -semver@^6.1.0: - version "6.1.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.1.1.tgz#53f53da9b30b2103cd4f15eab3a18ecbcb210c9b" - integrity sha512-rWYq2e5iYW+fFe/oPPtYJxYgjBm8sC4rmoGdUOgBB7VnwKt6HrL793l2voH1UlsyYZpJ4g0wfjnTEO1s1NP2eQ== - -semver@^6.1.2, semver@^6.2.0: +semver@^6.1.0, semver@^6.1.2, semver@^6.2.0: version "6.3.0" resolved "http://52.167.60.66:8081/repository/npm-all/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== @@ -4363,6 +4883,11 @@ source-map@^0.5.6: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= +sparkles@^1.0.0: + version "1.0.1" + resolved "http://52.167.60.66:8081/repository/npm-all/sparkles/-/sparkles-1.0.1.tgz#008db65edce6c50eec0c5e228e1945061dd0437c" + integrity sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw== + spdx-correct@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4" @@ -4421,6 +4946,11 @@ sshpk@^1.7.0: safer-buffer "^2.0.2" tweetnacl "~0.14.0" +stack-trace@0.0.10: + version "0.0.10" + resolved "http://52.167.60.66:8081/repository/npm-all/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0" + integrity sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA= + standard-engine@^12.0.0: version "12.0.0" resolved "http://52.167.60.66:8081/repository/npm-all/standard-engine/-/standard-engine-12.0.0.tgz#1643dceba96ca9c04c535a1fb28d79bfb21b3572" @@ -4462,7 +4992,17 @@ static-extend@^0.1.1: define-property "^0.2.5" object-copy "^0.1.0" -string-width@^1.0.1: +stream-exhaust@^1.0.1: + version "1.0.2" + resolved "http://52.167.60.66:8081/repository/npm-all/stream-exhaust/-/stream-exhaust-1.0.2.tgz#acdac8da59ef2bc1e17a2c0ccf6c320d120e555d" + integrity sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw== + +stream-shift@^1.0.0: + version "1.0.0" + resolved "http://52.167.60.66:8081/repository/npm-all/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952" + integrity sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI= + +string-width@^1.0.1, string-width@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= @@ -4532,6 +5072,13 @@ strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: dependencies: ansi-regex "^4.1.0" +strip-bom@^2.0.0: + version "2.0.0" + resolved "http://52.167.60.66:8081/repository/npm-all/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" @@ -4582,6 +5129,14 @@ supports-color@^5.2.0, supports-color@^5.3.0: dependencies: has-flag "^3.0.0" +sver-compat@^1.5.0: + version "1.5.0" + resolved "http://52.167.60.66:8081/repository/npm-all/sver-compat/-/sver-compat-1.5.0.tgz#3cf87dfeb4d07b4a3f14827bc186b3fd0c645cd8" + integrity sha1-PPh9/rTQe0o/FIJ7wYaz/QxkXNg= + dependencies: + es6-iterator "^2.0.1" + es6-symbol "^3.1.1" + table@^5.2.3: version "5.4.0" resolved "https://registry.yarnpkg.com/table/-/table-5.4.0.tgz#d772a3216e68829920a41a32c18eda286c95d780" @@ -4627,11 +5182,32 @@ text-table@^0.2.0: resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= +through2-filter@^3.0.0: + version "3.0.0" + resolved "http://52.167.60.66:8081/repository/npm-all/through2-filter/-/through2-filter-3.0.0.tgz#700e786df2367c2c88cd8aa5be4cf9c1e7831254" + integrity sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA== + dependencies: + through2 "~2.0.0" + xtend "~4.0.0" + +through2@^2.0.0, through2@^2.0.3, through2@~2.0.0: + version "2.0.5" + resolved "http://52.167.60.66:8081/repository/npm-all/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" + integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== + dependencies: + readable-stream "~2.3.6" + xtend "~4.0.1" + 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= +time-stamp@^1.0.0: + version "1.1.0" + resolved "http://52.167.60.66:8081/repository/npm-all/time-stamp/-/time-stamp-1.1.0.tgz#764a5a11af50561921b133f3b44e618687e0f5c3" + integrity sha1-dkpaEa9QVhkhsTPztE5hhofg9cM= + timed-out@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" @@ -4657,6 +5233,14 @@ tmp@^0.0.33: dependencies: os-tmpdir "~1.0.2" +to-absolute-glob@^2.0.0: + version "2.0.2" + resolved "http://52.167.60.66:8081/repository/npm-all/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz#1865f43d9e74b0822db9f145b78cff7d0f7c849b" + integrity sha1-GGX0PZ50sIItufFFt4z/fQ98hJs= + dependencies: + is-absolute "^1.0.0" + is-negated-glob "^1.0.0" + 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" @@ -4682,6 +5266,13 @@ to-regex@^3.0.1, to-regex@^3.0.2: regex-not "^1.0.2" safe-regex "^1.1.0" +to-through@^2.0.0: + version "2.0.0" + resolved "http://52.167.60.66:8081/repository/npm-all/to-through/-/to-through-2.0.0.tgz#fc92adaba072647bc0b67d6b03664aa195093af6" + integrity sha1-/JKtq6ByZHvAtn1rA2ZKoZUJOvY= + dependencies: + through2 "^2.0.3" + touch@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/touch/-/touch-3.1.0.tgz#fe365f5f75ec9ed4e56825e0bb76d24ab74af83b" @@ -4697,16 +5288,11 @@ tough-cookie@~2.4.3: psl "^1.1.24" punycode "^1.4.1" -tslib@^1.8.1: +tslib@^1.8.1, tslib@^1.9.0: version "1.10.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a" integrity sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ== -tslib@^1.9.0: - version "1.9.3" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286" - integrity sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ== - tsutils@^3.14.0: version "3.17.1" resolved "http://52.167.60.66:8081/repository/npm-all/tsutils/-/tsutils-3.17.1.tgz#ed719917f11ca0dee586272b2ac49e015a2dd759" @@ -4775,6 +5361,11 @@ uc.micro@^1.0.1, uc.micro@^1.0.5: resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.6.tgz#9c411a802a409a91fc6cf74081baba34b24499ac" integrity sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA== +unc-path-regex@^0.1.2: + version "0.1.2" + resolved "http://52.167.60.66:8081/repository/npm-all/unc-path-regex/-/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa" + integrity sha1-5z3T17DXxe2G+6xrCufYxqadUPo= + undefsafe@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/undefsafe/-/undefsafe-2.0.2.tgz#225f6b9e0337663e0d8e7cfd686fc2836ccace76" @@ -4792,6 +5383,26 @@ underscore@~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== +undertaker-registry@^1.0.0: + version "1.0.1" + resolved "http://52.167.60.66:8081/repository/npm-all/undertaker-registry/-/undertaker-registry-1.0.1.tgz#5e4bda308e4a8a2ae584f9b9a4359a499825cc50" + integrity sha1-XkvaMI5KiirlhPm5pDWaSZglzFA= + +undertaker@^1.2.1: + version "1.2.1" + resolved "http://52.167.60.66:8081/repository/npm-all/undertaker/-/undertaker-1.2.1.tgz#701662ff8ce358715324dfd492a4f036055dfe4b" + integrity sha512-71WxIzDkgYk9ZS+spIB8iZXchFhAdEo2YU8xYqBYJ39DIUIqziK78ftm26eecoIY49X0J2MLhG4hr18Yp6/CMA== + dependencies: + arr-flatten "^1.0.1" + arr-map "^2.0.0" + bach "^1.0.0" + collection-map "^1.0.0" + es6-weak-map "^2.0.1" + last-run "^1.1.0" + object.defaults "^1.0.0" + object.reduce "^1.0.0" + undertaker-registry "^1.0.0" + unhomoglyph@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/unhomoglyph/-/unhomoglyph-1.0.2.tgz#d69e5f5a6a1c6b211941a0889b81eba86595c253" @@ -4812,6 +5423,14 @@ uniq@^1.0.1: resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= +unique-stream@^2.0.2: + version "2.3.1" + resolved "http://52.167.60.66:8081/repository/npm-all/unique-stream/-/unique-stream-2.3.1.tgz#c65d110e9a4adf9a6c5948b28053d9a8d04cbeac" + integrity sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A== + dependencies: + json-stable-stringify-without-jsonify "^1.0.1" + through2-filter "^3.0.0" + unique-string@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-1.0.0.tgz#9e1057cca851abb93398f8b33ae187b99caec11a" @@ -4897,6 +5516,13 @@ v8-compile-cache@^2.0.3: resolved "http://52.167.60.66:8081/repository/npm-all/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz#e14de37b31a6d194f5690d67efc4e7f6fc6ab30e" integrity sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g== +v8flags@^3.0.1: + version "3.1.3" + resolved "http://52.167.60.66:8081/repository/npm-all/v8flags/-/v8flags-3.1.3.tgz#fc9dc23521ca20c5433f81cc4eb9b3033bb105d8" + integrity sha512-amh9CCg3ZxkzQ48Mhcb8iX7xpAfYJgePHxWMQCBWECpOSqJUXgY26ncA61UTV0BkPqfhcy6mzwCIoP4ygxpW8w== + dependencies: + homedir-polyfill "^1.0.1" + 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" @@ -4905,6 +5531,11 @@ validate-npm-package-license@^3.0.1: spdx-correct "^3.0.0" spdx-expression-parse "^3.0.0" +value-or-function@^3.0.0: + version "3.0.0" + resolved "http://52.167.60.66:8081/repository/npm-all/value-or-function/-/value-or-function-3.0.0.tgz#1c243a50b595c1be54a754bfece8563b9ff8d813" + integrity sha1-HCQ6ULWVwb5Up1S/7OhWO5/42BM= + verror@1.10.0: version "1.10.0" resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" @@ -4914,12 +5545,61 @@ verror@1.10.0: core-util-is "1.0.2" extsprintf "^1.2.0" -websocket@^1.0.28: - version "1.0.28" - resolved "https://registry.yarnpkg.com/websocket/-/websocket-1.0.28.tgz#9e5f6fdc8a3fe01d4422647ef93abdd8d45a78d3" - integrity sha512-00y/20/80P7H4bCYkzuuvvfDvh+dgtXi5kzDf3UcZwN6boTYaKvsrtZ5lIYm1Gsg48siMErd9M4zjSYfYFHTrA== +vinyl-fs@^3.0.0: + version "3.0.3" + resolved "http://52.167.60.66:8081/repository/npm-all/vinyl-fs/-/vinyl-fs-3.0.3.tgz#c85849405f67428feabbbd5c5dbdd64f47d31bc7" + integrity sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng== + dependencies: + fs-mkdirp-stream "^1.0.0" + glob-stream "^6.1.0" + graceful-fs "^4.0.0" + is-valid-glob "^1.0.0" + lazystream "^1.0.0" + lead "^1.0.0" + object.assign "^4.0.4" + pumpify "^1.3.5" + readable-stream "^2.3.3" + remove-bom-buffer "^3.0.0" + remove-bom-stream "^1.2.0" + resolve-options "^1.1.0" + through2 "^2.0.0" + to-through "^2.0.0" + value-or-function "^3.0.0" + vinyl "^2.0.0" + vinyl-sourcemap "^1.1.0" + +vinyl-sourcemap@^1.1.0: + version "1.1.0" + resolved "http://52.167.60.66:8081/repository/npm-all/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz#92a800593a38703a8cdb11d8b300ad4be63b3e16" + integrity sha1-kqgAWTo4cDqM2xHYswCtS+Y7PhY= + dependencies: + append-buffer "^1.0.2" + convert-source-map "^1.5.0" + graceful-fs "^4.1.6" + normalize-path "^2.1.1" + now-and-later "^2.0.0" + remove-bom-buffer "^3.0.0" + vinyl "^2.0.0" + +vinyl@^2.0.0: + version "2.2.0" + resolved "http://52.167.60.66:8081/repository/npm-all/vinyl/-/vinyl-2.2.0.tgz#d85b07da96e458d25b2ffe19fece9f2caa13ed86" + integrity sha512-MBH+yP0kC/GQ5GwBqrTPTzEfiiLjta7hTtvQtbxBgTeSXsmKQRQecjibMbxIXzVT3Y9KJK+drOz1/k+vsu8Nkg== + dependencies: + clone "^2.1.1" + clone-buffer "^1.0.0" + clone-stats "^1.0.0" + cloneable-readable "^1.0.0" + remove-trailing-separator "^1.0.1" + replace-ext "^1.0.0" + +websocket@^1.0.29: + version "1.0.29" + resolved "http://52.167.60.66:8081/repository/npm-all/websocket/-/websocket-1.0.29.tgz#3f83e49d3279657c58b02a22d90749c806101b98" + integrity sha512-WhU8jKXC8sTh6ocLSqpZRlOKMNYGwUvjA5+XcIgIk/G3JCaDfkZUr0zA19sVSxJ0TEvm0i5IBzr54RZC4vzW7g== dependencies: debug "^2.2.0" + gulp "^4.0.2" nan "^2.11.0" typedarray-to-buffer "^3.1.5" yaeti "^0.0.6" @@ -4929,6 +5609,11 @@ whatwg-fetch@>=0.10.0: resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz#fc804e458cc460009b1a2b966bc8817d2578aefb" integrity sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q== +which-module@^1.0.0: + version "1.0.0" + resolved "http://52.167.60.66:8081/repository/npm-all/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" + integrity sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8= + which-module@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" @@ -5013,7 +5698,7 @@ xmlcreate@^2.0.0: resolved "https://registry.yarnpkg.com/xmlcreate/-/xmlcreate-2.0.1.tgz#2ec38bd7b708d213fd1a90e2431c4af9c09f6a52" integrity sha512-MjGsXhKG8YjTKrDCXseFo3ClbMGvUD4en29H2Cev1dv4P/chlpw6KdYmlCWDkhosBVKRDjM836+3e3pm1cBNJA== -xtend@^4.0.1: +xtend@^4.0.1, xtend@~4.0.0, xtend@~4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" integrity sha1-pcbVMr5lbiPbgg77lDofBJmNY68= @@ -5025,6 +5710,11 @@ xxhashjs@^0.2.2: dependencies: cuint "^0.2.2" +y18n@^3.2.1: + version "3.2.1" + resolved "http://52.167.60.66:8081/repository/npm-all/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" + integrity sha1-bRX7qITAhnnA136I53WegR4H+kE= + "y18n@^3.2.1 || ^4.0.0", y18n@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" @@ -5045,7 +5735,7 @@ yallist@^3.0.0, yallist@^3.0.2: resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.3.tgz#b4b049e314be545e3ce802236d6cd22cd91c3de9" integrity sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A== -yargs-parser@13.0.0, yargs-parser@^13.0.0: +yargs-parser@13.0.0: version "13.0.0" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.0.0.tgz#3fc44f3e76a8bdb1cc3602e860108602e5ccde8b" integrity sha512-w2LXjoL8oRdRQN+hOyppuXs+V/fVAYtpcrRxZuF7Kt/Oc+Jr2uAcVntaUTNT6w5ihoWfFDpNY8CPx1QskxZ/pw== @@ -5061,7 +5751,7 @@ yargs-parser@^11.1.1: camelcase "^5.0.0" decamelize "^1.2.0" -yargs-parser@^13.1.1: +yargs-parser@^13.0.0, yargs-parser@^13.1.1: version "13.1.1" resolved "http://52.167.60.66:8081/repository/npm-all/yargs-parser/-/yargs-parser-13.1.1.tgz#d26058532aa06d365fe091f6a1fc06b2f7e5eca0" integrity sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ== @@ -5069,6 +5759,13 @@ yargs-parser@^13.1.1: camelcase "^5.0.0" decamelize "^1.2.0" +yargs-parser@^5.0.0: + version "5.0.0" + resolved "http://52.167.60.66:8081/repository/npm-all/yargs-parser/-/yargs-parser-5.0.0.tgz#275ecf0d7ffe05c77e64e7c86e4cd94bf0e1228a" + integrity sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo= + dependencies: + camelcase "^3.0.0" + yargs-unparser@1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-1.5.0.tgz#f2bb2a7e83cbc87bb95c8e572828a06c9add6e0d" @@ -5129,6 +5826,25 @@ yargs@^12.0.5: y18n "^3.2.1 || ^4.0.0" yargs-parser "^11.1.1" +yargs@^7.1.0: + version "7.1.0" + resolved "http://52.167.60.66:8081/repository/npm-all/yargs/-/yargs-7.1.0.tgz#6ba318eb16961727f5d284f8ea003e8d6154d0c8" + integrity sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg= + dependencies: + camelcase "^3.0.0" + cliui "^3.2.0" + decamelize "^1.1.1" + get-caller-file "^1.0.1" + os-locale "^1.4.0" + read-pkg-up "^1.0.1" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^1.0.2" + which-module "^1.0.0" + y18n "^3.2.1" + yargs-parser "^5.0.0" + yarn@^1.16.0: version "1.16.0" resolved "https://registry.yarnpkg.com/yarn/-/yarn-1.16.0.tgz#5701b58ac555ff91f7b889b7d791b3dc86f8f999" -- GitLab From a353ce6635fff8b9d2cae81a06fa864140a6840f Mon Sep 17 00:00:00 2001 From: Will Date: Tue, 21 Jan 2020 16:02:09 +0100 Subject: [PATCH 12/86] Fixes of the TS content, config files and doc --- .env-sample | 44 - .gitmodules | 15 - .vscode/settings.json | 6 +- CONTRIBUTING.adoc | 6 +- README.adoc | 35 +- package.json | 90 +- {plugins => packages}/linkall.sh | 0 .../polkabot-plugin-blockstats | 0 .../polkabot-plugin-blocthday | 0 .../polkabot-plugin-operator | 0 .../polkabot-plugin-reporter | 0 .../polkabot-plugin-stallwatcher | 0 .../polkabot-plugin-validators | 0 packages/polkabot/.env-sample | 44 + packages/polkabot/package.json | 83 + .../polkabot/src}/ConfigSingleton.ts | 4 +- .../polkabot/src/config.ts | 2 +- {src => packages/polkabot/src}/index.ts | 6 +- .../polkabot/src}/lib/plugin-loader.ts | 0 .../polkabot/src}/lib/plugin-scanner.ts | 0 .../polkabot/src/plugins/Plugin.interface.ts | 4 + packages/polkabot/src/plugins/Plugin.ts | 5 + {src => packages/polkabot/src}/polkabot.ts | 2 +- {src => packages/polkabot/src}/types.ts | 0 {test => packages/polkabot/test}/user.js | 0 .../polkabot/tsconfig.json | 0 {plugins => packages}/unlinkall.sh | 0 yarn.lock | 1638 ++++++++++++++++- 28 files changed, 1768 insertions(+), 216 deletions(-) delete mode 100644 .env-sample delete mode 100644 .gitmodules rename {plugins => packages}/linkall.sh (100%) rename {plugins => packages}/polkabot-plugin-blockstats (100%) rename {plugins => packages}/polkabot-plugin-blocthday (100%) rename {plugins => packages}/polkabot-plugin-operator (100%) rename {plugins => packages}/polkabot-plugin-reporter (100%) rename {plugins => packages}/polkabot-plugin-stallwatcher (100%) rename {plugins => packages}/polkabot-plugin-validators (100%) create mode 100644 packages/polkabot/.env-sample create mode 100644 packages/polkabot/package.json rename {src => packages/polkabot/src}/ConfigSingleton.ts (98%) rename src/Config.ts => packages/polkabot/src/config.ts (94%) rename {src => packages/polkabot/src}/index.ts (98%) rename {src => packages/polkabot/src}/lib/plugin-loader.ts (100%) rename {src => packages/polkabot/src}/lib/plugin-scanner.ts (100%) create mode 100644 packages/polkabot/src/plugins/Plugin.interface.ts create mode 100644 packages/polkabot/src/plugins/Plugin.ts rename {src => packages/polkabot/src}/polkabot.ts (86%) rename {src => packages/polkabot/src}/types.ts (100%) rename {test => packages/polkabot/test}/user.js (100%) rename tsconfig.json => packages/polkabot/tsconfig.json (100%) rename {plugins => packages}/unlinkall.sh (100%) diff --git a/.env-sample b/.env-sample deleted file mode 100644 index 576d172..0000000 --- a/.env-sample +++ /dev/null @@ -1,44 +0,0 @@ -# Instructions: -# -# This file contains sample environment variables. -# Above each environment variable it indicates whether it -# needs to be included 'Required' in your .env file with a value and what -# to populate it with, or whether it is 'Optional'. - -# Required -# -# Replace the value of POLKADOT_NODE_NAME with the name of your Substrate node - -POLKADOT_NODE_NAME=your_substrate_node_name_here_is_optional -POLKADOT_WS_HOST=ws://127.0.0.1:9944 - -# Required -# -# If you are using a custom domain then replace the default domain (matrix.org) -# with your custom domain. Replace the value of MATRIX_ROOM_ID with the room id -# where you want your Bot to make announcements. - -MATRIX_BASE_URL=https://matrix.org -MATRIX_ROOM_ID=!AbCdEfGhIjKlMnPqRS:matrix.org - -# Required -# -# If you are using a custom domain then replace the default domain (matrix.org) -# with your custom domain. - -MATRIX_BOT_MASTER_USER_ID=@your_bot_master_user_id:matrix.org -MATRIX_BOT_USER_ID=@your_bot_user_id:matrix.org - -# Optional -# -# These variables are only required if you are using a custom domain -# i.e. if you are not using a MATRIX_BASE_URL of https://matrix.org - -MATRIX_LOGIN_USER_ID=@your_user_id:matrix.your_custom_domain.org -MATRIX_LOGIN_USER_PASSWORD=your_matrix_user_password - -# Optional -# -# This field is not required - -MATRIX_TOKEN= diff --git a/.gitmodules b/.gitmodules deleted file mode 100644 index 7cc3d2c..0000000 --- a/.gitmodules +++ /dev/null @@ -1,15 +0,0 @@ -[submodule "plugins/polkabot-plugin-blocthday"] - path = plugins/polkabot-plugin-blocthday - url = git@gitlab.com:Polkabot/polkabot-plugin-blocthday.git -[submodule "plugins/polkabot-plugin-blockstats"] - path = plugins/polkabot-plugin-blockstats - url = git@gitlab.com:Polkabot/polkabot-plugin-blockstats.git -[submodule "plugins/polkabot-plugin-operator"] - path = plugins/polkabot-plugin-operator - url = https://gitlab.com/Polkabot/polkabot-plugin-operator.git -[submodule "plugins/polkabot-plugin-stallwatcher"] - path = plugins/polkabot-plugin-stallwatcher - url = git@gitlab.com:Polkabot/polkabot-plugin-stallwatcher.git -[submodule "plugins/polkabot-plugin-reporter"] - path = plugins/polkabot-plugin-reporter - url = git@gitlab.com:Polkabot/polkabot-plugin-reporter.git diff --git a/.vscode/settings.json b/.vscode/settings.json index 5241c66..fe441cd 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -2,5 +2,9 @@ "eslint.enable": false, "search.exclude": { "**/node_modules": false - } + }, + "cSpell.words": [ + "BOTMASTER", + "POLKABOT" + ] } \ No newline at end of file diff --git a/CONTRIBUTING.adoc b/CONTRIBUTING.adoc index 00786ff..d4cc6dc 100644 --- a/CONTRIBUTING.adoc +++ b/CONTRIBUTING.adoc @@ -95,7 +95,7 @@ Replace `MATRIX_LOGIN_USER_ID` and `MATRIX_LOGIN_USER_ID` with your Matrix Riot Replace `MATRIX_BOT_MASTER_USER_ID` with the Matrix Riot user id of your Bot Master (the user that is able to send direct messages to the Bot requesting them to perform certain actions such as make an -annoucement to the Matrix Riot room id that you specified) +announcement to the Matrix Riot room id that you specified) Replace `MATRIX_BOT_USER_ID` with your Bot's user id. Note that Polkabot will only try to login your user if you are using a custom Matrix base url (i.e. not matrix.org). @@ -107,7 +107,7 @@ MATRIX_BASE_URL=https://matrix.org MATRIX_ROOM_ID=!AbCdEfGhIjKlMnPqRS:matrix.org MATRIX_LOGIN_USER_ID=@yourusername:matrix.org MATRIX_LOGIN_USER_PASSWORD=yourpassword -MATRIX_BOT_MASTER_USER_ID=@yourusername:matrix.org +MATRIX_BOTMASTER_ID=@yourusername:matrix.org MATRIX_BOT_USER_ID=@botusername:matrix.org MATRIX_TOKEN= ``` @@ -149,4 +149,4 @@ Any user may write `!status` and the Bot will respond with the Polkadot / Substr ===== Polkabot StallWatcher plugin -Write a direct message from your Bot Master to your Bot `!sw duration `, and the Bot's configuration settings will change the threshold upon which it makes annoucements in the room id that you specified in the .env file (from the default specified in that plugin repositories config.js file). +Write a direct message from your Bot Master to your Bot `!sw duration `, and the Bot's configuration settings will change the threshold upon which it makes announcements in the room id that you specified in the .env file (from the default specified in that plugin repositories config.js file). diff --git a/README.adoc b/README.adoc index 4b2bb65..c779c90 100644 --- a/README.adoc +++ b/README.adoc @@ -1,5 +1,7 @@ = Polkabot :toc: +:proj: PolkaBOT +:exe: polkabot image:https://gitlab.com/chevdor/polkabot/badges/master/pipeline.svg[link="https://gitlab.com/chevdor/polkabot/commits/master",title="pipeline status"] image:https://gitlab.com/chevdor/polkabot/badges/master/coverage.svg[link="https://gitlab.com/chevdor/polkabot/commits/master",title="coverage report"] @@ -8,11 +10,11 @@ image:https://gitlab.com/chevdor/polkabot/badges/master/coverage.svg[link="https image::doc/polkabot.png[width=300px] -You can see Polkabot in action in link:++https://matrix.to/#/#polkadot-network-status:matrix.org++[#polkadot-network-status:matrix.org] +You can see {proj} in action in link:++https://matrix.to/#/#polkadot-network-status:matrix.org++[#polkadot-network-status:matrix.org] Polkabot is an extensible bot for http://polkadot.network[Polkadot], running on http://matrix.org[Matrix.org] -NOTE: Polkabot aims as being *as silent as possible* so don't expect lots of fuzz and action! +NOTE: {proj} aims as being *as silent as possible* so don't expect lots of fuzz and action! == Install & Run @@ -30,7 +32,7 @@ To build the base and the custom: yarn build:docker -This will build the Polkabot main image. +This will build the {proj} main image. Then, test with : @@ -40,7 +42,7 @@ docker run --rm -it -v ~/path/to/your/config.js:/data/config.js chevdor/polkabot == Configuration -Polkabot uses 2 levels of configuration: +{proj} uses 2 levels of configuration: - the main config in src/config.js - the plugin specific config in `src/plugins/.../config.js` @@ -62,3 +64,28 @@ include::doc/plugin.js[] == Plugins You can all the plugins in https://gitlab.com/Polkabot + +== Dev notes + + yarn + yarn-check + yarn upgrade + +Start your substrate node: + + docker run --rm -it chevdor/substrate substrate --dev + +then run: + + nvm use + +Before you got further you need to check your config. This is a .env file and all variables start with `POLKABOT_`. +By default, the running mode is 'production' and will pick the `.env` file. The following to the same: + + yarn start + NODE_ENV=production yarn start + +If you want to use another file such as `.env.dev`, you may use: + + NODE_ENV=dev y start + diff --git a/package.json b/package.json index e7401dc..ca78fad 100644 --- a/package.json +++ b/package.json @@ -1,82 +1,18 @@ { - "name": "polkabot", - "version": "0.5.0", - "description": "Matrix Bot for Polkadot", - "main": "./build/src/polkabot.js", - "bin": { - "polkabot": "./dist/polkabot.js" - }, - "repository": "https://gitlab.com/Polkabot/polkabot", - "scripts": { - "start": "node --inspect=5858 -r ts-node/register ./src/polkadot.ts", - "start:watch": "nodemon", - "dev": "nodemon ./src/polkabot -c ./config.js --exec babel-node --presets env", - "build": "tsc --build tsconfig.json", - "test": "yarn lint --quiet && yarn build && mocha --recursive build/test --exit", - "test:local": "mocha --require babel-core/register test/* --exit", - "test:watch": "mocha --watch --require babel-core/register test/* --exit", - "lint": "eslint --ext .js,.ts src", - "clean": "rm -rf .nyc_output build coverage node_modules out dist", - "prepublishOnly": "npm run build", - "build:doc": "jsdoc -r -d out -c jsdoc.conf", - "build:docker": "docker build -t chevdor/polkabot .", - "docker:run": "docker run --rm -it chevdor/mypolkabot", - "patch": "echo 'Disabling package uniqueness check. See https://github.com/polkadot-js/api/issues/984'; sed -i '/function assertSingletonPackage(name) {/ a return' node_modules/@polkadot/util/assertSingletonPackage.js" - }, - "author": "chevdor", - "license": "ISC", - "keywords": [ - "blockchain", - "polkadot", - "NodeJS", - "ChatBox", - "Matrix.org" + "private": true, + "workspaces": [ + "packages/*" ], - "dependencies": { - "@polkadot/api": "0.90.0-beta.67", - "bn.js": "5.0.0", - "find-node-modules": "^2.0.0", - "matrix-js-sdk": "2.3.0", - "minimongo": "6.0.0", - "nedb": "^1.8.0", - "olm": "https://matrix.org/packages/npm/olm/olm-3.0.0.tgz", - "yargs": "13.3.0" - }, - "devDependencies": { - "@types/dotenv": "^6.1.1", - "@types/mocha": "^5.2.7", - "@typescript-eslint/eslint-plugin": "2.0.0", - "@typescript-eslint/parser": "2.0.0", - "chai": "4.2.0", - "chai-http": "4.3.0", - "dotenv": "8.1.0", - "eslint": "6.2.0", - "eslint-config-prettier": "6.1.0", - "eslint-config-standard": "14.0.0", - "eslint-plugin-import": "2.18.2", - "eslint-plugin-node": "^9.1.0", - "eslint-plugin-promise": "4.2.1", - "eslint-plugin-react": "7.14.3", - "eslint-plugin-standard": "4.0.1", - "jsdoc": "3.6.3", - "jsdoc-route-plugin": "^0.1.0", - "mocha": "^6.1.4", - "nodemon": "1.19.1", - "snazzy": "^8.0.0", - "standard": "14.0.0", - "typescript": "3.5.3", - "yarn": "^1.16.0" - }, - "standard": { - "parser": "babel-eslint", - "ignore": [ - "dist/" - ], - "env": [ - "mocha" - ] - }, "engines": { - "node": "10" + "node": ">=10.13.0", + "yarn": "^1.10.1" + }, + "scripts": { + "analyze": "yarn run build", + "check": "yarn lint", + "lint": "eslint --ext .js,.jsx,.ts,.tsx . && tsc --noEmit --pretty", + "test": "echo \"skipping tests\"", + "start": "cd packages/polkabot && yarn start", + "build": "cd packages/polkabot && yarn build" } } diff --git a/plugins/linkall.sh b/packages/linkall.sh similarity index 100% rename from plugins/linkall.sh rename to packages/linkall.sh diff --git a/plugins/polkabot-plugin-blockstats b/packages/polkabot-plugin-blockstats similarity index 100% rename from plugins/polkabot-plugin-blockstats rename to packages/polkabot-plugin-blockstats diff --git a/plugins/polkabot-plugin-blocthday b/packages/polkabot-plugin-blocthday similarity index 100% rename from plugins/polkabot-plugin-blocthday rename to packages/polkabot-plugin-blocthday diff --git a/plugins/polkabot-plugin-operator b/packages/polkabot-plugin-operator similarity index 100% rename from plugins/polkabot-plugin-operator rename to packages/polkabot-plugin-operator diff --git a/plugins/polkabot-plugin-reporter b/packages/polkabot-plugin-reporter similarity index 100% rename from plugins/polkabot-plugin-reporter rename to packages/polkabot-plugin-reporter diff --git a/plugins/polkabot-plugin-stallwatcher b/packages/polkabot-plugin-stallwatcher similarity index 100% rename from plugins/polkabot-plugin-stallwatcher rename to packages/polkabot-plugin-stallwatcher diff --git a/plugins/polkabot-plugin-validators b/packages/polkabot-plugin-validators similarity index 100% rename from plugins/polkabot-plugin-validators rename to packages/polkabot-plugin-validators diff --git a/packages/polkabot/.env-sample b/packages/polkabot/.env-sample new file mode 100644 index 0000000..9fa7f2a --- /dev/null +++ b/packages/polkabot/.env-sample @@ -0,0 +1,44 @@ +# Instructions: +# +# This file contains sample environment variables. +# Above each environment variable it indicates whether it +# needs to be included 'Required' in your .env file with a value and what +# to populate it with, or whether it is 'Optional'. + +# Required +# +# Replace the value of POLKABOT_POLKADOT_NODE_NAME with the name of your Substrate node + +POLKABOT_POLKADOT_NODE_NAME=your_substrate_node_name_here_is_optional +POLKABOT_POLKADOT_WS_HOST=ws://127.0.0.1:9944 + +# Required +# +# If you are using a custom domain then replace the default domain (matrix.org) +# with your custom domain. Replace the value of POLKABOT_MATRIX_ROOM_ID with the room id +# where you want your Bot to make announcements. + +POLKABOT_MATRIX_BASE_URL=https://matrix.org +POLKABOT_MATRIX_ROOM_ID=!AbCdEfGhIjKlMnPqRS:matrix.org + +# Required +# +# If you are using a custom domain then replace the default domain (matrix.org) +# with your custom domain. + +POLKABOT_MATRIX_BOTMASTER_ID=@your_bot_master_user_id:matrix.org +POLKABOT_MATRIX_BOT_USER_ID=@your_bot_user_id:matrix.org + +# Optional +# +# These variables are only required if you are using a custom domain +# i.e. if you are not using a POLKABOT_MATRIX_BASE_URL of https://matrix.org + +POLKABOT_MATRIX_LOGIN_USER_ID=@your_user_id:matrix.your_custom_domain.org +POLKABOT_MATRIX_LOGIN_USER_PASSWORD=your_POLKABOT_matrix_user_password + +# Optional +# +# This field is not required + +POLKABOT_MATRIX_TOKEN= diff --git a/packages/polkabot/package.json b/packages/polkabot/package.json new file mode 100644 index 0000000..daf4f57 --- /dev/null +++ b/packages/polkabot/package.json @@ -0,0 +1,83 @@ +{ + "name": "polkabot", + "version": "0.5.0", + "description": "Matrix Bot for Polkadot", + "main": "./build/src/polkabot.js", + "bin": { + "polkabot": "./dist/polkabot.js" + }, + "repository": "https://gitlab.com/Polkabot/polkabot", + "scripts": { + "start": "node --inspect=5858 -r ts-node/register ./src/polkabot.ts", + "start:watch": "nodemon", + "dev": "nodemon ./src/polkabot -c ./config.js --exec babel-node --presets env", + "build": "tsc --build tsconfig.json", + "test": "yarn lint --quiet && yarn build && mocha --recursive build/test --exit", + "test:local": "mocha --require babel-core/register test/* --exit", + "test:watch": "mocha --watch --require babel-core/register test/* --exit", + "lint": "eslint --ext .js,.ts src", + "clean": "rm -rf .nyc_output build coverage node_modules out dist", + "prepublishOnly": "npm run build", + "build:doc": "jsdoc -r -d out -c jsdoc.conf", + "build:docker": "docker build -t chevdor/polkabot .", + "docker:run": "docker run --rm -it chevdor/mypolkabot", + "patch": "echo 'Disabling package uniqueness check. See https://github.com/polkadot-js/api/issues/984'; sed -i '/function assertSingletonPackage(name) {/ a return' node_modules/@polkadot/util/assertSingletonPackage.js" + }, + "author": "chevdor", + "license": "ISC", + "keywords": [ + "blockchain", + "polkadot", + "NodeJS", + "ChatBox", + "Matrix.org" + ], + "dependencies": { + "@polkadot/api": "^0.90.1", + "bn.js": "5.0.0", + "find-node-modules": "^2.0.0", + "matrix-js-sdk": "2.3.0", + "minimongo": "6.0.0", + "nedb": "^1.8.0", + "olm": "https://matrix.org/packages/npm/olm/olm-3.0.0.tgz", + "yargs": "13.3.0" + }, + "devDependencies": { + "@types/dotenv": "^6.1.1", + "@types/mocha": "^5.2.7", + "@typescript-eslint/eslint-plugin": "2.0.0", + "@typescript-eslint/parser": "2.0.0", + "chai": "4.2.0", + "chai-http": "4.3.0", + "dotenv": "8.1.0", + "eslint": "6.2.0", + "eslint-config-prettier": "6.1.0", + "eslint-config-standard": "14.0.0", + "eslint-plugin-import": "2.18.2", + "eslint-plugin-node": "^9.1.0", + "eslint-plugin-promise": "4.2.1", + "eslint-plugin-react": "7.14.3", + "eslint-plugin-standard": "4.0.1", + "jsdoc": "3.6.3", + "jsdoc-route-plugin": "^0.1.0", + "mocha": "^6.1.4", + "nodemon": "1.19.1", + "snazzy": "^8.0.0", + "standard": "14.0.0", + "ts-node": "^8.3.0", + "typescript": "3.5.3", + "yarn": "^1.16.0" + }, + "standard": { + "parser": "babel-eslint", + "ignore": [ + "dist/" + ], + "env": [ + "mocha" + ] + }, + "engines": { + "node": "10" + } +} diff --git a/src/ConfigSingleton.ts b/packages/polkabot/src/ConfigSingleton.ts similarity index 98% rename from src/ConfigSingleton.ts rename to packages/polkabot/src/ConfigSingleton.ts index f86cade..2bfc82e 100644 --- a/src/ConfigSingleton.ts +++ b/packages/polkabot/src/ConfigSingleton.ts @@ -28,7 +28,6 @@ export class ConfigSingleton { /** If you need to access the config, use this method */ public static getInstance(): IPolkabotConfig { - console.log('ConfigSingleton.getInstance()') if (!ConfigSingleton.instance) { new ConfigSingleton(); } @@ -50,6 +49,8 @@ export class ConfigSingleton { console.log('ENV file:', envfile) dotenv.config({ path: envfile }); const ENV = process.env; + // console.log(ConfigFields) + ConfigSingleton.instance = { polkadot: { nodeName: ENV[ConfigFields.POLKADOT_NODE_NAME.name], @@ -67,6 +68,7 @@ export class ConfigSingleton { } }; + console.log(ConfigSingleton.instance) assert((ConfigSingleton.instance.polkadot.nodeName || '').length > 0, "The extracted config does not look OK") } diff --git a/src/Config.ts b/packages/polkabot/src/config.ts similarity index 94% rename from src/Config.ts rename to packages/polkabot/src/config.ts index cbbded7..ddec96d 100644 --- a/src/Config.ts +++ b/packages/polkabot/src/config.ts @@ -15,7 +15,7 @@ module.exports = { // General Matrix config matrix: { // Who is managing the bot. i.e. '@you:matrix.org' - botMasterId: process.env.MATRIX_BOT_MASTER_USER_ID, + botMasterId: process.env.MATRIX_BOTMASTER_ID, // In what room is the bot active by default. i.e. '!:matrix.org' roomId: process.env.MATRIX_ROOM_ID, // Credentials of the bot. i.e. '@...:matrix.org' diff --git a/src/index.ts b/packages/polkabot/src/index.ts similarity index 98% rename from src/index.ts rename to packages/polkabot/src/index.ts index 4a63b23..2aba173 100644 --- a/src/index.ts +++ b/packages/polkabot/src/index.ts @@ -10,9 +10,9 @@ import PluginScanner from './lib/plugin-scanner' import PluginLoader from './lib/plugin-loader' // import * as path from 'path' import sdk from 'matrix-js-sdk' -import { ConfigSingleton } from './ConfigSingleton.js'; +import { ConfigSingleton } from './ConfigSingleton'; import { assert } from '@polkadot/util'; -import { IPolkabotConfig } from './types.js'; +import { IPolkabotConfig } from './types'; //@ts-ignore global.Olm = Olm @@ -102,8 +102,10 @@ export default class Polkabot { let config: IPolkabotConfig = ConfigSingleton.getInstance() assert(config.polkadot.host != null, 'Issue with the config') assert(config.matrix.botMasterId != null, 'Missing bot master id') + ConfigSingleton.dumpEnv() this.config = config + // console.log(`Polkabot - config: ${JSON.stringify(this.config, null, 2)}`) // console.log(`Polkabot - Connecting to host: ${this.config.polkadot.host}`) // console.log(`Polkabot - Running with bot user id: ${this.config.matrix.botUserId}`) diff --git a/src/lib/plugin-loader.ts b/packages/polkabot/src/lib/plugin-loader.ts similarity index 100% rename from src/lib/plugin-loader.ts rename to packages/polkabot/src/lib/plugin-loader.ts diff --git a/src/lib/plugin-scanner.ts b/packages/polkabot/src/lib/plugin-scanner.ts similarity index 100% rename from src/lib/plugin-scanner.ts rename to packages/polkabot/src/lib/plugin-scanner.ts diff --git a/packages/polkabot/src/plugins/Plugin.interface.ts b/packages/polkabot/src/plugins/Plugin.interface.ts new file mode 100644 index 0000000..804075d --- /dev/null +++ b/packages/polkabot/src/plugins/Plugin.interface.ts @@ -0,0 +1,4 @@ +export default interface IPlugin { + name: string + path: string +} diff --git a/packages/polkabot/src/plugins/Plugin.ts b/packages/polkabot/src/plugins/Plugin.ts new file mode 100644 index 0000000..c3bab19 --- /dev/null +++ b/packages/polkabot/src/plugins/Plugin.ts @@ -0,0 +1,5 @@ +// import IPlugin from "./Plugin.interface"; + +// export class Plugin implements IPlugin { + +// } diff --git a/src/polkabot.ts b/packages/polkabot/src/polkabot.ts similarity index 86% rename from src/polkabot.ts rename to packages/polkabot/src/polkabot.ts index d03f124..ac44adc 100755 --- a/src/polkabot.ts +++ b/packages/polkabot/src/polkabot.ts @@ -1,5 +1,5 @@ #!/usr/bin/env node -import Polkabot from './index.js' +import Polkabot from './index' const argv = require('yargs') .usage('Usage: $0 [options]') diff --git a/src/types.ts b/packages/polkabot/src/types.ts similarity index 100% rename from src/types.ts rename to packages/polkabot/src/types.ts diff --git a/test/user.js b/packages/polkabot/test/user.js similarity index 100% rename from test/user.js rename to packages/polkabot/test/user.js diff --git a/tsconfig.json b/packages/polkabot/tsconfig.json similarity index 100% rename from tsconfig.json rename to packages/polkabot/tsconfig.json diff --git a/plugins/unlinkall.sh b/packages/unlinkall.sh similarity index 100% rename from plugins/unlinkall.sh rename to packages/unlinkall.sh diff --git a/yarn.lock b/yarn.lock index 895c911..d9e3cb1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,13 +2,75 @@ # yarn lockfile v1 -"@babel/code-frame@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0.tgz#06e2ab19bdb535385559aabb5ba59729482800f8" - integrity sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA== +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.5.5": + version "7.5.5" + resolved "http://52.167.60.66:8081/repository/npm-all/@babel/code-frame/-/code-frame-7.5.5.tgz#bc0782f6d69f7b7d49531219699b988f669a8f9d" + integrity sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw== dependencies: "@babel/highlight" "^7.0.0" +"@babel/core@^7.4.5": + version "7.5.5" + resolved "http://52.167.60.66:8081/repository/npm-all/@babel/core/-/core-7.5.5.tgz#17b2686ef0d6bc58f963dddd68ab669755582c30" + integrity sha512-i4qoSr2KTtce0DmkuuQBV4AuQgGPUcPXMr9L5MyYAtk06z068lQ10a4O009fe5OB/DfNV+h+qqT7ddNV8UnRjg== + dependencies: + "@babel/code-frame" "^7.5.5" + "@babel/generator" "^7.5.5" + "@babel/helpers" "^7.5.5" + "@babel/parser" "^7.5.5" + "@babel/template" "^7.4.4" + "@babel/traverse" "^7.5.5" + "@babel/types" "^7.5.5" + convert-source-map "^1.1.0" + debug "^4.1.0" + json5 "^2.1.0" + lodash "^4.17.13" + resolve "^1.3.2" + semver "^5.4.1" + source-map "^0.5.0" + +"@babel/generator@^7.5.5": + version "7.5.5" + resolved "http://52.167.60.66:8081/repository/npm-all/@babel/generator/-/generator-7.5.5.tgz#873a7f936a3c89491b43536d12245b626664e3cf" + integrity sha512-ETI/4vyTSxTzGnU2c49XHv2zhExkv9JHLTwDAFz85kmcwuShvYG2H08FwgIguQf4JC75CBnXAUM5PqeF4fj0nQ== + dependencies: + "@babel/types" "^7.5.5" + jsesc "^2.5.1" + lodash "^4.17.13" + source-map "^0.5.0" + trim-right "^1.0.1" + +"@babel/helper-function-name@^7.1.0": + version "7.1.0" + resolved "http://52.167.60.66:8081/repository/npm-all/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz#a0ceb01685f73355d4360c1247f582bfafc8ff53" + integrity sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw== + dependencies: + "@babel/helper-get-function-arity" "^7.0.0" + "@babel/template" "^7.1.0" + "@babel/types" "^7.0.0" + +"@babel/helper-get-function-arity@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz#83572d4320e2a4657263734113c42868b64e49c3" + dependencies: + "@babel/types" "^7.0.0" + +"@babel/helper-split-export-declaration@^7.4.4": + version "7.4.4" + resolved "http://52.167.60.66:8081/repository/npm-all/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz#ff94894a340be78f53f06af038b205c49d993677" + integrity sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q== + dependencies: + "@babel/types" "^7.4.4" + +"@babel/helpers@^7.5.5": + version "7.5.5" + resolved "http://52.167.60.66:8081/repository/npm-all/@babel/helpers/-/helpers-7.5.5.tgz#63908d2a73942229d1e6685bc2a0e730dde3b75e" + integrity sha512-nRq2BUhxZFnfEn/ciJuhklHvFOqjJUD5wpx+1bxUF2axL9C+v4DE/dmp5sT2dKnpOs4orZWzpAZqlCy8QqE/7g== + dependencies: + "@babel/template" "^7.4.4" + "@babel/traverse" "^7.5.5" + "@babel/types" "^7.5.5" + "@babel/highlight@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0.tgz#f710c38c8d458e6dd9a201afb637fcb781ce99e4" @@ -18,19 +80,52 @@ esutils "^2.0.2" js-tokens "^4.0.0" -"@babel/parser@^7.4.4": - version "7.4.5" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.4.5.tgz#04af8d5d5a2b044a2a1bffacc1e5e6673544e872" - integrity sha512-9mUqkL1FF5T7f0WDFfAoDdiMVPWsdD1gZYzSnaXsxUCUqzuch/8of9G3VUSNiZmMBoRxT3neyVsqeiL/ZPcjew== +"@babel/parser@^7.0.0", "@babel/parser@^7.4.4", "@babel/parser@^7.5.5": + version "7.5.5" + resolved "http://52.167.60.66:8081/repository/npm-all/@babel/parser/-/parser-7.5.5.tgz#02f077ac8817d3df4a832ef59de67565e71cca4b" + integrity sha512-E5BN68cqR7dhKan1SfqgPGhQ178bkVKpXTPEXnFJBrEt8/DKRZlybmy+IgYLTeN7tp1R5Ccmbm2rBk17sHYU3g== "@babel/runtime@^7.5.5": - version "7.5.5" - resolved "http://52.167.60.66:8081/repository/npm-all/@babel/runtime/-/runtime-7.5.5.tgz#74fba56d35efbeca444091c7850ccd494fd2f132" - integrity sha512-28QvEGyQyNkB0/m2B4FU7IEZGK2NUrcMtT6BZEFALTguLk+AUT6ofsHtPk5QyjAdUkpMJ+/Em+quwz4HOt30AQ== + version "7.6.3" + resolved "http://52.167.60.66:8081/repository/npm-all/@babel/runtime/-/runtime-7.6.3.tgz#935122c74c73d2240cafd32ddb5fc2a6cd35cf1f" + integrity sha512-kq6anf9JGjW8Nt5rYfEuGRaEAaH1mkv3Bbu6rYvLOpPh/RusSJXuKPEAoZ7L7gybZkchE8+NV5g9vKF4AGAtsA== dependencies: regenerator-runtime "^0.13.2" -"@polkadot/api-derive@^0.90.0-beta.67", "@polkadot/api-derive@^0.90.0-beta.70": +"@babel/template@^7.1.0", "@babel/template@^7.4.4": + version "7.4.4" + resolved "http://52.167.60.66:8081/repository/npm-all/@babel/template/-/template-7.4.4.tgz#f4b88d1225689a08f5bc3a17483545be9e4ed237" + integrity sha512-CiGzLN9KgAvgZsnivND7rkA+AeJ9JB0ciPOD4U59GKbQP2iQl+olF1l76kJOupqidozfZ32ghwBEJDhnk9MEcw== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/parser" "^7.4.4" + "@babel/types" "^7.4.4" + +"@babel/traverse@^7.0.0", "@babel/traverse@^7.5.5": + version "7.5.5" + resolved "http://52.167.60.66:8081/repository/npm-all/@babel/traverse/-/traverse-7.5.5.tgz#f664f8f368ed32988cd648da9f72d5ca70f165bb" + integrity sha512-MqB0782whsfffYfSjH4TM+LMjrJnhCNEDMDIjeTpl+ASaUvxcjoiVCo/sM1GhS1pHOXYfWVCYneLjMckuUxDaQ== + dependencies: + "@babel/code-frame" "^7.5.5" + "@babel/generator" "^7.5.5" + "@babel/helper-function-name" "^7.1.0" + "@babel/helper-split-export-declaration" "^7.4.4" + "@babel/parser" "^7.5.5" + "@babel/types" "^7.5.5" + debug "^4.1.0" + globals "^11.1.0" + lodash "^4.17.13" + +"@babel/types@^7.0.0", "@babel/types@^7.4.4", "@babel/types@^7.5.5": + version "7.5.5" + resolved "http://52.167.60.66:8081/repository/npm-all/@babel/types/-/types-7.5.5.tgz#97b9f728e182785909aa4ab56264f090a028d18a" + integrity sha512-s63F9nJioLqOlW3UkyMd+BYhXt44YuaFm/VV0VwuteqjYwRrObkU7ra9pY4wAJR3oXi8hJrMcrcJdO/HH33vtw== + dependencies: + esutils "^2.0.2" + lodash "^4.17.13" + to-fast-properties "^2.0.0" + +"@polkadot/api-derive@^0.90.0-beta.70": version "0.90.0-beta.70" resolved "http://52.167.60.66:8081/repository/npm-all/@polkadot/api-derive/-/api-derive-0.90.0-beta.70.tgz#9ce41f469fd0f8b486b515aa55d7245cea6eba89" integrity sha512-4ct+DquK2cuLWgEtLKiWP2LDgZxQSQEVPz5fn9LpMRzOqii7SElbrvskUX1/9P8WMglYSHcBkN2IE9jKN2x7Og== @@ -39,7 +134,7 @@ "@polkadot/api" "^0.90.0-beta.70" "@polkadot/types" "^0.90.0-beta.70" -"@polkadot/api-metadata@^0.90.0-beta.67", "@polkadot/api-metadata@^0.90.0-beta.70": +"@polkadot/api-metadata@^0.90.0-beta.70": version "0.90.0-beta.70" resolved "http://52.167.60.66:8081/repository/npm-all/@polkadot/api-metadata/-/api-metadata-0.90.0-beta.70.tgz#9ddb0219a878a4422dee64b7bd7139eec3bddd40" integrity sha512-5O2xOgjXBar3l/2pevZTT3XAkDsV4+okC5VFr/FfjDoA+tFxGSD6bn3C5uxVR+eTvGV09/5itBCAjaJavty8Vg== @@ -49,20 +144,7 @@ "@polkadot/util" "^1.1.1" "@polkadot/util-crypto" "^1.1.1" -"@polkadot/api@0.90.0-beta.67": - version "0.90.0-beta.67" - resolved "http://52.167.60.66:8081/repository/npm-all/@polkadot/api/-/api-0.90.0-beta.67.tgz#0335a57090a0adcfd2a182531ce883f6618d078d" - integrity sha512-1FgI7Q9nq4Gnx91Fthk8u4huvqo+U9VNZ7Wd0tAuSs0K+1cPHLEnZ0x+QMYEd3Iy4O5oRmc1kWNy3APsdTfDiQ== - dependencies: - "@babel/runtime" "^7.5.5" - "@polkadot/api-derive" "^0.90.0-beta.67" - "@polkadot/api-metadata" "^0.90.0-beta.67" - "@polkadot/rpc-core" "^0.90.0-beta.67" - "@polkadot/rpc-provider" "^0.90.0-beta.67" - "@polkadot/types" "^0.90.0-beta.67" - "@polkadot/util-crypto" "^1.1.1" - -"@polkadot/api@^0.90.0-beta.70": +"@polkadot/api@^0.90.0-beta.70", "@polkadot/api@^0.90.1": version "0.90.0-beta.70" resolved "http://52.167.60.66:8081/repository/npm-all/@polkadot/api/-/api-0.90.0-beta.70.tgz#d2e80791b75a91ca5cfabec514aca3078334f906" integrity sha512-1c4JELi1nDeEGhX2YDEXURTIyV2LVX/ybuMPB5oPflnGo/PSvSBeeKTQsPTU7yoMHW+bCZzdOHLBAdLAifjqJw== @@ -82,7 +164,7 @@ dependencies: "@babel/runtime" "^7.5.5" -"@polkadot/rpc-core@^0.90.0-beta.67", "@polkadot/rpc-core@^0.90.0-beta.70": +"@polkadot/rpc-core@^0.90.0-beta.70": version "0.90.0-beta.70" resolved "http://52.167.60.66:8081/repository/npm-all/@polkadot/rpc-core/-/rpc-core-0.90.0-beta.70.tgz#09c5a5d532e10ccf654262056829e3077ac3c11b" integrity sha512-DmzH38BNXTjgUTr2jXZGgQQlOV4aSxFZe9tRUxzmAwCnAcwmu0ho9mQQP75H/y/C8Ut7HkYamZcpz8RGmAK4cA== @@ -94,7 +176,7 @@ "@polkadot/util" "^1.1.1" rxjs "^6.5.2" -"@polkadot/rpc-provider@^0.90.0-beta.67", "@polkadot/rpc-provider@^0.90.0-beta.70": +"@polkadot/rpc-provider@^0.90.0-beta.70": version "0.90.0-beta.70" resolved "http://52.167.60.66:8081/repository/npm-all/@polkadot/rpc-provider/-/rpc-provider-0.90.0-beta.70.tgz#dc3272b73844a425cfcfe2db8554d69161b5aea7" integrity sha512-kTKihMtAHuoEHctGlpxiP/J8ftH5SU8/5WtR9YMoITvmBib0EgwL3eHCeL96ji+Gkv9gWeoLaKHifpOTB6p5VA== @@ -108,7 +190,7 @@ isomorphic-fetch "^2.2.1" websocket "^1.0.29" -"@polkadot/types@^0.90.0-beta.67", "@polkadot/types@^0.90.0-beta.70": +"@polkadot/types@^0.90.0-beta.70": version "0.90.0-beta.70" resolved "http://52.167.60.66:8081/repository/npm-all/@polkadot/types/-/types-0.90.0-beta.70.tgz#ed96d3a6410be6bd0e0590421d0ab294d93fed87" integrity sha512-Pg4z5zi832Gq+NKWqbo+TEwNgJhm3FZAI2dkIy8N+nF5PZAi/PIbXECaZLF55bxi3MdHJqRzSTuEwUcgAQY6og== @@ -415,12 +497,22 @@ acorn-jsx@^5.0.0: resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.0.1.tgz#32a064fd925429216a09b141102bfdd185fae40e" integrity sha512-HJ7CfNHrfJLlNTzIEUTj43LNWGkqpRLxm3YjAlcD0ACydk9XynzYsCBHxut+iqt+1aBXkx9UP/w/ZqMr13XIzg== +acorn@^6.0.2: + version "6.3.0" + resolved "http://52.167.60.66:8081/repository/npm-all/acorn/-/acorn-6.3.0.tgz#0087509119ffa4fc0a0041d1e93a417e68cb856e" + integrity sha512-/czfa8BwS88b9gWQVhc8eknunSA2DoJpJyTQkhheIf5E48u1N0R4q/YxxsAeqRrmK9TQ/uYfgLDfZo91UlANIA== + acorn@^7.0.0: version "7.0.0" resolved "http://52.167.60.66:8081/repository/npm-all/acorn/-/acorn-7.0.0.tgz#26b8d1cd9a9b700350b71c0905546f64d1284e7a" integrity sha512-PaF/MduxijYYt7unVGRuds1vBC9bFxbNf+VWqhOClfdgy7RlVkQqt610ig1/yxTgsDIfW1cWDel5EBbOy3jdtQ== -ajv@^6.10.0, ajv@^6.5.5, ajv@^6.9.1: +ajv-keywords@^3.0.0: + version "3.4.1" + resolved "http://52.167.60.66:8081/repository/npm-all/ajv-keywords/-/ajv-keywords-3.4.1.tgz#ef916e271c64ac12171fd8384eaae6b2345854da" + integrity sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ== + +ajv@^6.0.1, ajv@^6.10.0, ajv@^6.5.0, ajv@^6.5.5, ajv@^6.9.1: version "6.10.2" resolved "http://52.167.60.66:8081/repository/npm-all/ajv/-/ajv-6.10.2.tgz#d3cea04d6b017b2894ad69040fec8b623eb4bd52" integrity sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw== @@ -461,6 +553,11 @@ ansi-colors@^1.0.1: dependencies: ansi-wrap "^0.1.0" +ansi-escapes@^3.0.0: + version "3.2.0" + resolved "http://52.167.60.66:8081/repository/npm-all/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" + integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== + ansi-escapes@^4.2.1: version "4.2.1" resolved "http://52.167.60.66:8081/repository/npm-all/ansi-escapes/-/ansi-escapes-4.2.1.tgz#4dccdb846c3eee10f6d64dea66273eab90c37228" @@ -490,6 +587,10 @@ 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-styles@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" + 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" @@ -502,6 +603,14 @@ ansi-wrap@0.1.0, ansi-wrap@^0.1.0: resolved "http://52.167.60.66:8081/repository/npm-all/ansi-wrap/-/ansi-wrap-0.1.0.tgz#a82250ddb0015e9a27ca82e82ea603bbfa45efaf" integrity sha1-qCJQ3bABXponyoLoLqYDu/pF768= +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" @@ -535,6 +644,11 @@ are-we-there-yet@~1.1.2: delegates "^1.0.0" readable-stream "^2.0.6" +arg@^4.1.0: + version "4.1.1" + resolved "http://52.167.60.66:8081/repository/npm-all/arg/-/arg-4.1.1.tgz#485f8e7c390ce4c5f78257dbea80d4be11feda4c" + integrity sha512-SlmP3fEA88MBv0PypnXZ8ZfJhwmDeIE3SP71j37AiXQBXYosPV0x6uISAaHYSlSVhmHOVkomen0tbGk6Anlebw== + argparse@^1.0.7: version "1.0.10" resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" @@ -542,6 +656,13 @@ 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" @@ -613,6 +734,11 @@ array-sort@^1.0.0: get-value "^2.0.6" kind-of "^5.0.2" +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" @@ -655,7 +781,7 @@ async-done@^1.2.0, async-done@^1.2.2: process-nextick-args "^2.0.0" stream-exhaust "^1.0.1" -async-each@^1.0.1: +async-each@^1.0.0, async-each@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== @@ -697,7 +823,535 @@ aws4@^1.8.0: resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f" integrity sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ== -babel-runtime@^6.26.0: +babel-cli@^6.0.0, babel-cli@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-cli/-/babel-cli-6.26.0.tgz#502ab54874d7db88ad00b887a06383ce03d002f1" + integrity sha1-UCq1SHTX24itALiHoGODzgPQAvE= + dependencies: + babel-core "^6.26.0" + babel-polyfill "^6.26.0" + babel-register "^6.26.0" + babel-runtime "^6.26.0" + commander "^2.11.0" + convert-source-map "^1.5.0" + fs-readdir-recursive "^1.0.0" + glob "^7.1.2" + lodash "^4.17.4" + output-file-sync "^1.1.2" + path-is-absolute "^1.0.1" + slash "^1.0.0" + source-map "^0.5.6" + v8flags "^2.1.1" + optionalDependencies: + chokidar "^1.6.1" + +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" + dependencies: + chalk "^1.1.3" + esutils "^2.0.2" + js-tokens "^3.0.2" + +babel-core@^6.26.0, babel-core@^6.26.3: + version "6.26.3" + resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.3.tgz#b2e2f09e342d0f0c88e2f02e067794125e75c207" + integrity sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA== + dependencies: + babel-code-frame "^6.26.0" + babel-generator "^6.26.0" + babel-helpers "^6.24.1" + babel-messages "^6.23.0" + babel-register "^6.26.0" + babel-runtime "^6.26.0" + babel-template "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + convert-source-map "^1.5.1" + debug "^2.6.9" + json5 "^0.5.1" + lodash "^4.17.4" + minimatch "^3.0.4" + path-is-absolute "^1.0.1" + private "^0.1.8" + slash "^1.0.0" + source-map "^0.5.7" + +babel-eslint@10.0.1: + version "10.0.1" + resolved "http://52.167.60.66:8081/repository/npm-all/babel-eslint/-/babel-eslint-10.0.1.tgz#919681dc099614cd7d31d45c8908695092a1faed" + integrity sha512-z7OT1iNV+TjOwHNLLyJk+HN+YVWX+CLE6fPD2SymJZOZQBs+QIexFjhm4keGTm8MW9xr4EC9Q0PbaLB24V5GoQ== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/parser" "^7.0.0" + "@babel/traverse" "^7.0.0" + "@babel/types" "^7.0.0" + eslint-scope "3.7.1" + eslint-visitor-keys "^1.0.0" + +babel-eslint@10.0.2: + version "10.0.2" + resolved "http://52.167.60.66:8081/repository/npm-all/babel-eslint/-/babel-eslint-10.0.2.tgz#182d5ac204579ff0881684b040560fdcc1558456" + integrity sha512-UdsurWPtgiPgpJ06ryUnuaSXC2s0WoSZnQmEpbAH65XZSdwowgN5MvyP7e88nW07FYXv72erVtpBkxyDVKhH1Q== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/parser" "^7.0.0" + "@babel/traverse" "^7.0.0" + "@babel/types" "^7.0.0" + eslint-scope "3.7.1" + eslint-visitor-keys "^1.0.0" + +babel-eslint@^9.0.0: + version "9.0.0" + resolved "http://52.167.60.66:8081/repository/npm-all/babel-eslint/-/babel-eslint-9.0.0.tgz#7d9445f81ed9f60aff38115f838970df9f2b6220" + integrity sha512-itv1MwE3TMbY0QtNfeL7wzak1mV47Uy+n6HtSOO4Xd7rvmO+tsGQSgyOEEgo6Y2vHZKZphaoelNeSVj4vkLA1g== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/parser" "^7.0.0" + "@babel/traverse" "^7.0.0" + "@babel/types" "^7.0.0" + eslint-scope "3.7.1" + eslint-visitor-keys "^1.0.0" + +babel-generator@^6.26.0: + version "6.26.1" + resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.1.tgz#1844408d3b8f0d35a404ea7ac180f087a601bd90" + integrity sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA== + dependencies: + babel-messages "^6.23.0" + babel-runtime "^6.26.0" + babel-types "^6.26.0" + detect-indent "^4.0.0" + jsesc "^1.3.0" + lodash "^4.17.4" + source-map "^0.5.7" + trim-right "^1.0.1" + +babel-helper-builder-binary-assignment-operator-visitor@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz#cce4517ada356f4220bcae8a02c2b346f9a56664" + integrity sha1-zORReto1b0IgvK6KAsKzRvmlZmQ= + dependencies: + babel-helper-explode-assignable-expression "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-call-delegate@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz#ece6aacddc76e41c3461f88bfc575bd0daa2df8d" + integrity sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340= + dependencies: + babel-helper-hoist-variables "^6.24.1" + babel-runtime "^6.22.0" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-define-map@^6.24.1: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz#a5f56dab41a25f97ecb498c7ebaca9819f95be5f" + integrity sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8= + dependencies: + babel-helper-function-name "^6.24.1" + babel-runtime "^6.26.0" + babel-types "^6.26.0" + lodash "^4.17.4" + +babel-helper-explode-assignable-expression@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz#f25b82cf7dc10433c55f70592d5746400ac22caa" + integrity sha1-8luCz33BBDPFX3BZLVdGQArCLKo= + dependencies: + babel-runtime "^6.22.0" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-function-name@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz#d3475b8c03ed98242a25b48351ab18399d3580a9" + integrity sha1-00dbjAPtmCQqJbSDUasYOZ01gKk= + dependencies: + babel-helper-get-function-arity "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-get-function-arity@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz#8f7782aa93407c41d3aa50908f89b031b1b6853d" + integrity sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0= + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-hoist-variables@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz#1ecb27689c9d25513eadbc9914a73f5408be7a76" + integrity sha1-HssnaJydJVE+rbyZFKc/VAi+enY= + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-optimise-call-expression@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz#f7a13427ba9f73f8f4fa993c54a97882d1244257" + integrity sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc= + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-regex@^6.24.1: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz#325c59f902f82f24b74faceed0363954f6495e72" + integrity sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI= + dependencies: + babel-runtime "^6.26.0" + babel-types "^6.26.0" + lodash "^4.17.4" + +babel-helper-remap-async-to-generator@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz#5ec581827ad723fecdd381f1c928390676e4551b" + integrity sha1-XsWBgnrXI/7N04HxySg5BnbkVRs= + dependencies: + babel-helper-function-name "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-replace-supers@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz#bf6dbfe43938d17369a213ca8a8bf74b6a90ab1a" + integrity sha1-v22/5Dk40XNpohPKiov3S2qQqxo= + dependencies: + babel-helper-optimise-call-expression "^6.24.1" + babel-messages "^6.23.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helpers@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2" + integrity sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI= + dependencies: + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-messages@^6.23.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" + integrity sha1-8830cDhYA1sqKVHG7F7fbGLyYw4= + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-check-es2015-constants@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz#35157b101426fd2ffd3da3f75c7d1e91835bbf8a" + integrity sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o= + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-syntax-async-functions@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95" + integrity sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU= + +babel-plugin-syntax-exponentiation-operator@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz#9ee7e8337290da95288201a6a57f4170317830de" + integrity sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4= + +babel-plugin-syntax-trailing-function-commas@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz#ba0360937f8d06e40180a43fe0d5616fff532cf3" + integrity sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM= + +babel-plugin-transform-async-to-generator@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz#6536e378aff6cb1d5517ac0e40eb3e9fc8d08761" + integrity sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E= + dependencies: + babel-helper-remap-async-to-generator "^6.24.1" + babel-plugin-syntax-async-functions "^6.8.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-arrow-functions@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz#452692cb711d5f79dc7f85e440ce41b9f244d221" + integrity sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE= + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-block-scoped-functions@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz#bbc51b49f964d70cb8d8e0b94e820246ce3a6141" + integrity sha1-u8UbSflk1wy42OC5ToICRs46YUE= + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-block-scoping@^6.23.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz#d70f5299c1308d05c12f463813b0a09e73b1895f" + integrity sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8= + dependencies: + babel-runtime "^6.26.0" + babel-template "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + lodash "^4.17.4" + +babel-plugin-transform-es2015-classes@^6.23.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz#5a4c58a50c9c9461e564b4b2a3bfabc97a2584db" + integrity sha1-WkxYpQyclGHlZLSyo7+ryXolhNs= + dependencies: + babel-helper-define-map "^6.24.1" + babel-helper-function-name "^6.24.1" + babel-helper-optimise-call-expression "^6.24.1" + babel-helper-replace-supers "^6.24.1" + babel-messages "^6.23.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-computed-properties@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz#6fe2a8d16895d5634f4cd999b6d3480a308159b3" + integrity sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM= + dependencies: + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-destructuring@^6.23.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz#997bb1f1ab967f682d2b0876fe358d60e765c56d" + integrity sha1-mXux8auWf2gtKwh2/jWNYOdlxW0= + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-duplicate-keys@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz#73eb3d310ca969e3ef9ec91c53741a6f1576423e" + integrity sha1-c+s9MQypaePvnskcU3QabxV2Qj4= + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-for-of@^6.23.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz#f47c95b2b613df1d3ecc2fdb7573623c75248691" + integrity sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE= + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-function-name@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz#834c89853bc36b1af0f3a4c5dbaa94fd8eacaa8b" + integrity sha1-g0yJhTvDaxrw86TF26qU/Y6sqos= + dependencies: + babel-helper-function-name "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-literals@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz#4f54a02d6cd66cf915280019a31d31925377ca2e" + integrity sha1-T1SgLWzWbPkVKAAZox0xklN3yi4= + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-modules-amd@^6.22.0, babel-plugin-transform-es2015-modules-amd@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz#3b3e54017239842d6d19c3011c4bd2f00a00d154" + integrity sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ= + dependencies: + babel-plugin-transform-es2015-modules-commonjs "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-modules-commonjs@^6.23.0, babel-plugin-transform-es2015-modules-commonjs@^6.24.1: + version "6.26.2" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz#58a793863a9e7ca870bdc5a881117ffac27db6f3" + integrity sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q== + dependencies: + babel-plugin-transform-strict-mode "^6.24.1" + babel-runtime "^6.26.0" + babel-template "^6.26.0" + babel-types "^6.26.0" + +babel-plugin-transform-es2015-modules-systemjs@^6.23.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz#ff89a142b9119a906195f5f106ecf305d9407d23" + integrity sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM= + dependencies: + babel-helper-hoist-variables "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-modules-umd@^6.23.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz#ac997e6285cd18ed6176adb607d602344ad38468" + integrity sha1-rJl+YoXNGO1hdq22B9YCNErThGg= + dependencies: + babel-plugin-transform-es2015-modules-amd "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-object-super@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz#24cef69ae21cb83a7f8603dad021f572eb278f8d" + integrity sha1-JM72muIcuDp/hgPa0CH1cusnj40= + dependencies: + babel-helper-replace-supers "^6.24.1" + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-parameters@^6.23.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz#57ac351ab49caf14a97cd13b09f66fdf0a625f2b" + integrity sha1-V6w1GrScrxSpfNE7CfZv3wpiXys= + dependencies: + babel-helper-call-delegate "^6.24.1" + babel-helper-get-function-arity "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-shorthand-properties@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz#24f875d6721c87661bbd99a4622e51f14de38aa0" + integrity sha1-JPh11nIch2YbvZmkYi5R8U3jiqA= + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-spread@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz#d6d68a99f89aedc4536c81a542e8dd9f1746f8d1" + integrity sha1-1taKmfia7cRTbIGlQujdnxdG+NE= + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-sticky-regex@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz#00c1cdb1aca71112cdf0cf6126c2ed6b457ccdbc" + integrity sha1-AMHNsaynERLN8M9hJsLta0V8zbw= + dependencies: + babel-helper-regex "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-template-literals@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz#a84b3450f7e9f8f1f6839d6d687da84bb1236d8d" + integrity sha1-qEs0UPfp+PH2g51taH2oS7EjbY0= + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-typeof-symbol@^6.23.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz#dec09f1cddff94b52ac73d505c84df59dcceb372" + integrity sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I= + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-unicode-regex@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz#d38b12f42ea7323f729387f18a7c5ae1faeb35e9" + integrity sha1-04sS9C6nMj9yk4fxinxa4frrNek= + dependencies: + babel-helper-regex "^6.24.1" + babel-runtime "^6.22.0" + regexpu-core "^2.0.0" + +babel-plugin-transform-exponentiation-operator@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz#2ab0c9c7f3098fa48907772bb813fe41e8de3a0e" + integrity sha1-KrDJx/MJj6SJB3cruBP+QejeOg4= + dependencies: + babel-helper-builder-binary-assignment-operator-visitor "^6.24.1" + babel-plugin-syntax-exponentiation-operator "^6.8.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-regenerator@^6.22.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz#e0703696fbde27f0a3efcacf8b4dca2f7b3a8f2f" + integrity sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8= + dependencies: + regenerator-transform "^0.10.0" + +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-polyfill@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-polyfill/-/babel-polyfill-6.26.0.tgz#379937abc67d7895970adc621f284cd966cf2153" + integrity sha1-N5k3q8Z9eJWXCtxiHyhM2WbPIVM= + dependencies: + babel-runtime "^6.26.0" + core-js "^2.5.0" + regenerator-runtime "^0.10.5" + +babel-preset-env@^1.6.1, babel-preset-env@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/babel-preset-env/-/babel-preset-env-1.7.0.tgz#dea79fa4ebeb883cd35dab07e260c1c9c04df77a" + integrity sha512-9OR2afuKDneX2/q2EurSftUYM0xGu4O2D9adAhVfADDhrYDaxXV0rBbevVYoY9n6nyX1PmQW/0jtpJvUNr9CHg== + dependencies: + babel-plugin-check-es2015-constants "^6.22.0" + babel-plugin-syntax-trailing-function-commas "^6.22.0" + babel-plugin-transform-async-to-generator "^6.22.0" + babel-plugin-transform-es2015-arrow-functions "^6.22.0" + babel-plugin-transform-es2015-block-scoped-functions "^6.22.0" + babel-plugin-transform-es2015-block-scoping "^6.23.0" + babel-plugin-transform-es2015-classes "^6.23.0" + babel-plugin-transform-es2015-computed-properties "^6.22.0" + babel-plugin-transform-es2015-destructuring "^6.23.0" + babel-plugin-transform-es2015-duplicate-keys "^6.22.0" + babel-plugin-transform-es2015-for-of "^6.23.0" + babel-plugin-transform-es2015-function-name "^6.22.0" + babel-plugin-transform-es2015-literals "^6.22.0" + babel-plugin-transform-es2015-modules-amd "^6.22.0" + babel-plugin-transform-es2015-modules-commonjs "^6.23.0" + babel-plugin-transform-es2015-modules-systemjs "^6.23.0" + babel-plugin-transform-es2015-modules-umd "^6.23.0" + babel-plugin-transform-es2015-object-super "^6.22.0" + babel-plugin-transform-es2015-parameters "^6.23.0" + babel-plugin-transform-es2015-shorthand-properties "^6.22.0" + babel-plugin-transform-es2015-spread "^6.22.0" + babel-plugin-transform-es2015-sticky-regex "^6.22.0" + babel-plugin-transform-es2015-template-literals "^6.22.0" + babel-plugin-transform-es2015-typeof-symbol "^6.23.0" + babel-plugin-transform-es2015-unicode-regex "^6.22.0" + babel-plugin-transform-exponentiation-operator "^6.22.0" + babel-plugin-transform-regenerator "^6.22.0" + browserslist "^3.2.6" + invariant "^2.2.2" + semver "^5.3.0" + +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.18.0, babel-runtime@^6.22.0, babel-runtime@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4= @@ -705,6 +1359,59 @@ babel-runtime@^6.26.0: core-js "^2.4.0" regenerator-runtime "^0.11.0" +babel-template@^6.24.1, babel-template@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02" + integrity sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI= + dependencies: + babel-runtime "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + lodash "^4.17.4" + +babel-traverse@^6.24.1, babel-traverse@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee" + integrity sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4= + dependencies: + babel-code-frame "^6.26.0" + babel-messages "^6.23.0" + babel-runtime "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + debug "^2.6.8" + globals "^9.18.0" + invariant "^2.2.2" + lodash "^4.17.4" + +babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" + dependencies: + babel-runtime "^6.26.0" + esutils "^2.0.2" + lodash "^4.17.4" + to-fast-properties "^1.0.3" + +babel-watch@^7.0.0: + version "7.0.0" + resolved "http://52.167.60.66:8081/repository/npm-all/babel-watch/-/babel-watch-7.0.0.tgz#2c7cac04a1f6bdaf3b9fc6267abd6b8001f88b89" + integrity sha512-DCK5pXNbDYr1c90wk1lP98bOxb+9BkvVieeYDTQPbcaEP9br6jJcVeJhr+zcQxry0yA45lPXWP+NS88/YVXZag== + dependencies: + chokidar "^1.4.3" + commander "^2.9.0" + lodash.debounce "^4.0.8" + lodash.isarray "^4.0.0" + lodash.isregexp "^4.0.1" + lodash.isstring "^4.0.1" + source-map-support "^0.4.0" + +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== + bach@^1.0.0: version "1.2.0" resolved "http://52.167.60.66:8081/repository/npm-all/bach/-/bach-1.2.0.tgz#4b3ce96bf27134f79a1b414a51c14e34c3bd9880" @@ -799,7 +1506,7 @@ bluebird@^3.5.0, bluebird@^3.5.4: resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.5.tgz#a8d0afd73251effbbd5fe384a77d73003c17a71f" integrity sha512-5am6HnnfN+urzt4yfg7IgTbotDjIT/u8AJpEt0sIU9FtXfVeezXAPKswrG+xKUCOYAINpSdgZVDU6QFh+cuH3w== -bn.js@5.0.0: +bn.js@5.0.0, bn.js@^5.0.0: version "5.0.0" resolved "http://52.167.60.66:8081/repository/npm-all/bn.js/-/bn.js-5.0.0.tgz#5c3d398021b3ddb548c1296a16f857e908f35c70" integrity sha512-bVwDX8AF+72fIUNuARelKAlQUNtPOfG2fRxorbVvFk4zpHbqLrPdOGfVg5vrKwVzLLePqPBiATaOZNELQzmS0A== @@ -849,6 +1556,15 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" +braces@^1.8.2: + version "1.8.5" + resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" + integrity sha1-uneWLhLf+WnWt2cR6RS3N4V79qc= + dependencies: + expand-range "^1.8.1" + preserve "^0.2.0" + repeat-element "^1.1.2" + braces@^2.3.1, braces@^2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" @@ -892,6 +1608,14 @@ browserify-aes@^1.0.6: inherits "^2.0.1" safe-buffer "^5.0.1" +browserslist@^3.2.6: + version "3.2.8" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-3.2.8.tgz#b0005361d6471f0f5952797a76fc985f1f978fc6" + integrity sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ== + dependencies: + caniuse-lite "^1.0.30000844" + electron-to-chromium "^1.3.47" + bs58@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/bs58/-/bs58-4.0.1.tgz#be161e76c354f6f788ae4071f63f34e8c4f0a42a" @@ -929,6 +1653,18 @@ cache-base@^1.0.1: union-value "^1.0.0" unset-value "^1.0.0" +caller-path@^0.1.0: + version "0.1.0" + resolved "http://52.167.60.66:8081/repository/npm-all/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f" + integrity sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8= + dependencies: + callsites "^0.2.0" + +callsites@^0.2.0: + version "0.2.0" + resolved "http://52.167.60.66:8081/repository/npm-all/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca" + integrity sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo= + callsites@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" @@ -949,6 +1685,11 @@ camelcase@^5.0.0, camelcase@^5.3.1: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== +caniuse-lite@^1.0.30000844: + version "1.0.30000962" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000962.tgz#6c10c3ab304b89bea905e66adf98c0905088ee44" + integrity sha512-WXYsW38HK+6eaj5IZR16Rn91TGhU3OhbwjKZvJ4HN/XBIABLKfbij9Mnd3pM0VEwZSlltWjoWg3I8FQ0DGgNOA== + 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" @@ -991,6 +1732,16 @@ chai@4.2.0: pathval "^1.1.0" type-detect "^4.0.5" +chalk@^1.1.3: + version "1.1.3" + resolved "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + dependencies: + ansi-styles "^2.2.1" + escape-string-regexp "^1.0.2" + has-ansi "^2.0.0" + strip-ansi "^3.0.0" + supports-color "^2.0.0" + chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" @@ -1000,6 +1751,11 @@ chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.4.2: escape-string-regexp "^1.0.5" supports-color "^5.3.0" +chardet@^0.4.0: + version "0.4.2" + resolved "http://52.167.60.66:8081/repository/npm-all/chardet/-/chardet-0.4.2.tgz#b5473b33dc97c424e5d98dc87d55d4d8a29c8bf2" + integrity sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I= + chardet@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" @@ -1010,6 +1766,22 @@ check-error@^1.0.2: resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82" integrity sha1-V00xLt2Iu13YkS6Sht1sCu1KrII= +chokidar@^1.4.3, chokidar@^1.6.1: + version "1.7.0" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" + integrity sha1-eY5ol3gVHIB2tLNg5e3SjNortGg= + dependencies: + anymatch "^1.3.0" + async-each "^1.0.0" + glob-parent "^2.0.0" + inherits "^2.0.1" + is-binary-path "^1.0.0" + is-glob "^2.0.0" + path-is-absolute "^1.0.0" + readdirp "^2.0.0" + optionalDependencies: + fsevents "^1.0.0" + chokidar@^2.0.0, chokidar@^2.1.5: version "2.1.5" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.5.tgz#0ae8434d962281a5f56c72869e79cb6d9d86ad4d" @@ -1052,6 +1824,11 @@ cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: inherits "^2.0.1" safe-buffer "^5.0.1" +circular-json@^0.3.1: + version "0.3.3" + resolved "http://52.167.60.66:8081/repository/npm-all/circular-json/-/circular-json-0.3.3.tgz#815c99ea84f6809529d2f45791bdf82711352d66" + integrity sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A== + class-utils@^0.3.5: version "0.3.6" resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" @@ -1072,6 +1849,13 @@ cli-boxes@^2.2.0: resolved "http://52.167.60.66:8081/repository/npm-all/cli-boxes/-/cli-boxes-2.2.0.tgz#538ecae8f9c6ca508e3c3c95b453fe93cb4c168d" integrity sha512-gpaBrMAizVEANOpfZp/EEUixTXDyGt7DFzdK5hU+UbWt/J0lB0w20ncZj59Z9a93xHb9u12zF5BS6i9RKbtg4w== +cli-cursor@^2.1.0: + version "2.1.0" + resolved "http://52.167.60.66:8081/repository/npm-all/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" + integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU= + dependencies: + restore-cursor "^2.0.0" + cli-cursor@^3.1.0: version "3.1.0" resolved "http://52.167.60.66:8081/repository/npm-all/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" @@ -1181,6 +1965,11 @@ combined-stream@^1.0.6, combined-stream@~1.0.6: dependencies: delayed-stream "~1.0.0" +commander@^2.11.0, commander@^2.9.0: + version "2.20.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422" + integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ== + component-emitter@^1.2.0, component-emitter@^1.2.1: version "1.3.0" resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" @@ -1228,7 +2017,7 @@ content-type@^1.0.2: resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== -convert-source-map@^1.5.0: +convert-source-map@^1.1.0, convert-source-map@^1.5.0, convert-source-map@^1.5.1: version "1.6.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.6.0.tgz#51b537a8c43e0f04dec1993bffcdd504e758ac20" integrity sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A== @@ -1253,7 +2042,7 @@ copy-props@^2.0.1: each-props "^1.3.0" is-plain-object "^2.0.1" -core-js@^2.4.0: +core-js@^2.4.0, core-js@^2.5.0: version "2.6.5" resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.5.tgz#44bc8d249e7fb2ff5d00e0341a7ffb94fbf67895" integrity sha512-klh/kDpwX8hryYL14M9w/xei6vrv6sE8gTHDG7/T/+SEovB/G4ejwcfE/CBzO6Edsu+OETZMZ3wcX/EjUkrl5A== @@ -1431,6 +2220,18 @@ define-property@^2.0.2: is-descriptor "^1.0.2" isobject "^3.0.1" +deglob@^2.1.0: + version "2.1.1" + resolved "http://52.167.60.66:8081/repository/npm-all/deglob/-/deglob-2.1.1.tgz#d268e168727799862e8eac07042e165957c1f3be" + integrity sha512-2kjwuGGonL7gWE1XU4Fv79+vVzpoQCl0V+boMwWtOQJV2AGDabCwez++nB1Nli/8BabAfZQ/UuHPlp6AymKdWw== + dependencies: + find-root "^1.0.0" + glob "^7.0.5" + ignore "^3.0.9" + pkg-config "^1.1.0" + run-parallel "^1.1.2" + uniq "^1.0.1" + deglob@^4.0.0: version "4.0.0" resolved "http://52.167.60.66:8081/repository/npm-all/deglob/-/deglob-4.0.0.tgz#26df218423dceb0d9001583c0b89b51efbb20059" @@ -1458,6 +2259,13 @@ detect-file@^1.0.0: resolved "http://52.167.60.66:8081/repository/npm-all/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7" integrity sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc= +detect-indent@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" + integrity sha1-920GQ1LN9Docts5hnE7jqUdd4gg= + dependencies: + repeating "^2.0.0" + detect-libc@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" @@ -1468,6 +2276,11 @@ diff@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.1" + resolved "http://52.167.60.66:8081/repository/npm-all/diff/-/diff-4.0.1.tgz#0c667cb467ebbb5cea7f14f135cc2dba7780a8ff" + integrity sha512-s2+XdvhPCOF01LRQBC8hf4vhbVmI2CGS5aZnxLJlT5FtdhPCDFq80q++zK2KlrVorVDdL5BOGZ/VfLrVtYNF+Q== + doctrine@1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" @@ -1542,6 +2355,11 @@ ecc-jsbn@~0.1.1: jsbn "~0.1.0" safer-buffer "^2.1.0" +electron-to-chromium@^1.3.47: + version "1.3.125" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.125.tgz#dbde0e95e64ebe322db0eca764d951f885a5aff2" + integrity sha512-XxowpqQxJ4nDwUXHtVtmEhRqBpm2OnjBomZmZtHD0d2Eo0244+Ojezhk3sD/MBSSe2nxCdGQFRXHIsf/LUTL9A== + elliptic@^6.4.1: version "6.4.1" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.1.tgz#c2d0b7776911b86722c632c3c06c60f2f819939a" @@ -1648,7 +2466,7 @@ es6-weak-map@^2.0.1, es6-weak-map@^2.0.2: es6-iterator "^2.0.1" es6-symbol "^3.1.1" -escape-string-regexp@1.0.5, escape-string-regexp@^1.0.5: +escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, 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= @@ -1665,17 +2483,27 @@ eslint-config-prettier@6.1.0: dependencies: get-stdin "^6.0.0" +eslint-config-standard-jsx@6.0.2: + version "6.0.2" + resolved "http://52.167.60.66:8081/repository/npm-all/eslint-config-standard-jsx/-/eslint-config-standard-jsx-6.0.2.tgz#90c9aa16ac2c4f8970c13fc7efc608bacd02da70" + integrity sha512-D+YWAoXw+2GIdbMBRAzWwr1ZtvnSf4n4yL0gKGg7ShUOGXkSOLerI17K4F6LdQMJPNMoWYqepzQD/fKY+tXNSg== + eslint-config-standard-jsx@~8.0.0: version "8.0.0" resolved "http://52.167.60.66:8081/repository/npm-all/eslint-config-standard-jsx/-/eslint-config-standard-jsx-8.0.0.tgz#62607f2a7c0c47aed46d3a37ad7ebc73b6f7e869" integrity sha512-Abs/WP+638KfkHI1J961yAztpMhYFvEMTqD4GMUZObAO9yOmLaQZlJY6xke1ty1+zhY4G58AuvHo3ht6avAEVQ== +eslint-config-standard@12.0.0: + version "12.0.0" + resolved "http://52.167.60.66:8081/repository/npm-all/eslint-config-standard/-/eslint-config-standard-12.0.0.tgz#638b4c65db0bd5a41319f96bba1f15ddad2107d9" + integrity sha512-COUz8FnXhqFitYj4DTqHzidjIL/t4mumGZto5c7DrBpvWoie+Sn3P4sLEzUGeYhRElWuFEf8K1S1EfvD1vixCQ== + eslint-config-standard@14.0.0, eslint-config-standard@~14.0.0: version "14.0.0" resolved "http://52.167.60.66:8081/repository/npm-all/eslint-config-standard/-/eslint-config-standard-14.0.0.tgz#1de7bf5af37542dc6eef879ab7eb5e5e0f830747" integrity sha512-bV6e2LFvJEetrLjVAy4KWPOUsIhPWr040c649MigTPR6yUtaGuOt6CEAyNeez2lRiC+2+vjGWa02byjs25EB3A== -eslint-import-resolver-node@^0.3.2: +eslint-import-resolver-node@^0.3.1, eslint-import-resolver-node@^0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz#58f15fb839b8d0576ca980413476aab2472db66a" integrity sha512-sfmTqJfPSizWu4aymbPr4Iidp5yKm8yDkHp+Ir3YiTHiiDfxh69mOUsmiqW6RZ9zRXFaF64GtYmN7e+8GHBv6Q== @@ -1683,7 +2511,7 @@ eslint-import-resolver-node@^0.3.2: debug "^2.6.9" resolve "^1.5.0" -eslint-module-utils@^2.4.0: +eslint-module-utils@^2.2.0, eslint-module-utils@^2.4.0: version "2.4.0" resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.4.0.tgz#8b93499e9b00eab80ccb6614e69f03678e84e09a" integrity sha512-14tltLm38Eu3zS+mt0KvILC3q8jyIAH518MlG+HO0p+yK885Lb1UHTY/UgR91eOyGdmxAPb+OLoW4znqIT6Ndw== @@ -1691,7 +2519,7 @@ eslint-module-utils@^2.4.0: debug "^2.6.8" pkg-dir "^2.0.0" -eslint-plugin-es@^1.4.0: +eslint-plugin-es@^1.3.1, eslint-plugin-es@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/eslint-plugin-es/-/eslint-plugin-es-1.4.0.tgz#475f65bb20c993fc10e8c8fe77d1d60068072da6" integrity sha512-XfFmgFdIUDgvaRAlaXUkxrRg5JSADoRC8IkKLc/cISeR3yHVMefFHQZpcyXXEUUPHfy5DwviBcrfqlyqEwlQVw== @@ -1716,6 +2544,22 @@ eslint-plugin-import@2.18.2, eslint-plugin-import@~2.18.0: read-pkg-up "^2.0.0" resolve "^1.11.0" +eslint-plugin-import@~2.14.0: + version "2.14.0" + resolved "http://52.167.60.66:8081/repository/npm-all/eslint-plugin-import/-/eslint-plugin-import-2.14.0.tgz#6b17626d2e3e6ad52cfce8807a845d15e22111a8" + integrity sha512-FpuRtniD/AY6sXByma2Wr0TXvXJ4nA/2/04VPlfpmUDPOpOY264x+ILiwnrk/k4RINgDAyFZByxqPUbSQ5YE7g== + dependencies: + contains-path "^0.1.0" + debug "^2.6.8" + doctrine "1.5.0" + eslint-import-resolver-node "^0.3.1" + eslint-module-utils "^2.2.0" + has "^1.0.1" + lodash "^4.17.4" + minimatch "^3.0.3" + read-pkg-up "^2.0.0" + resolve "^1.6.0" + eslint-plugin-node@^9.1.0, eslint-plugin-node@~9.1.0: version "9.1.0" resolved "https://registry.yarnpkg.com/eslint-plugin-node/-/eslint-plugin-node-9.1.0.tgz#f2fd88509a31ec69db6e9606d76dabc5adc1b91a" @@ -1728,11 +2572,28 @@ eslint-plugin-node@^9.1.0, eslint-plugin-node@~9.1.0: resolve "^1.10.1" semver "^6.1.0" +eslint-plugin-node@~7.0.1: + version "7.0.1" + resolved "http://52.167.60.66:8081/repository/npm-all/eslint-plugin-node/-/eslint-plugin-node-7.0.1.tgz#a6e054e50199b2edd85518b89b4e7b323c9f36db" + integrity sha512-lfVw3TEqThwq0j2Ba/Ckn2ABdwmL5dkOgAux1rvOk6CO7A6yGyPI2+zIxN6FyNkp1X1X/BSvKOceD6mBWSj4Yw== + dependencies: + eslint-plugin-es "^1.3.1" + eslint-utils "^1.3.1" + ignore "^4.0.2" + minimatch "^3.0.4" + resolve "^1.8.1" + semver "^5.5.0" + eslint-plugin-promise@4.2.1, eslint-plugin-promise@~4.2.1: version "4.2.1" resolved "http://52.167.60.66:8081/repository/npm-all/eslint-plugin-promise/-/eslint-plugin-promise-4.2.1.tgz#845fd8b2260ad8f82564c1222fce44ad71d9418a" integrity sha512-VoM09vT7bfA7D+upt+FjeBO5eHIJQBUWki1aPvB+vbNiHS3+oGIJGIeyBtKQTME6UPXXy3vV07OL1tHd3ANuDw== +eslint-plugin-promise@~4.0.0: + version "4.0.1" + resolved "http://52.167.60.66:8081/repository/npm-all/eslint-plugin-promise/-/eslint-plugin-promise-4.0.1.tgz#2d074b653f35a23d1ba89d8e976a985117d1c6a2" + integrity sha512-Si16O0+Hqz1gDHsys6RtFRrW7cCTB6P7p3OJmKp3Y3dxpQE2qwOA7d3xnV+0mBmrPoi0RBnxlCKvqu70te6wjg== + eslint-plugin-react@7.14.3, eslint-plugin-react@~7.14.2: version "7.14.3" resolved "http://52.167.60.66:8081/repository/npm-all/eslint-plugin-react/-/eslint-plugin-react-7.14.3.tgz#911030dd7e98ba49e1b2208599571846a66bdf13" @@ -1748,11 +2609,29 @@ eslint-plugin-react@7.14.3, eslint-plugin-react@~7.14.2: prop-types "^15.7.2" resolve "^1.10.1" +eslint-plugin-react@~7.11.1: + version "7.11.1" + resolved "http://52.167.60.66:8081/repository/npm-all/eslint-plugin-react/-/eslint-plugin-react-7.11.1.tgz#c01a7af6f17519457d6116aa94fc6d2ccad5443c" + integrity sha512-cVVyMadRyW7qsIUh3FHp3u6QHNhOgVrLQYdQEB1bPWBsgbNCHdFAeNMquBMCcZJu59eNthX053L70l7gRt4SCw== + dependencies: + array-includes "^3.0.3" + doctrine "^2.1.0" + has "^1.0.3" + jsx-ast-utils "^2.0.1" + prop-types "^15.6.2" + eslint-plugin-standard@4.0.1, eslint-plugin-standard@~4.0.0: version "4.0.1" resolved "http://52.167.60.66:8081/repository/npm-all/eslint-plugin-standard/-/eslint-plugin-standard-4.0.1.tgz#ff0519f7ffaff114f76d1bd7c3996eef0f6e20b4" integrity sha512-v/KBnfyaOMPmZc/dmc6ozOdWqekGp7bBGq4jLAecEfPGmfKiWS4sA8sC0LqiV9w5qmXAtXVn4M3p1jSyhY85SQ== +eslint-scope@3.7.1: + version "3.7.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.1.tgz#3d63c3edfda02e06e01a452ad88caacc7cdcb6e8" + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + eslint-scope@^4.0.0: version "4.0.3" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" @@ -1824,6 +2703,50 @@ eslint@6.2.0: text-table "^0.2.0" v8-compile-cache "^2.0.3" +eslint@~5.4.0: + version "5.4.0" + resolved "http://52.167.60.66:8081/repository/npm-all/eslint/-/eslint-5.4.0.tgz#d068ec03006bb9e06b429dc85f7e46c1b69fac62" + integrity sha512-UIpL91XGex3qtL6qwyCQJar2j3osKxK9e3ano3OcGEIRM4oWIpCkDg9x95AXEC2wMs7PnxzOkPZ2gq+tsMS9yg== + dependencies: + ajv "^6.5.0" + babel-code-frame "^6.26.0" + chalk "^2.1.0" + cross-spawn "^6.0.5" + debug "^3.1.0" + doctrine "^2.1.0" + eslint-scope "^4.0.0" + eslint-utils "^1.3.1" + eslint-visitor-keys "^1.0.0" + espree "^4.0.0" + esquery "^1.0.1" + esutils "^2.0.2" + file-entry-cache "^2.0.0" + functional-red-black-tree "^1.0.1" + glob "^7.1.2" + globals "^11.7.0" + ignore "^4.0.2" + imurmurhash "^0.1.4" + inquirer "^5.2.0" + is-resolvable "^1.1.0" + js-yaml "^3.11.0" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.3.0" + lodash "^4.17.5" + minimatch "^3.0.4" + mkdirp "^0.5.1" + natural-compare "^1.4.0" + optionator "^0.8.2" + path-is-inside "^1.0.2" + pluralize "^7.0.0" + progress "^2.0.0" + regexpp "^2.0.0" + require-uncached "^1.0.3" + semver "^5.5.0" + strip-ansi "^4.0.0" + strip-json-comments "^2.0.1" + table "^4.0.3" + text-table "^0.2.0" + eslint@~6.1.0: version "6.1.0" resolved "http://52.167.60.66:8081/repository/npm-all/eslint/-/eslint-6.1.0.tgz#06438a4a278b1d84fb107d24eaaa35471986e646" @@ -1867,6 +2790,15 @@ eslint@~6.1.0: text-table "^0.2.0" v8-compile-cache "^2.0.3" +espree@^4.0.0: + version "4.1.0" + resolved "http://52.167.60.66:8081/repository/npm-all/espree/-/espree-4.1.0.tgz#728d5451e0fd156c04384a7ad89ed51ff54eb25f" + integrity sha512-I5BycZW6FCVIub93TeVY1s7vjhP9CY6cXCznIRfiig7nRviKZYdRnj/sHEWC6A7WE9RDWOFq9+7OsWSYz8qv2w== + dependencies: + acorn "^6.0.2" + acorn-jsx "^5.0.0" + eslint-visitor-keys "^1.0.0" + espree@^6.0.0, espree@^6.1.0: version "6.1.0" resolved "http://52.167.60.66:8081/repository/npm-all/espree/-/espree-6.1.0.tgz#a1e8aa65bf29a331d70351ed814a80e7534e0884" @@ -1952,6 +2884,13 @@ execa@^1.0.0: signal-exit "^3.0.0" strip-eof "^1.0.0" +expand-brackets@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" + integrity sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s= + dependencies: + is-posix-bracket "^0.1.0" + expand-brackets@^2.1.4: version "2.1.4" resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" @@ -1965,6 +2904,13 @@ expand-brackets@^2.1.4: snapdragon "^0.8.1" to-regex "^3.0.1" +expand-range@^1.8.1: + version "1.8.2" + resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" + integrity sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc= + dependencies: + fill-range "^2.1.0" + expand-tilde@^2.0.0, expand-tilde@^2.0.2: version "2.0.2" resolved "http://52.167.60.66:8081/repository/npm-all/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502" @@ -1992,6 +2938,15 @@ extend@^3.0.0, extend@~3.0.2: resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== +external-editor@^2.1.0: + version "2.2.0" + resolved "http://52.167.60.66:8081/repository/npm-all/external-editor/-/external-editor-2.2.0.tgz#045511cfd8d133f3846673d1047c154e214ad3d5" + integrity sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A== + dependencies: + chardet "^0.4.0" + iconv-lite "^0.4.17" + tmp "^0.0.33" + external-editor@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.0.3.tgz#5866db29a97826dbe4bf3afd24070ead9ea43a27" @@ -2001,6 +2956,13 @@ 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" @@ -2050,6 +3012,13 @@ fast-levenshtein@~2.0.4: resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= +figures@^2.0.0: + version "2.0.0" + resolved "http://52.167.60.66:8081/repository/npm-all/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" + integrity sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI= + dependencies: + escape-string-regexp "^1.0.5" + figures@^3.0.0: version "3.0.0" resolved "http://52.167.60.66:8081/repository/npm-all/figures/-/figures-3.0.0.tgz#756275c964646163cc6f9197c7a0295dbfd04de9" @@ -2057,6 +3026,14 @@ figures@^3.0.0: dependencies: escape-string-regexp "^1.0.5" +file-entry-cache@^2.0.0: + version "2.0.0" + resolved "http://52.167.60.66:8081/repository/npm-all/file-entry-cache/-/file-entry-cache-2.0.0.tgz#c392990c3e684783d838b8c84a45d8a048458361" + integrity sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E= + dependencies: + flat-cache "^1.2.1" + object-assign "^4.0.1" + file-entry-cache@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c" @@ -2069,6 +3046,22 @@ file-uri-to-path@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= + +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" @@ -2150,6 +3143,16 @@ flagged-respawn@^1.0.0: resolved "http://52.167.60.66:8081/repository/npm-all/flagged-respawn/-/flagged-respawn-1.0.1.tgz#e7de6f1279ddd9ca9aac8a5971d618606b3aab41" integrity sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q== +flat-cache@^1.2.1: + version "1.3.4" + resolved "http://52.167.60.66:8081/repository/npm-all/flat-cache/-/flat-cache-1.3.4.tgz#2c2ef77525cc2929007dfffa1dd314aa9c9dee6f" + integrity sha512-VwyB3Lkgacfik2vhqR4uv2rvebqmDvFu4jlN/C1RzWoJEo8I7z4Q404oiqYCkq41mni8EzQnm95emU9seckwtg== + dependencies: + circular-json "^0.3.1" + graceful-fs "^4.1.2" + rimraf "~2.6.2" + write "^0.2.1" + flat-cache@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" @@ -2184,6 +3187,13 @@ for-in@^1.0.1, for-in@^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 "http://52.167.60.66:8081/repository/npm-all/for-own/-/for-own-1.0.0.tgz#c63332f415cedc4b04dbfe70cf836494c53cb44b" @@ -2232,12 +3242,17 @@ fs-mkdirp-stream@^1.0.0: graceful-fs "^4.1.11" through2 "^2.0.3" +fs-readdir-recursive@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz#e32fc030a2ccee44a6b5371308da54be0b397d27" + integrity sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA== + 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: +fsevents@^1.0.0, fsevents@^1.2.7: version "1.2.8" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.8.tgz#57ea5320f762cd4696e5e8e87120eccc8b11cacf" integrity sha512-tPvHgPGB7m40CZ68xqFGkKuzN+RnpGmSV+hgeKxhRpbxdqKXUFJGC3yonBOLzQBcJyGpdZFDfCsdOC2KFsXzeA== @@ -2339,6 +3354,21 @@ getpass@^0.1.1: dependencies: assert-plus "^1.0.0" +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@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" @@ -2382,7 +3412,7 @@ glob-watcher@^5.0.3: just-debounce "^1.0.0" object.defaults "^1.1.0" -glob@7.1.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.3: +glob@7.1.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3: version "7.1.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== @@ -2421,11 +3451,16 @@ global-prefix@^1.0.1: is-windows "^1.0.1" which "^1.2.14" -globals@^11.7.0: +globals@^11.1.0, globals@^11.7.0: version "11.11.0" resolved "https://registry.yarnpkg.com/globals/-/globals-11.11.0.tgz#dcf93757fa2de5486fbeed7118538adf789e9c2e" integrity sha512-WHq43gS+6ufNOEqlrDBxVEbb8ntfXrfAUU2ZOpCxrBdGKW3gyv8mCxAfIBD0DroPKGrJ2eSsXsLtY9MPntsyTw== +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== + glogg@^1.0.0: version "1.0.2" resolved "http://52.167.60.66:8081/repository/npm-all/glogg/-/glogg-1.0.2.tgz#2d7dd702beda22eb3bffadf880696da6d846313f" @@ -2450,7 +3485,7 @@ got@^6.7.1: unzip-response "^2.0.1" url-parse-lax "^1.0.0" -graceful-fs@^4.0.0, graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9: +graceful-fs@^4.0.0, graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.4, graceful-fs@^4.1.6, graceful-fs@^4.1.9: version "4.2.2" resolved "http://52.167.60.66:8081/repository/npm-all/graceful-fs/-/graceful-fs-4.2.2.tgz#6f0952605d0140c1cfdb138ed005775b92d67b02" integrity sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q== @@ -2514,6 +3549,12 @@ har-validator@~5.1.0: 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" + dependencies: + ansi-regex "^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" @@ -2597,6 +3638,14 @@ hmac-drbg@^1.0.0: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.1" +home-or-tmp@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8" + integrity sha1-42w/LSyufXRqhX440Y1fMqeILbg= + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.1" + homedir-polyfill@^1.0.1: version "1.0.3" resolved "http://52.167.60.66:8081/repository/npm-all/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8" @@ -2618,7 +3667,7 @@ http-signature@~1.2.0: jsprim "^1.2.2" sshpk "^1.7.0" -iconv-lite@^0.4.24, iconv-lite@^0.4.4, iconv-lite@~0.4.13: +iconv-lite@^0.4.17, iconv-lite@^0.4.24, iconv-lite@^0.4.4, iconv-lite@~0.4.13: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== @@ -2642,7 +3691,12 @@ ignore-walk@^3.0.1: dependencies: minimatch "^3.0.4" -ignore@^4.0.6: +ignore@^3.0.9: + version "3.3.10" + resolved "http://52.167.60.66:8081/repository/npm-all/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" + integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug== + +ignore@^4.0.2, ignore@^4.0.6: version "4.0.6" resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== @@ -2693,6 +3747,25 @@ ini@^1.3.4, ini@~1.3.0: resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== +inquirer@^5.2.0: + version "5.2.0" + resolved "http://52.167.60.66:8081/repository/npm-all/inquirer/-/inquirer-5.2.0.tgz#db350c2b73daca77ff1243962e9f22f099685726" + integrity sha512-E9BmnJbAKLPGonz0HeWHtbKf+EeSP93paWO3ZYoUpq/aowXvYGjjCSuashhXPpzbArIjBbji39THkxTz9ZeEUQ== + dependencies: + ansi-escapes "^3.0.0" + chalk "^2.0.0" + cli-cursor "^2.1.0" + cli-width "^2.0.0" + external-editor "^2.1.0" + figures "^2.0.0" + lodash "^4.3.0" + mute-stream "0.0.7" + run-async "^2.2.0" + rxjs "^5.5.2" + string-width "^2.1.0" + strip-ansi "^4.0.0" + through "^2.3.6" + inquirer@^6.4.1: version "6.5.1" resolved "http://52.167.60.66:8081/repository/npm-all/inquirer/-/inquirer-6.5.1.tgz#8bfb7a5ac02dac6ff641ac4c5ff17da112fcdb42" @@ -2717,6 +3790,12 @@ interpret@^1.1.0: resolved "http://52.167.60.66:8081/repository/npm-all/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" + dependencies: + loose-envify "^1.0.0" + invert-kv@^1.0.0: version "1.0.0" resolved "http://52.167.60.66:8081/repository/npm-all/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" @@ -2830,6 +3909,18 @@ is-descriptor@^1.0.0, is-descriptor@^1.0.2: is-data-descriptor "^1.0.0" kind-of "^6.0.2" +is-dotfile@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1" + integrity sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE= + +is-equal-shallow@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" + integrity sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ= + dependencies: + is-primitive "^2.0.0" + is-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" @@ -2842,11 +3933,23 @@ is-extendable@^1.0.1: dependencies: is-plain-object "^2.0.4" +is-extglob@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" + integrity sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA= + is-extglob@^2.1.0, is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= +is-finite@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" + integrity sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko= + dependencies: + number-is-nan "^1.0.0" + is-fullwidth-code-point@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" @@ -2864,6 +3967,13 @@ is-fullwidth-code-point@^3.0.0: resolved "http://52.167.60.66:8081/repository/npm-all/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== +is-glob@^2.0.0, is-glob@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" + integrity sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM= + dependencies: + is-extglob "^1.0.0" + is-glob@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" @@ -2903,6 +4013,13 @@ is-npm@^1.0.0: resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4" integrity sha1-8vtjpl5JBbQGyGBydloaTceTufQ= +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" @@ -2934,6 +4051,16 @@ is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: dependencies: isobject "^3.0.1" +is-posix-bracket@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" + integrity sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q= + +is-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, is-promise@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" @@ -2958,6 +4085,11 @@ is-relative@^1.0.0: dependencies: is-unc-path "^1.0.0" +is-resolvable@^1.1.0: + version "1.1.0" + resolved "http://52.167.60.66:8081/repository/npm-all/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" + integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg== + is-retry-allowed@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34" @@ -3057,7 +4189,12 @@ js-sha3@^0.8.0: resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -js-yaml@3.13.1, js-yaml@^3.13.1: +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.11.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== @@ -3102,6 +4239,19 @@ jsdoc@3.6.3: taffydb "2.6.2" underscore "~1.9.1" +jsesc@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" + integrity sha1-RsP+yMGJKxKwgz25vHYiF226s0s= + +jsesc@^2.5.1: + version "2.5.1" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.1.tgz#e421a2a8e20d6b0819df28908f782526b96dd1fe" + +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + 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" @@ -3127,6 +4277,18 @@ json-stringify-safe@~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= + +json5@^2.1.0: + version "2.1.0" + resolved "http://52.167.60.66:8081/repository/npm-all/json5/-/json5-2.1.0.tgz#e7a0c62c48285c628d20a10b85c89bb807c32850" + integrity sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ== + 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" @@ -3137,7 +4299,7 @@ jsprim@^1.2.2: json-schema "0.2.3" verror "1.10.0" -jsx-ast-utils@^2.1.0: +jsx-ast-utils@^2.0.1, jsx-ast-utils@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-2.1.0.tgz#0ee4e2c971fb9601c67b5641b71be80faecf0b36" integrity sha512-yDGDG2DS4JcqhA6blsuYbtsT09xL8AoLuUR2Gb5exrw7UEM19sBcOTq+YBBhrNbl0PUC4R4LnFu+dHg2HKeVvA== @@ -3280,6 +4442,16 @@ load-json-file@^2.0.0: pify "^2.0.0" strip-bom "^3.0.0" +load-json-file@^4.0.0: + version "4.0.0" + resolved "http://52.167.60.66:8081/repository/npm-all/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" + load-json-file@^5.2.0: version "5.3.0" resolved "http://52.167.60.66:8081/repository/npm-all/load-json-file/-/load-json-file-5.3.0.tgz#4d3c1e01fa1c03ea78a60ac7af932c9ce53403f3" @@ -3314,6 +4486,26 @@ locate-path@^3.0.0: p-locate "^3.0.0" path-exists "^3.0.0" +lodash.debounce@^4.0.8: + version "4.0.8" + resolved "http://52.167.60.66:8081/repository/npm-all/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" + integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168= + +lodash.isarray@^4.0.0: + version "4.0.0" + resolved "http://52.167.60.66:8081/repository/npm-all/lodash.isarray/-/lodash.isarray-4.0.0.tgz#2aca496b28c4ca6d726715313590c02e6ea34403" + integrity sha1-KspJayjEym1yZxUxNZDALm6jRAM= + +lodash.isregexp@^4.0.1: + version "4.0.1" + resolved "http://52.167.60.66:8081/repository/npm-all/lodash.isregexp/-/lodash.isregexp-4.0.1.tgz#e13e647b30cd559752a04cd912086faf7da1c30b" + integrity sha1-4T5kezDNVZdSoEzZEghvr32hwws= + +lodash.isstring@^4.0.1: + version "4.0.1" + resolved "http://52.167.60.66:8081/repository/npm-all/lodash.isstring/-/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451" + integrity sha1-1SfftUVuynzJu5XV2ur4i6VKVFE= + lodash.unescape@4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/lodash.unescape/-/lodash.unescape-4.0.1.tgz#bf2249886ce514cda112fae9218cdc065211fc9c" @@ -3324,7 +4516,7 @@ lodash@^3.10.1: resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6" integrity sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y= -lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15: +lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.3.0: version "4.17.15" resolved "http://52.167.60.66:8081/repository/npm-all/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== @@ -3341,7 +4533,7 @@ loglevel@1.6.1: resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.1.tgz#e0fc95133b6ef276cdc8887cdaf24aa6f156f8fa" integrity sha1-4PyVEztu8nbNyIh82vJKpvFW+Po= -loose-envify@^1.4.0: +loose-envify@^1.0.0, loose-envify@^1.4.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== @@ -3375,6 +4567,11 @@ make-dir@^1.0.0: dependencies: pify "^3.0.0" +make-error@^1.1.1: + version "1.3.5" + resolved "http://52.167.60.66:8081/repository/npm-all/make-error/-/make-error-1.3.5.tgz#efe4e81f6db28cadd605c70f29c831b58ef776c8" + integrity sha512-c3sIjNUow0+8swNwVpqoH4YCShKNFkMaw6oH1mNS2haDZQqkeZFlHS3dhoeEbKKmJB4vXpJucU6oH75aDYeE9g== + make-iterator@^1.0.0: version "1.0.1" resolved "http://52.167.60.66:8081/repository/npm-all/make-iterator/-/make-iterator-1.0.1.tgz#29b33f312aa8f547c4a5e490f56afcec99133ad6" @@ -3440,6 +4637,11 @@ matchdep@^2.0.0: resolve "^1.4.0" stack-trace "0.0.10" +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== + matrix-js-sdk@2.3.0: version "2.3.0" resolved "http://52.167.60.66:8081/repository/npm-all/matrix-js-sdk/-/matrix-js-sdk-2.3.0.tgz#ed04172add2e31c532dc87e2f38c26c2a63191c6" @@ -3503,6 +4705,25 @@ methods@^1.1.1, methods@^1.1.2: resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= +micromatch@^2.1.5: + version "2.3.11" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" + integrity sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU= + dependencies: + arr-diff "^2.0.0" + array-unique "^0.2.1" + braces "^1.8.2" + expand-brackets "^0.1.4" + extglob "^0.3.1" + filename-regex "^2.0.0" + is-extglob "^1.0.0" + is-glob "^2.0.1" + kind-of "^3.0.2" + normalize-path "^2.0.1" + object.omit "^2.0.0" + parse-glob "^3.0.4" + regex-cache "^0.4.2" + micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4: version "3.1.10" resolved "http://52.167.60.66:8081/repository/npm-all/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" @@ -3539,6 +4760,11 @@ mime@^1.4.1: 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 "http://52.167.60.66:8081/repository/npm-all/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" @@ -3554,7 +4780,7 @@ minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= -minimatch@3.0.4, minimatch@^3.0.4: +minimatch@3.0.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== @@ -3666,6 +4892,11 @@ mute-stdout@^1.0.0: resolved "http://52.167.60.66:8081/repository/npm-all/mute-stdout/-/mute-stdout-1.0.1.tgz#acb0300eb4de23a7ddeec014e3e96044b3472331" integrity sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg== +mute-stream@0.0.7: + version "0.0.7" + resolved "http://52.167.60.66:8081/repository/npm-all/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" + integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= + mute-stream@0.0.8: version "0.0.8" resolved "http://52.167.60.66:8081/repository/npm-all/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" @@ -3801,7 +5032,7 @@ normalize-package-data@^2.3.2: semver "2 || 3 || 4 || 5" validate-npm-package-license "^3.0.1" -normalize-path@^2.1.1: +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= @@ -3860,7 +5091,7 @@ oauth-sign@~0.9.0: resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== -object-assign@^4.1.0, object-assign@^4.1.1: +object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= @@ -3942,6 +5173,14 @@ object.map@^1.0.0: for-own "^1.0.0" make-iterator "^1.0.0" +object.omit@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" + integrity sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo= + dependencies: + for-own "^0.1.4" + is-extendable "^0.1.1" + object.pick@^1.2.0, object.pick@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" @@ -3978,6 +5217,13 @@ once@^1.3.0, once@^1.3.1, once@^1.3.2, once@^1.4.0: dependencies: wrappy "1" +onetime@^2.0.0: + version "2.0.1" + resolved "http://52.167.60.66:8081/repository/npm-all/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" + integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ= + dependencies: + mimic-fn "^1.0.0" + onetime@^5.1.0: version "5.1.0" resolved "http://52.167.60.66:8081/repository/npm-all/onetime/-/onetime-5.1.0.tgz#fff0f3c91617fe62bb50189636e99ac8a6df7be5" @@ -4025,7 +5271,7 @@ os-locale@^3.0.0, os-locale@^3.1.0: lcid "^2.0.0" mem "^4.0.0" -os-tmpdir@^1.0.0, os-tmpdir@~1.0.2: +os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, 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= @@ -4038,6 +5284,15 @@ osenv@^0.1.4: os-homedir "^1.0.0" os-tmpdir "^1.0.0" +output-file-sync@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/output-file-sync/-/output-file-sync-1.1.2.tgz#d0a33eefe61a205facb90092e826598d5245ce76" + integrity sha1-0KM+7+YaIF+suQCS6CZZjVJFznY= + dependencies: + graceful-fs "^4.1.4" + mkdirp "^0.5.1" + object-assign "^4.1.0" + p-defer@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" @@ -4117,6 +5372,16 @@ parse-filepath@^1.0.1: map-cache "^0.2.0" path-root "^0.1.1" +parse-glob@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" + integrity sha1-ssN2z7EfNVE7rdFz7wu246OIORw= + dependencies: + glob-base "^0.3.0" + is-dotfile "^1.0.0" + is-extglob "^1.0.0" + is-glob "^2.0.0" + parse-json@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" @@ -4164,12 +5429,12 @@ path-exists@^3.0.0: resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= -path-is-absolute@^1.0.0: +path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: 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: +path-is-inside@^1.0.1, path-is-inside@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= @@ -4260,6 +5525,14 @@ pinkie@^2.0.0: resolved "http://52.167.60.66:8081/repository/npm-all/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= +pkg-conf@^2.0.0: + version "2.1.0" + resolved "http://52.167.60.66:8081/repository/npm-all/pkg-conf/-/pkg-conf-2.1.0.tgz#2126514ca6f2abfebd168596df18ba57867f0058" + integrity sha1-ISZRTKbyq/69FoWW3xi6V4Z/AFg= + dependencies: + find-up "^2.0.0" + load-json-file "^4.0.0" + pkg-conf@^3.1.0: version "3.1.0" resolved "http://52.167.60.66:8081/repository/npm-all/pkg-conf/-/pkg-conf-3.1.0.tgz#d9f9c75ea1bae0e77938cde045b276dac7cc69ae" @@ -4284,6 +5557,11 @@ pkg-dir@^2.0.0: dependencies: find-up "^2.1.0" +pluralize@^7.0.0: + version "7.0.0" + resolved "http://52.167.60.66:8081/repository/npm-all/pluralize/-/pluralize-7.0.0.tgz#298b89df8b93b0221dbf421ad2b1b1ea23fc6777" + integrity sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow== + 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" @@ -4299,11 +5577,21 @@ prepend-http@^1.0.1: resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= +preserve@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" + integrity sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks= + pretty-hrtime@^1.0.0: version "1.0.3" resolved "http://52.167.60.66:8081/repository/npm-all/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz#b7e3ea42435a4c9b2759d99e0f201eb195802ee1" integrity sha1-t+PqQkNaTJsnWdmeDyAesZWALuE= +private@^0.1.6, private@^0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" + integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== + process-nextick-args@^2.0.0, process-nextick-args@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" @@ -4314,7 +5602,7 @@ progress@^2.0.0: resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== -prop-types@^15.7.2: +prop-types@^15.6.2, prop-types@^15.7.2: version "15.7.2" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== @@ -4388,6 +5676,15 @@ quickselect@^1.0.1: resolved "https://registry.yarnpkg.com/quickselect/-/quickselect-1.1.1.tgz#852e412ce418f237ad5b660d70cffac647ae94c2" integrity sha512-qN0Gqdw4c4KGPsBOQafj6yj/PA6c/L63f6CaZ/DCF/xF4Esu3jVmKLUDYxghFx8Kb/O7y9tI7x2RjTSXwdK1iQ== +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" + randombytes@^2.0.1: version "2.1.0" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" @@ -4473,7 +5770,7 @@ readable-stream@^3.0.2: string_decoder "^1.1.1" util-deprecate "^1.0.1" -readdirp@^2.2.1: +readdirp@^2.0.0, readdirp@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== @@ -4489,6 +5786,16 @@ rechoir@^0.6.2: dependencies: resolve "^1.1.6" +regenerate@^1.2.1: + version "1.4.0" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" + integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg== + +regenerator-runtime@^0.10.5: + version "0.10.5" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz#336c3efc1220adcedda2c9fab67b5a7955a33658" + integrity sha1-M2w+/BIgrc7dosn6tntaeVWjNlg= + regenerator-runtime@^0.11.0: version "0.11.1" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" @@ -4499,6 +5806,22 @@ regenerator-runtime@^0.13.2: resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.2.tgz#32e59c9a6fb9b1a4aff09b4930ca2d4477343447" integrity sha512-S/TQAZJO+D3m9xeN1WTI8dLKBBiRgXBlTJvbWjCThHWZj9EvHK70Ff50/tYj2J/fvBY6JtFVwRuazHN2E7M9BA== +regenerator-transform@^0.10.0: + version "0.10.1" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.10.1.tgz#1e4996837231da8b7f3cf4114d71b5691a0680dd" + integrity sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q== + dependencies: + babel-runtime "^6.18.0" + babel-types "^6.19.0" + private "^0.1.6" + +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" @@ -4507,11 +5830,20 @@ regex-not@^1.0.0, regex-not@^1.0.2: extend-shallow "^3.0.2" safe-regex "^1.1.0" -regexpp@^2.0.1: +regexpp@^2.0.0, regexpp@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw== +regexpu-core@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240" + integrity sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA= + dependencies: + regenerate "^1.2.1" + regjsgen "^0.2.0" + regjsparser "^0.1.4" + 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" @@ -4527,6 +5859,18 @@ registry-url@^3.0.3: dependencies: rc "^1.0.1" +regjsgen@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" + integrity sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc= + +regjsparser@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c" + integrity sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw= + dependencies: + jsesc "~0.5.0" + remove-bom-buffer@^3.0.0: version "3.0.0" resolved "http://52.167.60.66:8081/repository/npm-all/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz#c2bf1e377520d324f623892e33c10cac2c252b53" @@ -4554,11 +5898,18 @@ repeat-element@^1.1.2: resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== -repeat-string@^1.6.1: +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" + integrity sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo= + dependencies: + is-finite "^1.0.0" + replace-ext@^1.0.0: version "1.0.0" resolved "http://52.167.60.66:8081/repository/npm-all/replace-ext/-/replace-ext-1.0.0.tgz#de63128373fcbf7c3ccfa4de5a480c45a67958eb" @@ -4614,6 +5965,14 @@ require-main-filename@^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-uncached@^1.0.3: + version "1.0.3" + resolved "http://52.167.60.66:8081/repository/npm-all/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3" + integrity sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM= + dependencies: + caller-path "^0.1.0" + resolve-from "^1.0.0" + requizzle@^0.2.3: version "0.2.3" resolved "http://52.167.60.66:8081/repository/npm-all/requizzle/-/requizzle-0.2.3.tgz#4675c90aacafb2c036bd39ba2daa4a1cb777fded" @@ -4629,6 +5988,11 @@ resolve-dir@^1.0.0, resolve-dir@^1.0.1: expand-tilde "^2.0.0" global-modules "^1.0.0" +resolve-from@^1.0.0: + version "1.0.1" + resolved "http://52.167.60.66:8081/repository/npm-all/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226" + integrity sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY= + resolve-from@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" @@ -4646,13 +6010,21 @@ resolve-url@^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.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.10.1, resolve@^1.11.0, resolve@^1.4.0, resolve@^1.5.0: +resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.10.1, resolve@^1.11.0, resolve@^1.3.2, resolve@^1.4.0, resolve@^1.5.0, resolve@^1.6.0, resolve@^1.8.1: version "1.11.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.11.0.tgz#4014870ba296176b86343d50b60f3b50609ce232" integrity sha512-WL2pBDjqT6pGUNSUzMw00o4T7If+z4H2x3Gz893WoUQ5KW8Vr9txp00ykiP16VBaZF5+j/OcXJHZ9+PCvdiDKw== dependencies: path-parse "^1.0.6" +restore-cursor@^2.0.0: + version "2.0.0" + resolved "http://52.167.60.66:8081/repository/npm-all/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" + integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368= + dependencies: + onetime "^2.0.0" + signal-exit "^3.0.2" + restore-cursor@^3.1.0: version "3.1.0" resolved "http://52.167.60.66:8081/repository/npm-all/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" @@ -4666,7 +6038,7 @@ ret@~0.1.10: resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== -rimraf@2.6.3, rimraf@^2.6.1: +rimraf@2.6.3, rimraf@^2.6.1, rimraf@~2.6.2: version "2.6.3" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== @@ -4693,6 +6065,13 @@ run-parallel@^1.1.2: resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.1.9.tgz#c9dd3a7cf9f4b2c4b6244e173a6ed866e61dd679" integrity sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q== +rxjs@^5.5.2: + version "5.5.12" + resolved "http://52.167.60.66:8081/repository/npm-all/rxjs/-/rxjs-5.5.12.tgz#6fa61b8a77c3d793dbaf270bee2f43f652d741cc" + integrity sha512-xx2itnL5sBbqeeiVgNPVuQQ1nC8Jp2WfNJhXWHmElW9YmrpS9UVnNzhP3EH3HFqexO5Tlp8GhYY+WEcqcVMvGw== + dependencies: + symbol-observable "1.0.1" + rxjs@^6.4.0, rxjs@^6.5.2: version "6.5.2" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.2.tgz#2e35ce815cd46d84d02a209fb4e5921e051dbec7" @@ -4750,7 +6129,7 @@ semver-greatest-satisfied-range@^1.1.0: dependencies: sver-compat "^1.5.0" -"semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@^5.5.0, semver@^5.7.0: +"semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.7.0: version "5.7.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b" integrity sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA== @@ -4810,6 +6189,18 @@ 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= + +slice-ansi@1.0.0: + version "1.0.0" + resolved "http://52.167.60.66:8081/repository/npm-all/slice-ansi/-/slice-ansi-1.0.0.tgz#044f1a49d8842ff307aad6b505ed178bd950134d" + integrity sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg== + dependencies: + is-fullwidth-code-point "^2.0.0" + slice-ansi@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" @@ -4873,16 +6264,36 @@ source-map-resolve@^0.5.0: source-map-url "^0.4.0" urix "^0.1.0" +source-map-support@^0.4.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.6: + version "0.5.13" + resolved "http://52.167.60.66:8081/repository/npm-all/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932" + integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w== + 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.6: +source-map@^0.5.0, 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: + version "0.6.1" + resolved "http://52.167.60.66:8081/repository/npm-all/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + sparkles@^1.0.0: version "1.0.1" resolved "http://52.167.60.66:8081/repository/npm-all/sparkles/-/sparkles-1.0.1.tgz#008db65edce6c50eec0c5e228e1945061dd0437c" @@ -4961,6 +6372,16 @@ standard-engine@^12.0.0: minimist "^1.1.0" pkg-conf "^3.1.0" +standard-engine@~9.0.0: + version "9.0.0" + resolved "http://52.167.60.66:8081/repository/npm-all/standard-engine/-/standard-engine-9.0.0.tgz#d3a3d74c4c1b91f51a1e66362465261ca7610316" + integrity sha512-ZfNfCWZ2Xq67VNvKMPiVMKHnMdvxYzvZkf1AH8/cw2NLDBm5LRsxMqvEJpsjLI/dUosZ3Z1d6JlHDp5rAvvk2w== + dependencies: + deglob "^2.1.0" + get-stdin "^6.0.0" + minimist "^1.1.0" + pkg-conf "^2.0.0" + standard-json@^1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/standard-json/-/standard-json-1.0.3.tgz#5b5b21d9418810dc5644c113d5163541dcd8faa6" @@ -4968,6 +6389,21 @@ standard-json@^1.0.0: dependencies: concat-stream "^1.5.0" +standard@12.0.1: + version "12.0.1" + resolved "http://52.167.60.66:8081/repository/npm-all/standard/-/standard-12.0.1.tgz#0fc5a8aa6c34c546c5562aae644242b24dae2e61" + integrity sha512-UqdHjh87OG2gUrNCSM4QRLF5n9h3TFPwrCNyVlkqu31Hej0L/rc8hzKqVvkb2W3x0WMq7PzZdkLfEcBhVOR6lg== + dependencies: + eslint "~5.4.0" + eslint-config-standard "12.0.0" + eslint-config-standard-jsx "6.0.2" + eslint-plugin-import "~2.14.0" + eslint-plugin-node "~7.0.1" + eslint-plugin-promise "~4.0.0" + eslint-plugin-react "~7.11.1" + eslint-plugin-standard "~4.0.0" + standard-engine "~9.0.0" + standard@14.0.0: version "14.0.0" resolved "http://52.167.60.66:8081/repository/npm-all/standard/-/standard-14.0.0.tgz#72c1bedb9d24e04ab96adde98b44a512dc109d0f" @@ -5011,7 +6447,7 @@ string-width@^1.0.1, string-width@^1.0.2: 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.1: +"string-width@^1.0.2 || 2", 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== @@ -5089,7 +6525,7 @@ strip-eof@^1.0.0: resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= -strip-json-comments@2.0.1, strip-json-comments@~2.0.1: +strip-json-comments@2.0.1, strip-json-comments@^2.0.1, 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= @@ -5122,6 +6558,10 @@ supports-color@6.0.0: dependencies: has-flag "^3.0.0" +supports-color@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + supports-color@^5.2.0, supports-color@^5.3.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" @@ -5137,6 +6577,23 @@ sver-compat@^1.5.0: es6-iterator "^2.0.1" es6-symbol "^3.1.1" +symbol-observable@1.0.1: + version "1.0.1" + resolved "http://52.167.60.66:8081/repository/npm-all/symbol-observable/-/symbol-observable-1.0.1.tgz#8340fc4702c3122df5d22288f88283f513d3fdd4" + integrity sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ= + +table@^4.0.3: + version "4.0.3" + resolved "http://52.167.60.66:8081/repository/npm-all/table/-/table-4.0.3.tgz#00b5e2b602f1794b9acaf9ca908a76386a7813bc" + integrity sha512-S7rnFITmBH1EnyKcvxBh1LjYeQMmnZtCXSEbHcH6S0NoKit24ZuFO/T1vDcLdYsLQkM188PVVhQmzKIuThNkKg== + dependencies: + ajv "^6.0.1" + ajv-keywords "^3.0.0" + chalk "^2.1.0" + lodash "^4.17.4" + slice-ansi "1.0.0" + string-width "^2.1.1" + table@^5.2.3: version "5.4.0" resolved "https://registry.yarnpkg.com/table/-/table-5.4.0.tgz#d772a3216e68829920a41a32c18eda286c95d780" @@ -5241,6 +6698,14 @@ to-absolute-glob@^2.0.0: is-absolute "^1.0.0" is-negated-glob "^1.0.0" +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" + +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" + 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" @@ -5288,6 +6753,21 @@ tough-cookie@~2.4.3: psl "^1.1.24" punycode "^1.4.1" +trim-right@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" + +ts-node@^8.3.0: + version "8.3.0" + resolved "http://52.167.60.66:8081/repository/npm-all/ts-node/-/ts-node-8.3.0.tgz#e4059618411371924a1fb5f3b125915f324efb57" + integrity sha512-dyNS/RqyVTDcmNM4NIBAeDMpsAdaQ+ojdf0GOLqE6nwJOgzEkdRNzJywhDfwnuvB10oa6NLVG1rUJQCpRN7qoQ== + dependencies: + arg "^4.1.0" + diff "^4.0.1" + make-error "^1.1.1" + source-map-support "^0.5.6" + yn "^3.0.0" + tslib@^1.8.1, tslib@^1.9.0: version "1.10.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a" @@ -5351,7 +6831,7 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= -typescript@3.5.3: +typescript@3.5.3, typescript@^3.5.3: version "3.5.3" resolved "http://52.167.60.66:8081/repository/npm-all/typescript/-/typescript-3.5.3.tgz#c830f657f93f1ea846819e929092f5fe5983e977" integrity sha512-ACzBtm/PhXBDId6a6sDJfroT2pOWt/oOnk4/dElG5G33ZL776N3Y6/6bKZJBFpd+b05F3Ct9qDjMeJmRWtE2/g== @@ -5501,6 +6981,11 @@ use@^3.1.0: resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== +user-home@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/user-home/-/user-home-1.1.1.tgz#2b5be23a32b63a7c9deb8d0f28d485724a3df190" + integrity sha1-K1viOjK2Onyd640PKNSFcko98ZA= + 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" @@ -5516,6 +7001,13 @@ v8-compile-cache@^2.0.3: resolved "http://52.167.60.66:8081/repository/npm-all/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz#e14de37b31a6d194f5690d67efc4e7f6fc6ab30e" integrity sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g== +v8flags@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-2.1.1.tgz#aab1a1fa30d45f88dd321148875ac02c0b55e5b4" + integrity sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ= + dependencies: + user-home "^1.1.1" + v8flags@^3.0.1: version "3.1.3" resolved "http://52.167.60.66:8081/repository/npm-all/v8flags/-/v8flags-3.1.3.tgz#fc9dc23521ca20c5433f81cc4eb9b3033bb105d8" @@ -5688,6 +7180,13 @@ write@1.0.3: dependencies: mkdirp "^0.5.1" +write@^0.2.1: + version "0.2.1" + resolved "http://52.167.60.66:8081/repository/npm-all/write/-/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757" + integrity sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c= + dependencies: + mkdirp "^0.5.1" + xdg-basedir@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-3.0.0.tgz#496b2cc109eca8dbacfe2dc72b603c17c5870ad4" @@ -5849,3 +7348,8 @@ yarn@^1.16.0: version "1.16.0" resolved "https://registry.yarnpkg.com/yarn/-/yarn-1.16.0.tgz#5701b58ac555ff91f7b889b7d791b3dc86f8f999" integrity sha512-cfemyGlnWKA1zopUUgebTPf8C4WkPIZ+TJmklwcEAJ4u6oWPtJeAzrsamaGGh/+b1XWe8W51yzAImC4AWbWR1g== + +yn@^3.0.0: + version "3.1.1" + resolved "http://52.167.60.66:8081/repository/npm-all/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" + integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== -- GitLab From fa1cb3e662f79015527356c8fb2958d07629f0b5 Mon Sep 17 00:00:00 2001 From: Will Date: Tue, 21 Jan 2020 17:14:57 +0100 Subject: [PATCH 13/86] upgrade dependencies --- packages/polkabot/package.json | 7 +- packages/polkabot/src/index.ts | 180 ++-- yarn.lock | 1415 +++++++++----------------------- 3 files changed, 492 insertions(+), 1110 deletions(-) diff --git a/packages/polkabot/package.json b/packages/polkabot/package.json index daf4f57..4b2a46c 100644 --- a/packages/polkabot/package.json +++ b/packages/polkabot/package.json @@ -33,14 +33,14 @@ "Matrix.org" ], "dependencies": { - "@polkadot/api": "^0.90.1", + "@polkadot/api": "0.100.1", "bn.js": "5.0.0", "find-node-modules": "^2.0.0", "matrix-js-sdk": "2.3.0", "minimongo": "6.0.0", "nedb": "^1.8.0", "olm": "https://matrix.org/packages/npm/olm/olm-3.0.0.tgz", - "yargs": "13.3.0" + "yargs": "14.2.0" }, "devDependencies": { "@types/dotenv": "^6.1.1", @@ -78,6 +78,7 @@ ] }, "engines": { - "node": "10" + "node": ">=10.13.0", + "yarn": "^1.10.1" } } diff --git a/packages/polkabot/src/index.ts b/packages/polkabot/src/index.ts index 2aba173..0326b72 100644 --- a/packages/polkabot/src/index.ts +++ b/packages/polkabot/src/index.ts @@ -1,21 +1,21 @@ // import 'babel-core/register' // import 'babel-polyfill' -import Olm from 'olm' -import minimongo from 'minimongo' -import { ApiPromise, WsProvider } from '@polkadot/api' -import Datastore from 'nedb' - -import pkg from '../package.json' -import PluginScanner from './lib/plugin-scanner' -import PluginLoader from './lib/plugin-loader' +import Olm from "olm"; +import minimongo from "minimongo"; +import { ApiPromise, WsProvider } from "@polkadot/api"; +import Datastore from "nedb"; + +import pkg from "../package.json"; +import PluginScanner from "./lib/plugin-scanner"; +import PluginLoader from "./lib/plugin-loader"; // import * as path from 'path' -import sdk from 'matrix-js-sdk' -import { ConfigSingleton } from './ConfigSingleton'; -import { assert } from '@polkadot/util'; -import { IPolkabotConfig } from './types'; +import sdk from "matrix-js-sdk"; +import { ConfigSingleton } from "./ConfigSingleton"; +import { assert } from "@polkadot/util"; +import { IPolkabotConfig } from "./types"; //@ts-ignore -global.Olm = Olm +global.Olm = Olm; // comment out if you need to trouble shoot matrix issues // matrix.on('event', function (event) { @@ -29,37 +29,41 @@ export default class Polkabot { private matrix: any; private polkadot: any; - public constructor (args) { + public constructor(args) { // this.args = args - this.db = new Datastore({ filename: 'polkabot.db' }) + this.db = new Datastore({ filename: "polkabot.db" }); } - private loadPlugins (): void { - console.log('Polkabot - Loading plugins:') - const pluginScanner = new PluginScanner(pkg.name + '-plugin') - - pluginScanner.scan((err, module) => { - if (err) console.error(err) - const pluginLoader = new PluginLoader(module) - pluginLoader.load(Plugin => { - const plugin = new Plugin({ - config: this.config, - pkg: pkg, - db: this.db, - matrix: this.matrix, - polkadot: this.polkadot }) - plugin.start() - }) - }, (err, all) => { - if (err) console.error(err) - console.log() - if (all.length === 0) { - console.log('Polkabot - Polkabot does not do much without plugin, make sure you install at least one') + private loadPlugins(): void { + console.log("Polkabot - Loading plugins:"); + const pluginScanner = new PluginScanner(pkg.name + "-plugin"); + + pluginScanner.scan( + (err, module) => { + if (err) console.error(err); + const pluginLoader = new PluginLoader(module); + pluginLoader.load(Plugin => { + const plugin = new Plugin({ + config: this.config, + pkg: pkg, + db: this.db, + matrix: this.matrix, + polkadot: this.polkadot + }); + plugin.start(); + }); + }, + (err, all) => { + if (err) console.error(err); + console.log(); + if (all.length === 0) { + console.log("Polkabot - Polkabot does not do much without plugin, make sure you install at least one"); + } } - }) + ); } - private start (_syncState): void { + private start(_syncState): void { // Send message to the room notifying users of the bot's state // we dont want to bother users, the following should be removed @@ -85,12 +89,12 @@ export default class Polkabot { // } // ) - this.loadPlugins() + this.loadPlugins(); } - public async run () { - console.log(`${pkg.name} v${pkg.version}`) - console.log('===========================') + public async run() { + console.log(`${pkg.name} v${pkg.version}`); + console.log("==========================="); // const configLocation = this.args.config // ? this.args.config @@ -98,77 +102,79 @@ export default class Polkabot { // console.log('Polkabot - Config location: ', configLocation) // this.config = require(configLocation) - - let config: IPolkabotConfig = ConfigSingleton.getInstance() - assert(config.polkadot.host != null, 'Issue with the config') - assert(config.matrix.botMasterId != null, 'Missing bot master id') - ConfigSingleton.dumpEnv() - - this.config = config - - // console.log(`Polkabot - config: ${JSON.stringify(this.config, null, 2)}`) - // console.log(`Polkabot - Connecting to host: ${this.config.polkadot.host}`) - // console.log(`Polkabot - Running with bot user id: ${this.config.matrix.botUserId}`) - - const provider = new WsProvider(this.config.polkadot.host) + + let config: IPolkabotConfig = ConfigSingleton.getInstance(); + assert(config.polkadot.host != null, "Issue with the config"); + assert(config.matrix.botMasterId != null, "Missing bot master id"); + ConfigSingleton.dumpEnv(); + + this.config = config; + + console.log(`Polkabot - config: ${JSON.stringify(this.config, null, 2)}`); + console.log(`Polkabot - Connecting to host: ${this.config.polkadot.host}`); + console.log(`Polkabot - Running with bot user id: ${this.config.matrix.botUserId}`); + + const provider = new WsProvider(this.config.polkadot.host); // Create the API and wait until ready - this.polkadot = await ApiPromise.create({provider}) + console.log("Create prov"); + this.polkadot = await ApiPromise.create({ provider }); + + console.log("get chain data"); // Retrieve the chain & node information information via rpc calls const [chain, nodeName, nodeVersion] = await Promise.all([ this.polkadot.rpc.system.chain(), this.polkadot.rpc.system.name(), this.polkadot.rpc.system.version() - ]) + ]); - console.log(`Polkabot - You are connected to chain ${chain} using ${nodeName} v${nodeVersion}`) + console.log(`Polkabot - You are connected to chain ${chain} using ${nodeName} v${nodeVersion}`); - const LocalDb = minimongo.MemoryDb - this.db = new LocalDb() - this.db.addCollection('config') + const LocalDb = minimongo.MemoryDb; + this.db = new LocalDb(); + this.db.addCollection("config"); this.db.config.upsert({ botMasterId: this.config.matrix.botMasterId }, () => { this.db.config.findOne({}, {}, res => { - console.log('Polkabot - Matrix client bot manager id: ' + res.botMasterId) - }) - }) + console.log("Polkabot - Matrix client bot manager id: " + res.botMasterId); + }); + }); // TODO - refactor using async/await. See https://github.com/matrix-org/matrix-js-sdk/issues/789 - console.log('Polkabot - creating client') - + console.log("Polkabot - creating client"); + this.matrix = sdk.createClient({ baseUrl: this.config.matrix.baseUrl, accessToken: this.config.matrix.token, userId: this.config.matrix.botUserId - }) + }); if (this.isCustomBaseUrl()) { - const data = await this.matrix.login( - 'm.login.password', - { + const data = await this.matrix + .login("m.login.password", { user: this.config.matrix.loginUserId, password: this.config.matrix.loginUserPassword - } - ).catch(error => { - console.error('Polkabot: Error logging into matrix:', error) - }) + }) + .catch(error => { + console.error("Polkabot: Error logging into matrix:", error); + }); if (data) { - console.log('Polkabot - Logged in with credentials: ', data) + console.log("Polkabot - Logged in with credentials: ", data); } } - this.matrix.once('sync', (state, _prevState, data) => { + this.matrix.once("sync", (state, _prevState, data) => { switch (state) { - case 'PREPARED': - console.log(`Polkabot - Detected client sync state: ${state}`) - this.start(state) - break + case "PREPARED": + console.log(`Polkabot - Detected client sync state: ${state}`); + this.start(state); + break; default: - console.log('Polkabot - Error. Unable to establish client sync state, state =', state, data) - process.exit(1) + console.log("Polkabot - Error. Unable to establish client sync state, state =", state, data); + process.exit(1); } - }) + }); // // Event emitted when member's membership changes // this.matrix.on('RoomMember.membership', (event, member) => { @@ -189,12 +195,12 @@ export default class Polkabot { // } // }) - this.matrix.startClient(this.config.matrix.MESSAGES_TO_SHOW || 20) + this.matrix.startClient(this.config.matrix.MESSAGES_TO_SHOW || 20); } - private isCustomBaseUrl () { - const { baseUrl } = this.config.matrix + private isCustomBaseUrl() { + const { baseUrl } = this.config.matrix; - return baseUrl && baseUrl !== 'https://matrix.org' + return baseUrl && baseUrl !== "https://matrix.org"; } } diff --git a/yarn.lock b/yarn.lock index d9e3cb1..a991e3f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -85,10 +85,10 @@ resolved "http://52.167.60.66:8081/repository/npm-all/@babel/parser/-/parser-7.5.5.tgz#02f077ac8817d3df4a832ef59de67565e71cca4b" integrity sha512-E5BN68cqR7dhKan1SfqgPGhQ178bkVKpXTPEXnFJBrEt8/DKRZlybmy+IgYLTeN7tp1R5Ccmbm2rBk17sHYU3g== -"@babel/runtime@^7.5.5": - version "7.6.3" - resolved "http://52.167.60.66:8081/repository/npm-all/@babel/runtime/-/runtime-7.6.3.tgz#935122c74c73d2240cafd32ddb5fc2a6cd35cf1f" - integrity sha512-kq6anf9JGjW8Nt5rYfEuGRaEAaH1mkv3Bbu6rYvLOpPh/RusSJXuKPEAoZ7L7gybZkchE8+NV5g9vKF4AGAtsA== +"@babel/runtime@^7.7.7": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.8.3.tgz#0811944f73a6c926bb2ad35e918dcc1bfab279f1" + integrity sha512-fVHx1rzEmwB130VTkLnxR+HmxcTjGzH12LYQcFFoBwakMd3aOMD4OsRN7tGG/UOYE2ektgFrS8uACAoRk1CY0w== dependencies: regenerator-runtime "^0.13.2" @@ -125,90 +125,100 @@ lodash "^4.17.13" to-fast-properties "^2.0.0" -"@polkadot/api-derive@^0.90.0-beta.70": - version "0.90.0-beta.70" - resolved "http://52.167.60.66:8081/repository/npm-all/@polkadot/api-derive/-/api-derive-0.90.0-beta.70.tgz#9ce41f469fd0f8b486b515aa55d7245cea6eba89" - integrity sha512-4ct+DquK2cuLWgEtLKiWP2LDgZxQSQEVPz5fn9LpMRzOqii7SElbrvskUX1/9P8WMglYSHcBkN2IE9jKN2x7Og== - dependencies: - "@babel/runtime" "^7.5.5" - "@polkadot/api" "^0.90.0-beta.70" - "@polkadot/types" "^0.90.0-beta.70" - -"@polkadot/api-metadata@^0.90.0-beta.70": - version "0.90.0-beta.70" - resolved "http://52.167.60.66:8081/repository/npm-all/@polkadot/api-metadata/-/api-metadata-0.90.0-beta.70.tgz#9ddb0219a878a4422dee64b7bd7139eec3bddd40" - integrity sha512-5O2xOgjXBar3l/2pevZTT3XAkDsV4+okC5VFr/FfjDoA+tFxGSD6bn3C5uxVR+eTvGV09/5itBCAjaJavty8Vg== - dependencies: - "@babel/runtime" "^7.5.5" - "@polkadot/types" "^0.90.0-beta.70" - "@polkadot/util" "^1.1.1" - "@polkadot/util-crypto" "^1.1.1" - -"@polkadot/api@^0.90.0-beta.70", "@polkadot/api@^0.90.1": - version "0.90.0-beta.70" - resolved "http://52.167.60.66:8081/repository/npm-all/@polkadot/api/-/api-0.90.0-beta.70.tgz#d2e80791b75a91ca5cfabec514aca3078334f906" - integrity sha512-1c4JELi1nDeEGhX2YDEXURTIyV2LVX/ybuMPB5oPflnGo/PSvSBeeKTQsPTU7yoMHW+bCZzdOHLBAdLAifjqJw== - dependencies: - "@babel/runtime" "^7.5.5" - "@polkadot/api-derive" "^0.90.0-beta.70" - "@polkadot/api-metadata" "^0.90.0-beta.70" - "@polkadot/rpc-core" "^0.90.0-beta.70" - "@polkadot/rpc-provider" "^0.90.0-beta.70" - "@polkadot/types" "^0.90.0-beta.70" - "@polkadot/util-crypto" "^1.1.1" - -"@polkadot/jsonrpc@^0.90.0-beta.70": - version "0.90.0-beta.70" - resolved "http://52.167.60.66:8081/repository/npm-all/@polkadot/jsonrpc/-/jsonrpc-0.90.0-beta.70.tgz#a6d4b75ecbd943ec1c0a2777eaa63039462d1175" - integrity sha512-1E0iLK+oybE2ZMaR6Yz+9urUwnNgwuaAbTBgH927DzB8rJH9t2xlx0qBUBG2ot89GNXHb/xJfx4+VBwz20CGGg== - dependencies: - "@babel/runtime" "^7.5.5" - -"@polkadot/rpc-core@^0.90.0-beta.70": - version "0.90.0-beta.70" - resolved "http://52.167.60.66:8081/repository/npm-all/@polkadot/rpc-core/-/rpc-core-0.90.0-beta.70.tgz#09c5a5d532e10ccf654262056829e3077ac3c11b" - integrity sha512-DmzH38BNXTjgUTr2jXZGgQQlOV4aSxFZe9tRUxzmAwCnAcwmu0ho9mQQP75H/y/C8Ut7HkYamZcpz8RGmAK4cA== - dependencies: - "@babel/runtime" "^7.5.5" - "@polkadot/jsonrpc" "^0.90.0-beta.70" - "@polkadot/rpc-provider" "^0.90.0-beta.70" - "@polkadot/types" "^0.90.0-beta.70" - "@polkadot/util" "^1.1.1" - rxjs "^6.5.2" - -"@polkadot/rpc-provider@^0.90.0-beta.70": - version "0.90.0-beta.70" - resolved "http://52.167.60.66:8081/repository/npm-all/@polkadot/rpc-provider/-/rpc-provider-0.90.0-beta.70.tgz#dc3272b73844a425cfcfe2db8554d69161b5aea7" - integrity sha512-kTKihMtAHuoEHctGlpxiP/J8ftH5SU8/5WtR9YMoITvmBib0EgwL3eHCeL96ji+Gkv9gWeoLaKHifpOTB6p5VA== - dependencies: - "@babel/runtime" "^7.5.5" - "@polkadot/api-metadata" "^0.90.0-beta.70" - "@polkadot/util" "^1.1.1" - "@polkadot/util-crypto" "^1.1.1" - "@types/nock" "^10.0.3" +"@polkadot/api-derive@^0.100.1": + version "0.100.1" + resolved "https://registry.npmjs.org/@polkadot/api-derive/-/api-derive-0.100.1.tgz#dd6b449bfcf3a67495dbb3b0cfbe264c98a2f028" + integrity sha512-U9MKNvo+BEIEHFPrg5rEYhAnQ56NhsSKjG+xwETAeK6xGmVx5UAFJk2zTwR8/nKCQpxJXX6E3laXcCFn0F1lMw== + dependencies: + "@babel/runtime" "^7.7.7" + "@polkadot/api" "^0.100.1" + "@polkadot/types" "^0.100.1" + +"@polkadot/api@0.100.1", "@polkadot/api@^0.100.1": + version "0.100.1" + resolved "https://registry.npmjs.org/@polkadot/api/-/api-0.100.1.tgz#cc36ee70d98fb37edf6bbf67f6ce4adbde8dbd82" + integrity sha512-A3Qtj4iLMuZWrfQowf9MX/NhB9/fqxl8gSfA9OXQuJShlIokyzHaXe4CLDburqPYsyM7eWOhPAEQqUPsOSg7uw== + dependencies: + "@babel/runtime" "^7.7.7" + "@polkadot/api-derive" "^0.100.1" + "@polkadot/keyring" "^1.8.1" + "@polkadot/metadata" "^0.100.1" + "@polkadot/rpc-core" "^0.100.1" + "@polkadot/rpc-provider" "^0.100.1" + "@polkadot/types" "^0.100.1" + "@polkadot/util-crypto" "^1.8.1" + +"@polkadot/jsonrpc@^0.100.1": + version "0.100.1" + resolved "https://registry.npmjs.org/@polkadot/jsonrpc/-/jsonrpc-0.100.1.tgz#5851e86d1311889791190cda93d33ce54fd9a2d5" + integrity sha512-Y454IMglSq94Y4wOYxlVSdm2mdQKcKKf3jte75RuXIqwkjh9iBUim5pOM5JbUvq6+NgZixakvX11R4YPsCcanQ== + dependencies: + "@babel/runtime" "^7.7.7" + +"@polkadot/keyring@^1.8.1": + version "1.8.1" + resolved "https://registry.npmjs.org/@polkadot/keyring/-/keyring-1.8.1.tgz#69a9209f22b766a9e2d97d36bfca8bcdbc4daa18" + integrity sha512-KeDbfP8biY3bXEhMv1ANp9d3kCuXj2oxseuDK0jvxRo7CehVME9UwAMGQK3Y9NCUuYWd+xTO2To0ZOqR7hdmuQ== + dependencies: + "@babel/runtime" "^7.7.7" + "@polkadot/util" "^1.8.1" + "@polkadot/util-crypto" "^1.8.1" + +"@polkadot/metadata@^0.100.1": + version "0.100.1" + resolved "https://registry.npmjs.org/@polkadot/metadata/-/metadata-0.100.1.tgz#fb92d86dc19c59a22af2f09e265b3c72b24fae54" + integrity sha512-KplhDlWHIEDV4R3NdG52AmcN99RQ/PV6dBrjC3FByPVJ3yLQwVA0c5HgyqKGRBOroyy9dh1b8wF/XTh95O1NWw== + dependencies: + "@babel/runtime" "^7.7.7" + "@polkadot/types" "^0.100.1" + "@polkadot/util" "^1.8.1" + "@polkadot/util-crypto" "^1.8.1" + +"@polkadot/rpc-core@^0.100.1": + version "0.100.1" + resolved "https://registry.npmjs.org/@polkadot/rpc-core/-/rpc-core-0.100.1.tgz#0548b963f7b66296ee08a417802b9bb9e528be44" + integrity sha512-1bRpQG+1B3nWGN1BduR0eNNerXhD567OMHwQbQZEMm18WglI4yNEq3u4s+1Pb5vnEnyofr8/8b1ecseq8J1Ahw== + dependencies: + "@babel/runtime" "^7.7.7" + "@polkadot/jsonrpc" "^0.100.1" + "@polkadot/rpc-provider" "^0.100.1" + "@polkadot/types" "^0.100.1" + "@polkadot/util" "^1.8.1" + rxjs "^6.5.4" + +"@polkadot/rpc-provider@^0.100.1": + version "0.100.1" + resolved "https://registry.npmjs.org/@polkadot/rpc-provider/-/rpc-provider-0.100.1.tgz#8d408274ae7964b52822abe0edeb66e51ba66960" + integrity sha512-Rtic7fFWEd+xrZCdoPvb3pTCl3MmpI7KiZKFJkO5Fa6kKOZXhSA18lg++w1bKb6R6elcTS5pKEvTHVt/L4uLNQ== + dependencies: + "@babel/runtime" "^7.7.7" + "@polkadot/metadata" "^0.100.1" + "@polkadot/util" "^1.8.1" + "@polkadot/util-crypto" "^1.8.1" eventemitter3 "^4.0.0" isomorphic-fetch "^2.2.1" - websocket "^1.0.29" - -"@polkadot/types@^0.90.0-beta.70": - version "0.90.0-beta.70" - resolved "http://52.167.60.66:8081/repository/npm-all/@polkadot/types/-/types-0.90.0-beta.70.tgz#ed96d3a6410be6bd0e0590421d0ab294d93fed87" - integrity sha512-Pg4z5zi832Gq+NKWqbo+TEwNgJhm3FZAI2dkIy8N+nF5PZAi/PIbXECaZLF55bxi3MdHJqRzSTuEwUcgAQY6og== - dependencies: - "@babel/runtime" "^7.5.5" - "@polkadot/util" "^1.1.1" - "@polkadot/util-crypto" "^1.1.1" - "@types/memoizee" "^0.4.2" + websocket "^1.0.31" + +"@polkadot/types@^0.100.1": + version "0.100.1" + resolved "https://registry.npmjs.org/@polkadot/types/-/types-0.100.1.tgz#62a50d6a0096843d4dd326c87f8eae86a65a9991" + integrity sha512-W7KP0bstF4udABWiZclc/ciK6MC2vmf+pLIJsEJpXD5HAc88lumbnAh6tTu/mnsobOM0FmSA5pHLvkljnA0grQ== + dependencies: + "@babel/runtime" "^7.7.7" + "@polkadot/metadata" "^0.100.1" + "@polkadot/util" "^1.8.1" + "@polkadot/util-crypto" "^1.8.1" + "@types/memoizee" "^0.4.3" memoizee "^0.4.14" -"@polkadot/util-crypto@^1.1.1": - version "1.1.1" - resolved "http://52.167.60.66:8081/repository/npm-all/@polkadot/util-crypto/-/util-crypto-1.1.1.tgz#c9735058e46f55043feeadf88a9e3476739ff959" - integrity sha512-TxfLP4egz4sD/xP4nN0kTyls042HMTwkz2V1WPiB1aSPbBwfWUgKQkDXQcSYFIqsI7iCx4cV98Yx9oLz9NXBOw== +"@polkadot/util-crypto@^1.8.1": + version "1.8.1" + resolved "https://registry.npmjs.org/@polkadot/util-crypto/-/util-crypto-1.8.1.tgz#dbc3f75c4a780bd31cd37e63cf27bade54728646" + integrity sha512-ypUs10hV1HPvYc0ZsEu+LTGSEh0rkr0as/FUh7+Z9v3Bxibn3aO+EOxJPQuDbZZ59FSMRmc9SeOSa0wn9ddrnw== dependencies: - "@babel/runtime" "^7.5.5" - "@polkadot/util" "^1.1.1" - "@polkadot/wasm-crypto" "^0.13.1" + "@babel/runtime" "^7.7.7" + "@polkadot/util" "^1.8.1" + "@polkadot/wasm-crypto" "^0.14.1" "@types/bip39" "^2.4.2" "@types/bs58" "^4.0.0" "@types/pbkdf2" "^3.0.0" @@ -219,27 +229,27 @@ blakejs "^1.1.0" bs58 "^4.0.1" js-sha3 "^0.8.0" - secp256k1 "^3.7.0" + secp256k1 "^3.8.0" tweetnacl "^1.0.1" xxhashjs "^0.2.2" -"@polkadot/util@^1.1.1": - version "1.1.1" - resolved "http://52.167.60.66:8081/repository/npm-all/@polkadot/util/-/util-1.1.1.tgz#44461fe75edab2156e6699bf1cfcc5007a603707" - integrity sha512-53yRPNMTYvyG5gde6sgNAA4QVjacAcupPqqDygJD4rytetOU5tmGGSnrs005FtG149pmGgV1rDUHm1R+3ogE4w== +"@polkadot/util@^1.8.1": + version "1.8.1" + resolved "https://registry.npmjs.org/@polkadot/util/-/util-1.8.1.tgz#7473383a1eb26bec59cca53643cf07bc078fe052" + integrity sha512-sFpr+JLCG9d+epjboXsmJ1qcKa96r8ZYzXmVo8+aPzI/9jKKyez6Unox/dnfnpKppZB2nJuLcsxQm6nocp2Caw== dependencies: - "@babel/runtime" "^7.5.5" - "@types/bn.js" "^4.11.5" + "@babel/runtime" "^7.7.7" + "@types/bn.js" "^4.11.6" bn.js "^4.11.8" camelcase "^5.3.1" - chalk "^2.4.2" + chalk "^3.0.0" ip-regex "^4.1.0" moment "^2.24.0" -"@polkadot/wasm-crypto@^0.13.1": - version "0.13.1" - resolved "http://52.167.60.66:8081/repository/npm-all/@polkadot/wasm-crypto/-/wasm-crypto-0.13.1.tgz#602305b2ca86fc320a35ce820835e0e2dd9e646e" - integrity sha512-24a63FynhyBHEGxqoDMZHAcaSxJqnjBPnEcmXXYCN2lI7b4iKaJKF2t+/FUmY7XTST+xNgFTJZ7A/o8jjgC/mA== +"@polkadot/wasm-crypto@^0.14.1": + version "0.14.1" + resolved "https://registry.npmjs.org/@polkadot/wasm-crypto/-/wasm-crypto-0.14.1.tgz#f4923bba22d7c68a4be3575ba27790947b212633" + integrity sha512-Xng7L2Z8TNZa/5g6pot4O06Jf0ohQRZdvfl8eQL+E/L2mcqJYC1IjkMxJBSBuQEV7hisWzh9mHOy5WCcgPk29Q== "@turf/bbox@*", "@turf/bbox@6.x": version "6.0.1" @@ -357,10 +367,10 @@ dependencies: "@types/node" "*" -"@types/bn.js@^4.11.5": - version "4.11.5" - resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-4.11.5.tgz#40e36197433f78f807524ec623afcf0169ac81dc" - integrity sha512-AEAZcIZga0JgVMHNtl1CprA/hXX7/wPt79AgR4XqaDt7jyj3QWYw6LPoOiznPtugDmlubUnAahMs2PFxGcQrng== +"@types/bn.js@^4.11.6": + version "4.11.6" + resolved "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz#c306c70d9358aaea33cd4eda092a742b9505967c" + integrity sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg== dependencies: "@types/node" "*" @@ -376,6 +386,11 @@ resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.1.7.tgz#1b8e33b61a8c09cbe1f85133071baa0dbf9fa71a" integrity sha512-2Y8uPt0/jwjhQ6EiluT0XCri1Dbplr0ZxfFXUz+ye13gaqE8u5gL5ppao1JrUYr9cIip5S6MvQzBS7Kke7U9VA== +"@types/color-name@^1.1.1": + version "1.1.1" + resolved "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" + integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== + "@types/cookiejar@*": version "2.1.1" resolved "https://registry.yarnpkg.com/@types/cookiejar/-/cookiejar-2.1.1.tgz#90b68446364baf9efd8e8349bb36bd3852b75b80" @@ -398,23 +413,16 @@ resolved "http://52.167.60.66:8081/repository/npm-all/@types/json-schema/-/json-schema-7.0.3.tgz#bdfd69d61e464dcc81b25159c270d75a73c1a636" integrity sha512-Il2DtDVRGDcqjDtE+rF8iqg1CArehSK84HZJCT7AMITlyXRBpuPhqGLDQMowraqqu1coEaimg4ZOqggt6L6L+A== -"@types/memoizee@^0.4.2": - version "0.4.2" - resolved "https://registry.yarnpkg.com/@types/memoizee/-/memoizee-0.4.2.tgz#a500158999a8144a9b46cf9a9fb49b15f1853573" - integrity sha512-bhdZXZWKfpkQuuiQjVjnPiNeBHpIAC6rfOFqlJXKD3VC35mCcolfVfXYTnk9Ppee5Mkmmz3Llgec7xCdJAbzWw== +"@types/memoizee@^0.4.3": + version "0.4.3" + resolved "https://registry.npmjs.org/@types/memoizee/-/memoizee-0.4.3.tgz#f48270d19327c1709620132cf54d598650f98492" + integrity sha512-N6QT0c9ZbEKl33n1wyoTxZs4cpN+YXjs0Aqy5Qim8ipd9PBNIPqOh/p5Pixc4601tqr5GErsdxUbfqviDfubNw== "@types/mocha@^5.2.7": version "5.2.7" resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-5.2.7.tgz#315d570ccb56c53452ff8638738df60726d5b6ea" integrity sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ== -"@types/nock@^10.0.3": - version "10.0.3" - resolved "https://registry.yarnpkg.com/@types/nock/-/nock-10.0.3.tgz#dab1d18ffbccfbf2db811dab9584304eeb6e1c4c" - integrity sha512-OthuN+2FuzfZO3yONJ/QVjKmLEuRagS9TV9lEId+WHL9KhftYG+/2z+pxlr0UgVVXSpVD8woie/3fzQn8ft/Ow== - dependencies: - "@types/node" "*" - "@types/node@*": version "11.13.7" resolved "https://registry.yarnpkg.com/@types/node/-/node-11.13.7.tgz#85dbb71c510442d00c0631f99dae957ce44fd104" @@ -497,6 +505,11 @@ acorn-jsx@^5.0.0: resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.0.1.tgz#32a064fd925429216a09b141102bfdd185fae40e" integrity sha512-HJ7CfNHrfJLlNTzIEUTj43LNWGkqpRLxm3YjAlcD0ACydk9XynzYsCBHxut+iqt+1aBXkx9UP/w/ZqMr13XIzg== +acorn-jsx@^5.1.0: + version "5.1.0" + resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.1.0.tgz#294adb71b57398b0680015f0a38c563ee1db5384" + integrity sha512-tMUqwBWfLFbJbizRmEcWSLw6HnFzfdJs2sOJEOwwtVPMoH/0Ay+E703oZz78VSXZiiDcZrQ5XKjPIUQixhmgVw== + acorn@^6.0.2: version "6.3.0" resolved "http://52.167.60.66:8081/repository/npm-all/acorn/-/acorn-6.3.0.tgz#0087509119ffa4fc0a0041d1e93a417e68cb856e" @@ -507,6 +520,11 @@ acorn@^7.0.0: resolved "http://52.167.60.66:8081/repository/npm-all/acorn/-/acorn-7.0.0.tgz#26b8d1cd9a9b700350b71c0905546f64d1284e7a" integrity sha512-PaF/MduxijYYt7unVGRuds1vBC9bFxbNf+VWqhOClfdgy7RlVkQqt610ig1/yxTgsDIfW1cWDel5EBbOy3jdtQ== +acorn@^7.1.0: + version "7.1.0" + resolved "https://registry.npmjs.org/acorn/-/acorn-7.1.0.tgz#949d36f2c292535da602283586c2477c57eb2d6c" + integrity sha512-kL5CuoXA/dgxlBbVrflsflzQ3PAas7RYZB52NOm/6839iVYJgKMJ3cQJD+t2i5+qFa8h3MDpEOJiS64E8JLnSQ== + ajv-keywords@^3.0.0: version "3.4.1" resolved "http://52.167.60.66:8081/repository/npm-all/ajv-keywords/-/ajv-keywords-3.4.1.tgz#ef916e271c64ac12171fd8384eaae6b2345854da" @@ -546,13 +564,6 @@ ansi-colors@3.2.3: resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.3.tgz#57d35b8686e851e2cc04c403f1c00203976a1813" integrity sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw== -ansi-colors@^1.0.1: - version "1.1.0" - resolved "http://52.167.60.66:8081/repository/npm-all/ansi-colors/-/ansi-colors-1.1.0.tgz#6374b4dd5d4718ff3ce27a671a3b1cad077132a9" - integrity sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA== - dependencies: - ansi-wrap "^0.1.0" - ansi-escapes@^3.0.0: version "3.2.0" resolved "http://52.167.60.66:8081/repository/npm-all/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" @@ -565,13 +576,6 @@ ansi-escapes@^4.2.1: dependencies: type-fest "^0.5.2" -ansi-gray@^0.1.1: - version "0.1.1" - resolved "http://52.167.60.66:8081/repository/npm-all/ansi-gray/-/ansi-gray-0.1.1.tgz#2962cf54ec9792c48510a3deb524436861ef7251" - integrity sha1-KWLPVOyXksSFEKPetSRDaGHvclE= - dependencies: - ansi-wrap "0.1.0" - ansi-regex@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" @@ -598,10 +602,13 @@ ansi-styles@^3.2.0, ansi-styles@^3.2.1: dependencies: color-convert "^1.9.0" -ansi-wrap@0.1.0, ansi-wrap@^0.1.0: - version "0.1.0" - resolved "http://52.167.60.66:8081/repository/npm-all/ansi-wrap/-/ansi-wrap-0.1.0.tgz#a82250ddb0015e9a27ca82e82ea603bbfa45efaf" - integrity sha1-qCJQ3bABXponyoLoLqYDu/pF768= +ansi-styles@^4.1.0: + version "4.2.1" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359" + integrity sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA== + dependencies: + "@types/color-name" "^1.1.1" + color-convert "^2.0.1" anymatch@^1.3.0: version "1.3.2" @@ -619,23 +626,11 @@ anymatch@^2.0.0: micromatch "^3.1.4" normalize-path "^2.1.1" -append-buffer@^1.0.2: - version "1.0.2" - resolved "http://52.167.60.66:8081/repository/npm-all/append-buffer/-/append-buffer-1.0.2.tgz#d8220cf466081525efea50614f3de6514dfa58f1" - integrity sha1-2CIM9GYIFSXv6lBhTz3mUU36WPE= - dependencies: - buffer-equal "^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 "http://52.167.60.66:8081/repository/npm-all/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" @@ -668,35 +663,16 @@ arr-diff@^4.0.0: resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= -arr-filter@^1.1.1: - version "1.1.2" - resolved "http://52.167.60.66:8081/repository/npm-all/arr-filter/-/arr-filter-1.1.2.tgz#43fdddd091e8ef11aa4c45d9cdc18e2dff1711ee" - integrity sha1-Q/3d0JHo7xGqTEXZzcGOLf8XEe4= - dependencies: - make-iterator "^1.0.0" - 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-map@^2.0.0, arr-map@^2.0.2: - version "2.0.2" - resolved "http://52.167.60.66:8081/repository/npm-all/arr-map/-/arr-map-2.0.2.tgz#3a77345ffc1cf35e2a91825601f9e58f2e24cac4" - integrity sha1-Onc0X/wc814qkYJWAfnljy4kysQ= - dependencies: - make-iterator "^1.0.0" - 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-each@^1.0.0, array-each@^1.0.1: - version "1.0.1" - resolved "http://52.167.60.66:8081/repository/npm-all/array-each/-/array-each-1.0.1.tgz#a794af0c05ab1752846ee753a1f211a05ba0c44f" - integrity sha1-p5SvDAWrF1KEbudTofIRoFugxE8= - array-includes@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.0.3.tgz#184b48f62d92d7452bb31b323165c7f8bd02266d" @@ -705,35 +681,6 @@ array-includes@^3.0.3: define-properties "^1.1.2" es-abstract "^1.7.0" -array-initial@^1.0.0: - version "1.1.0" - resolved "http://52.167.60.66:8081/repository/npm-all/array-initial/-/array-initial-1.1.0.tgz#2fa74b26739371c3947bd7a7adc73be334b3d795" - integrity sha1-L6dLJnOTccOUe9enrcc74zSz15U= - dependencies: - array-slice "^1.0.0" - is-number "^4.0.0" - -array-last@^1.1.1: - version "1.3.0" - resolved "http://52.167.60.66:8081/repository/npm-all/array-last/-/array-last-1.3.0.tgz#7aa77073fec565ddab2493f5f88185f404a9d336" - integrity sha512-eOCut5rXlI6aCOS7Z7kCplKRKyiFQ6dHFBem4PwlwKeNFk2/XxTrhRh5T9PyaEWGy/NHTZWbY+nsZlNFJu9rYg== - dependencies: - is-number "^4.0.0" - -array-slice@^1.0.0: - version "1.1.0" - resolved "http://52.167.60.66:8081/repository/npm-all/array-slice/-/array-slice-1.1.0.tgz#e368ea15f89bc7069f7ffb89aec3a6c7d4ac22d4" - integrity sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w== - -array-sort@^1.0.0: - version "1.0.0" - resolved "http://52.167.60.66:8081/repository/npm-all/array-sort/-/array-sort-1.0.0.tgz#e4c05356453f56f53512a7d1d6123f2c54c0a88a" - integrity sha512-ihLeJkonmdiAsD7vpgN3CRcx2J2S0TiYW+IS/5zHBI7mKUq3ySvBdzzBfD236ubDBQFiiyG3SWCPc+msQ9KoYg== - dependencies: - default-compare "^1.0.0" - get-value "^2.0.6" - kind-of "^5.0.2" - array-unique@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" @@ -771,28 +718,11 @@ astral-regex@^1.0.0: resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== -async-done@^1.2.0, async-done@^1.2.2: - version "1.3.2" - resolved "http://52.167.60.66:8081/repository/npm-all/async-done/-/async-done-1.3.2.tgz#5e15aa729962a4b07414f528a88cdf18e0b290a2" - integrity sha512-uYkTP8dw2og1tu1nmza1n1CMW0qb8gWWlwqMmLb7MhBVs4BXrFziT6HXUd+/RlRA/i4H9AkofYloUbs1fwMqlw== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.2" - process-nextick-args "^2.0.0" - stream-exhaust "^1.0.1" - async-each@^1.0.0, async-each@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== -async-settle@^1.0.0: - version "1.0.0" - resolved "http://52.167.60.66:8081/repository/npm-all/async-settle/-/async-settle-1.0.0.tgz#1d0a914bb02575bec8a8f3a74e5080f72b2c0c6b" - integrity sha1-HQqRS7Aldb7IqPOnTlCA9yssDGs= - dependencies: - async-done "^1.2.2" - async@0.2.10: version "0.2.10" resolved "https://registry.yarnpkg.com/async/-/async-0.2.10.tgz#b6bbe0b0674b9d719708ca38de8c237cb526c3d1" @@ -823,7 +753,7 @@ aws4@^1.8.0: resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f" integrity sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ== -babel-cli@^6.0.0, babel-cli@^6.26.0: +babel-cli@6.26.0, babel-cli@^6.0.0, babel-cli@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-cli/-/babel-cli-6.26.0.tgz#502ab54874d7db88ad00b887a06383ce03d002f1" integrity sha1-UCq1SHTX24itALiHoGODzgPQAvE= @@ -853,7 +783,7 @@ babel-code-frame@^6.26.0: esutils "^2.0.2" js-tokens "^3.0.2" -babel-core@^6.26.0, babel-core@^6.26.3: +babel-core@6.26.3, babel-core@^6.26.0, babel-core@^6.26.3: version "6.26.3" resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.3.tgz#b2e2f09e342d0f0c88e2f02e067794125e75c207" integrity sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA== @@ -902,6 +832,18 @@ babel-eslint@10.0.2: eslint-scope "3.7.1" eslint-visitor-keys "^1.0.0" +babel-eslint@10.0.3: + version "10.0.3" + resolved "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.0.3.tgz#81a2c669be0f205e19462fed2482d33e4687a88a" + integrity sha512-z3U7eMY6r/3f3/JB9mTsLjyxrv0Yb1zb8PCWCLpguxfCzBIZUwy23R1t/XKewP+8mEN2Ck8Dtr4q20z6ce6SoA== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/parser" "^7.0.0" + "@babel/traverse" "^7.0.0" + "@babel/types" "^7.0.0" + eslint-visitor-keys "^1.0.0" + resolve "^1.12.0" + babel-eslint@^9.0.0: version "9.0.0" resolved "http://52.167.60.66:8081/repository/npm-all/babel-eslint/-/babel-eslint-9.0.0.tgz#7d9445f81ed9f60aff38115f838970df9f2b6220" @@ -1293,7 +1235,7 @@ babel-plugin-transform-strict-mode@^6.24.1: babel-runtime "^6.22.0" babel-types "^6.24.1" -babel-polyfill@^6.26.0: +babel-polyfill@6.26.0, babel-polyfill@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-polyfill/-/babel-polyfill-6.26.0.tgz#379937abc67d7895970adc621f284cd966cf2153" integrity sha1-N5k3q8Z9eJWXCtxiHyhM2WbPIVM= @@ -1302,7 +1244,7 @@ babel-polyfill@^6.26.0: core-js "^2.5.0" regenerator-runtime "^0.10.5" -babel-preset-env@^1.6.1, babel-preset-env@^1.7.0: +babel-preset-env@1.7.0, babel-preset-env@^1.6.1, babel-preset-env@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/babel-preset-env/-/babel-preset-env-1.7.0.tgz#dea79fa4ebeb883cd35dab07e260c1c9c04df77a" integrity sha512-9OR2afuKDneX2/q2EurSftUYM0xGu4O2D9adAhVfADDhrYDaxXV0rBbevVYoY9n6nyX1PmQW/0jtpJvUNr9CHg== @@ -1338,7 +1280,7 @@ babel-preset-env@^1.6.1, babel-preset-env@^1.7.0: invariant "^2.2.2" semver "^5.3.0" -babel-register@^6.26.0: +babel-register@6.26.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= @@ -1412,21 +1354,6 @@ babylon@^6.18.0: resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" integrity sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ== -bach@^1.0.0: - version "1.2.0" - resolved "http://52.167.60.66:8081/repository/npm-all/bach/-/bach-1.2.0.tgz#4b3ce96bf27134f79a1b414a51c14e34c3bd9880" - integrity sha1-Szzpa/JxNPeaG0FKUcFONMO9mIA= - dependencies: - arr-filter "^1.1.1" - arr-flatten "^1.0.1" - arr-map "^2.0.0" - array-each "^1.0.0" - array-initial "^1.0.0" - array-last "^1.1.1" - async-done "^1.2.2" - async-settle "^1.0.0" - now-and-later "^2.0.0" - balanced-match@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" @@ -1623,11 +1550,6 @@ bs58@^4.0.1: dependencies: base-x "^3.0.2" -buffer-equal@^1.0.0: - version "1.0.0" - resolved "http://52.167.60.66:8081/repository/npm-all/buffer-equal/-/buffer-equal-1.0.0.tgz#59616b498304d556abd466966b22eeda3eca5fbe" - integrity sha1-WWFrSYME1Var1GaWayLu2j7KX74= - buffer-from@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" @@ -1670,11 +1592,6 @@ callsites@^3.0.0: resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== -camelcase@^3.0.0: - version "3.0.0" - resolved "http://52.167.60.66:8081/repository/npm-all/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" - integrity sha1-MvxLn82vhF/N9+c7uXysImHwqwo= - camelcase@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" @@ -1751,6 +1668,14 @@ chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.4.2: escape-string-regexp "^1.0.5" supports-color "^5.3.0" +chalk@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" + integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + chardet@^0.4.0: version "0.4.2" resolved "http://52.167.60.66:8081/repository/npm-all/chardet/-/chardet-0.4.2.tgz#b5473b33dc97c424e5d98dc87d55d4d8a29c8bf2" @@ -1782,7 +1707,7 @@ chokidar@^1.4.3, chokidar@^1.6.1: optionalDependencies: fsevents "^1.0.0" -chokidar@^2.0.0, chokidar@^2.1.5: +chokidar@^2.1.5: version "2.1.5" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.5.tgz#0ae8434d962281a5f56c72869e79cb6d9d86ad4d" integrity sha512-i0TprVWp+Kj4WRPtInjexJ8Q+BqTE909VpH8xVhXrJkoc5QC8VO9TryGOqTr+2hljzc1sC62t22h5tZePodM/A== @@ -1868,15 +1793,6 @@ cli-width@^2.0.0: resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" integrity sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk= -cliui@^3.2.0: - version "3.2.0" - resolved "http://52.167.60.66:8081/repository/npm-all/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@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49" @@ -1895,44 +1811,11 @@ cliui@^5.0.0: strip-ansi "^5.2.0" wrap-ansi "^5.1.0" -clone-buffer@^1.0.0: - version "1.0.0" - resolved "http://52.167.60.66:8081/repository/npm-all/clone-buffer/-/clone-buffer-1.0.0.tgz#e3e25b207ac4e701af721e2cb5a16792cac3dc58" - integrity sha1-4+JbIHrE5wGvch4staFnksrD3Fg= - -clone-stats@^1.0.0: - version "1.0.0" - resolved "http://52.167.60.66:8081/repository/npm-all/clone-stats/-/clone-stats-1.0.0.tgz#b3782dff8bb5474e18b9b6bf0fdfe782f8777680" - integrity sha1-s3gt/4u1R04Yuba/D9/ngvh3doA= - -clone@^2.1.1: - version "2.1.2" - resolved "http://52.167.60.66:8081/repository/npm-all/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" - integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18= - -cloneable-readable@^1.0.0: - version "1.1.3" - resolved "http://52.167.60.66:8081/repository/npm-all/cloneable-readable/-/cloneable-readable-1.1.3.tgz#120a00cb053bfb63a222e709f9683ea2e11d8cec" - integrity sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ== - dependencies: - inherits "^2.0.1" - process-nextick-args "^2.0.0" - readable-stream "^2.3.5" - 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-map@^1.0.0: - version "1.0.0" - resolved "http://52.167.60.66:8081/repository/npm-all/collection-map/-/collection-map-1.0.0.tgz#aea0f06f8d26c780c2b75494385544b2255af18c" - integrity sha1-rqDwb40mx4DCt1SUOFVEsiVa8Yw= - dependencies: - arr-map "^2.0.2" - for-own "^1.0.0" - make-iterator "^1.0.0" - collection-visit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" @@ -1948,15 +1831,22 @@ color-convert@^1.9.0: dependencies: color-name "1.1.3" +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + 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= -color-support@^1.1.3: - version "1.1.3" - resolved "http://52.167.60.66:8081/repository/npm-all/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" - integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== combined-stream@^1.0.6, combined-stream@~1.0.6: version "1.0.7" @@ -1980,7 +1870,7 @@ concat-map@0.0.1: resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= -concat-stream@^1.5.0, concat-stream@^1.6.0: +concat-stream@^1.5.0: version "1.6.2" resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== @@ -2034,14 +1924,6 @@ copy-descriptor@^0.1.0: resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= -copy-props@^2.0.1: - version "2.0.4" - resolved "http://52.167.60.66:8081/repository/npm-all/copy-props/-/copy-props-2.0.4.tgz#93bb1cadfafd31da5bb8a9d4b41f471ec3a72dfe" - integrity sha512-7cjuUME+p+S3HZlbllgsn2CDwS+5eCCX16qBgNC4jgSTf49qR1VKy/Zhl400m0IQXl/bPGEVqncgUUMjrr4s8A== - dependencies: - each-props "^1.3.0" - is-plain-object "^2.0.1" - core-js@^2.4.0, core-js@^2.5.0: version "2.6.5" resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.5.tgz#44bc8d249e7fb2ff5d00e0341a7ffb94fbf67895" @@ -2119,6 +2001,14 @@ d@1: dependencies: es5-ext "^0.10.9" +d@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" + integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA== + dependencies: + es5-ext "^0.10.50" + type "^1.0.1" + dashdash@^1.12.0: version "1.14.1" resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" @@ -2152,7 +2042,7 @@ debug@^4.0.1, debug@^4.1.0: dependencies: ms "^2.1.1" -decamelize@^1.1.1, decamelize@^1.2.0: +decamelize@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= @@ -2179,18 +2069,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-compare@^1.0.0: - version "1.0.0" - resolved "http://52.167.60.66:8081/repository/npm-all/default-compare/-/default-compare-1.0.0.tgz#cb61131844ad84d84788fb68fd01681ca7781a2f" - integrity sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ== - dependencies: - kind-of "^5.0.2" - -default-resolution@^2.0.0: - version "2.0.0" - resolved "http://52.167.60.66:8081/repository/npm-all/default-resolution/-/default-resolution-2.0.0.tgz#bcb82baa72ad79b426a76732f1a81ad6df26d684" - integrity sha1-vLgrqnKtebQmp2cy8aga1t8m1oQ= - 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" @@ -2329,24 +2207,6 @@ duplexer3@^0.1.4: resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= -duplexify@^3.6.0: - version "3.7.1" - resolved "http://52.167.60.66:8081/repository/npm-all/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" - integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== - dependencies: - end-of-stream "^1.0.0" - inherits "^2.0.1" - readable-stream "^2.0.0" - stream-shift "^1.0.0" - -each-props@^1.3.0: - version "1.3.2" - resolved "http://52.167.60.66:8081/repository/npm-all/each-props/-/each-props-1.3.2.tgz#ea45a414d16dd5cfa419b1a81720d5ca06892333" - integrity sha512-vV0Hem3zAGkJAyU7JSjixeU66rwdynTAa1vofCrSA5fEln+m67Az9CcnkVD776/fsN/UjIWmBDoNRS6t6G9RfA== - dependencies: - is-plain-object "^2.0.1" - object.defaults "^1.1.0" - ecc-jsbn@~0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" @@ -2360,10 +2220,10 @@ electron-to-chromium@^1.3.47: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.125.tgz#dbde0e95e64ebe322db0eca764d951f885a5aff2" integrity sha512-XxowpqQxJ4nDwUXHtVtmEhRqBpm2OnjBomZmZtHD0d2Eo0244+Ojezhk3sD/MBSSe2nxCdGQFRXHIsf/LUTL9A== -elliptic@^6.4.1: - version "6.4.1" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.1.tgz#c2d0b7776911b86722c632c3c06c60f2f819939a" - integrity sha512-BsXLz5sqX8OHcsh7CqBMztyXARmGQ3LWPtGjJi6DiJHq5C/qvi9P3OqgswKSDftbu8+IoI/QDTAm2fFnQ9SZSQ== +elliptic@^6.5.2: + version "6.5.2" + resolved "https://registry.npmjs.org/elliptic/-/elliptic-6.5.2.tgz#05c5678d7173c049d8ca433552224a495d0e3762" + integrity sha512-f4x70okzZbIQl/NSRLkI/+tteV/9WqL98zx+SQ69KbXxmVrmjwsNUPn/gYJJ0sHvEak24cZgHIPegRePAtA/xw== dependencies: bn.js "^4.4.0" brorand "^1.0.1" @@ -2390,7 +2250,7 @@ encoding@^0.1.11: dependencies: iconv-lite "~0.4.13" -end-of-stream@^1.0.0, end-of-stream@^1.1.0: +end-of-stream@^1.1.0: version "1.4.1" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43" integrity sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q== @@ -2439,6 +2299,15 @@ es5-ext@^0.10.14, es5-ext@^0.10.35, es5-ext@^0.10.45, es5-ext@^0.10.9, es5-ext@~ es6-symbol "~3.1.1" next-tick "^1.0.0" +es5-ext@^0.10.50: + version "0.10.53" + resolved "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz#93c5a3acfdbef275220ad72644ad02ee18368de1" + integrity sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q== + dependencies: + es6-iterator "~2.0.3" + es6-symbol "~3.1.3" + next-tick "~1.0.0" + es6-iterator@^2.0.1, es6-iterator@~2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" @@ -2456,7 +2325,15 @@ es6-symbol@^3.1.1, es6-symbol@~3.1.1: d "1" es5-ext "~0.10.14" -es6-weak-map@^2.0.1, es6-weak-map@^2.0.2: +es6-symbol@~3.1.3: + version "3.1.3" + resolved "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18" + integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA== + dependencies: + d "^1.0.1" + ext "^1.1.2" + +es6-weak-map@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.2.tgz#5e3ab32251ffd1538a1f8e5ffa1357772f92d96f" integrity sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8= @@ -2488,6 +2365,11 @@ eslint-config-standard-jsx@6.0.2: resolved "http://52.167.60.66:8081/repository/npm-all/eslint-config-standard-jsx/-/eslint-config-standard-jsx-6.0.2.tgz#90c9aa16ac2c4f8970c13fc7efc608bacd02da70" integrity sha512-D+YWAoXw+2GIdbMBRAzWwr1ZtvnSf4n4yL0gKGg7ShUOGXkSOLerI17K4F6LdQMJPNMoWYqepzQD/fKY+tXNSg== +eslint-config-standard-jsx@8.1.0: + version "8.1.0" + resolved "https://registry.npmjs.org/eslint-config-standard-jsx/-/eslint-config-standard-jsx-8.1.0.tgz#314c62a0e6f51f75547f89aade059bec140edfc7" + integrity sha512-ULVC8qH8qCqbU792ZOO6DaiaZyHNS/5CZt3hKqHkEhVlhPEPN3nfBqqxJCyp59XrjIBZPu1chMYe9T2DXZ7TMw== + eslint-config-standard-jsx@~8.0.0: version "8.0.0" resolved "http://52.167.60.66:8081/repository/npm-all/eslint-config-standard-jsx/-/eslint-config-standard-jsx-8.0.0.tgz#62607f2a7c0c47aed46d3a37ad7ebc73b6f7e869" @@ -2503,6 +2385,11 @@ eslint-config-standard@14.0.0, eslint-config-standard@~14.0.0: resolved "http://52.167.60.66:8081/repository/npm-all/eslint-config-standard/-/eslint-config-standard-14.0.0.tgz#1de7bf5af37542dc6eef879ab7eb5e5e0f830747" integrity sha512-bV6e2LFvJEetrLjVAy4KWPOUsIhPWr040c649MigTPR6yUtaGuOt6CEAyNeez2lRiC+2+vjGWa02byjs25EB3A== +eslint-config-standard@14.1.0: + version "14.1.0" + resolved "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-14.1.0.tgz#b23da2b76fe5a2eba668374f246454e7058f15d4" + integrity sha512-EF6XkrrGVbvv8hL/kYa/m6vnvmUT+K82pJJc4JJVMM6+Qgqh0pnwprSxdduDLB9p/7bIxD+YV5O0wfb8lmcPbA== + eslint-import-resolver-node@^0.3.1, eslint-import-resolver-node@^0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz#58f15fb839b8d0576ca980413476aab2472db66a" @@ -2527,6 +2414,14 @@ eslint-plugin-es@^1.3.1, eslint-plugin-es@^1.4.0: eslint-utils "^1.3.0" regexpp "^2.0.1" +eslint-plugin-es@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-2.0.0.tgz#0f5f5da5f18aa21989feebe8a73eadefb3432976" + integrity sha512-f6fceVtg27BR02EYnBhgWLFQfK6bN4Ll0nQFrBHOlCsAyxeZkn0NHns5O0YZOPrV1B3ramd6cgFwaoFLcSkwEQ== + dependencies: + eslint-utils "^1.4.2" + regexpp "^3.0.0" + eslint-plugin-import@2.18.2, eslint-plugin-import@~2.18.0: version "2.18.2" resolved "http://52.167.60.66:8081/repository/npm-all/eslint-plugin-import/-/eslint-plugin-import-2.18.2.tgz#02f1180b90b077b33d447a17a2326ceb400aceb6" @@ -2572,6 +2467,18 @@ eslint-plugin-node@^9.1.0, eslint-plugin-node@~9.1.0: resolve "^1.10.1" semver "^6.1.0" +eslint-plugin-node@~10.0.0: + version "10.0.0" + resolved "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-10.0.0.tgz#fd1adbc7a300cf7eb6ac55cf4b0b6fc6e577f5a6" + integrity sha512-1CSyM/QCjs6PXaT18+zuAXsjXGIGo5Rw630rSKwokSs2jrYURQc4R5JZpoanNCqwNmepg+0eZ9L7YiRUJb8jiQ== + dependencies: + eslint-plugin-es "^2.0.0" + eslint-utils "^1.4.2" + ignore "^5.1.1" + minimatch "^3.0.4" + resolve "^1.10.1" + semver "^6.1.0" + eslint-plugin-node@~7.0.1: version "7.0.1" resolved "http://52.167.60.66:8081/repository/npm-all/eslint-plugin-node/-/eslint-plugin-node-7.0.1.tgz#a6e054e50199b2edd85518b89b4e7b323c9f36db" @@ -2655,6 +2562,13 @@ eslint-utils@^1.3.0, eslint-utils@^1.3.1, eslint-utils@^1.4.0: dependencies: eslint-visitor-keys "^1.0.0" +eslint-utils@^1.4.2: + version "1.4.3" + resolved "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz#74fec7c54d0776b6f67e0251040b5806564e981f" + integrity sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q== + dependencies: + eslint-visitor-keys "^1.1.0" + eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0: version "1.1.0" resolved "http://52.167.60.66:8081/repository/npm-all/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz#e2a82cea84ff246ad6fb57f9bde5b46621459ec2" @@ -2790,6 +2704,49 @@ eslint@~6.1.0: text-table "^0.2.0" v8-compile-cache "^2.0.3" +eslint@~6.4.0: + version "6.4.0" + resolved "https://registry.npmjs.org/eslint/-/eslint-6.4.0.tgz#5aa9227c3fbe921982b2eda94ba0d7fae858611a" + integrity sha512-WTVEzK3lSFoXUovDHEbkJqCVPEPwbhCq4trDktNI6ygs7aO41d4cDT0JFAT5MivzZeVLWlg7vHL+bgrQv/t3vA== + dependencies: + "@babel/code-frame" "^7.0.0" + ajv "^6.10.0" + chalk "^2.1.0" + cross-spawn "^6.0.5" + debug "^4.0.1" + doctrine "^3.0.0" + eslint-scope "^5.0.0" + eslint-utils "^1.4.2" + eslint-visitor-keys "^1.1.0" + espree "^6.1.1" + esquery "^1.0.1" + esutils "^2.0.2" + file-entry-cache "^5.0.1" + functional-red-black-tree "^1.0.1" + glob-parent "^5.0.0" + globals "^11.7.0" + ignore "^4.0.6" + import-fresh "^3.0.0" + imurmurhash "^0.1.4" + inquirer "^6.4.1" + is-glob "^4.0.0" + js-yaml "^3.13.1" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.3.0" + lodash "^4.17.14" + minimatch "^3.0.4" + mkdirp "^0.5.1" + natural-compare "^1.4.0" + optionator "^0.8.2" + progress "^2.0.0" + regexpp "^2.0.1" + semver "^6.1.2" + strip-ansi "^5.2.0" + strip-json-comments "^3.0.1" + table "^5.2.3" + text-table "^0.2.0" + v8-compile-cache "^2.0.3" + espree@^4.0.0: version "4.1.0" resolved "http://52.167.60.66:8081/repository/npm-all/espree/-/espree-4.1.0.tgz#728d5451e0fd156c04384a7ad89ed51ff54eb25f" @@ -2808,6 +2765,15 @@ espree@^6.0.0, espree@^6.1.0: acorn-jsx "^5.0.0" eslint-visitor-keys "^1.1.0" +espree@^6.1.1: + version "6.1.2" + resolved "https://registry.npmjs.org/espree/-/espree-6.1.2.tgz#6c272650932b4f91c3714e5e7b5f5e2ecf47262d" + integrity sha512-2iUPuuPP+yW1PZaMSDM9eyVf8D5P0Hi8h83YtZ5bPc/zHYjII5khoixIUTMO794NOY8F/ThF1Bo8ncZILarUTA== + dependencies: + acorn "^7.1.0" + acorn-jsx "^5.1.0" + eslint-visitor-keys "^1.1.0" + esprima@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" @@ -2918,6 +2884,13 @@ expand-tilde@^2.0.0, expand-tilde@^2.0.2: dependencies: homedir-polyfill "^1.0.1" +ext@^1.1.2: + version "1.4.0" + resolved "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz#89ae7a07158f79d35517882904324077e4379244" + integrity sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A== + dependencies: + type "^2.0.0" + extend-shallow@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" @@ -2987,16 +2960,6 @@ extsprintf@^1.2.0: resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= -fancy-log@^1.3.2: - version "1.3.3" - resolved "http://52.167.60.66:8081/repository/npm-all/fancy-log/-/fancy-log-1.3.3.tgz#dbc19154f558690150a23953a0adbd035be45fc7" - integrity sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw== - dependencies: - ansi-gray "^0.1.1" - color-support "^1.1.3" - parse-node-version "^1.0.0" - time-stamp "^1.0.0" - 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" @@ -3092,14 +3055,6 @@ find-up@3.0.0, find-up@^3.0.0: dependencies: locate-path "^3.0.0" -find-up@^1.0.0: - version "1.1.2" - resolved "http://52.167.60.66:8081/repository/npm-all/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@^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" @@ -3107,16 +3062,6 @@ find-up@^2.0.0, find-up@^2.1.0: dependencies: locate-path "^2.0.0" -findup-sync@^2.0.0: - version "2.0.0" - resolved "http://52.167.60.66:8081/repository/npm-all/findup-sync/-/findup-sync-2.0.0.tgz#9326b1488c22d1a6088650a86901b2d9a90a2cbc" - integrity sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw= - dependencies: - detect-file "^1.0.0" - is-glob "^3.1.0" - micromatch "^3.0.4" - resolve-dir "^1.0.1" - findup-sync@^3.0.0: version "3.0.0" resolved "http://52.167.60.66:8081/repository/npm-all/findup-sync/-/findup-sync-3.0.0.tgz#17b108f9ee512dfb7a5c7f3c8b27ea9e1a9c08d1" @@ -3127,22 +3072,6 @@ findup-sync@^3.0.0: micromatch "^3.0.4" resolve-dir "^1.0.1" -fined@^1.0.1: - version "1.2.0" - resolved "http://52.167.60.66:8081/repository/npm-all/fined/-/fined-1.2.0.tgz#d00beccf1aa2b475d16d423b0238b713a2c4a37b" - integrity sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng== - dependencies: - expand-tilde "^2.0.2" - is-plain-object "^2.0.3" - object.defaults "^1.1.0" - object.pick "^1.2.0" - parse-filepath "^1.0.1" - -flagged-respawn@^1.0.0: - version "1.0.1" - resolved "http://52.167.60.66:8081/repository/npm-all/flagged-respawn/-/flagged-respawn-1.0.1.tgz#e7de6f1279ddd9ca9aac8a5971d618606b3aab41" - integrity sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q== - flat-cache@^1.2.1: version "1.3.4" resolved "http://52.167.60.66:8081/repository/npm-all/flat-cache/-/flat-cache-1.3.4.tgz#2c2ef77525cc2929007dfffa1dd314aa9c9dee6f" @@ -3174,14 +3103,6 @@ flatted@^2.0.0: resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.0.tgz#55122b6536ea496b4b44893ee2608141d10d9916" integrity sha512-R+H8IZclI8AAkSBRQJLVOsxwAoHd6WC40b4QTNWIjzAa6BXOBfQcM587MXDTVPeYaopFNWHUFLx7eNmHDSxMWg== -flush-write-stream@^1.0.2: - version "1.1.1" - resolved "http://52.167.60.66:8081/repository/npm-all/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" - integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w== - dependencies: - inherits "^2.0.3" - readable-stream "^2.3.6" - for-in@^1.0.1, for-in@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" @@ -3194,13 +3115,6 @@ for-own@^0.1.4: dependencies: for-in "^1.0.1" -for-own@^1.0.0: - version "1.0.0" - resolved "http://52.167.60.66:8081/repository/npm-all/for-own/-/for-own-1.0.0.tgz#c63332f415cedc4b04dbfe70cf836494c53cb44b" - integrity sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs= - 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" @@ -3234,14 +3148,6 @@ fs-minipass@^1.2.5: dependencies: minipass "^2.2.1" -fs-mkdirp-stream@^1.0.0: - version "1.0.0" - resolved "http://52.167.60.66:8081/repository/npm-all/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz#0b7815fc3201c6a69e14db98ce098c16935259eb" - integrity sha1-C3gV/DIBxqaeFNuYzgmMFpNSWes= - dependencies: - graceful-fs "^4.1.11" - through2 "^2.0.3" - fs-readdir-recursive@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz#e32fc030a2ccee44a6b5371308da54be0b397d27" @@ -3384,35 +3290,7 @@ glob-parent@^5.0.0: dependencies: is-glob "^4.0.1" -glob-stream@^6.1.0: - version "6.1.0" - resolved "http://52.167.60.66:8081/repository/npm-all/glob-stream/-/glob-stream-6.1.0.tgz#7045c99413b3eb94888d83ab46d0b404cc7bdde4" - integrity sha1-cEXJlBOz65SIjYOrRtC0BMx73eQ= - dependencies: - extend "^3.0.0" - glob "^7.1.1" - glob-parent "^3.1.0" - is-negated-glob "^1.0.0" - ordered-read-streams "^1.0.0" - pumpify "^1.3.5" - readable-stream "^2.1.5" - remove-trailing-separator "^1.0.1" - to-absolute-glob "^2.0.0" - unique-stream "^2.0.2" - -glob-watcher@^5.0.3: - version "5.0.3" - resolved "http://52.167.60.66:8081/repository/npm-all/glob-watcher/-/glob-watcher-5.0.3.tgz#88a8abf1c4d131eb93928994bc4a593c2e5dd626" - integrity sha512-8tWsULNEPHKQ2MR4zXuzSmqbdyV5PtwwCaWSGQ1WwHsJ07ilNeN1JB8ntxhckbnpSHaf9dXFUHzIWvm1I13dsg== - dependencies: - anymatch "^2.0.0" - async-done "^1.2.0" - chokidar "^2.0.0" - is-negated-glob "^1.0.0" - just-debounce "^1.0.0" - object.defaults "^1.1.0" - -glob@7.1.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3: +glob@7.1.3, glob@^7.0.5, glob@^7.1.2, glob@^7.1.3: version "7.1.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== @@ -3461,13 +3339,6 @@ globals@^9.18.0: resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" integrity sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ== -glogg@^1.0.0: - version "1.0.2" - resolved "http://52.167.60.66:8081/repository/npm-all/glogg/-/glogg-1.0.2.tgz#2d7dd702beda22eb3bffadf880696da6d846313f" - integrity sha512-5mwUoSuBk44Y4EshyiqcH95ZntbDdTQqA3QYSrxmzj28Ai0vXBGMH1ApSANH14j2sIRtqCEyg6PfsuP7ElOEDA== - dependencies: - sparkles "^1.0.0" - got@^6.7.1: version "6.7.1" resolved "https://registry.yarnpkg.com/got/-/got-6.7.1.tgz#240cd05785a9a18e561dc1b44b41c763ef1e8db0" @@ -3485,7 +3356,7 @@ got@^6.7.1: unzip-response "^2.0.1" url-parse-lax "^1.0.0" -graceful-fs@^4.0.0, graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.4, graceful-fs@^4.1.6, graceful-fs@^4.1.9: +graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.4, graceful-fs@^4.1.9: version "4.2.2" resolved "http://52.167.60.66:8081/repository/npm-all/graceful-fs/-/graceful-fs-4.2.2.tgz#6f0952605d0140c1cfdb138ed005775b92d67b02" integrity sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q== @@ -3495,47 +3366,6 @@ growl@1.10.5: resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== -gulp-cli@^2.2.0: - version "2.2.0" - resolved "http://52.167.60.66:8081/repository/npm-all/gulp-cli/-/gulp-cli-2.2.0.tgz#5533126eeb7fe415a7e3e84a297d334d5cf70ebc" - integrity sha512-rGs3bVYHdyJpLqR0TUBnlcZ1O5O++Zs4bA0ajm+zr3WFCfiSLjGwoCBqFs18wzN+ZxahT9DkOK5nDf26iDsWjA== - dependencies: - ansi-colors "^1.0.1" - archy "^1.0.0" - array-sort "^1.0.0" - color-support "^1.1.3" - concat-stream "^1.6.0" - copy-props "^2.0.1" - fancy-log "^1.3.2" - gulplog "^1.0.0" - interpret "^1.1.0" - isobject "^3.0.1" - liftoff "^3.1.0" - matchdep "^2.0.0" - mute-stdout "^1.0.0" - pretty-hrtime "^1.0.0" - replace-homedir "^1.0.0" - semver-greatest-satisfied-range "^1.1.0" - v8flags "^3.0.1" - yargs "^7.1.0" - -gulp@^4.0.2: - version "4.0.2" - resolved "http://52.167.60.66:8081/repository/npm-all/gulp/-/gulp-4.0.2.tgz#543651070fd0f6ab0a0650c6a3e6ff5a7cb09caa" - integrity sha512-dvEs27SCZt2ibF29xYgmnwwCYZxdxhQ/+LFWlbAW8y7jt68L/65402Lz3+CKy0Ov4rOs+NERmDq7YlZaDqUIfA== - dependencies: - glob-watcher "^5.0.3" - gulp-cli "^2.2.0" - undertaker "^1.2.1" - vinyl-fs "^3.0.0" - -gulplog@^1.0.0: - version "1.0.0" - resolved "http://52.167.60.66:8081/repository/npm-all/gulplog/-/gulplog-1.0.0.tgz#e28c4d45d05ecbbed818363ce8f9c5926229ffe5" - integrity sha1-4oxNRdBey77YGDY86PnFkmIp/+U= - dependencies: - glogg "^1.0.0" - har-schema@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" @@ -3560,6 +3390,11 @@ has-flag@^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.npmjs.org/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + has-symbols@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44" @@ -3785,22 +3620,12 @@ inquirer@^6.4.1: strip-ansi "^5.1.0" through "^2.3.6" -interpret@^1.1.0: - version "1.2.0" - resolved "http://52.167.60.66:8081/repository/npm-all/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" dependencies: loose-envify "^1.0.0" -invert-kv@^1.0.0: - version "1.0.0" - resolved "http://52.167.60.66:8081/repository/npm-all/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" @@ -3816,14 +3641,6 @@ ip-regex@^4.1.0: resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-4.1.0.tgz#5ad62f685a14edb421abebc2fff8db94df67b455" integrity sha512-pKnZpbgCTfH/1NLIlOduP/V+WRXzC2MOz3Qo8xmxk8C5GudJLgK5QyLVXOSWy3ParAH7Eemurl3xjv/WXYFvMA== -is-absolute@^1.0.0: - version "1.0.0" - resolved "http://52.167.60.66:8081/repository/npm-all/is-absolute/-/is-absolute-1.0.0.tgz#395e1ae84b11f26ad1795e73c17378e48a301576" - integrity sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA== - dependencies: - is-relative "^1.0.0" - is-windows "^1.0.1" - 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" @@ -4003,11 +3820,6 @@ is-ip@^2.0.0: dependencies: ip-regex "^2.0.0" -is-negated-glob@^1.0.0: - version "1.0.0" - resolved "http://52.167.60.66:8081/repository/npm-all/is-negated-glob/-/is-negated-glob-1.0.0.tgz#6910bca5da8c95e784b5751b976cf5a10fee36d2" - integrity sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI= - is-npm@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4" @@ -4078,13 +3890,6 @@ is-regex@^1.0.4: dependencies: has "^1.0.1" -is-relative@^1.0.0: - version "1.0.0" - resolved "http://52.167.60.66:8081/repository/npm-all/is-relative/-/is-relative-1.0.0.tgz#a1bb6935ce8c5dba1e8b9754b9b2dcc020e2260d" - integrity sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA== - dependencies: - is-unc-path "^1.0.0" - is-resolvable@^1.1.0: version "1.1.0" resolved "http://52.167.60.66:8081/repository/npm-all/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" @@ -4112,23 +3917,6 @@ is-typedarray@^1.0.0, is-typedarray@~1.0.0: resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= -is-unc-path@^1.0.0: - version "1.0.0" - resolved "http://52.167.60.66:8081/repository/npm-all/is-unc-path/-/is-unc-path-1.0.0.tgz#d731e8898ed090a12c352ad2eaed5095ad322c9d" - integrity sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ== - dependencies: - unc-path-regex "^0.1.2" - -is-utf8@^0.2.0, is-utf8@^0.2.1: - version "0.2.1" - resolved "http://52.167.60.66:8081/repository/npm-all/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" - integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI= - -is-valid-glob@^1.0.0: - version "1.0.0" - resolved "http://52.167.60.66:8081/repository/npm-all/is-valid-glob/-/is-valid-glob-1.0.0.tgz#29bf3eff701be2d4d315dbacc39bc39fe8f601aa" - integrity sha1-Kb8+/3Ab4tTTFdusw5vDn+j2Aao= - is-windows@^1.0.1, is-windows@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" @@ -4306,11 +4094,6 @@ jsx-ast-utils@^2.0.1, jsx-ast-utils@^2.1.0: dependencies: array-includes "^3.0.3" -just-debounce@^1.0.0: - version "1.0.0" - resolved "http://52.167.60.66:8081/repository/npm-all/just-debounce/-/just-debounce-1.0.0.tgz#87fccfaeffc0b68cd19d55f6722943f929ea35ea" - integrity sha1-h/zPrv/AtozRnVX2cilD+SnqNeo= - 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" @@ -4325,7 +4108,7 @@ kind-of@^4.0.0: dependencies: is-buffer "^1.1.5" -kind-of@^5.0.0, kind-of@^5.0.2: +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== @@ -4342,14 +4125,6 @@ klaw@^3.0.0: dependencies: graceful-fs "^4.1.9" -last-run@^1.1.0: - version "1.1.1" - resolved "http://52.167.60.66:8081/repository/npm-all/last-run/-/last-run-1.1.1.tgz#45b96942c17b1c79c772198259ba943bebf8ca5b" - integrity sha1-RblpQsF7HHnHchmCWbqUO+v4yls= - dependencies: - default-resolution "^2.0.0" - es6-weak-map "^2.0.1" - latest-version@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-3.1.0.tgz#a205383fea322b33b5ae3b18abee0dc2f356ee15" @@ -4357,20 +4132,6 @@ latest-version@^3.0.0: dependencies: package-json "^4.0.0" -lazystream@^1.0.0: - version "1.0.0" - resolved "http://52.167.60.66:8081/repository/npm-all/lazystream/-/lazystream-1.0.0.tgz#f6995fe0f820392f61396be89462407bb77168e4" - integrity sha1-9plf4PggOS9hOWvolGJAe7dxaOQ= - dependencies: - readable-stream "^2.0.5" - -lcid@^1.0.0: - version "1.0.0" - resolved "http://52.167.60.66:8081/repository/npm-all/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" - integrity sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU= - 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" @@ -4378,13 +4139,6 @@ lcid@^2.0.0: dependencies: invert-kv "^2.0.0" -lead@^1.0.0: - version "1.0.0" - resolved "http://52.167.60.66:8081/repository/npm-all/lead/-/lead-1.0.0.tgz#6f14f99a37be3a9dd784f5495690e5903466ee42" - integrity sha1-bxT5mje+Op3XhPVJVpDlkDRm7kI= - dependencies: - flush-write-stream "^1.0.2" - levn@^0.3.0, levn@~0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" @@ -4400,20 +4154,6 @@ lie@3.1.1: dependencies: immediate "~3.0.5" -liftoff@^3.1.0: - version "3.1.0" - resolved "http://52.167.60.66:8081/repository/npm-all/liftoff/-/liftoff-3.1.0.tgz#c9ba6081f908670607ee79062d700df062c52ed3" - integrity sha512-DlIPlJUkCV0Ips2zf2pJP0unEoT1kwYhiiPUGF3s/jtxTCjziNLoiVVh+jqWOWeFi6mmwQ5fNxvAUyPad4Dfog== - dependencies: - extend "^3.0.0" - findup-sync "^3.0.0" - fined "^1.0.1" - flagged-respawn "^1.0.0" - is-plain-object "^2.0.4" - object.map "^1.0.0" - rechoir "^0.6.2" - resolve "^1.1.7" - linkify-it@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-2.1.0.tgz#c4caf38a6cd7ac2212ef3c7d2bde30a91561f9db" @@ -4421,17 +4161,6 @@ linkify-it@^2.0.0: dependencies: uc.micro "^1.0.1" -load-json-file@^1.0.0: - version "1.1.0" - resolved "http://52.167.60.66:8081/repository/npm-all/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@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" @@ -4572,13 +4301,6 @@ make-error@^1.1.1: resolved "http://52.167.60.66:8081/repository/npm-all/make-error/-/make-error-1.3.5.tgz#efe4e81f6db28cadd605c70f29c831b58ef776c8" integrity sha512-c3sIjNUow0+8swNwVpqoH4YCShKNFkMaw6oH1mNS2haDZQqkeZFlHS3dhoeEbKKmJB4vXpJucU6oH75aDYeE9g== -make-iterator@^1.0.0: - version "1.0.1" - resolved "http://52.167.60.66:8081/repository/npm-all/make-iterator/-/make-iterator-1.0.1.tgz#29b33f312aa8f547c4a5e490f56afcec99133ad6" - integrity sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw== - dependencies: - kind-of "^6.0.2" - 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" @@ -4586,7 +4308,7 @@ map-age-cleaner@^0.1.1: dependencies: p-defer "^1.0.0" -map-cache@^0.2.0, map-cache@^0.2.2: +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= @@ -4627,16 +4349,6 @@ martinez-polygon-clipping@^0.4.3: splaytree "^0.1.4" tinyqueue "^1.2.0" -matchdep@^2.0.0: - version "2.0.0" - resolved "http://52.167.60.66:8081/repository/npm-all/matchdep/-/matchdep-2.0.0.tgz#c6f34834a0d8dbc3b37c27ee8bbcb27c7775582e" - integrity sha1-xvNINKDY28OzfCfui7yyfHd1WC4= - dependencies: - findup-sync "^2.0.0" - micromatch "^3.0.4" - resolve "^1.4.0" - stack-trace "0.0.10" - math-random@^1.0.1: version "1.0.4" resolved "https://registry.yarnpkg.com/math-random/-/math-random-1.0.4.tgz#5dd6943c938548267016d4e34f057583080c514c" @@ -4887,11 +4599,6 @@ ms@2.1.1, ms@^2.1.1: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== -mute-stdout@^1.0.0: - version "1.0.1" - resolved "http://52.167.60.66:8081/repository/npm-all/mute-stdout/-/mute-stdout-1.0.1.tgz#acb0300eb4de23a7ddeec014e3e96044b3472331" - integrity sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg== - mute-stream@0.0.7: version "0.0.7" resolved "http://52.167.60.66:8081/repository/npm-all/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" @@ -4902,7 +4609,7 @@ mute-stream@0.0.8: resolved "http://52.167.60.66:8081/repository/npm-all/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== -nan@^2.11.0, nan@^2.12.1, nan@^2.14.0: +nan@^2.12.1, nan@^2.14.0: version "2.14.0" resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c" integrity sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg== @@ -4949,7 +4656,7 @@ needle@^2.2.1: iconv-lite "^0.4.4" sax "^1.2.4" -next-tick@1, next-tick@^1.0.0: +next-tick@1, next-tick@^1.0.0, next-tick@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" integrity sha1-yobR/ogoFpsBICCOPchCS524NCw= @@ -5044,13 +4751,6 @@ normalize-path@^3.0.0: resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== -now-and-later@^2.0.0: - version "2.0.1" - resolved "http://52.167.60.66:8081/repository/npm-all/now-and-later/-/now-and-later-2.0.1.tgz#8e579c8685764a7cc02cb680380e94f43ccb1f7c" - integrity sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ== - dependencies: - once "^1.3.2" - npm-bundled@^1.0.1: version "1.0.6" resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.6.tgz#e7ba9aadcef962bb61248f91721cd932b3fe6bdd" @@ -5117,7 +4817,7 @@ object-visit@^1.0.0: dependencies: isobject "^3.0.0" -object.assign@4.1.0, object.assign@^4.0.4: +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== @@ -5127,16 +4827,6 @@ object.assign@4.1.0, object.assign@^4.0.4: has-symbols "^1.0.0" object-keys "^1.0.11" -object.defaults@^1.0.0, object.defaults@^1.1.0: - version "1.1.0" - resolved "http://52.167.60.66:8081/repository/npm-all/object.defaults/-/object.defaults-1.1.0.tgz#3a7f868334b407dea06da16d88d5cd29e435fecf" - integrity sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8= - dependencies: - array-each "^1.0.1" - array-slice "^1.0.0" - for-own "^1.0.0" - isobject "^3.0.0" - object.entries@^1.1.0: version "1.1.0" resolved "http://52.167.60.66:8081/repository/npm-all/object.entries/-/object.entries-1.1.0.tgz#2024fc6d6ba246aee38bdb0ffd5cfbcf371b7519" @@ -5165,14 +4855,6 @@ object.getownpropertydescriptors@^2.0.3: define-properties "^1.1.2" es-abstract "^1.5.1" -object.map@^1.0.0: - version "1.0.1" - resolved "http://52.167.60.66:8081/repository/npm-all/object.map/-/object.map-1.0.1.tgz#cf83e59dc8fcc0ad5f4250e1f78b3b81bd801d37" - integrity sha1-z4Plncj8wK1fQlDh94s7gb2AHTc= - dependencies: - for-own "^1.0.0" - make-iterator "^1.0.0" - object.omit@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" @@ -5181,21 +4863,13 @@ object.omit@^2.0.0: for-own "^0.1.4" is-extendable "^0.1.1" -object.pick@^1.2.0, object.pick@^1.3.0: +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" -object.reduce@^1.0.0: - version "1.0.1" - resolved "http://52.167.60.66:8081/repository/npm-all/object.reduce/-/object.reduce-1.0.1.tgz#6fe348f2ac7fa0f95ca621226599096825bb03ad" - integrity sha1-b+NI8qx/oPlcpiEiZZkJaCW7A60= - dependencies: - for-own "^1.0.0" - make-iterator "^1.0.0" - object.values@^1.1.0: version "1.1.0" resolved "http://52.167.60.66:8081/repository/npm-all/object.values/-/object.values-1.1.0.tgz#bf6810ef5da3e5325790eaaa2be213ea84624da9" @@ -5210,7 +4884,7 @@ object.values@^1.1.0: version "3.0.0" resolved "https://matrix.org/packages/npm/olm/olm-3.0.0.tgz#4a6f5e83c5c4d05a268246a5db9bdf0e720311b1" -once@^1.3.0, once@^1.3.1, once@^1.3.2, once@^1.4.0: +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= @@ -5243,25 +4917,11 @@ optionator@^0.8.2: type-check "~0.3.2" wordwrap "~1.0.0" -ordered-read-streams@^1.0.0: - version "1.0.1" - resolved "http://52.167.60.66:8081/repository/npm-all/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz#77c0cb37c41525d64166d990ffad7ec6a0e1363e" - integrity sha1-d8DLN8QVJdZBZtmQ/61+xqDhNj4= - dependencies: - readable-stream "^2.0.1" - os-homedir@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= -os-locale@^1.4.0: - version "1.4.0" - resolved "http://52.167.60.66:8081/repository/npm-all/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" - integrity sha1-IPnxeuKe00XoveWDsT0gCYA8FNk= - dependencies: - lcid "^1.0.0" - os-locale@^3.0.0, os-locale@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" @@ -5363,15 +5023,6 @@ parent-module@^1.0.0: dependencies: callsites "^3.0.0" -parse-filepath@^1.0.1: - version "1.0.2" - resolved "http://52.167.60.66:8081/repository/npm-all/parse-filepath/-/parse-filepath-1.0.2.tgz#a632127f53aaf3d15876f5872f3ffac763d6c891" - integrity sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE= - dependencies: - is-absolute "^1.0.0" - map-cache "^0.2.0" - path-root "^0.1.1" - parse-glob@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" @@ -5397,11 +5048,6 @@ parse-json@^4.0.0: error-ex "^1.3.1" json-parse-better-errors "^1.0.1" -parse-node-version@^1.0.0: - version "1.0.1" - resolved "http://52.167.60.66:8081/repository/npm-all/parse-node-version/-/parse-node-version-1.0.1.tgz#e2b5dbede00e7fa9bc363607f53327e8b073189b" - integrity sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA== - parse-passwd@^1.0.0: version "1.0.0" resolved "http://52.167.60.66:8081/repository/npm-all/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" @@ -5417,13 +5063,6 @@ path-dirname@^1.0.0: resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= -path-exists@^2.0.0: - version "2.1.0" - resolved "http://52.167.60.66:8081/repository/npm-all/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" @@ -5449,27 +5088,6 @@ path-parse@^1.0.6: resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== -path-root-regex@^0.1.0: - version "0.1.2" - resolved "http://52.167.60.66:8081/repository/npm-all/path-root-regex/-/path-root-regex-0.1.2.tgz#bfccdc8df5b12dc52c8b43ec38d18d72c04ba96d" - integrity sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0= - -path-root@^0.1.1: - version "0.1.1" - resolved "http://52.167.60.66:8081/repository/npm-all/path-root/-/path-root-0.1.1.tgz#9a4a6814cac1c0cd73360a95f32083c8ea4745b7" - integrity sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc= - dependencies: - path-root-regex "^0.1.0" - -path-type@^1.0.0: - version "1.1.0" - resolved "http://52.167.60.66:8081/repository/npm-all/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@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" @@ -5513,18 +5131,6 @@ pify@^4.0.1: resolved "http://52.167.60.66:8081/repository/npm-all/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== -pinkie-promise@^2.0.0: - version "2.0.1" - resolved "http://52.167.60.66:8081/repository/npm-all/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 "http://52.167.60.66:8081/repository/npm-all/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" - integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= - pkg-conf@^2.0.0: version "2.1.0" resolved "http://52.167.60.66:8081/repository/npm-all/pkg-conf/-/pkg-conf-2.1.0.tgz#2126514ca6f2abfebd168596df18ba57867f0058" @@ -5582,17 +5188,12 @@ preserve@^0.2.0: resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" integrity sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks= -pretty-hrtime@^1.0.0: - version "1.0.3" - resolved "http://52.167.60.66:8081/repository/npm-all/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz#b7e3ea42435a4c9b2759d99e0f201eb195802ee1" - integrity sha1-t+PqQkNaTJsnWdmeDyAesZWALuE= - private@^0.1.6, private@^0.1.8: version "0.1.8" resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== -process-nextick-args@^2.0.0, process-nextick-args@~2.0.0: +process-nextick-args@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" integrity sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw== @@ -5626,14 +5227,6 @@ pstree.remy@^1.1.6: resolved "https://registry.yarnpkg.com/pstree.remy/-/pstree.remy-1.1.6.tgz#73a55aad9e2d95814927131fbf4dc1b62d259f47" integrity sha512-NdF35+QsqD7EgNEI5mkI/X+UwaxVEbQaz9f4IooEmMUv6ZPmlTQYGjBPJGgrlzNdjSvIy4MWMg6Q6vCgBO2K+w== -pump@^2.0.0: - version "2.0.1" - resolved "http://52.167.60.66:8081/repository/npm-all/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" - integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - pump@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" @@ -5642,15 +5235,6 @@ pump@^3.0.0: end-of-stream "^1.1.0" once "^1.3.1" -pumpify@^1.3.5: - version "1.5.1" - resolved "http://52.167.60.66:8081/repository/npm-all/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" - integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== - dependencies: - duplexify "^3.6.0" - inherits "^2.0.3" - pump "^2.0.0" - punycode@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" @@ -5714,14 +5298,6 @@ react-is@^16.8.1: resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.8.6.tgz#5bbc1e2d29141c9fbdfed456343fe2bc430a6a16" integrity sha512-aUk3bHfZ2bRSVFFbbeVS4i+lNPZr3/WM5jT2J5omUVV1zzcs1nAaf3l51ctA5FFvCRbhrH0bdAsRRQddFJZPtA== -read-pkg-up@^1.0.1: - version "1.0.1" - resolved "http://52.167.60.66:8081/repository/npm-all/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@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" @@ -5730,15 +5306,6 @@ read-pkg-up@^2.0.0: find-up "^2.0.0" read-pkg "^2.0.0" -read-pkg@^1.0.0: - version "1.1.0" - resolved "http://52.167.60.66:8081/repository/npm-all/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@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" @@ -5748,7 +5315,7 @@ read-pkg@^2.0.0: normalize-package-data "^2.3.2" path-type "^2.0.0" -readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@~2.3.6: +readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.2.2, readable-stream@^2.3.5: version "2.3.6" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw== @@ -5779,13 +5346,6 @@ readdirp@^2.0.0, readdirp@^2.2.1: micromatch "^3.1.10" readable-stream "^2.0.2" -rechoir@^0.6.2: - version "0.6.2" - resolved "http://52.167.60.66:8081/repository/npm-all/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" - integrity sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q= - dependencies: - resolve "^1.1.6" - regenerate@^1.2.1: version "1.4.0" resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" @@ -5835,6 +5395,11 @@ regexpp@^2.0.0, regexpp@^2.0.1: resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw== +regexpp@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/regexpp/-/regexpp-3.0.0.tgz#dd63982ee3300e67b41c1956f850aa680d9d330e" + integrity sha512-Z+hNr7RAVWxznLPuA7DIh8UNX1j9CDrUQxskw9IrBE1Dxue2lyXT+shqEIeLUjrokxIP8CMy1WkjgG3rTsd5/g== + regexpu-core@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240" @@ -5871,24 +5436,7 @@ regjsparser@^0.1.4: dependencies: jsesc "~0.5.0" -remove-bom-buffer@^3.0.0: - version "3.0.0" - resolved "http://52.167.60.66:8081/repository/npm-all/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz#c2bf1e377520d324f623892e33c10cac2c252b53" - integrity sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ== - dependencies: - is-buffer "^1.1.5" - is-utf8 "^0.2.1" - -remove-bom-stream@^1.2.0: - version "1.2.0" - resolved "http://52.167.60.66:8081/repository/npm-all/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz#05f1a593f16e42e1fb90ebf59de8e569525f9523" - integrity sha1-BfGlk/FuQuH7kOv1nejlaVJflSM= - dependencies: - remove-bom-buffer "^3.0.0" - safe-buffer "^5.1.0" - through2 "^2.0.3" - -remove-trailing-separator@^1.0.1, remove-trailing-separator@^1.1.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= @@ -5910,20 +5458,6 @@ repeating@^2.0.0: dependencies: is-finite "^1.0.0" -replace-ext@^1.0.0: - version "1.0.0" - resolved "http://52.167.60.66:8081/repository/npm-all/replace-ext/-/replace-ext-1.0.0.tgz#de63128373fcbf7c3ccfa4de5a480c45a67958eb" - integrity sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs= - -replace-homedir@^1.0.0: - version "1.0.0" - resolved "http://52.167.60.66:8081/repository/npm-all/replace-homedir/-/replace-homedir-1.0.0.tgz#e87f6d513b928dde808260c12be7fec6ff6e798c" - integrity sha1-6H9tUTuSjd6AgmDBK+f+xv9ueYw= - dependencies: - homedir-polyfill "^1.0.1" - is-absolute "^1.0.0" - remove-trailing-separator "^1.1.0" - request@^2.88.0: version "2.88.0" resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef" @@ -5998,25 +5532,25 @@ resolve-from@^4.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== -resolve-options@^1.1.0: - version "1.1.0" - resolved "http://52.167.60.66:8081/repository/npm-all/resolve-options/-/resolve-options-1.1.0.tgz#32bb9e39c06d67338dc9378c0d6d6074566ad131" - integrity sha1-MrueOcBtZzONyTeMDW1gdFZq0TE= - dependencies: - value-or-function "^3.0.0" - 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.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.10.1, resolve@^1.11.0, resolve@^1.3.2, resolve@^1.4.0, resolve@^1.5.0, resolve@^1.6.0, resolve@^1.8.1: +resolve@^1.10.0, resolve@^1.10.1, resolve@^1.11.0, resolve@^1.3.2, resolve@^1.5.0, resolve@^1.6.0, resolve@^1.8.1: version "1.11.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.11.0.tgz#4014870ba296176b86343d50b60f3b50609ce232" integrity sha512-WL2pBDjqT6pGUNSUzMw00o4T7If+z4H2x3Gz893WoUQ5KW8Vr9txp00ykiP16VBaZF5+j/OcXJHZ9+PCvdiDKw== dependencies: path-parse "^1.0.6" +resolve@^1.12.0: + version "1.14.2" + resolved "https://registry.npmjs.org/resolve/-/resolve-1.14.2.tgz#dbf31d0fa98b1f29aa5169783b9c290cb865fea2" + integrity sha512-EjlOBLBO1kxsUxsKjLt7TAECyKW6fOh1VRkykQkKGzcBbjjPIxBqGh0jf7GJ3k/f5mxMqW3htMD3WdTUVtW8HQ== + dependencies: + path-parse "^1.0.6" + restore-cursor@^2.0.0: version "2.0.0" resolved "http://52.167.60.66:8081/repository/npm-all/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" @@ -6072,13 +5606,20 @@ rxjs@^5.5.2: dependencies: symbol-observable "1.0.1" -rxjs@^6.4.0, rxjs@^6.5.2: +rxjs@^6.4.0: version "6.5.2" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.2.tgz#2e35ce815cd46d84d02a209fb4e5921e051dbec7" integrity sha512-HUb7j3kvb7p7eCUHE3FqjoDsC1xfZQ4AHFWfTKSpZ+sAhhz5X1WX0ZuUqWbzB2QhSLp3DoLUG+hMdEDKqWo2Zg== dependencies: tslib "^1.9.0" +rxjs@^6.5.4: + version "6.5.4" + resolved "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz#e0777fe0d184cec7872df147f303572d414e211c" + integrity sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q== + dependencies: + tslib "^1.9.0" + safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" @@ -6101,17 +5642,17 @@ sax@^1.2.4: resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== -secp256k1@^3.7.0: - version "3.7.1" - resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-3.7.1.tgz#12e473e0e9a7c2f2d4d4818e722ad0e14cc1e2f1" - integrity sha512-1cf8sbnRreXrQFdH6qsg2H71Xw91fCCS9Yp021GnUNJzWJS/py96fS4lHbnTnouLp08Xj6jBoBB6V78Tdbdu5g== +secp256k1@^3.8.0: + version "3.8.0" + resolved "https://registry.npmjs.org/secp256k1/-/secp256k1-3.8.0.tgz#28f59f4b01dbee9575f56a47034b7d2e3b3b352d" + integrity sha512-k5ke5avRZbtl9Tqx/SA7CbY3NF6Ro+Sj9cZxezFzuBlLDmyqPiL8hJJ+EmzD8Ig4LUDByHJ3/iPOVoRixs/hmw== dependencies: bindings "^1.5.0" bip66 "^1.1.5" bn.js "^4.11.8" create-hash "^1.2.0" drbg.js "^1.0.1" - elliptic "^6.4.1" + elliptic "^6.5.2" nan "^2.14.0" safe-buffer "^5.1.2" @@ -6122,13 +5663,6 @@ semver-diff@^2.0.0: dependencies: semver "^5.0.3" -semver-greatest-satisfied-range@^1.1.0: - version "1.1.0" - resolved "http://52.167.60.66:8081/repository/npm-all/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-1.1.0.tgz#13e8c2658ab9691cb0cd71093240280d36f77a5b" - integrity sha1-E+jCZYq5aRywzXEJMkAoDTb3els= - dependencies: - sver-compat "^1.5.0" - "semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.7.0: version "5.7.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b" @@ -6294,11 +5828,6 @@ source-map@^0.6.0: resolved "http://52.167.60.66:8081/repository/npm-all/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== -sparkles@^1.0.0: - version "1.0.1" - resolved "http://52.167.60.66:8081/repository/npm-all/sparkles/-/sparkles-1.0.1.tgz#008db65edce6c50eec0c5e228e1945061dd0437c" - integrity sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw== - spdx-correct@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4" @@ -6357,11 +5886,6 @@ sshpk@^1.7.0: safer-buffer "^2.0.2" tweetnacl "~0.14.0" -stack-trace@0.0.10: - version "0.0.10" - resolved "http://52.167.60.66:8081/repository/npm-all/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0" - integrity sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA= - standard-engine@^12.0.0: version "12.0.0" resolved "http://52.167.60.66:8081/repository/npm-all/standard-engine/-/standard-engine-12.0.0.tgz#1643dceba96ca9c04c535a1fb28d79bfb21b3572" @@ -6420,6 +5944,21 @@ standard@14.0.0: funding "^1.0.0" standard-engine "^12.0.0" +standard@14.3.1: + version "14.3.1" + resolved "https://registry.npmjs.org/standard/-/standard-14.3.1.tgz#f6a5d9244fbb6b76d0c2dbcc1048a03c863038b6" + integrity sha512-TUQwU7znlZLfgKH1Zwn/D84FitWZkUTfbxSiz/vFx+4c9GV+clSfG/qLiLZOlcdyzhw3oF5/pZydNjbNDfHPEw== + dependencies: + eslint "~6.4.0" + eslint-config-standard "14.1.0" + eslint-config-standard-jsx "8.1.0" + eslint-plugin-import "~2.18.0" + eslint-plugin-node "~10.0.0" + eslint-plugin-promise "~4.2.1" + eslint-plugin-react "~7.14.2" + eslint-plugin-standard "~4.0.0" + standard-engine "^12.0.0" + static-extend@^0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" @@ -6428,17 +5967,7 @@ static-extend@^0.1.1: define-property "^0.2.5" object-copy "^0.1.0" -stream-exhaust@^1.0.1: - version "1.0.2" - resolved "http://52.167.60.66:8081/repository/npm-all/stream-exhaust/-/stream-exhaust-1.0.2.tgz#acdac8da59ef2bc1e17a2c0ccf6c320d120e555d" - integrity sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw== - -stream-shift@^1.0.0: - version "1.0.0" - resolved "http://52.167.60.66:8081/repository/npm-all/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952" - integrity sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI= - -string-width@^1.0.1, string-width@^1.0.2: +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= @@ -6508,13 +6037,6 @@ strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: dependencies: ansi-regex "^4.1.0" -strip-bom@^2.0.0: - version "2.0.0" - resolved "http://52.167.60.66:8081/repository/npm-all/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" @@ -6569,13 +6091,12 @@ supports-color@^5.2.0, supports-color@^5.3.0: dependencies: has-flag "^3.0.0" -sver-compat@^1.5.0: - version "1.5.0" - resolved "http://52.167.60.66:8081/repository/npm-all/sver-compat/-/sver-compat-1.5.0.tgz#3cf87dfeb4d07b4a3f14827bc186b3fd0c645cd8" - integrity sha1-PPh9/rTQe0o/FIJ7wYaz/QxkXNg= +supports-color@^7.1.0: + version "7.1.0" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz#68e32591df73e25ad1c4b49108a2ec507962bfd1" + integrity sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g== dependencies: - es6-iterator "^2.0.1" - es6-symbol "^3.1.1" + has-flag "^4.0.0" symbol-observable@1.0.1: version "1.0.1" @@ -6639,32 +6160,11 @@ text-table@^0.2.0: resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= -through2-filter@^3.0.0: - version "3.0.0" - resolved "http://52.167.60.66:8081/repository/npm-all/through2-filter/-/through2-filter-3.0.0.tgz#700e786df2367c2c88cd8aa5be4cf9c1e7831254" - integrity sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA== - dependencies: - through2 "~2.0.0" - xtend "~4.0.0" - -through2@^2.0.0, through2@^2.0.3, through2@~2.0.0: - version "2.0.5" - resolved "http://52.167.60.66:8081/repository/npm-all/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" - integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== - dependencies: - readable-stream "~2.3.6" - xtend "~4.0.1" - 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= -time-stamp@^1.0.0: - version "1.1.0" - resolved "http://52.167.60.66:8081/repository/npm-all/time-stamp/-/time-stamp-1.1.0.tgz#764a5a11af50561921b133f3b44e618687e0f5c3" - integrity sha1-dkpaEa9QVhkhsTPztE5hhofg9cM= - timed-out@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" @@ -6690,14 +6190,6 @@ tmp@^0.0.33: dependencies: os-tmpdir "~1.0.2" -to-absolute-glob@^2.0.0: - version "2.0.2" - resolved "http://52.167.60.66:8081/repository/npm-all/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz#1865f43d9e74b0822db9f145b78cff7d0f7c849b" - integrity sha1-GGX0PZ50sIItufFFt4z/fQ98hJs= - dependencies: - is-absolute "^1.0.0" - is-negated-glob "^1.0.0" - 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" @@ -6731,13 +6223,6 @@ to-regex@^3.0.1, to-regex@^3.0.2: regex-not "^1.0.2" safe-regex "^1.1.0" -to-through@^2.0.0: - version "2.0.0" - resolved "http://52.167.60.66:8081/repository/npm-all/to-through/-/to-through-2.0.0.tgz#fc92adaba072647bc0b67d6b03664aa195093af6" - integrity sha1-/JKtq6ByZHvAtn1rA2ZKoZUJOvY= - dependencies: - through2 "^2.0.3" - touch@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/touch/-/touch-3.1.0.tgz#fe365f5f75ec9ed4e56825e0bb76d24ab74af83b" @@ -6819,6 +6304,16 @@ type-fest@^0.5.2: resolved "http://52.167.60.66:8081/repository/npm-all/type-fest/-/type-fest-0.5.2.tgz#d6ef42a0356c6cd45f49485c3b6281fc148e48a2" integrity sha512-DWkS49EQKVX//Tbupb9TFa19c7+MK1XmzkrZUR8TAktmE/DizXoaoJV6TZ/tSIPXipqNiRI6CyAe7x69Jb6RSw== +type@^1.0.1: + version "1.2.0" + resolved "https://registry.npmjs.org/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0" + integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== + +type@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/type/-/type-2.0.0.tgz#5f16ff6ef2eb44f260494dae271033b29c09a9c3" + integrity sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow== + typedarray-to-buffer@^3.1.5: version "3.1.5" resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" @@ -6841,11 +6336,6 @@ uc.micro@^1.0.1, uc.micro@^1.0.5: resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.6.tgz#9c411a802a409a91fc6cf74081baba34b24499ac" integrity sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA== -unc-path-regex@^0.1.2: - version "0.1.2" - resolved "http://52.167.60.66:8081/repository/npm-all/unc-path-regex/-/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa" - integrity sha1-5z3T17DXxe2G+6xrCufYxqadUPo= - undefsafe@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/undefsafe/-/undefsafe-2.0.2.tgz#225f6b9e0337663e0d8e7cfd686fc2836ccace76" @@ -6863,26 +6353,6 @@ underscore@~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== -undertaker-registry@^1.0.0: - version "1.0.1" - resolved "http://52.167.60.66:8081/repository/npm-all/undertaker-registry/-/undertaker-registry-1.0.1.tgz#5e4bda308e4a8a2ae584f9b9a4359a499825cc50" - integrity sha1-XkvaMI5KiirlhPm5pDWaSZglzFA= - -undertaker@^1.2.1: - version "1.2.1" - resolved "http://52.167.60.66:8081/repository/npm-all/undertaker/-/undertaker-1.2.1.tgz#701662ff8ce358715324dfd492a4f036055dfe4b" - integrity sha512-71WxIzDkgYk9ZS+spIB8iZXchFhAdEo2YU8xYqBYJ39DIUIqziK78ftm26eecoIY49X0J2MLhG4hr18Yp6/CMA== - dependencies: - arr-flatten "^1.0.1" - arr-map "^2.0.0" - bach "^1.0.0" - collection-map "^1.0.0" - es6-weak-map "^2.0.1" - last-run "^1.1.0" - object.defaults "^1.0.0" - object.reduce "^1.0.0" - undertaker-registry "^1.0.0" - unhomoglyph@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/unhomoglyph/-/unhomoglyph-1.0.2.tgz#d69e5f5a6a1c6b211941a0889b81eba86595c253" @@ -6903,14 +6373,6 @@ uniq@^1.0.1: resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= -unique-stream@^2.0.2: - version "2.3.1" - resolved "http://52.167.60.66:8081/repository/npm-all/unique-stream/-/unique-stream-2.3.1.tgz#c65d110e9a4adf9a6c5948b28053d9a8d04cbeac" - integrity sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A== - dependencies: - json-stable-stringify-without-jsonify "^1.0.1" - through2-filter "^3.0.0" - unique-string@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-1.0.0.tgz#9e1057cca851abb93398f8b33ae187b99caec11a" @@ -7008,13 +6470,6 @@ v8flags@^2.1.1: dependencies: user-home "^1.1.1" -v8flags@^3.0.1: - version "3.1.3" - resolved "http://52.167.60.66:8081/repository/npm-all/v8flags/-/v8flags-3.1.3.tgz#fc9dc23521ca20c5433f81cc4eb9b3033bb105d8" - integrity sha512-amh9CCg3ZxkzQ48Mhcb8iX7xpAfYJgePHxWMQCBWECpOSqJUXgY26ncA61UTV0BkPqfhcy6mzwCIoP4ygxpW8w== - dependencies: - homedir-polyfill "^1.0.1" - 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" @@ -7023,11 +6478,6 @@ validate-npm-package-license@^3.0.1: spdx-correct "^3.0.0" spdx-expression-parse "^3.0.0" -value-or-function@^3.0.0: - version "3.0.0" - resolved "http://52.167.60.66:8081/repository/npm-all/value-or-function/-/value-or-function-3.0.0.tgz#1c243a50b595c1be54a754bfece8563b9ff8d813" - integrity sha1-HCQ6ULWVwb5Up1S/7OhWO5/42BM= - verror@1.10.0: version "1.10.0" resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" @@ -7037,62 +6487,14 @@ verror@1.10.0: core-util-is "1.0.2" extsprintf "^1.2.0" -vinyl-fs@^3.0.0: - version "3.0.3" - resolved "http://52.167.60.66:8081/repository/npm-all/vinyl-fs/-/vinyl-fs-3.0.3.tgz#c85849405f67428feabbbd5c5dbdd64f47d31bc7" - integrity sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng== - dependencies: - fs-mkdirp-stream "^1.0.0" - glob-stream "^6.1.0" - graceful-fs "^4.0.0" - is-valid-glob "^1.0.0" - lazystream "^1.0.0" - lead "^1.0.0" - object.assign "^4.0.4" - pumpify "^1.3.5" - readable-stream "^2.3.3" - remove-bom-buffer "^3.0.0" - remove-bom-stream "^1.2.0" - resolve-options "^1.1.0" - through2 "^2.0.0" - to-through "^2.0.0" - value-or-function "^3.0.0" - vinyl "^2.0.0" - vinyl-sourcemap "^1.1.0" - -vinyl-sourcemap@^1.1.0: - version "1.1.0" - resolved "http://52.167.60.66:8081/repository/npm-all/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz#92a800593a38703a8cdb11d8b300ad4be63b3e16" - integrity sha1-kqgAWTo4cDqM2xHYswCtS+Y7PhY= - dependencies: - append-buffer "^1.0.2" - convert-source-map "^1.5.0" - graceful-fs "^4.1.6" - normalize-path "^2.1.1" - now-and-later "^2.0.0" - remove-bom-buffer "^3.0.0" - vinyl "^2.0.0" - -vinyl@^2.0.0: - version "2.2.0" - resolved "http://52.167.60.66:8081/repository/npm-all/vinyl/-/vinyl-2.2.0.tgz#d85b07da96e458d25b2ffe19fece9f2caa13ed86" - integrity sha512-MBH+yP0kC/GQ5GwBqrTPTzEfiiLjta7hTtvQtbxBgTeSXsmKQRQecjibMbxIXzVT3Y9KJK+drOz1/k+vsu8Nkg== - dependencies: - clone "^2.1.1" - clone-buffer "^1.0.0" - clone-stats "^1.0.0" - cloneable-readable "^1.0.0" - remove-trailing-separator "^1.0.1" - replace-ext "^1.0.0" - -websocket@^1.0.29: - version "1.0.29" - resolved "http://52.167.60.66:8081/repository/npm-all/websocket/-/websocket-1.0.29.tgz#3f83e49d3279657c58b02a22d90749c806101b98" - integrity sha512-WhU8jKXC8sTh6ocLSqpZRlOKMNYGwUvjA5+XcIgIk/G3JCaDfkZUr0zA19sVSxJ0TEvm0i5IBzr54RZC4vzW7g== +websocket@^1.0.31: + version "1.0.31" + resolved "https://registry.npmjs.org/websocket/-/websocket-1.0.31.tgz#e5d0f16c3340ed87670e489ecae6144c79358730" + integrity sha512-VAouplvGKPiKFDTeCCO65vYHsyay8DqoBSlzIO3fayrfOgU94lQN5a1uWVnFrMLceTJw/+fQXR5PGbUVRaHshQ== dependencies: debug "^2.2.0" - gulp "^4.0.2" - nan "^2.11.0" + es5-ext "^0.10.50" + nan "^2.14.0" typedarray-to-buffer "^3.1.5" yaeti "^0.0.6" @@ -7101,11 +6503,6 @@ whatwg-fetch@>=0.10.0: resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz#fc804e458cc460009b1a2b966bc8817d2578aefb" integrity sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q== -which-module@^1.0.0: - version "1.0.0" - resolved "http://52.167.60.66:8081/repository/npm-all/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" - integrity sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8= - which-module@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" @@ -7197,7 +6594,7 @@ xmlcreate@^2.0.0: resolved "https://registry.yarnpkg.com/xmlcreate/-/xmlcreate-2.0.1.tgz#2ec38bd7b708d213fd1a90e2431c4af9c09f6a52" integrity sha512-MjGsXhKG8YjTKrDCXseFo3ClbMGvUD4en29H2Cev1dv4P/chlpw6KdYmlCWDkhosBVKRDjM836+3e3pm1cBNJA== -xtend@^4.0.1, xtend@~4.0.0, xtend@~4.0.1: +xtend@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" integrity sha1-pcbVMr5lbiPbgg77lDofBJmNY68= @@ -7209,11 +6606,6 @@ xxhashjs@^0.2.2: dependencies: cuint "^0.2.2" -y18n@^3.2.1: - version "3.2.1" - resolved "http://52.167.60.66:8081/repository/npm-all/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" - integrity sha1-bRX7qITAhnnA136I53WegR4H+kE= - "y18n@^3.2.1 || ^4.0.0", y18n@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" @@ -7250,7 +6642,7 @@ yargs-parser@^11.1.1: camelcase "^5.0.0" decamelize "^1.2.0" -yargs-parser@^13.0.0, yargs-parser@^13.1.1: +yargs-parser@^13.0.0: version "13.1.1" resolved "http://52.167.60.66:8081/repository/npm-all/yargs-parser/-/yargs-parser-13.1.1.tgz#d26058532aa06d365fe091f6a1fc06b2f7e5eca0" integrity sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ== @@ -7258,12 +6650,13 @@ yargs-parser@^13.0.0, yargs-parser@^13.1.1: camelcase "^5.0.0" decamelize "^1.2.0" -yargs-parser@^5.0.0: - version "5.0.0" - resolved "http://52.167.60.66:8081/repository/npm-all/yargs-parser/-/yargs-parser-5.0.0.tgz#275ecf0d7ffe05c77e64e7c86e4cd94bf0e1228a" - integrity sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo= +yargs-parser@^15.0.0: + version "15.0.0" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-15.0.0.tgz#cdd7a97490ec836195f59f3f4dbe5ea9e8f75f08" + integrity sha512-xLTUnCMc4JhxrPEPUYD5IBR1mWCK/aT6+RJ/K29JY2y1vD+FhtgKK0AXRWvI262q3QSffAQuTouFIKUuHX89wQ== dependencies: - camelcase "^3.0.0" + camelcase "^5.0.0" + decamelize "^1.2.0" yargs-unparser@1.5.0: version "1.5.0" @@ -7291,12 +6684,13 @@ yargs@13.2.2: y18n "^4.0.0" yargs-parser "^13.0.0" -yargs@13.3.0: - version "13.3.0" - resolved "http://52.167.60.66:8081/repository/npm-all/yargs/-/yargs-13.3.0.tgz#4c657a55e07e5f2cf947f8a366567c04a0dedc83" - integrity sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA== +yargs@14.2.0: + version "14.2.0" + resolved "https://registry.npmjs.org/yargs/-/yargs-14.2.0.tgz#f116a9242c4ed8668790b40759b4906c276e76c3" + integrity sha512-/is78VKbKs70bVZH7w4YaZea6xcJWOAwkhbR0CFuZBmYtfTYF0xjGJF43AYd8g2Uii1yJwmS5GR2vBmrc32sbg== dependencies: cliui "^5.0.0" + decamelize "^1.2.0" find-up "^3.0.0" get-caller-file "^2.0.1" require-directory "^2.1.1" @@ -7305,7 +6699,7 @@ yargs@13.3.0: string-width "^3.0.0" which-module "^2.0.0" y18n "^4.0.0" - yargs-parser "^13.1.1" + yargs-parser "^15.0.0" yargs@^12.0.5: version "12.0.5" @@ -7325,25 +6719,6 @@ yargs@^12.0.5: y18n "^3.2.1 || ^4.0.0" yargs-parser "^11.1.1" -yargs@^7.1.0: - version "7.1.0" - resolved "http://52.167.60.66:8081/repository/npm-all/yargs/-/yargs-7.1.0.tgz#6ba318eb16961727f5d284f8ea003e8d6154d0c8" - integrity sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg= - dependencies: - camelcase "^3.0.0" - cliui "^3.2.0" - decamelize "^1.1.1" - get-caller-file "^1.0.1" - os-locale "^1.4.0" - read-pkg-up "^1.0.1" - require-directory "^2.1.1" - require-main-filename "^1.0.1" - set-blocking "^2.0.0" - string-width "^1.0.2" - which-module "^1.0.0" - y18n "^3.2.1" - yargs-parser "^5.0.0" - yarn@^1.16.0: version "1.16.0" resolved "https://registry.yarnpkg.com/yarn/-/yarn-1.16.0.tgz#5701b58ac555ff91f7b889b7d791b3dc86f8f999" -- GitLab From af78c7df6c41308bf2a1f8161cc4abe37e419185 Mon Sep 17 00:00:00 2001 From: Will Date: Wed, 22 Jan 2020 15:11:11 +0100 Subject: [PATCH 14/86] Fix to get plugins to load --- .babelrc | 10 ++- .nvmrc | 2 +- .vscode/settings.json | 8 +- package.json | 6 ++ packages/polkabot/.nvmrc | 1 + packages/polkabot/src/ConfigSingleton.ts | 1 - packages/polkabot/src/index.ts | 69 ++++++++--------- packages/polkabot/src/lib/plugin-loader.ts | 76 +++++++++++++------ packages/polkabot/src/lib/plugin-scanner.ts | 35 ++++++++- .../polkabot/src/plugins/Plugin.interface.ts | 10 ++- packages/polkabot/src/polkabot.ts | 4 +- packages/polkabot/src/types.ts | 22 ++++++ yarn.lock | 62 +++++++++++---- 13 files changed, 221 insertions(+), 85 deletions(-) create mode 100644 packages/polkabot/.nvmrc diff --git a/.babelrc b/.babelrc index 0339d5d..d640eaf 100644 --- a/.babelrc +++ b/.babelrc @@ -1,3 +1,11 @@ { - "presets": ["env"] + "presets": ["env"], + "plugins": [ + [ + "@babel/plugin-transform-runtime", + { + "regenerator": true + } + ] + ] } diff --git a/.nvmrc b/.nvmrc index f599e28..b4de394 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -10 +11 diff --git a/.vscode/settings.json b/.vscode/settings.json index fe441cd..0a1108c 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -5,6 +5,12 @@ }, "cSpell.words": [ "BOTMASTER", - "POLKABOT" + "Blocthday", + "Datastore", + "POLKABOT", + "bot's", + "minimongo", + "msgsype", + "upsert" ] } \ No newline at end of file diff --git a/package.json b/package.json index ca78fad..3670893 100644 --- a/package.json +++ b/package.json @@ -14,5 +14,11 @@ "test": "echo \"skipping tests\"", "start": "cd packages/polkabot && yarn start", "build": "cd packages/polkabot && yarn build" + }, + "devDependencies": { + "@babel/plugin-transform-runtime": "^7.8.3" + }, + "dependencies": { + "@babel/runtime": "^7.8.3" } } diff --git a/packages/polkabot/.nvmrc b/packages/polkabot/.nvmrc new file mode 100644 index 0000000..b4de394 --- /dev/null +++ b/packages/polkabot/.nvmrc @@ -0,0 +1 @@ +11 diff --git a/packages/polkabot/src/ConfigSingleton.ts b/packages/polkabot/src/ConfigSingleton.ts index 2bfc82e..3c27706 100644 --- a/packages/polkabot/src/ConfigSingleton.ts +++ b/packages/polkabot/src/ConfigSingleton.ts @@ -68,7 +68,6 @@ export class ConfigSingleton { } }; - console.log(ConfigSingleton.instance) assert((ConfigSingleton.instance.polkadot.nodeName || '').length > 0, "The extracted config does not look OK") } diff --git a/packages/polkabot/src/index.ts b/packages/polkabot/src/index.ts index 0326b72..d8dd281 100644 --- a/packages/polkabot/src/index.ts +++ b/packages/polkabot/src/index.ts @@ -7,12 +7,13 @@ import Datastore from "nedb"; import pkg from "../package.json"; import PluginScanner from "./lib/plugin-scanner"; -import PluginLoader from "./lib/plugin-loader"; +// import PluginLoader from "./lib/plugin-loader"; // TODO wk bring that back // import * as path from 'path' import sdk from "matrix-js-sdk"; import { ConfigSingleton } from "./ConfigSingleton"; import { assert } from "@polkadot/util"; -import { IPolkabotConfig } from "./types"; +import { IPolkabotConfig, PluginContext } from "./types"; +import PluginLoader from "./lib/plugin-loader"; //@ts-ignore global.Olm = Olm; @@ -34,40 +35,43 @@ export default class Polkabot { this.db = new Datastore({ filename: "polkabot.db" }); } - private loadPlugins(): void { + private async loadPlugins() { console.log("Polkabot - Loading plugins:"); const pluginScanner = new PluginScanner(pkg.name + "-plugin"); - - pluginScanner.scan( - (err, module) => { - if (err) console.error(err); - const pluginLoader = new PluginLoader(module); - pluginLoader.load(Plugin => { - const plugin = new Plugin({ - config: this.config, - pkg: pkg, - db: this.db, - matrix: this.matrix, - polkadot: this.polkadot - }); - plugin.start(); - }); - }, - (err, all) => { - if (err) console.error(err); - console.log(); - if (all.length === 0) { - console.log("Polkabot - Polkabot does not do much without plugin, make sure you install at least one"); - } - } - ); + var plugins = await pluginScanner.scan(); // TODO: switch back to a const + + // TODO remove that, here we ignore some plugins on purpose + plugins = plugins.filter(p => p.name.indexOf("day") > 0); + console.log(`Found ${plugins.length} plugins`); + console.log(`${JSON.stringify(plugins, null, 2)}`); + + // pluginScanner.scan( + // (err, module) => { + // if (err) console.error("Error in pluginScanner.scan():", err); + // console.log('Loading plugin:', module) + plugins.map(plugin => { + // const pluginLoader = new PluginLoader(plugin); + // wish is to write + const context: PluginContext = { + config: this.config, + pkg, + db: this.db, + matrix: this.matrix, + polkadot: this.polkadot + }; + + PluginLoader.load(plugin, context).then(p => { + // console.log(`Starting plugin ${p.name} v${p.version}`); + p.start(); + }); + }); } private start(_syncState): void { // Send message to the room notifying users of the bot's state - // we dont want to bother users, the following should be removed - // todo: if the state is not PREPARED, we could log and error or tell the bot + // TODO we don't want to bother users, the following should be removed + // TODO: if the state is not PREPARED, we could log and error or tell the bot // owner as private message. // const messageBody = `Polkadot - sync state with Matrix client is: ${syncState}.` // const sendEventArgs = { @@ -75,7 +79,7 @@ export default class Polkabot { // eventType: 'm.room.message', // content: { // 'body': messageBody, - // 'msgtype': 'm.text' + // 'msgsype': 'm.text' // }, // txnId: '' // } @@ -110,17 +114,14 @@ export default class Polkabot { this.config = config; - console.log(`Polkabot - config: ${JSON.stringify(this.config, null, 2)}`); + // console.log(`Polkabot - config: ${JSON.stringify(this.config, null, 2)}`); console.log(`Polkabot - Connecting to host: ${this.config.polkadot.host}`); console.log(`Polkabot - Running with bot user id: ${this.config.matrix.botUserId}`); const provider = new WsProvider(this.config.polkadot.host); // Create the API and wait until ready - console.log("Create prov"); this.polkadot = await ApiPromise.create({ provider }); - console.log("get chain data"); - // Retrieve the chain & node information information via rpc calls const [chain, nodeName, nodeVersion] = await Promise.all([ this.polkadot.rpc.system.chain(), diff --git a/packages/polkabot/src/lib/plugin-loader.ts b/packages/polkabot/src/lib/plugin-loader.ts index cef05a5..8aa3ef6 100644 --- a/packages/polkabot/src/lib/plugin-loader.ts +++ b/packages/polkabot/src/lib/plugin-loader.ts @@ -1,39 +1,65 @@ /* eslint-disable @typescript-eslint/no-var-requires */ -import * as path from 'path' -import * as fs from 'fs' -import IPlugin from '../plugins/Plugin.interface'; +import * as path from "path"; +import * as fs from "fs"; +// import IPlugin from "../plugins/Plugin.interface"; +import { PluginFile, PluginContext, PolkabotPlugin } from "../types"; +// import Blocthday from "polkabot-plugin-blocthday" -// interface Author { -// name: string; -// } +interface Author { + name: string | { name: string }; +} +// TODO move that away! interface PackageJson { name: string; version: string; - author: string | { name: string } ; + author: Author; } export default class PluginLoader { - private plugin: IPlugin; + // private plugin: IPlugin; - public constructor (plugin: IPlugin) { - this.plugin = plugin - } + // public constructor(plugin: IPlugin) { + // return new Promise (resolve => { + // //this.plugin = plugin; + // resolve(plugin) + // }) + // } - public load (cb: Function): void { - // console.log('loading ', this.plugin.path) - fs.realpath(this.plugin.path, (err, pluginPath) => { - if (err) console.log('ERR:', err) - // console.log('Resolved ' + this.plugin.path + ' to ' + pluginPath) + public static async load(f: PluginFile, context: PluginContext): Promise { + console.log("PluginLoader - Load(...)"); + return new Promise((resolve, reject) => { + // console.log('loading ', this.plugin.path) + fs.realpath(f.path, async (err, pluginPath) => { + if (err) console.log("ERR:", err); + // console.log('Resolved ' + this.plugin.path + ' to ' + pluginPath) - - const plugin: IPlugin = require(pluginPath) - const pkg: PackageJson = require(path.join(pluginPath, 'package.json')) - - //@ts-ignore - console.log(` - ${pkg.name} version ${pkg.version} from ${pkg.author.name || pkg.author}`) - // console.log(` - path: ${this.plugin.path}`) - cb(plugin) - }) + // console.log("Instantiating plugin", pluginPath); + // pluginPath = pluginPath + '/build' + // const myModule = require(pluginPath); + // console.log(myModule); + + // console.log('bd test', Blocthday.name) + try { + const myModule = (await import(pluginPath)).default; + // const myModule = await import("./polkabot-plugin-blocthday"); + // // const myModule = {} + // console.log(myModule); + + const plugin: PolkabotPlugin = new myModule(context); + // console.log(plugin); + + const pkg: PackageJson = require(path.join(pluginPath, "package.json")); // TODO, we should attach the info to the plugin itself + + // //@ts-ignore + console.log(` - ${pkg.name} version ${pkg.version} from ${pkg.author.name || pkg.author}`); + // // console.log(` - path: ${this.plugin.path}`) + resolve(plugin); + // reject('make it work') + } catch (e) { + reject(e) + } + }); + }); } } diff --git a/packages/polkabot/src/lib/plugin-scanner.ts b/packages/polkabot/src/lib/plugin-scanner.ts index cbe15ef..22223e0 100644 --- a/packages/polkabot/src/lib/plugin-scanner.ts +++ b/packages/polkabot/src/lib/plugin-scanner.ts @@ -1,6 +1,7 @@ import * as path from "path"; import * as fs from "fs"; import findNodeModules from "find-node-modules"; +import { PluginFile } from "../types"; export default class PluginScanner { private name: string; @@ -9,7 +10,7 @@ export default class PluginScanner { this.name = name; } - public scan(cb, done): void { + public scanold(cb, done): void { // console.log('dbg', path.dirname(process.argv0), __filename, __dirname) const scriptLocation = path.join(path.dirname(process.argv[1]), ".."); console.log("script loc", scriptLocation); @@ -29,7 +30,7 @@ export default class PluginScanner { items .filter(i => i.indexOf(this.name) === 0) .map(plugin => { - console.log(plugin); + console.log("Plugin detected:", plugin); const mod = { name: plugin, path: path.join(p, plugin) @@ -41,4 +42,34 @@ export default class PluginScanner { }); }); } + + public async scan() { + return new Promise(resolve => { + // console.log('dbg', path.dirname(process.argv0), __filename, __dirname) + const scriptLocation = path.join(path.dirname(process.argv[1]), ".."); + console.log("script loc", scriptLocation); + const searchPaths: string[] = findNodeModules({ cwd: scriptLocation, relative: false }); + // path.join(scriptLocation, "../lib/node_modules"), + // path.join(__dirname, '../../../node_modules') + + console.log("PluginScanner scanning searchPaths for Polkabot plugins: ", searchPaths); + const modules = []; + + searchPaths.map(p => { + // const p = searchPaths[0] + fs.readdirSync(p) + .filter(f => f.indexOf(this.name) === 0) + .map(plugin => { + // console.log('Plugin detected:', plugin); + const mod = { + name: plugin, + path: path.join(p, plugin) + }; + modules.push(mod); + }); + }); + + resolve(modules); + }); + } } diff --git a/packages/polkabot/src/plugins/Plugin.interface.ts b/packages/polkabot/src/plugins/Plugin.interface.ts index 804075d..8a64383 100644 --- a/packages/polkabot/src/plugins/Plugin.interface.ts +++ b/packages/polkabot/src/plugins/Plugin.interface.ts @@ -1,4 +1,6 @@ -export default interface IPlugin { - name: string - path: string -} +// export default interface IPlugin { +// name: string +// path: string +// } + +// TODO: get the ifaces from types.ts \ No newline at end of file diff --git a/packages/polkabot/src/polkabot.ts b/packages/polkabot/src/polkabot.ts index ac44adc..3e13b49 100755 --- a/packages/polkabot/src/polkabot.ts +++ b/packages/polkabot/src/polkabot.ts @@ -1,11 +1,13 @@ #!/usr/bin/env node import Polkabot from './index' +// TODO: swap index.ts and polkabot.ts + const argv = require('yargs') .usage('Usage: $0 [options]') .help('h') .alias('h', 'help') - .epilog('chevdor-(C) 2018-2019') + .epilog('chevdor-(C) 2018-2020') .argv const polkabot = new Polkabot(argv) diff --git a/packages/polkabot/src/types.ts b/packages/polkabot/src/types.ts index 0c34346..4b0896d 100644 --- a/packages/polkabot/src/types.ts +++ b/packages/polkabot/src/types.ts @@ -26,3 +26,25 @@ export interface IPolkabotConfig { loginUserPassword: string; }; } + + + +export interface PluginFile { + name: string; + path: string; +} + + +export interface PolkabotPlugin extends PluginFile { + version: string; + author: string; + start(): void; +} + +export interface PluginContext { + config; + pkg; + db; + matrix; + polkadot; +} diff --git a/yarn.lock b/yarn.lock index a991e3f..eab2763 100644 --- a/yarn.lock +++ b/yarn.lock @@ -55,6 +55,18 @@ dependencies: "@babel/types" "^7.0.0" +"@babel/helper-module-imports@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.8.3.tgz#7fe39589b39c016331b6b8c3f441e8f0b1419498" + integrity sha512-R0Bx3jippsbAEtzkpZ/6FIiuzOURPcMjHp+Z6xPe6DtApDJx+w7UYyOLanZqO8+wKR9G10s/FmHXvxaMd9s6Kg== + dependencies: + "@babel/types" "^7.8.3" + +"@babel/helper-plugin-utils@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz#9ea293be19babc0f52ff8ca88b34c3611b208670" + integrity sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ== + "@babel/helper-split-export-declaration@^7.4.4": version "7.4.4" resolved "http://52.167.60.66:8081/repository/npm-all/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz#ff94894a340be78f53f06af038b205c49d993677" @@ -85,7 +97,25 @@ resolved "http://52.167.60.66:8081/repository/npm-all/@babel/parser/-/parser-7.5.5.tgz#02f077ac8817d3df4a832ef59de67565e71cca4b" integrity sha512-E5BN68cqR7dhKan1SfqgPGhQ178bkVKpXTPEXnFJBrEt8/DKRZlybmy+IgYLTeN7tp1R5Ccmbm2rBk17sHYU3g== -"@babel/runtime@^7.7.7": +"@babel/plugin-transform-runtime@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.8.3.tgz#c0153bc0a5375ebc1f1591cb7eea223adea9f169" + integrity sha512-/vqUt5Yh+cgPZXXjmaG9NT8aVfThKk7G4OqkVhrXqwsC5soMn/qTCxs36rZ2QFhpfTJcjw4SNDIZ4RUb8OL4jQ== + dependencies: + "@babel/helper-module-imports" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + resolve "^1.8.1" + semver "^5.5.1" + +"@babel/polyfill@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/polyfill/-/polyfill-7.8.3.tgz#2333fc2144a542a7c07da39502ceeeb3abe4debd" + integrity sha512-0QEgn2zkCzqGIkSWWAEmvxD7e00Nm9asTtQvi7HdlYvMhjy/J38V/1Y9ode0zEJeIuxAI0uftiAzqc7nVeWUGg== + dependencies: + core-js "^2.6.5" + regenerator-runtime "^0.13.2" + +"@babel/runtime@^7.7.7", "@babel/runtime@^7.8.3": version "7.8.3" resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.8.3.tgz#0811944f73a6c926bb2ad35e918dcc1bfab279f1" integrity sha512-fVHx1rzEmwB130VTkLnxR+HmxcTjGzH12LYQcFFoBwakMd3aOMD4OsRN7tGG/UOYE2ektgFrS8uACAoRk1CY0w== @@ -125,6 +155,15 @@ lodash "^4.17.13" to-fast-properties "^2.0.0" +"@babel/types@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/types/-/types-7.8.3.tgz#5a383dffa5416db1b73dedffd311ffd0788fb31c" + integrity sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg== + dependencies: + esutils "^2.0.2" + lodash "^4.17.13" + to-fast-properties "^2.0.0" + "@polkadot/api-derive@^0.100.1": version "0.100.1" resolved "https://registry.npmjs.org/@polkadot/api-derive/-/api-derive-0.100.1.tgz#dd6b449bfcf3a67495dbb3b0cfbe264c98a2f028" @@ -753,7 +792,7 @@ aws4@^1.8.0: resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f" integrity sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ== -babel-cli@6.26.0, babel-cli@^6.0.0, babel-cli@^6.26.0: +babel-cli@6.26.0, babel-cli@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-cli/-/babel-cli-6.26.0.tgz#502ab54874d7db88ad00b887a06383ce03d002f1" integrity sha1-UCq1SHTX24itALiHoGODzgPQAvE= @@ -844,18 +883,6 @@ babel-eslint@10.0.3: eslint-visitor-keys "^1.0.0" resolve "^1.12.0" -babel-eslint@^9.0.0: - version "9.0.0" - resolved "http://52.167.60.66:8081/repository/npm-all/babel-eslint/-/babel-eslint-9.0.0.tgz#7d9445f81ed9f60aff38115f838970df9f2b6220" - integrity sha512-itv1MwE3TMbY0QtNfeL7wzak1mV47Uy+n6HtSOO4Xd7rvmO+tsGQSgyOEEgo6Y2vHZKZphaoelNeSVj4vkLA1g== - dependencies: - "@babel/code-frame" "^7.0.0" - "@babel/parser" "^7.0.0" - "@babel/traverse" "^7.0.0" - "@babel/types" "^7.0.0" - eslint-scope "3.7.1" - eslint-visitor-keys "^1.0.0" - babel-generator@^6.26.0: version "6.26.1" resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.1.tgz#1844408d3b8f0d35a404ea7ac180f087a601bd90" @@ -1924,7 +1951,7 @@ copy-descriptor@^0.1.0: resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= -core-js@^2.4.0, core-js@^2.5.0: +core-js@^2.4.0, core-js@^2.5.0, core-js@^2.6.5: version "2.6.5" resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.5.tgz#44bc8d249e7fb2ff5d00e0341a7ffb94fbf67895" integrity sha512-klh/kDpwX8hryYL14M9w/xei6vrv6sE8gTHDG7/T/+SEovB/G4ejwcfE/CBzO6Edsu+OETZMZ3wcX/EjUkrl5A== @@ -5668,6 +5695,11 @@ semver-diff@^2.0.0: resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b" integrity sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA== +semver@^5.5.1: + version "5.7.1" + resolved "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + semver@^6.1.0, semver@^6.1.2, semver@^6.2.0: version "6.3.0" resolved "http://52.167.60.66:8081/repository/npm-all/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" -- GitLab From c1b718dc2fbf8ef9d7fa9916c31fde96bfa5f8cc Mon Sep 17 00:00:00 2001 From: Will Date: Thu, 23 Jan 2020 10:46:16 +0100 Subject: [PATCH 15/86] Add api and cleanup of the architecture --- packages/polkabot-api/.gitlab-ci.yml | 80 +++++++++++++++++++ packages/polkabot-api/.npmrc | 1 + packages/polkabot-api/.nvmrc | 1 + packages/polkabot-api/README.adoc | 3 + packages/polkabot-api/package.json | 36 +++++++++ packages/polkabot-api/src/plugin.interface.ts | 35 ++++++++ packages/polkabot-api/tsconfig.json | 27 +++++++ packages/polkabot/src/index.ts | 16 +++- packages/polkabot/src/lib/plugin-loader.ts | 34 +++----- packages/polkabot/src/lib/plugin-scanner.ts | 4 +- .../polkabot/src/plugins/Plugin.interface.ts | 6 -- packages/polkabot/src/types.ts | 22 ----- yarn.lock | 15 ++-- 13 files changed, 213 insertions(+), 67 deletions(-) create mode 100644 packages/polkabot-api/.gitlab-ci.yml create mode 100644 packages/polkabot-api/.npmrc create mode 100644 packages/polkabot-api/.nvmrc create mode 100644 packages/polkabot-api/README.adoc create mode 100644 packages/polkabot-api/package.json create mode 100644 packages/polkabot-api/src/plugin.interface.ts create mode 100644 packages/polkabot-api/tsconfig.json delete mode 100644 packages/polkabot/src/plugins/Plugin.interface.ts diff --git a/packages/polkabot-api/.gitlab-ci.yml b/packages/polkabot-api/.gitlab-ci.yml new file mode 100644 index 0000000..a0c2bba --- /dev/null +++ b/packages/polkabot-api/.gitlab-ci.yml @@ -0,0 +1,80 @@ +image: node:11 + +before_script: + # install ssh-agent + # - 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )' + # # run ssh-agent + # - eval $(ssh-agent -s) + # # add ssh key stored in SSH_PRIVATE_KEY variable to the agent store + # - ssh-add <(echo "$SSH_PRIVATE_KEY" | base64 -d) + # # disable host key checking (NOTE: makes you susceptible to man-in-the-middle attacks) + # # WARNING: use only in docker container, if you use it with shell you will overwrite your user's ssh config + # - mkdir -p ~/.ssh + # - echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config + - npm install -g yarn + - yarn + +stages: + - lint + # - test + - build + +# http://docs.gitlab.com/ce/ci/yaml/README.html#cache +cache: + paths: + - node_modules/ + +lint: + stage: lint + script: + - yarn lint + +# Supported node versions can be found here: +# https://github.com/nodejs/LTS#lts_schedule +# test:node:7: +# image: node:7 +# script: +# - yarn build +# - npm test +# only: +# - $NIGHLTY + +# test:node:8: +# image: node:8 +# script: +# - yarn build +# - npm test + +# test:node:9: +# image: node:9 +# script: +# - yarn build +# - npm test +# only: +# - $NIGHLTY + +# test:node:10: +# image: node:10 +# script: +# - yarn build +# - npm test +# only: +# - $NIGHLTY + +build: + stage: build + script: yarn build + +# build:doc: +# stage: build +# script: yarn build:doc + +# build:docker: +# image: docker:git +# services: +# - docker:dind +# stage: build +# before_script: +# - echo "Skipping before_script" +# script: +# - docker build -t chevdor/polkabot . diff --git a/packages/polkabot-api/.npmrc b/packages/polkabot-api/.npmrc new file mode 100644 index 0000000..43c97e7 --- /dev/null +++ b/packages/polkabot-api/.npmrc @@ -0,0 +1 @@ +package-lock=false diff --git a/packages/polkabot-api/.nvmrc b/packages/polkabot-api/.nvmrc new file mode 100644 index 0000000..b4de394 --- /dev/null +++ b/packages/polkabot-api/.nvmrc @@ -0,0 +1 @@ +11 diff --git a/packages/polkabot-api/README.adoc b/packages/polkabot-api/README.adoc new file mode 100644 index 0000000..e8effb8 --- /dev/null +++ b/packages/polkabot-api/README.adoc @@ -0,0 +1,3 @@ + += Polkabot API + diff --git a/packages/polkabot-api/package.json b/packages/polkabot-api/package.json new file mode 100644 index 0000000..faeb840 --- /dev/null +++ b/packages/polkabot-api/package.json @@ -0,0 +1,36 @@ +{ + "name": "polkabot-api", + "version": "0.5.0", + "description": "", + "main": "dist/src/index.js", + "scripts": { + "lint": "standard", + "start": "babel-node ./src/index.js", + "build": "tsc --build tsconfig.json", + "prepublishOnly": "npm run build", + "clean": "rm -rf dist build node_modules", + "postinstall": "npm run build" + }, + "author": "Chevdor ", + "license": "ISC", + "dependencies": { + "bn.js": "^5.1.1" + }, + "repository": { + "type": "git", + "url": "https://gitlab.com/Polkabot/polkabot-api.git" + }, + "standard": { + "parser": "babel-eslint", + "ignore": [ + "dist/" + ], + "env": [ + "mocha" + ] + }, + "engines": { + "node": ">=10.13.0", + "yarn": "^1.10.1" + } +} diff --git a/packages/polkabot-api/src/plugin.interface.ts b/packages/polkabot-api/src/plugin.interface.ts new file mode 100644 index 0000000..def9c84 --- /dev/null +++ b/packages/polkabot-api/src/plugin.interface.ts @@ -0,0 +1,35 @@ + +export type PluginModule = { + name: string; + path: string; +} + +export class PolkabotPluginBase { + public module: PluginModule; +} + +// export interface IPolkabotWorker implements PolkabotPluginBase { +// start(): void; +// } + +export class PolkabotWorker extends PolkabotPluginBase { + public start() {} +} + +export interface PolkabotNotifier extends PolkabotPluginBase { + notify(): void; +} + +export type PolkabotPlugin = PolkabotWorker | PolkabotNotifier; + + +/** + * This is the context Polkabot passes to any plugin + */ +export interface PluginContext { + config; + pkg; + db; + matrix; + polkadot; +} diff --git a/packages/polkabot-api/tsconfig.json b/packages/polkabot-api/tsconfig.json new file mode 100644 index 0000000..3192684 --- /dev/null +++ b/packages/polkabot-api/tsconfig.json @@ -0,0 +1,27 @@ +{ + "compilerOptions": { + "module": "commonjs", + "moduleResolution": "node", + "esModuleInterop": true, + "resolveJsonModule": true, + "allowJs": true, + "target": "es5", + "noImplicitAny": false, + "sourceMap": true, + "preserveConstEnums": true, + "lib": ["es2015", "dom"], + "noUnusedLocals": true, + "noImplicitReturns": true, + "noImplicitThis": true, + "alwaysStrict": true, + "strictNullChecks": false, + "noUnusedParameters": false, + "pretty": true, + "allowUnreachableCode": false, + "experimentalDecorators": true, + "suppressImplicitAnyIndexErrors": true, + "outDir": "./dist" + }, + "include": ["./bin/**/*", "./src/**/*", "./test/**/*", "./package.json"], + "compileOnSave": true +} diff --git a/packages/polkabot/src/index.ts b/packages/polkabot/src/index.ts index d8dd281..6a71a5b 100644 --- a/packages/polkabot/src/index.ts +++ b/packages/polkabot/src/index.ts @@ -12,8 +12,9 @@ import PluginScanner from "./lib/plugin-scanner"; import sdk from "matrix-js-sdk"; import { ConfigSingleton } from "./ConfigSingleton"; import { assert } from "@polkadot/util"; -import { IPolkabotConfig, PluginContext } from "./types"; +import { IPolkabotConfig } from "./types"; import PluginLoader from "./lib/plugin-loader"; +import { PluginContext, PolkabotPlugin, PolkabotWorker } from "../../polkabot-api/src/plugin.interface"; //@ts-ignore global.Olm = Olm; @@ -35,6 +36,13 @@ export default class Polkabot { this.db = new Datastore({ filename: "polkabot.db" }); } + private isWorker(candidate: PolkabotPlugin): candidate is PolkabotWorker { + if((candidate as PolkabotWorker).start){ + return true + } + return false + } + private async loadPlugins() { console.log("Polkabot - Loading plugins:"); const pluginScanner = new PluginScanner(pkg.name + "-plugin"); @@ -61,8 +69,10 @@ export default class Polkabot { }; PluginLoader.load(plugin, context).then(p => { - // console.log(`Starting plugin ${p.name} v${p.version}`); - p.start(); + if (this.isWorker(p)) { + // console.log(`Starting plugin ${p.name} v${p.version}`); + p.start(); + } }); }); } diff --git a/packages/polkabot/src/lib/plugin-loader.ts b/packages/polkabot/src/lib/plugin-loader.ts index 8aa3ef6..21a020c 100644 --- a/packages/polkabot/src/lib/plugin-loader.ts +++ b/packages/polkabot/src/lib/plugin-loader.ts @@ -1,9 +1,7 @@ /* eslint-disable @typescript-eslint/no-var-requires */ import * as path from "path"; import * as fs from "fs"; -// import IPlugin from "../plugins/Plugin.interface"; -import { PluginFile, PluginContext, PolkabotPlugin } from "../types"; -// import Blocthday from "polkabot-plugin-blocthday" +import { PluginModule,PluginContext, PolkabotPlugin } from "../../../polkabot-api/src/plugin.interface"; interface Author { name: string | { name: string }; @@ -17,30 +15,16 @@ interface PackageJson { } export default class PluginLoader { - // private plugin: IPlugin; - - // public constructor(plugin: IPlugin) { - // return new Promise (resolve => { - // //this.plugin = plugin; - // resolve(plugin) - // }) - // } - - public static async load(f: PluginFile, context: PluginContext): Promise { + public static async load(f: PluginModule, context: PluginContext): Promise { console.log("PluginLoader - Load(...)"); - return new Promise((resolve, reject) => { + + return new Promise((resolve, _reject) => { // console.log('loading ', this.plugin.path) fs.realpath(f.path, async (err, pluginPath) => { if (err) console.log("ERR:", err); - // console.log('Resolved ' + this.plugin.path + ' to ' + pluginPath) - - // console.log("Instantiating plugin", pluginPath); - // pluginPath = pluginPath + '/build' - // const myModule = require(pluginPath); - // console.log(myModule); + - // console.log('bd test', Blocthday.name) - try { + // try { const myModule = (await import(pluginPath)).default; // const myModule = await import("./polkabot-plugin-blocthday"); // // const myModule = {} @@ -56,9 +40,9 @@ export default class PluginLoader { // // console.log(` - path: ${this.plugin.path}`) resolve(plugin); // reject('make it work') - } catch (e) { - reject(e) - } + // } catch (e) { + // reject(e) + // } }); }); } diff --git a/packages/polkabot/src/lib/plugin-scanner.ts b/packages/polkabot/src/lib/plugin-scanner.ts index 22223e0..d7c12f4 100644 --- a/packages/polkabot/src/lib/plugin-scanner.ts +++ b/packages/polkabot/src/lib/plugin-scanner.ts @@ -1,7 +1,7 @@ import * as path from "path"; import * as fs from "fs"; import findNodeModules from "find-node-modules"; -import { PluginFile } from "../types"; +import { PluginModule } from "../../../polkabot-api/src/plugin.interface"; export default class PluginScanner { private name: string; @@ -44,7 +44,7 @@ export default class PluginScanner { } public async scan() { - return new Promise(resolve => { + return new Promise(resolve => { // console.log('dbg', path.dirname(process.argv0), __filename, __dirname) const scriptLocation = path.join(path.dirname(process.argv[1]), ".."); console.log("script loc", scriptLocation); diff --git a/packages/polkabot/src/plugins/Plugin.interface.ts b/packages/polkabot/src/plugins/Plugin.interface.ts deleted file mode 100644 index 8a64383..0000000 --- a/packages/polkabot/src/plugins/Plugin.interface.ts +++ /dev/null @@ -1,6 +0,0 @@ -// export default interface IPlugin { -// name: string -// path: string -// } - -// TODO: get the ifaces from types.ts \ No newline at end of file diff --git a/packages/polkabot/src/types.ts b/packages/polkabot/src/types.ts index 4b0896d..0c34346 100644 --- a/packages/polkabot/src/types.ts +++ b/packages/polkabot/src/types.ts @@ -26,25 +26,3 @@ export interface IPolkabotConfig { loginUserPassword: string; }; } - - - -export interface PluginFile { - name: string; - path: string; -} - - -export interface PolkabotPlugin extends PluginFile { - version: string; - author: string; - start(): void; -} - -export interface PluginContext { - config; - pkg; - db; - matrix; - polkadot; -} diff --git a/yarn.lock b/yarn.lock index eab2763..6bf0b1f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -107,14 +107,6 @@ resolve "^1.8.1" semver "^5.5.1" -"@babel/polyfill@^7.8.3": - version "7.8.3" - resolved "https://registry.npmjs.org/@babel/polyfill/-/polyfill-7.8.3.tgz#2333fc2144a542a7c07da39502ceeeb3abe4debd" - integrity sha512-0QEgn2zkCzqGIkSWWAEmvxD7e00Nm9asTtQvi7HdlYvMhjy/J38V/1Y9ode0zEJeIuxAI0uftiAzqc7nVeWUGg== - dependencies: - core-js "^2.6.5" - regenerator-runtime "^0.13.2" - "@babel/runtime@^7.7.7", "@babel/runtime@^7.8.3": version "7.8.3" resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.8.3.tgz#0811944f73a6c926bb2ad35e918dcc1bfab279f1" @@ -1470,6 +1462,11 @@ bn.js@^4.11.8, bn.js@^4.4.0: resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" integrity sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA== +bn.js@^5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/bn.js/-/bn.js-5.1.1.tgz#48efc4031a9c4041b9c99c6941d903463ab62eb5" + integrity sha512-IUTD/REb78Z2eodka1QZyyEk66pciRcP6Sroka0aI3tG/iwIdYLrBD62RsubR7vqdt3WyX8p4jxeatzmRSphtA== + bowser@^0.7.1: version "0.7.3" resolved "https://registry.yarnpkg.com/bowser/-/bowser-0.7.3.tgz#4fc0cb4e0e2bdd9b394df0d2038c32c2cc2712c8" @@ -1951,7 +1948,7 @@ copy-descriptor@^0.1.0: resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= -core-js@^2.4.0, core-js@^2.5.0, core-js@^2.6.5: +core-js@^2.4.0, core-js@^2.5.0: version "2.6.5" resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.5.tgz#44bc8d249e7fb2ff5d00e0341a7ffb94fbf67895" integrity sha512-klh/kDpwX8hryYL14M9w/xei6vrv6sE8gTHDG7/T/+SEovB/G4ejwcfE/CBzO6Edsu+OETZMZ3wcX/EjUkrl5A== -- GitLab From e17f1f2ca779e141bd6fe961af2bcec892d648be Mon Sep 17 00:00:00 2001 From: Will Date: Thu, 23 Jan 2020 16:25:52 +0100 Subject: [PATCH 16/86] Add notifiers and various fixes --- packages/polkabot-api/package.json | 3 +- packages/polkabot-api/src/plugin.interface.ts | 57 +++++++++++++++-- packages/polkabot-api/src/utils.ts | 3 + .../polkabot-plugin-notifier-matrix/.babelrc | 11 ++++ .../polkabot-plugin-notifier-matrix/.npmrc | 1 + .../polkabot-plugin-notifier-matrix/.nvmrc | 1 + .../README.adoc | 3 + .../package.json | 36 +++++++++++ .../src/index.ts | 21 +++++++ .../tsconfig.json | 27 ++++++++ .../polkabot-plugin-notifier-twitter/.babelrc | 11 ++++ .../polkabot-plugin-notifier-twitter/.npmrc | 1 + .../polkabot-plugin-notifier-twitter/.nvmrc | 1 + .../README.adoc | 3 + .../package.json | 36 +++++++++++ .../src/index.ts | 19 ++++++ .../tsconfig.json | 27 ++++++++ packages/polkabot/src/index.ts | 62 +++++++++++++------ packages/polkabot/src/lib/plugin-loader.ts | 51 +++++---------- packages/polkabot/src/lib/plugin-scanner.ts | 2 +- yarn.lock | 2 +- 21 files changed, 317 insertions(+), 61 deletions(-) create mode 100644 packages/polkabot-api/src/utils.ts create mode 100644 packages/polkabot-plugin-notifier-matrix/.babelrc create mode 100644 packages/polkabot-plugin-notifier-matrix/.npmrc create mode 100644 packages/polkabot-plugin-notifier-matrix/.nvmrc create mode 100644 packages/polkabot-plugin-notifier-matrix/README.adoc create mode 100644 packages/polkabot-plugin-notifier-matrix/package.json create mode 100644 packages/polkabot-plugin-notifier-matrix/src/index.ts create mode 100644 packages/polkabot-plugin-notifier-matrix/tsconfig.json create mode 100644 packages/polkabot-plugin-notifier-twitter/.babelrc create mode 100644 packages/polkabot-plugin-notifier-twitter/.npmrc create mode 100644 packages/polkabot-plugin-notifier-twitter/.nvmrc create mode 100644 packages/polkabot-plugin-notifier-twitter/README.adoc create mode 100644 packages/polkabot-plugin-notifier-twitter/package.json create mode 100644 packages/polkabot-plugin-notifier-twitter/src/index.ts create mode 100644 packages/polkabot-plugin-notifier-twitter/tsconfig.json diff --git a/packages/polkabot-api/package.json b/packages/polkabot-api/package.json index faeb840..362f600 100644 --- a/packages/polkabot-api/package.json +++ b/packages/polkabot-api/package.json @@ -14,7 +14,8 @@ "author": "Chevdor ", "license": "ISC", "dependencies": { - "bn.js": "^5.1.1" + "bn.js": "^5.1.1", + "package-json": "^4.0.1" }, "repository": { "type": "git", diff --git a/packages/polkabot-api/src/plugin.interface.ts b/packages/polkabot-api/src/plugin.interface.ts index def9c84..6b5239c 100644 --- a/packages/polkabot-api/src/plugin.interface.ts +++ b/packages/polkabot-api/src/plugin.interface.ts @@ -1,28 +1,53 @@ - +import { packageJson } from "package-json"; +import * as path from "path"; +import { assert } from "./utils"; +/** + * A plugin module before the package has been loaded. + * Before loading the patch we know only the path and the name + * of the package. + */ export type PluginModule = { name: string; path: string; -} +}; export class PolkabotPluginBase { public module: PluginModule; + public config: any; // TODO + public context: any; // TODO + public package: packageJson; + + constructor(mod: PluginModule, context: PluginContext, config?) { + console.log("++ PolkabotPluginBase", mod, context, config); + this.context = context; + this.config = config; + this.module = mod; + const packageFile = path.join(mod.path, "package.json"); + + console.log("loading package from", packageFile); + this.package = require(packageFile); + + assert(this.package, "package not loaded properly"); + } } // export interface IPolkabotWorker implements PolkabotPluginBase { // start(): void; // } -export class PolkabotWorker extends PolkabotPluginBase { +export class PolkabotWorker extends PolkabotPluginBase { public start() {} } -export interface PolkabotNotifier extends PolkabotPluginBase { - notify(): void; +export class PolkabotNotifier extends PolkabotPluginBase { + type: string; // 'twitter', 'matrix', 'email', .... + notify(message: NotifierMessage, specs: NotifierSpecs): void { + console.log("MatrixNotifier - notify()", message, specs); + } } export type PolkabotPlugin = PolkabotWorker | PolkabotNotifier; - /** * This is the context Polkabot passes to any plugin */ @@ -33,3 +58,23 @@ export interface PluginContext { matrix; polkadot; } + +export type NotifierMessageEmail = { + message: string; + subject: string; + email: string; +}; + +export type NotifierMessageTwitter = { + message: string; +}; + +export type NotifierMessageMatrix = { + message: string; +}; + +export type NotifierMessage = NotifierMessageMatrix | NotifierMessageTwitter | NotifierMessageEmail; + +export type NotifierSpecs = { + notifiers: string[] | string; +}; diff --git a/packages/polkabot-api/src/utils.ts b/packages/polkabot-api/src/utils.ts new file mode 100644 index 0000000..e62f440 --- /dev/null +++ b/packages/polkabot-api/src/utils.ts @@ -0,0 +1,3 @@ +export function assert(val, msg) { + if (!val) throw new Error(msg || "Assertion failed"); +} diff --git a/packages/polkabot-plugin-notifier-matrix/.babelrc b/packages/polkabot-plugin-notifier-matrix/.babelrc new file mode 100644 index 0000000..a9bed8b --- /dev/null +++ b/packages/polkabot-plugin-notifier-matrix/.babelrc @@ -0,0 +1,11 @@ +{ + "presets": ["env"], + "plugins": [ + [ + "@babel/plugin-transform-runtime", + { + "regenerator": true + } + ] + ] +} diff --git a/packages/polkabot-plugin-notifier-matrix/.npmrc b/packages/polkabot-plugin-notifier-matrix/.npmrc new file mode 100644 index 0000000..43c97e7 --- /dev/null +++ b/packages/polkabot-plugin-notifier-matrix/.npmrc @@ -0,0 +1 @@ +package-lock=false diff --git a/packages/polkabot-plugin-notifier-matrix/.nvmrc b/packages/polkabot-plugin-notifier-matrix/.nvmrc new file mode 100644 index 0000000..b4de394 --- /dev/null +++ b/packages/polkabot-plugin-notifier-matrix/.nvmrc @@ -0,0 +1 @@ +11 diff --git a/packages/polkabot-plugin-notifier-matrix/README.adoc b/packages/polkabot-plugin-notifier-matrix/README.adoc new file mode 100644 index 0000000..e8effb8 --- /dev/null +++ b/packages/polkabot-plugin-notifier-matrix/README.adoc @@ -0,0 +1,3 @@ + += Polkabot API + diff --git a/packages/polkabot-plugin-notifier-matrix/package.json b/packages/polkabot-plugin-notifier-matrix/package.json new file mode 100644 index 0000000..72479cf --- /dev/null +++ b/packages/polkabot-plugin-notifier-matrix/package.json @@ -0,0 +1,36 @@ +{ + "name": "polkabot-plugin-notifier-matrix", + "version": "0.5.0", + "description": "", + "main": "dist/polkabot-plugin-notifier-matrix/src/index.js", + "scripts": { + "lint": "standard", + "start": "babel-node ./src/index.js", + "build": "tsc --build tsconfig.json", + "prepublishOnly": "npm run build", + "clean": "rm -rf dist build node_modules", + "postinstall": "npm run build" + }, + "author": "Chevdor ", + "license": "ISC", + "dependencies": { + "bn.js": "^5.1.1" + }, + "repository": { + "type": "git", + "url": "https://gitlab.com/Polkabot/polkabot-api.git" + }, + "standard": { + "parser": "babel-eslint", + "ignore": [ + "dist/" + ], + "env": [ + "mocha" + ] + }, + "engines": { + "node": ">=10.13.0", + "yarn": "^1.10.1" + } +} diff --git a/packages/polkabot-plugin-notifier-matrix/src/index.ts b/packages/polkabot-plugin-notifier-matrix/src/index.ts new file mode 100644 index 0000000..54ab927 --- /dev/null +++ b/packages/polkabot-plugin-notifier-matrix/src/index.ts @@ -0,0 +1,21 @@ +import { + PolkabotNotifier, + NotifierMessage, + NotifierSpecs, + PluginModule, + PluginContext +} from "../../polkabot-api/src/plugin.interface"; + +// TODO: we want that to extends PolkabotPlugin +export default class MatrixNotifier extends PolkabotNotifier { + public constructor(module: PluginModule, context: PluginContext, config?) { + super(module, context, config); + console.log("MatrixNotifier: ++"); + } + + public notify(message: NotifierMessage, specs: NotifierSpecs): void { + super.notify(message, specs); + + this.context.matrix.sendTextMessage(this.context.config.matrix.roomId, message.message).finally(function() {}); + } +} diff --git a/packages/polkabot-plugin-notifier-matrix/tsconfig.json b/packages/polkabot-plugin-notifier-matrix/tsconfig.json new file mode 100644 index 0000000..3192684 --- /dev/null +++ b/packages/polkabot-plugin-notifier-matrix/tsconfig.json @@ -0,0 +1,27 @@ +{ + "compilerOptions": { + "module": "commonjs", + "moduleResolution": "node", + "esModuleInterop": true, + "resolveJsonModule": true, + "allowJs": true, + "target": "es5", + "noImplicitAny": false, + "sourceMap": true, + "preserveConstEnums": true, + "lib": ["es2015", "dom"], + "noUnusedLocals": true, + "noImplicitReturns": true, + "noImplicitThis": true, + "alwaysStrict": true, + "strictNullChecks": false, + "noUnusedParameters": false, + "pretty": true, + "allowUnreachableCode": false, + "experimentalDecorators": true, + "suppressImplicitAnyIndexErrors": true, + "outDir": "./dist" + }, + "include": ["./bin/**/*", "./src/**/*", "./test/**/*", "./package.json"], + "compileOnSave": true +} diff --git a/packages/polkabot-plugin-notifier-twitter/.babelrc b/packages/polkabot-plugin-notifier-twitter/.babelrc new file mode 100644 index 0000000..a9bed8b --- /dev/null +++ b/packages/polkabot-plugin-notifier-twitter/.babelrc @@ -0,0 +1,11 @@ +{ + "presets": ["env"], + "plugins": [ + [ + "@babel/plugin-transform-runtime", + { + "regenerator": true + } + ] + ] +} diff --git a/packages/polkabot-plugin-notifier-twitter/.npmrc b/packages/polkabot-plugin-notifier-twitter/.npmrc new file mode 100644 index 0000000..43c97e7 --- /dev/null +++ b/packages/polkabot-plugin-notifier-twitter/.npmrc @@ -0,0 +1 @@ +package-lock=false diff --git a/packages/polkabot-plugin-notifier-twitter/.nvmrc b/packages/polkabot-plugin-notifier-twitter/.nvmrc new file mode 100644 index 0000000..b4de394 --- /dev/null +++ b/packages/polkabot-plugin-notifier-twitter/.nvmrc @@ -0,0 +1 @@ +11 diff --git a/packages/polkabot-plugin-notifier-twitter/README.adoc b/packages/polkabot-plugin-notifier-twitter/README.adoc new file mode 100644 index 0000000..e8effb8 --- /dev/null +++ b/packages/polkabot-plugin-notifier-twitter/README.adoc @@ -0,0 +1,3 @@ + += Polkabot API + diff --git a/packages/polkabot-plugin-notifier-twitter/package.json b/packages/polkabot-plugin-notifier-twitter/package.json new file mode 100644 index 0000000..77e9f72 --- /dev/null +++ b/packages/polkabot-plugin-notifier-twitter/package.json @@ -0,0 +1,36 @@ +{ + "name": "polkabot-plugin-notifier-twitter", + "version": "0.5.0", + "description": "", + "main": "dist/polkabot-plugin-notifier-twitter/src/index.js", + "scripts": { + "lint": "standard", + "start": "babel-node ./src/index.js", + "build": "tsc --build tsconfig.json", + "prepublishOnly": "npm run build", + "clean": "rm -rf dist build node_modules", + "postinstall": "npm run build" + }, + "author": "Chevdor ", + "license": "ISC", + "dependencies": { + "bn.js": "^5.1.1" + }, + "repository": { + "type": "git", + "url": "https://gitlab.com/Polkabot/polkabot-api.git" + }, + "standard": { + "parser": "babel-eslint", + "ignore": [ + "dist/" + ], + "env": [ + "mocha" + ] + }, + "engines": { + "node": ">=10.13.0", + "yarn": "^1.10.1" + } +} diff --git a/packages/polkabot-plugin-notifier-twitter/src/index.ts b/packages/polkabot-plugin-notifier-twitter/src/index.ts new file mode 100644 index 0000000..d09b657 --- /dev/null +++ b/packages/polkabot-plugin-notifier-twitter/src/index.ts @@ -0,0 +1,19 @@ +import { + PolkabotNotifier, + NotifierMessage, + NotifierSpecs, + PluginModule, + PluginContext +} from "../../polkabot-api/src/plugin.interface"; + +// TODO: we want that to extends PolkabotPlugin +export default class TwitterNotifier extends PolkabotNotifier { + public constructor(module: PluginModule, context: PluginContext, config?) { + super(module, context, config); + console.log("TwitterNotifier: ++"); + } + + public notify(message: NotifierMessage, specs: NotifierSpecs): void { + super.notify(message, specs); + } +} diff --git a/packages/polkabot-plugin-notifier-twitter/tsconfig.json b/packages/polkabot-plugin-notifier-twitter/tsconfig.json new file mode 100644 index 0000000..3192684 --- /dev/null +++ b/packages/polkabot-plugin-notifier-twitter/tsconfig.json @@ -0,0 +1,27 @@ +{ + "compilerOptions": { + "module": "commonjs", + "moduleResolution": "node", + "esModuleInterop": true, + "resolveJsonModule": true, + "allowJs": true, + "target": "es5", + "noImplicitAny": false, + "sourceMap": true, + "preserveConstEnums": true, + "lib": ["es2015", "dom"], + "noUnusedLocals": true, + "noImplicitReturns": true, + "noImplicitThis": true, + "alwaysStrict": true, + "strictNullChecks": false, + "noUnusedParameters": false, + "pretty": true, + "allowUnreachableCode": false, + "experimentalDecorators": true, + "suppressImplicitAnyIndexErrors": true, + "outDir": "./dist" + }, + "include": ["./bin/**/*", "./src/**/*", "./test/**/*", "./package.json"], + "compileOnSave": true +} diff --git a/packages/polkabot/src/index.ts b/packages/polkabot/src/index.ts index 6a71a5b..32fe7ee 100644 --- a/packages/polkabot/src/index.ts +++ b/packages/polkabot/src/index.ts @@ -14,7 +14,15 @@ import { ConfigSingleton } from "./ConfigSingleton"; import { assert } from "@polkadot/util"; import { IPolkabotConfig } from "./types"; import PluginLoader from "./lib/plugin-loader"; -import { PluginContext, PolkabotPlugin, PolkabotWorker } from "../../polkabot-api/src/plugin.interface"; +import { + PluginContext, + PolkabotPlugin, + PolkabotWorker, + PolkabotNotifier, + NotifierMessage, + NotifierSpecs, + PluginModule +} from "../../polkabot-api/src/plugin.interface"; //@ts-ignore global.Olm = Olm; @@ -24,12 +32,16 @@ global.Olm = Olm; // console.log(event.getType()) // }) +export interface INotifiersTable { + [type: string]: PolkabotNotifier[]; +} export default class Polkabot { // private args: any; private db: any; private config: any; private matrix: any; private polkadot: any; + private notifiersTable: INotifiersTable; public constructor(args) { // this.args = args @@ -37,29 +49,34 @@ export default class Polkabot { } private isWorker(candidate: PolkabotPlugin): candidate is PolkabotWorker { - if((candidate as PolkabotWorker).start){ - return true + if ((candidate as PolkabotWorker).start) { + return true; } - return false + return false; + } + + /** this method is usually called by the workers who wish to notify something + * polkabot itself does nothing about it. it searches in the list of notifiers which one(s) can do the job and + * delegate them the task + */ + public notify(message: NotifierMessage, specs: NotifierSpecs) { + console.log("Notifier requested", specs, message); + + // go thru all notifiers and check if we have one that can do the job } private async loadPlugins() { console.log("Polkabot - Loading plugins:"); const pluginScanner = new PluginScanner(pkg.name + "-plugin"); - var plugins = await pluginScanner.scan(); // TODO: switch back to a const + let plugins = await pluginScanner.scan(); // TODO: switch back to a const // TODO remove that, here we ignore some plugins on purpose - plugins = plugins.filter(p => p.name.indexOf("day") > 0); + // plugins = plugins.filter((p: PluginModule) => p.name.indexOf("day") > 0 || p.name.indexOf("matrix") > 0); + plugins = plugins.filter((p: PluginModule) => p.name.indexOf("day") > 0); console.log(`Found ${plugins.length} plugins`); console.log(`${JSON.stringify(plugins, null, 2)}`); - // pluginScanner.scan( - // (err, module) => { - // if (err) console.error("Error in pluginScanner.scan():", err); - // console.log('Loading plugin:', module) plugins.map(plugin => { - // const pluginLoader = new PluginLoader(plugin); - // wish is to write const context: PluginContext = { config: this.config, pkg, @@ -68,12 +85,21 @@ export default class Polkabot { polkadot: this.polkadot }; - PluginLoader.load(plugin, context).then(p => { - if (this.isWorker(p)) { - // console.log(`Starting plugin ${p.name} v${p.version}`); - p.start(); - } - }); + PluginLoader.load(plugin, context) + .then(p => { + if (this.isWorker(p)) { + // console.log(`Starting worker plugin ${p.module.name} v${p.module.version}`); + console.log(`Starting worker plugin`); + p.start(); + } else { + // console.log(`Registering non-worker plugin ${p.module.name} v${p.module.version}`); + console.log(`Registering non-worker plugin`); + + // todo that will become a switch case + this.notifiersTable[p.type].push(p); + } + }) + .catch(e => console.log(e)); }); } diff --git a/packages/polkabot/src/lib/plugin-loader.ts b/packages/polkabot/src/lib/plugin-loader.ts index 21a020c..333da42 100644 --- a/packages/polkabot/src/lib/plugin-loader.ts +++ b/packages/polkabot/src/lib/plugin-loader.ts @@ -1,45 +1,28 @@ /* eslint-disable @typescript-eslint/no-var-requires */ -import * as path from "path"; import * as fs from "fs"; -import { PluginModule,PluginContext, PolkabotPlugin } from "../../../polkabot-api/src/plugin.interface"; - -interface Author { - name: string | { name: string }; -} - -// TODO move that away! -interface PackageJson { - name: string; - version: string; - author: Author; -} +import { PluginModule, PluginContext, PolkabotPlugin } from "../../../polkabot-api/src/plugin.interface"; export default class PluginLoader { - public static async load(f: PluginModule, context: PluginContext): Promise { - console.log("PluginLoader - Load(...)"); - + public static async load(mod: PluginModule, context: PluginContext): Promise { + console.log(`XXX Loading ${mod.name} from ${mod.path}`) return new Promise((resolve, _reject) => { // console.log('loading ', this.plugin.path) - fs.realpath(f.path, async (err, pluginPath) => { + fs.realpath(mod.path, async (err, pluginPath) => { if (err) console.log("ERR:", err); - - + // try { - const myModule = (await import(pluginPath)).default; - // const myModule = await import("./polkabot-plugin-blocthday"); - // // const myModule = {} - // console.log(myModule); - - const plugin: PolkabotPlugin = new myModule(context); - // console.log(plugin); - - const pkg: PackageJson = require(path.join(pluginPath, "package.json")); // TODO, we should attach the info to the plugin itself - - // //@ts-ignore - console.log(` - ${pkg.name} version ${pkg.version} from ${pkg.author.name || pkg.author}`); - // // console.log(` - path: ${this.plugin.path}`) - resolve(plugin); - // reject('make it work') + const myModule = (await import(pluginPath)).default; + const plugin: PolkabotPlugin = new myModule(mod, context); + // console.log(plugin); + + console.log( + ` - ${plugin.package.name} version ${plugin.package.version} from ${plugin.package.author.name || + plugin.package.author}` + ); + // console.log(` - ${plugin.module.package.name} version ${plugin.module.package.version}`); + // // console.log(` - path: ${this.plugin.path}`) + resolve(plugin); + // reject('make it work') // } catch (e) { // reject(e) // } diff --git a/packages/polkabot/src/lib/plugin-scanner.ts b/packages/polkabot/src/lib/plugin-scanner.ts index d7c12f4..e54a07b 100644 --- a/packages/polkabot/src/lib/plugin-scanner.ts +++ b/packages/polkabot/src/lib/plugin-scanner.ts @@ -61,7 +61,7 @@ export default class PluginScanner { .filter(f => f.indexOf(this.name) === 0) .map(plugin => { // console.log('Plugin detected:', plugin); - const mod = { + const mod: PluginModule = { name: plugin, path: path.join(p, plugin) }; diff --git a/yarn.lock b/yarn.lock index 6bf0b1f..2aa3072 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5030,7 +5030,7 @@ p-try@^2.0.0: resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== -package-json@^4.0.0: +package-json@^4.0.0, package-json@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/package-json/-/package-json-4.0.1.tgz#8869a0401253661c4c4ca3da6c2121ed555f5eed" integrity sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0= -- GitLab From 6c69dd9b288e51b1285e1daf2e096b521f35d851 Mon Sep 17 00:00:00 2001 From: Will Date: Fri, 24 Jan 2020 00:50:05 +0100 Subject: [PATCH 17/86] Implement support for notification plugin for Matrix --- packages/polkabot-api/src/plugin.interface.ts | 30 +++++++++--- .../src/index.ts | 7 +-- packages/polkabot/src/index.ts | 33 +++++++++---- packages/polkabot/src/lib/plugin-loader.ts | 49 +++++++++++++------ 4 files changed, 86 insertions(+), 33 deletions(-) diff --git a/packages/polkabot-api/src/plugin.interface.ts b/packages/polkabot-api/src/plugin.interface.ts index 6b5239c..0575cf3 100644 --- a/packages/polkabot-api/src/plugin.interface.ts +++ b/packages/polkabot-api/src/plugin.interface.ts @@ -11,14 +11,21 @@ export type PluginModule = { path: string; }; +export enum Type { + Worker, + Notifier, +} + export class PolkabotPluginBase { public module: PluginModule; public config: any; // TODO public context: any; // TODO public package: packageJson; + public type: Type; - constructor(mod: PluginModule, context: PluginContext, config?) { - console.log("++ PolkabotPluginBase", mod, context, config); + constructor(type:Type, mod: PluginModule, context: PluginContext, config?) { + console.log(`++ PolkabotPluginBase/${type} ${mod.name}: ${mod.path}`); + this.type = type this.context = context; this.config = config; this.module = mod; @@ -35,13 +42,21 @@ export class PolkabotPluginBase { // start(): void; // } -export class PolkabotWorker extends PolkabotPluginBase { - public start() {} +export abstract class PolkabotWorker extends PolkabotPluginBase { + constructor(mod: PluginModule, context: PluginContext, config?) { + super(Type.Worker, mod, context, config) + } + public abstract start() } -export class PolkabotNotifier extends PolkabotPluginBase { - type: string; // 'twitter', 'matrix', 'email', .... - notify(message: NotifierMessage, specs: NotifierSpecs): void { +export abstract class PolkabotNotifier extends PolkabotPluginBase { + public abstract channel: string; // 'twitter', 'matrix', 'email', .... + + constructor(mod: PluginModule, context: PluginContext, config?) { + super(Type.Notifier, mod, context, config) + } + + public notify(message: NotifierMessage, specs: NotifierSpecs): void { console.log("MatrixNotifier - notify()", message, specs); } } @@ -57,6 +72,7 @@ export interface PluginContext { db; matrix; polkadot; + polkabot; } export type NotifierMessageEmail = { diff --git a/packages/polkabot-plugin-notifier-matrix/src/index.ts b/packages/polkabot-plugin-notifier-matrix/src/index.ts index 54ab927..6857d5e 100644 --- a/packages/polkabot-plugin-notifier-matrix/src/index.ts +++ b/packages/polkabot-plugin-notifier-matrix/src/index.ts @@ -8,9 +8,10 @@ import { // TODO: we want that to extends PolkabotPlugin export default class MatrixNotifier extends PolkabotNotifier { - public constructor(module: PluginModule, context: PluginContext, config?) { - super(module, context, config); - console.log("MatrixNotifier: ++"); + public channel: string = "matrix"; + public constructor(mod: PluginModule, context: PluginContext, config?) { + super(mod, context, config); + console.log("++MatrixNotifier", this); } public notify(message: NotifierMessage, specs: NotifierSpecs): void { diff --git a/packages/polkabot/src/index.ts b/packages/polkabot/src/index.ts index 32fe7ee..d939ebc 100644 --- a/packages/polkabot/src/index.ts +++ b/packages/polkabot/src/index.ts @@ -41,7 +41,7 @@ export default class Polkabot { private config: any; private matrix: any; private polkadot: any; - private notifiersTable: INotifiersTable; + private notifiersTable: INotifiersTable = {}; public constructor(args) { // this.args = args @@ -63,6 +63,22 @@ export default class Polkabot { console.log("Notifier requested", specs, message); // go thru all notifiers and check if we have one that can do the job + console.log(this.notifiersTable); + + Object.keys(this.notifiersTable).map(channel => { + this.notifiersTable[channel].map((notifier: PolkabotNotifier) => { + notifier.notify(message, specs); + }); + }); + } + + /** This adds a new notifier to those Polkabot is aware of */ + private registerNotifier(notifier: PolkabotNotifier) { + assert(notifier.channel, 'No channel defined') + const channel = notifier.channel + if (!this.notifiersTable[channel]) this.notifiersTable[channel] = []; + this.notifiersTable[channel].push(notifier); + // console.log("notifierTable", this.notifiersTable); } private async loadPlugins() { @@ -71,8 +87,8 @@ export default class Polkabot { let plugins = await pluginScanner.scan(); // TODO: switch back to a const // TODO remove that, here we ignore some plugins on purpose - // plugins = plugins.filter((p: PluginModule) => p.name.indexOf("day") > 0 || p.name.indexOf("matrix") > 0); - plugins = plugins.filter((p: PluginModule) => p.name.indexOf("day") > 0); + plugins = plugins.filter((p: PluginModule) => p.name.indexOf("day") > 0 || p.name.indexOf("matrix") > 0); + // plugins = plugins.filter((p: PluginModule) => p.name.indexOf("day") > 0); console.log(`Found ${plugins.length} plugins`); console.log(`${JSON.stringify(plugins, null, 2)}`); @@ -82,21 +98,20 @@ export default class Polkabot { pkg, db: this.db, matrix: this.matrix, - polkadot: this.polkadot + polkadot: this.polkadot, + polkabot: this }; PluginLoader.load(plugin, context) .then(p => { if (this.isWorker(p)) { - // console.log(`Starting worker plugin ${p.module.name} v${p.module.version}`); - console.log(`Starting worker plugin`); + console.log(`Starting worker plugin ${p.package.name} v${p.package.version}`); p.start(); } else { - // console.log(`Registering non-worker plugin ${p.module.name} v${p.module.version}`); - console.log(`Registering non-worker plugin`); + console.log(`Registering non-worker plugin ${p.package.name} v${p.package.version}`); // todo that will become a switch case - this.notifiersTable[p.type].push(p); + this.registerNotifier(p); } }) .catch(e => console.log(e)); diff --git a/packages/polkabot/src/lib/plugin-loader.ts b/packages/polkabot/src/lib/plugin-loader.ts index 333da42..7c28045 100644 --- a/packages/polkabot/src/lib/plugin-loader.ts +++ b/packages/polkabot/src/lib/plugin-loader.ts @@ -1,31 +1,52 @@ /* eslint-disable @typescript-eslint/no-var-requires */ import * as fs from "fs"; -import { PluginModule, PluginContext, PolkabotPlugin } from "../../../polkabot-api/src/plugin.interface"; +import { + PluginModule, + PluginContext, + PolkabotPlugin, + PolkabotNotifier, + PolkabotWorker, + } from "../../../polkabot-api/src/plugin.interface"; export default class PluginLoader { + // private static getType(mod: PluginModule) { + // // TODO this is not a great option, the type should be part of the plugin and not guessed from the name + // if (mod.name.includes("notifier")) return PolkabotNotifier.name; + // return PolkabotWorker.name; + // } + public static async load(mod: PluginModule, context: PluginContext): Promise { - console.log(`XXX Loading ${mod.name} from ${mod.path}`) + console.log(`Loading ${mod.name} from ${mod.path}`); return new Promise((resolve, _reject) => { - // console.log('loading ', this.plugin.path) fs.realpath(mod.path, async (err, pluginPath) => { if (err) console.log("ERR:", err); - // try { const myModule = (await import(pluginPath)).default; - const plugin: PolkabotPlugin = new myModule(mod, context); - // console.log(plugin); + let plugin; + + // let test = new myModule(mod, context) + + const parentClass = Object.getPrototypeOf(myModule).name + // console.log('+++',PolkabotNotifier.name); + + switch (parentClass) { + case PolkabotNotifier.name: + plugin = new myModule(mod, context) as PolkabotNotifier + break; + case PolkabotWorker.name: + plugin = new myModule(mod, context) as PolkabotWorker + break; + + default: + throw new Error("Plugin type not supported"); + } console.log( - ` - ${plugin.package.name} version ${plugin.package.version} from ${plugin.package.author.name || - plugin.package.author}` + ` - ${plugin.constructor.name}: ${plugin.package.name} version ${plugin.package.version} from ${plugin + .package.author.name || plugin.package.author}` ); - // console.log(` - ${plugin.module.package.name} version ${plugin.module.package.version}`); - // // console.log(` - path: ${this.plugin.path}`) + resolve(plugin); - // reject('make it work') - // } catch (e) { - // reject(e) - // } }); }); } -- GitLab From 5bb2c34afb04be2021a520834885904189205a08 Mon Sep 17 00:00:00 2001 From: Will Date: Fri, 24 Jan 2020 10:18:08 +0100 Subject: [PATCH 18/86] Cleanup --- packages/polkabot-api/src/plugin.interface.ts | 4 +-- .../src/index.ts | 2 +- .../polkabot-plugin-notifier-twitter/.babelrc | 10 +------ .../package.json | 5 +--- .../src/index.ts | 3 ++- packages/polkabot/src/index.ts | 26 +++++++++---------- 6 files changed, 20 insertions(+), 30 deletions(-) diff --git a/packages/polkabot-api/src/plugin.interface.ts b/packages/polkabot-api/src/plugin.interface.ts index 0575cf3..6705ed5 100644 --- a/packages/polkabot-api/src/plugin.interface.ts +++ b/packages/polkabot-api/src/plugin.interface.ts @@ -24,14 +24,14 @@ export class PolkabotPluginBase { public type: Type; constructor(type:Type, mod: PluginModule, context: PluginContext, config?) { - console.log(`++ PolkabotPluginBase/${type} ${mod.name}: ${mod.path}`); + // console.log(`++ PolkabotPluginBase/${type} ${mod.name}: ${mod.path}`); this.type = type this.context = context; this.config = config; this.module = mod; const packageFile = path.join(mod.path, "package.json"); - console.log("loading package from", packageFile); + // console.log("loading package from", packageFile); this.package = require(packageFile); assert(this.package, "package not loaded properly"); diff --git a/packages/polkabot-plugin-notifier-matrix/src/index.ts b/packages/polkabot-plugin-notifier-matrix/src/index.ts index 6857d5e..6bfec93 100644 --- a/packages/polkabot-plugin-notifier-matrix/src/index.ts +++ b/packages/polkabot-plugin-notifier-matrix/src/index.ts @@ -11,7 +11,7 @@ export default class MatrixNotifier extends PolkabotNotifier { public channel: string = "matrix"; public constructor(mod: PluginModule, context: PluginContext, config?) { super(mod, context, config); - console.log("++MatrixNotifier", this); + // console.log("++MatrixNotifier", this); } public notify(message: NotifierMessage, specs: NotifierSpecs): void { diff --git a/packages/polkabot-plugin-notifier-twitter/.babelrc b/packages/polkabot-plugin-notifier-twitter/.babelrc index a9bed8b..002b4aa 100644 --- a/packages/polkabot-plugin-notifier-twitter/.babelrc +++ b/packages/polkabot-plugin-notifier-twitter/.babelrc @@ -1,11 +1,3 @@ { - "presets": ["env"], - "plugins": [ - [ - "@babel/plugin-transform-runtime", - { - "regenerator": true - } - ] - ] + "presets": ["env"] } diff --git a/packages/polkabot-plugin-notifier-twitter/package.json b/packages/polkabot-plugin-notifier-twitter/package.json index 77e9f72..e6271d4 100644 --- a/packages/polkabot-plugin-notifier-twitter/package.json +++ b/packages/polkabot-plugin-notifier-twitter/package.json @@ -13,12 +13,9 @@ }, "author": "Chevdor ", "license": "ISC", - "dependencies": { - "bn.js": "^5.1.1" - }, "repository": { "type": "git", - "url": "https://gitlab.com/Polkabot/polkabot-api.git" + "url": "https://gitlab.com/Polkabot" }, "standard": { "parser": "babel-eslint", diff --git a/packages/polkabot-plugin-notifier-twitter/src/index.ts b/packages/polkabot-plugin-notifier-twitter/src/index.ts index d09b657..386e661 100644 --- a/packages/polkabot-plugin-notifier-twitter/src/index.ts +++ b/packages/polkabot-plugin-notifier-twitter/src/index.ts @@ -8,9 +8,10 @@ import { // TODO: we want that to extends PolkabotPlugin export default class TwitterNotifier extends PolkabotNotifier { + public channel: string = "twitter"; + public constructor(module: PluginModule, context: PluginContext, config?) { super(module, context, config); - console.log("TwitterNotifier: ++"); } public notify(message: NotifierMessage, specs: NotifierSpecs): void { diff --git a/packages/polkabot/src/index.ts b/packages/polkabot/src/index.ts index d939ebc..a93f92e 100644 --- a/packages/polkabot/src/index.ts +++ b/packages/polkabot/src/index.ts @@ -60,22 +60,21 @@ export default class Polkabot { * delegate them the task */ public notify(message: NotifierMessage, specs: NotifierSpecs) { - console.log("Notifier requested", specs, message); + console.log("Notifier requested", message, specs); - // go thru all notifiers and check if we have one that can do the job - console.log(this.notifiersTable); - - Object.keys(this.notifiersTable).map(channel => { - this.notifiersTable[channel].map((notifier: PolkabotNotifier) => { - notifier.notify(message, specs); + Object.keys(this.notifiersTable) + .filter(channel => specs.notifiers.includes(channel)) + .map(channel => { + this.notifiersTable[channel].map((notifier: PolkabotNotifier) => { + notifier.notify(message, specs); + }); }); - }); } /** This adds a new notifier to those Polkabot is aware of */ private registerNotifier(notifier: PolkabotNotifier) { - assert(notifier.channel, 'No channel defined') - const channel = notifier.channel + assert(notifier.channel, "No channel defined"); + const channel = notifier.channel; if (!this.notifiersTable[channel]) this.notifiersTable[channel] = []; this.notifiersTable[channel].push(notifier); // console.log("notifierTable", this.notifiersTable); @@ -87,10 +86,11 @@ export default class Polkabot { let plugins = await pluginScanner.scan(); // TODO: switch back to a const // TODO remove that, here we ignore some plugins on purpose - plugins = plugins.filter((p: PluginModule) => p.name.indexOf("day") > 0 || p.name.indexOf("matrix") > 0); - // plugins = plugins.filter((p: PluginModule) => p.name.indexOf("day") > 0); + plugins = plugins.filter( + (p: PluginModule) => p.name.indexOf("day") > 0 || p.name.indexOf("matrix") > 0 || p.name.indexOf("twitter") > 0 + ); console.log(`Found ${plugins.length} plugins`); - console.log(`${JSON.stringify(plugins, null, 2)}`); + // console.log(`${JSON.stringify(plugins, null, 2)}`); plugins.map(plugin => { const context: PluginContext = { -- GitLab From 0017d4d42dbc989a60921f0f7b780edfdf006fb5 Mon Sep 17 00:00:00 2001 From: Will Date: Fri, 24 Jan 2020 23:12:29 +0100 Subject: [PATCH 19/86] Fix names of some packages and improve scanner --- packages/polkabot-api/package.json | 2 +- packages/polkabot-api/src/plugin.interface.ts | 20 +++++++++---------- .../src/index.ts | 1 + .../src/index.ts | 1 + packages/polkabot/package.json | 2 +- packages/polkabot/src/index.ts | 9 ++++++++- packages/polkabot/src/lib/plugin-scanner.ts | 13 +++++++++--- packages/polkabot/tsconfig.json | 2 +- 8 files changed, 33 insertions(+), 17 deletions(-) diff --git a/packages/polkabot-api/package.json b/packages/polkabot-api/package.json index 362f600..fb0cc25 100644 --- a/packages/polkabot-api/package.json +++ b/packages/polkabot-api/package.json @@ -1,5 +1,5 @@ { - "name": "polkabot-api", + "name": "@polkabot/api", "version": "0.5.0", "description": "", "main": "dist/src/index.js", diff --git a/packages/polkabot-api/src/plugin.interface.ts b/packages/polkabot-api/src/plugin.interface.ts index 6705ed5..b869331 100644 --- a/packages/polkabot-api/src/plugin.interface.ts +++ b/packages/polkabot-api/src/plugin.interface.ts @@ -12,8 +12,8 @@ export type PluginModule = { }; export enum Type { - Worker, - Notifier, + Worker, + Notifier } export class PolkabotPluginBase { @@ -23,9 +23,9 @@ export class PolkabotPluginBase { public package: packageJson; public type: Type; - constructor(type:Type, mod: PluginModule, context: PluginContext, config?) { + constructor(type: Type, mod: PluginModule, context: PluginContext, config?) { // console.log(`++ PolkabotPluginBase/${type} ${mod.name}: ${mod.path}`); - this.type = type + this.type = type; this.context = context; this.config = config; this.module = mod; @@ -43,21 +43,21 @@ export class PolkabotPluginBase { // } export abstract class PolkabotWorker extends PolkabotPluginBase { - constructor(mod: PluginModule, context: PluginContext, config?) { - super(Type.Worker, mod, context, config) + constructor(mod: PluginModule, context: PluginContext, config?) { + super(Type.Worker, mod, context, config); } - public abstract start() + public abstract start(); } export abstract class PolkabotNotifier extends PolkabotPluginBase { public abstract channel: string; // 'twitter', 'matrix', 'email', .... - constructor(mod: PluginModule, context: PluginContext, config?) { - super(Type.Notifier, mod, context, config) + constructor(mod: PluginModule, context: PluginContext, config?) { + super(Type.Notifier, mod, context, config); } public notify(message: NotifierMessage, specs: NotifierSpecs): void { - console.log("MatrixNotifier - notify()", message, specs); + // console.log("Notifier - notify()", message, specs); } } diff --git a/packages/polkabot-plugin-notifier-matrix/src/index.ts b/packages/polkabot-plugin-notifier-matrix/src/index.ts index 6bfec93..0a361d5 100644 --- a/packages/polkabot-plugin-notifier-matrix/src/index.ts +++ b/packages/polkabot-plugin-notifier-matrix/src/index.ts @@ -16,6 +16,7 @@ export default class MatrixNotifier extends PolkabotNotifier { public notify(message: NotifierMessage, specs: NotifierSpecs): void { super.notify(message, specs); + console.log("Notifier/matrix:", message, specs); this.context.matrix.sendTextMessage(this.context.config.matrix.roomId, message.message).finally(function() {}); } diff --git a/packages/polkabot-plugin-notifier-twitter/src/index.ts b/packages/polkabot-plugin-notifier-twitter/src/index.ts index 386e661..1635c9a 100644 --- a/packages/polkabot-plugin-notifier-twitter/src/index.ts +++ b/packages/polkabot-plugin-notifier-twitter/src/index.ts @@ -16,5 +16,6 @@ export default class TwitterNotifier extends PolkabotNotifier { public notify(message: NotifierMessage, specs: NotifierSpecs): void { super.notify(message, specs); + console.log('Notifier/twitter: Placeholder') } } diff --git a/packages/polkabot/package.json b/packages/polkabot/package.json index 4b2a46c..cf3577c 100644 --- a/packages/polkabot/package.json +++ b/packages/polkabot/package.json @@ -1,5 +1,5 @@ { - "name": "polkabot", + "name": "@polkabot/polkabot", "version": "0.5.0", "description": "Matrix Bot for Polkadot", "main": "./build/src/polkabot.js", diff --git a/packages/polkabot/src/index.ts b/packages/polkabot/src/index.ts index a93f92e..f40415d 100644 --- a/packages/polkabot/src/index.ts +++ b/packages/polkabot/src/index.ts @@ -86,8 +86,15 @@ export default class Polkabot { let plugins = await pluginScanner.scan(); // TODO: switch back to a const // TODO remove that, here we ignore some plugins on purpose + console.log("Plugins found:"); + plugins.map(p => { + console.log(`- ${p.name}`); + }); + + console.log("Filtering plugins..."); plugins = plugins.filter( - (p: PluginModule) => p.name.indexOf("day") > 0 || p.name.indexOf("matrix") > 0 || p.name.indexOf("twitter") > 0 + (p: PluginModule) => + p.name.indexOf("day") > 0 || p.name.indexOf("matrix") > 0 || p.name.indexOf("twitter") > 0 // || p.name.indexOf("demo") > 0 ); console.log(`Found ${plugins.length} plugins`); // console.log(`${JSON.stringify(plugins, null, 2)}`); diff --git a/packages/polkabot/src/lib/plugin-scanner.ts b/packages/polkabot/src/lib/plugin-scanner.ts index e54a07b..8a5482f 100644 --- a/packages/polkabot/src/lib/plugin-scanner.ts +++ b/packages/polkabot/src/lib/plugin-scanner.ts @@ -52,13 +52,20 @@ export default class PluginScanner { // path.join(scriptLocation, "../lib/node_modules"), // path.join(__dirname, '../../../node_modules') - console.log("PluginScanner scanning searchPaths for Polkabot plugins: ", searchPaths); + const pattern = "polkabot"; const modules = []; + + // TODO the following helps find the @polkabot/stuff + // but some more work need to be done as the name should be found as + // @polkabot/stuff and not just stuff + // searchPaths.map(p => { + // searchPaths.push(`${p}/@${pattern}`) + // }) + console.log(`PluginScanner scanning searchPaths for ${pattern} plugins: `, searchPaths); searchPaths.map(p => { - // const p = searchPaths[0] fs.readdirSync(p) - .filter(f => f.indexOf(this.name) === 0) + .filter(f => f.indexOf(pattern) === 0) .map(plugin => { // console.log('Plugin detected:', plugin); const mod: PluginModule = { diff --git a/packages/polkabot/tsconfig.json b/packages/polkabot/tsconfig.json index 8939a72..c2b1968 100644 --- a/packages/polkabot/tsconfig.json +++ b/packages/polkabot/tsconfig.json @@ -10,7 +10,7 @@ "sourceMap": true, "preserveConstEnums": true, "lib": ["es2015", "dom"], - "noUnusedLocals": true, + "noUnusedLocals": false, "noImplicitReturns": true, "noImplicitThis": true, "alwaysStrict": true, -- GitLab From 554d5f913fe69ac1c2ac89e4bbacffe2b9c1c799 Mon Sep 17 00:00:00 2001 From: Will Date: Fri, 24 Jan 2020 23:37:55 +0100 Subject: [PATCH 20/86] Fix config --- packages/polkabot-plugin-blocthday | 1 - packages/polkabot-plugin-blocthday/.babelrc | 11 + packages/polkabot-plugin-blocthday/.gitignore | 5 + .../polkabot-plugin-blocthday/.gitlab-ci.yml | 80 + packages/polkabot-plugin-blocthday/.npmrc | 1 + packages/polkabot-plugin-blocthday/.nvmrc | 1 + .../polkabot-plugin-blocthday/README.adoc | 10 + .../polkabot-plugin-blocthday/package.json | 36 + .../polkabot-plugin-blocthday/src/index.ts | 47 + .../polkabot-plugin-blocthday/tsconfig.json | 27 + packages/polkabot-plugin-blocthday/yarn.lock | 3134 +++++++++++++++++ 11 files changed, 3352 insertions(+), 1 deletion(-) delete mode 160000 packages/polkabot-plugin-blocthday create mode 100644 packages/polkabot-plugin-blocthday/.babelrc create mode 100644 packages/polkabot-plugin-blocthday/.gitignore create mode 100644 packages/polkabot-plugin-blocthday/.gitlab-ci.yml create mode 100644 packages/polkabot-plugin-blocthday/.npmrc create mode 100644 packages/polkabot-plugin-blocthday/.nvmrc create mode 100644 packages/polkabot-plugin-blocthday/README.adoc create mode 100644 packages/polkabot-plugin-blocthday/package.json create mode 100644 packages/polkabot-plugin-blocthday/src/index.ts create mode 100644 packages/polkabot-plugin-blocthday/tsconfig.json create mode 100644 packages/polkabot-plugin-blocthday/yarn.lock diff --git a/packages/polkabot-plugin-blocthday b/packages/polkabot-plugin-blocthday deleted file mode 160000 index 8b68655..0000000 --- a/packages/polkabot-plugin-blocthday +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 8b686557701f56bc7a29373143d6e93875642d00 diff --git a/packages/polkabot-plugin-blocthday/.babelrc b/packages/polkabot-plugin-blocthday/.babelrc new file mode 100644 index 0000000..a9bed8b --- /dev/null +++ b/packages/polkabot-plugin-blocthday/.babelrc @@ -0,0 +1,11 @@ +{ + "presets": ["env"], + "plugins": [ + [ + "@babel/plugin-transform-runtime", + { + "regenerator": true + } + ] + ] +} diff --git a/packages/polkabot-plugin-blocthday/.gitignore b/packages/polkabot-plugin-blocthday/.gitignore new file mode 100644 index 0000000..09e1cee --- /dev/null +++ b/packages/polkabot-plugin-blocthday/.gitignore @@ -0,0 +1,5 @@ +.DS_Store +node_modules +package-lock.json +dist/ +yarn-error.log \ No newline at end of file diff --git a/packages/polkabot-plugin-blocthday/.gitlab-ci.yml b/packages/polkabot-plugin-blocthday/.gitlab-ci.yml new file mode 100644 index 0000000..a0c2bba --- /dev/null +++ b/packages/polkabot-plugin-blocthday/.gitlab-ci.yml @@ -0,0 +1,80 @@ +image: node:11 + +before_script: + # install ssh-agent + # - 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )' + # # run ssh-agent + # - eval $(ssh-agent -s) + # # add ssh key stored in SSH_PRIVATE_KEY variable to the agent store + # - ssh-add <(echo "$SSH_PRIVATE_KEY" | base64 -d) + # # disable host key checking (NOTE: makes you susceptible to man-in-the-middle attacks) + # # WARNING: use only in docker container, if you use it with shell you will overwrite your user's ssh config + # - mkdir -p ~/.ssh + # - echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config + - npm install -g yarn + - yarn + +stages: + - lint + # - test + - build + +# http://docs.gitlab.com/ce/ci/yaml/README.html#cache +cache: + paths: + - node_modules/ + +lint: + stage: lint + script: + - yarn lint + +# Supported node versions can be found here: +# https://github.com/nodejs/LTS#lts_schedule +# test:node:7: +# image: node:7 +# script: +# - yarn build +# - npm test +# only: +# - $NIGHLTY + +# test:node:8: +# image: node:8 +# script: +# - yarn build +# - npm test + +# test:node:9: +# image: node:9 +# script: +# - yarn build +# - npm test +# only: +# - $NIGHLTY + +# test:node:10: +# image: node:10 +# script: +# - yarn build +# - npm test +# only: +# - $NIGHLTY + +build: + stage: build + script: yarn build + +# build:doc: +# stage: build +# script: yarn build:doc + +# build:docker: +# image: docker:git +# services: +# - docker:dind +# stage: build +# before_script: +# - echo "Skipping before_script" +# script: +# - docker build -t chevdor/polkabot . diff --git a/packages/polkabot-plugin-blocthday/.npmrc b/packages/polkabot-plugin-blocthday/.npmrc new file mode 100644 index 0000000..43c97e7 --- /dev/null +++ b/packages/polkabot-plugin-blocthday/.npmrc @@ -0,0 +1 @@ +package-lock=false diff --git a/packages/polkabot-plugin-blocthday/.nvmrc b/packages/polkabot-plugin-blocthday/.nvmrc new file mode 100644 index 0000000..b4de394 --- /dev/null +++ b/packages/polkabot-plugin-blocthday/.nvmrc @@ -0,0 +1 @@ +11 diff --git a/packages/polkabot-plugin-blocthday/README.adoc b/packages/polkabot-plugin-blocthday/README.adoc new file mode 100644 index 0000000..e7d5f2c --- /dev/null +++ b/packages/polkabot-plugin-blocthday/README.adoc @@ -0,0 +1,10 @@ + += Blocthday + +This plugin wishes Polkadot a happy blocthday every nth block. + +Messages look like: + +---- +Happy BlocthDay!!! Polkadot is now at #1184300 +---- diff --git a/packages/polkabot-plugin-blocthday/package.json b/packages/polkabot-plugin-blocthday/package.json new file mode 100644 index 0000000..78bdc67 --- /dev/null +++ b/packages/polkabot-plugin-blocthday/package.json @@ -0,0 +1,36 @@ +{ + "name": "polkabot-plugin-blocthday", + "version": "0.4.4", + "description": "", + "main": "dist/polkabot-plugin-blocthday/src/index.js", + "scripts": { + "lint": "standard", + "start": "babel-node ./src/index.js", + "build": "tsc --build tsconfig.json", + "prepublishOnly": "npm run build", + "clean": "rm -rf dist build node_modules", + "postinstall": "npm run build" + }, + "author": "Chevdor ", + "license": "ISC", + "dependencies": { + "bn.js": "^5.1.1" + }, + "repository": { + "type": "git", + "url": "https://gitlab.com/Polkabot/polkabot-plugin-blocthday.git" + }, + "standard": { + "parser": "babel-eslint", + "ignore": [ + "dist/" + ], + "env": [ + "mocha" + ] + }, + "engines": { + "node": ">=10.13.0", + "yarn": "^1.10.1" + } +} diff --git a/packages/polkabot-plugin-blocthday/src/index.ts b/packages/polkabot-plugin-blocthday/src/index.ts new file mode 100644 index 0000000..6d25f23 --- /dev/null +++ b/packages/polkabot-plugin-blocthday/src/index.ts @@ -0,0 +1,47 @@ +import BN from "bn.js"; +import { + PolkabotWorker, + NotifierMessage, + NotifierSpecs, + PluginModule, + PluginContext +} from "../../polkabot-api/src/plugin.interface"; + +// TODO: we want that to extends PolkabotPlugin +export default class Blocthday extends PolkabotWorker { + private NB_BLOCKS: number + + public constructor(mod: PluginModule, context: PluginContext, config?) { + super(mod, context, config); + this.NB_BLOCKS = parseInt(process.env.POLKABOT_PLUGIN_BLOCTHDAY_NB_BLOCKS) || 1000000 + } + + + public start(): void { + console.log("Blocthday - Starting with NB_BLOCKS:", this.NB_BLOCKS); + this.watchChain().catch(error => { + console.error("Blocthday - Error subscribing to chain head: ", error); + }); + } + + async watchChain() { + // Reference: https://polkadot.js.org/api/examples/promise/02_listen_to_blocks/ + await this.context.polkadot.rpc.chain.subscribeNewHeads(header => { + console.log(`Blocthday - Chain is at block: #${header.number}`); + const bnBlockNumber: BN = header.number.unwrap().toBn(); + const bnNumberOfBlocks: BN = new BN(this.NB_BLOCKS); + + if (bnBlockNumber.mod(bnNumberOfBlocks).toString(10) === "0") { + const notifierMessage: NotifierMessage = { + message: `Happy ${this.NB_BLOCKS}-BlocthDay!!! Polkadot is now at #${header.number}` + }; + + const notifierSpecs: NotifierSpecs = { + notifiers: ["matrix", "twitter"] + }; + + this.context.polkabot.notify(notifierMessage, notifierSpecs); + } + }); + } +} diff --git a/packages/polkabot-plugin-blocthday/tsconfig.json b/packages/polkabot-plugin-blocthday/tsconfig.json new file mode 100644 index 0000000..3192684 --- /dev/null +++ b/packages/polkabot-plugin-blocthday/tsconfig.json @@ -0,0 +1,27 @@ +{ + "compilerOptions": { + "module": "commonjs", + "moduleResolution": "node", + "esModuleInterop": true, + "resolveJsonModule": true, + "allowJs": true, + "target": "es5", + "noImplicitAny": false, + "sourceMap": true, + "preserveConstEnums": true, + "lib": ["es2015", "dom"], + "noUnusedLocals": true, + "noImplicitReturns": true, + "noImplicitThis": true, + "alwaysStrict": true, + "strictNullChecks": false, + "noUnusedParameters": false, + "pretty": true, + "allowUnreachableCode": false, + "experimentalDecorators": true, + "suppressImplicitAnyIndexErrors": true, + "outDir": "./dist" + }, + "include": ["./bin/**/*", "./src/**/*", "./test/**/*", "./package.json"], + "compileOnSave": true +} diff --git a/packages/polkabot-plugin-blocthday/yarn.lock b/packages/polkabot-plugin-blocthday/yarn.lock new file mode 100644 index 0000000..a677c13 --- /dev/null +++ b/packages/polkabot-plugin-blocthday/yarn.lock @@ -0,0 +1,3134 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@babel/code-frame@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0.tgz#06e2ab19bdb535385559aabb5ba59729482800f8" + dependencies: + "@babel/highlight" "^7.0.0" + +"@babel/generator@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.0.0.tgz#1efd58bffa951dc846449e58ce3a1d7f02d393aa" + dependencies: + "@babel/types" "^7.0.0" + jsesc "^2.5.1" + lodash "^4.17.10" + source-map "^0.5.0" + trim-right "^1.0.1" + +"@babel/helper-function-name@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.0.0.tgz#a68cc8d04420ccc663dd258f9cc41b8261efa2d4" + dependencies: + "@babel/helper-get-function-arity" "^7.0.0" + "@babel/template" "^7.0.0" + "@babel/types" "^7.0.0" + +"@babel/helper-get-function-arity@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz#83572d4320e2a4657263734113c42868b64e49c3" + dependencies: + "@babel/types" "^7.0.0" + +"@babel/helper-split-export-declaration@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0.tgz#3aae285c0311c2ab095d997b8c9a94cad547d813" + dependencies: + "@babel/types" "^7.0.0" + +"@babel/highlight@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0.tgz#f710c38c8d458e6dd9a201afb637fcb781ce99e4" + dependencies: + chalk "^2.0.0" + esutils "^2.0.2" + js-tokens "^4.0.0" + +"@babel/parser@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.0.0.tgz#697655183394facffb063437ddf52c0277698775" + +"@babel/template@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.0.0.tgz#c2bc9870405959c89a9c814376a2ecb247838c80" + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/parser" "^7.0.0" + "@babel/types" "^7.0.0" + +"@babel/traverse@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.0.0.tgz#b1fe9b6567fdf3ab542cfad6f3b31f854d799a61" + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/generator" "^7.0.0" + "@babel/helper-function-name" "^7.0.0" + "@babel/helper-split-export-declaration" "^7.0.0" + "@babel/parser" "^7.0.0" + "@babel/types" "^7.0.0" + debug "^3.1.0" + globals "^11.1.0" + lodash "^4.17.10" + +"@babel/types@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.0.0.tgz#6e191793d3c854d19c6749989e3bc55f0e962118" + dependencies: + esutils "^2.0.2" + lodash "^4.17.10" + to-fast-properties "^2.0.0" + +abbrev@1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" + +acorn-jsx@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-4.1.1.tgz#e8e41e48ea2fe0c896740610ab6a4ffd8add225e" + dependencies: + acorn "^5.0.3" + +acorn@^5.0.3, acorn@^5.6.0: + version "5.7.2" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.2.tgz#91fa871883485d06708800318404e72bfb26dcc5" + +ajv-keywords@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.2.0.tgz#e86b819c602cf8821ad637413698f1dec021847a" + +ajv@^6.0.1, ajv@^6.5.0: + version "6.5.3" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.5.3.tgz#71a569d189ecf4f4f321224fecb166f071dd90f9" + 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" + +ansi-escapes@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.1.0.tgz#f73207bb81207d75fd6c83f125af26eea378ca30" + +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + +ansi-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" + +ansi-styles@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" + +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + dependencies: + color-convert "^1.9.0" + +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" + +aproba@^1.0.3: + version "1.2.0" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" + +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" + dependencies: + delegates "^1.0.0" + readable-stream "^2.0.6" + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + 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-includes@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.0.3.tgz#184b48f62d92d7452bb31b323165c7f8bd02266d" + dependencies: + define-properties "^1.1.2" + es-abstract "^1.7.0" + +array-union@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" + dependencies: + array-uniq "^1.0.1" + +array-uniq@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" + +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: + version "1.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" + +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= + +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== + +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== + +babel-cli@^6.0.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-cli/-/babel-cli-6.26.0.tgz#502ab54874d7db88ad00b887a06383ce03d002f1" + integrity sha1-UCq1SHTX24itALiHoGODzgPQAvE= + dependencies: + babel-core "^6.26.0" + babel-polyfill "^6.26.0" + babel-register "^6.26.0" + babel-runtime "^6.26.0" + commander "^2.11.0" + convert-source-map "^1.5.0" + fs-readdir-recursive "^1.0.0" + glob "^7.1.2" + lodash "^4.17.4" + output-file-sync "^1.1.2" + path-is-absolute "^1.0.1" + slash "^1.0.0" + source-map "^0.5.6" + v8flags "^2.1.1" + optionalDependencies: + chokidar "^1.6.1" + +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" + dependencies: + chalk "^1.1.3" + esutils "^2.0.2" + js-tokens "^3.0.2" + +babel-core@^6.26.0: + version "6.26.3" + resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.3.tgz#b2e2f09e342d0f0c88e2f02e067794125e75c207" + integrity sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA== + dependencies: + babel-code-frame "^6.26.0" + babel-generator "^6.26.0" + babel-helpers "^6.24.1" + babel-messages "^6.23.0" + babel-register "^6.26.0" + babel-runtime "^6.26.0" + babel-template "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + convert-source-map "^1.5.1" + debug "^2.6.9" + json5 "^0.5.1" + lodash "^4.17.4" + minimatch "^3.0.4" + path-is-absolute "^1.0.1" + private "^0.1.8" + slash "^1.0.0" + source-map "^0.5.7" + +babel-eslint@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-9.0.0.tgz#7d9445f81ed9f60aff38115f838970df9f2b6220" + integrity sha512-itv1MwE3TMbY0QtNfeL7wzak1mV47Uy+n6HtSOO4Xd7rvmO+tsGQSgyOEEgo6Y2vHZKZphaoelNeSVj4vkLA1g== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/parser" "^7.0.0" + "@babel/traverse" "^7.0.0" + "@babel/types" "^7.0.0" + eslint-scope "3.7.1" + eslint-visitor-keys "^1.0.0" + +babel-generator@^6.26.0: + version "6.26.1" + resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.1.tgz#1844408d3b8f0d35a404ea7ac180f087a601bd90" + integrity sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA== + dependencies: + babel-messages "^6.23.0" + babel-runtime "^6.26.0" + babel-types "^6.26.0" + detect-indent "^4.0.0" + jsesc "^1.3.0" + lodash "^4.17.4" + source-map "^0.5.7" + trim-right "^1.0.1" + +babel-helper-builder-binary-assignment-operator-visitor@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz#cce4517ada356f4220bcae8a02c2b346f9a56664" + integrity sha1-zORReto1b0IgvK6KAsKzRvmlZmQ= + dependencies: + babel-helper-explode-assignable-expression "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-call-delegate@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz#ece6aacddc76e41c3461f88bfc575bd0daa2df8d" + integrity sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340= + dependencies: + babel-helper-hoist-variables "^6.24.1" + babel-runtime "^6.22.0" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-define-map@^6.24.1: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz#a5f56dab41a25f97ecb498c7ebaca9819f95be5f" + integrity sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8= + dependencies: + babel-helper-function-name "^6.24.1" + babel-runtime "^6.26.0" + babel-types "^6.26.0" + lodash "^4.17.4" + +babel-helper-explode-assignable-expression@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz#f25b82cf7dc10433c55f70592d5746400ac22caa" + integrity sha1-8luCz33BBDPFX3BZLVdGQArCLKo= + dependencies: + babel-runtime "^6.22.0" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-function-name@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz#d3475b8c03ed98242a25b48351ab18399d3580a9" + integrity sha1-00dbjAPtmCQqJbSDUasYOZ01gKk= + dependencies: + babel-helper-get-function-arity "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-get-function-arity@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz#8f7782aa93407c41d3aa50908f89b031b1b6853d" + integrity sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0= + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-hoist-variables@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz#1ecb27689c9d25513eadbc9914a73f5408be7a76" + integrity sha1-HssnaJydJVE+rbyZFKc/VAi+enY= + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-optimise-call-expression@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz#f7a13427ba9f73f8f4fa993c54a97882d1244257" + integrity sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc= + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-regex@^6.24.1: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz#325c59f902f82f24b74faceed0363954f6495e72" + integrity sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI= + dependencies: + babel-runtime "^6.26.0" + babel-types "^6.26.0" + lodash "^4.17.4" + +babel-helper-remap-async-to-generator@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz#5ec581827ad723fecdd381f1c928390676e4551b" + integrity sha1-XsWBgnrXI/7N04HxySg5BnbkVRs= + dependencies: + babel-helper-function-name "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-replace-supers@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz#bf6dbfe43938d17369a213ca8a8bf74b6a90ab1a" + integrity sha1-v22/5Dk40XNpohPKiov3S2qQqxo= + dependencies: + babel-helper-optimise-call-expression "^6.24.1" + babel-messages "^6.23.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helpers@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2" + integrity sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI= + dependencies: + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-messages@^6.23.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" + integrity sha1-8830cDhYA1sqKVHG7F7fbGLyYw4= + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-check-es2015-constants@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz#35157b101426fd2ffd3da3f75c7d1e91835bbf8a" + integrity sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o= + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-syntax-async-functions@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95" + integrity sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU= + +babel-plugin-syntax-exponentiation-operator@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz#9ee7e8337290da95288201a6a57f4170317830de" + integrity sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4= + +babel-plugin-syntax-trailing-function-commas@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz#ba0360937f8d06e40180a43fe0d5616fff532cf3" + integrity sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM= + +babel-plugin-transform-async-to-generator@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz#6536e378aff6cb1d5517ac0e40eb3e9fc8d08761" + integrity sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E= + dependencies: + babel-helper-remap-async-to-generator "^6.24.1" + babel-plugin-syntax-async-functions "^6.8.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-arrow-functions@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz#452692cb711d5f79dc7f85e440ce41b9f244d221" + integrity sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE= + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-block-scoped-functions@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz#bbc51b49f964d70cb8d8e0b94e820246ce3a6141" + integrity sha1-u8UbSflk1wy42OC5ToICRs46YUE= + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-block-scoping@^6.23.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz#d70f5299c1308d05c12f463813b0a09e73b1895f" + integrity sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8= + dependencies: + babel-runtime "^6.26.0" + babel-template "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + lodash "^4.17.4" + +babel-plugin-transform-es2015-classes@^6.23.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz#5a4c58a50c9c9461e564b4b2a3bfabc97a2584db" + integrity sha1-WkxYpQyclGHlZLSyo7+ryXolhNs= + dependencies: + babel-helper-define-map "^6.24.1" + babel-helper-function-name "^6.24.1" + babel-helper-optimise-call-expression "^6.24.1" + babel-helper-replace-supers "^6.24.1" + babel-messages "^6.23.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-computed-properties@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz#6fe2a8d16895d5634f4cd999b6d3480a308159b3" + integrity sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM= + dependencies: + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-destructuring@^6.23.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz#997bb1f1ab967f682d2b0876fe358d60e765c56d" + integrity sha1-mXux8auWf2gtKwh2/jWNYOdlxW0= + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-duplicate-keys@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz#73eb3d310ca969e3ef9ec91c53741a6f1576423e" + integrity sha1-c+s9MQypaePvnskcU3QabxV2Qj4= + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-for-of@^6.23.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz#f47c95b2b613df1d3ecc2fdb7573623c75248691" + integrity sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE= + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-function-name@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz#834c89853bc36b1af0f3a4c5dbaa94fd8eacaa8b" + integrity sha1-g0yJhTvDaxrw86TF26qU/Y6sqos= + dependencies: + babel-helper-function-name "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-literals@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz#4f54a02d6cd66cf915280019a31d31925377ca2e" + integrity sha1-T1SgLWzWbPkVKAAZox0xklN3yi4= + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-modules-amd@^6.22.0, babel-plugin-transform-es2015-modules-amd@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz#3b3e54017239842d6d19c3011c4bd2f00a00d154" + integrity sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ= + dependencies: + babel-plugin-transform-es2015-modules-commonjs "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-modules-commonjs@^6.23.0, babel-plugin-transform-es2015-modules-commonjs@^6.24.1: + version "6.26.2" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz#58a793863a9e7ca870bdc5a881117ffac27db6f3" + integrity sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q== + dependencies: + babel-plugin-transform-strict-mode "^6.24.1" + babel-runtime "^6.26.0" + babel-template "^6.26.0" + babel-types "^6.26.0" + +babel-plugin-transform-es2015-modules-systemjs@^6.23.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz#ff89a142b9119a906195f5f106ecf305d9407d23" + integrity sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM= + dependencies: + babel-helper-hoist-variables "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-modules-umd@^6.23.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz#ac997e6285cd18ed6176adb607d602344ad38468" + integrity sha1-rJl+YoXNGO1hdq22B9YCNErThGg= + dependencies: + babel-plugin-transform-es2015-modules-amd "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-object-super@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz#24cef69ae21cb83a7f8603dad021f572eb278f8d" + integrity sha1-JM72muIcuDp/hgPa0CH1cusnj40= + dependencies: + babel-helper-replace-supers "^6.24.1" + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-parameters@^6.23.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz#57ac351ab49caf14a97cd13b09f66fdf0a625f2b" + integrity sha1-V6w1GrScrxSpfNE7CfZv3wpiXys= + dependencies: + babel-helper-call-delegate "^6.24.1" + babel-helper-get-function-arity "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-shorthand-properties@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz#24f875d6721c87661bbd99a4622e51f14de38aa0" + integrity sha1-JPh11nIch2YbvZmkYi5R8U3jiqA= + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-spread@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz#d6d68a99f89aedc4536c81a542e8dd9f1746f8d1" + integrity sha1-1taKmfia7cRTbIGlQujdnxdG+NE= + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-sticky-regex@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz#00c1cdb1aca71112cdf0cf6126c2ed6b457ccdbc" + integrity sha1-AMHNsaynERLN8M9hJsLta0V8zbw= + dependencies: + babel-helper-regex "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-template-literals@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz#a84b3450f7e9f8f1f6839d6d687da84bb1236d8d" + integrity sha1-qEs0UPfp+PH2g51taH2oS7EjbY0= + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-typeof-symbol@^6.23.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz#dec09f1cddff94b52ac73d505c84df59dcceb372" + integrity sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I= + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-unicode-regex@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz#d38b12f42ea7323f729387f18a7c5ae1faeb35e9" + integrity sha1-04sS9C6nMj9yk4fxinxa4frrNek= + dependencies: + babel-helper-regex "^6.24.1" + babel-runtime "^6.22.0" + regexpu-core "^2.0.0" + +babel-plugin-transform-exponentiation-operator@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz#2ab0c9c7f3098fa48907772bb813fe41e8de3a0e" + integrity sha1-KrDJx/MJj6SJB3cruBP+QejeOg4= + dependencies: + babel-helper-builder-binary-assignment-operator-visitor "^6.24.1" + babel-plugin-syntax-exponentiation-operator "^6.8.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-regenerator@^6.22.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz#e0703696fbde27f0a3efcacf8b4dca2f7b3a8f2f" + integrity sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8= + dependencies: + regenerator-transform "^0.10.0" + +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-polyfill@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-polyfill/-/babel-polyfill-6.26.0.tgz#379937abc67d7895970adc621f284cd966cf2153" + integrity sha1-N5k3q8Z9eJWXCtxiHyhM2WbPIVM= + dependencies: + babel-runtime "^6.26.0" + core-js "^2.5.0" + regenerator-runtime "^0.10.5" + +babel-preset-env@^1.6.1: + version "1.7.0" + resolved "https://registry.yarnpkg.com/babel-preset-env/-/babel-preset-env-1.7.0.tgz#dea79fa4ebeb883cd35dab07e260c1c9c04df77a" + integrity sha512-9OR2afuKDneX2/q2EurSftUYM0xGu4O2D9adAhVfADDhrYDaxXV0rBbevVYoY9n6nyX1PmQW/0jtpJvUNr9CHg== + dependencies: + babel-plugin-check-es2015-constants "^6.22.0" + babel-plugin-syntax-trailing-function-commas "^6.22.0" + babel-plugin-transform-async-to-generator "^6.22.0" + babel-plugin-transform-es2015-arrow-functions "^6.22.0" + babel-plugin-transform-es2015-block-scoped-functions "^6.22.0" + babel-plugin-transform-es2015-block-scoping "^6.23.0" + babel-plugin-transform-es2015-classes "^6.23.0" + babel-plugin-transform-es2015-computed-properties "^6.22.0" + babel-plugin-transform-es2015-destructuring "^6.23.0" + babel-plugin-transform-es2015-duplicate-keys "^6.22.0" + babel-plugin-transform-es2015-for-of "^6.23.0" + babel-plugin-transform-es2015-function-name "^6.22.0" + babel-plugin-transform-es2015-literals "^6.22.0" + babel-plugin-transform-es2015-modules-amd "^6.22.0" + babel-plugin-transform-es2015-modules-commonjs "^6.23.0" + babel-plugin-transform-es2015-modules-systemjs "^6.23.0" + babel-plugin-transform-es2015-modules-umd "^6.23.0" + babel-plugin-transform-es2015-object-super "^6.22.0" + babel-plugin-transform-es2015-parameters "^6.23.0" + babel-plugin-transform-es2015-shorthand-properties "^6.22.0" + babel-plugin-transform-es2015-spread "^6.22.0" + babel-plugin-transform-es2015-sticky-regex "^6.22.0" + babel-plugin-transform-es2015-template-literals "^6.22.0" + babel-plugin-transform-es2015-typeof-symbol "^6.23.0" + babel-plugin-transform-es2015-unicode-regex "^6.22.0" + babel-plugin-transform-exponentiation-operator "^6.22.0" + babel-plugin-transform-regenerator "^6.22.0" + browserslist "^3.2.6" + invariant "^2.2.2" + semver "^5.3.0" + +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.18.0, babel-runtime@^6.22.0, babel-runtime@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" + dependencies: + core-js "^2.4.0" + regenerator-runtime "^0.11.0" + +babel-template@^6.24.1, babel-template@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02" + integrity sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI= + dependencies: + babel-runtime "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + lodash "^4.17.4" + +babel-traverse@^6.24.1, babel-traverse@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee" + integrity sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4= + dependencies: + babel-code-frame "^6.26.0" + babel-messages "^6.23.0" + babel-runtime "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + debug "^2.6.8" + globals "^9.18.0" + invariant "^2.2.2" + lodash "^4.17.4" + +babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" + 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" + +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" + +binary-extensions@^1.0.0: + version "1.11.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.11.0.tgz#46aa1751fb6a2f93ee5e689bb1087d4b14c6c205" + +bn.js@^4.11.8: + version "4.11.8" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + dependencies: + 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" + +browserslist@^3.2.6: + version "3.2.8" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-3.2.8.tgz#b0005361d6471f0f5952797a76fc985f1f978fc6" + integrity sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ== + dependencies: + caniuse-lite "^1.0.30000844" + electron-to-chromium "^1.3.47" + +builtin-modules@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" + +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" + +caller-path@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f" + dependencies: + callsites "^0.2.0" + +callsites@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca" + +caniuse-lite@^1.0.30000844: + version "1.0.30000962" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000962.tgz#6c10c3ab304b89bea905e66adf98c0905088ee44" + integrity sha512-WXYsW38HK+6eaj5IZR16Rn91TGhU3OhbwjKZvJ4HN/XBIABLKfbij9Mnd3pM0VEwZSlltWjoWg3I8FQ0DGgNOA== + +chalk@^1.1.3: + version "1.1.3" + resolved "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + dependencies: + ansi-styles "^2.2.1" + escape-string-regexp "^1.0.2" + has-ansi "^2.0.0" + strip-ansi "^3.0.0" + supports-color "^2.0.0" + +chalk@^2.0.0, chalk@^2.1.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e" + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chardet@^0.4.0: + version "0.4.2" + resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.4.2.tgz#b5473b33dc97c424e5d98dc87d55d4d8a29c8bf2" + +chokidar@^1.6.1: + version "1.7.0" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" + integrity sha1-eY5ol3gVHIB2tLNg5e3SjNortGg= + dependencies: + anymatch "^1.3.0" + async-each "^1.0.0" + glob-parent "^2.0.0" + inherits "^2.0.1" + is-binary-path "^1.0.0" + is-glob "^2.0.0" + path-is-absolute "^1.0.0" + readdirp "^2.0.0" + optionalDependencies: + fsevents "^1.0.0" + +chownr@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.0.1.tgz#e2a75042a9551908bebd25b8523d5f9769d79181" + +circular-json@^0.3.1: + version "0.3.3" + resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.3.tgz#815c99ea84f6809529d2f45791bdf82711352d66" + +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-cursor@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" + dependencies: + restore-cursor "^2.0.0" + +cli-width@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" + +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" + +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" + 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" + +commander@^2.11.0: + version "2.20.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422" + integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ== + +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" + +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" + +contains-path@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" + +convert-source-map@^1.5.0, convert-source-map@^1.5.1: + version "1.6.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.6.0.tgz#51b537a8c43e0f04dec1993bffcdd504e758ac20" + integrity sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A== + dependencies: + safe-buffer "~5.1.1" + +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: + version "2.5.7" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.7.tgz#f972608ff0cead68b841a16a932d0b183791814e" + +core-js@^2.5.0: + version "2.6.5" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.5.tgz#44bc8d249e7fb2ff5d00e0341a7ffb94fbf67895" + integrity sha512-klh/kDpwX8hryYL14M9w/xei6vrv6sE8gTHDG7/T/+SEovB/G4ejwcfE/CBzO6Edsu+OETZMZ3wcX/EjUkrl5A== + +core-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" + +cross-spawn@^6.0.5: + version "6.0.5" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" + dependencies: + nice-try "^1.0.4" + path-key "^2.0.1" + semver "^5.5.0" + shebang-command "^1.2.0" + which "^1.2.9" + +debug-log@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/debug-log/-/debug-log-1.0.1.tgz#2307632d4c04382b8df8a32f70b895046d52745f" + +debug@^2.1.2, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + 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" + dependencies: + ms "2.0.0" + +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" + +deep-is@~0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" + +define-properties@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" + 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" + +deglob@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/deglob/-/deglob-2.1.1.tgz#d268e168727799862e8eac07042e165957c1f3be" + dependencies: + find-root "^1.0.0" + glob "^7.0.5" + ignore "^3.0.9" + pkg-config "^1.1.0" + run-parallel "^1.1.2" + uniq "^1.0.1" + +del@^2.0.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/del/-/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8" + dependencies: + globby "^5.0.0" + is-path-cwd "^1.0.0" + is-path-in-cwd "^1.0.0" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + rimraf "^2.2.8" + +delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + +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" + +doctrine@1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" + dependencies: + esutils "^2.0.2" + isarray "^1.0.0" + +doctrine@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" + dependencies: + esutils "^2.0.2" + +electron-to-chromium@^1.3.47: + version "1.3.125" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.125.tgz#dbde0e95e64ebe322db0eca764d951f885a5aff2" + integrity sha512-XxowpqQxJ4nDwUXHtVtmEhRqBpm2OnjBomZmZtHD0d2Eo0244+Ojezhk3sD/MBSSe2nxCdGQFRXHIsf/LUTL9A== + +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" + dependencies: + is-arrayish "^0.2.1" + +es-abstract@^1.7.0: + version "1.12.0" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.12.0.tgz#9dbbdd27c6856f0001421ca18782d786bf8a6165" + dependencies: + es-to-primitive "^1.1.1" + function-bind "^1.1.1" + has "^1.0.1" + is-callable "^1.1.3" + is-regex "^1.0.4" + +es-to-primitive@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.1.1.tgz#45355248a88979034b6792e19bb81f2b7975dd0d" + dependencies: + is-callable "^1.1.1" + is-date-object "^1.0.1" + is-symbol "^1.0.1" + +escape-string-regexp@^1.0.2, 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" + +eslint-config-standard-jsx@6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/eslint-config-standard-jsx/-/eslint-config-standard-jsx-6.0.2.tgz#90c9aa16ac2c4f8970c13fc7efc608bacd02da70" + +eslint-config-standard@12.0.0: + version "12.0.0" + resolved "https://registry.yarnpkg.com/eslint-config-standard/-/eslint-config-standard-12.0.0.tgz#638b4c65db0bd5a41319f96bba1f15ddad2107d9" + +eslint-import-resolver-node@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz#58f15fb839b8d0576ca980413476aab2472db66a" + dependencies: + debug "^2.6.9" + resolve "^1.5.0" + +eslint-module-utils@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.2.0.tgz#b270362cd88b1a48ad308976ce7fa54e98411746" + dependencies: + debug "^2.6.8" + pkg-dir "^1.0.0" + +eslint-plugin-es@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-es/-/eslint-plugin-es-1.3.1.tgz#5acb2565db4434803d1d46a9b4cbc94b345bd028" + dependencies: + eslint-utils "^1.3.0" + regexpp "^2.0.0" + +eslint-plugin-import@~2.14.0: + version "2.14.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.14.0.tgz#6b17626d2e3e6ad52cfce8807a845d15e22111a8" + dependencies: + contains-path "^0.1.0" + debug "^2.6.8" + doctrine "1.5.0" + eslint-import-resolver-node "^0.3.1" + eslint-module-utils "^2.2.0" + has "^1.0.1" + lodash "^4.17.4" + minimatch "^3.0.3" + read-pkg-up "^2.0.0" + resolve "^1.6.0" + +eslint-plugin-node@~7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-node/-/eslint-plugin-node-7.0.1.tgz#a6e054e50199b2edd85518b89b4e7b323c9f36db" + dependencies: + eslint-plugin-es "^1.3.1" + eslint-utils "^1.3.1" + ignore "^4.0.2" + minimatch "^3.0.4" + resolve "^1.8.1" + semver "^5.5.0" + +eslint-plugin-promise@~4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-4.0.0.tgz#bc15a4aa04fa6116113b6c47488c421821b758fc" + +eslint-plugin-react@~7.11.1: + version "7.11.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.11.1.tgz#c01a7af6f17519457d6116aa94fc6d2ccad5443c" + dependencies: + array-includes "^3.0.3" + doctrine "^2.1.0" + has "^1.0.3" + jsx-ast-utils "^2.0.1" + prop-types "^15.6.2" + +eslint-plugin-standard@~4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-standard/-/eslint-plugin-standard-4.0.0.tgz#f845b45109c99cd90e77796940a344546c8f6b5c" + +eslint-scope@3.7.1: + version "3.7.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.1.tgz#3d63c3edfda02e06e01a452ad88caacc7cdcb6e8" + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + +eslint-scope@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.0.tgz#50bf3071e9338bcdc43331794a0cb533f0136172" + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + +eslint-utils@^1.3.0, eslint-utils@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.3.1.tgz#9a851ba89ee7c460346f97cf8939c7298827e512" + +eslint-visitor-keys@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#3f3180fb2e291017716acb4c9d6d5b5c34a6a81d" + +eslint@~5.4.0: + version "5.4.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-5.4.0.tgz#d068ec03006bb9e06b429dc85f7e46c1b69fac62" + dependencies: + ajv "^6.5.0" + babel-code-frame "^6.26.0" + chalk "^2.1.0" + cross-spawn "^6.0.5" + debug "^3.1.0" + doctrine "^2.1.0" + eslint-scope "^4.0.0" + eslint-utils "^1.3.1" + eslint-visitor-keys "^1.0.0" + espree "^4.0.0" + esquery "^1.0.1" + esutils "^2.0.2" + file-entry-cache "^2.0.0" + functional-red-black-tree "^1.0.1" + glob "^7.1.2" + globals "^11.7.0" + ignore "^4.0.2" + imurmurhash "^0.1.4" + inquirer "^5.2.0" + is-resolvable "^1.1.0" + js-yaml "^3.11.0" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.3.0" + lodash "^4.17.5" + minimatch "^3.0.4" + mkdirp "^0.5.1" + natural-compare "^1.4.0" + optionator "^0.8.2" + path-is-inside "^1.0.2" + pluralize "^7.0.0" + progress "^2.0.0" + regexpp "^2.0.0" + require-uncached "^1.0.3" + semver "^5.5.0" + strip-ansi "^4.0.0" + strip-json-comments "^2.0.1" + table "^4.0.3" + text-table "^0.2.0" + +espree@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/espree/-/espree-4.0.0.tgz#253998f20a0f82db5d866385799d912a83a36634" + dependencies: + acorn "^5.6.0" + acorn-jsx "^4.1.1" + +esprima@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + +esquery@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.1.tgz#406c51658b1f5991a5f9b62b1dc25b00e3e5c708" + dependencies: + estraverse "^4.0.0" + +esrecurse@^4.1.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" + dependencies: + estraverse "^4.1.0" + +estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1: + version "4.2.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" + +esutils@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" + +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" + +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" + +external-editor@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.2.0.tgz#045511cfd8d133f3846673d1047c154e214ad3d5" + dependencies: + chardet "^0.4.0" + iconv-lite "^0.4.17" + 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" + +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" + +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" + +fast-levenshtein@~2.0.4: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + +figures@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" + dependencies: + escape-string-regexp "^1.0.5" + +file-entry-cache@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-2.0.0.tgz#c392990c3e684783d838b8c84a45d8a048458361" + dependencies: + flat-cache "^1.2.1" + object-assign "^4.0.1" + +filename-regex@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" + integrity sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY= + +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" + +find-root@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4" + +find-up@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" + dependencies: + path-exists "^2.0.0" + pinkie-promise "^2.0.0" + +find-up@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + dependencies: + locate-path "^2.0.0" + +flat-cache@^1.2.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.3.0.tgz#d3030b32b38154f4e3b7e9c709f490f7ef97c481" + dependencies: + circular-json "^0.3.1" + del "^2.0.2" + graceful-fs "^4.1.2" + write "^0.2.1" + +for-in@^1.0.1, for-in@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= + +for-own@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" + integrity sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4= + dependencies: + for-in "^1.0.1" + +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" + +fs-minipass@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.5.tgz#06c277218454ec288df77ada54a03b8702aacb9d" + dependencies: + minipass "^2.2.1" + +fs-readdir-recursive@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz#e32fc030a2ccee44a6b5371308da54be0b397d27" + integrity sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA== + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + +fsevents@^1.0.0: + version "1.2.8" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.8.tgz#57ea5320f762cd4696e5e8e87120eccc8b11cacf" + integrity sha512-tPvHgPGB7m40CZ68xqFGkKuzN+RnpGmSV+hgeKxhRpbxdqKXUFJGC3yonBOLzQBcJyGpdZFDfCsdOC2KFsXzeA== + dependencies: + nan "^2.12.1" + node-pre-gyp "^0.12.0" + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + +functional-red-black-tree@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" + +gauge@~2.7.3: + version "2.7.4" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" + 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-stdin@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-6.0.0.tgz#9e09bf712b360ab9225e812048f71fde9c89657b" + +get-value@^2.0.3, get-value@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" + integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= + +glob-base@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" + integrity sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q= + 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@^7.0.3, glob@^7.0.5, glob@^7.1.2: + version "7.1.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" + integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +globals@^11.1.0, globals@^11.7.0: + version "11.7.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.7.0.tgz#a583faa43055b1aca771914bf68258e2fc125673" + +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@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d" + dependencies: + array-union "^1.0.1" + arrify "^1.0.0" + glob "^7.0.3" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +graceful-fs@^4.1.11, graceful-fs@^4.1.4: + version "4.1.15" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00" + integrity sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA== + +graceful-fs@^4.1.2: + version "4.1.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" + +has-ansi@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" + dependencies: + ansi-regex "^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" + +has-unicode@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" + +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.1, has@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + 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: + version "2.7.1" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.7.1.tgz#97f236977bd6e125408930ff6de3eec6281ec047" + +iconv-lite@^0.4.17, iconv-lite@^0.4.4: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + dependencies: + safer-buffer ">= 2.1.2 < 3" + +ignore-walk@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.1.tgz#a83e62e7d272ac0e3b551aaa82831a19b69f82f8" + dependencies: + minimatch "^3.0.4" + +ignore@^3.0.9: + version "3.3.10" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" + +ignore@^4.0.2: + version "4.0.6" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@^2.0.1, inherits@~2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + +ini@~1.3.0: + version "1.3.5" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" + +inquirer@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-5.2.0.tgz#db350c2b73daca77ff1243962e9f22f099685726" + dependencies: + ansi-escapes "^3.0.0" + chalk "^2.0.0" + cli-cursor "^2.1.0" + cli-width "^2.0.0" + external-editor "^2.1.0" + figures "^2.0.0" + lodash "^4.3.0" + mute-stream "0.0.7" + run-async "^2.2.0" + rxjs "^5.5.2" + string-width "^2.1.0" + strip-ansi "^4.0.0" + through "^2.3.6" + +invariant@^2.2.2: + version "2.2.4" + resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" + dependencies: + loose-envify "^1.0.0" + +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" + +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" + dependencies: + binary-extensions "^1.0.0" + +is-buffer@^1.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + +is-builtin-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe" + dependencies: + builtin-modules "^1.0.0" + +is-callable@^1.1.1, is-callable@^1.1.3: + version "1.1.4" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75" + +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" + +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-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: + 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-finite@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" + integrity sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko= + dependencies: + number-is-nan "^1.0.0" + +is-fullwidth-code-point@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" + 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" + +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-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-path-cwd@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d" + +is-path-in-cwd@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz#5ac48b345ef675339bd6c7a48a912110b241cf52" + dependencies: + is-path-inside "^1.0.0" + +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" + dependencies: + path-is-inside "^1.0.1" + +is-plain-object@^2.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-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" + +is-regex@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" + dependencies: + has "^1.0.1" + +is-resolvable@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" + +is-symbol@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.1.tgz#3cc59f00025194b6ab2e38dbae6689256b660572" + +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== + +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" + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + +isobject@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + 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= + +"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" + +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.11.0: + version "3.12.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.12.0.tgz#eaed656ec8344f10f527c6bfa1b6e2244de167d1" + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +jsesc@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" + integrity sha1-RsP+yMGJKxKwgz25vHYiF226s0s= + +jsesc@^2.5.1: + version "2.5.1" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.1.tgz#e421a2a8e20d6b0819df28908f782526b96dd1fe" + +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + +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" + +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" + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + +json5@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" + integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE= + +jsx-ast-utils@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-2.0.1.tgz#e801b1b39985e20fffc87b40e3748080e2dcac7f" + dependencies: + array-includes "^3.0.3" + +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" + 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== + +levn@^0.3.0, levn@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + dependencies: + prelude-ls "~1.1.2" + type-check "~0.3.2" + +load-json-file@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + strip-bom "^3.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" + 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" + dependencies: + p-locate "^2.0.0" + path-exists "^3.0.0" + +lodash@^4.17.10, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.3.0: + version "4.17.10" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.10.tgz#1b7793cf7259ea38fb3661d4d38b3260af8ae4e7" + +loose-envify@^1.0.0, loose-envify@^1.3.1: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + dependencies: + js-tokens "^3.0.0 || ^4.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-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== + +micromatch@^2.1.5: + version "2.3.11" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" + integrity sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU= + dependencies: + arr-diff "^2.0.0" + array-unique "^0.2.1" + braces "^1.8.2" + expand-brackets "^0.1.4" + extglob "^0.3.1" + filename-regex "^2.0.0" + is-extglob "^1.0.0" + is-glob "^2.0.1" + kind-of "^3.0.2" + normalize-path "^2.0.1" + object.omit "^2.0.0" + parse-glob "^3.0.4" + regex-cache "^0.4.2" + +micromatch@^3.1.10: + 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" + +mimic-fn@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" + +minimatch@^3.0.3, minimatch@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + 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" + +minimist@^1.1.0, minimist@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" + +minipass@^2.2.1, minipass@^2.3.3: + version "2.3.4" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.4.tgz#4768d7605ed6194d6d576169b9e12ef71e9d9957" + dependencies: + safe-buffer "^5.1.2" + yallist "^3.0.0" + +minizlib@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.1.0.tgz#11e13658ce46bc3a70a267aac58359d1e0c29ceb" + dependencies: + minipass "^2.2.1" + +mixin-deep@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.1.tgz#a49e7268dce1a0d9698e45326c5626df3543d0fe" + integrity sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ== + dependencies: + for-in "^1.0.2" + is-extendable "^1.0.1" + +mkdirp@^0.5.0, mkdirp@^0.5.1: + version "0.5.1" + resolved "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" + dependencies: + minimist "0.0.8" + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + +mute-stream@0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" + +nan@^2.12.1: + version "2.13.2" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.13.2.tgz#f51dc7ae66ba7d5d55e1e6d4d8092e802c9aefe7" + integrity sha512-TghvYc72wlMGMVMluVo9WRJc0mB8KxxF/gZ4YYFy7V2ZQX9l7rgbPg7vjS9mt6U5HXODVFVI2bOduCzwOMv/lw== + +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" + +needle@^2.2.1: + version "2.2.2" + resolved "https://registry.yarnpkg.com/needle/-/needle-2.2.2.tgz#1120ca4c41f2fcc6976fd28a8968afe239929418" + dependencies: + debug "^2.1.2" + iconv-lite "^0.4.4" + sax "^1.2.4" + +nice-try@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" + +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" + dependencies: + abbrev "1" + osenv "^0.1.4" + +normalize-package-data@^2.3.2: + version "2.4.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f" + dependencies: + hosted-git-info "^2.1.4" + is-builtin-module "^1.0.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + +normalize-path@^2.0.0, normalize-path@^2.0.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" + +npm-bundled@^1.0.1: + version "1.0.5" + resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.5.tgz#3c1732b7ba936b3a10325aef616467c0ccbcc979" + +npm-packlist@^1.1.6: + version "1.1.11" + resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.1.11.tgz#84e8c683cbe7867d34b1d357d893ce29e28a02de" + dependencies: + ignore-walk "^3.0.1" + npm-bundled "^1.0.1" + +npmlog@^4.0.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" + 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" + +object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + +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-keys@^1.0.12: + version "1.0.12" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.12.tgz#09c53855377575310cca62f55bb334abff7b3ed2" + +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.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" + +once@^1.3.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + dependencies: + wrappy "1" + +onetime@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" + dependencies: + mimic-fn "^1.0.0" + +optionator@^0.8.2: + version "0.8.2" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" + dependencies: + deep-is "~0.1.3" + fast-levenshtein "~2.0.4" + levn "~0.3.0" + prelude-ls "~1.1.2" + type-check "~0.3.2" + wordwrap "~1.0.0" + +os-homedir@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" + +os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + +osenv@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.0" + +output-file-sync@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/output-file-sync/-/output-file-sync-1.1.2.tgz#d0a33eefe61a205facb90092e826598d5245ce76" + integrity sha1-0KM+7+YaIF+suQCS6CZZjVJFznY= + dependencies: + graceful-fs "^4.1.4" + mkdirp "^0.5.1" + object-assign "^4.1.0" + +p-limit@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" + dependencies: + p-try "^1.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" + dependencies: + p-limit "^1.1.0" + +p-try@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" + +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" + 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" + dependencies: + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" + +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" + 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" + +path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + +path-is-inside@^1.0.1, path-is-inside@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" + +path-key@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + +path-parse@^1.0.5: + version "1.0.6" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" + +path-type@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" + dependencies: + pify "^2.0.0" + +pify@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + +pify@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" + +pinkie-promise@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" + 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" + +pkg-conf@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/pkg-conf/-/pkg-conf-2.1.0.tgz#2126514ca6f2abfebd168596df18ba57867f0058" + dependencies: + find-up "^2.0.0" + load-json-file "^4.0.0" + +pkg-config@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/pkg-config/-/pkg-config-1.1.1.tgz#557ef22d73da3c8837107766c52eadabde298fe4" + dependencies: + debug-log "^1.0.0" + find-root "^1.0.0" + xtend "^4.0.1" + +pkg-dir@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-1.0.0.tgz#7a4b508a8d5bb2d629d447056ff4e9c9314cf3d4" + dependencies: + find-up "^1.0.0" + +pluralize@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-7.0.0.tgz#298b89df8b93b0221dbf421ad2b1b1ea23fc6777" + +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" + +preserve@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" + integrity sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks= + +private@^0.1.6, private@^0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" + +process-nextick-args@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" + +progress@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.0.tgz#8a1be366bf8fc23db2bd23f10c6fe920b4389d1f" + +prop-types@^15.6.2: + version "15.6.2" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.6.2.tgz#05d5ca77b4453e985d60fc7ff8c859094a497102" + dependencies: + loose-envify "^1.3.1" + object-assign "^4.1.1" + +punycode@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + +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" + +rc@^1.2.7: + version "1.2.8" + resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" + dependencies: + deep-extend "^0.6.0" + ini "~1.3.0" + minimist "^1.2.0" + strip-json-comments "~2.0.1" + +read-pkg-up@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" + dependencies: + find-up "^2.0.0" + read-pkg "^2.0.0" + +read-pkg@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" + dependencies: + load-json-file "^2.0.0" + normalize-package-data "^2.3.2" + path-type "^2.0.0" + +readable-stream@^2.0.2, readable-stream@^2.0.6: + version "2.3.6" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" + 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" + +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" + +regenerate@^1.2.1: + version "1.4.0" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" + +regenerator-runtime@^0.10.5: + version "0.10.5" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz#336c3efc1220adcedda2c9fab67b5a7955a33658" + integrity sha1-M2w+/BIgrc7dosn6tntaeVWjNlg= + +regenerator-runtime@^0.11.0: + version "0.11.1" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" + +regenerator-transform@^0.10.0: + version "0.10.1" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.10.1.tgz#1e4996837231da8b7f3cf4114d71b5691a0680dd" + integrity sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q== + dependencies: + babel-runtime "^6.18.0" + babel-types "^6.19.0" + private "^0.1.6" + +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" + +regexpp@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.0.tgz#b2a7534a85ca1b033bcf5ce9ff8e56d4e0755365" + +regexpu-core@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240" + integrity sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA= + dependencies: + regenerate "^1.2.1" + regjsgen "^0.2.0" + regjsparser "^0.1.4" + +regjsgen@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" + integrity sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc= + +regjsparser@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c" + integrity sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw= + dependencies: + jsesc "~0.5.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" + +repeat-element@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" + +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" + integrity sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo= + dependencies: + is-finite "^1.0.0" + +require-uncached@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3" + dependencies: + caller-path "^0.1.0" + resolve-from "^1.0.0" + +resolve-from@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226" + +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.5.0, resolve@^1.6.0, resolve@^1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.8.1.tgz#82f1ec19a423ac1fbd080b0bab06ba36e84a7a26" + dependencies: + path-parse "^1.0.5" + +restore-cursor@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" + 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.2.8, rimraf@^2.6.1: + version "2.6.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" + dependencies: + glob "^7.0.5" + +run-async@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0" + dependencies: + is-promise "^2.1.0" + +run-parallel@^1.1.2: + version "1.1.9" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.1.9.tgz#c9dd3a7cf9f4b2c4b6244e173a6ed866e61dd679" + +rxjs@^5.5.2: + version "5.5.12" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-5.5.12.tgz#6fa61b8a77c3d793dbaf270bee2f43f652d741cc" + dependencies: + symbol-observable "1.0.1" + +safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + +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": + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + +sax@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" + +"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.5.0: + version "5.5.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.1.tgz#7dfdd8814bdb7cabc7be0fb1d734cfb66c940477" + +set-blocking@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + +set-value@^0.4.3: + version "0.4.3" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz#7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1" + integrity sha1-fbCPnT0i3H945Trzw79GZuzfzPE= + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.1" + to-object-path "^0.3.0" + +set-value@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.0.tgz#71ae4a88f0feefbbf52d1ea604f3fb315ebb6274" + integrity sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg== + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.3" + split-string "^3.0.1" + +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + 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" + +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" + +slash@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" + integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU= + +slice-ansi@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-1.0.0.tgz#044f1a49d8842ff307aad6b505ed178bd950134d" + dependencies: + is-fullwidth-code-point "^2.0.0" + +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" + +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-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, source-map@^0.5.7: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + +spdx-correct@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.0.0.tgz#05a5b4d7153a195bc92c3c425b69f3b2a9524c82" + dependencies: + spdx-expression-parse "^3.0.0" + spdx-license-ids "^3.0.0" + +spdx-exceptions@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz#2c7ae61056c714a5b9b9b2b2af7d311ef5c78fe9" + +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" + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + +spdx-license-ids@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz#7a7cd28470cc6d3a1cfe6d66886f6bc430d3ac87" + +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" + +standard-engine@~9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/standard-engine/-/standard-engine-9.0.0.tgz#d3a3d74c4c1b91f51a1e66362465261ca7610316" + dependencies: + deglob "^2.1.0" + get-stdin "^6.0.0" + minimist "^1.1.0" + pkg-conf "^2.0.0" + +standard@12.0.1: + version "12.0.1" + resolved "https://registry.yarnpkg.com/standard/-/standard-12.0.1.tgz#0fc5a8aa6c34c546c5562aae644242b24dae2e61" + dependencies: + eslint "~5.4.0" + eslint-config-standard "12.0.0" + eslint-config-standard-jsx "6.0.2" + eslint-plugin-import "~2.14.0" + eslint-plugin-node "~7.0.1" + eslint-plugin-promise "~4.0.0" + eslint-plugin-react "~7.11.1" + eslint-plugin-standard "~4.0.0" + standard-engine "~9.0.0" + +static-extend@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" + integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= + dependencies: + define-property "^0.2.5" + object-copy "^0.1.0" + +string-width@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" + dependencies: + code-point-at "^1.0.0" + is-fullwidth-code-point "^1.0.0" + strip-ansi "^3.0.0" + +"string-width@^1.0.2 || 2", 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" + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^4.0.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + 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" + 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" + dependencies: + ansi-regex "^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" + +strip-json-comments@^2.0.1, 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" + +supports-color@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + 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" + +table@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/table/-/table-4.0.3.tgz#00b5e2b602f1794b9acaf9ca908a76386a7813bc" + dependencies: + ajv "^6.0.1" + ajv-keywords "^3.0.0" + chalk "^2.1.0" + lodash "^4.17.4" + slice-ansi "1.0.0" + string-width "^2.1.1" + +tar@^4: + version "4.4.6" + resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.6.tgz#63110f09c00b4e60ac8bcfe1bf3c8660235fbc9b" + dependencies: + chownr "^1.0.1" + fs-minipass "^1.2.5" + minipass "^2.3.3" + minizlib "^1.1.0" + mkdirp "^0.5.0" + safe-buffer "^5.1.2" + yallist "^3.0.2" + +text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + +through@^2.3.6: + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + +tmp@^0.0.33: + version "0.0.33" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + dependencies: + os-tmpdir "~1.0.2" + +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" + +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" + +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" + +trim-right@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" + +type-check@~0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" + dependencies: + prelude-ls "~1.1.2" + +union-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4" + integrity sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ= + dependencies: + arr-union "^3.1.0" + get-value "^2.0.6" + is-extendable "^0.1.1" + set-value "^0.4.3" + +uniq@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" + +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" + +uri-js@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" + 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= + +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== + +user-home@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/user-home/-/user-home-1.1.1.tgz#2b5be23a32b63a7c9deb8d0f28d485724a3df190" + integrity sha1-K1viOjK2Onyd640PKNSFcko98ZA= + +util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + +v8flags@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-2.1.1.tgz#aab1a1fa30d45f88dd321148875ac02c0b55e5b4" + integrity sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ= + dependencies: + user-home "^1.1.1" + +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" + dependencies: + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" + +which@^1.2.9: + version "1.3.1" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + 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" + dependencies: + string-width "^1.0.2 || 2" + +wordwrap@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + +write@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/write/-/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757" + dependencies: + mkdirp "^0.5.1" + +xtend@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" + +yallist@^3.0.0, yallist@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.2.tgz#8452b4bb7e83c7c188d8041c1a837c773d6d8bb9" -- GitLab From 0ea8015ba633f1817ec8af8c4d25329496e16e44 Mon Sep 17 00:00:00 2001 From: Will Date: Sat, 25 Jan 2020 00:36:39 +0100 Subject: [PATCH 21/86] Fix blockstats --- packages/polkabot-plugin-blockstats | 1 - .../polkabot-plugin-blockstats/.gitignore | 5 + .../polkabot-plugin-blockstats/.gitlab-ci.yml | 77 + packages/polkabot-plugin-blockstats/.npmrc | 1 + packages/polkabot-plugin-blockstats/.nvmrc | 1 + .../polkabot-plugin-blockstats/README.adoc | 13 + .../polkabot-plugin-blockstats/package.json | 45 + .../polkabot-plugin-blockstats/src/index.ts | 120 + .../polkabot-plugin-blockstats/tsconfig.json | 27 + packages/polkabot-plugin-blockstats/yarn.lock | 3322 +++++++++++++++++ packages/polkabot/src/index.ts | 3 +- 11 files changed, 3612 insertions(+), 3 deletions(-) delete mode 160000 packages/polkabot-plugin-blockstats create mode 100644 packages/polkabot-plugin-blockstats/.gitignore create mode 100644 packages/polkabot-plugin-blockstats/.gitlab-ci.yml create mode 100644 packages/polkabot-plugin-blockstats/.npmrc create mode 100644 packages/polkabot-plugin-blockstats/.nvmrc create mode 100644 packages/polkabot-plugin-blockstats/README.adoc create mode 100644 packages/polkabot-plugin-blockstats/package.json create mode 100644 packages/polkabot-plugin-blockstats/src/index.ts create mode 100644 packages/polkabot-plugin-blockstats/tsconfig.json create mode 100644 packages/polkabot-plugin-blockstats/yarn.lock diff --git a/packages/polkabot-plugin-blockstats b/packages/polkabot-plugin-blockstats deleted file mode 160000 index df90a40..0000000 --- a/packages/polkabot-plugin-blockstats +++ /dev/null @@ -1 +0,0 @@ -Subproject commit df90a40f31bfeec5b771d56af4908c105f56bd4b diff --git a/packages/polkabot-plugin-blockstats/.gitignore b/packages/polkabot-plugin-blockstats/.gitignore new file mode 100644 index 0000000..8fb2a3d --- /dev/null +++ b/packages/polkabot-plugin-blockstats/.gitignore @@ -0,0 +1,5 @@ +.DS_Store +node_modules +package-lock.json +dist/ +yarn-error.log diff --git a/packages/polkabot-plugin-blockstats/.gitlab-ci.yml b/packages/polkabot-plugin-blockstats/.gitlab-ci.yml new file mode 100644 index 0000000..7ba2b50 --- /dev/null +++ b/packages/polkabot-plugin-blockstats/.gitlab-ci.yml @@ -0,0 +1,77 @@ +image: node:11 + +before_script: + # install ssh-agent + # - 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )' + # # run ssh-agent + # - eval $(ssh-agent -s) + # # add ssh key stored in SSH_PRIVATE_KEY variable to the agent store + # - ssh-add <(echo "$SSH_PRIVATE_KEY" | base64 -d) + # # disable host key checking (NOTE: makes you susceptible to man-in-the-middle attacks) + # # WARNING: use only in docker container, if you use it with shell you will overwrite your user's ssh config + # - mkdir -p ~/.ssh + # - echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config + - npm install -g yarn + - yarn + +stages: + - lint + - test + - build + +# http://docs.gitlab.com/ce/ci/yaml/README.html#cache +cache: + paths: + - node_modules/ + +lint: + stage: lint + script: + - yarn lint + +# Supported node versions can be found here: +# https://github.com/nodejs/LTS#lts_schedule +# test:node:7: +# image: node:7 +# script: +# - yarn build +# - npm test +# only: +# - $NIGHLTY + +# test:node:8: +# image: node:8 +# script: +# - yarn build +# - npm test + +# test:node:9: +# image: node:9 +# script: +# - yarn build +# - npm test +# only: +# - $NIGHLTY + +test:node:11: + image: node:11 + script: + - npm install -g + +build: + stage: build + script: yarn build + +# build:doc: +# stage: build +# script: yarn build:doc + +# build:docker: +# image: docker:git +# services: +# - docker:dind +# stage: build +# before_script: +# - echo "Skipping before_script" +# script: +# - docker build -t chevdor/polkabot . diff --git a/packages/polkabot-plugin-blockstats/.npmrc b/packages/polkabot-plugin-blockstats/.npmrc new file mode 100644 index 0000000..43c97e7 --- /dev/null +++ b/packages/polkabot-plugin-blockstats/.npmrc @@ -0,0 +1 @@ +package-lock=false diff --git a/packages/polkabot-plugin-blockstats/.nvmrc b/packages/polkabot-plugin-blockstats/.nvmrc new file mode 100644 index 0000000..b4de394 --- /dev/null +++ b/packages/polkabot-plugin-blockstats/.nvmrc @@ -0,0 +1 @@ +11 diff --git a/packages/polkabot-plugin-blockstats/README.adoc b/packages/polkabot-plugin-blockstats/README.adoc new file mode 100644 index 0000000..0390532 --- /dev/null +++ b/packages/polkabot-plugin-blockstats/README.adoc @@ -0,0 +1,13 @@ + += BlockStats + +This plugin computes stats from time to time. Under normal circumstances, it will not show anything. If the network seems to be running slower than usual, the stats will be sent to the Matrix room. + +Messages look like: + +---- +WARNING: Average block time exceeded 5.000s +Stats for the last 10 at #1184470: + - Nb Blocks: 10 + - Average Block time: 6.705s +---- diff --git a/packages/polkabot-plugin-blockstats/package.json b/packages/polkabot-plugin-blockstats/package.json new file mode 100644 index 0000000..a620bfc --- /dev/null +++ b/packages/polkabot-plugin-blockstats/package.json @@ -0,0 +1,45 @@ +{ + "name": "polkabot-plugin-blockstats", + "version": "0.4.4", + "description": "", + "main": "dist/src/index.js", + "scripts": { + "lint": "standard", + "start": "babel-node ./src/index.js", + "build": "tsc --build tsconfig.json", + "prepublishOnly": "npm run build", + "clean": "rm -rf dist node_modules", + "postinstall": "npm run build" + }, + "author": "Chevdor ", + "license": "ISC", + "dependencies": { + "bn.js": "^4.11.8" + }, + "devDependencies": { + "babel-cli": "^6.26.0", + "babel-core": "^6.26.3", + "babel-eslint": "10.0.1", + "babel-polyfill": "^6.26.0", + "babel-preset-env": "^1.7.0", + "babel-register": "^6.26.0", + "standard": "12.0.1" + }, + "repository": { + "type": "git", + "url": "https://gitlab.com/Polkabot/polkabot-plugin-blockstats.git" + }, + "standard": { + "parser": "babel-eslint", + "ignore": [ + "dist/" + ], + "env": [ + "mocha" + ] + }, + "engines": { + "node": ">=10.13.0", + "yarn": "^1.10.1" + } +} diff --git a/packages/polkabot-plugin-blockstats/src/index.ts b/packages/polkabot-plugin-blockstats/src/index.ts new file mode 100644 index 0000000..7b76fd7 --- /dev/null +++ b/packages/polkabot-plugin-blockstats/src/index.ts @@ -0,0 +1,120 @@ +#!/usr/bin/env node + +import BN from "bn.js"; +import { + PolkabotWorker, + NotifierMessage, + NotifierSpecs, + PluginModule, + PluginContext +} from "@polkabot/api/src/plugin.interface"; + +type Data = { + tmsp: number; + blockTime: number; + header: any; +}; + +export default class BlocsStats extends PolkabotWorker { + public config: { + NB_BLOCKS: number; // Size of the rolling buffer + THRESHOLD: number; // We remain silent unless the average goes above this value + LOG_NTH_BLOCK: number; + }; + + private data: Data[]; + private previousData?: Data; + private stats; + + public constructor(mod: PluginModule, context: PluginContext, config?) { + super(mod, context, config); + + // TODO replace the following by ENv + this.config = { + NB_BLOCKS: 10, // Size of the rolling buffer + THRESHOLD: 2.0, // We remain silent unless the average goes above this value + LOG_NTH_BLOCK: 5 + }; + + this.data = []; + this.previousData = null; + } + + public start(): void { + console.log("BlocksStats - Starting with config:", this.config); + this.watchChain().catch(error => { + console.error("BlocksStats - Error subscribing to chain head: ", error); + }); + } + + async watchChain() { + // Reference: https://polkadot.js.org/api/examples/promise/02_listen_to_blocks/ + await this.context.polkadot.rpc.chain.subscribeNewHeads(header => { + const bnBlockNumber: BN = header.number.unwrap().toBn(); + + if (bnBlockNumber.mod(new BN(this.config.LOG_NTH_BLOCK)).toString(10) === "0") { + console.log(`BlocksStats - Chain is at block: #${header.number.unwrap().toBn()}`, this.stats); + } + + this.addBlock(header); + + if (bnBlockNumber.mod(new BN(this.config.NB_BLOCKS)).toString(10) === "0") { + this.computeStats(); + this.alert(bnBlockNumber); + } + }); + } + + addBlock(header) { + const data: Data = { + tmsp: new Date().getTime(), + blockTime: this.previousData ? new Date().getTime() - this.previousData.tmsp : null, + header + }; + this.data.push(data); + + while (this.data.length > this.config.NB_BLOCKS) { + this.data.shift(); + } + this.previousData = data; + } + + averageBlockTime() { + const sum = (accumulator, currentValue) => accumulator + currentValue; + return this.data.map(el => el.blockTime || 0).reduce(sum) / this.data.filter(item => item.blockTime > 0).length / 1000; + } + + computeStats() { + this.stats = { + nbBlock: this.data.length, + averageBlockTime: this.averageBlockTime() + }; + } + + alert(bnBlockNumber) { + if (this.stats.averageBlockTime >= this.config.THRESHOLD) { + const notifierMessage: NotifierMessage = { + message: `WARNING: Average block time exceeded ${this.config.THRESHOLD.toFixed(3)}s +Stats for the last ${this.config.NB_BLOCKS} at #${bnBlockNumber.toString(10)}: + - Nb Blocks: ${this.stats.nbBlock} + - Average Block time: ${this.stats.averageBlockTime.toFixed(3)}s` + }; + + const notifierSpecs: NotifierSpecs = { + notifiers: ["matrix", "twitter", "demo", "all"] + }; + + this.context.polkabot.notify(notifierMessage, notifierSpecs); + + // this.context.matrix + // .sendTextMessage( + // this.context.config.matrix.roomId, + // `WARNING: Average block time exceeded ${this.config.THRESHOLD.toFixed(3)}s + // Stats for the last ${this.config.NB_BLOCKS} at #${bnBlockNumber.toString(10)}: + // - Nb Blocks: ${this.stats.nbBlock} + // - Average Block time: ${this.stats.averageBlockTime.toFixed(3)}s` + // ) + // .finally(function() {}); + } + } +} diff --git a/packages/polkabot-plugin-blockstats/tsconfig.json b/packages/polkabot-plugin-blockstats/tsconfig.json new file mode 100644 index 0000000..a7dac9c --- /dev/null +++ b/packages/polkabot-plugin-blockstats/tsconfig.json @@ -0,0 +1,27 @@ +{ + "compilerOptions": { + "module": "commonjs", + "moduleResolution": "node", + "esModuleInterop": true, + "resolveJsonModule": true, + "allowJs": true, + "target": "es5", + "noImplicitAny": false, + "sourceMap": true, + "preserveConstEnums": true, + "lib": ["es2015", "dom"], + "noUnusedLocals": false, + "noImplicitReturns": true, + "noImplicitThis": true, + "alwaysStrict": true, + "strictNullChecks": false, + "noUnusedParameters": false, + "pretty": true, + "allowUnreachableCode": false, + "experimentalDecorators": true, + "suppressImplicitAnyIndexErrors": true, + "outDir": "./dist" + }, + "include": ["./bin/**/*", "./src/**/*", "./test/**/*", "./package.json"], + "compileOnSave": true +} diff --git a/packages/polkabot-plugin-blockstats/yarn.lock b/packages/polkabot-plugin-blockstats/yarn.lock new file mode 100644 index 0000000..f12065e --- /dev/null +++ b/packages/polkabot-plugin-blockstats/yarn.lock @@ -0,0 +1,3322 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@babel/code-frame@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0.tgz#06e2ab19bdb535385559aabb5ba59729482800f8" + integrity sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA== + dependencies: + "@babel/highlight" "^7.0.0" + +"@babel/generator@^7.4.0": + version "7.4.0" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.4.0.tgz#c230e79589ae7a729fd4631b9ded4dc220418196" + integrity sha512-/v5I+a1jhGSKLgZDcmAUZ4K/VePi43eRkUs3yePW1HB1iANOD5tqJXwGSG4BZhSksP8J9ejSlwGeTiiOFZOrXQ== + dependencies: + "@babel/types" "^7.4.0" + jsesc "^2.5.1" + lodash "^4.17.11" + source-map "^0.5.0" + trim-right "^1.0.1" + +"@babel/helper-function-name@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz#a0ceb01685f73355d4360c1247f582bfafc8ff53" + integrity sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw== + dependencies: + "@babel/helper-get-function-arity" "^7.0.0" + "@babel/template" "^7.1.0" + "@babel/types" "^7.0.0" + +"@babel/helper-get-function-arity@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz#83572d4320e2a4657263734113c42868b64e49c3" + integrity sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ== + dependencies: + "@babel/types" "^7.0.0" + +"@babel/helper-split-export-declaration@^7.4.0": + version "7.4.0" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.0.tgz#571bfd52701f492920d63b7f735030e9a3e10b55" + integrity sha512-7Cuc6JZiYShaZnybDmfwhY4UYHzI6rlqhWjaIqbsJGsIqPimEYy5uh3akSRLMg65LSdSEnJ8a8/bWQN6u2oMGw== + dependencies: + "@babel/types" "^7.4.0" + +"@babel/highlight@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0.tgz#f710c38c8d458e6dd9a201afb637fcb781ce99e4" + integrity sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw== + dependencies: + chalk "^2.0.0" + esutils "^2.0.2" + js-tokens "^4.0.0" + +"@babel/parser@^7.0.0", "@babel/parser@^7.4.0", "@babel/parser@^7.4.3": + version "7.4.3" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.4.3.tgz#eb3ac80f64aa101c907d4ce5406360fe75b7895b" + integrity sha512-gxpEUhTS1sGA63EGQGuA+WESPR/6tz6ng7tSHFCmaTJK/cGK8y37cBTspX+U2xCAue2IQVvF6Z0oigmjwD8YGQ== + +"@babel/template@^7.1.0": + version "7.4.0" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.4.0.tgz#12474e9c077bae585c5d835a95c0b0b790c25c8b" + integrity sha512-SOWwxxClTTh5NdbbYZ0BmaBVzxzTh2tO/TeLTbF6MO6EzVhHTnff8CdBXx3mEtazFBoysmEM6GU/wF+SuSx4Fw== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/parser" "^7.4.0" + "@babel/types" "^7.4.0" + +"@babel/traverse@^7.0.0": + version "7.4.3" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.4.3.tgz#1a01f078fc575d589ff30c0f71bf3c3d9ccbad84" + integrity sha512-HmA01qrtaCwwJWpSKpA948cBvU5BrmviAief/b3AVw936DtcdsTexlbyzNuDnthwhOQ37xshn7hvQaEQk7ISYQ== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/generator" "^7.4.0" + "@babel/helper-function-name" "^7.1.0" + "@babel/helper-split-export-declaration" "^7.4.0" + "@babel/parser" "^7.4.3" + "@babel/types" "^7.4.0" + debug "^4.1.0" + globals "^11.1.0" + lodash "^4.17.11" + +"@babel/types@^7.0.0", "@babel/types@^7.4.0": + version "7.4.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.4.0.tgz#670724f77d24cce6cc7d8cf64599d511d164894c" + integrity sha512-aPvkXyU2SPOnztlgo8n9cEiXW755mgyvueUPcpStqdzoSPm0fjO0vQBjLkt3JKJW7ufikfcnMTTPsN1xaTsBPA== + dependencies: + esutils "^2.0.2" + lodash "^4.17.11" + to-fast-properties "^2.0.0" + +abbrev@1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" + integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== + +acorn-jsx@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.0.1.tgz#32a064fd925429216a09b141102bfdd185fae40e" + integrity sha512-HJ7CfNHrfJLlNTzIEUTj43LNWGkqpRLxm3YjAlcD0ACydk9XynzYsCBHxut+iqt+1aBXkx9UP/w/ZqMr13XIzg== + +acorn@^6.0.2: + version "6.1.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.1.1.tgz#7d25ae05bb8ad1f9b699108e1094ecd7884adc1f" + integrity sha512-jPTiwtOxaHNaAPg/dmrJ/beuzLRnXtB0kQPQ8JpotKJgTB6rX6c8mlf315941pyjBSaPg8NHXS9fhP4u17DpGA== + +ajv-keywords@^3.0.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.4.0.tgz#4b831e7b531415a7cc518cd404e73f6193c6349d" + integrity sha512-aUjdRFISbuFOl0EIZc+9e4FfZp0bDZgAdOOf30bJmw8VM9v84SHyVyxDfbWxpGYbdZD/9XoKxfHVNmxPkhwyGw== + +ajv@^6.0.1, ajv@^6.5.0: + version "6.10.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.0.tgz#90d0d54439da587cd7e843bfb7045f50bd22bdf1" + integrity sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg== + dependencies: + fast-deep-equal "^2.0.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ansi-escapes@^3.0.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-styles@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" + integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= + +ansi-styles@^3.2.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" + +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" + +aproba@^1.0.3: + version "1.2.0" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" + integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== + +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" + +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@^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-includes@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.0.3.tgz#184b48f62d92d7452bb31b323165c7f8bd02266d" + integrity sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0= + dependencies: + define-properties "^1.1.2" + es-abstract "^1.7.0" + +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= + +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= + +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== + +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== + +babel-cli@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-cli/-/babel-cli-6.26.0.tgz#502ab54874d7db88ad00b887a06383ce03d002f1" + integrity sha1-UCq1SHTX24itALiHoGODzgPQAvE= + dependencies: + babel-core "^6.26.0" + babel-polyfill "^6.26.0" + babel-register "^6.26.0" + babel-runtime "^6.26.0" + commander "^2.11.0" + convert-source-map "^1.5.0" + fs-readdir-recursive "^1.0.0" + glob "^7.1.2" + lodash "^4.17.4" + output-file-sync "^1.1.2" + path-is-absolute "^1.0.1" + slash "^1.0.0" + source-map "^0.5.6" + v8flags "^2.1.1" + optionalDependencies: + chokidar "^1.6.1" + +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.26.0, babel-core@^6.26.3: + version "6.26.3" + resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.3.tgz#b2e2f09e342d0f0c88e2f02e067794125e75c207" + integrity sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA== + dependencies: + babel-code-frame "^6.26.0" + babel-generator "^6.26.0" + babel-helpers "^6.24.1" + babel-messages "^6.23.0" + babel-register "^6.26.0" + babel-runtime "^6.26.0" + babel-template "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + convert-source-map "^1.5.1" + debug "^2.6.9" + json5 "^0.5.1" + lodash "^4.17.4" + minimatch "^3.0.4" + path-is-absolute "^1.0.1" + private "^0.1.8" + slash "^1.0.0" + source-map "^0.5.7" + +babel-eslint@10.0.1: + version "10.0.1" + resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-10.0.1.tgz#919681dc099614cd7d31d45c8908695092a1faed" + integrity sha512-z7OT1iNV+TjOwHNLLyJk+HN+YVWX+CLE6fPD2SymJZOZQBs+QIexFjhm4keGTm8MW9xr4EC9Q0PbaLB24V5GoQ== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/parser" "^7.0.0" + "@babel/traverse" "^7.0.0" + "@babel/types" "^7.0.0" + eslint-scope "3.7.1" + eslint-visitor-keys "^1.0.0" + +babel-generator@^6.26.0: + version "6.26.1" + resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.1.tgz#1844408d3b8f0d35a404ea7ac180f087a601bd90" + integrity sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA== + dependencies: + babel-messages "^6.23.0" + babel-runtime "^6.26.0" + babel-types "^6.26.0" + detect-indent "^4.0.0" + jsesc "^1.3.0" + lodash "^4.17.4" + source-map "^0.5.7" + trim-right "^1.0.1" + +babel-helper-builder-binary-assignment-operator-visitor@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz#cce4517ada356f4220bcae8a02c2b346f9a56664" + integrity sha1-zORReto1b0IgvK6KAsKzRvmlZmQ= + dependencies: + babel-helper-explode-assignable-expression "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-call-delegate@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz#ece6aacddc76e41c3461f88bfc575bd0daa2df8d" + integrity sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340= + dependencies: + babel-helper-hoist-variables "^6.24.1" + babel-runtime "^6.22.0" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-define-map@^6.24.1: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz#a5f56dab41a25f97ecb498c7ebaca9819f95be5f" + integrity sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8= + dependencies: + babel-helper-function-name "^6.24.1" + babel-runtime "^6.26.0" + babel-types "^6.26.0" + lodash "^4.17.4" + +babel-helper-explode-assignable-expression@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz#f25b82cf7dc10433c55f70592d5746400ac22caa" + integrity sha1-8luCz33BBDPFX3BZLVdGQArCLKo= + dependencies: + babel-runtime "^6.22.0" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-function-name@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz#d3475b8c03ed98242a25b48351ab18399d3580a9" + integrity sha1-00dbjAPtmCQqJbSDUasYOZ01gKk= + dependencies: + babel-helper-get-function-arity "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-get-function-arity@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz#8f7782aa93407c41d3aa50908f89b031b1b6853d" + integrity sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0= + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-hoist-variables@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz#1ecb27689c9d25513eadbc9914a73f5408be7a76" + integrity sha1-HssnaJydJVE+rbyZFKc/VAi+enY= + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-optimise-call-expression@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz#f7a13427ba9f73f8f4fa993c54a97882d1244257" + integrity sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc= + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-regex@^6.24.1: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz#325c59f902f82f24b74faceed0363954f6495e72" + integrity sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI= + dependencies: + babel-runtime "^6.26.0" + babel-types "^6.26.0" + lodash "^4.17.4" + +babel-helper-remap-async-to-generator@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz#5ec581827ad723fecdd381f1c928390676e4551b" + integrity sha1-XsWBgnrXI/7N04HxySg5BnbkVRs= + dependencies: + babel-helper-function-name "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-replace-supers@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz#bf6dbfe43938d17369a213ca8a8bf74b6a90ab1a" + integrity sha1-v22/5Dk40XNpohPKiov3S2qQqxo= + dependencies: + babel-helper-optimise-call-expression "^6.24.1" + babel-messages "^6.23.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helpers@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2" + integrity sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI= + dependencies: + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-messages@^6.23.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" + integrity sha1-8830cDhYA1sqKVHG7F7fbGLyYw4= + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-check-es2015-constants@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz#35157b101426fd2ffd3da3f75c7d1e91835bbf8a" + integrity sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o= + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-syntax-async-functions@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95" + integrity sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU= + +babel-plugin-syntax-exponentiation-operator@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz#9ee7e8337290da95288201a6a57f4170317830de" + integrity sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4= + +babel-plugin-syntax-trailing-function-commas@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz#ba0360937f8d06e40180a43fe0d5616fff532cf3" + integrity sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM= + +babel-plugin-transform-async-to-generator@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz#6536e378aff6cb1d5517ac0e40eb3e9fc8d08761" + integrity sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E= + dependencies: + babel-helper-remap-async-to-generator "^6.24.1" + babel-plugin-syntax-async-functions "^6.8.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-arrow-functions@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz#452692cb711d5f79dc7f85e440ce41b9f244d221" + integrity sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE= + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-block-scoped-functions@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz#bbc51b49f964d70cb8d8e0b94e820246ce3a6141" + integrity sha1-u8UbSflk1wy42OC5ToICRs46YUE= + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-block-scoping@^6.23.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz#d70f5299c1308d05c12f463813b0a09e73b1895f" + integrity sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8= + dependencies: + babel-runtime "^6.26.0" + babel-template "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + lodash "^4.17.4" + +babel-plugin-transform-es2015-classes@^6.23.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz#5a4c58a50c9c9461e564b4b2a3bfabc97a2584db" + integrity sha1-WkxYpQyclGHlZLSyo7+ryXolhNs= + dependencies: + babel-helper-define-map "^6.24.1" + babel-helper-function-name "^6.24.1" + babel-helper-optimise-call-expression "^6.24.1" + babel-helper-replace-supers "^6.24.1" + babel-messages "^6.23.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-computed-properties@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz#6fe2a8d16895d5634f4cd999b6d3480a308159b3" + integrity sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM= + dependencies: + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-destructuring@^6.23.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz#997bb1f1ab967f682d2b0876fe358d60e765c56d" + integrity sha1-mXux8auWf2gtKwh2/jWNYOdlxW0= + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-duplicate-keys@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz#73eb3d310ca969e3ef9ec91c53741a6f1576423e" + integrity sha1-c+s9MQypaePvnskcU3QabxV2Qj4= + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-for-of@^6.23.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz#f47c95b2b613df1d3ecc2fdb7573623c75248691" + integrity sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE= + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-function-name@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz#834c89853bc36b1af0f3a4c5dbaa94fd8eacaa8b" + integrity sha1-g0yJhTvDaxrw86TF26qU/Y6sqos= + dependencies: + babel-helper-function-name "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-literals@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz#4f54a02d6cd66cf915280019a31d31925377ca2e" + integrity sha1-T1SgLWzWbPkVKAAZox0xklN3yi4= + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-modules-amd@^6.22.0, babel-plugin-transform-es2015-modules-amd@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz#3b3e54017239842d6d19c3011c4bd2f00a00d154" + integrity sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ= + dependencies: + babel-plugin-transform-es2015-modules-commonjs "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-modules-commonjs@^6.23.0, babel-plugin-transform-es2015-modules-commonjs@^6.24.1: + version "6.26.2" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz#58a793863a9e7ca870bdc5a881117ffac27db6f3" + integrity sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q== + dependencies: + babel-plugin-transform-strict-mode "^6.24.1" + babel-runtime "^6.26.0" + babel-template "^6.26.0" + babel-types "^6.26.0" + +babel-plugin-transform-es2015-modules-systemjs@^6.23.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz#ff89a142b9119a906195f5f106ecf305d9407d23" + integrity sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM= + dependencies: + babel-helper-hoist-variables "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-modules-umd@^6.23.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz#ac997e6285cd18ed6176adb607d602344ad38468" + integrity sha1-rJl+YoXNGO1hdq22B9YCNErThGg= + dependencies: + babel-plugin-transform-es2015-modules-amd "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-object-super@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz#24cef69ae21cb83a7f8603dad021f572eb278f8d" + integrity sha1-JM72muIcuDp/hgPa0CH1cusnj40= + dependencies: + babel-helper-replace-supers "^6.24.1" + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-parameters@^6.23.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz#57ac351ab49caf14a97cd13b09f66fdf0a625f2b" + integrity sha1-V6w1GrScrxSpfNE7CfZv3wpiXys= + dependencies: + babel-helper-call-delegate "^6.24.1" + babel-helper-get-function-arity "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-shorthand-properties@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz#24f875d6721c87661bbd99a4622e51f14de38aa0" + integrity sha1-JPh11nIch2YbvZmkYi5R8U3jiqA= + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-spread@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz#d6d68a99f89aedc4536c81a542e8dd9f1746f8d1" + integrity sha1-1taKmfia7cRTbIGlQujdnxdG+NE= + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-sticky-regex@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz#00c1cdb1aca71112cdf0cf6126c2ed6b457ccdbc" + integrity sha1-AMHNsaynERLN8M9hJsLta0V8zbw= + dependencies: + babel-helper-regex "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-template-literals@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz#a84b3450f7e9f8f1f6839d6d687da84bb1236d8d" + integrity sha1-qEs0UPfp+PH2g51taH2oS7EjbY0= + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-typeof-symbol@^6.23.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz#dec09f1cddff94b52ac73d505c84df59dcceb372" + integrity sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I= + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-unicode-regex@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz#d38b12f42ea7323f729387f18a7c5ae1faeb35e9" + integrity sha1-04sS9C6nMj9yk4fxinxa4frrNek= + dependencies: + babel-helper-regex "^6.24.1" + babel-runtime "^6.22.0" + regexpu-core "^2.0.0" + +babel-plugin-transform-exponentiation-operator@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz#2ab0c9c7f3098fa48907772bb813fe41e8de3a0e" + integrity sha1-KrDJx/MJj6SJB3cruBP+QejeOg4= + dependencies: + babel-helper-builder-binary-assignment-operator-visitor "^6.24.1" + babel-plugin-syntax-exponentiation-operator "^6.8.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-regenerator@^6.22.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz#e0703696fbde27f0a3efcacf8b4dca2f7b3a8f2f" + integrity sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8= + dependencies: + regenerator-transform "^0.10.0" + +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-polyfill@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-polyfill/-/babel-polyfill-6.26.0.tgz#379937abc67d7895970adc621f284cd966cf2153" + integrity sha1-N5k3q8Z9eJWXCtxiHyhM2WbPIVM= + dependencies: + babel-runtime "^6.26.0" + core-js "^2.5.0" + regenerator-runtime "^0.10.5" + +babel-preset-env@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/babel-preset-env/-/babel-preset-env-1.7.0.tgz#dea79fa4ebeb883cd35dab07e260c1c9c04df77a" + integrity sha512-9OR2afuKDneX2/q2EurSftUYM0xGu4O2D9adAhVfADDhrYDaxXV0rBbevVYoY9n6nyX1PmQW/0jtpJvUNr9CHg== + dependencies: + babel-plugin-check-es2015-constants "^6.22.0" + babel-plugin-syntax-trailing-function-commas "^6.22.0" + babel-plugin-transform-async-to-generator "^6.22.0" + babel-plugin-transform-es2015-arrow-functions "^6.22.0" + babel-plugin-transform-es2015-block-scoped-functions "^6.22.0" + babel-plugin-transform-es2015-block-scoping "^6.23.0" + babel-plugin-transform-es2015-classes "^6.23.0" + babel-plugin-transform-es2015-computed-properties "^6.22.0" + babel-plugin-transform-es2015-destructuring "^6.23.0" + babel-plugin-transform-es2015-duplicate-keys "^6.22.0" + babel-plugin-transform-es2015-for-of "^6.23.0" + babel-plugin-transform-es2015-function-name "^6.22.0" + babel-plugin-transform-es2015-literals "^6.22.0" + babel-plugin-transform-es2015-modules-amd "^6.22.0" + babel-plugin-transform-es2015-modules-commonjs "^6.23.0" + babel-plugin-transform-es2015-modules-systemjs "^6.23.0" + babel-plugin-transform-es2015-modules-umd "^6.23.0" + babel-plugin-transform-es2015-object-super "^6.22.0" + babel-plugin-transform-es2015-parameters "^6.23.0" + babel-plugin-transform-es2015-shorthand-properties "^6.22.0" + babel-plugin-transform-es2015-spread "^6.22.0" + babel-plugin-transform-es2015-sticky-regex "^6.22.0" + babel-plugin-transform-es2015-template-literals "^6.22.0" + babel-plugin-transform-es2015-typeof-symbol "^6.23.0" + babel-plugin-transform-es2015-unicode-regex "^6.22.0" + babel-plugin-transform-exponentiation-operator "^6.22.0" + babel-plugin-transform-regenerator "^6.22.0" + browserslist "^3.2.6" + invariant "^2.2.2" + semver "^5.3.0" + +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.18.0, babel-runtime@^6.22.0, babel-runtime@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" + integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4= + dependencies: + core-js "^2.4.0" + regenerator-runtime "^0.11.0" + +babel-template@^6.24.1, babel-template@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02" + integrity sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI= + dependencies: + babel-runtime "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + lodash "^4.17.4" + +babel-traverse@^6.24.1, babel-traverse@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee" + integrity sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4= + dependencies: + babel-code-frame "^6.26.0" + babel-messages "^6.23.0" + babel-runtime "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + debug "^2.6.8" + globals "^9.18.0" + invariant "^2.2.2" + lodash "^4.17.4" + +babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" + integrity sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc= + 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" + +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== + +bn.js@^4.11.8: + version "4.11.8" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" + integrity sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA== + +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@^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" + +browserslist@^3.2.6: + version "3.2.8" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-3.2.8.tgz#b0005361d6471f0f5952797a76fc985f1f978fc6" + integrity sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ== + dependencies: + caniuse-lite "^1.0.30000844" + electron-to-chromium "^1.3.47" + +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" + +caller-path@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f" + integrity sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8= + dependencies: + callsites "^0.2.0" + +callsites@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca" + integrity sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo= + +caniuse-lite@^1.0.30000844: + version "1.0.30000962" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000962.tgz#6c10c3ab304b89bea905e66adf98c0905088ee44" + integrity sha512-WXYsW38HK+6eaj5IZR16Rn91TGhU3OhbwjKZvJ4HN/XBIABLKfbij9Mnd3pM0VEwZSlltWjoWg3I8FQ0DGgNOA== + +chalk@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= + dependencies: + ansi-styles "^2.2.1" + escape-string-regexp "^1.0.2" + has-ansi "^2.0.0" + strip-ansi "^3.0.0" + supports-color "^2.0.0" + +chalk@^2.0.0, chalk@^2.1.0: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chardet@^0.4.0: + version "0.4.2" + resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.4.2.tgz#b5473b33dc97c424e5d98dc87d55d4d8a29c8bf2" + integrity sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I= + +chokidar@^1.6.1: + version "1.7.0" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" + integrity sha1-eY5ol3gVHIB2tLNg5e3SjNortGg= + dependencies: + anymatch "^1.3.0" + async-each "^1.0.0" + glob-parent "^2.0.0" + inherits "^2.0.1" + is-binary-path "^1.0.0" + is-glob "^2.0.0" + path-is-absolute "^1.0.0" + readdirp "^2.0.0" + optionalDependencies: + fsevents "^1.0.0" + +chownr@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.1.tgz#54726b8b8fff4df053c42187e801fb4412df1494" + integrity sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g== + +circular-json@^0.3.1: + version "0.3.3" + resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.3.tgz#815c99ea84f6809529d2f45791bdf82711352d66" + integrity sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A== + +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-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-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= + +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= + +commander@^2.11.0: + version "2.20.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422" + integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ== + +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= + +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= + +contains-path@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" + integrity sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo= + +convert-source-map@^1.5.0, convert-source-map@^1.5.1: + version "1.6.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.6.0.tgz#51b537a8c43e0f04dec1993bffcdd504e758ac20" + integrity sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A== + dependencies: + safe-buffer "~5.1.1" + +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.5" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.5.tgz#44bc8d249e7fb2ff5d00e0341a7ffb94fbf67895" + integrity sha512-klh/kDpwX8hryYL14M9w/xei6vrv6sE8gTHDG7/T/+SEovB/G4ejwcfE/CBzO6Edsu+OETZMZ3wcX/EjUkrl5A== + +core-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= + +cross-spawn@^6.0.5: + version "6.0.5" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" + integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== + dependencies: + nice-try "^1.0.4" + path-key "^2.0.1" + semver "^5.5.0" + shebang-command "^1.2.0" + which "^1.2.9" + +debug-log@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/debug-log/-/debug-log-1.0.1.tgz#2307632d4c04382b8df8a32f70b895046d52745f" + integrity sha1-IwdjLUwEOCuN+KMvcLiVBG1SdF8= + +debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, 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.2.6" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" + integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== + dependencies: + ms "^2.1.1" + +debug@^4.1.0: + 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" + +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: + 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" + +deglob@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/deglob/-/deglob-2.1.1.tgz#d268e168727799862e8eac07042e165957c1f3be" + integrity sha512-2kjwuGGonL7gWE1XU4Fv79+vVzpoQCl0V+boMwWtOQJV2AGDabCwez++nB1Nli/8BabAfZQ/UuHPlp6AymKdWw== + dependencies: + find-root "^1.0.0" + glob "^7.0.5" + ignore "^3.0.9" + pkg-config "^1.1.0" + run-parallel "^1.1.2" + uniq "^1.0.1" + +delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= + +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= + +doctrine@1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" + integrity sha1-N53Ocw9hZvds76TmcHoVmwLFpvo= + dependencies: + esutils "^2.0.2" + isarray "^1.0.0" + +doctrine@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" + integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== + dependencies: + esutils "^2.0.2" + +electron-to-chromium@^1.3.47: + version "1.3.125" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.125.tgz#dbde0e95e64ebe322db0eca764d951f885a5aff2" + integrity sha512-XxowpqQxJ4nDwUXHtVtmEhRqBpm2OnjBomZmZtHD0d2Eo0244+Ojezhk3sD/MBSSe2nxCdGQFRXHIsf/LUTL9A== + +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.7.0: + version "1.13.0" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.13.0.tgz#ac86145fdd5099d8dd49558ccba2eaf9b88e24e9" + integrity sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg== + dependencies: + es-to-primitive "^1.2.0" + function-bind "^1.1.1" + has "^1.0.3" + is-callable "^1.1.4" + is-regex "^1.0.4" + object-keys "^1.0.12" + +es-to-primitive@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.0.tgz#edf72478033456e8dda8ef09e00ad9650707f377" + integrity sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg== + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + +escape-string-regexp@^1.0.2, 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= + +eslint-config-standard-jsx@6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/eslint-config-standard-jsx/-/eslint-config-standard-jsx-6.0.2.tgz#90c9aa16ac2c4f8970c13fc7efc608bacd02da70" + integrity sha512-D+YWAoXw+2GIdbMBRAzWwr1ZtvnSf4n4yL0gKGg7ShUOGXkSOLerI17K4F6LdQMJPNMoWYqepzQD/fKY+tXNSg== + +eslint-config-standard@12.0.0: + version "12.0.0" + resolved "https://registry.yarnpkg.com/eslint-config-standard/-/eslint-config-standard-12.0.0.tgz#638b4c65db0bd5a41319f96bba1f15ddad2107d9" + integrity sha512-COUz8FnXhqFitYj4DTqHzidjIL/t4mumGZto5c7DrBpvWoie+Sn3P4sLEzUGeYhRElWuFEf8K1S1EfvD1vixCQ== + +eslint-import-resolver-node@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz#58f15fb839b8d0576ca980413476aab2472db66a" + integrity sha512-sfmTqJfPSizWu4aymbPr4Iidp5yKm8yDkHp+Ir3YiTHiiDfxh69mOUsmiqW6RZ9zRXFaF64GtYmN7e+8GHBv6Q== + dependencies: + debug "^2.6.9" + resolve "^1.5.0" + +eslint-module-utils@^2.2.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.4.0.tgz#8b93499e9b00eab80ccb6614e69f03678e84e09a" + integrity sha512-14tltLm38Eu3zS+mt0KvILC3q8jyIAH518MlG+HO0p+yK885Lb1UHTY/UgR91eOyGdmxAPb+OLoW4znqIT6Ndw== + dependencies: + debug "^2.6.8" + pkg-dir "^2.0.0" + +eslint-plugin-es@^1.3.1: + version "1.4.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-es/-/eslint-plugin-es-1.4.0.tgz#475f65bb20c993fc10e8c8fe77d1d60068072da6" + integrity sha512-XfFmgFdIUDgvaRAlaXUkxrRg5JSADoRC8IkKLc/cISeR3yHVMefFHQZpcyXXEUUPHfy5DwviBcrfqlyqEwlQVw== + dependencies: + eslint-utils "^1.3.0" + regexpp "^2.0.1" + +eslint-plugin-import@~2.14.0: + version "2.14.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.14.0.tgz#6b17626d2e3e6ad52cfce8807a845d15e22111a8" + integrity sha512-FpuRtniD/AY6sXByma2Wr0TXvXJ4nA/2/04VPlfpmUDPOpOY264x+ILiwnrk/k4RINgDAyFZByxqPUbSQ5YE7g== + dependencies: + contains-path "^0.1.0" + debug "^2.6.8" + doctrine "1.5.0" + eslint-import-resolver-node "^0.3.1" + eslint-module-utils "^2.2.0" + has "^1.0.1" + lodash "^4.17.4" + minimatch "^3.0.3" + read-pkg-up "^2.0.0" + resolve "^1.6.0" + +eslint-plugin-node@~7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-node/-/eslint-plugin-node-7.0.1.tgz#a6e054e50199b2edd85518b89b4e7b323c9f36db" + integrity sha512-lfVw3TEqThwq0j2Ba/Ckn2ABdwmL5dkOgAux1rvOk6CO7A6yGyPI2+zIxN6FyNkp1X1X/BSvKOceD6mBWSj4Yw== + dependencies: + eslint-plugin-es "^1.3.1" + eslint-utils "^1.3.1" + ignore "^4.0.2" + minimatch "^3.0.4" + resolve "^1.8.1" + semver "^5.5.0" + +eslint-plugin-promise@~4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-4.0.1.tgz#2d074b653f35a23d1ba89d8e976a985117d1c6a2" + integrity sha512-Si16O0+Hqz1gDHsys6RtFRrW7cCTB6P7p3OJmKp3Y3dxpQE2qwOA7d3xnV+0mBmrPoi0RBnxlCKvqu70te6wjg== + +eslint-plugin-react@~7.11.1: + version "7.11.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.11.1.tgz#c01a7af6f17519457d6116aa94fc6d2ccad5443c" + integrity sha512-cVVyMadRyW7qsIUh3FHp3u6QHNhOgVrLQYdQEB1bPWBsgbNCHdFAeNMquBMCcZJu59eNthX053L70l7gRt4SCw== + dependencies: + array-includes "^3.0.3" + doctrine "^2.1.0" + has "^1.0.3" + jsx-ast-utils "^2.0.1" + prop-types "^15.6.2" + +eslint-plugin-standard@~4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-standard/-/eslint-plugin-standard-4.0.0.tgz#f845b45109c99cd90e77796940a344546c8f6b5c" + integrity sha512-OwxJkR6TQiYMmt1EsNRMe5qG3GsbjlcOhbGUBY4LtavF9DsLaTcoR+j2Tdjqi23oUwKNUqX7qcn5fPStafMdlA== + +eslint-scope@3.7.1: + version "3.7.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.1.tgz#3d63c3edfda02e06e01a452ad88caacc7cdcb6e8" + integrity sha1-PWPD7f2gLgbgGkUq2IyqzHzctug= + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + +eslint-scope@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" + integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + +eslint-utils@^1.3.0, eslint-utils@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.3.1.tgz#9a851ba89ee7c460346f97cf8939c7298827e512" + integrity sha512-Z7YjnIldX+2XMcjr7ZkgEsOj/bREONV60qYeB/bjMAqqqZ4zxKyWX+BOUkdmRmA9riiIPVvo5x86m5elviOk0Q== + +eslint-visitor-keys@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#3f3180fb2e291017716acb4c9d6d5b5c34a6a81d" + integrity sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ== + +eslint@~5.4.0: + version "5.4.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-5.4.0.tgz#d068ec03006bb9e06b429dc85f7e46c1b69fac62" + integrity sha512-UIpL91XGex3qtL6qwyCQJar2j3osKxK9e3ano3OcGEIRM4oWIpCkDg9x95AXEC2wMs7PnxzOkPZ2gq+tsMS9yg== + dependencies: + ajv "^6.5.0" + babel-code-frame "^6.26.0" + chalk "^2.1.0" + cross-spawn "^6.0.5" + debug "^3.1.0" + doctrine "^2.1.0" + eslint-scope "^4.0.0" + eslint-utils "^1.3.1" + eslint-visitor-keys "^1.0.0" + espree "^4.0.0" + esquery "^1.0.1" + esutils "^2.0.2" + file-entry-cache "^2.0.0" + functional-red-black-tree "^1.0.1" + glob "^7.1.2" + globals "^11.7.0" + ignore "^4.0.2" + imurmurhash "^0.1.4" + inquirer "^5.2.0" + is-resolvable "^1.1.0" + js-yaml "^3.11.0" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.3.0" + lodash "^4.17.5" + minimatch "^3.0.4" + mkdirp "^0.5.1" + natural-compare "^1.4.0" + optionator "^0.8.2" + path-is-inside "^1.0.2" + pluralize "^7.0.0" + progress "^2.0.0" + regexpp "^2.0.0" + require-uncached "^1.0.3" + semver "^5.5.0" + strip-ansi "^4.0.0" + strip-json-comments "^2.0.1" + table "^4.0.3" + text-table "^0.2.0" + +espree@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/espree/-/espree-4.1.0.tgz#728d5451e0fd156c04384a7ad89ed51ff54eb25f" + integrity sha512-I5BycZW6FCVIub93TeVY1s7vjhP9CY6cXCznIRfiig7nRviKZYdRnj/sHEWC6A7WE9RDWOFq9+7OsWSYz8qv2w== + dependencies: + acorn "^6.0.2" + acorn-jsx "^5.0.0" + eslint-visitor-keys "^1.0.0" + +esprima@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +esquery@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.1.tgz#406c51658b1f5991a5f9b62b1dc25b00e3e5c708" + integrity sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA== + dependencies: + estraverse "^4.0.0" + +esrecurse@^4.1.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" + integrity sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ== + dependencies: + estraverse "^4.1.0" + +estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1: + version "4.2.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" + integrity sha1-De4/7TH81GlhjOc0IJn8GvoL2xM= + +esutils@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" + integrity sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs= + +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" + +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" + +external-editor@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.2.0.tgz#045511cfd8d133f3846673d1047c154e214ad3d5" + integrity sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A== + dependencies: + chardet "^0.4.0" + iconv-lite "^0.4.17" + 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" + +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-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.4: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= + +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-entry-cache@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-2.0.0.tgz#c392990c3e684783d838b8c84a45d8a048458361" + integrity sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E= + dependencies: + flat-cache "^1.2.1" + object-assign "^4.0.1" + +filename-regex@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" + integrity sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY= + +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" + +find-root@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4" + integrity sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng== + +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-cache@^1.2.1: + version "1.3.4" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.3.4.tgz#2c2ef77525cc2929007dfffa1dd314aa9c9dee6f" + integrity sha512-VwyB3Lkgacfik2vhqR4uv2rvebqmDvFu4jlN/C1RzWoJEo8I7z4Q404oiqYCkq41mni8EzQnm95emU9seckwtg== + dependencies: + circular-json "^0.3.1" + graceful-fs "^4.1.2" + rimraf "~2.6.2" + write "^0.2.1" + +for-in@^1.0.1, for-in@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= + +for-own@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" + integrity sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4= + dependencies: + for-in "^1.0.1" + +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" + +fs-minipass@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.5.tgz#06c277218454ec288df77ada54a03b8702aacb9d" + integrity sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ== + dependencies: + minipass "^2.2.1" + +fs-readdir-recursive@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz#e32fc030a2ccee44a6b5371308da54be0b397d27" + integrity sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA== + +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: + version "1.2.8" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.8.tgz#57ea5320f762cd4696e5e8e87120eccc8b11cacf" + integrity sha512-tPvHgPGB7m40CZ68xqFGkKuzN+RnpGmSV+hgeKxhRpbxdqKXUFJGC3yonBOLzQBcJyGpdZFDfCsdOC2KFsXzeA== + dependencies: + nan "^2.12.1" + node-pre-gyp "^0.12.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== + +functional-red-black-tree@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" + integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= + +gauge@~2.7.3: + version "2.7.4" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" + integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c= + dependencies: + aproba "^1.0.3" + console-control-strings "^1.0.0" + has-unicode "^2.0.0" + object-assign "^4.1.0" + signal-exit "^3.0.0" + string-width "^1.0.1" + strip-ansi "^3.0.1" + wide-align "^1.1.0" + +get-stdin@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-6.0.0.tgz#9e09bf712b360ab9225e812048f71fde9c89657b" + integrity sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g== + +get-value@^2.0.3, get-value@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" + integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= + +glob-base@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" + integrity sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q= + 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@^7.0.5, glob@^7.1.2, glob@^7.1.3: + version "7.1.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" + integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +globals@^11.1.0, globals@^11.7.0: + version "11.11.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.11.0.tgz#dcf93757fa2de5486fbeed7118538adf789e9c2e" + integrity sha512-WHq43gS+6ufNOEqlrDBxVEbb8ntfXrfAUU2ZOpCxrBdGKW3gyv8mCxAfIBD0DroPKGrJ2eSsXsLtY9MPntsyTw== + +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== + +graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.4: + version "4.1.15" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00" + integrity sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA== + +has-ansi@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" + integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= + dependencies: + ansi-regex "^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: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44" + integrity sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q= + +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@^1.0.1, 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" + +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: + version "2.7.1" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.7.1.tgz#97f236977bd6e125408930ff6de3eec6281ec047" + integrity sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w== + +iconv-lite@^0.4.17, 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" + +ignore-walk@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.1.tgz#a83e62e7d272ac0e3b551aaa82831a19b69f82f8" + integrity sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ== + dependencies: + minimatch "^3.0.4" + +ignore@^3.0.9: + version "3.3.10" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" + integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug== + +ignore@^4.0.2: + version "4.0.6" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" + integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= + +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.1, inherits@~2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= + +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@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-5.2.0.tgz#db350c2b73daca77ff1243962e9f22f099685726" + integrity sha512-E9BmnJbAKLPGonz0HeWHtbKf+EeSP93paWO3ZYoUpq/aowXvYGjjCSuashhXPpzbArIjBbji39THkxTz9ZeEUQ== + dependencies: + ansi-escapes "^3.0.0" + chalk "^2.0.0" + cli-cursor "^2.1.0" + cli-width "^2.0.0" + external-editor "^2.1.0" + figures "^2.0.0" + lodash "^4.3.0" + mute-stream "0.0.7" + run-async "^2.2.0" + rxjs "^5.5.2" + string-width "^2.1.0" + strip-ansi "^4.0.0" + through "^2.3.6" + +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" + +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.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: + version "1.1.4" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75" + integrity sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA== + +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-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: + 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-finite@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" + integrity sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko= + dependencies: + number-is-nan "^1.0.0" + +is-fullwidth-code-point@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" + integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= + dependencies: + number-is-nan "^1.0.0" + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= + +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-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-plain-object@^2.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-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" + integrity sha1-eaKp7OfwlugPNtKy87wWwf9L8/o= + +is-regex@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" + integrity sha1-VRdIm1RwkbCTDglWVM7SXul+lJE= + dependencies: + has "^1.0.1" + +is-resolvable@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" + integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg== + +is-symbol@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.2.tgz#a055f6ae57192caee329e7a860118b497a950f38" + integrity sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw== + dependencies: + has-symbols "^1.0.0" + +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== + +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= + +"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.11.0: + 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" + +jsesc@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" + integrity sha1-RsP+yMGJKxKwgz25vHYiF226s0s= + +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= + +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-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= + +json5@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" + integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE= + +jsx-ast-utils@^2.0.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-2.1.0.tgz#0ee4e2c971fb9601c67b5641b71be80faecf0b36" + integrity sha512-yDGDG2DS4JcqhA6blsuYbtsT09xL8AoLuUR2Gb5exrw7UEM19sBcOTq+YBBhrNbl0PUC4R4LnFu+dHg2HKeVvA== + dependencies: + array-includes "^3.0.3" + +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.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" + integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA== + +levn@^0.3.0, levn@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= + dependencies: + prelude-ls "~1.1.2" + type-check "~0.3.2" + +load-json-file@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" + integrity sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg= + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + strip-bom "^3.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" + +lodash@^4.17.11, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.3.0: + version "4.17.11" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" + integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg== + +loose-envify@^1.0.0, loose-envify@^1.4.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" + +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-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== + +micromatch@^2.1.5: + version "2.3.11" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" + integrity sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU= + dependencies: + arr-diff "^2.0.0" + array-unique "^0.2.1" + braces "^1.8.2" + expand-brackets "^0.1.4" + extglob "^0.3.1" + filename-regex "^2.0.0" + is-extglob "^1.0.0" + is-glob "^2.0.1" + kind-of "^3.0.2" + normalize-path "^2.0.1" + object.omit "^2.0.0" + parse-glob "^3.0.4" + regex-cache "^0.4.2" + +micromatch@^3.1.10: + 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" + +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.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@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.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" + integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= + +minipass@^2.2.1, minipass@^2.3.4: + version "2.3.5" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.5.tgz#cacebe492022497f656b0f0f51e2682a9ed2d848" + integrity sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA== + dependencies: + safe-buffer "^5.1.2" + yallist "^3.0.0" + +minizlib@^1.1.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.2.1.tgz#dd27ea6136243c7c880684e8672bb3a45fd9b614" + integrity sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA== + dependencies: + minipass "^2.2.1" + +mixin-deep@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.1.tgz#a49e7268dce1a0d9698e45326c5626df3543d0fe" + integrity sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ== + dependencies: + for-in "^1.0.2" + is-extendable "^1.0.1" + +mkdirp@^0.5.0, mkdirp@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" + integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= + dependencies: + minimist "0.0.8" + +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== + +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.13.2" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.13.2.tgz#f51dc7ae66ba7d5d55e1e6d4d8092e802c9aefe7" + integrity sha512-TghvYc72wlMGMVMluVo9WRJc0mB8KxxF/gZ4YYFy7V2ZQX9l7rgbPg7vjS9mt6U5HXODVFVI2bOduCzwOMv/lw== + +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= + +needle@^2.2.1: + version "2.3.0" + resolved "https://registry.yarnpkg.com/needle/-/needle-2.3.0.tgz#ce3fea21197267bacb310705a7bbe24f2a3a3492" + integrity sha512-QBZu7aAFR0522EyaXZM0FZ9GLpq6lvQ3uq8gteiDUp7wKdy0lSd2hPlgFwVuW1CBkfEs9PfDQsQzZghLs/psdg== + dependencies: + debug "^4.1.0" + iconv-lite "^0.4.4" + sax "^1.2.4" + +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-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.2: + version "2.5.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" + integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== + dependencies: + hosted-git-info "^2.1.4" + resolve "^1.10.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + +normalize-path@^2.0.0, normalize-path@^2.0.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" + +npm-bundled@^1.0.1: + version "1.0.6" + resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.6.tgz#e7ba9aadcef962bb61248f91721cd932b3fe6bdd" + integrity sha512-8/JCaftHwbd//k6y2rEWp6k1wxVfpFzB6t1p825+cUb7Ym2XQfhwIC5KwhrvzZRJu+LtDE585zVaS32+CGtf0g== + +npm-packlist@^1.1.6: + version "1.4.1" + resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.1.tgz#19064cdf988da80ea3cee45533879d90192bbfbc" + integrity sha512-+TcdO7HJJ8peiiYhvPxsEDhF3PJFGUGRcFsGve3vxvxdcpO2Z4Z7rkosRM0kWj6LfbK/P0gu3dzk5RU1ffvFcw== + dependencies: + ignore-walk "^3.0.1" + npm-bundled "^1.0.1" + +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= + +object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#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-keys@^1.0.12: + 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.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" + +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" + +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" + +optionator@^0.8.2: + version "0.8.2" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" + integrity sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q= + dependencies: + deep-is "~0.1.3" + fast-levenshtein "~2.0.4" + levn "~0.3.0" + prelude-ls "~1.1.2" + type-check "~0.3.2" + wordwrap "~1.0.0" + +os-homedir@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" + integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= + +os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, 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" + +output-file-sync@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/output-file-sync/-/output-file-sync-1.1.2.tgz#d0a33eefe61a205facb90092e826598d5245ce76" + integrity sha1-0KM+7+YaIF+suQCS6CZZjVJFznY= + dependencies: + graceful-fs "^4.1.4" + mkdirp "^0.5.1" + object-assign "^4.1.0" + +p-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-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-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= + +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" + 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" + +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@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= + +path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= + +path-is-inside@^1.0.2: + 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.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-type@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" + integrity sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM= + dependencies: + pify "^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= + +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= + +pkg-conf@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/pkg-conf/-/pkg-conf-2.1.0.tgz#2126514ca6f2abfebd168596df18ba57867f0058" + integrity sha1-ISZRTKbyq/69FoWW3xi6V4Z/AFg= + dependencies: + find-up "^2.0.0" + load-json-file "^4.0.0" + +pkg-config@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/pkg-config/-/pkg-config-1.1.1.tgz#557ef22d73da3c8837107766c52eadabde298fe4" + integrity sha1-VX7yLXPaPIg3EHdmxS6tq94pj+Q= + dependencies: + debug-log "^1.0.0" + find-root "^1.0.0" + xtend "^4.0.1" + +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" + +pluralize@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-7.0.0.tgz#298b89df8b93b0221dbf421ad2b1b1ea23fc6777" + integrity sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow== + +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= + +preserve@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" + integrity sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks= + +private@^0.1.6, 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.0" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" + integrity sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw== + +progress@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" + integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== + +prop-types@^15.6.2: + version "15.7.2" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" + integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== + dependencies: + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.8.1" + +punycode@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + +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" + +rc@^1.2.7: + 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.1: + version "16.8.6" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.8.6.tgz#5bbc1e2d29141c9fbdfed456343fe2bc430a6a16" + integrity sha512-aUk3bHfZ2bRSVFFbbeVS4i+lNPZr3/WM5jT2J5omUVV1zzcs1nAaf3l51ctA5FFvCRbhrH0bdAsRRQddFJZPtA== + +read-pkg-up@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" + integrity sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4= + dependencies: + find-up "^2.0.0" + read-pkg "^2.0.0" + +read-pkg@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" + integrity sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg= + dependencies: + load-json-file "^2.0.0" + normalize-package-data "^2.3.2" + path-type "^2.0.0" + +readable-stream@^2.0.2, readable-stream@^2.0.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== + 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" + +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" + +regenerate@^1.2.1: + version "1.4.0" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" + integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg== + +regenerator-runtime@^0.10.5: + version "0.10.5" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz#336c3efc1220adcedda2c9fab67b5a7955a33658" + integrity sha1-M2w+/BIgrc7dosn6tntaeVWjNlg= + +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== + +regenerator-transform@^0.10.0: + version "0.10.1" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.10.1.tgz#1e4996837231da8b7f3cf4114d71b5691a0680dd" + integrity sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q== + dependencies: + babel-runtime "^6.18.0" + babel-types "^6.19.0" + private "^0.1.6" + +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" + +regexpp@^2.0.0, regexpp@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" + integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw== + +regexpu-core@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240" + integrity sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA= + dependencies: + regenerate "^1.2.1" + regjsgen "^0.2.0" + regjsparser "^0.1.4" + +regjsgen@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" + integrity sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc= + +regjsparser@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c" + integrity sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw= + dependencies: + jsesc "~0.5.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" + integrity sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo= + dependencies: + is-finite "^1.0.0" + +require-uncached@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3" + integrity sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM= + dependencies: + caller-path "^0.1.0" + resolve-from "^1.0.0" + +resolve-from@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226" + integrity sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY= + +resolve-url@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" + integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= + +resolve@^1.10.0, resolve@^1.5.0, resolve@^1.6.0, resolve@^1.8.1: + version "1.10.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.10.0.tgz#3bdaaeaf45cc07f375656dfd2e54ed0810b101ba" + integrity sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg== + 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.6.1, rimraf@~2.6.2: + version "2.6.3" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" + integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== + dependencies: + glob "^7.1.3" + +run-async@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0" + integrity sha1-A3GrSuC91yDUFm19/aZP96RFpsA= + dependencies: + is-promise "^2.1.0" + +run-parallel@^1.1.2: + 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.5.2: + 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" + +safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-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": + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +sax@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" + integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== + +"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.5.0: + version "5.7.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b" + integrity sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA== + +set-blocking@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= + +set-value@^0.4.3: + version "0.4.3" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz#7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1" + integrity sha1-fbCPnT0i3H945Trzw79GZuzfzPE= + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.1" + to-object-path "^0.3.0" + +set-value@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.0.tgz#71ae4a88f0feefbbf52d1ea604f3fb315ebb6274" + integrity sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg== + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.3" + split-string "^3.0.1" + +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= + +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= + +slash@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" + integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU= + +slice-ansi@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-1.0.0.tgz#044f1a49d8842ff307aad6b505ed178bd950134d" + integrity sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg== + dependencies: + is-fullwidth-code-point "^2.0.0" + +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" + +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-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, 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= + +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.4" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.4.tgz#75ecd1a88de8c184ef015eafb51b5b48bfd11bb1" + integrity sha512-7j8LYJLeY/Yb6ACbQ7F76qy5jHkp0U6jgBfJsk97bwWlVUnUWsAgpyaCvo17h0/RQGnQ036tVDomiwoI4pDkQA== + +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= + +standard-engine@~9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/standard-engine/-/standard-engine-9.0.0.tgz#d3a3d74c4c1b91f51a1e66362465261ca7610316" + integrity sha512-ZfNfCWZ2Xq67VNvKMPiVMKHnMdvxYzvZkf1AH8/cw2NLDBm5LRsxMqvEJpsjLI/dUosZ3Z1d6JlHDp5rAvvk2w== + dependencies: + deglob "^2.1.0" + get-stdin "^6.0.0" + minimist "^1.1.0" + pkg-conf "^2.0.0" + +standard@12.0.1: + version "12.0.1" + resolved "https://registry.yarnpkg.com/standard/-/standard-12.0.1.tgz#0fc5a8aa6c34c546c5562aae644242b24dae2e61" + integrity sha512-UqdHjh87OG2gUrNCSM4QRLF5n9h3TFPwrCNyVlkqu31Hej0L/rc8hzKqVvkb2W3x0WMq7PzZdkLfEcBhVOR6lg== + dependencies: + eslint "~5.4.0" + eslint-config-standard "12.0.0" + eslint-config-standard-jsx "6.0.2" + eslint-plugin-import "~2.14.0" + eslint-plugin-node "~7.0.1" + eslint-plugin-promise "~4.0.0" + eslint-plugin-react "~7.11.1" + eslint-plugin-standard "~4.0.0" + standard-engine "~9.0.0" + +static-extend@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" + integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= + dependencies: + define-property "^0.2.5" + object-copy "^0.1.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@^1.0.2 || 2", 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_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-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-json-comments@^2.0.1, 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@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + 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= + +table@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/table/-/table-4.0.3.tgz#00b5e2b602f1794b9acaf9ca908a76386a7813bc" + integrity sha512-S7rnFITmBH1EnyKcvxBh1LjYeQMmnZtCXSEbHcH6S0NoKit24ZuFO/T1vDcLdYsLQkM188PVVhQmzKIuThNkKg== + dependencies: + ajv "^6.0.1" + ajv-keywords "^3.0.0" + chalk "^2.1.0" + lodash "^4.17.4" + slice-ansi "1.0.0" + string-width "^2.1.1" + +tar@^4: + version "4.4.8" + resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.8.tgz#b19eec3fde2a96e64666df9fdb40c5ca1bc3747d" + integrity sha512-LzHF64s5chPQQS0IYBn9IN5h3i98c12bo4NCO7e0sGM2llXQ3p2FGC5sdENN4cTW48O915Sh+x+EXx7XW96xYQ== + dependencies: + chownr "^1.1.1" + fs-minipass "^1.2.5" + minipass "^2.3.4" + minizlib "^1.1.1" + mkdirp "^0.5.0" + safe-buffer "^5.1.2" + yallist "^3.0.2" + +text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= + +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= + +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" + +to-fast-properties@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" + integrity sha1-uDVx+k2MJbguIxsG46MFXeTKGkc= + +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + 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" + +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= + +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" + +union-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4" + integrity sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ= + dependencies: + arr-union "^3.1.0" + get-value "^2.0.6" + is-extendable "^0.1.1" + set-value "^0.4.3" + +uniq@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" + integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= + +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" + +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= + +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== + +user-home@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/user-home/-/user-home-1.1.1.tgz#2b5be23a32b63a7c9deb8d0f28d485724a3df190" + integrity sha1-K1viOjK2Onyd640PKNSFcko98ZA= + +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= + +v8flags@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-2.1.1.tgz#aab1a1fa30d45f88dd321148875ac02c0b55e5b4" + integrity sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ= + dependencies: + user-home "^1.1.1" + +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" + +which@^1.2.9: + 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" + +wordwrap@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" + integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + +write@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/write/-/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757" + integrity sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c= + dependencies: + mkdirp "^0.5.1" + +xtend@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" + integrity sha1-pcbVMr5lbiPbgg77lDofBJmNY68= + +yallist@^3.0.0, yallist@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.3.tgz#b4b049e314be545e3ce802236d6cd22cd91c3de9" + integrity sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A== diff --git a/packages/polkabot/src/index.ts b/packages/polkabot/src/index.ts index f40415d..f6c1573 100644 --- a/packages/polkabot/src/index.ts +++ b/packages/polkabot/src/index.ts @@ -93,8 +93,7 @@ export default class Polkabot { console.log("Filtering plugins..."); plugins = plugins.filter( - (p: PluginModule) => - p.name.indexOf("day") > 0 || p.name.indexOf("matrix") > 0 || p.name.indexOf("twitter") > 0 // || p.name.indexOf("demo") > 0 + (p: PluginModule) => p.name.indexOf("matrix") > 0 || p.name.indexOf("stats") > 0 // || p.name.indexOf("demo") > 0 ); console.log(`Found ${plugins.length} plugins`); // console.log(`${JSON.stringify(plugins, null, 2)}`); -- GitLab From 85656ba57f4badaaa86a362cfc419d11e43e50de Mon Sep 17 00:00:00 2001 From: Will Date: Sat, 25 Jan 2020 09:38:05 +0100 Subject: [PATCH 22/86] Use ENV in BlockStats --- .vscode/settings.json | 1 + packages/polkabot-plugin-blockstats/src/index.ts | 7 +++---- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index 0a1108c..57a0f92 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -9,6 +9,7 @@ "Datastore", "POLKABOT", "bot's", + "envfile", "minimongo", "msgsype", "upsert" diff --git a/packages/polkabot-plugin-blockstats/src/index.ts b/packages/polkabot-plugin-blockstats/src/index.ts index 7b76fd7..e894b66 100644 --- a/packages/polkabot-plugin-blockstats/src/index.ts +++ b/packages/polkabot-plugin-blockstats/src/index.ts @@ -29,11 +29,10 @@ export default class BlocsStats extends PolkabotWorker { public constructor(mod: PluginModule, context: PluginContext, config?) { super(mod, context, config); - // TODO replace the following by ENv this.config = { - NB_BLOCKS: 10, // Size of the rolling buffer - THRESHOLD: 2.0, // We remain silent unless the average goes above this value - LOG_NTH_BLOCK: 5 + NB_BLOCKS: parseInt(process.env.POLKABOT_PLUGIN_BLOCKSTATS_NB_BLOCKS) || 100, // Size of the rolling buffer + THRESHOLD: parseInt(process.env.POLKABOT_PLUGIN_BLOCKSTATS_THRESHOLD) || 8.0, // We remain silent unless the average goes above this value + LOG_NTH_BLOCK: parseInt(process.env.POLKABOT_PLUGIN_BLOCKSTATS_LOG_NTH_BLOCK) || 1000 }; this.data = []; -- GitLab From d48fe47e71e3e59791dfff3c026289abc491de41 Mon Sep 17 00:00:00 2001 From: Will Date: Sat, 25 Jan 2020 10:31:42 +0100 Subject: [PATCH 23/86] Upgrade the Operator plugin --- .vscode/settings.json | 1 + packages/polkabot-api/src/plugin.interface.ts | 25 ++- packages/polkabot-plugin-blocthday/.babelrc | 11 - packages/polkabot-plugin-operator | 1 - packages/polkabot-plugin-operator/.gitignore | 5 + .../polkabot-plugin-operator/.gitlab-ci.yml | 80 +++++++ packages/polkabot-plugin-operator/.npmrc | 1 + packages/polkabot-plugin-operator/.nvmrc | 1 + packages/polkabot-plugin-operator/README.adoc | 6 + .../polkabot-plugin-operator/package.json | 44 ++++ .../polkabot-plugin-operator/src/index.ts | 206 ++++++++++++++++++ .../polkabot-plugin-operator/tsconfig.json | 27 +++ packages/polkabot/src/index.ts | 2 +- packages/polkabot/src/lib/plugin-loader.ts | 21 +- yarn.lock | 2 +- 15 files changed, 405 insertions(+), 28 deletions(-) delete mode 100644 packages/polkabot-plugin-blocthday/.babelrc delete mode 160000 packages/polkabot-plugin-operator create mode 100644 packages/polkabot-plugin-operator/.gitignore create mode 100644 packages/polkabot-plugin-operator/.gitlab-ci.yml create mode 100644 packages/polkabot-plugin-operator/.npmrc create mode 100644 packages/polkabot-plugin-operator/.nvmrc create mode 100644 packages/polkabot-plugin-operator/README.adoc create mode 100644 packages/polkabot-plugin-operator/package.json create mode 100644 packages/polkabot-plugin-operator/src/index.ts create mode 100644 packages/polkabot-plugin-operator/tsconfig.json diff --git a/.vscode/settings.json b/.vscode/settings.json index 57a0f92..4a6f7cc 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -6,6 +6,7 @@ "cSpell.words": [ "BOTMASTER", "Blocthday", + "Chatbot", "Datastore", "POLKABOT", "bot's", diff --git a/packages/polkabot-api/src/plugin.interface.ts b/packages/polkabot-api/src/plugin.interface.ts index b869331..b2fc193 100644 --- a/packages/polkabot-api/src/plugin.interface.ts +++ b/packages/polkabot-api/src/plugin.interface.ts @@ -13,7 +13,8 @@ export type PluginModule = { export enum Type { Worker, - Notifier + Notifier, + Chatbot } export class PolkabotPluginBase { @@ -38,15 +39,29 @@ export class PolkabotPluginBase { } } -// export interface IPolkabotWorker implements PolkabotPluginBase { -// start(): void; -// } - export abstract class PolkabotWorker extends PolkabotPluginBase { constructor(mod: PluginModule, context: PluginContext, config?) { super(Type.Worker, mod, context, config); } public abstract start(); + // TODO add stop() +} + +export abstract class PolkabotChatbot extends PolkabotPluginBase { + constructor(mod: PluginModule, context: PluginContext, config?) { + super(Type.Chatbot, mod, context, config); + } + public abstract start(); + // TODO add stop() + + /** + * Check that the room id where the sender of the message + * sent the message from is the same as the room id where + * that the bot is in. + */ + protected isPrivate(senderRoomId, roomIdWithBot) { + return senderRoomId === roomIdWithBot; + } } export abstract class PolkabotNotifier extends PolkabotPluginBase { diff --git a/packages/polkabot-plugin-blocthday/.babelrc b/packages/polkabot-plugin-blocthday/.babelrc deleted file mode 100644 index a9bed8b..0000000 --- a/packages/polkabot-plugin-blocthday/.babelrc +++ /dev/null @@ -1,11 +0,0 @@ -{ - "presets": ["env"], - "plugins": [ - [ - "@babel/plugin-transform-runtime", - { - "regenerator": true - } - ] - ] -} diff --git a/packages/polkabot-plugin-operator b/packages/polkabot-plugin-operator deleted file mode 160000 index 2e7ad55..0000000 --- a/packages/polkabot-plugin-operator +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 2e7ad552d43528dfa950ea5ddce74a6585439a55 diff --git a/packages/polkabot-plugin-operator/.gitignore b/packages/polkabot-plugin-operator/.gitignore new file mode 100644 index 0000000..a4a6239 --- /dev/null +++ b/packages/polkabot-plugin-operator/.gitignore @@ -0,0 +1,5 @@ +.DS_Store +node_modules +package-lock.json +dist/ +build diff --git a/packages/polkabot-plugin-operator/.gitlab-ci.yml b/packages/polkabot-plugin-operator/.gitlab-ci.yml new file mode 100644 index 0000000..a0c2bba --- /dev/null +++ b/packages/polkabot-plugin-operator/.gitlab-ci.yml @@ -0,0 +1,80 @@ +image: node:11 + +before_script: + # install ssh-agent + # - 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )' + # # run ssh-agent + # - eval $(ssh-agent -s) + # # add ssh key stored in SSH_PRIVATE_KEY variable to the agent store + # - ssh-add <(echo "$SSH_PRIVATE_KEY" | base64 -d) + # # disable host key checking (NOTE: makes you susceptible to man-in-the-middle attacks) + # # WARNING: use only in docker container, if you use it with shell you will overwrite your user's ssh config + # - mkdir -p ~/.ssh + # - echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config + - npm install -g yarn + - yarn + +stages: + - lint + # - test + - build + +# http://docs.gitlab.com/ce/ci/yaml/README.html#cache +cache: + paths: + - node_modules/ + +lint: + stage: lint + script: + - yarn lint + +# Supported node versions can be found here: +# https://github.com/nodejs/LTS#lts_schedule +# test:node:7: +# image: node:7 +# script: +# - yarn build +# - npm test +# only: +# - $NIGHLTY + +# test:node:8: +# image: node:8 +# script: +# - yarn build +# - npm test + +# test:node:9: +# image: node:9 +# script: +# - yarn build +# - npm test +# only: +# - $NIGHLTY + +# test:node:10: +# image: node:10 +# script: +# - yarn build +# - npm test +# only: +# - $NIGHLTY + +build: + stage: build + script: yarn build + +# build:doc: +# stage: build +# script: yarn build:doc + +# build:docker: +# image: docker:git +# services: +# - docker:dind +# stage: build +# before_script: +# - echo "Skipping before_script" +# script: +# - docker build -t chevdor/polkabot . diff --git a/packages/polkabot-plugin-operator/.npmrc b/packages/polkabot-plugin-operator/.npmrc new file mode 100644 index 0000000..43c97e7 --- /dev/null +++ b/packages/polkabot-plugin-operator/.npmrc @@ -0,0 +1 @@ +package-lock=false diff --git a/packages/polkabot-plugin-operator/.nvmrc b/packages/polkabot-plugin-operator/.nvmrc new file mode 100644 index 0000000..b4de394 --- /dev/null +++ b/packages/polkabot-plugin-operator/.nvmrc @@ -0,0 +1 @@ +11 diff --git a/packages/polkabot-plugin-operator/README.adoc b/packages/polkabot-plugin-operator/README.adoc new file mode 100644 index 0000000..82ea3ab --- /dev/null +++ b/packages/polkabot-plugin-operator/README.adoc @@ -0,0 +1,6 @@ + += Operator + +This plugin takes care of the administration of Polkabot thru Matrix.org messages. + +NOTE: Currently, it does not allow users to do much. diff --git a/packages/polkabot-plugin-operator/package.json b/packages/polkabot-plugin-operator/package.json new file mode 100644 index 0000000..e224e9d --- /dev/null +++ b/packages/polkabot-plugin-operator/package.json @@ -0,0 +1,44 @@ +{ + "name": "polkabot-plugin-operator", + "version": "0.5.0", + "description": "The operator plugin is targeted mainly to the Bot Maxter and allows performing monitoring and maintenance tasks.", + "main": "dist/src/index.js", + "scripts": { + "build": "tsc --build tsconfig.json", + "lint": "standard", + "start": "babel-node ./src/index.js", + "build:watch": "tsc --build tsconfig.json -w", + "prepublishOnly": "npm run build", + "postinstall": "npm run build", + "clean": "rm -rf dist node_mdules" + }, + "author": "Chevdor ", + "license": "ISC", + "devDependencies": { + "typescript": "^3.5.3", + "babel-cli": "^6.26.0", + "babel-core": "^6.26.3", + "babel-eslint": "10.0.2", + "babel-polyfill": "^6.26.0", + "babel-preset-env": "^1.7.0", + "babel-register": "^6.26.0", + "standard": "14.0.0" + }, + "repository": { + "type": "git", + "url": "https://gitlab.com/Polkabot/polkabot-plugin-operator.git" + }, + "standard": { + "parser": "babel-eslint", + "ignore": [ + "dist/" + ], + "env": [ + "mocha" + ] + }, + "engines": { + "node": ">=10.13.0", + "yarn": "^1.10.1" + } +} diff --git a/packages/polkabot-plugin-operator/src/index.ts b/packages/polkabot-plugin-operator/src/index.ts new file mode 100644 index 0000000..0aa658f --- /dev/null +++ b/packages/polkabot-plugin-operator/src/index.ts @@ -0,0 +1,206 @@ +#!/usr/bin/env node +import { + PolkabotChatbot, + NotifierMessage, + NotifierSpecs, + PluginModule, + PluginContext +} from "@polkabot/api/src/plugin.interface"; + +export default class Operator extends PolkabotChatbot { + public constructor(mod: PluginModule, context: PluginContext, config?) { + super(mod, context, config); + } + + public start(): void { + // Todo: this should be done in private and on demand + // ideally, each plugin report its commands and the bot + // provide the instructions instead of having each plugin to the work. + // this.showInstructions() + this.watchChat(); + } + + showInstructions() { + // Send message to the room notifying users how to use the bot + const notifierMessage: NotifierMessage = { + message: + "Polkabot Operator Plugin public user usage instructions:\n 1) Ask Polkabot Operator to provide node info with command: !status" + }; + + const notifierSpecs: NotifierSpecs = { + notifiers: ["matrix", "demo", "all"] + }; + + this.context.polkabot.notify(notifierMessage, notifierSpecs); + } + + answer(roomId, msg) { + this.context.matrix.sendTextMessage(roomId, msg); + } + + watchChat() { + this.context.matrix.on("Room.timeline", (event, room, _toStartOfTimeline) => { + if (event.getType() !== "m.room.message") { + return; + } + + // TODO - refactor into a common utility plugin or similar + const directChatRoomMemberIds = Object.keys(room.currentState.members); + + const expectedDirectMessageRoomMemberIds = [this.context.config.matrix.botMasterId, this.context.config.matrix.botUserId]; + + // Has the Bot Master initiated a direct chat with the Bot + const isBotMasterAndBotInRoom = expectedDirectMessageRoomMemberIds.every(val => directChatRoomMemberIds.includes(val)); + // console.log('Operator - isBotMasterAndBotInRoom: ', isBotMasterAndBotInRoom) + + // Is the chat room name the same name as the Bot's name + // After string manipulation to get just the username from the Bot's + // user id (i.e. @mybot:matrix.org ---> mybot) + const isBotMessageRecipient = + room.name === + this.context.config.matrix.botUserId + .split(":") + .shift() + .substring(1); + // console.log('Operator - isBotMessageRecipient: ', isBotMessageRecipient) + + + + /** + * Check if the sender id of the user that sent the message + * is the Bot Master's id + */ + const isMaster = senderId => { + const isSenderOperator = senderId === this.context.config.matrix.botMasterId; + // console.log('Operator - isSenderOperator: ', isSenderOperator) + return isSenderOperator; + }; + + // In general we don´t want the bot to react to its own messages! + const isSelf = senderId => { + return senderId === this.context.config.matrix.botUserId; + }; + + // console.log('Operator - event.getContent()', event.getContent()) + const msg = event.getContent().body; + + console.log("msg", msg); + + // FIXME - this still triggers an error in the logs when the Bot Master + // sends a message without an argument in the public room (i.e. `!say`) + if (!msg) { + return; + } + + const senderId = event.getSender(); + const senderRoomId = event.sender.roomId; + const roomIdWithBot = room.roomId; + + console.log(senderId, senderRoomId, roomIdWithBot); + + // If we see our own message, we skip + if (isSelf(senderId)) return; + + // console.log('Operator - msg: ', msg) + // console.log('Operator - senderId: ', senderId) + // console.log('Operator - senderRoomId', senderRoomId) + // console.log('Operator - roomIdWithBot', roomIdWithBot) + + console.log("isPrivate", this.isPrivate(senderRoomId, roomIdWithBot)); + console.log("isMaster", isMaster(senderId)); + console.log("isBotMasterAndBotInRoom", isBotMasterAndBotInRoom); + console.log("isBotMessageRecipient", isBotMessageRecipient); + + if (this.isPrivate(senderRoomId, roomIdWithBot)) { + /** + * Check that the senderId is the Bot Master with isOperator + * Also check that the message is from a direct message between + * the Bot Master and the Bot by checking that isBotMasterAndBotInRoom + * and isBotMessageRecipient are both true since if the user + * is the Bot Master they can ask the Bot to do more actions than + * public users, and we do not want to show error messages + * from the Bot Master in the public room due to entry of invalid + * commands, we only want them to appears in the direct message. + **/ + if ( + isMaster(senderId) && + isBotMasterAndBotInRoom + // && isBotMessageRecipient + ) { + console.log("Operator - Bot received message from Bot Master in direct message"); + /** + * Detect if the command received from the Bot Master is in + * the following form: `!say ` or `!status` + */ + let capture = msg.match(/^!(?\w+)(\s+(?.*?))??$/i) || []; + console.log("Operator - captured from Bot Master: ", capture); + if (capture.length > 0 && capture.groups.cmd) { + const cmd: string = capture.groups.cmd; + const args = capture.groups.args; + + console.log("Operator - cmd: ", cmd); + console.log("Operator - args: ", args); + switch (cmd) { + case "status": + const uptime = (process.uptime() / 60 / 60).toFixed(2); + this.answer( + room.roomId, + `Hey ${ + this.context.config.matrix.botMasterId + }, I am still here, running for ${uptime} hours. Check out the project at https://gitlab.com/Polkabot` + ); + break; + case "say": + console.log("Operator - Received command !say:", cmd, args); + const notifierMessage: NotifierMessage = { + message: args + }; + + const notifierSpecs: NotifierSpecs = { + notifiers: ["matrix", "demo", "all"] + }; + + this.context.polkabot.notify(notifierMessage, notifierSpecs); + break; + default: + this.answer( + room.roomId, + `Operator - Command **!${cmd}** is not supported. You can use commands: + !status OR !say ` + ); + } + } + } else { + console.log(`Operator - Bot received message from non-Bot Master (sender: ${senderId}) in direct message`); + // const re = new RegExp('') + + let capture = msg.match(/^!(?\w+)(\s+(?.*?))??$/i) || []; + console.log("Operator - captured from non-Bot Master: ", capture); + if (capture.length > 0 && capture.groups.cmd) { + const cmd: string = capture.groups.cmd; + + switch (cmd) { + case "status": + const uptime = (process.uptime() / 60 / 60).toFixed(2); + this.answer( + room.roomId, + `I am still here! I've been running ${capitalize(this.context.pkg.name)} v${ + this.context.pkg.version + } for ${uptime} hours. +Check out the project at https://gitlab.com/Polkabot` + ); + break; + default: + this.answer(room.roomId, `Operator - Command **!${cmd}** is not supported. You can use command: !status`); + } + } + } + } + }); + } +} + +const capitalize = s => { + if (typeof s !== "string") return ""; + return s.charAt(0).toUpperCase() + s.slice(1); +}; diff --git a/packages/polkabot-plugin-operator/tsconfig.json b/packages/polkabot-plugin-operator/tsconfig.json new file mode 100644 index 0000000..a7dac9c --- /dev/null +++ b/packages/polkabot-plugin-operator/tsconfig.json @@ -0,0 +1,27 @@ +{ + "compilerOptions": { + "module": "commonjs", + "moduleResolution": "node", + "esModuleInterop": true, + "resolveJsonModule": true, + "allowJs": true, + "target": "es5", + "noImplicitAny": false, + "sourceMap": true, + "preserveConstEnums": true, + "lib": ["es2015", "dom"], + "noUnusedLocals": false, + "noImplicitReturns": true, + "noImplicitThis": true, + "alwaysStrict": true, + "strictNullChecks": false, + "noUnusedParameters": false, + "pretty": true, + "allowUnreachableCode": false, + "experimentalDecorators": true, + "suppressImplicitAnyIndexErrors": true, + "outDir": "./dist" + }, + "include": ["./bin/**/*", "./src/**/*", "./test/**/*", "./package.json"], + "compileOnSave": true +} diff --git a/packages/polkabot/src/index.ts b/packages/polkabot/src/index.ts index f6c1573..ffa5375 100644 --- a/packages/polkabot/src/index.ts +++ b/packages/polkabot/src/index.ts @@ -93,7 +93,7 @@ export default class Polkabot { console.log("Filtering plugins..."); plugins = plugins.filter( - (p: PluginModule) => p.name.indexOf("matrix") > 0 || p.name.indexOf("stats") > 0 // || p.name.indexOf("demo") > 0 + (p: PluginModule) => p.name.indexOf("matrix") > 0 || p.name.indexOf("operator") > 0 // || p.name.indexOf("demo") > 0 ); console.log(`Found ${plugins.length} plugins`); // console.log(`${JSON.stringify(plugins, null, 2)}`); diff --git a/packages/polkabot/src/lib/plugin-loader.ts b/packages/polkabot/src/lib/plugin-loader.ts index 7c28045..2c7575e 100644 --- a/packages/polkabot/src/lib/plugin-loader.ts +++ b/packages/polkabot/src/lib/plugin-loader.ts @@ -6,7 +6,8 @@ import { PolkabotPlugin, PolkabotNotifier, PolkabotWorker, - } from "../../../polkabot-api/src/plugin.interface"; + PolkabotChatbot +} from "../../../polkabot-api/src/plugin.interface"; export default class PluginLoader { // private static getType(mod: PluginModule) { @@ -25,25 +26,27 @@ export default class PluginLoader { let plugin; // let test = new myModule(mod, context) - - const parentClass = Object.getPrototypeOf(myModule).name + + const parentClass = Object.getPrototypeOf(myModule).name; // console.log('+++',PolkabotNotifier.name); - + switch (parentClass) { case PolkabotNotifier.name: - plugin = new myModule(mod, context) as PolkabotNotifier + plugin = new myModule(mod, context) as PolkabotNotifier; break; case PolkabotWorker.name: - plugin = new myModule(mod, context) as PolkabotWorker + plugin = new myModule(mod, context) as PolkabotWorker; + break; + case PolkabotChatbot.name: + plugin = new myModule(mod, context) as PolkabotChatbot; break; - default: throw new Error("Plugin type not supported"); } console.log( - ` - ${plugin.constructor.name}: ${plugin.package.name} version ${plugin.package.version} from ${plugin - .package.author.name || plugin.package.author}` + ` - ${plugin.constructor.name}: ${plugin.package.name} version ${plugin.package.version} from ${plugin.package.author + .name || plugin.package.author}` ); resolve(plugin); diff --git a/yarn.lock b/yarn.lock index 2aa3072..7adf414 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1452,7 +1452,7 @@ bluebird@^3.5.0, bluebird@^3.5.4: resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.5.tgz#a8d0afd73251effbbd5fe384a77d73003c17a71f" integrity sha512-5am6HnnfN+urzt4yfg7IgTbotDjIT/u8AJpEt0sIU9FtXfVeezXAPKswrG+xKUCOYAINpSdgZVDU6QFh+cuH3w== -bn.js@5.0.0, bn.js@^5.0.0: +bn.js@5.0.0: version "5.0.0" resolved "http://52.167.60.66:8081/repository/npm-all/bn.js/-/bn.js-5.0.0.tgz#5c3d398021b3ddb548c1296a16f857e908f35c70" integrity sha512-bVwDX8AF+72fIUNuARelKAlQUNtPOfG2fRxorbVvFk4zpHbqLrPdOGfVg5vrKwVzLLePqPBiATaOZNELQzmS0A== -- GitLab From 37ff439c970ae0468b91121fd376f8a3cf480c3f Mon Sep 17 00:00:00 2001 From: Will Date: Sat, 25 Jan 2020 10:34:32 +0100 Subject: [PATCH 24/86] Bring back stallwatcher --- packages/polkabot-plugin-stallwatcher | 1 - .../polkabot-plugin-stallwatcher/.gitignore | 4 + .../.gitlab-ci.yml | 80 +++++++++ packages/polkabot-plugin-stallwatcher/.npmrc | 1 + packages/polkabot-plugin-stallwatcher/.nvmrc | 1 + .../polkabot-plugin-stallwatcher/README.adoc | 10 ++ .../polkabot-plugin-stallwatcher/package.json | 45 +++++ .../polkabot-plugin-stallwatcher/src/index.js | 169 ++++++++++++++++++ 8 files changed, 310 insertions(+), 1 deletion(-) delete mode 160000 packages/polkabot-plugin-stallwatcher create mode 100644 packages/polkabot-plugin-stallwatcher/.gitignore create mode 100644 packages/polkabot-plugin-stallwatcher/.gitlab-ci.yml create mode 100644 packages/polkabot-plugin-stallwatcher/.npmrc create mode 100644 packages/polkabot-plugin-stallwatcher/.nvmrc create mode 100644 packages/polkabot-plugin-stallwatcher/README.adoc create mode 100644 packages/polkabot-plugin-stallwatcher/package.json create mode 100644 packages/polkabot-plugin-stallwatcher/src/index.js diff --git a/packages/polkabot-plugin-stallwatcher b/packages/polkabot-plugin-stallwatcher deleted file mode 160000 index b9a5896..0000000 --- a/packages/polkabot-plugin-stallwatcher +++ /dev/null @@ -1 +0,0 @@ -Subproject commit b9a5896087902de7766243d9ba45d4576c9dd690 diff --git a/packages/polkabot-plugin-stallwatcher/.gitignore b/packages/polkabot-plugin-stallwatcher/.gitignore new file mode 100644 index 0000000..a785d2c --- /dev/null +++ b/packages/polkabot-plugin-stallwatcher/.gitignore @@ -0,0 +1,4 @@ +.DS_Store +node_modules +package-lock.json +dist/ diff --git a/packages/polkabot-plugin-stallwatcher/.gitlab-ci.yml b/packages/polkabot-plugin-stallwatcher/.gitlab-ci.yml new file mode 100644 index 0000000..a0c2bba --- /dev/null +++ b/packages/polkabot-plugin-stallwatcher/.gitlab-ci.yml @@ -0,0 +1,80 @@ +image: node:11 + +before_script: + # install ssh-agent + # - 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )' + # # run ssh-agent + # - eval $(ssh-agent -s) + # # add ssh key stored in SSH_PRIVATE_KEY variable to the agent store + # - ssh-add <(echo "$SSH_PRIVATE_KEY" | base64 -d) + # # disable host key checking (NOTE: makes you susceptible to man-in-the-middle attacks) + # # WARNING: use only in docker container, if you use it with shell you will overwrite your user's ssh config + # - mkdir -p ~/.ssh + # - echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config + - npm install -g yarn + - yarn + +stages: + - lint + # - test + - build + +# http://docs.gitlab.com/ce/ci/yaml/README.html#cache +cache: + paths: + - node_modules/ + +lint: + stage: lint + script: + - yarn lint + +# Supported node versions can be found here: +# https://github.com/nodejs/LTS#lts_schedule +# test:node:7: +# image: node:7 +# script: +# - yarn build +# - npm test +# only: +# - $NIGHLTY + +# test:node:8: +# image: node:8 +# script: +# - yarn build +# - npm test + +# test:node:9: +# image: node:9 +# script: +# - yarn build +# - npm test +# only: +# - $NIGHLTY + +# test:node:10: +# image: node:10 +# script: +# - yarn build +# - npm test +# only: +# - $NIGHLTY + +build: + stage: build + script: yarn build + +# build:doc: +# stage: build +# script: yarn build:doc + +# build:docker: +# image: docker:git +# services: +# - docker:dind +# stage: build +# before_script: +# - echo "Skipping before_script" +# script: +# - docker build -t chevdor/polkabot . diff --git a/packages/polkabot-plugin-stallwatcher/.npmrc b/packages/polkabot-plugin-stallwatcher/.npmrc new file mode 100644 index 0000000..43c97e7 --- /dev/null +++ b/packages/polkabot-plugin-stallwatcher/.npmrc @@ -0,0 +1 @@ +package-lock=false diff --git a/packages/polkabot-plugin-stallwatcher/.nvmrc b/packages/polkabot-plugin-stallwatcher/.nvmrc new file mode 100644 index 0000000..b4de394 --- /dev/null +++ b/packages/polkabot-plugin-stallwatcher/.nvmrc @@ -0,0 +1 @@ +11 diff --git a/packages/polkabot-plugin-stallwatcher/README.adoc b/packages/polkabot-plugin-stallwatcher/README.adoc new file mode 100644 index 0000000..940fc73 --- /dev/null +++ b/packages/polkabot-plugin-stallwatcher/README.adoc @@ -0,0 +1,10 @@ + += StallWatcher + +StallWatcher issues a warning when the network did not issue a block for more than N seconds. + +Messages look like: + +---- +CRITICAL: Network seems to be stalled !!! The last block (#1184813) was 8.002s ago. +---- diff --git a/packages/polkabot-plugin-stallwatcher/package.json b/packages/polkabot-plugin-stallwatcher/package.json new file mode 100644 index 0000000..f68cce8 --- /dev/null +++ b/packages/polkabot-plugin-stallwatcher/package.json @@ -0,0 +1,45 @@ +{ + "name": "polkabot-plugin-stallwatcher", + "version": "0.4.4", + "description": "", + "main": "dist/index.js", + "scripts": { + "lint": "standard", + "start": "babel-node ./src/index.js", + "build": "babel src --out-dir dist", + "prepublishOnly": "npm run build", + "postinstall": "npm run build", + "clean": "rm -rf dist node_mdules" + }, + "author": "Chevdor ", + "license": "ISC", + "dependencies": { + "bn.js": "^4.11.8" + }, + "devDependencies": { + "babel-cli": "^6.26.0", + "babel-core": "^6.26.3", + "babel-eslint": "10.0.1", + "babel-polyfill": "^6.26.0", + "babel-preset-env": "^1.7.0", + "babel-register": "^6.26.0", + "standard": "12.0.1" + }, + "repository": { + "type": "git", + "url": "https://gitlab.com/Polkabot/polkabot-plugin-stallwatcher.git" + }, + "standard": { + "parser": "babel-eslint", + "ignore": [ + "dist/" + ], + "env": [ + "mocha" + ] + }, + "engines": { + "node": ">=10.13.0", + "yarn": "^1.10.1" + } +} diff --git a/packages/polkabot-plugin-stallwatcher/src/index.js b/packages/polkabot-plugin-stallwatcher/src/index.js new file mode 100644 index 0000000..0931caf --- /dev/null +++ b/packages/polkabot-plugin-stallwatcher/src/index.js @@ -0,0 +1,169 @@ +#!/usr/bin/env node +import BN from 'bn.js' +import pluginConfig from './config' + +module.exports = class StallWatcher { + constructor (pbot) { + this.pbot = pbot + this.config = pluginConfig + this.stalled = null + } + + start () { + // this.showInstructions() + console.log('StallWatcher - Starting with config:', this.config) + this.watchChain().catch((error) => { + console.error('StallWatcher - Error subscribing to chain head: ', error) + }) + this.watchChat() + } + + showInstructions () { + // Send message to the room notifying users how to use the bot + const messageBody = 'Polkabot StallWatcher Plugin private (Bot Master Only) user usage instructions:\n 1) Ask Polkabot StallWatcher to change how frequently in blocks it should expect to receive new blocks prior to publishing an alert with command: !sw duration ' + this.announce(messageBody) + } + + announce (msg) { + console.log('StallWatcher - Announcing: ', msg) + this.pbot.matrix.sendTextMessage(this.pbot.config.matrix.roomId, msg) + } + + async watchChain () { + // Reference: https://polkadot.js.org/api/examples/promise/02_listen_to_blocks/ + await this.pbot.polkadot.rpc.chain + .subscribeNewHead((header) => { + // FIXME - is this issue still an issue. see https://github.com/polkadot-js/api/issues/142 + if (header) { + clearTimeout(this.watchdogId) + // console.log('StallWatcher: ' + this.getDuration().toFixed(2) + 's') + this.watchdogId = setTimeout(this.alert.bind(this), this.config.duration * 1000) + this.lastBlockNumber = new BN(header.blockNumber, 16) + if (this.stalled) { + this.announce(`Network no longer stalled, new block #${this.lastBlockNumber.toString(10)} came in after ${this.getDuration().toFixed(2)}s`) + this.stalled = false + } + this.lastBlockTime = new Date() + } + }) + } + + getDuration () { + return (new Date() - this.lastBlockTime) / 1000 + } + + alert () { + this.stalled = true + this.announce(`CRITICAL: Network seems to be stalled !!! The last block #${this.lastBlockNumber.toString(10)} was seen ${this.config.duration}s ago.`) + } + + answer (roomId, msg) { + this.pbot.matrix.sendTextMessage(roomId, msg) + } + + watchChat () { + this.pbot.matrix.on('Room.timeline', (event, room, toStartOfTimeline) => { + if (event.getType() !== 'm.room.message') { + return + } + + // TODO - refactor into a common utility plugin or similar since this code + // is duplicate of that in polkadot-plugin-operator. + const directChatRoomMemberIds = Object.keys(room.currentState.members) + + const expectedDirectMessageRoomMemberIds = [ + this.pbot.config.matrix.botMasterId, + this.pbot.config.matrix.botUserId + ] + + // Has the Bot Master initiated a direct chat with the Bot + const isBotMasterAndBotInRoom = expectedDirectMessageRoomMemberIds + .every(val => directChatRoomMemberIds.includes(val)) + // console.log('StallWatcher - isBotMasterAndBotInRoom: ', isBotMasterAndBotInRoom) + + // Is the chat room name the same name as the Bot's name + // After string manipulation to get just the username from the Bot's + // user id (i.e. @mybot:matrix.org ---> mybot) + const isBotMessageRecipient = + room.name === this.pbot.config.matrix.botUserId + .split(':') + .shift() + .substring(1) + // console.log('StallWatcher - isBotMessageRecipient: ', isBotMessageRecipient) + + /** + * Check that the room id where the sender of the message + * sent the message from is the same as the room id where + * that the bot is in. + */ + function isPrivate (senderRoomId, roomIdWithBot) { + return (senderRoomId === roomIdWithBot) + } + + /** + * Check if the sender id of the user that sent the message + * is the Bot Master's id + */ + const isOperator = (senderId) => { + const isSenderOperator = senderId === this.pbot.config.matrix.botMasterId + // console.log('StallWatcher - isSenderOperator: ', isSenderOperator) + return isSenderOperator + } + + const msg = event.getContent().body + + // FIXME - this still triggers an error in the logs when the Bot Master + // sends a message without an argument in the public room (i.e. `!say`) + if (!msg) { + return + } + + const senderId = event.getSender() + const senderRoomId = event.sender.roomId + const roomIdWithBot = room.roomId + + // console.log('StallWatcher - msg: ', msg) + // console.log('StallWatcher - senderId: ', senderId) + // console.log('StallWatcher - senderRoomId', senderRoomId) + // console.log('StallWatcher - roomIdWithBot', roomIdWithBot) + + if (isPrivate(senderRoomId, roomIdWithBot)) { + if ( + isOperator(senderId) && + isBotMasterAndBotInRoom && + isBotMessageRecipient + ) { + // console.log('StallWatcher - Bot received message from Bot Master in direct message') + /** + * Detect if the command received from the Bot Master is in + * the following form: `!sw duration ` + */ + let capture = msg.match(/^!((?\w+)\s+)?(?\w+)(\s+(?.*?))??$/i) || [] + // console.log('StallWatcher - captured from Bot Master: ', capture) + if (capture.length > 0 && capture.groups.cmd) { + const mod = capture.groups.mod + const cmd = capture.groups.cmd + const args = capture.groups.args + + if (mod !== 'sw') return + + console.log('StallWatcher - mod: ', mod) + console.log('StallWatcher - cmd: ', cmd) + console.log('StallWatcher - args: ', args) + switch (cmd) { + case 'duration': + const val = parseFloat(args) + if (!isNaN(val)) { this.config.duration = val } + this.answer(room.roomId, + `Threshold changed to ${this.config.duration}s`) + break + default: + this.answer(room.roomId, `StallWatcher - Command *!${cmd}* is not supported. You can use commands: +!sw duration 6.8`) + } + } + } + } + }) + } +} -- GitLab From b065099c65cd4d80208882785830064710345e87 Mon Sep 17 00:00:00 2001 From: Will Date: Sat, 25 Jan 2020 11:10:56 +0100 Subject: [PATCH 25/86] Upgrade of the StallWatcher plugin --- .vscode/settings.json | 1 + .../polkabot-plugin-blocthday/src/index.ts | 3 +- .../polkabot-plugin-stallwatcher/package.json | 8 +- .../polkabot-plugin-stallwatcher/src/index.js | 169 --------------- .../polkabot-plugin-stallwatcher/src/index.ts | 193 ++++++++++++++++++ .../tsconfig.json | 27 +++ packages/polkabot/src/index.ts | 2 +- 7 files changed, 227 insertions(+), 176 deletions(-) delete mode 100644 packages/polkabot-plugin-stallwatcher/src/index.js create mode 100644 packages/polkabot-plugin-stallwatcher/src/index.ts create mode 100644 packages/polkabot-plugin-stallwatcher/tsconfig.json diff --git a/.vscode/settings.json b/.vscode/settings.json index 4a6f7cc..24d4a65 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -9,6 +9,7 @@ "Chatbot", "Datastore", "POLKABOT", + "STALLWATCHER", "bot's", "envfile", "minimongo", diff --git a/packages/polkabot-plugin-blocthday/src/index.ts b/packages/polkabot-plugin-blocthday/src/index.ts index 6d25f23..961aa99 100644 --- a/packages/polkabot-plugin-blocthday/src/index.ts +++ b/packages/polkabot-plugin-blocthday/src/index.ts @@ -5,9 +5,8 @@ import { NotifierSpecs, PluginModule, PluginContext -} from "../../polkabot-api/src/plugin.interface"; +} from "@polkabot/api/src/plugin.interface"; -// TODO: we want that to extends PolkabotPlugin export default class Blocthday extends PolkabotWorker { private NB_BLOCKS: number diff --git a/packages/polkabot-plugin-stallwatcher/package.json b/packages/polkabot-plugin-stallwatcher/package.json index f68cce8..93f6651 100644 --- a/packages/polkabot-plugin-stallwatcher/package.json +++ b/packages/polkabot-plugin-stallwatcher/package.json @@ -1,12 +1,12 @@ { "name": "polkabot-plugin-stallwatcher", - "version": "0.4.4", - "description": "", - "main": "dist/index.js", + "version": "0.5.0", + "description": "A PolkaBot plugin monitoring for chain stalling", + "main": "dist/src/index.js", "scripts": { + "build": "tsc --build tsconfig.json", "lint": "standard", "start": "babel-node ./src/index.js", - "build": "babel src --out-dir dist", "prepublishOnly": "npm run build", "postinstall": "npm run build", "clean": "rm -rf dist node_mdules" diff --git a/packages/polkabot-plugin-stallwatcher/src/index.js b/packages/polkabot-plugin-stallwatcher/src/index.js deleted file mode 100644 index 0931caf..0000000 --- a/packages/polkabot-plugin-stallwatcher/src/index.js +++ /dev/null @@ -1,169 +0,0 @@ -#!/usr/bin/env node -import BN from 'bn.js' -import pluginConfig from './config' - -module.exports = class StallWatcher { - constructor (pbot) { - this.pbot = pbot - this.config = pluginConfig - this.stalled = null - } - - start () { - // this.showInstructions() - console.log('StallWatcher - Starting with config:', this.config) - this.watchChain().catch((error) => { - console.error('StallWatcher - Error subscribing to chain head: ', error) - }) - this.watchChat() - } - - showInstructions () { - // Send message to the room notifying users how to use the bot - const messageBody = 'Polkabot StallWatcher Plugin private (Bot Master Only) user usage instructions:\n 1) Ask Polkabot StallWatcher to change how frequently in blocks it should expect to receive new blocks prior to publishing an alert with command: !sw duration ' - this.announce(messageBody) - } - - announce (msg) { - console.log('StallWatcher - Announcing: ', msg) - this.pbot.matrix.sendTextMessage(this.pbot.config.matrix.roomId, msg) - } - - async watchChain () { - // Reference: https://polkadot.js.org/api/examples/promise/02_listen_to_blocks/ - await this.pbot.polkadot.rpc.chain - .subscribeNewHead((header) => { - // FIXME - is this issue still an issue. see https://github.com/polkadot-js/api/issues/142 - if (header) { - clearTimeout(this.watchdogId) - // console.log('StallWatcher: ' + this.getDuration().toFixed(2) + 's') - this.watchdogId = setTimeout(this.alert.bind(this), this.config.duration * 1000) - this.lastBlockNumber = new BN(header.blockNumber, 16) - if (this.stalled) { - this.announce(`Network no longer stalled, new block #${this.lastBlockNumber.toString(10)} came in after ${this.getDuration().toFixed(2)}s`) - this.stalled = false - } - this.lastBlockTime = new Date() - } - }) - } - - getDuration () { - return (new Date() - this.lastBlockTime) / 1000 - } - - alert () { - this.stalled = true - this.announce(`CRITICAL: Network seems to be stalled !!! The last block #${this.lastBlockNumber.toString(10)} was seen ${this.config.duration}s ago.`) - } - - answer (roomId, msg) { - this.pbot.matrix.sendTextMessage(roomId, msg) - } - - watchChat () { - this.pbot.matrix.on('Room.timeline', (event, room, toStartOfTimeline) => { - if (event.getType() !== 'm.room.message') { - return - } - - // TODO - refactor into a common utility plugin or similar since this code - // is duplicate of that in polkadot-plugin-operator. - const directChatRoomMemberIds = Object.keys(room.currentState.members) - - const expectedDirectMessageRoomMemberIds = [ - this.pbot.config.matrix.botMasterId, - this.pbot.config.matrix.botUserId - ] - - // Has the Bot Master initiated a direct chat with the Bot - const isBotMasterAndBotInRoom = expectedDirectMessageRoomMemberIds - .every(val => directChatRoomMemberIds.includes(val)) - // console.log('StallWatcher - isBotMasterAndBotInRoom: ', isBotMasterAndBotInRoom) - - // Is the chat room name the same name as the Bot's name - // After string manipulation to get just the username from the Bot's - // user id (i.e. @mybot:matrix.org ---> mybot) - const isBotMessageRecipient = - room.name === this.pbot.config.matrix.botUserId - .split(':') - .shift() - .substring(1) - // console.log('StallWatcher - isBotMessageRecipient: ', isBotMessageRecipient) - - /** - * Check that the room id where the sender of the message - * sent the message from is the same as the room id where - * that the bot is in. - */ - function isPrivate (senderRoomId, roomIdWithBot) { - return (senderRoomId === roomIdWithBot) - } - - /** - * Check if the sender id of the user that sent the message - * is the Bot Master's id - */ - const isOperator = (senderId) => { - const isSenderOperator = senderId === this.pbot.config.matrix.botMasterId - // console.log('StallWatcher - isSenderOperator: ', isSenderOperator) - return isSenderOperator - } - - const msg = event.getContent().body - - // FIXME - this still triggers an error in the logs when the Bot Master - // sends a message without an argument in the public room (i.e. `!say`) - if (!msg) { - return - } - - const senderId = event.getSender() - const senderRoomId = event.sender.roomId - const roomIdWithBot = room.roomId - - // console.log('StallWatcher - msg: ', msg) - // console.log('StallWatcher - senderId: ', senderId) - // console.log('StallWatcher - senderRoomId', senderRoomId) - // console.log('StallWatcher - roomIdWithBot', roomIdWithBot) - - if (isPrivate(senderRoomId, roomIdWithBot)) { - if ( - isOperator(senderId) && - isBotMasterAndBotInRoom && - isBotMessageRecipient - ) { - // console.log('StallWatcher - Bot received message from Bot Master in direct message') - /** - * Detect if the command received from the Bot Master is in - * the following form: `!sw duration ` - */ - let capture = msg.match(/^!((?\w+)\s+)?(?\w+)(\s+(?.*?))??$/i) || [] - // console.log('StallWatcher - captured from Bot Master: ', capture) - if (capture.length > 0 && capture.groups.cmd) { - const mod = capture.groups.mod - const cmd = capture.groups.cmd - const args = capture.groups.args - - if (mod !== 'sw') return - - console.log('StallWatcher - mod: ', mod) - console.log('StallWatcher - cmd: ', cmd) - console.log('StallWatcher - args: ', args) - switch (cmd) { - case 'duration': - const val = parseFloat(args) - if (!isNaN(val)) { this.config.duration = val } - this.answer(room.roomId, - `Threshold changed to ${this.config.duration}s`) - break - default: - this.answer(room.roomId, `StallWatcher - Command *!${cmd}* is not supported. You can use commands: -!sw duration 6.8`) - } - } - } - } - }) - } -} diff --git a/packages/polkabot-plugin-stallwatcher/src/index.ts b/packages/polkabot-plugin-stallwatcher/src/index.ts new file mode 100644 index 0000000..f78e379 --- /dev/null +++ b/packages/polkabot-plugin-stallwatcher/src/index.ts @@ -0,0 +1,193 @@ +#!/usr/bin/env node +import BN from "bn.js"; +import { PolkabotWorker, PluginModule, PluginContext } from "@polkabot/api/src/plugin.interface"; + +export default class StallWatcher extends PolkabotWorker { + private stalled: boolean; + private lastBlockTime: Date; + private lastBlockNumber: BN; + private watchdogId: NodeJS.Timeout; + + public constructor(mod: PluginModule, context: PluginContext, config?) { + super(mod, context, config); + this.config = { + duration: parseInt(process.env.POLKABOT_PLUGIN_STALLWATCHER_DURATION) || 30 // If a block takes longer than n seconds, we trigger the alert + }; + this.stalled = null; + } + + public start(): void { + console.log("StallWatcher - Starting with config:", this.config); + this.watchChain().catch(error => { + console.error("StallWatcher - Error subscribing to chain head: ", error); + }); + + // this.watchChat(); + } + + // showInstructions() { + // // Send message to the room notifying users how to use the bot + // const messageBody = + // "Polkabot StallWatcher Plugin private (Bot Master Only) user usage instructions:\n 1) Ask Polkabot StallWatcher to change how frequently in blocks it should expect to receive new blocks prior to publishing an alert with command: !sw duration "; + // // this.announce(messageBody); + // this.context.polkabot.notify( + // { + // message: messageBody + // }, + // { notifiers: ["matrix"] } + // ); + // } + + async watchChain() { + // Reference: https://polkadot.js.org/api/examples/promise/02_listen_to_blocks/ + await this.context.polkadot.rpc.chain.subscribeNewHeads(header => { + clearTimeout(this.watchdogId); + // console.log('StallWatcher: ' + this.getDuration().toFixed(2) + 's') + this.watchdogId = setTimeout(this.alert.bind(this), this.config.duration * 1000); + this.lastBlockNumber = header.number.unwrap().toBn(); + if (this.stalled) { + this.context.polkabot.notify( + { + message: `Network no longer stalled, new block #${this.lastBlockNumber.toString( + 10 + )} came in after ${this.getDuration().toFixed(2)}s` + }, + { notifiers: ["matrix"] } + ); + + this.stalled = false; + } + this.lastBlockTime = new Date(); + }); + } + + private getDuration() { + return (new Date().getTime() - this.lastBlockTime.getTime()) / 1000; + } + + private alert() { + this.stalled = true; + + this.context.polkabot.notify( + { + message: `CRITICAL: Network seems to be stalled !!! Block #${this.lastBlockNumber.toString(10)} was seen ${ + this.config.duration + }s ago.` + }, + { notifiers: ["matrix"] } + ); + } + + // answer(roomId, msg) { + // this.context.matrix.sendTextMessage(roomId, msg); + // } + + // TODO Many of the bot function should not be here. This is a worker, not a bot. + // The worker could however publish supported commands the bot can fetch with the form + // !sw duration 42 + // !sw restart + // !sw help + + // watchChat() { + // this.context.matrix.on("Room.timeline", (event, room, toStartOfTimeline) => { + // if (event.getType() !== "m.room.message") { + // return; + // } + + // // TODO - refactor into a common utility plugin or similar since this code + // // is duplicate of that in polkadot-plugin-operator. + // const directChatRoomMemberIds = Object.keys(room.currentState.members); + + // const expectedDirectMessageRoomMemberIds = [this.context.config.matrix.botMasterId, this.context.config.matrix.botUserId]; + + // // Has the Bot Master initiated a direct chat with the Bot + // const isBotMasterAndBotInRoom = expectedDirectMessageRoomMemberIds.every(val => directChatRoomMemberIds.includes(val)); + // // console.log('StallWatcher - isBotMasterAndBotInRoom: ', isBotMasterAndBotInRoom) + + // // Is the chat room name the same name as the Bot's name + // // After string manipulation to get just the username from the Bot's + // // user id (i.e. @mybot:matrix.org ---> mybot) + // const isBotMessageRecipient = + // room.name === + // this.context.config.matrix.botUserId + // .split(":") + // .shift() + // .substring(1); + // // console.log('StallWatcher - isBotMessageRecipient: ', isBotMessageRecipient) + + // /** + // * Check that the room id where the sender of the message + // * sent the message from is the same as the room id where + // * that the bot is in. + // */ + // function isPrivate(senderRoomId, roomIdWithBot) { + // return senderRoomId === roomIdWithBot; + // } + + // /** + // * Check if the sender id of the user that sent the message + // * is the Bot Master's id + // */ + // // const isOperator = senderId => { + // // const isSenderOperator = senderId === this.context.config.matrix.botMasterId; + // // // console.log('StallWatcher - isSenderOperator: ', isSenderOperator) + // // return isSenderOperator; + // // }; + + // // const msg = event.getContent().body; + + // // // FIXME - this still triggers an error in the logs when the Bot Master + // // // sends a message without an argument in the public room (i.e. `!say`) + // // if (!msg) { + // // return; + // // } + + // // const senderId = event.getSender(); + // // const senderRoomId = event.sender.roomId; + // // const roomIdWithBot = room.roomId; + + // // console.log('StallWatcher - msg: ', msg) + // // console.log('StallWatcher - senderId: ', senderId) + // // console.log('StallWatcher - senderRoomId', senderRoomId) + // // console.log('StallWatcher - roomIdWithBot', roomIdWithBot) + + // if (isPrivate(senderRoomId, roomIdWithBot)) { + // if (isOperator(senderId) && isBotMasterAndBotInRoom && isBotMessageRecipient) { + // // console.log('StallWatcher - Bot received message from Bot Master in direct message') + // /** + // * Detect if the command received from the Bot Master is in + // * the following form: `!sw duration ` + // */ + // let capture = msg.match(/^!((?\w+)\s+)?(?\w+)(\s+(?.*?))??$/i) || []; + // // console.log('StallWatcher - captured from Bot Master: ', capture) + // if (capture.length > 0 && capture.groups.cmd) { + // const mod = capture.groups.mod; + // const cmd = capture.groups.cmd; + // const args = capture.groups.args; + + // if (mod !== "sw") return; + + // console.log("StallWatcher - mod: ", mod); + // console.log("StallWatcher - cmd: ", cmd); + // console.log("StallWatcher - args: ", args); + // switch (cmd) { + // case "duration": + // const val = parseFloat(args); + // if (!isNaN(val)) { + // this.config.duration = val; + // } + // this.answer(room.roomId, `Threshold changed to ${this.config.duration}s`); + // break; + // default: + // this.answer( + // room.roomId, + // `StallWatcher - Command *!${cmd}* is not supported. You can use commands: + // !sw duration 6.8` + // ); + // } + // } + // } + // } + // }); + // } +} diff --git a/packages/polkabot-plugin-stallwatcher/tsconfig.json b/packages/polkabot-plugin-stallwatcher/tsconfig.json new file mode 100644 index 0000000..a7dac9c --- /dev/null +++ b/packages/polkabot-plugin-stallwatcher/tsconfig.json @@ -0,0 +1,27 @@ +{ + "compilerOptions": { + "module": "commonjs", + "moduleResolution": "node", + "esModuleInterop": true, + "resolveJsonModule": true, + "allowJs": true, + "target": "es5", + "noImplicitAny": false, + "sourceMap": true, + "preserveConstEnums": true, + "lib": ["es2015", "dom"], + "noUnusedLocals": false, + "noImplicitReturns": true, + "noImplicitThis": true, + "alwaysStrict": true, + "strictNullChecks": false, + "noUnusedParameters": false, + "pretty": true, + "allowUnreachableCode": false, + "experimentalDecorators": true, + "suppressImplicitAnyIndexErrors": true, + "outDir": "./dist" + }, + "include": ["./bin/**/*", "./src/**/*", "./test/**/*", "./package.json"], + "compileOnSave": true +} diff --git a/packages/polkabot/src/index.ts b/packages/polkabot/src/index.ts index ffa5375..3dee54b 100644 --- a/packages/polkabot/src/index.ts +++ b/packages/polkabot/src/index.ts @@ -93,7 +93,7 @@ export default class Polkabot { console.log("Filtering plugins..."); plugins = plugins.filter( - (p: PluginModule) => p.name.indexOf("matrix") > 0 || p.name.indexOf("operator") > 0 // || p.name.indexOf("demo") > 0 + (p: PluginModule) => p.name.indexOf("matrix") > 0 || p.name.indexOf("stall") > 0 // || p.name.indexOf("demo") > 0 ); console.log(`Found ${plugins.length} plugins`); // console.log(`${JSON.stringify(plugins, null, 2)}`); -- GitLab From 3f67f8351db82114ef69e430aecfe8abe4f20aac Mon Sep 17 00:00:00 2001 From: Will Date: Sat, 25 Jan 2020 11:28:28 +0100 Subject: [PATCH 26/86] Bring back the reporter plugin --- packages/polkabot-plugin-reporter | 1 - packages/polkabot-plugin-reporter/.gitignore | 4 + .../polkabot-plugin-reporter/.gitlab-ci.yml | 80 ++++++++ packages/polkabot-plugin-reporter/.npmrc | 1 + packages/polkabot-plugin-reporter/.nvmrc | 1 + packages/polkabot-plugin-reporter/README.adoc | 4 + .../polkabot-plugin-reporter/package.json | 56 ++++++ .../polkabot-plugin-reporter/src/index.js | 177 ++++++++++++++++++ .../polkabot-plugin-stallwatcher/src/index.ts | 1 + 9 files changed, 324 insertions(+), 1 deletion(-) delete mode 160000 packages/polkabot-plugin-reporter create mode 100644 packages/polkabot-plugin-reporter/.gitignore create mode 100644 packages/polkabot-plugin-reporter/.gitlab-ci.yml create mode 100644 packages/polkabot-plugin-reporter/.npmrc create mode 100644 packages/polkabot-plugin-reporter/.nvmrc create mode 100644 packages/polkabot-plugin-reporter/README.adoc create mode 100644 packages/polkabot-plugin-reporter/package.json create mode 100644 packages/polkabot-plugin-reporter/src/index.js diff --git a/packages/polkabot-plugin-reporter b/packages/polkabot-plugin-reporter deleted file mode 160000 index 7cda0e2..0000000 --- a/packages/polkabot-plugin-reporter +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 7cda0e250858190ae36734b7b54d03c94237471c diff --git a/packages/polkabot-plugin-reporter/.gitignore b/packages/polkabot-plugin-reporter/.gitignore new file mode 100644 index 0000000..a785d2c --- /dev/null +++ b/packages/polkabot-plugin-reporter/.gitignore @@ -0,0 +1,4 @@ +.DS_Store +node_modules +package-lock.json +dist/ diff --git a/packages/polkabot-plugin-reporter/.gitlab-ci.yml b/packages/polkabot-plugin-reporter/.gitlab-ci.yml new file mode 100644 index 0000000..a0c2bba --- /dev/null +++ b/packages/polkabot-plugin-reporter/.gitlab-ci.yml @@ -0,0 +1,80 @@ +image: node:11 + +before_script: + # install ssh-agent + # - 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )' + # # run ssh-agent + # - eval $(ssh-agent -s) + # # add ssh key stored in SSH_PRIVATE_KEY variable to the agent store + # - ssh-add <(echo "$SSH_PRIVATE_KEY" | base64 -d) + # # disable host key checking (NOTE: makes you susceptible to man-in-the-middle attacks) + # # WARNING: use only in docker container, if you use it with shell you will overwrite your user's ssh config + # - mkdir -p ~/.ssh + # - echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config + - npm install -g yarn + - yarn + +stages: + - lint + # - test + - build + +# http://docs.gitlab.com/ce/ci/yaml/README.html#cache +cache: + paths: + - node_modules/ + +lint: + stage: lint + script: + - yarn lint + +# Supported node versions can be found here: +# https://github.com/nodejs/LTS#lts_schedule +# test:node:7: +# image: node:7 +# script: +# - yarn build +# - npm test +# only: +# - $NIGHLTY + +# test:node:8: +# image: node:8 +# script: +# - yarn build +# - npm test + +# test:node:9: +# image: node:9 +# script: +# - yarn build +# - npm test +# only: +# - $NIGHLTY + +# test:node:10: +# image: node:10 +# script: +# - yarn build +# - npm test +# only: +# - $NIGHLTY + +build: + stage: build + script: yarn build + +# build:doc: +# stage: build +# script: yarn build:doc + +# build:docker: +# image: docker:git +# services: +# - docker:dind +# stage: build +# before_script: +# - echo "Skipping before_script" +# script: +# - docker build -t chevdor/polkabot . diff --git a/packages/polkabot-plugin-reporter/.npmrc b/packages/polkabot-plugin-reporter/.npmrc new file mode 100644 index 0000000..43c97e7 --- /dev/null +++ b/packages/polkabot-plugin-reporter/.npmrc @@ -0,0 +1 @@ +package-lock=false diff --git a/packages/polkabot-plugin-reporter/.nvmrc b/packages/polkabot-plugin-reporter/.nvmrc new file mode 100644 index 0000000..b4de394 --- /dev/null +++ b/packages/polkabot-plugin-reporter/.nvmrc @@ -0,0 +1 @@ +11 diff --git a/packages/polkabot-plugin-reporter/README.adoc b/packages/polkabot-plugin-reporter/README.adoc new file mode 100644 index 0000000..305e89e --- /dev/null +++ b/packages/polkabot-plugin-reporter/README.adoc @@ -0,0 +1,4 @@ + += Reporter + +This plugin acts as a Polkadot citizen reporter. It inspects mainly governance aspects of the Polkadot network and informs the crowd about noticable events. diff --git a/packages/polkabot-plugin-reporter/package.json b/packages/polkabot-plugin-reporter/package.json new file mode 100644 index 0000000..0bc7695 --- /dev/null +++ b/packages/polkabot-plugin-reporter/package.json @@ -0,0 +1,56 @@ +{ + "name": "polkabot-plugin-reporter", + "version": "0.4.4", + "description": "", + "main": "dist/index.js", + "scripts": { + "lint": "standard", + "start": "babel-node ./src/index.js", + "build": "babel src --out-dir dist", + "prepublishOnly": "npm run build", + "postinstall": "npm run build", + "clean": "rm -rf dist node_modules" + }, + "author": "Chevdor ", + "license": "ISC", + "peerDependencies": { + "@polkadot/storage": "^0.80.1", + "@polkadot/util-crypto": "^0.92.1", + "bn.js": "^4.11.8" + }, + "devDependencies": { + "babel-cli": "^6.26.0", + "babel-core": "^6.26.3", + "babel-eslint": "10.0.1", + "babel-polyfill": "^6.26.0", + "babel-preset-env": "^1.7.0", + "babel-register": "^6.26.0", + "standard": "12.0.1" + }, + "repository": { + "type": "git", + "url": "https://gitlab.com/Polkabot/polkabot-plugin-reporter.git" + }, + "standard": { + "parser": "babel-eslint", + "ignore": [ + "dist/" + ], + "env": [ + "mocha" + ] + }, + "engines": { + "node": ">=10.13.0", + "yarn": "^1.10.1" + }, + "dependencies": { + "babel-cli": "6.26.0", + "babel-core": "6.26.3", + "babel-eslint": "10.0.3", + "babel-polyfill": "6.26.0", + "babel-preset-env": "1.7.0", + "babel-register": "6.26.0", + "standard": "14.3.1" + } +} diff --git a/packages/polkabot-plugin-reporter/src/index.js b/packages/polkabot-plugin-reporter/src/index.js new file mode 100644 index 0000000..815fffb --- /dev/null +++ b/packages/polkabot-plugin-reporter/src/index.js @@ -0,0 +1,177 @@ +import BN from 'bn.js' +import pluginConfig from './config' + +// TODO: Will move to hash later on +import xxhash from '@polkadot/util-crypto/xxhash/xxhash64/asHex' + +module.exports = class Reporter { + constructor (pbot) { + this.pbot = pbot + this.config = pluginConfig + this.cache = {} + } + + start () { + console.log('Reporter - Starting with config:', this.config) + this.watchChain().catch((error) => { + console.error('Reporter - Error subscribing to chain: ', error) + }) + } + + announce (msg) { + console.log('Reporter - Announcing: ', msg) + this.pbot.matrix.sendTextMessage(this.pbot.config.matrix.roomId, msg) + } + + buf2hex (buffer) { // buffer is an ArrayBuffer + return Array.prototype.map.call(new Uint8Array(buffer), x => ('00' + x.toString(16)).slice(-2)).join('') + } + + async subscribeChainBlockHeader () { + await this.pbot.polkadot.rpc.chain + .subscribeNewHead((header) => { + const KEY = 'blockNumber' + if (header) { + this.cache[KEY] = new BN(header.blockNumber, 16) + } + }) + } + + async watchMinimumBlockPeriodChanged () { + console.log('watchMinimumBlockPeriodChanged started') + await this.pbot.polkadot.query.timestamp.minimumPeriod(minimumPeriod => { + const KEY = 'minimumPeriod' + const minimumPeriodNumber = new BN(Number(minimumPeriod)) + + if (!this.cache[KEY]) this.cache[KEY] = minimumPeriodNumber + if (this.cache[KEY] && !(this.cache[KEY].eq(minimumPeriodNumber))) { + this.cache[KEY] = minimumPeriodNumber + console.log(`Reporter - minimumPeriod changed to ${minimumPeriodNumber} s`) + this.announce(`The minimum block period has changed. It is now ${minimumPeriodNumber.toNumber().toFixed(2)} seconds`) + } else { console.log(`Reporter - minimumPeriod: ${minimumPeriodNumber} s`) } + }) + } + + async watchMinimumDepositForProposals () { + await this.pbot.polkadot.query.democracy.minimumDeposit(minimumDeposit => { + const KEY = 'minimumDeposit' + const minimumDepositNumber = Number(minimumDeposit) + console.log('Reporter - Minimum deposit:', minimumDepositNumber) + + if (!this.cache[KEY]) this.cache[KEY] = minimumDepositNumber + if (this.cache[KEY] && this.cache[KEY] !== (minimumDepositNumber)) { + this.cache[KEY] = minimumDepositNumber + console.log(`Reporter - minimumDeposit changed to ${minimumDepositNumber}`) + this.announce(`The minimum deposit for proposals has changed. It is now ${minimumDepositNumber.toFixed(2)} µDOTs`) + } else { console.log(`Reporter - minimumDeposit: ${minimumDepositNumber}`) } + }) + } + + async watchActiveValidatorCount () { + // const validatorsSubscriptionUnsub = // can be used to unsubscribe + await this.pbot.polkadot.query.session.validators(validators => { + const KEY = 'validators' + + if (!this.cache[KEY]) this.cache[KEY] = validators + if (this.cache[KEY] && this.cache[KEY].length !== validators.length) { + console.log('Reporter - Active Validator count: ', validators.length) + this.announce(`Active Validator count has changed from ${this.cache[KEY].length} to ${validators.length}`) + this.cache[KEY] = validators + } else { console.log(`Reporter - Active Validator count: ${validators.length}`) } + }) + } + + async watchValidatorSlotCount () { + await this.pbot.polkadot.query.staking.validatorCount(validatorCount => { + const KEY = 'validatorCount' + + if (!this.cache[KEY]) this.cache[KEY] = validatorCount + if (this.cache[KEY] && this.cache[KEY] !== validatorCount) { + this.cache[KEY] = validatorCount + console.log('Reporter - Validator count:', validatorCount.toString(10)) + this.announce(`The number of validator slots has changed. It is now ${validatorCount.toString(10)}`) + } + }) + } + + async watchRuntimeCode () { + await this.pbot.polkadot.query.substrate.code(code => { + const KEY = 'runtime' + const hash = xxhash(code) + + if (!this.cache[KEY]) this.cache[KEY] = { hash, code } + if (this.cache[KEY] && this.cache[KEY].hash !== hash) { + this.cache[KEY] = { hash, code } + console.log('Reporter - Runtime Code hash changed:', hash) + + // const codeInHex = '0x' + this.buf2hex(code) + // console.log('Runtime Code hex changed', codeInHex) + + this.announce(`Runtime code hash has changed. The hash is now ${hash}. The runtime is now ${code ? (code.length / 1024).toFixed(2) : '???'} kb.`) + } else { console.log(`Reporter - Runtime Code hash: ${hash}`) } + }) + } + + async watchCouncilVotingPeriod () { + // we don't alert for changes but store the latest value + await this.pbot.polkadot.query.council.votingPeriod(votingPeriod => { + const KEY = 'votingPeriod' + + this.cache[KEY] = new BN(votingPeriod) + console.log('Reporter - VotingPeriod:', this.cache[KEY].toString(10)) + }) + } + + async watchCouncilMotionsProposalCount () { + await this.pbot.polkadot.query.councilMotions.proposalCount(proposalCount => { + const KEY = 'proposalCount' + + const count = new BN(proposalCount) + if (!this.cache[KEY]) this.cache[KEY] = count + if (this.cache[KEY] && !(this.cache[KEY].eq(count))) { + this.cache[KEY] = count + + console.log('Reporter - Proposal count changed:', count.toString(10)) + const id = count.sub(new BN(1)) + this.announce( + `A new council motion proposal is available (#${id}), check your UI at https://polkadot.js.org/apps/#/democracy. + You will be able to vote shortly, a new referendum will show up in the UI.`) + } else { console.log(`Reporter - Proposal count: ${count.toString(10)}`) } + }) + } + + async watchReferendumCount () { + await this.pbot.polkadot.query.democracy.referendumCount(referendumCount => { + const KEY = 'referendumCount' + console.log('Reporter - referendumCount:', referendumCount.toString(10)) + + const count = new BN(referendumCount) + if (!this.cache[KEY]) this.cache[KEY] = count + if (this.cache[KEY] && !(this.cache[KEY].eq(count))) { + this.cache[KEY] = count + const deadline = this.cache.blockNumber.add(this.cache.votingPeriod) + const votingTimeInMinutes = parseInt(this.cache.votingPeriod.mul(this.cache.minimumPeriod).toString(10)) / 60 + console.log('Reporter - Referendum count changed:', count.toString(10)) + const id = count.sub(new BN(1)).toString(10) + + this.announce( + `@room New referendum (#${id}) available. Check your UI at https://polkadot.js.org/apps/#/democracy. + You can vote for referendum #${id} during the next ${this.cache.votingPeriod.toString(10)} blocks. + That means a deadline at block #${deadline.toString(10)}, don't miss it! + You have around ${votingTimeInMinutes.toFixed(2)} minutes to vote.`) + } else { console.log(`Reporter - Referendum count: ${count.toString(10)}`) } + }) + } + + async watchChain () { + await this.subscribeChainBlockHeader() + await this.watchMinimumBlockPeriodChanged() + await this.watchMinimumDepositForProposals() + await this.watchActiveValidatorCount() + await this.watchValidatorSlotCount() + await this.watchRuntimeCode() + await this.watchCouncilVotingPeriod() + await this.watchCouncilMotionsProposalCount() + await this.watchReferendumCount() + } +} diff --git a/packages/polkabot-plugin-stallwatcher/src/index.ts b/packages/polkabot-plugin-stallwatcher/src/index.ts index f78e379..551c052 100644 --- a/packages/polkabot-plugin-stallwatcher/src/index.ts +++ b/packages/polkabot-plugin-stallwatcher/src/index.ts @@ -2,6 +2,7 @@ import BN from "bn.js"; import { PolkabotWorker, PluginModule, PluginContext } from "@polkabot/api/src/plugin.interface"; +// TODO we may want to catch and alert if the network resume at a block that is not lastBlock+1 export default class StallWatcher extends PolkabotWorker { private stalled: boolean; private lastBlockTime: Date; -- GitLab From 7eedbf77a0a429c1c4839a1a6eccd502afabe4d5 Mon Sep 17 00:00:00 2001 From: Will Date: Mon, 27 Jan 2020 13:17:53 +0100 Subject: [PATCH 27/86] Upgrade and fix of the reported plugin --- .vscode/settings.json | 3 +- packages/polkabot-plugin-reporter/README.adoc | 2 +- .../polkabot-plugin-reporter/package.json | 6 +- .../polkabot-plugin-reporter/src/index.js | 177 ----------------- .../polkabot-plugin-reporter/src/index.ts | 183 ++++++++++++++++++ .../polkabot-plugin-reporter/tsconfig.json | 27 +++ packages/polkabot/src/index.ts | 2 +- 7 files changed, 217 insertions(+), 183 deletions(-) delete mode 100644 packages/polkabot-plugin-reporter/src/index.js create mode 100644 packages/polkabot-plugin-reporter/src/index.ts create mode 100644 packages/polkabot-plugin-reporter/tsconfig.json diff --git a/.vscode/settings.json b/.vscode/settings.json index 24d4a65..2abfeeb 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -14,6 +14,7 @@ "envfile", "minimongo", "msgsype", - "upsert" + "upsert", + "xxhash" ] } \ No newline at end of file diff --git a/packages/polkabot-plugin-reporter/README.adoc b/packages/polkabot-plugin-reporter/README.adoc index 305e89e..bc52dc5 100644 --- a/packages/polkabot-plugin-reporter/README.adoc +++ b/packages/polkabot-plugin-reporter/README.adoc @@ -1,4 +1,4 @@ = Reporter -This plugin acts as a Polkadot citizen reporter. It inspects mainly governance aspects of the Polkadot network and informs the crowd about noticable events. +This plugin acts as a Polkadot citizen reporter. It inspects mainly governance aspects of the Polkadot network and informs the crowd about noticeable events. diff --git a/packages/polkabot-plugin-reporter/package.json b/packages/polkabot-plugin-reporter/package.json index 0bc7695..afb32cf 100644 --- a/packages/polkabot-plugin-reporter/package.json +++ b/packages/polkabot-plugin-reporter/package.json @@ -2,14 +2,14 @@ "name": "polkabot-plugin-reporter", "version": "0.4.4", "description": "", - "main": "dist/index.js", + "main": "dist/src/index.js", "scripts": { + "build": "tsc --build tsconfig.json", "lint": "standard", "start": "babel-node ./src/index.js", - "build": "babel src --out-dir dist", "prepublishOnly": "npm run build", "postinstall": "npm run build", - "clean": "rm -rf dist node_modules" + "clean": "rm -rf dist build node_modules" }, "author": "Chevdor ", "license": "ISC", diff --git a/packages/polkabot-plugin-reporter/src/index.js b/packages/polkabot-plugin-reporter/src/index.js deleted file mode 100644 index 815fffb..0000000 --- a/packages/polkabot-plugin-reporter/src/index.js +++ /dev/null @@ -1,177 +0,0 @@ -import BN from 'bn.js' -import pluginConfig from './config' - -// TODO: Will move to hash later on -import xxhash from '@polkadot/util-crypto/xxhash/xxhash64/asHex' - -module.exports = class Reporter { - constructor (pbot) { - this.pbot = pbot - this.config = pluginConfig - this.cache = {} - } - - start () { - console.log('Reporter - Starting with config:', this.config) - this.watchChain().catch((error) => { - console.error('Reporter - Error subscribing to chain: ', error) - }) - } - - announce (msg) { - console.log('Reporter - Announcing: ', msg) - this.pbot.matrix.sendTextMessage(this.pbot.config.matrix.roomId, msg) - } - - buf2hex (buffer) { // buffer is an ArrayBuffer - return Array.prototype.map.call(new Uint8Array(buffer), x => ('00' + x.toString(16)).slice(-2)).join('') - } - - async subscribeChainBlockHeader () { - await this.pbot.polkadot.rpc.chain - .subscribeNewHead((header) => { - const KEY = 'blockNumber' - if (header) { - this.cache[KEY] = new BN(header.blockNumber, 16) - } - }) - } - - async watchMinimumBlockPeriodChanged () { - console.log('watchMinimumBlockPeriodChanged started') - await this.pbot.polkadot.query.timestamp.minimumPeriod(minimumPeriod => { - const KEY = 'minimumPeriod' - const minimumPeriodNumber = new BN(Number(minimumPeriod)) - - if (!this.cache[KEY]) this.cache[KEY] = minimumPeriodNumber - if (this.cache[KEY] && !(this.cache[KEY].eq(minimumPeriodNumber))) { - this.cache[KEY] = minimumPeriodNumber - console.log(`Reporter - minimumPeriod changed to ${minimumPeriodNumber} s`) - this.announce(`The minimum block period has changed. It is now ${minimumPeriodNumber.toNumber().toFixed(2)} seconds`) - } else { console.log(`Reporter - minimumPeriod: ${minimumPeriodNumber} s`) } - }) - } - - async watchMinimumDepositForProposals () { - await this.pbot.polkadot.query.democracy.minimumDeposit(minimumDeposit => { - const KEY = 'minimumDeposit' - const minimumDepositNumber = Number(minimumDeposit) - console.log('Reporter - Minimum deposit:', minimumDepositNumber) - - if (!this.cache[KEY]) this.cache[KEY] = minimumDepositNumber - if (this.cache[KEY] && this.cache[KEY] !== (minimumDepositNumber)) { - this.cache[KEY] = minimumDepositNumber - console.log(`Reporter - minimumDeposit changed to ${minimumDepositNumber}`) - this.announce(`The minimum deposit for proposals has changed. It is now ${minimumDepositNumber.toFixed(2)} µDOTs`) - } else { console.log(`Reporter - minimumDeposit: ${minimumDepositNumber}`) } - }) - } - - async watchActiveValidatorCount () { - // const validatorsSubscriptionUnsub = // can be used to unsubscribe - await this.pbot.polkadot.query.session.validators(validators => { - const KEY = 'validators' - - if (!this.cache[KEY]) this.cache[KEY] = validators - if (this.cache[KEY] && this.cache[KEY].length !== validators.length) { - console.log('Reporter - Active Validator count: ', validators.length) - this.announce(`Active Validator count has changed from ${this.cache[KEY].length} to ${validators.length}`) - this.cache[KEY] = validators - } else { console.log(`Reporter - Active Validator count: ${validators.length}`) } - }) - } - - async watchValidatorSlotCount () { - await this.pbot.polkadot.query.staking.validatorCount(validatorCount => { - const KEY = 'validatorCount' - - if (!this.cache[KEY]) this.cache[KEY] = validatorCount - if (this.cache[KEY] && this.cache[KEY] !== validatorCount) { - this.cache[KEY] = validatorCount - console.log('Reporter - Validator count:', validatorCount.toString(10)) - this.announce(`The number of validator slots has changed. It is now ${validatorCount.toString(10)}`) - } - }) - } - - async watchRuntimeCode () { - await this.pbot.polkadot.query.substrate.code(code => { - const KEY = 'runtime' - const hash = xxhash(code) - - if (!this.cache[KEY]) this.cache[KEY] = { hash, code } - if (this.cache[KEY] && this.cache[KEY].hash !== hash) { - this.cache[KEY] = { hash, code } - console.log('Reporter - Runtime Code hash changed:', hash) - - // const codeInHex = '0x' + this.buf2hex(code) - // console.log('Runtime Code hex changed', codeInHex) - - this.announce(`Runtime code hash has changed. The hash is now ${hash}. The runtime is now ${code ? (code.length / 1024).toFixed(2) : '???'} kb.`) - } else { console.log(`Reporter - Runtime Code hash: ${hash}`) } - }) - } - - async watchCouncilVotingPeriod () { - // we don't alert for changes but store the latest value - await this.pbot.polkadot.query.council.votingPeriod(votingPeriod => { - const KEY = 'votingPeriod' - - this.cache[KEY] = new BN(votingPeriod) - console.log('Reporter - VotingPeriod:', this.cache[KEY].toString(10)) - }) - } - - async watchCouncilMotionsProposalCount () { - await this.pbot.polkadot.query.councilMotions.proposalCount(proposalCount => { - const KEY = 'proposalCount' - - const count = new BN(proposalCount) - if (!this.cache[KEY]) this.cache[KEY] = count - if (this.cache[KEY] && !(this.cache[KEY].eq(count))) { - this.cache[KEY] = count - - console.log('Reporter - Proposal count changed:', count.toString(10)) - const id = count.sub(new BN(1)) - this.announce( - `A new council motion proposal is available (#${id}), check your UI at https://polkadot.js.org/apps/#/democracy. - You will be able to vote shortly, a new referendum will show up in the UI.`) - } else { console.log(`Reporter - Proposal count: ${count.toString(10)}`) } - }) - } - - async watchReferendumCount () { - await this.pbot.polkadot.query.democracy.referendumCount(referendumCount => { - const KEY = 'referendumCount' - console.log('Reporter - referendumCount:', referendumCount.toString(10)) - - const count = new BN(referendumCount) - if (!this.cache[KEY]) this.cache[KEY] = count - if (this.cache[KEY] && !(this.cache[KEY].eq(count))) { - this.cache[KEY] = count - const deadline = this.cache.blockNumber.add(this.cache.votingPeriod) - const votingTimeInMinutes = parseInt(this.cache.votingPeriod.mul(this.cache.minimumPeriod).toString(10)) / 60 - console.log('Reporter - Referendum count changed:', count.toString(10)) - const id = count.sub(new BN(1)).toString(10) - - this.announce( - `@room New referendum (#${id}) available. Check your UI at https://polkadot.js.org/apps/#/democracy. - You can vote for referendum #${id} during the next ${this.cache.votingPeriod.toString(10)} blocks. - That means a deadline at block #${deadline.toString(10)}, don't miss it! - You have around ${votingTimeInMinutes.toFixed(2)} minutes to vote.`) - } else { console.log(`Reporter - Referendum count: ${count.toString(10)}`) } - }) - } - - async watchChain () { - await this.subscribeChainBlockHeader() - await this.watchMinimumBlockPeriodChanged() - await this.watchMinimumDepositForProposals() - await this.watchActiveValidatorCount() - await this.watchValidatorSlotCount() - await this.watchRuntimeCode() - await this.watchCouncilVotingPeriod() - await this.watchCouncilMotionsProposalCount() - await this.watchReferendumCount() - } -} diff --git a/packages/polkabot-plugin-reporter/src/index.ts b/packages/polkabot-plugin-reporter/src/index.ts new file mode 100644 index 0000000..8779e11 --- /dev/null +++ b/packages/polkabot-plugin-reporter/src/index.ts @@ -0,0 +1,183 @@ +import BN from "bn.js"; +import { + PolkabotWorker, + NotifierMessage, + NotifierSpecs, + PluginModule, + PluginContext +} from "@polkabot/api/src/plugin.interface"; + +// TODO: Will move to hash later on +// import xxhash from "@polkadot/util-crypto/xxhash/xxhash64/asHex"; +import blake2 from "@polkadot/util-crypto/blake2/asHex"; + +enum Severity { + INFO, + WARNING, + IMPORTANT, + CRITICAL +} + +type Announcement = { + severity: Severity; + message: string; +} + +export default class Reporter extends PolkabotWorker { + private cache: any; // TODO FIXME + private notifierSpecs: NotifierSpecs = { + notifiers: ["matrix"] + }; + + public constructor(mod: PluginModule, context: PluginContext, config?) { + super(mod, context, config); + this.cache = {}; + this.config = {}; + } + + public start(): void { + console.log("Reporter - Starting with config:", this.config); + this.watchChain().catch(error => { + console.error("Reporter - Error subscribing to chain: ", error); + }); + } + + + // TODO: switch from string to Announcement + private announce(message: string ) { + this.context.polkabot.notify( + { + message + }, + this.notifierSpecs + ); + } + + buf2hex(buffer) { + // buffer is an ArrayBuffer + return Array.prototype.map.call(new Uint8Array(buffer), x => ("00" + x.toString(16)).slice(-2)).join(""); + } + + async subscribeChainBlockHeader() { + await this.context.polkadot.rpc.chain.subscribeNewHeads(header => { + const KEY = "blockNumber"; + if (header) { + this.cache[KEY] = header.number.unwrap().toBn(); + } + }); + } + + async watchActiveValidatorCount() { + // const validatorsSubscriptionUnsub = // can be used to unsubscribe + await this.context.polkadot.query.session.validators(validators => { + const KEY = "validators"; + + if (!this.cache[KEY]) this.cache[KEY] = validators; + if (this.cache[KEY] && this.cache[KEY].length !== validators.length) { + console.log("Reporter - Active Validator count: ", validators.length); + this.announce(`Active Validator count has changed from ${this.cache[KEY].length} to ${validators.length}`); + this.cache[KEY] = validators; + } else { + console.log(`Reporter - Active Validator count: ${validators.length}`); + } + }); + } + + async watchValidatorSlotCount() { + await this.context.polkadot.query.staking.validatorCount(validatorCount => { + const KEY = "validatorCount"; + + if (!this.cache[KEY]) this.cache[KEY] = validatorCount; + if (this.cache[KEY] && this.cache[KEY] !== validatorCount) { + this.cache[KEY] = validatorCount; + console.log("Reporter - Validator count:", validatorCount.toString(10)); + this.announce(`The number of validator slots has changed. It is now ${validatorCount.toString(10)}`); + } + }); + } + + async watchRuntimeCode() { + await this.context.polkadot.query.substrate.code(code => { + const KEY = "runtime"; + const hash = blake2(code, 16); + + if (!this.cache[KEY]) this.cache[KEY] = { hash, code }; + if (this.cache[KEY] && this.cache[KEY].hash !== hash) { + this.cache[KEY] = { hash, code }; + console.log("Reporter - Runtime Code hash changed:", hash); + + // const codeInHex = '0x' + this.buf2hex(code) + // console.log('Runtime Code hex changed', codeInHex) + + this.announce( + `Runtime code hash has changed. The hash is now ${hash}. The runtime is now ${ + code ? (code.length / 1024).toFixed(2) : "???" + } kb.` + ); + } else { + console.log(`Reporter - Runtime Code hash: ${hash}`); + } + }); + } + + // Extract a function to do that. It needs: + // - query path: council.proposalCount for instance + // - our cache storage key: proposalCount. It could even be generated. + // - a transformation (optional) for the 'value'. For instance, for the runtime, we need to hash first. + // - a message template if the value changes + async watchCouncilMotionsProposalCount() { + await this.context.polkadot.query.council.proposalCount(proposalCount => { + const KEY = "proposalCount"; + + const count = new BN(proposalCount); + if (!this.cache[KEY]) this.cache[KEY] = count; + if (this.cache[KEY] && !this.cache[KEY].eq(count)) { + this.cache[KEY] = count; + + console.log("Reporter - Proposal count changed:", count.toString(10)); + const id = count.sub(new BN(1)); + this.announce( + `A new council motion proposal is available (#${id}), check your UI at https://polkadot.js.org/apps/#/democracy. + You will be able to vote shortly, a new referendum will show up in the UI.` + ); + } else { + console.log(`Reporter - Proposal count: ${count.toString(10)}`); + } + }); + } + + async watchReferendumCount() { + await this.context.polkadot.query.democracy.referendumCount(referendumCount => { + const KEY = "referendumCount"; + console.log("Reporter - referendumCount:", referendumCount.toString(10)); + + const count = new BN(referendumCount); + if (!this.cache[KEY]) this.cache[KEY] = count; + if (this.cache[KEY] && !this.cache[KEY].eq(count)) { + this.cache[KEY] = count; + const deadline = this.cache.blockNumber.add(this.cache.votingPeriod); + const votingTimeInMinutes = parseInt(this.cache.votingPeriod.mul(this.cache.minimumPeriod).toString(10)) / 60; + console.log("Reporter - Referendum count changed:", count.toString(10)); + const id = count.sub(new BN(1)).toString(10); + + this.announce( + `@room New referendum (#${id}) available. Check your UI at https://polkadot.js.org/apps/#/democracy. + You can vote for referendum #${id} during the next ${this.cache.votingPeriod.toString(10)} blocks. + That means a deadline at block #${deadline.toString(10)}, don't miss it! + You have around ${votingTimeInMinutes.toFixed(2)} minutes to vote.` + ); + } else { + console.log(`Reporter - Referendum count: ${count.toString(10)}`); + } + }); + } + + async watchChain() { + await this.subscribeChainBlockHeader(); + await this.watchActiveValidatorCount(); + await this.watchValidatorSlotCount(); + await this.watchRuntimeCode(); + await this.watchCouncilMotionsProposalCount(); + await this.watchReferendumCount(); + } +} diff --git a/packages/polkabot-plugin-reporter/tsconfig.json b/packages/polkabot-plugin-reporter/tsconfig.json new file mode 100644 index 0000000..a7dac9c --- /dev/null +++ b/packages/polkabot-plugin-reporter/tsconfig.json @@ -0,0 +1,27 @@ +{ + "compilerOptions": { + "module": "commonjs", + "moduleResolution": "node", + "esModuleInterop": true, + "resolveJsonModule": true, + "allowJs": true, + "target": "es5", + "noImplicitAny": false, + "sourceMap": true, + "preserveConstEnums": true, + "lib": ["es2015", "dom"], + "noUnusedLocals": false, + "noImplicitReturns": true, + "noImplicitThis": true, + "alwaysStrict": true, + "strictNullChecks": false, + "noUnusedParameters": false, + "pretty": true, + "allowUnreachableCode": false, + "experimentalDecorators": true, + "suppressImplicitAnyIndexErrors": true, + "outDir": "./dist" + }, + "include": ["./bin/**/*", "./src/**/*", "./test/**/*", "./package.json"], + "compileOnSave": true +} diff --git a/packages/polkabot/src/index.ts b/packages/polkabot/src/index.ts index 3dee54b..f6f3ca3 100644 --- a/packages/polkabot/src/index.ts +++ b/packages/polkabot/src/index.ts @@ -93,7 +93,7 @@ export default class Polkabot { console.log("Filtering plugins..."); plugins = plugins.filter( - (p: PluginModule) => p.name.indexOf("matrix") > 0 || p.name.indexOf("stall") > 0 // || p.name.indexOf("demo") > 0 + (p: PluginModule) => p.name.indexOf("matrix") > 0 || p.name.indexOf("reporter") > 0 // || p.name.indexOf("demo") > 0 ); console.log(`Found ${plugins.length} plugins`); // console.log(`${JSON.stringify(plugins, null, 2)}`); -- GitLab From 5fe36756206a0225e4723343d026d68d4e0d7901 Mon Sep 17 00:00:00 2001 From: Will Date: Wed, 29 Jan 2020 14:16:02 +0100 Subject: [PATCH 28/86] Add partial support for plugin commands and the ability to disable the loading of plugin from ENV --- packages/polkabot-api/src/plugin.interface.ts | 42 ++++++- .../polkabot-plugin-blocthday/src/commands.ts | 19 +++ .../polkabot-plugin-blocthday/src/index.ts | 39 +++++- .../polkabot-plugin-reporter/package.json | 1 + .../polkabot-plugin-reporter/src/index.ts | 111 ++++++++++++++++-- packages/polkabot/src/index.ts | 63 ++++++---- packages/polkabot/src/lib/plugin-loader.ts | 2 + packages/polkabot/src/lib/plugin-scanner.ts | 8 ++ yarn.lock | 2 +- 9 files changed, 250 insertions(+), 37 deletions(-) create mode 100644 packages/polkabot-plugin-blocthday/src/commands.ts diff --git a/packages/polkabot-api/src/plugin.interface.ts b/packages/polkabot-api/src/plugin.interface.ts index b2fc193..43908f8 100644 --- a/packages/polkabot-api/src/plugin.interface.ts +++ b/packages/polkabot-api/src/plugin.interface.ts @@ -1,14 +1,16 @@ import { packageJson } from "package-json"; import * as path from "path"; import { assert } from "./utils"; + /** * A plugin module before the package has been loaded. * Before loading the patch we know only the path and the name * of the package. */ export type PluginModule = { - name: string; - path: string; + name: string; // polkabot-plugin-foobar + shortName: string; // foobar + path: string; // /some/path/to/module }; export enum Type { @@ -17,12 +19,46 @@ export enum Type { Chatbot } +export type CommandHandlerOutput = { + code: number; + msg: string; +}; + +export type PluginCommand = { + name: string; // ie: start + description: string; // what does this command do + argsRegexp: string; // regexp to validate the expected args + handler: (...args: any[]) => CommandHandlerOutput; +}; + +export type PluginCommands = { + name: string; // ie: Identity Registrar + alias: string; // ie: reg + commands: Array; +}; + +// export interface IPolkabotPlugin { +// start(): void; +// stop(): void; +// } + +/** + * Something implementing IControllable must expose commands and handlers that can + * be called to control the thing. + */ +export interface IControllable { + commands?: PluginCommands; +} + export class PolkabotPluginBase { public module: PluginModule; public config: any; // TODO public context: any; // TODO public package: packageJson; public type: Type; + public commands?: PluginCommands; + + // public description: string; // some blabla about the plugin, we dont have this field, we use the package.json/description constructor(type: Type, mod: PluginModule, context: PluginContext, config?) { // console.log(`++ PolkabotPluginBase/${type} ${mod.name}: ${mod.path}`); @@ -44,7 +80,7 @@ export abstract class PolkabotWorker extends PolkabotPluginBase { super(Type.Worker, mod, context, config); } public abstract start(); - // TODO add stop() + public abstract stop(); } export abstract class PolkabotChatbot extends PolkabotPluginBase { diff --git a/packages/polkabot-plugin-blocthday/src/commands.ts b/packages/polkabot-plugin-blocthday/src/commands.ts new file mode 100644 index 0000000..86d0757 --- /dev/null +++ b/packages/polkabot-plugin-blocthday/src/commands.ts @@ -0,0 +1,19 @@ +// import { PluginCommands } from "@polkabot/api/src/plugin.interface"; + +// TODO: we need to be aware of THIS here. It could be done with a +// getCommands(this) + +// const commands: PluginCommands = { +// name: "Blocthday", +// alias: "bday", +// commands: [ +// { +// name: "status", +// description: "Show status of the plugin", +// argsRegexp: "", +// handler: this.cmdStatus +// } +// ] +// }; + +// export default commands; diff --git a/packages/polkabot-plugin-blocthday/src/index.ts b/packages/polkabot-plugin-blocthday/src/index.ts index 961aa99..641440d 100644 --- a/packages/polkabot-plugin-blocthday/src/index.ts +++ b/packages/polkabot-plugin-blocthday/src/index.ts @@ -4,18 +4,41 @@ import { NotifierMessage, NotifierSpecs, PluginModule, - PluginContext + PluginContext, + CommandHandlerOutput, + IControllable } from "@polkabot/api/src/plugin.interface"; +// import commands from "./commands"; -export default class Blocthday extends PolkabotWorker { - private NB_BLOCKS: number +export default class Blocthday extends PolkabotWorker implements IControllable { + private NB_BLOCKS: number; + + private cmdStatus(...args: any[]): CommandHandlerOutput { + console.log("Called cmdStatus with:", args); + + return { + code: -1, + msg: "Implement me first!" + }; + } public constructor(mod: PluginModule, context: PluginContext, config?) { super(mod, context, config); - this.NB_BLOCKS = parseInt(process.env.POLKABOT_PLUGIN_BLOCTHDAY_NB_BLOCKS) || 1000000 + this.NB_BLOCKS = parseInt(process.env.POLKABOT_PLUGIN_BLOCTHDAY_NB_BLOCKS) || 1000000; + this.commands = { + name: "Blocthday", + alias: "bday", + commands: [ + { + name: "status", + description: "Show status of the plugin", + argsRegexp: "", + handler: this.cmdStatus + } + ] + }; } - public start(): void { console.log("Blocthday - Starting with NB_BLOCKS:", this.NB_BLOCKS); this.watchChain().catch(error => { @@ -23,6 +46,12 @@ export default class Blocthday extends PolkabotWorker { }); } + public stop(): void { + console.log("Blocthday - STOPPING"); + + // TODO: unsubscribe to everything here + } + async watchChain() { // Reference: https://polkadot.js.org/api/examples/promise/02_listen_to_blocks/ await this.context.polkadot.rpc.chain.subscribeNewHeads(header => { diff --git a/packages/polkabot-plugin-reporter/package.json b/packages/polkabot-plugin-reporter/package.json index afb32cf..55e9f6d 100644 --- a/packages/polkabot-plugin-reporter/package.json +++ b/packages/polkabot-plugin-reporter/package.json @@ -51,6 +51,7 @@ "babel-polyfill": "6.26.0", "babel-preset-env": "1.7.0", "babel-register": "6.26.0", + "moment": "^2.24.0", "standard": "14.3.1" } } diff --git a/packages/polkabot-plugin-reporter/src/index.ts b/packages/polkabot-plugin-reporter/src/index.ts index 8779e11..324f9de 100644 --- a/packages/polkabot-plugin-reporter/src/index.ts +++ b/packages/polkabot-plugin-reporter/src/index.ts @@ -1,4 +1,7 @@ import BN from "bn.js"; +import moment from "moment"; +// import "moment-duration-format"; + import { PolkabotWorker, NotifierMessage, @@ -19,20 +22,70 @@ enum Severity { } type Announcement = { - severity: Severity; + severity: Severity; message: string; -} - +}; + +type BlockMoment = { + future: boolean; // is the block in the future + duration: number; // in/for how many seconds + date: Date; // what is the estimated date + message: string; // formated date string that will be removed +}; + export default class Reporter extends PolkabotWorker { private cache: any; // TODO FIXME private notifierSpecs: NotifierSpecs = { notifiers: ["matrix"] }; + private consts: any; + public constructor(mod: PluginModule, context: PluginContext, config?) { super(mod, context, config); this.cache = {}; this.config = {}; + this.consts = this.context.polkadot.consts; + } + + /** Check the last blocks and figure out the block time. + * This should gives around 6.0 seconds on Kusama. + */ + async getAverageBlockTime() { + const NB_SAMPLES = 3; // less is faster + const STEP = 10; // sample over a longer period + let last = undefined; + let durations = []; + const api = this.context.polkadot; + + for (let i = this.cache.block, j = 0; j < NB_SAMPLES; j++, i -= STEP) { + const h = await api.rpc.chain.getBlockHash(i); + const now = new Date((await api.query.timestamp.now.at(h)).toNumber()).getTime() * 1.0; + if (last) { + durations.push((last - now) / 1000.0); + } + last = now; + } + return durations.reduce((a, b) => a + b) / durations.length / STEP; + } + + /** Returns an object telling us when a block will/did show up */ + async getBlockMoment(block: BN) { + // const currentBlock = (await this.context.polkadot.rpc.chain.getBlock()).block.header.number.toNumber(); + const blockTime = await this.getAverageBlockTime(); + + const h = await this.context.polkadot.rpc.chain.getBlockHash(this.cache.blockNumber); + const now = new Date((await this.context.polkadot.query.timestamp.now.at(h)).toNumber()); + const future = block > this.cache.blockNumber; + const other = new Date(now.getTime() + (this.cache.blockNumber as BN).sub(block).toNumber() * blockTime * 1000); + const duration = Math.abs(now.getTime() - other.getTime()) / 1000; + + return { + future, + duration, + date: other, + msg: `${future ? "in" : "for"} ${duration} seconds` // TODO with Moment.js we dont need that + }; } public start(): void { @@ -42,9 +95,13 @@ export default class Reporter extends PolkabotWorker { }); } + public stop(): void { + console.log("Reporter - STOPPING"); + // TODO: do all the unsub here + } // TODO: switch from string to Announcement - private announce(message: string ) { + private announce(message: string) { this.context.polkabot.notify( { message @@ -146,6 +203,34 @@ export default class Reporter extends PolkabotWorker { }); } + async watchPublicProposalCount() { + await this.context.polkadot.query.democracy.publicPropCount(async (publicPropCount: BN) => { + const KEY = "publicPropCount"; + console.log("Reporter - publicPropCount:", publicPropCount.toString(10)); + + const count = publicPropCount; + if (!this.cache[KEY]) this.cache[KEY] = count; + if (this.cache[KEY] && !this.cache[KEY].eq(count)) { + this.cache[KEY] = count; + const deadline = this.cache.blockNumber.add(this.consts.democracy.votingPeriod) as BN; + const blockMoment = await this.getBlockMoment(deadline); + // const votingTimeInMinutes = + // parseInt(this.consts.democracy.votingPeriod.mul(this.cache.minimumPeriod).toString(10)) / 60; + console.log("Reporter - Proposal count changed:", count.toString(10)); + const id = count.sub(new BN(1)).toString(10); + + this.announce( + `@room New Proposal (#${id}) available. Check your UI at https://polkadot.js.org/apps/#/democracy. + You can second Proposal #${id} during the next ${this.context.polkadot.consts.democracy.votingPeriod.toString(10)} blocks. + That means a deadline at block #${deadline.toString(10)}, don't miss it! + the deadline to vote is ${moment(blockMoment.date).fromNow()}.` + ); + } else { + console.log(`Reporter - Proposal count: ${count.toString(10)}`); + } + }); + } + async watchReferendumCount() { await this.context.polkadot.query.democracy.referendumCount(referendumCount => { const KEY = "referendumCount"; @@ -155,14 +240,17 @@ export default class Reporter extends PolkabotWorker { if (!this.cache[KEY]) this.cache[KEY] = count; if (this.cache[KEY] && !this.cache[KEY].eq(count)) { this.cache[KEY] = count; - const deadline = this.cache.blockNumber.add(this.cache.votingPeriod); - const votingTimeInMinutes = parseInt(this.cache.votingPeriod.mul(this.cache.minimumPeriod).toString(10)) / 60; + const deadline = this.cache.blockNumber.add(this.context.polkadot.consts.democracy.votingPeriod); + const votingTimeInMinutes = + parseInt(this.context.polkadot.consts.democracy.votingPeriod.mul(this.cache.minimumPeriod).toString(10)) / 60; console.log("Reporter - Referendum count changed:", count.toString(10)); const id = count.sub(new BN(1)).toString(10); this.announce( `@room New referendum (#${id}) available. Check your UI at https://polkadot.js.org/apps/#/democracy. - You can vote for referendum #${id} during the next ${this.cache.votingPeriod.toString(10)} blocks. + You can vote for referendum #${id} during the next ${this.context.polkadot.consts.democracy.votingPeriod.toString( + 10 + )} blocks. That means a deadline at block #${deadline.toString(10)}, don't miss it! You have around ${votingTimeInMinutes.toFixed(2)} minutes to vote.` ); @@ -174,10 +262,19 @@ export default class Reporter extends PolkabotWorker { async watchChain() { await this.subscribeChainBlockHeader(); + + // Validators await this.watchActiveValidatorCount(); await this.watchValidatorSlotCount(); + + // Runtime await this.watchRuntimeCode(); + + // Council await this.watchCouncilMotionsProposalCount(); + + // Democracy + await this.watchPublicProposalCount(); await this.watchReferendumCount(); } } diff --git a/packages/polkabot/src/index.ts b/packages/polkabot/src/index.ts index f6f3ca3..500a491 100644 --- a/packages/polkabot/src/index.ts +++ b/packages/polkabot/src/index.ts @@ -1,19 +1,15 @@ -// import 'babel-core/register' -// import 'babel-polyfill' import Olm from "olm"; -import minimongo from "minimongo"; import { ApiPromise, WsProvider } from "@polkadot/api"; +import minimongo from "minimongo"; import Datastore from "nedb"; import pkg from "../package.json"; import PluginScanner from "./lib/plugin-scanner"; -// import PluginLoader from "./lib/plugin-loader"; // TODO wk bring that back -// import * as path from 'path' +import PluginLoader from "./lib/plugin-loader"; import sdk from "matrix-js-sdk"; import { ConfigSingleton } from "./ConfigSingleton"; -import { assert } from "@polkadot/util"; import { IPolkabotConfig } from "./types"; -import PluginLoader from "./lib/plugin-loader"; +import { assert } from "@polkadot/util"; import { PluginContext, PolkabotPlugin, @@ -21,7 +17,8 @@ import { PolkabotNotifier, NotifierMessage, NotifierSpecs, - PluginModule + PluginModule, + IControllable } from "../../polkabot-api/src/plugin.interface"; //@ts-ignore @@ -42,17 +39,26 @@ export default class Polkabot { private matrix: any; private polkadot: any; private notifiersTable: INotifiersTable = {}; + private controllablePlugins: IControllable[] = []; - public constructor(args) { + public constructor(..._args: any[]) { // this.args = args this.db = new Datastore({ filename: "polkabot.db" }); } private isWorker(candidate: PolkabotPlugin): candidate is PolkabotWorker { - if ((candidate as PolkabotWorker).start) { - return true; - } - return false; + return (candidate as PolkabotWorker).start !== undefined; + } + + private isNotifier(candidate: PolkabotPlugin): candidate is PolkabotNotifier { + return (candidate as PolkabotNotifier).notify !== undefined; + } + + private isControllable(candidate: PolkabotPlugin): boolean { + console.log("Testing for controllable", candidate.package.name, candidate.commands); + const res = candidate.commands !== undefined; + assert(candidate.package.name !== "polkabot-plugin-blocthday" || res, "BUG!"); + return res; } /** this method is usually called by the workers who wish to notify something @@ -80,21 +86,32 @@ export default class Polkabot { // console.log("notifierTable", this.notifiersTable); } + /** Rwegister all the IControllable we find. They will be passed to the Operator. */ + private registerControllable(controllable: IControllable) { + assert(controllable.commands, "No commands defined"); + + console.log("Registering controllable:", controllable); + this.controllablePlugins.push(controllable); + console.log("Controllables", this.controllablePlugins); + } + private async loadPlugins() { console.log("Polkabot - Loading plugins:"); const pluginScanner = new PluginScanner(pkg.name + "-plugin"); let plugins = await pluginScanner.scan(); // TODO: switch back to a const - // TODO remove that, here we ignore some plugins on purpose console.log("Plugins found:"); plugins.map(p => { console.log(`- ${p.name}`); }); console.log("Filtering plugins..."); - plugins = plugins.filter( - (p: PluginModule) => p.name.indexOf("matrix") > 0 || p.name.indexOf("reporter") > 0 // || p.name.indexOf("demo") > 0 - ); + plugins = plugins.filter((p: PluginModule) => { + const DISABLED_KEY = `POLKABOT_PLUGIN_${p.shortName}_DISABLED`; + const disabled: boolean = (process.env[DISABLED_KEY] || "false") === "true"; + console.log(DISABLED_KEY, "\t", disabled); + return !disabled; + }); console.log(`Found ${plugins.length} plugins`); // console.log(`${JSON.stringify(plugins, null, 2)}`); @@ -110,15 +127,19 @@ export default class Polkabot { PluginLoader.load(plugin, context) .then(p => { + if (this.isControllable(p)) { + this.registerControllable(p); + } else console.log(`▶ NOT Controllable: ${p.package.name}`); + if (this.isWorker(p)) { console.log(`Starting worker plugin ${p.package.name} v${p.package.version}`); p.start(); - } else { - console.log(`Registering non-worker plugin ${p.package.name} v${p.package.version}`); + } else console.log(`NOT a Worker: ${p.package.name}`); - // todo that will become a switch case + if (this.isNotifier(p)) { + console.log(`Registering notifier plugin ${p.package.name} v${p.package.version}`); this.registerNotifier(p); - } + } else console.log(`NOT a Notifier: ${p.package.name}`); }) .catch(e => console.log(e)); }); diff --git a/packages/polkabot/src/lib/plugin-loader.ts b/packages/polkabot/src/lib/plugin-loader.ts index 2c7575e..8ae37cc 100644 --- a/packages/polkabot/src/lib/plugin-loader.ts +++ b/packages/polkabot/src/lib/plugin-loader.ts @@ -23,8 +23,10 @@ export default class PluginLoader { if (err) console.log("ERR:", err); const myModule = (await import(pluginPath)).default; + // console.log("Module", myModule); let plugin; + // TODO here we should load the ENV/config of a plugin // let test = new myModule(mod, context) const parentClass = Object.getPrototypeOf(myModule).name; diff --git a/packages/polkabot/src/lib/plugin-scanner.ts b/packages/polkabot/src/lib/plugin-scanner.ts index 8a5482f..3c6ccf3 100644 --- a/packages/polkabot/src/lib/plugin-scanner.ts +++ b/packages/polkabot/src/lib/plugin-scanner.ts @@ -43,6 +43,13 @@ export default class PluginScanner { }); } + /** input: polkabot-plugin-foo-bar + * output: FOO_BAR + */ + public static getShortName(name: string) { + return name.replace('polkabot-plugin-', '').replace('-', '_').toUpperCase() + } + public async scan() { return new Promise(resolve => { // console.log('dbg', path.dirname(process.argv0), __filename, __dirname) @@ -70,6 +77,7 @@ export default class PluginScanner { // console.log('Plugin detected:', plugin); const mod: PluginModule = { name: plugin, + shortName: PluginScanner.getShortName(plugin), path: path.join(p, plugin) }; modules.push(mod); diff --git a/yarn.lock b/yarn.lock index 7adf414..d422e8e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4610,7 +4610,7 @@ mocha@^6.1.4: moment@^2.24.0: version "2.24.0" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.24.0.tgz#0d055d53f5052aa653c9f6eb68bb5d12bf5c2b5b" + resolved "https://registry.npmjs.org/moment/-/moment-2.24.0.tgz#0d055d53f5052aa653c9f6eb68bb5d12bf5c2b5b" integrity sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg== ms@2.0.0: -- GitLab From 2c33757e621896d3a646de88a9d3dbfb6ded8700 Mon Sep 17 00:00:00 2001 From: Will Date: Mon, 10 Feb 2020 16:56:56 +0100 Subject: [PATCH 29/86] Implement registration of commands --- .vscode/settings.json | 1 + packages/polkabot-api/src/plugin.interface.ts | 28 +++- .../polkabot-plugin-blocthday/package.json | 2 +- .../polkabot-plugin-blocthday/src/commands.ts | 34 ++-- .../polkabot-plugin-blocthday/src/index.ts | 19 ++- .../polkabot-plugin-operator/src/commands.ts | 18 +++ .../polkabot-plugin-operator/src/index.ts | 5 + packages/polkabot/src/index.ts | 145 +++++++++++------- 8 files changed, 176 insertions(+), 76 deletions(-) create mode 100644 packages/polkabot-plugin-operator/src/commands.ts diff --git a/.vscode/settings.json b/.vscode/settings.json index 2abfeeb..6f5262f 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -8,6 +8,7 @@ "Blocthday", "Chatbot", "Datastore", + "Interop", "POLKABOT", "STALLWATCHER", "bot's", diff --git a/packages/polkabot-api/src/plugin.interface.ts b/packages/polkabot-api/src/plugin.interface.ts index 43908f8..280b218 100644 --- a/packages/polkabot-api/src/plugin.interface.ts +++ b/packages/polkabot-api/src/plugin.interface.ts @@ -50,6 +50,10 @@ export interface IControllable { commands?: PluginCommands; } +export interface IChatBot { + controllables: IControllable[]; +} + export class PolkabotPluginBase { public module: PluginModule; public config: any; // TODO @@ -73,6 +77,12 @@ export class PolkabotPluginBase { assert(this.package, "package not loaded properly"); } + + // toString() { + // const obj = this; + // delete obj.context; + // return JSON.stringify(obj, null, 2); + // } } export abstract class PolkabotWorker extends PolkabotPluginBase { @@ -83,10 +93,24 @@ export abstract class PolkabotWorker extends PolkabotPluginBase { public abstract stop(); } -export abstract class PolkabotChatbot extends PolkabotPluginBase { +export abstract class PolkabotChatbot extends PolkabotPluginBase implements IChatBot { + controllables: IControllable[] = []; + constructor(mod: PluginModule, context: PluginContext, config?) { super(Type.Chatbot, mod, context, config); } + + public registerControllables(controllables: IControllable[]) { + console.log(`Registering controllables: `); + controllables.map((ctrl: PolkabotPluginBase) => { + console.log(` >> ${ctrl.commands.name}`); + const commandObject: PluginCommands = (ctrl as IControllable).commands; + const commands: PluginCommand[] = commandObject.commands; + console.log(commands.map(c => c.name)); + }); + this.controllables = controllables; + } + public abstract start(); // TODO add stop() @@ -112,7 +136,7 @@ export abstract class PolkabotNotifier extends PolkabotPluginBase { } } -export type PolkabotPlugin = PolkabotWorker | PolkabotNotifier; +export type PolkabotPlugin = PolkabotWorker | PolkabotNotifier | PolkabotChatbot; /** * This is the context Polkabot passes to any plugin diff --git a/packages/polkabot-plugin-blocthday/package.json b/packages/polkabot-plugin-blocthday/package.json index 78bdc67..38dd8a3 100644 --- a/packages/polkabot-plugin-blocthday/package.json +++ b/packages/polkabot-plugin-blocthday/package.json @@ -2,7 +2,7 @@ "name": "polkabot-plugin-blocthday", "version": "0.4.4", "description": "", - "main": "dist/polkabot-plugin-blocthday/src/index.js", + "main": "dist/src/index.js", "scripts": { "lint": "standard", "start": "babel-node ./src/index.js", diff --git a/packages/polkabot-plugin-blocthday/src/commands.ts b/packages/polkabot-plugin-blocthday/src/commands.ts index 86d0757..86a5441 100644 --- a/packages/polkabot-plugin-blocthday/src/commands.ts +++ b/packages/polkabot-plugin-blocthday/src/commands.ts @@ -1,19 +1,17 @@ -// import { PluginCommands } from "@polkabot/api/src/plugin.interface"; +import { PluginCommands } from "@polkabot/api/src/plugin.interface"; +import Blocthday from "."; -// TODO: we need to be aware of THIS here. It could be done with a -// getCommands(this) - -// const commands: PluginCommands = { -// name: "Blocthday", -// alias: "bday", -// commands: [ -// { -// name: "status", -// description: "Show status of the plugin", -// argsRegexp: "", -// handler: this.cmdStatus -// } -// ] -// }; - -// export default commands; +export default function getCommands(ref: Blocthday): PluginCommands { + return { + name: "Blocthday", + alias: "bday", + commands: [ + { + name: "status", + description: "Show status of the plugin", + argsRegexp: "", + handler: ref.cmdStatus + } + ] + }; +} diff --git a/packages/polkabot-plugin-blocthday/src/index.ts b/packages/polkabot-plugin-blocthday/src/index.ts index 641440d..d546839 100644 --- a/packages/polkabot-plugin-blocthday/src/index.ts +++ b/packages/polkabot-plugin-blocthday/src/index.ts @@ -6,14 +6,27 @@ import { PluginModule, PluginContext, CommandHandlerOutput, - IControllable + IControllable, + PluginCommands } from "@polkabot/api/src/plugin.interface"; // import commands from "./commands"; export default class Blocthday extends PolkabotWorker implements IControllable { private NB_BLOCKS: number; + public commands: PluginCommands = { + name: "Blocthday", + alias: "bday", + commands: [ + { + name: "status", + description: "Show status of the plugin", + argsRegexp: "", + handler: this.cmdStatus + } + ] + }; - private cmdStatus(...args: any[]): CommandHandlerOutput { + public cmdStatus(...args: any[]): CommandHandlerOutput { console.log("Called cmdStatus with:", args); return { @@ -55,7 +68,7 @@ export default class Blocthday extends PolkabotWorker implements IControllable { async watchChain() { // Reference: https://polkadot.js.org/api/examples/promise/02_listen_to_blocks/ await this.context.polkadot.rpc.chain.subscribeNewHeads(header => { - console.log(`Blocthday - Chain is at block: #${header.number}`); + // console.log(`Blocthday - Chain is at block: #${header.number}`); const bnBlockNumber: BN = header.number.unwrap().toBn(); const bnNumberOfBlocks: BN = new BN(this.NB_BLOCKS); diff --git a/packages/polkabot-plugin-operator/src/commands.ts b/packages/polkabot-plugin-operator/src/commands.ts new file mode 100644 index 0000000..97203e2 --- /dev/null +++ b/packages/polkabot-plugin-operator/src/commands.ts @@ -0,0 +1,18 @@ +import { PluginCommands } from "@polkabot/api/src/plugin.interface"; +import Blocthday from "."; +import Operator from "."; + +export default function getCommands(ref: Operator): PluginCommands { + return { + name: "Operator", + alias: "op", + commands: [ + { + name: "status", + description: "Show status of the plugin", + argsRegexp: "", + handler: ref.cmdStatus + } + ] + }; +} diff --git a/packages/polkabot-plugin-operator/src/index.ts b/packages/polkabot-plugin-operator/src/index.ts index 0aa658f..f14d3ba 100644 --- a/packages/polkabot-plugin-operator/src/index.ts +++ b/packages/polkabot-plugin-operator/src/index.ts @@ -20,6 +20,11 @@ export default class Operator extends PolkabotChatbot { this.watchChat(); } + public status() : void { + console.log('TODO: Operator Status command'); + + } + showInstructions() { // Send message to the room notifying users how to use the bot const notifierMessage: NotifierMessage = { diff --git a/packages/polkabot/src/index.ts b/packages/polkabot/src/index.ts index 500a491..fbfb7ef 100644 --- a/packages/polkabot/src/index.ts +++ b/packages/polkabot/src/index.ts @@ -18,7 +18,11 @@ import { NotifierMessage, NotifierSpecs, PluginModule, - IControllable + IControllable, + PolkabotChatbot, + PolkabotPluginBase, + Type, + IChatBot } from "../../polkabot-api/src/plugin.interface"; //@ts-ignore @@ -40,6 +44,7 @@ export default class Polkabot { private polkadot: any; private notifiersTable: INotifiersTable = {}; private controllablePlugins: IControllable[] = []; + private chatBots: PolkabotChatbot[] = []; public constructor(..._args: any[]) { // this.args = args @@ -55,12 +60,15 @@ export default class Polkabot { } private isControllable(candidate: PolkabotPlugin): boolean { - console.log("Testing for controllable", candidate.package.name, candidate.commands); const res = candidate.commands !== undefined; - assert(candidate.package.name !== "polkabot-plugin-blocthday" || res, "BUG!"); + // assert(candidate.package.name !== "polkabot-plugin-blocthday" || res, "BUG!"); return res; } + private isChatBot(candidate: PolkabotPlugin): candidate is PolkabotChatbot { + return (candidate as PolkabotChatbot).type === Type.Chatbot; + } + /** this method is usually called by the workers who wish to notify something * polkabot itself does nothing about it. it searches in the list of notifiers which one(s) can do the job and * delegate them the task @@ -86,62 +94,89 @@ export default class Polkabot { // console.log("notifierTable", this.notifiersTable); } - /** Rwegister all the IControllable we find. They will be passed to the Operator. */ + /** Register all the IControllable we find. They will be passed to the Operator. */ private registerControllable(controllable: IControllable) { assert(controllable.commands, "No commands defined"); - - console.log("Registering controllable:", controllable); + console.log("Registering controllable:", controllable.commands.name); this.controllablePlugins.push(controllable); - console.log("Controllables", this.controllablePlugins); + // console.log("Controllables", this.controllablePlugins); + } + + private registerChatbot(bot: PolkabotChatbot) { + console.log("Registering Chat bot:", bot.module.name); + this.chatBots.push(bot); } - private async loadPlugins() { - console.log("Polkabot - Loading plugins:"); - const pluginScanner = new PluginScanner(pkg.name + "-plugin"); - let plugins = await pluginScanner.scan(); // TODO: switch back to a const + private async loadPlugins(): Promise { + return new Promise(async (resolve, _reject) => { + console.log("Polkabot - Loading plugins: ------------------------"); + const pluginScanner = new PluginScanner(pkg.name + "-plugin"); + let plugins = await pluginScanner.scan(); // TODO: switch back to a const - console.log("Plugins found:"); - plugins.map(p => { - console.log(`- ${p.name}`); - }); + console.log("Plugins found (incl. disabled ones):"); + plugins.map(p => { + console.log(`- ${p.name}`); + }); + + // Here we check the ENV content to see if plugins should be disabled (= not loaded) + console.log("Filtering out disabled plugins..."); + plugins = plugins.filter((p: PluginModule) => { + const DISABLED_KEY = `POLKABOT_PLUGIN_${p.shortName}_DISABLED`; + const disabled: boolean = (process.env[DISABLED_KEY] || "false") === "true"; + console.log(disabled ? "❌" : "✅", p.shortName); - console.log("Filtering plugins..."); - plugins = plugins.filter((p: PluginModule) => { - const DISABLED_KEY = `POLKABOT_PLUGIN_${p.shortName}_DISABLED`; - const disabled: boolean = (process.env[DISABLED_KEY] || "false") === "true"; - console.log(DISABLED_KEY, "\t", disabled); - return !disabled; + return !disabled; + }); + + console.log(`Found ${plugins.length} plugins`); + + const loads = []; + plugins.map(plugin => { + const context: PluginContext = { + config: this.config, + pkg, + db: this.db, + matrix: this.matrix, + polkadot: this.polkadot, + polkabot: this + }; + + loads.push( + PluginLoader.load(plugin, context).then((p: PolkabotPlugin) => { + if (this.isControllable(p)) { + this.registerControllable(p); + } //else console.log(`▶ NOT Controllable: ${p.package.name}`); + + if (this.isWorker(p)) { + console.log(`Starting worker plugin ${p.package.name} v${p.package.version}`); + p.start(); + } //else console.log(`NOT a Worker: ${p.package.name}`); + + if (this.isNotifier(p)) { + console.log(`Registering notifier plugin ${p.package.name} v${p.package.version}`); + this.registerNotifier(p); + } //else console.log(`NOT a Notifier: ${p.package.name}`); + + if (this.isChatBot(p)) { + console.log(`Registering ChatBot plugin ${p.package.name} v${p.package.version}`); + + this.registerChatbot(p); + } + }) + ); + }); + Promise.all(loads).then(_ => { + console.log("Polkabot - Done loading plugins: ------------------------"); + resolve(); + }); }); - console.log(`Found ${plugins.length} plugins`); - // console.log(`${JSON.stringify(plugins, null, 2)}`); - - plugins.map(plugin => { - const context: PluginContext = { - config: this.config, - pkg, - db: this.db, - matrix: this.matrix, - polkadot: this.polkadot, - polkabot: this - }; - - PluginLoader.load(plugin, context) - .then(p => { - if (this.isControllable(p)) { - this.registerControllable(p); - } else console.log(`▶ NOT Controllable: ${p.package.name}`); - - if (this.isWorker(p)) { - console.log(`Starting worker plugin ${p.package.name} v${p.package.version}`); - p.start(); - } else console.log(`NOT a Worker: ${p.package.name}`); - - if (this.isNotifier(p)) { - console.log(`Registering notifier plugin ${p.package.name} v${p.package.version}`); - this.registerNotifier(p); - } else console.log(`NOT a Notifier: ${p.package.name}`); - }) - .catch(e => console.log(e)); + } + + private attachControllableToBots() { + console.log("Passing controllables to following bots:"); + this.chatBots.map((bot: PolkabotChatbot) => { + console.log(` > ${bot.module.name}`); + bot.registerControllables(this.controllablePlugins); }); } @@ -171,7 +206,13 @@ export default class Polkabot { // } // ) - this.loadPlugins(); + this.loadPlugins() + .then(_ => { + return this.attachControllableToBots(); + }) + .then(_ => { + console.log("Done loading plugins"); + }); } public async run() { -- GitLab From 54bc6bb0e05866bc030dfaae07a68a184a797ff3 Mon Sep 17 00:00:00 2001 From: Will Date: Tue, 11 Feb 2020 00:17:19 +0100 Subject: [PATCH 30/86] Implement mechanics to find controllable that can fullfil a request, find its handler and call it --- packages/polkabot-api/src/plugin.interface.ts | 54 ++- .../src/{commands.ts => commandSet.ts} | 5 +- .../polkabot-plugin-blocthday/src/index.ts | 33 +- .../src/{commands.ts => commandSet.ts} | 5 +- .../polkabot-plugin-operator/src/index.ts | 311 +++++++++++------- packages/polkabot/src/index.ts | 15 +- 6 files changed, 261 insertions(+), 162 deletions(-) rename packages/polkabot-plugin-blocthday/src/{commands.ts => commandSet.ts} (59%) rename packages/polkabot-plugin-operator/src/{commands.ts => commandSet.ts} (62%) diff --git a/packages/polkabot-api/src/plugin.interface.ts b/packages/polkabot-api/src/plugin.interface.ts index 280b218..e3e755b 100644 --- a/packages/polkabot-api/src/plugin.interface.ts +++ b/packages/polkabot-api/src/plugin.interface.ts @@ -2,6 +2,7 @@ import { packageJson } from "package-json"; import * as path from "path"; import { assert } from "./utils"; + /** * A plugin module before the package has been loaded. * Before loading the patch we know only the path and the name @@ -28,10 +29,11 @@ export type PluginCommand = { name: string; // ie: start description: string; // what does this command do argsRegexp: string; // regexp to validate the expected args + adminOnly: boolean; // is the command only for admins ? handler: (...args: any[]) => CommandHandlerOutput; }; -export type PluginCommands = { +export type PluginCommandSet = { name: string; // ie: Identity Registrar alias: string; // ie: reg commands: Array; @@ -47,7 +49,7 @@ export type PluginCommands = { * be called to control the thing. */ export interface IControllable { - commands?: PluginCommands; + commandSet?: PluginCommandSet; } export interface IChatBot { @@ -60,7 +62,7 @@ export class PolkabotPluginBase { public context: any; // TODO public package: packageJson; public type: Type; - public commands?: PluginCommands; + public commandSet?: PluginCommandSet; // public description: string; // some blabla about the plugin, we dont have this field, we use the package.json/description @@ -85,6 +87,13 @@ export class PolkabotPluginBase { // } } +export type BotCommand = { + module: string; // op, id, bday, etc... + command: string; // status, help, etc, ... + args?: string[]; +}; + +// TODO: get this class out! export abstract class PolkabotWorker extends PolkabotPluginBase { constructor(mod: PluginModule, context: PluginContext, config?) { super(Type.Worker, mod, context, config); @@ -102,13 +111,15 @@ export abstract class PolkabotChatbot extends PolkabotPluginBase implements ICha public registerControllables(controllables: IControllable[]) { console.log(`Registering controllables: `); + // console.log(`controllables: ${JSON.stringify(controllables, null, 2)}`); + controllables.map((ctrl: PolkabotPluginBase) => { - console.log(` >> ${ctrl.commands.name}`); - const commandObject: PluginCommands = (ctrl as IControllable).commands; + console.log(` >> ${ctrl.commandSet.name} (!${ctrl.commandSet.alias})`); + const commandObject: PluginCommandSet = (ctrl as IControllable).commandSet; const commands: PluginCommand[] = commandObject.commands; console.log(commands.map(c => c.name)); }); - this.controllables = controllables; + this.controllables = controllables } public abstract start(); @@ -122,6 +133,37 @@ export abstract class PolkabotChatbot extends PolkabotPluginBase implements ICha protected isPrivate(senderRoomId, roomIdWithBot) { return senderRoomId === roomIdWithBot; } + + /** + * Get a string from the chat and extract a BotCommand or none + * See https://regex101.com/r/1EDFsV/1/tests + * TODO: That should be a factory creating an instance of a BotCommand class + * TODO: add unit test for that + */ + public static getBotCommand(str: string): BotCommand | null { + let capture = str.match(/^!(?\w+)(\s+(?\w+))(\s+(?.*))?$/i) || []; + console.log("Operator:getBotCommand() - capture from Bot Master: ", capture); + if (capture.length > 0 && capture.groups.module && capture.groups.command) { + const { module, command, args } = capture.groups; + // const command: string = capture.groups.command; + const argList: string[] = args === undefined ? null : args.split(" ").map(i => i.replace(" ", "")); // TODO a smarter regexp would do that + + // console.log("Operator - module: ", module); + // console.log("Operator - command: ", command); + // console.log("Operator - args: ", args); + + const obj: BotCommand = { + module, + command, + args: argList + }; + console.log("obj", obj); + return obj; + } else { + console.log("FAILED PARSING COMMAND", str); + return null; + } + } } export abstract class PolkabotNotifier extends PolkabotPluginBase { diff --git a/packages/polkabot-plugin-blocthday/src/commands.ts b/packages/polkabot-plugin-blocthday/src/commandSet.ts similarity index 59% rename from packages/polkabot-plugin-blocthday/src/commands.ts rename to packages/polkabot-plugin-blocthday/src/commandSet.ts index 86a5441..32be4a3 100644 --- a/packages/polkabot-plugin-blocthday/src/commands.ts +++ b/packages/polkabot-plugin-blocthday/src/commandSet.ts @@ -1,7 +1,7 @@ -import { PluginCommands } from "@polkabot/api/src/plugin.interface"; +import { PluginCommandSet } from "@polkabot/api/src/plugin.interface"; import Blocthday from "."; -export default function getCommands(ref: Blocthday): PluginCommands { +export default function getCommandSet(ref: Blocthday): PluginCommandSet { return { name: "Blocthday", alias: "bday", @@ -10,6 +10,7 @@ export default function getCommands(ref: Blocthday): PluginCommands { name: "status", description: "Show status of the plugin", argsRegexp: "", + adminOnly: false, handler: ref.cmdStatus } ] diff --git a/packages/polkabot-plugin-blocthday/src/index.ts b/packages/polkabot-plugin-blocthday/src/index.ts index d546839..9295da9 100644 --- a/packages/polkabot-plugin-blocthday/src/index.ts +++ b/packages/polkabot-plugin-blocthday/src/index.ts @@ -7,27 +7,17 @@ import { PluginContext, CommandHandlerOutput, IControllable, - PluginCommands + PluginCommandSet } from "@polkabot/api/src/plugin.interface"; -// import commands from "./commands"; +import getCommandSet from "./commandSet"; export default class Blocthday extends PolkabotWorker implements IControllable { private NB_BLOCKS: number; - public commands: PluginCommands = { - name: "Blocthday", - alias: "bday", - commands: [ - { - name: "status", - description: "Show status of the plugin", - argsRegexp: "", - handler: this.cmdStatus - } - ] - }; + public commandSet: PluginCommandSet; public cmdStatus(...args: any[]): CommandHandlerOutput { - console.log("Called cmdStatus with:", args); + console.log(`Blocthday.cmdStatus()`); + // console.log("Called cmdStatus with:", args); return { code: -1, @@ -38,18 +28,7 @@ export default class Blocthday extends PolkabotWorker implements IControllable { public constructor(mod: PluginModule, context: PluginContext, config?) { super(mod, context, config); this.NB_BLOCKS = parseInt(process.env.POLKABOT_PLUGIN_BLOCTHDAY_NB_BLOCKS) || 1000000; - this.commands = { - name: "Blocthday", - alias: "bday", - commands: [ - { - name: "status", - description: "Show status of the plugin", - argsRegexp: "", - handler: this.cmdStatus - } - ] - }; + this.commandSet = getCommandSet(this); } public start(): void { diff --git a/packages/polkabot-plugin-operator/src/commands.ts b/packages/polkabot-plugin-operator/src/commandSet.ts similarity index 62% rename from packages/polkabot-plugin-operator/src/commands.ts rename to packages/polkabot-plugin-operator/src/commandSet.ts index 97203e2..8078961 100644 --- a/packages/polkabot-plugin-operator/src/commands.ts +++ b/packages/polkabot-plugin-operator/src/commandSet.ts @@ -1,8 +1,8 @@ -import { PluginCommands } from "@polkabot/api/src/plugin.interface"; +import { PluginCommandSet } from "@polkabot/api/src/plugin.interface"; import Blocthday from "."; import Operator from "."; -export default function getCommands(ref: Operator): PluginCommands { +export default function getCommandSet(ref: Operator): PluginCommandSet { return { name: "Operator", alias: "op", @@ -11,6 +11,7 @@ export default function getCommands(ref: Operator): PluginCommands { name: "status", description: "Show status of the plugin", argsRegexp: "", + adminOnly: false, handler: ref.cmdStatus } ] diff --git a/packages/polkabot-plugin-operator/src/index.ts b/packages/polkabot-plugin-operator/src/index.ts index f14d3ba..dd203f8 100644 --- a/packages/polkabot-plugin-operator/src/index.ts +++ b/packages/polkabot-plugin-operator/src/index.ts @@ -4,12 +4,38 @@ import { NotifierMessage, NotifierSpecs, PluginModule, - PluginContext + PluginContext, + CommandHandlerOutput, + BotCommand, + IControllable, + PolkabotPluginBase, + PluginCommandSet, + PolkabotPlugin, + PluginCommand } from "@polkabot/api/src/plugin.interface"; +import moment from "moment"; +import getCommandSet from "./commandSet"; + +type RoomId = string; +type Message = string; +type SenderId = string; + +type Room = { + name: string; + roomId: RoomId; + currentState: { + members: Member[]; + }; +}; + +type Member = any; + +export default class Operator extends PolkabotChatbot implements IControllable { + public commandSet: PluginCommandSet; -export default class Operator extends PolkabotChatbot { public constructor(mod: PluginModule, context: PluginContext, config?) { super(mod, context, config); + this.commandSet = getCommandSet(this); } public start(): void { @@ -20,101 +46,100 @@ export default class Operator extends PolkabotChatbot { this.watchChat(); } - public status() : void { - console.log('TODO: Operator Status command'); + public cmdStatus(event: any, room: Room, ...args: any): CommandHandlerOutput { + const uptime_sec: number = process.uptime(); + const m = moment.duration(uptime_sec, 'seconds'); - } + this.answer( + room.roomId, + `I am still here! I've been running ${capitalize(this.package.name)} v${capitalize(this.package.version + )} for ${m.humanize()}.\nCheck out the project at https://gitlab.com/Polkabot` + ); - showInstructions() { - // Send message to the room notifying users how to use the bot - const notifierMessage: NotifierMessage = { - message: - "Polkabot Operator Plugin public user usage instructions:\n 1) Ask Polkabot Operator to provide node info with command: !status" + return { + code: 0, + msg: null }; + } - const notifierSpecs: NotifierSpecs = { - notifiers: ["matrix", "demo", "all"] - }; + /** This function takes a BotCommand and look for a plugin that can handle it. + * If a plugin is found, its information and handler are returned. + * If not, null is retuned. In that case it means we are not able to fullfill the request. + */ + private matchCommand(cmd: BotCommand): PluginCommand | null { + // first we look if the module is known + const hits = this.controllables.filter((c: PolkabotPluginBase) => c.commandSet.alias === cmd.module); + const controllable = hits.length > 0 ? (hits[0] as PolkabotPlugin) : null; - this.context.polkabot.notify(notifierMessage, notifierSpecs); - } + console.log(`${controllable.module.name} could be able to do the job... checking supported commands`); + const handler: PluginCommand = controllable.commandSet.commands.find(c => c.name === cmd.command); + console.log(`Handler found: ${handler ? handler.name : null}`); - answer(roomId, msg) { - this.context.matrix.sendTextMessage(roomId, msg); + return handler; } - watchChat() { + private watchChat(): void { this.context.matrix.on("Room.timeline", (event, room, _toStartOfTimeline) => { if (event.getType() !== "m.room.message") { return; } // TODO - refactor into a common utility plugin or similar - const directChatRoomMemberIds = Object.keys(room.currentState.members); + // const directChatRoomMemberIds = Object.keys(room.currentState.members); - const expectedDirectMessageRoomMemberIds = [this.context.config.matrix.botMasterId, this.context.config.matrix.botUserId]; + // const expectedDirectMessageRoomMemberIds = [this.context.config.matrix.botMasterId, this.context.config.matrix.botUserId]; - // Has the Bot Master initiated a direct chat with the Bot - const isBotMasterAndBotInRoom = expectedDirectMessageRoomMemberIds.every(val => directChatRoomMemberIds.includes(val)); + // // Has the Bot Master initiated a direct chat with the Bot + // const isBotMasterAndBotInRoom = expectedDirectMessageRoomMemberIds.every(val => directChatRoomMemberIds.includes(val)); // console.log('Operator - isBotMasterAndBotInRoom: ', isBotMasterAndBotInRoom) - // Is the chat room name the same name as the Bot's name - // After string manipulation to get just the username from the Bot's - // user id (i.e. @mybot:matrix.org ---> mybot) - const isBotMessageRecipient = - room.name === - this.context.config.matrix.botUserId - .split(":") - .shift() - .substring(1); - // console.log('Operator - isBotMessageRecipient: ', isBotMessageRecipient) - - - - /** - * Check if the sender id of the user that sent the message - * is the Bot Master's id - */ - const isMaster = senderId => { - const isSenderOperator = senderId === this.context.config.matrix.botMasterId; - // console.log('Operator - isSenderOperator: ', isSenderOperator) - return isSenderOperator; - }; - // In general we don´t want the bot to react to its own messages! - const isSelf = senderId => { - return senderId === this.context.config.matrix.botUserId; - }; + // const isSelf = senderId => { + // return senderId === this.context.config.matrix.botUserId; + // }; // console.log('Operator - event.getContent()', event.getContent()) const msg = event.getContent().body; + const senderId = event.getSender(); - console.log("msg", msg); + // If we see our own message, we skip + if (this.isSelf(senderId)) return; - // FIXME - this still triggers an error in the logs when the Bot Master - // sends a message without an argument in the public room (i.e. `!say`) - if (!msg) { - return; + const botCommand: BotCommand = PolkabotChatbot.getBotCommand(msg); + // console.log(" *** bot command:", JSON.stringify(botCommand, null, 2)); + const cmdHandler = this.matchCommand(botCommand); + + // console.log(" *** bot command handler:", JSON.stringify(cmdHandler, null, 2)); + + if (cmdHandler) { + console.log(`handler found, running ${cmdHandler.name}`); + const output = cmdHandler.handler.bind(this)(event, room, botCommand.args); + console.log(`RET: ${output.code} : ${output.msg}`); + } else { + console.log(`No handler found`); } + // console.log("msg", msg); + + // TODO FIXME - this still triggers an error in the logs when the Bot Master + // sends a message without an argument in the public room (i.e. `!say`) + // if (!msg) { + // return; + // } - const senderId = event.getSender(); const senderRoomId = event.sender.roomId; const roomIdWithBot = room.roomId; console.log(senderId, senderRoomId, roomIdWithBot); - // If we see our own message, we skip - if (isSelf(senderId)) return; - // console.log('Operator - msg: ', msg) // console.log('Operator - senderId: ', senderId) // console.log('Operator - senderRoomId', senderRoomId) // console.log('Operator - roomIdWithBot', roomIdWithBot) - console.log("isPrivate", this.isPrivate(senderRoomId, roomIdWithBot)); - console.log("isMaster", isMaster(senderId)); - console.log("isBotMasterAndBotInRoom", isBotMasterAndBotInRoom); - console.log("isBotMessageRecipient", isBotMessageRecipient); + // console.log("isPrivate", this.isPrivate(senderRoomId, roomIdWithBot)); + // console.log("isMaster", this.isMaster(senderId)); + // console.log("isBotMasterAndBotInRoom", this.isBotMasterAndBotInRoom(room)); + // console.log("isBotMessageRecipient", this.isBotMessageRecipient(room)); if (this.isPrivate(senderRoomId, roomIdWithBot)) { /** @@ -128,8 +153,8 @@ export default class Operator extends PolkabotChatbot { * commands, we only want them to appears in the direct message. **/ if ( - isMaster(senderId) && - isBotMasterAndBotInRoom + this.isMaster(senderId) && + this.isBotMasterAndBotInRoom(room) // && isBotMessageRecipient ) { console.log("Operator - Bot received message from Bot Master in direct message"); @@ -138,73 +163,125 @@ export default class Operator extends PolkabotChatbot { * the following form: `!say ` or `!status` */ let capture = msg.match(/^!(?\w+)(\s+(?.*?))??$/i) || []; - console.log("Operator - captured from Bot Master: ", capture); + // console.log("Operator - captured from Bot Master: ", capture); if (capture.length > 0 && capture.groups.cmd) { const cmd: string = capture.groups.cmd; const args = capture.groups.args; - console.log("Operator - cmd: ", cmd); - console.log("Operator - args: ", args); - switch (cmd) { - case "status": - const uptime = (process.uptime() / 60 / 60).toFixed(2); - this.answer( - room.roomId, - `Hey ${ - this.context.config.matrix.botMasterId - }, I am still here, running for ${uptime} hours. Check out the project at https://gitlab.com/Polkabot` - ); - break; - case "say": - console.log("Operator - Received command !say:", cmd, args); - const notifierMessage: NotifierMessage = { - message: args - }; - - const notifierSpecs: NotifierSpecs = { - notifiers: ["matrix", "demo", "all"] - }; - - this.context.polkabot.notify(notifierMessage, notifierSpecs); - break; - default: - this.answer( - room.roomId, - `Operator - Command **!${cmd}** is not supported. You can use commands: - !status OR !say ` - ); - } - } - } else { - console.log(`Operator - Bot received message from non-Bot Master (sender: ${senderId}) in direct message`); - // const re = new RegExp('') + // console.log("Operator - cmd: ", cmd); + // console.log("Operator - args: ", args); + // switch (cmd) { + // case "status": + // const uptime = (process.uptime() / 60 / 60).toFixed(2); + // this.answer( + // room.roomId, + // `Hey ${ + // this.context.config.matrix.botMasterId + // }, I am still here, running for ${uptime} hours. Check out the project at https://gitlab.com/Polkabot` + // ); + // break; + // case "say": + // console.log("Operator - Received command !say:", cmd, args); + // const notifierMessage: NotifierMessage = { + // message: args + // }; - let capture = msg.match(/^!(?\w+)(\s+(?.*?))??$/i) || []; - console.log("Operator - captured from non-Bot Master: ", capture); - if (capture.length > 0 && capture.groups.cmd) { - const cmd: string = capture.groups.cmd; + // const notifierSpecs: NotifierSpecs = { + // notifiers: ["matrix", "demo", "all"] + // }; + + // this.context.polkabot.notify(notifierMessage, notifierSpecs); + // break; + // default: + // this.answer( + // room.roomId, + // `Operator - Command **!${cmd}** is not supported. You can use commands: + // !status OR !say ` + // ); + // } + // } + } else { + console.log(`Operator - Bot received message from non-Bot Master (sender: ${senderId}) in direct message`); + // const re = new RegExp('') - switch (cmd) { - case "status": - const uptime = (process.uptime() / 60 / 60).toFixed(2); - this.answer( - room.roomId, - `I am still here! I've been running ${capitalize(this.context.pkg.name)} v${ - this.context.pkg.version - } for ${uptime} hours. -Check out the project at https://gitlab.com/Polkabot` - ); - break; - default: - this.answer(room.roomId, `Operator - Command **!${cmd}** is not supported. You can use command: !status`); - } + // let capture = msg.match(/^!(?\w+)(\s+(?.*?))??$/i) || []; + // console.log("Operator - captured from non-Bot Master: ", capture); + // if (capture.length > 0 && capture.groups.cmd) { + // const cmd: string = capture.groups.cmd; + + // switch (cmd) { + // case "status": + // const uptime = (process.uptime() / 60 / 60).toFixed(2); + // this.answer( + // room.roomId, + // `I am still here! I've been running ${capitalize(this.context.pkg.name)} v${ + // this.context.pkg.version + // } for ${uptime} hours. + // Check out the project at https://gitlab.com/Polkabot` + // ); + // break; + // default: + // this.answer(room.roomId, `Operator - Command **!${cmd}** is not supported. You can use command: !status`); + // } + // } } } } }); } + + private isSelf(senderId) { + return senderId === this.context.config.matrix.botUserId; + } + + // private showInstructions() { + // // Send message to the room notifying users how to use the bot + // const notifierMessage: NotifierMessage = { + // message: + // "Polkabot Operator Plugin public user usage instructions:\n 1) Ask Polkabot Operator to provide node info with command: !status" + // }; + + // const notifierSpecs: NotifierSpecs = { + // notifiers: ["matrix", "demo", "all"] + // }; + + // this.context.polkabot.notify(notifierMessage, notifierSpecs); + // } + + private answer(roomId: RoomId, msg: Message) { + this.context.matrix.sendTextMessage(roomId, msg); + } + + /** + * Check if the sender id of the user that sent the message + * is the Bot Master's id + */ + private isMaster(senderId: SenderId) { + return senderId === this.context.config.matrix.botMasterId; + } + + // Is the chat room name the same name as the Bot's name + // After string manipulation to get just the username from the Bot's + // user id (i.e. @mybot:matrix.org ---> mybot) + public isBotMessageRecipient(room: Room) { + return ( + room.name === + this.context.config.matrix.botUserId + .split(":") + .shift() + .substring(1) + ); + } + + // Has the Bot Master initiated a direct chat with the Bot + private isBotMasterAndBotInRoom(room: Room) { + const expectedDirectMessageRoomMemberIds = [this.context.config.matrix.botMasterId, this.context.config.matrix.botUserId]; + const directChatRoomMemberIds = Object.keys(room.currentState.members); + return expectedDirectMessageRoomMemberIds.every(val => directChatRoomMemberIds.includes(val)); + } } +// TODO: move that away const capitalize = s => { if (typeof s !== "string") return ""; return s.charAt(0).toUpperCase() + s.slice(1); diff --git a/packages/polkabot/src/index.ts b/packages/polkabot/src/index.ts index fbfb7ef..d7f2f62 100644 --- a/packages/polkabot/src/index.ts +++ b/packages/polkabot/src/index.ts @@ -60,7 +60,7 @@ export default class Polkabot { } private isControllable(candidate: PolkabotPlugin): boolean { - const res = candidate.commands !== undefined; + const res = candidate.commandSet !== undefined; // assert(candidate.package.name !== "polkabot-plugin-blocthday" || res, "BUG!"); return res; } @@ -96,8 +96,8 @@ export default class Polkabot { /** Register all the IControllable we find. They will be passed to the Operator. */ private registerControllable(controllable: IControllable) { - assert(controllable.commands, "No commands defined"); - console.log("Registering controllable:", controllable.commands.name); + assert(controllable.commandSet, "No commands defined"); + console.log("Registering controllable:", controllable.commandSet.name); this.controllablePlugins.push(controllable); // console.log("Controllables", this.controllablePlugins); } @@ -145,23 +145,22 @@ export default class Polkabot { PluginLoader.load(plugin, context).then((p: PolkabotPlugin) => { if (this.isControllable(p)) { this.registerControllable(p); - } //else console.log(`▶ NOT Controllable: ${p.package.name}`); + } else console.log(`▶ NOT Controllable: ${p.package.name}`); if (this.isWorker(p)) { console.log(`Starting worker plugin ${p.package.name} v${p.package.version}`); p.start(); - } //else console.log(`NOT a Worker: ${p.package.name}`); + } //else console.log(`▶ NOT a Worker: ${p.package.name}`); if (this.isNotifier(p)) { console.log(`Registering notifier plugin ${p.package.name} v${p.package.version}`); this.registerNotifier(p); - } //else console.log(`NOT a Notifier: ${p.package.name}`); + } //else console.log(`▶ NOT a Notifier: ${p.package.name}`); if (this.isChatBot(p)) { console.log(`Registering ChatBot plugin ${p.package.name} v${p.package.version}`); - this.registerChatbot(p); - } + } // else console.log(`▶ NOT a ChatBot: ${p.package.name}`); }) ); }); -- GitLab From 14a34cc3a48751a758ac8868671db91d3b4f73fa Mon Sep 17 00:00:00 2001 From: Will Date: Tue, 11 Feb 2020 17:13:26 +0100 Subject: [PATCH 31/86] Refactoring and fix of the cases when bot commands are not macthed --- packages/polkabot-api/src/PolkabotChatbot.ts | 67 ++ packages/polkabot-api/src/PolkabotNotifier.ts | 11 + packages/polkabot-api/src/PolkabotWorker.ts | 9 + packages/polkabot-api/src/plugin.interface.ts | 110 +--- .../polkabot-plugin-blocthday/src/index.ts | 13 +- .../src/index.ts | 2 +- .../src/index.ts | 2 +- .../polkabot-plugin-operator/package.json | 18 +- .../src/commandSet.ts | 8 +- .../polkabot-plugin-operator/src/index.ts | 355 ++++++----- packages/polkabot/src/index.ts | 8 +- packages/polkabot/src/lib/plugin-loader.ts | 6 +- yarn.lock | 599 +++++++++++++++++- 13 files changed, 952 insertions(+), 256 deletions(-) create mode 100644 packages/polkabot-api/src/PolkabotChatbot.ts create mode 100644 packages/polkabot-api/src/PolkabotNotifier.ts create mode 100644 packages/polkabot-api/src/PolkabotWorker.ts diff --git a/packages/polkabot-api/src/PolkabotChatbot.ts b/packages/polkabot-api/src/PolkabotChatbot.ts new file mode 100644 index 0000000..94a62fe --- /dev/null +++ b/packages/polkabot-api/src/PolkabotChatbot.ts @@ -0,0 +1,67 @@ +import { PolkabotPluginBase, IChatBot, IControllable, PluginModule, PluginContext, Type, PluginCommandSet, PluginCommand, RoomAnswer, BotCommand } from "./plugin.interface"; + +export abstract class PolkabotChatbot extends PolkabotPluginBase implements IChatBot { + controllables: IControllable[] = []; + constructor(mod: PluginModule, context: PluginContext, config?) { + super(Type.Chatbot, mod, context, config); + } + public registerControllables(controllables: IControllable[]) { + console.log(`Registering controllables: `); + // console.log(`controllables: ${JSON.stringify(controllables, null, 2)}`); + controllables.map((ctrl: PolkabotPluginBase) => { + console.log(` >> ${ctrl.commandSet.name} (!${ctrl.commandSet.alias})`); + const commandObject: PluginCommandSet = (ctrl as IControllable).commandSet; + const commands: PluginCommand[] = commandObject.commands; + console.log(commands.map(c => c.name)); + }); + this.controllables = controllables; + } + public abstract start(); + // TODO add stop() + /** + * Check that the room id where the sender of the message + * sent the message from is the same as the room id where + * that the bot is in. + */ + protected isPrivate(senderRoomId, roomIdWithBot) { + return senderRoomId === roomIdWithBot; + } + // public answer(roomId: RoomId, msg: Message) { + public answer(data: RoomAnswer) { + // console.log("RoomAnswer", data); + const html = data.html || true; + console.log(`Sending HTML: ${html ? "TRUE" : "FALSE"}`); + if (!html) { + // Pure text + this.context.matrix.sendTextMessage(data.room.roomId, data.message); + } + else { + // Html + this.context.matrix.sendHtmlMessage(data.room.roomId, data.message, data.message); // TODO: here we cheat sending HTML 2x times... we should have a text version + } + } + /** + * Get a string from the chat and extract a BotCommand or none + * See https://regex101.com/r/1EDFsV/1/tests + * TODO: That should be a factory creating an instance of a BotCommand class + * TODO: add unit test for that + */ + public static getBotCommand(str: string): BotCommand | null { + let capture = str.match(/^!(?\w+)(\s+(?\w+))(\s+(?.*))?$/i) || []; + if (capture.length > 0 && capture.groups.module && capture.groups.command) { + const { module, command, args } = capture.groups; + const argList: string[] = args === undefined ? null : args.split(" ").map(i => i.replace(" ", "")); // TODO a smarter regexp would do that + const obj: BotCommand = { + module, + command, + args: argList + }; + console.log("obj", obj); + return obj; + } + else { + console.log("FAILED PARSING COMMAND", str); + return null; + } + } +} diff --git a/packages/polkabot-api/src/PolkabotNotifier.ts b/packages/polkabot-api/src/PolkabotNotifier.ts new file mode 100644 index 0000000..66a864a --- /dev/null +++ b/packages/polkabot-api/src/PolkabotNotifier.ts @@ -0,0 +1,11 @@ +import { PolkabotPluginBase, PluginModule, PluginContext, Type, NotifierMessage, NotifierSpecs } from "./plugin.interface"; + +export abstract class PolkabotNotifier extends PolkabotPluginBase { + public abstract channel: string; // 'twitter', 'matrix', 'email', .... + constructor(mod: PluginModule, context: PluginContext, config?) { + super(Type.Notifier, mod, context, config); + } + public notify(message: NotifierMessage, specs: NotifierSpecs): void { + // console.log("Notifier - notify()", message, specs); + } +} diff --git a/packages/polkabot-api/src/PolkabotWorker.ts b/packages/polkabot-api/src/PolkabotWorker.ts new file mode 100644 index 0000000..b082029 --- /dev/null +++ b/packages/polkabot-api/src/PolkabotWorker.ts @@ -0,0 +1,9 @@ +import { PolkabotPluginBase, PluginModule, PluginContext, Type } from "./plugin.interface"; + +export abstract class PolkabotWorker extends PolkabotPluginBase { + constructor(mod: PluginModule, context: PluginContext, config?) { + super(Type.Worker, mod, context, config); + } + public abstract start(); + public abstract stop(); +} diff --git a/packages/polkabot-api/src/plugin.interface.ts b/packages/polkabot-api/src/plugin.interface.ts index e3e755b..bf3f91b 100644 --- a/packages/polkabot-api/src/plugin.interface.ts +++ b/packages/polkabot-api/src/plugin.interface.ts @@ -1,7 +1,9 @@ import { packageJson } from "package-json"; import * as path from "path"; import { assert } from "./utils"; - +import { PolkabotWorker } from "./PolkabotWorker"; +import { PolkabotChatbot } from "./PolkabotChatbot"; +import { PolkabotNotifier } from "./PolkabotNotifier"; /** * A plugin module before the package has been loaded. @@ -20,11 +22,32 @@ export enum Type { Chatbot } +export type RoomAnswer = { + room: Room; + message: string; + html?: boolean; // If we don't pass HTML it is assumed that it is +}; + export type CommandHandlerOutput = { code: number; msg: string; + answers?: RoomAnswer[]; +}; + +export type RoomId = string; +export type Message = string; +export type SenderId = string; + +export type Room = { + name: string; + roomId: RoomId; + currentState: { + members: Member[]; + }; }; +export type Member = any; + export type PluginCommand = { name: string; // ie: start description: string; // what does this command do @@ -93,91 +116,6 @@ export type BotCommand = { args?: string[]; }; -// TODO: get this class out! -export abstract class PolkabotWorker extends PolkabotPluginBase { - constructor(mod: PluginModule, context: PluginContext, config?) { - super(Type.Worker, mod, context, config); - } - public abstract start(); - public abstract stop(); -} - -export abstract class PolkabotChatbot extends PolkabotPluginBase implements IChatBot { - controllables: IControllable[] = []; - - constructor(mod: PluginModule, context: PluginContext, config?) { - super(Type.Chatbot, mod, context, config); - } - - public registerControllables(controllables: IControllable[]) { - console.log(`Registering controllables: `); - // console.log(`controllables: ${JSON.stringify(controllables, null, 2)}`); - - controllables.map((ctrl: PolkabotPluginBase) => { - console.log(` >> ${ctrl.commandSet.name} (!${ctrl.commandSet.alias})`); - const commandObject: PluginCommandSet = (ctrl as IControllable).commandSet; - const commands: PluginCommand[] = commandObject.commands; - console.log(commands.map(c => c.name)); - }); - this.controllables = controllables - } - - public abstract start(); - // TODO add stop() - - /** - * Check that the room id where the sender of the message - * sent the message from is the same as the room id where - * that the bot is in. - */ - protected isPrivate(senderRoomId, roomIdWithBot) { - return senderRoomId === roomIdWithBot; - } - - /** - * Get a string from the chat and extract a BotCommand or none - * See https://regex101.com/r/1EDFsV/1/tests - * TODO: That should be a factory creating an instance of a BotCommand class - * TODO: add unit test for that - */ - public static getBotCommand(str: string): BotCommand | null { - let capture = str.match(/^!(?\w+)(\s+(?\w+))(\s+(?.*))?$/i) || []; - console.log("Operator:getBotCommand() - capture from Bot Master: ", capture); - if (capture.length > 0 && capture.groups.module && capture.groups.command) { - const { module, command, args } = capture.groups; - // const command: string = capture.groups.command; - const argList: string[] = args === undefined ? null : args.split(" ").map(i => i.replace(" ", "")); // TODO a smarter regexp would do that - - // console.log("Operator - module: ", module); - // console.log("Operator - command: ", command); - // console.log("Operator - args: ", args); - - const obj: BotCommand = { - module, - command, - args: argList - }; - console.log("obj", obj); - return obj; - } else { - console.log("FAILED PARSING COMMAND", str); - return null; - } - } -} - -export abstract class PolkabotNotifier extends PolkabotPluginBase { - public abstract channel: string; // 'twitter', 'matrix', 'email', .... - - constructor(mod: PluginModule, context: PluginContext, config?) { - super(Type.Notifier, mod, context, config); - } - - public notify(message: NotifierMessage, specs: NotifierSpecs): void { - // console.log("Notifier - notify()", message, specs); - } -} - export type PolkabotPlugin = PolkabotWorker | PolkabotNotifier | PolkabotChatbot; /** diff --git a/packages/polkabot-plugin-blocthday/src/index.ts b/packages/polkabot-plugin-blocthday/src/index.ts index 9295da9..4b67a04 100644 --- a/packages/polkabot-plugin-blocthday/src/index.ts +++ b/packages/polkabot-plugin-blocthday/src/index.ts @@ -7,7 +7,8 @@ import { PluginContext, CommandHandlerOutput, IControllable, - PluginCommandSet + PluginCommandSet, + Room } from "@polkabot/api/src/plugin.interface"; import getCommandSet from "./commandSet"; @@ -15,13 +16,17 @@ export default class Blocthday extends PolkabotWorker implements IControllable { private NB_BLOCKS: number; public commandSet: PluginCommandSet; - public cmdStatus(...args: any[]): CommandHandlerOutput { + public cmdStatus(event, room:Room): CommandHandlerOutput { console.log(`Blocthday.cmdStatus()`); // console.log("Called cmdStatus with:", args); - + return { code: -1, - msg: "Implement me first!" + msg: "Implement me first!", + answers: [{ + room, + message: 'Oups! I am not implmented yet 🥴' + }] }; } diff --git a/packages/polkabot-plugin-notifier-matrix/src/index.ts b/packages/polkabot-plugin-notifier-matrix/src/index.ts index 0a361d5..198d5db 100644 --- a/packages/polkabot-plugin-notifier-matrix/src/index.ts +++ b/packages/polkabot-plugin-notifier-matrix/src/index.ts @@ -1,10 +1,10 @@ import { - PolkabotNotifier, NotifierMessage, NotifierSpecs, PluginModule, PluginContext } from "../../polkabot-api/src/plugin.interface"; +import { PolkabotNotifier } from "../../polkabot-api/src/PolkabotNotifier"; // TODO: we want that to extends PolkabotPlugin export default class MatrixNotifier extends PolkabotNotifier { diff --git a/packages/polkabot-plugin-notifier-twitter/src/index.ts b/packages/polkabot-plugin-notifier-twitter/src/index.ts index 1635c9a..69e75bb 100644 --- a/packages/polkabot-plugin-notifier-twitter/src/index.ts +++ b/packages/polkabot-plugin-notifier-twitter/src/index.ts @@ -1,10 +1,10 @@ import { - PolkabotNotifier, NotifierMessage, NotifierSpecs, PluginModule, PluginContext } from "../../polkabot-api/src/plugin.interface"; +import { PolkabotNotifier } from "../../polkabot-api/src/PolkabotNotifier"; // TODO: we want that to extends PolkabotPlugin export default class TwitterNotifier extends PolkabotNotifier { diff --git a/packages/polkabot-plugin-operator/package.json b/packages/polkabot-plugin-operator/package.json index e224e9d..f07f697 100644 --- a/packages/polkabot-plugin-operator/package.json +++ b/packages/polkabot-plugin-operator/package.json @@ -1,7 +1,7 @@ { "name": "polkabot-plugin-operator", "version": "0.5.0", - "description": "The operator plugin is targeted mainly to the Bot Maxter and allows performing monitoring and maintenance tasks.", + "description": "The operator plugin is targeted mainly to the Bot Master and allows performing monitoring and maintenance tasks.", "main": "dist/src/index.js", "scripts": { "build": "tsc --build tsconfig.json", @@ -10,19 +10,27 @@ "build:watch": "tsc --build tsconfig.json -w", "prepublishOnly": "npm run build", "postinstall": "npm run build", - "clean": "rm -rf dist node_mdules" + "clean": "rm -rf dist node_modules", + "test": "mocha -r ts-node/register tests/**/*.test.ts", + "coverage": "nyc -r lcov -e .ts -x \"*.test.ts\" npm run test" }, "author": "Chevdor ", "license": "ISC", "devDependencies": { - "typescript": "^3.5.3", + "@types/chai": "^4.1.7", + "@types/mocha": "^5.2.7", "babel-cli": "^6.26.0", "babel-core": "^6.26.3", "babel-eslint": "10.0.2", "babel-polyfill": "^6.26.0", "babel-preset-env": "^1.7.0", "babel-register": "^6.26.0", - "standard": "14.0.0" + "chai": "^4.2.0", + "mocha": "^6.1.4", + "nyc": "^15.0.0", + "standard": "14.0.0", + "ts-node": "^8.3.0", + "typescript": "^3.5.3" }, "repository": { "type": "git", @@ -38,7 +46,7 @@ ] }, "engines": { - "node": ">=10.13.0", + "node": ">=10.13.0", "yarn": "^1.10.1" } } diff --git a/packages/polkabot-plugin-operator/src/commandSet.ts b/packages/polkabot-plugin-operator/src/commandSet.ts index 8078961..bf6e685 100644 --- a/packages/polkabot-plugin-operator/src/commandSet.ts +++ b/packages/polkabot-plugin-operator/src/commandSet.ts @@ -1,5 +1,4 @@ import { PluginCommandSet } from "@polkabot/api/src/plugin.interface"; -import Blocthday from "."; import Operator from "."; export default function getCommandSet(ref: Operator): PluginCommandSet { @@ -13,6 +12,13 @@ export default function getCommandSet(ref: Operator): PluginCommandSet { argsRegexp: "", adminOnly: false, handler: ref.cmdStatus + }, + { + name: "help", + description: "Show some help", + argsRegexp: "", + adminOnly: false, + handler: ref.cmdHelp } ] }; diff --git a/packages/polkabot-plugin-operator/src/index.ts b/packages/polkabot-plugin-operator/src/index.ts index dd203f8..40546d1 100644 --- a/packages/polkabot-plugin-operator/src/index.ts +++ b/packages/polkabot-plugin-operator/src/index.ts @@ -1,6 +1,5 @@ #!/usr/bin/env node import { - PolkabotChatbot, NotifierMessage, NotifierSpecs, PluginModule, @@ -11,27 +10,19 @@ import { PolkabotPluginBase, PluginCommandSet, PolkabotPlugin, - PluginCommand + PluginCommand, + Room, + SenderId, } from "@polkabot/api/src/plugin.interface"; import moment from "moment"; import getCommandSet from "./commandSet"; - -type RoomId = string; -type Message = string; -type SenderId = string; - -type Room = { - name: string; - roomId: RoomId; - currentState: { - members: Member[]; - }; -}; - -type Member = any; +import { PolkabotChatbot } from "@polkabot/api/src/PolkabotChatbot"; export default class Operator extends PolkabotChatbot implements IControllable { public commandSet: PluginCommandSet; + package: any; + controllables: any; + context: any; public constructor(mod: PluginModule, context: PluginContext, config?) { super(mod, context, config); @@ -46,19 +37,59 @@ export default class Operator extends PolkabotChatbot implements IControllable { this.watchChat(); } + // TODO: move all handlers to a separate file public cmdStatus(event: any, room: Room, ...args: any): CommandHandlerOutput { const uptime_sec: number = process.uptime(); - const m = moment.duration(uptime_sec, 'seconds'); - - this.answer( - room.roomId, - `I am still here! I've been running ${capitalize(this.package.name)} v${capitalize(this.package.version - )} for ${m.humanize()}.\nCheck out the project at https://gitlab.com/Polkabot` - ); + const m = moment.duration(uptime_sec, "seconds"); + + // this.answer(room.roomId); + + return { + code: 0, + msg: null, + answers: [ + { + room, + message: `I am still here! I've been running ${capitalize(this.package.name)} v${capitalize( + this.package.version + )} for ${m.humanize()}.\nCheck out the project at https://gitlab.com/Polkabot` + } + ] + }; + } + public cmdHelp(event: any, room: Room): CommandHandlerOutput { + // TODO: later we could parse the msg below for keywords and try to make good guesses to focus the help a bit better + // const msg: string = event.getContent().body; + // fetch all the controllable, show their commands and deescriptions. + let message = `Here is also a list of all the loaded modules and their commands:
    `; + this.controllables.map((controllable: IControllable) => { + message += `
  • ${controllable.commandSet.name}:
    • `; + controllable.commandSet.commands.map((command: PluginCommand) => { + message += `
    • !${controllable.commandSet.alias} ${command.name}: ${command.description} !${ + command.adminOnly ? " (Master only)" : "" + }
    • `; + }); + message += "
    "; + }); + message += "
"; + // this.answer( { + // room, + // message + // }); return { code: 0, - msg: null + msg: null, + answers: [ + { + room, + message: `Hi there, I am happy you got in touch, let me see if I can help.
First of all, you probably should checkout the documentation at https://gitlab.com/Polkabot` + }, + { + room, + message + } + ] }; } @@ -71,6 +102,8 @@ export default class Operator extends PolkabotChatbot implements IControllable { const hits = this.controllables.filter((c: PolkabotPluginBase) => c.commandSet.alias === cmd.module); const controllable = hits.length > 0 ? (hits[0] as PolkabotPlugin) : null; + if (!controllable) return null + console.log(`${controllable.module.name} could be able to do the job... checking supported commands`); const handler: PluginCommand = controllable.commandSet.commands.find(c => c.name === cmd.command); console.log(`Handler found: ${handler ? handler.name : null}`); @@ -99,136 +132,174 @@ export default class Operator extends PolkabotChatbot implements IControllable { // }; // console.log('Operator - event.getContent()', event.getContent()) - const msg = event.getContent().body; + const msg: string = event.getContent().body; const senderId = event.getSender(); // If we see our own message, we skip if (this.isSelf(senderId)) return; - const botCommand: BotCommand = PolkabotChatbot.getBotCommand(msg); + // If there is no ! and the string contains help, we try to help + if (msg.indexOf("!") < 0 && msg.toLowerCase().indexOf("help") > 0) { + console.log("Mentioning help in natural language"); + const output = this.cmdHelp(event, room); + if (output.answers) { + // this.answer(output.answers[0]) + output.answers.map(a => { + this.answer(a); + }); + } + return; + } + + const botCommand: BotCommand | null = PolkabotChatbot.getBotCommand(msg); // console.log(" *** bot command:", JSON.stringify(botCommand, null, 2)); - const cmdHandler = this.matchCommand(botCommand); + if (!botCommand) { + console.log(`No bot command found in: >${msg}<`); + this.answer({ + room, + message: "I was tought to smile when I don't get it. 😁" + }); + } else { + const cmdHandler = this.matchCommand(botCommand); + + // console.log(" *** bot command handler:", JSON.stringify(cmdHandler, null, 2)); + + if (cmdHandler) { + console.log(`handler found, running ${cmdHandler.name}`); + const output: CommandHandlerOutput = cmdHandler.handler.bind(this)(event, room, botCommand.args); + console.log(`RET: ${output.code} : ${output.msg}`); + if (output.answers) { + // this.answer(output.answers[0]) + output.answers.map(a => { + this.answer(a); + }); + } + } else { + console.log(`No handler found`); + this.answer({ + room, + message: "Hmmm no one told me about that command. 😁" + }); + return; + } + // console.log("msg", msg); - // console.log(" *** bot command handler:", JSON.stringify(cmdHandler, null, 2)); + // TODO FIXME - this still triggers an error in the logs when the Bot Master + // sends a message without an argument in the public room (i.e. `!say`) + // if (!msg) { + // return; + // } - if (cmdHandler) { - console.log(`handler found, running ${cmdHandler.name}`); - const output = cmdHandler.handler.bind(this)(event, room, botCommand.args); - console.log(`RET: ${output.code} : ${output.msg}`); - } else { - console.log(`No handler found`); - } - // console.log("msg", msg); - - // TODO FIXME - this still triggers an error in the logs when the Bot Master - // sends a message without an argument in the public room (i.e. `!say`) - // if (!msg) { - // return; - // } - - const senderRoomId = event.sender.roomId; - const roomIdWithBot = room.roomId; - - console.log(senderId, senderRoomId, roomIdWithBot); - - // console.log('Operator - msg: ', msg) - // console.log('Operator - senderId: ', senderId) - // console.log('Operator - senderRoomId', senderRoomId) - // console.log('Operator - roomIdWithBot', roomIdWithBot) - - // console.log("isPrivate", this.isPrivate(senderRoomId, roomIdWithBot)); - // console.log("isMaster", this.isMaster(senderId)); - // console.log("isBotMasterAndBotInRoom", this.isBotMasterAndBotInRoom(room)); - // console.log("isBotMessageRecipient", this.isBotMessageRecipient(room)); - - if (this.isPrivate(senderRoomId, roomIdWithBot)) { - /** - * Check that the senderId is the Bot Master with isOperator - * Also check that the message is from a direct message between - * the Bot Master and the Bot by checking that isBotMasterAndBotInRoom - * and isBotMessageRecipient are both true since if the user - * is the Bot Master they can ask the Bot to do more actions than - * public users, and we do not want to show error messages - * from the Bot Master in the public room due to entry of invalid - * commands, we only want them to appears in the direct message. - **/ - if ( - this.isMaster(senderId) && - this.isBotMasterAndBotInRoom(room) - // && isBotMessageRecipient - ) { - console.log("Operator - Bot received message from Bot Master in direct message"); + const senderRoomId = event.sender.roomId; + const roomIdWithBot = room.roomId; + + console.log(senderId, senderRoomId, roomIdWithBot); + + // console.log('Operator - msg: ', msg) + // console.log('Operator - senderId: ', senderId) + // console.log('Operator - senderRoomId', senderRoomId) + // console.log('Operator - roomIdWithBot', roomIdWithBot) + + // console.log("isPrivate", this.isPrivate(senderRoomId, roomIdWithBot)); + // console.log("isMaster", this.isMaster(senderId)); + // console.log("isBotMasterAndBotInRoom", this.isBotMasterAndBotInRoom(room)); + // console.log("isBotMessageRecipient", this.isBotMessageRecipient(room)); + + if (this.isPrivate(senderRoomId, roomIdWithBot)) { /** - * Detect if the command received from the Bot Master is in - * the following form: `!say ` or `!status` - */ - let capture = msg.match(/^!(?\w+)(\s+(?.*?))??$/i) || []; - // console.log("Operator - captured from Bot Master: ", capture); - if (capture.length > 0 && capture.groups.cmd) { - const cmd: string = capture.groups.cmd; - const args = capture.groups.args; - - // console.log("Operator - cmd: ", cmd); - // console.log("Operator - args: ", args); - // switch (cmd) { - // case "status": - // const uptime = (process.uptime() / 60 / 60).toFixed(2); - // this.answer( - // room.roomId, - // `Hey ${ - // this.context.config.matrix.botMasterId - // }, I am still here, running for ${uptime} hours. Check out the project at https://gitlab.com/Polkabot` - // ); - // break; - // case "say": - // console.log("Operator - Received command !say:", cmd, args); - // const notifierMessage: NotifierMessage = { - // message: args - // }; - - // const notifierSpecs: NotifierSpecs = { - // notifiers: ["matrix", "demo", "all"] - // }; - - // this.context.polkabot.notify(notifierMessage, notifierSpecs); - // break; - // default: - // this.answer( - // room.roomId, - // `Operator - Command **!${cmd}** is not supported. You can use commands: - // !status OR !say ` - // ); - // } - // } - } else { - console.log(`Operator - Bot received message from non-Bot Master (sender: ${senderId}) in direct message`); - // const re = new RegExp('') - - // let capture = msg.match(/^!(?\w+)(\s+(?.*?))??$/i) || []; - // console.log("Operator - captured from non-Bot Master: ", capture); - // if (capture.length > 0 && capture.groups.cmd) { - // const cmd: string = capture.groups.cmd; - - // switch (cmd) { - // case "status": - // const uptime = (process.uptime() / 60 / 60).toFixed(2); - // this.answer( - // room.roomId, - // `I am still here! I've been running ${capitalize(this.context.pkg.name)} v${ - // this.context.pkg.version - // } for ${uptime} hours. - // Check out the project at https://gitlab.com/Polkabot` - // ); - // break; - // default: - // this.answer(room.roomId, `Operator - Command **!${cmd}** is not supported. You can use command: !status`); - // } - // } + * Check that the senderId is the Bot Master with isOperator + * Also check that the message is from a direct message between + * the Bot Master and the Bot by checking that isBotMasterAndBotInRoom + * and isBotMessageRecipient are both true since if the user + * is the Bot Master they can ask the Bot to do more actions than + * public users, and we do not want to show error messages + * from the Bot Master in the public room due to entry of invalid + * commands, we only want them to appears in the direct message. + **/ + if ( + this.isMaster(senderId) && + this.isBotMasterAndBotInRoom(room) + // && isBotMessageRecipient + ) { + console.log("Operator - Bot received message from Bot Master in direct message"); + /** + * Detect if the command received from the Bot Master is in + * the following form: `!say ` or `!status` + */ + let capture = msg.match(/^!(?\w+)(\s+(?.*?))??$/i) || []; + // console.log("Operator - captured from Bot Master: ", capture); + if (capture.length > 0 && capture.groups.cmd) { + const cmd: string = capture.groups.cmd; + const args = capture.groups.args; + + // console.log("Operator - cmd: ", cmd); + // console.log("Operator - args: ", args); + // switch (cmd) { + // case "status": + // const uptime = (process.uptime() / 60 / 60).toFixed(2); + // this.answer( + // room.roomId, + // `Hey ${ + // this.context.config.matrix.botMasterId + // }, I am still here, running for ${uptime} hours. Check out the project at https://gitlab.com/Polkabot` + // ); + // break; + // case "say": + // console.log("Operator - Received command !say:", cmd, args); + // const notifierMessage: NotifierMessage = { + // message: args + // }; + + // const notifierSpecs: NotifierSpecs = { + // notifiers: ["matrix", "demo", "all"] + // }; + + // this.context.polkabot.notify(notifierMessage, notifierSpecs); + // break; + // default: + // this.answer( + // room.roomId, + // `Operator - Command **!${cmd}** is not supported. You can use commands: + // !status OR !say ` + // ); + // } + // } + } else { + console.log(`Operator - Bot received message from non-Bot Master (sender: ${senderId}) in direct message`); + // const re = new RegExp('') + + // let capture = msg.match(/^!(?\w+)(\s+(?.*?))??$/i) || []; + // console.log("Operator - captured from non-Bot Master: ", capture); + // if (capture.length > 0 && capture.groups.cmd) { + // const cmd: string = capture.groups.cmd; + + // switch (cmd) { + // case "status": + // const uptime = (process.uptime() / 60 / 60).toFixed(2); + // this.answer( + // room.roomId, + // `I am still here! I've been running ${capitalize(this.context.pkg.name)} v${ + // this.context.pkg.version + // } for ${uptime} hours. + // Check out the project at https://gitlab.com/Polkabot` + // ); + // break; + // default: + // this.answer(room.roomId, `Operator - Command **!${cmd}** is not supported. You can use command: !status`); + // } + // } + } } } } }); } + + // TODO: not implemented! + public isPrivate(senderRoomId: any, roomIdWithBot: any): boolean { + return false; + // throw new Error("Method not implemented."); + } private isSelf(senderId) { return senderId === this.context.config.matrix.botUserId; @@ -248,10 +319,6 @@ export default class Operator extends PolkabotChatbot implements IControllable { // this.context.polkabot.notify(notifierMessage, notifierSpecs); // } - private answer(roomId: RoomId, msg: Message) { - this.context.matrix.sendTextMessage(roomId, msg); - } - /** * Check if the sender id of the user that sent the message * is the Bot Master's id diff --git a/packages/polkabot/src/index.ts b/packages/polkabot/src/index.ts index d7f2f62..2a279e2 100644 --- a/packages/polkabot/src/index.ts +++ b/packages/polkabot/src/index.ts @@ -13,17 +13,15 @@ import { assert } from "@polkadot/util"; import { PluginContext, PolkabotPlugin, - PolkabotWorker, - PolkabotNotifier, NotifierMessage, NotifierSpecs, PluginModule, IControllable, - PolkabotChatbot, - PolkabotPluginBase, Type, - IChatBot } from "../../polkabot-api/src/plugin.interface"; +import { PolkabotNotifier } from "../../polkabot-api/src/PolkabotNotifier.js"; +import { PolkabotChatbot } from "../../polkabot-api/src/PolkabotChatbot.js"; +import { PolkabotWorker } from "../../polkabot-api/src/PolkabotWorker.js"; //@ts-ignore global.Olm = Olm; diff --git a/packages/polkabot/src/lib/plugin-loader.ts b/packages/polkabot/src/lib/plugin-loader.ts index 8ae37cc..fbe8051 100644 --- a/packages/polkabot/src/lib/plugin-loader.ts +++ b/packages/polkabot/src/lib/plugin-loader.ts @@ -4,10 +4,10 @@ import { PluginModule, PluginContext, PolkabotPlugin, - PolkabotNotifier, - PolkabotWorker, - PolkabotChatbot } from "../../../polkabot-api/src/plugin.interface"; +import { PolkabotNotifier } from "../../../polkabot-api/src/PolkabotNotifier"; +import { PolkabotWorker } from "../../../polkabot-api/src/PolkabotWorker"; +import { PolkabotChatbot } from "../../../polkabot-api/src/PolkabotChatbot"; export default class PluginLoader { // private static getType(mod: PluginModule) { diff --git a/yarn.lock b/yarn.lock index d422e8e..c245e69 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9,6 +9,13 @@ dependencies: "@babel/highlight" "^7.0.0" +"@babel/code-frame@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz#33e25903d7481181534e12ec0a25f16b6fcf419e" + integrity sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g== + dependencies: + "@babel/highlight" "^7.8.3" + "@babel/core@^7.4.5": version "7.5.5" resolved "http://52.167.60.66:8081/repository/npm-all/@babel/core/-/core-7.5.5.tgz#17b2686ef0d6bc58f963dddd68ab669755582c30" @@ -29,6 +36,27 @@ semver "^5.4.1" source-map "^0.5.0" +"@babel/core@^7.7.5": + version "7.8.4" + resolved "https://registry.npmjs.org/@babel/core/-/core-7.8.4.tgz#d496799e5c12195b3602d0fddd77294e3e38e80e" + integrity sha512-0LiLrB2PwrVI+a2/IEskBopDYSd8BCb3rOvH7D5tzoWd696TBEduBvuLVm4Nx6rltrLZqvI3MCalB2K2aVzQjA== + dependencies: + "@babel/code-frame" "^7.8.3" + "@babel/generator" "^7.8.4" + "@babel/helpers" "^7.8.4" + "@babel/parser" "^7.8.4" + "@babel/template" "^7.8.3" + "@babel/traverse" "^7.8.4" + "@babel/types" "^7.8.3" + 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.5.5": version "7.5.5" resolved "http://52.167.60.66:8081/repository/npm-all/@babel/generator/-/generator-7.5.5.tgz#873a7f936a3c89491b43536d12245b626664e3cf" @@ -40,6 +68,16 @@ source-map "^0.5.0" trim-right "^1.0.1" +"@babel/generator@^7.8.4": + version "7.8.4" + resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.8.4.tgz#35bbc74486956fe4251829f9f6c48330e8d0985e" + integrity sha512-PwhclGdRpNAf3IxZb0YVuITPZmmrXz9zf6fH8lT4XbrmfQKr6ryBzhv593P5C6poJRciFCL/eHGW2NuGrgEyxA== + dependencies: + "@babel/types" "^7.8.3" + jsesc "^2.5.1" + lodash "^4.17.13" + source-map "^0.5.0" + "@babel/helper-function-name@^7.1.0": version "7.1.0" resolved "http://52.167.60.66:8081/repository/npm-all/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz#a0ceb01685f73355d4360c1247f582bfafc8ff53" @@ -49,12 +87,28 @@ "@babel/template" "^7.1.0" "@babel/types" "^7.0.0" +"@babel/helper-function-name@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@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.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz#83572d4320e2a4657263734113c42868b64e49c3" dependencies: "@babel/types" "^7.0.0" +"@babel/helper-get-function-arity@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@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-module-imports@^7.8.3": version "7.8.3" resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.8.3.tgz#7fe39589b39c016331b6b8c3f441e8f0b1419498" @@ -74,6 +128,13 @@ dependencies: "@babel/types" "^7.4.4" +"@babel/helper-split-export-declaration@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@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.5.5": version "7.5.5" resolved "http://52.167.60.66:8081/repository/npm-all/@babel/helpers/-/helpers-7.5.5.tgz#63908d2a73942229d1e6685bc2a0e730dde3b75e" @@ -83,6 +144,15 @@ "@babel/traverse" "^7.5.5" "@babel/types" "^7.5.5" +"@babel/helpers@^7.8.4": + version "7.8.4" + resolved "https://registry.npmjs.org/@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.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0.tgz#f710c38c8d458e6dd9a201afb637fcb781ce99e4" @@ -92,11 +162,25 @@ esutils "^2.0.2" js-tokens "^4.0.0" +"@babel/highlight@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@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.0.0", "@babel/parser@^7.4.4", "@babel/parser@^7.5.5": version "7.5.5" resolved "http://52.167.60.66:8081/repository/npm-all/@babel/parser/-/parser-7.5.5.tgz#02f077ac8817d3df4a832ef59de67565e71cca4b" integrity sha512-E5BN68cqR7dhKan1SfqgPGhQ178bkVKpXTPEXnFJBrEt8/DKRZlybmy+IgYLTeN7tp1R5Ccmbm2rBk17sHYU3g== +"@babel/parser@^7.7.5", "@babel/parser@^7.8.3", "@babel/parser@^7.8.4": + version "7.8.4" + resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.8.4.tgz#d1dbe64691d60358a974295fa53da074dd2ce8e8" + integrity sha512-0fKu/QqildpXmPVaRBoXOlyBb3MC+J0A66x97qEfLOMkn3u6nfY5esWogQwi/K0BjASYy4DbnsEWnpNL6qT5Mw== + "@babel/plugin-transform-runtime@^7.8.3": version "7.8.3" resolved "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.8.3.tgz#c0153bc0a5375ebc1f1591cb7eea223adea9f169" @@ -123,6 +207,15 @@ "@babel/parser" "^7.4.4" "@babel/types" "^7.4.4" +"@babel/template@^7.7.4", "@babel/template@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/template/-/template-7.8.3.tgz#e02ad04fe262a657809327f578056ca15fd4d1b8" + integrity sha512-04m87AcQgAFdvuoyiQ2kgELr2tV8B4fP/xJAVUL3Yb3bkNdMedD3d0rlSQr3PegP0cms3eHjl1F7PWlvWbU8FQ== + dependencies: + "@babel/code-frame" "^7.8.3" + "@babel/parser" "^7.8.3" + "@babel/types" "^7.8.3" + "@babel/traverse@^7.0.0", "@babel/traverse@^7.5.5": version "7.5.5" resolved "http://52.167.60.66:8081/repository/npm-all/@babel/traverse/-/traverse-7.5.5.tgz#f664f8f368ed32988cd648da9f72d5ca70f165bb" @@ -138,6 +231,21 @@ globals "^11.1.0" lodash "^4.17.13" +"@babel/traverse@^7.7.4", "@babel/traverse@^7.8.4": + version "7.8.4" + resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.8.4.tgz#f0845822365f9d5b0e312ed3959d3f827f869e3c" + integrity sha512-NGLJPZwnVEyBPLI+bl9y9aSnxMhsKz42so7ApAv9D+b4vAFPpY013FTS9LdKxcABoIYFU52HcYga1pPlx454mg== + dependencies: + "@babel/code-frame" "^7.8.3" + "@babel/generator" "^7.8.4" + "@babel/helper-function-name" "^7.8.3" + "@babel/helper-split-export-declaration" "^7.8.3" + "@babel/parser" "^7.8.4" + "@babel/types" "^7.8.3" + debug "^4.1.0" + globals "^11.1.0" + lodash "^4.17.13" + "@babel/types@^7.0.0", "@babel/types@^7.4.4", "@babel/types@^7.5.5": version "7.5.5" resolved "http://52.167.60.66:8081/repository/npm-all/@babel/types/-/types-7.5.5.tgz#97b9f728e182785909aa4ab56264f090a028d18a" @@ -156,6 +264,21 @@ lodash "^4.17.13" to-fast-properties "^2.0.0" +"@istanbuljs/load-nyc-config@^1.0.0": + version "1.0.0" + resolved "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.0.0.tgz#10602de5570baea82f8afbfa2630b24e7a8cfe5b" + integrity sha512-ZR0rq/f/E4f4XcgnDvtMWXCUJpi8eO0rssVhmztsZqLIEFA9UUP9zmpE0VxlM+kv/E1ul2I876Fwil2ayptDVg== + dependencies: + camelcase "^5.3.1" + find-up "^4.1.0" + js-yaml "^3.13.1" + resolve-from "^5.0.0" + +"@istanbuljs/schema@^0.1.2": + version "0.1.2" + resolved "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.2.tgz#26520bf09abe4a5644cd5414e37125a8954241dd" + integrity sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw== + "@polkadot/api-derive@^0.100.1": version "0.100.1" resolved "https://registry.npmjs.org/@polkadot/api-derive/-/api-derive-0.100.1.tgz#dd6b449bfcf3a67495dbb3b0cfbe264c98a2f028" @@ -412,7 +535,7 @@ dependencies: "@types/base-x" "*" -"@types/chai@4": +"@types/chai@4", "@types/chai@^4.1.7": version "4.1.7" resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.1.7.tgz#1b8e33b61a8c09cbe1f85133071baa0dbf9fa71a" integrity sha512-2Y8uPt0/jwjhQ6EiluT0XCri1Dbplr0ZxfFXUz+ye13gaqE8u5gL5ppao1JrUYr9cIip5S6MvQzBS7Kke7U9VA== @@ -556,6 +679,14 @@ acorn@^7.1.0: resolved "https://registry.npmjs.org/acorn/-/acorn-7.1.0.tgz#949d36f2c292535da602283586c2477c57eb2d6c" integrity sha512-kL5CuoXA/dgxlBbVrflsflzQ3PAas7RYZB52NOm/6839iVYJgKMJ3cQJD+t2i5+qFa8h3MDpEOJiS64E8JLnSQ== +aggregate-error@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.0.1.tgz#db2fe7246e536f40d9b5442a39e117d7dd6a24e0" + integrity sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA== + dependencies: + clean-stack "^2.0.0" + indent-string "^4.0.0" + ajv-keywords@^3.0.0: version "3.4.1" resolved "http://52.167.60.66:8081/repository/npm-all/ajv-keywords/-/ajv-keywords-3.4.1.tgz#ef916e271c64ac12171fd8384eaae6b2345854da" @@ -622,6 +753,11 @@ 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.npmjs.org/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" @@ -633,7 +769,7 @@ ansi-styles@^3.2.0, ansi-styles@^3.2.1: dependencies: color-convert "^1.9.0" -ansi-styles@^4.1.0: +ansi-styles@^4.0.0, ansi-styles@^4.1.0: version "4.2.1" resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359" integrity sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA== @@ -657,11 +793,23 @@ anymatch@^2.0.0: micromatch "^3.1.4" normalize-path "^2.1.1" +append-transform@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/append-transform/-/append-transform-2.0.0.tgz#99d9d29c7b38391e6f428d28ce136551f0b77e12" + integrity sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg== + dependencies: + default-require-extensions "^3.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 "http://52.167.60.66:8081/repository/npm-all/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" @@ -1599,6 +1747,16 @@ cache-base@^1.0.1: union-value "^1.0.0" unset-value "^1.0.0" +caching-transform@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/caching-transform/-/caching-transform-4.0.0.tgz#00d297a4206d71e2163c39eaffa8157ac0651f0f" + integrity sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA== + dependencies: + hasha "^5.0.0" + make-dir "^3.0.0" + package-hash "^4.0.0" + write-file-atomic "^3.0.0" + caller-path@^0.1.0: version "0.1.0" resolved "http://52.167.60.66:8081/repository/npm-all/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f" @@ -1661,7 +1819,7 @@ chai-http@4.3.0: qs "^6.5.1" superagent "^3.7.0" -chai@4.2.0: +chai@4.2.0, chai@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/chai/-/chai-4.2.0.tgz#760aa72cf20e3795e84b12877ce0e83737aa29e5" integrity sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw== @@ -1788,6 +1946,11 @@ class-utils@^0.3.5: isobject "^3.0.0" static-extend "^0.1.1" +clean-stack@^2.0.0: + version "2.2.0" + resolved "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" + integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== + cli-boxes@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143" @@ -1835,6 +1998,15 @@ cliui@^5.0.0: strip-ansi "^5.2.0" wrap-ansi "^5.1.0" +cliui@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" + integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^6.2.0" + 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" @@ -1884,6 +2056,10 @@ commander@^2.11.0, commander@^2.9.0: resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422" integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ== +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + component-emitter@^1.2.0, component-emitter@^1.2.1: version "1.3.0" resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" @@ -1938,6 +2114,13 @@ convert-source-map@^1.1.0, convert-source-map@^1.5.0, convert-source-map@^1.5.1: dependencies: safe-buffer "~5.1.1" +convert-source-map@^1.7.0: + version "1.7.0" + resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" + integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== + dependencies: + safe-buffer "~5.1.1" + cookiejar@^2.1.0, cookiejar@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/cookiejar/-/cookiejar-2.1.2.tgz#dd8a235530752f988f9a0844f3fc589e3111125c" @@ -2008,6 +2191,15 @@ cross-spawn@^6.0.0, cross-spawn@^6.0.5: shebang-command "^1.2.0" which "^1.2.9" +cross-spawn@^7.0.0: + version "7.0.1" + resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.1.tgz#0ab56286e0f7c24e153d04cc2aa027e43a9a5d14" + integrity sha512-u7v4o84SwFpD32Z8IIcPZ6z1/ie24O6RU3RbtL5Y316l3KuHVPx9ItBgWQ6VlfAFnRnTtMUrsQ9MUUTuEZjogg== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + 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" @@ -2059,7 +2251,7 @@ debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9: dependencies: ms "2.0.0" -debug@^4.0.1, debug@^4.1.0: +debug@^4.0.1, 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== @@ -2093,6 +2285,13 @@ 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@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-3.0.0.tgz#e03f93aac9b2b6443fc52e5e4a37b3ad9ad8df96" + integrity sha512-ek6DpXq/SCpvjhpFsLFRVtIxJCRw6fUR42lYMVZuUMK7n8eMz4Uh5clckdBjEpLhn/gEBZo7hDJnJcwdKLKQjg== + dependencies: + strip-bom "^4.0.0" + 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" @@ -2332,6 +2531,11 @@ es5-ext@^0.10.50: es6-symbol "~3.1.3" next-tick "~1.0.0" +es6-error@^4.0.1: + version "4.1.1" + resolved "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz#9e3af407459deed47e9a91f9b885a84eb05c561d" + integrity sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg== + es6-iterator@^2.0.1, es6-iterator@~2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" @@ -3059,6 +3263,15 @@ fill-range@^4.0.0: repeat-string "^1.6.1" to-regex-range "^2.1.0" +find-cache-dir@^3.2.0: + version "3.2.0" + resolved "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.2.0.tgz#e7fe44c1abc1299f516146e563108fd1006c1874" + integrity sha512-1JKclkYYsf1q9WIJKLZa9S9muC+08RIjzAlLrK4QcYLJMS6mk9yombQ9qf+zJ7H9LS800k0s44L4sDq9VYzqyg== + dependencies: + commondir "^1.0.1" + make-dir "^3.0.0" + pkg-dir "^4.1.0" + find-node-modules@^2.0.0: version "2.0.0" resolved "http://52.167.60.66:8081/repository/npm-all/find-node-modules/-/find-node-modules-2.0.0.tgz#5db1fb9e668a3d451db3d618cd167cdd59e41b69" @@ -3086,6 +3299,14 @@ find-up@^2.0.0, find-up@^2.1.0: dependencies: locate-path "^2.0.0" +find-up@^4.0.0, find-up@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/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" + findup-sync@^3.0.0: version "3.0.0" resolved "http://52.167.60.66:8081/repository/npm-all/findup-sync/-/findup-sync-3.0.0.tgz#17b108f9ee512dfb7a5c7f3c8b27ea9e1a9c08d1" @@ -3139,6 +3360,14 @@ for-own@^0.1.4: dependencies: for-in "^1.0.1" +foreground-child@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz#71b32800c9f15aa8f2f83f4a6bd9bff35d861a53" + integrity sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA== + dependencies: + cross-spawn "^7.0.0" + signal-exit "^3.0.2" + forever-agent@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" @@ -3165,6 +3394,11 @@ fragment-cache@^0.2.1: dependencies: map-cache "^0.2.2" +fromentries@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/fromentries/-/fromentries-1.2.0.tgz#e6aa06f240d6267f913cea422075ef88b63e7897" + integrity sha512-33X7H/wdfO99GdRLLgkjUrD4geAFdq/Uv0kl3HD4da6HDixd2GUg8Mw7dahLCV9r/EARkmtYBB6Tch4EEokFTQ== + fs-minipass@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.5.tgz#06c277218454ec288df77ada54a03b8702aacb9d" @@ -3225,6 +3459,11 @@ gauge@~2.7.3: strip-ansi "^3.0.1" wide-align "^1.1.0" +gensync@^1.0.0-beta.1: + version "1.0.0-beta.1" + resolved "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269" + integrity sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg== + geojson-rbush@3.x: version "3.1.1" resolved "https://registry.yarnpkg.com/geojson-rbush/-/geojson-rbush-3.1.1.tgz#dd40bdd26e92813d888d7b489e8d2980695a49b4" @@ -3326,6 +3565,18 @@ glob@7.1.3, glob@^7.0.5, glob@^7.1.2, glob@^7.1.3: once "^1.3.0" path-is-absolute "^1.0.0" +glob@^7.1.4, glob@^7.1.6: + version "7.1.6" + resolved "https://registry.npmjs.org/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" @@ -3483,6 +3734,14 @@ hash.js@^1.0.0, hash.js@^1.0.3: inherits "^2.0.3" minimalistic-assert "^1.0.1" +hasha@^5.0.0: + version "5.1.0" + resolved "https://registry.npmjs.org/hasha/-/hasha-5.1.0.tgz#dd05ccdfcfe7dab626247ce2a58efe461922f4ca" + integrity sha512-OFPDWmzPN1l7atOV1TgBVmNtBxaIysToK6Ve9DK+vT6pYuklw/nPNT+HJbZi0KDcI6vWB+9tgvZ5YD7fA3CXcA== + dependencies: + is-stream "^2.0.0" + type-fest "^0.8.0" + he@1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" @@ -3517,6 +3776,11 @@ hosted-git-info@^2.1.4: resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.7.1.tgz#97f236977bd6e125408930ff6de3eec6281ec047" integrity sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w== +html-escaper@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.0.tgz#71e87f931de3fe09e56661ab9a29aadec707b491" + integrity sha512-a4u9BeERWGu/S8JiWEAQcdrg9v4QArtP9keViQjGMdff20fBdd8waotXaNmODqBe6uZ3Nafi7K/ho4gCQHV3Ig== + http-signature@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" @@ -3588,6 +3852,11 @@ imurmurhash@^0.1.4: resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= +indent-string@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== + inflight@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" @@ -3929,6 +4198,11 @@ is-stream@^1.0.0, is-stream@^1.0.1, is-stream@^1.1.0: resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= +is-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" + integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== + is-symbol@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.2.tgz#a055f6ae57192caee329e7a860118b497a950f38" @@ -3981,6 +4255,70 @@ isstream@~0.1.2: resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= +istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.0.0-alpha.1: + version "3.0.0" + resolved "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz#f5944a37c70b550b02a78a5c3b2055b280cec8ec" + integrity sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg== + +istanbul-lib-hook@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-3.0.0.tgz#8f84c9434888cc6b1d0a9d7092a76d239ebf0cc6" + integrity sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ== + dependencies: + append-transform "^2.0.0" + +istanbul-lib-instrument@^4.0.0: + version "4.0.1" + resolved "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.1.tgz#61f13ac2c96cfefb076fe7131156cc05907874e6" + integrity sha512-imIchxnodll7pvQBYOqUu88EufLCU56LMeFPZZM/fJZ1irYcYdqroaV+ACK1Ila8ls09iEYArp+nqyC6lW1Vfg== + dependencies: + "@babel/core" "^7.7.5" + "@babel/parser" "^7.7.5" + "@babel/template" "^7.7.4" + "@babel/traverse" "^7.7.4" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-coverage "^3.0.0" + semver "^6.3.0" + +istanbul-lib-processinfo@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.2.tgz#e1426514662244b2f25df728e8fd1ba35fe53b9c" + integrity sha512-kOwpa7z9hme+IBPZMzQ5vdQj8srYgAtaRqeI48NGmAQ+/5yKiHLV0QbYqQpxsdEF0+w14SoB8YbnHKcXE2KnYw== + dependencies: + archy "^1.0.0" + cross-spawn "^7.0.0" + istanbul-lib-coverage "^3.0.0-alpha.1" + make-dir "^3.0.0" + p-map "^3.0.0" + rimraf "^3.0.0" + uuid "^3.3.3" + +istanbul-lib-report@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" + integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw== + dependencies: + istanbul-lib-coverage "^3.0.0" + make-dir "^3.0.0" + supports-color "^7.1.0" + +istanbul-lib-source-maps@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz#75743ce6d96bb86dc7ee4352cf6366a23f0b1ad9" + integrity sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg== + dependencies: + debug "^4.1.1" + istanbul-lib-coverage "^3.0.0" + source-map "^0.6.1" + +istanbul-reports@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.0.tgz#d4d16d035db99581b6194e119bbf36c963c5eb70" + integrity sha512-2osTcC8zcOSUkImzN2EWQta3Vdi4WjjKw99P2yWx5mLnigAM0Rd5uYFn1cf2i/Ois45GkNjaoTqc5CxgMSX80A== + dependencies: + html-escaper "^2.0.0" + istanbul-lib-report "^3.0.0" + jquery@^3.3.1: version "3.4.0" resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.4.0.tgz#8de513fa0fa4b2c7d2e48a530e26f0596936efdf" @@ -4239,11 +4577,23 @@ locate-path@^3.0.0: p-locate "^3.0.0" path-exists "^3.0.0" +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + lodash.debounce@^4.0.8: version "4.0.8" resolved "http://52.167.60.66:8081/repository/npm-all/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168= +lodash.flattendeep@^4.4.0: + version "4.4.0" + resolved "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz#fb030917f86a3134e5bc9bec0d69e0013ddfedb2" + integrity sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI= + lodash.isarray@^4.0.0: version "4.0.0" resolved "http://52.167.60.66:8081/repository/npm-all/lodash.isarray/-/lodash.isarray-4.0.0.tgz#2aca496b28c4ca6d726715313590c02e6ea34403" @@ -4320,6 +4670,13 @@ make-dir@^1.0.0: dependencies: pify "^3.0.0" +make-dir@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/make-dir/-/make-dir-3.0.0.tgz#1b5f39f6b9270ed33f9f054c5c0f84304989f801" + integrity sha512-grNJDhb8b1Jm1qeqW5R/O63wUo4UXo2v2HMic6YT9i/HBlF93S8jkMgH7yugvY9ABDShH4VZMn8I+U8+fCNegw== + dependencies: + semver "^6.0.0" + make-error@^1.1.1: version "1.3.5" resolved "http://52.167.60.66:8081/repository/npm-all/make-error/-/make-error-1.3.5.tgz#efe4e81f6db28cadd605c70f29c831b58ef776c8" @@ -4722,6 +5079,13 @@ node-pre-gyp@^0.12.0: semver "^5.3.0" tar "^4" +node-preload@^0.2.0: + version "0.2.1" + resolved "https://registry.npmjs.org/node-preload/-/node-preload-0.2.1.tgz#c03043bb327f417a18fee7ab7ee57b408a144301" + integrity sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ== + dependencies: + process-on-spawn "^1.0.0" + nodemon@1.19.1: version "1.19.1" resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-1.19.1.tgz#576f0aad0f863aabf8c48517f6192ff987cd5071" @@ -4810,6 +5174,40 @@ number-is-nan@^1.0.0: resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= +nyc@^15.0.0: + version "15.0.0" + resolved "https://registry.npmjs.org/nyc/-/nyc-15.0.0.tgz#eb32db2c0f29242c2414fe46357f230121cfc162" + integrity sha512-qcLBlNCKMDVuKb7d1fpxjPR8sHeMVX0CHarXAVzrVWoFrigCkYR8xcrjfXSPi5HXM7EU78L6ywO7w1c5rZNCNg== + dependencies: + "@istanbuljs/load-nyc-config" "^1.0.0" + "@istanbuljs/schema" "^0.1.2" + caching-transform "^4.0.0" + convert-source-map "^1.7.0" + decamelize "^1.2.0" + find-cache-dir "^3.2.0" + find-up "^4.1.0" + foreground-child "^2.0.0" + glob "^7.1.6" + istanbul-lib-coverage "^3.0.0" + istanbul-lib-hook "^3.0.0" + istanbul-lib-instrument "^4.0.0" + istanbul-lib-processinfo "^2.0.2" + istanbul-lib-report "^3.0.0" + istanbul-lib-source-maps "^4.0.0" + istanbul-reports "^3.0.0" + js-yaml "^3.13.1" + make-dir "^3.0.0" + node-preload "^0.2.0" + p-map "^3.0.0" + process-on-spawn "^1.0.0" + resolve-from "^5.0.0" + rimraf "^3.0.0" + signal-exit "^3.0.2" + spawn-wrap "^2.0.0" + test-exclude "^6.0.0" + uuid "^3.3.3" + yargs "^15.0.2" + oauth-sign@~0.9.0: version "0.9.0" resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" @@ -5006,6 +5404,13 @@ p-limit@^2.0.0: dependencies: p-try "^2.0.0" +p-limit@^2.2.0: + version "2.2.2" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz#61279b67721f5287aa1c13a9a7fbbc48c9291b1e" + integrity sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ== + 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" @@ -5020,6 +5425,20 @@ p-locate@^3.0.0: dependencies: p-limit "^2.0.0" +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + +p-map@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz#d704d9af8a2ba684e2600d9a215983d4141a979d" + integrity sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ== + dependencies: + aggregate-error "^3.0.0" + p-try@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" @@ -5030,6 +5449,16 @@ p-try@^2.0.0: resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== +package-hash@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/package-hash/-/package-hash-4.0.0.tgz#3537f654665ec3cc38827387fc904c163c54f506" + integrity sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ== + dependencies: + graceful-fs "^4.1.15" + hasha "^5.0.0" + lodash.flattendeep "^4.4.0" + release-zalgo "^1.0.0" + package-json@^4.0.0, package-json@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/package-json/-/package-json-4.0.1.tgz#8869a0401253661c4c4ca3da6c2121ed555f5eed" @@ -5092,6 +5521,11 @@ path-exists@^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.npmjs.org/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: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" @@ -5107,6 +5541,11 @@ path-key@^2.0.0, path-key@^2.0.1: resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= +path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + path-parse@^1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" @@ -5187,6 +5626,13 @@ pkg-dir@^2.0.0: dependencies: find-up "^2.1.0" +pkg-dir@^4.1.0: + version "4.2.0" + resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== + dependencies: + find-up "^4.0.0" + pluralize@^7.0.0: version "7.0.0" resolved "http://52.167.60.66:8081/repository/npm-all/pluralize/-/pluralize-7.0.0.tgz#298b89df8b93b0221dbf421ad2b1b1ea23fc6777" @@ -5222,6 +5668,13 @@ process-nextick-args@~2.0.0: resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" integrity sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw== +process-on-spawn@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/process-on-spawn/-/process-on-spawn-1.0.0.tgz#95b05a23073d30a17acfdc92a440efd2baefdc93" + integrity sha512-1WsPDsUSMmZH5LeMLegqkPDrsGgsWwk1Exipy2hvB0o/F0ASzbpIctSCcZIK1ykJvtTJULEH+20WOFjMvGnCTg== + dependencies: + fromentries "^1.2.0" + progress@^2.0.0: version "2.0.3" resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" @@ -5460,6 +5913,13 @@ regjsparser@^0.1.4: dependencies: jsesc "~0.5.0" +release-zalgo@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz#09700b7e5074329739330e535c5a90fb67851730" + integrity sha1-CXALflB0Mpc5Mw5TXFqQ+2eFFzA= + dependencies: + es6-error "^4.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" @@ -5556,6 +6016,11 @@ resolve-from@^4.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== +resolve-from@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/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" @@ -5603,6 +6068,13 @@ rimraf@2.6.3, rimraf@^2.6.1, rimraf@~2.6.2: dependencies: glob "^7.1.3" +rimraf@^3.0.0: + version "3.0.2" + resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + ripemd160@^2.0.0, ripemd160@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" @@ -5697,7 +6169,7 @@ semver@^5.5.1: resolved "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== -semver@^6.1.0, semver@^6.1.2, semver@^6.2.0: +semver@^6.0.0, semver@^6.1.0, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0: version "6.3.0" resolved "http://52.167.60.66:8081/repository/npm-all/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== @@ -5742,11 +6214,23 @@ shebang-command@^1.2.0: dependencies: shebang-regex "^1.0.0" +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.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= +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + signal-exit@^3.0.0, signal-exit@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" @@ -5852,11 +6336,23 @@ source-map@^0.5.0, source-map@^0.5.6, source-map@^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.0, source-map@^0.6.1: version "0.6.1" resolved "http://52.167.60.66:8081/repository/npm-all/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== +spawn-wrap@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-2.0.0.tgz#103685b8b8f9b79771318827aa78650a610d457e" + integrity sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg== + dependencies: + foreground-child "^2.0.0" + is-windows "^1.0.2" + make-dir "^3.0.0" + rimraf "^3.0.0" + signal-exit "^3.0.2" + which "^2.0.1" + spdx-correct@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4" @@ -6031,6 +6527,15 @@ string-width@^4.1.0: is-fullwidth-code-point "^3.0.0" strip-ansi "^5.2.0" +string-width@^4.2.0: + version "4.2.0" + resolved "https://registry.npmjs.org/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_decoder@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.2.0.tgz#fe86e738b19544afe70469243b2a1ee9240eae8d" @@ -6066,11 +6571,23 @@ 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.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" + integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== + dependencies: + ansi-regex "^5.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@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" + integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== + strip-eof@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" @@ -6184,6 +6701,15 @@ term-size@^2.1.0: resolved "http://52.167.60.66:8081/repository/npm-all/term-size/-/term-size-2.1.0.tgz#3aec444c07a7cf936e157c1dc224b590c3c7eef2" integrity sha512-I42EWhJ+2aeNQawGx1VtpO0DFI9YcfuvAMNIdKyf/6sRbHJ4P+ZQ/zIT87tE+ln1ymAGcCJds4dolfSAS0AcNg== +test-exclude@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" + integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== + dependencies: + "@istanbuljs/schema" "^0.1.2" + glob "^7.1.4" + minimatch "^3.0.4" + text-table@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" @@ -6333,6 +6859,11 @@ type-fest@^0.5.2: resolved "http://52.167.60.66:8081/repository/npm-all/type-fest/-/type-fest-0.5.2.tgz#d6ef42a0356c6cd45f49485c3b6281fc148e48a2" integrity sha512-DWkS49EQKVX//Tbupb9TFa19c7+MK1XmzkrZUR8TAktmE/DizXoaoJV6TZ/tSIPXipqNiRI6CyAe7x69Jb6RSw== +type-fest@^0.8.0: + version "0.8.1" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" + integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== + type@^1.0.1: version "1.2.0" resolved "https://registry.npmjs.org/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0" @@ -6487,6 +7018,11 @@ uuid@^3.3.2: resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA== +uuid@^3.3.3: + version "3.4.0" + resolved "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" + integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== + v8-compile-cache@^2.0.3: version "2.1.0" resolved "http://52.167.60.66:8081/repository/npm-all/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz#e14de37b31a6d194f5690d67efc4e7f6fc6ab30e" @@ -6544,6 +7080,13 @@ which@1.3.1, which@^1.2.14, which@^1.2.9: dependencies: isexe "^2.0.0" +which@^2.0.1: + version "2.0.2" + resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + wide-align@1.1.3, wide-align@^1.1.0: version "1.1.3" resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" @@ -6585,6 +7128,15 @@ wrap-ansi@^5.1.0: string-width "^3.0.0" strip-ansi "^5.0.0" +wrap-ansi@^6.2.0: + version "6.2.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" + integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" @@ -6599,6 +7151,16 @@ write-file-atomic@^2.0.0: imurmurhash "^0.1.4" signal-exit "^3.0.2" +write-file-atomic@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.1.tgz#558328352e673b5bb192cf86500d60b230667d4b" + integrity sha512-JPStrIyyVJ6oCSz/691fAjFtefZ6q+fP6tm+OS4Qw6o+TGQxNp1ziY2PgS+X/m0V8OWhZiO/m4xSj+Pr4RrZvw== + dependencies: + imurmurhash "^0.1.4" + is-typedarray "^1.0.0" + signal-exit "^3.0.2" + typedarray-to-buffer "^3.1.5" + write@1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3" @@ -6687,6 +7249,14 @@ yargs-parser@^15.0.0: camelcase "^5.0.0" decamelize "^1.2.0" +yargs-parser@^16.1.0: + version "16.1.0" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-16.1.0.tgz#73747d53ae187e7b8dbe333f95714c76ea00ecf1" + integrity sha512-H/V41UNZQPkUMIT5h5hiwg4QKIY1RPvoBV4XcjUbRM8Bk2oKqqyZ0DIEbTFZB0XjbtSPG8SAa/0DxCQmiRgzKg== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + yargs-unparser@1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-1.5.0.tgz#f2bb2a7e83cbc87bb95c8e572828a06c9add6e0d" @@ -6748,6 +7318,23 @@ yargs@^12.0.5: y18n "^3.2.1 || ^4.0.0" yargs-parser "^11.1.1" +yargs@^15.0.2: + version "15.1.0" + resolved "https://registry.npmjs.org/yargs/-/yargs-15.1.0.tgz#e111381f5830e863a89550bd4b136bb6a5f37219" + integrity sha512-T39FNN1b6hCW4SOIk1XyTOWxtXdcen0t+XYrysQmChzSipvhBO8Bj0nK1ozAasdk24dNWuMZvr4k24nz+8HHLg== + dependencies: + cliui "^6.0.0" + decamelize "^1.2.0" + find-up "^4.1.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^4.2.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^16.1.0" + yarn@^1.16.0: version "1.16.0" resolved "https://registry.yarnpkg.com/yarn/-/yarn-1.16.0.tgz#5701b58ac555ff91f7b889b7d791b3dc86f8f999" -- GitLab From da3b39c96003f5be173074159b09be92feea701a Mon Sep 17 00:00:00 2001 From: Will Date: Tue, 11 Feb 2020 18:15:51 +0100 Subject: [PATCH 32/86] Add unit tests --- .vscode/launch.json | 18 ++++++ packages/polkabot-api/src/PolkabotChatbot.ts | 5 +- .../tests/commands.test.ts | 61 +++++++++++++++++++ packages/polkabot/src/index.ts | 6 +- 4 files changed, 84 insertions(+), 6 deletions(-) create mode 100644 .vscode/launch.json create mode 100644 packages/polkabot-plugin-operator/tests/commands.test.ts diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..b2f3c9b --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,18 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "type": "node", + "request": "launch", + "name": "Mocha Current File", + "program": "${workspaceFolder}/node_modules/mocha/bin/_mocha", + "args": ["--no-timeouts", "--colors", "${file}", "--require", "ts-node/register"], + "console": "integratedTerminal", + "sourceMaps": true, + "internalConsoleOptions": "neverOpen" + } + ] +} diff --git a/packages/polkabot-api/src/PolkabotChatbot.ts b/packages/polkabot-api/src/PolkabotChatbot.ts index 94a62fe..67c9aa9 100644 --- a/packages/polkabot-api/src/PolkabotChatbot.ts +++ b/packages/polkabot-api/src/PolkabotChatbot.ts @@ -44,7 +44,6 @@ export abstract class PolkabotChatbot extends PolkabotPluginBase implements ICha * Get a string from the chat and extract a BotCommand or none * See https://regex101.com/r/1EDFsV/1/tests * TODO: That should be a factory creating an instance of a BotCommand class - * TODO: add unit test for that */ public static getBotCommand(str: string): BotCommand | null { let capture = str.match(/^!(?\w+)(\s+(?\w+))(\s+(?.*))?$/i) || []; @@ -56,11 +55,11 @@ export abstract class PolkabotChatbot extends PolkabotPluginBase implements ICha command, args: argList }; - console.log("obj", obj); + // console.log("obj", obj); return obj; } else { - console.log("FAILED PARSING COMMAND", str); + // console.log("FAILED PARSING COMMAND", str); // TODO: make this a silly logger message so it does not bother return null; } } diff --git a/packages/polkabot-plugin-operator/tests/commands.test.ts b/packages/polkabot-plugin-operator/tests/commands.test.ts new file mode 100644 index 0000000..3adb2c0 --- /dev/null +++ b/packages/polkabot-plugin-operator/tests/commands.test.ts @@ -0,0 +1,61 @@ +import { expect } from "chai"; +import { PolkabotChatbot } from "../../polkabot-api/src/PolkabotChatbot"; + +describe("Command parser should pass", function() { + [ + { + mod: "!mod", + cmd: "cmd", + argStr: "arg1 arg2=18", + args: ["arg1", "arg2=18"] + }, + { + mod: "!mod", + cmd: "cmd", + argStr: "", + args: null + } + ].forEach((value, index) => { + const { mod, cmd, argStr, args } = value; + const command = `${mod} ${cmd}${argStr ? " " + argStr : ""}`; + it(`Parsing test ${index}: ${command}`, done => { + const msg = command; + const res = PolkabotChatbot.getBotCommand(msg); + + expect(res.module).equal(mod.replace("!", "")); + expect(res.command).equal(cmd); + expect(res.args).to.deep.equal(args); + done(); + }); + }); +}); + +describe("Command parser should fail", function() { + [ + { + mod: "!", + cmd: "", + argStr: "arg1 arg2=18" + }, + { + mod: "!mod", + cmd: "", + argStr: "" + }, + { + mod: "junk", + cmd: "", + argStr: "" + } + ].forEach((value, index) => { + const { mod, cmd, argStr } = value; + const command = `${mod} ${cmd}${argStr ? " " + argStr : ""}`; + it(`Parsing test ${index}: ${command}`, done => { + const msg = command; + const res = PolkabotChatbot.getBotCommand(msg); + + expect(res).to.be.null; + done(); + }); + }); +}); diff --git a/packages/polkabot/src/index.ts b/packages/polkabot/src/index.ts index 2a279e2..2da2f6a 100644 --- a/packages/polkabot/src/index.ts +++ b/packages/polkabot/src/index.ts @@ -19,9 +19,9 @@ import { IControllable, Type, } from "../../polkabot-api/src/plugin.interface"; -import { PolkabotNotifier } from "../../polkabot-api/src/PolkabotNotifier.js"; -import { PolkabotChatbot } from "../../polkabot-api/src/PolkabotChatbot.js"; -import { PolkabotWorker } from "../../polkabot-api/src/PolkabotWorker.js"; +import { PolkabotNotifier } from "../../polkabot-api/src/PolkabotNotifier"; +import { PolkabotChatbot } from "../../polkabot-api/src/PolkabotChatbot"; +import { PolkabotWorker } from "../../polkabot-api/src/PolkabotWorker"; //@ts-ignore global.Olm = Olm; -- GitLab From fa1ae84a3da20d3e91a29682b70571e80e2cc040 Mon Sep 17 00:00:00 2001 From: Will Date: Wed, 12 Feb 2020 14:19:34 +0100 Subject: [PATCH 33/86] Remove comment making launch.json invalid --- .vscode/launch.json | 3 --- 1 file changed, 3 deletions(-) diff --git a/.vscode/launch.json b/.vscode/launch.json index b2f3c9b..f5e02c4 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -1,7 +1,4 @@ { - // Use IntelliSense to learn about possible attributes. - // Hover to view descriptions of existing attributes. - // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { -- GitLab From b0ef37b65bb95b5deece8c925f295030ded70f39 Mon Sep 17 00:00:00 2001 From: Will Date: Wed, 26 Feb 2020 15:48:50 +0100 Subject: [PATCH 34/86] Moving the config manager to its own package --- .editorconfig | 11 +- .eslintrc.yml | 1 + .prettierrc.yml | 9 + .vscode/settings.json | 1 + packages/config-singleton/.env-sample | 1 + packages/config-singleton/.nvmrc | 1 + packages/config-singleton/mocha.opts | 5 + packages/config-singleton/package.json | 61 +++++++ .../config-singleton/samples/config-fields.ts | 8 + packages/config-singleton/samples/sample.ts | 1 + .../config-singleton/src/ConfigSingleton.ts | 159 ++++++++++++++++++ packages/config-singleton/src/SpecsFactory.ts | 33 ++++ packages/config-singleton/src/config.ts | 30 ++++ packages/config-singleton/src/types.ts | 45 +++++ .../test/config-singleton.test.ts | 75 +++++++++ .../config-singleton/test/config-specs.ts | 24 +++ .../test/specs-factory.test.ts | 19 +++ packages/config-singleton/tsconfig.json | 28 +++ 18 files changed, 508 insertions(+), 4 deletions(-) create mode 100644 .prettierrc.yml create mode 100644 packages/config-singleton/.env-sample create mode 100644 packages/config-singleton/.nvmrc create mode 100644 packages/config-singleton/mocha.opts create mode 100644 packages/config-singleton/package.json create mode 100644 packages/config-singleton/samples/config-fields.ts create mode 100644 packages/config-singleton/samples/sample.ts create mode 100644 packages/config-singleton/src/ConfigSingleton.ts create mode 100644 packages/config-singleton/src/SpecsFactory.ts create mode 100644 packages/config-singleton/src/config.ts create mode 100644 packages/config-singleton/src/types.ts create mode 100644 packages/config-singleton/test/config-singleton.test.ts create mode 100644 packages/config-singleton/test/config-specs.ts create mode 100644 packages/config-singleton/test/specs-factory.test.ts create mode 100644 packages/config-singleton/tsconfig.json diff --git a/.editorconfig b/.editorconfig index e3a1005..f7be5fa 100644 --- a/.editorconfig +++ b/.editorconfig @@ -5,26 +5,29 @@ root = true # Unix-style newlines with a newline ending every file [*] +indent_style = space end_of_line = lf insert_final_newline = true # Matches multiple files with brace expansion notation # Set default charset -[*.{js,py}] +[*.py] charset = utf-8 -indent_style = space indent_size = 2 +[*.{js,jsx,ts,tsx}] +charset = utf-8 +indent_size = 2 +quote_type = single + # Tab indentation (no size specified) [Makefile] indent_style = tab # Indentation override for all JS under lib directory [lib/**.js] -indent_style = space indent_size = 2 # Matches the exact files either package.json or .travis.yml [{*.json,*.yml}] -indent_style = space indent_size = 2 diff --git a/.eslintrc.yml b/.eslintrc.yml index e396988..ad3d26f 100644 --- a/.eslintrc.yml +++ b/.eslintrc.yml @@ -16,6 +16,7 @@ plugins: ["@typescript-eslint"] rules: { "no-console": "off", "no-undef": "off", + "semi": 1, "@typescript-eslint/explicit-function-return-type": ["warn", { "allowExpressions": true }], diff --git a/.prettierrc.yml b/.prettierrc.yml new file mode 100644 index 0000000..82d93c5 --- /dev/null +++ b/.prettierrc.yml @@ -0,0 +1,9 @@ +trailingComma: "es5" +tabWidth: 2 +useTabs: false +semi: true +singleQuote: true +printWidth: 100 +bracketSpacing: true +jsxBracketSameLine: true +arrowParens: avoid diff --git a/.vscode/settings.json b/.vscode/settings.json index 6f5262f..3052e42 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -10,6 +10,7 @@ "Datastore", "Interop", "POLKABOT", + "Parens", "STALLWATCHER", "bot's", "envfile", diff --git a/packages/config-singleton/.env-sample b/packages/config-singleton/.env-sample new file mode 100644 index 0000000..ebc2ac8 --- /dev/null +++ b/packages/config-singleton/.env-sample @@ -0,0 +1 @@ +POLKABOT_PLUGIN_BLOCKSTATS_DISABLED=true diff --git a/packages/config-singleton/.nvmrc b/packages/config-singleton/.nvmrc new file mode 100644 index 0000000..b4de394 --- /dev/null +++ b/packages/config-singleton/.nvmrc @@ -0,0 +1 @@ +11 diff --git a/packages/config-singleton/mocha.opts b/packages/config-singleton/mocha.opts new file mode 100644 index 0000000..3551806 --- /dev/null +++ b/packages/config-singleton/mocha.opts @@ -0,0 +1,5 @@ +--ui bdd +--recursive +--require ts-node/register +--watch-extensions ts +test/**/*.test.ts diff --git a/packages/config-singleton/package.json b/packages/config-singleton/package.json new file mode 100644 index 0000000..d001a0b --- /dev/null +++ b/packages/config-singleton/package.json @@ -0,0 +1,61 @@ +{ + "name": "config-singleton", + "version": "0.1.0", + "description": "Config Singleton package", + "scripts": { + "start": "node --inspect=5858 -r ts-node/register ./src/polkabot.ts", + "start:watch": "nodemon", + "dev": "nodemon ./src/polkabot -c ./config.js --exec babel-node --presets env", + "build": "tsc --build tsconfig.json", + "test": "mocha --opts mocha.opts", + "test:watch": "mocha --opts mocha.opts --watch", + "lint": "eslint --ext .js,.ts src", + "clean": "rm -rf .nyc_output build coverage node_modules out dist", + "prepublishOnly": "npm run build", + "build:doc": "jsdoc -r -d out -c jsdoc.conf" + }, + "author": "chevdor", + "license": "ISC", + "keywords": [ + "blockchain", + "NodeJS" + ], + "devDependencies": { + "@types/dotenv": "^6.1.1", + "@types/mocha": "^5.2.7", + "@typescript-eslint/eslint-plugin": "2.0.0", + "@typescript-eslint/parser": "2.0.0", + "chai": "4.2.0", + "chai-http": "4.3.0", + "dotenv": "8.1.0", + "eslint": "6.2.0", + "eslint-config-prettier": "6.1.0", + "eslint-config-standard": "14.0.0", + "eslint-plugin-import": "2.18.2", + "eslint-plugin-node": "^9.1.0", + "eslint-plugin-promise": "4.2.1", + "eslint-plugin-react": "7.14.3", + "eslint-plugin-standard": "4.0.1", + "jsdoc": "3.6.3", + "jsdoc-route-plugin": "^0.1.0", + "mocha": "^6.1.4", + "nodemon": "1.19.1", + "snazzy": "^8.0.0", + "standard": "14.0.0", + "ts-node": "^8.3.0", + "yarn": "^1.16.0" + }, + "standard": { + "parser": "babel-eslint", + "ignore": [ + "dist/" + ], + "env": [ + "mocha" + ] + }, + "engines": { + "node": ">=10.13.0", + "yarn": "^1.10.1" + } +} diff --git a/packages/config-singleton/samples/config-fields.ts b/packages/config-singleton/samples/config-fields.ts new file mode 100644 index 0000000..167e384 --- /dev/null +++ b/packages/config-singleton/samples/config-fields.ts @@ -0,0 +1,8 @@ +import { EnvDictionnary } from "../src/types"; + +const PREFIX = "SAMPLE_"; + +export const ConfigFields: EnvDictionnary = { + POLKADOT_NODE_NAME: { name: PREFIX + "POLKADOT_NODE_NAME", description: "The name of the node we connect to" }, + POLKADOT_URL: { name: PREFIX + "POLKADOT_WS_HOST", description: "The Polkadot WS url" }, +}; diff --git a/packages/config-singleton/samples/sample.ts b/packages/config-singleton/samples/sample.ts new file mode 100644 index 0000000..4637847 --- /dev/null +++ b/packages/config-singleton/samples/sample.ts @@ -0,0 +1 @@ +import { ConfigSingleton } from "./ConfigSingleton"; diff --git a/packages/config-singleton/src/ConfigSingleton.ts b/packages/config-singleton/src/ConfigSingleton.ts new file mode 100644 index 0000000..e068b50 --- /dev/null +++ b/packages/config-singleton/src/ConfigSingleton.ts @@ -0,0 +1,159 @@ +import process = require('process'); +import dotenv from 'dotenv'; +import * as path from 'path'; +import { ConfigSpecs, ConfigDictionnaryRaw, ConfigDictionnarySimple } from './types'; + +interface IConfig { + Validate(): boolean; +} + +type GetterOpts = { + specs?: ConfigSpecs; + clean?: boolean; +}; + +export class ConfigSingleton { + private static fullConfig?: ConfigDictionnaryRaw; + private static cleanConfig?: ConfigDictionnarySimple; + private static instance: ConfigSingleton; + + private specs: ConfigSpecs; + + private constructor(specs: ConfigSpecs) { + if (!specs) throw new Error('Missing specs in ctor'); + this.specs = specs; + this.refresh(); + } + + /** If you need to access the config, use this method */ + // this method MUST return the clean config for simple usage BUT the full one to validate + // we need however to store the full config for validate + public static getInstance(specs?: ConfigSpecs): ConfigSingleton { + if (!this.instance && !specs) { + throw new Error("Missing specs"); + + } + if (!this.instance && specs) { + this.instance = new ConfigSingleton(specs); + } + + // if (!ConfigSingleton.fullConfig && !specs) throw new Error('Missing specs'); + // if (!ConfigSingleton.fullConfig || specs) { + // ConfigSingleton.fullConfig = new ConfigSingleton(specs).getConfig(false); + // ConfigSingleton.cleanConfig = new ConfigSingleton(specs).getConfig(true); + // } + return this.instance; + // return ConfigSingleton.cleanConfig; + } + + // TODO: remove the argument, when we get the config, it is always clean + public getConfig(clean: boolean = true): ConfigDictionnarySimple { + const stuff: any = this.specs.config; //process.env; + + Object.entries(stuff).map(([key, _val]) => { + if (clean) { + stuff[key] = process.env[key]; + } else { + stuff[key].value = process.env[key]; + } + }); + // Hook up functions + stuff.Validate = this.Validate.bind(this); + + return stuff; + } + + // public getSpecs(): ConfigSpecs { + // return this.specs; + // } + + private static getEnvFile(): string { + const profile = process.env.NODE_ENV || 'production'; + // console.log('NODE_ENV profile: ', profile); + const envfile = + profile == 'production' + ? path.resolve(process.cwd(), '.env') + : path.resolve(process.cwd(), '.env.' + profile.toLowerCase()); + return envfile; + } + + /** You likely will never have to use this function which + * is mostly use for the tests. If you don't know, do NOT call + * this function, it would take time and likely do nothing + * interesting for you. + */ + public refresh(): void { + const envfile = ConfigSingleton.getEnvFile(); + // console.log('ENV file:', envfile); + dotenv.config({ path: envfile }); + const ENV = process.env; + + // console.log(ENV); + // this.filteredEnv = Object.entries(process.env).filter(([key, val]) => { + // return key.startsWith('SAMPLE'); + // }); + // ConfigSingleton.instance = new ConfigSingleton(this.specs) + } + + // assert((ConfigSingleton.instance.polkadot.nodeName || '').length > 0, "The extracted config does not look OK") + // } + + /** Calling this function will get an instance of the Config and attach it + * to the global scope. + */ + public static loadToGlobal(): void { + global['Config'] = ConfigSingleton.getInstance().getConfig(); + } + + /** Validate the config and return wheather it is valid or not */ + public Validate(): boolean { + let result = true; + console.log(this.specs); + Object.entries(this.specs.config).map(([_key, env]) => { + if (env.options) { + const value = process.env[env.name] || ''; + if (env.options.regexp != undefined) { + const regex = RegExp(env.options.regexp); + const testResult = regex.test(value); + // console.log( + // ` - Checking ${env.name} against ${regex} => ${testResult ? 'OK ' : 'FAIL'}\t${ + // env.options.masked ? '*****' : process.env[env.name] + // }` + // ); + result = result && testResult; + } + result = result && (!env.options.mandatory || (env.options.mandatory && value.length > 0)); + } + }); + return result; + } + + /** Show the ENV variables this application cares about */ + // public static getSupportedEnv(): ConfigSpecs { + // return ConfigSingleton.g; + // } + + /** + * Display the current ENV to ensure everything that is used matches + * the expectations. + */ + public dumpEnv(logger: (...args) => void): void { + const container = `${this.specs.container.prefix}_${this.specs.container.module}`; + logger(`===> ${container} ENV:`); + Object.entries(this.specs.config).map(([_key, env]) => { + logger( + `- ${env.name.replace(container + '_', '')}: ${env.description}\n${ + env.options && env.options.regexp ? ' regexp: ' + env.options.regexp + '\n' : '' + } value: ${ + env.options && env.options.masked + ? process.env[env.name] + ? '*****' + : 'empty' + : process.env[env.name] + }` + ); + }); + + logger('========================================'); + } +} diff --git a/packages/config-singleton/src/SpecsFactory.ts b/packages/config-singleton/src/SpecsFactory.ts new file mode 100644 index 0000000..552d6dc --- /dev/null +++ b/packages/config-singleton/src/SpecsFactory.ts @@ -0,0 +1,33 @@ +import { ConfigItem, FactoryCtorInitParams, ConfigSpecs, ConfigItemOptions } from './types'; + +export class SpecsFactory { + // private params: FactoryCtorInitParams; + private specs: ConfigSpecs; + + constructor(container: FactoryCtorInitParams) { + // this.params = params; + this.specs = { + config: {}, + container, + }; + } + + public getSpec(name: string, description: string, options?: ConfigItemOptions): ConfigItem { + const res: ConfigItem = { + name: `${this.specs.container.prefix}_${this.specs.container.module}_${name}`, + description, + options, + }; + return res; + } + + public getSpecs(): ConfigSpecs { + return this.specs; + } + + public appendSpec(newSpec: ConfigItem): ConfigSpecs { + if (!this.specs.config) this.specs.config = {}; + this.specs.config[newSpec.name] = newSpec; + return this.specs; + } +} diff --git a/packages/config-singleton/src/config.ts b/packages/config-singleton/src/config.ts new file mode 100644 index 0000000..ddec96d --- /dev/null +++ b/packages/config-singleton/src/config.ts @@ -0,0 +1,30 @@ +import { config as dotenvConfig } from 'dotenv' + +dotenvConfig() + +module.exports = { + + // General Polkadot config + polkadot: { + // This is just for you to remember. i.e. 'Crash Override' + nodeName: process.env.POLKADOT_NODE_NAME, + // WebSocket host:port, usually :9944. i.e. 'ws://127.0.0.1:9944' + host: process.env.POLKADOT_WS_HOST || 'ws://127.0.0.1:9944' + }, + + // General Matrix config + matrix: { + // Who is managing the bot. i.e. '@you:matrix.org' + botMasterId: process.env.MATRIX_BOTMASTER_ID, + // In what room is the bot active by default. i.e. '!:matrix.org' + roomId: process.env.MATRIX_ROOM_ID, + // Credentials of the bot. i.e. '@...:matrix.org' + botUserId: process.env.MATRIX_BOT_USER_ID, + // Token. i.e. 'your_token_here' + token: process.env.MATRIX_TOKEN, + // Base Matrix URL. i.e. 'https://matrix.org' + baseUrl: process.env.MATRIX_BASE_URL || 'https://matrix.org', + loginUserId: process.env.MATRIX_LOGIN_USER_ID, + loginUserPassword: process.env.MATRIX_LOGIN_USER_PASSWORD + } +} diff --git a/packages/config-singleton/src/types.ts b/packages/config-singleton/src/types.ts new file mode 100644 index 0000000..303182d --- /dev/null +++ b/packages/config-singleton/src/types.ts @@ -0,0 +1,45 @@ +export type ConfigItemOptions = { + masked?: boolean; // true for tokens, passwords, etc.. + regexp?: RegExp; // validation regexp + mandatory?: boolean; // Do we explode if this ENV is not defined and there is no default? + default?: any; // The default if nothing is provided +}; + +type ConfigValue = any; + +export interface ConfigItem { + name: string; // Name of the envrionment varibale + description: string; // Description of what the var does + options?: ConfigItemOptions; + value?: ConfigValue; +} + +// TODO: rename those +export type ConfigDictionnarySimple = { + [key: string]: ConfigValue; +}; + +/** + * + */ +// TODO: rename those +export type ConfigDictionnaryRaw = { + [key: string]: ConfigItem; +}; + +// export type CleanConfig = ConfigDictionnary; + +export type FullConfig = { + factoryParams: FactoryCtorInitParams; + config: ConfigDictionnaryRaw; +}; + +export type FactoryCtorInitParams = { + prefix: string; + module: string; +}; + +export type ConfigSpecs = { + container: FactoryCtorInitParams; + config: ConfigDictionnaryRaw; +}; diff --git a/packages/config-singleton/test/config-singleton.test.ts b/packages/config-singleton/test/config-singleton.test.ts new file mode 100644 index 0000000..04d000f --- /dev/null +++ b/packages/config-singleton/test/config-singleton.test.ts @@ -0,0 +1,75 @@ +import { ConfigSingleton } from '../src/ConfigSingleton'; +import { expect } from 'chai'; +import specs from './config-specs'; + +const param1 = '42'; +const param2 = 'r=3.14'; +const secret = 'password123'; +const regexp = '12_34'; + +// Here we set some ENV for testing +function loadDefaultEnv() { + process.env.SAMPLE_MODULE_PARAM1 = param1; + process.env.SAMPLE_MODULE_PARAM2 = param2; + process.env.SAMPLE_MODULE_SECRET = secret; + process.env.SAMPLE_MODULE_REGEXP = regexp; +} + +describe('ConfigSingleton', () => { + beforeEach(function() { + loadDefaultEnv(); + }); + + it('Should fail the first call without config specs', function() { + expect(() => ConfigSingleton.getInstance()).to.throw(/missing/i); + }); + + it('Should pass the second call with config specs', function() { + expect(() => ConfigSingleton.getInstance(specs)).to.not.throw(); + expect(() => ConfigSingleton.getInstance(specs)).to.not.throw(); + }); + + it('Should pass the second call without config specs', function() { + expect(() => ConfigSingleton.getInstance(specs)).to.not.throw(); + expect(() => ConfigSingleton.getInstance()).to.not.throw(); + }); + + it('Should properly fetch params', function() { + const config = ConfigSingleton.getInstance(specs); + // console.log(JSON.stringify(config, null, 2)); + expect(config['SAMPLE_MODULE_PARAM1']).to.equal(param1); + expect(config['SAMPLE_MODULE_PARAM2']).to.equal(param2); + expect(config['SAMPLE_MODULE_SECRET']).to.equal(secret); + expect(config['SAMPLE_MODULE_REGEXP']).to.equal(regexp); + expect(() => ConfigSingleton.getInstance()).to.not.throw(); + }); + + it('Should return clean config', function() { + const config = ConfigSingleton.getInstance(specs); + // console.log(JSON.stringify(config, null, 2)); + expect(config['SAMPLE_MODULE_PARAM1']).to.equal(param1); + expect(config['SAMPLE_MODULE_PARAM2']).to.equal(param2); + expect(config['SAMPLE_MODULE_SECRET']).to.equal(secret); + expect(config['SAMPLE_MODULE_REGEXP']).to.equal(regexp); + expect(() => ConfigSingleton.getInstance()).to.not.throw(); + }); + + it('Should fail regexp validation', function() { + process.env.SAMPLE_MODULE_REGEXP = '123_45'; + const res = ConfigSingleton.getInstance(specs).Validate(); + expect(res).to.be.false; + }); + + xit('Should fail is a mandatory field is missing', function() { + delete process.env.SAMPLE_MODULE_MANDAT1; // just in case + const res = ConfigSingleton.getInstance(specs).Validate(); + expect(res).to.be.false; + }); + + xit('Should not fail is a non mandatory field is missing', function() { + delete process.env.SAMPLE_MODULE_PARAM2; + const config = ConfigSingleton.getInstance(specs); + const res = config.Validate(); + expect(res).to.be.false; + }); +}); diff --git a/packages/config-singleton/test/config-specs.ts b/packages/config-singleton/test/config-specs.ts new file mode 100644 index 0000000..51cbeed --- /dev/null +++ b/packages/config-singleton/test/config-specs.ts @@ -0,0 +1,24 @@ +import { ConfigSpecs } from '../src/types'; +import { SpecsFactory } from '../src/SpecsFactory'; + +const prefix = 'SAMPLE'; +const mod = 'MODULE'; +// let specs: ConfigSpecs = { +// container: { +// prefix, +// module: mod, +// }, +// config: {}, +// }; +export let param; + +const factory = new SpecsFactory({ prefix, module: mod }); + +factory.appendSpec(factory.getSpec('PARAM1', 'some param1')); +factory.appendSpec(factory.getSpec('PARAM2', 'some param2')); +factory.appendSpec(factory.getSpec('SECRET', 'some secret', { masked: true })); +factory.appendSpec(factory.getSpec('REGEXP', 'some regexp', { regexp: /^\d{2}_\d{2}/ })); +factory.appendSpec(factory.getSpec('MANDAT1', 'some mandatory param', { mandatory: true })); +// specs = factory.appendSpec(specs, factory.getSpec('REGEXP', 'some regexp', /^\d{2}_\d{2}/)); + +export default factory.getSpecs(); diff --git a/packages/config-singleton/test/specs-factory.test.ts b/packages/config-singleton/test/specs-factory.test.ts new file mode 100644 index 0000000..de53055 --- /dev/null +++ b/packages/config-singleton/test/specs-factory.test.ts @@ -0,0 +1,19 @@ +import { SpecsFactory } from '../src/SpecsFactory'; +import { expect } from 'chai'; + +import { ConfigItem } from '../src/types'; + +const PREFIX = 'PREFIX' +const MODULE = 'MODULE' + +describe('Specs Factory', () => { + it('Should pass', function() { + const f = new SpecsFactory({ prefix: PREFIX, module: MODULE }); + const param = 'param' + const desc = 'some desc' + + const spec: ConfigItem = f.getSpec(param, desc); + expect(spec.name).equal(`${PREFIX}_${MODULE}_${param}`); + }); + +}); diff --git a/packages/config-singleton/tsconfig.json b/packages/config-singleton/tsconfig.json new file mode 100644 index 0000000..1c38795 --- /dev/null +++ b/packages/config-singleton/tsconfig.json @@ -0,0 +1,28 @@ +{ + "compilerOptions": { + "target": "es5", + "module": "commonjs", + "moduleResolution": "node", + "esModuleInterop": true, + "resolveJsonModule": true, + "allowJs": true, + "noImplicitAny": false, + "sourceMap": true, + "preserveConstEnums": true, + "lib": ["es2015", "dom"], + "noUnusedLocals": false, + "noImplicitReturns": true, + "noImplicitThis": true, + "alwaysStrict": true, + "strictNullChecks": false, + "noUnusedParameters": false, + "pretty": true, + "allowUnreachableCode": false, + "experimentalDecorators": true, + "suppressImplicitAnyIndexErrors": true, + "outDir": "./build" + }, + "include": ["./bin/**/*", "./src/**/*", "./package.json"], + "exclude": ["node_modules", "**/*.test.ts"], + "compileOnSave": true +} -- GitLab From 1e7381c6a2f262d5e916f6c46353e7b0666c6056 Mon Sep 17 00:00:00 2001 From: Will Date: Wed, 26 Feb 2020 18:14:36 +0100 Subject: [PATCH 35/86] Fix major bug --- .../config-singleton/src/ConfigSingleton.ts | 47 ++++++++++++------- packages/config-singleton/src/SpecsFactory.ts | 1 + .../test/config-singleton.test.ts | 23 +++++++-- .../config-singleton/test/config-specs.ts | 3 +- 4 files changed, 50 insertions(+), 24 deletions(-) diff --git a/packages/config-singleton/src/ConfigSingleton.ts b/packages/config-singleton/src/ConfigSingleton.ts index e068b50..0a2da68 100644 --- a/packages/config-singleton/src/ConfigSingleton.ts +++ b/packages/config-singleton/src/ConfigSingleton.ts @@ -1,7 +1,7 @@ import process = require('process'); import dotenv from 'dotenv'; import * as path from 'path'; -import { ConfigSpecs, ConfigDictionnaryRaw, ConfigDictionnarySimple } from './types'; +import { ConfigSpecs, ConfigDictionnaryRaw, ConfigDictionnarySimple, ConfigItem } from './types'; interface IConfig { Validate(): boolean; @@ -12,6 +12,10 @@ type GetterOpts = { clean?: boolean; }; +function clone(object: any): any { + return JSON.parse(JSON.stringify(object)) +} + export class ConfigSingleton { private static fullConfig?: ConfigDictionnaryRaw; private static cleanConfig?: ConfigDictionnarySimple; @@ -30,8 +34,7 @@ export class ConfigSingleton { // we need however to store the full config for validate public static getInstance(specs?: ConfigSpecs): ConfigSingleton { if (!this.instance && !specs) { - throw new Error("Missing specs"); - + throw new Error('Missing specs'); } if (!this.instance && specs) { this.instance = new ConfigSingleton(specs); @@ -46,16 +49,12 @@ export class ConfigSingleton { // return ConfigSingleton.cleanConfig; } - // TODO: remove the argument, when we get the config, it is always clean - public getConfig(clean: boolean = true): ConfigDictionnarySimple { - const stuff: any = this.specs.config; //process.env; + public getConfig(): ConfigDictionnarySimple { + // here we clone the config specs so we dont lose the specs + const stuff: any = clone(this.specs.config); //process.env; Object.entries(stuff).map(([key, _val]) => { - if (clean) { - stuff[key] = process.env[key]; - } else { - stuff[key].value = process.env[key]; - } + stuff[key] = process.env[key]; }); // Hook up functions stuff.Validate = this.Validate.bind(this); @@ -63,9 +62,16 @@ export class ConfigSingleton { return stuff; } - // public getSpecs(): ConfigSpecs { - // return this.specs; - // } + public getSpecs(): ConfigDictionnaryRaw { + const stuff: any = this.specs.config; //process.env; + // console.log('stuff1', stuff) + + // Object.entries(stuff).map(([key, _val]) => { + // stuff[key].value = process.env[key]; + // }); + // console.log('stuff2', stuff) + return stuff; + } private static getEnvFile(): string { const profile = process.env.NODE_ENV || 'production'; @@ -108,11 +114,13 @@ export class ConfigSingleton { /** Validate the config and return wheather it is valid or not */ public Validate(): boolean { let result = true; - console.log(this.specs); - Object.entries(this.specs.config).map(([_key, env]) => { - if (env.options) { + // console.log('specs:', this.specs); + const configSpecs = this.getSpecs(); + Object.entries(configSpecs).map(([_key, env]: [string, ConfigItem]) => { + if (env && env.options) { const value = process.env[env.name] || ''; if (env.options.regexp != undefined) { + // console.log('env', env); const regex = RegExp(env.options.regexp); const testResult = regex.test(value); // console.log( @@ -123,7 +131,10 @@ export class ConfigSingleton { result = result && testResult; } result = result && (!env.options.mandatory || (env.options.mandatory && value.length > 0)); - } + } + // else { + // console.log('no env'); + // } }); return result; } diff --git a/packages/config-singleton/src/SpecsFactory.ts b/packages/config-singleton/src/SpecsFactory.ts index 552d6dc..eb341ca 100644 --- a/packages/config-singleton/src/SpecsFactory.ts +++ b/packages/config-singleton/src/SpecsFactory.ts @@ -26,6 +26,7 @@ export class SpecsFactory { } public appendSpec(newSpec: ConfigItem): ConfigSpecs { + // console.log('Appendspec', newSpec); if (!this.specs.config) this.specs.config = {}; this.specs.config[newSpec.name] = newSpec; return this.specs; diff --git a/packages/config-singleton/test/config-singleton.test.ts b/packages/config-singleton/test/config-singleton.test.ts index 04d000f..7d68997 100644 --- a/packages/config-singleton/test/config-singleton.test.ts +++ b/packages/config-singleton/test/config-singleton.test.ts @@ -35,7 +35,7 @@ describe('ConfigSingleton', () => { }); it('Should properly fetch params', function() { - const config = ConfigSingleton.getInstance(specs); + const config = ConfigSingleton.getInstance(specs).getConfig(); // console.log(JSON.stringify(config, null, 2)); expect(config['SAMPLE_MODULE_PARAM1']).to.equal(param1); expect(config['SAMPLE_MODULE_PARAM2']).to.equal(param2); @@ -44,8 +44,16 @@ describe('ConfigSingleton', () => { expect(() => ConfigSingleton.getInstance()).to.not.throw(); }); + it('Should properly fetch config specs', function() { + const configSpecs = ConfigSingleton.getInstance(specs).getSpecs(); + // console.log('configSpecs', JSON.stringify(configSpecs, null, 2)); + expect(configSpecs['SAMPLE_MODULE_PARAM1'].description).to.have.length.above(3); + + // expect(() => ConfigSingleton.getInstance()).to.not.throw(); + }); + it('Should return clean config', function() { - const config = ConfigSingleton.getInstance(specs); + const config = ConfigSingleton.getInstance(specs).getConfig(); // console.log(JSON.stringify(config, null, 2)); expect(config['SAMPLE_MODULE_PARAM1']).to.equal(param1); expect(config['SAMPLE_MODULE_PARAM2']).to.equal(param2); @@ -56,17 +64,22 @@ describe('ConfigSingleton', () => { it('Should fail regexp validation', function() { process.env.SAMPLE_MODULE_REGEXP = '123_45'; - const res = ConfigSingleton.getInstance(specs).Validate(); + const configSpecs = ConfigSingleton.getInstance(specs).getSpecs(); + // console.log('specs', configSpecs); + const config = ConfigSingleton.getInstance(specs).getConfig(); + // console.log('config', config); + + const res = ConfigSingleton.getInstance().Validate(); expect(res).to.be.false; }); - xit('Should fail is a mandatory field is missing', function() { + it('Should fail is a mandatory field is missing', function() { delete process.env.SAMPLE_MODULE_MANDAT1; // just in case const res = ConfigSingleton.getInstance(specs).Validate(); expect(res).to.be.false; }); - xit('Should not fail is a non mandatory field is missing', function() { + it('Should not fail is a non mandatory field is missing', function() { delete process.env.SAMPLE_MODULE_PARAM2; const config = ConfigSingleton.getInstance(specs); const res = config.Validate(); diff --git a/packages/config-singleton/test/config-specs.ts b/packages/config-singleton/test/config-specs.ts index 51cbeed..074226a 100644 --- a/packages/config-singleton/test/config-specs.ts +++ b/packages/config-singleton/test/config-specs.ts @@ -20,5 +20,6 @@ factory.appendSpec(factory.getSpec('SECRET', 'some secret', { masked: true })); factory.appendSpec(factory.getSpec('REGEXP', 'some regexp', { regexp: /^\d{2}_\d{2}/ })); factory.appendSpec(factory.getSpec('MANDAT1', 'some mandatory param', { mandatory: true })); // specs = factory.appendSpec(specs, factory.getSpec('REGEXP', 'some regexp', /^\d{2}_\d{2}/)); +const specs = factory.getSpecs() -export default factory.getSpecs(); +export default specs; -- GitLab From b7d1828e995645bd184c9b62b6ccf3ec5c334b54 Mon Sep 17 00:00:00 2001 From: Will Date: Thu, 27 Feb 2020 09:30:02 +0100 Subject: [PATCH 36/86] Cleanup before publishing package --- .vscode/settings.json | 1 + packages/config-singleton/package.json | 10 +- .../{ => 01_ts_basic}/config-fields.ts | 2 +- .../samples/{ => 01_ts_basic}/sample.ts | 0 .../config-singleton/src/ConfigSingleton.ts | 62 ++---- packages/config-singleton/src/config.ts | 13 +- packages/config-singleton/src/types.ts | 2 +- yarn.lock | 178 +++++++++++++++++- 8 files changed, 200 insertions(+), 68 deletions(-) rename packages/config-singleton/samples/{ => 01_ts_basic}/config-fields.ts (84%) rename packages/config-singleton/samples/{ => 01_ts_basic}/sample.ts (100%) diff --git a/.vscode/settings.json b/.vscode/settings.json index 3052e42..220d945 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -16,6 +16,7 @@ "envfile", "minimongo", "msgsype", + "typedoc", "upsert", "xxhash" ] diff --git a/packages/config-singleton/package.json b/packages/config-singleton/package.json index d001a0b..8264a53 100644 --- a/packages/config-singleton/package.json +++ b/packages/config-singleton/package.json @@ -3,16 +3,13 @@ "version": "0.1.0", "description": "Config Singleton package", "scripts": { - "start": "node --inspect=5858 -r ts-node/register ./src/polkabot.ts", - "start:watch": "nodemon", - "dev": "nodemon ./src/polkabot -c ./config.js --exec babel-node --presets env", "build": "tsc --build tsconfig.json", "test": "mocha --opts mocha.opts", "test:watch": "mocha --opts mocha.opts --watch", "lint": "eslint --ext .js,.ts src", "clean": "rm -rf .nyc_output build coverage node_modules out dist", - "prepublishOnly": "npm run build", - "build:doc": "jsdoc -r -d out -c jsdoc.conf" + "prepublishOnly": "yarn build", + "build:doc": "typedoc --out docs src" }, "author": "chevdor", "license": "ISC", @@ -36,13 +33,12 @@ "eslint-plugin-promise": "4.2.1", "eslint-plugin-react": "7.14.3", "eslint-plugin-standard": "4.0.1", - "jsdoc": "3.6.3", - "jsdoc-route-plugin": "^0.1.0", "mocha": "^6.1.4", "nodemon": "1.19.1", "snazzy": "^8.0.0", "standard": "14.0.0", "ts-node": "^8.3.0", + "typedoc": "^0.16.10", "yarn": "^1.16.0" }, "standard": { diff --git a/packages/config-singleton/samples/config-fields.ts b/packages/config-singleton/samples/01_ts_basic/config-fields.ts similarity index 84% rename from packages/config-singleton/samples/config-fields.ts rename to packages/config-singleton/samples/01_ts_basic/config-fields.ts index 167e384..8b91872 100644 --- a/packages/config-singleton/samples/config-fields.ts +++ b/packages/config-singleton/samples/01_ts_basic/config-fields.ts @@ -1,4 +1,4 @@ -import { EnvDictionnary } from "../src/types"; +import { EnvDictionnary } from "../../../src/types"; const PREFIX = "SAMPLE_"; diff --git a/packages/config-singleton/samples/sample.ts b/packages/config-singleton/samples/01_ts_basic/sample.ts similarity index 100% rename from packages/config-singleton/samples/sample.ts rename to packages/config-singleton/samples/01_ts_basic/sample.ts diff --git a/packages/config-singleton/src/ConfigSingleton.ts b/packages/config-singleton/src/ConfigSingleton.ts index 0a2da68..50bb5e0 100644 --- a/packages/config-singleton/src/ConfigSingleton.ts +++ b/packages/config-singleton/src/ConfigSingleton.ts @@ -3,22 +3,11 @@ import dotenv from 'dotenv'; import * as path from 'path'; import { ConfigSpecs, ConfigDictionnaryRaw, ConfigDictionnarySimple, ConfigItem } from './types'; -interface IConfig { - Validate(): boolean; -} - -type GetterOpts = { - specs?: ConfigSpecs; - clean?: boolean; -}; - function clone(object: any): any { - return JSON.parse(JSON.stringify(object)) + return JSON.parse(JSON.stringify(object)); } export class ConfigSingleton { - private static fullConfig?: ConfigDictionnaryRaw; - private static cleanConfig?: ConfigDictionnarySimple; private static instance: ConfigSingleton; private specs: ConfigSpecs; @@ -29,9 +18,6 @@ export class ConfigSingleton { this.refresh(); } - /** If you need to access the config, use this method */ - // this method MUST return the clean config for simple usage BUT the full one to validate - // we need however to store the full config for validate public static getInstance(specs?: ConfigSpecs): ConfigSingleton { if (!this.instance && !specs) { throw new Error('Missing specs'); @@ -40,37 +26,27 @@ export class ConfigSingleton { this.instance = new ConfigSingleton(specs); } - // if (!ConfigSingleton.fullConfig && !specs) throw new Error('Missing specs'); - // if (!ConfigSingleton.fullConfig || specs) { - // ConfigSingleton.fullConfig = new ConfigSingleton(specs).getConfig(false); - // ConfigSingleton.cleanConfig = new ConfigSingleton(specs).getConfig(true); - // } return this.instance; - // return ConfigSingleton.cleanConfig; } public getConfig(): ConfigDictionnarySimple { // here we clone the config specs so we dont lose the specs - const stuff: any = clone(this.specs.config); //process.env; + const confClone: any = clone(this.specs.config); //process.env; - Object.entries(stuff).map(([key, _val]) => { - stuff[key] = process.env[key]; + Object.entries(confClone).map(([key, _val]) => { + confClone[key] = process.env[key]; }); + // Hook up functions - stuff.Validate = this.Validate.bind(this); + ['Validate', 'DumpEnv'].map((f: string) => { + confClone[f] = this[f].bind(this); + }); - return stuff; + return confClone; } public getSpecs(): ConfigDictionnaryRaw { - const stuff: any = this.specs.config; //process.env; - // console.log('stuff1', stuff) - - // Object.entries(stuff).map(([key, _val]) => { - // stuff[key].value = process.env[key]; - // }); - // console.log('stuff2', stuff) - return stuff; + return this.specs.config; } private static getEnvFile(): string { @@ -92,7 +68,7 @@ export class ConfigSingleton { const envfile = ConfigSingleton.getEnvFile(); // console.log('ENV file:', envfile); dotenv.config({ path: envfile }); - const ENV = process.env; + // const ENV = process.env; // console.log(ENV); // this.filteredEnv = Object.entries(process.env).filter(([key, val]) => { @@ -114,27 +90,17 @@ export class ConfigSingleton { /** Validate the config and return wheather it is valid or not */ public Validate(): boolean { let result = true; - // console.log('specs:', this.specs); - const configSpecs = this.getSpecs(); + const configSpecs = this.getSpecs(); Object.entries(configSpecs).map(([_key, env]: [string, ConfigItem]) => { if (env && env.options) { const value = process.env[env.name] || ''; if (env.options.regexp != undefined) { - // console.log('env', env); const regex = RegExp(env.options.regexp); const testResult = regex.test(value); - // console.log( - // ` - Checking ${env.name} against ${regex} => ${testResult ? 'OK ' : 'FAIL'}\t${ - // env.options.masked ? '*****' : process.env[env.name] - // }` - // ); result = result && testResult; } result = result && (!env.options.mandatory || (env.options.mandatory && value.length > 0)); - } - // else { - // console.log('no env'); - // } + } }); return result; } @@ -148,7 +114,7 @@ export class ConfigSingleton { * Display the current ENV to ensure everything that is used matches * the expectations. */ - public dumpEnv(logger: (...args) => void): void { + public DumpEnv(logger: (...args) => void): void { const container = `${this.specs.container.prefix}_${this.specs.container.module}`; logger(`===> ${container} ENV:`); Object.entries(this.specs.config).map(([_key, env]) => { diff --git a/packages/config-singleton/src/config.ts b/packages/config-singleton/src/config.ts index ddec96d..b231755 100644 --- a/packages/config-singleton/src/config.ts +++ b/packages/config-singleton/src/config.ts @@ -1,15 +1,14 @@ -import { config as dotenvConfig } from 'dotenv' +import { config as dotenvConfig } from 'dotenv'; -dotenvConfig() +dotenvConfig(); module.exports = { - // General Polkadot config polkadot: { // This is just for you to remember. i.e. 'Crash Override' nodeName: process.env.POLKADOT_NODE_NAME, // WebSocket host:port, usually :9944. i.e. 'ws://127.0.0.1:9944' - host: process.env.POLKADOT_WS_HOST || 'ws://127.0.0.1:9944' + host: process.env.POLKADOT_WS_HOST || 'ws://127.0.0.1:9944', }, // General Matrix config @@ -25,6 +24,6 @@ module.exports = { // Base Matrix URL. i.e. 'https://matrix.org' baseUrl: process.env.MATRIX_BASE_URL || 'https://matrix.org', loginUserId: process.env.MATRIX_LOGIN_USER_ID, - loginUserPassword: process.env.MATRIX_LOGIN_USER_PASSWORD - } -} + loginUserPassword: process.env.MATRIX_LOGIN_USER_PASSWORD, + }, +}; diff --git a/packages/config-singleton/src/types.ts b/packages/config-singleton/src/types.ts index 303182d..f9f0945 100644 --- a/packages/config-singleton/src/types.ts +++ b/packages/config-singleton/src/types.ts @@ -20,7 +20,7 @@ export type ConfigDictionnarySimple = { }; /** - * + * */ // TODO: rename those export type ConfigDictionnaryRaw = { diff --git a/yarn.lock b/yarn.lock index c245e69..3ee6ef5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -572,6 +572,11 @@ resolved "https://registry.npmjs.org/@types/memoizee/-/memoizee-0.4.3.tgz#f48270d19327c1709620132cf54d598650f98492" integrity sha512-N6QT0c9ZbEKl33n1wyoTxZs4cpN+YXjs0Aqy5Qim8ipd9PBNIPqOh/p5Pixc4601tqr5GErsdxUbfqviDfubNw== +"@types/minimatch@3.0.3": + version "3.0.3" + resolved "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" + integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== + "@types/mocha@^5.2.7": version "5.2.7" resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-5.2.7.tgz#315d570ccb56c53452ff8638738df60726d5b6ea" @@ -1521,6 +1526,13 @@ babylon@^6.18.0: resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" integrity sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ== +backbone@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/backbone/-/backbone-1.4.0.tgz#54db4de9df7c3811c3f032f34749a4cd27f3bd12" + integrity sha512-RLmDrRXkVdouTg38jcgHhyQ/2zjg7a8E6sz2zxfz21Hh17xDJYUHBZimVIt5fUyS8vbfpeSmTL3gUjTEvUV3qQ== + dependencies: + underscore ">=1.8.3" + balanced-match@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" @@ -2056,6 +2068,11 @@ commander@^2.11.0, commander@^2.9.0: resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422" integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ== +commander@~2.20.3: + version "2.20.3" + resolved "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + commondir@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" @@ -3399,6 +3416,15 @@ fromentries@^1.2.0: resolved "https://registry.npmjs.org/fromentries/-/fromentries-1.2.0.tgz#e6aa06f240d6267f913cea422075ef88b63e7897" integrity sha512-33X7H/wdfO99GdRLLgkjUrD4geAFdq/Uv0kl3HD4da6HDixd2GUg8Mw7dahLCV9r/EARkmtYBB6Tch4EEokFTQ== +fs-extra@^8.1.0: + version "8.1.0" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" + integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^4.0.0" + universalify "^0.1.0" + fs-minipass@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.5.tgz#06c277218454ec288df77ada54a03b8702aacb9d" @@ -3565,7 +3591,7 @@ glob@7.1.3, glob@^7.0.5, glob@^7.1.2, glob@^7.1.3: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.1.4, glob@^7.1.6: +glob@^7.0.0, glob@^7.1.4, glob@^7.1.6: version "7.1.6" resolved "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== @@ -3636,11 +3662,27 @@ graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.4 resolved "http://52.167.60.66:8081/repository/npm-all/graceful-fs/-/graceful-fs-4.2.2.tgz#6f0952605d0140c1cfdb138ed005775b92d67b02" integrity sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q== +graceful-fs@^4.1.6, graceful-fs@^4.2.0: + version "4.2.3" + resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423" + integrity sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ== + growl@1.10.5: version "1.10.5" resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== +handlebars@^4.7.2: + version "4.7.3" + resolved "https://registry.npmjs.org/handlebars/-/handlebars-4.7.3.tgz#8ece2797826886cf8082d1726ff21d2a022550ee" + integrity sha512-SRGwSYuNfx8DwHD/6InAPzD6RgeruWLT+B8e8a7gGs8FWgHzlExpTFMEq2IA6QpAfOClpKHy6+8IqTjeBCu6Kg== + 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" @@ -3747,6 +3789,11 @@ he@1.2.0: resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== +highlight.js@^9.17.1: + version "9.18.1" + resolved "https://registry.npmjs.org/highlight.js/-/highlight.js-9.18.1.tgz#ed21aa001fe6252bb10a3d76d47573c6539fe13c" + integrity sha512-OrVKYz70LHsnCgmbXctv/bfuvntIKDz177h0Co37DQ5jamGZLVmoCVMtjMtNZY3X9DrCcKfklHPNeA0uPZhSJg== + hmac-drbg@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" @@ -3913,6 +3960,11 @@ inquirer@^6.4.1: strip-ansi "^5.1.0" through "^2.3.6" +interpret@^1.0.0: + version "1.2.0" + resolved "https://registry.npmjs.org/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" @@ -4324,6 +4376,11 @@ jquery@^3.3.1: resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.4.0.tgz#8de513fa0fa4b2c7d2e48a530e26f0596936efdf" integrity sha512-ggRCXln9zEqv6OqAGXFEcshF5dSBvCkzj6Gm2gzuR5fWawaX8t7cxKVkkygKODrDAzKdoYw3l/e3pm3vlT4IbQ== +jquery@^3.4.1: + version "3.4.1" + resolved "https://registry.npmjs.org/jquery/-/jquery-3.4.1.tgz#714f1f8d9dde4bdfa55764ba37ef214630d80ef2" + integrity sha512-36+AdBzCL+y6qjw5Tx7HgzeGCzC81MDDgaUP8ld2zhx58HdqXGoBd+tHdrBMiyjGQs0Hxs/MLZTu/eHNJJuWPw== + js-sha1@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/js-sha1/-/js-sha1-0.6.0.tgz#adbee10f0e8e18aa07cdea807cf08e9183dbc7f9" @@ -4439,6 +4496,13 @@ json5@^2.1.0: dependencies: minimist "^1.2.0" +jsonfile@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" + integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= + optionalDependencies: + graceful-fs "^4.1.6" + jsprim@^1.2.2: version "1.4.1" resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" @@ -4663,6 +4727,11 @@ lru-queue@0.1: dependencies: es5-ext "~0.10.2" +lunr@^2.3.8: + version "2.3.8" + resolved "https://registry.npmjs.org/lunr/-/lunr-2.3.8.tgz#a8b89c31f30b5a044b97d2d28e2da191b6ba2072" + integrity sha512-oxMeX/Y35PNFuZoHp+jUj5OSEmLCaIH4KTFJh7a93cHBoFmpw2IoPs22VIz7vyO2YUnx2Tn9dzIwO2P/4quIRg== + make-dir@^1.0.0: version "1.3.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" @@ -4722,6 +4791,11 @@ marked@^0.7.0: resolved "http://52.167.60.66:8081/repository/npm-all/marked/-/marked-0.7.0.tgz#b64201f051d271b1edc10a04d1ae9b74bb8e5c0e" integrity sha512-c+yYdCZJQrsRjTPhUx7VKkApw9bwDkNbHUKo1ovgcfDjb2kc8rLuRbIFyXL5WOEUwzSSKo3IXpph2K6DqB/KZg== +marked@^0.8.0: + version "0.8.0" + resolved "https://registry.npmjs.org/marked/-/marked-0.8.0.tgz#ec5c0c9b93878dc52dd54be8d0e524097bd81a99" + integrity sha512-MyUe+T/Pw4TZufHkzAfDj6HarCBWia2y27/bhuYkTaiUnfDYFnCP3KUN+9oM7Wi6JA2rymtVYbQu3spE0GCmxQ== + martinez-polygon-clipping@^0.4.3: version "0.4.3" resolved "https://registry.yarnpkg.com/martinez-polygon-clipping/-/martinez-polygon-clipping-0.4.3.tgz#a3971ddf1da147104b5d0fbbf68f728bb62885c1" @@ -4873,7 +4947,7 @@ minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= -minimatch@3.0.4, minimatch@^3.0.3, minimatch@^3.0.4: +minimatch@3.0.4, minimatch@^3.0.0, 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== @@ -4890,6 +4964,11 @@ minimist@^1.1.0, minimist@^1.1.1, minimist@^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.npmjs.org/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" + integrity sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8= + minimongo@6.0.0: version "6.0.0" resolved "http://52.167.60.66:8081/repository/npm-all/minimongo/-/minimongo-6.0.0.tgz#39af86a394646b87185ea15e91dc5801fbf8090c" @@ -5037,6 +5116,11 @@ needle@^2.2.1: iconv-lite "^0.4.4" sax "^1.2.4" +neo-async@^2.6.0: + version "2.6.1" + resolved "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c" + integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw== + next-tick@1, next-tick@^1.0.0, next-tick@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" @@ -5327,6 +5411,14 @@ onetime@^5.1.0: dependencies: mimic-fn "^2.1.0" +optimist@^0.6.1: + version "0.6.1" + resolved "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" + integrity sha1-2j6nRob6IaGaERwybpDrFaAZZoY= + dependencies: + minimist "~0.0.1" + wordwrap "~0.0.2" + optionator@^0.8.2: version "0.8.2" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" @@ -5675,7 +5767,7 @@ process-on-spawn@^1.0.0: dependencies: fromentries "^1.2.0" -progress@^2.0.0: +progress@^2.0.0, progress@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== @@ -5823,6 +5915,13 @@ readdirp@^2.0.0, readdirp@^2.2.1: micromatch "^3.1.10" readable-stream "^2.0.2" +rechoir@^0.6.2: + version "0.6.2" + resolved "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" + integrity sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q= + dependencies: + resolve "^1.1.6" + regenerate@^1.2.1: version "1.4.0" resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" @@ -6026,6 +6125,13 @@ resolve-url@^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.6: + version "1.15.1" + resolved "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz#27bdcdeffeaf2d6244b95bb0f9f4b4653451f3e8" + integrity sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w== + dependencies: + path-parse "^1.0.6" + resolve@^1.10.0, resolve@^1.10.1, resolve@^1.11.0, resolve@^1.3.2, resolve@^1.5.0, resolve@^1.6.0, resolve@^1.8.1: version "1.11.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.11.0.tgz#4014870ba296176b86343d50b60f3b50609ce232" @@ -6231,6 +6337,15 @@ shebang-regex@^3.0.0: resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== +shelljs@^0.8.3: + version "0.8.3" + resolved "https://registry.npmjs.org/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" + 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" @@ -6336,7 +6451,7 @@ source-map@^0.5.0, source-map@^0.5.6, source-map@^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.0, source-map@^0.6.1, source-map@~0.6.1: version "0.6.1" resolved "http://52.167.60.66:8081/repository/npm-all/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== @@ -6886,16 +7001,56 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= +typedoc-default-themes@^0.7.2: + version "0.7.2" + resolved "https://registry.npmjs.org/typedoc-default-themes/-/typedoc-default-themes-0.7.2.tgz#1e9896f920b58e6da0bba9d7e643738d02405a5a" + integrity sha512-fiFKlFO6VTqjcno8w6WpTsbCgXmfPHVjnLfYkmByZE7moaz+E2DSpAT+oHtDHv7E0BM5kAhPrHJELP2J2Y2T9A== + dependencies: + backbone "^1.4.0" + jquery "^3.4.1" + lunr "^2.3.8" + underscore "^1.9.1" + +typedoc@^0.16.10: + version "0.16.10" + resolved "https://registry.npmjs.org/typedoc/-/typedoc-0.16.10.tgz#217cd4243c9b4d85f49b94323c178f6d279bfb9c" + integrity sha512-Eo1+K+XTiqSi4lz5cPrV4RncLv6abjCd/jfL5tTueNZGO2p8x2yDIrXkxL9C+SoLjJm2xpMs3CXYmTnilxk1cA== + dependencies: + "@types/minimatch" "3.0.3" + fs-extra "^8.1.0" + handlebars "^4.7.2" + highlight.js "^9.17.1" + lodash "^4.17.15" + marked "^0.8.0" + minimatch "^3.0.0" + progress "^2.0.3" + shelljs "^0.8.3" + typedoc-default-themes "^0.7.2" + typescript "3.7.x" + typescript@3.5.3, typescript@^3.5.3: version "3.5.3" resolved "http://52.167.60.66:8081/repository/npm-all/typescript/-/typescript-3.5.3.tgz#c830f657f93f1ea846819e929092f5fe5983e977" integrity sha512-ACzBtm/PhXBDId6a6sDJfroT2pOWt/oOnk4/dElG5G33ZL776N3Y6/6bKZJBFpd+b05F3Ct9qDjMeJmRWtE2/g== +typescript@3.7.x: + version "3.7.5" + resolved "https://registry.npmjs.org/typescript/-/typescript-3.7.5.tgz#0692e21f65fd4108b9330238aac11dd2e177a1ae" + integrity sha512-/P5lkRXkWHNAbcJIiHPfRoKqyd7bsyCma1hZNUGfn20qm64T6ZBlrzprymeu918H+mB/0rIg2gGK/BXkhhYgBw== + uc.micro@^1.0.1, uc.micro@^1.0.5: version "1.0.6" resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.6.tgz#9c411a802a409a91fc6cf74081baba34b24499ac" integrity sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA== +uglify-js@^3.1.4: + version "3.8.0" + resolved "https://registry.npmjs.org/uglify-js/-/uglify-js-3.8.0.tgz#f3541ae97b2f048d7e7e3aa4f39fd8a1f5d7a805" + integrity sha512-ugNSTT8ierCsDHso2jkBHXYrU8Y5/fY2ZUprfrJUiD7YpuFvV4jODLFmb3h4btQjqr5Nh4TX4XtgDfCU1WdioQ== + dependencies: + commander "~2.20.3" + source-map "~0.6.1" + undefsafe@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/undefsafe/-/undefsafe-2.0.2.tgz#225f6b9e0337663e0d8e7cfd686fc2836ccace76" @@ -6903,6 +7058,11 @@ undefsafe@^2.0.2: dependencies: debug "^2.2.0" +underscore@>=1.8.3, underscore@^1.9.1: + version "1.9.2" + resolved "https://registry.npmjs.org/underscore/-/underscore-1.9.2.tgz#0c8d6f536d6f378a5af264a72f7bec50feb7cf2f" + integrity sha512-D39qtimx0c1fI3ya1Lnhk3E9nONswSKhnffBI0gME9C99fYOkNi04xs8K6pePLhvl1frbDemkaBQ5ikWllR2HQ== + underscore@~1.4.4: version "1.4.4" resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.4.4.tgz#61a6a32010622afa07963bf325203cf12239d604" @@ -6940,6 +7100,11 @@ unique-string@^1.0.0: dependencies: crypto-random-string "^1.0.0" +universalify@^0.1.0: + version "0.1.2" + resolved "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== + unorm@^1.3.3: version "1.5.0" resolved "https://registry.yarnpkg.com/unorm/-/unorm-1.5.0.tgz#01fa9b76f1c60f7916834605c032aa8962c3f00a" @@ -7106,6 +7271,11 @@ word-wrap@^1.2.3: resolved "http://52.167.60.66:8081/repository/npm-all/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.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" + integrity sha1-o9XabNXAvAAI03I0u68b7WMFkQc= + wordwrap@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" -- GitLab From 64fd274e7d457315f51b66e6105f36c8af9f1a52 Mon Sep 17 00:00:00 2001 From: Will Date: Thu, 27 Feb 2020 09:39:46 +0100 Subject: [PATCH 37/86] Package cleanup --- packages/config-singleton/package.json | 13 +- yarn.lock | 3116 ++++++++++++------------ 2 files changed, 1518 insertions(+), 1611 deletions(-) diff --git a/packages/config-singleton/package.json b/packages/config-singleton/package.json index 8264a53..34c335c 100644 --- a/packages/config-singleton/package.json +++ b/packages/config-singleton/package.json @@ -14,8 +14,12 @@ "author": "chevdor", "license": "ISC", "keywords": [ - "blockchain", - "NodeJS" + "config", + "configuration", + "manager", + "env", + "envvar", + "dotenv" ], "devDependencies": { "@types/dotenv": "^6.1.1", @@ -24,7 +28,6 @@ "@typescript-eslint/parser": "2.0.0", "chai": "4.2.0", "chai-http": "4.3.0", - "dotenv": "8.1.0", "eslint": "6.2.0", "eslint-config-prettier": "6.1.0", "eslint-config-standard": "14.0.0", @@ -53,5 +56,9 @@ "engines": { "node": ">=10.13.0", "yarn": "^1.10.1" + }, + "dependencies": { + "@babel/runtime": "^7.8.3", + "dotenv": "8.2.0" } } diff --git a/yarn.lock b/yarn.lock index 3ee6ef5..5467681 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,41 +2,14 @@ # yarn lockfile v1 -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.5.5": - version "7.5.5" - resolved "http://52.167.60.66:8081/repository/npm-all/@babel/code-frame/-/code-frame-7.5.5.tgz#bc0782f6d69f7b7d49531219699b988f669a8f9d" - integrity sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw== - dependencies: - "@babel/highlight" "^7.0.0" - -"@babel/code-frame@^7.8.3": +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.8.3": version "7.8.3" resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz#33e25903d7481181534e12ec0a25f16b6fcf419e" integrity sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g== dependencies: "@babel/highlight" "^7.8.3" -"@babel/core@^7.4.5": - version "7.5.5" - resolved "http://52.167.60.66:8081/repository/npm-all/@babel/core/-/core-7.5.5.tgz#17b2686ef0d6bc58f963dddd68ab669755582c30" - integrity sha512-i4qoSr2KTtce0DmkuuQBV4AuQgGPUcPXMr9L5MyYAtk06z068lQ10a4O009fe5OB/DfNV+h+qqT7ddNV8UnRjg== - dependencies: - "@babel/code-frame" "^7.5.5" - "@babel/generator" "^7.5.5" - "@babel/helpers" "^7.5.5" - "@babel/parser" "^7.5.5" - "@babel/template" "^7.4.4" - "@babel/traverse" "^7.5.5" - "@babel/types" "^7.5.5" - convert-source-map "^1.1.0" - debug "^4.1.0" - json5 "^2.1.0" - lodash "^4.17.13" - resolve "^1.3.2" - semver "^5.4.1" - source-map "^0.5.0" - -"@babel/core@^7.7.5": +"@babel/core@^7.4.5", "@babel/core@^7.7.5": version "7.8.4" resolved "https://registry.npmjs.org/@babel/core/-/core-7.8.4.tgz#d496799e5c12195b3602d0fddd77294e3e38e80e" integrity sha512-0LiLrB2PwrVI+a2/IEskBopDYSd8BCb3rOvH7D5tzoWd696TBEduBvuLVm4Nx6rltrLZqvI3MCalB2K2aVzQjA== @@ -57,17 +30,6 @@ semver "^5.4.1" source-map "^0.5.0" -"@babel/generator@^7.5.5": - version "7.5.5" - resolved "http://52.167.60.66:8081/repository/npm-all/@babel/generator/-/generator-7.5.5.tgz#873a7f936a3c89491b43536d12245b626664e3cf" - integrity sha512-ETI/4vyTSxTzGnU2c49XHv2zhExkv9JHLTwDAFz85kmcwuShvYG2H08FwgIguQf4JC75CBnXAUM5PqeF4fj0nQ== - dependencies: - "@babel/types" "^7.5.5" - jsesc "^2.5.1" - lodash "^4.17.13" - source-map "^0.5.0" - trim-right "^1.0.1" - "@babel/generator@^7.8.4": version "7.8.4" resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.8.4.tgz#35bbc74486956fe4251829f9f6c48330e8d0985e" @@ -78,15 +40,6 @@ lodash "^4.17.13" source-map "^0.5.0" -"@babel/helper-function-name@^7.1.0": - version "7.1.0" - resolved "http://52.167.60.66:8081/repository/npm-all/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz#a0ceb01685f73355d4360c1247f582bfafc8ff53" - integrity sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw== - dependencies: - "@babel/helper-get-function-arity" "^7.0.0" - "@babel/template" "^7.1.0" - "@babel/types" "^7.0.0" - "@babel/helper-function-name@^7.8.3": version "7.8.3" resolved "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz#eeeb665a01b1f11068e9fb86ad56a1cb1a824cca" @@ -96,12 +49,6 @@ "@babel/template" "^7.8.3" "@babel/types" "^7.8.3" -"@babel/helper-get-function-arity@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz#83572d4320e2a4657263734113c42868b64e49c3" - dependencies: - "@babel/types" "^7.0.0" - "@babel/helper-get-function-arity@^7.8.3": version "7.8.3" resolved "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz#b894b947bd004381ce63ea1db9f08547e920abd5" @@ -121,13 +68,6 @@ resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz#9ea293be19babc0f52ff8ca88b34c3611b208670" integrity sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ== -"@babel/helper-split-export-declaration@^7.4.4": - version "7.4.4" - resolved "http://52.167.60.66:8081/repository/npm-all/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz#ff94894a340be78f53f06af038b205c49d993677" - integrity sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q== - dependencies: - "@babel/types" "^7.4.4" - "@babel/helper-split-export-declaration@^7.8.3": version "7.8.3" resolved "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz#31a9f30070f91368a7182cf05f831781065fc7a9" @@ -135,15 +75,6 @@ dependencies: "@babel/types" "^7.8.3" -"@babel/helpers@^7.5.5": - version "7.5.5" - resolved "http://52.167.60.66:8081/repository/npm-all/@babel/helpers/-/helpers-7.5.5.tgz#63908d2a73942229d1e6685bc2a0e730dde3b75e" - integrity sha512-nRq2BUhxZFnfEn/ciJuhklHvFOqjJUD5wpx+1bxUF2axL9C+v4DE/dmp5sT2dKnpOs4orZWzpAZqlCy8QqE/7g== - dependencies: - "@babel/template" "^7.4.4" - "@babel/traverse" "^7.5.5" - "@babel/types" "^7.5.5" - "@babel/helpers@^7.8.4": version "7.8.4" resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.8.4.tgz#754eb3ee727c165e0a240d6c207de7c455f36f73" @@ -153,15 +84,6 @@ "@babel/traverse" "^7.8.4" "@babel/types" "^7.8.3" -"@babel/highlight@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0.tgz#f710c38c8d458e6dd9a201afb637fcb781ce99e4" - integrity sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw== - dependencies: - chalk "^2.0.0" - esutils "^2.0.2" - js-tokens "^4.0.0" - "@babel/highlight@^7.8.3": version "7.8.3" resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz#28f173d04223eaaa59bc1d439a3836e6d1265797" @@ -171,12 +93,7 @@ esutils "^2.0.2" js-tokens "^4.0.0" -"@babel/parser@^7.0.0", "@babel/parser@^7.4.4", "@babel/parser@^7.5.5": - version "7.5.5" - resolved "http://52.167.60.66:8081/repository/npm-all/@babel/parser/-/parser-7.5.5.tgz#02f077ac8817d3df4a832ef59de67565e71cca4b" - integrity sha512-E5BN68cqR7dhKan1SfqgPGhQ178bkVKpXTPEXnFJBrEt8/DKRZlybmy+IgYLTeN7tp1R5Ccmbm2rBk17sHYU3g== - -"@babel/parser@^7.7.5", "@babel/parser@^7.8.3", "@babel/parser@^7.8.4": +"@babel/parser@^7.0.0", "@babel/parser@^7.4.4", "@babel/parser@^7.7.5", "@babel/parser@^7.8.3", "@babel/parser@^7.8.4": version "7.8.4" resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.8.4.tgz#d1dbe64691d60358a974295fa53da074dd2ce8e8" integrity sha512-0fKu/QqildpXmPVaRBoXOlyBb3MC+J0A66x97qEfLOMkn3u6nfY5esWogQwi/K0BjASYy4DbnsEWnpNL6qT5Mw== @@ -192,21 +109,12 @@ semver "^5.5.1" "@babel/runtime@^7.7.7", "@babel/runtime@^7.8.3": - version "7.8.3" - resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.8.3.tgz#0811944f73a6c926bb2ad35e918dcc1bfab279f1" - integrity sha512-fVHx1rzEmwB130VTkLnxR+HmxcTjGzH12LYQcFFoBwakMd3aOMD4OsRN7tGG/UOYE2ektgFrS8uACAoRk1CY0w== + version "7.8.4" + resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.8.4.tgz#d79f5a2040f7caa24d53e563aad49cbc05581308" + integrity sha512-neAp3zt80trRVBI1x0azq6c57aNBqYZH8KhMm3TaB7wEI5Q4A2SHfBHE8w9gOhI/lrqxtEbXZgQIrHP+wvSGwQ== dependencies: regenerator-runtime "^0.13.2" -"@babel/template@^7.1.0", "@babel/template@^7.4.4": - version "7.4.4" - resolved "http://52.167.60.66:8081/repository/npm-all/@babel/template/-/template-7.4.4.tgz#f4b88d1225689a08f5bc3a17483545be9e4ed237" - integrity sha512-CiGzLN9KgAvgZsnivND7rkA+AeJ9JB0ciPOD4U59GKbQP2iQl+olF1l76kJOupqidozfZ32ghwBEJDhnk9MEcw== - dependencies: - "@babel/code-frame" "^7.0.0" - "@babel/parser" "^7.4.4" - "@babel/types" "^7.4.4" - "@babel/template@^7.7.4", "@babel/template@^7.8.3": version "7.8.3" resolved "https://registry.npmjs.org/@babel/template/-/template-7.8.3.tgz#e02ad04fe262a657809327f578056ca15fd4d1b8" @@ -216,22 +124,7 @@ "@babel/parser" "^7.8.3" "@babel/types" "^7.8.3" -"@babel/traverse@^7.0.0", "@babel/traverse@^7.5.5": - version "7.5.5" - resolved "http://52.167.60.66:8081/repository/npm-all/@babel/traverse/-/traverse-7.5.5.tgz#f664f8f368ed32988cd648da9f72d5ca70f165bb" - integrity sha512-MqB0782whsfffYfSjH4TM+LMjrJnhCNEDMDIjeTpl+ASaUvxcjoiVCo/sM1GhS1pHOXYfWVCYneLjMckuUxDaQ== - dependencies: - "@babel/code-frame" "^7.5.5" - "@babel/generator" "^7.5.5" - "@babel/helper-function-name" "^7.1.0" - "@babel/helper-split-export-declaration" "^7.4.4" - "@babel/parser" "^7.5.5" - "@babel/types" "^7.5.5" - debug "^4.1.0" - globals "^11.1.0" - lodash "^4.17.13" - -"@babel/traverse@^7.7.4", "@babel/traverse@^7.8.4": +"@babel/traverse@^7.0.0", "@babel/traverse@^7.7.4", "@babel/traverse@^7.8.4": version "7.8.4" resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.8.4.tgz#f0845822365f9d5b0e312ed3959d3f827f869e3c" integrity sha512-NGLJPZwnVEyBPLI+bl9y9aSnxMhsKz42so7ApAv9D+b4vAFPpY013FTS9LdKxcABoIYFU52HcYga1pPlx454mg== @@ -246,16 +139,7 @@ globals "^11.1.0" lodash "^4.17.13" -"@babel/types@^7.0.0", "@babel/types@^7.4.4", "@babel/types@^7.5.5": - version "7.5.5" - resolved "http://52.167.60.66:8081/repository/npm-all/@babel/types/-/types-7.5.5.tgz#97b9f728e182785909aa4ab56264f090a028d18a" - integrity sha512-s63F9nJioLqOlW3UkyMd+BYhXt44YuaFm/VV0VwuteqjYwRrObkU7ra9pY4wAJR3oXi8hJrMcrcJdO/HH33vtw== - dependencies: - esutils "^2.0.2" - lodash "^4.17.13" - to-fast-properties "^2.0.0" - -"@babel/types@^7.8.3": +"@babel/types@^7.0.0", "@babel/types@^7.8.3": version "7.8.3" resolved "https://registry.npmjs.org/@babel/types/-/types-7.8.3.tgz#5a383dffa5416db1b73dedffd311ffd0788fb31c" integrity sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg== @@ -407,7 +291,7 @@ "@turf/bbox@*", "@turf/bbox@6.x": version "6.0.1" - resolved "https://registry.yarnpkg.com/@turf/bbox/-/bbox-6.0.1.tgz#b966075771475940ee1c16be2a12cf389e6e923a" + resolved "https://registry.npmjs.org/@turf/bbox/-/bbox-6.0.1.tgz#b966075771475940ee1c16be2a12cf389e6e923a" integrity sha512-EGgaRLettBG25Iyx7VyUINsPpVj1x3nFQFiGS3ER8KCI1MximzNLsam3eXRabqQDjyAKyAE1bJ4EZEpGvspQxw== dependencies: "@turf/helpers" "6.x" @@ -415,7 +299,7 @@ "@turf/boolean-crosses@^6.0.1": version "6.0.1" - resolved "https://registry.yarnpkg.com/@turf/boolean-crosses/-/boolean-crosses-6.0.1.tgz#4458cce89647c477602b3f8dc68e4caa6aa0d23f" + resolved "https://registry.npmjs.org/@turf/boolean-crosses/-/boolean-crosses-6.0.1.tgz#4458cce89647c477602b3f8dc68e4caa6aa0d23f" integrity sha512-t7F7joMMI0s2y/HOr3r1t74BV37TJZj+nNUnM2rMIvGUDKHdEhBcQYeh+bvs+oyv/laOyqTLT5ds6hkXd4kHgQ== dependencies: "@turf/boolean-point-in-polygon" "6.x" @@ -426,7 +310,7 @@ "@turf/boolean-point-in-polygon@6.x", "@turf/boolean-point-in-polygon@^6.0.1": version "6.0.1" - resolved "https://registry.yarnpkg.com/@turf/boolean-point-in-polygon/-/boolean-point-in-polygon-6.0.1.tgz#5836677afd77d2ee391af0056a0c29b660edfa32" + resolved "https://registry.npmjs.org/@turf/boolean-point-in-polygon/-/boolean-point-in-polygon-6.0.1.tgz#5836677afd77d2ee391af0056a0c29b660edfa32" integrity sha512-FKLOZ124vkJhjzNSDcqpwp2NvfnsbYoUOt5iAE7uskt4svix5hcjIEgX9sELFTJpbLGsD1mUbKdfns8tZxcMNg== dependencies: "@turf/helpers" "6.x" @@ -434,7 +318,7 @@ "@turf/boolean-point-on-line@6.x": version "6.0.1" - resolved "https://registry.yarnpkg.com/@turf/boolean-point-on-line/-/boolean-point-on-line-6.0.1.tgz#d943c242a5fdcde03f8ad0221750fd1aacf06223" + resolved "https://registry.npmjs.org/@turf/boolean-point-on-line/-/boolean-point-on-line-6.0.1.tgz#d943c242a5fdcde03f8ad0221750fd1aacf06223" integrity sha512-Vl724Tzh4CF/13kgblOAQnMcHagromCP1EfyJ9G/8SxpSoTYeY2G6FmmcpbW51GqKxC7xgM9+Pck50dun7oYkg== dependencies: "@turf/helpers" "6.x" @@ -442,7 +326,7 @@ "@turf/boolean-within@^6.0.1": version "6.0.1" - resolved "https://registry.yarnpkg.com/@turf/boolean-within/-/boolean-within-6.0.1.tgz#eac2ebe4962e840dd16f0dc56486469eeb92975f" + resolved "https://registry.npmjs.org/@turf/boolean-within/-/boolean-within-6.0.1.tgz#eac2ebe4962e840dd16f0dc56486469eeb92975f" integrity sha512-fAzDoWzA4UvUE99G8VqQjVg+PSrPBACM9+SLcl0vkbxIhTjoknpTUwSfH86EgKiCkTDttiDIs/q27xZ4H+mgLQ== dependencies: "@turf/bbox" "6.x" @@ -453,12 +337,12 @@ "@turf/helpers@6.x": version "6.1.4" - resolved "https://registry.yarnpkg.com/@turf/helpers/-/helpers-6.1.4.tgz#d6fd7ebe6782dd9c87dca5559bda5c48ae4c3836" + resolved "https://registry.npmjs.org/@turf/helpers/-/helpers-6.1.4.tgz#d6fd7ebe6782dd9c87dca5559bda5c48ae4c3836" integrity sha512-vJvrdOZy1ngC7r3MDA7zIGSoIgyrkWcGnNIEaqn/APmw+bVLF2gAW7HIsdTxd12s5wQMqEpqIQrmrbRRZ0xC7g== "@turf/intersect@^6.1.3": version "6.1.3" - resolved "https://registry.yarnpkg.com/@turf/intersect/-/intersect-6.1.3.tgz#c6574a2f00a38df6f81fc08d8103ad5295b7b6bc" + resolved "https://registry.npmjs.org/@turf/intersect/-/intersect-6.1.3.tgz#c6574a2f00a38df6f81fc08d8103ad5295b7b6bc" integrity sha512-SeAJG/zPRRTeyK2OifkPoyLq60q8tv8prpPIH3R8ZhyF4MdLOnMv5MURaQ6kQd+3UTDrL+pYm6rqbPvln1zqIw== dependencies: "@turf/helpers" "6.x" @@ -467,14 +351,14 @@ "@turf/invariant@6.x": version "6.1.2" - resolved "https://registry.yarnpkg.com/@turf/invariant/-/invariant-6.1.2.tgz#6013ed6219f9ac2edada9b31e1dfa5918eb0a2f7" + resolved "https://registry.npmjs.org/@turf/invariant/-/invariant-6.1.2.tgz#6013ed6219f9ac2edada9b31e1dfa5918eb0a2f7" integrity sha512-WU08Ph8j0J2jVGlQCKChXoCtI50BB3yEH21V++V0T4cR1T27HKCxkehV2sYMwTierfMBgjwSwDIsxnR4/2mWXg== dependencies: "@turf/helpers" "6.x" "@turf/line-intersect@6.x": version "6.0.2" - resolved "https://registry.yarnpkg.com/@turf/line-intersect/-/line-intersect-6.0.2.tgz#b45b7a4e7e08c39a0e4e91099580ed377ef7335f" + resolved "https://registry.npmjs.org/@turf/line-intersect/-/line-intersect-6.0.2.tgz#b45b7a4e7e08c39a0e4e91099580ed377ef7335f" integrity sha512-pfL/lBu7ukBPdTjvSCmcNUzZ83V4R95htwqs5NqU8zeS4R+5KTwacbrOYKztjpmHBwUmPEIIpSbqkUoD0Fp7kg== dependencies: "@turf/helpers" "6.x" @@ -485,7 +369,7 @@ "@turf/line-segment@6.x": version "6.0.2" - resolved "https://registry.yarnpkg.com/@turf/line-segment/-/line-segment-6.0.2.tgz#e280bcde70d28b694028ec1623dc406c928e59b6" + resolved "https://registry.npmjs.org/@turf/line-segment/-/line-segment-6.0.2.tgz#e280bcde70d28b694028ec1623dc406c928e59b6" integrity sha512-8AkzDHoNw3X68y115josal+lvdAi4b2P1K0YNTKGyLRBaUhPXVSuMBpMd53FRF1hYEb9UJgMbugF9ZE7m5L6zg== dependencies: "@turf/helpers" "6.x" @@ -494,29 +378,22 @@ "@turf/meta@6.x": version "6.0.2" - resolved "https://registry.yarnpkg.com/@turf/meta/-/meta-6.0.2.tgz#eb92951126d24a613ac1b7b99d733fcc20fd30cf" + resolved "https://registry.npmjs.org/@turf/meta/-/meta-6.0.2.tgz#eb92951126d24a613ac1b7b99d733fcc20fd30cf" integrity sha512-VA7HJkx7qF1l3+GNGkDVn2oXy4+QoLP6LktXAaZKjuT1JI0YESat7quUkbCMy4zP9lAUuvS4YMslLyTtr919FA== dependencies: "@turf/helpers" "6.x" "@turf/polygon-to-line@6.x": version "6.0.3" - resolved "https://registry.yarnpkg.com/@turf/polygon-to-line/-/polygon-to-line-6.0.3.tgz#a7c5416f61651d5d25ff51ee006522725cb1adf1" + resolved "https://registry.npmjs.org/@turf/polygon-to-line/-/polygon-to-line-6.0.3.tgz#a7c5416f61651d5d25ff51ee006522725cb1adf1" integrity sha512-cJUy7VYLAhgnTBOtYFjNzh5bSlAS/qM8gUHXRGrIxI22RUJk4FXs/X2MEJ4Ki2flCiSeOjRIUEawEslNe7w7RA== dependencies: "@turf/helpers" "6.x" "@turf/invariant" "6.x" -"@types/base-x@*": - version "3.0.0" - resolved "http://52.167.60.66:8081/repository/npm-all/@types/base-x/-/base-x-3.0.0.tgz#a1365259d1d3fa3ff973ab543192a6bdd4cb2f90" - integrity sha512-vnqSlpsv9uFX5/z8GyKWAfWHhLGJDBkrgRRsnxlsX23DHOlNyqP/eHQiv4TwnYcZULzQIxaWA/xRWU9Dyy4qzw== - dependencies: - "@types/node" "*" - "@types/bip39@^2.4.2": version "2.4.2" - resolved "https://registry.yarnpkg.com/@types/bip39/-/bip39-2.4.2.tgz#f5d6617212be496bb998d3969f657f77a10c5287" + resolved "https://registry.npmjs.org/@types/bip39/-/bip39-2.4.2.tgz#f5d6617212be496bb998d3969f657f77a10c5287" integrity sha512-Vo9lqOIRq8uoIzEVrV87ZvcIM0PN9t0K3oYZ/CS61fIYKCBdOIM7mlWzXuRvSXrDtVa1uUO2w1cdfufxTC0bzg== dependencies: "@types/node" "*" @@ -529,16 +406,16 @@ "@types/node" "*" "@types/bs58@^4.0.0": - version "4.0.0" - resolved "http://52.167.60.66:8081/repository/npm-all/@types/bs58/-/bs58-4.0.0.tgz#baec75cb007b419ede3ec6b3410d2c8f14c92fc5" - integrity sha512-gYX+MHD4G/R+YGYwdhG5gbJj4LsEQGr3Vg6gVDAbe7xC5Bn8dNNG2Lpo6uDX/rT5dE7VBj0rGEFuV8L0AEx4Rg== + version "4.0.1" + resolved "https://registry.npmjs.org/@types/bs58/-/bs58-4.0.1.tgz#3d51222aab067786d3bc3740a84a7f5a0effaa37" + integrity sha512-yfAgiWgVLjFCmRv8zAcOIHywYATEwiTVccTLnRp6UxTNavT55M9d/uhK3T03St/+8/z/wW+CRjGKUNmEqoHHCA== dependencies: - "@types/base-x" "*" + base-x "^3.0.6" "@types/chai@4", "@types/chai@^4.1.7": - version "4.1.7" - resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.1.7.tgz#1b8e33b61a8c09cbe1f85133071baa0dbf9fa71a" - integrity sha512-2Y8uPt0/jwjhQ6EiluT0XCri1Dbplr0ZxfFXUz+ye13gaqE8u5gL5ppao1JrUYr9cIip5S6MvQzBS7Kke7U9VA== + version "4.2.9" + resolved "https://registry.npmjs.org/@types/chai/-/chai-4.2.9.tgz#194332625ed2ae914aef00b8d5ca3b77e7924cc6" + integrity sha512-NeXgZj+MFL4izGqA4sapdYzkzQG+MtGra9vhQ58dnmDY++VgJaRUws+aLVV5zRJCYJl/8s9IjMmhiUw1WsKSmw== "@types/color-name@^1.1.1": version "1.1.1" @@ -547,25 +424,25 @@ "@types/cookiejar@*": version "2.1.1" - resolved "https://registry.yarnpkg.com/@types/cookiejar/-/cookiejar-2.1.1.tgz#90b68446364baf9efd8e8349bb36bd3852b75b80" + resolved "https://registry.npmjs.org/@types/cookiejar/-/cookiejar-2.1.1.tgz#90b68446364baf9efd8e8349bb36bd3852b75b80" integrity sha512-aRnpPa7ysx3aNW60hTiCtLHlQaIFsXFCgQlpakNgDNVFzbtusSY8PwjAQgRWfSk0ekNoBjO51eQRB6upA9uuyw== "@types/dotenv@^6.1.1": version "6.1.1" - resolved "https://registry.yarnpkg.com/@types/dotenv/-/dotenv-6.1.1.tgz#f7ce1cc4fe34f0a4373ba99fefa437b0bec54b46" + resolved "https://registry.npmjs.org/@types/dotenv/-/dotenv-6.1.1.tgz#f7ce1cc4fe34f0a4373ba99fefa437b0bec54b46" integrity sha512-ftQl3DtBvqHl9L16tpqqzA4YzCSXZfi7g8cQceTz5rOlYtk/IZbFjAv3mLOQlNIgOaylCQWQoBdDQHPgEBJPHg== dependencies: "@types/node" "*" "@types/eslint-visitor-keys@^1.0.0": version "1.0.0" - resolved "https://registry.yarnpkg.com/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#1ee30d79544ca84d68d4b3cdb0af4f205663dd2d" + resolved "https://registry.npmjs.org/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#1ee30d79544ca84d68d4b3cdb0af4f205663dd2d" integrity sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag== "@types/json-schema@^7.0.3": - version "7.0.3" - resolved "http://52.167.60.66:8081/repository/npm-all/@types/json-schema/-/json-schema-7.0.3.tgz#bdfd69d61e464dcc81b25159c270d75a73c1a636" - integrity sha512-Il2DtDVRGDcqjDtE+rF8iqg1CArehSK84HZJCT7AMITlyXRBpuPhqGLDQMowraqqu1coEaimg4ZOqggt6L6L+A== + version "7.0.4" + resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.4.tgz#38fd73ddfd9b55abb1e1b2ed578cb55bd7b7d339" + integrity sha512-8+KAKzEvSUdeo+kmqnKrqgeE+LcA0tjYWFY7RPProVYwnqDjukzO+3b6dLD56rYX5TdWejnEOLJYOIeh4CXKuA== "@types/memoizee@^0.4.3": version "0.4.3" @@ -579,31 +456,31 @@ "@types/mocha@^5.2.7": version "5.2.7" - resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-5.2.7.tgz#315d570ccb56c53452ff8638738df60726d5b6ea" + resolved "https://registry.npmjs.org/@types/mocha/-/mocha-5.2.7.tgz#315d570ccb56c53452ff8638738df60726d5b6ea" integrity sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ== "@types/node@*": - version "11.13.7" - resolved "https://registry.yarnpkg.com/@types/node/-/node-11.13.7.tgz#85dbb71c510442d00c0631f99dae957ce44fd104" - integrity sha512-suFHr6hcA9mp8vFrZTgrmqW2ZU3mbWsryQtQlY/QvwTISCw7nw/j+bCQPPohqmskhmqa5wLNuMHTTsc+xf1MQg== + version "13.7.6" + resolved "https://registry.npmjs.org/@types/node/-/node-13.7.6.tgz#cb734a7c191472ae6a2b3a502b4dfffcea974113" + integrity sha512-eyK7MWD0R1HqVTp+PtwRgFeIsemzuj4gBFSQxfPHY5iMjS7474e5wq+VFgTcdpyHeNxyKSaetYAjdMLJlKoWqA== "@types/pbkdf2@^3.0.0": version "3.0.0" - resolved "https://registry.yarnpkg.com/@types/pbkdf2/-/pbkdf2-3.0.0.tgz#5d9ca5f12a78a08cc89ad72883ad4a30af359229" + resolved "https://registry.npmjs.org/@types/pbkdf2/-/pbkdf2-3.0.0.tgz#5d9ca5f12a78a08cc89ad72883ad4a30af359229" integrity sha512-6J6MHaAlBJC/eVMy9jOwj9oHaprfutukfW/Dyt0NEnpQ/6HN6YQrpvLwzWdWDeWZIdenjGHlbYDzyEODO5Z+2Q== dependencies: "@types/node" "*" "@types/secp256k1@^3.5.0": - version "3.5.0" - resolved "https://registry.yarnpkg.com/@types/secp256k1/-/secp256k1-3.5.0.tgz#0f3baf16b07488c6da2633a63b4160bcf8d0fd5b" - integrity sha512-ZE39QhkIaNK6xbKIp1VLN5O36r97LuslLmRnjAcT0sVDxcfvrk3zqp/VnIfmGza7J6jDxR8dIai3hsCxPYglPA== + version "3.5.3" + resolved "https://registry.npmjs.org/@types/secp256k1/-/secp256k1-3.5.3.tgz#57ebfdd19d476de3ff13758cf7b6d9e420d54c19" + integrity sha512-NGcsPDR0P+Q71O63e2ayshmiZGAwCOa/cLJzOIuhOiDvmbvrCIiVtEpqdCJGogG92Bnr6tw/6lqVBsRMEl15OQ== dependencies: "@types/node" "*" "@types/superagent@^3.8.3": version "3.8.7" - resolved "https://registry.yarnpkg.com/@types/superagent/-/superagent-3.8.7.tgz#1f1ed44634d5459b3a672eb7235a8e7cfd97704c" + resolved "https://registry.npmjs.org/@types/superagent/-/superagent-3.8.7.tgz#1f1ed44634d5459b3a672eb7235a8e7cfd97704c" integrity sha512-9KhCkyXv268A2nZ1Wvu7rQWM+BmdYUVkycFeNnYrUL5Zwu7o8wPQ3wBfW59dDP+wuoxw0ww8YKgTNv8j/cgscA== dependencies: "@types/cookiejar" "*" @@ -611,14 +488,14 @@ "@types/xxhashjs@^0.2.1": version "0.2.1" - resolved "https://registry.yarnpkg.com/@types/xxhashjs/-/xxhashjs-0.2.1.tgz#6cd06b2eca5228765ff45960cf2c2a557ddf109a" + resolved "https://registry.npmjs.org/@types/xxhashjs/-/xxhashjs-0.2.1.tgz#6cd06b2eca5228765ff45960cf2c2a557ddf109a" integrity sha512-Akm13wkwsQylVnBokl/aiKLtSxndSjfgTjdvmSxXNehYy4NymwdfdJHwGhpV54wcYfmOByOp3ak8AGdUlvp0sA== dependencies: "@types/node" "*" "@typescript-eslint/eslint-plugin@2.0.0": version "2.0.0" - resolved "http://52.167.60.66:8081/repository/npm-all/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.0.0.tgz#609a5d7b00ce21a6f94d7ef282eba9da57ca1e42" + resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.0.0.tgz#609a5d7b00ce21a6f94d7ef282eba9da57ca1e42" integrity sha512-Mo45nxTTELODdl7CgpZKJISvLb+Fu64OOO2ZFc2x8sYSnUpFrBUW3H+H/ZGYmEkfnL6VkdtOSxgdt+Av79j0sA== dependencies: "@typescript-eslint/experimental-utils" "2.0.0" @@ -627,18 +504,38 @@ regexpp "^2.0.1" tsutils "^3.14.0" +"@typescript-eslint/eslint-plugin@2.21.0": + version "2.21.0" + resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.21.0.tgz#a34de84a0791cae0357c4dda805c5b4e8203b6c6" + integrity sha512-b5jjjDMxzcjh/Sbjuo7WyhrQmVJg0WipTHQgXh5Xwx10uYm6nPWqN1WGOsaNq4HR3Zh4wUx4IRQdDkCHwyewyw== + dependencies: + "@typescript-eslint/experimental-utils" "2.21.0" + eslint-utils "^1.4.3" + functional-red-black-tree "^1.0.1" + regexpp "^3.0.0" + tsutils "^3.17.1" + "@typescript-eslint/experimental-utils@2.0.0": version "2.0.0" - resolved "http://52.167.60.66:8081/repository/npm-all/@typescript-eslint/experimental-utils/-/experimental-utils-2.0.0.tgz#f3d298bb411357f35c4184e24280b256b6321949" + resolved "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-2.0.0.tgz#f3d298bb411357f35c4184e24280b256b6321949" integrity sha512-XGJG6GNBXIEx/mN4eTRypN/EUmsd0VhVGQ1AG+WTgdvjHl0G8vHhVBHrd/5oI6RRYBRnedNymSYWW1HAdivtmg== dependencies: "@types/json-schema" "^7.0.3" "@typescript-eslint/typescript-estree" "2.0.0" eslint-scope "^4.0.0" +"@typescript-eslint/experimental-utils@2.21.0": + version "2.21.0" + resolved "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-2.21.0.tgz#71de390a3ec00b280b69138d80733406e6e86bfa" + integrity sha512-olKw9JP/XUkav4lq0I7S1mhGgONJF9rHNhKFn9wJlpfRVjNo3PPjSvybxEldvCXnvD+WAshSzqH5cEjPp9CsBA== + dependencies: + "@types/json-schema" "^7.0.3" + "@typescript-eslint/typescript-estree" "2.21.0" + eslint-scope "^5.0.0" + "@typescript-eslint/parser@2.0.0": version "2.0.0" - resolved "http://52.167.60.66:8081/repository/npm-all/@typescript-eslint/parser/-/parser-2.0.0.tgz#4273bb19d03489daf8372cdaccbc8042e098178f" + resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-2.0.0.tgz#4273bb19d03489daf8372cdaccbc8042e098178f" integrity sha512-ibyMBMr0383ZKserIsp67+WnNVoM402HKkxqXGlxEZsXtnGGurbnY90pBO3e0nBUM7chEEOcxUhgw9aPq7fEBA== dependencies: "@types/eslint-visitor-keys" "^1.0.0" @@ -646,38 +543,51 @@ "@typescript-eslint/typescript-estree" "2.0.0" eslint-visitor-keys "^1.0.0" +"@typescript-eslint/parser@2.21.0": + version "2.21.0" + resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-2.21.0.tgz#4f200995517c3d5fc5ef51b17527bc948992e438" + integrity sha512-VrmbdrrrvvI6cPPOG7uOgGUFXNYTiSbnRq8ZMyuGa4+qmXJXVLEEz78hKuqupvkpwJQNk1Ucz1TenrRP90gmBg== + dependencies: + "@types/eslint-visitor-keys" "^1.0.0" + "@typescript-eslint/experimental-utils" "2.21.0" + "@typescript-eslint/typescript-estree" "2.21.0" + eslint-visitor-keys "^1.1.0" + "@typescript-eslint/typescript-estree@2.0.0": version "2.0.0" - resolved "http://52.167.60.66:8081/repository/npm-all/@typescript-eslint/typescript-estree/-/typescript-estree-2.0.0.tgz#c9f6c0efd1b11475540d6a55dc973cc5b9a67e77" + resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-2.0.0.tgz#c9f6c0efd1b11475540d6a55dc973cc5b9a67e77" integrity sha512-NXbmzA3vWrSgavymlzMWNecgNOuiMMp62MO3kI7awZRLRcsA1QrYWo6q08m++uuAGVbXH/prZi2y1AWuhSu63w== dependencies: lodash.unescape "4.0.1" semver "^6.2.0" +"@typescript-eslint/typescript-estree@2.21.0": + version "2.21.0" + resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-2.21.0.tgz#7e4be29f2e338195a2e8c818949ed0ff727cc943" + integrity sha512-NC/nogZNb9IK2MEFQqyDBAciOT8Lp8O3KgAfvHx2Skx6WBo+KmDqlU3R9KxHONaijfTIKtojRe3SZQyMjr3wBw== + dependencies: + debug "^4.1.1" + eslint-visitor-keys "^1.1.0" + glob "^7.1.6" + is-glob "^4.0.1" + lodash "^4.17.15" + semver "^6.3.0" + tsutils "^3.17.1" + abbrev@1: version "1.1.1" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" + resolved "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== -acorn-jsx@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.0.1.tgz#32a064fd925429216a09b141102bfdd185fae40e" - integrity sha512-HJ7CfNHrfJLlNTzIEUTj43LNWGkqpRLxm3YjAlcD0ACydk9XynzYsCBHxut+iqt+1aBXkx9UP/w/ZqMr13XIzg== - -acorn-jsx@^5.1.0: - version "5.1.0" - resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.1.0.tgz#294adb71b57398b0680015f0a38c563ee1db5384" - integrity sha512-tMUqwBWfLFbJbizRmEcWSLw6HnFzfdJs2sOJEOwwtVPMoH/0Ay+E703oZz78VSXZiiDcZrQ5XKjPIUQixhmgVw== +acorn-jsx@^5.0.0, acorn-jsx@^5.1.0: + version "5.2.0" + resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.2.0.tgz#4c66069173d6fdd68ed85239fc256226182b2ebe" + integrity sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ== acorn@^6.0.2: - version "6.3.0" - resolved "http://52.167.60.66:8081/repository/npm-all/acorn/-/acorn-6.3.0.tgz#0087509119ffa4fc0a0041d1e93a417e68cb856e" - integrity sha512-/czfa8BwS88b9gWQVhc8eknunSA2DoJpJyTQkhheIf5E48u1N0R4q/YxxsAeqRrmK9TQ/uYfgLDfZo91UlANIA== - -acorn@^7.0.0: - version "7.0.0" - resolved "http://52.167.60.66:8081/repository/npm-all/acorn/-/acorn-7.0.0.tgz#26b8d1cd9a9b700350b71c0905546f64d1284e7a" - integrity sha512-PaF/MduxijYYt7unVGRuds1vBC9bFxbNf+VWqhOClfdgy7RlVkQqt610ig1/yxTgsDIfW1cWDel5EBbOy3jdtQ== + version "6.4.0" + resolved "https://registry.npmjs.org/acorn/-/acorn-6.4.0.tgz#b659d2ffbafa24baf5db1cdbb2c94a983ecd2784" + integrity sha512-gac8OEcQ2Li1dxIEWGZzsp2BitJxwkwcOm0zHAJLcPJaVvm58FRnk6RkuLRpU1EujipU2ZFODv2P9DLMfnV8mw== acorn@^7.1.0: version "7.1.0" @@ -694,68 +604,68 @@ aggregate-error@^3.0.0: ajv-keywords@^3.0.0: version "3.4.1" - resolved "http://52.167.60.66:8081/repository/npm-all/ajv-keywords/-/ajv-keywords-3.4.1.tgz#ef916e271c64ac12171fd8384eaae6b2345854da" + resolved "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.1.tgz#ef916e271c64ac12171fd8384eaae6b2345854da" integrity sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ== -ajv@^6.0.1, ajv@^6.10.0, ajv@^6.5.0, ajv@^6.5.5, ajv@^6.9.1: - version "6.10.2" - resolved "http://52.167.60.66:8081/repository/npm-all/ajv/-/ajv-6.10.2.tgz#d3cea04d6b017b2894ad69040fec8b623eb4bd52" - integrity sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw== +ajv@^6.0.1, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.5.0, ajv@^6.5.5: + version "6.12.0" + resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz#06d60b96d87b8454a5adaba86e7854da629db4b7" + integrity sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw== dependencies: - fast-deep-equal "^2.0.1" + fast-deep-equal "^3.1.1" fast-json-stable-stringify "^2.0.0" json-schema-traverse "^0.4.1" uri-js "^4.2.2" another-json@^0.2.0: version "0.2.0" - resolved "https://registry.yarnpkg.com/another-json/-/another-json-0.2.0.tgz#b5f4019c973b6dd5c6506a2d93469cb6d32aeedc" + resolved "https://registry.npmjs.org/another-json/-/another-json-0.2.0.tgz#b5f4019c973b6dd5c6506a2d93469cb6d32aeedc" integrity sha1-tfQBnJc7bdXGUGotk0acttMq7tw= ansi-align@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-2.0.0.tgz#c36aeccba563b89ceb556f3690f0b1d9e3547f7f" + resolved "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz#c36aeccba563b89ceb556f3690f0b1d9e3547f7f" integrity sha1-w2rsy6VjuJzrVW82kPCx2eNUf38= dependencies: string-width "^2.0.0" ansi-align@^3.0.0: version "3.0.0" - resolved "http://52.167.60.66:8081/repository/npm-all/ansi-align/-/ansi-align-3.0.0.tgz#b536b371cf687caaef236c18d3e21fe3797467cb" + resolved "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.0.tgz#b536b371cf687caaef236c18d3e21fe3797467cb" integrity sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw== dependencies: string-width "^3.0.0" ansi-colors@3.2.3: version "3.2.3" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.3.tgz#57d35b8686e851e2cc04c403f1c00203976a1813" + resolved "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.3.tgz#57d35b8686e851e2cc04c403f1c00203976a1813" integrity sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw== -ansi-escapes@^3.0.0: +ansi-escapes@^3.0.0, ansi-escapes@^3.2.0: version "3.2.0" - resolved "http://52.167.60.66:8081/repository/npm-all/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" + resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== ansi-escapes@^4.2.1: - version "4.2.1" - resolved "http://52.167.60.66:8081/repository/npm-all/ansi-escapes/-/ansi-escapes-4.2.1.tgz#4dccdb846c3eee10f6d64dea66273eab90c37228" - integrity sha512-Cg3ymMAdN10wOk/VYfLV7KCQyv7EDirJ64500sU7n9UlmioEtDuU5Gd+hj73hXSU/ex7tHJSssmyftDdkMLO8Q== + version "4.3.0" + resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.0.tgz#a4ce2b33d6b214b7950d8595c212f12ac9cc569d" + integrity sha512-EiYhwo0v255HUL6eDyuLrXEkTi7WwVCLAw+SeOQ7M7qdun1z1pum4DEm/nuqIVbPvi9RPPc9k9LbyBv6H0DwVg== dependencies: - type-fest "^0.5.2" + 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" + resolved "https://registry.npmjs.org/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" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= ansi-regex@^4.1.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== ansi-regex@^5.0.0: @@ -765,11 +675,12 @@ ansi-regex@^5.0.0: ansi-styles@^2.2.1: version "2.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" + integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= ansi-styles@^3.2.0, ansi-styles@^3.2.1: version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== dependencies: color-convert "^1.9.0" @@ -784,7 +695,7 @@ ansi-styles@^4.0.0, ansi-styles@^4.1.0: anymatch@^1.3.0: version "1.3.2" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.2.tgz#553dcb8f91e3c889845dfdba34c77721b90b9d7a" + resolved "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz#553dcb8f91e3c889845dfdba34c77721b90b9d7a" integrity sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA== dependencies: micromatch "^2.1.5" @@ -792,7 +703,7 @@ anymatch@^1.3.0: anymatch@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" + resolved "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== dependencies: micromatch "^3.1.4" @@ -807,139 +718,148 @@ append-transform@^2.0.0: aproba@^1.0.3: version "1.2.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" + resolved "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== archy@^1.0.0: version "1.0.0" - resolved "http://52.167.60.66:8081/repository/npm-all/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" + resolved "https://registry.npmjs.org/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" + resolved "https://registry.npmjs.org/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.1" - resolved "http://52.167.60.66:8081/repository/npm-all/arg/-/arg-4.1.1.tgz#485f8e7c390ce4c5f78257dbea80d4be11feda4c" - integrity sha512-SlmP3fEA88MBv0PypnXZ8ZfJhwmDeIE3SP71j37AiXQBXYosPV0x6uISAaHYSlSVhmHOVkomen0tbGk6Anlebw== + version "4.1.3" + resolved "https://registry.npmjs.org/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" + resolved "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== 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" + resolved "https://registry.npmjs.org/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" + resolved "https://registry.npmjs.org/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" + resolved "https://registry.npmjs.org/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" + resolved "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= -array-includes@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.0.3.tgz#184b48f62d92d7452bb31b323165c7f8bd02266d" - integrity sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0= +array-includes@^3.0.3, array-includes@^3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/array-includes/-/array-includes-3.1.1.tgz#cdd67e6852bdf9c1215460786732255ed2459348" + integrity sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ== dependencies: - define-properties "^1.1.2" - es-abstract "^1.7.0" + define-properties "^1.1.3" + es-abstract "^1.17.0" + is-string "^1.0.5" array-unique@^0.2.1: version "0.2.1" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" + resolved "https://registry.npmjs.org/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" + resolved "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= +array.prototype.flat@^1.2.1: + version "1.2.3" + resolved "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.3.tgz#0de82b426b0318dbfdb940089e38b043d37f6c7b" + integrity sha512-gBlRZV0VSmfPIeWfuuy56XZMvbVfbEUnOXUvt3F/eUUUSyzlgLxhEX4YAEpxNAogRGehPSnfXyPtYyKAhkzQhQ== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + asn1@~0.2.3: version "0.2.4" - resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" + resolved "https://registry.npmjs.org/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" + resolved "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= assertion-error@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" + resolved "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw== assign-symbols@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" + resolved "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= astral-regex@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" + resolved "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== async-each@^1.0.0, async-each@^1.0.1: version "1.0.3" - resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" + resolved "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== async@0.2.10: version "0.2.10" - resolved "https://registry.yarnpkg.com/async/-/async-0.2.10.tgz#b6bbe0b0674b9d719708ca38de8c237cb526c3d1" + resolved "https://registry.npmjs.org/async/-/async-0.2.10.tgz#b6bbe0b0674b9d719708ca38de8c237cb526c3d1" integrity sha1-trvgsGdLnXGXCMo43owjfLUmw9E= async@^1.4.2: version "1.5.2" - resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" + resolved "https://registry.npmjs.org/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" + resolved "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= -atob@^2.1.1: +atob@^2.1.2: version "2.1.2" - resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" + resolved "https://registry.npmjs.org/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" + resolved "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= aws4@^1.8.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f" - integrity sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ== + version "1.9.1" + resolved "https://registry.npmjs.org/aws4/-/aws4-1.9.1.tgz#7e33d8f7d449b3f673cd72deb9abdc552dbe528e" + integrity sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug== babel-cli@6.26.0, babel-cli@^6.26.0: version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-cli/-/babel-cli-6.26.0.tgz#502ab54874d7db88ad00b887a06383ce03d002f1" + resolved "https://registry.npmjs.org/babel-cli/-/babel-cli-6.26.0.tgz#502ab54874d7db88ad00b887a06383ce03d002f1" integrity sha1-UCq1SHTX24itALiHoGODzgPQAvE= dependencies: babel-core "^6.26.0" @@ -961,7 +881,8 @@ babel-cli@6.26.0, babel-cli@^6.26.0: 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" + resolved "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" + integrity sha1-Y/1D99weO7fONZR9uP42mj9Yx0s= dependencies: chalk "^1.1.3" esutils "^2.0.2" @@ -969,7 +890,7 @@ babel-code-frame@^6.26.0: babel-core@6.26.3, babel-core@^6.26.0, babel-core@^6.26.3: version "6.26.3" - resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.3.tgz#b2e2f09e342d0f0c88e2f02e067794125e75c207" + resolved "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz#b2e2f09e342d0f0c88e2f02e067794125e75c207" integrity sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA== dependencies: babel-code-frame "^6.26.0" @@ -994,7 +915,7 @@ babel-core@6.26.3, babel-core@^6.26.0, babel-core@^6.26.3: babel-eslint@10.0.1: version "10.0.1" - resolved "http://52.167.60.66:8081/repository/npm-all/babel-eslint/-/babel-eslint-10.0.1.tgz#919681dc099614cd7d31d45c8908695092a1faed" + resolved "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.0.1.tgz#919681dc099614cd7d31d45c8908695092a1faed" integrity sha512-z7OT1iNV+TjOwHNLLyJk+HN+YVWX+CLE6fPD2SymJZOZQBs+QIexFjhm4keGTm8MW9xr4EC9Q0PbaLB24V5GoQ== dependencies: "@babel/code-frame" "^7.0.0" @@ -1006,7 +927,7 @@ babel-eslint@10.0.1: babel-eslint@10.0.2: version "10.0.2" - resolved "http://52.167.60.66:8081/repository/npm-all/babel-eslint/-/babel-eslint-10.0.2.tgz#182d5ac204579ff0881684b040560fdcc1558456" + resolved "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.0.2.tgz#182d5ac204579ff0881684b040560fdcc1558456" integrity sha512-UdsurWPtgiPgpJ06ryUnuaSXC2s0WoSZnQmEpbAH65XZSdwowgN5MvyP7e88nW07FYXv72erVtpBkxyDVKhH1Q== dependencies: "@babel/code-frame" "^7.0.0" @@ -1030,7 +951,7 @@ babel-eslint@10.0.3: babel-generator@^6.26.0: version "6.26.1" - resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.1.tgz#1844408d3b8f0d35a404ea7ac180f087a601bd90" + resolved "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz#1844408d3b8f0d35a404ea7ac180f087a601bd90" integrity sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA== dependencies: babel-messages "^6.23.0" @@ -1044,7 +965,7 @@ babel-generator@^6.26.0: babel-helper-builder-binary-assignment-operator-visitor@^6.24.1: version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz#cce4517ada356f4220bcae8a02c2b346f9a56664" + resolved "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz#cce4517ada356f4220bcae8a02c2b346f9a56664" integrity sha1-zORReto1b0IgvK6KAsKzRvmlZmQ= dependencies: babel-helper-explode-assignable-expression "^6.24.1" @@ -1053,7 +974,7 @@ babel-helper-builder-binary-assignment-operator-visitor@^6.24.1: babel-helper-call-delegate@^6.24.1: version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz#ece6aacddc76e41c3461f88bfc575bd0daa2df8d" + resolved "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz#ece6aacddc76e41c3461f88bfc575bd0daa2df8d" integrity sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340= dependencies: babel-helper-hoist-variables "^6.24.1" @@ -1063,7 +984,7 @@ babel-helper-call-delegate@^6.24.1: babel-helper-define-map@^6.24.1: version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz#a5f56dab41a25f97ecb498c7ebaca9819f95be5f" + resolved "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz#a5f56dab41a25f97ecb498c7ebaca9819f95be5f" integrity sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8= dependencies: babel-helper-function-name "^6.24.1" @@ -1073,7 +994,7 @@ babel-helper-define-map@^6.24.1: babel-helper-explode-assignable-expression@^6.24.1: version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz#f25b82cf7dc10433c55f70592d5746400ac22caa" + resolved "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz#f25b82cf7dc10433c55f70592d5746400ac22caa" integrity sha1-8luCz33BBDPFX3BZLVdGQArCLKo= dependencies: babel-runtime "^6.22.0" @@ -1082,7 +1003,7 @@ babel-helper-explode-assignable-expression@^6.24.1: babel-helper-function-name@^6.24.1: version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz#d3475b8c03ed98242a25b48351ab18399d3580a9" + resolved "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz#d3475b8c03ed98242a25b48351ab18399d3580a9" integrity sha1-00dbjAPtmCQqJbSDUasYOZ01gKk= dependencies: babel-helper-get-function-arity "^6.24.1" @@ -1093,7 +1014,7 @@ babel-helper-function-name@^6.24.1: babel-helper-get-function-arity@^6.24.1: version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz#8f7782aa93407c41d3aa50908f89b031b1b6853d" + resolved "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz#8f7782aa93407c41d3aa50908f89b031b1b6853d" integrity sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0= dependencies: babel-runtime "^6.22.0" @@ -1101,7 +1022,7 @@ babel-helper-get-function-arity@^6.24.1: babel-helper-hoist-variables@^6.24.1: version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz#1ecb27689c9d25513eadbc9914a73f5408be7a76" + resolved "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz#1ecb27689c9d25513eadbc9914a73f5408be7a76" integrity sha1-HssnaJydJVE+rbyZFKc/VAi+enY= dependencies: babel-runtime "^6.22.0" @@ -1109,7 +1030,7 @@ babel-helper-hoist-variables@^6.24.1: babel-helper-optimise-call-expression@^6.24.1: version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz#f7a13427ba9f73f8f4fa993c54a97882d1244257" + resolved "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz#f7a13427ba9f73f8f4fa993c54a97882d1244257" integrity sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc= dependencies: babel-runtime "^6.22.0" @@ -1117,7 +1038,7 @@ babel-helper-optimise-call-expression@^6.24.1: babel-helper-regex@^6.24.1: version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz#325c59f902f82f24b74faceed0363954f6495e72" + resolved "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz#325c59f902f82f24b74faceed0363954f6495e72" integrity sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI= dependencies: babel-runtime "^6.26.0" @@ -1126,7 +1047,7 @@ babel-helper-regex@^6.24.1: babel-helper-remap-async-to-generator@^6.24.1: version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz#5ec581827ad723fecdd381f1c928390676e4551b" + resolved "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz#5ec581827ad723fecdd381f1c928390676e4551b" integrity sha1-XsWBgnrXI/7N04HxySg5BnbkVRs= dependencies: babel-helper-function-name "^6.24.1" @@ -1137,7 +1058,7 @@ babel-helper-remap-async-to-generator@^6.24.1: babel-helper-replace-supers@^6.24.1: version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz#bf6dbfe43938d17369a213ca8a8bf74b6a90ab1a" + resolved "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz#bf6dbfe43938d17369a213ca8a8bf74b6a90ab1a" integrity sha1-v22/5Dk40XNpohPKiov3S2qQqxo= dependencies: babel-helper-optimise-call-expression "^6.24.1" @@ -1149,7 +1070,7 @@ babel-helper-replace-supers@^6.24.1: babel-helpers@^6.24.1: version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2" + resolved "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2" integrity sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI= dependencies: babel-runtime "^6.22.0" @@ -1157,36 +1078,36 @@ babel-helpers@^6.24.1: babel-messages@^6.23.0: version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" + resolved "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" integrity sha1-8830cDhYA1sqKVHG7F7fbGLyYw4= dependencies: babel-runtime "^6.22.0" babel-plugin-check-es2015-constants@^6.22.0: version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz#35157b101426fd2ffd3da3f75c7d1e91835bbf8a" + resolved "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz#35157b101426fd2ffd3da3f75c7d1e91835bbf8a" integrity sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o= dependencies: babel-runtime "^6.22.0" babel-plugin-syntax-async-functions@^6.8.0: version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95" + resolved "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95" integrity sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU= babel-plugin-syntax-exponentiation-operator@^6.8.0: version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz#9ee7e8337290da95288201a6a57f4170317830de" + resolved "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz#9ee7e8337290da95288201a6a57f4170317830de" integrity sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4= babel-plugin-syntax-trailing-function-commas@^6.22.0: version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz#ba0360937f8d06e40180a43fe0d5616fff532cf3" + resolved "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz#ba0360937f8d06e40180a43fe0d5616fff532cf3" integrity sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM= babel-plugin-transform-async-to-generator@^6.22.0: version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz#6536e378aff6cb1d5517ac0e40eb3e9fc8d08761" + resolved "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz#6536e378aff6cb1d5517ac0e40eb3e9fc8d08761" integrity sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E= dependencies: babel-helper-remap-async-to-generator "^6.24.1" @@ -1195,21 +1116,21 @@ babel-plugin-transform-async-to-generator@^6.22.0: babel-plugin-transform-es2015-arrow-functions@^6.22.0: version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz#452692cb711d5f79dc7f85e440ce41b9f244d221" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz#452692cb711d5f79dc7f85e440ce41b9f244d221" integrity sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE= dependencies: babel-runtime "^6.22.0" babel-plugin-transform-es2015-block-scoped-functions@^6.22.0: version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz#bbc51b49f964d70cb8d8e0b94e820246ce3a6141" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz#bbc51b49f964d70cb8d8e0b94e820246ce3a6141" integrity sha1-u8UbSflk1wy42OC5ToICRs46YUE= dependencies: babel-runtime "^6.22.0" babel-plugin-transform-es2015-block-scoping@^6.23.0: version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz#d70f5299c1308d05c12f463813b0a09e73b1895f" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz#d70f5299c1308d05c12f463813b0a09e73b1895f" integrity sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8= dependencies: babel-runtime "^6.26.0" @@ -1220,7 +1141,7 @@ babel-plugin-transform-es2015-block-scoping@^6.23.0: babel-plugin-transform-es2015-classes@^6.23.0: version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz#5a4c58a50c9c9461e564b4b2a3bfabc97a2584db" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz#5a4c58a50c9c9461e564b4b2a3bfabc97a2584db" integrity sha1-WkxYpQyclGHlZLSyo7+ryXolhNs= dependencies: babel-helper-define-map "^6.24.1" @@ -1235,7 +1156,7 @@ babel-plugin-transform-es2015-classes@^6.23.0: babel-plugin-transform-es2015-computed-properties@^6.22.0: version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz#6fe2a8d16895d5634f4cd999b6d3480a308159b3" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz#6fe2a8d16895d5634f4cd999b6d3480a308159b3" integrity sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM= dependencies: babel-runtime "^6.22.0" @@ -1243,14 +1164,14 @@ babel-plugin-transform-es2015-computed-properties@^6.22.0: babel-plugin-transform-es2015-destructuring@^6.23.0: version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz#997bb1f1ab967f682d2b0876fe358d60e765c56d" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz#997bb1f1ab967f682d2b0876fe358d60e765c56d" integrity sha1-mXux8auWf2gtKwh2/jWNYOdlxW0= dependencies: babel-runtime "^6.22.0" babel-plugin-transform-es2015-duplicate-keys@^6.22.0: version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz#73eb3d310ca969e3ef9ec91c53741a6f1576423e" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz#73eb3d310ca969e3ef9ec91c53741a6f1576423e" integrity sha1-c+s9MQypaePvnskcU3QabxV2Qj4= dependencies: babel-runtime "^6.22.0" @@ -1258,14 +1179,14 @@ babel-plugin-transform-es2015-duplicate-keys@^6.22.0: babel-plugin-transform-es2015-for-of@^6.23.0: version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz#f47c95b2b613df1d3ecc2fdb7573623c75248691" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz#f47c95b2b613df1d3ecc2fdb7573623c75248691" integrity sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE= dependencies: babel-runtime "^6.22.0" babel-plugin-transform-es2015-function-name@^6.22.0: version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz#834c89853bc36b1af0f3a4c5dbaa94fd8eacaa8b" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz#834c89853bc36b1af0f3a4c5dbaa94fd8eacaa8b" integrity sha1-g0yJhTvDaxrw86TF26qU/Y6sqos= dependencies: babel-helper-function-name "^6.24.1" @@ -1274,14 +1195,14 @@ babel-plugin-transform-es2015-function-name@^6.22.0: babel-plugin-transform-es2015-literals@^6.22.0: version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz#4f54a02d6cd66cf915280019a31d31925377ca2e" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz#4f54a02d6cd66cf915280019a31d31925377ca2e" integrity sha1-T1SgLWzWbPkVKAAZox0xklN3yi4= dependencies: babel-runtime "^6.22.0" babel-plugin-transform-es2015-modules-amd@^6.22.0, babel-plugin-transform-es2015-modules-amd@^6.24.1: version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz#3b3e54017239842d6d19c3011c4bd2f00a00d154" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz#3b3e54017239842d6d19c3011c4bd2f00a00d154" integrity sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ= dependencies: babel-plugin-transform-es2015-modules-commonjs "^6.24.1" @@ -1290,7 +1211,7 @@ babel-plugin-transform-es2015-modules-amd@^6.22.0, babel-plugin-transform-es2015 babel-plugin-transform-es2015-modules-commonjs@^6.23.0, babel-plugin-transform-es2015-modules-commonjs@^6.24.1: version "6.26.2" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz#58a793863a9e7ca870bdc5a881117ffac27db6f3" + resolved "https://registry.npmjs.org/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" @@ -1300,7 +1221,7 @@ babel-plugin-transform-es2015-modules-commonjs@^6.23.0, babel-plugin-transform-e babel-plugin-transform-es2015-modules-systemjs@^6.23.0: version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz#ff89a142b9119a906195f5f106ecf305d9407d23" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz#ff89a142b9119a906195f5f106ecf305d9407d23" integrity sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM= dependencies: babel-helper-hoist-variables "^6.24.1" @@ -1309,7 +1230,7 @@ babel-plugin-transform-es2015-modules-systemjs@^6.23.0: babel-plugin-transform-es2015-modules-umd@^6.23.0: version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz#ac997e6285cd18ed6176adb607d602344ad38468" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz#ac997e6285cd18ed6176adb607d602344ad38468" integrity sha1-rJl+YoXNGO1hdq22B9YCNErThGg= dependencies: babel-plugin-transform-es2015-modules-amd "^6.24.1" @@ -1318,7 +1239,7 @@ babel-plugin-transform-es2015-modules-umd@^6.23.0: babel-plugin-transform-es2015-object-super@^6.22.0: version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz#24cef69ae21cb83a7f8603dad021f572eb278f8d" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz#24cef69ae21cb83a7f8603dad021f572eb278f8d" integrity sha1-JM72muIcuDp/hgPa0CH1cusnj40= dependencies: babel-helper-replace-supers "^6.24.1" @@ -1326,7 +1247,7 @@ babel-plugin-transform-es2015-object-super@^6.22.0: babel-plugin-transform-es2015-parameters@^6.23.0: version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz#57ac351ab49caf14a97cd13b09f66fdf0a625f2b" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz#57ac351ab49caf14a97cd13b09f66fdf0a625f2b" integrity sha1-V6w1GrScrxSpfNE7CfZv3wpiXys= dependencies: babel-helper-call-delegate "^6.24.1" @@ -1338,7 +1259,7 @@ babel-plugin-transform-es2015-parameters@^6.23.0: babel-plugin-transform-es2015-shorthand-properties@^6.22.0: version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz#24f875d6721c87661bbd99a4622e51f14de38aa0" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz#24f875d6721c87661bbd99a4622e51f14de38aa0" integrity sha1-JPh11nIch2YbvZmkYi5R8U3jiqA= dependencies: babel-runtime "^6.22.0" @@ -1346,14 +1267,14 @@ babel-plugin-transform-es2015-shorthand-properties@^6.22.0: babel-plugin-transform-es2015-spread@^6.22.0: version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz#d6d68a99f89aedc4536c81a542e8dd9f1746f8d1" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz#d6d68a99f89aedc4536c81a542e8dd9f1746f8d1" integrity sha1-1taKmfia7cRTbIGlQujdnxdG+NE= dependencies: babel-runtime "^6.22.0" babel-plugin-transform-es2015-sticky-regex@^6.22.0: version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz#00c1cdb1aca71112cdf0cf6126c2ed6b457ccdbc" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz#00c1cdb1aca71112cdf0cf6126c2ed6b457ccdbc" integrity sha1-AMHNsaynERLN8M9hJsLta0V8zbw= dependencies: babel-helper-regex "^6.24.1" @@ -1362,21 +1283,21 @@ babel-plugin-transform-es2015-sticky-regex@^6.22.0: babel-plugin-transform-es2015-template-literals@^6.22.0: version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz#a84b3450f7e9f8f1f6839d6d687da84bb1236d8d" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz#a84b3450f7e9f8f1f6839d6d687da84bb1236d8d" integrity sha1-qEs0UPfp+PH2g51taH2oS7EjbY0= dependencies: babel-runtime "^6.22.0" babel-plugin-transform-es2015-typeof-symbol@^6.23.0: version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz#dec09f1cddff94b52ac73d505c84df59dcceb372" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz#dec09f1cddff94b52ac73d505c84df59dcceb372" integrity sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I= dependencies: babel-runtime "^6.22.0" babel-plugin-transform-es2015-unicode-regex@^6.22.0: version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz#d38b12f42ea7323f729387f18a7c5ae1faeb35e9" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz#d38b12f42ea7323f729387f18a7c5ae1faeb35e9" integrity sha1-04sS9C6nMj9yk4fxinxa4frrNek= dependencies: babel-helper-regex "^6.24.1" @@ -1385,7 +1306,7 @@ babel-plugin-transform-es2015-unicode-regex@^6.22.0: babel-plugin-transform-exponentiation-operator@^6.22.0: version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz#2ab0c9c7f3098fa48907772bb813fe41e8de3a0e" + resolved "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz#2ab0c9c7f3098fa48907772bb813fe41e8de3a0e" integrity sha1-KrDJx/MJj6SJB3cruBP+QejeOg4= dependencies: babel-helper-builder-binary-assignment-operator-visitor "^6.24.1" @@ -1394,14 +1315,14 @@ babel-plugin-transform-exponentiation-operator@^6.22.0: babel-plugin-transform-regenerator@^6.22.0: version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz#e0703696fbde27f0a3efcacf8b4dca2f7b3a8f2f" + resolved "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz#e0703696fbde27f0a3efcacf8b4dca2f7b3a8f2f" integrity sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8= dependencies: regenerator-transform "^0.10.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" + resolved "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz#d5faf7aa578a65bbe591cf5edae04a0c67020758" integrity sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g= dependencies: babel-runtime "^6.22.0" @@ -1409,7 +1330,7 @@ babel-plugin-transform-strict-mode@^6.24.1: babel-polyfill@6.26.0, babel-polyfill@^6.26.0: version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-polyfill/-/babel-polyfill-6.26.0.tgz#379937abc67d7895970adc621f284cd966cf2153" + resolved "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.26.0.tgz#379937abc67d7895970adc621f284cd966cf2153" integrity sha1-N5k3q8Z9eJWXCtxiHyhM2WbPIVM= dependencies: babel-runtime "^6.26.0" @@ -1418,7 +1339,7 @@ babel-polyfill@6.26.0, babel-polyfill@^6.26.0: babel-preset-env@1.7.0, babel-preset-env@^1.6.1, babel-preset-env@^1.7.0: version "1.7.0" - resolved "https://registry.yarnpkg.com/babel-preset-env/-/babel-preset-env-1.7.0.tgz#dea79fa4ebeb883cd35dab07e260c1c9c04df77a" + resolved "https://registry.npmjs.org/babel-preset-env/-/babel-preset-env-1.7.0.tgz#dea79fa4ebeb883cd35dab07e260c1c9c04df77a" integrity sha512-9OR2afuKDneX2/q2EurSftUYM0xGu4O2D9adAhVfADDhrYDaxXV0rBbevVYoY9n6nyX1PmQW/0jtpJvUNr9CHg== dependencies: babel-plugin-check-es2015-constants "^6.22.0" @@ -1454,7 +1375,7 @@ babel-preset-env@1.7.0, babel-preset-env@^1.6.1, babel-preset-env@^1.7.0: babel-register@6.26.0, babel-register@^6.26.0: version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.26.0.tgz#6ed021173e2fcb486d7acb45c6009a856f647071" + resolved "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz#6ed021173e2fcb486d7acb45c6009a856f647071" integrity sha1-btAhFz4vy0htestFxgCahW9kcHE= dependencies: babel-core "^6.26.0" @@ -1467,7 +1388,7 @@ babel-register@6.26.0, babel-register@^6.26.0: babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.26.0: version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" + resolved "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4= dependencies: core-js "^2.4.0" @@ -1475,7 +1396,7 @@ babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.26.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" + resolved "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02" integrity sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI= dependencies: babel-runtime "^6.26.0" @@ -1486,7 +1407,7 @@ babel-template@^6.24.1, babel-template@^6.26.0: babel-traverse@^6.24.1, babel-traverse@^6.26.0: version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee" + resolved "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee" integrity sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4= dependencies: babel-code-frame "^6.26.0" @@ -1501,7 +1422,8 @@ babel-traverse@^6.24.1, babel-traverse@^6.26.0: babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.26.0: version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" + resolved "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" + integrity sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc= dependencies: babel-runtime "^6.26.0" esutils "^2.0.2" @@ -1510,7 +1432,7 @@ babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.26.0: babel-watch@^7.0.0: version "7.0.0" - resolved "http://52.167.60.66:8081/repository/npm-all/babel-watch/-/babel-watch-7.0.0.tgz#2c7cac04a1f6bdaf3b9fc6267abd6b8001f88b89" + resolved "https://registry.npmjs.org/babel-watch/-/babel-watch-7.0.0.tgz#2c7cac04a1f6bdaf3b9fc6267abd6b8001f88b89" integrity sha512-DCK5pXNbDYr1c90wk1lP98bOxb+9BkvVieeYDTQPbcaEP9br6jJcVeJhr+zcQxry0yA45lPXWP+NS88/YVXZag== dependencies: chokidar "^1.4.3" @@ -1523,7 +1445,7 @@ babel-watch@^7.0.0: babylon@^6.18.0: version "6.18.0" - resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" + resolved "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" integrity sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ== backbone@^1.4.0: @@ -1535,19 +1457,26 @@ backbone@^1.4.0: balanced-match@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= -base-x@3.0.5, base-x@^3.0.2: +base-x@3.0.5: version "3.0.5" - resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.5.tgz#d3ada59afed05b921ab581ec3112e6444ba0795a" + resolved "https://registry.npmjs.org/base-x/-/base-x-3.0.5.tgz#d3ada59afed05b921ab581ec3112e6444ba0795a" integrity sha512-C3picSgzPSLE+jW3tcBzJoGwitOtazb5B+5YmAxZm2ybmTi9LNgAtDO/jjVEBZwHoXmDBZ9m/IELj3elJVRBcA== dependencies: safe-buffer "^5.0.1" +base-x@^3.0.2, base-x@^3.0.6: + version "3.0.8" + resolved "https://registry.npmjs.org/base-x/-/base-x-3.0.8.tgz#1e1106c2537f0162e8b52474a557ebb09000018d" + integrity sha512-Rl/1AWP4J/zRrk54hhlxH4drNxPJXYUaKffODVI53/dAsV4t9fBxyxYKAVPU1XBHxYwOWP9h9H0hM2MVw4YfJA== + dependencies: + safe-buffer "^5.0.1" + base@^0.11.1: version "0.11.2" - resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" + resolved "https://registry.npmjs.org/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== dependencies: cache-base "^1.0.1" @@ -1560,33 +1489,33 @@ base@^0.11.1: bcrypt-pbkdf@^1.0.0: version "1.0.2" - resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" + resolved "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= dependencies: tweetnacl "^0.14.3" binary-extensions@^1.0.0: version "1.13.1" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" + resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== binary-search-tree@0.2.5: version "0.2.5" - resolved "https://registry.yarnpkg.com/binary-search-tree/-/binary-search-tree-0.2.5.tgz#7dbb3b210fdca082450dad2334c304af39bdc784" + resolved "https://registry.npmjs.org/binary-search-tree/-/binary-search-tree-0.2.5.tgz#7dbb3b210fdca082450dad2334c304af39bdc784" integrity sha1-fbs7IQ/coIJFDa0jNMMErzm9x4Q= dependencies: underscore "~1.4.4" bindings@^1.5.0: version "1.5.0" - resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" + resolved "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== dependencies: file-uri-to-path "1.0.0" bip39@^2.5.0: version "2.6.0" - resolved "https://registry.yarnpkg.com/bip39/-/bip39-2.6.0.tgz#9e3a720b42ec8b3fbe4038f1e445317b6a99321c" + resolved "https://registry.npmjs.org/bip39/-/bip39-2.6.0.tgz#9e3a720b42ec8b3fbe4038f1e445317b6a99321c" integrity sha512-RrnQRG2EgEoqO24ea+Q/fftuPUZLmrEM3qNhhGsA3PbaXaCW791LTzPuVyx/VprXQcTbPJ3K3UeTna8ZnVl2sg== dependencies: create-hash "^1.1.0" @@ -1597,29 +1526,29 @@ bip39@^2.5.0: bip66@^1.1.5: version "1.1.5" - resolved "https://registry.yarnpkg.com/bip66/-/bip66-1.1.5.tgz#01fa8748785ca70955d5011217d1b3139969ca22" + resolved "https://registry.npmjs.org/bip66/-/bip66-1.1.5.tgz#01fa8748785ca70955d5011217d1b3139969ca22" integrity sha1-AfqHSHhcpwlV1QESF9GzE5lpyiI= dependencies: safe-buffer "^5.0.1" blakejs@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/blakejs/-/blakejs-1.1.0.tgz#69df92ef953aa88ca51a32df6ab1c54a155fc7a5" + resolved "https://registry.npmjs.org/blakejs/-/blakejs-1.1.0.tgz#69df92ef953aa88ca51a32df6ab1c54a155fc7a5" integrity sha1-ad+S75U6qIylGjLfarHFShVfx6U= bluebird@^3.5.0, bluebird@^3.5.4: - version "3.5.5" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.5.tgz#a8d0afd73251effbbd5fe384a77d73003c17a71f" - integrity sha512-5am6HnnfN+urzt4yfg7IgTbotDjIT/u8AJpEt0sIU9FtXfVeezXAPKswrG+xKUCOYAINpSdgZVDU6QFh+cuH3w== + version "3.7.2" + resolved "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" + integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== bn.js@5.0.0: version "5.0.0" - resolved "http://52.167.60.66:8081/repository/npm-all/bn.js/-/bn.js-5.0.0.tgz#5c3d398021b3ddb548c1296a16f857e908f35c70" + resolved "https://registry.npmjs.org/bn.js/-/bn.js-5.0.0.tgz#5c3d398021b3ddb548c1296a16f857e908f35c70" integrity sha512-bVwDX8AF+72fIUNuARelKAlQUNtPOfG2fRxorbVvFk4zpHbqLrPdOGfVg5vrKwVzLLePqPBiATaOZNELQzmS0A== bn.js@^4.11.8, bn.js@^4.4.0: version "4.11.8" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" + resolved "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" integrity sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA== bn.js@^5.1.1: @@ -1629,12 +1558,12 @@ bn.js@^5.1.1: bowser@^0.7.1: version "0.7.3" - resolved "https://registry.yarnpkg.com/bowser/-/bowser-0.7.3.tgz#4fc0cb4e0e2bdd9b394df0d2038c32c2cc2712c8" + resolved "https://registry.npmjs.org/bowser/-/bowser-0.7.3.tgz#4fc0cb4e0e2bdd9b394df0d2038c32c2cc2712c8" integrity sha1-T8DLTg4r3Zs5TfDSA4wywswnEsg= boxen@^1.2.1: version "1.3.0" - resolved "https://registry.yarnpkg.com/boxen/-/boxen-1.3.0.tgz#55c6c39a8ba58d9c61ad22cd877532deb665a20b" + resolved "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz#55c6c39a8ba58d9c61ad22cd877532deb665a20b" integrity sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw== dependencies: ansi-align "^2.0.0" @@ -1647,7 +1576,7 @@ boxen@^1.2.1: boxen@^3.2.0: version "3.2.0" - resolved "http://52.167.60.66:8081/repository/npm-all/boxen/-/boxen-3.2.0.tgz#fbdff0de93636ab4450886b6ff45b92d098f45eb" + resolved "https://registry.npmjs.org/boxen/-/boxen-3.2.0.tgz#fbdff0de93636ab4450886b6ff45b92d098f45eb" integrity sha512-cU4J/+NodM3IHdSL2yN8bqYqnmlBTidDR4RC7nJs61ZmtGz8VZzM3HLQX0zY5mrSmPtR3xWwsq2jOUQqFZN8+A== dependencies: ansi-align "^3.0.0" @@ -1661,7 +1590,7 @@ boxen@^3.2.0: brace-expansion@^1.1.7: version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== dependencies: balanced-match "^1.0.0" @@ -1669,7 +1598,7 @@ brace-expansion@^1.1.7: braces@^1.8.2: version "1.8.5" - resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" + resolved "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" integrity sha1-uneWLhLf+WnWt2cR6RS3N4V79qc= dependencies: expand-range "^1.8.1" @@ -1678,7 +1607,7 @@ braces@^1.8.2: braces@^2.3.1, braces@^2.3.2: version "2.3.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" + resolved "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== dependencies: arr-flatten "^1.1.0" @@ -1694,22 +1623,22 @@ braces@^2.3.1, braces@^2.3.2: brorand@^1.0.1: version "1.1.0" - resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + resolved "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= browser-request@^0.3.3: version "0.3.3" - resolved "https://registry.yarnpkg.com/browser-request/-/browser-request-0.3.3.tgz#9ece5b5aca89a29932242e18bf933def9876cc17" + resolved "https://registry.npmjs.org/browser-request/-/browser-request-0.3.3.tgz#9ece5b5aca89a29932242e18bf933def9876cc17" integrity sha1-ns5bWsqJopkyJC4Yv5M975h2zBc= browser-stdout@1.3.1: version "1.3.1" - resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" + resolved "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== browserify-aes@^1.0.6: version "1.2.0" - resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" + resolved "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== dependencies: buffer-xor "^1.0.3" @@ -1721,7 +1650,7 @@ browserify-aes@^1.0.6: browserslist@^3.2.6: version "3.2.8" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-3.2.8.tgz#b0005361d6471f0f5952797a76fc985f1f978fc6" + resolved "https://registry.npmjs.org/browserslist/-/browserslist-3.2.8.tgz#b0005361d6471f0f5952797a76fc985f1f978fc6" integrity sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ== dependencies: caniuse-lite "^1.0.30000844" @@ -1729,24 +1658,24 @@ browserslist@^3.2.6: bs58@^4.0.1: version "4.0.1" - resolved "https://registry.yarnpkg.com/bs58/-/bs58-4.0.1.tgz#be161e76c354f6f788ae4071f63f34e8c4f0a42a" + resolved "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz#be161e76c354f6f788ae4071f63f34e8c4f0a42a" integrity sha1-vhYedsNU9veIrkBx9j806MTwpCo= dependencies: base-x "^3.0.2" buffer-from@^1.0.0: version "1.1.1" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" + resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== buffer-xor@^1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" + resolved "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= cache-base@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" + resolved "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== dependencies: collection-visit "^1.0.0" @@ -1771,56 +1700,56 @@ caching-transform@^4.0.0: caller-path@^0.1.0: version "0.1.0" - resolved "http://52.167.60.66:8081/repository/npm-all/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f" + resolved "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f" integrity sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8= dependencies: callsites "^0.2.0" callsites@^0.2.0: version "0.2.0" - resolved "http://52.167.60.66:8081/repository/npm-all/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca" + resolved "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca" integrity sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo= callsites@^3.0.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== camelcase@^4.0.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" + resolved "https://registry.npmjs.org/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" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== caniuse-lite@^1.0.30000844: - version "1.0.30000962" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000962.tgz#6c10c3ab304b89bea905e66adf98c0905088ee44" - integrity sha512-WXYsW38HK+6eaj5IZR16Rn91TGhU3OhbwjKZvJ4HN/XBIABLKfbij9Mnd3pM0VEwZSlltWjoWg3I8FQ0DGgNOA== + version "1.0.30001030" + resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001030.tgz#78076c4c6d67d3e41d6eb9399853fb27fe6e44ee" + integrity sha512-QGK0W4Ft/Ac+zTjEiRJfwDNATvS3fodDczBXrH42784kcfqcDKpEPfN08N0HQjrAp8He/Jw8QiSS9QRn7XAbUw== 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" + resolved "https://registry.npmjs.org/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" + resolved "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= catharsis@^0.8.11: version "0.8.11" - resolved "http://52.167.60.66:8081/repository/npm-all/catharsis/-/catharsis-0.8.11.tgz#d0eb3d2b82b7da7a3ce2efb1a7b00becc6643468" + resolved "https://registry.npmjs.org/catharsis/-/catharsis-0.8.11.tgz#d0eb3d2b82b7da7a3ce2efb1a7b00becc6643468" integrity sha512-a+xUyMV7hD1BrDQA/3iPV7oc+6W26BgVJO05PGEoatMyIuPScQKsde6i3YorWX1qs+AZjnJ18NqdKoCtKiNh1g== dependencies: lodash "^4.17.14" chai-http@4.3.0: version "4.3.0" - resolved "https://registry.yarnpkg.com/chai-http/-/chai-http-4.3.0.tgz#3c37c675c1f4fe685185a307e345de7599337c1a" + resolved "https://registry.npmjs.org/chai-http/-/chai-http-4.3.0.tgz#3c37c675c1f4fe685185a307e345de7599337c1a" integrity sha512-zFTxlN7HLMv+7+SPXZdkd5wUlK+KxH6Q7bIEMiEx0FK3zuuMqL7cwICAQ0V1+yYRozBburYuxN1qZstgHpFZQg== dependencies: "@types/chai" "4" @@ -1833,7 +1762,7 @@ chai-http@4.3.0: chai@4.2.0, chai@^4.2.0: version "4.2.0" - resolved "https://registry.yarnpkg.com/chai/-/chai-4.2.0.tgz#760aa72cf20e3795e84b12877ce0e83737aa29e5" + resolved "https://registry.npmjs.org/chai/-/chai-4.2.0.tgz#760aa72cf20e3795e84b12877ce0e83737aa29e5" integrity sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw== dependencies: assertion-error "^1.1.0" @@ -1845,7 +1774,8 @@ chai@4.2.0, chai@^4.2.0: chalk@^1.1.3: version "1.1.3" - resolved "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + resolved "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= dependencies: ansi-styles "^2.2.1" escape-string-regexp "^1.0.2" @@ -1855,7 +1785,7 @@ chalk@^1.1.3: chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.4.2: version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== dependencies: ansi-styles "^3.2.1" @@ -1872,22 +1802,22 @@ chalk@^3.0.0: chardet@^0.4.0: version "0.4.2" - resolved "http://52.167.60.66:8081/repository/npm-all/chardet/-/chardet-0.4.2.tgz#b5473b33dc97c424e5d98dc87d55d4d8a29c8bf2" + resolved "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz#b5473b33dc97c424e5d98dc87d55d4d8a29c8bf2" integrity sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I= chardet@^0.7.0: version "0.7.0" - resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" + resolved "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== check-error@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82" + resolved "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82" integrity sha1-V00xLt2Iu13YkS6Sht1sCu1KrII= chokidar@^1.4.3, chokidar@^1.6.1: version "1.7.0" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" + resolved "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" integrity sha1-eY5ol3gVHIB2tLNg5e3SjNortGg= dependencies: anymatch "^1.3.0" @@ -1902,9 +1832,9 @@ chokidar@^1.4.3, chokidar@^1.6.1: fsevents "^1.0.0" chokidar@^2.1.5: - version "2.1.5" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.5.tgz#0ae8434d962281a5f56c72869e79cb6d9d86ad4d" - integrity sha512-i0TprVWp+Kj4WRPtInjexJ8Q+BqTE909VpH8xVhXrJkoc5QC8VO9TryGOqTr+2hljzc1sC62t22h5tZePodM/A== + version "2.1.8" + resolved "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" + integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== dependencies: anymatch "^2.0.0" async-each "^1.0.1" @@ -1921,23 +1851,23 @@ chokidar@^2.1.5: fsevents "^1.2.7" chownr@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.1.tgz#54726b8b8fff4df053c42187e801fb4412df1494" - integrity sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g== + version "1.1.4" + resolved "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" + integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== ci-info@^1.5.0: version "1.6.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.6.0.tgz#2ca20dbb9ceb32d4524a683303313f0304b1e497" + resolved "https://registry.npmjs.org/ci-info/-/ci-info-1.6.0.tgz#2ca20dbb9ceb32d4524a683303313f0304b1e497" integrity sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A== ci-info@^2.0.0: version "2.0.0" - resolved "http://52.167.60.66:8081/repository/npm-all/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" + resolved "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: version "1.0.4" - resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" + resolved "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== dependencies: inherits "^2.0.1" @@ -1945,12 +1875,12 @@ cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: circular-json@^0.3.1: version "0.3.3" - resolved "http://52.167.60.66:8081/repository/npm-all/circular-json/-/circular-json-0.3.3.tgz#815c99ea84f6809529d2f45791bdf82711352d66" + resolved "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz#815c99ea84f6809529d2f45791bdf82711352d66" integrity sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A== class-utils@^0.3.5: version "0.3.6" - resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" + resolved "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== dependencies: arr-union "^3.1.0" @@ -1965,45 +1895,36 @@ clean-stack@^2.0.0: cli-boxes@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143" + resolved "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143" integrity sha1-T6kXw+WclKAEzWH47lCdplFocUM= cli-boxes@^2.2.0: version "2.2.0" - resolved "http://52.167.60.66:8081/repository/npm-all/cli-boxes/-/cli-boxes-2.2.0.tgz#538ecae8f9c6ca508e3c3c95b453fe93cb4c168d" + resolved "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.0.tgz#538ecae8f9c6ca508e3c3c95b453fe93cb4c168d" integrity sha512-gpaBrMAizVEANOpfZp/EEUixTXDyGt7DFzdK5hU+UbWt/J0lB0w20ncZj59Z9a93xHb9u12zF5BS6i9RKbtg4w== cli-cursor@^2.1.0: version "2.1.0" - resolved "http://52.167.60.66:8081/repository/npm-all/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" + resolved "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU= dependencies: restore-cursor "^2.0.0" cli-cursor@^3.1.0: version "3.1.0" - resolved "http://52.167.60.66:8081/repository/npm-all/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" + resolved "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== dependencies: restore-cursor "^3.1.0" cli-width@^2.0.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" + resolved "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" integrity sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk= -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" - cliui@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" + resolved "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== dependencies: string-width "^3.1.0" @@ -2021,12 +1942,12 @@ cliui@^6.0.0: code-point-at@^1.0.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" + resolved "https://registry.npmjs.org/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" + resolved "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= dependencies: map-visit "^1.0.0" @@ -2034,7 +1955,7 @@ collection-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" + resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== dependencies: color-name "1.1.3" @@ -2048,7 +1969,7 @@ color-convert@^2.0.1: color-name@1.1.3: version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= color-name@~1.1.4: @@ -2057,49 +1978,45 @@ color-name@~1.1.4: integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== combined-stream@^1.0.6, combined-stream@~1.0.6: - version "1.0.7" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.7.tgz#2d1d24317afb8abe95d6d2c0b07b57813539d828" - integrity sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w== + version "1.0.8" + resolved "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== dependencies: delayed-stream "~1.0.0" -commander@^2.11.0, commander@^2.9.0: - version "2.20.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422" - integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ== - -commander@~2.20.3: +commander@^2.11.0, commander@^2.9.0, commander@~2.20.3: version "2.20.3" resolved "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== commondir@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + resolved "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= component-emitter@^1.2.0, component-emitter@^1.2.1: version "1.3.0" - resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" + resolved "https://registry.npmjs.org/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" + resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= -concat-stream@^1.5.0: - version "1.6.2" - resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" - integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== +concat-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/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 "^2.2.2" + readable-stream "^3.0.2" typedarray "^0.0.6" configstore@^3.0.0: version "3.1.2" - resolved "https://registry.yarnpkg.com/configstore/-/configstore-3.1.2.tgz#c6f25defaeef26df12dd33414b001fe81a543f8f" + resolved "https://registry.npmjs.org/configstore/-/configstore-3.1.2.tgz#c6f25defaeef26df12dd33414b001fe81a543f8f" integrity sha512-vtv5HtGjcYUgFrXc6Kx747B83MRRVS5R1VTEQoXvuP+kMI+if6uywV0nDGoiydJRy4yk7h9od5Og0kxx4zUXmw== dependencies: dot-prop "^4.1.0" @@ -2111,27 +2028,20 @@ configstore@^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" + resolved "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= contains-path@^0.1.0: version "0.1.0" - resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" + resolved "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" integrity sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo= content-type@^1.0.2: version "1.0.4" - resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" + resolved "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== -convert-source-map@^1.1.0, convert-source-map@^1.5.0, convert-source-map@^1.5.1: - version "1.6.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.6.0.tgz#51b537a8c43e0f04dec1993bffcdd504e758ac20" - integrity sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A== - dependencies: - safe-buffer "~5.1.1" - -convert-source-map@^1.7.0: +convert-source-map@^1.5.0, convert-source-map@^1.5.1, convert-source-map@^1.7.0: version "1.7.0" resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== @@ -2140,34 +2050,34 @@ convert-source-map@^1.7.0: cookiejar@^2.1.0, cookiejar@^2.1.1: version "2.1.2" - resolved "https://registry.yarnpkg.com/cookiejar/-/cookiejar-2.1.2.tgz#dd8a235530752f988f9a0844f3fc589e3111125c" + resolved "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.2.tgz#dd8a235530752f988f9a0844f3fc589e3111125c" integrity sha512-Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA== copy-descriptor@^0.1.0: version "0.1.1" - resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" + resolved "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= core-js@^2.4.0, core-js@^2.5.0: - version "2.6.5" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.5.tgz#44bc8d249e7fb2ff5d00e0341a7ffb94fbf67895" - integrity sha512-klh/kDpwX8hryYL14M9w/xei6vrv6sE8gTHDG7/T/+SEovB/G4ejwcfE/CBzO6Edsu+OETZMZ3wcX/EjUkrl5A== + version "2.6.11" + resolved "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz#38831469f9922bded8ee21c9dc46985e0399308c" + integrity sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg== 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" + resolved "https://registry.npmjs.org/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" + resolved "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6" integrity sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y= dependencies: capture-stack-trace "^1.0.0" create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" + resolved "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== dependencies: cipher-base "^1.0.1" @@ -2178,7 +2088,7 @@ create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: create-hmac@^1.1.4: version "1.1.7" - resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" + resolved "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== dependencies: cipher-base "^1.0.3" @@ -2190,16 +2100,16 @@ create-hmac@^1.1.4: cross-spawn@^5.0.1: version "5.1.0" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" + resolved "https://registry.npmjs.org/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, cross-spawn@^6.0.5: +cross-spawn@^6.0.5: version "6.0.5" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" + resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== dependencies: nice-try "^1.0.4" @@ -2219,22 +2129,15 @@ cross-spawn@^7.0.0: 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" + resolved "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e" integrity sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4= cuint@^0.2.2: version "0.2.2" - resolved "https://registry.yarnpkg.com/cuint/-/cuint-0.2.2.tgz#408086d409550c2631155619e9fa7bcadc3b991b" + resolved "https://registry.npmjs.org/cuint/-/cuint-0.2.2.tgz#408086d409550c2631155619e9fa7bcadc3b991b" integrity sha1-QICG1AlVDCYxFVYZ6fp7ytw7mRs= -d@1: - version "1.0.0" - resolved "https://registry.yarnpkg.com/d/-/d-1.0.0.tgz#754bb5bfe55451da69a58b94d45f4c5b0462d58f" - integrity sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8= - dependencies: - es5-ext "^0.10.9" - -d@^1.0.1: +d@1, d@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA== @@ -2244,62 +2147,62 @@ d@^1.0.1: dashdash@^1.12.0: version "1.14.1" - resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + resolved "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= dependencies: assert-plus "^1.0.0" debug-log@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/debug-log/-/debug-log-1.0.1.tgz#2307632d4c04382b8df8a32f70b895046d52745f" + resolved "https://registry.npmjs.org/debug-log/-/debug-log-1.0.1.tgz#2307632d4c04382b8df8a32f70b895046d52745f" integrity sha1-IwdjLUwEOCuN+KMvcLiVBG1SdF8= -debug@3.2.6, debug@^3.1.0: +debug@3.2.6, debug@^3.1.0, debug@^3.2.6: version "3.2.6" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" + resolved "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== dependencies: ms "^2.1.1" debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9: version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== dependencies: ms "2.0.0" debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: version "4.1.1" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" + resolved "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== dependencies: ms "^2.1.1" decamelize@^1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + resolved "https://registry.npmjs.org/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" + resolved "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= deep-eql@^3.0.1: version "3.0.1" - resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-3.0.1.tgz#dfc9404400ad1c8fe023e7da1df1c147c4b444df" + resolved "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz#dfc9404400ad1c8fe023e7da1df1c147c4b444df" integrity sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw== dependencies: type-detect "^4.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" + resolved "https://registry.npmjs.org/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" + resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= default-require-extensions@^3.0.0: @@ -2311,28 +2214,28 @@ default-require-extensions@^3.0.0: 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" + resolved "https://registry.npmjs.org/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" + resolved "https://registry.npmjs.org/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" + resolved "https://registry.npmjs.org/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" + resolved "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== dependencies: is-descriptor "^1.0.2" @@ -2340,7 +2243,7 @@ define-property@^2.0.2: deglob@^2.1.0: version "2.1.1" - resolved "http://52.167.60.66:8081/repository/npm-all/deglob/-/deglob-2.1.1.tgz#d268e168727799862e8eac07042e165957c1f3be" + resolved "https://registry.npmjs.org/deglob/-/deglob-2.1.1.tgz#d268e168727799862e8eac07042e165957c1f3be" integrity sha512-2kjwuGGonL7gWE1XU4Fv79+vVzpoQCl0V+boMwWtOQJV2AGDabCwez++nB1Nli/8BabAfZQ/UuHPlp6AymKdWw== dependencies: find-root "^1.0.0" @@ -2351,9 +2254,9 @@ deglob@^2.1.0: uniq "^1.0.1" deglob@^4.0.0: - version "4.0.0" - resolved "http://52.167.60.66:8081/repository/npm-all/deglob/-/deglob-4.0.0.tgz#26df218423dceb0d9001583c0b89b51efbb20059" - integrity sha512-nrUWPTcQ4ap7KWCSeWNDXUgIe4A3nSbsp9cmWrxbKOOxUxLpAVzU1aeatYZfjE+lVHO1lUjXpBmoxOgPYbV5lg== + version "4.0.1" + resolved "https://registry.npmjs.org/deglob/-/deglob-4.0.1.tgz#0685c6383992fd6009be10653a2b1116696fad55" + integrity sha512-/g+RDZ7yf2HvoW+E5Cy+K94YhgcFgr6C8LuHZD1O5HoNPkf3KY6RfXJ0DBGlB/NkLi5gml+G9zqRzk9S0mHZCg== dependencies: find-root "^1.0.0" glob "^7.0.5" @@ -2364,44 +2267,44 @@ deglob@^4.0.0: delayed-stream@~1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + resolved "https://registry.npmjs.org/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" + resolved "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= detect-file@^1.0.0: version "1.0.0" - resolved "http://52.167.60.66:8081/repository/npm-all/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7" + resolved "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7" integrity sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc= detect-indent@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" + resolved "https://registry.npmjs.org/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" + resolved "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= diff@3.5.0: version "3.5.0" - resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" + resolved "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA== diff@^4.0.1: - version "4.0.1" - resolved "http://52.167.60.66:8081/repository/npm-all/diff/-/diff-4.0.1.tgz#0c667cb467ebbb5cea7f14f135cc2dba7780a8ff" - integrity sha512-s2+XdvhPCOF01LRQBC8hf4vhbVmI2CGS5aZnxLJlT5FtdhPCDFq80q++zK2KlrVorVDdL5BOGZ/VfLrVtYNF+Q== + version "4.0.2" + resolved "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" + integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== doctrine@1.5.0: version "1.5.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" + resolved "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" integrity sha1-N53Ocw9hZvds76TmcHoVmwLFpvo= dependencies: esutils "^2.0.2" @@ -2409,33 +2312,38 @@ doctrine@1.5.0: doctrine@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" + resolved "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== dependencies: esutils "^2.0.2" doctrine@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + resolved "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== dependencies: esutils "^2.0.2" dot-prop@^4.1.0: version "4.2.0" - resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.0.tgz#1f19e0c2e1aa0e32797c49799f2837ac6af69c57" + resolved "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz#1f19e0c2e1aa0e32797c49799f2837ac6af69c57" integrity sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ== dependencies: is-obj "^1.0.0" dotenv@8.1.0: version "8.1.0" - resolved "http://52.167.60.66:8081/repository/npm-all/dotenv/-/dotenv-8.1.0.tgz#d811e178652bfb8a1e593c6dd704ec7e90d85ea2" + resolved "https://registry.npmjs.org/dotenv/-/dotenv-8.1.0.tgz#d811e178652bfb8a1e593c6dd704ec7e90d85ea2" integrity sha512-GUE3gqcDCaMltj2++g6bRQ5rBJWtkWTmqmD0fo1RnnMuUqHNCt2oTPeDnS9n6fKYvlhn7AeBkb38lymBtWBQdA== +dotenv@8.2.0: + version "8.2.0" + resolved "https://registry.npmjs.org/dotenv/-/dotenv-8.2.0.tgz#97e619259ada750eea3e4ea3e26bceea5424b16a" + integrity sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw== + drbg.js@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/drbg.js/-/drbg.js-1.0.1.tgz#3e36b6c42b37043823cdbc332d58f31e2445480b" + resolved "https://registry.npmjs.org/drbg.js/-/drbg.js-1.0.1.tgz#3e36b6c42b37043823cdbc332d58f31e2445480b" integrity sha1-Pja2xCs3BDgjzbwzLVjzHiRFSAs= dependencies: browserify-aes "^1.0.6" @@ -2444,21 +2352,21 @@ drbg.js@^1.0.1: duplexer3@^0.1.4: version "0.1.4" - resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" + resolved "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= ecc-jsbn@~0.1.1: version "0.1.2" - resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" + resolved "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= dependencies: jsbn "~0.1.0" safer-buffer "^2.1.0" electron-to-chromium@^1.3.47: - version "1.3.125" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.125.tgz#dbde0e95e64ebe322db0eca764d951f885a5aff2" - integrity sha512-XxowpqQxJ4nDwUXHtVtmEhRqBpm2OnjBomZmZtHD0d2Eo0244+Ojezhk3sD/MBSSe2nxCdGQFRXHIsf/LUTL9A== + version "1.3.362" + resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.362.tgz#9ed33f9d0673888d6a2614347b4b63b490009408" + integrity sha512-xdU5VCoZyMPMOWtCaMgbr48OwWZHrMLbGnAOlEqibXiIGsb4kiCGWEHK5NOghcVLdBVIbr/BW+yuKxVuGTtzEg== elliptic@^6.5.2: version "6.5.2" @@ -2475,71 +2383,60 @@ elliptic@^6.5.2: emoji-regex@^7.0.1: version "7.0.3" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" + resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== emoji-regex@^8.0.0: version "8.0.0" - resolved "http://52.167.60.66:8081/repository/npm-all/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== encoding@^0.1.11: version "0.1.12" - resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb" + resolved "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb" integrity sha1-U4tm8+5izRq1HsMjgp0flIDHS+s= dependencies: iconv-lite "~0.4.13" -end-of-stream@^1.1.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43" - integrity sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q== - dependencies: - once "^1.4.0" - entities@~1.1.1: version "1.1.2" - resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" + resolved "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w== 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" + resolved "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== dependencies: is-arrayish "^0.2.1" -es-abstract@^1.11.0, es-abstract@^1.12.0, es-abstract@^1.5.1, es-abstract@^1.7.0: - version "1.13.0" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.13.0.tgz#ac86145fdd5099d8dd49558ccba2eaf9b88e24e9" - integrity sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg== +es-abstract@^1.17.0, es-abstract@^1.17.0-next.1: + version "1.17.4" + resolved "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.4.tgz#e3aedf19706b20e7c2594c35fc0d57605a79e184" + integrity sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ== dependencies: - es-to-primitive "^1.2.0" + es-to-primitive "^1.2.1" function-bind "^1.1.1" has "^1.0.3" - is-callable "^1.1.4" - is-regex "^1.0.4" - object-keys "^1.0.12" - -es-to-primitive@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.0.tgz#edf72478033456e8dda8ef09e00ad9650707f377" - integrity sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg== + 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.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== dependencies: is-callable "^1.1.4" is-date-object "^1.0.1" is-symbol "^1.0.2" -es5-ext@^0.10.14, es5-ext@^0.10.35, es5-ext@^0.10.45, es5-ext@^0.10.9, es5-ext@~0.10.14, es5-ext@~0.10.2, es5-ext@~0.10.46: - version "0.10.49" - resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.49.tgz#059a239de862c94494fec28f8150c977028c6c5e" - integrity sha512-3NMEhi57E31qdzmYp2jwRArIUsj1HI/RxbQ4bgnSB+AIKIxsAmTiK83bYMifIcpWvEc3P1X30DhUKOqEtF/kvg== - dependencies: - es6-iterator "~2.0.3" - es6-symbol "~3.1.1" - next-tick "^1.0.0" - -es5-ext@^0.10.50: +es5-ext@^0.10.35, es5-ext@^0.10.45, es5-ext@^0.10.46, es5-ext@^0.10.50, es5-ext@~0.10.14, es5-ext@~0.10.2, es5-ext@~0.10.46: version "0.10.53" resolved "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz#93c5a3acfdbef275220ad72644ad02ee18368de1" integrity sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q== @@ -2553,24 +2450,16 @@ es6-error@^4.0.1: resolved "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz#9e3af407459deed47e9a91f9b885a84eb05c561d" integrity sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg== -es6-iterator@^2.0.1, es6-iterator@~2.0.3: +es6-iterator@^2.0.3, es6-iterator@~2.0.3: version "2.0.3" - resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" + resolved "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" integrity sha1-p96IkUGgWpSwhUQDstCg+/qY87c= dependencies: d "1" es5-ext "^0.10.35" es6-symbol "^3.1.1" -es6-symbol@^3.1.1, es6-symbol@~3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz#bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77" - integrity sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc= - dependencies: - d "1" - es5-ext "~0.10.14" - -es6-symbol@~3.1.3: +es6-symbol@^3.1.1, es6-symbol@~3.1.3: version "3.1.3" resolved "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18" integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA== @@ -2579,35 +2468,42 @@ es6-symbol@~3.1.3: ext "^1.1.2" es6-weak-map@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.2.tgz#5e3ab32251ffd1538a1f8e5ffa1357772f92d96f" - integrity sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8= + version "2.0.3" + resolved "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz#b6da1f16cc2cc0d9be43e6bdbfc5e7dfcdf31d53" + integrity sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA== dependencies: d "1" - es5-ext "^0.10.14" - es6-iterator "^2.0.1" + es5-ext "^0.10.46" + es6-iterator "^2.0.3" es6-symbol "^3.1.1" escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, 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" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= escape-string-regexp@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== eslint-config-prettier@6.1.0: version "6.1.0" - resolved "http://52.167.60.66:8081/repository/npm-all/eslint-config-prettier/-/eslint-config-prettier-6.1.0.tgz#e6f678ba367fbd1273998d5510f76f004e9dce7b" + resolved "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-6.1.0.tgz#e6f678ba367fbd1273998d5510f76f004e9dce7b" integrity sha512-k9fny9sPjIBQ2ftFTesJV21Rg4R/7a7t7LCtZVrYQiHEp8Nnuk3EGaDmsKSAnsPj0BYcgB2zxzHa2NTkIxcOLg== dependencies: get-stdin "^6.0.0" +eslint-config-prettier@6.10.0: + version "6.10.0" + resolved "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-6.10.0.tgz#7b15e303bf9c956875c948f6b21500e48ded6a7f" + integrity sha512-AtndijGte1rPILInUdHjvKEGbIV06NuvPrqlIEaEaWtbtvJh464mDeyGMdZEQMsGvC0ZVkiex1fSNcC4HAbRGg== + dependencies: + get-stdin "^6.0.0" + eslint-config-standard-jsx@6.0.2: version "6.0.2" - resolved "http://52.167.60.66:8081/repository/npm-all/eslint-config-standard-jsx/-/eslint-config-standard-jsx-6.0.2.tgz#90c9aa16ac2c4f8970c13fc7efc608bacd02da70" + resolved "https://registry.npmjs.org/eslint-config-standard-jsx/-/eslint-config-standard-jsx-6.0.2.tgz#90c9aa16ac2c4f8970c13fc7efc608bacd02da70" integrity sha512-D+YWAoXw+2GIdbMBRAzWwr1ZtvnSf4n4yL0gKGg7ShUOGXkSOLerI17K4F6LdQMJPNMoWYqepzQD/fKY+tXNSg== eslint-config-standard-jsx@8.1.0: @@ -2616,18 +2512,18 @@ eslint-config-standard-jsx@8.1.0: integrity sha512-ULVC8qH8qCqbU792ZOO6DaiaZyHNS/5CZt3hKqHkEhVlhPEPN3nfBqqxJCyp59XrjIBZPu1chMYe9T2DXZ7TMw== eslint-config-standard-jsx@~8.0.0: - version "8.0.0" - resolved "http://52.167.60.66:8081/repository/npm-all/eslint-config-standard-jsx/-/eslint-config-standard-jsx-8.0.0.tgz#62607f2a7c0c47aed46d3a37ad7ebc73b6f7e869" - integrity sha512-Abs/WP+638KfkHI1J961yAztpMhYFvEMTqD4GMUZObAO9yOmLaQZlJY6xke1ty1+zhY4G58AuvHo3ht6avAEVQ== + version "8.0.1" + resolved "https://registry.npmjs.org/eslint-config-standard-jsx/-/eslint-config-standard-jsx-8.0.1.tgz#987bdeb063f0bfbd1de55300b02fdd220c94a68a" + integrity sha512-SDnpVLSzTcT0eLNTG7s8ffRi3WadBBpw+pFsiBj4BcrHOFOga9O/7mjtNRyPgetmsiDPWGxsiS4UdJLZhaIukA== eslint-config-standard@12.0.0: version "12.0.0" - resolved "http://52.167.60.66:8081/repository/npm-all/eslint-config-standard/-/eslint-config-standard-12.0.0.tgz#638b4c65db0bd5a41319f96bba1f15ddad2107d9" + resolved "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-12.0.0.tgz#638b4c65db0bd5a41319f96bba1f15ddad2107d9" integrity sha512-COUz8FnXhqFitYj4DTqHzidjIL/t4mumGZto5c7DrBpvWoie+Sn3P4sLEzUGeYhRElWuFEf8K1S1EfvD1vixCQ== -eslint-config-standard@14.0.0, eslint-config-standard@~14.0.0: +eslint-config-standard@14.0.0: version "14.0.0" - resolved "http://52.167.60.66:8081/repository/npm-all/eslint-config-standard/-/eslint-config-standard-14.0.0.tgz#1de7bf5af37542dc6eef879ab7eb5e5e0f830747" + resolved "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-14.0.0.tgz#1de7bf5af37542dc6eef879ab7eb5e5e0f830747" integrity sha512-bV6e2LFvJEetrLjVAy4KWPOUsIhPWr040c649MigTPR6yUtaGuOt6CEAyNeez2lRiC+2+vjGWa02byjs25EB3A== eslint-config-standard@14.1.0: @@ -2635,28 +2531,33 @@ eslint-config-standard@14.1.0: resolved "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-14.1.0.tgz#b23da2b76fe5a2eba668374f246454e7058f15d4" integrity sha512-EF6XkrrGVbvv8hL/kYa/m6vnvmUT+K82pJJc4JJVMM6+Qgqh0pnwprSxdduDLB9p/7bIxD+YV5O0wfb8lmcPbA== +eslint-config-standard@~14.0.0: + version "14.0.1" + resolved "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-14.0.1.tgz#375c3636fb4bd453cb95321d873de12e4eef790b" + integrity sha512-1RWsAKTDTZgA8bIM6PSC9aTGDAUlKqNkYNJlTZ5xYD/HYkIM6GlcefFvgcJ8xi0SWG5203rttKYX28zW+rKNOg== + eslint-import-resolver-node@^0.3.1, eslint-import-resolver-node@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz#58f15fb839b8d0576ca980413476aab2472db66a" - integrity sha512-sfmTqJfPSizWu4aymbPr4Iidp5yKm8yDkHp+Ir3YiTHiiDfxh69mOUsmiqW6RZ9zRXFaF64GtYmN7e+8GHBv6Q== + version "0.3.3" + resolved "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.3.tgz#dbaa52b6b2816b50bc6711af75422de808e98404" + integrity sha512-b8crLDo0M5RSe5YG8Pu2DYBj71tSB6OvXkfzwbJU2w7y8P4/yo0MyF8jU26IEuEuHF2K5/gcAJE3LhQGqBBbVg== dependencies: debug "^2.6.9" - resolve "^1.5.0" + resolve "^1.13.1" -eslint-module-utils@^2.2.0, eslint-module-utils@^2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.4.0.tgz#8b93499e9b00eab80ccb6614e69f03678e84e09a" - integrity sha512-14tltLm38Eu3zS+mt0KvILC3q8jyIAH518MlG+HO0p+yK885Lb1UHTY/UgR91eOyGdmxAPb+OLoW4znqIT6Ndw== +eslint-module-utils@^2.2.0, eslint-module-utils@^2.4.0, eslint-module-utils@^2.4.1: + version "2.5.2" + resolved "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.5.2.tgz#7878f7504824e1b857dd2505b59a8e5eda26a708" + integrity sha512-LGScZ/JSlqGKiT8OC+cYRxseMjyqt6QO54nl281CK93unD89ijSeRV6An8Ci/2nvWVKe8K/Tqdm75RQoIOCr+Q== dependencies: - debug "^2.6.8" + debug "^2.6.9" pkg-dir "^2.0.0" -eslint-plugin-es@^1.3.1, eslint-plugin-es@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-es/-/eslint-plugin-es-1.4.0.tgz#475f65bb20c993fc10e8c8fe77d1d60068072da6" - integrity sha512-XfFmgFdIUDgvaRAlaXUkxrRg5JSADoRC8IkKLc/cISeR3yHVMefFHQZpcyXXEUUPHfy5DwviBcrfqlyqEwlQVw== +eslint-plugin-es@^1.3.1, eslint-plugin-es@^1.4.0, eslint-plugin-es@^1.4.1: + version "1.4.1" + resolved "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-1.4.1.tgz#12acae0f4953e76ba444bfd1b2271081ac620998" + integrity sha512-5fa/gR2yR3NxQf+UXkeLeP8FBBl6tSgdrAz1+cF84v1FMM4twGwQoqTnn+QxFLcPOrF4pdKEJKDB/q9GoyJrCA== dependencies: - eslint-utils "^1.3.0" + eslint-utils "^1.4.2" regexpp "^2.0.1" eslint-plugin-es@^2.0.0: @@ -2669,7 +2570,7 @@ eslint-plugin-es@^2.0.0: eslint-plugin-import@2.18.2, eslint-plugin-import@~2.18.0: version "2.18.2" - resolved "http://52.167.60.66:8081/repository/npm-all/eslint-plugin-import/-/eslint-plugin-import-2.18.2.tgz#02f1180b90b077b33d447a17a2326ceb400aceb6" + resolved "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.18.2.tgz#02f1180b90b077b33d447a17a2326ceb400aceb6" integrity sha512-5ohpsHAiUBRNaBWAF08izwUGlbrJoJJ+W9/TBwsGoR1MnlgfwMIKrFeSjWbt6moabiXW9xNvtFz+97KHRfI4HQ== dependencies: array-includes "^3.0.3" @@ -2684,9 +2585,27 @@ eslint-plugin-import@2.18.2, eslint-plugin-import@~2.18.0: read-pkg-up "^2.0.0" resolve "^1.11.0" +eslint-plugin-import@2.20.1: + version "2.20.1" + resolved "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.20.1.tgz#802423196dcb11d9ce8435a5fc02a6d3b46939b3" + integrity sha512-qQHgFOTjguR+LnYRoToeZWT62XM55MBVXObHM6SKFd1VzDcX/vqT1kAz8ssqigh5eMj8qXcRoXXGZpPP6RfdCw== + dependencies: + array-includes "^3.0.3" + array.prototype.flat "^1.2.1" + contains-path "^0.1.0" + debug "^2.6.9" + doctrine "1.5.0" + eslint-import-resolver-node "^0.3.2" + eslint-module-utils "^2.4.1" + has "^1.0.3" + minimatch "^3.0.4" + object.values "^1.1.0" + read-pkg-up "^2.0.0" + resolve "^1.12.0" + eslint-plugin-import@~2.14.0: version "2.14.0" - resolved "http://52.167.60.66:8081/repository/npm-all/eslint-plugin-import/-/eslint-plugin-import-2.14.0.tgz#6b17626d2e3e6ad52cfce8807a845d15e22111a8" + resolved "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.14.0.tgz#6b17626d2e3e6ad52cfce8807a845d15e22111a8" integrity sha512-FpuRtniD/AY6sXByma2Wr0TXvXJ4nA/2/04VPlfpmUDPOpOY264x+ILiwnrk/k4RINgDAyFZByxqPUbSQ5YE7g== dependencies: contains-path "^0.1.0" @@ -2700,13 +2619,13 @@ eslint-plugin-import@~2.14.0: read-pkg-up "^2.0.0" resolve "^1.6.0" -eslint-plugin-node@^9.1.0, eslint-plugin-node@~9.1.0: - version "9.1.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-node/-/eslint-plugin-node-9.1.0.tgz#f2fd88509a31ec69db6e9606d76dabc5adc1b91a" - integrity sha512-ZwQYGm6EoV2cfLpE1wxJWsfnKUIXfM/KM09/TlorkukgCAwmkgajEJnPCmyzoFPQQkmvo5DrW/nyKutNIw36Mw== +eslint-plugin-node@^9.1.0: + version "9.2.0" + resolved "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-9.2.0.tgz#b1911f111002d366c5954a6d96d3cd5bf2a3036a" + integrity sha512-2abNmzAH/JpxI4gEOwd6K8wZIodK3BmHbTxz4s79OIYwwIt2gkpEXlAouJXu4H1c9ySTnRso0tsuthSOZbUMlA== dependencies: - eslint-plugin-es "^1.4.0" - eslint-utils "^1.3.1" + eslint-plugin-es "^1.4.1" + eslint-utils "^1.4.2" ignore "^5.1.1" minimatch "^3.0.4" resolve "^1.10.1" @@ -2726,7 +2645,7 @@ eslint-plugin-node@~10.0.0: eslint-plugin-node@~7.0.1: version "7.0.1" - resolved "http://52.167.60.66:8081/repository/npm-all/eslint-plugin-node/-/eslint-plugin-node-7.0.1.tgz#a6e054e50199b2edd85518b89b4e7b323c9f36db" + resolved "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-7.0.1.tgz#a6e054e50199b2edd85518b89b4e7b323c9f36db" integrity sha512-lfVw3TEqThwq0j2Ba/Ckn2ABdwmL5dkOgAux1rvOk6CO7A6yGyPI2+zIxN6FyNkp1X1X/BSvKOceD6mBWSj4Yw== dependencies: eslint-plugin-es "^1.3.1" @@ -2736,19 +2655,31 @@ eslint-plugin-node@~7.0.1: resolve "^1.8.1" semver "^5.5.0" +eslint-plugin-node@~9.1.0: + version "9.1.0" + resolved "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-9.1.0.tgz#f2fd88509a31ec69db6e9606d76dabc5adc1b91a" + integrity sha512-ZwQYGm6EoV2cfLpE1wxJWsfnKUIXfM/KM09/TlorkukgCAwmkgajEJnPCmyzoFPQQkmvo5DrW/nyKutNIw36Mw== + dependencies: + eslint-plugin-es "^1.4.0" + eslint-utils "^1.3.1" + ignore "^5.1.1" + minimatch "^3.0.4" + resolve "^1.10.1" + semver "^6.1.0" + eslint-plugin-promise@4.2.1, eslint-plugin-promise@~4.2.1: version "4.2.1" - resolved "http://52.167.60.66:8081/repository/npm-all/eslint-plugin-promise/-/eslint-plugin-promise-4.2.1.tgz#845fd8b2260ad8f82564c1222fce44ad71d9418a" + resolved "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-4.2.1.tgz#845fd8b2260ad8f82564c1222fce44ad71d9418a" integrity sha512-VoM09vT7bfA7D+upt+FjeBO5eHIJQBUWki1aPvB+vbNiHS3+oGIJGIeyBtKQTME6UPXXy3vV07OL1tHd3ANuDw== eslint-plugin-promise@~4.0.0: version "4.0.1" - resolved "http://52.167.60.66:8081/repository/npm-all/eslint-plugin-promise/-/eslint-plugin-promise-4.0.1.tgz#2d074b653f35a23d1ba89d8e976a985117d1c6a2" + resolved "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-4.0.1.tgz#2d074b653f35a23d1ba89d8e976a985117d1c6a2" integrity sha512-Si16O0+Hqz1gDHsys6RtFRrW7cCTB6P7p3OJmKp3Y3dxpQE2qwOA7d3xnV+0mBmrPoi0RBnxlCKvqu70te6wjg== eslint-plugin-react@7.14.3, eslint-plugin-react@~7.14.2: version "7.14.3" - resolved "http://52.167.60.66:8081/repository/npm-all/eslint-plugin-react/-/eslint-plugin-react-7.14.3.tgz#911030dd7e98ba49e1b2208599571846a66bdf13" + resolved "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.14.3.tgz#911030dd7e98ba49e1b2208599571846a66bdf13" integrity sha512-EzdyyBWC4Uz2hPYBiEJrKCUi2Fn+BJ9B/pJQcjw5X+x/H2Nm59S4MJIvL4O5NEE0+WbnQwEBxWY03oUk+Bc3FA== dependencies: array-includes "^3.0.3" @@ -2761,9 +2692,25 @@ eslint-plugin-react@7.14.3, eslint-plugin-react@~7.14.2: prop-types "^15.7.2" resolve "^1.10.1" +eslint-plugin-react@7.18.3: + version "7.18.3" + resolved "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.18.3.tgz#8be671b7f6be095098e79d27ac32f9580f599bc8" + integrity sha512-Bt56LNHAQCoou88s8ViKRjMB2+36XRejCQ1VoLj716KI1MoE99HpTVvIThJ0rvFmG4E4Gsq+UgToEjn+j044Bg== + dependencies: + array-includes "^3.1.1" + doctrine "^2.1.0" + has "^1.0.3" + jsx-ast-utils "^2.2.3" + object.entries "^1.1.1" + object.fromentries "^2.0.2" + object.values "^1.1.1" + prop-types "^15.7.2" + resolve "^1.14.2" + string.prototype.matchall "^4.0.2" + eslint-plugin-react@~7.11.1: version "7.11.1" - resolved "http://52.167.60.66:8081/repository/npm-all/eslint-plugin-react/-/eslint-plugin-react-7.11.1.tgz#c01a7af6f17519457d6116aa94fc6d2ccad5443c" + resolved "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.11.1.tgz#c01a7af6f17519457d6116aa94fc6d2ccad5443c" integrity sha512-cVVyMadRyW7qsIUh3FHp3u6QHNhOgVrLQYdQEB1bPWBsgbNCHdFAeNMquBMCcZJu59eNthX053L70l7gRt4SCw== dependencies: array-includes "^3.0.3" @@ -2774,19 +2721,20 @@ eslint-plugin-react@~7.11.1: eslint-plugin-standard@4.0.1, eslint-plugin-standard@~4.0.0: version "4.0.1" - resolved "http://52.167.60.66:8081/repository/npm-all/eslint-plugin-standard/-/eslint-plugin-standard-4.0.1.tgz#ff0519f7ffaff114f76d1bd7c3996eef0f6e20b4" + resolved "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-4.0.1.tgz#ff0519f7ffaff114f76d1bd7c3996eef0f6e20b4" integrity sha512-v/KBnfyaOMPmZc/dmc6ozOdWqekGp7bBGq4jLAecEfPGmfKiWS4sA8sC0LqiV9w5qmXAtXVn4M3p1jSyhY85SQ== eslint-scope@3.7.1: version "3.7.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.1.tgz#3d63c3edfda02e06e01a452ad88caacc7cdcb6e8" + resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz#3d63c3edfda02e06e01a452ad88caacc7cdcb6e8" + integrity sha1-PWPD7f2gLgbgGkUq2IyqzHzctug= dependencies: esrecurse "^4.1.0" estraverse "^4.1.1" eslint-scope@^4.0.0: version "4.0.3" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" + resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== dependencies: esrecurse "^4.1.0" @@ -2794,20 +2742,13 @@ eslint-scope@^4.0.0: eslint-scope@^5.0.0: version "5.0.0" - resolved "http://52.167.60.66:8081/repository/npm-all/eslint-scope/-/eslint-scope-5.0.0.tgz#e87c8887c73e8d1ec84f1ca591645c358bfc8fb9" + resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.0.0.tgz#e87c8887c73e8d1ec84f1ca591645c358bfc8fb9" integrity sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw== dependencies: esrecurse "^4.1.0" estraverse "^4.1.1" -eslint-utils@^1.3.0, eslint-utils@^1.3.1, eslint-utils@^1.4.0: - version "1.4.2" - resolved "http://52.167.60.66:8081/repository/npm-all/eslint-utils/-/eslint-utils-1.4.2.tgz#166a5180ef6ab7eb462f162fd0e6f2463d7309ab" - integrity sha512-eAZS2sEUMlIeCjBeubdj45dmBHQwPHWyBcT1VSYB7o9x9WRRqKxyUoiXlRjyAwzN7YEzHJlYg0NmzDRWx6GP4Q== - dependencies: - eslint-visitor-keys "^1.0.0" - -eslint-utils@^1.4.2: +eslint-utils@^1.3.1, eslint-utils@^1.4.0, eslint-utils@^1.4.2, eslint-utils@^1.4.3: version "1.4.3" resolved "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz#74fec7c54d0776b6f67e0251040b5806564e981f" integrity sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q== @@ -2816,12 +2757,12 @@ eslint-utils@^1.4.2: eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0: version "1.1.0" - resolved "http://52.167.60.66:8081/repository/npm-all/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz#e2a82cea84ff246ad6fb57f9bde5b46621459ec2" + resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz#e2a82cea84ff246ad6fb57f9bde5b46621459ec2" integrity sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A== eslint@6.2.0: version "6.2.0" - resolved "http://52.167.60.66:8081/repository/npm-all/eslint/-/eslint-6.2.0.tgz#4c42c20e3fc03f28db25f34ccba621a9a47e8b56" + resolved "https://registry.npmjs.org/eslint/-/eslint-6.2.0.tgz#4c42c20e3fc03f28db25f34ccba621a9a47e8b56" integrity sha512-sS0SZwm5UAoI83F+cgdomz0cBNPs+AnRvEboNYeWvrZ8UcDHCu/5muocwoDL2TkHq9skkP0GvZjmwI8HG7S3sw== dependencies: "@babel/code-frame" "^7.0.0" @@ -2862,9 +2803,52 @@ eslint@6.2.0: text-table "^0.2.0" v8-compile-cache "^2.0.3" +eslint@6.8.0: + version "6.8.0" + resolved "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz#62262d6729739f9275723824302fb227c8c93ffb" + integrity sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig== + dependencies: + "@babel/code-frame" "^7.0.0" + ajv "^6.10.0" + chalk "^2.1.0" + cross-spawn "^6.0.5" + debug "^4.0.1" + doctrine "^3.0.0" + eslint-scope "^5.0.0" + eslint-utils "^1.4.3" + eslint-visitor-keys "^1.1.0" + espree "^6.1.2" + esquery "^1.0.1" + esutils "^2.0.2" + file-entry-cache "^5.0.1" + functional-red-black-tree "^1.0.1" + glob-parent "^5.0.0" + globals "^12.1.0" + ignore "^4.0.6" + import-fresh "^3.0.0" + imurmurhash "^0.1.4" + inquirer "^7.0.0" + is-glob "^4.0.0" + js-yaml "^3.13.1" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.3.0" + lodash "^4.17.14" + minimatch "^3.0.4" + mkdirp "^0.5.1" + natural-compare "^1.4.0" + optionator "^0.8.3" + progress "^2.0.0" + regexpp "^2.0.1" + semver "^6.1.2" + strip-ansi "^5.2.0" + strip-json-comments "^3.0.1" + table "^5.2.3" + text-table "^0.2.0" + v8-compile-cache "^2.0.3" + eslint@~5.4.0: version "5.4.0" - resolved "http://52.167.60.66:8081/repository/npm-all/eslint/-/eslint-5.4.0.tgz#d068ec03006bb9e06b429dc85f7e46c1b69fac62" + resolved "https://registry.npmjs.org/eslint/-/eslint-5.4.0.tgz#d068ec03006bb9e06b429dc85f7e46c1b69fac62" integrity sha512-UIpL91XGex3qtL6qwyCQJar2j3osKxK9e3ano3OcGEIRM4oWIpCkDg9x95AXEC2wMs7PnxzOkPZ2gq+tsMS9yg== dependencies: ajv "^6.5.0" @@ -2908,7 +2892,7 @@ eslint@~5.4.0: eslint@~6.1.0: version "6.1.0" - resolved "http://52.167.60.66:8081/repository/npm-all/eslint/-/eslint-6.1.0.tgz#06438a4a278b1d84fb107d24eaaa35471986e646" + resolved "https://registry.npmjs.org/eslint/-/eslint-6.1.0.tgz#06438a4a278b1d84fb107d24eaaa35471986e646" integrity sha512-QhrbdRD7ofuV09IuE2ySWBz0FyXCq0rriLTZXZqaWSI79CVtHVRdkFuFTViiqzZhkCgfOh9USpriuGN2gIpZDQ== dependencies: "@babel/code-frame" "^7.0.0" @@ -2994,23 +2978,14 @@ eslint@~6.4.0: espree@^4.0.0: version "4.1.0" - resolved "http://52.167.60.66:8081/repository/npm-all/espree/-/espree-4.1.0.tgz#728d5451e0fd156c04384a7ad89ed51ff54eb25f" + resolved "https://registry.npmjs.org/espree/-/espree-4.1.0.tgz#728d5451e0fd156c04384a7ad89ed51ff54eb25f" integrity sha512-I5BycZW6FCVIub93TeVY1s7vjhP9CY6cXCznIRfiig7nRviKZYdRnj/sHEWC6A7WE9RDWOFq9+7OsWSYz8qv2w== dependencies: acorn "^6.0.2" acorn-jsx "^5.0.0" eslint-visitor-keys "^1.0.0" -espree@^6.0.0, espree@^6.1.0: - version "6.1.0" - resolved "http://52.167.60.66:8081/repository/npm-all/espree/-/espree-6.1.0.tgz#a1e8aa65bf29a331d70351ed814a80e7534e0884" - integrity sha512-boA7CHRLlVWUSg3iL5Kmlt/xT3Q+sXnKoRYYzj1YeM10A76TEJBbotV5pKbnK42hEUIr121zTv+QLRM5LsCPXQ== - dependencies: - acorn "^7.0.0" - acorn-jsx "^5.0.0" - eslint-visitor-keys "^1.1.0" - -espree@^6.1.1: +espree@^6.0.0, espree@^6.1.0, espree@^6.1.1, espree@^6.1.2: version "6.1.2" resolved "https://registry.npmjs.org/espree/-/espree-6.1.2.tgz#6c272650932b4f91c3714e5e7b5f5e2ecf47262d" integrity sha512-2iUPuuPP+yW1PZaMSDM9eyVf8D5P0Hi8h83YtZ5bPc/zHYjII5khoixIUTMO794NOY8F/ThF1Bo8ncZILarUTA== @@ -3021,36 +2996,36 @@ espree@^6.1.1: esprima@^4.0.0: version "4.0.1" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + resolved "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== esquery@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.1.tgz#406c51658b1f5991a5f9b62b1dc25b00e3e5c708" - integrity sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA== + version "1.1.0" + resolved "https://registry.npmjs.org/esquery/-/esquery-1.1.0.tgz#c5c0b66f383e7656404f86b31334d72524eddb48" + integrity sha512-MxYW9xKmROWF672KqjO75sszsA8Mxhw06YFeS5VHlB98KDHbOSurm3ArsjO60Eaf3QmGMCP1yn+0JQkNLo/97Q== dependencies: estraverse "^4.0.0" esrecurse@^4.1.0: version "4.2.1" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" + resolved "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" integrity sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ== dependencies: estraverse "^4.1.0" estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1: - version "4.2.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" - integrity sha1-De4/7TH81GlhjOc0IJn8GvoL2xM= + version "4.3.0" + resolved "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== esutils@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" - integrity sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs= + version "2.0.3" + resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== event-emitter@^0.3.5: version "0.3.5" - resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" + resolved "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" integrity sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk= dependencies: d "1" @@ -3058,12 +3033,12 @@ event-emitter@^0.3.5: eventemitter3@^4.0.0: version "4.0.0" - resolved "http://52.167.60.66:8081/repository/npm-all/eventemitter3/-/eventemitter3-4.0.0.tgz#d65176163887ee59f386d64c82610b696a4a74eb" + resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.0.tgz#d65176163887ee59f386d64c82610b696a4a74eb" integrity sha512-qerSRB0p+UDEssxTtm6EDKcE7W4OaoisfIMl4CngyEhjpYglocpNg6UEqCvemdGhosAsg4sO2dXJOdyBifPGCg== evp_bytestokey@^1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" + resolved "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== dependencies: md5.js "^1.3.4" @@ -3071,7 +3046,7 @@ evp_bytestokey@^1.0.3: execa@^0.7.0: version "0.7.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" + resolved "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" integrity sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c= dependencies: cross-spawn "^5.0.1" @@ -3082,29 +3057,16 @@ execa@^0.7.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" - expand-brackets@^0.1.4: version "0.1.5" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" + resolved "https://registry.npmjs.org/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" + resolved "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= dependencies: debug "^2.3.3" @@ -3117,14 +3079,14 @@ expand-brackets@^2.1.4: expand-range@^1.8.1: version "1.8.2" - resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" + resolved "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" integrity sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc= dependencies: fill-range "^2.1.0" expand-tilde@^2.0.0, expand-tilde@^2.0.2: version "2.0.2" - resolved "http://52.167.60.66:8081/repository/npm-all/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502" + resolved "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502" integrity sha1-l+gBqgUt8CRU3kawK/YhZCzchQI= dependencies: homedir-polyfill "^1.0.1" @@ -3138,14 +3100,14 @@ ext@^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" + resolved "https://registry.npmjs.org/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" + resolved "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= dependencies: assign-symbols "^1.0.0" @@ -3153,12 +3115,12 @@ extend-shallow@^3.0.0, extend-shallow@^3.0.2: extend@^3.0.0, extend@~3.0.2: version "3.0.2" - resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + resolved "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== external-editor@^2.1.0: version "2.2.0" - resolved "http://52.167.60.66:8081/repository/npm-all/external-editor/-/external-editor-2.2.0.tgz#045511cfd8d133f3846673d1047c154e214ad3d5" + resolved "https://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz#045511cfd8d133f3846673d1047c154e214ad3d5" integrity sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A== dependencies: chardet "^0.4.0" @@ -3166,9 +3128,9 @@ external-editor@^2.1.0: tmp "^0.0.33" external-editor@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.0.3.tgz#5866db29a97826dbe4bf3afd24070ead9ea43a27" - integrity sha512-bn71H9+qWoOQKyZDo25mOMVpSmXROAsTJVVVYzrrtol3d4y+AsKjf4Iwl2Q+IuT0kFSQ1qo166UuIwqYq7mGnA== + version "3.1.0" + resolved "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" + integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== dependencies: chardet "^0.7.0" iconv-lite "^0.4.24" @@ -3176,14 +3138,14 @@ external-editor@^3.0.3: extglob@^0.3.1: version "0.3.2" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" + resolved "https://registry.npmjs.org/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" + resolved "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== dependencies: array-unique "^0.3.2" @@ -3197,46 +3159,46 @@ extglob@^2.0.4: extsprintf@1.3.0: version "1.3.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" + resolved "https://registry.npmjs.org/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" + resolved "https://registry.npmjs.org/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= -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-deep-equal@^3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz#545145077c501491e33b15ec408c294376e94ae4" + integrity sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA== 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= + version "2.1.0" + resolved "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== -fast-levenshtein@~2.0.4: +fast-levenshtein@~2.0.6: version "2.0.6" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= figures@^2.0.0: version "2.0.0" - resolved "http://52.167.60.66:8081/repository/npm-all/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" + resolved "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" integrity sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI= dependencies: escape-string-regexp "^1.0.5" figures@^3.0.0: - version "3.0.0" - resolved "http://52.167.60.66:8081/repository/npm-all/figures/-/figures-3.0.0.tgz#756275c964646163cc6f9197c7a0295dbfd04de9" - integrity sha512-HKri+WoWoUgr83pehn/SIgLOMZ9nAWC6dcGj26RY2R4F50u4+RTUz0RCrUlOV3nKRAICW1UGzyb+kcX2qK1S/g== + version "3.2.0" + resolved "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" + integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== dependencies: escape-string-regexp "^1.0.5" file-entry-cache@^2.0.0: version "2.0.0" - resolved "http://52.167.60.66:8081/repository/npm-all/file-entry-cache/-/file-entry-cache-2.0.0.tgz#c392990c3e684783d838b8c84a45d8a048458361" + resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz#c392990c3e684783d838b8c84a45d8a048458361" integrity sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E= dependencies: flat-cache "^1.2.1" @@ -3244,24 +3206,24 @@ file-entry-cache@^2.0.0: file-entry-cache@^5.0.1: version "5.0.1" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c" + resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c" integrity sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g== dependencies: flat-cache "^2.0.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" + resolved "https://registry.npmjs.org/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" + resolved "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" integrity sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY= fill-range@^2.1.0: version "2.2.4" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.4.tgz#eb1e773abb056dcd8df2bfdf6af59b8b3a936565" + resolved "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz#eb1e773abb056dcd8df2bfdf6af59b8b3a936565" integrity sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q== dependencies: is-number "^2.1.0" @@ -3272,7 +3234,7 @@ fill-range@^2.1.0: fill-range@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" + resolved "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= dependencies: extend-shallow "^2.0.1" @@ -3281,17 +3243,17 @@ fill-range@^4.0.0: to-regex-range "^2.1.0" find-cache-dir@^3.2.0: - version "3.2.0" - resolved "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.2.0.tgz#e7fe44c1abc1299f516146e563108fd1006c1874" - integrity sha512-1JKclkYYsf1q9WIJKLZa9S9muC+08RIjzAlLrK4QcYLJMS6mk9yombQ9qf+zJ7H9LS800k0s44L4sDq9VYzqyg== + version "3.3.0" + resolved "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.0.tgz#4d74ed1fe9ef1731467ca24378e8f8f5c8b6ed11" + integrity sha512-PtXtQb7IrD8O+h6Cq1dbpJH5NzD8+9keN1zZ0YlpDzl1PwXEJEBj6u1Xa92t1Hwluoozd9TNKul5Hi2iqpsWwg== dependencies: commondir "^1.0.1" - make-dir "^3.0.0" + make-dir "^3.0.2" pkg-dir "^4.1.0" find-node-modules@^2.0.0: version "2.0.0" - resolved "http://52.167.60.66:8081/repository/npm-all/find-node-modules/-/find-node-modules-2.0.0.tgz#5db1fb9e668a3d451db3d618cd167cdd59e41b69" + resolved "https://registry.npmjs.org/find-node-modules/-/find-node-modules-2.0.0.tgz#5db1fb9e668a3d451db3d618cd167cdd59e41b69" integrity sha512-8MWIBRgJi/WpjjfVXumjPKCtmQ10B+fjx6zmSA+770GMJirLhWIzg8l763rhjl9xaeaHbnxPNRQKq2mgMhr+aw== dependencies: findup-sync "^3.0.0" @@ -3299,19 +3261,19 @@ find-node-modules@^2.0.0: find-root@^1.0.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4" + resolved "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4" integrity sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng== find-up@3.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" + resolved "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== dependencies: locate-path "^3.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" + resolved "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= dependencies: locate-path "^2.0.0" @@ -3326,7 +3288,7 @@ find-up@^4.0.0, find-up@^4.1.0: findup-sync@^3.0.0: version "3.0.0" - resolved "http://52.167.60.66:8081/repository/npm-all/findup-sync/-/findup-sync-3.0.0.tgz#17b108f9ee512dfb7a5c7f3c8b27ea9e1a9c08d1" + resolved "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz#17b108f9ee512dfb7a5c7f3c8b27ea9e1a9c08d1" integrity sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg== dependencies: detect-file "^1.0.0" @@ -3336,7 +3298,7 @@ findup-sync@^3.0.0: flat-cache@^1.2.1: version "1.3.4" - resolved "http://52.167.60.66:8081/repository/npm-all/flat-cache/-/flat-cache-1.3.4.tgz#2c2ef77525cc2929007dfffa1dd314aa9c9dee6f" + resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.4.tgz#2c2ef77525cc2929007dfffa1dd314aa9c9dee6f" integrity sha512-VwyB3Lkgacfik2vhqR4uv2rvebqmDvFu4jlN/C1RzWoJEo8I7z4Q404oiqYCkq41mni8EzQnm95emU9seckwtg== dependencies: circular-json "^0.3.1" @@ -3346,7 +3308,7 @@ flat-cache@^1.2.1: flat-cache@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" + resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" integrity sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA== dependencies: flatted "^2.0.0" @@ -3355,24 +3317,24 @@ flat-cache@^2.0.1: flat@^4.1.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/flat/-/flat-4.1.0.tgz#090bec8b05e39cba309747f1d588f04dbaf98db2" + resolved "https://registry.npmjs.org/flat/-/flat-4.1.0.tgz#090bec8b05e39cba309747f1d588f04dbaf98db2" integrity sha512-Px/TiLIznH7gEDlPXcUD4KnBusa6kR6ayRUVcnEAbreRIuhkqow/mun59BuRXwoYk7ZQOLW1ZM05ilIvK38hFw== dependencies: is-buffer "~2.0.3" flatted@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.0.tgz#55122b6536ea496b4b44893ee2608141d10d9916" - integrity sha512-R+H8IZclI8AAkSBRQJLVOsxwAoHd6WC40b4QTNWIjzAa6BXOBfQcM587MXDTVPeYaopFNWHUFLx7eNmHDSxMWg== + version "2.0.1" + resolved "https://registry.npmjs.org/flatted/-/flatted-2.0.1.tgz#69e57caa8f0eacbc281d2e2cb458d46fdb449e08" + integrity sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg== for-in@^1.0.1, for-in@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + resolved "https://registry.npmjs.org/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" + resolved "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" integrity sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4= dependencies: for-in "^1.0.1" @@ -3387,12 +3349,21 @@ foreground-child@^2.0.0: forever-agent@~0.6.1: version "0.6.1" - resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + resolved "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= -form-data@^2.3.1, form-data@~2.3.2: +form-data@^2.3.1: + version "2.5.1" + resolved "https://registry.npmjs.org/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" + resolved "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== dependencies: asynckit "^0.4.0" @@ -3400,13 +3371,13 @@ form-data@^2.3.1, form-data@~2.3.2: mime-types "^2.1.12" formidable@^1.2.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/formidable/-/formidable-1.2.1.tgz#70fb7ca0290ee6ff961090415f4b3df3d2082659" - integrity sha512-Fs9VRguL0gqGHkXS5GQiMCr1VhZBxz0JnJs4JmMp/2jL18Fmbzvv7vOFRU+U8TBkHEE/CX1qDXzJplVULgsLeg== + version "1.2.2" + resolved "https://registry.npmjs.org/formidable/-/formidable-1.2.2.tgz#bf69aea2972982675f00865342b982986f6b8dd9" + integrity sha512-V8gLm+41I/8kguQ4/o1D3RIHRmhYFG4pnNyonvua+40rqcEmT4+V71yaZ3B457xbbgCsCfjSPi65u/W6vK1U5Q== fragment-cache@^0.2.1: version "0.2.1" - resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" + resolved "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= dependencies: map-cache "^0.2.2" @@ -3426,44 +3397,44 @@ fs-extra@^8.1.0: universalify "^0.1.0" fs-minipass@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.5.tgz#06c277218454ec288df77ada54a03b8702aacb9d" - integrity sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ== + version "1.2.7" + resolved "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7" + integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA== dependencies: - minipass "^2.2.1" + minipass "^2.6.0" fs-readdir-recursive@^1.0.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz#e32fc030a2ccee44a6b5371308da54be0b397d27" + resolved "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz#e32fc030a2ccee44a6b5371308da54be0b397d27" integrity sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA== fs.realpath@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= fsevents@^1.0.0, fsevents@^1.2.7: - version "1.2.8" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.8.tgz#57ea5320f762cd4696e5e8e87120eccc8b11cacf" - integrity sha512-tPvHgPGB7m40CZ68xqFGkKuzN+RnpGmSV+hgeKxhRpbxdqKXUFJGC3yonBOLzQBcJyGpdZFDfCsdOC2KFsXzeA== + version "1.2.11" + resolved "https://registry.npmjs.org/fsevents/-/fsevents-1.2.11.tgz#67bf57f4758f02ede88fb2a1712fef4d15358be3" + integrity sha512-+ux3lx6peh0BpvY0JebGyZoiR4D+oYzdPZMKJwkZ+sFkNJzpL7tXc/wehS49gUAxg3tmMHPHZkA8JU2rhhgDHw== dependencies: + bindings "^1.5.0" nan "^2.12.1" - node-pre-gyp "^0.12.0" function-bind@^1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== functional-red-black-tree@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" + resolved "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= funding@^1.0.0: - version "1.0.3" - resolved "http://52.167.60.66:8081/repository/npm-all/funding/-/funding-1.0.3.tgz#a4dcc4bbd4f723dfe6c5b25ce47fec1bf305f5e6" - integrity sha512-NYD7mh7cXbxFmXxk2BruMA6peWAQFOXuBpNgRjhiTPr8AB1DX0/vNUXHRiuqpYNGq0ow3UDDIrTR6it/mlauyg== + version "1.0.9" + resolved "https://registry.npmjs.org/funding/-/funding-1.0.9.tgz#3b0b1c920095c74949639587554eacc817e50e63" + integrity sha512-W7lR6g6WKr00qGBmKE8VpTlXkI+vWdw56a+9jWunm8hubl3wtP1PBuc/iNes7c7HQyq9HwXVuDjNogjF3MiXMA== dependencies: boxen "^3.2.0" chalk "^2.4.2" @@ -3473,7 +3444,7 @@ funding@^1.0.0: gauge@~2.7.3: version "2.7.4" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" + resolved "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c= dependencies: aproba "^1.0.3" @@ -3491,67 +3462,55 @@ gensync@^1.0.0-beta.1: integrity sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg== geojson-rbush@3.x: - version "3.1.1" - resolved "https://registry.yarnpkg.com/geojson-rbush/-/geojson-rbush-3.1.1.tgz#dd40bdd26e92813d888d7b489e8d2980695a49b4" - integrity sha512-Bl6U75yDCsERl2P6PiBkvxIoXsSv5SEEiDJy+a7JarcEe17jEm8zamAmi82KLRcIlcuRZxgeVCl1xw5UkxOREw== + version "3.1.2" + resolved "https://registry.npmjs.org/geojson-rbush/-/geojson-rbush-3.1.2.tgz#577d6ec70ba986d4e60b741f1df5147faeb82c97" + integrity sha512-grkfdg3HIeTjwTfiJe5FT8+fGU3fABCc+vRJDBwdQz9kkLF0Sbif2gs2JUzjewwgmnvLGy9fInySDeADoNuk7w== dependencies: "@turf/bbox" "*" "@turf/helpers" "6.x" "@turf/meta" "6.x" - rbush "*" - -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== + rbush "^2.0.0" 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" + resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== get-func-name@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41" + resolved "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41" integrity sha1-6td0q+5y4gQJQzoGY2YCPdaIekE= get-stdin@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-6.0.0.tgz#9e09bf712b360ab9225e812048f71fde9c89657b" + resolved "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz#9e09bf712b360ab9225e812048f71fde9c89657b" integrity sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g== get-stdin@^7.0.0: version "7.0.0" - resolved "http://52.167.60.66:8081/repository/npm-all/get-stdin/-/get-stdin-7.0.0.tgz#8d5de98f15171a125c5e516643c7a6d0ea8a96f6" + resolved "https://registry.npmjs.org/get-stdin/-/get-stdin-7.0.0.tgz#8d5de98f15171a125c5e516643c7a6d0ea8a96f6" integrity sha512-zRKcywvrXlXsA0v0i9Io4KDRaAw7+a1ZpjRwl9Wox8PFlVCCHra7E9c4kqXCoCM9nR5tBkaTTZRBoCm60bFqTQ== get-stream@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" + resolved "https://registry.npmjs.org/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-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" + resolved "https://registry.npmjs.org/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" + resolved "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= dependencies: assert-plus "^1.0.0" glob-base@^0.3.0: version "0.3.0" - resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" + resolved "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" integrity sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q= dependencies: glob-parent "^2.0.0" @@ -3559,29 +3518,29 @@ glob-base@^0.3.0: glob-parent@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" integrity sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg= dependencies: is-glob "^2.0.0" glob-parent@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= dependencies: is-glob "^3.1.0" path-dirname "^1.0.0" glob-parent@^5.0.0: - version "5.0.0" - resolved "http://52.167.60.66:8081/repository/npm-all/glob-parent/-/glob-parent-5.0.0.tgz#1dc99f0f39b006d3e92c2c284068382f0c20e954" - integrity sha512-Z2RwiujPRGluePM6j699ktJYxmPpJKCfpGA13jz2hmFZC7gKetzrWvg5KN3+OsIFmydGyZ1AVwERCq1w/ZZwRg== + version "5.1.0" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.0.tgz#5f4c1d1e748d30cd73ad2944b3577a81b081e8c2" + integrity sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw== dependencies: is-glob "^4.0.1" -glob@7.1.3, glob@^7.0.5, glob@^7.1.2, glob@^7.1.3: +glob@7.1.3: version "7.1.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" + resolved "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== dependencies: fs.realpath "^1.0.0" @@ -3591,7 +3550,7 @@ glob@7.1.3, glob@^7.0.5, glob@^7.1.2, glob@^7.1.3: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.0.0, glob@^7.1.4, glob@^7.1.6: +glob@^7.0.0, glob@^7.0.5, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: version "7.1.6" resolved "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== @@ -3605,14 +3564,14 @@ glob@^7.0.0, glob@^7.1.4, glob@^7.1.6: global-dirs@^0.1.0: version "0.1.1" - resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-0.1.1.tgz#b319c0dd4607f353f3be9cca4c72fc148c49f445" + resolved "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz#b319c0dd4607f353f3be9cca4c72fc148c49f445" integrity sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU= dependencies: ini "^1.3.4" global-modules@^1.0.0: version "1.0.0" - resolved "http://52.167.60.66:8081/repository/npm-all/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea" + resolved "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea" integrity sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg== dependencies: global-prefix "^1.0.1" @@ -3621,7 +3580,7 @@ global-modules@^1.0.0: global-prefix@^1.0.1: version "1.0.2" - resolved "http://52.167.60.66:8081/repository/npm-all/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe" + resolved "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe" integrity sha1-2/dDxsFJklk8ZVVoy2btMsASLr4= dependencies: expand-tilde "^2.0.2" @@ -3631,18 +3590,25 @@ global-prefix@^1.0.1: which "^1.2.14" globals@^11.1.0, globals@^11.7.0: - version "11.11.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.11.0.tgz#dcf93757fa2de5486fbeed7118538adf789e9c2e" - integrity sha512-WHq43gS+6ufNOEqlrDBxVEbb8ntfXrfAUU2ZOpCxrBdGKW3gyv8mCxAfIBD0DroPKGrJ2eSsXsLtY9MPntsyTw== + version "11.12.0" + resolved "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + +globals@^12.1.0: + version "12.3.0" + resolved "https://registry.npmjs.org/globals/-/globals-12.3.0.tgz#1e564ee5c4dded2ab098b0f88f24702a3c56be13" + integrity sha512-wAfjdLgFsPZsklLJvOBUBmzYE8/CwhEqSBEMRXA3qxIiNtyqvjYurAtIfDh6chlEPUfmTY3MnZh5Hfh4q0UlIw== + dependencies: + type-fest "^0.8.1" globals@^9.18.0: version "9.18.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" + resolved "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" integrity sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ== got@^6.7.1: version "6.7.1" - resolved "https://registry.yarnpkg.com/got/-/got-6.7.1.tgz#240cd05785a9a18e561dc1b44b41c763ef1e8db0" + resolved "https://registry.npmjs.org/got/-/got-6.7.1.tgz#240cd05785a9a18e561dc1b44b41c763ef1e8db0" integrity sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA= dependencies: create-error-class "^3.0.0" @@ -3657,19 +3623,14 @@ got@^6.7.1: 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, graceful-fs@^4.1.4, graceful-fs@^4.1.9: - version "4.2.2" - resolved "http://52.167.60.66:8081/repository/npm-all/graceful-fs/-/graceful-fs-4.2.2.tgz#6f0952605d0140c1cfdb138ed005775b92d67b02" - integrity sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q== - -graceful-fs@^4.1.6, graceful-fs@^4.2.0: +graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.4, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.0: version "4.2.3" resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423" integrity sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ== growl@1.10.5: version "1.10.5" - resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" + resolved "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== handlebars@^4.7.2: @@ -3685,12 +3646,12 @@ handlebars@^4.7.2: har-schema@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" + resolved "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= -har-validator@~5.1.0: +har-validator@~5.1.3: version "5.1.3" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080" + resolved "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080" integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g== dependencies: ajv "^6.5.5" @@ -3698,13 +3659,14 @@ har-validator@~5.1.0: has-ansi@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" + resolved "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" + integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= dependencies: ansi-regex "^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" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= has-flag@^4.0.0: @@ -3712,19 +3674,19 @@ has-flag@^4.0.0: resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== -has-symbols@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44" - integrity sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q= +has-symbols@^1.0.0, has-symbols@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/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" + resolved "https://registry.npmjs.org/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" + resolved "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= dependencies: get-value "^2.0.3" @@ -3733,7 +3695,7 @@ has-value@^0.3.1: has-value@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" + resolved "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= dependencies: get-value "^2.0.6" @@ -3742,12 +3704,12 @@ has-value@^1.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" + resolved "https://registry.npmjs.org/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" + resolved "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= dependencies: is-number "^3.0.0" @@ -3755,14 +3717,14 @@ has-values@^1.0.0: has@^1.0.1, has@^1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + resolved "https://registry.npmjs.org/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== dependencies: function-bind "^1.1.1" hash-base@^3.0.0: version "3.0.4" - resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918" + resolved "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918" integrity sha1-X8hoaEfs1zSZQDMZprCj8/auSRg= dependencies: inherits "^2.0.1" @@ -3770,23 +3732,23 @@ hash-base@^3.0.0: hash.js@^1.0.0, hash.js@^1.0.3: version "1.1.7" - resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" + resolved "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== dependencies: inherits "^2.0.3" minimalistic-assert "^1.0.1" hasha@^5.0.0: - version "5.1.0" - resolved "https://registry.npmjs.org/hasha/-/hasha-5.1.0.tgz#dd05ccdfcfe7dab626247ce2a58efe461922f4ca" - integrity sha512-OFPDWmzPN1l7atOV1TgBVmNtBxaIysToK6Ve9DK+vT6pYuklw/nPNT+HJbZi0KDcI6vWB+9tgvZ5YD7fA3CXcA== + version "5.2.0" + resolved "https://registry.npmjs.org/hasha/-/hasha-5.2.0.tgz#33094d1f69c40a4a6ac7be53d5fe3ff95a269e0c" + integrity sha512-2W+jKdQbAdSIrggA8Q35Br8qKadTrqCTC8+XZvBWepKDK6m9XkX6Iz1a2yh2KP01kzAR/dpuMeUnocoLYDcskw== dependencies: is-stream "^2.0.0" type-fest "^0.8.0" he@1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" + resolved "https://registry.npmjs.org/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== highlight.js@^9.17.1: @@ -3796,7 +3758,7 @@ highlight.js@^9.17.1: hmac-drbg@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" + resolved "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= dependencies: hash.js "^1.0.3" @@ -3805,7 +3767,7 @@ hmac-drbg@^1.0.0: 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" + resolved "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8" integrity sha1-42w/LSyufXRqhX440Y1fMqeILbg= dependencies: os-homedir "^1.0.0" @@ -3813,15 +3775,15 @@ home-or-tmp@^2.0.0: homedir-polyfill@^1.0.1: version "1.0.3" - resolved "http://52.167.60.66:8081/repository/npm-all/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8" + resolved "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8" integrity sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA== dependencies: parse-passwd "^1.0.0" hosted-git-info@^2.1.4: - version "2.7.1" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.7.1.tgz#97f236977bd6e125408930ff6de3eec6281ec047" - integrity sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w== + version "2.8.7" + resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.7.tgz#4d2e0d5248e1cfabc984b0f6a6d75fe36e679511" + integrity sha512-ChkjQtKJ3GI6SsI4O5jwr8q8EPrWCnxuc4Tbx+vRI5x6mDOpjKKltNo1lRlszw3xwgTOSns1ZRBiMmmwpcvLxg== html-escaper@^2.0.0: version "2.0.0" @@ -3830,7 +3792,7 @@ html-escaper@^2.0.0: http-signature@~1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" + resolved "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= dependencies: assert-plus "^1.0.0" @@ -3839,64 +3801,64 @@ http-signature@~1.2.0: iconv-lite@^0.4.17, iconv-lite@^0.4.24, iconv-lite@^0.4.4, iconv-lite@~0.4.13: version "0.4.24" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== dependencies: safer-buffer ">= 2.1.2 < 3" idb-wrapper@^1.4.1: version "1.7.2" - resolved "https://registry.yarnpkg.com/idb-wrapper/-/idb-wrapper-1.7.2.tgz#8251afd5e77fe95568b1c16152eb44b396767ea2" + resolved "https://registry.npmjs.org/idb-wrapper/-/idb-wrapper-1.7.2.tgz#8251afd5e77fe95568b1c16152eb44b396767ea2" integrity sha512-zfNREywMuf0NzDo9mVsL0yegjsirJxHpKHvWcyRozIqQy89g0a3U+oBPOCN4cc0oCiOuYgZHimzaW/R46G1Mpg== ignore-by-default@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/ignore-by-default/-/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09" + resolved "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09" integrity sha1-SMptcvbGo68Aqa1K5odr44ieKwk= ignore-walk@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.1.tgz#a83e62e7d272ac0e3b551aaa82831a19b69f82f8" - integrity sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ== + version "3.0.3" + resolved "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.3.tgz#017e2447184bfeade7c238e4aefdd1e8f95b1e37" + integrity sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw== dependencies: minimatch "^3.0.4" ignore@^3.0.9: version "3.3.10" - resolved "http://52.167.60.66:8081/repository/npm-all/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" + resolved "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug== ignore@^4.0.2, ignore@^4.0.6: version "4.0.6" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" + resolved "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== ignore@^5.0.0, ignore@^5.1.1: version "5.1.4" - resolved "http://52.167.60.66:8081/repository/npm-all/ignore/-/ignore-5.1.4.tgz#84b7b3dbe64552b6ef0eca99f6743dbec6d97adf" + resolved "https://registry.npmjs.org/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" + resolved "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" integrity sha1-nbHb0Pr43m++D13V5Wu2BigN5ps= import-fresh@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.0.0.tgz#a3d897f420cab0e671236897f75bc14b4885c390" - integrity sha512-pOnA9tfM3Uwics+SaBLCNyZZZbK+4PTu0OPZtLlMIrv17EdBoC15S9Kn8ckJ9TZTyKb3ywNE5y1yeDxxGA7nTQ== + version "3.2.1" + resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66" + integrity sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ== dependencies: parent-module "^1.0.0" resolve-from "^4.0.0" import-lazy@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43" + resolved "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43" integrity sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM= imurmurhash@^0.1.4: version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + resolved "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= indent-string@^4.0.0: @@ -3906,25 +3868,25 @@ indent-string@^4.0.0: inflight@^1.0.4: version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= dependencies: once "^1.3.0" wrappy "1" inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= + version "2.0.4" + resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== ini@^1.3.4, ini@~1.3.0: version "1.3.5" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" + resolved "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== inquirer@^5.2.0: version "5.2.0" - resolved "http://52.167.60.66:8081/repository/npm-all/inquirer/-/inquirer-5.2.0.tgz#db350c2b73daca77ff1243962e9f22f099685726" + resolved "https://registry.npmjs.org/inquirer/-/inquirer-5.2.0.tgz#db350c2b73daca77ff1243962e9f22f099685726" integrity sha512-E9BmnJbAKLPGonz0HeWHtbKf+EeSP93paWO3ZYoUpq/aowXvYGjjCSuashhXPpzbArIjBbji39THkxTz9ZeEUQ== dependencies: ansi-escapes "^3.0.0" @@ -3942,9 +3904,28 @@ inquirer@^5.2.0: through "^2.3.6" inquirer@^6.4.1: - version "6.5.1" - resolved "http://52.167.60.66:8081/repository/npm-all/inquirer/-/inquirer-6.5.1.tgz#8bfb7a5ac02dac6ff641ac4c5ff17da112fcdb42" - integrity sha512-uxNHBeQhRXIoHWTSNYUFhQVrHYFThIt6IVo2fFmSe8aBwdR3/w6b58hJpiL/fMukFkvGzjg+hSxFtwvVmKZmXw== + version "6.5.2" + resolved "https://registry.npmjs.org/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" + +inquirer@^7.0.0: + version "7.0.4" + resolved "https://registry.npmjs.org/inquirer/-/inquirer-7.0.4.tgz#99af5bde47153abca23f5c7fc30db247f39da703" + integrity sha512-Bu5Td5+j11sCkqfqmUTiwv+tWisMtP0L7Q8WrqA2C/BbBhy1YTdFrvjjlrKq8oagA/tLQBski2Gcx/Sqyi2qSQ== dependencies: ansi-escapes "^4.2.1" chalk "^2.4.2" @@ -3955,11 +3936,20 @@ inquirer@^6.4.1: lodash "^4.17.15" mute-stream "0.0.8" run-async "^2.2.0" - rxjs "^6.4.0" + rxjs "^6.5.3" string-width "^4.1.0" strip-ansi "^5.1.0" through "^2.3.6" +internal-slot@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.2.tgz#9c2e9fb3cd8e5e4256c6f45fe310067fcfa378a3" + integrity sha512-2cQNfwhAfJIkU4KZPkDI+Gj5yNNnbqi40W9Gge6dfnk4TocEVm00B3bdiL+JINrbGJil2TeHvM4rETGzk/f/0g== + dependencies: + es-abstract "^1.17.0-next.1" + has "^1.0.3" + side-channel "^1.0.2" + interpret@^1.0.0: version "1.2.0" resolved "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz#d5061a6224be58e8083985f5014d844359576296" @@ -3967,95 +3957,91 @@ interpret@^1.0.0: invariant@^2.2.2: version "2.2.4" - resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" + resolved "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" + integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== dependencies: loose-envify "^1.0.0" -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-regex@^2.0.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" + resolved "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= ip-regex@^4.1.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-4.1.0.tgz#5ad62f685a14edb421abebc2fff8db94df67b455" + resolved "https://registry.npmjs.org/ip-regex/-/ip-regex-4.1.0.tgz#5ad62f685a14edb421abebc2fff8db94df67b455" integrity sha512-pKnZpbgCTfH/1NLIlOduP/V+WRXzC2MOz3Qo8xmxk8C5GudJLgK5QyLVXOSWy3ParAH7Eemurl3xjv/WXYFvMA== 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" + resolved "https://registry.npmjs.org/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" + resolved "https://registry.npmjs.org/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" + resolved "https://registry.npmjs.org/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" + resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= dependencies: binary-extensions "^1.0.0" is-buffer@^1.1.5: version "1.1.6" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + resolved "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== is-buffer@~2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.3.tgz#4ecf3fcf749cbd1e472689e109ac66261a25e725" - integrity sha512-U15Q7MXTuZlrbymiz95PJpZxu8IlipAp4dtS3wOdgPXx3mqBnslrWU14kxfHB+Py/+2PVKSr37dMAgM2A4uArw== + version "2.0.4" + resolved "https://registry.npmjs.org/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-callable@^1.1.4, is-callable@^1.1.5: + version "1.1.5" + resolved "https://registry.npmjs.org/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" + resolved "https://registry.npmjs.org/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" + resolved "https://registry.npmjs.org/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" + resolved "https://registry.npmjs.org/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= + version "1.0.2" + resolved "https://registry.npmjs.org/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" + resolved "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== dependencies: is-accessor-descriptor "^0.1.6" @@ -4064,7 +4050,7 @@ is-descriptor@^0.1.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" + resolved "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== dependencies: is-accessor-descriptor "^1.0.0" @@ -4073,86 +4059,84 @@ is-descriptor@^1.0.0, is-descriptor@^1.0.2: is-dotfile@^1.0.0: version "1.0.3" - resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1" + resolved "https://registry.npmjs.org/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" + resolved "https://registry.npmjs.org/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: version "0.1.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + resolved "https://registry.npmjs.org/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" + resolved "https://registry.npmjs.org/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" + resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" integrity sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA= is-extglob@^2.1.0, is-extglob@^2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= is-finite@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" - integrity sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko= - dependencies: - number-is-nan "^1.0.0" + version "1.1.0" + resolved "https://registry.npmjs.org/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" + resolved "https://registry.npmjs.org/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" + resolved "https://registry.npmjs.org/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 "http://52.167.60.66:8081/repository/npm-all/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== is-glob@^2.0.0, is-glob@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" + resolved "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" integrity sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM= dependencies: is-extglob "^1.0.0" is-glob@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" + resolved "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= dependencies: is-extglob "^2.1.0" is-glob@^4.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" + resolved "https://registry.npmjs.org/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" + resolved "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.1.0.tgz#0dfd98f5a9111716dd535dda6492f67bf3d25a80" integrity sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA= dependencies: global-dirs "^0.1.0" @@ -4160,94 +4144,94 @@ is-installed-globally@^0.1.0: is-ip@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/is-ip/-/is-ip-2.0.0.tgz#68eea07e8a0a0a94c2d080dd674c731ab2a461ab" + resolved "https://registry.npmjs.org/is-ip/-/is-ip-2.0.0.tgz#68eea07e8a0a0a94c2d080dd674c731ab2a461ab" integrity sha1-aO6gfooKCpTC0IDdZ0xzGrKkYas= dependencies: ip-regex "^2.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" + resolved "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4" integrity sha1-8vtjpl5JBbQGyGBydloaTceTufQ= is-number@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" + resolved "https://registry.npmjs.org/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" + resolved "https://registry.npmjs.org/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" + resolved "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff" integrity sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ== is-obj@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" + resolved "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= 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" + resolved "https://registry.npmjs.org/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.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: +is-plain-object@^2.0.3, is-plain-object@^2.0.4: version "2.0.4" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + resolved "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== dependencies: isobject "^3.0.1" is-posix-bracket@^0.1.0: version "0.1.1" - resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" + resolved "https://registry.npmjs.org/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" + resolved "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" integrity sha1-IHurkWOEmcB7Kt8kCkGochADRXU= is-promise@^2.1, is-promise@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" + resolved "https://registry.npmjs.org/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" + resolved "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24" integrity sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ= -is-regex@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" - integrity sha1-VRdIm1RwkbCTDglWVM7SXul+lJE= +is-regex@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz#39d589a358bf18967f726967120b8fc1aed74eae" + integrity sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ== dependencies: - has "^1.0.1" + has "^1.0.3" is-resolvable@^1.1.0: version "1.1.0" - resolved "http://52.167.60.66:8081/repository/npm-all/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" + resolved "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg== is-retry-allowed@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34" - integrity sha1-EaBgVotnM5REAz0BJaYaINVk+zQ= + version "1.2.0" + resolved "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz#d778488bd0a4666a3be8a1482b9f2baafedea8b4" + integrity sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg== is-stream@^1.0.0, is-stream@^1.0.1, is-stream@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + resolved "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= is-stream@^2.0.0: @@ -4255,48 +4239,53 @@ is-stream@^2.0.0: resolved "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== +is-string@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" + integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ== + is-symbol@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.2.tgz#a055f6ae57192caee329e7a860118b497a950f38" - integrity sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw== + version "1.0.3" + resolved "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" + integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== dependencies: - has-symbols "^1.0.0" + has-symbols "^1.0.1" is-typedarray@^1.0.0, is-typedarray@~1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + resolved "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= is-windows@^1.0.1, is-windows@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" + resolved "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== 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" + resolved "https://registry.npmjs.org/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" + resolved "https://registry.npmjs.org/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" + resolved "https://registry.npmjs.org/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" + resolved "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= isomorphic-fetch@^2.2.1: version "2.2.1" - resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz#611ae1acf14f5e81f729507472819fe9733558a9" + resolved "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz#611ae1acf14f5e81f729507472819fe9733558a9" integrity sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk= dependencies: node-fetch "^1.0.1" @@ -4304,7 +4293,7 @@ isomorphic-fetch@^2.2.1: isstream@~0.1.2: version "0.1.2" - resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + resolved "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.0.0-alpha.1: @@ -4371,64 +4360,59 @@ istanbul-reports@^3.0.0: html-escaper "^2.0.0" istanbul-lib-report "^3.0.0" -jquery@^3.3.1: - version "3.4.0" - resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.4.0.tgz#8de513fa0fa4b2c7d2e48a530e26f0596936efdf" - integrity sha512-ggRCXln9zEqv6OqAGXFEcshF5dSBvCkzj6Gm2gzuR5fWawaX8t7cxKVkkygKODrDAzKdoYw3l/e3pm3vlT4IbQ== - -jquery@^3.4.1: +jquery@^3.3.1, jquery@^3.4.1: version "3.4.1" resolved "https://registry.npmjs.org/jquery/-/jquery-3.4.1.tgz#714f1f8d9dde4bdfa55764ba37ef214630d80ef2" integrity sha512-36+AdBzCL+y6qjw5Tx7HgzeGCzC81MDDgaUP8ld2zhx58HdqXGoBd+tHdrBMiyjGQs0Hxs/MLZTu/eHNJJuWPw== js-sha1@^0.6.0: version "0.6.0" - resolved "https://registry.yarnpkg.com/js-sha1/-/js-sha1-0.6.0.tgz#adbee10f0e8e18aa07cdea807cf08e9183dbc7f9" + resolved "https://registry.npmjs.org/js-sha1/-/js-sha1-0.6.0.tgz#adbee10f0e8e18aa07cdea807cf08e9183dbc7f9" integrity sha512-01gwBFreYydzmU9BmZxpVk6svJJHrVxEN3IOiGl6VO93bVKYETJ0sIth6DASI6mIFdt7NmfX9UiByRzsYHGU9w== js-sha3@^0.8.0: version "0.8.0" - resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" + resolved "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" integrity sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q== "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" + resolved "https://registry.npmjs.org/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" + resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= js-yaml@3.13.1, js-yaml@^3.11.0, js-yaml@^3.13.1: version "3.13.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" + resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== dependencies: argparse "^1.0.7" esprima "^4.0.0" js2xmlparser@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/js2xmlparser/-/js2xmlparser-4.0.0.tgz#ae14cc711b2892083eed6e219fbc993d858bc3a5" - integrity sha512-WuNgdZOXVmBk5kUPMcTcVUpbGRzLfNkv7+7APq7WiDihpXVKrgxo6wwRpRl9OQeEBgKCVk9mR7RbzrnNWC8oBw== + version "4.0.1" + resolved "https://registry.npmjs.org/js2xmlparser/-/js2xmlparser-4.0.1.tgz#670ef71bc5661f089cc90481b99a05a1227ae3bd" + integrity sha512-KrPTolcw6RocpYjdC7pL7v62e55q7qOMHvLX1UCLc5AAS8qeJ6nukarEJAF2KL2PZxlbGueEbINqZR2bDe/gUw== dependencies: - xmlcreate "^2.0.0" + xmlcreate "^2.0.3" jsbn@~0.1.0: version "0.1.1" - resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + resolved "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= jsdoc-route-plugin@^0.1.0: version "0.1.0" - resolved "https://registry.yarnpkg.com/jsdoc-route-plugin/-/jsdoc-route-plugin-0.1.0.tgz#22d167a92b84c11afd570813794a24144a7892e0" + resolved "https://registry.npmjs.org/jsdoc-route-plugin/-/jsdoc-route-plugin-0.1.0.tgz#22d167a92b84c11afd570813794a24144a7892e0" integrity sha1-ItFnqSuEwRr9VwgTeUokFEp4kuA= jsdoc@3.6.3: version "3.6.3" - resolved "http://52.167.60.66:8081/repository/npm-all/jsdoc/-/jsdoc-3.6.3.tgz#dccea97d0e62d63d306b8b3ed1527173b5e2190d" + resolved "https://registry.npmjs.org/jsdoc/-/jsdoc-3.6.3.tgz#dccea97d0e62d63d306b8b3ed1527173b5e2190d" integrity sha512-Yf1ZKA3r9nvtMWHO1kEuMZTlHOF8uoQ0vyo5eH7SQy5YeIiHM+B0DgKnn+X6y6KDYZcF7G2SPkKF+JORCXWE/A== dependencies: "@babel/parser" "^7.4.4" @@ -4448,51 +4432,53 @@ jsdoc@3.6.3: jsesc@^1.3.0: version "1.3.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" + resolved "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" integrity sha1-RsP+yMGJKxKwgz25vHYiF226s0s= jsesc@^2.5.1: - version "2.5.1" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.1.tgz#e421a2a8e20d6b0819df28908f782526b96dd1fe" + version "2.5.2" + resolved "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== jsesc@~0.5.0: version "0.5.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + resolved "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= 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" + resolved "https://registry.npmjs.org/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" + resolved "https://registry.npmjs.org/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" + resolved "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= json-stable-stringify-without-jsonify@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + resolved "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= 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" + resolved "https://registry.npmjs.org/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" + resolved "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE= json5@^2.1.0: - version "2.1.0" - resolved "http://52.167.60.66:8081/repository/npm-all/json5/-/json5-2.1.0.tgz#e7a0c62c48285c628d20a10b85c89bb807c32850" - integrity sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ== + version "2.1.1" + resolved "https://registry.npmjs.org/json5/-/json5-2.1.1.tgz#81b6cb04e9ba496f1c7005d07b4368a2638f90b6" + integrity sha512-l+3HXD0GEI3huGq1njuqtzYK8OYJyXMkOLtQ53pjWh89tvWS2h6l+1zMkYWqlb57+SiQodKZyvMEFb2X+KrFhQ== dependencies: minimist "^1.2.0" @@ -4505,7 +4491,7 @@ jsonfile@^4.0.0: jsprim@^1.2.2: version "1.4.1" - resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" + resolved "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= dependencies: assert-plus "1.0.0" @@ -4513,61 +4499,55 @@ jsprim@^1.2.2: json-schema "0.2.3" verror "1.10.0" -jsx-ast-utils@^2.0.1, jsx-ast-utils@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-2.1.0.tgz#0ee4e2c971fb9601c67b5641b71be80faecf0b36" - integrity sha512-yDGDG2DS4JcqhA6blsuYbtsT09xL8AoLuUR2Gb5exrw7UEM19sBcOTq+YBBhrNbl0PUC4R4LnFu+dHg2HKeVvA== +jsx-ast-utils@^2.0.1, jsx-ast-utils@^2.1.0, jsx-ast-utils@^2.2.3: + version "2.2.3" + resolved "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.2.3.tgz#8a9364e402448a3ce7f14d357738310d9248054f" + integrity sha512-EdIHFMm+1BPynpKOpdPqiOsvnIrInRGJD7bzPZdPkjitQEqpdpUuFpq4T0npZFKTiB3RhWFdGN+oqOJIdhDhQA== dependencies: array-includes "^3.0.3" + object.assign "^4.1.0" 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" + resolved "https://registry.npmjs.org/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" + resolved "https://registry.npmjs.org/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" + resolved "https://registry.npmjs.org/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== + version "6.0.3" + resolved "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== klaw@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/klaw/-/klaw-3.0.0.tgz#b11bec9cf2492f06756d6e809ab73a2910259146" + resolved "https://registry.npmjs.org/klaw/-/klaw-3.0.0.tgz#b11bec9cf2492f06756d6e809ab73a2910259146" integrity sha512-0Fo5oir+O9jnXu5EefYbVK+mHMBeEVEy2cmctR1O1NECcCkPRreJKrS6Qt/j3KC2C148Dfo9i3pCmCMsdqGr0g== dependencies: graceful-fs "^4.1.9" latest-version@^3.0.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-3.1.0.tgz#a205383fea322b33b5ae3b18abee0dc2f356ee15" + resolved "https://registry.npmjs.org/latest-version/-/latest-version-3.1.0.tgz#a205383fea322b33b5ae3b18abee0dc2f356ee15" integrity sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU= dependencies: package-json "^4.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" - levn@^0.3.0, levn@~0.3.0: version "0.3.0" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + resolved "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= dependencies: prelude-ls "~1.1.2" @@ -4575,21 +4555,21 @@ levn@^0.3.0, levn@~0.3.0: lie@3.1.1: version "3.1.1" - resolved "https://registry.yarnpkg.com/lie/-/lie-3.1.1.tgz#9a436b2cc7746ca59de7a41fa469b3efb76bd87e" + resolved "https://registry.npmjs.org/lie/-/lie-3.1.1.tgz#9a436b2cc7746ca59de7a41fa469b3efb76bd87e" integrity sha1-mkNrLMd0bKWd56QfpGmz77dr2H4= dependencies: immediate "~3.0.5" linkify-it@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-2.1.0.tgz#c4caf38a6cd7ac2212ef3c7d2bde30a91561f9db" - integrity sha512-4REs8/062kV2DSHxNfq5183zrqXMl7WP0WzABH9IeJI+NLm429FgE1PDecltYfnOoFDFlZGh2T8PfZn0r+GTRg== + version "2.2.0" + resolved "https://registry.npmjs.org/linkify-it/-/linkify-it-2.2.0.tgz#e3b54697e78bf915c70a38acd78fd09e0058b1cf" + integrity sha512-GnAl/knGn+i1U/wjBz3akz2stz+HrHLsxMwHQGofCDfPvlf+gDKN58UtfmUquTY4/MXeE2x7k19KQmeoZi94Iw== dependencies: uc.micro "^1.0.1" load-json-file@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" + resolved "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" integrity sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg= dependencies: graceful-fs "^4.1.2" @@ -4599,7 +4579,7 @@ load-json-file@^2.0.0: load-json-file@^4.0.0: version "4.0.0" - resolved "http://52.167.60.66:8081/repository/npm-all/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" + resolved "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs= dependencies: graceful-fs "^4.1.2" @@ -4609,7 +4589,7 @@ load-json-file@^4.0.0: load-json-file@^5.2.0: version "5.3.0" - resolved "http://52.167.60.66:8081/repository/npm-all/load-json-file/-/load-json-file-5.3.0.tgz#4d3c1e01fa1c03ea78a60ac7af932c9ce53403f3" + resolved "https://registry.npmjs.org/load-json-file/-/load-json-file-5.3.0.tgz#4d3c1e01fa1c03ea78a60ac7af932c9ce53403f3" integrity sha512-cJGP40Jc/VXUsp8/OrnyKyTZ1y6v/dphm3bioS+RrKXjK2BB6wHUd6JptZEFDGgGahMT+InnZO5i1Ei9mpC8Bw== dependencies: graceful-fs "^4.1.15" @@ -4620,14 +4600,14 @@ load-json-file@^5.2.0: localforage@^1.3.0: version "1.7.3" - resolved "https://registry.yarnpkg.com/localforage/-/localforage-1.7.3.tgz#0082b3ca9734679e1bd534995bdd3b24cf10f204" + resolved "https://registry.npmjs.org/localforage/-/localforage-1.7.3.tgz#0082b3ca9734679e1bd534995bdd3b24cf10f204" integrity sha512-1TulyYfc4udS7ECSBT2vwJksWbkwwTX8BzeUIiq8Y07Riy7bDAAnxDaPU/tWyOVmQAcWJIEIFP9lPfBGqVoPgQ== dependencies: lie "3.1.1" locate-path@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= dependencies: p-locate "^2.0.0" @@ -4635,7 +4615,7 @@ locate-path@^2.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" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== dependencies: p-locate "^3.0.0" @@ -4650,7 +4630,7 @@ locate-path@^5.0.0: lodash.debounce@^4.0.8: version "4.0.8" - resolved "http://52.167.60.66:8081/repository/npm-all/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" + resolved "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168= lodash.flattendeep@^4.4.0: @@ -4660,61 +4640,61 @@ lodash.flattendeep@^4.4.0: lodash.isarray@^4.0.0: version "4.0.0" - resolved "http://52.167.60.66:8081/repository/npm-all/lodash.isarray/-/lodash.isarray-4.0.0.tgz#2aca496b28c4ca6d726715313590c02e6ea34403" + resolved "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-4.0.0.tgz#2aca496b28c4ca6d726715313590c02e6ea34403" integrity sha1-KspJayjEym1yZxUxNZDALm6jRAM= lodash.isregexp@^4.0.1: version "4.0.1" - resolved "http://52.167.60.66:8081/repository/npm-all/lodash.isregexp/-/lodash.isregexp-4.0.1.tgz#e13e647b30cd559752a04cd912086faf7da1c30b" + resolved "https://registry.npmjs.org/lodash.isregexp/-/lodash.isregexp-4.0.1.tgz#e13e647b30cd559752a04cd912086faf7da1c30b" integrity sha1-4T5kezDNVZdSoEzZEghvr32hwws= lodash.isstring@^4.0.1: version "4.0.1" - resolved "http://52.167.60.66:8081/repository/npm-all/lodash.isstring/-/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451" + resolved "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451" integrity sha1-1SfftUVuynzJu5XV2ur4i6VKVFE= lodash.unescape@4.0.1: version "4.0.1" - resolved "https://registry.yarnpkg.com/lodash.unescape/-/lodash.unescape-4.0.1.tgz#bf2249886ce514cda112fae9218cdc065211fc9c" + resolved "https://registry.npmjs.org/lodash.unescape/-/lodash.unescape-4.0.1.tgz#bf2249886ce514cda112fae9218cdc065211fc9c" integrity sha1-vyJJiGzlFM2hEvrpIYzcBlIR/Jw= lodash@^3.10.1: version "3.10.1" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6" + resolved "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6" integrity sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y= -lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.3.0: +lodash@^4.17.12, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.3.0: version "4.17.15" - resolved "http://52.167.60.66:8081/repository/npm-all/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" + resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== log-symbols@2.2.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a" + resolved "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a" integrity sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg== dependencies: chalk "^2.0.1" loglevel@1.6.1: version "1.6.1" - resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.1.tgz#e0fc95133b6ef276cdc8887cdaf24aa6f156f8fa" + resolved "https://registry.npmjs.org/loglevel/-/loglevel-1.6.1.tgz#e0fc95133b6ef276cdc8887cdaf24aa6f156f8fa" integrity sha1-4PyVEztu8nbNyIh82vJKpvFW+Po= loose-envify@^1.0.0, loose-envify@^1.4.0: version "1.4.0" - resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + resolved "https://registry.npmjs.org/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" lowercase-keys@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" + resolved "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== lru-cache@^4.0.1: version "4.1.5" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== dependencies: pseudomap "^1.0.2" @@ -4722,7 +4702,7 @@ lru-cache@^4.0.1: lru-queue@0.1: version "0.1.0" - resolved "https://registry.yarnpkg.com/lru-queue/-/lru-queue-0.1.0.tgz#2738bd9f0d3cf4f84490c5736c48699ac632cda3" + resolved "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz#2738bd9f0d3cf4f84490c5736c48699ac632cda3" integrity sha1-Jzi9nw089PhEkMVzbEhpmsYyzaM= dependencies: es5-ext "~0.10.2" @@ -4734,50 +4714,43 @@ lunr@^2.3.8: make-dir@^1.0.0: version "1.3.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" + resolved "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" integrity sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ== dependencies: pify "^3.0.0" -make-dir@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/make-dir/-/make-dir-3.0.0.tgz#1b5f39f6b9270ed33f9f054c5c0f84304989f801" - integrity sha512-grNJDhb8b1Jm1qeqW5R/O63wUo4UXo2v2HMic6YT9i/HBlF93S8jkMgH7yugvY9ABDShH4VZMn8I+U8+fCNegw== +make-dir@^3.0.0, make-dir@^3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/make-dir/-/make-dir-3.0.2.tgz#04a1acbf22221e1d6ef43559f43e05a90dbb4392" + integrity sha512-rYKABKutXa6vXTXhoV18cBE7PaewPXHe/Bdq4v+ZLMhxbWApkFFplT0LcbMW+6BbjnQXzZ/sAvSE/JdguApG5w== dependencies: semver "^6.0.0" make-error@^1.1.1: - version "1.3.5" - resolved "http://52.167.60.66:8081/repository/npm-all/make-error/-/make-error-1.3.5.tgz#efe4e81f6db28cadd605c70f29c831b58ef776c8" - integrity sha512-c3sIjNUow0+8swNwVpqoH4YCShKNFkMaw6oH1mNS2haDZQqkeZFlHS3dhoeEbKKmJB4vXpJucU6oH75aDYeE9g== - -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" + version "1.3.6" + resolved "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" + integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== map-cache@^0.2.2: version "0.2.2" - resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" + resolved "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= map-visit@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" + resolved "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= dependencies: object-visit "^1.0.0" markdown-it-anchor@^5.0.2: - version "5.2.4" - resolved "https://registry.yarnpkg.com/markdown-it-anchor/-/markdown-it-anchor-5.2.4.tgz#d39306fe4c199705b4479d3036842cf34dcba24f" - integrity sha512-n8zCGjxA3T+Mx1pG8HEgbJbkB8JFUuRkeTZQuIM8iPY6oQ8sWOPRZJDFC9a/pNg2QkHEjjGkhBEl/RSyzaDZ3A== + version "5.2.5" + resolved "https://registry.npmjs.org/markdown-it-anchor/-/markdown-it-anchor-5.2.5.tgz#dbf13cfcdbffd16a510984f1263e1d479a47d27a" + integrity sha512-xLIjLQmtym3QpoY9llBgApknl7pxAcN3WDRc2d3rwpl+/YvDZHPmKscGs+L6E05xf2KrCXPBvosWt7MZukwSpQ== markdown-it@^8.4.2: version "8.4.2" - resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-8.4.2.tgz#386f98998dc15a37722aa7722084f4020bdd9b54" + resolved "https://registry.npmjs.org/markdown-it/-/markdown-it-8.4.2.tgz#386f98998dc15a37722aa7722084f4020bdd9b54" integrity sha512-GcRz3AWTqSUphY3vsUqQSFMbgR38a4Lh3GWlHRh/7MRwz8mcu9n2IO7HOh+bXHrR9kOPDl5RNCaEsrneb+xhHQ== dependencies: argparse "^1.0.7" @@ -4788,7 +4761,7 @@ markdown-it@^8.4.2: marked@^0.7.0: version "0.7.0" - resolved "http://52.167.60.66:8081/repository/npm-all/marked/-/marked-0.7.0.tgz#b64201f051d271b1edc10a04d1ae9b74bb8e5c0e" + resolved "https://registry.npmjs.org/marked/-/marked-0.7.0.tgz#b64201f051d271b1edc10a04d1ae9b74bb8e5c0e" integrity sha512-c+yYdCZJQrsRjTPhUx7VKkApw9bwDkNbHUKo1ovgcfDjb2kc8rLuRbIFyXL5WOEUwzSSKo3IXpph2K6DqB/KZg== marked@^0.8.0: @@ -4798,7 +4771,7 @@ marked@^0.8.0: martinez-polygon-clipping@^0.4.3: version "0.4.3" - resolved "https://registry.yarnpkg.com/martinez-polygon-clipping/-/martinez-polygon-clipping-0.4.3.tgz#a3971ddf1da147104b5d0fbbf68f728bb62885c1" + resolved "https://registry.npmjs.org/martinez-polygon-clipping/-/martinez-polygon-clipping-0.4.3.tgz#a3971ddf1da147104b5d0fbbf68f728bb62885c1" integrity sha512-3ZNS0ksKhWTLsmCUkNf+/UimndZ5U2cVOS0I+IjiwF+M23E77TmeOZSmbRJbfCoQUog/vcQ42s3DXrhgOhgPqw== dependencies: splaytree "^0.1.4" @@ -4806,12 +4779,12 @@ martinez-polygon-clipping@^0.4.3: math-random@^1.0.1: version "1.0.4" - resolved "https://registry.yarnpkg.com/math-random/-/math-random-1.0.4.tgz#5dd6943c938548267016d4e34f057583080c514c" + resolved "https://registry.npmjs.org/math-random/-/math-random-1.0.4.tgz#5dd6943c938548267016d4e34f057583080c514c" integrity sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A== matrix-js-sdk@2.3.0: version "2.3.0" - resolved "http://52.167.60.66:8081/repository/npm-all/matrix-js-sdk/-/matrix-js-sdk-2.3.0.tgz#ed04172add2e31c532dc87e2f38c26c2a63191c6" + resolved "https://registry.npmjs.org/matrix-js-sdk/-/matrix-js-sdk-2.3.0.tgz#ed04172add2e31c532dc87e2f38c26c2a63191c6" integrity sha512-jeswie7cWK7+XxcD+pQ7LplWnWkOQDa+x6y7FUUnxCdEvaj38cE5Obo9bPMjFgOln2hISlLdR8fzMNE9F4oUJA== dependencies: another-json "^0.2.0" @@ -4827,7 +4800,7 @@ matrix-js-sdk@2.3.0: md5.js@^1.3.4: version "1.3.5" - resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" + resolved "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== dependencies: hash-base "^3.0.0" @@ -4836,21 +4809,12 @@ md5.js@^1.3.4: mdurl@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" + resolved "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" integrity sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4= -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" - memoizee@^0.4.14: version "0.4.14" - resolved "https://registry.yarnpkg.com/memoizee/-/memoizee-0.4.14.tgz#07a00f204699f9a95c2d9e77218271c7cd610d57" + resolved "https://registry.npmjs.org/memoizee/-/memoizee-0.4.14.tgz#07a00f204699f9a95c2d9e77218271c7cd610d57" integrity sha512-/SWFvWegAIYAO4NQMpcX+gcra0yEZu4OntmUdrBaWrJncxOqAziGFlHxc7yjKVK2uu3lpPW27P27wkR82wA8mg== dependencies: d "1" @@ -4864,17 +4828,17 @@ memoizee@^0.4.14: merge@^1.2.1: version "1.2.1" - resolved "http://52.167.60.66:8081/repository/npm-all/merge/-/merge-1.2.1.tgz#38bebf80c3220a8a487b6fcfb3941bb11720c145" + resolved "https://registry.npmjs.org/merge/-/merge-1.2.1.tgz#38bebf80c3220a8a487b6fcfb3941bb11720c145" integrity sha512-VjFo4P5Whtj4vsLzsYBu5ayHhoHJ0UqNm7ibvShmbmoz7tGi0vXaoJbGdB+GmDMLUdg8DpQXEIeVDAe8MaABvQ== methods@^1.1.1, methods@^1.1.2: version "1.1.2" - resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + resolved "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= micromatch@^2.1.5: version "2.3.11" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" + resolved "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" integrity sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU= dependencies: arr-diff "^2.0.0" @@ -4893,7 +4857,7 @@ micromatch@^2.1.5: micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4: version "3.1.10" - resolved "http://52.167.60.66:8081/repository/npm-all/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" + resolved "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== dependencies: arr-diff "^4.0.0" @@ -4910,58 +4874,58 @@ micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4: snapdragon "^0.8.1" to-regex "^3.0.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.43.0: + version "1.43.0" + resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.43.0.tgz#0a12e0502650e473d735535050e7c8f4eb4fae58" + integrity sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ== mime-types@^2.1.12, mime-types@~2.1.19: - version "2.1.24" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.24.tgz#b6f8d0b3e951efb77dedeca194cff6d16f676f81" - integrity sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ== + version "2.1.26" + resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.26.tgz#9c921fc09b7e149a65dfdc0da4d20997200b0a06" + integrity sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ== dependencies: - mime-db "1.40.0" + mime-db "1.43.0" mime@^1.4.1: version "1.6.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + resolved "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== mimic-fn@^1.0.0: version "1.2.0" - resolved "http://52.167.60.66:8081/repository/npm-all/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" + resolved "https://registry.npmjs.org/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: +mimic-fn@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + resolved "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" + resolved "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= minimatch@3.0.4, minimatch@^3.0.0, minimatch@^3.0.3, minimatch@^3.0.4: version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + resolved "https://registry.npmjs.org/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" + resolved "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= minimist@^1.1.0, minimist@^1.1.1, minimist@^1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" + resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= minimist@~0.0.1: @@ -4971,7 +4935,7 @@ minimist@~0.0.1: minimongo@6.0.0: version "6.0.0" - resolved "http://52.167.60.66:8081/repository/npm-all/minimongo/-/minimongo-6.0.0.tgz#39af86a394646b87185ea15e91dc5801fbf8090c" + resolved "https://registry.npmjs.org/minimongo/-/minimongo-6.0.0.tgz#39af86a394646b87185ea15e91dc5801fbf8090c" integrity sha512-fkjRdpYZxc/9nFhSOFi8v+TMXgr/psBWv8ywJlkepHOaV+TsIKT9L7OhjaKUuROvr43+XbcQ1bNDTqmqmiILmQ== dependencies: "@turf/boolean-crosses" "^6.0.1" @@ -4985,40 +4949,40 @@ minimongo@6.0.0: js-sha1 "^0.6.0" lodash "^3.10.1" -minipass@^2.2.1, minipass@^2.3.4: - version "2.3.5" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.5.tgz#cacebe492022497f656b0f0f51e2682a9ed2d848" - integrity sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA== +minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0: + version "2.9.0" + resolved "https://registry.npmjs.org/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.1.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.2.1.tgz#dd27ea6136243c7c880684e8672bb3a45fd9b614" - integrity sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA== +minizlib@^1.2.1: + version "1.3.3" + resolved "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d" + integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q== dependencies: - minipass "^2.2.1" + minipass "^2.9.0" mixin-deep@^1.2.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.1.tgz#a49e7268dce1a0d9698e45326c5626df3543d0fe" - integrity sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ== + version "1.3.2" + resolved "https://registry.npmjs.org/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.5.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" + resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= dependencies: minimist "0.0.8" mocha@^6.1.4: - version "6.1.4" - resolved "https://registry.yarnpkg.com/mocha/-/mocha-6.1.4.tgz#e35fada242d5434a7e163d555c705f6875951640" - integrity sha512-PN8CIy4RXsIoxoFJzS4QNnCH4psUCPWc4/rPrst/ecSJJbLBkubMiyGCP2Kj/9YnWbotFqAoeXyXMucj7gwCFg== + version "6.2.2" + resolved "https://registry.npmjs.org/mocha/-/mocha-6.2.2.tgz#5d8987e28940caf8957a7d7664b910dc5b2fea20" + integrity sha512-FgDS9Re79yU1xz5d+C4rv1G7QagNGHZ+iXF81hO8zY35YZZcLEsJVfFolfsqKFWunATEvNzMK0r/CwWd/szO9A== dependencies: ansi-colors "3.2.3" browser-stdout "1.3.1" @@ -5040,9 +5004,9 @@ mocha@^6.1.4: supports-color "6.0.0" which "1.3.1" wide-align "1.1.3" - yargs "13.2.2" - yargs-parser "13.0.0" - yargs-unparser "1.5.0" + yargs "13.3.0" + yargs-parser "13.1.1" + yargs-unparser "1.6.0" moment@^2.24.0: version "2.24.0" @@ -5051,32 +5015,37 @@ moment@^2.24.0: ms@2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= -ms@2.1.1, ms@^2.1.1: +ms@2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== +ms@^2.1.1: + version "2.1.2" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + mute-stream@0.0.7: version "0.0.7" - resolved "http://52.167.60.66:8081/repository/npm-all/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" + resolved "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= mute-stream@0.0.8: version "0.0.8" - resolved "http://52.167.60.66:8081/repository/npm-all/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" + resolved "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== nan@^2.12.1, nan@^2.14.0: version "2.14.0" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c" + resolved "https://registry.npmjs.org/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" + resolved "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== dependencies: arr-diff "^4.0.0" @@ -5093,12 +5062,12 @@ nanomatch@^1.2.9: natural-compare@^1.4.0: version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= nedb@^1.8.0: version "1.8.0" - resolved "https://registry.yarnpkg.com/nedb/-/nedb-1.8.0.tgz#0e3502cd82c004d5355a43c9e55577bd7bd91d88" + resolved "https://registry.npmjs.org/nedb/-/nedb-1.8.0.tgz#0e3502cd82c004d5355a43c9e55577bd7bd91d88" integrity sha1-DjUCzYLABNU1WkPJ5VV3vXvZHYg= dependencies: async "0.2.10" @@ -5108,11 +5077,11 @@ nedb@^1.8.0: underscore "~1.4.4" needle@^2.2.1: - version "2.3.0" - resolved "https://registry.yarnpkg.com/needle/-/needle-2.3.0.tgz#ce3fea21197267bacb310705a7bbe24f2a3a3492" - integrity sha512-QBZu7aAFR0522EyaXZM0FZ9GLpq6lvQ3uq8gteiDUp7wKdy0lSd2hPlgFwVuW1CBkfEs9PfDQsQzZghLs/psdg== + version "2.3.2" + resolved "https://registry.npmjs.org/needle/-/needle-2.3.2.tgz#3342dea100b7160960a450dc8c22160ac712a528" + integrity sha512-DUzITvPVDUy6vczKKYTnWc/pBZ0EnjMJnQ3y+Jo5zfKFimJs7S3HFCxCRZYB9FUZcrzUQr3WsmvZgddMEIZv6w== dependencies: - debug "^4.1.0" + debug "^3.2.6" iconv-lite "^0.4.4" sax "^1.2.4" @@ -5121,19 +5090,24 @@ neo-async@^2.6.0: resolved "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c" integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw== -next-tick@1, next-tick@^1.0.0, next-tick@~1.0.0: +next-tick@1: + version "1.1.0" + resolved "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz#1836ee30ad56d67ef281b22bd199f709449b35eb" + integrity sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ== + +next-tick@~1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" + resolved "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" integrity sha1-yobR/ogoFpsBICCOPchCS524NCw= nice-try@^1.0.4: version "1.0.5" - resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" + resolved "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== node-environment-flags@1.0.5: version "1.0.5" - resolved "https://registry.yarnpkg.com/node-environment-flags/-/node-environment-flags-1.0.5.tgz#fa930275f5bf5dae188d6192b24b4c8bbac3d76a" + resolved "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.5.tgz#fa930275f5bf5dae188d6192b24b4c8bbac3d76a" integrity sha512-VNYPRfGfmZLx0Ye20jWzHUjyTW/c+6Wq+iLhDzUI4XmhrDd9l/FozXV3F2xOaXjvp0co0+v1YSR3CMP6g+VvLQ== dependencies: object.getownpropertydescriptors "^2.0.3" @@ -5141,16 +5115,16 @@ node-environment-flags@1.0.5: node-fetch@^1.0.1: version "1.7.3" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef" + resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef" integrity sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ== dependencies: encoding "^0.1.11" is-stream "^1.0.1" -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== +node-pre-gyp@*: + version "0.14.0" + resolved "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.14.0.tgz#9a0596533b877289bcad4e143982ca3d904ddc83" + integrity sha512-+CvDC7ZttU/sSt9rFjix/P05iS43qHCOOGzcr3Ry99bXG7VX953+vFyEuph/tfqoYu8dttBkE86JSKBO2OzcxA== dependencies: detect-libc "^1.0.2" mkdirp "^0.5.1" @@ -5161,7 +5135,7 @@ node-pre-gyp@^0.12.0: rc "^1.2.7" rimraf "^2.6.1" semver "^5.3.0" - tar "^4" + tar "^4.4.2" node-preload@^0.2.0: version "0.2.1" @@ -5172,7 +5146,7 @@ node-preload@^0.2.0: nodemon@1.19.1: version "1.19.1" - resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-1.19.1.tgz#576f0aad0f863aabf8c48517f6192ff987cd5071" + resolved "https://registry.npmjs.org/nodemon/-/nodemon-1.19.1.tgz#576f0aad0f863aabf8c48517f6192ff987cd5071" integrity sha512-/DXLzd/GhiaDXXbGId5BzxP1GlsqtMGM9zTmkWrgXtSqjKmGSbLicM/oAy4FR0YWm14jCHRwnR31AHS2dYFHrg== dependencies: chokidar "^2.1.5" @@ -5188,7 +5162,7 @@ nodemon@1.19.1: nopt@^4.0.1: version "4.0.1" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" + resolved "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" integrity sha1-0NRoWv1UFRk8jHUFYC0NF81kR00= dependencies: abbrev "1" @@ -5196,14 +5170,14 @@ nopt@^4.0.1: nopt@~1.0.10: version "1.0.10" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-1.0.10.tgz#6ddd21bd2a31417b92727dd585f8a6f37608ebee" + resolved "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz#6ddd21bd2a31417b92727dd585f8a6f37608ebee" integrity sha1-bd0hvSoxQXuScn3Vhfim83YI6+4= dependencies: abbrev "1" normalize-package-data@^2.3.2: version "2.5.0" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" + resolved "https://registry.npmjs.org/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" @@ -5213,39 +5187,47 @@ normalize-package-data@^2.3.2: 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" + resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= dependencies: remove-trailing-separator "^1.0.1" normalize-path@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== npm-bundled@^1.0.1: - version "1.0.6" - resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.6.tgz#e7ba9aadcef962bb61248f91721cd932b3fe6bdd" - integrity sha512-8/JCaftHwbd//k6y2rEWp6k1wxVfpFzB6t1p825+cUb7Ym2XQfhwIC5KwhrvzZRJu+LtDE585zVaS32+CGtf0g== + version "1.1.1" + resolved "https://registry.npmjs.org/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.npmjs.org/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.1" - resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.1.tgz#19064cdf988da80ea3cee45533879d90192bbfbc" - integrity sha512-+TcdO7HJJ8peiiYhvPxsEDhF3PJFGUGRcFsGve3vxvxdcpO2Z4Z7rkosRM0kWj6LfbK/P0gu3dzk5RU1ffvFcw== + version "1.4.8" + resolved "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.8.tgz#56ee6cc135b9f98ad3d51c1c95da22bbb9b2ef3e" + integrity sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A== dependencies: ignore-walk "^3.0.1" npm-bundled "^1.0.1" + npm-normalize-package-bin "^1.0.1" 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" + resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= dependencies: path-key "^2.0.0" npmlog@^4.0.2: version "4.1.2" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" + resolved "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== dependencies: are-we-there-yet "~1.1.2" @@ -5255,7 +5237,7 @@ npmlog@^4.0.2: 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" + resolved "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= nyc@^15.0.0: @@ -5294,38 +5276,43 @@ nyc@^15.0.0: oauth-sign@~0.9.0: version "0.9.0" - resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" + resolved "https://registry.npmjs.org/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.1.1: version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + resolved "https://registry.npmjs.org/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" + resolved "https://registry.npmjs.org/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-keys@^1.0.11, object-keys@^1.0.12: +object-inspect@^1.7.0: + version "1.7.0" + resolved "https://registry.npmjs.org/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" + resolved "https://registry.npmjs.org/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" + resolved "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= dependencies: isobject "^3.0.0" -object.assign@4.1.0: +object.assign@4.1.0, object.assign@^4.1.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" + resolved "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== dependencies: define-properties "^1.1.2" @@ -5333,37 +5320,37 @@ object.assign@4.1.0: has-symbols "^1.0.0" object-keys "^1.0.11" -object.entries@^1.1.0: - version "1.1.0" - resolved "http://52.167.60.66:8081/repository/npm-all/object.entries/-/object.entries-1.1.0.tgz#2024fc6d6ba246aee38bdb0ffd5cfbcf371b7519" - integrity sha512-l+H6EQ8qzGRxbkHOd5I/aHRhHDKoQXQ8g0BYt4uSweQU1/J6dZUOyWh9a2Vky35YCKjzmgxOzta2hH6kf9HuXA== +object.entries@^1.1.0, object.entries@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/object.entries/-/object.entries-1.1.1.tgz#ee1cf04153de02bb093fec33683900f57ce5399b" + integrity sha512-ilqR7BgdyZetJutmDPfXCDffGa0/Yzl2ivVNpbx/g4UeWrCdRnFDUBrKJGLhGieRHDATnyZXWBeCb29k9CJysQ== dependencies: define-properties "^1.1.3" - es-abstract "^1.12.0" + es-abstract "^1.17.0-next.1" function-bind "^1.1.1" has "^1.0.3" -object.fromentries@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.0.tgz#49a543d92151f8277b3ac9600f1e930b189d30ab" - integrity sha512-9iLiI6H083uiqUuvzyY6qrlmc/Gz8hLQFOcb/Ri/0xXFkSNS3ctV+CbE6yM2+AnkYfOB3dGjdzC0wrMLIhQICA== +object.fromentries@^2.0.0, object.fromentries@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.2.tgz#4a09c9b9bb3843dd0f89acdb517a794d4f355ac9" + integrity sha512-r3ZiBH7MQppDJVLx6fhD618GKNG40CZYH9wgwdhKxBDDbQgjeWGGd4AtkZad84d291YxvWe7bJGuE65Anh0dxQ== dependencies: - define-properties "^1.1.2" - es-abstract "^1.11.0" + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" function-bind "^1.1.1" - has "^1.0.1" + has "^1.0.3" object.getownpropertydescriptors@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz#8758c846f5b407adab0f236e0986f14b051caa16" - integrity sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY= + version "2.1.0" + resolved "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz#369bf1f9592d8ab89d712dced5cb81c7c5352649" + integrity sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg== dependencies: - define-properties "^1.1.2" - es-abstract "^1.5.1" + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" object.omit@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" + resolved "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" integrity sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo= dependencies: for-own "^0.1.4" @@ -5371,18 +5358,18 @@ object.omit@^2.0.0: object.pick@^1.3.0: version "1.3.0" - resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" + resolved "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= dependencies: isobject "^3.0.1" -object.values@^1.1.0: - version "1.1.0" - resolved "http://52.167.60.66:8081/repository/npm-all/object.values/-/object.values-1.1.0.tgz#bf6810ef5da3e5325790eaaa2be213ea84624da9" - integrity sha512-8mf0nKLAoFX6VlNVdhGj31SVYpaNFtUnuoOXWyFEstsWRgU837AK+JYM0iAxwkSzGRbwn8cbFmgbyxj1j4VbXg== +object.values@^1.1.0, object.values@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/object.values/-/object.values-1.1.1.tgz#68a99ecde356b7e9295a3c5e0ce31dc8c953de5e" + integrity sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA== dependencies: define-properties "^1.1.3" - es-abstract "^1.12.0" + es-abstract "^1.17.0-next.1" function-bind "^1.1.1" has "^1.0.3" @@ -5390,23 +5377,23 @@ object.values@^1.1.0: version "3.0.0" resolved "https://matrix.org/packages/npm/olm/olm-3.0.0.tgz#4a6f5e83c5c4d05a268246a5db9bdf0e720311b1" -once@^1.3.0, once@^1.3.1, once@^1.4.0: +once@^1.3.0: version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= dependencies: wrappy "1" onetime@^2.0.0: version "2.0.1" - resolved "http://52.167.60.66:8081/repository/npm-all/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" + resolved "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ= dependencies: mimic-fn "^1.0.0" onetime@^5.1.0: version "5.1.0" - resolved "http://52.167.60.66:8081/repository/npm-all/onetime/-/onetime-5.1.0.tgz#fff0f3c91617fe62bb50189636e99ac8a6df7be5" + resolved "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz#fff0f3c91617fe62bb50189636e99ac8a6df7be5" integrity sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q== dependencies: mimic-fn "^2.1.0" @@ -5419,40 +5406,31 @@ optimist@^0.6.1: minimist "~0.0.1" wordwrap "~0.0.2" -optionator@^0.8.2: - version "0.8.2" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" - integrity sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q= +optionator@^0.8.2, optionator@^0.8.3: + version "0.8.3" + resolved "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" + integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== dependencies: deep-is "~0.1.3" - fast-levenshtein "~2.0.4" + fast-levenshtein "~2.0.6" levn "~0.3.0" prelude-ls "~1.1.2" type-check "~0.3.2" - wordwrap "~1.0.0" + word-wrap "~1.2.3" os-homedir@^1.0.0: version "1.0.2" - resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" + resolved "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= -os-locale@^3.0.0, os-locale@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" - integrity sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q== - dependencies: - execa "^1.0.0" - lcid "^2.0.0" - mem "^4.0.0" - os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + resolved "https://registry.npmjs.org/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" + resolved "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== dependencies: os-homedir "^1.0.0" @@ -5460,43 +5438,26 @@ osenv@^0.1.4: output-file-sync@^1.1.2: version "1.1.2" - resolved "https://registry.yarnpkg.com/output-file-sync/-/output-file-sync-1.1.2.tgz#d0a33eefe61a205facb90092e826598d5245ce76" + resolved "https://registry.npmjs.org/output-file-sync/-/output-file-sync-1.1.2.tgz#d0a33eefe61a205facb90092e826598d5245ce76" integrity sha1-0KM+7+YaIF+suQCS6CZZjVJFznY= dependencies: graceful-fs "^4.1.4" mkdirp "^0.5.1" object-assign "^4.1.0" -p-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" + resolved "https://registry.npmjs.org/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" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== dependencies: p-try "^1.0.0" -p-limit@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.0.tgz#417c9941e6027a9abcba5092dd2904e255b5fbc2" - integrity sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ== - dependencies: - p-try "^2.0.0" - -p-limit@^2.2.0: +p-limit@^2.0.0, p-limit@^2.2.0: version "2.2.2" resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz#61279b67721f5287aa1c13a9a7fbbc48c9291b1e" integrity sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ== @@ -5505,14 +5466,14 @@ p-limit@^2.2.0: p-locate@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= dependencies: p-limit "^1.1.0" p-locate@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== dependencies: p-limit "^2.0.0" @@ -5533,12 +5494,12 @@ p-map@^3.0.0: p-try@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" + resolved "https://registry.npmjs.org/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" + resolved "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== package-hash@^4.0.0: @@ -5553,7 +5514,7 @@ package-hash@^4.0.0: package-json@^4.0.0, package-json@^4.0.1: version "4.0.1" - resolved "https://registry.yarnpkg.com/package-json/-/package-json-4.0.1.tgz#8869a0401253661c4c4ca3da6c2121ed555f5eed" + resolved "https://registry.npmjs.org/package-json/-/package-json-4.0.1.tgz#8869a0401253661c4c4ca3da6c2121ed555f5eed" integrity sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0= dependencies: got "^6.7.1" @@ -5563,14 +5524,14 @@ package-json@^4.0.0, package-json@^4.0.1: parent-module@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + resolved "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== dependencies: callsites "^3.0.0" parse-glob@^3.0.4: version "3.0.4" - resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" + resolved "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" integrity sha1-ssN2z7EfNVE7rdFz7wu246OIORw= dependencies: glob-base "^0.3.0" @@ -5580,14 +5541,14 @@ parse-glob@^3.0.4: parse-json@^2.2.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" + resolved "https://registry.npmjs.org/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" + resolved "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= dependencies: error-ex "^1.3.1" @@ -5595,22 +5556,22 @@ parse-json@^4.0.0: parse-passwd@^1.0.0: version "1.0.0" - resolved "http://52.167.60.66:8081/repository/npm-all/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" + resolved "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY= pascalcase@^0.1.1: version "0.1.1" - resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" + resolved "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= path-dirname@^1.0.0: version "1.0.2" - resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" + resolved "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= path-exists@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + resolved "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= path-exists@^4.0.0: @@ -5620,17 +5581,17 @@ path-exists@^4.0.0: path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= path-is-inside@^1.0.1, path-is-inside@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" + resolved "https://registry.npmjs.org/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" + resolved "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= path-key@^3.1.0: @@ -5640,24 +5601,24 @@ path-key@^3.1.0: path-parse@^1.0.6: version "1.0.6" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" + resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== path-type@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" + resolved "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" integrity sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM= dependencies: pify "^2.0.0" pathval@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.0.tgz#b942e6d4bde653005ef6b71361def8727d0645e0" + resolved "https://registry.npmjs.org/pathval/-/pathval-1.1.0.tgz#b942e6d4bde653005ef6b71361def8727d0645e0" integrity sha1-uULm1L3mUwBe9rcTYd74cn0GReA= pbkdf2@^3.0.9: version "3.0.17" - resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.17.tgz#976c206530617b14ebb32114239f7b09336e93a6" + resolved "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz#976c206530617b14ebb32114239f7b09336e93a6" integrity sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA== dependencies: create-hash "^1.1.2" @@ -5668,27 +5629,27 @@ pbkdf2@^3.0.9: performance-now@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" + resolved "https://registry.npmjs.org/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" + resolved "https://registry.npmjs.org/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" + resolved "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= pify@^4.0.1: version "4.0.1" - resolved "http://52.167.60.66:8081/repository/npm-all/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" + resolved "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== pkg-conf@^2.0.0: version "2.1.0" - resolved "http://52.167.60.66:8081/repository/npm-all/pkg-conf/-/pkg-conf-2.1.0.tgz#2126514ca6f2abfebd168596df18ba57867f0058" + resolved "https://registry.npmjs.org/pkg-conf/-/pkg-conf-2.1.0.tgz#2126514ca6f2abfebd168596df18ba57867f0058" integrity sha1-ISZRTKbyq/69FoWW3xi6V4Z/AFg= dependencies: find-up "^2.0.0" @@ -5696,7 +5657,7 @@ pkg-conf@^2.0.0: pkg-conf@^3.1.0: version "3.1.0" - resolved "http://52.167.60.66:8081/repository/npm-all/pkg-conf/-/pkg-conf-3.1.0.tgz#d9f9c75ea1bae0e77938cde045b276dac7cc69ae" + resolved "https://registry.npmjs.org/pkg-conf/-/pkg-conf-3.1.0.tgz#d9f9c75ea1bae0e77938cde045b276dac7cc69ae" integrity sha512-m0OTbR/5VPNPqO1ph6Fqbj7Hv6QU7gR/tQW40ZqrL1rjgCU85W6C1bJn0BItuJqnR98PWzw7Z8hHeChD1WrgdQ== dependencies: find-up "^3.0.0" @@ -5704,7 +5665,7 @@ pkg-conf@^3.1.0: pkg-config@^1.1.0: version "1.1.1" - resolved "https://registry.yarnpkg.com/pkg-config/-/pkg-config-1.1.1.tgz#557ef22d73da3c8837107766c52eadabde298fe4" + resolved "https://registry.npmjs.org/pkg-config/-/pkg-config-1.1.1.tgz#557ef22d73da3c8837107766c52eadabde298fe4" integrity sha1-VX7yLXPaPIg3EHdmxS6tq94pj+Q= dependencies: debug-log "^1.0.0" @@ -5713,7 +5674,7 @@ pkg-config@^1.1.0: pkg-dir@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" + resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s= dependencies: find-up "^2.1.0" @@ -5727,38 +5688,38 @@ pkg-dir@^4.1.0: pluralize@^7.0.0: version "7.0.0" - resolved "http://52.167.60.66:8081/repository/npm-all/pluralize/-/pluralize-7.0.0.tgz#298b89df8b93b0221dbf421ad2b1b1ea23fc6777" + resolved "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz#298b89df8b93b0221dbf421ad2b1b1ea23fc6777" integrity sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow== 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" + resolved "https://registry.npmjs.org/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" + resolved "https://registry.npmjs.org/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" + resolved "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= preserve@^0.2.0: version "0.2.0" - resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" + resolved "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" integrity sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks= private@^0.1.6, private@^0.1.8: version "0.1.8" - resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" + resolved "https://registry.npmjs.org/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== process-nextick-args@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" - integrity sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw== + version "2.0.1" + resolved "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== process-on-spawn@^1.0.0: version "1.0.0" @@ -5769,12 +5730,12 @@ process-on-spawn@^1.0.0: progress@^2.0.0, progress@^2.0.3: version "2.0.3" - resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" + resolved "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== prop-types@^15.6.2, prop-types@^15.7.2: version "15.7.2" - resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" + resolved "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== dependencies: loose-envify "^1.4.0" @@ -5783,55 +5744,42 @@ prop-types@^15.6.2, prop-types@^15.7.2: pseudomap@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" + resolved "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= -psl@^1.1.24: - version "1.1.31" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.1.31.tgz#e9aa86d0101b5b105cbe93ac6b784cd547276184" - integrity sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw== +psl@^1.1.28: + version "1.7.0" + resolved "https://registry.npmjs.org/psl/-/psl-1.7.0.tgz#f1c4c47a8ef97167dea5d6bbf4816d736e884a3c" + integrity sha512-5NsSEDv8zY70ScRnOTn7bK7eanl2MvFrOrS/R6x+dBt5g1ghnj9Zv90kO8GwT8gxcu2ANyFprnFYB85IogIJOQ== pstree.remy@^1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/pstree.remy/-/pstree.remy-1.1.6.tgz#73a55aad9e2d95814927131fbf4dc1b62d259f47" - integrity sha512-NdF35+QsqD7EgNEI5mkI/X+UwaxVEbQaz9f4IooEmMUv6ZPmlTQYGjBPJGgrlzNdjSvIy4MWMg6Q6vCgBO2K+w== - -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.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" - integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= + version "1.1.7" + resolved "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.7.tgz#c76963a28047ed61542dc361aa26ee55a7fa15f3" + integrity sha512-xsMgrUwRpuGskEzBFkH8NmTimbZ5PcPup0LA8JJkHIm2IMUbQcpo3yeLNWVrufEYjh8YwtSVh0xz6UeWc5Oh5A== -punycode@^2.1.0: +punycode@^2.1.0, punycode@^2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + resolved "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== qs@^6.5.1, qs@^6.5.2: - version "6.7.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" - integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== + version "6.9.1" + resolved "https://registry.npmjs.org/qs/-/qs-6.9.1.tgz#20082c65cb78223635ab1a9eaca8875a29bf8ec9" + integrity sha512-Cxm7/SS/y/Z3MHWSxXb8lIFqgqBowP5JMlTUFyJN88y0SGQhVmZnqFK/PeuMX9LzUyWsqqhNxIyg0jlzq946yA== qs@~6.5.2: version "6.5.2" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" + resolved "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== quickselect@^1.0.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/quickselect/-/quickselect-1.1.1.tgz#852e412ce418f237ad5b660d70cffac647ae94c2" + resolved "https://registry.npmjs.org/quickselect/-/quickselect-1.1.1.tgz#852e412ce418f237ad5b660d70cffac647ae94c2" integrity sha512-qN0Gqdw4c4KGPsBOQafj6yj/PA6c/L63f6CaZ/DCF/xF4Esu3jVmKLUDYxghFx8Kb/O7y9tI7x2RjTSXwdK1iQ== randomatic@^3.0.0: version "3.1.1" - resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-3.1.1.tgz#b776efc59375984e36c537b2f51a1f0aff0da1ed" + resolved "https://registry.npmjs.org/randomatic/-/randomatic-3.1.1.tgz#b776efc59375984e36c537b2f51a1f0aff0da1ed" integrity sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw== dependencies: is-number "^4.0.0" @@ -5840,21 +5788,21 @@ randomatic@^3.0.0: randombytes@^2.0.1: version "2.1.0" - resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + resolved "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== dependencies: safe-buffer "^5.1.0" -rbush@*: +rbush@^2.0.0: version "2.0.2" - resolved "https://registry.yarnpkg.com/rbush/-/rbush-2.0.2.tgz#bb6005c2731b7ba1d5a9a035772927d16a614605" + resolved "https://registry.npmjs.org/rbush/-/rbush-2.0.2.tgz#bb6005c2731b7ba1d5a9a035772927d16a614605" integrity sha512-XBOuALcTm+O/H8G90b6pzu6nX6v2zCKiFG4BJho8a+bY6AER6t8uQUZdi5bomQc0AprCWhEGa7ncAbbRap0bRA== dependencies: quickselect "^1.0.1" rc@^1.0.1, rc@^1.1.6, rc@^1.2.7: version "1.2.8" - resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" + resolved "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== dependencies: deep-extend "^0.6.0" @@ -5863,13 +5811,13 @@ rc@^1.0.1, rc@^1.1.6, rc@^1.2.7: strip-json-comments "~2.0.1" react-is@^16.8.1: - version "16.8.6" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.8.6.tgz#5bbc1e2d29141c9fbdfed456343fe2bc430a6a16" - integrity sha512-aUk3bHfZ2bRSVFFbbeVS4i+lNPZr3/WM5jT2J5omUVV1zzcs1nAaf3l51ctA5FFvCRbhrH0bdAsRRQddFJZPtA== + version "16.13.0" + resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.0.tgz#0f37c3613c34fe6b37cd7f763a0d6293ab15c527" + integrity sha512-GFMtL0vHkiBv9HluwNZTggSn/sCyEt9n02aM0dSAjGGyqyNlAyftYm4phPxdvCigG15JreC5biwxCgTAJZ7yAA== read-pkg-up@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" + resolved "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" integrity sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4= dependencies: find-up "^2.0.0" @@ -5877,17 +5825,17 @@ read-pkg-up@^2.0.0: read-pkg@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" + resolved "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" integrity sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg= dependencies: load-json-file "^2.0.0" normalize-package-data "^2.3.2" path-type "^2.0.0" -readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.2.2, readable-stream@^2.3.5: - version "2.3.6" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" - integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw== +readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.3.5: + version "2.3.7" + resolved "https://registry.npmjs.org/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" @@ -5898,9 +5846,9 @@ readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.2.2, readable util-deprecate "~1.0.1" readable-stream@^3.0.2: - version "3.4.0" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.4.0.tgz#a51c26754658e0a3c21dbf59163bd45ba6f447fc" - integrity sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ== + version "3.6.0" + resolved "https://registry.npmjs.org/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" @@ -5908,7 +5856,7 @@ readable-stream@^3.0.2: readdirp@^2.0.0, readdirp@^2.2.1: version "2.2.1" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" + resolved "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== dependencies: graceful-fs "^4.1.11" @@ -5924,27 +5872,27 @@ rechoir@^0.6.2: regenerate@^1.2.1: version "1.4.0" - resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" + resolved "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg== regenerator-runtime@^0.10.5: version "0.10.5" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz#336c3efc1220adcedda2c9fab67b5a7955a33658" + resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz#336c3efc1220adcedda2c9fab67b5a7955a33658" integrity sha1-M2w+/BIgrc7dosn6tntaeVWjNlg= regenerator-runtime@^0.11.0: version "0.11.1" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" + resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== regenerator-runtime@^0.13.2: - version "0.13.2" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.2.tgz#32e59c9a6fb9b1a4aff09b4930ca2d4477343447" - integrity sha512-S/TQAZJO+D3m9xeN1WTI8dLKBBiRgXBlTJvbWjCThHWZj9EvHK70Ff50/tYj2J/fvBY6JtFVwRuazHN2E7M9BA== + version "0.13.3" + resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz#7cf6a77d8f5c6f60eb73c5fc1955b2ceb01e6bf5" + integrity sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw== regenerator-transform@^0.10.0: version "0.10.1" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.10.1.tgz#1e4996837231da8b7f3cf4114d71b5691a0680dd" + resolved "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz#1e4996837231da8b7f3cf4114d71b5691a0680dd" integrity sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q== dependencies: babel-runtime "^6.18.0" @@ -5953,22 +5901,30 @@ regenerator-transform@^0.10.0: regex-cache@^0.4.2: version "0.4.4" - resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd" + resolved "https://registry.npmjs.org/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" + resolved "https://registry.npmjs.org/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.prototype.flags@^1.3.0: + version "1.3.0" + resolved "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz#7aba89b3c13a64509dabcf3ca8d9fbb9bdf5cb75" + integrity sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + regexpp@^2.0.0, regexpp@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" + resolved "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw== regexpp@^3.0.0: @@ -5978,7 +5934,7 @@ regexpp@^3.0.0: regexpu-core@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240" + resolved "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240" integrity sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA= dependencies: regenerate "^1.2.1" @@ -5987,7 +5943,7 @@ regexpu-core@^2.0.0: 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" + resolved "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.4.0.tgz#d7446815433f5d5ed6431cd5dca21048f66b397e" integrity sha512-4LM6Fw8eBQdwMYcES4yTnn2TqIasbXuwDx3um+QRs7S55aMKCBKBxvPXl2RiUjHwuJLTyYfxSpmfSAjQpcuP+A== dependencies: rc "^1.1.6" @@ -5995,19 +5951,19 @@ registry-auth-token@^3.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" + resolved "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz#3d4ef870f73dde1d77f0cf9a381432444e174942" integrity sha1-PU74cPc93h138M+aOBQyRE4XSUI= dependencies: rc "^1.0.1" regjsgen@^0.2.0: version "0.2.0" - resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" + resolved "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" integrity sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc= regjsparser@^0.1.4: version "0.1.5" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c" + resolved "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c" integrity sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw= dependencies: jsesc "~0.5.0" @@ -6021,30 +5977,30 @@ release-zalgo@^1.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" + resolved "https://registry.npmjs.org/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" + resolved "https://registry.npmjs.org/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" + resolved "https://registry.npmjs.org/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" + resolved "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" integrity sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo= dependencies: is-finite "^1.0.0" request@^2.88.0: - version "2.88.0" - resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef" - integrity sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg== + version "2.88.2" + resolved "https://registry.npmjs.org/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" + integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== dependencies: aws-sign2 "~0.7.0" aws4 "^1.8.0" @@ -6053,7 +6009,7 @@ request@^2.88.0: extend "~3.0.2" forever-agent "~0.6.1" form-data "~2.3.2" - har-validator "~5.1.0" + har-validator "~5.1.3" http-signature "~1.2.0" is-typedarray "~1.0.0" isstream "~0.1.2" @@ -6063,28 +6019,23 @@ request@^2.88.0: performance-now "^2.1.0" qs "~6.5.2" safe-buffer "^5.1.2" - tough-cookie "~2.4.3" + tough-cookie "~2.5.0" tunnel-agent "^0.6.0" uuid "^3.3.2" require-directory@^2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= -require-main-filename@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" - integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE= - require-main-filename@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" + resolved "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== require-uncached@^1.0.3: version "1.0.3" - resolved "http://52.167.60.66:8081/repository/npm-all/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3" + resolved "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3" integrity sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM= dependencies: caller-path "^0.1.0" @@ -6092,14 +6043,14 @@ require-uncached@^1.0.3: requizzle@^0.2.3: version "0.2.3" - resolved "http://52.167.60.66:8081/repository/npm-all/requizzle/-/requizzle-0.2.3.tgz#4675c90aacafb2c036bd39ba2daa4a1cb777fded" + resolved "https://registry.npmjs.org/requizzle/-/requizzle-0.2.3.tgz#4675c90aacafb2c036bd39ba2daa4a1cb777fded" integrity sha512-YanoyJjykPxGHii0fZP0uUPEXpvqfBDxWV7s6GKAiiOsiqhX6vHNyW3Qzdmqp/iq/ExbhaGbVrjB4ruEVSM4GQ== dependencies: lodash "^4.17.14" resolve-dir@^1.0.0, resolve-dir@^1.0.1: version "1.0.1" - resolved "http://52.167.60.66:8081/repository/npm-all/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43" + resolved "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43" integrity sha1-eaQGRMNivoLybv/nOcm7U4IEb0M= dependencies: expand-tilde "^2.0.0" @@ -6107,12 +6058,12 @@ resolve-dir@^1.0.0, resolve-dir@^1.0.1: resolve-from@^1.0.0: version "1.0.1" - resolved "http://52.167.60.66:8081/repository/npm-all/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226" + resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226" integrity sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY= resolve-from@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== resolve-from@^5.0.0: @@ -6122,33 +6073,19 @@ resolve-from@^5.0.0: resolve-url@^0.2.1: version "0.2.1" - resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" + resolved "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= -resolve@^1.1.6: +resolve@^1.1.6, resolve@^1.10.0, resolve@^1.10.1, resolve@^1.11.0, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.14.2, resolve@^1.3.2, resolve@^1.6.0, resolve@^1.8.1: version "1.15.1" resolved "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz#27bdcdeffeaf2d6244b95bb0f9f4b4653451f3e8" integrity sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w== dependencies: path-parse "^1.0.6" -resolve@^1.10.0, resolve@^1.10.1, resolve@^1.11.0, resolve@^1.3.2, resolve@^1.5.0, resolve@^1.6.0, resolve@^1.8.1: - version "1.11.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.11.0.tgz#4014870ba296176b86343d50b60f3b50609ce232" - integrity sha512-WL2pBDjqT6pGUNSUzMw00o4T7If+z4H2x3Gz893WoUQ5KW8Vr9txp00ykiP16VBaZF5+j/OcXJHZ9+PCvdiDKw== - dependencies: - path-parse "^1.0.6" - -resolve@^1.12.0: - version "1.14.2" - resolved "https://registry.npmjs.org/resolve/-/resolve-1.14.2.tgz#dbf31d0fa98b1f29aa5169783b9c290cb865fea2" - integrity sha512-EjlOBLBO1kxsUxsKjLt7TAECyKW6fOh1VRkykQkKGzcBbjjPIxBqGh0jf7GJ3k/f5mxMqW3htMD3WdTUVtW8HQ== - dependencies: - path-parse "^1.0.6" - restore-cursor@^2.0.0: version "2.0.0" - resolved "http://52.167.60.66:8081/repository/npm-all/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" + resolved "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368= dependencies: onetime "^2.0.0" @@ -6156,7 +6093,7 @@ restore-cursor@^2.0.0: restore-cursor@^3.1.0: version "3.1.0" - resolved "http://52.167.60.66:8081/repository/npm-all/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" + resolved "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== dependencies: onetime "^5.1.0" @@ -6164,16 +6101,23 @@ restore-cursor@^3.1.0: ret@~0.1.10: version "0.1.15" - resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" + resolved "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== -rimraf@2.6.3, rimraf@^2.6.1, rimraf@~2.6.2: +rimraf@2.6.3, rimraf@~2.6.2: version "2.6.3" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" + resolved "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== dependencies: glob "^7.1.3" +rimraf@^2.6.1: + version "2.7.1" + resolved "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + rimraf@^3.0.0: version "3.0.2" resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" @@ -6183,65 +6127,63 @@ rimraf@^3.0.0: ripemd160@^2.0.0, ripemd160@^2.0.1: version "2.0.2" - resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" + resolved "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== dependencies: hash-base "^3.0.0" inherits "^2.0.1" run-async@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0" - integrity sha1-A3GrSuC91yDUFm19/aZP96RFpsA= + version "2.4.0" + resolved "https://registry.npmjs.org/run-async/-/run-async-2.4.0.tgz#e59054a5b86876cfae07f431d18cbaddc594f1e8" + integrity sha512-xJTbh/d7Lm7SBhc1tNvTpeCHaEzoyxPrqNlvSdMfBTYwaY++UJFyXUOxAtsRUXjlqOfj8luNaR9vjCh4KeV+pg== dependencies: is-promise "^2.1.0" run-parallel@^1.1.2: version "1.1.9" - resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.1.9.tgz#c9dd3a7cf9f4b2c4b6244e173a6ed866e61dd679" + resolved "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.9.tgz#c9dd3a7cf9f4b2c4b6244e173a6ed866e61dd679" integrity sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q== rxjs@^5.5.2: version "5.5.12" - resolved "http://52.167.60.66:8081/repository/npm-all/rxjs/-/rxjs-5.5.12.tgz#6fa61b8a77c3d793dbaf270bee2f43f652d741cc" + resolved "https://registry.npmjs.org/rxjs/-/rxjs-5.5.12.tgz#6fa61b8a77c3d793dbaf270bee2f43f652d741cc" integrity sha512-xx2itnL5sBbqeeiVgNPVuQQ1nC8Jp2WfNJhXWHmElW9YmrpS9UVnNzhP3EH3HFqexO5Tlp8GhYY+WEcqcVMvGw== dependencies: symbol-observable "1.0.1" -rxjs@^6.4.0: - version "6.5.2" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.2.tgz#2e35ce815cd46d84d02a209fb4e5921e051dbec7" - integrity sha512-HUb7j3kvb7p7eCUHE3FqjoDsC1xfZQ4AHFWfTKSpZ+sAhhz5X1WX0ZuUqWbzB2QhSLp3DoLUG+hMdEDKqWo2Zg== - dependencies: - tslib "^1.9.0" - -rxjs@^6.5.4: +rxjs@^6.4.0, rxjs@^6.5.3, rxjs@^6.5.4: version "6.5.4" resolved "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz#e0777fe0d184cec7872df147f303572d414e211c" integrity sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q== dependencies: tslib "^1.9.0" -safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: +safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.2.0: + version "5.2.0" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519" + integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg== + +safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== safe-regex@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" + resolved "https://registry.npmjs.org/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" + resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== sax@^1.2.4: version "1.2.4" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" + resolved "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== secp256k1@^3.8.0: @@ -6260,45 +6202,30 @@ secp256k1@^3.8.0: semver-diff@^2.0.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36" + resolved "https://registry.npmjs.org/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.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.7.0: - version "5.7.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b" - integrity sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA== - -semver@^5.5.1: +"semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.7.0: version "5.7.1" resolved "https://registry.npmjs.org/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, semver@^6.3.0: version "6.3.0" - resolved "http://52.167.60.66:8081/repository/npm-all/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + resolved "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== 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" + resolved "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= -set-value@^0.4.3: - version "0.4.3" - resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz#7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1" - integrity sha1-fbCPnT0i3H945Trzw79GZuzfzPE= - dependencies: - extend-shallow "^2.0.1" - is-extendable "^0.1.1" - is-plain-object "^2.0.1" - to-object-path "^0.3.0" - -set-value@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.0.tgz#71ae4a88f0feefbbf52d1ea604f3fb315ebb6274" - integrity sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg== +set-value@^2.0.0, set-value@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/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" @@ -6307,7 +6234,7 @@ set-value@^2.0.0: sha.js@^2.4.0, sha.js@^2.4.8: version "2.4.11" - resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" + resolved "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== dependencies: inherits "^2.0.1" @@ -6315,7 +6242,7 @@ sha.js@^2.4.0, sha.js@^2.4.8: shebang-command@^1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= dependencies: shebang-regex "^1.0.0" @@ -6329,7 +6256,7 @@ shebang-command@^2.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" + resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= shebang-regex@^3.0.0: @@ -6346,26 +6273,34 @@ shelljs@^0.8.3: interpret "^1.0.0" rechoir "^0.6.2" +side-channel@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/side-channel/-/side-channel-1.0.2.tgz#df5d1abadb4e4bf4af1cd8852bf132d2f7876947" + integrity sha512-7rL9YlPHg7Ancea1S96Pa8/QWb4BtXL/TZvS6B8XFetGBeuhAsfmUspK6DokBeZ64+Kj9TCNRD/30pVz1BvQNA== + dependencies: + es-abstract "^1.17.0-next.1" + object-inspect "^1.7.0" + 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" + resolved "https://registry.npmjs.org/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" + resolved "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU= slice-ansi@1.0.0: version "1.0.0" - resolved "http://52.167.60.66:8081/repository/npm-all/slice-ansi/-/slice-ansi-1.0.0.tgz#044f1a49d8842ff307aad6b505ed178bd950134d" + resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz#044f1a49d8842ff307aad6b505ed178bd950134d" integrity sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg== dependencies: is-fullwidth-code-point "^2.0.0" slice-ansi@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" + resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== dependencies: ansi-styles "^3.2.0" @@ -6374,7 +6309,7 @@ slice-ansi@^2.1.0: snapdragon-node@^2.0.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" + resolved "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== dependencies: define-property "^1.0.0" @@ -6383,14 +6318,14 @@ snapdragon-node@^2.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" + resolved "https://registry.npmjs.org/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" + resolved "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== dependencies: base "^0.11.1" @@ -6402,9 +6337,9 @@ snapdragon@^0.8.1: source-map-resolve "^0.5.0" use "^3.1.0" -snazzy@^8.0.0: +snazzy@8.0.0, snazzy@^8.0.0: version "8.0.0" - resolved "https://registry.yarnpkg.com/snazzy/-/snazzy-8.0.0.tgz#97a6d4173d03f6549b98a9dd88362765fac0ef88" + resolved "https://registry.npmjs.org/snazzy/-/snazzy-8.0.0.tgz#97a6d4173d03f6549b98a9dd88362765fac0ef88" integrity sha512-59GS69hQD8FvJoNGeDz8aZtbYhkCFxCPQB1BFzAWiVVwPmS/J6Vjaku0k6tGNsdSxQ0kAlButdkn8bPR2hLcBw== dependencies: chalk "^2.3.0" @@ -6416,11 +6351,11 @@ snazzy@^8.0.0: text-table "^0.2.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== + version "0.5.3" + resolved "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" + integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== dependencies: - atob "^2.1.1" + atob "^2.1.2" decode-uri-component "^0.2.0" resolve-url "^0.2.1" source-map-url "^0.4.0" @@ -6428,32 +6363,32 @@ source-map-resolve@^0.5.0: source-map-support@^0.4.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" + resolved "https://registry.npmjs.org/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.6: - version "0.5.13" - resolved "http://52.167.60.66:8081/repository/npm-all/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932" - integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w== + version "0.5.16" + resolved "https://registry.npmjs.org/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" + resolved "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= source-map@^0.5.0, source-map@^0.5.6, source-map@^0.5.7: version "0.5.7" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + resolved "https://registry.npmjs.org/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 "http://52.167.60.66:8081/repository/npm-all/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== spawn-wrap@^2.0.0: @@ -6470,7 +6405,7 @@ spawn-wrap@^2.0.0: spdx-correct@^3.0.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4" + resolved "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4" integrity sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q== dependencies: spdx-expression-parse "^3.0.0" @@ -6478,42 +6413,42 @@ spdx-correct@^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" + resolved "https://registry.npmjs.org/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" + resolved "https://registry.npmjs.org/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.4" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.4.tgz#75ecd1a88de8c184ef015eafb51b5b48bfd11bb1" - integrity sha512-7j8LYJLeY/Yb6ACbQ7F76qy5jHkp0U6jgBfJsk97bwWlVUnUWsAgpyaCvo17h0/RQGnQ036tVDomiwoI4pDkQA== + version "3.0.5" + resolved "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz#3694b5804567a458d3c8045842a6358632f62654" + integrity sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q== splaytree@^0.1.4: version "0.1.4" - resolved "https://registry.yarnpkg.com/splaytree/-/splaytree-0.1.4.tgz#fc35475248edcc29d4938c9b67e43c6b7e55a659" + resolved "https://registry.npmjs.org/splaytree/-/splaytree-0.1.4.tgz#fc35475248edcc29d4938c9b67e43c6b7e55a659" integrity sha512-D50hKrjZgBzqD3FT2Ek53f2dcDLAQT8SSGrzj3vidNH5ISRgceeGVJ2dQIthKOuayqFXfFjXheHNo4bbt9LhRQ== 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" + resolved "https://registry.npmjs.org/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" + resolved "https://registry.npmjs.org/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" + resolved "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== dependencies: asn1 "~0.2.3" @@ -6528,7 +6463,7 @@ sshpk@^1.7.0: standard-engine@^12.0.0: version "12.0.0" - resolved "http://52.167.60.66:8081/repository/npm-all/standard-engine/-/standard-engine-12.0.0.tgz#1643dceba96ca9c04c535a1fb28d79bfb21b3572" + resolved "https://registry.npmjs.org/standard-engine/-/standard-engine-12.0.0.tgz#1643dceba96ca9c04c535a1fb28d79bfb21b3572" integrity sha512-gJIIRb0LpL7AHyGbN9+hJ4UJns37lxmNTnMGRLC8CFrzQ+oB/K60IQjKNgPBCB2VP60Ypm6f8DFXvhVWdBOO+g== dependencies: deglob "^4.0.0" @@ -6538,7 +6473,7 @@ standard-engine@^12.0.0: standard-engine@~9.0.0: version "9.0.0" - resolved "http://52.167.60.66:8081/repository/npm-all/standard-engine/-/standard-engine-9.0.0.tgz#d3a3d74c4c1b91f51a1e66362465261ca7610316" + resolved "https://registry.npmjs.org/standard-engine/-/standard-engine-9.0.0.tgz#d3a3d74c4c1b91f51a1e66362465261ca7610316" integrity sha512-ZfNfCWZ2Xq67VNvKMPiVMKHnMdvxYzvZkf1AH8/cw2NLDBm5LRsxMqvEJpsjLI/dUosZ3Z1d6JlHDp5rAvvk2w== dependencies: deglob "^2.1.0" @@ -6547,15 +6482,15 @@ standard-engine@~9.0.0: pkg-conf "^2.0.0" standard-json@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/standard-json/-/standard-json-1.0.3.tgz#5b5b21d9418810dc5644c113d5163541dcd8faa6" - integrity sha512-lhMP+KREBcfyyMe2ObJlEjJ0lc0ItA9uny83d9ZL6ggYtB79DuaAKCxJVoiflg5EV3D2rpuWn+n4+zXjWXk0sQ== + version "1.1.0" + resolved "https://registry.npmjs.org/standard-json/-/standard-json-1.1.0.tgz#33ac0d2eccaddb0556f5ae28c43a35624cf1fb25" + integrity sha512-nkonX+n5g3pyVBvJZmvRlFtT/7JyLbNh4CtrYC3Qfxihgs8PKX52f6ONKQXORStuBWJ5PI83EUrNXme7LKfiTQ== dependencies: - concat-stream "^1.5.0" + concat-stream "^2.0.0" standard@12.0.1: version "12.0.1" - resolved "http://52.167.60.66:8081/repository/npm-all/standard/-/standard-12.0.1.tgz#0fc5a8aa6c34c546c5562aae644242b24dae2e61" + resolved "https://registry.npmjs.org/standard/-/standard-12.0.1.tgz#0fc5a8aa6c34c546c5562aae644242b24dae2e61" integrity sha512-UqdHjh87OG2gUrNCSM4QRLF5n9h3TFPwrCNyVlkqu31Hej0L/rc8hzKqVvkb2W3x0WMq7PzZdkLfEcBhVOR6lg== dependencies: eslint "~5.4.0" @@ -6570,7 +6505,7 @@ standard@12.0.1: standard@14.0.0: version "14.0.0" - resolved "http://52.167.60.66:8081/repository/npm-all/standard/-/standard-14.0.0.tgz#72c1bedb9d24e04ab96adde98b44a512dc109d0f" + resolved "https://registry.npmjs.org/standard/-/standard-14.0.0.tgz#72c1bedb9d24e04ab96adde98b44a512dc109d0f" integrity sha512-FNKr9wkXQYvqO1txmileQm+r3+NBJp/H+yF1x9Ak3kZgLh3xrmc5HDyiKWizMEekbffBC7yq+PuB8+GMuRp8Vg== dependencies: eslint "~6.1.0" @@ -6601,7 +6536,7 @@ standard@14.3.1: static-extend@^0.1.1: version "0.1.2" - resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" + resolved "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= dependencies: define-property "^0.2.5" @@ -6609,7 +6544,7 @@ static-extend@^0.1.1: string-width@^1.0.1: version "1.0.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" + resolved "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= dependencies: code-point-at "^1.0.0" @@ -6618,7 +6553,7 @@ string-width@^1.0.1: "string-width@^1.0.2 || 2", 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" + resolved "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== dependencies: is-fullwidth-code-point "^2.0.0" @@ -6626,23 +6561,14 @@ string-width@^1.0.1: string-width@^3.0.0, string-width@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" + resolved "https://registry.npmjs.org/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-width@^4.1.0: - version "4.1.0" - resolved "http://52.167.60.66:8081/repository/npm-all/string-width/-/string-width-4.1.0.tgz#ba846d1daa97c3c596155308063e075ed1c99aff" - integrity sha512-NrX+1dVVh+6Y9dnQ19pR0pP4FiEIlUvdTGn8pw6CKTNq5sgib2nIhmUNT5TAmhWmvKr3WcxBcP3E8nWezuipuQ== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^5.2.0" - -string-width@^4.2.0: +string-width@^4.1.0, string-width@^4.2.0: version "4.2.0" resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== @@ -6651,37 +6577,65 @@ string-width@^4.2.0: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.0" +string.prototype.matchall@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.2.tgz#48bb510326fb9fdeb6a33ceaa81a6ea04ef7648e" + integrity sha512-N/jp6O5fMf9os0JU3E72Qhf590RSRZU/ungsL/qJUYVTNv7hTG0P/dbPjxINVN9jpscu3nzYwKESU3P3RY5tOg== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0" + has-symbols "^1.0.1" + internal-slot "^1.0.2" + regexp.prototype.flags "^1.3.0" + side-channel "^1.0.2" + +string.prototype.trimleft@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/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.npmjs.org/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.2.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.2.0.tgz#fe86e738b19544afe70469243b2a1ee9240eae8d" - integrity sha512-6YqyX6ZWEYguAxgZzHGL7SsCeGx3V2TtOTqZz1xSTSWnqsbWwbptafNyvf/ACquZUXV3DANr5BDIwNYe1mN42w== + version "1.3.0" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== dependencies: - safe-buffer "~5.1.0" + safe-buffer "~5.2.0" string_decoder@~1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + resolved "https://registry.npmjs.org/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" + resolved "https://registry.npmjs.org/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" + resolved "https://registry.npmjs.org/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" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== dependencies: ansi-regex "^4.1.0" @@ -6695,7 +6649,7 @@ strip-ansi@^6.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" + resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= strip-bom@^4.0.0: @@ -6705,22 +6659,22 @@ strip-bom@^4.0.0: strip-eof@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" + resolved "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= strip-json-comments@2.0.1, strip-json-comments@^2.0.1, 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" + resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= strip-json-comments@^3.0.1: version "3.0.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.0.1.tgz#85713975a91fb87bf1b305cca77395e40d2a64a7" + resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.0.1.tgz#85713975a91fb87bf1b305cca77395e40d2a64a7" integrity sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw== superagent@^3.7.0: version "3.8.3" - resolved "https://registry.yarnpkg.com/superagent/-/superagent-3.8.3.tgz#460ea0dbdb7d5b11bc4f78deba565f86a178e128" + resolved "https://registry.npmjs.org/superagent/-/superagent-3.8.3.tgz#460ea0dbdb7d5b11bc4f78deba565f86a178e128" integrity sha512-GLQtLMCoEIK4eDv6OGtkOoSMt3D+oq0y3dsxMuYuDvaNUvuT8eFBuLmfR0iYYzHC1e8hpzC6ZsxbuP6DIalMFA== dependencies: component-emitter "^1.2.0" @@ -6736,18 +6690,19 @@ superagent@^3.7.0: supports-color@6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.0.0.tgz#76cfe742cf1f41bb9b1c29ad03068c05b4c0e40a" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz#76cfe742cf1f41bb9b1c29ad03068c05b4c0e40a" integrity sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg== dependencies: has-flag "^3.0.0" supports-color@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= supports-color@^5.2.0, supports-color@^5.3.0: version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== dependencies: has-flag "^3.0.0" @@ -6761,12 +6716,12 @@ supports-color@^7.1.0: symbol-observable@1.0.1: version "1.0.1" - resolved "http://52.167.60.66:8081/repository/npm-all/symbol-observable/-/symbol-observable-1.0.1.tgz#8340fc4702c3122df5d22288f88283f513d3fdd4" + resolved "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz#8340fc4702c3122df5d22288f88283f513d3fdd4" integrity sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ= table@^4.0.3: version "4.0.3" - resolved "http://52.167.60.66:8081/repository/npm-all/table/-/table-4.0.3.tgz#00b5e2b602f1794b9acaf9ca908a76386a7813bc" + resolved "https://registry.npmjs.org/table/-/table-4.0.3.tgz#00b5e2b602f1794b9acaf9ca908a76386a7813bc" integrity sha512-S7rnFITmBH1EnyKcvxBh1LjYeQMmnZtCXSEbHcH6S0NoKit24ZuFO/T1vDcLdYsLQkM188PVVhQmzKIuThNkKg== dependencies: ajv "^6.0.1" @@ -6777,44 +6732,44 @@ table@^4.0.3: string-width "^2.1.1" table@^5.2.3: - version "5.4.0" - resolved "https://registry.yarnpkg.com/table/-/table-5.4.0.tgz#d772a3216e68829920a41a32c18eda286c95d780" - integrity sha512-nHFDrxmbrkU7JAFKqKbDJXfzrX2UBsWmrieXFTGxiI5e4ncg3VqsZeI4EzNmX0ncp4XNGVeoxIWJXfCIXwrsvw== + version "5.4.6" + resolved "https://registry.npmjs.org/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e" + integrity sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug== dependencies: - ajv "^6.9.1" - lodash "^4.17.11" + ajv "^6.10.2" + lodash "^4.17.14" slice-ansi "^2.1.0" string-width "^3.0.0" taffydb@2.6.2: version "2.6.2" - resolved "https://registry.yarnpkg.com/taffydb/-/taffydb-2.6.2.tgz#7cbcb64b5a141b6a2efc2c5d2c67b4e150b2a268" + resolved "https://registry.npmjs.org/taffydb/-/taffydb-2.6.2.tgz#7cbcb64b5a141b6a2efc2c5d2c67b4e150b2a268" integrity sha1-fLy2S1oUG2ou/CxdLGe04VCyomg= -tar@^4: - version "4.4.8" - resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.8.tgz#b19eec3fde2a96e64666df9fdb40c5ca1bc3747d" - integrity sha512-LzHF64s5chPQQS0IYBn9IN5h3i98c12bo4NCO7e0sGM2llXQ3p2FGC5sdENN4cTW48O915Sh+x+EXx7XW96xYQ== +tar@^4.4.2: + version "4.4.13" + resolved "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz#43b364bc52888d555298637b10d60790254ab525" + integrity sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA== dependencies: chownr "^1.1.1" fs-minipass "^1.2.5" - minipass "^2.3.4" - minizlib "^1.1.1" + minipass "^2.8.6" + minizlib "^1.2.1" mkdirp "^0.5.0" safe-buffer "^5.1.2" - yallist "^3.0.2" + yallist "^3.0.3" term-size@^1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/term-size/-/term-size-1.2.0.tgz#458b83887f288fc56d6fffbfad262e26638efa69" + resolved "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz#458b83887f288fc56d6fffbfad262e26638efa69" integrity sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk= dependencies: execa "^0.7.0" term-size@^2.1.0: - version "2.1.0" - resolved "http://52.167.60.66:8081/repository/npm-all/term-size/-/term-size-2.1.0.tgz#3aec444c07a7cf936e157c1dc224b590c3c7eef2" - integrity sha512-I42EWhJ+2aeNQawGx1VtpO0DFI9YcfuvAMNIdKyf/6sRbHJ4P+ZQ/zIT87tE+ln1ymAGcCJds4dolfSAS0AcNg== + version "2.2.0" + resolved "https://registry.npmjs.org/term-size/-/term-size-2.2.0.tgz#1f16adedfe9bdc18800e1776821734086fcc6753" + integrity sha512-a6sumDlzyHVJWb8+YofY4TW112G6p2FCPEAFk+59gIYHv3XHRhm9ltVQ9kli4hNWeQBwSpe8cRN25x0ROunMOw== test-exclude@^6.0.0: version "6.0.0" @@ -6827,22 +6782,22 @@ test-exclude@^6.0.0: text-table@^0.2.0: version "0.2.0" - resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= through@^2.3.6: version "2.3.8" - resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + resolved "https://registry.npmjs.org/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= timed-out@^4.0.0: version "4.0.1" - resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" + resolved "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" integrity sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8= timers-ext@^0.1.5: version "0.1.7" - resolved "https://registry.yarnpkg.com/timers-ext/-/timers-ext-0.1.7.tgz#6f57ad8578e07a3fb9f91d9387d65647555e25c6" + resolved "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.7.tgz#6f57ad8578e07a3fb9f91d9387d65647555e25c6" integrity sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ== dependencies: es5-ext "~0.10.46" @@ -6850,34 +6805,36 @@ timers-ext@^0.1.5: tinyqueue@^1.2.0: version "1.2.3" - resolved "https://registry.yarnpkg.com/tinyqueue/-/tinyqueue-1.2.3.tgz#b6a61de23060584da29f82362e45df1ec7353f3d" + resolved "https://registry.npmjs.org/tinyqueue/-/tinyqueue-1.2.3.tgz#b6a61de23060584da29f82362e45df1ec7353f3d" integrity sha512-Qz9RgWuO9l8lT+Y9xvbzhPT2efIUIFd69N7eF7tJ9lnQl0iLj1M7peK7IoUGZL9DJHw9XftqLreccfxcQgYLxA== tmp@^0.0.33: version "0.0.33" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + resolved "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== dependencies: os-tmpdir "~1.0.2" 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" + resolved "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" + integrity sha1-uDVx+k2MJbguIxsG46MFXeTKGkc= to-fast-properties@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + resolved "https://registry.npmjs.org/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" + resolved "https://registry.npmjs.org/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" + resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= dependencies: is-number "^3.0.0" @@ -6885,7 +6842,7 @@ to-regex-range@^2.1.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" + resolved "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== dependencies: define-property "^2.0.2" @@ -6895,86 +6852,82 @@ to-regex@^3.0.1, to-regex@^3.0.2: touch@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/touch/-/touch-3.1.0.tgz#fe365f5f75ec9ed4e56825e0bb76d24ab74af83b" + resolved "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz#fe365f5f75ec9ed4e56825e0bb76d24ab74af83b" integrity sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA== dependencies: nopt "~1.0.10" -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== +tough-cookie@~2.5.0: + version "2.5.0" + resolved "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" + integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== dependencies: - psl "^1.1.24" - punycode "^1.4.1" + psl "^1.1.28" + punycode "^2.1.1" trim-right@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" + resolved "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" + integrity sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM= -ts-node@^8.3.0: - version "8.3.0" - resolved "http://52.167.60.66:8081/repository/npm-all/ts-node/-/ts-node-8.3.0.tgz#e4059618411371924a1fb5f3b125915f324efb57" - integrity sha512-dyNS/RqyVTDcmNM4NIBAeDMpsAdaQ+ojdf0GOLqE6nwJOgzEkdRNzJywhDfwnuvB10oa6NLVG1rUJQCpRN7qoQ== +ts-node@8.6.2, ts-node@^8.3.0: + version "8.6.2" + resolved "https://registry.npmjs.org/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.0.0" + yn "3.1.1" tslib@^1.8.1, tslib@^1.9.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a" - integrity sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ== + version "1.11.0" + resolved "https://registry.npmjs.org/tslib/-/tslib-1.11.0.tgz#f1f3528301621a53220d58373ae510ff747a66bc" + integrity sha512-BmndXUtiTn/VDDrJzQE7Mm22Ix3PxgLltW9bSNLoeCY31gnG2OPx0QqJnuc9oMIKioYrz487i6K9o4Pdn0j+Kg== -tsutils@^3.14.0: +tsutils@^3.14.0, tsutils@^3.17.1: version "3.17.1" - resolved "http://52.167.60.66:8081/repository/npm-all/tsutils/-/tsutils-3.17.1.tgz#ed719917f11ca0dee586272b2ac49e015a2dd759" + resolved "https://registry.npmjs.org/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" + resolved "https://registry.npmjs.org/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" + resolved "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= tweetnacl@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-1.0.1.tgz#2594d42da73cd036bd0d2a54683dd35a6b55ca17" - integrity sha512-kcoMoKTPYnoeS50tzoqjPY3Uv9axeuuFAZY9M/9zFnhoVvRfxz9K29IMPD7jGmt2c8SW7i3gT9WqDl2+nV7p4A== + version "1.0.3" + resolved "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz#ac0af71680458d8a6378d0d0d050ab1407d35596" + integrity sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw== type-check@~0.3.2: version "0.3.2" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" + resolved "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= dependencies: prelude-ls "~1.1.2" type-detect@^4.0.0, type-detect@^4.0.5: version "4.0.8" - resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" + resolved "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== type-fest@^0.3.0: version "0.3.1" - resolved "http://52.167.60.66:8081/repository/npm-all/type-fest/-/type-fest-0.3.1.tgz#63d00d204e059474fe5e1b7c011112bbd1dc29e1" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz#63d00d204e059474fe5e1b7c011112bbd1dc29e1" integrity sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ== -type-fest@^0.5.2: - version "0.5.2" - resolved "http://52.167.60.66:8081/repository/npm-all/type-fest/-/type-fest-0.5.2.tgz#d6ef42a0356c6cd45f49485c3b6281fc148e48a2" - integrity sha512-DWkS49EQKVX//Tbupb9TFa19c7+MK1XmzkrZUR8TAktmE/DizXoaoJV6TZ/tSIPXipqNiRI6CyAe7x69Jb6RSw== - -type-fest@^0.8.0: +type-fest@^0.8.0, type-fest@^0.8.1: version "0.8.1" resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== @@ -6991,14 +6944,14 @@ type@^2.0.0: typedarray-to-buffer@^3.1.5: version "3.1.5" - resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" + resolved "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== dependencies: is-typedarray "^1.0.0" typedarray@^0.0.6: version "0.0.6" - resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + resolved "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= typedoc-default-themes@^0.7.2: @@ -7011,7 +6964,7 @@ typedoc-default-themes@^0.7.2: lunr "^2.3.8" underscore "^1.9.1" -typedoc@^0.16.10: +typedoc@0.16.10: version "0.16.10" resolved "https://registry.npmjs.org/typedoc/-/typedoc-0.16.10.tgz#217cd4243c9b4d85f49b94323c178f6d279bfb9c" integrity sha512-Eo1+K+XTiqSi4lz5cPrV4RncLv6abjCd/jfL5tTueNZGO2p8x2yDIrXkxL9C+SoLjJm2xpMs3CXYmTnilxk1cA== @@ -7028,9 +6981,9 @@ typedoc@^0.16.10: typedoc-default-themes "^0.7.2" typescript "3.7.x" -typescript@3.5.3, typescript@^3.5.3: +typescript@3.5.3: version "3.5.3" - resolved "http://52.167.60.66:8081/repository/npm-all/typescript/-/typescript-3.5.3.tgz#c830f657f93f1ea846819e929092f5fe5983e977" + resolved "https://registry.npmjs.org/typescript/-/typescript-3.5.3.tgz#c830f657f93f1ea846819e929092f5fe5983e977" integrity sha512-ACzBtm/PhXBDId6a6sDJfroT2pOWt/oOnk4/dElG5G33ZL776N3Y6/6bKZJBFpd+b05F3Ct9qDjMeJmRWtE2/g== typescript@3.7.x: @@ -7038,9 +6991,14 @@ typescript@3.7.x: resolved "https://registry.npmjs.org/typescript/-/typescript-3.7.5.tgz#0692e21f65fd4108b9330238aac11dd2e177a1ae" integrity sha512-/P5lkRXkWHNAbcJIiHPfRoKqyd7bsyCma1hZNUGfn20qm64T6ZBlrzprymeu918H+mB/0rIg2gGK/BXkhhYgBw== +typescript@^3.5.3: + version "3.8.2" + resolved "https://registry.npmjs.org/typescript/-/typescript-3.8.2.tgz#91d6868aaead7da74f493c553aeff76c0c0b1d5a" + integrity sha512-EgOVgL/4xfVrCMbhYKUQTdF37SQn4Iw73H5BgCrF1Abdun7Kwy/QZsE/ssAy0y4LxBbvua3PIbFsbRczWWnDdQ== + uc.micro@^1.0.1, uc.micro@^1.0.5: version "1.0.6" - resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.6.tgz#9c411a802a409a91fc6cf74081baba34b24499ac" + resolved "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz#9c411a802a409a91fc6cf74081baba34b24499ac" integrity sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA== uglify-js@^3.1.4: @@ -7052,50 +7010,45 @@ uglify-js@^3.1.4: source-map "~0.6.1" undefsafe@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/undefsafe/-/undefsafe-2.0.2.tgz#225f6b9e0337663e0d8e7cfd686fc2836ccace76" - integrity sha1-Il9rngM3Zj4Njnz9aG/Cg2zKznY= + version "2.0.3" + resolved "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.3.tgz#6b166e7094ad46313b2202da7ecc2cd7cc6e7aae" + integrity sha512-nrXZwwXrD/T/JXeygJqdCO6NZZ1L66HrxM/Z7mIq2oPanoN0F1nLx3lwJMu6AwJY69hdixaFQOuoYsMjE5/C2A== dependencies: debug "^2.2.0" -underscore@>=1.8.3, underscore@^1.9.1: +underscore@>=1.8.3, underscore@^1.9.1, underscore@~1.9.1: version "1.9.2" resolved "https://registry.npmjs.org/underscore/-/underscore-1.9.2.tgz#0c8d6f536d6f378a5af264a72f7bec50feb7cf2f" integrity sha512-D39qtimx0c1fI3ya1Lnhk3E9nONswSKhnffBI0gME9C99fYOkNi04xs8K6pePLhvl1frbDemkaBQ5ikWllR2HQ== underscore@~1.4.4: version "1.4.4" - resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.4.4.tgz#61a6a32010622afa07963bf325203cf12239d604" + resolved "https://registry.npmjs.org/underscore/-/underscore-1.4.4.tgz#61a6a32010622afa07963bf325203cf12239d604" integrity sha1-YaajIBBiKvoHljvzJSA88SI51gQ= -underscore@~1.9.1: - 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== - unhomoglyph@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/unhomoglyph/-/unhomoglyph-1.0.2.tgz#d69e5f5a6a1c6b211941a0889b81eba86595c253" - integrity sha1-1p5fWmocayEZQaCIm4HrqGWVwlM= + version "1.0.4" + resolved "https://registry.npmjs.org/unhomoglyph/-/unhomoglyph-1.0.4.tgz#38d2ec9de84ab921623ebd9fb60f710963c601f4" + integrity sha512-+y+QeEXwm4f0H8Tmy9fFUWHM95YcFjJLlv83/p3+EARUkeJBxnSOBADVyeuSq0TsRJ/UexxCXBKXo40ksu715w== union-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4" - integrity sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ= + version "1.0.1" + resolved "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" + integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== dependencies: arr-union "^3.1.0" get-value "^2.0.6" is-extendable "^0.1.1" - set-value "^0.4.3" + set-value "^2.0.1" uniq@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" + resolved "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= unique-string@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-1.0.0.tgz#9e1057cca851abb93398f8b33ae187b99caec11a" + resolved "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz#9e1057cca851abb93398f8b33ae187b99caec11a" integrity sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo= dependencies: crypto-random-string "^1.0.0" @@ -7106,13 +7059,13 @@ universalify@^0.1.0: integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== unorm@^1.3.3: - version "1.5.0" - resolved "https://registry.yarnpkg.com/unorm/-/unorm-1.5.0.tgz#01fa9b76f1c60f7916834605c032aa8962c3f00a" - integrity sha512-sMfSWoiRaXXeDZSXC+YRZ23H4xchQpwxjpw1tmfR+kgbBCaOgln4NI0LXejJIhnBuKINrB3WRn+ZI8IWssirVw== + version "1.6.0" + resolved "https://registry.npmjs.org/unorm/-/unorm-1.6.0.tgz#029b289661fba714f1a9af439eb51d9b16c205af" + integrity sha512-b2/KCUlYZUeA7JFUuRJZPUtr4gZvBh7tavtv4fvk4+KV9pfGiR6CQAQAWl49ZpR3ts2dk4FYkP7EIgDJoiOLDA== unset-value@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" + resolved "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= dependencies: has-value "^0.3.1" @@ -7120,17 +7073,17 @@ unset-value@^1.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" + resolved "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz#d2f0f737d16b0615e72a6935ed04214572d56f97" integrity sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c= upath@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/upath/-/upath-1.1.2.tgz#3db658600edaeeccbe6db5e684d67ee8c2acd068" - integrity sha512-kXpym8nmDmlCBr7nKdIx8P2jNBa+pBpIUFRnKJ4dr8htyYGJFokkr2ZvERRtUN+9SY+JqXouNgUPtv6JQva/2Q== + version "1.2.0" + resolved "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" + integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== update-notifier@^2.5.0: version "2.5.0" - resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-2.5.0.tgz#d0744593e13f161e406acb1d9408b72cad08aff6" + resolved "https://registry.npmjs.org/update-notifier/-/update-notifier-2.5.0.tgz#d0744593e13f161e406acb1d9408b72cad08aff6" integrity sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw== dependencies: boxen "^1.2.1" @@ -7146,63 +7099,58 @@ update-notifier@^2.5.0: uri-js@^4.2.2: version "4.2.2" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" + resolved "https://registry.npmjs.org/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" + resolved "https://registry.npmjs.org/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" + resolved "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73" integrity sha1-evjzA2Rem9eaJy56FKxovAYJ2nM= dependencies: prepend-http "^1.0.1" use@^3.1.0: version "3.1.1" - resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" + resolved "https://registry.npmjs.org/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== user-home@^1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/user-home/-/user-home-1.1.1.tgz#2b5be23a32b63a7c9deb8d0f28d485724a3df190" + resolved "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz#2b5be23a32b63a7c9deb8d0f28d485724a3df190" integrity sha1-K1viOjK2Onyd640PKNSFcko98ZA= 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" + resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= -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.3.3: +uuid@^3.3.2, uuid@^3.3.3: version "3.4.0" resolved "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== v8-compile-cache@^2.0.3: version "2.1.0" - resolved "http://52.167.60.66:8081/repository/npm-all/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz#e14de37b31a6d194f5690d67efc4e7f6fc6ab30e" + resolved "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz#e14de37b31a6d194f5690d67efc4e7f6fc6ab30e" integrity sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g== v8flags@^2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-2.1.1.tgz#aab1a1fa30d45f88dd321148875ac02c0b55e5b4" + resolved "https://registry.npmjs.org/v8flags/-/v8flags-2.1.1.tgz#aab1a1fa30d45f88dd321148875ac02c0b55e5b4" integrity sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ= dependencies: user-home "^1.1.1" 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" + resolved "https://registry.npmjs.org/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" @@ -7210,7 +7158,7 @@ validate-npm-package-license@^3.0.1: verror@1.10.0: version "1.10.0" - resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" + resolved "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= dependencies: assert-plus "^1.0.0" @@ -7230,17 +7178,17 @@ websocket@^1.0.31: whatwg-fetch@>=0.10.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz#fc804e458cc460009b1a2b966bc8817d2578aefb" + resolved "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz#fc804e458cc460009b1a2b966bc8817d2578aefb" integrity sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q== which-module@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" + resolved "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= which@1.3.1, which@^1.2.14, which@^1.2.9: version "1.3.1" - resolved "http://52.167.60.66:8081/repository/npm-all/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + resolved "https://registry.npmjs.org/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== dependencies: isexe "^2.0.0" @@ -7254,21 +7202,21 @@ which@^2.0.1: wide-align@1.1.3, wide-align@^1.1.0: version "1.1.3" - resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" + resolved "https://registry.npmjs.org/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" + resolved "https://registry.npmjs.org/widest-line/-/widest-line-2.0.1.tgz#7438764730ec7ef4381ce4df82fb98a53142a3fc" integrity sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA== dependencies: string-width "^2.1.1" -word-wrap@^1.2.3: +word-wrap@^1.2.3, word-wrap@~1.2.3: version "1.2.3" - resolved "http://52.167.60.66:8081/repository/npm-all/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" + resolved "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== wordwrap@~0.0.2: @@ -7276,22 +7224,9 @@ wordwrap@~0.0.2: resolved "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" integrity sha1-o9XabNXAvAAI03I0u68b7WMFkQc= -wordwrap@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" - integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= - -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" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== dependencies: ansi-styles "^3.2.0" @@ -7309,22 +7244,22 @@ wrap-ansi@^6.2.0: wrappy@1: version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= write-file-atomic@^2.0.0: - version "2.4.2" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.2.tgz#a7181706dfba17855d221140a9c06e15fcdd87b9" - integrity sha512-s0b6vB3xIVRLWywa6X9TOMA7k9zio0TMOsl9ZnDkliA/cfJlpHXAscj0gbHVJiTdIuAYpIyqS5GW91fqm6gG5g== + version "2.4.3" + resolved "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz#1fd2e9ae1df3e75b8d8c367443c692d4ca81f481" + integrity sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ== dependencies: graceful-fs "^4.1.11" imurmurhash "^0.1.4" signal-exit "^3.0.2" write-file-atomic@^3.0.0: - version "3.0.1" - resolved "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.1.tgz#558328352e673b5bb192cf86500d60b230667d4b" - integrity sha512-JPStrIyyVJ6oCSz/691fAjFtefZ6q+fP6tm+OS4Qw6o+TGQxNp1ziY2PgS+X/m0V8OWhZiO/m4xSj+Pr4RrZvw== + version "3.0.3" + resolved "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" + integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== dependencies: imurmurhash "^0.1.4" is-typedarray "^1.0.0" @@ -7333,79 +7268,63 @@ write-file-atomic@^3.0.0: write@1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3" + resolved "https://registry.npmjs.org/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3" integrity sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig== dependencies: mkdirp "^0.5.1" write@^0.2.1: version "0.2.1" - resolved "http://52.167.60.66:8081/repository/npm-all/write/-/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757" + resolved "https://registry.npmjs.org/write/-/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757" integrity sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c= dependencies: mkdirp "^0.5.1" xdg-basedir@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-3.0.0.tgz#496b2cc109eca8dbacfe2dc72b603c17c5870ad4" + resolved "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz#496b2cc109eca8dbacfe2dc72b603c17c5870ad4" integrity sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ= -xmlcreate@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/xmlcreate/-/xmlcreate-2.0.1.tgz#2ec38bd7b708d213fd1a90e2431c4af9c09f6a52" - integrity sha512-MjGsXhKG8YjTKrDCXseFo3ClbMGvUD4en29H2Cev1dv4P/chlpw6KdYmlCWDkhosBVKRDjM836+3e3pm1cBNJA== +xmlcreate@^2.0.3: + version "2.0.3" + resolved "https://registry.npmjs.org/xmlcreate/-/xmlcreate-2.0.3.tgz#df9ecd518fd3890ab3548e1b811d040614993497" + integrity sha512-HgS+X6zAztGa9zIK3Y3LXuJes33Lz9x+YyTxgrkIdabu2vqcGOWwdfCpf1hWLRrd553wd4QCDf6BBO6FfdsRiQ== xtend@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" - integrity sha1-pcbVMr5lbiPbgg77lDofBJmNY68= + version "4.0.2" + resolved "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== xxhashjs@^0.2.2: version "0.2.2" - resolved "https://registry.yarnpkg.com/xxhashjs/-/xxhashjs-0.2.2.tgz#8a6251567621a1c46a5ae204da0249c7f8caa9d8" + resolved "https://registry.npmjs.org/xxhashjs/-/xxhashjs-0.2.2.tgz#8a6251567621a1c46a5ae204da0249c7f8caa9d8" integrity sha512-AkTuIuVTET12tpsVIQo+ZU6f/qDmKuRUcjaqR+OIvm+aCBsZ95i7UVY5WJ9TMsSaZ0DA2WxoZ4acu0sPH+OKAw== dependencies: cuint "^0.2.2" -"y18n@^3.2.1 || ^4.0.0", y18n@^4.0.0: +y18n@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" + resolved "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== yaeti@^0.0.6: version "0.0.6" - resolved "https://registry.yarnpkg.com/yaeti/-/yaeti-0.0.6.tgz#f26f484d72684cf42bedfb76970aa1608fbf9577" + resolved "https://registry.npmjs.org/yaeti/-/yaeti-0.0.6.tgz#f26f484d72684cf42bedfb76970aa1608fbf9577" integrity sha1-8m9ITXJoTPQr7ft2lwqhYI+/lXc= yallist@^2.1.2: version "2.1.2" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" + resolved "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= -yallist@^3.0.0, yallist@^3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.3.tgz#b4b049e314be545e3ce802236d6cd22cd91c3de9" - integrity sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A== - -yargs-parser@13.0.0: - version "13.0.0" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.0.0.tgz#3fc44f3e76a8bdb1cc3602e860108602e5ccde8b" - integrity sha512-w2LXjoL8oRdRQN+hOyppuXs+V/fVAYtpcrRxZuF7Kt/Oc+Jr2uAcVntaUTNT6w5ihoWfFDpNY8CPx1QskxZ/pw== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - -yargs-parser@^11.1.1: - version "11.1.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-11.1.1.tgz#879a0865973bca9f6bab5cbdf3b1c67ec7d3bcf4" - integrity sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" +yallist@^3.0.0, yallist@^3.0.3: + version "3.1.1" + resolved "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== -yargs-parser@^13.0.0: +yargs-parser@13.1.1, yargs-parser@^13.1.1: version "13.1.1" - resolved "http://52.167.60.66:8081/repository/npm-all/yargs-parser/-/yargs-parser-13.1.1.tgz#d26058532aa06d365fe091f6a1fc06b2f7e5eca0" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz#d26058532aa06d365fe091f6a1fc06b2f7e5eca0" integrity sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ== dependencies: camelcase "^5.0.0" @@ -7427,31 +7346,30 @@ yargs-parser@^16.1.0: camelcase "^5.0.0" decamelize "^1.2.0" -yargs-unparser@1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-1.5.0.tgz#f2bb2a7e83cbc87bb95c8e572828a06c9add6e0d" - integrity sha512-HK25qidFTCVuj/D1VfNiEndpLIeJN78aqgR23nL3y4N0U/91cOAzqfHlF8n2BvoNDcZmJKin3ddNSvOxSr8flw== +yargs-unparser@1.6.0: + version "1.6.0" + resolved "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.6.0.tgz#ef25c2c769ff6bd09e4b0f9d7c605fb27846ea9f" + integrity sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw== dependencies: flat "^4.1.0" - lodash "^4.17.11" - yargs "^12.0.5" + lodash "^4.17.15" + yargs "^13.3.0" -yargs@13.2.2: - version "13.2.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.2.2.tgz#0c101f580ae95cea7f39d927e7770e3fdc97f993" - integrity sha512-WyEoxgyTD3w5XRpAQNYUB9ycVH/PQrToaTXdYXRdOXvEy1l19br+VJsc0vcO8PTGg5ro/l/GY7F/JMEBmI0BxA== +yargs@13.3.0, yargs@^13.3.0: + version "13.3.0" + resolved "https://registry.npmjs.org/yargs/-/yargs-13.3.0.tgz#4c657a55e07e5f2cf947f8a366567c04a0dedc83" + integrity sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA== dependencies: - cliui "^4.0.0" + cliui "^5.0.0" find-up "^3.0.0" get-caller-file "^2.0.1" - os-locale "^3.1.0" require-directory "^2.1.1" require-main-filename "^2.0.0" set-blocking "^2.0.0" string-width "^3.0.0" which-module "^2.0.0" y18n "^4.0.0" - yargs-parser "^13.0.0" + yargs-parser "^13.1.1" yargs@14.2.0: version "14.2.0" @@ -7470,24 +7388,6 @@ yargs@14.2.0: y18n "^4.0.0" yargs-parser "^15.0.0" -yargs@^12.0.5: - version "12.0.5" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13" - integrity sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw== - dependencies: - cliui "^4.0.0" - decamelize "^1.2.0" - find-up "^3.0.0" - get-caller-file "^1.0.1" - os-locale "^3.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 || ^4.0.0" - yargs-parser "^11.1.1" - yargs@^15.0.2: version "15.1.0" resolved "https://registry.npmjs.org/yargs/-/yargs-15.1.0.tgz#e111381f5830e863a89550bd4b136bb6a5f37219" @@ -7505,12 +7405,12 @@ yargs@^15.0.2: y18n "^4.0.0" yargs-parser "^16.1.0" -yarn@^1.16.0: - version "1.16.0" - resolved "https://registry.yarnpkg.com/yarn/-/yarn-1.16.0.tgz#5701b58ac555ff91f7b889b7d791b3dc86f8f999" - integrity sha512-cfemyGlnWKA1zopUUgebTPf8C4WkPIZ+TJmklwcEAJ4u6oWPtJeAzrsamaGGh/+b1XWe8W51yzAImC4AWbWR1g== +yarn@1.22.0, yarn@^1.16.0: + version "1.22.0" + resolved "https://registry.npmjs.org/yarn/-/yarn-1.22.0.tgz#acf82906e36bcccd1ccab1cfb73b87509667c881" + integrity sha512-KMHP/Jq53jZKTY9iTUt3dIVl/be6UPs2INo96+BnZHLKxYNTfwMmlgHTaMWyGZoO74RI4AIFvnWhYrXq2USJkg== -yn@^3.0.0: +yn@3.1.1: version "3.1.1" - resolved "http://52.167.60.66:8081/repository/npm-all/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" + resolved "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== -- GitLab From 37f1909167c811342ef734cfa88df39350614ad3 Mon Sep 17 00:00:00 2001 From: Will Date: Thu, 27 Feb 2020 10:21:16 +0100 Subject: [PATCH 38/86] Package cleanup --- packages/config-singleton/.gitignore | 1 + packages/config-singleton/README.adoc | 12 + packages/config-singleton/package.json | 56 +- .../config-singleton/test/config-specs.ts | 11 - yarn.lock | 524 ++++++------------ 5 files changed, 197 insertions(+), 407 deletions(-) create mode 100644 packages/config-singleton/.gitignore create mode 100644 packages/config-singleton/README.adoc diff --git a/packages/config-singleton/.gitignore b/packages/config-singleton/.gitignore new file mode 100644 index 0000000..d8f8d46 --- /dev/null +++ b/packages/config-singleton/.gitignore @@ -0,0 +1 @@ +docs diff --git a/packages/config-singleton/README.adoc b/packages/config-singleton/README.adoc new file mode 100644 index 0000000..a1f7e17 --- /dev/null +++ b/packages/config-singleton/README.adoc @@ -0,0 +1,12 @@ += TBD + +== Dev + +First run: + + yarn setup + +Then you may for instance: + + yarn test:watch + \ No newline at end of file diff --git a/packages/config-singleton/package.json b/packages/config-singleton/package.json index 34c335c..200d28c 100644 --- a/packages/config-singleton/package.json +++ b/packages/config-singleton/package.json @@ -3,13 +3,15 @@ "version": "0.1.0", "description": "Config Singleton package", "scripts": { - "build": "tsc --build tsconfig.json", + "clean": "rm -rf .nyc_output build coverage node_modules out dist build docs", + "setup": "npm install -g ts-node", + "lint": "eslint --ext .js,.ts src", "test": "mocha --opts mocha.opts", "test:watch": "mocha --opts mocha.opts --watch", - "lint": "eslint --ext .js,.ts src", - "clean": "rm -rf .nyc_output build coverage node_modules out dist", - "prepublishOnly": "yarn build", - "build:doc": "typedoc --out docs src" + "check": "yarn lint && yarn test", + "build": "tsc --build tsconfig.json", + "build:doc": "typedoc --out docs src", + "prepublishOnly": "yarn build" }, "author": "chevdor", "license": "ISC", @@ -18,36 +20,34 @@ "configuration", "manager", "env", - "envvar", "dotenv" ], + "dependencies": { + "@babel/runtime": "7.8.4", + "@types/dotenv": "8.2.0", + "chai": "4.2.0", + "dotenv": "8.2.0", + "mocha": "7.1.0", + "ts-node": "8.6.2", + "typedoc": "0.16.10", + "typescript": "3.8.2", + "yarn": "1.22.0" + }, "devDependencies": { - "@types/dotenv": "^6.1.1", - "@types/mocha": "^5.2.7", - "@typescript-eslint/eslint-plugin": "2.0.0", - "@typescript-eslint/parser": "2.0.0", "chai": "4.2.0", - "chai-http": "4.3.0", - "eslint": "6.2.0", - "eslint-config-prettier": "6.1.0", - "eslint-config-standard": "14.0.0", - "eslint-plugin-import": "2.18.2", - "eslint-plugin-node": "^9.1.0", + "eslint": "6.8.0", "eslint-plugin-promise": "4.2.1", - "eslint-plugin-react": "7.14.3", "eslint-plugin-standard": "4.0.1", - "mocha": "^6.1.4", - "nodemon": "1.19.1", - "snazzy": "^8.0.0", - "standard": "14.0.0", - "ts-node": "^8.3.0", - "typedoc": "^0.16.10", - "yarn": "^1.16.0" + "mocha": "7.1.0", + "ts-node": "8.6.2", + "typedoc": "0.16.10", + "typescript": "3.8.2", + "yarn": "1.22.0" }, "standard": { "parser": "babel-eslint", "ignore": [ - "dist/" + "build/" ], "env": [ "mocha" @@ -55,10 +55,6 @@ }, "engines": { "node": ">=10.13.0", - "yarn": "^1.10.1" - }, - "dependencies": { - "@babel/runtime": "^7.8.3", - "dotenv": "8.2.0" + "yarn": "^1.22.0" } } diff --git a/packages/config-singleton/test/config-specs.ts b/packages/config-singleton/test/config-specs.ts index 074226a..3b24417 100644 --- a/packages/config-singleton/test/config-specs.ts +++ b/packages/config-singleton/test/config-specs.ts @@ -1,25 +1,14 @@ -import { ConfigSpecs } from '../src/types'; import { SpecsFactory } from '../src/SpecsFactory'; const prefix = 'SAMPLE'; const mod = 'MODULE'; -// let specs: ConfigSpecs = { -// container: { -// prefix, -// module: mod, -// }, -// config: {}, -// }; -export let param; const factory = new SpecsFactory({ prefix, module: mod }); - factory.appendSpec(factory.getSpec('PARAM1', 'some param1')); factory.appendSpec(factory.getSpec('PARAM2', 'some param2')); factory.appendSpec(factory.getSpec('SECRET', 'some secret', { masked: true })); factory.appendSpec(factory.getSpec('REGEXP', 'some regexp', { regexp: /^\d{2}_\d{2}/ })); factory.appendSpec(factory.getSpec('MANDAT1', 'some mandatory param', { mandatory: true })); -// specs = factory.appendSpec(specs, factory.getSpec('REGEXP', 'some regexp', /^\d{2}_\d{2}/)); const specs = factory.getSpecs() export default specs; diff --git a/yarn.lock b/yarn.lock index 5467681..4d96d51 100644 --- a/yarn.lock +++ b/yarn.lock @@ -108,7 +108,7 @@ resolve "^1.8.1" semver "^5.5.1" -"@babel/runtime@^7.7.7", "@babel/runtime@^7.8.3": +"@babel/runtime@7.8.4", "@babel/runtime@^7.7.7", "@babel/runtime@^7.8.3": version "7.8.4" resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.8.4.tgz#d79f5a2040f7caa24d53e563aad49cbc05581308" integrity sha512-neAp3zt80trRVBI1x0azq6c57aNBqYZH8KhMm3TaB7wEI5Q4A2SHfBHE8w9gOhI/lrqxtEbXZgQIrHP+wvSGwQ== @@ -427,6 +427,13 @@ resolved "https://registry.npmjs.org/@types/cookiejar/-/cookiejar-2.1.1.tgz#90b68446364baf9efd8e8349bb36bd3852b75b80" integrity sha512-aRnpPa7ysx3aNW60hTiCtLHlQaIFsXFCgQlpakNgDNVFzbtusSY8PwjAQgRWfSk0ekNoBjO51eQRB6upA9uuyw== +"@types/dotenv@8.2.0": + version "8.2.0" + resolved "https://registry.npmjs.org/@types/dotenv/-/dotenv-8.2.0.tgz#5cd64710c3c98e82d9d15844375a33bf1b45d053" + integrity sha512-ylSC9GhfRH7m1EUXBXofhgx4lUWmFeQDINW5oLuS+gxWdfUeW4zJdeVTYVkexEW+e2VUvlZR2kGnGGipAWR7kw== + dependencies: + dotenv "*" + "@types/dotenv@^6.1.1": version "6.1.1" resolved "https://registry.npmjs.org/@types/dotenv/-/dotenv-6.1.1.tgz#f7ce1cc4fe34f0a4373ba99fefa437b0bec54b46" @@ -504,17 +511,6 @@ regexpp "^2.0.1" tsutils "^3.14.0" -"@typescript-eslint/eslint-plugin@2.21.0": - version "2.21.0" - resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.21.0.tgz#a34de84a0791cae0357c4dda805c5b4e8203b6c6" - integrity sha512-b5jjjDMxzcjh/Sbjuo7WyhrQmVJg0WipTHQgXh5Xwx10uYm6nPWqN1WGOsaNq4HR3Zh4wUx4IRQdDkCHwyewyw== - dependencies: - "@typescript-eslint/experimental-utils" "2.21.0" - eslint-utils "^1.4.3" - functional-red-black-tree "^1.0.1" - regexpp "^3.0.0" - tsutils "^3.17.1" - "@typescript-eslint/experimental-utils@2.0.0": version "2.0.0" resolved "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-2.0.0.tgz#f3d298bb411357f35c4184e24280b256b6321949" @@ -524,15 +520,6 @@ "@typescript-eslint/typescript-estree" "2.0.0" eslint-scope "^4.0.0" -"@typescript-eslint/experimental-utils@2.21.0": - version "2.21.0" - resolved "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-2.21.0.tgz#71de390a3ec00b280b69138d80733406e6e86bfa" - integrity sha512-olKw9JP/XUkav4lq0I7S1mhGgONJF9rHNhKFn9wJlpfRVjNo3PPjSvybxEldvCXnvD+WAshSzqH5cEjPp9CsBA== - dependencies: - "@types/json-schema" "^7.0.3" - "@typescript-eslint/typescript-estree" "2.21.0" - eslint-scope "^5.0.0" - "@typescript-eslint/parser@2.0.0": version "2.0.0" resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-2.0.0.tgz#4273bb19d03489daf8372cdaccbc8042e098178f" @@ -543,16 +530,6 @@ "@typescript-eslint/typescript-estree" "2.0.0" eslint-visitor-keys "^1.0.0" -"@typescript-eslint/parser@2.21.0": - version "2.21.0" - resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-2.21.0.tgz#4f200995517c3d5fc5ef51b17527bc948992e438" - integrity sha512-VrmbdrrrvvI6cPPOG7uOgGUFXNYTiSbnRq8ZMyuGa4+qmXJXVLEEz78hKuqupvkpwJQNk1Ucz1TenrRP90gmBg== - dependencies: - "@types/eslint-visitor-keys" "^1.0.0" - "@typescript-eslint/experimental-utils" "2.21.0" - "@typescript-eslint/typescript-estree" "2.21.0" - eslint-visitor-keys "^1.1.0" - "@typescript-eslint/typescript-estree@2.0.0": version "2.0.0" resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-2.0.0.tgz#c9f6c0efd1b11475540d6a55dc973cc5b9a67e77" @@ -561,19 +538,6 @@ lodash.unescape "4.0.1" semver "^6.2.0" -"@typescript-eslint/typescript-estree@2.21.0": - version "2.21.0" - resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-2.21.0.tgz#7e4be29f2e338195a2e8c818949ed0ff727cc943" - integrity sha512-NC/nogZNb9IK2MEFQqyDBAciOT8Lp8O3KgAfvHx2Skx6WBo+KmDqlU3R9KxHONaijfTIKtojRe3SZQyMjr3wBw== - dependencies: - debug "^4.1.1" - eslint-visitor-keys "^1.1.0" - glob "^7.1.6" - is-glob "^4.0.1" - lodash "^4.17.15" - semver "^6.3.0" - tsutils "^3.17.1" - abbrev@1: version "1.1.1" resolved "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" @@ -709,6 +673,14 @@ anymatch@^2.0.0: micromatch "^3.1.4" normalize-path "^2.1.1" +anymatch@~3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" + integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + append-transform@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/append-transform/-/append-transform-2.0.0.tgz#99d9d29c7b38391e6f428d28ce136551f0b77e12" @@ -716,24 +688,11 @@ append-transform@^2.0.0: dependencies: default-require-extensions "^3.0.0" -aproba@^1.0.3: - version "1.2.0" - resolved "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" - integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== - archy@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" integrity sha1-+cjBN1fMHde8N5rHeyxipcKGjEA= -are-we-there-yet@~1.1.2: - version "1.1.5" - resolved "https://registry.npmjs.org/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.3" resolved "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" @@ -768,7 +727,7 @@ arr-union@^3.1.0: resolved "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= -array-includes@^3.0.3, array-includes@^3.1.1: +array-includes@^3.0.3: version "3.1.1" resolved "https://registry.npmjs.org/array-includes/-/array-includes-3.1.1.tgz#cdd67e6852bdf9c1215460786732255ed2459348" integrity sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ== @@ -787,14 +746,6 @@ array-unique@^0.3.2: resolved "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= -array.prototype.flat@^1.2.1: - version "1.2.3" - resolved "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.3.tgz#0de82b426b0318dbfdb940089e38b043d37f6c7b" - integrity sha512-gBlRZV0VSmfPIeWfuuy56XZMvbVfbEUnOXUvt3F/eUUUSyzlgLxhEX4YAEpxNAogRGehPSnfXyPtYyKAhkzQhQ== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" - asn1@~0.2.3: version "0.2.4" resolved "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" @@ -1499,6 +1450,11 @@ binary-extensions@^1.0.0: resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== +binary-extensions@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz#23c0df14f6a88077f5f986c0d167ec03c3d5537c" + integrity sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow== + binary-search-tree@0.2.5: version "0.2.5" resolved "https://registry.npmjs.org/binary-search-tree/-/binary-search-tree-0.2.5.tgz#7dbb3b210fdca082450dad2334c304af39bdc784" @@ -1621,6 +1577,13 @@ braces@^2.3.1, braces@^2.3.2: split-string "^3.0.2" to-regex "^3.0.1" +braces@~3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + brorand@^1.0.1: version "1.1.0" resolved "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" @@ -1815,6 +1778,21 @@ check-error@^1.0.2: resolved "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82" integrity sha1-V00xLt2Iu13YkS6Sht1sCu1KrII= +chokidar@3.3.0: + version "3.3.0" + resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.3.0.tgz#12c0714668c55800f659e262d4962a97faf554a6" + integrity sha512-dGmKLDdT3Gdl7fBUe8XK+gAtGmzy5Fn0XkkWQuYxGIgWVPPse2CxFA5mtrlD0TOHaHjEUqkWNyP1XdHoJES/4A== + dependencies: + anymatch "~3.1.1" + braces "~3.0.2" + glob-parent "~5.1.0" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.2.0" + optionalDependencies: + fsevents "~2.1.1" + chokidar@^1.4.3, chokidar@^1.6.1: version "1.7.0" resolved "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" @@ -1850,11 +1828,6 @@ chokidar@^2.1.5: optionalDependencies: fsevents "^1.2.7" -chownr@^1.1.1: - version "1.1.4" - resolved "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" - integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== - ci-info@^1.5.0: version "1.6.0" resolved "https://registry.npmjs.org/ci-info/-/ci-info-1.6.0.tgz#2ca20dbb9ceb32d4524a683303313f0304b1e497" @@ -1940,11 +1913,6 @@ cliui@^6.0.0: strip-ansi "^6.0.0" wrap-ansi "^6.2.0" -code-point-at@^1.0.0: - version "1.1.0" - resolved "https://registry.npmjs.org/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.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" @@ -2026,11 +1994,6 @@ configstore@^3.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.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" - integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= - contains-path@^0.1.0: version "0.1.0" resolved "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" @@ -2157,7 +2120,7 @@ debug-log@^1.0.0: resolved "https://registry.npmjs.org/debug-log/-/debug-log-1.0.1.tgz#2307632d4c04382b8df8a32f70b895046d52745f" integrity sha1-IwdjLUwEOCuN+KMvcLiVBG1SdF8= -debug@3.2.6, debug@^3.1.0, debug@^3.2.6: +debug@3.2.6, debug@^3.1.0: version "3.2.6" resolved "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== @@ -2270,11 +2233,6 @@ delayed-stream@~1.0.0: resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= -delegates@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" - integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= - detect-file@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7" @@ -2287,11 +2245,6 @@ detect-indent@^4.0.0: dependencies: repeating "^2.0.0" -detect-libc@^1.0.2: - version "1.0.3" - resolved "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" - integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= - diff@3.5.0: version "3.5.0" resolved "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" @@ -2331,16 +2284,16 @@ dot-prop@^4.1.0: dependencies: is-obj "^1.0.0" +dotenv@*, dotenv@8.2.0: + version "8.2.0" + resolved "https://registry.npmjs.org/dotenv/-/dotenv-8.2.0.tgz#97e619259ada750eea3e4ea3e26bceea5424b16a" + integrity sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw== + dotenv@8.1.0: version "8.1.0" resolved "https://registry.npmjs.org/dotenv/-/dotenv-8.1.0.tgz#d811e178652bfb8a1e593c6dd704ec7e90d85ea2" integrity sha512-GUE3gqcDCaMltj2++g6bRQ5rBJWtkWTmqmD0fo1RnnMuUqHNCt2oTPeDnS9n6fKYvlhn7AeBkb38lymBtWBQdA== -dotenv@8.2.0: - version "8.2.0" - resolved "https://registry.npmjs.org/dotenv/-/dotenv-8.2.0.tgz#97e619259ada750eea3e4ea3e26bceea5424b16a" - integrity sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw== - drbg.js@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/drbg.js/-/drbg.js-1.0.1.tgz#3e36b6c42b37043823cdbc332d58f31e2445480b" @@ -2494,13 +2447,6 @@ eslint-config-prettier@6.1.0: dependencies: get-stdin "^6.0.0" -eslint-config-prettier@6.10.0: - version "6.10.0" - resolved "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-6.10.0.tgz#7b15e303bf9c956875c948f6b21500e48ded6a7f" - integrity sha512-AtndijGte1rPILInUdHjvKEGbIV06NuvPrqlIEaEaWtbtvJh464mDeyGMdZEQMsGvC0ZVkiex1fSNcC4HAbRGg== - dependencies: - get-stdin "^6.0.0" - eslint-config-standard-jsx@6.0.2: version "6.0.2" resolved "https://registry.npmjs.org/eslint-config-standard-jsx/-/eslint-config-standard-jsx-6.0.2.tgz#90c9aa16ac2c4f8970c13fc7efc608bacd02da70" @@ -2544,7 +2490,7 @@ eslint-import-resolver-node@^0.3.1, eslint-import-resolver-node@^0.3.2: debug "^2.6.9" resolve "^1.13.1" -eslint-module-utils@^2.2.0, eslint-module-utils@^2.4.0, eslint-module-utils@^2.4.1: +eslint-module-utils@^2.2.0, eslint-module-utils@^2.4.0: version "2.5.2" resolved "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.5.2.tgz#7878f7504824e1b857dd2505b59a8e5eda26a708" integrity sha512-LGScZ/JSlqGKiT8OC+cYRxseMjyqt6QO54nl281CK93unD89ijSeRV6An8Ci/2nvWVKe8K/Tqdm75RQoIOCr+Q== @@ -2585,24 +2531,6 @@ eslint-plugin-import@2.18.2, eslint-plugin-import@~2.18.0: read-pkg-up "^2.0.0" resolve "^1.11.0" -eslint-plugin-import@2.20.1: - version "2.20.1" - resolved "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.20.1.tgz#802423196dcb11d9ce8435a5fc02a6d3b46939b3" - integrity sha512-qQHgFOTjguR+LnYRoToeZWT62XM55MBVXObHM6SKFd1VzDcX/vqT1kAz8ssqigh5eMj8qXcRoXXGZpPP6RfdCw== - dependencies: - array-includes "^3.0.3" - array.prototype.flat "^1.2.1" - contains-path "^0.1.0" - debug "^2.6.9" - doctrine "1.5.0" - eslint-import-resolver-node "^0.3.2" - eslint-module-utils "^2.4.1" - has "^1.0.3" - minimatch "^3.0.4" - object.values "^1.1.0" - read-pkg-up "^2.0.0" - resolve "^1.12.0" - eslint-plugin-import@~2.14.0: version "2.14.0" resolved "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.14.0.tgz#6b17626d2e3e6ad52cfce8807a845d15e22111a8" @@ -2692,22 +2620,6 @@ eslint-plugin-react@7.14.3, eslint-plugin-react@~7.14.2: prop-types "^15.7.2" resolve "^1.10.1" -eslint-plugin-react@7.18.3: - version "7.18.3" - resolved "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.18.3.tgz#8be671b7f6be095098e79d27ac32f9580f599bc8" - integrity sha512-Bt56LNHAQCoou88s8ViKRjMB2+36XRejCQ1VoLj716KI1MoE99HpTVvIThJ0rvFmG4E4Gsq+UgToEjn+j044Bg== - dependencies: - array-includes "^3.1.1" - doctrine "^2.1.0" - has "^1.0.3" - jsx-ast-utils "^2.2.3" - object.entries "^1.1.1" - object.fromentries "^2.0.2" - object.values "^1.1.1" - prop-types "^15.7.2" - resolve "^1.14.2" - string.prototype.matchall "^4.0.2" - eslint-plugin-react@~7.11.1: version "7.11.1" resolved "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.11.1.tgz#c01a7af6f17519457d6116aa94fc6d2ccad5443c" @@ -3242,6 +3154,13 @@ fill-range@^4.0.0: repeat-string "^1.6.1" to-regex-range "^2.1.0" +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + find-cache-dir@^3.2.0: version "3.3.0" resolved "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.0.tgz#4d74ed1fe9ef1731467ca24378e8f8f5c8b6ed11" @@ -3396,13 +3315,6 @@ fs-extra@^8.1.0: jsonfile "^4.0.0" universalify "^0.1.0" -fs-minipass@^1.2.5: - version "1.2.7" - resolved "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7" - integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA== - dependencies: - minipass "^2.6.0" - fs-readdir-recursive@^1.0.0: version "1.1.0" resolved "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz#e32fc030a2ccee44a6b5371308da54be0b397d27" @@ -3421,6 +3333,11 @@ fsevents@^1.0.0, fsevents@^1.2.7: bindings "^1.5.0" nan "^2.12.1" +fsevents@~2.1.1: + version "2.1.2" + resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.1.2.tgz#4c0a1fb34bc68e543b4b82a9ec392bfbda840805" + integrity sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA== + function-bind@^1.1.1: version "1.1.1" resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" @@ -3442,20 +3359,6 @@ funding@^1.0.0: term-size "^2.1.0" word-wrap "^1.2.3" -gauge@~2.7.3: - version "2.7.4" - resolved "https://registry.npmjs.org/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" - gensync@^1.0.0-beta.1: version "1.0.0-beta.1" resolved "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269" @@ -3531,7 +3434,7 @@ glob-parent@^3.1.0: is-glob "^3.1.0" path-dirname "^1.0.0" -glob-parent@^5.0.0: +glob-parent@^5.0.0, glob-parent@~5.1.0: version "5.1.0" resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.0.tgz#5f4c1d1e748d30cd73ad2944b3577a81b081e8c2" integrity sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw== @@ -3679,11 +3582,6 @@ has-symbols@^1.0.0, has-symbols@^1.0.1: resolved "https://registry.npmjs.org/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.npmjs.org/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.npmjs.org/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" @@ -3799,7 +3697,7 @@ http-signature@~1.2.0: jsprim "^1.2.2" sshpk "^1.7.0" -iconv-lite@^0.4.17, iconv-lite@^0.4.24, iconv-lite@^0.4.4, iconv-lite@~0.4.13: +iconv-lite@^0.4.17, iconv-lite@^0.4.24, iconv-lite@~0.4.13: version "0.4.24" resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== @@ -3816,13 +3714,6 @@ ignore-by-default@^1.0.1: resolved "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09" integrity sha1-SMptcvbGo68Aqa1K5odr44ieKwk= -ignore-walk@^3.0.1: - version "3.0.3" - resolved "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.3.tgz#017e2447184bfeade7c238e4aefdd1e8f95b1e37" - integrity sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw== - dependencies: - minimatch "^3.0.4" - ignore@^3.0.9: version "3.3.10" resolved "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" @@ -3941,15 +3832,6 @@ inquirer@^7.0.0: strip-ansi "^5.1.0" through "^2.3.6" -internal-slot@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.2.tgz#9c2e9fb3cd8e5e4256c6f45fe310067fcfa378a3" - integrity sha512-2cQNfwhAfJIkU4KZPkDI+Gj5yNNnbqi40W9Gge6dfnk4TocEVm00B3bdiL+JINrbGJil2TeHvM4rETGzk/f/0g== - dependencies: - es-abstract "^1.17.0-next.1" - has "^1.0.3" - side-channel "^1.0.2" - interpret@^1.0.0: version "1.2.0" resolved "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz#d5061a6224be58e8083985f5014d844359576296" @@ -3998,6 +3880,13 @@ is-binary-path@^1.0.0: dependencies: binary-extensions "^1.0.0" +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + is-buffer@^1.1.5: version "1.1.6" resolved "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" @@ -4096,13 +3985,6 @@ is-finite@^1.0.0: resolved "https://registry.npmjs.org/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.npmjs.org/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.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" @@ -4127,7 +4009,7 @@ is-glob@^3.1.0: dependencies: is-extglob "^2.1.0" -is-glob@^4.0.0, is-glob@^4.0.1: +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: version "4.0.1" resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== @@ -4173,6 +4055,11 @@ is-number@^4.0.0: resolved "https://registry.npmjs.org/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.npmjs.org/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.npmjs.org/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" @@ -4499,7 +4386,7 @@ jsprim@^1.2.2: json-schema "0.2.3" verror "1.10.0" -jsx-ast-utils@^2.0.1, jsx-ast-utils@^2.1.0, jsx-ast-utils@^2.2.3: +jsx-ast-utils@^2.0.1, jsx-ast-utils@^2.1.0: version "2.2.3" resolved "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.2.3.tgz#8a9364e402448a3ce7f14d357738310d9248054f" integrity sha512-EdIHFMm+1BPynpKOpdPqiOsvnIrInRGJD7bzPZdPkjitQEqpdpUuFpq4T0npZFKTiB3RhWFdGN+oqOJIdhDhQA== @@ -4675,6 +4562,13 @@ log-symbols@2.2.0: dependencies: chalk "^2.0.1" +log-symbols@3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz#f3a08516a5dea893336a7dee14d18a1cfdab77c4" + integrity sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ== + dependencies: + chalk "^2.4.2" + loglevel@1.6.1: version "1.6.1" resolved "https://registry.npmjs.org/loglevel/-/loglevel-1.6.1.tgz#e0fc95133b6ef276cdc8887cdaf24aa6f156f8fa" @@ -4949,21 +4843,6 @@ minimongo@6.0.0: js-sha1 "^0.6.0" lodash "^3.10.1" -minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0: - version "2.9.0" - resolved "https://registry.npmjs.org/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.npmjs.org/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.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" @@ -4972,13 +4851,43 @@ mixin-deep@^1.2.0: for-in "^1.0.2" is-extendable "^1.0.1" -mkdirp@0.5.1, mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.1: +mkdirp@0.5.1, mkdirp@^0.5.1, mkdirp@~0.5.1: version "0.5.1" resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= dependencies: minimist "0.0.8" +mocha@7.1.0: + version "7.1.0" + resolved "https://registry.npmjs.org/mocha/-/mocha-7.1.0.tgz#c784f579ad0904d29229ad6cb1e2514e4db7d249" + integrity sha512-MymHK8UkU0K15Q/zX7uflZgVoRWiTjy0fXE/QjKts6mowUvGxOdPhZ2qj3b0iZdUrNZlW9LAIMFHB4IW+2b3EQ== + dependencies: + ansi-colors "3.2.3" + browser-stdout "1.3.1" + chokidar "3.3.0" + debug "3.2.6" + diff "3.5.0" + escape-string-regexp "1.0.5" + find-up "3.0.0" + glob "7.1.3" + growl "1.10.5" + he "1.2.0" + js-yaml "3.13.1" + log-symbols "3.0.0" + minimatch "3.0.4" + mkdirp "0.5.1" + ms "2.1.1" + node-environment-flags "1.0.6" + object.assign "4.1.0" + strip-json-comments "2.0.1" + supports-color "6.0.0" + which "1.3.1" + wide-align "1.1.3" + yargs "13.3.0" + yargs-parser "13.1.1" + yargs-unparser "1.6.0" + mocha@^6.1.4: version "6.2.2" resolved "https://registry.npmjs.org/mocha/-/mocha-6.2.2.tgz#5d8987e28940caf8957a7d7664b910dc5b2fea20" @@ -5076,15 +4985,6 @@ nedb@^1.8.0: mkdirp "~0.5.1" underscore "~1.4.4" -needle@^2.2.1: - version "2.3.2" - resolved "https://registry.npmjs.org/needle/-/needle-2.3.2.tgz#3342dea100b7160960a450dc8c22160ac712a528" - integrity sha512-DUzITvPVDUy6vczKKYTnWc/pBZ0EnjMJnQ3y+Jo5zfKFimJs7S3HFCxCRZYB9FUZcrzUQr3WsmvZgddMEIZv6w== - dependencies: - debug "^3.2.6" - iconv-lite "^0.4.4" - sax "^1.2.4" - neo-async@^2.6.0: version "2.6.1" resolved "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c" @@ -5113,6 +5013,14 @@ node-environment-flags@1.0.5: object.getownpropertydescriptors "^2.0.3" semver "^5.7.0" +node-environment-flags@1.0.6: + version "1.0.6" + resolved "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.6.tgz#a30ac13621f6f7d674260a54dede048c3982c088" + integrity sha512-5Evy2epuL+6TM0lCQGpFIj6KwiEsGh1SrHUhTbNX+sLbBtjidPZFAnVK9y5yU1+h//RitLbRHTIMyxQPtxMdHw== + dependencies: + object.getownpropertydescriptors "^2.0.3" + semver "^5.7.0" + node-fetch@^1.0.1: version "1.7.3" resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef" @@ -5121,22 +5029,6 @@ node-fetch@^1.0.1: encoding "^0.1.11" is-stream "^1.0.1" -node-pre-gyp@*: - version "0.14.0" - resolved "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.14.0.tgz#9a0596533b877289bcad4e143982ca3d904ddc83" - integrity sha512-+CvDC7ZttU/sSt9rFjix/P05iS43qHCOOGzcr3Ry99bXG7VX953+vFyEuph/tfqoYu8dttBkE86JSKBO2OzcxA== - 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.4.2" - node-preload@^0.2.0: version "0.2.1" resolved "https://registry.npmjs.org/node-preload/-/node-preload-0.2.1.tgz#c03043bb327f417a18fee7ab7ee57b408a144301" @@ -5160,14 +5052,6 @@ nodemon@1.19.1: undefsafe "^2.0.2" update-notifier "^2.5.0" -nopt@^4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" - integrity sha1-0NRoWv1UFRk8jHUFYC0NF81kR00= - dependencies: - abbrev "1" - osenv "^0.1.4" - nopt@~1.0.10: version "1.0.10" resolved "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz#6ddd21bd2a31417b92727dd585f8a6f37608ebee" @@ -5192,32 +5076,11 @@ normalize-path@^2.0.0, normalize-path@^2.0.1, normalize-path@^2.1.1: dependencies: remove-trailing-separator "^1.0.1" -normalize-path@^3.0.0: +normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== -npm-bundled@^1.0.1: - version "1.1.1" - resolved "https://registry.npmjs.org/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.npmjs.org/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.8" - resolved "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.8.tgz#56ee6cc135b9f98ad3d51c1c95da22bbb9b2ef3e" - integrity sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A== - dependencies: - ignore-walk "^3.0.1" - npm-bundled "^1.0.1" - npm-normalize-package-bin "^1.0.1" - npm-run-path@^2.0.0: version "2.0.2" resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" @@ -5225,21 +5088,6 @@ npm-run-path@^2.0.0: dependencies: path-key "^2.0.0" -npmlog@^4.0.2: - version "4.1.2" - resolved "https://registry.npmjs.org/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.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" - integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= - nyc@^15.0.0: version "15.0.0" resolved "https://registry.npmjs.org/nyc/-/nyc-15.0.0.tgz#eb32db2c0f29242c2414fe46357f230121cfc162" @@ -5320,7 +5168,7 @@ object.assign@4.1.0, object.assign@^4.1.0: has-symbols "^1.0.0" object-keys "^1.0.11" -object.entries@^1.1.0, object.entries@^1.1.1: +object.entries@^1.1.0: version "1.1.1" resolved "https://registry.npmjs.org/object.entries/-/object.entries-1.1.1.tgz#ee1cf04153de02bb093fec33683900f57ce5399b" integrity sha512-ilqR7BgdyZetJutmDPfXCDffGa0/Yzl2ivVNpbx/g4UeWrCdRnFDUBrKJGLhGieRHDATnyZXWBeCb29k9CJysQ== @@ -5330,7 +5178,7 @@ object.entries@^1.1.0, object.entries@^1.1.1: function-bind "^1.1.1" has "^1.0.3" -object.fromentries@^2.0.0, object.fromentries@^2.0.2: +object.fromentries@^2.0.0: version "2.0.2" resolved "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.2.tgz#4a09c9b9bb3843dd0f89acdb517a794d4f355ac9" integrity sha512-r3ZiBH7MQppDJVLx6fhD618GKNG40CZYH9wgwdhKxBDDbQgjeWGGd4AtkZad84d291YxvWe7bJGuE65Anh0dxQ== @@ -5363,7 +5211,7 @@ object.pick@^1.3.0: dependencies: isobject "^3.0.1" -object.values@^1.1.0, object.values@^1.1.1: +object.values@^1.1.0: version "1.1.1" resolved "https://registry.npmjs.org/object.values/-/object.values-1.1.1.tgz#68a99ecde356b7e9295a3c5e0ce31dc8c953de5e" integrity sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA== @@ -5423,19 +5271,11 @@ os-homedir@^1.0.0: resolved "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= -os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.2: +os-tmpdir@^1.0.1, os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/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.npmjs.org/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" - integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== - dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.0" - output-file-sync@^1.1.2: version "1.1.2" resolved "https://registry.npmjs.org/output-file-sync/-/output-file-sync-1.1.2.tgz#d0a33eefe61a205facb90092e826598d5245ce76" @@ -5632,6 +5472,11 @@ performance-now@^2.1.0: resolved "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= +picomatch@^2.0.4: + version "2.2.1" + resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.2.1.tgz#21bac888b6ed8601f831ce7816e335bc779f0a4a" + integrity sha512-ISBaA8xQNmwELC7eOjqFKMESB2VIqt4PPDD0nsS95b/9dZXvVKOlz9keMSnoGGKcOHXfTvDD6WMaRoSc9UuhRA== + pify@^2.0.0: version "2.3.0" resolved "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" @@ -5800,7 +5645,7 @@ rbush@^2.0.0: dependencies: quickselect "^1.0.1" -rc@^1.0.1, rc@^1.1.6, rc@^1.2.7: +rc@^1.0.1, rc@^1.1.6: version "1.2.8" resolved "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== @@ -5832,7 +5677,7 @@ read-pkg@^2.0.0: normalize-package-data "^2.3.2" path-type "^2.0.0" -readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.3.5: +readable-stream@^2.0.2, readable-stream@^2.3.5: version "2.3.7" resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== @@ -5863,6 +5708,13 @@ readdirp@^2.0.0, readdirp@^2.2.1: micromatch "^3.1.10" readable-stream "^2.0.2" +readdirp@~3.2.0: + version "3.2.0" + resolved "https://registry.npmjs.org/readdirp/-/readdirp-3.2.0.tgz#c30c33352b12c96dfb4b895421a49fd5a9593839" + integrity sha512-crk4Qu3pmXwgxdSgGhgA/eXiJAPQiX4GMOZZMXnqKxHX7TaoL+3gQVo/WeuAiogr07DpnfjIMpXXa+PAIvwPGQ== + dependencies: + picomatch "^2.0.4" + rechoir@^0.6.2: version "0.6.2" resolved "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" @@ -5914,14 +5766,6 @@ regex-not@^1.0.0, regex-not@^1.0.2: extend-shallow "^3.0.2" safe-regex "^1.1.0" -regexp.prototype.flags@^1.3.0: - version "1.3.0" - resolved "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz#7aba89b3c13a64509dabcf3ca8d9fbb9bdf5cb75" - integrity sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" - regexpp@^2.0.0, regexpp@^2.0.1: version "2.0.1" resolved "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" @@ -6076,7 +5920,7 @@ resolve-url@^0.2.1: resolved "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= -resolve@^1.1.6, resolve@^1.10.0, resolve@^1.10.1, resolve@^1.11.0, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.14.2, resolve@^1.3.2, resolve@^1.6.0, resolve@^1.8.1: +resolve@^1.1.6, resolve@^1.10.0, resolve@^1.10.1, resolve@^1.11.0, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.3.2, resolve@^1.6.0, resolve@^1.8.1: version "1.15.1" resolved "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz#27bdcdeffeaf2d6244b95bb0f9f4b4653451f3e8" integrity sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w== @@ -6111,13 +5955,6 @@ rimraf@2.6.3, rimraf@~2.6.2: dependencies: glob "^7.1.3" -rimraf@^2.6.1: - version "2.7.1" - resolved "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" - integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== - dependencies: - glob "^7.1.3" - rimraf@^3.0.0: version "3.0.2" resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" @@ -6181,11 +6018,6 @@ safe-regex@^1.1.0: resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -sax@^1.2.4: - version "1.2.4" - resolved "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" - integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== - secp256k1@^3.8.0: version "3.8.0" resolved "https://registry.npmjs.org/secp256k1/-/secp256k1-3.8.0.tgz#28f59f4b01dbee9575f56a47034b7d2e3b3b352d" @@ -6217,7 +6049,7 @@ semver@^6.0.0, semver@^6.1.0, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0: resolved "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== -set-blocking@^2.0.0, set-blocking@~2.0.0: +set-blocking@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= @@ -6273,14 +6105,6 @@ shelljs@^0.8.3: interpret "^1.0.0" rechoir "^0.6.2" -side-channel@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/side-channel/-/side-channel-1.0.2.tgz#df5d1abadb4e4bf4af1cd8852bf132d2f7876947" - integrity sha512-7rL9YlPHg7Ancea1S96Pa8/QWb4BtXL/TZvS6B8XFetGBeuhAsfmUspK6DokBeZ64+Kj9TCNRD/30pVz1BvQNA== - dependencies: - es-abstract "^1.17.0-next.1" - object-inspect "^1.7.0" - signal-exit@^3.0.0, signal-exit@^3.0.2: version "3.0.2" resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" @@ -6337,7 +6161,7 @@ snapdragon@^0.8.1: source-map-resolve "^0.5.0" use "^3.1.0" -snazzy@8.0.0, snazzy@^8.0.0: +snazzy@^8.0.0: version "8.0.0" resolved "https://registry.npmjs.org/snazzy/-/snazzy-8.0.0.tgz#97a6d4173d03f6549b98a9dd88362765fac0ef88" integrity sha512-59GS69hQD8FvJoNGeDz8aZtbYhkCFxCPQB1BFzAWiVVwPmS/J6Vjaku0k6tGNsdSxQ0kAlButdkn8bPR2hLcBw== @@ -6542,15 +6366,6 @@ static-extend@^0.1.1: define-property "^0.2.5" object-copy "^0.1.0" -string-width@^1.0.1: - version "1.0.2" - resolved "https://registry.npmjs.org/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@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: version "2.1.1" resolved "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" @@ -6577,18 +6392,6 @@ string-width@^4.1.0, string-width@^4.2.0: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.0" -string.prototype.matchall@^4.0.2: - version "4.0.2" - resolved "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.2.tgz#48bb510326fb9fdeb6a33ceaa81a6ea04ef7648e" - integrity sha512-N/jp6O5fMf9os0JU3E72Qhf590RSRZU/ungsL/qJUYVTNv7hTG0P/dbPjxINVN9jpscu3nzYwKESU3P3RY5tOg== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.0" - has-symbols "^1.0.1" - internal-slot "^1.0.2" - regexp.prototype.flags "^1.3.0" - side-channel "^1.0.2" - string.prototype.trimleft@^2.1.1: version "2.1.1" resolved "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz#9bdb8ac6abd6d602b17a4ed321870d2f8dcefc74" @@ -6619,7 +6422,7 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -strip-ansi@^3.0.0, strip-ansi@^3.0.1: +strip-ansi@^3.0.0: version "3.0.1" resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= @@ -6746,19 +6549,6 @@ taffydb@2.6.2: resolved "https://registry.npmjs.org/taffydb/-/taffydb-2.6.2.tgz#7cbcb64b5a141b6a2efc2c5d2c67b4e150b2a268" integrity sha1-fLy2S1oUG2ou/CxdLGe04VCyomg= -tar@^4.4.2: - version "4.4.13" - resolved "https://registry.npmjs.org/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" - term-size@^1.2.0: version "1.2.0" resolved "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz#458b83887f288fc56d6fffbfad262e26638efa69" @@ -6840,6 +6630,13 @@ to-regex-range@^2.1.0: is-number "^3.0.0" repeat-string "^1.6.1" +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/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.npmjs.org/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" @@ -6886,7 +6683,7 @@ tslib@^1.8.1, tslib@^1.9.0: resolved "https://registry.npmjs.org/tslib/-/tslib-1.11.0.tgz#f1f3528301621a53220d58373ae510ff747a66bc" integrity sha512-BmndXUtiTn/VDDrJzQE7Mm22Ix3PxgLltW9bSNLoeCY31gnG2OPx0QqJnuc9oMIKioYrz487i6K9o4Pdn0j+Kg== -tsutils@^3.14.0, tsutils@^3.17.1: +tsutils@^3.14.0: version "3.17.1" resolved "https://registry.npmjs.org/tsutils/-/tsutils-3.17.1.tgz#ed719917f11ca0dee586272b2ac49e015a2dd759" integrity sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g== @@ -6991,7 +6788,7 @@ typescript@3.7.x: resolved "https://registry.npmjs.org/typescript/-/typescript-3.7.5.tgz#0692e21f65fd4108b9330238aac11dd2e177a1ae" integrity sha512-/P5lkRXkWHNAbcJIiHPfRoKqyd7bsyCma1hZNUGfn20qm64T6ZBlrzprymeu918H+mB/0rIg2gGK/BXkhhYgBw== -typescript@^3.5.3: +typescript@3.8.2, typescript@^3.5.3: version "3.8.2" resolved "https://registry.npmjs.org/typescript/-/typescript-3.8.2.tgz#91d6868aaead7da74f493c553aeff76c0c0b1d5a" integrity sha512-EgOVgL/4xfVrCMbhYKUQTdF37SQn4Iw73H5BgCrF1Abdun7Kwy/QZsE/ssAy0y4LxBbvua3PIbFsbRczWWnDdQ== @@ -7200,7 +6997,7 @@ which@^2.0.1: dependencies: isexe "^2.0.0" -wide-align@1.1.3, wide-align@^1.1.0: +wide-align@1.1.3: version "1.1.3" resolved "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== @@ -7317,11 +7114,6 @@ yallist@^2.1.2: resolved "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= -yallist@^3.0.0, yallist@^3.0.3: - version "3.1.1" - resolved "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" - integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== - yargs-parser@13.1.1, yargs-parser@^13.1.1: version "13.1.1" resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz#d26058532aa06d365fe091f6a1fc06b2f7e5eca0" -- GitLab From 7e075bde7e889147c1b04f4f9ab5871c70ac5513 Mon Sep 17 00:00:00 2001 From: Will Date: Wed, 11 Mar 2020 17:04:03 +0100 Subject: [PATCH 39/86] Remove the config-singleton package and switch to using confmgr --- .vscode/settings.json | 2 + package.json | 2 +- packages/config-singleton/.env-sample | 1 - packages/config-singleton/.gitignore | 1 - packages/config-singleton/.nvmrc | 1 - packages/config-singleton/README.adoc | 12 - packages/config-singleton/mocha.opts | 5 - packages/config-singleton/package.json | 60 --- .../samples/01_ts_basic/config-fields.ts | 8 - .../samples/01_ts_basic/sample.ts | 1 - .../config-singleton/src/ConfigSingleton.ts | 136 ----- packages/config-singleton/src/SpecsFactory.ts | 34 -- packages/config-singleton/src/config.ts | 29 -- packages/config-singleton/src/types.ts | 45 -- .../test/config-singleton.test.ts | 88 ---- .../config-singleton/test/config-specs.ts | 14 - .../test/specs-factory.test.ts | 19 - packages/config-singleton/tsconfig.json | 28 - packages/polkabot/configSpecs.yml | 127 +++++ packages/polkabot/package.json | 1 + packages/polkabot/src/ConfigSingleton.ts | 121 ----- packages/polkabot/src/index.ts | 48 +- yarn.lock | 482 +++--------------- 23 files changed, 221 insertions(+), 1044 deletions(-) delete mode 100644 packages/config-singleton/.env-sample delete mode 100644 packages/config-singleton/.gitignore delete mode 100644 packages/config-singleton/.nvmrc delete mode 100644 packages/config-singleton/README.adoc delete mode 100644 packages/config-singleton/mocha.opts delete mode 100644 packages/config-singleton/package.json delete mode 100644 packages/config-singleton/samples/01_ts_basic/config-fields.ts delete mode 100644 packages/config-singleton/samples/01_ts_basic/sample.ts delete mode 100644 packages/config-singleton/src/ConfigSingleton.ts delete mode 100644 packages/config-singleton/src/SpecsFactory.ts delete mode 100644 packages/config-singleton/src/config.ts delete mode 100644 packages/config-singleton/src/types.ts delete mode 100644 packages/config-singleton/test/config-singleton.test.ts delete mode 100644 packages/config-singleton/test/config-specs.ts delete mode 100644 packages/config-singleton/test/specs-factory.test.ts delete mode 100644 packages/config-singleton/tsconfig.json create mode 100644 packages/polkabot/configSpecs.yml delete mode 100644 packages/polkabot/src/ConfigSingleton.ts diff --git a/.vscode/settings.json b/.vscode/settings.json index 220d945..7549f7f 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -4,7 +4,9 @@ "**/node_modules": false }, "cSpell.words": [ + "BLOCKSTATS", "BOTMASTER", + "BOTUSER", "Blocthday", "Chatbot", "Datastore", diff --git a/package.json b/package.json index 3670893..e5fc7b7 100644 --- a/package.json +++ b/package.json @@ -19,6 +19,6 @@ "@babel/plugin-transform-runtime": "^7.8.3" }, "dependencies": { - "@babel/runtime": "^7.8.3" + "@babel/runtime": "^7.8.7" } } diff --git a/packages/config-singleton/.env-sample b/packages/config-singleton/.env-sample deleted file mode 100644 index ebc2ac8..0000000 --- a/packages/config-singleton/.env-sample +++ /dev/null @@ -1 +0,0 @@ -POLKABOT_PLUGIN_BLOCKSTATS_DISABLED=true diff --git a/packages/config-singleton/.gitignore b/packages/config-singleton/.gitignore deleted file mode 100644 index d8f8d46..0000000 --- a/packages/config-singleton/.gitignore +++ /dev/null @@ -1 +0,0 @@ -docs diff --git a/packages/config-singleton/.nvmrc b/packages/config-singleton/.nvmrc deleted file mode 100644 index b4de394..0000000 --- a/packages/config-singleton/.nvmrc +++ /dev/null @@ -1 +0,0 @@ -11 diff --git a/packages/config-singleton/README.adoc b/packages/config-singleton/README.adoc deleted file mode 100644 index a1f7e17..0000000 --- a/packages/config-singleton/README.adoc +++ /dev/null @@ -1,12 +0,0 @@ -= TBD - -== Dev - -First run: - - yarn setup - -Then you may for instance: - - yarn test:watch - \ No newline at end of file diff --git a/packages/config-singleton/mocha.opts b/packages/config-singleton/mocha.opts deleted file mode 100644 index 3551806..0000000 --- a/packages/config-singleton/mocha.opts +++ /dev/null @@ -1,5 +0,0 @@ ---ui bdd ---recursive ---require ts-node/register ---watch-extensions ts -test/**/*.test.ts diff --git a/packages/config-singleton/package.json b/packages/config-singleton/package.json deleted file mode 100644 index 200d28c..0000000 --- a/packages/config-singleton/package.json +++ /dev/null @@ -1,60 +0,0 @@ -{ - "name": "config-singleton", - "version": "0.1.0", - "description": "Config Singleton package", - "scripts": { - "clean": "rm -rf .nyc_output build coverage node_modules out dist build docs", - "setup": "npm install -g ts-node", - "lint": "eslint --ext .js,.ts src", - "test": "mocha --opts mocha.opts", - "test:watch": "mocha --opts mocha.opts --watch", - "check": "yarn lint && yarn test", - "build": "tsc --build tsconfig.json", - "build:doc": "typedoc --out docs src", - "prepublishOnly": "yarn build" - }, - "author": "chevdor", - "license": "ISC", - "keywords": [ - "config", - "configuration", - "manager", - "env", - "dotenv" - ], - "dependencies": { - "@babel/runtime": "7.8.4", - "@types/dotenv": "8.2.0", - "chai": "4.2.0", - "dotenv": "8.2.0", - "mocha": "7.1.0", - "ts-node": "8.6.2", - "typedoc": "0.16.10", - "typescript": "3.8.2", - "yarn": "1.22.0" - }, - "devDependencies": { - "chai": "4.2.0", - "eslint": "6.8.0", - "eslint-plugin-promise": "4.2.1", - "eslint-plugin-standard": "4.0.1", - "mocha": "7.1.0", - "ts-node": "8.6.2", - "typedoc": "0.16.10", - "typescript": "3.8.2", - "yarn": "1.22.0" - }, - "standard": { - "parser": "babel-eslint", - "ignore": [ - "build/" - ], - "env": [ - "mocha" - ] - }, - "engines": { - "node": ">=10.13.0", - "yarn": "^1.22.0" - } -} diff --git a/packages/config-singleton/samples/01_ts_basic/config-fields.ts b/packages/config-singleton/samples/01_ts_basic/config-fields.ts deleted file mode 100644 index 8b91872..0000000 --- a/packages/config-singleton/samples/01_ts_basic/config-fields.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { EnvDictionnary } from "../../../src/types"; - -const PREFIX = "SAMPLE_"; - -export const ConfigFields: EnvDictionnary = { - POLKADOT_NODE_NAME: { name: PREFIX + "POLKADOT_NODE_NAME", description: "The name of the node we connect to" }, - POLKADOT_URL: { name: PREFIX + "POLKADOT_WS_HOST", description: "The Polkadot WS url" }, -}; diff --git a/packages/config-singleton/samples/01_ts_basic/sample.ts b/packages/config-singleton/samples/01_ts_basic/sample.ts deleted file mode 100644 index 4637847..0000000 --- a/packages/config-singleton/samples/01_ts_basic/sample.ts +++ /dev/null @@ -1 +0,0 @@ -import { ConfigSingleton } from "./ConfigSingleton"; diff --git a/packages/config-singleton/src/ConfigSingleton.ts b/packages/config-singleton/src/ConfigSingleton.ts deleted file mode 100644 index 50bb5e0..0000000 --- a/packages/config-singleton/src/ConfigSingleton.ts +++ /dev/null @@ -1,136 +0,0 @@ -import process = require('process'); -import dotenv from 'dotenv'; -import * as path from 'path'; -import { ConfigSpecs, ConfigDictionnaryRaw, ConfigDictionnarySimple, ConfigItem } from './types'; - -function clone(object: any): any { - return JSON.parse(JSON.stringify(object)); -} - -export class ConfigSingleton { - private static instance: ConfigSingleton; - - private specs: ConfigSpecs; - - private constructor(specs: ConfigSpecs) { - if (!specs) throw new Error('Missing specs in ctor'); - this.specs = specs; - this.refresh(); - } - - public static getInstance(specs?: ConfigSpecs): ConfigSingleton { - if (!this.instance && !specs) { - throw new Error('Missing specs'); - } - if (!this.instance && specs) { - this.instance = new ConfigSingleton(specs); - } - - return this.instance; - } - - public getConfig(): ConfigDictionnarySimple { - // here we clone the config specs so we dont lose the specs - const confClone: any = clone(this.specs.config); //process.env; - - Object.entries(confClone).map(([key, _val]) => { - confClone[key] = process.env[key]; - }); - - // Hook up functions - ['Validate', 'DumpEnv'].map((f: string) => { - confClone[f] = this[f].bind(this); - }); - - return confClone; - } - - public getSpecs(): ConfigDictionnaryRaw { - return this.specs.config; - } - - private static getEnvFile(): string { - const profile = process.env.NODE_ENV || 'production'; - // console.log('NODE_ENV profile: ', profile); - const envfile = - profile == 'production' - ? path.resolve(process.cwd(), '.env') - : path.resolve(process.cwd(), '.env.' + profile.toLowerCase()); - return envfile; - } - - /** You likely will never have to use this function which - * is mostly use for the tests. If you don't know, do NOT call - * this function, it would take time and likely do nothing - * interesting for you. - */ - public refresh(): void { - const envfile = ConfigSingleton.getEnvFile(); - // console.log('ENV file:', envfile); - dotenv.config({ path: envfile }); - // const ENV = process.env; - - // console.log(ENV); - // this.filteredEnv = Object.entries(process.env).filter(([key, val]) => { - // return key.startsWith('SAMPLE'); - // }); - // ConfigSingleton.instance = new ConfigSingleton(this.specs) - } - - // assert((ConfigSingleton.instance.polkadot.nodeName || '').length > 0, "The extracted config does not look OK") - // } - - /** Calling this function will get an instance of the Config and attach it - * to the global scope. - */ - public static loadToGlobal(): void { - global['Config'] = ConfigSingleton.getInstance().getConfig(); - } - - /** Validate the config and return wheather it is valid or not */ - public Validate(): boolean { - let result = true; - const configSpecs = this.getSpecs(); - Object.entries(configSpecs).map(([_key, env]: [string, ConfigItem]) => { - if (env && env.options) { - const value = process.env[env.name] || ''; - if (env.options.regexp != undefined) { - const regex = RegExp(env.options.regexp); - const testResult = regex.test(value); - result = result && testResult; - } - result = result && (!env.options.mandatory || (env.options.mandatory && value.length > 0)); - } - }); - return result; - } - - /** Show the ENV variables this application cares about */ - // public static getSupportedEnv(): ConfigSpecs { - // return ConfigSingleton.g; - // } - - /** - * Display the current ENV to ensure everything that is used matches - * the expectations. - */ - public DumpEnv(logger: (...args) => void): void { - const container = `${this.specs.container.prefix}_${this.specs.container.module}`; - logger(`===> ${container} ENV:`); - Object.entries(this.specs.config).map(([_key, env]) => { - logger( - `- ${env.name.replace(container + '_', '')}: ${env.description}\n${ - env.options && env.options.regexp ? ' regexp: ' + env.options.regexp + '\n' : '' - } value: ${ - env.options && env.options.masked - ? process.env[env.name] - ? '*****' - : 'empty' - : process.env[env.name] - }` - ); - }); - - logger('========================================'); - } -} diff --git a/packages/config-singleton/src/SpecsFactory.ts b/packages/config-singleton/src/SpecsFactory.ts deleted file mode 100644 index eb341ca..0000000 --- a/packages/config-singleton/src/SpecsFactory.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { ConfigItem, FactoryCtorInitParams, ConfigSpecs, ConfigItemOptions } from './types'; - -export class SpecsFactory { - // private params: FactoryCtorInitParams; - private specs: ConfigSpecs; - - constructor(container: FactoryCtorInitParams) { - // this.params = params; - this.specs = { - config: {}, - container, - }; - } - - public getSpec(name: string, description: string, options?: ConfigItemOptions): ConfigItem { - const res: ConfigItem = { - name: `${this.specs.container.prefix}_${this.specs.container.module}_${name}`, - description, - options, - }; - return res; - } - - public getSpecs(): ConfigSpecs { - return this.specs; - } - - public appendSpec(newSpec: ConfigItem): ConfigSpecs { - // console.log('Appendspec', newSpec); - if (!this.specs.config) this.specs.config = {}; - this.specs.config[newSpec.name] = newSpec; - return this.specs; - } -} diff --git a/packages/config-singleton/src/config.ts b/packages/config-singleton/src/config.ts deleted file mode 100644 index b231755..0000000 --- a/packages/config-singleton/src/config.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { config as dotenvConfig } from 'dotenv'; - -dotenvConfig(); - -module.exports = { - // General Polkadot config - polkadot: { - // This is just for you to remember. i.e. 'Crash Override' - nodeName: process.env.POLKADOT_NODE_NAME, - // WebSocket host:port, usually :9944. i.e. 'ws://127.0.0.1:9944' - host: process.env.POLKADOT_WS_HOST || 'ws://127.0.0.1:9944', - }, - - // General Matrix config - matrix: { - // Who is managing the bot. i.e. '@you:matrix.org' - botMasterId: process.env.MATRIX_BOTMASTER_ID, - // In what room is the bot active by default. i.e. '!:matrix.org' - roomId: process.env.MATRIX_ROOM_ID, - // Credentials of the bot. i.e. '@...:matrix.org' - botUserId: process.env.MATRIX_BOT_USER_ID, - // Token. i.e. 'your_token_here' - token: process.env.MATRIX_TOKEN, - // Base Matrix URL. i.e. 'https://matrix.org' - baseUrl: process.env.MATRIX_BASE_URL || 'https://matrix.org', - loginUserId: process.env.MATRIX_LOGIN_USER_ID, - loginUserPassword: process.env.MATRIX_LOGIN_USER_PASSWORD, - }, -}; diff --git a/packages/config-singleton/src/types.ts b/packages/config-singleton/src/types.ts deleted file mode 100644 index f9f0945..0000000 --- a/packages/config-singleton/src/types.ts +++ /dev/null @@ -1,45 +0,0 @@ -export type ConfigItemOptions = { - masked?: boolean; // true for tokens, passwords, etc.. - regexp?: RegExp; // validation regexp - mandatory?: boolean; // Do we explode if this ENV is not defined and there is no default? - default?: any; // The default if nothing is provided -}; - -type ConfigValue = any; - -export interface ConfigItem { - name: string; // Name of the envrionment varibale - description: string; // Description of what the var does - options?: ConfigItemOptions; - value?: ConfigValue; -} - -// TODO: rename those -export type ConfigDictionnarySimple = { - [key: string]: ConfigValue; -}; - -/** - * - */ -// TODO: rename those -export type ConfigDictionnaryRaw = { - [key: string]: ConfigItem; -}; - -// export type CleanConfig = ConfigDictionnary; - -export type FullConfig = { - factoryParams: FactoryCtorInitParams; - config: ConfigDictionnaryRaw; -}; - -export type FactoryCtorInitParams = { - prefix: string; - module: string; -}; - -export type ConfigSpecs = { - container: FactoryCtorInitParams; - config: ConfigDictionnaryRaw; -}; diff --git a/packages/config-singleton/test/config-singleton.test.ts b/packages/config-singleton/test/config-singleton.test.ts deleted file mode 100644 index 7d68997..0000000 --- a/packages/config-singleton/test/config-singleton.test.ts +++ /dev/null @@ -1,88 +0,0 @@ -import { ConfigSingleton } from '../src/ConfigSingleton'; -import { expect } from 'chai'; -import specs from './config-specs'; - -const param1 = '42'; -const param2 = 'r=3.14'; -const secret = 'password123'; -const regexp = '12_34'; - -// Here we set some ENV for testing -function loadDefaultEnv() { - process.env.SAMPLE_MODULE_PARAM1 = param1; - process.env.SAMPLE_MODULE_PARAM2 = param2; - process.env.SAMPLE_MODULE_SECRET = secret; - process.env.SAMPLE_MODULE_REGEXP = regexp; -} - -describe('ConfigSingleton', () => { - beforeEach(function() { - loadDefaultEnv(); - }); - - it('Should fail the first call without config specs', function() { - expect(() => ConfigSingleton.getInstance()).to.throw(/missing/i); - }); - - it('Should pass the second call with config specs', function() { - expect(() => ConfigSingleton.getInstance(specs)).to.not.throw(); - expect(() => ConfigSingleton.getInstance(specs)).to.not.throw(); - }); - - it('Should pass the second call without config specs', function() { - expect(() => ConfigSingleton.getInstance(specs)).to.not.throw(); - expect(() => ConfigSingleton.getInstance()).to.not.throw(); - }); - - it('Should properly fetch params', function() { - const config = ConfigSingleton.getInstance(specs).getConfig(); - // console.log(JSON.stringify(config, null, 2)); - expect(config['SAMPLE_MODULE_PARAM1']).to.equal(param1); - expect(config['SAMPLE_MODULE_PARAM2']).to.equal(param2); - expect(config['SAMPLE_MODULE_SECRET']).to.equal(secret); - expect(config['SAMPLE_MODULE_REGEXP']).to.equal(regexp); - expect(() => ConfigSingleton.getInstance()).to.not.throw(); - }); - - it('Should properly fetch config specs', function() { - const configSpecs = ConfigSingleton.getInstance(specs).getSpecs(); - // console.log('configSpecs', JSON.stringify(configSpecs, null, 2)); - expect(configSpecs['SAMPLE_MODULE_PARAM1'].description).to.have.length.above(3); - - // expect(() => ConfigSingleton.getInstance()).to.not.throw(); - }); - - it('Should return clean config', function() { - const config = ConfigSingleton.getInstance(specs).getConfig(); - // console.log(JSON.stringify(config, null, 2)); - expect(config['SAMPLE_MODULE_PARAM1']).to.equal(param1); - expect(config['SAMPLE_MODULE_PARAM2']).to.equal(param2); - expect(config['SAMPLE_MODULE_SECRET']).to.equal(secret); - expect(config['SAMPLE_MODULE_REGEXP']).to.equal(regexp); - expect(() => ConfigSingleton.getInstance()).to.not.throw(); - }); - - it('Should fail regexp validation', function() { - process.env.SAMPLE_MODULE_REGEXP = '123_45'; - const configSpecs = ConfigSingleton.getInstance(specs).getSpecs(); - // console.log('specs', configSpecs); - const config = ConfigSingleton.getInstance(specs).getConfig(); - // console.log('config', config); - - const res = ConfigSingleton.getInstance().Validate(); - expect(res).to.be.false; - }); - - it('Should fail is a mandatory field is missing', function() { - delete process.env.SAMPLE_MODULE_MANDAT1; // just in case - const res = ConfigSingleton.getInstance(specs).Validate(); - expect(res).to.be.false; - }); - - it('Should not fail is a non mandatory field is missing', function() { - delete process.env.SAMPLE_MODULE_PARAM2; - const config = ConfigSingleton.getInstance(specs); - const res = config.Validate(); - expect(res).to.be.false; - }); -}); diff --git a/packages/config-singleton/test/config-specs.ts b/packages/config-singleton/test/config-specs.ts deleted file mode 100644 index 3b24417..0000000 --- a/packages/config-singleton/test/config-specs.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { SpecsFactory } from '../src/SpecsFactory'; - -const prefix = 'SAMPLE'; -const mod = 'MODULE'; - -const factory = new SpecsFactory({ prefix, module: mod }); -factory.appendSpec(factory.getSpec('PARAM1', 'some param1')); -factory.appendSpec(factory.getSpec('PARAM2', 'some param2')); -factory.appendSpec(factory.getSpec('SECRET', 'some secret', { masked: true })); -factory.appendSpec(factory.getSpec('REGEXP', 'some regexp', { regexp: /^\d{2}_\d{2}/ })); -factory.appendSpec(factory.getSpec('MANDAT1', 'some mandatory param', { mandatory: true })); -const specs = factory.getSpecs() - -export default specs; diff --git a/packages/config-singleton/test/specs-factory.test.ts b/packages/config-singleton/test/specs-factory.test.ts deleted file mode 100644 index de53055..0000000 --- a/packages/config-singleton/test/specs-factory.test.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { SpecsFactory } from '../src/SpecsFactory'; -import { expect } from 'chai'; - -import { ConfigItem } from '../src/types'; - -const PREFIX = 'PREFIX' -const MODULE = 'MODULE' - -describe('Specs Factory', () => { - it('Should pass', function() { - const f = new SpecsFactory({ prefix: PREFIX, module: MODULE }); - const param = 'param' - const desc = 'some desc' - - const spec: ConfigItem = f.getSpec(param, desc); - expect(spec.name).equal(`${PREFIX}_${MODULE}_${param}`); - }); - -}); diff --git a/packages/config-singleton/tsconfig.json b/packages/config-singleton/tsconfig.json deleted file mode 100644 index 1c38795..0000000 --- a/packages/config-singleton/tsconfig.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "compilerOptions": { - "target": "es5", - "module": "commonjs", - "moduleResolution": "node", - "esModuleInterop": true, - "resolveJsonModule": true, - "allowJs": true, - "noImplicitAny": false, - "sourceMap": true, - "preserveConstEnums": true, - "lib": ["es2015", "dom"], - "noUnusedLocals": false, - "noImplicitReturns": true, - "noImplicitThis": true, - "alwaysStrict": true, - "strictNullChecks": false, - "noUnusedParameters": false, - "pretty": true, - "allowUnreachableCode": false, - "experimentalDecorators": true, - "suppressImplicitAnyIndexErrors": true, - "outDir": "./build" - }, - "include": ["./bin/**/*", "./src/**/*", "./package.json"], - "exclude": ["node_modules", "**/*.test.ts"], - "compileOnSave": true -} diff --git a/packages/polkabot/configSpecs.yml b/packages/polkabot/configSpecs.yml new file mode 100644 index 0000000..da307cd --- /dev/null +++ b/packages/polkabot/configSpecs.yml @@ -0,0 +1,127 @@ +POLKABOT: + POLKADOT: + # Polkadot config + NODE_NAME: + description: Name of the node we connect to. This is mainly for your documentation + default: Node + + URL: + mandatory: true + description: The URL of the WebSocket to be used to connect to the node + regexp: ^wss?://\w+:\d+$ + + MATRIX: + # Matrix config + BOTMASTER_ID: + description: This is the admin of the bot + default: '@chevdor:matrix.org' + regexp: ^@.+:.+$ + + ROOM_ID: + description: This is the room where the Bot is active + mandatory: true + regexp: ^\!.+:.+$ + + BOTUSER_ID: + description: This is the Matrix account for the Bot + mandatory: true + regexp: ^@.+:.+$ + + TOKEN: + description: This is the Matrix secret token + mandatory: true + masked: true + regexp: ^.{272}$ + + BASE_URL: + description: URL of the Matrix server + mandatory: true + default: https://matrix.org + regexp: ^https?://.* + + LOGIN_USER_ID: + description: Only required for custom Matrix servers + mandatory: false + + LOGIN_USER_PASSWORD: + description: Only required for custom Matrix servers + mandatory: false + masked: true + + MESSAGES_TO_SHOW: + description: Number of messages to show + default: 20 + + BLOCTHDAY: + # Those would go to a BLOCTHDAY sub module once confmgr supports it + DISABLED: + description: Whether BLOCTHDAY should be enabled + type: boolean + default: true + regexp: ^true|false$ + + NB_BLOCKS: + description: How often do we want to wish a happy Block-th-day + type: number + default: 100 + + BLOCKSTATS: + DISABLED: + description: Whether BLOCKSTATS should be enabled + type: boolean + default: true + + NB_BLOCKS: + description: How often do we calculate the stats + type: number + default: 100 + + THRESHOLD: + description: Number of seconds max expected between blocks + type: number + default: 8.0 + + LOG_NTH_BLOCK: + description: How often do we want to log + type: number + default: 1000 + + STALLWATCHER: + DISABLED: + description: Whether STALLWATCHER should be enabled + type: boolean + default: true + + DURATION: + type: number + default: 15 + + OPERATOR: + DISABLED: + description: Whether OPERATOR should be enabled + type: boolean + default: true + + REPORTER: + DISABLED: + description: Whether REPORTER should be enabled + type: boolean + default: true + + NOTIFIER_MATRIX: + DISABLED: + description: Whether NOTIFIER_MATRIX should be enabled + type: boolean + default: true + + NOTIFIER_DEMO: + DISABLED: + description: Whether NOTIFIER_DEMO should be enabled + type: boolean + default: true + + NOTIFIER_TWITTER: + DISABLED: + description: Whether NOTIFIER_TWITTER should be enabled + type: boolean + default: true diff --git a/packages/polkabot/package.json b/packages/polkabot/package.json index cf3577c..46dbd26 100644 --- a/packages/polkabot/package.json +++ b/packages/polkabot/package.json @@ -35,6 +35,7 @@ "dependencies": { "@polkadot/api": "0.100.1", "bn.js": "5.0.0", + "confmgr": "^1", "find-node-modules": "^2.0.0", "matrix-js-sdk": "2.3.0", "minimongo": "6.0.0", diff --git a/packages/polkabot/src/ConfigSingleton.ts b/packages/polkabot/src/ConfigSingleton.ts deleted file mode 100644 index 3c27706..0000000 --- a/packages/polkabot/src/ConfigSingleton.ts +++ /dev/null @@ -1,121 +0,0 @@ -import process = require("process"); -import dotenv from "dotenv"; -import * as path from "path"; -import { IPolkabotConfig, EnvDictionnary } from "./types"; -import { assert } from '@polkadot/util'; - -const PREFIX = "POLKABOT_"; - -export const ConfigFields: EnvDictionnary = { - POLKADOT_NODE_NAME: { name: PREFIX + "POLKADOT_NODE_NAME", description: "The name of the node we connect to" }, - POLKADOT_URL: { name: PREFIX + "POLKADOT_WS_HOST", description: "The Polkadot WS url" }, - - MATRIX_ROOM: { name: PREFIX + "MATRIX_ROOM_ID", description: "", regexp: /^.*$/ }, - MATRIX_TOKEN: { name: PREFIX + "MATRIX_TOKEN", description: "", masked: true, regexp: /^.{3,}/ }, - MATRIX_BOTMASTER_ID: { name: PREFIX + "MATRIX_BOTMASTER_ID", description: "" }, - MATRIX_BOTUSER_ID: { name: PREFIX + "MATRIX_BOTUSER_ID", description: "" } , - MATRIX_BASEURL: { name: PREFIX + "MATRIX_BASE_URL", description: "" }, - MATRIX_LOGIN_USER_ID: { name: PREFIX + "MATRIX_LOGIN_USER_ID", description: "" }, - MATRIX_LOGIN_USER_PASSWORD: { name: PREFIX + "MATRIX_LOGIN_USER_PASSWORD", description: "", masked: true, regexp: /^.{3,}/ }, -}; - -export class ConfigSingleton { - private static instance: IPolkabotConfig | null; - - private constructor() { - ConfigSingleton.refresh(); - } - - /** If you need to access the config, use this method */ - public static getInstance(): IPolkabotConfig { - if (!ConfigSingleton.instance) { - new ConfigSingleton(); - } - return ConfigSingleton.instance; - } - - /** You likely will never have to use this function which - * is mostly use for the tests. If you don't know, do NOT call - * this function, it would take time and likely do nothing - * interesting for you. - */ - public static refresh(): void { - const profile = process.env.NODE_ENV || "production"; - console.log('NODE_ENV profile: ', profile) - const envfile = - profile == "production" - ? path.resolve(process.cwd(), ".env") - : path.resolve(process.cwd(), ".env." + profile.toLowerCase()); - console.log('ENV file:', envfile) - dotenv.config({ path: envfile }); - const ENV = process.env; - // console.log(ConfigFields) - - ConfigSingleton.instance = { - polkadot: { - nodeName: ENV[ConfigFields.POLKADOT_NODE_NAME.name], - host: ENV[ConfigFields.POLKADOT_URL.name], - - }, - matrix: { - botMasterId: ENV[ConfigFields.MATRIX_BOTMASTER_ID.name], // Who is managing the bot. i.e. '@you:matrix.org' - roomId: ENV[ConfigFields.MATRIX_ROOM.name], - botUserId: ENV[ConfigFields.MATRIX_BOTUSER_ID.name], - token: ENV[ConfigFields.MATRIX_TOKEN.name], - baseUrl: ENV[ConfigFields.MATRIX_BASEURL.name], - loginUserId: ENV[ConfigFields.MATRIX_LOGIN_USER_ID.name], - loginUserPassword: ENV[ConfigFields.MATRIX_LOGIN_USER_PASSWORD.name], - } - }; - - assert((ConfigSingleton.instance.polkadot.nodeName || '').length > 0, "The extracted config does not look OK") - } - - /** Calling this function will get an instance of the Config and attach it - * to the global scope. - */ - public static loadToGlobal(): void { - global["Config"] = ConfigSingleton.getInstance(); - } - - /** Validate the config and return wheather it is valid or not */ - public static Validate(): boolean { - let result = true; - console.log("Validating process.env variables:"); - Object.entries(ConfigFields).map(([_key, env]) => { - if (env.regexp != undefined) { - const value = process.env[env.name] || ""; - const regex = RegExp(env.regexp); - const testResult = regex.test(value); - // console.log(`Checking ${env.name} =\t${value} with ${env.regexp} => ${testResult?"OK":"FAIL"}`) - console.log( - ` - Checking ${env.name} \t=> ${testResult ? "OK " : "FAIL"}\t${env.masked ? "*****" : process.env[env.name]}` - ); - result = result && testResult; - } - }); - return result; - } - - /** Show the ENV variables this application cares about */ - public static getSupportedEnv(): EnvDictionnary { - return ConfigFields; - } - - /** - * Display the current ENV to ensure everything that is used matches - * the expectations. - */ - public static dumpEnv(): void { - console.log("================== ENV =================="); - Object.entries(ConfigFields).map(([_key, env]) => { - console.log( - `- ${env.name}: ${env.description}\n value: ${ - env.masked ? (process.env[env.name] ? "*****" : "empty") : process.env[env.name] - }` - ); - }); - - console.log("================== === =================="); - } -} diff --git a/packages/polkabot/src/index.ts b/packages/polkabot/src/index.ts index 2da2f6a..4c5e61a 100644 --- a/packages/polkabot/src/index.ts +++ b/packages/polkabot/src/index.ts @@ -7,8 +7,9 @@ import pkg from "../package.json"; import PluginScanner from "./lib/plugin-scanner"; import PluginLoader from "./lib/plugin-loader"; import sdk from "matrix-js-sdk"; -import { ConfigSingleton } from "./ConfigSingleton"; -import { IPolkabotConfig } from "./types"; +// import { IPolkabotConfig } from "./types"; +import { ConfigManager } from 'confmgr'; + import { assert } from "@polkadot/util"; import { PluginContext, @@ -119,7 +120,7 @@ export default class Polkabot { // Here we check the ENV content to see if plugins should be disabled (= not loaded) console.log("Filtering out disabled plugins..."); plugins = plugins.filter((p: PluginModule) => { - const DISABLED_KEY = `POLKABOT_PLUGIN_${p.shortName}_DISABLED`; + const DISABLED_KEY = `POLKABOT_${p.shortName}_DISABLED`; const disabled: boolean = (process.env[DISABLED_KEY] || "false") === "true"; console.log(disabled ? "❌" : "✅", p.shortName); @@ -223,18 +224,17 @@ export default class Polkabot { // this.config = require(configLocation) - let config: IPolkabotConfig = ConfigSingleton.getInstance(); - assert(config.polkadot.host != null, "Issue with the config"); - assert(config.matrix.botMasterId != null, "Missing bot master id"); - ConfigSingleton.dumpEnv(); + const config = ConfigManager.getInstance('configSpecs.yml').getConfig(); + config.Print(); + console.log(`Your config is${config.Validate() ? '' : ' NOT'} valid!`); this.config = config; // console.log(`Polkabot - config: ${JSON.stringify(this.config, null, 2)}`); - console.log(`Polkabot - Connecting to host: ${this.config.polkadot.host}`); - console.log(`Polkabot - Running with bot user id: ${this.config.matrix.botUserId}`); + console.log(`Polkabot - Connecting to host: ${this.config.values.POLKADOT.URL}`); + console.log(`Polkabot - Running with bot user id: ${this.config.values.MATRIX.BOTUSER_ID}`); - const provider = new WsProvider(this.config.polkadot.host); + const provider = new WsProvider(this.config.values.POLKADOT.URL); // Create the API and wait until ready this.polkadot = await ApiPromise.create({ provider }); @@ -251,26 +251,29 @@ export default class Polkabot { this.db = new LocalDb(); this.db.addCollection("config"); - this.db.config.upsert({ botMasterId: this.config.matrix.botMasterId }, () => { - this.db.config.findOne({}, {}, res => { - console.log("Polkabot - Matrix client bot manager id: " + res.botMasterId); - }); - }); + this.db.config.upsert( + { botMasterId: this.config.values.MATRIX.BOTMASTER_ID }, + () => { + this.db.config.findOne({}, {}, res => { + console.log('Polkabot - Matrix client bot manager id: ' + res.botMasterId); + }); + } + ); // TODO - refactor using async/await. See https://github.com/matrix-org/matrix-js-sdk/issues/789 console.log("Polkabot - creating client"); this.matrix = sdk.createClient({ - baseUrl: this.config.matrix.baseUrl, - accessToken: this.config.matrix.token, - userId: this.config.matrix.botUserId + baseUrl: this.config.values.MATRIX.BASE_URL, + accessToken: this.config.values.MATRIX.TOKEN, + userId: this.config.values.MATRIX.BOTUSER_ID }); if (this.isCustomBaseUrl()) { const data = await this.matrix .login("m.login.password", { - user: this.config.matrix.loginUserId, - password: this.config.matrix.loginUserPassword + user: this.config.values.MATRIX.LOGIN_USER_ID, + password: this.config.values.MATRIX.LOGIN_USER_PASSWORD }) .catch(error => { console.error("Polkabot: Error logging into matrix:", error); @@ -312,12 +315,11 @@ export default class Polkabot { // } // }) - this.matrix.startClient(this.config.matrix.MESSAGES_TO_SHOW || 20); + this.matrix.startClient(this.config.values.MATRIX.MESSAGES_TO_SHOW); } private isCustomBaseUrl() { - const { baseUrl } = this.config.matrix; - + const baseUrl = this.config.values.MATRIX.BASE_URL; return baseUrl && baseUrl !== "https://matrix.org"; } } diff --git a/yarn.lock b/yarn.lock index 4d96d51..8129501 100644 --- a/yarn.lock +++ b/yarn.lock @@ -108,7 +108,14 @@ resolve "^1.8.1" semver "^5.5.1" -"@babel/runtime@7.8.4", "@babel/runtime@^7.7.7", "@babel/runtime@^7.8.3": +"@babel/runtime@7.8.7", "@babel/runtime@^7.8.7": + version "7.8.7" + resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.8.7.tgz#8fefce9802db54881ba59f90bb28719b4996324d" + integrity sha512-+AATMUFppJDw6aiR5NVPHqIQBlV/Pj8wY/EZH+lmvRdUo9xBaz/rF3alAwFJQavvKfeOlPE7oaaDHVbcySbCsg== + dependencies: + regenerator-runtime "^0.13.4" + +"@babel/runtime@^7.7.7": version "7.8.4" resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.8.4.tgz#d79f5a2040f7caa24d53e563aad49cbc05581308" integrity sha512-neAp3zt80trRVBI1x0azq6c57aNBqYZH8KhMm3TaB7wEI5Q4A2SHfBHE8w9gOhI/lrqxtEbXZgQIrHP+wvSGwQ== @@ -427,13 +434,6 @@ resolved "https://registry.npmjs.org/@types/cookiejar/-/cookiejar-2.1.1.tgz#90b68446364baf9efd8e8349bb36bd3852b75b80" integrity sha512-aRnpPa7ysx3aNW60hTiCtLHlQaIFsXFCgQlpakNgDNVFzbtusSY8PwjAQgRWfSk0ekNoBjO51eQRB6upA9uuyw== -"@types/dotenv@8.2.0": - version "8.2.0" - resolved "https://registry.npmjs.org/@types/dotenv/-/dotenv-8.2.0.tgz#5cd64710c3c98e82d9d15844375a33bf1b45d053" - integrity sha512-ylSC9GhfRH7m1EUXBXofhgx4lUWmFeQDINW5oLuS+gxWdfUeW4zJdeVTYVkexEW+e2VUvlZR2kGnGGipAWR7kw== - dependencies: - dotenv "*" - "@types/dotenv@^6.1.1": version "6.1.1" resolved "https://registry.npmjs.org/@types/dotenv/-/dotenv-6.1.1.tgz#f7ce1cc4fe34f0a4373ba99fefa437b0bec54b46" @@ -456,11 +456,6 @@ resolved "https://registry.npmjs.org/@types/memoizee/-/memoizee-0.4.3.tgz#f48270d19327c1709620132cf54d598650f98492" integrity sha512-N6QT0c9ZbEKl33n1wyoTxZs4cpN+YXjs0Aqy5Qim8ipd9PBNIPqOh/p5Pixc4601tqr5GErsdxUbfqviDfubNw== -"@types/minimatch@3.0.3": - version "3.0.3" - resolved "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" - integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== - "@types/mocha@^5.2.7": version "5.2.7" resolved "https://registry.npmjs.org/@types/mocha/-/mocha-5.2.7.tgz#315d570ccb56c53452ff8638738df60726d5b6ea" @@ -610,13 +605,6 @@ ansi-escapes@^3.0.0, ansi-escapes@^3.2.0: resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== -ansi-escapes@^4.2.1: - version "4.3.0" - resolved "https://registry.npmjs.org/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.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" @@ -673,14 +661,6 @@ anymatch@^2.0.0: micromatch "^3.1.4" normalize-path "^2.1.1" -anymatch@~3.1.1: - version "3.1.1" - resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" - integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg== - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - append-transform@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/append-transform/-/append-transform-2.0.0.tgz#99d9d29c7b38391e6f428d28ce136551f0b77e12" @@ -1399,13 +1379,6 @@ babylon@^6.18.0: resolved "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" integrity sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ== -backbone@^1.4.0: - version "1.4.0" - resolved "https://registry.npmjs.org/backbone/-/backbone-1.4.0.tgz#54db4de9df7c3811c3f032f34749a4cd27f3bd12" - integrity sha512-RLmDrRXkVdouTg38jcgHhyQ/2zjg7a8E6sz2zxfz21Hh17xDJYUHBZimVIt5fUyS8vbfpeSmTL3gUjTEvUV3qQ== - dependencies: - underscore ">=1.8.3" - balanced-match@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" @@ -1450,11 +1423,6 @@ binary-extensions@^1.0.0: resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== -binary-extensions@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz#23c0df14f6a88077f5f986c0d167ec03c3d5537c" - integrity sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow== - binary-search-tree@0.2.5: version "0.2.5" resolved "https://registry.npmjs.org/binary-search-tree/-/binary-search-tree-0.2.5.tgz#7dbb3b210fdca082450dad2334c304af39bdc784" @@ -1577,13 +1545,6 @@ braces@^2.3.1, braces@^2.3.2: split-string "^3.0.2" to-regex "^3.0.1" -braces@~3.0.2: - version "3.0.2" - resolved "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" - integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== - dependencies: - fill-range "^7.0.1" - brorand@^1.0.1: version "1.1.0" resolved "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" @@ -1778,21 +1739,6 @@ check-error@^1.0.2: resolved "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82" integrity sha1-V00xLt2Iu13YkS6Sht1sCu1KrII= -chokidar@3.3.0: - version "3.3.0" - resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.3.0.tgz#12c0714668c55800f659e262d4962a97faf554a6" - integrity sha512-dGmKLDdT3Gdl7fBUe8XK+gAtGmzy5Fn0XkkWQuYxGIgWVPPse2CxFA5mtrlD0TOHaHjEUqkWNyP1XdHoJES/4A== - dependencies: - anymatch "~3.1.1" - braces "~3.0.2" - glob-parent "~5.1.0" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.2.0" - optionalDependencies: - fsevents "~2.1.1" - chokidar@^1.4.3, chokidar@^1.6.1: version "1.7.0" resolved "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" @@ -1883,13 +1829,6 @@ cli-cursor@^2.1.0: dependencies: restore-cursor "^2.0.0" -cli-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" - integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== - dependencies: - restore-cursor "^3.1.0" - cli-width@^2.0.0: version "2.2.0" resolved "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" @@ -1952,7 +1891,7 @@ combined-stream@^1.0.6, combined-stream@~1.0.6: dependencies: delayed-stream "~1.0.0" -commander@^2.11.0, commander@^2.9.0, commander@~2.20.3: +commander@^2.11.0, commander@^2.9.0: version "2.20.3" resolved "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== @@ -1994,6 +1933,18 @@ configstore@^3.0.0: write-file-atomic "^2.0.0" xdg-basedir "^3.0.0" +confmgr@^1: + version "1.0.0" + resolved "https://registry.npmjs.org/confmgr/-/confmgr-1.0.0.tgz#ea8082dfc7750b16722e3f465d947d05de015e08" + integrity sha512-AVyjSPX3j91/zYmkNSPO9tWWRhl8Hf8coz8xp/KyHqyQn438aqUCeDt8Q8AMT5Vn4dXdY2jporvwnLi5cbn1OQ== + dependencies: + "@babel/runtime" "7.8.7" + chalk "^3.0.0" + dotenv "8.2.0" + ts-node "8.6.2" + typescript "^3.8.3" + yaml "^1.8.0" + contains-path@^0.1.0: version "0.1.0" resolved "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" @@ -2284,16 +2235,16 @@ dot-prop@^4.1.0: dependencies: is-obj "^1.0.0" -dotenv@*, dotenv@8.2.0: - version "8.2.0" - resolved "https://registry.npmjs.org/dotenv/-/dotenv-8.2.0.tgz#97e619259ada750eea3e4ea3e26bceea5424b16a" - integrity sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw== - dotenv@8.1.0: version "8.1.0" resolved "https://registry.npmjs.org/dotenv/-/dotenv-8.1.0.tgz#d811e178652bfb8a1e593c6dd704ec7e90d85ea2" integrity sha512-GUE3gqcDCaMltj2++g6bRQ5rBJWtkWTmqmD0fo1RnnMuUqHNCt2oTPeDnS9n6fKYvlhn7AeBkb38lymBtWBQdA== +dotenv@8.2.0: + version "8.2.0" + resolved "https://registry.npmjs.org/dotenv/-/dotenv-8.2.0.tgz#97e619259ada750eea3e4ea3e26bceea5424b16a" + integrity sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw== + drbg.js@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/drbg.js/-/drbg.js-1.0.1.tgz#3e36b6c42b37043823cdbc332d58f31e2445480b" @@ -2660,7 +2611,7 @@ eslint-scope@^5.0.0: esrecurse "^4.1.0" estraverse "^4.1.1" -eslint-utils@^1.3.1, eslint-utils@^1.4.0, eslint-utils@^1.4.2, eslint-utils@^1.4.3: +eslint-utils@^1.3.1, eslint-utils@^1.4.0, eslint-utils@^1.4.2: version "1.4.3" resolved "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz#74fec7c54d0776b6f67e0251040b5806564e981f" integrity sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q== @@ -2715,49 +2666,6 @@ eslint@6.2.0: text-table "^0.2.0" v8-compile-cache "^2.0.3" -eslint@6.8.0: - version "6.8.0" - resolved "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz#62262d6729739f9275723824302fb227c8c93ffb" - integrity sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig== - dependencies: - "@babel/code-frame" "^7.0.0" - ajv "^6.10.0" - chalk "^2.1.0" - cross-spawn "^6.0.5" - debug "^4.0.1" - doctrine "^3.0.0" - eslint-scope "^5.0.0" - eslint-utils "^1.4.3" - eslint-visitor-keys "^1.1.0" - espree "^6.1.2" - esquery "^1.0.1" - esutils "^2.0.2" - file-entry-cache "^5.0.1" - functional-red-black-tree "^1.0.1" - glob-parent "^5.0.0" - globals "^12.1.0" - ignore "^4.0.6" - import-fresh "^3.0.0" - imurmurhash "^0.1.4" - inquirer "^7.0.0" - is-glob "^4.0.0" - js-yaml "^3.13.1" - json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.3.0" - lodash "^4.17.14" - minimatch "^3.0.4" - mkdirp "^0.5.1" - natural-compare "^1.4.0" - optionator "^0.8.3" - progress "^2.0.0" - regexpp "^2.0.1" - semver "^6.1.2" - strip-ansi "^5.2.0" - strip-json-comments "^3.0.1" - table "^5.2.3" - text-table "^0.2.0" - v8-compile-cache "^2.0.3" - eslint@~5.4.0: version "5.4.0" resolved "https://registry.npmjs.org/eslint/-/eslint-5.4.0.tgz#d068ec03006bb9e06b429dc85f7e46c1b69fac62" @@ -2897,7 +2805,7 @@ espree@^4.0.0: acorn-jsx "^5.0.0" eslint-visitor-keys "^1.0.0" -espree@^6.0.0, espree@^6.1.0, espree@^6.1.1, espree@^6.1.2: +espree@^6.0.0, espree@^6.1.0, espree@^6.1.1: version "6.1.2" resolved "https://registry.npmjs.org/espree/-/espree-6.1.2.tgz#6c272650932b4f91c3714e5e7b5f5e2ecf47262d" integrity sha512-2iUPuuPP+yW1PZaMSDM9eyVf8D5P0Hi8h83YtZ5bPc/zHYjII5khoixIUTMO794NOY8F/ThF1Bo8ncZILarUTA== @@ -3101,13 +3009,6 @@ figures@^2.0.0: dependencies: escape-string-regexp "^1.0.5" -figures@^3.0.0: - version "3.2.0" - resolved "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" - integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== - dependencies: - escape-string-regexp "^1.0.5" - file-entry-cache@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz#c392990c3e684783d838b8c84a45d8a048458361" @@ -3154,13 +3055,6 @@ fill-range@^4.0.0: repeat-string "^1.6.1" to-regex-range "^2.1.0" -fill-range@^7.0.1: - version "7.0.1" - resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" - integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== - dependencies: - to-regex-range "^5.0.1" - find-cache-dir@^3.2.0: version "3.3.0" resolved "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.0.tgz#4d74ed1fe9ef1731467ca24378e8f8f5c8b6ed11" @@ -3306,15 +3200,6 @@ fromentries@^1.2.0: resolved "https://registry.npmjs.org/fromentries/-/fromentries-1.2.0.tgz#e6aa06f240d6267f913cea422075ef88b63e7897" integrity sha512-33X7H/wdfO99GdRLLgkjUrD4geAFdq/Uv0kl3HD4da6HDixd2GUg8Mw7dahLCV9r/EARkmtYBB6Tch4EEokFTQ== -fs-extra@^8.1.0: - version "8.1.0" - resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" - integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== - dependencies: - graceful-fs "^4.2.0" - jsonfile "^4.0.0" - universalify "^0.1.0" - fs-readdir-recursive@^1.0.0: version "1.1.0" resolved "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz#e32fc030a2ccee44a6b5371308da54be0b397d27" @@ -3333,11 +3218,6 @@ fsevents@^1.0.0, fsevents@^1.2.7: bindings "^1.5.0" nan "^2.12.1" -fsevents@~2.1.1: - version "2.1.2" - resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.1.2.tgz#4c0a1fb34bc68e543b4b82a9ec392bfbda840805" - integrity sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA== - function-bind@^1.1.1: version "1.1.1" resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" @@ -3434,7 +3314,7 @@ glob-parent@^3.1.0: is-glob "^3.1.0" path-dirname "^1.0.0" -glob-parent@^5.0.0, glob-parent@~5.1.0: +glob-parent@^5.0.0: version "5.1.0" resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.0.tgz#5f4c1d1e748d30cd73ad2944b3577a81b081e8c2" integrity sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw== @@ -3453,7 +3333,7 @@ glob@7.1.3: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.0.0, glob@^7.0.5, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: +glob@^7.0.5, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: version "7.1.6" resolved "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== @@ -3497,13 +3377,6 @@ globals@^11.1.0, globals@^11.7.0: resolved "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== -globals@^12.1.0: - version "12.3.0" - resolved "https://registry.npmjs.org/globals/-/globals-12.3.0.tgz#1e564ee5c4dded2ab098b0f88f24702a3c56be13" - integrity sha512-wAfjdLgFsPZsklLJvOBUBmzYE8/CwhEqSBEMRXA3qxIiNtyqvjYurAtIfDh6chlEPUfmTY3MnZh5Hfh4q0UlIw== - dependencies: - type-fest "^0.8.1" - globals@^9.18.0: version "9.18.0" resolved "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" @@ -3526,7 +3399,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.15, graceful-fs@^4.1.2, graceful-fs@^4.1.4, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.0: +graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.4, graceful-fs@^4.1.9: version "4.2.3" resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423" integrity sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ== @@ -3536,17 +3409,6 @@ growl@1.10.5: resolved "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== -handlebars@^4.7.2: - version "4.7.3" - resolved "https://registry.npmjs.org/handlebars/-/handlebars-4.7.3.tgz#8ece2797826886cf8082d1726ff21d2a022550ee" - integrity sha512-SRGwSYuNfx8DwHD/6InAPzD6RgeruWLT+B8e8a7gGs8FWgHzlExpTFMEq2IA6QpAfOClpKHy6+8IqTjeBCu6Kg== - 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.npmjs.org/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" @@ -3649,11 +3511,6 @@ he@1.2.0: resolved "https://registry.npmjs.org/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== -highlight.js@^9.17.1: - version "9.18.1" - resolved "https://registry.npmjs.org/highlight.js/-/highlight.js-9.18.1.tgz#ed21aa001fe6252bb10a3d76d47573c6539fe13c" - integrity sha512-OrVKYz70LHsnCgmbXctv/bfuvntIKDz177h0Co37DQ5jamGZLVmoCVMtjMtNZY3X9DrCcKfklHPNeA0uPZhSJg== - hmac-drbg@^1.0.0: version "1.0.1" resolved "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" @@ -3813,30 +3670,6 @@ inquirer@^6.4.1: strip-ansi "^5.1.0" through "^2.3.6" -inquirer@^7.0.0: - version "7.0.4" - resolved "https://registry.npmjs.org/inquirer/-/inquirer-7.0.4.tgz#99af5bde47153abca23f5c7fc30db247f39da703" - integrity sha512-Bu5Td5+j11sCkqfqmUTiwv+tWisMtP0L7Q8WrqA2C/BbBhy1YTdFrvjjlrKq8oagA/tLQBski2Gcx/Sqyi2qSQ== - 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.5.3" - string-width "^4.1.0" - strip-ansi "^5.1.0" - through "^2.3.6" - -interpret@^1.0.0: - version "1.2.0" - resolved "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz#d5061a6224be58e8083985f5014d844359576296" - integrity sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw== - invariant@^2.2.2: version "2.2.4" resolved "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" @@ -3880,13 +3713,6 @@ is-binary-path@^1.0.0: dependencies: binary-extensions "^1.0.0" -is-binary-path@~2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" - integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== - dependencies: - binary-extensions "^2.0.0" - is-buffer@^1.1.5: version "1.1.6" resolved "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" @@ -4009,7 +3835,7 @@ is-glob@^3.1.0: dependencies: is-extglob "^2.1.0" -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: +is-glob@^4.0.0, is-glob@^4.0.1: version "4.0.1" resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== @@ -4055,11 +3881,6 @@ is-number@^4.0.0: resolved "https://registry.npmjs.org/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.npmjs.org/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.npmjs.org/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" @@ -4247,7 +4068,7 @@ istanbul-reports@^3.0.0: html-escaper "^2.0.0" istanbul-lib-report "^3.0.0" -jquery@^3.3.1, jquery@^3.4.1: +jquery@^3.3.1: version "3.4.1" resolved "https://registry.npmjs.org/jquery/-/jquery-3.4.1.tgz#714f1f8d9dde4bdfa55764ba37ef214630d80ef2" integrity sha512-36+AdBzCL+y6qjw5Tx7HgzeGCzC81MDDgaUP8ld2zhx58HdqXGoBd+tHdrBMiyjGQs0Hxs/MLZTu/eHNJJuWPw== @@ -4369,13 +4190,6 @@ json5@^2.1.0: dependencies: minimist "^1.2.0" -jsonfile@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" - integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= - optionalDependencies: - graceful-fs "^4.1.6" - jsprim@^1.2.2: version "1.4.1" resolved "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" @@ -4562,13 +4376,6 @@ log-symbols@2.2.0: dependencies: chalk "^2.0.1" -log-symbols@3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz#f3a08516a5dea893336a7dee14d18a1cfdab77c4" - integrity sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ== - dependencies: - chalk "^2.4.2" - loglevel@1.6.1: version "1.6.1" resolved "https://registry.npmjs.org/loglevel/-/loglevel-1.6.1.tgz#e0fc95133b6ef276cdc8887cdaf24aa6f156f8fa" @@ -4601,11 +4408,6 @@ lru-queue@0.1: dependencies: es5-ext "~0.10.2" -lunr@^2.3.8: - version "2.3.8" - resolved "https://registry.npmjs.org/lunr/-/lunr-2.3.8.tgz#a8b89c31f30b5a044b97d2d28e2da191b6ba2072" - integrity sha512-oxMeX/Y35PNFuZoHp+jUj5OSEmLCaIH4KTFJh7a93cHBoFmpw2IoPs22VIz7vyO2YUnx2Tn9dzIwO2P/4quIRg== - make-dir@^1.0.0: version "1.3.0" resolved "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" @@ -4658,11 +4460,6 @@ marked@^0.7.0: resolved "https://registry.npmjs.org/marked/-/marked-0.7.0.tgz#b64201f051d271b1edc10a04d1ae9b74bb8e5c0e" integrity sha512-c+yYdCZJQrsRjTPhUx7VKkApw9bwDkNbHUKo1ovgcfDjb2kc8rLuRbIFyXL5WOEUwzSSKo3IXpph2K6DqB/KZg== -marked@^0.8.0: - version "0.8.0" - resolved "https://registry.npmjs.org/marked/-/marked-0.8.0.tgz#ec5c0c9b93878dc52dd54be8d0e524097bd81a99" - integrity sha512-MyUe+T/Pw4TZufHkzAfDj6HarCBWia2y27/bhuYkTaiUnfDYFnCP3KUN+9oM7Wi6JA2rymtVYbQu3spE0GCmxQ== - martinez-polygon-clipping@^0.4.3: version "0.4.3" resolved "https://registry.npmjs.org/martinez-polygon-clipping/-/martinez-polygon-clipping-0.4.3.tgz#a3971ddf1da147104b5d0fbbf68f728bb62885c1" @@ -4790,11 +4587,6 @@ mimic-fn@^1.0.0: resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== -mimic-fn@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" - integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== - minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" @@ -4805,7 +4597,7 @@ minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: resolved "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= -minimatch@3.0.4, minimatch@^3.0.0, minimatch@^3.0.3, minimatch@^3.0.4: +minimatch@3.0.4, minimatch@^3.0.3, minimatch@^3.0.4: version "3.0.4" resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== @@ -4822,11 +4614,6 @@ minimist@^1.1.0, minimist@^1.1.1, minimist@^1.2.0: resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= -minimist@~0.0.1: - version "0.0.10" - resolved "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" - integrity sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8= - minimongo@6.0.0: version "6.0.0" resolved "https://registry.npmjs.org/minimongo/-/minimongo-6.0.0.tgz#39af86a394646b87185ea15e91dc5801fbf8090c" @@ -4858,36 +4645,6 @@ mkdirp@0.5.1, mkdirp@^0.5.1, mkdirp@~0.5.1: dependencies: minimist "0.0.8" -mocha@7.1.0: - version "7.1.0" - resolved "https://registry.npmjs.org/mocha/-/mocha-7.1.0.tgz#c784f579ad0904d29229ad6cb1e2514e4db7d249" - integrity sha512-MymHK8UkU0K15Q/zX7uflZgVoRWiTjy0fXE/QjKts6mowUvGxOdPhZ2qj3b0iZdUrNZlW9LAIMFHB4IW+2b3EQ== - dependencies: - ansi-colors "3.2.3" - browser-stdout "1.3.1" - chokidar "3.3.0" - debug "3.2.6" - diff "3.5.0" - escape-string-regexp "1.0.5" - find-up "3.0.0" - glob "7.1.3" - growl "1.10.5" - he "1.2.0" - js-yaml "3.13.1" - log-symbols "3.0.0" - minimatch "3.0.4" - mkdirp "0.5.1" - ms "2.1.1" - node-environment-flags "1.0.6" - object.assign "4.1.0" - strip-json-comments "2.0.1" - supports-color "6.0.0" - which "1.3.1" - wide-align "1.1.3" - yargs "13.3.0" - yargs-parser "13.1.1" - yargs-unparser "1.6.0" - mocha@^6.1.4: version "6.2.2" resolved "https://registry.npmjs.org/mocha/-/mocha-6.2.2.tgz#5d8987e28940caf8957a7d7664b910dc5b2fea20" @@ -4942,11 +4699,6 @@ mute-stream@0.0.7: resolved "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= -mute-stream@0.0.8: - version "0.0.8" - resolved "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" - integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== - nan@^2.12.1, nan@^2.14.0: version "2.14.0" resolved "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c" @@ -4985,11 +4737,6 @@ nedb@^1.8.0: mkdirp "~0.5.1" underscore "~1.4.4" -neo-async@^2.6.0: - version "2.6.1" - resolved "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c" - integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw== - next-tick@1: version "1.1.0" resolved "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz#1836ee30ad56d67ef281b22bd199f709449b35eb" @@ -5013,14 +4760,6 @@ node-environment-flags@1.0.5: object.getownpropertydescriptors "^2.0.3" semver "^5.7.0" -node-environment-flags@1.0.6: - version "1.0.6" - resolved "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.6.tgz#a30ac13621f6f7d674260a54dede048c3982c088" - integrity sha512-5Evy2epuL+6TM0lCQGpFIj6KwiEsGh1SrHUhTbNX+sLbBtjidPZFAnVK9y5yU1+h//RitLbRHTIMyxQPtxMdHw== - dependencies: - object.getownpropertydescriptors "^2.0.3" - semver "^5.7.0" - node-fetch@^1.0.1: version "1.7.3" resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef" @@ -5076,7 +4815,7 @@ normalize-path@^2.0.0, normalize-path@^2.0.1, normalize-path@^2.1.1: dependencies: remove-trailing-separator "^1.0.1" -normalize-path@^3.0.0, normalize-path@~3.0.0: +normalize-path@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== @@ -5239,22 +4978,7 @@ onetime@^2.0.0: dependencies: mimic-fn "^1.0.0" -onetime@^5.1.0: - version "5.1.0" - resolved "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz#fff0f3c91617fe62bb50189636e99ac8a6df7be5" - integrity sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q== - dependencies: - mimic-fn "^2.1.0" - -optimist@^0.6.1: - version "0.6.1" - resolved "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" - integrity sha1-2j6nRob6IaGaERwybpDrFaAZZoY= - dependencies: - minimist "~0.0.1" - wordwrap "~0.0.2" - -optionator@^0.8.2, optionator@^0.8.3: +optionator@^0.8.2: version "0.8.3" resolved "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== @@ -5472,11 +5196,6 @@ performance-now@^2.1.0: resolved "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= -picomatch@^2.0.4: - version "2.2.1" - resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.2.1.tgz#21bac888b6ed8601f831ce7816e335bc779f0a4a" - integrity sha512-ISBaA8xQNmwELC7eOjqFKMESB2VIqt4PPDD0nsS95b/9dZXvVKOlz9keMSnoGGKcOHXfTvDD6WMaRoSc9UuhRA== - pify@^2.0.0: version "2.3.0" resolved "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" @@ -5573,7 +5292,7 @@ process-on-spawn@^1.0.0: dependencies: fromentries "^1.2.0" -progress@^2.0.0, progress@^2.0.3: +progress@^2.0.0: version "2.0.3" resolved "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== @@ -5708,20 +5427,6 @@ readdirp@^2.0.0, readdirp@^2.2.1: micromatch "^3.1.10" readable-stream "^2.0.2" -readdirp@~3.2.0: - version "3.2.0" - resolved "https://registry.npmjs.org/readdirp/-/readdirp-3.2.0.tgz#c30c33352b12c96dfb4b895421a49fd5a9593839" - integrity sha512-crk4Qu3pmXwgxdSgGhgA/eXiJAPQiX4GMOZZMXnqKxHX7TaoL+3gQVo/WeuAiogr07DpnfjIMpXXa+PAIvwPGQ== - dependencies: - picomatch "^2.0.4" - -rechoir@^0.6.2: - version "0.6.2" - resolved "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" - integrity sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q= - dependencies: - resolve "^1.1.6" - regenerate@^1.2.1: version "1.4.0" resolved "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" @@ -5742,6 +5447,11 @@ regenerator-runtime@^0.13.2: resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz#7cf6a77d8f5c6f60eb73c5fc1955b2ceb01e6bf5" integrity sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw== +regenerator-runtime@^0.13.4: + version "0.13.4" + resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.4.tgz#e96bf612a3362d12bb69f7e8f74ffeab25c7ac91" + integrity sha512-plpwicqEzfEyTQohIKktWigcLzmNStMGwbOUbykx51/29Z3JOGYldaaNGK7ngNXV+UcoqvIMmloZ48Sr74sd+g== + regenerator-transform@^0.10.0: version "0.10.1" resolved "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz#1e4996837231da8b7f3cf4114d71b5691a0680dd" @@ -5920,7 +5630,7 @@ resolve-url@^0.2.1: resolved "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= -resolve@^1.1.6, resolve@^1.10.0, resolve@^1.10.1, resolve@^1.11.0, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.3.2, resolve@^1.6.0, resolve@^1.8.1: +resolve@^1.10.0, resolve@^1.10.1, resolve@^1.11.0, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.3.2, resolve@^1.6.0, resolve@^1.8.1: version "1.15.1" resolved "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz#27bdcdeffeaf2d6244b95bb0f9f4b4653451f3e8" integrity sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w== @@ -5935,14 +5645,6 @@ 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.npmjs.org/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.npmjs.org/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" @@ -5989,7 +5691,7 @@ rxjs@^5.5.2: dependencies: symbol-observable "1.0.1" -rxjs@^6.4.0, rxjs@^6.5.3, rxjs@^6.5.4: +rxjs@^6.4.0, rxjs@^6.5.4: version "6.5.4" resolved "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz#e0777fe0d184cec7872df147f303572d414e211c" integrity sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q== @@ -6096,15 +5798,6 @@ shebang-regex@^3.0.0: resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== -shelljs@^0.8.3: - version "0.8.3" - resolved "https://registry.npmjs.org/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" - signal-exit@^3.0.0, signal-exit@^3.0.2: version "3.0.2" resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" @@ -6210,7 +5903,7 @@ source-map@^0.5.0, source-map@^0.5.6, source-map@^0.5.7: resolved "https://registry.npmjs.org/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.npmjs.org/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== @@ -6630,13 +6323,6 @@ to-regex-range@^2.1.0: is-number "^3.0.0" repeat-string "^1.6.1" -to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/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.npmjs.org/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" @@ -6724,7 +6410,7 @@ type-fest@^0.3.0: resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz#63d00d204e059474fe5e1b7c011112bbd1dc29e1" integrity sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ== -type-fest@^0.8.0, type-fest@^0.8.1: +type-fest@^0.8.0: version "0.8.1" resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== @@ -6751,61 +6437,26 @@ typedarray@^0.0.6: resolved "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= -typedoc-default-themes@^0.7.2: - version "0.7.2" - resolved "https://registry.npmjs.org/typedoc-default-themes/-/typedoc-default-themes-0.7.2.tgz#1e9896f920b58e6da0bba9d7e643738d02405a5a" - integrity sha512-fiFKlFO6VTqjcno8w6WpTsbCgXmfPHVjnLfYkmByZE7moaz+E2DSpAT+oHtDHv7E0BM5kAhPrHJELP2J2Y2T9A== - dependencies: - backbone "^1.4.0" - jquery "^3.4.1" - lunr "^2.3.8" - underscore "^1.9.1" - -typedoc@0.16.10: - version "0.16.10" - resolved "https://registry.npmjs.org/typedoc/-/typedoc-0.16.10.tgz#217cd4243c9b4d85f49b94323c178f6d279bfb9c" - integrity sha512-Eo1+K+XTiqSi4lz5cPrV4RncLv6abjCd/jfL5tTueNZGO2p8x2yDIrXkxL9C+SoLjJm2xpMs3CXYmTnilxk1cA== - dependencies: - "@types/minimatch" "3.0.3" - fs-extra "^8.1.0" - handlebars "^4.7.2" - highlight.js "^9.17.1" - lodash "^4.17.15" - marked "^0.8.0" - minimatch "^3.0.0" - progress "^2.0.3" - shelljs "^0.8.3" - typedoc-default-themes "^0.7.2" - typescript "3.7.x" - typescript@3.5.3: version "3.5.3" resolved "https://registry.npmjs.org/typescript/-/typescript-3.5.3.tgz#c830f657f93f1ea846819e929092f5fe5983e977" integrity sha512-ACzBtm/PhXBDId6a6sDJfroT2pOWt/oOnk4/dElG5G33ZL776N3Y6/6bKZJBFpd+b05F3Ct9qDjMeJmRWtE2/g== -typescript@3.7.x: - version "3.7.5" - resolved "https://registry.npmjs.org/typescript/-/typescript-3.7.5.tgz#0692e21f65fd4108b9330238aac11dd2e177a1ae" - integrity sha512-/P5lkRXkWHNAbcJIiHPfRoKqyd7bsyCma1hZNUGfn20qm64T6ZBlrzprymeu918H+mB/0rIg2gGK/BXkhhYgBw== - -typescript@3.8.2, typescript@^3.5.3: +typescript@^3.5.3: version "3.8.2" resolved "https://registry.npmjs.org/typescript/-/typescript-3.8.2.tgz#91d6868aaead7da74f493c553aeff76c0c0b1d5a" integrity sha512-EgOVgL/4xfVrCMbhYKUQTdF37SQn4Iw73H5BgCrF1Abdun7Kwy/QZsE/ssAy0y4LxBbvua3PIbFsbRczWWnDdQ== +typescript@^3.8.3: + version "3.8.3" + resolved "https://registry.npmjs.org/typescript/-/typescript-3.8.3.tgz#409eb8544ea0335711205869ec458ab109ee1061" + integrity sha512-MYlEfn5VrLNsgudQTVJeNaQFUAI7DkhnOjdpAp4T+ku1TfQClewlbSuTVHiA+8skNBgaf02TL/kLOvig4y3G8w== + uc.micro@^1.0.1, uc.micro@^1.0.5: version "1.0.6" resolved "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz#9c411a802a409a91fc6cf74081baba34b24499ac" integrity sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA== -uglify-js@^3.1.4: - version "3.8.0" - resolved "https://registry.npmjs.org/uglify-js/-/uglify-js-3.8.0.tgz#f3541ae97b2f048d7e7e3aa4f39fd8a1f5d7a805" - integrity sha512-ugNSTT8ierCsDHso2jkBHXYrU8Y5/fY2ZUprfrJUiD7YpuFvV4jODLFmb3h4btQjqr5Nh4TX4XtgDfCU1WdioQ== - dependencies: - commander "~2.20.3" - source-map "~0.6.1" - undefsafe@^2.0.2: version "2.0.3" resolved "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.3.tgz#6b166e7094ad46313b2202da7ecc2cd7cc6e7aae" @@ -6813,16 +6464,16 @@ undefsafe@^2.0.2: dependencies: debug "^2.2.0" -underscore@>=1.8.3, underscore@^1.9.1, underscore@~1.9.1: - version "1.9.2" - resolved "https://registry.npmjs.org/underscore/-/underscore-1.9.2.tgz#0c8d6f536d6f378a5af264a72f7bec50feb7cf2f" - integrity sha512-D39qtimx0c1fI3ya1Lnhk3E9nONswSKhnffBI0gME9C99fYOkNi04xs8K6pePLhvl1frbDemkaBQ5ikWllR2HQ== - underscore@~1.4.4: version "1.4.4" resolved "https://registry.npmjs.org/underscore/-/underscore-1.4.4.tgz#61a6a32010622afa07963bf325203cf12239d604" integrity sha1-YaajIBBiKvoHljvzJSA88SI51gQ= +underscore@~1.9.1: + version "1.9.2" + resolved "https://registry.npmjs.org/underscore/-/underscore-1.9.2.tgz#0c8d6f536d6f378a5af264a72f7bec50feb7cf2f" + integrity sha512-D39qtimx0c1fI3ya1Lnhk3E9nONswSKhnffBI0gME9C99fYOkNi04xs8K6pePLhvl1frbDemkaBQ5ikWllR2HQ== + unhomoglyph@^1.0.2: version "1.0.4" resolved "https://registry.npmjs.org/unhomoglyph/-/unhomoglyph-1.0.4.tgz#38d2ec9de84ab921623ebd9fb60f710963c601f4" @@ -6850,11 +6501,6 @@ unique-string@^1.0.0: dependencies: crypto-random-string "^1.0.0" -universalify@^0.1.0: - version "0.1.2" - resolved "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" - integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== - unorm@^1.3.3: version "1.6.0" resolved "https://registry.npmjs.org/unorm/-/unorm-1.6.0.tgz#029b289661fba714f1a9af439eb51d9b16c205af" @@ -7016,11 +6662,6 @@ word-wrap@^1.2.3, word-wrap@~1.2.3: resolved "https://registry.npmjs.org/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.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" - integrity sha1-o9XabNXAvAAI03I0u68b7WMFkQc= - wrap-ansi@^5.1.0: version "5.1.0" resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" @@ -7114,6 +6755,13 @@ yallist@^2.1.2: resolved "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= +yaml@^1.8.0: + version "1.8.0" + resolved "https://registry.npmjs.org/yaml/-/yaml-1.8.0.tgz#169fbcfa2081302dc9441d02b0b6fe667e4f74c9" + integrity sha512-6qI/tTx7OVtA4qNqD0OyutbM6Z9EKu4rxWm/2Y3FDEBQ4/2X2XAnyuRXMzAE2+1BPyqzksJZtrIwblOHg0IEzA== + dependencies: + "@babel/runtime" "^7.8.7" + yargs-parser@13.1.1, yargs-parser@^13.1.1: version "13.1.1" resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz#d26058532aa06d365fe091f6a1fc06b2f7e5eca0" @@ -7197,7 +6845,7 @@ yargs@^15.0.2: y18n "^4.0.0" yargs-parser "^16.1.0" -yarn@1.22.0, yarn@^1.16.0: +yarn@^1.16.0: version "1.22.0" resolved "https://registry.npmjs.org/yarn/-/yarn-1.22.0.tgz#acf82906e36bcccd1ccab1cfb73b87509667c881" integrity sha512-KMHP/Jq53jZKTY9iTUt3dIVl/be6UPs2INo96+BnZHLKxYNTfwMmlgHTaMWyGZoO74RI4AIFvnWhYrXq2USJkg== -- GitLab From 5014f1d027880c9b514feeb6d25fa0574ca66ad8 Mon Sep 17 00:00:00 2001 From: Will Date: Wed, 18 Mar 2020 17:49:03 +0100 Subject: [PATCH 40/86] Cleanup and update to the latest confmgr --- .vscode/settings.json | 1 + packages/polkabot-api/src/plugin.interface.ts | 62 +- .../polkabot-plugin-blockstats/src/index.ts | 39 +- .../src/index.ts | 3 +- .../polkabot-plugin-operator/src/index.ts | 34 +- .../src/matrix-helper.ts | 14 + .../polkabot-plugin-operator/src/types.ts | 0 packages/polkabot/package.json | 44 +- packages/polkabot/src/config.ts | 30 - packages/polkabot/src/index.ts | 2 +- yarn.lock | 1285 ++++++++++------- 11 files changed, 848 insertions(+), 666 deletions(-) create mode 100644 packages/polkabot-plugin-operator/src/matrix-helper.ts create mode 100644 packages/polkabot-plugin-operator/src/types.ts delete mode 100644 packages/polkabot/src/config.ts diff --git a/.vscode/settings.json b/.vscode/settings.json index 7549f7f..2219301 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -15,6 +15,7 @@ "Parens", "STALLWATCHER", "bot's", + "confmgr", "envfile", "minimongo", "msgsype", diff --git a/packages/polkabot-api/src/plugin.interface.ts b/packages/polkabot-api/src/plugin.interface.ts index bf3f91b..f62d877 100644 --- a/packages/polkabot-api/src/plugin.interface.ts +++ b/packages/polkabot-api/src/plugin.interface.ts @@ -4,6 +4,7 @@ import { assert } from "./utils"; import { PolkabotWorker } from "./PolkabotWorker"; import { PolkabotChatbot } from "./PolkabotChatbot"; import { PolkabotNotifier } from "./PolkabotNotifier"; +import { ConfigObject } from 'confmgr' /** * A plugin module before the package has been loaded. @@ -80,35 +81,36 @@ export interface IChatBot { } export class PolkabotPluginBase { - public module: PluginModule; - public config: any; // TODO - public context: any; // TODO - public package: packageJson; - public type: Type; - public commandSet?: PluginCommandSet; - - // public description: string; // some blabla about the plugin, we dont have this field, we use the package.json/description - - constructor(type: Type, mod: PluginModule, context: PluginContext, config?) { - // console.log(`++ PolkabotPluginBase/${type} ${mod.name}: ${mod.path}`); - this.type = type; - this.context = context; - this.config = config; - this.module = mod; - const packageFile = path.join(mod.path, "package.json"); - - // console.log("loading package from", packageFile); - this.package = require(packageFile); - - assert(this.package, "package not loaded properly"); - } - - // toString() { - // const obj = this; - // delete obj.context; - // return JSON.stringify(obj, null, 2); - // } -} + // TODO: fix the mess here + public module: PluginModule; + public config: ConfigObject; + public context: PluginContext; // TODO + public package: packageJson; + public type: Type; + public commandSet?: PluginCommandSet; + + // public description: string; // some blabla about the plugin, we dont have this field, we use the package.json/description + + constructor(type: Type, mod: PluginModule, context: PluginContext, config?) { + // console.log(`++ PolkabotPluginBase/${type} ${mod.name}: ${mod.path}`); + this.type = type; + this.context = context; + this.config = config; + this.module = mod; + const packageFile = path.join(mod.path, 'package.json'); + + // console.log("loading package from", packageFile); + this.package = require(packageFile); + + assert(this.package, 'package not loaded properly'); + } + + // toString() { + // const obj = this; + // delete obj.context; + // return JSON.stringify(obj, null, 2); + // } + } export type BotCommand = { module: string; // op, id, bday, etc... @@ -122,7 +124,7 @@ export type PolkabotPlugin = PolkabotWorker | PolkabotNotifier | PolkabotChatbot * This is the context Polkabot passes to any plugin */ export interface PluginContext { - config; + config: ConfigObject; pkg; db; matrix; diff --git a/packages/polkabot-plugin-blockstats/src/index.ts b/packages/polkabot-plugin-blockstats/src/index.ts index e894b66..6aad95a 100644 --- a/packages/polkabot-plugin-blockstats/src/index.ts +++ b/packages/polkabot-plugin-blockstats/src/index.ts @@ -2,12 +2,12 @@ import BN from "bn.js"; import { - PolkabotWorker, NotifierMessage, NotifierSpecs, PluginModule, PluginContext } from "@polkabot/api/src/plugin.interface"; +import { PolkabotWorker} from "@polkabot/api/src/PolkabotWorker" type Data = { tmsp: number; @@ -16,7 +16,9 @@ type Data = { }; export default class BlocsStats extends PolkabotWorker { - public config: { + static NAME = 'BLOCKSTATS' + + public params: { NB_BLOCKS: number; // Size of the rolling buffer THRESHOLD: number; // We remain silent unless the average goes above this value LOG_NTH_BLOCK: number; @@ -28,11 +30,11 @@ export default class BlocsStats extends PolkabotWorker { public constructor(mod: PluginModule, context: PluginContext, config?) { super(mod, context, config); - - this.config = { - NB_BLOCKS: parseInt(process.env.POLKABOT_PLUGIN_BLOCKSTATS_NB_BLOCKS) || 100, // Size of the rolling buffer - THRESHOLD: parseInt(process.env.POLKABOT_PLUGIN_BLOCKSTATS_THRESHOLD) || 8.0, // We remain silent unless the average goes above this value - LOG_NTH_BLOCK: parseInt(process.env.POLKABOT_PLUGIN_BLOCKSTATS_LOG_NTH_BLOCK) || 1000 + + this.params = { + NB_BLOCKS: context.config.Get(BlocsStats.NAME, 'NB_BLOCKS'), /// Size of the rolling buffer + THRESHOLD: context.config.Get(BlocsStats.NAME, 'THRESHOLD'), /// We remain silent unless the average goes above this value + LOG_NTH_BLOCK: context.config.Get(BlocsStats.NAME, 'LOG_NTH_BLOCK') }; this.data = []; @@ -40,24 +42,29 @@ export default class BlocsStats extends PolkabotWorker { } public start(): void { - console.log("BlocksStats - Starting with config:", this.config); + console.log("BlocksStats - Starting with config:", this.params); this.watchChain().catch(error => { console.error("BlocksStats - Error subscribing to chain head: ", error); }); } + public stop(): void { + // TODO missing impl + throw new Error('Not Implemented') + } + async watchChain() { // Reference: https://polkadot.js.org/api/examples/promise/02_listen_to_blocks/ await this.context.polkadot.rpc.chain.subscribeNewHeads(header => { const bnBlockNumber: BN = header.number.unwrap().toBn(); - if (bnBlockNumber.mod(new BN(this.config.LOG_NTH_BLOCK)).toString(10) === "0") { + if (bnBlockNumber.mod(new BN(this.params.LOG_NTH_BLOCK)).toString(10) === "0") { console.log(`BlocksStats - Chain is at block: #${header.number.unwrap().toBn()}`, this.stats); } this.addBlock(header); - if (bnBlockNumber.mod(new BN(this.config.NB_BLOCKS)).toString(10) === "0") { + if (bnBlockNumber.mod(new BN(this.params.NB_BLOCKS)).toString(10) === "0") { this.computeStats(); this.alert(bnBlockNumber); } @@ -72,7 +79,7 @@ export default class BlocsStats extends PolkabotWorker { }; this.data.push(data); - while (this.data.length > this.config.NB_BLOCKS) { + while (this.data.length > this.params.NB_BLOCKS) { this.data.shift(); } this.previousData = data; @@ -91,10 +98,10 @@ export default class BlocsStats extends PolkabotWorker { } alert(bnBlockNumber) { - if (this.stats.averageBlockTime >= this.config.THRESHOLD) { + if (this.stats.averageBlockTime >= this.params.THRESHOLD) { const notifierMessage: NotifierMessage = { - message: `WARNING: Average block time exceeded ${this.config.THRESHOLD.toFixed(3)}s -Stats for the last ${this.config.NB_BLOCKS} at #${bnBlockNumber.toString(10)}: + message: `WARNING: Average block time exceeded ${this.params.THRESHOLD.toFixed(3)}s +Stats for the last ${this.params.NB_BLOCKS} at #${bnBlockNumber.toString(10)}: - Nb Blocks: ${this.stats.nbBlock} - Average Block time: ${this.stats.averageBlockTime.toFixed(3)}s` }; @@ -108,8 +115,8 @@ Stats for the last ${this.config.NB_BLOCKS} at #${bnBlockNumber.toString(10)}: // this.context.matrix // .sendTextMessage( // this.context.config.matrix.roomId, - // `WARNING: Average block time exceeded ${this.config.THRESHOLD.toFixed(3)}s - // Stats for the last ${this.config.NB_BLOCKS} at #${bnBlockNumber.toString(10)}: + // `WARNING: Average block time exceeded ${this.params.THRESHOLD.toFixed(3)}s + // Stats for the last ${this.params.NB_BLOCKS} at #${bnBlockNumber.toString(10)}: // - Nb Blocks: ${this.stats.nbBlock} // - Average Block time: ${this.stats.averageBlockTime.toFixed(3)}s` // ) diff --git a/packages/polkabot-plugin-notifier-matrix/src/index.ts b/packages/polkabot-plugin-notifier-matrix/src/index.ts index 198d5db..443afdf 100644 --- a/packages/polkabot-plugin-notifier-matrix/src/index.ts +++ b/packages/polkabot-plugin-notifier-matrix/src/index.ts @@ -16,8 +16,9 @@ export default class MatrixNotifier extends PolkabotNotifier { public notify(message: NotifierMessage, specs: NotifierSpecs): void { super.notify(message, specs); + const roomId = this.context.config.Get('MATRIX', 'ROOM_ID') console.log("Notifier/matrix:", message, specs); - this.context.matrix.sendTextMessage(this.context.config.matrix.roomId, message.message).finally(function() {}); + this.context.matrix.sendTextMessage(roomId, message.message).finally(function() {}); } } diff --git a/packages/polkabot-plugin-operator/src/index.ts b/packages/polkabot-plugin-operator/src/index.ts index 40546d1..ee19828 100644 --- a/packages/polkabot-plugin-operator/src/index.ts +++ b/packages/polkabot-plugin-operator/src/index.ts @@ -1,7 +1,5 @@ #!/usr/bin/env node import { - NotifierMessage, - NotifierSpecs, PluginModule, PluginContext, CommandHandlerOutput, @@ -13,16 +11,18 @@ import { PluginCommand, Room, SenderId, + RoomId, } from "@polkabot/api/src/plugin.interface"; import moment from "moment"; import getCommandSet from "./commandSet"; import { PolkabotChatbot } from "@polkabot/api/src/PolkabotChatbot"; +import MatrixHelper from "./matrix-helper"; export default class Operator extends PolkabotChatbot implements IControllable { public commandSet: PluginCommandSet; package: any; controllables: any; - context: any; + context: PluginContext; public constructor(mod: PluginModule, context: PluginContext, config?) { super(mod, context, config); @@ -136,7 +136,7 @@ export default class Operator extends PolkabotChatbot implements IControllable { const senderId = event.getSender(); // If we see our own message, we skip - if (this.isSelf(senderId)) return; + if (MatrixHelper.isSelf(senderId, this.config.Get('MATRIX', 'BOTUSER_ID'))) return; // If there is no ! and the string contains help, we try to help if (msg.indexOf("!") < 0 && msg.toLowerCase().indexOf("help") > 0) { @@ -190,8 +190,8 @@ export default class Operator extends PolkabotChatbot implements IControllable { // return; // } - const senderRoomId = event.sender.roomId; - const roomIdWithBot = room.roomId; + const senderRoomId: RoomId = event.sender.roomId; + const roomIdWithBot: RoomId = room.roomId; console.log(senderId, senderRoomId, roomIdWithBot); @@ -205,7 +205,7 @@ export default class Operator extends PolkabotChatbot implements IControllable { // console.log("isBotMasterAndBotInRoom", this.isBotMasterAndBotInRoom(room)); // console.log("isBotMessageRecipient", this.isBotMessageRecipient(room)); - if (this.isPrivate(senderRoomId, roomIdWithBot)) { + if (MatrixHelper.isPrivate(senderRoomId, roomIdWithBot)) { /** * Check that the senderId is the Bot Master with isOperator * Also check that the message is from a direct message between @@ -229,8 +229,8 @@ export default class Operator extends PolkabotChatbot implements IControllable { let capture = msg.match(/^!(?\w+)(\s+(?.*?))??$/i) || []; // console.log("Operator - captured from Bot Master: ", capture); if (capture.length > 0 && capture.groups.cmd) { - const cmd: string = capture.groups.cmd; - const args = capture.groups.args; + const _cmd: string = capture.groups.cmd; + const _args = capture.groups.args; // console.log("Operator - cmd: ", cmd); // console.log("Operator - args: ", args); @@ -294,16 +294,8 @@ export default class Operator extends PolkabotChatbot implements IControllable { } }); } - - // TODO: not implemented! - public isPrivate(senderRoomId: any, roomIdWithBot: any): boolean { - return false; - // throw new Error("Method not implemented."); - } - private isSelf(senderId) { - return senderId === this.context.config.matrix.botUserId; - } + // private showInstructions() { // // Send message to the room notifying users how to use the bot @@ -324,7 +316,7 @@ export default class Operator extends PolkabotChatbot implements IControllable { * is the Bot Master's id */ private isMaster(senderId: SenderId) { - return senderId === this.context.config.matrix.botMasterId; + return senderId === this.context.config.Get('MATRIX', 'BOTMASTER_ID'); } // Is the chat room name the same name as the Bot's name @@ -333,7 +325,7 @@ export default class Operator extends PolkabotChatbot implements IControllable { public isBotMessageRecipient(room: Room) { return ( room.name === - this.context.config.matrix.botUserId + this.context.config.Get('MATRIX', 'BOTUSER_ID') .split(":") .shift() .substring(1) @@ -342,7 +334,7 @@ export default class Operator extends PolkabotChatbot implements IControllable { // Has the Bot Master initiated a direct chat with the Bot private isBotMasterAndBotInRoom(room: Room) { - const expectedDirectMessageRoomMemberIds = [this.context.config.matrix.botMasterId, this.context.config.matrix.botUserId]; + const expectedDirectMessageRoomMemberIds = [this.context.config.Get('MATRIX', 'BOTMASTER_ID'), this.context.config.Get('MATRIX', 'BOTUSER_ID')]; const directChatRoomMemberIds = Object.keys(room.currentState.members); return expectedDirectMessageRoomMemberIds.every(val => directChatRoomMemberIds.includes(val)); } diff --git a/packages/polkabot-plugin-operator/src/matrix-helper.ts b/packages/polkabot-plugin-operator/src/matrix-helper.ts new file mode 100644 index 0000000..d0547fe --- /dev/null +++ b/packages/polkabot-plugin-operator/src/matrix-helper.ts @@ -0,0 +1,14 @@ +import { RoomId } from "@polkabot/api/src/plugin.interface"; + +export default class MatrixHelper { + + // TODO: not implemented! + public static isPrivate(_senderRoomId: RoomId, _roomIdWithBot: RoomId): boolean { + return false; + // throw new Error("Method not implemented."); + } + + public static isSelf(senderId, botUserId) { + return senderId === botUserId; + } +} diff --git a/packages/polkabot-plugin-operator/src/types.ts b/packages/polkabot-plugin-operator/src/types.ts new file mode 100644 index 0000000..e69de29 diff --git a/packages/polkabot/package.json b/packages/polkabot/package.json index 46dbd26..c3f1ee8 100644 --- a/packages/polkabot/package.json +++ b/packages/polkabot/package.json @@ -33,41 +33,41 @@ "Matrix.org" ], "dependencies": { - "@polkadot/api": "0.100.1", - "bn.js": "5.0.0", - "confmgr": "^1", + "@polkadot/api": "1.7.1", + "bn.js": "5.1.1", + "confmgr": "^1.0.3", "find-node-modules": "^2.0.0", "matrix-js-sdk": "2.3.0", - "minimongo": "6.0.0", + "minimongo": "6.5.0", "nedb": "^1.8.0", "olm": "https://matrix.org/packages/npm/olm/olm-3.0.0.tgz", - "yargs": "14.2.0" + "yargs": "15.3.1" }, "devDependencies": { - "@types/dotenv": "^6.1.1", - "@types/mocha": "^5.2.7", - "@typescript-eslint/eslint-plugin": "2.0.0", - "@typescript-eslint/parser": "2.0.0", + "@types/dotenv": "^8.2.0", + "@types/mocha": "^7.0.2", + "@typescript-eslint/eslint-plugin": "2.24.0", + "@typescript-eslint/parser": "2.24.0", "chai": "4.2.0", "chai-http": "4.3.0", - "dotenv": "8.1.0", - "eslint": "6.2.0", - "eslint-config-prettier": "6.1.0", - "eslint-config-standard": "14.0.0", - "eslint-plugin-import": "2.18.2", - "eslint-plugin-node": "^9.1.0", + "dotenv": "8.2.0", + "eslint": "6.8.0", + "eslint-config-prettier": "6.10.0", + "eslint-config-standard": "14.1.0", + "eslint-plugin-import": "2.20.1", + "eslint-plugin-node": "^11.0.00", "eslint-plugin-promise": "4.2.1", - "eslint-plugin-react": "7.14.3", + "eslint-plugin-react": "7.19.0", "eslint-plugin-standard": "4.0.1", "jsdoc": "3.6.3", "jsdoc-route-plugin": "^0.1.0", - "mocha": "^6.1.4", - "nodemon": "1.19.1", + "mocha": "^7.1.1", + "nodemon": "2.0.2", "snazzy": "^8.0.0", - "standard": "14.0.0", - "ts-node": "^8.3.0", - "typescript": "3.5.3", - "yarn": "^1.16.0" + "standard": "14.3.3", + "ts-node": "^8.6.2", + "typescript": "3.8.3", + "yarn": "^1.22.4" }, "standard": { "parser": "babel-eslint", diff --git a/packages/polkabot/src/config.ts b/packages/polkabot/src/config.ts deleted file mode 100644 index ddec96d..0000000 --- a/packages/polkabot/src/config.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { config as dotenvConfig } from 'dotenv' - -dotenvConfig() - -module.exports = { - - // General Polkadot config - polkadot: { - // This is just for you to remember. i.e. 'Crash Override' - nodeName: process.env.POLKADOT_NODE_NAME, - // WebSocket host:port, usually :9944. i.e. 'ws://127.0.0.1:9944' - host: process.env.POLKADOT_WS_HOST || 'ws://127.0.0.1:9944' - }, - - // General Matrix config - matrix: { - // Who is managing the bot. i.e. '@you:matrix.org' - botMasterId: process.env.MATRIX_BOTMASTER_ID, - // In what room is the bot active by default. i.e. '!:matrix.org' - roomId: process.env.MATRIX_ROOM_ID, - // Credentials of the bot. i.e. '@...:matrix.org' - botUserId: process.env.MATRIX_BOT_USER_ID, - // Token. i.e. 'your_token_here' - token: process.env.MATRIX_TOKEN, - // Base Matrix URL. i.e. 'https://matrix.org' - baseUrl: process.env.MATRIX_BASE_URL || 'https://matrix.org', - loginUserId: process.env.MATRIX_LOGIN_USER_ID, - loginUserPassword: process.env.MATRIX_LOGIN_USER_PASSWORD - } -} diff --git a/packages/polkabot/src/index.ts b/packages/polkabot/src/index.ts index 4c5e61a..39f7773 100644 --- a/packages/polkabot/src/index.ts +++ b/packages/polkabot/src/index.ts @@ -225,7 +225,7 @@ export default class Polkabot { // this.config = require(configLocation) const config = ConfigManager.getInstance('configSpecs.yml').getConfig(); - config.Print(); + config.Print({compact: true}); console.log(`Your config is${config.Validate() ? '' : ' NOT'} valid!`); this.config = config; diff --git a/yarn.lock b/yarn.lock index 8129501..2dab636 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10,17 +10,17 @@ "@babel/highlight" "^7.8.3" "@babel/core@^7.4.5", "@babel/core@^7.7.5": - version "7.8.4" - resolved "https://registry.npmjs.org/@babel/core/-/core-7.8.4.tgz#d496799e5c12195b3602d0fddd77294e3e38e80e" - integrity sha512-0LiLrB2PwrVI+a2/IEskBopDYSd8BCb3rOvH7D5tzoWd696TBEduBvuLVm4Nx6rltrLZqvI3MCalB2K2aVzQjA== + version "7.8.7" + resolved "https://registry.npmjs.org/@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.4" + "@babel/generator" "^7.8.7" "@babel/helpers" "^7.8.4" - "@babel/parser" "^7.8.4" - "@babel/template" "^7.8.3" - "@babel/traverse" "^7.8.4" - "@babel/types" "^7.8.3" + "@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" @@ -30,12 +30,12 @@ semver "^5.4.1" source-map "^0.5.0" -"@babel/generator@^7.8.4": - version "7.8.4" - resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.8.4.tgz#35bbc74486956fe4251829f9f6c48330e8d0985e" - integrity sha512-PwhclGdRpNAf3IxZb0YVuITPZmmrXz9zf6fH8lT4XbrmfQKr6ryBzhv593P5C6poJRciFCL/eHGW2NuGrgEyxA== +"@babel/generator@^7.8.6", "@babel/generator@^7.8.7": + version "7.8.8" + resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.8.8.tgz#cdcd58caab730834cee9eeadb729e833b625da3e" + integrity sha512-HKyUVu69cZoclptr8t8U5b6sx6zoWjh8jiUhnuj3MpZuKT2dJ8zPTuiy31luq32swhI0SpwItCIlU8XW7BZeJg== dependencies: - "@babel/types" "^7.8.3" + "@babel/types" "^7.8.7" jsesc "^2.5.1" lodash "^4.17.13" source-map "^0.5.0" @@ -93,10 +93,10 @@ esutils "^2.0.2" js-tokens "^4.0.0" -"@babel/parser@^7.0.0", "@babel/parser@^7.4.4", "@babel/parser@^7.7.5", "@babel/parser@^7.8.3", "@babel/parser@^7.8.4": - version "7.8.4" - resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.8.4.tgz#d1dbe64691d60358a974295fa53da074dd2ce8e8" - integrity sha512-0fKu/QqildpXmPVaRBoXOlyBb3MC+J0A66x97qEfLOMkn3u6nfY5esWogQwi/K0BjASYy4DbnsEWnpNL6qT5Mw== +"@babel/parser@^7.0.0", "@babel/parser@^7.4.4", "@babel/parser@^7.7.5", "@babel/parser@^7.8.6", "@babel/parser@^7.8.7": + version "7.8.8" + resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.8.8.tgz#4c3b7ce36db37e0629be1f0d50a571d2f86f6cd4" + integrity sha512-mO5GWzBPsPf6865iIbzNE0AvkKF3NE+2S3eRUpE+FE07BOAkXh6G+GW/Pj01hhXjve1WScbaIO4UlY1JKeqCcA== "@babel/plugin-transform-runtime@^7.8.3": version "7.8.3" @@ -108,6 +108,14 @@ resolve "^1.8.1" semver "^5.5.1" +"@babel/runtime-corejs3@^7.8.3": + version "7.8.7" + resolved "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.8.7.tgz#8209d9dff2f33aa2616cb319c83fe159ffb07b8c" + integrity sha512-sc7A+H4I8kTd7S61dgB9RomXu/C+F4IrRr4Ytze4dnfx7AXEpCrejSNpjx7vq6y/Bak9S6Kbk65a/WgMLtg43Q== + dependencies: + core-js-pure "^3.0.0" + regenerator-runtime "^0.13.4" + "@babel/runtime@7.8.7", "@babel/runtime@^7.8.7": version "7.8.7" resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.8.7.tgz#8fefce9802db54881ba59f90bb28719b4996324d" @@ -115,41 +123,34 @@ dependencies: regenerator-runtime "^0.13.4" -"@babel/runtime@^7.7.7": - version "7.8.4" - resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.8.4.tgz#d79f5a2040f7caa24d53e563aad49cbc05581308" - integrity sha512-neAp3zt80trRVBI1x0azq6c57aNBqYZH8KhMm3TaB7wEI5Q4A2SHfBHE8w9gOhI/lrqxtEbXZgQIrHP+wvSGwQ== - dependencies: - regenerator-runtime "^0.13.2" - -"@babel/template@^7.7.4", "@babel/template@^7.8.3": - version "7.8.3" - resolved "https://registry.npmjs.org/@babel/template/-/template-7.8.3.tgz#e02ad04fe262a657809327f578056ca15fd4d1b8" - integrity sha512-04m87AcQgAFdvuoyiQ2kgELr2tV8B4fP/xJAVUL3Yb3bkNdMedD3d0rlSQr3PegP0cms3eHjl1F7PWlvWbU8FQ== +"@babel/template@^7.7.4", "@babel/template@^7.8.3", "@babel/template@^7.8.6": + version "7.8.6" + resolved "https://registry.npmjs.org/@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.3" - "@babel/types" "^7.8.3" + "@babel/parser" "^7.8.6" + "@babel/types" "^7.8.6" -"@babel/traverse@^7.0.0", "@babel/traverse@^7.7.4", "@babel/traverse@^7.8.4": - version "7.8.4" - resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.8.4.tgz#f0845822365f9d5b0e312ed3959d3f827f869e3c" - integrity sha512-NGLJPZwnVEyBPLI+bl9y9aSnxMhsKz42so7ApAv9D+b4vAFPpY013FTS9LdKxcABoIYFU52HcYga1pPlx454mg== +"@babel/traverse@^7.0.0", "@babel/traverse@^7.7.4", "@babel/traverse@^7.8.4", "@babel/traverse@^7.8.6": + version "7.8.6" + resolved "https://registry.npmjs.org/@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.4" + "@babel/generator" "^7.8.6" "@babel/helper-function-name" "^7.8.3" "@babel/helper-split-export-declaration" "^7.8.3" - "@babel/parser" "^7.8.4" - "@babel/types" "^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.8.3": - version "7.8.3" - resolved "https://registry.npmjs.org/@babel/types/-/types-7.8.3.tgz#5a383dffa5416db1b73dedffd311ffd0788fb31c" - integrity sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg== +"@babel/types@^7.0.0", "@babel/types@^7.8.3", "@babel/types@^7.8.6", "@babel/types@^7.8.7": + version "7.8.7" + resolved "https://registry.npmjs.org/@babel/types/-/types-7.8.7.tgz#1fc9729e1acbb2337d5b6977a63979b4819f5d1d" + integrity sha512-k2TreEHxFA4CjGkL+GYjRyx35W0Mr7DP5+9q6WMkyKXB+904bYmG40syjMFV0oLlhhFCwWl0vA0DyzTDkwAiJw== dependencies: esutils "^2.0.2" lodash "^4.17.13" @@ -170,131 +171,148 @@ resolved "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.2.tgz#26520bf09abe4a5644cd5414e37125a8954241dd" integrity sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw== -"@polkadot/api-derive@^0.100.1": - version "0.100.1" - resolved "https://registry.npmjs.org/@polkadot/api-derive/-/api-derive-0.100.1.tgz#dd6b449bfcf3a67495dbb3b0cfbe264c98a2f028" - integrity sha512-U9MKNvo+BEIEHFPrg5rEYhAnQ56NhsSKjG+xwETAeK6xGmVx5UAFJk2zTwR8/nKCQpxJXX6E3laXcCFn0F1lMw== - dependencies: - "@babel/runtime" "^7.7.7" - "@polkadot/api" "^0.100.1" - "@polkadot/types" "^0.100.1" - -"@polkadot/api@0.100.1", "@polkadot/api@^0.100.1": - version "0.100.1" - resolved "https://registry.npmjs.org/@polkadot/api/-/api-0.100.1.tgz#cc36ee70d98fb37edf6bbf67f6ce4adbde8dbd82" - integrity sha512-A3Qtj4iLMuZWrfQowf9MX/NhB9/fqxl8gSfA9OXQuJShlIokyzHaXe4CLDburqPYsyM7eWOhPAEQqUPsOSg7uw== - dependencies: - "@babel/runtime" "^7.7.7" - "@polkadot/api-derive" "^0.100.1" - "@polkadot/keyring" "^1.8.1" - "@polkadot/metadata" "^0.100.1" - "@polkadot/rpc-core" "^0.100.1" - "@polkadot/rpc-provider" "^0.100.1" - "@polkadot/types" "^0.100.1" - "@polkadot/util-crypto" "^1.8.1" - -"@polkadot/jsonrpc@^0.100.1": - version "0.100.1" - resolved "https://registry.npmjs.org/@polkadot/jsonrpc/-/jsonrpc-0.100.1.tgz#5851e86d1311889791190cda93d33ce54fd9a2d5" - integrity sha512-Y454IMglSq94Y4wOYxlVSdm2mdQKcKKf3jte75RuXIqwkjh9iBUim5pOM5JbUvq6+NgZixakvX11R4YPsCcanQ== - dependencies: - "@babel/runtime" "^7.7.7" - -"@polkadot/keyring@^1.8.1": - version "1.8.1" - resolved "https://registry.npmjs.org/@polkadot/keyring/-/keyring-1.8.1.tgz#69a9209f22b766a9e2d97d36bfca8bcdbc4daa18" - integrity sha512-KeDbfP8biY3bXEhMv1ANp9d3kCuXj2oxseuDK0jvxRo7CehVME9UwAMGQK3Y9NCUuYWd+xTO2To0ZOqR7hdmuQ== - dependencies: - "@babel/runtime" "^7.7.7" - "@polkadot/util" "^1.8.1" - "@polkadot/util-crypto" "^1.8.1" - -"@polkadot/metadata@^0.100.1": - version "0.100.1" - resolved "https://registry.npmjs.org/@polkadot/metadata/-/metadata-0.100.1.tgz#fb92d86dc19c59a22af2f09e265b3c72b24fae54" - integrity sha512-KplhDlWHIEDV4R3NdG52AmcN99RQ/PV6dBrjC3FByPVJ3yLQwVA0c5HgyqKGRBOroyy9dh1b8wF/XTh95O1NWw== - dependencies: - "@babel/runtime" "^7.7.7" - "@polkadot/types" "^0.100.1" - "@polkadot/util" "^1.8.1" - "@polkadot/util-crypto" "^1.8.1" - -"@polkadot/rpc-core@^0.100.1": - version "0.100.1" - resolved "https://registry.npmjs.org/@polkadot/rpc-core/-/rpc-core-0.100.1.tgz#0548b963f7b66296ee08a417802b9bb9e528be44" - integrity sha512-1bRpQG+1B3nWGN1BduR0eNNerXhD567OMHwQbQZEMm18WglI4yNEq3u4s+1Pb5vnEnyofr8/8b1ecseq8J1Ahw== - dependencies: - "@babel/runtime" "^7.7.7" - "@polkadot/jsonrpc" "^0.100.1" - "@polkadot/rpc-provider" "^0.100.1" - "@polkadot/types" "^0.100.1" - "@polkadot/util" "^1.8.1" +"@polkadot/api-derive@1.7.1": + version "1.7.1" + resolved "https://registry.npmjs.org/@polkadot/api-derive/-/api-derive-1.7.1.tgz#17446854462886e9782e68cbfb6f86dc0405a830" + integrity sha512-kSJ9K6RQH8fuyUL+51PtuVjBhwUW+Cwm15fBzX0qWrZHqPzeBnZBdZFCJ8gGP61Olfl7u6OQeChhujL5NGwCHA== + dependencies: + "@babel/runtime" "^7.8.7" + "@polkadot/api" "1.7.1" + "@polkadot/rpc-core" "1.7.1" + "@polkadot/rpc-provider" "1.7.1" + "@polkadot/types" "1.7.1" + "@polkadot/util" "^2.6.2" + "@polkadot/util-crypto" "^2.6.2" + bn.js "^5.1.1" + memoizee "^0.4.14" + rxjs "^6.5.4" + +"@polkadot/api@1.7.1": + version "1.7.1" + resolved "https://registry.npmjs.org/@polkadot/api/-/api-1.7.1.tgz#89470ca40bc64e355d691e75940f92f6e444aa1b" + integrity sha512-axrsxpXbM1K3H6FzSWYQKaVlKyqXheZVId1grOKwX3ZA/DB/mSr1YFXqZt8UNgzJDf8LH3VOyWHOOcmxWyi7nw== + dependencies: + "@babel/runtime" "^7.8.7" + "@polkadot/api-derive" "1.7.1" + "@polkadot/keyring" "^2.6.2" + "@polkadot/metadata" "1.7.1" + "@polkadot/rpc-core" "1.7.1" + "@polkadot/rpc-provider" "1.7.1" + "@polkadot/types" "1.7.1" + "@polkadot/util" "^2.6.2" + "@polkadot/util-crypto" "^2.6.2" + bn.js "^5.1.1" + eventemitter3 "^4.0.0" + rxjs "^6.5.4" + +"@polkadot/jsonrpc@1.7.1": + version "1.7.1" + resolved "https://registry.npmjs.org/@polkadot/jsonrpc/-/jsonrpc-1.7.1.tgz#eb5a07415e56311cc0dbe03eeca28060e49b3d30" + integrity sha512-tOniIG97p4QYTsKlRK10UTbV8EFBAlY/VeW2+vQqItY/8jsDHvExF7Wzhbxs1pRYXILaVaqGMxaXXEjoMw6Xxg== + dependencies: + "@babel/runtime" "^7.8.7" + "@polkadot/types" "1.7.1" + "@polkadot/util" "^2.6.2" + +"@polkadot/keyring@^2.6.2": + version "2.6.2" + resolved "https://registry.npmjs.org/@polkadot/keyring/-/keyring-2.6.2.tgz#a0fc5b12e6b2bba738384fbc1cd93a0c61f30bac" + integrity sha512-R7rB0+bE0FjZoTJtd07oWQ2sD6l8+eQUKOs4rYr6JFC3eaveFu/G/5thRt+gs2a/X0TdRGnahlt02SaFX6sZpg== + dependencies: + "@babel/runtime" "^7.8.7" + "@polkadot/util" "2.6.2" + "@polkadot/util-crypto" "2.6.2" + +"@polkadot/metadata@1.7.1": + version "1.7.1" + resolved "https://registry.npmjs.org/@polkadot/metadata/-/metadata-1.7.1.tgz#47878d714a0d4898a17eac74e72131140680eec9" + integrity sha512-We5eaUwuBNa4Q/shLpEtwUoTZvYMQgpZPW5N/JRoitkJBHJiHvt12IR8JgQnB5wrDNoJ8f97kVOv1eeXTzhn4g== + dependencies: + "@babel/runtime" "^7.8.7" + "@polkadot/types" "1.7.1" + "@polkadot/util" "^2.6.2" + "@polkadot/util-crypto" "^2.6.2" + bn.js "^5.1.1" + +"@polkadot/rpc-core@1.7.1": + version "1.7.1" + resolved "https://registry.npmjs.org/@polkadot/rpc-core/-/rpc-core-1.7.1.tgz#ad90b330b9edef34035cd3ba755da2e0f6dc512d" + integrity sha512-et5sdEJkIgU5l/nU5o5JwvuIAYz9HDYLxj+VNGIwA7ACcG+OWb/sDtBELmlYGCXmzKnMgW5aq/Fj2+Wgvj34PA== + dependencies: + "@babel/runtime" "^7.8.7" + "@polkadot/jsonrpc" "1.7.1" + "@polkadot/metadata" "1.7.1" + "@polkadot/rpc-provider" "1.7.1" + "@polkadot/types" "1.7.1" + "@polkadot/util" "^2.6.2" + memoizee "^0.4.14" rxjs "^6.5.4" -"@polkadot/rpc-provider@^0.100.1": - version "0.100.1" - resolved "https://registry.npmjs.org/@polkadot/rpc-provider/-/rpc-provider-0.100.1.tgz#8d408274ae7964b52822abe0edeb66e51ba66960" - integrity sha512-Rtic7fFWEd+xrZCdoPvb3pTCl3MmpI7KiZKFJkO5Fa6kKOZXhSA18lg++w1bKb6R6elcTS5pKEvTHVt/L4uLNQ== +"@polkadot/rpc-provider@1.7.1": + version "1.7.1" + resolved "https://registry.npmjs.org/@polkadot/rpc-provider/-/rpc-provider-1.7.1.tgz#745bfda406281783a7cb2d350e1ac72f4795d54c" + integrity sha512-AVAoqeXBNEvy9B1n9Gs0ENW/AHRnHqwDMysAz5hCdoQZXuSYh2WTikXbIsvWH1ouS1Fu3x0pfZW1s2EONonYWA== dependencies: - "@babel/runtime" "^7.7.7" - "@polkadot/metadata" "^0.100.1" - "@polkadot/util" "^1.8.1" - "@polkadot/util-crypto" "^1.8.1" + "@babel/runtime" "^7.8.7" + "@polkadot/jsonrpc" "1.7.1" + "@polkadot/metadata" "1.7.1" + "@polkadot/types" "1.7.1" + "@polkadot/util" "^2.6.2" + "@polkadot/util-crypto" "^2.6.2" + bn.js "^5.1.1" eventemitter3 "^4.0.0" isomorphic-fetch "^2.2.1" websocket "^1.0.31" -"@polkadot/types@^0.100.1": - version "0.100.1" - resolved "https://registry.npmjs.org/@polkadot/types/-/types-0.100.1.tgz#62a50d6a0096843d4dd326c87f8eae86a65a9991" - integrity sha512-W7KP0bstF4udABWiZclc/ciK6MC2vmf+pLIJsEJpXD5HAc88lumbnAh6tTu/mnsobOM0FmSA5pHLvkljnA0grQ== +"@polkadot/types@1.7.1": + version "1.7.1" + resolved "https://registry.npmjs.org/@polkadot/types/-/types-1.7.1.tgz#83a0c6a8ccc621f513d79510280af21632d058b8" + integrity sha512-w0GOVuBssu+AAB5uk5eOiSToTJnej9J7r5M4sdxGb+nJHxnnHcyNYm8j6PtSK0O/UwYgJG4FzUhzSkvRczE+hQ== dependencies: - "@babel/runtime" "^7.7.7" - "@polkadot/metadata" "^0.100.1" - "@polkadot/util" "^1.8.1" - "@polkadot/util-crypto" "^1.8.1" - "@types/memoizee" "^0.4.3" + "@babel/runtime" "^7.8.7" + "@polkadot/metadata" "1.7.1" + "@polkadot/util" "^2.6.2" + "@polkadot/util-crypto" "^2.6.2" + "@types/bn.js" "^4.11.6" + bn.js "^5.1.1" memoizee "^0.4.14" + rxjs "^6.5.4" -"@polkadot/util-crypto@^1.8.1": - version "1.8.1" - resolved "https://registry.npmjs.org/@polkadot/util-crypto/-/util-crypto-1.8.1.tgz#dbc3f75c4a780bd31cd37e63cf27bade54728646" - integrity sha512-ypUs10hV1HPvYc0ZsEu+LTGSEh0rkr0as/FUh7+Z9v3Bxibn3aO+EOxJPQuDbZZ59FSMRmc9SeOSa0wn9ddrnw== - dependencies: - "@babel/runtime" "^7.7.7" - "@polkadot/util" "^1.8.1" - "@polkadot/wasm-crypto" "^0.14.1" - "@types/bip39" "^2.4.2" - "@types/bs58" "^4.0.0" - "@types/pbkdf2" "^3.0.0" - "@types/secp256k1" "^3.5.0" - "@types/xxhashjs" "^0.2.1" - base-x "3.0.5" - bip39 "^2.5.0" +"@polkadot/util-crypto@2.6.2", "@polkadot/util-crypto@^2.6.2": + version "2.6.2" + resolved "https://registry.npmjs.org/@polkadot/util-crypto/-/util-crypto-2.6.2.tgz#6118de39986a42213406e629fcb79ff74cabede6" + integrity sha512-U+M10kkVcCrDm5FXo6uzUmyL/iEr0PTlSinOlNTZHuRPzdbQmgw3XZ3Deqg/7CPx15KT2K9wIKv8jOfFu/dg2w== + dependencies: + "@babel/runtime" "^7.8.7" + "@polkadot/util" "2.6.2" + "@polkadot/wasm-crypto" "^1.2.1" + base-x "^3.0.8" + bip39 "^3.0.2" blakejs "^1.1.0" + bn.js "^5.1.1" bs58 "^4.0.1" + elliptic "^6.5.2" js-sha3 "^0.8.0" - secp256k1 "^3.8.0" - tweetnacl "^1.0.1" + pbkdf2 "^3.0.17" + tweetnacl "^1.0.3" xxhashjs "^0.2.2" -"@polkadot/util@^1.8.1": - version "1.8.1" - resolved "https://registry.npmjs.org/@polkadot/util/-/util-1.8.1.tgz#7473383a1eb26bec59cca53643cf07bc078fe052" - integrity sha512-sFpr+JLCG9d+epjboXsmJ1qcKa96r8ZYzXmVo8+aPzI/9jKKyez6Unox/dnfnpKppZB2nJuLcsxQm6nocp2Caw== +"@polkadot/util@2.6.2", "@polkadot/util@^2.6.2": + version "2.6.2" + resolved "https://registry.npmjs.org/@polkadot/util/-/util-2.6.2.tgz#1d32819b2451a695e9117ec8aef08a3ee1a2524f" + integrity sha512-/dsOuNPsl0IdNu0YZZm+BskESbiTG77NBnRDk0MwAoBmYhvulS34De+Ev/Qx2okS+C8aQ6Uai0AtnYX6rlEXfA== dependencies: - "@babel/runtime" "^7.7.7" + "@babel/runtime" "^7.8.7" "@types/bn.js" "^4.11.6" - bn.js "^4.11.8" + bn.js "^5.1.1" camelcase "^5.3.1" chalk "^3.0.0" ip-regex "^4.1.0" - moment "^2.24.0" -"@polkadot/wasm-crypto@^0.14.1": - version "0.14.1" - resolved "https://registry.npmjs.org/@polkadot/wasm-crypto/-/wasm-crypto-0.14.1.tgz#f4923bba22d7c68a4be3575ba27790947b212633" - integrity sha512-Xng7L2Z8TNZa/5g6pot4O06Jf0ohQRZdvfl8eQL+E/L2mcqJYC1IjkMxJBSBuQEV7hisWzh9mHOy5WCcgPk29Q== +"@polkadot/wasm-crypto@^1.2.1": + version "1.2.1" + resolved "https://registry.npmjs.org/@polkadot/wasm-crypto/-/wasm-crypto-1.2.1.tgz#2189702447acd28d763886359576c87562241767" + integrity sha512-nckIoZBV4nBZdeKwFwH5t7skS7L7GO5EFUl5B1F6uCjUfdNpDz3DtqbYQHcLdCZNmG4TDLg6w/1J+rkl2SiUZw== "@turf/bbox@*", "@turf/bbox@6.x": version "6.0.1" @@ -398,13 +416,6 @@ "@turf/helpers" "6.x" "@turf/invariant" "6.x" -"@types/bip39@^2.4.2": - version "2.4.2" - resolved "https://registry.npmjs.org/@types/bip39/-/bip39-2.4.2.tgz#f5d6617212be496bb998d3969f657f77a10c5287" - integrity sha512-Vo9lqOIRq8uoIzEVrV87ZvcIM0PN9t0K3oYZ/CS61fIYKCBdOIM7mlWzXuRvSXrDtVa1uUO2w1cdfufxTC0bzg== - dependencies: - "@types/node" "*" - "@types/bn.js@^4.11.6": version "4.11.6" resolved "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz#c306c70d9358aaea33cd4eda092a742b9505967c" @@ -412,17 +423,10 @@ dependencies: "@types/node" "*" -"@types/bs58@^4.0.0": - version "4.0.1" - resolved "https://registry.npmjs.org/@types/bs58/-/bs58-4.0.1.tgz#3d51222aab067786d3bc3740a84a7f5a0effaa37" - integrity sha512-yfAgiWgVLjFCmRv8zAcOIHywYATEwiTVccTLnRp6UxTNavT55M9d/uhK3T03St/+8/z/wW+CRjGKUNmEqoHHCA== - dependencies: - base-x "^3.0.6" - "@types/chai@4", "@types/chai@^4.1.7": - version "4.2.9" - resolved "https://registry.npmjs.org/@types/chai/-/chai-4.2.9.tgz#194332625ed2ae914aef00b8d5ca3b77e7924cc6" - integrity sha512-NeXgZj+MFL4izGqA4sapdYzkzQG+MtGra9vhQ58dnmDY++VgJaRUws+aLVV5zRJCYJl/8s9IjMmhiUw1WsKSmw== + version "4.2.11" + resolved "https://registry.npmjs.org/@types/chai/-/chai-4.2.11.tgz#d3614d6c5f500142358e6ed24e1bf16657536c50" + integrity sha512-t7uW6eFafjO+qJ3BIV2gGUyZs27egcNRkUdalkud+Qa3+kg//f129iuOFivHDXQ+vnU3fDXuwgv0cqMCbcE8sw== "@types/color-name@^1.1.1": version "1.1.1" @@ -434,12 +438,12 @@ resolved "https://registry.npmjs.org/@types/cookiejar/-/cookiejar-2.1.1.tgz#90b68446364baf9efd8e8349bb36bd3852b75b80" integrity sha512-aRnpPa7ysx3aNW60hTiCtLHlQaIFsXFCgQlpakNgDNVFzbtusSY8PwjAQgRWfSk0ekNoBjO51eQRB6upA9uuyw== -"@types/dotenv@^6.1.1": - version "6.1.1" - resolved "https://registry.npmjs.org/@types/dotenv/-/dotenv-6.1.1.tgz#f7ce1cc4fe34f0a4373ba99fefa437b0bec54b46" - integrity sha512-ftQl3DtBvqHl9L16tpqqzA4YzCSXZfi7g8cQceTz5rOlYtk/IZbFjAv3mLOQlNIgOaylCQWQoBdDQHPgEBJPHg== +"@types/dotenv@^8.2.0": + version "8.2.0" + resolved "https://registry.npmjs.org/@types/dotenv/-/dotenv-8.2.0.tgz#5cd64710c3c98e82d9d15844375a33bf1b45d053" + integrity sha512-ylSC9GhfRH7m1EUXBXofhgx4lUWmFeQDINW5oLuS+gxWdfUeW4zJdeVTYVkexEW+e2VUvlZR2kGnGGipAWR7kw== dependencies: - "@types/node" "*" + dotenv "*" "@types/eslint-visitor-keys@^1.0.0": version "1.0.0" @@ -451,34 +455,25 @@ resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.4.tgz#38fd73ddfd9b55abb1e1b2ed578cb55bd7b7d339" integrity sha512-8+KAKzEvSUdeo+kmqnKrqgeE+LcA0tjYWFY7RPProVYwnqDjukzO+3b6dLD56rYX5TdWejnEOLJYOIeh4CXKuA== -"@types/memoizee@^0.4.3": - version "0.4.3" - resolved "https://registry.npmjs.org/@types/memoizee/-/memoizee-0.4.3.tgz#f48270d19327c1709620132cf54d598650f98492" - integrity sha512-N6QT0c9ZbEKl33n1wyoTxZs4cpN+YXjs0Aqy5Qim8ipd9PBNIPqOh/p5Pixc4601tqr5GErsdxUbfqviDfubNw== - "@types/mocha@^5.2.7": version "5.2.7" resolved "https://registry.npmjs.org/@types/mocha/-/mocha-5.2.7.tgz#315d570ccb56c53452ff8638738df60726d5b6ea" integrity sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ== -"@types/node@*": - version "13.7.6" - resolved "https://registry.npmjs.org/@types/node/-/node-13.7.6.tgz#cb734a7c191472ae6a2b3a502b4dfffcea974113" - integrity sha512-eyK7MWD0R1HqVTp+PtwRgFeIsemzuj4gBFSQxfPHY5iMjS7474e5wq+VFgTcdpyHeNxyKSaetYAjdMLJlKoWqA== +"@types/mocha@^7.0.2": + version "7.0.2" + resolved "https://registry.npmjs.org/@types/mocha/-/mocha-7.0.2.tgz#b17f16cf933597e10d6d78eae3251e692ce8b0ce" + integrity sha512-ZvO2tAcjmMi8V/5Z3JsyofMe3hasRcaw88cto5etSVMwVQfeivGAlEYmaQgceUSVYFofVjT+ioHsATjdWcFt1w== -"@types/pbkdf2@^3.0.0": - version "3.0.0" - resolved "https://registry.npmjs.org/@types/pbkdf2/-/pbkdf2-3.0.0.tgz#5d9ca5f12a78a08cc89ad72883ad4a30af359229" - integrity sha512-6J6MHaAlBJC/eVMy9jOwj9oHaprfutukfW/Dyt0NEnpQ/6HN6YQrpvLwzWdWDeWZIdenjGHlbYDzyEODO5Z+2Q== - dependencies: - "@types/node" "*" +"@types/node@*": + version "13.9.1" + resolved "https://registry.npmjs.org/@types/node/-/node-13.9.1.tgz#96f606f8cd67fb018847d9b61e93997dabdefc72" + integrity sha512-E6M6N0blf/jiZx8Q3nb0vNaswQeEyn0XlupO+xN6DtJ6r6IT4nXrTry7zhIfYvFCl3/8Cu6WIysmUBKiqV0bqQ== -"@types/secp256k1@^3.5.0": - version "3.5.3" - resolved "https://registry.npmjs.org/@types/secp256k1/-/secp256k1-3.5.3.tgz#57ebfdd19d476de3ff13758cf7b6d9e420d54c19" - integrity sha512-NGcsPDR0P+Q71O63e2ayshmiZGAwCOa/cLJzOIuhOiDvmbvrCIiVtEpqdCJGogG92Bnr6tw/6lqVBsRMEl15OQ== - dependencies: - "@types/node" "*" +"@types/node@11.11.6": + version "11.11.6" + resolved "https://registry.npmjs.org/@types/node/-/node-11.11.6.tgz#df929d1bb2eee5afdda598a41930fe50b43eaa6a" + integrity sha512-Exw4yUWMBXM3X+8oqzJNRqZSwUAaS4+7NdvHqQuFi/d+synz++xmX3QIf+BFqneW8N31R8Ky+sikfZUXq07ggQ== "@types/superagent@^3.8.3": version "3.8.7" @@ -488,70 +483,73 @@ "@types/cookiejar" "*" "@types/node" "*" -"@types/xxhashjs@^0.2.1": - version "0.2.1" - resolved "https://registry.npmjs.org/@types/xxhashjs/-/xxhashjs-0.2.1.tgz#6cd06b2eca5228765ff45960cf2c2a557ddf109a" - integrity sha512-Akm13wkwsQylVnBokl/aiKLtSxndSjfgTjdvmSxXNehYy4NymwdfdJHwGhpV54wcYfmOByOp3ak8AGdUlvp0sA== - dependencies: - "@types/node" "*" +"@types/yaml@^1.2.0": + version "1.2.0" + resolved "https://registry.npmjs.org/@types/yaml/-/yaml-1.2.0.tgz#4ed577fc4ebbd6b829b28734e56d10c9e6984e09" + integrity sha512-GW8b9qM+ebgW3/zjzPm0I1NxMvLaz/YKT9Ph6tTb+Fkeyzd9yLTvQ6ciQ2MorTRmb/qXmfjMerRpG4LviixaqQ== -"@typescript-eslint/eslint-plugin@2.0.0": - version "2.0.0" - resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.0.0.tgz#609a5d7b00ce21a6f94d7ef282eba9da57ca1e42" - integrity sha512-Mo45nxTTELODdl7CgpZKJISvLb+Fu64OOO2ZFc2x8sYSnUpFrBUW3H+H/ZGYmEkfnL6VkdtOSxgdt+Av79j0sA== +"@typescript-eslint/eslint-plugin@2.24.0": + version "2.24.0" + resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.24.0.tgz#a86cf618c965a462cddf3601f594544b134d6d68" + integrity sha512-wJRBeaMeT7RLQ27UQkDFOu25MqFOBus8PtOa9KaT5ZuxC1kAsd7JEHqWt4YXuY9eancX0GK9C68i5OROnlIzBA== dependencies: - "@typescript-eslint/experimental-utils" "2.0.0" - eslint-utils "^1.4.0" + "@typescript-eslint/experimental-utils" "2.24.0" + eslint-utils "^1.4.3" functional-red-black-tree "^1.0.1" - regexpp "^2.0.1" - tsutils "^3.14.0" + regexpp "^3.0.0" + tsutils "^3.17.1" -"@typescript-eslint/experimental-utils@2.0.0": - version "2.0.0" - resolved "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-2.0.0.tgz#f3d298bb411357f35c4184e24280b256b6321949" - integrity sha512-XGJG6GNBXIEx/mN4eTRypN/EUmsd0VhVGQ1AG+WTgdvjHl0G8vHhVBHrd/5oI6RRYBRnedNymSYWW1HAdivtmg== +"@typescript-eslint/experimental-utils@2.24.0": + version "2.24.0" + resolved "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-2.24.0.tgz#a5cb2ed89fedf8b59638dc83484eb0c8c35e1143" + integrity sha512-DXrwuXTdVh3ycNCMYmWhUzn/gfqu9N0VzNnahjiDJvcyhfBy4gb59ncVZVxdp5XzBC77dCncu0daQgOkbvPwBw== dependencies: "@types/json-schema" "^7.0.3" - "@typescript-eslint/typescript-estree" "2.0.0" - eslint-scope "^4.0.0" + "@typescript-eslint/typescript-estree" "2.24.0" + eslint-scope "^5.0.0" -"@typescript-eslint/parser@2.0.0": - version "2.0.0" - resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-2.0.0.tgz#4273bb19d03489daf8372cdaccbc8042e098178f" - integrity sha512-ibyMBMr0383ZKserIsp67+WnNVoM402HKkxqXGlxEZsXtnGGurbnY90pBO3e0nBUM7chEEOcxUhgw9aPq7fEBA== +"@typescript-eslint/parser@2.24.0": + version "2.24.0" + resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-2.24.0.tgz#2cf0eae6e6dd44d162486ad949c126b887f11eb8" + integrity sha512-H2Y7uacwSSg8IbVxdYExSI3T7uM1DzmOn2COGtCahCC3g8YtM1xYAPi2MAHyfPs61VKxP/J/UiSctcRgw4G8aw== dependencies: "@types/eslint-visitor-keys" "^1.0.0" - "@typescript-eslint/experimental-utils" "2.0.0" - "@typescript-eslint/typescript-estree" "2.0.0" - eslint-visitor-keys "^1.0.0" + "@typescript-eslint/experimental-utils" "2.24.0" + "@typescript-eslint/typescript-estree" "2.24.0" + eslint-visitor-keys "^1.1.0" -"@typescript-eslint/typescript-estree@2.0.0": - version "2.0.0" - resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-2.0.0.tgz#c9f6c0efd1b11475540d6a55dc973cc5b9a67e77" - integrity sha512-NXbmzA3vWrSgavymlzMWNecgNOuiMMp62MO3kI7awZRLRcsA1QrYWo6q08m++uuAGVbXH/prZi2y1AWuhSu63w== +"@typescript-eslint/typescript-estree@2.24.0": + version "2.24.0" + resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-2.24.0.tgz#38bbc8bb479790d2f324797ffbcdb346d897c62a" + integrity sha512-RJ0yMe5owMSix55qX7Mi9V6z2FDuuDpN6eR5fzRJrp+8in9UF41IGNQHbg5aMK4/PjVaEQksLvz0IA8n+Mr/FA== dependencies: - lodash.unescape "4.0.1" - semver "^6.2.0" + debug "^4.1.1" + eslint-visitor-keys "^1.1.0" + glob "^7.1.6" + is-glob "^4.0.1" + lodash "^4.17.15" + semver "^6.3.0" + tsutils "^3.17.1" abbrev@1: version "1.1.1" resolved "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== -acorn-jsx@^5.0.0, acorn-jsx@^5.1.0: +acorn-jsx@^5.0.0, acorn-jsx@^5.2.0: version "5.2.0" resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.2.0.tgz#4c66069173d6fdd68ed85239fc256226182b2ebe" integrity sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ== acorn@^6.0.2: - version "6.4.0" - resolved "https://registry.npmjs.org/acorn/-/acorn-6.4.0.tgz#b659d2ffbafa24baf5db1cdbb2c94a983ecd2784" - integrity sha512-gac8OEcQ2Li1dxIEWGZzsp2BitJxwkwcOm0zHAJLcPJaVvm58FRnk6RkuLRpU1EujipU2ZFODv2P9DLMfnV8mw== + version "6.4.1" + resolved "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz#531e58ba3f51b9dacb9a6646ca4debf5b14ca474" + integrity sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA== -acorn@^7.1.0: - version "7.1.0" - resolved "https://registry.npmjs.org/acorn/-/acorn-7.1.0.tgz#949d36f2c292535da602283586c2477c57eb2d6c" - integrity sha512-kL5CuoXA/dgxlBbVrflsflzQ3PAas7RYZB52NOm/6839iVYJgKMJ3cQJD+t2i5+qFa8h3MDpEOJiS64E8JLnSQ== +acorn@^7.1.1: + version "7.1.1" + resolved "https://registry.npmjs.org/acorn/-/acorn-7.1.1.tgz#e35668de0b402f359de515c5482a1ab9f89a69bf" + integrity sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg== aggregate-error@^3.0.0: version "3.0.1" @@ -605,6 +603,13 @@ ansi-escapes@^3.0.0, ansi-escapes@^3.2.0: resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== +ansi-escapes@^4.2.1: + version "4.3.1" + resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz#a5c47cc43181f1f38ffd7076837700d395522a61" + integrity sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA== + dependencies: + type-fest "^0.11.0" + ansi-regex@^2.0.0: version "2.1.1" resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" @@ -653,13 +658,13 @@ anymatch@^1.3.0: micromatch "^2.1.5" normalize-path "^2.0.0" -anymatch@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" - integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== +anymatch@~3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" + integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg== dependencies: - micromatch "^3.1.4" - normalize-path "^2.1.1" + normalize-path "^3.0.0" + picomatch "^2.0.4" append-transform@^2.0.0: version "2.0.0" @@ -707,7 +712,7 @@ arr-union@^3.1.0: resolved "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= -array-includes@^3.0.3: +array-includes@^3.0.3, array-includes@^3.1.1: version "3.1.1" resolved "https://registry.npmjs.org/array-includes/-/array-includes-3.1.1.tgz#cdd67e6852bdf9c1215460786732255ed2459348" integrity sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ== @@ -726,6 +731,14 @@ array-unique@^0.3.2: resolved "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= +array.prototype.flat@^1.2.1: + version "1.2.3" + resolved "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.3.tgz#0de82b426b0318dbfdb940089e38b043d37f6c7b" + integrity sha512-gBlRZV0VSmfPIeWfuuy56XZMvbVfbEUnOXUvt3F/eUUUSyzlgLxhEX4YAEpxNAogRGehPSnfXyPtYyKAhkzQhQ== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + asn1@~0.2.3: version "0.2.4" resolved "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" @@ -753,7 +766,7 @@ astral-regex@^1.0.0: resolved "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== -async-each@^1.0.0, async-each@^1.0.1: +async-each@^1.0.0: version "1.0.3" resolved "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== @@ -1384,14 +1397,7 @@ balanced-match@^1.0.0: resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= -base-x@3.0.5: - version "3.0.5" - resolved "https://registry.npmjs.org/base-x/-/base-x-3.0.5.tgz#d3ada59afed05b921ab581ec3112e6444ba0795a" - integrity sha512-C3picSgzPSLE+jW3tcBzJoGwitOtazb5B+5YmAxZm2ybmTi9LNgAtDO/jjVEBZwHoXmDBZ9m/IELj3elJVRBcA== - dependencies: - safe-buffer "^5.0.1" - -base-x@^3.0.2, base-x@^3.0.6: +base-x@^3.0.2, base-x@^3.0.8: version "3.0.8" resolved "https://registry.npmjs.org/base-x/-/base-x-3.0.8.tgz#1e1106c2537f0162e8b52474a557ebb09000018d" integrity sha512-Rl/1AWP4J/zRrk54hhlxH4drNxPJXYUaKffODVI53/dAsV4t9fBxyxYKAVPU1XBHxYwOWP9h9H0hM2MVw4YfJA== @@ -1423,6 +1429,11 @@ binary-extensions@^1.0.0: resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== +binary-extensions@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz#23c0df14f6a88077f5f986c0d167ec03c3d5537c" + integrity sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow== + binary-search-tree@0.2.5: version "0.2.5" resolved "https://registry.npmjs.org/binary-search-tree/-/binary-search-tree-0.2.5.tgz#7dbb3b210fdca082450dad2334c304af39bdc784" @@ -1437,23 +1448,15 @@ bindings@^1.5.0: dependencies: file-uri-to-path "1.0.0" -bip39@^2.5.0: - version "2.6.0" - resolved "https://registry.npmjs.org/bip39/-/bip39-2.6.0.tgz#9e3a720b42ec8b3fbe4038f1e445317b6a99321c" - integrity sha512-RrnQRG2EgEoqO24ea+Q/fftuPUZLmrEM3qNhhGsA3PbaXaCW791LTzPuVyx/VprXQcTbPJ3K3UeTna8ZnVl2sg== +bip39@^3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/bip39/-/bip39-3.0.2.tgz#2baf42ff3071fc9ddd5103de92e8f80d9257ee32" + integrity sha512-J4E1r2N0tUylTKt07ibXvhpT2c5pyAFgvuA5q1H9uDy6dEGpjV8jmymh3MTYJDLCNbIVClSB9FbND49I6N24MQ== dependencies: + "@types/node" "11.11.6" create-hash "^1.1.0" pbkdf2 "^3.0.9" randombytes "^2.0.1" - safe-buffer "^5.0.1" - unorm "^1.3.3" - -bip66@^1.1.5: - version "1.1.5" - resolved "https://registry.npmjs.org/bip66/-/bip66-1.1.5.tgz#01fa8748785ca70955d5011217d1b3139969ca22" - integrity sha1-AfqHSHhcpwlV1QESF9GzE5lpyiI= - dependencies: - safe-buffer "^5.0.1" blakejs@^1.1.0: version "1.1.0" @@ -1465,21 +1468,16 @@ bluebird@^3.5.0, bluebird@^3.5.4: resolved "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== -bn.js@5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/bn.js/-/bn.js-5.0.0.tgz#5c3d398021b3ddb548c1296a16f857e908f35c70" - integrity sha512-bVwDX8AF+72fIUNuARelKAlQUNtPOfG2fRxorbVvFk4zpHbqLrPdOGfVg5vrKwVzLLePqPBiATaOZNELQzmS0A== +bn.js@5.1.1, bn.js@^5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/bn.js/-/bn.js-5.1.1.tgz#48efc4031a9c4041b9c99c6941d903463ab62eb5" + integrity sha512-IUTD/REb78Z2eodka1QZyyEk66pciRcP6Sroka0aI3tG/iwIdYLrBD62RsubR7vqdt3WyX8p4jxeatzmRSphtA== bn.js@^4.11.8, bn.js@^4.4.0: version "4.11.8" resolved "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" integrity sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA== -bn.js@^5.1.1: - version "5.1.1" - resolved "https://registry.npmjs.org/bn.js/-/bn.js-5.1.1.tgz#48efc4031a9c4041b9c99c6941d903463ab62eb5" - integrity sha512-IUTD/REb78Z2eodka1QZyyEk66pciRcP6Sroka0aI3tG/iwIdYLrBD62RsubR7vqdt3WyX8p4jxeatzmRSphtA== - bowser@^0.7.1: version "0.7.3" resolved "https://registry.npmjs.org/bowser/-/bowser-0.7.3.tgz#4fc0cb4e0e2bdd9b394df0d2038c32c2cc2712c8" @@ -1529,7 +1527,7 @@ braces@^1.8.2: preserve "^0.2.0" repeat-element "^1.1.2" -braces@^2.3.1, braces@^2.3.2: +braces@^2.3.1: version "2.3.2" resolved "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== @@ -1545,6 +1543,13 @@ braces@^2.3.1, braces@^2.3.2: split-string "^3.0.2" to-regex "^3.0.1" +braces@~3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + brorand@^1.0.1: version "1.1.0" resolved "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" @@ -1560,18 +1565,6 @@ browser-stdout@1.3.1: resolved "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== -browserify-aes@^1.0.6: - version "1.2.0" - resolved "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" - integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== - dependencies: - buffer-xor "^1.0.3" - cipher-base "^1.0.0" - create-hash "^1.1.0" - evp_bytestokey "^1.0.3" - inherits "^2.0.1" - safe-buffer "^5.0.1" - browserslist@^3.2.6: version "3.2.8" resolved "https://registry.npmjs.org/browserslist/-/browserslist-3.2.8.tgz#b0005361d6471f0f5952797a76fc985f1f978fc6" @@ -1592,11 +1585,6 @@ buffer-from@^1.0.0: resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== -buffer-xor@^1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" - integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= - cache-base@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" @@ -1650,9 +1638,9 @@ camelcase@^5.0.0, camelcase@^5.3.1: integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== caniuse-lite@^1.0.30000844: - version "1.0.30001030" - resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001030.tgz#78076c4c6d67d3e41d6eb9399853fb27fe6e44ee" - integrity sha512-QGK0W4Ft/Ac+zTjEiRJfwDNATvS3fodDczBXrH42784kcfqcDKpEPfN08N0HQjrAp8He/Jw8QiSS9QRn7XAbUw== + version "1.0.30001035" + resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001035.tgz#2bb53b8aa4716b2ed08e088d4dc816a5fe089a1e" + integrity sha512-C1ZxgkuA4/bUEdMbU5WrGY4+UhMFFiXrgNAfxiMIqWgFTWfv/xsZCS2xEHT2LMq7xAZfuAnu6mcqyDl0ZR6wLQ== capture-stack-trace@^1.0.0: version "1.0.1" @@ -1739,6 +1727,21 @@ check-error@^1.0.2: resolved "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82" integrity sha1-V00xLt2Iu13YkS6Sht1sCu1KrII= +chokidar@3.3.0: + version "3.3.0" + resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.3.0.tgz#12c0714668c55800f659e262d4962a97faf554a6" + integrity sha512-dGmKLDdT3Gdl7fBUe8XK+gAtGmzy5Fn0XkkWQuYxGIgWVPPse2CxFA5mtrlD0TOHaHjEUqkWNyP1XdHoJES/4A== + dependencies: + anymatch "~3.1.1" + braces "~3.0.2" + glob-parent "~5.1.0" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.2.0" + optionalDependencies: + fsevents "~2.1.1" + chokidar@^1.4.3, chokidar@^1.6.1: version "1.7.0" resolved "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" @@ -1755,24 +1758,20 @@ chokidar@^1.4.3, chokidar@^1.6.1: optionalDependencies: fsevents "^1.0.0" -chokidar@^2.1.5: - version "2.1.8" - resolved "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" - integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== - dependencies: - anymatch "^2.0.0" - async-each "^1.0.1" - braces "^2.3.2" - glob-parent "^3.1.0" - inherits "^2.0.3" - is-binary-path "^1.0.0" - is-glob "^4.0.0" - normalize-path "^3.0.0" - path-is-absolute "^1.0.0" - readdirp "^2.2.1" - upath "^1.1.1" +chokidar@^3.2.2: + version "3.3.1" + resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.3.1.tgz#c84e5b3d18d9a4d77558fef466b1bf16bbeb3450" + integrity sha512-4QYCEWOcK3OJrxwvyyAOxFuhpvOVCYkr33LPfFNBjAD/w3sEzWsp2BUOkI4l9bHvWioAd0rc6NlHUOEaWkTeqg== + dependencies: + anymatch "~3.1.1" + braces "~3.0.2" + glob-parent "~5.1.0" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.3.0" optionalDependencies: - fsevents "^1.2.7" + fsevents "~2.1.2" ci-info@^1.5.0: version "1.6.0" @@ -1784,7 +1783,7 @@ ci-info@^2.0.0: resolved "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== -cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: +cipher-base@^1.0.1, cipher-base@^1.0.3: version "1.0.4" resolved "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== @@ -1829,6 +1828,13 @@ cli-cursor@^2.1.0: dependencies: restore-cursor "^2.0.0" +cli-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" + integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== + dependencies: + restore-cursor "^3.1.0" + cli-width@^2.0.0: version "2.2.0" resolved "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" @@ -1933,17 +1939,18 @@ configstore@^3.0.0: write-file-atomic "^2.0.0" xdg-basedir "^3.0.0" -confmgr@^1: - version "1.0.0" - resolved "https://registry.npmjs.org/confmgr/-/confmgr-1.0.0.tgz#ea8082dfc7750b16722e3f465d947d05de015e08" - integrity sha512-AVyjSPX3j91/zYmkNSPO9tWWRhl8Hf8coz8xp/KyHqyQn438aqUCeDt8Q8AMT5Vn4dXdY2jporvwnLi5cbn1OQ== +confmgr@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/confmgr/-/confmgr-1.0.3.tgz#be3ad80fb9e71fe80d7b122704aaedbdd6f1ff3b" + integrity sha512-xugxc0MJWU7hiHaUH6KE+k1vBFEwW9NuY/gKWVR2rCCXDPTaR/tGIyWTWe1GQ+SbpQNxq5glTpdegmiKaN9LOA== dependencies: "@babel/runtime" "7.8.7" + "@types/yaml" "^1.2.0" chalk "^3.0.0" dotenv "8.2.0" ts-node "8.6.2" typescript "^3.8.3" - yaml "^1.8.0" + yaml "^1.8.2" contains-path@^0.1.0: version "0.1.0" @@ -1972,6 +1979,11 @@ copy-descriptor@^0.1.0: resolved "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= +core-js-pure@^3.0.0: + version "3.6.4" + resolved "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.6.4.tgz#4bf1ba866e25814f149d4e9aaa08c36173506e3a" + integrity sha512-epIhRLkXdgv32xIUFaaAry2wdxZYBi6bgM7cB136dzzXXa+dFyRLTZeLUJxnd8ShrmyVXBub63n2NHo2JAt8Cw== + core-js@^2.4.0, core-js@^2.5.0: version "2.6.11" resolved "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz#38831469f9922bded8ee21c9dc46985e0399308c" @@ -1989,7 +2001,7 @@ create-error-class@^3.0.0: dependencies: capture-stack-trace "^1.0.0" -create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: +create-hash@^1.1.0, create-hash@^1.1.2: version "1.2.0" resolved "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== @@ -2071,7 +2083,7 @@ debug-log@^1.0.0: resolved "https://registry.npmjs.org/debug-log/-/debug-log-1.0.1.tgz#2307632d4c04382b8df8a32f70b895046d52745f" integrity sha1-IwdjLUwEOCuN+KMvcLiVBG1SdF8= -debug@3.2.6, debug@^3.1.0: +debug@3.2.6, debug@^3.1.0, debug@^3.2.6: version "3.2.6" resolved "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== @@ -2235,25 +2247,11 @@ dot-prop@^4.1.0: dependencies: is-obj "^1.0.0" -dotenv@8.1.0: - version "8.1.0" - resolved "https://registry.npmjs.org/dotenv/-/dotenv-8.1.0.tgz#d811e178652bfb8a1e593c6dd704ec7e90d85ea2" - integrity sha512-GUE3gqcDCaMltj2++g6bRQ5rBJWtkWTmqmD0fo1RnnMuUqHNCt2oTPeDnS9n6fKYvlhn7AeBkb38lymBtWBQdA== - -dotenv@8.2.0: +dotenv@*, dotenv@8.2.0: version "8.2.0" resolved "https://registry.npmjs.org/dotenv/-/dotenv-8.2.0.tgz#97e619259ada750eea3e4ea3e26bceea5424b16a" integrity sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw== -drbg.js@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/drbg.js/-/drbg.js-1.0.1.tgz#3e36b6c42b37043823cdbc332d58f31e2445480b" - integrity sha1-Pja2xCs3BDgjzbwzLVjzHiRFSAs= - dependencies: - browserify-aes "^1.0.6" - create-hash "^1.1.2" - create-hmac "^1.1.4" - duplexer3@^0.1.4: version "0.1.4" resolved "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" @@ -2268,9 +2266,9 @@ ecc-jsbn@~0.1.1: safer-buffer "^2.1.0" electron-to-chromium@^1.3.47: - version "1.3.362" - resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.362.tgz#9ed33f9d0673888d6a2614347b4b63b490009408" - integrity sha512-xdU5VCoZyMPMOWtCaMgbr48OwWZHrMLbGnAOlEqibXiIGsb4kiCGWEHK5NOghcVLdBVIbr/BW+yuKxVuGTtzEg== + version "1.3.378" + resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.378.tgz#18c572cbb54bf5b2769855597cdc7511c02b481f" + integrity sha512-nBp/AfhaVIOnfwgL1CZxt80IcqWcyYXiX6v5gflAksxy+SzBVz7A7UWR1Nos92c9ofXW74V9PoapzRb0jJfYXw== elliptic@^6.5.2: version "6.5.2" @@ -2391,10 +2389,10 @@ escape-string-regexp@^2.0.0: resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== -eslint-config-prettier@6.1.0: - version "6.1.0" - resolved "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-6.1.0.tgz#e6f678ba367fbd1273998d5510f76f004e9dce7b" - integrity sha512-k9fny9sPjIBQ2ftFTesJV21Rg4R/7a7t7LCtZVrYQiHEp8Nnuk3EGaDmsKSAnsPj0BYcgB2zxzHa2NTkIxcOLg== +eslint-config-prettier@6.10.0: + version "6.10.0" + resolved "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-6.10.0.tgz#7b15e303bf9c956875c948f6b21500e48ded6a7f" + integrity sha512-AtndijGte1rPILInUdHjvKEGbIV06NuvPrqlIEaEaWtbtvJh464mDeyGMdZEQMsGvC0ZVkiex1fSNcC4HAbRGg== dependencies: get-stdin "^6.0.0" @@ -2418,11 +2416,6 @@ eslint-config-standard@12.0.0: resolved "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-12.0.0.tgz#638b4c65db0bd5a41319f96bba1f15ddad2107d9" integrity sha512-COUz8FnXhqFitYj4DTqHzidjIL/t4mumGZto5c7DrBpvWoie+Sn3P4sLEzUGeYhRElWuFEf8K1S1EfvD1vixCQ== -eslint-config-standard@14.0.0: - version "14.0.0" - resolved "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-14.0.0.tgz#1de7bf5af37542dc6eef879ab7eb5e5e0f830747" - integrity sha512-bV6e2LFvJEetrLjVAy4KWPOUsIhPWr040c649MigTPR6yUtaGuOt6CEAyNeez2lRiC+2+vjGWa02byjs25EB3A== - eslint-config-standard@14.1.0: version "14.1.0" resolved "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-14.1.0.tgz#b23da2b76fe5a2eba668374f246454e7058f15d4" @@ -2441,7 +2434,7 @@ eslint-import-resolver-node@^0.3.1, eslint-import-resolver-node@^0.3.2: debug "^2.6.9" resolve "^1.13.1" -eslint-module-utils@^2.2.0, eslint-module-utils@^2.4.0: +eslint-module-utils@^2.2.0, eslint-module-utils@^2.4.0, eslint-module-utils@^2.4.1: version "2.5.2" resolved "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.5.2.tgz#7878f7504824e1b857dd2505b59a8e5eda26a708" integrity sha512-LGScZ/JSlqGKiT8OC+cYRxseMjyqt6QO54nl281CK93unD89ijSeRV6An8Ci/2nvWVKe8K/Tqdm75RQoIOCr+Q== @@ -2449,7 +2442,7 @@ eslint-module-utils@^2.2.0, eslint-module-utils@^2.4.0: debug "^2.6.9" pkg-dir "^2.0.0" -eslint-plugin-es@^1.3.1, eslint-plugin-es@^1.4.0, eslint-plugin-es@^1.4.1: +eslint-plugin-es@^1.3.1, eslint-plugin-es@^1.4.0: version "1.4.1" resolved "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-1.4.1.tgz#12acae0f4953e76ba444bfd1b2271081ac620998" integrity sha512-5fa/gR2yR3NxQf+UXkeLeP8FBBl6tSgdrAz1+cF84v1FMM4twGwQoqTnn+QxFLcPOrF4pdKEJKDB/q9GoyJrCA== @@ -2465,22 +2458,31 @@ eslint-plugin-es@^2.0.0: eslint-utils "^1.4.2" regexpp "^3.0.0" -eslint-plugin-import@2.18.2, eslint-plugin-import@~2.18.0: - version "2.18.2" - resolved "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.18.2.tgz#02f1180b90b077b33d447a17a2326ceb400aceb6" - integrity sha512-5ohpsHAiUBRNaBWAF08izwUGlbrJoJJ+W9/TBwsGoR1MnlgfwMIKrFeSjWbt6moabiXW9xNvtFz+97KHRfI4HQ== +eslint-plugin-es@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-3.0.0.tgz#98cb1bc8ab0aa807977855e11ad9d1c9422d014b" + integrity sha512-6/Jb/J/ZvSebydwbBJO1R9E5ky7YeElfK56Veh7e4QGFHCXoIXGH9HhVz+ibJLM3XJ1XjP+T7rKBLUa/Y7eIng== + dependencies: + eslint-utils "^2.0.0" + regexpp "^3.0.0" + +eslint-plugin-import@2.20.1: + version "2.20.1" + resolved "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.20.1.tgz#802423196dcb11d9ce8435a5fc02a6d3b46939b3" + integrity sha512-qQHgFOTjguR+LnYRoToeZWT62XM55MBVXObHM6SKFd1VzDcX/vqT1kAz8ssqigh5eMj8qXcRoXXGZpPP6RfdCw== dependencies: array-includes "^3.0.3" + array.prototype.flat "^1.2.1" contains-path "^0.1.0" debug "^2.6.9" doctrine "1.5.0" eslint-import-resolver-node "^0.3.2" - eslint-module-utils "^2.4.0" + eslint-module-utils "^2.4.1" has "^1.0.3" minimatch "^3.0.4" object.values "^1.1.0" read-pkg-up "^2.0.0" - resolve "^1.11.0" + resolve "^1.12.0" eslint-plugin-import@~2.14.0: version "2.14.0" @@ -2498,13 +2500,30 @@ eslint-plugin-import@~2.14.0: read-pkg-up "^2.0.0" resolve "^1.6.0" -eslint-plugin-node@^9.1.0: - version "9.2.0" - resolved "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-9.2.0.tgz#b1911f111002d366c5954a6d96d3cd5bf2a3036a" - integrity sha512-2abNmzAH/JpxI4gEOwd6K8wZIodK3BmHbTxz4s79OIYwwIt2gkpEXlAouJXu4H1c9ySTnRso0tsuthSOZbUMlA== +eslint-plugin-import@~2.18.0: + version "2.18.2" + resolved "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.18.2.tgz#02f1180b90b077b33d447a17a2326ceb400aceb6" + integrity sha512-5ohpsHAiUBRNaBWAF08izwUGlbrJoJJ+W9/TBwsGoR1MnlgfwMIKrFeSjWbt6moabiXW9xNvtFz+97KHRfI4HQ== dependencies: - eslint-plugin-es "^1.4.1" - eslint-utils "^1.4.2" + array-includes "^3.0.3" + contains-path "^0.1.0" + debug "^2.6.9" + doctrine "1.5.0" + eslint-import-resolver-node "^0.3.2" + eslint-module-utils "^2.4.0" + has "^1.0.3" + minimatch "^3.0.4" + object.values "^1.1.0" + read-pkg-up "^2.0.0" + resolve "^1.11.0" + +eslint-plugin-node@^11.0.00: + version "11.0.0" + resolved "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-11.0.0.tgz#365944bb0804c5d1d501182a9bc41a0ffefed726" + integrity sha512-chUs/NVID+sknFiJzxoN9lM7uKSOEta8GC8365hw1nDfwIPIjjpRSwwPvQanWv8dt/pDe9EV4anmVSwdiSndNg== + dependencies: + eslint-plugin-es "^3.0.0" + eslint-utils "^2.0.0" ignore "^5.1.1" minimatch "^3.0.4" resolve "^1.10.1" @@ -2556,20 +2575,23 @@ eslint-plugin-promise@~4.0.0: resolved "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-4.0.1.tgz#2d074b653f35a23d1ba89d8e976a985117d1c6a2" integrity sha512-Si16O0+Hqz1gDHsys6RtFRrW7cCTB6P7p3OJmKp3Y3dxpQE2qwOA7d3xnV+0mBmrPoi0RBnxlCKvqu70te6wjg== -eslint-plugin-react@7.14.3, eslint-plugin-react@~7.14.2: - version "7.14.3" - resolved "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.14.3.tgz#911030dd7e98ba49e1b2208599571846a66bdf13" - integrity sha512-EzdyyBWC4Uz2hPYBiEJrKCUi2Fn+BJ9B/pJQcjw5X+x/H2Nm59S4MJIvL4O5NEE0+WbnQwEBxWY03oUk+Bc3FA== +eslint-plugin-react@7.19.0: + version "7.19.0" + resolved "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.19.0.tgz#6d08f9673628aa69c5559d33489e855d83551666" + integrity sha512-SPT8j72CGuAP+JFbT0sJHOB80TX/pu44gQ4vXH/cq+hQTiY2PuZ6IHkqXJV6x1b28GDdo1lbInjKUrrdUf0LOQ== dependencies: - array-includes "^3.0.3" + array-includes "^3.1.1" doctrine "^2.1.0" has "^1.0.3" - jsx-ast-utils "^2.1.0" - object.entries "^1.1.0" - object.fromentries "^2.0.0" - object.values "^1.1.0" + jsx-ast-utils "^2.2.3" + object.entries "^1.1.1" + object.fromentries "^2.0.2" + object.values "^1.1.1" prop-types "^15.7.2" - resolve "^1.10.1" + resolve "^1.15.1" + semver "^6.3.0" + string.prototype.matchall "^4.0.2" + xregexp "^4.3.0" eslint-plugin-react@~7.11.1: version "7.11.1" @@ -2582,6 +2604,21 @@ eslint-plugin-react@~7.11.1: jsx-ast-utils "^2.0.1" prop-types "^15.6.2" +eslint-plugin-react@~7.14.2: + version "7.14.3" + resolved "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.14.3.tgz#911030dd7e98ba49e1b2208599571846a66bdf13" + integrity sha512-EzdyyBWC4Uz2hPYBiEJrKCUi2Fn+BJ9B/pJQcjw5X+x/H2Nm59S4MJIvL4O5NEE0+WbnQwEBxWY03oUk+Bc3FA== + dependencies: + array-includes "^3.0.3" + doctrine "^2.1.0" + has "^1.0.3" + jsx-ast-utils "^2.1.0" + object.entries "^1.1.0" + object.fromentries "^2.0.0" + object.values "^1.1.0" + prop-types "^15.7.2" + resolve "^1.10.1" + eslint-plugin-standard@4.0.1, eslint-plugin-standard@~4.0.0: version "4.0.1" resolved "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-4.0.1.tgz#ff0519f7ffaff114f76d1bd7c3996eef0f6e20b4" @@ -2611,22 +2648,29 @@ eslint-scope@^5.0.0: esrecurse "^4.1.0" estraverse "^4.1.1" -eslint-utils@^1.3.1, eslint-utils@^1.4.0, eslint-utils@^1.4.2: +eslint-utils@^1.3.1, eslint-utils@^1.4.2, eslint-utils@^1.4.3: version "1.4.3" resolved "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz#74fec7c54d0776b6f67e0251040b5806564e981f" integrity sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q== dependencies: eslint-visitor-keys "^1.1.0" +eslint-utils@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.0.0.tgz#7be1cc70f27a72a76cd14aa698bcabed6890e1cd" + integrity sha512-0HCPuJv+7Wv1bACm8y5/ECVfYdfsAm9xmVb7saeFlxjPYALefjhbYoCkBjPdPzGH8wWyTpAez82Fh3VKYEZ8OA== + dependencies: + eslint-visitor-keys "^1.1.0" + eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0: version "1.1.0" resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz#e2a82cea84ff246ad6fb57f9bde5b46621459ec2" integrity sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A== -eslint@6.2.0: - version "6.2.0" - resolved "https://registry.npmjs.org/eslint/-/eslint-6.2.0.tgz#4c42c20e3fc03f28db25f34ccba621a9a47e8b56" - integrity sha512-sS0SZwm5UAoI83F+cgdomz0cBNPs+AnRvEboNYeWvrZ8UcDHCu/5muocwoDL2TkHq9skkP0GvZjmwI8HG7S3sw== +eslint@6.8.0, eslint@~6.8.0: + version "6.8.0" + resolved "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz#62262d6729739f9275723824302fb227c8c93ffb" + integrity sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig== dependencies: "@babel/code-frame" "^7.0.0" ajv "^6.10.0" @@ -2635,19 +2679,19 @@ eslint@6.2.0: debug "^4.0.1" doctrine "^3.0.0" eslint-scope "^5.0.0" - eslint-utils "^1.4.0" + eslint-utils "^1.4.3" eslint-visitor-keys "^1.1.0" - espree "^6.1.0" + espree "^6.1.2" esquery "^1.0.1" esutils "^2.0.2" file-entry-cache "^5.0.1" functional-red-black-tree "^1.0.1" glob-parent "^5.0.0" - globals "^11.7.0" + globals "^12.1.0" ignore "^4.0.6" import-fresh "^3.0.0" imurmurhash "^0.1.4" - inquirer "^6.4.1" + inquirer "^7.0.0" is-glob "^4.0.0" js-yaml "^3.13.1" json-stable-stringify-without-jsonify "^1.0.1" @@ -2656,7 +2700,7 @@ eslint@6.2.0: minimatch "^3.0.4" mkdirp "^0.5.1" natural-compare "^1.4.0" - optionator "^0.8.2" + optionator "^0.8.3" progress "^2.0.0" regexpp "^2.0.1" semver "^6.1.2" @@ -2805,13 +2849,13 @@ espree@^4.0.0: acorn-jsx "^5.0.0" eslint-visitor-keys "^1.0.0" -espree@^6.0.0, espree@^6.1.0, espree@^6.1.1: - version "6.1.2" - resolved "https://registry.npmjs.org/espree/-/espree-6.1.2.tgz#6c272650932b4f91c3714e5e7b5f5e2ecf47262d" - integrity sha512-2iUPuuPP+yW1PZaMSDM9eyVf8D5P0Hi8h83YtZ5bPc/zHYjII5khoixIUTMO794NOY8F/ThF1Bo8ncZILarUTA== +espree@^6.0.0, espree@^6.1.1, espree@^6.1.2: + version "6.2.1" + resolved "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz#77fc72e1fd744a2052c20f38a5b575832e82734a" + integrity sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw== dependencies: - acorn "^7.1.0" - acorn-jsx "^5.1.0" + acorn "^7.1.1" + acorn-jsx "^5.2.0" eslint-visitor-keys "^1.1.0" esprima@^4.0.0: @@ -2856,14 +2900,6 @@ eventemitter3@^4.0.0: resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.0.tgz#d65176163887ee59f386d64c82610b696a4a74eb" integrity sha512-qerSRB0p+UDEssxTtm6EDKcE7W4OaoisfIMl4CngyEhjpYglocpNg6UEqCvemdGhosAsg4sO2dXJOdyBifPGCg== -evp_bytestokey@^1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" - integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== - dependencies: - md5.js "^1.3.4" - safe-buffer "^5.1.1" - execa@^0.7.0: version "0.7.0" resolved "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" @@ -3009,6 +3045,13 @@ figures@^2.0.0: dependencies: escape-string-regexp "^1.0.5" +figures@^3.0.0: + version "3.2.0" + resolved "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" + integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== + dependencies: + escape-string-regexp "^1.0.5" + file-entry-cache@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz#c392990c3e684783d838b8c84a45d8a048458361" @@ -3055,10 +3098,17 @@ fill-range@^4.0.0: repeat-string "^1.6.1" to-regex-range "^2.1.0" +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + find-cache-dir@^3.2.0: - version "3.3.0" - resolved "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.0.tgz#4d74ed1fe9ef1731467ca24378e8f8f5c8b6ed11" - integrity sha512-PtXtQb7IrD8O+h6Cq1dbpJH5NzD8+9keN1zZ0YlpDzl1PwXEJEBj6u1Xa92t1Hwluoozd9TNKul5Hi2iqpsWwg== + version "3.3.1" + resolved "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz#89b33fad4a4670daa94f855f7fbe31d6d84fe880" + integrity sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ== dependencies: commondir "^1.0.1" make-dir "^3.0.2" @@ -3210,7 +3260,7 @@ fs.realpath@^1.0.0: resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= -fsevents@^1.0.0, fsevents@^1.2.7: +fsevents@^1.0.0: version "1.2.11" resolved "https://registry.npmjs.org/fsevents/-/fsevents-1.2.11.tgz#67bf57f4758f02ede88fb2a1712fef4d15358be3" integrity sha512-+ux3lx6peh0BpvY0JebGyZoiR4D+oYzdPZMKJwkZ+sFkNJzpL7tXc/wehS49gUAxg3tmMHPHZkA8JU2rhhgDHw== @@ -3218,6 +3268,11 @@ fsevents@^1.0.0, fsevents@^1.2.7: bindings "^1.5.0" nan "^2.12.1" +fsevents@~2.1.1, fsevents@~2.1.2: + version "2.1.2" + resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.1.2.tgz#4c0a1fb34bc68e543b4b82a9ec392bfbda840805" + integrity sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA== + function-bind@^1.1.1: version "1.1.1" resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" @@ -3306,15 +3361,7 @@ glob-parent@^2.0.0: dependencies: is-glob "^2.0.0" -glob-parent@^3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" - integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= - dependencies: - is-glob "^3.1.0" - path-dirname "^1.0.0" - -glob-parent@^5.0.0: +glob-parent@^5.0.0, glob-parent@~5.1.0: version "5.1.0" resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.0.tgz#5f4c1d1e748d30cd73ad2944b3577a81b081e8c2" integrity sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw== @@ -3377,6 +3424,13 @@ globals@^11.1.0, globals@^11.7.0: resolved "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== +globals@^12.1.0: + version "12.4.0" + resolved "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz#a18813576a41b00a24a97e7f815918c2e19925f8" + integrity sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg== + dependencies: + type-fest "^0.8.1" + globals@^9.18.0: version "9.18.0" resolved "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" @@ -3536,9 +3590,9 @@ homedir-polyfill@^1.0.1: parse-passwd "^1.0.0" hosted-git-info@^2.1.4: - version "2.8.7" - resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.7.tgz#4d2e0d5248e1cfabc984b0f6a6d75fe36e679511" - integrity sha512-ChkjQtKJ3GI6SsI4O5jwr8q8EPrWCnxuc4Tbx+vRI5x6mDOpjKKltNo1lRlszw3xwgTOSns1ZRBiMmmwpcvLxg== + version "2.8.8" + resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488" + integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg== html-escaper@^2.0.0: version "2.0.0" @@ -3670,6 +3724,34 @@ inquirer@^6.4.1: strip-ansi "^5.1.0" through "^2.3.6" +inquirer@^7.0.0: + version "7.1.0" + resolved "https://registry.npmjs.org/inquirer/-/inquirer-7.1.0.tgz#1298a01859883e17c7264b82870ae1034f92dd29" + integrity sha512-5fJMWEmikSYu0nv/flMc475MhGbB7TSPd/2IpFV4I4rMklboCH2rQjYY5kKiYGHqUF9gvaambupcJFFG9dvReg== + dependencies: + ansi-escapes "^4.2.1" + chalk "^3.0.0" + 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.4.0" + rxjs "^6.5.3" + string-width "^4.1.0" + strip-ansi "^6.0.0" + through "^2.3.6" + +internal-slot@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.2.tgz#9c2e9fb3cd8e5e4256c6f45fe310067fcfa378a3" + integrity sha512-2cQNfwhAfJIkU4KZPkDI+Gj5yNNnbqi40W9Gge6dfnk4TocEVm00B3bdiL+JINrbGJil2TeHvM4rETGzk/f/0g== + dependencies: + es-abstract "^1.17.0-next.1" + has "^1.0.3" + side-channel "^1.0.2" + invariant@^2.2.2: version "2.2.4" resolved "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" @@ -3713,6 +3795,13 @@ is-binary-path@^1.0.0: dependencies: binary-extensions "^1.0.0" +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + is-buffer@^1.1.5: version "1.1.6" resolved "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" @@ -3801,7 +3890,7 @@ is-extglob@^1.0.0: resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" integrity sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA= -is-extglob@^2.1.0, is-extglob@^2.1.1: +is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= @@ -3828,14 +3917,7 @@ is-glob@^2.0.0, is-glob@^2.0.1: dependencies: is-extglob "^1.0.0" -is-glob@^3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" - integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= - dependencies: - is-extglob "^2.1.0" - -is-glob@^4.0.0, is-glob@^4.0.1: +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: version "4.0.1" resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== @@ -3881,6 +3963,11 @@ is-number@^4.0.0: resolved "https://registry.npmjs.org/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.npmjs.org/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.npmjs.org/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" @@ -4184,11 +4271,11 @@ json5@^0.5.1: integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE= json5@^2.1.0: - version "2.1.1" - resolved "https://registry.npmjs.org/json5/-/json5-2.1.1.tgz#81b6cb04e9ba496f1c7005d07b4368a2638f90b6" - integrity sha512-l+3HXD0GEI3huGq1njuqtzYK8OYJyXMkOLtQ53pjWh89tvWS2h6l+1zMkYWqlb57+SiQodKZyvMEFb2X+KrFhQ== + version "2.1.2" + resolved "https://registry.npmjs.org/json5/-/json5-2.1.2.tgz#43ef1f0af9835dd624751a6b7fa48874fb2d608e" + integrity sha512-MoUOQ4WdiN3yxhm7NEVJSJrieAo5hNSLQ5sj05OTRHPL9HOBy8u4Bu88jsC1jvqAdN+E1bJmsUcZH+1HQxliqQ== dependencies: - minimist "^1.2.0" + minimist "^1.2.5" jsprim@^1.2.2: version "1.4.1" @@ -4200,7 +4287,7 @@ jsprim@^1.2.2: json-schema "0.2.3" verror "1.10.0" -jsx-ast-utils@^2.0.1, jsx-ast-utils@^2.1.0: +jsx-ast-utils@^2.0.1, jsx-ast-utils@^2.1.0, jsx-ast-utils@^2.2.3: version "2.2.3" resolved "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.2.3.tgz#8a9364e402448a3ce7f14d357738310d9248054f" integrity sha512-EdIHFMm+1BPynpKOpdPqiOsvnIrInRGJD7bzPZdPkjitQEqpdpUuFpq4T0npZFKTiB3RhWFdGN+oqOJIdhDhQA== @@ -4354,11 +4441,6 @@ lodash.isstring@^4.0.1: resolved "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451" integrity sha1-1SfftUVuynzJu5XV2ur4i6VKVFE= -lodash.unescape@4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/lodash.unescape/-/lodash.unescape-4.0.1.tgz#bf2249886ce514cda112fae9218cdc065211fc9c" - integrity sha1-vyJJiGzlFM2hEvrpIYzcBlIR/Jw= - lodash@^3.10.1: version "3.10.1" resolved "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6" @@ -4376,6 +4458,13 @@ log-symbols@2.2.0: dependencies: chalk "^2.0.1" +log-symbols@3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz#f3a08516a5dea893336a7dee14d18a1cfdab77c4" + integrity sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ== + dependencies: + chalk "^2.4.2" + loglevel@1.6.1: version "1.6.1" resolved "https://registry.npmjs.org/loglevel/-/loglevel-1.6.1.tgz#e0fc95133b6ef276cdc8887cdaf24aa6f156f8fa" @@ -4546,7 +4635,7 @@ micromatch@^2.1.5: parse-glob "^3.0.4" regex-cache "^0.4.2" -micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4: +micromatch@^3.0.4, micromatch@^3.1.10: version "3.1.10" resolved "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== @@ -4587,6 +4676,11 @@ mimic-fn@^1.0.0: resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" @@ -4609,15 +4703,15 @@ minimist@0.0.8: resolved "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= -minimist@^1.1.0, minimist@^1.1.1, minimist@^1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" - integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= +minimist@^1.1.0, minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.5: + version "1.2.5" + resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" + integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== -minimongo@6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/minimongo/-/minimongo-6.0.0.tgz#39af86a394646b87185ea15e91dc5801fbf8090c" - integrity sha512-fkjRdpYZxc/9nFhSOFi8v+TMXgr/psBWv8ywJlkepHOaV+TsIKT9L7OhjaKUuROvr43+XbcQ1bNDTqmqmiILmQ== +minimongo@6.5.0: + version "6.5.0" + resolved "https://registry.npmjs.org/minimongo/-/minimongo-6.5.0.tgz#f07a86a0526cf1f5ccc5183e047e7ced470fd810" + integrity sha512-0teaFzV19bEDD7pDZ3qgc6AHi/9Qmr3MNnocRnDxSSQu/9946PZwC9oN556lBX5+WmGry4Qn9UPgSs+wyibQuQ== dependencies: "@turf/boolean-crosses" "^6.0.1" "@turf/boolean-point-in-polygon" "^6.0.1" @@ -4638,13 +4732,20 @@ mixin-deep@^1.2.0: for-in "^1.0.2" is-extendable "^1.0.1" -mkdirp@0.5.1, mkdirp@^0.5.1, mkdirp@~0.5.1: +mkdirp@0.5.1: version "0.5.1" resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= dependencies: minimist "0.0.8" +mkdirp@0.5.3, mkdirp@^0.5.1, mkdirp@~0.5.1: + version "0.5.3" + resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.3.tgz#5a514b7179259287952881e94410ec5465659f8c" + integrity sha512-P+2gwrFqx8lhew375MQHHeTlY8AuOJSrGf0R5ddkEndUkmwpgUob/vQuBD1V22/Cw1/lJr4x+EjllSezBThzBg== + dependencies: + minimist "^1.2.5" + mocha@^6.1.4: version "6.2.2" resolved "https://registry.npmjs.org/mocha/-/mocha-6.2.2.tgz#5d8987e28940caf8957a7d7664b910dc5b2fea20" @@ -4674,6 +4775,36 @@ mocha@^6.1.4: yargs-parser "13.1.1" yargs-unparser "1.6.0" +mocha@^7.1.1: + version "7.1.1" + resolved "https://registry.npmjs.org/mocha/-/mocha-7.1.1.tgz#89fbb30d09429845b1bb893a830bf5771049a441" + integrity sha512-3qQsu3ijNS3GkWcccT5Zw0hf/rWvu1fTN9sPvEd81hlwsr30GX2GcDSSoBxo24IR8FelmrAydGC6/1J5QQP4WA== + dependencies: + ansi-colors "3.2.3" + browser-stdout "1.3.1" + chokidar "3.3.0" + debug "3.2.6" + diff "3.5.0" + escape-string-regexp "1.0.5" + find-up "3.0.0" + glob "7.1.3" + growl "1.10.5" + he "1.2.0" + js-yaml "3.13.1" + log-symbols "3.0.0" + minimatch "3.0.4" + mkdirp "0.5.3" + ms "2.1.1" + node-environment-flags "1.0.6" + object.assign "4.1.0" + strip-json-comments "2.0.1" + supports-color "6.0.0" + which "1.3.1" + wide-align "1.1.3" + yargs "13.3.2" + yargs-parser "13.1.2" + yargs-unparser "1.6.0" + moment@^2.24.0: version "2.24.0" resolved "https://registry.npmjs.org/moment/-/moment-2.24.0.tgz#0d055d53f5052aa653c9f6eb68bb5d12bf5c2b5b" @@ -4699,6 +4830,11 @@ mute-stream@0.0.7: resolved "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= +mute-stream@0.0.8: + version "0.0.8" + resolved "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" + integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== + nan@^2.12.1, nan@^2.14.0: version "2.14.0" resolved "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c" @@ -4760,6 +4896,14 @@ node-environment-flags@1.0.5: object.getownpropertydescriptors "^2.0.3" semver "^5.7.0" +node-environment-flags@1.0.6: + version "1.0.6" + resolved "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.6.tgz#a30ac13621f6f7d674260a54dede048c3982c088" + integrity sha512-5Evy2epuL+6TM0lCQGpFIj6KwiEsGh1SrHUhTbNX+sLbBtjidPZFAnVK9y5yU1+h//RitLbRHTIMyxQPtxMdHw== + dependencies: + object.getownpropertydescriptors "^2.0.3" + semver "^5.7.0" + node-fetch@^1.0.1: version "1.7.3" resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef" @@ -4775,18 +4919,18 @@ node-preload@^0.2.0: dependencies: process-on-spawn "^1.0.0" -nodemon@1.19.1: - version "1.19.1" - resolved "https://registry.npmjs.org/nodemon/-/nodemon-1.19.1.tgz#576f0aad0f863aabf8c48517f6192ff987cd5071" - integrity sha512-/DXLzd/GhiaDXXbGId5BzxP1GlsqtMGM9zTmkWrgXtSqjKmGSbLicM/oAy4FR0YWm14jCHRwnR31AHS2dYFHrg== +nodemon@2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/nodemon/-/nodemon-2.0.2.tgz#9c7efeaaf9b8259295a97e5d4585ba8f0cbe50b0" + integrity sha512-GWhYPMfde2+M0FsHnggIHXTqPDHXia32HRhh6H0d75Mt9FKUoCBvumNHr7LdrpPBTKxsWmIEOjoN+P4IU6Hcaw== dependencies: - chokidar "^2.1.5" - debug "^3.1.0" + chokidar "^3.2.2" + debug "^3.2.6" ignore-by-default "^1.0.1" minimatch "^3.0.4" - pstree.remy "^1.1.6" - semver "^5.5.0" - supports-color "^5.2.0" + pstree.remy "^1.1.7" + semver "^5.7.1" + supports-color "^5.5.0" touch "^3.1.0" undefsafe "^2.0.2" update-notifier "^2.5.0" @@ -4808,14 +4952,14 @@ normalize-package-data@^2.3.2: semver "2 || 3 || 4 || 5" validate-npm-package-license "^3.0.1" -normalize-path@^2.0.0, normalize-path@^2.0.1, normalize-path@^2.1.1: +normalize-path@^2.0.0, normalize-path@^2.0.1: version "2.1.1" resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= dependencies: remove-trailing-separator "^1.0.1" -normalize-path@^3.0.0: +normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== @@ -4907,7 +5051,7 @@ object.assign@4.1.0, object.assign@^4.1.0: has-symbols "^1.0.0" object-keys "^1.0.11" -object.entries@^1.1.0: +object.entries@^1.1.0, object.entries@^1.1.1: version "1.1.1" resolved "https://registry.npmjs.org/object.entries/-/object.entries-1.1.1.tgz#ee1cf04153de02bb093fec33683900f57ce5399b" integrity sha512-ilqR7BgdyZetJutmDPfXCDffGa0/Yzl2ivVNpbx/g4UeWrCdRnFDUBrKJGLhGieRHDATnyZXWBeCb29k9CJysQ== @@ -4917,7 +5061,7 @@ object.entries@^1.1.0: function-bind "^1.1.1" has "^1.0.3" -object.fromentries@^2.0.0: +object.fromentries@^2.0.0, object.fromentries@^2.0.2: version "2.0.2" resolved "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.2.tgz#4a09c9b9bb3843dd0f89acdb517a794d4f355ac9" integrity sha512-r3ZiBH7MQppDJVLx6fhD618GKNG40CZYH9wgwdhKxBDDbQgjeWGGd4AtkZad84d291YxvWe7bJGuE65Anh0dxQ== @@ -4950,7 +5094,7 @@ object.pick@^1.3.0: dependencies: isobject "^3.0.1" -object.values@^1.1.0: +object.values@^1.1.0, object.values@^1.1.1: version "1.1.1" resolved "https://registry.npmjs.org/object.values/-/object.values-1.1.1.tgz#68a99ecde356b7e9295a3c5e0ce31dc8c953de5e" integrity sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA== @@ -4978,7 +5122,14 @@ onetime@^2.0.0: dependencies: mimic-fn "^1.0.0" -optionator@^0.8.2: +onetime@^5.1.0: + version "5.1.0" + resolved "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz#fff0f3c91617fe62bb50189636e99ac8a6df7be5" + integrity sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q== + dependencies: + mimic-fn "^2.1.0" + +optionator@^0.8.2, optionator@^0.8.3: version "0.8.3" resolved "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== @@ -5128,11 +5279,6 @@ pascalcase@^0.1.1: resolved "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= -path-dirname@^1.0.0: - version "1.0.2" - resolved "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" - integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= - path-exists@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" @@ -5180,7 +5326,7 @@ pathval@^1.1.0: resolved "https://registry.npmjs.org/pathval/-/pathval-1.1.0.tgz#b942e6d4bde653005ef6b71361def8727d0645e0" integrity sha1-uULm1L3mUwBe9rcTYd74cn0GReA= -pbkdf2@^3.0.9: +pbkdf2@^3.0.17, pbkdf2@^3.0.9: version "3.0.17" resolved "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz#976c206530617b14ebb32114239f7b09336e93a6" integrity sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA== @@ -5196,6 +5342,11 @@ performance-now@^2.1.0: resolved "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= +picomatch@^2.0.4, picomatch@^2.0.7: + version "2.2.1" + resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.2.1.tgz#21bac888b6ed8601f831ce7816e335bc779f0a4a" + integrity sha512-ISBaA8xQNmwELC7eOjqFKMESB2VIqt4PPDD0nsS95b/9dZXvVKOlz9keMSnoGGKcOHXfTvDD6WMaRoSc9UuhRA== + pify@^2.0.0: version "2.3.0" resolved "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" @@ -5316,7 +5467,7 @@ psl@^1.1.28: resolved "https://registry.npmjs.org/psl/-/psl-1.7.0.tgz#f1c4c47a8ef97167dea5d6bbf4816d736e884a3c" integrity sha512-5NsSEDv8zY70ScRnOTn7bK7eanl2MvFrOrS/R6x+dBt5g1ghnj9Zv90kO8GwT8gxcu2ANyFprnFYB85IogIJOQ== -pstree.remy@^1.1.6: +pstree.remy@^1.1.7: version "1.1.7" resolved "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.7.tgz#c76963a28047ed61542dc361aa26ee55a7fa15f3" integrity sha512-xsMgrUwRpuGskEzBFkH8NmTimbZ5PcPup0LA8JJkHIm2IMUbQcpo3yeLNWVrufEYjh8YwtSVh0xz6UeWc5Oh5A== @@ -5418,7 +5569,7 @@ readable-stream@^3.0.2: string_decoder "^1.1.1" util-deprecate "^1.0.1" -readdirp@^2.0.0, readdirp@^2.2.1: +readdirp@^2.0.0: version "2.2.1" resolved "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== @@ -5427,6 +5578,20 @@ readdirp@^2.0.0, readdirp@^2.2.1: micromatch "^3.1.10" readable-stream "^2.0.2" +readdirp@~3.2.0: + version "3.2.0" + resolved "https://registry.npmjs.org/readdirp/-/readdirp-3.2.0.tgz#c30c33352b12c96dfb4b895421a49fd5a9593839" + integrity sha512-crk4Qu3pmXwgxdSgGhgA/eXiJAPQiX4GMOZZMXnqKxHX7TaoL+3gQVo/WeuAiogr07DpnfjIMpXXa+PAIvwPGQ== + dependencies: + picomatch "^2.0.4" + +readdirp@~3.3.0: + version "3.3.0" + resolved "https://registry.npmjs.org/readdirp/-/readdirp-3.3.0.tgz#984458d13a1e42e2e9f5841b129e162f369aff17" + integrity sha512-zz0pAkSPOXXm1viEwygWIPSPkcBYjW1xU5j/JBh5t9bGCJwa6f9+BJa6VaB2g+b55yVrmXzqkyLf4xaWYM0IkQ== + dependencies: + picomatch "^2.0.7" + regenerate@^1.2.1: version "1.4.0" resolved "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" @@ -5442,15 +5607,10 @@ regenerator-runtime@^0.11.0: resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== -regenerator-runtime@^0.13.2: - version "0.13.3" - resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz#7cf6a77d8f5c6f60eb73c5fc1955b2ceb01e6bf5" - integrity sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw== - regenerator-runtime@^0.13.4: - version "0.13.4" - resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.4.tgz#e96bf612a3362d12bb69f7e8f74ffeab25c7ac91" - integrity sha512-plpwicqEzfEyTQohIKktWigcLzmNStMGwbOUbykx51/29Z3JOGYldaaNGK7ngNXV+UcoqvIMmloZ48Sr74sd+g== + version "0.13.5" + resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz#d878a1d094b4306d10b9096484b33ebd55e26697" + integrity sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA== regenerator-transform@^0.10.0: version "0.10.1" @@ -5476,6 +5636,14 @@ regex-not@^1.0.0, regex-not@^1.0.2: extend-shallow "^3.0.2" safe-regex "^1.1.0" +regexp.prototype.flags@^1.3.0: + version "1.3.0" + resolved "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz#7aba89b3c13a64509dabcf3ca8d9fbb9bdf5cb75" + integrity sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + regexpp@^2.0.0, regexpp@^2.0.1: version "2.0.1" resolved "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" @@ -5630,7 +5798,7 @@ resolve-url@^0.2.1: resolved "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= -resolve@^1.10.0, resolve@^1.10.1, resolve@^1.11.0, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.3.2, resolve@^1.6.0, resolve@^1.8.1: +resolve@^1.10.0, resolve@^1.10.1, resolve@^1.11.0, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.15.1, resolve@^1.3.2, resolve@^1.6.0, resolve@^1.8.1: version "1.15.1" resolved "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz#27bdcdeffeaf2d6244b95bb0f9f4b4653451f3e8" integrity sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w== @@ -5645,6 +5813,14 @@ 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.npmjs.org/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.npmjs.org/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" @@ -5672,7 +5848,7 @@ ripemd160@^2.0.0, ripemd160@^2.0.1: hash-base "^3.0.0" inherits "^2.0.1" -run-async@^2.2.0: +run-async@^2.2.0, run-async@^2.4.0: version "2.4.0" resolved "https://registry.npmjs.org/run-async/-/run-async-2.4.0.tgz#e59054a5b86876cfae07f431d18cbaddc594f1e8" integrity sha512-xJTbh/d7Lm7SBhc1tNvTpeCHaEzoyxPrqNlvSdMfBTYwaY++UJFyXUOxAtsRUXjlqOfj8luNaR9vjCh4KeV+pg== @@ -5691,14 +5867,14 @@ rxjs@^5.5.2: dependencies: symbol-observable "1.0.1" -rxjs@^6.4.0, rxjs@^6.5.4: +rxjs@^6.4.0, rxjs@^6.5.3, rxjs@^6.5.4: version "6.5.4" resolved "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz#e0777fe0d184cec7872df147f303572d414e211c" integrity sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q== dependencies: tslib "^1.9.0" -safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.2.0: +safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.2, safe-buffer@~5.2.0: version "5.2.0" resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519" integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg== @@ -5720,20 +5896,6 @@ safe-regex@^1.1.0: resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -secp256k1@^3.8.0: - version "3.8.0" - resolved "https://registry.npmjs.org/secp256k1/-/secp256k1-3.8.0.tgz#28f59f4b01dbee9575f56a47034b7d2e3b3b352d" - integrity sha512-k5ke5avRZbtl9Tqx/SA7CbY3NF6Ro+Sj9cZxezFzuBlLDmyqPiL8hJJ+EmzD8Ig4LUDByHJ3/iPOVoRixs/hmw== - dependencies: - bindings "^1.5.0" - bip66 "^1.1.5" - bn.js "^4.11.8" - create-hash "^1.2.0" - drbg.js "^1.0.1" - elliptic "^6.5.2" - nan "^2.14.0" - safe-buffer "^5.1.2" - semver-diff@^2.0.0: version "2.1.0" resolved "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36" @@ -5741,12 +5903,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.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.7.0: +"semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.7.0, semver@^5.7.1: version "5.7.1" resolved "https://registry.npmjs.org/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, semver@^6.3.0: +semver@^6.0.0, semver@^6.1.0, semver@^6.1.2, semver@^6.3.0: version "6.3.0" resolved "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== @@ -5798,6 +5960,14 @@ shebang-regex@^3.0.0: resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== +side-channel@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/side-channel/-/side-channel-1.0.2.tgz#df5d1abadb4e4bf4af1cd8852bf132d2f7876947" + integrity sha512-7rL9YlPHg7Ancea1S96Pa8/QWb4BtXL/TZvS6B8XFetGBeuhAsfmUspK6DokBeZ64+Kj9TCNRD/30pVz1BvQNA== + dependencies: + es-abstract "^1.17.0-next.1" + object-inspect "^1.7.0" + signal-exit@^3.0.0, signal-exit@^3.0.2: version "3.0.2" resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" @@ -6051,6 +6221,21 @@ standard@14.3.1: eslint-plugin-standard "~4.0.0" standard-engine "^12.0.0" +standard@14.3.3: + version "14.3.3" + resolved "https://registry.npmjs.org/standard/-/standard-14.3.3.tgz#2b16559d892cb29e29a854eb6ed15d43e44759c8" + integrity sha512-HBEAD5eVXrr2o/KZ3kU8Wwaxw90wzoq4dOQe6vlRnPoQ6stn4LCLRLBBDp0CjH/aOTL9bDZJbRUOZcBaBnNJ0A== + dependencies: + eslint "~6.8.0" + eslint-config-standard "14.1.0" + eslint-config-standard-jsx "8.1.0" + eslint-plugin-import "~2.18.0" + eslint-plugin-node "~10.0.0" + eslint-plugin-promise "~4.2.1" + eslint-plugin-react "~7.14.2" + eslint-plugin-standard "~4.0.0" + standard-engine "^12.0.0" + static-extend@^0.1.1: version "0.1.2" resolved "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" @@ -6085,6 +6270,18 @@ string-width@^4.1.0, string-width@^4.2.0: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.0" +string.prototype.matchall@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.2.tgz#48bb510326fb9fdeb6a33ceaa81a6ea04ef7648e" + integrity sha512-N/jp6O5fMf9os0JU3E72Qhf590RSRZU/ungsL/qJUYVTNv7hTG0P/dbPjxINVN9jpscu3nzYwKESU3P3RY5tOg== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0" + has-symbols "^1.0.1" + internal-slot "^1.0.2" + regexp.prototype.flags "^1.3.0" + side-channel "^1.0.2" + string.prototype.trimleft@^2.1.1: version "2.1.1" resolved "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz#9bdb8ac6abd6d602b17a4ed321870d2f8dcefc74" @@ -6196,7 +6393,7 @@ supports-color@^2.0.0: resolved "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= -supports-color@^5.2.0, supports-color@^5.3.0: +supports-color@^5.3.0, supports-color@^5.5.0: version "5.5.0" resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== @@ -6323,6 +6520,13 @@ to-regex-range@^2.1.0: is-number "^3.0.0" repeat-string "^1.6.1" +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/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.npmjs.org/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" @@ -6353,7 +6557,7 @@ trim-right@^1.0.1: resolved "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" integrity sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM= -ts-node@8.6.2, ts-node@^8.3.0: +ts-node@8.6.2, ts-node@^8.3.0, ts-node@^8.6.2: version "8.6.2" resolved "https://registry.npmjs.org/ts-node/-/ts-node-8.6.2.tgz#7419a01391a818fbafa6f826a33c1a13e9464e35" integrity sha512-4mZEbofxGqLL2RImpe3zMJukvEvcO1XP8bj8ozBPySdCUXEcU5cIRwR0aM3R+VoZq7iXc8N86NC0FspGRqP4gg== @@ -6365,11 +6569,11 @@ ts-node@8.6.2, ts-node@^8.3.0: yn "3.1.1" tslib@^1.8.1, tslib@^1.9.0: - version "1.11.0" - resolved "https://registry.npmjs.org/tslib/-/tslib-1.11.0.tgz#f1f3528301621a53220d58373ae510ff747a66bc" - integrity sha512-BmndXUtiTn/VDDrJzQE7Mm22Ix3PxgLltW9bSNLoeCY31gnG2OPx0QqJnuc9oMIKioYrz487i6K9o4Pdn0j+Kg== + version "1.11.1" + resolved "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz#eb15d128827fbee2841549e171f45ed338ac7e35" + integrity sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA== -tsutils@^3.14.0: +tsutils@^3.17.1: version "3.17.1" resolved "https://registry.npmjs.org/tsutils/-/tsutils-3.17.1.tgz#ed719917f11ca0dee586272b2ac49e015a2dd759" integrity sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g== @@ -6388,7 +6592,7 @@ tweetnacl@^0.14.3, tweetnacl@~0.14.0: resolved "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= -tweetnacl@^1.0.1: +tweetnacl@^1.0.3: version "1.0.3" resolved "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz#ac0af71680458d8a6378d0d0d050ab1407d35596" integrity sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw== @@ -6405,12 +6609,17 @@ type-detect@^4.0.0, type-detect@^4.0.5: resolved "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== +type-fest@^0.11.0: + version "0.11.0" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1" + integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ== + type-fest@^0.3.0: version "0.3.1" resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz#63d00d204e059474fe5e1b7c011112bbd1dc29e1" integrity sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ== -type-fest@^0.8.0: +type-fest@^0.8.0, type-fest@^0.8.1: version "0.8.1" resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== @@ -6437,17 +6646,7 @@ typedarray@^0.0.6: resolved "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= -typescript@3.5.3: - version "3.5.3" - resolved "https://registry.npmjs.org/typescript/-/typescript-3.5.3.tgz#c830f657f93f1ea846819e929092f5fe5983e977" - integrity sha512-ACzBtm/PhXBDId6a6sDJfroT2pOWt/oOnk4/dElG5G33ZL776N3Y6/6bKZJBFpd+b05F3Ct9qDjMeJmRWtE2/g== - -typescript@^3.5.3: - version "3.8.2" - resolved "https://registry.npmjs.org/typescript/-/typescript-3.8.2.tgz#91d6868aaead7da74f493c553aeff76c0c0b1d5a" - integrity sha512-EgOVgL/4xfVrCMbhYKUQTdF37SQn4Iw73H5BgCrF1Abdun7Kwy/QZsE/ssAy0y4LxBbvua3PIbFsbRczWWnDdQ== - -typescript@^3.8.3: +typescript@3.8.3, typescript@^3.5.3, typescript@^3.8.3: version "3.8.3" resolved "https://registry.npmjs.org/typescript/-/typescript-3.8.3.tgz#409eb8544ea0335711205869ec458ab109ee1061" integrity sha512-MYlEfn5VrLNsgudQTVJeNaQFUAI7DkhnOjdpAp4T+ku1TfQClewlbSuTVHiA+8skNBgaf02TL/kLOvig4y3G8w== @@ -6475,9 +6674,9 @@ underscore@~1.9.1: integrity sha512-D39qtimx0c1fI3ya1Lnhk3E9nONswSKhnffBI0gME9C99fYOkNi04xs8K6pePLhvl1frbDemkaBQ5ikWllR2HQ== unhomoglyph@^1.0.2: - version "1.0.4" - resolved "https://registry.npmjs.org/unhomoglyph/-/unhomoglyph-1.0.4.tgz#38d2ec9de84ab921623ebd9fb60f710963c601f4" - integrity sha512-+y+QeEXwm4f0H8Tmy9fFUWHM95YcFjJLlv83/p3+EARUkeJBxnSOBADVyeuSq0TsRJ/UexxCXBKXo40ksu715w== + version "1.0.5" + resolved "https://registry.npmjs.org/unhomoglyph/-/unhomoglyph-1.0.5.tgz#a68c6244f0ec140bfe58293a1f66a9bd2a244343" + integrity sha512-rNAw2rGogjq4BVhsCX8K6qXrCcHmUaMCHETlUG0ujGZ3OHwnzJHwdMyzy3n/c9Y7lvlbckOd9nkW33grUVE3bg== union-value@^1.0.0: version "1.0.1" @@ -6501,11 +6700,6 @@ unique-string@^1.0.0: dependencies: crypto-random-string "^1.0.0" -unorm@^1.3.3: - version "1.6.0" - resolved "https://registry.npmjs.org/unorm/-/unorm-1.6.0.tgz#029b289661fba714f1a9af439eb51d9b16c205af" - integrity sha512-b2/KCUlYZUeA7JFUuRJZPUtr4gZvBh7tavtv4fvk4+KV9pfGiR6CQAQAWl49ZpR3ts2dk4FYkP7EIgDJoiOLDA== - unset-value@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" @@ -6519,11 +6713,6 @@ unzip-response@^2.0.1: resolved "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz#d2f0f737d16b0615e72a6935ed04214572d56f97" integrity sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c= -upath@^1.1.1: - version "1.2.0" - resolved "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" - integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== - update-notifier@^2.5.0: version "2.5.0" resolved "https://registry.npmjs.org/update-notifier/-/update-notifier-2.5.0.tgz#d0744593e13f161e406acb1d9408b72cad08aff6" @@ -6728,6 +6917,13 @@ xmlcreate@^2.0.3: resolved "https://registry.npmjs.org/xmlcreate/-/xmlcreate-2.0.3.tgz#df9ecd518fd3890ab3548e1b811d040614993497" integrity sha512-HgS+X6zAztGa9zIK3Y3LXuJes33Lz9x+YyTxgrkIdabu2vqcGOWwdfCpf1hWLRrd553wd4QCDf6BBO6FfdsRiQ== +xregexp@^4.3.0: + version "4.3.0" + resolved "https://registry.npmjs.org/xregexp/-/xregexp-4.3.0.tgz#7e92e73d9174a99a59743f67a4ce879a04b5ae50" + integrity sha512-7jXDIFXh5yJ/orPn4SXjuVrWWoi4Cr8jfV1eHv9CixKSbU+jY4mxfrBwAuDvupPNKpMUY+FeIqsVw/JLT9+B8g== + dependencies: + "@babel/runtime-corejs3" "^7.8.3" + xtend@^4.0.1: version "4.0.2" resolved "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" @@ -6755,14 +6951,14 @@ yallist@^2.1.2: resolved "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= -yaml@^1.8.0: - version "1.8.0" - resolved "https://registry.npmjs.org/yaml/-/yaml-1.8.0.tgz#169fbcfa2081302dc9441d02b0b6fe667e4f74c9" - integrity sha512-6qI/tTx7OVtA4qNqD0OyutbM6Z9EKu4rxWm/2Y3FDEBQ4/2X2XAnyuRXMzAE2+1BPyqzksJZtrIwblOHg0IEzA== +yaml@^1.8.2: + version "1.8.2" + resolved "https://registry.npmjs.org/yaml/-/yaml-1.8.2.tgz#a29c03f578faafd57dcb27055f9a5d569cb0c3d9" + integrity sha512-omakb0d7FjMo3R1D2EbTKVIk6dAVLRxFXdLZMEUToeAvuqgG/YuHMuQOZ5fgk+vQ8cx+cnGKwyg+8g8PNT0xQg== dependencies: "@babel/runtime" "^7.8.7" -yargs-parser@13.1.1, yargs-parser@^13.1.1: +yargs-parser@13.1.1: version "13.1.1" resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz#d26058532aa06d365fe091f6a1fc06b2f7e5eca0" integrity sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ== @@ -6770,18 +6966,18 @@ yargs-parser@13.1.1, yargs-parser@^13.1.1: camelcase "^5.0.0" decamelize "^1.2.0" -yargs-parser@^15.0.0: - version "15.0.0" - resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-15.0.0.tgz#cdd7a97490ec836195f59f3f4dbe5ea9e8f75f08" - integrity sha512-xLTUnCMc4JhxrPEPUYD5IBR1mWCK/aT6+RJ/K29JY2y1vD+FhtgKK0AXRWvI262q3QSffAQuTouFIKUuHX89wQ== +yargs-parser@13.1.2, yargs-parser@^13.1.1, yargs-parser@^13.1.2: + version "13.1.2" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" + integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== dependencies: camelcase "^5.0.0" decamelize "^1.2.0" -yargs-parser@^16.1.0: - version "16.1.0" - resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-16.1.0.tgz#73747d53ae187e7b8dbe333f95714c76ea00ecf1" - integrity sha512-H/V41UNZQPkUMIT5h5hiwg4QKIY1RPvoBV4XcjUbRM8Bk2oKqqyZ0DIEbTFZB0XjbtSPG8SAa/0DxCQmiRgzKg== +yargs-parser@^18.1.1: + version "18.1.1" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.1.tgz#bf7407b915427fc760fcbbccc6c82b4f0ffcbd37" + integrity sha512-KRHEsOM16IX7XuLnMOqImcPNbLVXMNHYAoFc3BKR8Ortl5gzDbtXvvEoGx9imk5E+X1VeNKNlcHr8B8vi+7ipA== dependencies: camelcase "^5.0.0" decamelize "^1.2.0" @@ -6795,7 +6991,7 @@ yargs-unparser@1.6.0: lodash "^4.17.15" yargs "^13.3.0" -yargs@13.3.0, yargs@^13.3.0: +yargs@13.3.0: version "13.3.0" resolved "https://registry.npmjs.org/yargs/-/yargs-13.3.0.tgz#4c657a55e07e5f2cf947f8a366567c04a0dedc83" integrity sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA== @@ -6811,13 +7007,12 @@ yargs@13.3.0, yargs@^13.3.0: y18n "^4.0.0" yargs-parser "^13.1.1" -yargs@14.2.0: - version "14.2.0" - resolved "https://registry.npmjs.org/yargs/-/yargs-14.2.0.tgz#f116a9242c4ed8668790b40759b4906c276e76c3" - integrity sha512-/is78VKbKs70bVZH7w4YaZea6xcJWOAwkhbR0CFuZBmYtfTYF0xjGJF43AYd8g2Uii1yJwmS5GR2vBmrc32sbg== +yargs@13.3.2, yargs@^13.3.0: + version "13.3.2" + resolved "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" + integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== dependencies: cliui "^5.0.0" - decamelize "^1.2.0" find-up "^3.0.0" get-caller-file "^2.0.1" require-directory "^2.1.1" @@ -6826,12 +7021,12 @@ yargs@14.2.0: string-width "^3.0.0" which-module "^2.0.0" y18n "^4.0.0" - yargs-parser "^15.0.0" + yargs-parser "^13.1.2" -yargs@^15.0.2: - version "15.1.0" - resolved "https://registry.npmjs.org/yargs/-/yargs-15.1.0.tgz#e111381f5830e863a89550bd4b136bb6a5f37219" - integrity sha512-T39FNN1b6hCW4SOIk1XyTOWxtXdcen0t+XYrysQmChzSipvhBO8Bj0nK1ozAasdk24dNWuMZvr4k24nz+8HHLg== +yargs@15.3.1, yargs@^15.0.2: + version "15.3.1" + resolved "https://registry.npmjs.org/yargs/-/yargs-15.3.1.tgz#9505b472763963e54afe60148ad27a330818e98b" + integrity sha512-92O1HWEjw27sBfgmXiixJWT5hRBp2eobqXicLtPBIDBhYB+1HpwZlXmbW2luivBJHBzki+7VyCLRtAkScbTBQA== dependencies: cliui "^6.0.0" decamelize "^1.2.0" @@ -6843,12 +7038,12 @@ yargs@^15.0.2: string-width "^4.2.0" which-module "^2.0.0" y18n "^4.0.0" - yargs-parser "^16.1.0" + yargs-parser "^18.1.1" -yarn@^1.16.0: - version "1.22.0" - resolved "https://registry.npmjs.org/yarn/-/yarn-1.22.0.tgz#acf82906e36bcccd1ccab1cfb73b87509667c881" - integrity sha512-KMHP/Jq53jZKTY9iTUt3dIVl/be6UPs2INo96+BnZHLKxYNTfwMmlgHTaMWyGZoO74RI4AIFvnWhYrXq2USJkg== +yarn@^1.22.4: + version "1.22.4" + resolved "https://registry.npmjs.org/yarn/-/yarn-1.22.4.tgz#01c1197ca5b27f21edc8bc472cd4c8ce0e5a470e" + integrity sha512-oYM7hi/lIWm9bCoDMEWgffW8aiNZXCWeZ1/tGy0DWrN6vmzjCXIKu2Y21o8DYVBUtiktwKcNoxyGl/2iKLUNGA== yn@3.1.1: version "3.1.1" -- GitLab From 449738434de10f4dcfd65ad6c9528a19c79377b2 Mon Sep 17 00:00:00 2001 From: Will Date: Wed, 18 Mar 2020 17:49:40 +0100 Subject: [PATCH 41/86] Ignore vscode workspaces --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 2256a96..bcb6d12 100644 --- a/.gitignore +++ b/.gitignore @@ -10,3 +10,4 @@ config.js package-lock.json yarn-error.log *.db +polkabot.code-workspace -- GitLab From 6ab693f5c4d885ecdd093698d01cd30dafa677ee Mon Sep 17 00:00:00 2001 From: Will Date: Wed, 18 Mar 2020 17:51:34 +0100 Subject: [PATCH 42/86] cleanup --- packages/polkabot-plugin-validators | 1 - 1 file changed, 1 deletion(-) delete mode 160000 packages/polkabot-plugin-validators diff --git a/packages/polkabot-plugin-validators b/packages/polkabot-plugin-validators deleted file mode 160000 index b6106ea..0000000 --- a/packages/polkabot-plugin-validators +++ /dev/null @@ -1 +0,0 @@ -Subproject commit b6106ea32cd2cdad19bcaf8bcb4a0027e3f78ec3 -- GitLab From 209fe64657f428b696b7eafaf342d8bf4e376af5 Mon Sep 17 00:00:00 2001 From: Will Date: Fri, 20 Mar 2020 14:01:42 +0100 Subject: [PATCH 43/86] Cleanup and versions bump --- .../polkabot-plugin-blocthday/src/index.ts | 5 +- yarn.lock | 305 ++++++++++++++---- 2 files changed, 249 insertions(+), 61 deletions(-) diff --git a/packages/polkabot-plugin-blocthday/src/index.ts b/packages/polkabot-plugin-blocthday/src/index.ts index 4b67a04..13afb96 100644 --- a/packages/polkabot-plugin-blocthday/src/index.ts +++ b/packages/polkabot-plugin-blocthday/src/index.ts @@ -1,6 +1,5 @@ import BN from "bn.js"; import { - PolkabotWorker, NotifierMessage, NotifierSpecs, PluginModule, @@ -10,13 +9,15 @@ import { PluginCommandSet, Room } from "@polkabot/api/src/plugin.interface"; +import { PolkabotWorker } from '@polkabot/api/src/PolkabotWorker' + import getCommandSet from "./commandSet"; export default class Blocthday extends PolkabotWorker implements IControllable { private NB_BLOCKS: number; public commandSet: PluginCommandSet; - public cmdStatus(event, room:Room): CommandHandlerOutput { + public cmdStatus(_event, room:Room): CommandHandlerOutput { console.log(`Blocthday.cmdStatus()`); // console.log("Called cmdStatus with:", args); diff --git a/yarn.lock b/yarn.lock index 2dab636..f36903a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9,7 +9,7 @@ dependencies: "@babel/highlight" "^7.8.3" -"@babel/core@^7.4.5", "@babel/core@^7.7.5": +"@babel/core@^7.7.5": version "7.8.7" resolved "https://registry.npmjs.org/@babel/core/-/core-7.8.7.tgz#b69017d221ccdeb203145ae9da269d72cf102f3b" integrity sha512-rBlqF3Yko9cynC5CCFy6+K/w2N+Sq/ff2BPy+Krp7rHlABIr5epbA7OxVeKoMHB39LZOp1UY5SuLjy6uWi35yA== @@ -466,9 +466,9 @@ integrity sha512-ZvO2tAcjmMi8V/5Z3JsyofMe3hasRcaw88cto5etSVMwVQfeivGAlEYmaQgceUSVYFofVjT+ioHsATjdWcFt1w== "@types/node@*": - version "13.9.1" - resolved "https://registry.npmjs.org/@types/node/-/node-13.9.1.tgz#96f606f8cd67fb018847d9b61e93997dabdefc72" - integrity sha512-E6M6N0blf/jiZx8Q3nb0vNaswQeEyn0XlupO+xN6DtJ6r6IT4nXrTry7zhIfYvFCl3/8Cu6WIysmUBKiqV0bqQ== + version "13.9.2" + resolved "https://registry.npmjs.org/@types/node/-/node-13.9.2.tgz#ace1880c03594cc3e80206d96847157d8e7fa349" + integrity sha512-bnoqK579sAYrQbp73wwglccjJ4sfRdKU7WNEZ5FW4K2U6Kc0/eZ5kvXG0JKsEKFB50zrFmfFt52/cvBbZa7eXg== "@types/node@11.11.6": version "11.11.6" @@ -673,11 +673,24 @@ append-transform@^2.0.0: dependencies: default-require-extensions "^3.0.0" +aproba@^1.0.3: + version "1.2.0" + resolved "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" + integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== + archy@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" integrity sha1-+cjBN1fMHde8N5rHeyxipcKGjEA= +are-we-there-yet@~1.1.2: + version "1.1.5" + resolved "https://registry.npmjs.org/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.3" resolved "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" @@ -1281,7 +1294,7 @@ babel-polyfill@6.26.0, babel-polyfill@^6.26.0: core-js "^2.5.0" regenerator-runtime "^0.10.5" -babel-preset-env@1.7.0, babel-preset-env@^1.6.1, babel-preset-env@^1.7.0: +babel-preset-env@1.7.0, babel-preset-env@^1.7.0: version "1.7.0" resolved "https://registry.npmjs.org/babel-preset-env/-/babel-preset-env-1.7.0.tgz#dea79fa4ebeb883cd35dab07e260c1c9c04df77a" integrity sha512-9OR2afuKDneX2/q2EurSftUYM0xGu4O2D9adAhVfADDhrYDaxXV0rBbevVYoY9n6nyX1PmQW/0jtpJvUNr9CHg== @@ -1374,19 +1387,6 @@ babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.26.0: lodash "^4.17.4" to-fast-properties "^1.0.3" -babel-watch@^7.0.0: - version "7.0.0" - resolved "https://registry.npmjs.org/babel-watch/-/babel-watch-7.0.0.tgz#2c7cac04a1f6bdaf3b9fc6267abd6b8001f88b89" - integrity sha512-DCK5pXNbDYr1c90wk1lP98bOxb+9BkvVieeYDTQPbcaEP9br6jJcVeJhr+zcQxry0yA45lPXWP+NS88/YVXZag== - dependencies: - chokidar "^1.4.3" - commander "^2.9.0" - lodash.debounce "^4.0.8" - lodash.isarray "^4.0.0" - lodash.isregexp "^4.0.1" - lodash.isstring "^4.0.1" - source-map-support "^0.4.0" - babylon@^6.18.0: version "6.18.0" resolved "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" @@ -1742,7 +1742,7 @@ chokidar@3.3.0: optionalDependencies: fsevents "~2.1.1" -chokidar@^1.4.3, chokidar@^1.6.1: +chokidar@^1.6.1: version "1.7.0" resolved "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" integrity sha1-eY5ol3gVHIB2tLNg5e3SjNortGg= @@ -1773,6 +1773,11 @@ chokidar@^3.2.2: optionalDependencies: fsevents "~2.1.2" +chownr@^1.1.1: + version "1.1.4" + resolved "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" + integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== + ci-info@^1.5.0: version "1.6.0" resolved "https://registry.npmjs.org/ci-info/-/ci-info-1.6.0.tgz#2ca20dbb9ceb32d4524a683303313f0304b1e497" @@ -1858,6 +1863,11 @@ cliui@^6.0.0: strip-ansi "^6.0.0" wrap-ansi "^6.2.0" +code-point-at@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/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.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" @@ -1897,7 +1907,7 @@ combined-stream@^1.0.6, combined-stream@~1.0.6: dependencies: delayed-stream "~1.0.0" -commander@^2.11.0, commander@^2.9.0: +commander@^2.11.0: version "2.20.3" resolved "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== @@ -1940,9 +1950,9 @@ configstore@^3.0.0: xdg-basedir "^3.0.0" confmgr@^1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/confmgr/-/confmgr-1.0.3.tgz#be3ad80fb9e71fe80d7b122704aaedbdd6f1ff3b" - integrity sha512-xugxc0MJWU7hiHaUH6KE+k1vBFEwW9NuY/gKWVR2rCCXDPTaR/tGIyWTWe1GQ+SbpQNxq5glTpdegmiKaN9LOA== + version "1.0.4" + resolved "https://registry.npmjs.org/confmgr/-/confmgr-1.0.4.tgz#890a31b84db3a632049460e66c46ba1d68553041" + integrity sha512-dMieOV0uL6jvMPc8JKtMIAVxAY6EkZSAkgTtLCbTmUa+lIdwKzbx/0vbCTgfnDtXQpZnXJd/VO5/LcZj5/tCLQ== dependencies: "@babel/runtime" "7.8.7" "@types/yaml" "^1.2.0" @@ -1952,6 +1962,11 @@ confmgr@^1.0.3: typescript "^3.8.3" yaml "^1.8.2" +console-control-strings@^1.0.0, console-control-strings@~1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" + integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= + contains-path@^0.1.0: version "0.1.0" resolved "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" @@ -2196,6 +2211,11 @@ delayed-stream@~1.0.0: resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= +delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= + detect-file@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7" @@ -2208,6 +2228,11 @@ detect-indent@^4.0.0: dependencies: repeating "^2.0.0" +detect-libc@^1.0.2: + version "1.0.3" + resolved "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" + integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= + diff@3.5.0: version "3.5.0" resolved "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" @@ -2266,9 +2291,9 @@ ecc-jsbn@~0.1.1: safer-buffer "^2.1.0" electron-to-chromium@^1.3.47: - version "1.3.378" - resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.378.tgz#18c572cbb54bf5b2769855597cdc7511c02b481f" - integrity sha512-nBp/AfhaVIOnfwgL1CZxt80IcqWcyYXiX6v5gflAksxy+SzBVz7A7UWR1Nos92c9ofXW74V9PoapzRb0jJfYXw== + version "1.3.379" + resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.379.tgz#81dc5e82a3e72bbb830d93e15bc35eda2bbc910e" + integrity sha512-NK9DBBYEBb5f9D7zXI0hiE941gq3wkBeQmXs1ingigA/jnTg5mhwY2Z5egwA+ZI8OLGKCx0h1Cl8/xeuIBuLlg== elliptic@^6.5.2: version "6.5.2" @@ -3250,6 +3275,13 @@ fromentries@^1.2.0: resolved "https://registry.npmjs.org/fromentries/-/fromentries-1.2.0.tgz#e6aa06f240d6267f913cea422075ef88b63e7897" integrity sha512-33X7H/wdfO99GdRLLgkjUrD4geAFdq/Uv0kl3HD4da6HDixd2GUg8Mw7dahLCV9r/EARkmtYBB6Tch4EEokFTQ== +fs-minipass@^1.2.5: + version "1.2.7" + resolved "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7" + integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA== + dependencies: + minipass "^2.6.0" + fs-readdir-recursive@^1.0.0: version "1.1.0" resolved "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz#e32fc030a2ccee44a6b5371308da54be0b397d27" @@ -3261,9 +3293,9 @@ fs.realpath@^1.0.0: integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= fsevents@^1.0.0: - version "1.2.11" - resolved "https://registry.npmjs.org/fsevents/-/fsevents-1.2.11.tgz#67bf57f4758f02ede88fb2a1712fef4d15358be3" - integrity sha512-+ux3lx6peh0BpvY0JebGyZoiR4D+oYzdPZMKJwkZ+sFkNJzpL7tXc/wehS49gUAxg3tmMHPHZkA8JU2rhhgDHw== + version "1.2.12" + resolved "https://registry.npmjs.org/fsevents/-/fsevents-1.2.12.tgz#db7e0d8ec3b0b45724fd4d83d43554a8f1f0de5c" + integrity sha512-Ggd/Ktt7E7I8pxZRbGIs7vwqAPscSESMrCSkx2FtWeqmheJgCo2R74fTsZFCifr0VTPwqRpPv17+6b8Zp7th0Q== dependencies: bindings "^1.5.0" nan "^2.12.1" @@ -3294,6 +3326,20 @@ funding@^1.0.0: term-size "^2.1.0" word-wrap "^1.2.3" +gauge@~2.7.3: + version "2.7.4" + resolved "https://registry.npmjs.org/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" + gensync@^1.0.0-beta.1: version "1.0.0-beta.1" resolved "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269" @@ -3498,6 +3544,11 @@ has-symbols@^1.0.0, has-symbols@^1.0.1: resolved "https://registry.npmjs.org/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.npmjs.org/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.npmjs.org/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" @@ -3608,7 +3659,7 @@ http-signature@~1.2.0: jsprim "^1.2.2" sshpk "^1.7.0" -iconv-lite@^0.4.17, iconv-lite@^0.4.24, iconv-lite@~0.4.13: +iconv-lite@^0.4.17, iconv-lite@^0.4.24, iconv-lite@^0.4.4, iconv-lite@~0.4.13: version "0.4.24" resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== @@ -3625,6 +3676,13 @@ ignore-by-default@^1.0.1: resolved "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09" integrity sha1-SMptcvbGo68Aqa1K5odr44ieKwk= +ignore-walk@^3.0.1: + version "3.0.3" + resolved "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.3.tgz#017e2447184bfeade7c238e4aefdd1e8f95b1e37" + integrity sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw== + dependencies: + minimatch "^3.0.4" + ignore@^3.0.9: version "3.3.10" resolved "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" @@ -3900,6 +3958,13 @@ is-finite@^1.0.0: resolved "https://registry.npmjs.org/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.npmjs.org/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.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" @@ -4416,31 +4481,11 @@ locate-path@^5.0.0: dependencies: p-locate "^4.1.0" -lodash.debounce@^4.0.8: - version "4.0.8" - resolved "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" - integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168= - lodash.flattendeep@^4.4.0: version "4.4.0" resolved "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz#fb030917f86a3134e5bc9bec0d69e0013ddfedb2" integrity sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI= -lodash.isarray@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-4.0.0.tgz#2aca496b28c4ca6d726715313590c02e6ea34403" - integrity sha1-KspJayjEym1yZxUxNZDALm6jRAM= - -lodash.isregexp@^4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/lodash.isregexp/-/lodash.isregexp-4.0.1.tgz#e13e647b30cd559752a04cd912086faf7da1c30b" - integrity sha1-4T5kezDNVZdSoEzZEghvr32hwws= - -lodash.isstring@^4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451" - integrity sha1-1SfftUVuynzJu5XV2ur4i6VKVFE= - lodash@^3.10.1: version "3.10.1" resolved "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6" @@ -4724,6 +4769,21 @@ minimongo@6.5.0: js-sha1 "^0.6.0" lodash "^3.10.1" +minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0: + version "2.9.0" + resolved "https://registry.npmjs.org/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.npmjs.org/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.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" @@ -4739,7 +4799,7 @@ mkdirp@0.5.1: dependencies: minimist "0.0.8" -mkdirp@0.5.3, mkdirp@^0.5.1, mkdirp@~0.5.1: +mkdirp@0.5.3, mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.1: version "0.5.3" resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.3.tgz#5a514b7179259287952881e94410ec5465659f8c" integrity sha512-P+2gwrFqx8lhew375MQHHeTlY8AuOJSrGf0R5ddkEndUkmwpgUob/vQuBD1V22/Cw1/lJr4x+EjllSezBThzBg== @@ -4873,6 +4933,15 @@ nedb@^1.8.0: mkdirp "~0.5.1" underscore "~1.4.4" +needle@^2.2.1: + version "2.3.3" + resolved "https://registry.npmjs.org/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" + next-tick@1: version "1.1.0" resolved "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz#1836ee30ad56d67ef281b22bd199f709449b35eb" @@ -4912,6 +4981,22 @@ node-fetch@^1.0.1: encoding "^0.1.11" is-stream "^1.0.1" +node-pre-gyp@*: + version "0.14.0" + resolved "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.14.0.tgz#9a0596533b877289bcad4e143982ca3d904ddc83" + integrity sha512-+CvDC7ZttU/sSt9rFjix/P05iS43qHCOOGzcr3Ry99bXG7VX953+vFyEuph/tfqoYu8dttBkE86JSKBO2OzcxA== + 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.4.2" + node-preload@^0.2.0: version "0.2.1" resolved "https://registry.npmjs.org/node-preload/-/node-preload-0.2.1.tgz#c03043bb327f417a18fee7ab7ee57b408a144301" @@ -4935,6 +5020,14 @@ nodemon@2.0.2: undefsafe "^2.0.2" update-notifier "^2.5.0" +nopt@^4.0.1: + version "4.0.3" + resolved "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz#a375cad9d02fd921278d954c2254d5aa57e15e48" + integrity sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg== + dependencies: + abbrev "1" + osenv "^0.1.4" + nopt@~1.0.10: version "1.0.10" resolved "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz#6ddd21bd2a31417b92727dd585f8a6f37608ebee" @@ -4964,6 +5057,27 @@ normalize-path@^3.0.0, normalize-path@~3.0.0: resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== +npm-bundled@^1.0.1: + version "1.1.1" + resolved "https://registry.npmjs.org/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.npmjs.org/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.8" + resolved "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.8.tgz#56ee6cc135b9f98ad3d51c1c95da22bbb9b2ef3e" + integrity sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A== + dependencies: + ignore-walk "^3.0.1" + npm-bundled "^1.0.1" + npm-normalize-package-bin "^1.0.1" + npm-run-path@^2.0.0: version "2.0.2" resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" @@ -4971,6 +5085,21 @@ npm-run-path@^2.0.0: dependencies: path-key "^2.0.0" +npmlog@^4.0.2: + version "4.1.2" + resolved "https://registry.npmjs.org/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.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" + integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= + nyc@^15.0.0: version "15.0.0" resolved "https://registry.npmjs.org/nyc/-/nyc-15.0.0.tgz#eb32db2c0f29242c2414fe46357f230121cfc162" @@ -5146,11 +5275,19 @@ os-homedir@^1.0.0: resolved "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= -os-tmpdir@^1.0.1, os-tmpdir@~1.0.2: +os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/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.npmjs.org/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" + integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.0" + output-file-sync@^1.1.2: version "1.1.2" resolved "https://registry.npmjs.org/output-file-sync/-/output-file-sync-1.1.2.tgz#d0a33eefe61a205facb90092e826598d5245ce76" @@ -5515,7 +5652,7 @@ rbush@^2.0.0: dependencies: quickselect "^1.0.1" -rc@^1.0.1, rc@^1.1.6: +rc@^1.0.1, rc@^1.1.6, rc@^1.2.7: version "1.2.8" resolved "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== @@ -5547,7 +5684,7 @@ read-pkg@^2.0.0: normalize-package-data "^2.3.2" path-type "^2.0.0" -readable-stream@^2.0.2, readable-stream@^2.3.5: +readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.3.5: version "2.3.7" resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== @@ -5833,6 +5970,13 @@ rimraf@2.6.3, rimraf@~2.6.2: dependencies: glob "^7.1.3" +rimraf@^2.6.1: + version "2.7.1" + resolved "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + rimraf@^3.0.0: version "3.0.2" resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" @@ -5896,6 +6040,11 @@ safe-regex@^1.1.0: resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== +sax@^1.2.4: + version "1.2.4" + resolved "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" + integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== + semver-diff@^2.0.0: version "2.1.0" resolved "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36" @@ -5913,7 +6062,7 @@ semver@^6.0.0, semver@^6.1.0, semver@^6.1.2, semver@^6.3.0: resolved "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== -set-blocking@^2.0.0: +set-blocking@^2.0.0, set-blocking@~2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= @@ -6048,7 +6197,7 @@ source-map-resolve@^0.5.0: source-map-url "^0.4.0" urix "^0.1.0" -source-map-support@^0.4.0, source-map-support@^0.4.15: +source-map-support@^0.4.15: version "0.4.18" resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f" integrity sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA== @@ -6244,6 +6393,15 @@ static-extend@^0.1.1: define-property "^0.2.5" object-copy "^0.1.0" +string-width@^1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/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@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: version "2.1.1" resolved "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" @@ -6312,7 +6470,7 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -strip-ansi@^3.0.0: +strip-ansi@^3.0.0, strip-ansi@^3.0.1: version "3.0.1" resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= @@ -6439,6 +6597,19 @@ taffydb@2.6.2: resolved "https://registry.npmjs.org/taffydb/-/taffydb-2.6.2.tgz#7cbcb64b5a141b6a2efc2c5d2c67b4e150b2a268" integrity sha1-fLy2S1oUG2ou/CxdLGe04VCyomg= +tar@^4.4.2: + version "4.4.13" + resolved "https://registry.npmjs.org/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" + term-size@^1.2.0: version "1.2.0" resolved "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz#458b83887f288fc56d6fffbfad262e26638efa69" @@ -6557,7 +6728,7 @@ trim-right@^1.0.1: resolved "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" integrity sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM= -ts-node@8.6.2, ts-node@^8.3.0, ts-node@^8.6.2: +ts-node@8.6.2: version "8.6.2" resolved "https://registry.npmjs.org/ts-node/-/ts-node-8.6.2.tgz#7419a01391a818fbafa6f826a33c1a13e9464e35" integrity sha512-4mZEbofxGqLL2RImpe3zMJukvEvcO1XP8bj8ozBPySdCUXEcU5cIRwR0aM3R+VoZq7iXc8N86NC0FspGRqP4gg== @@ -6568,6 +6739,17 @@ ts-node@8.6.2, ts-node@^8.3.0, ts-node@^8.6.2: source-map-support "^0.5.6" yn "3.1.1" +ts-node@^8.3.0, ts-node@^8.6.2: + version "8.7.0" + resolved "https://registry.npmjs.org/ts-node/-/ts-node-8.7.0.tgz#266186947596bef9f3a034687595b30e31b20976" + integrity sha512-s659CsHrsxaRVDEleuOkGvbsA0rWHtszUNEt1r0CgAFN5ZZTQtDzpsluS7W5pOGJIa1xZE8R/zK4dEs+ldFezg== + dependencies: + arg "^4.1.0" + diff "^4.0.1" + make-error "^1.1.1" + source-map-support "^0.5.6" + yn "3.1.1" + tslib@^1.8.1, tslib@^1.9.0: version "1.11.1" resolved "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz#eb15d128827fbee2841549e171f45ed338ac7e35" @@ -6832,7 +7014,7 @@ which@^2.0.1: dependencies: isexe "^2.0.0" -wide-align@1.1.3: +wide-align@1.1.3, wide-align@^1.1.0: version "1.1.3" resolved "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== @@ -6951,6 +7133,11 @@ yallist@^2.1.2: resolved "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= +yallist@^3.0.0, yallist@^3.0.3: + version "3.1.1" + resolved "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + yaml@^1.8.2: version "1.8.2" resolved "https://registry.npmjs.org/yaml/-/yaml-1.8.2.tgz#a29c03f578faafd57dcb27055f9a5d569cb0c3d9" -- GitLab From 673a282e8a464ca8aaccb76f3907fda9412ff7c0 Mon Sep 17 00:00:00 2001 From: Will Date: Fri, 20 Mar 2020 17:48:24 +0100 Subject: [PATCH 44/86] Fix a bunch of linter issues --- doc/plugin.js | 18 +- package.json | 2 +- packages/polkabot-api/src/PolkabotChatbot.ts | 24 +- packages/polkabot-api/src/PolkabotNotifier.ts | 4 +- packages/polkabot-api/src/PolkabotWorker.ts | 2 +- packages/polkabot-api/src/plugin.interface.ts | 80 +++---- packages/polkabot-api/src/utils.ts | 4 +- .../polkabot-plugin-blockstats/src/index.ts | 30 +-- .../src/commandSet.ts | 14 +- .../polkabot-plugin-blocthday/src/index.ts | 30 +-- .../src/index.ts | 12 +- .../src/index.ts | 8 +- .../src/commandSet.ts | 22 +- .../polkabot-plugin-operator/src/index.ts | 71 +++--- .../src/matrix-helper.ts | 4 +- .../tests/commands.test.ts | 46 ++-- .../polkabot-plugin-reporter/src/index.ts | 188 ++++++++------- .../polkabot-plugin-stallwatcher/src/index.ts | 40 ++-- packages/polkabot/src/index.ts | 109 +++++---- packages/polkabot/src/lib/plugin-loader.ts | 14 +- packages/polkabot/src/lib/plugin-scanner.ts | 28 +-- packages/polkabot/src/polkabot.ts | 8 +- packages/polkabot/src/types.ts | 4 +- yarn.lock | 225 +----------------- 24 files changed, 407 insertions(+), 580 deletions(-) diff --git a/doc/plugin.js b/doc/plugin.js index 3b28941..3f660a7 100644 --- a/doc/plugin.js +++ b/doc/plugin.js @@ -1,26 +1,26 @@ -import Plugin from '../../lib/lib' -import pluginConfig from './config' +import Plugin from '../../lib/lib'; +import pluginConfig from './config'; module.exports = class SuperPlugin extends Plugin { constructor (...args) { - super(args) - this.config[this.name] = pluginConfig + super(args); + this.config[this.name] = pluginConfig; } start () { - super.start() + super.start(); // Interact with Polkadot this.polkadot.chain .newHead((error, header) => { - if (error) console.error(error) + if (error) console.error(error); // ... }) - .catch(e => console.log) + .catch(e => console.log); // Interact with Matrix.org this.matrix.on('Room.timeline', (event, room, toStartOfTimeline) => { // ... - }) + }); } -} +}; diff --git a/package.json b/package.json index e5fc7b7..29a0ba0 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,7 @@ "scripts": { "analyze": "yarn run build", "check": "yarn lint", - "lint": "eslint --ext .js,.jsx,.ts,.tsx . && tsc --noEmit --pretty", + "lint": "eslint --ext .ts,.tsx .", "test": "echo \"skipping tests\"", "start": "cd packages/polkabot && yarn start", "build": "cd packages/polkabot && yarn build" diff --git a/packages/polkabot-api/src/PolkabotChatbot.ts b/packages/polkabot-api/src/PolkabotChatbot.ts index 67c9aa9..0d67c78 100644 --- a/packages/polkabot-api/src/PolkabotChatbot.ts +++ b/packages/polkabot-api/src/PolkabotChatbot.ts @@ -1,16 +1,16 @@ -import { PolkabotPluginBase, IChatBot, IControllable, PluginModule, PluginContext, Type, PluginCommandSet, PluginCommand, RoomAnswer, BotCommand } from "./plugin.interface"; +import { PolkabotPluginBase, ChatBot, Controllable, PluginModule, PluginContext, Type, PluginCommandSet, PluginCommand, RoomAnswer, BotCommand } from './plugin.interface'; -export abstract class PolkabotChatbot extends PolkabotPluginBase implements IChatBot { - controllables: IControllable[] = []; +export abstract class PolkabotChatbot extends PolkabotPluginBase implements ChatBot { + controllables: Controllable[] = []; constructor(mod: PluginModule, context: PluginContext, config?) { super(Type.Chatbot, mod, context, config); } - public registerControllables(controllables: IControllable[]) { - console.log(`Registering controllables: `); + public registerControllables(controllables: Controllable[]): void { + console.log('Registering controllables: '); // console.log(`controllables: ${JSON.stringify(controllables, null, 2)}`); controllables.map((ctrl: PolkabotPluginBase) => { console.log(` >> ${ctrl.commandSet.name} (!${ctrl.commandSet.alias})`); - const commandObject: PluginCommandSet = (ctrl as IControllable).commandSet; + const commandObject: PluginCommandSet = (ctrl as Controllable).commandSet; const commands: PluginCommand[] = commandObject.commands; console.log(commands.map(c => c.name)); }); @@ -23,14 +23,14 @@ export abstract class PolkabotChatbot extends PolkabotPluginBase implements ICha * sent the message from is the same as the room id where * that the bot is in. */ - protected isPrivate(senderRoomId, roomIdWithBot) { + protected isPrivate(senderRoomId, roomIdWithBot): boolean { return senderRoomId === roomIdWithBot; } // public answer(roomId: RoomId, msg: Message) { - public answer(data: RoomAnswer) { + public answer(data: RoomAnswer): void { // console.log("RoomAnswer", data); const html = data.html || true; - console.log(`Sending HTML: ${html ? "TRUE" : "FALSE"}`); + console.log(`Sending HTML: ${html ? 'TRUE' : 'FALSE'}`); if (!html) { // Pure text this.context.matrix.sendTextMessage(data.room.roomId, data.message); @@ -46,16 +46,16 @@ export abstract class PolkabotChatbot extends PolkabotPluginBase implements ICha * TODO: That should be a factory creating an instance of a BotCommand class */ public static getBotCommand(str: string): BotCommand | null { - let capture = str.match(/^!(?\w+)(\s+(?\w+))(\s+(?.*))?$/i) || []; + const capture = str.match(/^!(?\w+)(\s+(?\w+))(\s+(?.*))?$/i) || []; if (capture.length > 0 && capture.groups.module && capture.groups.command) { const { module, command, args } = capture.groups; - const argList: string[] = args === undefined ? null : args.split(" ").map(i => i.replace(" ", "")); // TODO a smarter regexp would do that + const argList: string[] = args === undefined ? null : args.split(' ').map(i => i.replace(' ', '')); // TODO a smarter regexp would do that const obj: BotCommand = { module, command, args: argList }; - // console.log("obj", obj); + // console.log("obj", obj); return obj; } else { diff --git a/packages/polkabot-api/src/PolkabotNotifier.ts b/packages/polkabot-api/src/PolkabotNotifier.ts index 66a864a..7cdb2de 100644 --- a/packages/polkabot-api/src/PolkabotNotifier.ts +++ b/packages/polkabot-api/src/PolkabotNotifier.ts @@ -1,11 +1,11 @@ -import { PolkabotPluginBase, PluginModule, PluginContext, Type, NotifierMessage, NotifierSpecs } from "./plugin.interface"; +import { PolkabotPluginBase, PluginModule, PluginContext, Type, NotifierMessage, NotifierSpecs } from './plugin.interface'; export abstract class PolkabotNotifier extends PolkabotPluginBase { public abstract channel: string; // 'twitter', 'matrix', 'email', .... constructor(mod: PluginModule, context: PluginContext, config?) { super(Type.Notifier, mod, context, config); } - public notify(message: NotifierMessage, specs: NotifierSpecs): void { + public notify(_message: NotifierMessage, _specs: NotifierSpecs): void { // console.log("Notifier - notify()", message, specs); } } diff --git a/packages/polkabot-api/src/PolkabotWorker.ts b/packages/polkabot-api/src/PolkabotWorker.ts index b082029..8e2889d 100644 --- a/packages/polkabot-api/src/PolkabotWorker.ts +++ b/packages/polkabot-api/src/PolkabotWorker.ts @@ -1,4 +1,4 @@ -import { PolkabotPluginBase, PluginModule, PluginContext, Type } from "./plugin.interface"; +import { PolkabotPluginBase, PluginModule, PluginContext, Type } from './plugin.interface'; export abstract class PolkabotWorker extends PolkabotPluginBase { constructor(mod: PluginModule, context: PluginContext, config?) { diff --git a/packages/polkabot-api/src/plugin.interface.ts b/packages/polkabot-api/src/plugin.interface.ts index f62d877..2a2d1b6 100644 --- a/packages/polkabot-api/src/plugin.interface.ts +++ b/packages/polkabot-api/src/plugin.interface.ts @@ -1,10 +1,10 @@ -import { packageJson } from "package-json"; -import * as path from "path"; -import { assert } from "./utils"; -import { PolkabotWorker } from "./PolkabotWorker"; -import { PolkabotChatbot } from "./PolkabotChatbot"; -import { PolkabotNotifier } from "./PolkabotNotifier"; -import { ConfigObject } from 'confmgr' +import { packageJson } from 'package-json'; +import * as path from 'path'; +import { assert } from './utils'; +import { PolkabotWorker } from './PolkabotWorker'; +import { PolkabotChatbot } from './PolkabotChatbot'; +import { PolkabotNotifier } from './PolkabotNotifier'; +import { ConfigObject } from 'confmgr'; /** * A plugin module before the package has been loaded. @@ -72,45 +72,45 @@ export type PluginCommandSet = { * Something implementing IControllable must expose commands and handlers that can * be called to control the thing. */ -export interface IControllable { +export interface Controllable { commandSet?: PluginCommandSet; } -export interface IChatBot { - controllables: IControllable[]; +export interface ChatBot { + controllables: Controllable[]; } export class PolkabotPluginBase { - // TODO: fix the mess here - public module: PluginModule; - public config: ConfigObject; - public context: PluginContext; // TODO - public package: packageJson; - public type: Type; - public commandSet?: PluginCommandSet; - - // public description: string; // some blabla about the plugin, we dont have this field, we use the package.json/description - - constructor(type: Type, mod: PluginModule, context: PluginContext, config?) { - // console.log(`++ PolkabotPluginBase/${type} ${mod.name}: ${mod.path}`); - this.type = type; - this.context = context; - this.config = config; - this.module = mod; - const packageFile = path.join(mod.path, 'package.json'); - - // console.log("loading package from", packageFile); - this.package = require(packageFile); - - assert(this.package, 'package not loaded properly'); - } - - // toString() { - // const obj = this; - // delete obj.context; - // return JSON.stringify(obj, null, 2); - // } - } + // TODO: fix the mess here + public module: PluginModule; + public config: ConfigObject; + public context: PluginContext; // TODO + public package: packageJson; + public type: Type; + public commandSet?: PluginCommandSet; + + // public description: string; // some blabla about the plugin, we dont have this field, we use the package.json/description + + constructor(type: Type, mod: PluginModule, context: PluginContext, config?) { + // console.log(`++ PolkabotPluginBase/${type} ${mod.name}: ${mod.path}`); + this.type = type; + this.context = context; + this.config = config; + this.module = mod; + const packageFile = path.join(mod.path, 'package.json'); + + // console.log("loading package from", packageFile); + this.package = require(packageFile); + + assert(this.package, 'package not loaded properly'); + } + + // toString() { + // const obj = this; + // delete obj.context; + // return JSON.stringify(obj, null, 2); + // } +} export type BotCommand = { module: string; // op, id, bday, etc... diff --git a/packages/polkabot-api/src/utils.ts b/packages/polkabot-api/src/utils.ts index e62f440..3c495d3 100644 --- a/packages/polkabot-api/src/utils.ts +++ b/packages/polkabot-api/src/utils.ts @@ -1,3 +1,3 @@ -export function assert(val, msg) { - if (!val) throw new Error(msg || "Assertion failed"); +export function assert(val, msg): void { + if (!val) throw new Error(msg || 'Assertion failed'); } diff --git a/packages/polkabot-plugin-blockstats/src/index.ts b/packages/polkabot-plugin-blockstats/src/index.ts index 6aad95a..38bf6ef 100644 --- a/packages/polkabot-plugin-blockstats/src/index.ts +++ b/packages/polkabot-plugin-blockstats/src/index.ts @@ -1,13 +1,13 @@ #!/usr/bin/env node -import BN from "bn.js"; +import BN from 'bn.js'; import { NotifierMessage, NotifierSpecs, PluginModule, PluginContext -} from "@polkabot/api/src/plugin.interface"; -import { PolkabotWorker} from "@polkabot/api/src/PolkabotWorker" +} from '@polkabot/api/src/plugin.interface'; +import { PolkabotWorker} from '@polkabot/api/src/PolkabotWorker'; type Data = { tmsp: number; @@ -42,36 +42,36 @@ export default class BlocsStats extends PolkabotWorker { } public start(): void { - console.log("BlocksStats - Starting with config:", this.params); + console.log('BlocksStats - Starting with config:', this.params); this.watchChain().catch(error => { - console.error("BlocksStats - Error subscribing to chain head: ", error); + console.error('BlocksStats - Error subscribing to chain head: ', error); }); } public stop(): void { // TODO missing impl - throw new Error('Not Implemented') + throw new Error('Not Implemented'); } - async watchChain() { + async watchChain(): Promise { // Reference: https://polkadot.js.org/api/examples/promise/02_listen_to_blocks/ await this.context.polkadot.rpc.chain.subscribeNewHeads(header => { const bnBlockNumber: BN = header.number.unwrap().toBn(); - if (bnBlockNumber.mod(new BN(this.params.LOG_NTH_BLOCK)).toString(10) === "0") { + if (bnBlockNumber.mod(new BN(this.params.LOG_NTH_BLOCK)).toString(10) === '0') { console.log(`BlocksStats - Chain is at block: #${header.number.unwrap().toBn()}`, this.stats); } this.addBlock(header); - if (bnBlockNumber.mod(new BN(this.params.NB_BLOCKS)).toString(10) === "0") { + if (bnBlockNumber.mod(new BN(this.params.NB_BLOCKS)).toString(10) === '0') { this.computeStats(); this.alert(bnBlockNumber); } }); } - addBlock(header) { + addBlock(header): void { const data: Data = { tmsp: new Date().getTime(), blockTime: this.previousData ? new Date().getTime() - this.previousData.tmsp : null, @@ -85,19 +85,19 @@ export default class BlocsStats extends PolkabotWorker { this.previousData = data; } - averageBlockTime() { - const sum = (accumulator, currentValue) => accumulator + currentValue; + averageBlockTime(): number { + const sum: (a: number, b: number) => number = (accumulator, currentValue) => accumulator + currentValue; return this.data.map(el => el.blockTime || 0).reduce(sum) / this.data.filter(item => item.blockTime > 0).length / 1000; } - computeStats() { + computeStats(): void { this.stats = { nbBlock: this.data.length, averageBlockTime: this.averageBlockTime() }; } - alert(bnBlockNumber) { + alert(bnBlockNumber): void { if (this.stats.averageBlockTime >= this.params.THRESHOLD) { const notifierMessage: NotifierMessage = { message: `WARNING: Average block time exceeded ${this.params.THRESHOLD.toFixed(3)}s @@ -107,7 +107,7 @@ Stats for the last ${this.params.NB_BLOCKS} at #${bnBlockNumber.toString(10)}: }; const notifierSpecs: NotifierSpecs = { - notifiers: ["matrix", "twitter", "demo", "all"] + notifiers: ['matrix', 'twitter', 'demo', 'all'] }; this.context.polkabot.notify(notifierMessage, notifierSpecs); diff --git a/packages/polkabot-plugin-blocthday/src/commandSet.ts b/packages/polkabot-plugin-blocthday/src/commandSet.ts index 32be4a3..d28addd 100644 --- a/packages/polkabot-plugin-blocthday/src/commandSet.ts +++ b/packages/polkabot-plugin-blocthday/src/commandSet.ts @@ -1,15 +1,15 @@ -import { PluginCommandSet } from "@polkabot/api/src/plugin.interface"; -import Blocthday from "."; +import { PluginCommandSet } from '@polkabot/api/src/plugin.interface'; +import Blocthday from '.'; export default function getCommandSet(ref: Blocthday): PluginCommandSet { return { - name: "Blocthday", - alias: "bday", + name: 'Blocthday', + alias: 'bday', commands: [ { - name: "status", - description: "Show status of the plugin", - argsRegexp: "", + name: 'status', + description: 'Show status of the plugin', + argsRegexp: '', adminOnly: false, handler: ref.cmdStatus } diff --git a/packages/polkabot-plugin-blocthday/src/index.ts b/packages/polkabot-plugin-blocthday/src/index.ts index 13afb96..2d7acd4 100644 --- a/packages/polkabot-plugin-blocthday/src/index.ts +++ b/packages/polkabot-plugin-blocthday/src/index.ts @@ -1,29 +1,29 @@ -import BN from "bn.js"; +import BN from 'bn.js'; import { NotifierMessage, NotifierSpecs, PluginModule, PluginContext, CommandHandlerOutput, - IControllable, + Controllable, PluginCommandSet, Room -} from "@polkabot/api/src/plugin.interface"; -import { PolkabotWorker } from '@polkabot/api/src/PolkabotWorker' +} from '@polkabot/api/src/plugin.interface'; +import { PolkabotWorker } from '@polkabot/api/src/PolkabotWorker'; -import getCommandSet from "./commandSet"; +import getCommandSet from './commandSet'; -export default class Blocthday extends PolkabotWorker implements IControllable { +export default class Blocthday extends PolkabotWorker implements Controllable { private NB_BLOCKS: number; public commandSet: PluginCommandSet; - public cmdStatus(_event, room:Room): CommandHandlerOutput { - console.log(`Blocthday.cmdStatus()`); + public cmdStatus(_event, room: Room): CommandHandlerOutput { + console.log('Blocthday.cmdStatus()'); // console.log("Called cmdStatus with:", args); return { code: -1, - msg: "Implement me first!", + msg: 'Implement me first!', answers: [{ room, message: 'Oups! I am not implmented yet 🥴' @@ -38,32 +38,32 @@ export default class Blocthday extends PolkabotWorker implements IControllable { } public start(): void { - console.log("Blocthday - Starting with NB_BLOCKS:", this.NB_BLOCKS); + console.log('Blocthday - Starting with NB_BLOCKS:', this.NB_BLOCKS); this.watchChain().catch(error => { - console.error("Blocthday - Error subscribing to chain head: ", error); + console.error('Blocthday - Error subscribing to chain head: ', error); }); } public stop(): void { - console.log("Blocthday - STOPPING"); + console.log('Blocthday - STOPPING'); // TODO: unsubscribe to everything here } - async watchChain() { + async watchChain(): Promise { // Reference: https://polkadot.js.org/api/examples/promise/02_listen_to_blocks/ await this.context.polkadot.rpc.chain.subscribeNewHeads(header => { // console.log(`Blocthday - Chain is at block: #${header.number}`); const bnBlockNumber: BN = header.number.unwrap().toBn(); const bnNumberOfBlocks: BN = new BN(this.NB_BLOCKS); - if (bnBlockNumber.mod(bnNumberOfBlocks).toString(10) === "0") { + if (bnBlockNumber.mod(bnNumberOfBlocks).toString(10) === '0') { const notifierMessage: NotifierMessage = { message: `Happy ${this.NB_BLOCKS}-BlocthDay!!! Polkadot is now at #${header.number}` }; const notifierSpecs: NotifierSpecs = { - notifiers: ["matrix", "twitter"] + notifiers: ['matrix', 'twitter'] }; this.context.polkabot.notify(notifierMessage, notifierSpecs); diff --git a/packages/polkabot-plugin-notifier-matrix/src/index.ts b/packages/polkabot-plugin-notifier-matrix/src/index.ts index 443afdf..731875d 100644 --- a/packages/polkabot-plugin-notifier-matrix/src/index.ts +++ b/packages/polkabot-plugin-notifier-matrix/src/index.ts @@ -3,12 +3,12 @@ import { NotifierSpecs, PluginModule, PluginContext -} from "../../polkabot-api/src/plugin.interface"; -import { PolkabotNotifier } from "../../polkabot-api/src/PolkabotNotifier"; +} from '../../polkabot-api/src/plugin.interface'; +import { PolkabotNotifier } from '../../polkabot-api/src/PolkabotNotifier'; // TODO: we want that to extends PolkabotPlugin export default class MatrixNotifier extends PolkabotNotifier { - public channel: string = "matrix"; + public channel = 'matrix'; public constructor(mod: PluginModule, context: PluginContext, config?) { super(mod, context, config); // console.log("++MatrixNotifier", this); @@ -16,9 +16,9 @@ export default class MatrixNotifier extends PolkabotNotifier { public notify(message: NotifierMessage, specs: NotifierSpecs): void { super.notify(message, specs); - const roomId = this.context.config.Get('MATRIX', 'ROOM_ID') - console.log("Notifier/matrix:", message, specs); + const roomId = this.context.config.Get('MATRIX', 'ROOM_ID'); + console.log('Notifier/matrix:', message, specs); - this.context.matrix.sendTextMessage(roomId, message.message).finally(function() {}); + this.context.matrix.sendTextMessage(roomId, message.message).finally(null); } } diff --git a/packages/polkabot-plugin-notifier-twitter/src/index.ts b/packages/polkabot-plugin-notifier-twitter/src/index.ts index 69e75bb..4a4f50d 100644 --- a/packages/polkabot-plugin-notifier-twitter/src/index.ts +++ b/packages/polkabot-plugin-notifier-twitter/src/index.ts @@ -3,12 +3,12 @@ import { NotifierSpecs, PluginModule, PluginContext -} from "../../polkabot-api/src/plugin.interface"; -import { PolkabotNotifier } from "../../polkabot-api/src/PolkabotNotifier"; +} from '../../polkabot-api/src/plugin.interface'; +import { PolkabotNotifier } from '../../polkabot-api/src/PolkabotNotifier'; // TODO: we want that to extends PolkabotPlugin export default class TwitterNotifier extends PolkabotNotifier { - public channel: string = "twitter"; + public channel = 'twitter'; public constructor(module: PluginModule, context: PluginContext, config?) { super(module, context, config); @@ -16,6 +16,6 @@ export default class TwitterNotifier extends PolkabotNotifier { public notify(message: NotifierMessage, specs: NotifierSpecs): void { super.notify(message, specs); - console.log('Notifier/twitter: Placeholder') + console.log('Notifier/twitter: Placeholder'); } } diff --git a/packages/polkabot-plugin-operator/src/commandSet.ts b/packages/polkabot-plugin-operator/src/commandSet.ts index bf6e685..6e75aae 100644 --- a/packages/polkabot-plugin-operator/src/commandSet.ts +++ b/packages/polkabot-plugin-operator/src/commandSet.ts @@ -1,22 +1,22 @@ -import { PluginCommandSet } from "@polkabot/api/src/plugin.interface"; -import Operator from "."; +import { PluginCommandSet } from '@polkabot/api/src/plugin.interface'; +import Operator from '.'; export default function getCommandSet(ref: Operator): PluginCommandSet { return { - name: "Operator", - alias: "op", + name: 'Operator', + alias: 'op', commands: [ { - name: "status", - description: "Show status of the plugin", - argsRegexp: "", + name: 'status', + description: 'Show status of the plugin', + argsRegexp: '', adminOnly: false, handler: ref.cmdStatus }, - { - name: "help", - description: "Show some help", - argsRegexp: "", + { + name: 'help', + description: 'Show some help', + argsRegexp: '', adminOnly: false, handler: ref.cmdHelp } diff --git a/packages/polkabot-plugin-operator/src/index.ts b/packages/polkabot-plugin-operator/src/index.ts index ee19828..aa59705 100644 --- a/packages/polkabot-plugin-operator/src/index.ts +++ b/packages/polkabot-plugin-operator/src/index.ts @@ -4,7 +4,7 @@ import { PluginContext, CommandHandlerOutput, BotCommand, - IControllable, + Controllable, PolkabotPluginBase, PluginCommandSet, PolkabotPlugin, @@ -12,13 +12,18 @@ import { Room, SenderId, RoomId, -} from "@polkabot/api/src/plugin.interface"; -import moment from "moment"; -import getCommandSet from "./commandSet"; -import { PolkabotChatbot } from "@polkabot/api/src/PolkabotChatbot"; -import MatrixHelper from "./matrix-helper"; +} from '@polkabot/api/src/plugin.interface'; +import moment from 'moment'; +import getCommandSet from './commandSet'; +import { PolkabotChatbot } from '@polkabot/api/src/PolkabotChatbot'; +import MatrixHelper from './matrix-helper'; +// TODO: move that away +const capitalize: (string) => string = (s: string) => { + if (typeof s !== 'string') return ''; + return s.charAt(0).toUpperCase() + s.slice(1); +}; -export default class Operator extends PolkabotChatbot implements IControllable { +export default class Operator extends PolkabotChatbot implements Controllable { public commandSet: PluginCommandSet; package: any; controllables: any; @@ -38,9 +43,9 @@ export default class Operator extends PolkabotChatbot implements IControllable { } // TODO: move all handlers to a separate file - public cmdStatus(event: any, room: Room, ...args: any): CommandHandlerOutput { - const uptime_sec: number = process.uptime(); - const m = moment.duration(uptime_sec, "seconds"); + public cmdStatus(_event: any, room: Room, ..._args: any): CommandHandlerOutput { + const uptimeSec: number = process.uptime(); + const m = moment.duration(uptimeSec, 'seconds'); // this.answer(room.roomId); @@ -62,17 +67,17 @@ export default class Operator extends PolkabotChatbot implements IControllable { // TODO: later we could parse the msg below for keywords and try to make good guesses to focus the help a bit better // const msg: string = event.getContent().body; // fetch all the controllable, show their commands and deescriptions. - let message = `Here is also a list of all the loaded modules and their commands:
    `; - this.controllables.map((controllable: IControllable) => { + let message = 'Here is also a list of all the loaded modules and their commands:
      '; + this.controllables.map((controllable: Controllable) => { message += `
    • ${controllable.commandSet.name}:
      • `; controllable.commandSet.commands.map((command: PluginCommand) => { message += `
      • !${controllable.commandSet.alias} ${command.name}: ${command.description} !${ - command.adminOnly ? " (Master only)" : "" + command.adminOnly ? ' (Master only)' : '' }
      • `; }); - message += "
      "; + message += '
    '; }); - message += "
"; + message += ''; // this.answer( { // room, // message @@ -83,7 +88,7 @@ export default class Operator extends PolkabotChatbot implements IControllable { answers: [ { room, - message: `Hi there, I am happy you got in touch, let me see if I can help.
First of all, you probably should checkout the documentation at https://gitlab.com/Polkabot` + message: 'Hi there, I am happy you got in touch, let me see if I can help.
First of all, you probably should checkout the documentation at https://gitlab.com/Polkabot' }, { room, @@ -102,7 +107,7 @@ export default class Operator extends PolkabotChatbot implements IControllable { const hits = this.controllables.filter((c: PolkabotPluginBase) => c.commandSet.alias === cmd.module); const controllable = hits.length > 0 ? (hits[0] as PolkabotPlugin) : null; - if (!controllable) return null + if (!controllable) return null; console.log(`${controllable.module.name} could be able to do the job... checking supported commands`); const handler: PluginCommand = controllable.commandSet.commands.find(c => c.name === cmd.command); @@ -112,8 +117,8 @@ export default class Operator extends PolkabotChatbot implements IControllable { } private watchChat(): void { - this.context.matrix.on("Room.timeline", (event, room, _toStartOfTimeline) => { - if (event.getType() !== "m.room.message") { + this.context.matrix.on('Room.timeline', (event, room, _toStartOfTimeline) => { + if (event.getType() !== 'm.room.message') { return; } @@ -139,8 +144,8 @@ export default class Operator extends PolkabotChatbot implements IControllable { if (MatrixHelper.isSelf(senderId, this.config.Get('MATRIX', 'BOTUSER_ID'))) return; // If there is no ! and the string contains help, we try to help - if (msg.indexOf("!") < 0 && msg.toLowerCase().indexOf("help") > 0) { - console.log("Mentioning help in natural language"); + if (msg.indexOf('!') < 0 && msg.toLowerCase().indexOf('help') > 0) { + console.log('Mentioning help in natural language'); const output = this.cmdHelp(event, room); if (output.answers) { // this.answer(output.answers[0]) @@ -157,7 +162,7 @@ export default class Operator extends PolkabotChatbot implements IControllable { console.log(`No bot command found in: >${msg}<`); this.answer({ room, - message: "I was tought to smile when I don't get it. 😁" + message: 'I was tought to smile when I don\'t get it. 😁' }); } else { const cmdHandler = this.matchCommand(botCommand); @@ -175,10 +180,10 @@ export default class Operator extends PolkabotChatbot implements IControllable { }); } } else { - console.log(`No handler found`); + console.log('No handler found'); this.answer({ room, - message: "Hmmm no one told me about that command. 😁" + message: 'Hmmm no one told me about that command. 😁' }); return; } @@ -221,12 +226,12 @@ export default class Operator extends PolkabotChatbot implements IControllable { this.isBotMasterAndBotInRoom(room) // && isBotMessageRecipient ) { - console.log("Operator - Bot received message from Bot Master in direct message"); + console.log('Operator - Bot received message from Bot Master in direct message'); /** * Detect if the command received from the Bot Master is in * the following form: `!say ` or `!status` */ - let capture = msg.match(/^!(?\w+)(\s+(?.*?))??$/i) || []; + const capture = msg.match(/^!(?\w+)(\s+(?.*?))??$/i) || []; // console.log("Operator - captured from Bot Master: ", capture); if (capture.length > 0 && capture.groups.cmd) { const _cmd: string = capture.groups.cmd; @@ -315,33 +320,27 @@ export default class Operator extends PolkabotChatbot implements IControllable { * Check if the sender id of the user that sent the message * is the Bot Master's id */ - private isMaster(senderId: SenderId) { + private isMaster(senderId: SenderId): boolean { return senderId === this.context.config.Get('MATRIX', 'BOTMASTER_ID'); } // Is the chat room name the same name as the Bot's name // After string manipulation to get just the username from the Bot's // user id (i.e. @mybot:matrix.org ---> mybot) - public isBotMessageRecipient(room: Room) { + public isBotMessageRecipient(room: Room): boolean { return ( room.name === this.context.config.Get('MATRIX', 'BOTUSER_ID') - .split(":") + .split(':') .shift() .substring(1) ); } // Has the Bot Master initiated a direct chat with the Bot - private isBotMasterAndBotInRoom(room: Room) { + private isBotMasterAndBotInRoom(room: Room): boolean { const expectedDirectMessageRoomMemberIds = [this.context.config.Get('MATRIX', 'BOTMASTER_ID'), this.context.config.Get('MATRIX', 'BOTUSER_ID')]; const directChatRoomMemberIds = Object.keys(room.currentState.members); return expectedDirectMessageRoomMemberIds.every(val => directChatRoomMemberIds.includes(val)); } } - -// TODO: move that away -const capitalize = s => { - if (typeof s !== "string") return ""; - return s.charAt(0).toUpperCase() + s.slice(1); -}; diff --git a/packages/polkabot-plugin-operator/src/matrix-helper.ts b/packages/polkabot-plugin-operator/src/matrix-helper.ts index d0547fe..bbdc742 100644 --- a/packages/polkabot-plugin-operator/src/matrix-helper.ts +++ b/packages/polkabot-plugin-operator/src/matrix-helper.ts @@ -1,4 +1,4 @@ -import { RoomId } from "@polkabot/api/src/plugin.interface"; +import { RoomId } from '@polkabot/api/src/plugin.interface'; export default class MatrixHelper { @@ -8,7 +8,7 @@ export default class MatrixHelper { // throw new Error("Method not implemented."); } - public static isSelf(senderId, botUserId) { + public static isSelf(senderId, botUserId): boolean { return senderId === botUserId; } } diff --git a/packages/polkabot-plugin-operator/tests/commands.test.ts b/packages/polkabot-plugin-operator/tests/commands.test.ts index 3adb2c0..72fd373 100644 --- a/packages/polkabot-plugin-operator/tests/commands.test.ts +++ b/packages/polkabot-plugin-operator/tests/commands.test.ts @@ -1,28 +1,28 @@ -import { expect } from "chai"; -import { PolkabotChatbot } from "../../polkabot-api/src/PolkabotChatbot"; +import { expect } from 'chai'; +import { PolkabotChatbot } from '../../polkabot-api/src/PolkabotChatbot'; -describe("Command parser should pass", function() { +describe('Command parser should pass', function() { [ { - mod: "!mod", - cmd: "cmd", - argStr: "arg1 arg2=18", - args: ["arg1", "arg2=18"] + mod: '!mod', + cmd: 'cmd', + argStr: 'arg1 arg2=18', + args: ['arg1', 'arg2=18'] }, { - mod: "!mod", - cmd: "cmd", - argStr: "", + mod: '!mod', + cmd: 'cmd', + argStr: '', args: null } ].forEach((value, index) => { const { mod, cmd, argStr, args } = value; - const command = `${mod} ${cmd}${argStr ? " " + argStr : ""}`; + const command = `${mod} ${cmd}${argStr ? ' ' + argStr : ''}`; it(`Parsing test ${index}: ${command}`, done => { const msg = command; const res = PolkabotChatbot.getBotCommand(msg); - expect(res.module).equal(mod.replace("!", "")); + expect(res.module).equal(mod.replace('!', '')); expect(res.command).equal(cmd); expect(res.args).to.deep.equal(args); done(); @@ -30,26 +30,26 @@ describe("Command parser should pass", function() { }); }); -describe("Command parser should fail", function() { +describe('Command parser should fail', function() { [ { - mod: "!", - cmd: "", - argStr: "arg1 arg2=18" + mod: '!', + cmd: '', + argStr: 'arg1 arg2=18' }, { - mod: "!mod", - cmd: "", - argStr: "" + mod: '!mod', + cmd: '', + argStr: '' }, { - mod: "junk", - cmd: "", - argStr: "" + mod: 'junk', + cmd: '', + argStr: '' } ].forEach((value, index) => { const { mod, cmd, argStr } = value; - const command = `${mod} ${cmd}${argStr ? " " + argStr : ""}`; + const command = `${mod} ${cmd}${argStr ? ' ' + argStr : ''}`; it(`Parsing test ${index}: ${command}`, done => { const msg = command; const res = PolkabotChatbot.getBotCommand(msg); diff --git a/packages/polkabot-plugin-reporter/src/index.ts b/packages/polkabot-plugin-reporter/src/index.ts index 324f9de..60bbccf 100644 --- a/packages/polkabot-plugin-reporter/src/index.ts +++ b/packages/polkabot-plugin-reporter/src/index.ts @@ -1,18 +1,18 @@ -import BN from "bn.js"; -import moment from "moment"; +import BN from 'bn.js'; +import moment from 'moment'; // import "moment-duration-format"; import { - PolkabotWorker, - NotifierMessage, NotifierSpecs, PluginModule, PluginContext -} from "@polkabot/api/src/plugin.interface"; +} from '@polkabot/api/src/plugin.interface'; + +import { PolkabotWorker } from '@polkabot/api/src/PolkabotWorker'; // TODO: Will move to hash later on // import xxhash from "@polkadot/util-crypto/xxhash/xxhash64/asHex"; -import blake2 from "@polkadot/util-crypto/blake2/asHex"; +import blake2 from '@polkadot/util-crypto/blake2/asHex'; enum Severity { INFO, @@ -36,7 +36,7 @@ type BlockMoment = { export default class Reporter extends PolkabotWorker { private cache: any; // TODO FIXME private notifierSpecs: NotifierSpecs = { - notifiers: ["matrix"] + notifiers: ['matrix'], }; private consts: any; @@ -44,23 +44,24 @@ export default class Reporter extends PolkabotWorker { public constructor(mod: PluginModule, context: PluginContext, config?) { super(mod, context, config); this.cache = {}; - this.config = {}; + // this.config = {}; this.consts = this.context.polkadot.consts; } /** Check the last blocks and figure out the block time. - * This should gives around 6.0 seconds on Kusama. - */ - async getAverageBlockTime() { + * This should gives around 6.0 seconds on Kusama. + */ + async getAverageBlockTime(): Promise { const NB_SAMPLES = 3; // less is faster const STEP = 10; // sample over a longer period let last = undefined; - let durations = []; + const durations = []; const api = this.context.polkadot; for (let i = this.cache.block, j = 0; j < NB_SAMPLES; j++, i -= STEP) { const h = await api.rpc.chain.getBlockHash(i); - const now = new Date((await api.query.timestamp.now.at(h)).toNumber()).getTime() * 1.0; + const now = + new Date((await api.query.timestamp.now.at(h)).toNumber()).getTime() * 1.0; if (last) { durations.push((last - now) / 1000.0); } @@ -70,69 +71,80 @@ export default class Reporter extends PolkabotWorker { } /** Returns an object telling us when a block will/did show up */ - async getBlockMoment(block: BN) { + async getBlockMoment(block: BN): Promise { // const currentBlock = (await this.context.polkadot.rpc.chain.getBlock()).block.header.number.toNumber(); const blockTime = await this.getAverageBlockTime(); - const h = await this.context.polkadot.rpc.chain.getBlockHash(this.cache.blockNumber); - const now = new Date((await this.context.polkadot.query.timestamp.now.at(h)).toNumber()); + const h = await this.context.polkadot.rpc.chain.getBlockHash( + this.cache.blockNumber + ); + const now = new Date( + (await this.context.polkadot.query.timestamp.now.at(h)).toNumber() + ); const future = block > this.cache.blockNumber; - const other = new Date(now.getTime() + (this.cache.blockNumber as BN).sub(block).toNumber() * blockTime * 1000); + const other = new Date( + now.getTime() + + (this.cache.blockNumber as BN).sub(block).toNumber() * blockTime * 1000 + ); const duration = Math.abs(now.getTime() - other.getTime()) / 1000; return { future, duration, date: other, - msg: `${future ? "in" : "for"} ${duration} seconds` // TODO with Moment.js we dont need that + message: `${future ? 'in' : 'for'} ${duration} seconds`, // TODO with Moment.js we dont need that }; } public start(): void { - console.log("Reporter - Starting with config:", this.config); + console.log('Reporter - Starting with config:', this.config); this.watchChain().catch(error => { - console.error("Reporter - Error subscribing to chain: ", error); + console.error('Reporter - Error subscribing to chain: ', error); }); } public stop(): void { - console.log("Reporter - STOPPING"); + console.log('Reporter - STOPPING'); // TODO: do all the unsub here } // TODO: switch from string to Announcement - private announce(message: string) { + private announce(message: string): void { this.context.polkabot.notify( { - message + message, }, this.notifierSpecs ); } - buf2hex(buffer) { + buf2hex(buffer): string { // buffer is an ArrayBuffer - return Array.prototype.map.call(new Uint8Array(buffer), x => ("00" + x.toString(16)).slice(-2)).join(""); + return Array.prototype.map + .call(new Uint8Array(buffer), x => ('00' + x.toString(16)).slice(-2)) + .join(''); } - async subscribeChainBlockHeader() { + async subscribeChainBlockHeader(): Promise { await this.context.polkadot.rpc.chain.subscribeNewHeads(header => { - const KEY = "blockNumber"; + const KEY = 'blockNumber'; if (header) { this.cache[KEY] = header.number.unwrap().toBn(); } }); } - async watchActiveValidatorCount() { + async watchActiveValidatorCount(): Promise { // const validatorsSubscriptionUnsub = // can be used to unsubscribe await this.context.polkadot.query.session.validators(validators => { - const KEY = "validators"; + const KEY = 'validators'; if (!this.cache[KEY]) this.cache[KEY] = validators; if (this.cache[KEY] && this.cache[KEY].length !== validators.length) { - console.log("Reporter - Active Validator count: ", validators.length); - this.announce(`Active Validator count has changed from ${this.cache[KEY].length} to ${validators.length}`); + console.log('Reporter - Active Validator count: ', validators.length); + this.announce( + `Active Validator count has changed from ${this.cache[KEY].length} to ${validators.length}` + ); this.cache[KEY] = validators; } else { console.log(`Reporter - Active Validator count: ${validators.length}`); @@ -140,35 +152,39 @@ export default class Reporter extends PolkabotWorker { }); } - async watchValidatorSlotCount() { + async watchValidatorSlotCount(): Promise { await this.context.polkadot.query.staking.validatorCount(validatorCount => { - const KEY = "validatorCount"; + const KEY = 'validatorCount'; if (!this.cache[KEY]) this.cache[KEY] = validatorCount; if (this.cache[KEY] && this.cache[KEY] !== validatorCount) { this.cache[KEY] = validatorCount; - console.log("Reporter - Validator count:", validatorCount.toString(10)); - this.announce(`The number of validator slots has changed. It is now ${validatorCount.toString(10)}`); + console.log('Reporter - Validator count:', validatorCount.toString(10)); + this.announce( + `The number of validator slots has changed. It is now ${validatorCount.toString( + 10 + )}` + ); } }); } - async watchRuntimeCode() { + async watchRuntimeCode(): Promise { await this.context.polkadot.query.substrate.code(code => { - const KEY = "runtime"; + const KEY = 'runtime'; const hash = blake2(code, 16); if (!this.cache[KEY]) this.cache[KEY] = { hash, code }; if (this.cache[KEY] && this.cache[KEY].hash !== hash) { this.cache[KEY] = { hash, code }; - console.log("Reporter - Runtime Code hash changed:", hash); + console.log('Reporter - Runtime Code hash changed:', hash); // const codeInHex = '0x' + this.buf2hex(code) // console.log('Runtime Code hex changed', codeInHex) this.announce( `Runtime code hash has changed. The hash is now ${hash}. The runtime is now ${ - code ? (code.length / 1024).toFixed(2) : "???" + code ? (code.length / 1024).toFixed(2) : '???' } kb.` ); } else { @@ -182,20 +198,20 @@ export default class Reporter extends PolkabotWorker { // - our cache storage key: proposalCount. It could even be generated. // - a transformation (optional) for the 'value'. For instance, for the runtime, we need to hash first. // - a message template if the value changes - async watchCouncilMotionsProposalCount() { + async watchCouncilMotionsProposalCount(): Promise { await this.context.polkadot.query.council.proposalCount(proposalCount => { - const KEY = "proposalCount"; + const KEY = 'proposalCount'; const count = new BN(proposalCount); if (!this.cache[KEY]) this.cache[KEY] = count; if (this.cache[KEY] && !this.cache[KEY].eq(count)) { this.cache[KEY] = count; - console.log("Reporter - Proposal count changed:", count.toString(10)); + console.log('Reporter - Proposal count changed:', count.toString(10)); const id = count.sub(new BN(1)); this.announce( `A new council motion proposal is available (#${id}), check your UI at https://polkadot.js.org/apps/#/democracy. - You will be able to vote shortly, a new referendum will show up in the UI.` +You will be able to vote shortly, a new referendum will show up in the UI.` ); } else { console.log(`Reporter - Proposal count: ${count.toString(10)}`); @@ -203,56 +219,68 @@ export default class Reporter extends PolkabotWorker { }); } - async watchPublicProposalCount() { - await this.context.polkadot.query.democracy.publicPropCount(async (publicPropCount: BN) => { - const KEY = "publicPropCount"; - console.log("Reporter - publicPropCount:", publicPropCount.toString(10)); - - const count = publicPropCount; - if (!this.cache[KEY]) this.cache[KEY] = count; - if (this.cache[KEY] && !this.cache[KEY].eq(count)) { - this.cache[KEY] = count; - const deadline = this.cache.blockNumber.add(this.consts.democracy.votingPeriod) as BN; - const blockMoment = await this.getBlockMoment(deadline); - // const votingTimeInMinutes = - // parseInt(this.consts.democracy.votingPeriod.mul(this.cache.minimumPeriod).toString(10)) / 60; - console.log("Reporter - Proposal count changed:", count.toString(10)); - const id = count.sub(new BN(1)).toString(10); - - this.announce( - `@room New Proposal (#${id}) available. Check your UI at https://polkadot.js.org/apps/#/democracy. - You can second Proposal #${id} during the next ${this.context.polkadot.consts.democracy.votingPeriod.toString(10)} blocks. - That means a deadline at block #${deadline.toString(10)}, don't miss it! - the deadline to vote is ${moment(blockMoment.date).fromNow()}.` - ); - } else { - console.log(`Reporter - Proposal count: ${count.toString(10)}`); + async watchPublicProposalCount(): Promise { + await this.context.polkadot.query.democracy.publicPropCount( + async (publicPropCount: BN) => { + const KEY = 'publicPropCount'; + console.log('Reporter - publicPropCount:', publicPropCount.toString(10)); + + const count = publicPropCount; + if (!this.cache[KEY]) this.cache[KEY] = count; + if (this.cache[KEY] && !this.cache[KEY].eq(count)) { + this.cache[KEY] = count; + const deadline = this.cache.blockNumber.add( + this.consts.democracy.votingPeriod + ) as BN; + const blockMoment = await this.getBlockMoment(deadline); + // const votingTimeInMinutes = + // parseInt(this.consts.democracy.votingPeriod.mul(this.cache.minimumPeriod).toString(10)) / 60; + console.log('Reporter - Proposal count changed:', count.toString(10)); + const id = count.sub(new BN(1)).toString(10); + + this.announce( + `@room New Proposal (#${id}) available. Check your UI at https://polkadot.js.org/apps/#/democracy. +You can second Proposal #${id} during the next ${this.context.polkadot.consts.democracy.votingPeriod.toString( + 10 +)} blocks. +That means a deadline at block #${deadline.toString(10)}, don't miss it! +the deadline to vote is ${moment(blockMoment.date).fromNow()}.` + ); + } else { + console.log(`Reporter - Proposal count: ${count.toString(10)}`); + } } - }); + ); } - async watchReferendumCount() { + async watchReferendumCount(): Promise { await this.context.polkadot.query.democracy.referendumCount(referendumCount => { - const KEY = "referendumCount"; - console.log("Reporter - referendumCount:", referendumCount.toString(10)); + const KEY = 'referendumCount'; + console.log('Reporter - referendumCount:', referendumCount.toString(10)); const count = new BN(referendumCount); if (!this.cache[KEY]) this.cache[KEY] = count; if (this.cache[KEY] && !this.cache[KEY].eq(count)) { this.cache[KEY] = count; - const deadline = this.cache.blockNumber.add(this.context.polkadot.consts.democracy.votingPeriod); + const deadline = this.cache.blockNumber.add( + this.context.polkadot.consts.democracy.votingPeriod + ); const votingTimeInMinutes = - parseInt(this.context.polkadot.consts.democracy.votingPeriod.mul(this.cache.minimumPeriod).toString(10)) / 60; - console.log("Reporter - Referendum count changed:", count.toString(10)); + parseInt( + this.context.polkadot.consts.democracy.votingPeriod + .mul(this.cache.minimumPeriod) + .toString(10) + ) / 60; + console.log('Reporter - Referendum count changed:', count.toString(10)); const id = count.sub(new BN(1)).toString(10); this.announce( `@room New referendum (#${id}) available. Check your UI at https://polkadot.js.org/apps/#/democracy. - You can vote for referendum #${id} during the next ${this.context.polkadot.consts.democracy.votingPeriod.toString( - 10 - )} blocks. - That means a deadline at block #${deadline.toString(10)}, don't miss it! - You have around ${votingTimeInMinutes.toFixed(2)} minutes to vote.` +You can vote for referendum #${id} during the next ${this.context.polkadot.consts.democracy.votingPeriod.toString( + 10 +)} blocks. +That means a deadline at block #${deadline.toString(10)}, don't miss it! +You have around ${votingTimeInMinutes.toFixed(2)} minutes to vote.` ); } else { console.log(`Reporter - Referendum count: ${count.toString(10)}`); @@ -260,7 +288,7 @@ export default class Reporter extends PolkabotWorker { }); } - async watchChain() { + async watchChain(): Promise { await this.subscribeChainBlockHeader(); // Validators diff --git a/packages/polkabot-plugin-stallwatcher/src/index.ts b/packages/polkabot-plugin-stallwatcher/src/index.ts index 551c052..1631409 100644 --- a/packages/polkabot-plugin-stallwatcher/src/index.ts +++ b/packages/polkabot-plugin-stallwatcher/src/index.ts @@ -1,6 +1,11 @@ #!/usr/bin/env node -import BN from "bn.js"; -import { PolkabotWorker, PluginModule, PluginContext } from "@polkabot/api/src/plugin.interface"; +import BN from 'bn.js'; +import { PluginModule, PluginContext } from '@polkabot/api/src/plugin.interface'; +import { PolkabotWorker } from '@polkabot/api/src/PolkabotWorker'; + +type StallWatcherConfig = { + duration: number; +} // TODO we may want to catch and alert if the network resume at a block that is not lastBlock+1 export default class StallWatcher extends PolkabotWorker { @@ -8,24 +13,29 @@ export default class StallWatcher extends PolkabotWorker { private lastBlockTime: Date; private lastBlockNumber: BN; private watchdogId: NodeJS.Timeout; + private params: StallWatcherConfig; public constructor(mod: PluginModule, context: PluginContext, config?) { super(mod, context, config); - this.config = { - duration: parseInt(process.env.POLKABOT_PLUGIN_STALLWATCHER_DURATION) || 30 // If a block takes longer than n seconds, we trigger the alert + this.params = { + duration: this.config.Get('STALLWATCHER', 'DURATION') }; this.stalled = null; } public start(): void { - console.log("StallWatcher - Starting with config:", this.config); + console.log('StallWatcher - Starting with config:', this.params); this.watchChain().catch(error => { - console.error("StallWatcher - Error subscribing to chain head: ", error); + console.error('StallWatcher - Error subscribing to chain head: ', error); }); // this.watchChat(); } + // TODO: missing impl. + public stop(): void { + throw new Error('Missing impl.') + } // showInstructions() { // // Send message to the room notifying users how to use the bot // const messageBody = @@ -39,12 +49,12 @@ export default class StallWatcher extends PolkabotWorker { // ); // } - async watchChain() { + async watchChain(): Promise { // Reference: https://polkadot.js.org/api/examples/promise/02_listen_to_blocks/ await this.context.polkadot.rpc.chain.subscribeNewHeads(header => { clearTimeout(this.watchdogId); // console.log('StallWatcher: ' + this.getDuration().toFixed(2) + 's') - this.watchdogId = setTimeout(this.alert.bind(this), this.config.duration * 1000); + this.watchdogId = setTimeout(this.alert.bind(this), this.params.duration * 1000); this.lastBlockNumber = header.number.unwrap().toBn(); if (this.stalled) { this.context.polkabot.notify( @@ -53,7 +63,7 @@ export default class StallWatcher extends PolkabotWorker { 10 )} came in after ${this.getDuration().toFixed(2)}s` }, - { notifiers: ["matrix"] } + { notifiers: ['matrix'] } ); this.stalled = false; @@ -62,20 +72,20 @@ export default class StallWatcher extends PolkabotWorker { }); } - private getDuration() { + private getDuration(): number { return (new Date().getTime() - this.lastBlockTime.getTime()) / 1000; } - private alert() { + private alert(): void { this.stalled = true; this.context.polkabot.notify( { message: `CRITICAL: Network seems to be stalled !!! Block #${this.lastBlockNumber.toString(10)} was seen ${ - this.config.duration + this.params.duration }s ago.` }, - { notifiers: ["matrix"] } + { notifiers: ['matrix'] } ); } @@ -175,9 +185,9 @@ export default class StallWatcher extends PolkabotWorker { // case "duration": // const val = parseFloat(args); // if (!isNaN(val)) { - // this.config.duration = val; + // this.params.duration = val; // } - // this.answer(room.roomId, `Threshold changed to ${this.config.duration}s`); + // this.answer(room.roomId, `Threshold changed to ${this.params.duration}s`); // break; // default: // this.answer( diff --git a/packages/polkabot/src/index.ts b/packages/polkabot/src/index.ts index 39f7773..918db2b 100644 --- a/packages/polkabot/src/index.ts +++ b/packages/polkabot/src/index.ts @@ -1,38 +1,37 @@ -import Olm from "olm"; -import { ApiPromise, WsProvider } from "@polkadot/api"; -import minimongo from "minimongo"; -import Datastore from "nedb"; - -import pkg from "../package.json"; -import PluginScanner from "./lib/plugin-scanner"; -import PluginLoader from "./lib/plugin-loader"; -import sdk from "matrix-js-sdk"; +import Olm from 'olm'; +import { ApiPromise, WsProvider } from '@polkadot/api'; +import minimongo from 'minimongo'; +import Datastore from 'nedb'; + +import pkg from '../package.json'; +import PluginScanner from './lib/plugin-scanner'; +import PluginLoader from './lib/plugin-loader'; +import sdk from 'matrix-js-sdk'; // import { IPolkabotConfig } from "./types"; import { ConfigManager } from 'confmgr'; -import { assert } from "@polkadot/util"; +import { assert } from '@polkadot/util'; import { PluginContext, PolkabotPlugin, NotifierMessage, NotifierSpecs, PluginModule, - IControllable, + Controllable, Type, -} from "../../polkabot-api/src/plugin.interface"; -import { PolkabotNotifier } from "../../polkabot-api/src/PolkabotNotifier"; -import { PolkabotChatbot } from "../../polkabot-api/src/PolkabotChatbot"; -import { PolkabotWorker } from "../../polkabot-api/src/PolkabotWorker"; +} from '../../polkabot-api/src/plugin.interface'; +import { PolkabotNotifier } from '../../polkabot-api/src/PolkabotNotifier'; +import { PolkabotChatbot } from '../../polkabot-api/src/PolkabotChatbot'; +import { PolkabotWorker } from '../../polkabot-api/src/PolkabotWorker'; -//@ts-ignore -global.Olm = Olm; +(global as any).Olm = Olm; // comment out if you need to trouble shoot matrix issues // matrix.on('event', function (event) { // console.log(event.getType()) // }) -export interface INotifiersTable { +export interface NotifiersTable { [type: string]: PolkabotNotifier[]; } export default class Polkabot { @@ -41,13 +40,13 @@ export default class Polkabot { private config: any; private matrix: any; private polkadot: any; - private notifiersTable: INotifiersTable = {}; - private controllablePlugins: IControllable[] = []; + private notifiersTable: NotifiersTable = {}; + private controllablePlugins: Controllable[] = []; private chatBots: PolkabotChatbot[] = []; public constructor(..._args: any[]) { // this.args = args - this.db = new Datastore({ filename: "polkabot.db" }); + this.db = new Datastore({ filename: 'polkabot.db' }); } private isWorker(candidate: PolkabotPlugin): candidate is PolkabotWorker { @@ -72,8 +71,8 @@ export default class Polkabot { * polkabot itself does nothing about it. it searches in the list of notifiers which one(s) can do the job and * delegate them the task */ - public notify(message: NotifierMessage, specs: NotifierSpecs) { - console.log("Notifier requested", message, specs); + public notify(message: NotifierMessage, specs: NotifierSpecs): void { + console.log('Notifier requested', message, specs); Object.keys(this.notifiersTable) .filter(channel => specs.notifiers.includes(channel)) @@ -85,44 +84,44 @@ export default class Polkabot { } /** This adds a new notifier to those Polkabot is aware of */ - private registerNotifier(notifier: PolkabotNotifier) { - assert(notifier.channel, "No channel defined"); + private registerNotifier(notifier: PolkabotNotifier): void { + assert(notifier.channel, 'No channel defined'); const channel = notifier.channel; if (!this.notifiersTable[channel]) this.notifiersTable[channel] = []; this.notifiersTable[channel].push(notifier); // console.log("notifierTable", this.notifiersTable); } - /** Register all the IControllable we find. They will be passed to the Operator. */ - private registerControllable(controllable: IControllable) { - assert(controllable.commandSet, "No commands defined"); - console.log("Registering controllable:", controllable.commandSet.name); + /** Register all the Controllable we find. They will be passed to the Operator. */ + private registerControllable(controllable: Controllable): void { + assert(controllable.commandSet, 'No commands defined'); + console.log('Registering controllable:', controllable.commandSet.name); this.controllablePlugins.push(controllable); // console.log("Controllables", this.controllablePlugins); } - private registerChatbot(bot: PolkabotChatbot) { - console.log("Registering Chat bot:", bot.module.name); + private registerChatbot(bot: PolkabotChatbot): void { + console.log('Registering Chat bot:', bot.module.name); this.chatBots.push(bot); } private async loadPlugins(): Promise { - return new Promise(async (resolve, _reject) => { - console.log("Polkabot - Loading plugins: ------------------------"); - const pluginScanner = new PluginScanner(pkg.name + "-plugin"); - let plugins = await pluginScanner.scan(); // TODO: switch back to a const + return new Promise(async (resolve, _reject) => { // eslint-disable-line no-async-promise-executor + console.log('Polkabot - Loading plugins: ------------------------'); + const pluginScanner = new PluginScanner(pkg.name + '-plugin'); + let plugins = await pluginScanner.scan(); - console.log("Plugins found (incl. disabled ones):"); + console.log('Plugins found (incl. disabled ones):'); plugins.map(p => { console.log(`- ${p.name}`); }); // Here we check the ENV content to see if plugins should be disabled (= not loaded) - console.log("Filtering out disabled plugins..."); + console.log('Filtering out disabled plugins...'); plugins = plugins.filter((p: PluginModule) => { const DISABLED_KEY = `POLKABOT_${p.shortName}_DISABLED`; - const disabled: boolean = (process.env[DISABLED_KEY] || "false") === "true"; - console.log(disabled ? "❌" : "✅", p.shortName); + const disabled: boolean = (process.env[DISABLED_KEY] || 'false') === 'true'; + console.log(disabled ? '❌' : '✅', p.shortName); return !disabled; }); @@ -164,14 +163,14 @@ export default class Polkabot { ); }); Promise.all(loads).then(_ => { - console.log("Polkabot - Done loading plugins: ------------------------"); + console.log('Polkabot - Done loading plugins: ------------------------'); resolve(); }); }); } - private attachControllableToBots() { - console.log("Passing controllables to following bots:"); + private attachControllableToBots(): void { + console.log('Passing controllables to following bots:'); this.chatBots.map((bot: PolkabotChatbot) => { console.log(` > ${bot.module.name}`); bot.registerControllables(this.controllablePlugins); @@ -209,13 +208,13 @@ export default class Polkabot { return this.attachControllableToBots(); }) .then(_ => { - console.log("Done loading plugins"); + console.log('Done loading plugins'); }); } - public async run() { + public async run(): Promise { console.log(`${pkg.name} v${pkg.version}`); - console.log("==========================="); + console.log('==========================='); // const configLocation = this.args.config // ? this.args.config @@ -249,7 +248,7 @@ export default class Polkabot { const LocalDb = minimongo.MemoryDb; this.db = new LocalDb(); - this.db.addCollection("config"); + this.db.addCollection('config'); this.db.config.upsert( { botMasterId: this.config.values.MATRIX.BOTMASTER_ID }, @@ -261,7 +260,7 @@ export default class Polkabot { ); // TODO - refactor using async/await. See https://github.com/matrix-org/matrix-js-sdk/issues/789 - console.log("Polkabot - creating client"); + console.log('Polkabot - creating client'); this.matrix = sdk.createClient({ baseUrl: this.config.values.MATRIX.BASE_URL, @@ -271,27 +270,27 @@ export default class Polkabot { if (this.isCustomBaseUrl()) { const data = await this.matrix - .login("m.login.password", { + .login('m.login.password', { user: this.config.values.MATRIX.LOGIN_USER_ID, password: this.config.values.MATRIX.LOGIN_USER_PASSWORD }) .catch(error => { - console.error("Polkabot: Error logging into matrix:", error); + console.error('Polkabot: Error logging into matrix:', error); }); if (data) { - console.log("Polkabot - Logged in with credentials: ", data); + console.log('Polkabot - Logged in with credentials: ', data); } } - this.matrix.once("sync", (state, _prevState, data) => { + this.matrix.once('sync', (state, _prevState, data) => { switch (state) { - case "PREPARED": + case 'PREPARED': console.log(`Polkabot - Detected client sync state: ${state}`); this.start(state); break; default: - console.log("Polkabot - Error. Unable to establish client sync state, state =", state, data); + console.log('Polkabot - Error. Unable to establish client sync state, state =', state, data); process.exit(1); } }); @@ -318,8 +317,8 @@ export default class Polkabot { this.matrix.startClient(this.config.values.MATRIX.MESSAGES_TO_SHOW); } - private isCustomBaseUrl() { + private isCustomBaseUrl(): boolean { const baseUrl = this.config.values.MATRIX.BASE_URL; - return baseUrl && baseUrl !== "https://matrix.org"; + return baseUrl && baseUrl !== 'https://matrix.org'; } } diff --git a/packages/polkabot/src/lib/plugin-loader.ts b/packages/polkabot/src/lib/plugin-loader.ts index fbe8051..469105a 100644 --- a/packages/polkabot/src/lib/plugin-loader.ts +++ b/packages/polkabot/src/lib/plugin-loader.ts @@ -1,13 +1,13 @@ /* eslint-disable @typescript-eslint/no-var-requires */ -import * as fs from "fs"; +import * as fs from 'fs'; import { PluginModule, PluginContext, PolkabotPlugin, -} from "../../../polkabot-api/src/plugin.interface"; -import { PolkabotNotifier } from "../../../polkabot-api/src/PolkabotNotifier"; -import { PolkabotWorker } from "../../../polkabot-api/src/PolkabotWorker"; -import { PolkabotChatbot } from "../../../polkabot-api/src/PolkabotChatbot"; +} from '../../../polkabot-api/src/plugin.interface'; +import { PolkabotNotifier } from '../../../polkabot-api/src/PolkabotNotifier'; +import { PolkabotWorker } from '../../../polkabot-api/src/PolkabotWorker'; +import { PolkabotChatbot } from '../../../polkabot-api/src/PolkabotChatbot'; export default class PluginLoader { // private static getType(mod: PluginModule) { @@ -20,7 +20,7 @@ export default class PluginLoader { console.log(`Loading ${mod.name} from ${mod.path}`); return new Promise((resolve, _reject) => { fs.realpath(mod.path, async (err, pluginPath) => { - if (err) console.log("ERR:", err); + if (err) console.log('ERR:', err); const myModule = (await import(pluginPath)).default; // console.log("Module", myModule); @@ -43,7 +43,7 @@ export default class PluginLoader { plugin = new myModule(mod, context) as PolkabotChatbot; break; default: - throw new Error("Plugin type not supported"); + throw new Error('Plugin type not supported'); } console.log( diff --git a/packages/polkabot/src/lib/plugin-scanner.ts b/packages/polkabot/src/lib/plugin-scanner.ts index 3c6ccf3..2fa8cc9 100644 --- a/packages/polkabot/src/lib/plugin-scanner.ts +++ b/packages/polkabot/src/lib/plugin-scanner.ts @@ -1,7 +1,7 @@ -import * as path from "path"; -import * as fs from "fs"; -import findNodeModules from "find-node-modules"; -import { PluginModule } from "../../../polkabot-api/src/plugin.interface"; +import * as path from 'path'; +import * as fs from 'fs'; +import findNodeModules from 'find-node-modules'; +import { PluginModule } from '../../../polkabot-api/src/plugin.interface'; export default class PluginScanner { private name: string; @@ -12,13 +12,13 @@ export default class PluginScanner { public scanold(cb, done): void { // console.log('dbg', path.dirname(process.argv0), __filename, __dirname) - const scriptLocation = path.join(path.dirname(process.argv[1]), ".."); - console.log("script loc", scriptLocation); + const scriptLocation = path.join(path.dirname(process.argv[1]), '..'); + console.log('script loc', scriptLocation); const searchPaths: string[] = findNodeModules({ cwd: scriptLocation, relative: false }); // path.join(scriptLocation, "../lib/node_modules"), // path.join(__dirname, '../../../node_modules') - console.log("PluginScanner scanning searchPaths for Polkabot plugins: ", searchPaths); + console.log('PluginScanner scanning searchPaths for Polkabot plugins: ', searchPaths); const modules = []; searchPaths.map(p => { @@ -30,7 +30,7 @@ export default class PluginScanner { items .filter(i => i.indexOf(this.name) === 0) .map(plugin => { - console.log("Plugin detected:", plugin); + console.log('Plugin detected:', plugin); const mod = { name: plugin, path: path.join(p, plugin) @@ -46,20 +46,20 @@ export default class PluginScanner { /** input: polkabot-plugin-foo-bar * output: FOO_BAR */ - public static getShortName(name: string) { - return name.replace('polkabot-plugin-', '').replace('-', '_').toUpperCase() + public static getShortName(name: string): string { + return name.replace('polkabot-plugin-', '').replace('-', '_').toUpperCase(); } - public async scan() { + public async scan(): Promise { return new Promise(resolve => { // console.log('dbg', path.dirname(process.argv0), __filename, __dirname) - const scriptLocation = path.join(path.dirname(process.argv[1]), ".."); - console.log("script loc", scriptLocation); + const scriptLocation = path.join(path.dirname(process.argv[1]), '..'); + console.log('script loc', scriptLocation); const searchPaths: string[] = findNodeModules({ cwd: scriptLocation, relative: false }); // path.join(scriptLocation, "../lib/node_modules"), // path.join(__dirname, '../../../node_modules') - const pattern = "polkabot"; + const pattern = 'polkabot'; const modules = []; // TODO the following helps find the @polkabot/stuff diff --git a/packages/polkabot/src/polkabot.ts b/packages/polkabot/src/polkabot.ts index 3e13b49..ca5a559 100755 --- a/packages/polkabot/src/polkabot.ts +++ b/packages/polkabot/src/polkabot.ts @@ -1,5 +1,5 @@ #!/usr/bin/env node -import Polkabot from './index' +import Polkabot from './index'; // TODO: swap index.ts and polkabot.ts @@ -8,8 +8,8 @@ const argv = require('yargs') .help('h') .alias('h', 'help') .epilog('chevdor-(C) 2018-2020') - .argv + .argv; -const polkabot = new Polkabot(argv) +const polkabot = new Polkabot(argv); -polkabot.run() +polkabot.run(); diff --git a/packages/polkabot/src/types.ts b/packages/polkabot/src/types.ts index 0c34346..e977ba7 100644 --- a/packages/polkabot/src/types.ts +++ b/packages/polkabot/src/types.ts @@ -11,11 +11,11 @@ export interface EnvDictionnary { /** This interface describes how the Polkabot Config * object looks like. */ -export interface IPolkabotConfig { +export interface PolkabotConfig { polkadot: { nodeName: string; // This is just for you to remember. i.e. 'Crash Override' host: string; // WebSocket host:port, usually :9944. i.e. 'ws://127.0.0.1:9944' - }, + }; matrix: { botMasterId: string; // Who is managing the bot. i.e. '@you:matrix.org' roomId: string; // In what room is the bot active by default. i.e. '!:matrix.org' diff --git a/yarn.lock b/yarn.lock index f36903a..7fc7a00 100644 --- a/yarn.lock +++ b/yarn.lock @@ -673,24 +673,11 @@ append-transform@^2.0.0: dependencies: default-require-extensions "^3.0.0" -aproba@^1.0.3: - version "1.2.0" - resolved "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" - integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== - archy@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" integrity sha1-+cjBN1fMHde8N5rHeyxipcKGjEA= -are-we-there-yet@~1.1.2: - version "1.1.5" - resolved "https://registry.npmjs.org/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.3" resolved "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" @@ -1773,11 +1760,6 @@ chokidar@^3.2.2: optionalDependencies: fsevents "~2.1.2" -chownr@^1.1.1: - version "1.1.4" - resolved "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" - integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== - ci-info@^1.5.0: version "1.6.0" resolved "https://registry.npmjs.org/ci-info/-/ci-info-1.6.0.tgz#2ca20dbb9ceb32d4524a683303313f0304b1e497" @@ -1863,11 +1845,6 @@ cliui@^6.0.0: strip-ansi "^6.0.0" wrap-ansi "^6.2.0" -code-point-at@^1.0.0: - version "1.1.0" - resolved "https://registry.npmjs.org/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.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" @@ -1962,11 +1939,6 @@ confmgr@^1.0.3: typescript "^3.8.3" yaml "^1.8.2" -console-control-strings@^1.0.0, console-control-strings@~1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" - integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= - contains-path@^0.1.0: version "0.1.0" resolved "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" @@ -2211,11 +2183,6 @@ delayed-stream@~1.0.0: resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= -delegates@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" - integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= - detect-file@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7" @@ -2228,11 +2195,6 @@ detect-indent@^4.0.0: dependencies: repeating "^2.0.0" -detect-libc@^1.0.2: - version "1.0.3" - resolved "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" - integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= - diff@3.5.0: version "3.5.0" resolved "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" @@ -3275,13 +3237,6 @@ fromentries@^1.2.0: resolved "https://registry.npmjs.org/fromentries/-/fromentries-1.2.0.tgz#e6aa06f240d6267f913cea422075ef88b63e7897" integrity sha512-33X7H/wdfO99GdRLLgkjUrD4geAFdq/Uv0kl3HD4da6HDixd2GUg8Mw7dahLCV9r/EARkmtYBB6Tch4EEokFTQ== -fs-minipass@^1.2.5: - version "1.2.7" - resolved "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7" - integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA== - dependencies: - minipass "^2.6.0" - fs-readdir-recursive@^1.0.0: version "1.1.0" resolved "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz#e32fc030a2ccee44a6b5371308da54be0b397d27" @@ -3326,20 +3281,6 @@ funding@^1.0.0: term-size "^2.1.0" word-wrap "^1.2.3" -gauge@~2.7.3: - version "2.7.4" - resolved "https://registry.npmjs.org/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" - gensync@^1.0.0-beta.1: version "1.0.0-beta.1" resolved "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269" @@ -3544,11 +3485,6 @@ has-symbols@^1.0.0, has-symbols@^1.0.1: resolved "https://registry.npmjs.org/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.npmjs.org/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.npmjs.org/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" @@ -3659,7 +3595,7 @@ http-signature@~1.2.0: jsprim "^1.2.2" sshpk "^1.7.0" -iconv-lite@^0.4.17, iconv-lite@^0.4.24, iconv-lite@^0.4.4, iconv-lite@~0.4.13: +iconv-lite@^0.4.17, iconv-lite@^0.4.24, iconv-lite@~0.4.13: version "0.4.24" resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== @@ -3676,13 +3612,6 @@ ignore-by-default@^1.0.1: resolved "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09" integrity sha1-SMptcvbGo68Aqa1K5odr44ieKwk= -ignore-walk@^3.0.1: - version "3.0.3" - resolved "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.3.tgz#017e2447184bfeade7c238e4aefdd1e8f95b1e37" - integrity sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw== - dependencies: - minimatch "^3.0.4" - ignore@^3.0.9: version "3.3.10" resolved "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" @@ -3958,13 +3887,6 @@ is-finite@^1.0.0: resolved "https://registry.npmjs.org/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.npmjs.org/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.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" @@ -4769,21 +4691,6 @@ minimongo@6.5.0: js-sha1 "^0.6.0" lodash "^3.10.1" -minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0: - version "2.9.0" - resolved "https://registry.npmjs.org/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.npmjs.org/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.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" @@ -4799,7 +4706,7 @@ mkdirp@0.5.1: dependencies: minimist "0.0.8" -mkdirp@0.5.3, mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.1: +mkdirp@0.5.3, mkdirp@^0.5.1, mkdirp@~0.5.1: version "0.5.3" resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.3.tgz#5a514b7179259287952881e94410ec5465659f8c" integrity sha512-P+2gwrFqx8lhew375MQHHeTlY8AuOJSrGf0R5ddkEndUkmwpgUob/vQuBD1V22/Cw1/lJr4x+EjllSezBThzBg== @@ -4933,15 +4840,6 @@ nedb@^1.8.0: mkdirp "~0.5.1" underscore "~1.4.4" -needle@^2.2.1: - version "2.3.3" - resolved "https://registry.npmjs.org/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" - next-tick@1: version "1.1.0" resolved "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz#1836ee30ad56d67ef281b22bd199f709449b35eb" @@ -4981,22 +4879,6 @@ node-fetch@^1.0.1: encoding "^0.1.11" is-stream "^1.0.1" -node-pre-gyp@*: - version "0.14.0" - resolved "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.14.0.tgz#9a0596533b877289bcad4e143982ca3d904ddc83" - integrity sha512-+CvDC7ZttU/sSt9rFjix/P05iS43qHCOOGzcr3Ry99bXG7VX953+vFyEuph/tfqoYu8dttBkE86JSKBO2OzcxA== - 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.4.2" - node-preload@^0.2.0: version "0.2.1" resolved "https://registry.npmjs.org/node-preload/-/node-preload-0.2.1.tgz#c03043bb327f417a18fee7ab7ee57b408a144301" @@ -5020,14 +4902,6 @@ nodemon@2.0.2: undefsafe "^2.0.2" update-notifier "^2.5.0" -nopt@^4.0.1: - version "4.0.3" - resolved "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz#a375cad9d02fd921278d954c2254d5aa57e15e48" - integrity sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg== - dependencies: - abbrev "1" - osenv "^0.1.4" - nopt@~1.0.10: version "1.0.10" resolved "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz#6ddd21bd2a31417b92727dd585f8a6f37608ebee" @@ -5057,27 +4931,6 @@ normalize-path@^3.0.0, normalize-path@~3.0.0: resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== -npm-bundled@^1.0.1: - version "1.1.1" - resolved "https://registry.npmjs.org/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.npmjs.org/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.8" - resolved "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.8.tgz#56ee6cc135b9f98ad3d51c1c95da22bbb9b2ef3e" - integrity sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A== - dependencies: - ignore-walk "^3.0.1" - npm-bundled "^1.0.1" - npm-normalize-package-bin "^1.0.1" - npm-run-path@^2.0.0: version "2.0.2" resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" @@ -5085,21 +4938,6 @@ npm-run-path@^2.0.0: dependencies: path-key "^2.0.0" -npmlog@^4.0.2: - version "4.1.2" - resolved "https://registry.npmjs.org/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.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" - integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= - nyc@^15.0.0: version "15.0.0" resolved "https://registry.npmjs.org/nyc/-/nyc-15.0.0.tgz#eb32db2c0f29242c2414fe46357f230121cfc162" @@ -5275,19 +5113,11 @@ os-homedir@^1.0.0: resolved "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= -os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.2: +os-tmpdir@^1.0.1, os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/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.npmjs.org/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" - integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== - dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.0" - output-file-sync@^1.1.2: version "1.1.2" resolved "https://registry.npmjs.org/output-file-sync/-/output-file-sync-1.1.2.tgz#d0a33eefe61a205facb90092e826598d5245ce76" @@ -5652,7 +5482,7 @@ rbush@^2.0.0: dependencies: quickselect "^1.0.1" -rc@^1.0.1, rc@^1.1.6, rc@^1.2.7: +rc@^1.0.1, rc@^1.1.6: version "1.2.8" resolved "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== @@ -5684,7 +5514,7 @@ read-pkg@^2.0.0: normalize-package-data "^2.3.2" path-type "^2.0.0" -readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.3.5: +readable-stream@^2.0.2, readable-stream@^2.3.5: version "2.3.7" resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== @@ -5970,13 +5800,6 @@ rimraf@2.6.3, rimraf@~2.6.2: dependencies: glob "^7.1.3" -rimraf@^2.6.1: - version "2.7.1" - resolved "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" - integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== - dependencies: - glob "^7.1.3" - rimraf@^3.0.0: version "3.0.2" resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" @@ -6040,11 +5863,6 @@ safe-regex@^1.1.0: resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -sax@^1.2.4: - version "1.2.4" - resolved "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" - integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== - semver-diff@^2.0.0: version "2.1.0" resolved "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36" @@ -6062,7 +5880,7 @@ semver@^6.0.0, semver@^6.1.0, semver@^6.1.2, semver@^6.3.0: resolved "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== -set-blocking@^2.0.0, set-blocking@~2.0.0: +set-blocking@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= @@ -6393,15 +6211,6 @@ static-extend@^0.1.1: define-property "^0.2.5" object-copy "^0.1.0" -string-width@^1.0.1: - version "1.0.2" - resolved "https://registry.npmjs.org/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@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: version "2.1.1" resolved "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" @@ -6470,7 +6279,7 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -strip-ansi@^3.0.0, strip-ansi@^3.0.1: +strip-ansi@^3.0.0: version "3.0.1" resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= @@ -6597,19 +6406,6 @@ taffydb@2.6.2: resolved "https://registry.npmjs.org/taffydb/-/taffydb-2.6.2.tgz#7cbcb64b5a141b6a2efc2c5d2c67b4e150b2a268" integrity sha1-fLy2S1oUG2ou/CxdLGe04VCyomg= -tar@^4.4.2: - version "4.4.13" - resolved "https://registry.npmjs.org/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" - term-size@^1.2.0: version "1.2.0" resolved "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz#458b83887f288fc56d6fffbfad262e26638efa69" @@ -7014,7 +6810,7 @@ which@^2.0.1: dependencies: isexe "^2.0.0" -wide-align@1.1.3, wide-align@^1.1.0: +wide-align@1.1.3: version "1.1.3" resolved "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== @@ -7133,11 +6929,6 @@ yallist@^2.1.2: resolved "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= -yallist@^3.0.0, yallist@^3.0.3: - version "3.1.1" - resolved "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" - integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== - yaml@^1.8.2: version "1.8.2" resolved "https://registry.npmjs.org/yaml/-/yaml-1.8.2.tgz#a29c03f578faafd57dcb27055f9a5d569cb0c3d9" -- GitLab From 35b12d0bc1dfe821841e613f17a9ddecbff2a9aa Mon Sep 17 00:00:00 2001 From: Will Date: Fri, 20 Mar 2020 17:52:03 +0100 Subject: [PATCH 45/86] Deps upgrade --- yarn.lock | 391 +++++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 329 insertions(+), 62 deletions(-) diff --git a/yarn.lock b/yarn.lock index 7fc7a00..3c6f232 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10,32 +10,33 @@ "@babel/highlight" "^7.8.3" "@babel/core@^7.7.5": - version "7.8.7" - resolved "https://registry.npmjs.org/@babel/core/-/core-7.8.7.tgz#b69017d221ccdeb203145ae9da269d72cf102f3b" - integrity sha512-rBlqF3Yko9cynC5CCFy6+K/w2N+Sq/ff2BPy+Krp7rHlABIr5epbA7OxVeKoMHB39LZOp1UY5SuLjy6uWi35yA== + version "7.9.0" + resolved "https://registry.npmjs.org/@babel/core/-/core-7.9.0.tgz#ac977b538b77e132ff706f3b8a4dbad09c03c56e" + integrity sha512-kWc7L0fw1xwvI0zi8OKVBuxRVefwGOrKSQMvrQ3dW+bIIavBY3/NpXmpjMy7bQnLgwgzWQZ8TlM57YHpHNHz4w== dependencies: "@babel/code-frame" "^7.8.3" - "@babel/generator" "^7.8.7" - "@babel/helpers" "^7.8.4" - "@babel/parser" "^7.8.7" + "@babel/generator" "^7.9.0" + "@babel/helper-module-transforms" "^7.9.0" + "@babel/helpers" "^7.9.0" + "@babel/parser" "^7.9.0" "@babel/template" "^7.8.6" - "@babel/traverse" "^7.8.6" - "@babel/types" "^7.8.7" + "@babel/traverse" "^7.9.0" + "@babel/types" "^7.9.0" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.1" - json5 "^2.1.0" + json5 "^2.1.2" lodash "^4.17.13" resolve "^1.3.2" semver "^5.4.1" source-map "^0.5.0" -"@babel/generator@^7.8.6", "@babel/generator@^7.8.7": - version "7.8.8" - resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.8.8.tgz#cdcd58caab730834cee9eeadb729e833b625da3e" - integrity sha512-HKyUVu69cZoclptr8t8U5b6sx6zoWjh8jiUhnuj3MpZuKT2dJ8zPTuiy31luq32swhI0SpwItCIlU8XW7BZeJg== +"@babel/generator@^7.9.0": + version "7.9.0" + resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.9.0.tgz#0f67adea4ec39dad6e63345f70eec33014d78c89" + integrity sha512-onl4Oy46oGCzymOXtKMQpI7VXtCbTSHK1kqBydZ6AmzuNcacEVqGk9tZtAS+48IA9IstZcDCgIg8hQKnb7suRw== dependencies: - "@babel/types" "^7.8.7" + "@babel/types" "^7.9.0" jsesc "^2.5.1" lodash "^4.17.13" source-map "^0.5.0" @@ -56,6 +57,13 @@ dependencies: "@babel/types" "^7.8.3" +"@babel/helper-member-expression-to-functions@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.8.3.tgz#659b710498ea6c1d9907e0c73f206eee7dadc24c" + integrity sha512-fO4Egq88utkQFjbPrSHGmGLFqmrshs11d46WI+WZDESt7Wu7wN2G2Iu+NMMZJFDOVRHAMIkB5SNh30NtwCA7RA== + dependencies: + "@babel/types" "^7.8.3" + "@babel/helper-module-imports@^7.8.3": version "7.8.3" resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.8.3.tgz#7fe39589b39c016331b6b8c3f441e8f0b1419498" @@ -63,11 +71,49 @@ dependencies: "@babel/types" "^7.8.3" +"@babel/helper-module-transforms@^7.9.0": + version "7.9.0" + resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.9.0.tgz#43b34dfe15961918707d247327431388e9fe96e5" + integrity sha512-0FvKyu0gpPfIQ8EkxlrAydOWROdHpBmiCiRwLkUiBGhCUPRRbVD2/tm3sFr/c/GWFrQ/ffutGUAnx7V0FzT2wA== + dependencies: + "@babel/helper-module-imports" "^7.8.3" + "@babel/helper-replace-supers" "^7.8.6" + "@babel/helper-simple-access" "^7.8.3" + "@babel/helper-split-export-declaration" "^7.8.3" + "@babel/template" "^7.8.6" + "@babel/types" "^7.9.0" + lodash "^4.17.13" + +"@babel/helper-optimise-call-expression@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.8.3.tgz#7ed071813d09c75298ef4f208956006b6111ecb9" + integrity sha512-Kag20n86cbO2AvHca6EJsvqAd82gc6VMGule4HwebwMlwkpXuVqrNRj6CkCV2sKxgi9MyAUnZVnZ6lJ1/vKhHQ== + dependencies: + "@babel/types" "^7.8.3" + "@babel/helper-plugin-utils@^7.8.3": version "7.8.3" resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz#9ea293be19babc0f52ff8ca88b34c3611b208670" integrity sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ== +"@babel/helper-replace-supers@^7.8.6": + version "7.8.6" + resolved "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.8.6.tgz#5ada744fd5ad73203bf1d67459a27dcba67effc8" + integrity sha512-PeMArdA4Sv/Wf4zXwBKPqVj7n9UF/xg6slNRtZW84FM7JpE1CbG8B612FyM4cxrf4fMAMGO0kR7voy1ForHHFA== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.8.3" + "@babel/helper-optimise-call-expression" "^7.8.3" + "@babel/traverse" "^7.8.6" + "@babel/types" "^7.8.6" + +"@babel/helper-simple-access@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.8.3.tgz#7f8109928b4dab4654076986af575231deb639ae" + integrity sha512-VNGUDjx5cCWg4vvCTR8qQ7YJYZ+HBjxOgXEl7ounz+4Sn7+LMD3CFrCTEU6/qXKbA2nKg21CwhhBzO0RpRbdCw== + dependencies: + "@babel/template" "^7.8.3" + "@babel/types" "^7.8.3" + "@babel/helper-split-export-declaration@^7.8.3": version "7.8.3" resolved "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz#31a9f30070f91368a7182cf05f831781065fc7a9" @@ -75,33 +121,38 @@ dependencies: "@babel/types" "^7.8.3" -"@babel/helpers@^7.8.4": - version "7.8.4" - resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.8.4.tgz#754eb3ee727c165e0a240d6c207de7c455f36f73" - integrity sha512-VPbe7wcQ4chu4TDQjimHv/5tj73qz88o12EPkO2ValS2QiQS/1F2SsjyIGNnAD0vF/nZS6Cf9i+vW6HIlnaR8w== +"@babel/helper-validator-identifier@^7.9.0": + version "7.9.0" + resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.0.tgz#ad53562a7fc29b3b9a91bbf7d10397fd146346ed" + integrity sha512-6G8bQKjOh+of4PV/ThDm/rRqlU7+IGoJuofpagU5GlEl29Vv0RGqqt86ZGRV8ZuSOY3o+8yXl5y782SMcG7SHw== + +"@babel/helpers@^7.9.0": + version "7.9.0" + resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.9.0.tgz#ab2c1bc4821af766cab51d4868a5038874ea5a12" + integrity sha512-/9GvfYTCG1NWCNwDj9e+XlnSCmWW/r9T794Xi58vPF9WCcnZCAZ0kWLSn54oqP40SUvh1T2G6VwKmFO5AOlW3A== dependencies: "@babel/template" "^7.8.3" - "@babel/traverse" "^7.8.4" - "@babel/types" "^7.8.3" + "@babel/traverse" "^7.9.0" + "@babel/types" "^7.9.0" "@babel/highlight@^7.8.3": - version "7.8.3" - resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz#28f173d04223eaaa59bc1d439a3836e6d1265797" - integrity sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg== + version "7.9.0" + resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.9.0.tgz#4e9b45ccb82b79607271b2979ad82c7b68163079" + integrity sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ== dependencies: + "@babel/helper-validator-identifier" "^7.9.0" chalk "^2.0.0" - esutils "^2.0.2" js-tokens "^4.0.0" -"@babel/parser@^7.0.0", "@babel/parser@^7.4.4", "@babel/parser@^7.7.5", "@babel/parser@^7.8.6", "@babel/parser@^7.8.7": - version "7.8.8" - resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.8.8.tgz#4c3b7ce36db37e0629be1f0d50a571d2f86f6cd4" - integrity sha512-mO5GWzBPsPf6865iIbzNE0AvkKF3NE+2S3eRUpE+FE07BOAkXh6G+GW/Pj01hhXjve1WScbaIO4UlY1JKeqCcA== +"@babel/parser@^7.0.0", "@babel/parser@^7.4.4", "@babel/parser@^7.7.5", "@babel/parser@^7.8.6", "@babel/parser@^7.9.0": + version "7.9.0" + resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.9.0.tgz#f821b32313f07ee570976d3f6238e8d2d66e0a8e" + integrity sha512-Iwyp00CZsypoNJcpXCbq3G4tcDgphtlMwMVrMhhZ//XBkqjXF7LW6V511yk0+pBX3ZwwGnPea+pTKNJiqA7pUg== "@babel/plugin-transform-runtime@^7.8.3": - version "7.8.3" - resolved "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.8.3.tgz#c0153bc0a5375ebc1f1591cb7eea223adea9f169" - integrity sha512-/vqUt5Yh+cgPZXXjmaG9NT8aVfThKk7G4OqkVhrXqwsC5soMn/qTCxs36rZ2QFhpfTJcjw4SNDIZ4RUb8OL4jQ== + version "7.9.0" + resolved "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.9.0.tgz#45468c0ae74cc13204e1d3b1f4ce6ee83258af0b" + integrity sha512-pUu9VSf3kI1OqbWINQ7MaugnitRss1z533436waNXp+0N3ur3zfut37sXiQMxkuCF4VUjwZucen/quskCh7NHw== dependencies: "@babel/helper-module-imports" "^7.8.3" "@babel/helper-plugin-utils" "^7.8.3" @@ -109,20 +160,27 @@ semver "^5.5.1" "@babel/runtime-corejs3@^7.8.3": - version "7.8.7" - resolved "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.8.7.tgz#8209d9dff2f33aa2616cb319c83fe159ffb07b8c" - integrity sha512-sc7A+H4I8kTd7S61dgB9RomXu/C+F4IrRr4Ytze4dnfx7AXEpCrejSNpjx7vq6y/Bak9S6Kbk65a/WgMLtg43Q== + version "7.9.0" + resolved "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.9.0.tgz#0d4119c44ad05bfa0ca16f2f4f91cde430056c08" + integrity sha512-Fe3z3yVZNCUTaOFBAofwkEtFiYi7a7Gg2F5S1QX+mqP403i2iKJtyHJYEp/PV2ijUheT0PiKWbmXcqtwLhmBzg== dependencies: core-js-pure "^3.0.0" regenerator-runtime "^0.13.4" -"@babel/runtime@7.8.7", "@babel/runtime@^7.8.7": +"@babel/runtime@7.8.7": version "7.8.7" resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.8.7.tgz#8fefce9802db54881ba59f90bb28719b4996324d" integrity sha512-+AATMUFppJDw6aiR5NVPHqIQBlV/Pj8wY/EZH+lmvRdUo9xBaz/rF3alAwFJQavvKfeOlPE7oaaDHVbcySbCsg== dependencies: regenerator-runtime "^0.13.4" +"@babel/runtime@^7.8.7": + version "7.9.0" + resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.0.tgz#337eda67401f5b066a6f205a3113d4ac18ba495b" + integrity sha512-cTIudHnzuWLS56ik4DnRnqqNf8MkdUzV4iFFI1h7Jo9xvrpQROYaAnaSd2mHLQAzzZAPfATynX5ord6YlNYNMA== + dependencies: + regenerator-runtime "^0.13.4" + "@babel/template@^7.7.4", "@babel/template@^7.8.3", "@babel/template@^7.8.6": version "7.8.6" resolved "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz#86b22af15f828dfb086474f964dcc3e39c43ce2b" @@ -132,27 +190,27 @@ "@babel/parser" "^7.8.6" "@babel/types" "^7.8.6" -"@babel/traverse@^7.0.0", "@babel/traverse@^7.7.4", "@babel/traverse@^7.8.4", "@babel/traverse@^7.8.6": - version "7.8.6" - resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.8.6.tgz#acfe0c64e1cd991b3e32eae813a6eb564954b5ff" - integrity sha512-2B8l0db/DPi8iinITKuo7cbPznLCEk0kCxDoB9/N6gGNg/gxOXiR/IcymAFPiBwk5w6TtQ27w4wpElgp9btR9A== +"@babel/traverse@^7.0.0", "@babel/traverse@^7.7.4", "@babel/traverse@^7.8.6", "@babel/traverse@^7.9.0": + version "7.9.0" + resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.0.tgz#d3882c2830e513f4fe4cec9fe76ea1cc78747892" + integrity sha512-jAZQj0+kn4WTHO5dUZkZKhbFrqZE7K5LAQ5JysMnmvGij+wOdr+8lWqPeW0BcF4wFwrEXXtdGO7wcV6YPJcf3w== dependencies: "@babel/code-frame" "^7.8.3" - "@babel/generator" "^7.8.6" + "@babel/generator" "^7.9.0" "@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" + "@babel/parser" "^7.9.0" + "@babel/types" "^7.9.0" debug "^4.1.0" globals "^11.1.0" lodash "^4.17.13" -"@babel/types@^7.0.0", "@babel/types@^7.8.3", "@babel/types@^7.8.6", "@babel/types@^7.8.7": - version "7.8.7" - resolved "https://registry.npmjs.org/@babel/types/-/types-7.8.7.tgz#1fc9729e1acbb2337d5b6977a63979b4819f5d1d" - integrity sha512-k2TreEHxFA4CjGkL+GYjRyx35W0Mr7DP5+9q6WMkyKXB+904bYmG40syjMFV0oLlhhFCwWl0vA0DyzTDkwAiJw== +"@babel/types@^7.0.0", "@babel/types@^7.8.3", "@babel/types@^7.8.6", "@babel/types@^7.9.0": + version "7.9.0" + resolved "https://registry.npmjs.org/@babel/types/-/types-7.9.0.tgz#00b064c3df83ad32b2dbf5ff07312b15c7f1efb5" + integrity sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng== dependencies: - esutils "^2.0.2" + "@babel/helper-validator-identifier" "^7.9.0" lodash "^4.17.13" to-fast-properties "^2.0.0" @@ -673,11 +731,24 @@ append-transform@^2.0.0: dependencies: default-require-extensions "^3.0.0" +aproba@^1.0.3: + version "1.2.0" + resolved "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" + integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== + archy@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" integrity sha1-+cjBN1fMHde8N5rHeyxipcKGjEA= +are-we-there-yet@~1.1.2: + version "1.1.5" + resolved "https://registry.npmjs.org/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.3" resolved "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" @@ -1760,6 +1831,11 @@ chokidar@^3.2.2: optionalDependencies: fsevents "~2.1.2" +chownr@^1.1.1: + version "1.1.4" + resolved "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" + integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== + ci-info@^1.5.0: version "1.6.0" resolved "https://registry.npmjs.org/ci-info/-/ci-info-1.6.0.tgz#2ca20dbb9ceb32d4524a683303313f0304b1e497" @@ -1845,6 +1921,11 @@ cliui@^6.0.0: strip-ansi "^6.0.0" wrap-ansi "^6.2.0" +code-point-at@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/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.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" @@ -1927,9 +2008,9 @@ configstore@^3.0.0: xdg-basedir "^3.0.0" confmgr@^1.0.3: - version "1.0.4" - resolved "https://registry.npmjs.org/confmgr/-/confmgr-1.0.4.tgz#890a31b84db3a632049460e66c46ba1d68553041" - integrity sha512-dMieOV0uL6jvMPc8JKtMIAVxAY6EkZSAkgTtLCbTmUa+lIdwKzbx/0vbCTgfnDtXQpZnXJd/VO5/LcZj5/tCLQ== + version "1.0.5" + resolved "https://registry.npmjs.org/confmgr/-/confmgr-1.0.5.tgz#9b039c8ef62bce349292fd4ec91783ea483c6f05" + integrity sha512-G3eDWg5tT9O4N6K6H/SJn5ZYew5LKXhuB/hE3i54wa/1YbRjb6BXTiZEeSzanFFMkAEZUC3jWII/mkTQjAycOw== dependencies: "@babel/runtime" "7.8.7" "@types/yaml" "^1.2.0" @@ -1939,6 +2020,11 @@ confmgr@^1.0.3: typescript "^3.8.3" yaml "^1.8.2" +console-control-strings@^1.0.0, console-control-strings@~1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" + integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= + contains-path@^0.1.0: version "0.1.0" resolved "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" @@ -2183,6 +2269,11 @@ delayed-stream@~1.0.0: resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= +delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= + detect-file@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7" @@ -2195,6 +2286,11 @@ detect-indent@^4.0.0: dependencies: repeating "^2.0.0" +detect-libc@^1.0.2: + version "1.0.3" + resolved "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" + integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= + diff@3.5.0: version "3.5.0" resolved "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" @@ -3237,6 +3333,13 @@ fromentries@^1.2.0: resolved "https://registry.npmjs.org/fromentries/-/fromentries-1.2.0.tgz#e6aa06f240d6267f913cea422075ef88b63e7897" integrity sha512-33X7H/wdfO99GdRLLgkjUrD4geAFdq/Uv0kl3HD4da6HDixd2GUg8Mw7dahLCV9r/EARkmtYBB6Tch4EEokFTQ== +fs-minipass@^1.2.5: + version "1.2.7" + resolved "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7" + integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA== + dependencies: + minipass "^2.6.0" + fs-readdir-recursive@^1.0.0: version "1.1.0" resolved "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz#e32fc030a2ccee44a6b5371308da54be0b397d27" @@ -3281,6 +3384,20 @@ funding@^1.0.0: term-size "^2.1.0" word-wrap "^1.2.3" +gauge@~2.7.3: + version "2.7.4" + resolved "https://registry.npmjs.org/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" + gensync@^1.0.0-beta.1: version "1.0.0-beta.1" resolved "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269" @@ -3485,6 +3602,11 @@ has-symbols@^1.0.0, has-symbols@^1.0.1: resolved "https://registry.npmjs.org/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.npmjs.org/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.npmjs.org/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" @@ -3595,7 +3717,7 @@ http-signature@~1.2.0: jsprim "^1.2.2" sshpk "^1.7.0" -iconv-lite@^0.4.17, iconv-lite@^0.4.24, iconv-lite@~0.4.13: +iconv-lite@^0.4.17, iconv-lite@^0.4.24, iconv-lite@^0.4.4, iconv-lite@~0.4.13: version "0.4.24" resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== @@ -3612,6 +3734,13 @@ ignore-by-default@^1.0.1: resolved "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09" integrity sha1-SMptcvbGo68Aqa1K5odr44ieKwk= +ignore-walk@^3.0.1: + version "3.0.3" + resolved "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.3.tgz#017e2447184bfeade7c238e4aefdd1e8f95b1e37" + integrity sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw== + dependencies: + minimatch "^3.0.4" + ignore@^3.0.9: version "3.3.10" resolved "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" @@ -3887,6 +4016,13 @@ is-finite@^1.0.0: resolved "https://registry.npmjs.org/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.npmjs.org/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.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" @@ -4257,7 +4393,7 @@ json5@^0.5.1: resolved "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE= -json5@^2.1.0: +json5@^2.1.2: version "2.1.2" resolved "https://registry.npmjs.org/json5/-/json5-2.1.2.tgz#43ef1f0af9835dd624751a6b7fa48874fb2d608e" integrity sha512-MoUOQ4WdiN3yxhm7NEVJSJrieAo5hNSLQ5sj05OTRHPL9HOBy8u4Bu88jsC1jvqAdN+E1bJmsUcZH+1HQxliqQ== @@ -4691,6 +4827,21 @@ minimongo@6.5.0: js-sha1 "^0.6.0" lodash "^3.10.1" +minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0: + version "2.9.0" + resolved "https://registry.npmjs.org/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.npmjs.org/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.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" @@ -4706,7 +4857,7 @@ mkdirp@0.5.1: dependencies: minimist "0.0.8" -mkdirp@0.5.3, mkdirp@^0.5.1, mkdirp@~0.5.1: +mkdirp@0.5.3, mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.1: version "0.5.3" resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.3.tgz#5a514b7179259287952881e94410ec5465659f8c" integrity sha512-P+2gwrFqx8lhew375MQHHeTlY8AuOJSrGf0R5ddkEndUkmwpgUob/vQuBD1V22/Cw1/lJr4x+EjllSezBThzBg== @@ -4840,6 +4991,15 @@ nedb@^1.8.0: mkdirp "~0.5.1" underscore "~1.4.4" +needle@^2.2.1: + version "2.3.3" + resolved "https://registry.npmjs.org/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" + next-tick@1: version "1.1.0" resolved "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz#1836ee30ad56d67ef281b22bd199f709449b35eb" @@ -4879,6 +5039,22 @@ node-fetch@^1.0.1: encoding "^0.1.11" is-stream "^1.0.1" +node-pre-gyp@*: + version "0.14.0" + resolved "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.14.0.tgz#9a0596533b877289bcad4e143982ca3d904ddc83" + integrity sha512-+CvDC7ZttU/sSt9rFjix/P05iS43qHCOOGzcr3Ry99bXG7VX953+vFyEuph/tfqoYu8dttBkE86JSKBO2OzcxA== + 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.4.2" + node-preload@^0.2.0: version "0.2.1" resolved "https://registry.npmjs.org/node-preload/-/node-preload-0.2.1.tgz#c03043bb327f417a18fee7ab7ee57b408a144301" @@ -4902,6 +5078,14 @@ nodemon@2.0.2: undefsafe "^2.0.2" update-notifier "^2.5.0" +nopt@^4.0.1: + version "4.0.3" + resolved "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz#a375cad9d02fd921278d954c2254d5aa57e15e48" + integrity sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg== + dependencies: + abbrev "1" + osenv "^0.1.4" + nopt@~1.0.10: version "1.0.10" resolved "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz#6ddd21bd2a31417b92727dd585f8a6f37608ebee" @@ -4931,6 +5115,27 @@ normalize-path@^3.0.0, normalize-path@~3.0.0: resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== +npm-bundled@^1.0.1: + version "1.1.1" + resolved "https://registry.npmjs.org/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.npmjs.org/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.8" + resolved "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.8.tgz#56ee6cc135b9f98ad3d51c1c95da22bbb9b2ef3e" + integrity sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A== + dependencies: + ignore-walk "^3.0.1" + npm-bundled "^1.0.1" + npm-normalize-package-bin "^1.0.1" + npm-run-path@^2.0.0: version "2.0.2" resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" @@ -4938,6 +5143,21 @@ npm-run-path@^2.0.0: dependencies: path-key "^2.0.0" +npmlog@^4.0.2: + version "4.1.2" + resolved "https://registry.npmjs.org/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.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" + integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= + nyc@^15.0.0: version "15.0.0" resolved "https://registry.npmjs.org/nyc/-/nyc-15.0.0.tgz#eb32db2c0f29242c2414fe46357f230121cfc162" @@ -5113,11 +5333,19 @@ os-homedir@^1.0.0: resolved "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= -os-tmpdir@^1.0.1, os-tmpdir@~1.0.2: +os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/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.npmjs.org/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" + integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.0" + output-file-sync@^1.1.2: version "1.1.2" resolved "https://registry.npmjs.org/output-file-sync/-/output-file-sync-1.1.2.tgz#d0a33eefe61a205facb90092e826598d5245ce76" @@ -5482,7 +5710,7 @@ rbush@^2.0.0: dependencies: quickselect "^1.0.1" -rc@^1.0.1, rc@^1.1.6: +rc@^1.0.1, rc@^1.1.6, rc@^1.2.7: version "1.2.8" resolved "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== @@ -5493,9 +5721,9 @@ rc@^1.0.1, rc@^1.1.6: strip-json-comments "~2.0.1" react-is@^16.8.1: - version "16.13.0" - resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.0.tgz#0f37c3613c34fe6b37cd7f763a0d6293ab15c527" - integrity sha512-GFMtL0vHkiBv9HluwNZTggSn/sCyEt9n02aM0dSAjGGyqyNlAyftYm4phPxdvCigG15JreC5biwxCgTAJZ7yAA== + version "16.13.1" + resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" + integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== read-pkg-up@^2.0.0: version "2.0.0" @@ -5514,7 +5742,7 @@ read-pkg@^2.0.0: normalize-package-data "^2.3.2" path-type "^2.0.0" -readable-stream@^2.0.2, readable-stream@^2.3.5: +readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.3.5: version "2.3.7" resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== @@ -5800,6 +6028,13 @@ rimraf@2.6.3, rimraf@~2.6.2: dependencies: glob "^7.1.3" +rimraf@^2.6.1: + version "2.7.1" + resolved "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + rimraf@^3.0.0: version "3.0.2" resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" @@ -5863,6 +6098,11 @@ safe-regex@^1.1.0: resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== +sax@^1.2.4: + version "1.2.4" + resolved "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" + integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== + semver-diff@^2.0.0: version "2.1.0" resolved "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36" @@ -5880,7 +6120,7 @@ semver@^6.0.0, semver@^6.1.0, semver@^6.1.2, semver@^6.3.0: resolved "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== -set-blocking@^2.0.0: +set-blocking@^2.0.0, set-blocking@~2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= @@ -6211,6 +6451,15 @@ static-extend@^0.1.1: define-property "^0.2.5" object-copy "^0.1.0" +string-width@^1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/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@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: version "2.1.1" resolved "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" @@ -6279,7 +6528,7 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -strip-ansi@^3.0.0: +strip-ansi@^3.0.0, strip-ansi@^3.0.1: version "3.0.1" resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= @@ -6406,6 +6655,19 @@ taffydb@2.6.2: resolved "https://registry.npmjs.org/taffydb/-/taffydb-2.6.2.tgz#7cbcb64b5a141b6a2efc2c5d2c67b4e150b2a268" integrity sha1-fLy2S1oUG2ou/CxdLGe04VCyomg= +tar@^4.4.2: + version "4.4.13" + resolved "https://registry.npmjs.org/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" + term-size@^1.2.0: version "1.2.0" resolved "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz#458b83887f288fc56d6fffbfad262e26638efa69" @@ -6810,7 +7072,7 @@ which@^2.0.1: dependencies: isexe "^2.0.0" -wide-align@1.1.3: +wide-align@1.1.3, wide-align@^1.1.0: version "1.1.3" resolved "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== @@ -6929,6 +7191,11 @@ yallist@^2.1.2: resolved "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= +yallist@^3.0.0, yallist@^3.0.3: + version "3.1.1" + resolved "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + yaml@^1.8.2: version "1.8.2" resolved "https://registry.npmjs.org/yaml/-/yaml-1.8.2.tgz#a29c03f578faafd57dcb27055f9a5d569cb0c3d9" -- GitLab From 50112a00e0aa1e731a6fedbb380eeb8899b0aaec Mon Sep 17 00:00:00 2001 From: Will Date: Sun, 22 Mar 2020 15:25:50 +0100 Subject: [PATCH 46/86] Fix linting issues --- .../polkabot-plugin-operator/src/index.ts | 10 ++++---- .../polkabot-plugin-reporter/src/index.ts | 5 ++-- .../polkabot-plugin-stallwatcher/src/index.ts | 23 +++---------------- packages/polkabot/src/index.ts | 11 +++++---- 4 files changed, 17 insertions(+), 32 deletions(-) diff --git a/packages/polkabot-plugin-operator/src/index.ts b/packages/polkabot-plugin-operator/src/index.ts index aa59705..48acb28 100644 --- a/packages/polkabot-plugin-operator/src/index.ts +++ b/packages/polkabot-plugin-operator/src/index.ts @@ -17,7 +17,8 @@ import moment from 'moment'; import getCommandSet from './commandSet'; import { PolkabotChatbot } from '@polkabot/api/src/PolkabotChatbot'; import MatrixHelper from './matrix-helper'; -// TODO: move that away +import { packageJson } from 'package-json'; + const capitalize: (string) => string = (s: string) => { if (typeof s !== 'string') return ''; return s.charAt(0).toUpperCase() + s.slice(1); @@ -25,8 +26,8 @@ const capitalize: (string) => string = (s: string) => { export default class Operator extends PolkabotChatbot implements Controllable { public commandSet: PluginCommandSet; - package: any; - controllables: any; + package: packageJson; + controllables: Controllable[]; context: PluginContext; public constructor(mod: PluginModule, context: PluginContext, config?) { @@ -38,12 +39,11 @@ export default class Operator extends PolkabotChatbot implements Controllable { // Todo: this should be done in private and on demand // ideally, each plugin report its commands and the bot // provide the instructions instead of having each plugin to the work. - // this.showInstructions() this.watchChat(); } // TODO: move all handlers to a separate file - public cmdStatus(_event: any, room: Room, ..._args: any): CommandHandlerOutput { + public cmdStatus(_event: unknown, room: Room, ..._args: unknown): CommandHandlerOutput { const uptimeSec: number = process.uptime(); const m = moment.duration(uptimeSec, 'seconds'); diff --git a/packages/polkabot-plugin-reporter/src/index.ts b/packages/polkabot-plugin-reporter/src/index.ts index 60bbccf..e2a1711 100644 --- a/packages/polkabot-plugin-reporter/src/index.ts +++ b/packages/polkabot-plugin-reporter/src/index.ts @@ -34,7 +34,7 @@ type BlockMoment = { }; export default class Reporter extends PolkabotWorker { - private cache: any; // TODO FIXME + private cache: any; private notifierSpecs: NotifierSpecs = { notifiers: ['matrix'], }; @@ -108,8 +108,7 @@ export default class Reporter extends PolkabotWorker { // TODO: do all the unsub here } - // TODO: switch from string to Announcement - private announce(message: string): void { + private announce(message: Announcement): void { this.context.polkabot.notify( { message, diff --git a/packages/polkabot-plugin-stallwatcher/src/index.ts b/packages/polkabot-plugin-stallwatcher/src/index.ts index 1631409..3535e1a 100644 --- a/packages/polkabot-plugin-stallwatcher/src/index.ts +++ b/packages/polkabot-plugin-stallwatcher/src/index.ts @@ -6,14 +6,13 @@ import { PolkabotWorker } from '@polkabot/api/src/PolkabotWorker'; type StallWatcherConfig = { duration: number; } - -// TODO we may want to catch and alert if the network resume at a block that is not lastBlock+1 export default class StallWatcher extends PolkabotWorker { private stalled: boolean; private lastBlockTime: Date; private lastBlockNumber: BN; private watchdogId: NodeJS.Timeout; private params: StallWatcherConfig; + private unsubFn: Function; public constructor(mod: PluginModule, context: PluginContext, config?) { super(mod, context, config); @@ -32,26 +31,13 @@ export default class StallWatcher extends PolkabotWorker { // this.watchChat(); } - // TODO: missing impl. public stop(): void { - throw new Error('Missing impl.') + if (this.unsubFn) this.unsubFn(); } - // showInstructions() { - // // Send message to the room notifying users how to use the bot - // const messageBody = - // "Polkabot StallWatcher Plugin private (Bot Master Only) user usage instructions:\n 1) Ask Polkabot StallWatcher to change how frequently in blocks it should expect to receive new blocks prior to publishing an alert with command: !sw duration "; - // // this.announce(messageBody); - // this.context.polkabot.notify( - // { - // message: messageBody - // }, - // { notifiers: ["matrix"] } - // ); - // } async watchChain(): Promise { // Reference: https://polkadot.js.org/api/examples/promise/02_listen_to_blocks/ - await this.context.polkadot.rpc.chain.subscribeNewHeads(header => { + this.unsubFn = await this.context.polkadot.rpc.chain.subscribeNewHeads(header => { clearTimeout(this.watchdogId); // console.log('StallWatcher: ' + this.getDuration().toFixed(2) + 's') this.watchdogId = setTimeout(this.alert.bind(this), this.params.duration * 1000); @@ -104,9 +90,6 @@ export default class StallWatcher extends PolkabotWorker { // if (event.getType() !== "m.room.message") { // return; // } - - // // TODO - refactor into a common utility plugin or similar since this code - // // is duplicate of that in polkadot-plugin-operator. // const directChatRoomMemberIds = Object.keys(room.currentState.members); // const expectedDirectMessageRoomMemberIds = [this.context.config.matrix.botMasterId, this.context.config.matrix.botUserId]; diff --git a/packages/polkabot/src/index.ts b/packages/polkabot/src/index.ts index 918db2b..cbcf819 100644 --- a/packages/polkabot/src/index.ts +++ b/packages/polkabot/src/index.ts @@ -7,8 +7,7 @@ import pkg from '../package.json'; import PluginScanner from './lib/plugin-scanner'; import PluginLoader from './lib/plugin-loader'; import sdk from 'matrix-js-sdk'; -// import { IPolkabotConfig } from "./types"; -import { ConfigManager } from 'confmgr'; +import { ConfigManager, ConfigObject } from 'confmgr'; import { assert } from '@polkadot/util'; import { @@ -24,7 +23,11 @@ import { PolkabotNotifier } from '../../polkabot-api/src/PolkabotNotifier'; import { PolkabotChatbot } from '../../polkabot-api/src/PolkabotChatbot'; import { PolkabotWorker } from '../../polkabot-api/src/PolkabotWorker'; -(global as any).Olm = Olm; +type PolkabotGlobal = { + Olm: Olm; +} + +((global as unknown) as PolkabotGlobal).Olm = Olm; // comment out if you need to trouble shoot matrix issues // matrix.on('event', function (event) { @@ -37,7 +40,7 @@ export interface NotifiersTable { export default class Polkabot { // private args: any; private db: any; - private config: any; + private config: ConfigObject; private matrix: any; private polkadot: any; private notifiersTable: NotifiersTable = {}; -- GitLab From ac50a771a6a1c2a44035e95308827dc040d1e9c4 Mon Sep 17 00:00:00 2001 From: Will Date: Mon, 23 Mar 2020 11:11:37 +0100 Subject: [PATCH 47/86] WIP Fix CI --- .gitlab-ci.yml | 7 ++++--- packages/polkabot-plugin-operator/src/matrix-helper.ts | 6 ++---- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 235216d..e02eab0 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -11,7 +11,8 @@ before_script: # # WARNING: use only in docker container, if you use it with shell you will overwrite your user's ssh config # - mkdir -p ~/.ssh # - echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config - - npm install + - npm install -g yarn + - yarn install stages: - lint @@ -26,7 +27,7 @@ cache: lint: stage: lint script: - - npm run lint + - yarn lint # Supported node versions can be found here: # https://github.com/nodejs/LTS#lts_schedule @@ -66,7 +67,7 @@ lint: build:doc: stage: build - script: npm run build:doc + script: yarn build:doc # build:docker: # image: docker:git diff --git a/packages/polkabot-plugin-operator/src/matrix-helper.ts b/packages/polkabot-plugin-operator/src/matrix-helper.ts index bbdc742..e5a06d7 100644 --- a/packages/polkabot-plugin-operator/src/matrix-helper.ts +++ b/packages/polkabot-plugin-operator/src/matrix-helper.ts @@ -2,10 +2,8 @@ import { RoomId } from '@polkabot/api/src/plugin.interface'; export default class MatrixHelper { - // TODO: not implemented! - public static isPrivate(_senderRoomId: RoomId, _roomIdWithBot: RoomId): boolean { - return false; - // throw new Error("Method not implemented."); + public static isPrivate(senderRoomId: RoomId, roomIdWithBot: RoomId): boolean { + return senderRoomId === roomIdWithBot; } public static isSelf(senderId, botUserId): boolean { -- GitLab From f0d290f64cd0556b1d8874b88792373f0b6e3570 Mon Sep 17 00:00:00 2001 From: Will Date: Mon, 23 Mar 2020 14:00:00 +0100 Subject: [PATCH 48/86] Remove yarn install --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index e02eab0..0a9c086 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -11,7 +11,7 @@ before_script: # # WARNING: use only in docker container, if you use it with shell you will overwrite your user's ssh config # - mkdir -p ~/.ssh # - echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config - - npm install -g yarn + # - npm install -g yarn - yarn install stages: -- GitLab From ee83b48bed28cb271c5a9cdc70c2f85ec54912e7 Mon Sep 17 00:00:00 2001 From: Will Date: Mon, 23 Mar 2020 14:53:22 +0100 Subject: [PATCH 49/86] Fix operator plugin bug --- packages/polkabot-plugin-operator/src/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/polkabot-plugin-operator/src/index.ts b/packages/polkabot-plugin-operator/src/index.ts index 48acb28..c1881a9 100644 --- a/packages/polkabot-plugin-operator/src/index.ts +++ b/packages/polkabot-plugin-operator/src/index.ts @@ -43,7 +43,7 @@ export default class Operator extends PolkabotChatbot implements Controllable { } // TODO: move all handlers to a separate file - public cmdStatus(_event: unknown, room: Room, ..._args: unknown): CommandHandlerOutput { + public cmdStatus(_event: unknown, room: Room, ..._args: any): CommandHandlerOutput { const uptimeSec: number = process.uptime(); const m = moment.duration(uptimeSec, 'seconds'); -- GitLab From 999ed3fadd72ceab7173ebe67a75651fc0c84fdd Mon Sep 17 00:00:00 2001 From: Will Date: Mon, 23 Mar 2020 15:10:58 +0100 Subject: [PATCH 50/86] Fix type issues in the reporter plugin --- .../polkabot-plugin-reporter/src/index.ts | 131 +++++++++--------- 1 file changed, 62 insertions(+), 69 deletions(-) diff --git a/packages/polkabot-plugin-reporter/src/index.ts b/packages/polkabot-plugin-reporter/src/index.ts index e2a1711..81e7dfd 100644 --- a/packages/polkabot-plugin-reporter/src/index.ts +++ b/packages/polkabot-plugin-reporter/src/index.ts @@ -2,11 +2,7 @@ import BN from 'bn.js'; import moment from 'moment'; // import "moment-duration-format"; -import { - NotifierSpecs, - PluginModule, - PluginContext -} from '@polkabot/api/src/plugin.interface'; +import { NotifierSpecs, PluginModule, PluginContext } from '@polkabot/api/src/plugin.interface'; import { PolkabotWorker } from '@polkabot/api/src/PolkabotWorker'; @@ -18,7 +14,7 @@ enum Severity { INFO, WARNING, IMPORTANT, - CRITICAL + CRITICAL, } type Announcement = { @@ -49,8 +45,8 @@ export default class Reporter extends PolkabotWorker { } /** Check the last blocks and figure out the block time. - * This should gives around 6.0 seconds on Kusama. - */ + * This should gives around 6.0 seconds on Kusama. + */ async getAverageBlockTime(): Promise { const NB_SAMPLES = 3; // less is faster const STEP = 10; // sample over a longer period @@ -60,8 +56,7 @@ export default class Reporter extends PolkabotWorker { for (let i = this.cache.block, j = 0; j < NB_SAMPLES; j++, i -= STEP) { const h = await api.rpc.chain.getBlockHash(i); - const now = - new Date((await api.query.timestamp.now.at(h)).toNumber()).getTime() * 1.0; + const now = new Date((await api.query.timestamp.now.at(h)).toNumber()).getTime() * 1.0; if (last) { durations.push((last - now) / 1000.0); } @@ -75,16 +70,11 @@ export default class Reporter extends PolkabotWorker { // const currentBlock = (await this.context.polkadot.rpc.chain.getBlock()).block.header.number.toNumber(); const blockTime = await this.getAverageBlockTime(); - const h = await this.context.polkadot.rpc.chain.getBlockHash( - this.cache.blockNumber - ); - const now = new Date( - (await this.context.polkadot.query.timestamp.now.at(h)).toNumber() - ); + const h = await this.context.polkadot.rpc.chain.getBlockHash(this.cache.blockNumber); + const now = new Date((await this.context.polkadot.query.timestamp.now.at(h)).toNumber()); const future = block > this.cache.blockNumber; const other = new Date( - now.getTime() + - (this.cache.blockNumber as BN).sub(block).toNumber() * blockTime * 1000 + now.getTime() + (this.cache.blockNumber as BN).sub(block).toNumber() * blockTime * 1000 ); const duration = Math.abs(now.getTime() - other.getTime()) / 1000; @@ -141,9 +131,11 @@ export default class Reporter extends PolkabotWorker { if (!this.cache[KEY]) this.cache[KEY] = validators; if (this.cache[KEY] && this.cache[KEY].length !== validators.length) { console.log('Reporter - Active Validator count: ', validators.length); - this.announce( - `Active Validator count has changed from ${this.cache[KEY].length} to ${validators.length}` - ); + + this.announce({ + message: `Active Validator count has changed from ${this.cache[KEY].length} to ${validators.length}`, + severity: Severity.INFO, + }); this.cache[KEY] = validators; } else { console.log(`Reporter - Active Validator count: ${validators.length}`); @@ -159,11 +151,12 @@ export default class Reporter extends PolkabotWorker { if (this.cache[KEY] && this.cache[KEY] !== validatorCount) { this.cache[KEY] = validatorCount; console.log('Reporter - Validator count:', validatorCount.toString(10)); - this.announce( - `The number of validator slots has changed. It is now ${validatorCount.toString( + this.announce({ + message: `The number of validator slots has changed. It is now ${validatorCount.toString( 10 - )}` - ); + )}`, + severity: Severity.IMPORTANT, + }); } }); } @@ -181,11 +174,12 @@ export default class Reporter extends PolkabotWorker { // const codeInHex = '0x' + this.buf2hex(code) // console.log('Runtime Code hex changed', codeInHex) - this.announce( - `Runtime code hash has changed. The hash is now ${hash}. The runtime is now ${ + this.announce({ + message: `Runtime code hash has changed. The hash is now ${hash}. The runtime is now ${ code ? (code.length / 1024).toFixed(2) : '???' - } kb.` - ); + } kb.`, + severity: Severity.CRITICAL, + }); } else { console.log(`Reporter - Runtime Code hash: ${hash}`); } @@ -208,10 +202,11 @@ export default class Reporter extends PolkabotWorker { console.log('Reporter - Proposal count changed:', count.toString(10)); const id = count.sub(new BN(1)); - this.announce( - `A new council motion proposal is available (#${id}), check your UI at https://polkadot.js.org/apps/#/democracy. -You will be able to vote shortly, a new referendum will show up in the UI.` - ); + this.announce({ + message: `A new council motion proposal is available (#${id}), check your UI at https://polkadot.js.org/apps/#/democracy. +You will be able to vote shortly, a new referendum will show up in the UI.`, + severity: Severity.INFO, + }); } else { console.log(`Reporter - Proposal count: ${count.toString(10)}`); } @@ -219,37 +214,34 @@ You will be able to vote shortly, a new referendum will show up in the UI.` } async watchPublicProposalCount(): Promise { - await this.context.polkadot.query.democracy.publicPropCount( - async (publicPropCount: BN) => { - const KEY = 'publicPropCount'; - console.log('Reporter - publicPropCount:', publicPropCount.toString(10)); - - const count = publicPropCount; - if (!this.cache[KEY]) this.cache[KEY] = count; - if (this.cache[KEY] && !this.cache[KEY].eq(count)) { - this.cache[KEY] = count; - const deadline = this.cache.blockNumber.add( - this.consts.democracy.votingPeriod - ) as BN; - const blockMoment = await this.getBlockMoment(deadline); - // const votingTimeInMinutes = - // parseInt(this.consts.democracy.votingPeriod.mul(this.cache.minimumPeriod).toString(10)) / 60; - console.log('Reporter - Proposal count changed:', count.toString(10)); - const id = count.sub(new BN(1)).toString(10); - - this.announce( - `@room New Proposal (#${id}) available. Check your UI at https://polkadot.js.org/apps/#/democracy. -You can second Proposal #${id} during the next ${this.context.polkadot.consts.democracy.votingPeriod.toString( - 10 -)} blocks. -That means a deadline at block #${deadline.toString(10)}, don't miss it! -the deadline to vote is ${moment(blockMoment.date).fromNow()}.` - ); - } else { - console.log(`Reporter - Proposal count: ${count.toString(10)}`); - } + await this.context.polkadot.query.democracy.publicPropCount(async (publicPropCount: BN) => { + const KEY = 'publicPropCount'; + console.log('Reporter - publicPropCount:', publicPropCount.toString(10)); + + const count = publicPropCount; + if (!this.cache[KEY]) this.cache[KEY] = count; + if (this.cache[KEY] && !this.cache[KEY].eq(count)) { + this.cache[KEY] = count; + const deadline = this.cache.blockNumber.add(this.consts.democracy.votingPeriod) as BN; + const blockMoment = await this.getBlockMoment(deadline); + // const votingTimeInMinutes = + // parseInt(this.consts.democracy.votingPeriod.mul(this.cache.minimumPeriod).toString(10)) / 60; + console.log('Reporter - Proposal count changed:', count.toString(10)); + const id = count.sub(new BN(1)).toString(10); + + this.announce({ + message: `@room New Proposal (#${id}) available. Check your UI at https://polkadot.js.org/apps/#/democracy. + You can second Proposal #${id} during the next ${this.context.polkadot.consts.democracy.votingPeriod.toString( + 10 + )} blocks. + That means a deadline at block #${deadline.toString(10)}, don't miss it! + the deadline to vote is ${moment(blockMoment.date).fromNow()}.`, + severity: Severity.INFO, + }); + } else { + console.log(`Reporter - Proposal count: ${count.toString(10)}`); } - ); + }); } async watchReferendumCount(): Promise { @@ -273,14 +265,15 @@ the deadline to vote is ${moment(blockMoment.date).fromNow()}.` console.log('Reporter - Referendum count changed:', count.toString(10)); const id = count.sub(new BN(1)).toString(10); - this.announce( - `@room New referendum (#${id}) available. Check your UI at https://polkadot.js.org/apps/#/democracy. + this.announce({ + message: `@room New referendum (#${id}) available. Check your UI at https://polkadot.js.org/apps/#/democracy. You can vote for referendum #${id} during the next ${this.context.polkadot.consts.democracy.votingPeriod.toString( - 10 -)} blocks. + 10 + )} blocks. That means a deadline at block #${deadline.toString(10)}, don't miss it! -You have around ${votingTimeInMinutes.toFixed(2)} minutes to vote.` - ); +You have around ${votingTimeInMinutes.toFixed(2)} minutes to vote.`, + severity: Severity.INFO, + }); } else { console.log(`Reporter - Referendum count: ${count.toString(10)}`); } -- GitLab From 41e55e4b54b8a1e9d5042f3142293dfa314ccc7e Mon Sep 17 00:00:00 2001 From: Will Date: Mon, 23 Mar 2020 15:16:39 +0100 Subject: [PATCH 51/86] Switch linter to eslint and fix issues --- packages/polkabot-plugin-reporter/package.json | 2 +- packages/polkabot-plugin-reporter/src/index.ts | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/polkabot-plugin-reporter/package.json b/packages/polkabot-plugin-reporter/package.json index 55e9f6d..92ae4ed 100644 --- a/packages/polkabot-plugin-reporter/package.json +++ b/packages/polkabot-plugin-reporter/package.json @@ -5,7 +5,7 @@ "main": "dist/src/index.js", "scripts": { "build": "tsc --build tsconfig.json", - "lint": "standard", + "lint": "eslint --ext .ts,.tsx .", "start": "babel-node ./src/index.js", "prepublishOnly": "npm run build", "postinstall": "npm run build", diff --git a/packages/polkabot-plugin-reporter/src/index.ts b/packages/polkabot-plugin-reporter/src/index.ts index 81e7dfd..0a4a33c 100644 --- a/packages/polkabot-plugin-reporter/src/index.ts +++ b/packages/polkabot-plugin-reporter/src/index.ts @@ -232,8 +232,8 @@ You will be able to vote shortly, a new referendum will show up in the UI.`, this.announce({ message: `@room New Proposal (#${id}) available. Check your UI at https://polkadot.js.org/apps/#/democracy. You can second Proposal #${id} during the next ${this.context.polkadot.consts.democracy.votingPeriod.toString( - 10 - )} blocks. + 10 +)} blocks. That means a deadline at block #${deadline.toString(10)}, don't miss it! the deadline to vote is ${moment(blockMoment.date).fromNow()}.`, severity: Severity.INFO, @@ -268,8 +268,8 @@ You will be able to vote shortly, a new referendum will show up in the UI.`, this.announce({ message: `@room New referendum (#${id}) available. Check your UI at https://polkadot.js.org/apps/#/democracy. You can vote for referendum #${id} during the next ${this.context.polkadot.consts.democracy.votingPeriod.toString( - 10 - )} blocks. + 10 +)} blocks. That means a deadline at block #${deadline.toString(10)}, don't miss it! You have around ${votingTimeInMinutes.toFixed(2)} minutes to vote.`, severity: Severity.INFO, -- GitLab From ac17a069b0d85f4f5d78c4c6f8a26da4db027fcb Mon Sep 17 00:00:00 2001 From: Will Date: Mon, 23 Mar 2020 17:52:51 +0100 Subject: [PATCH 52/86] Cleanup --- packages/polkabot-api/src/plugin.interface.ts | 6 +- .../polkabot-plugin-operator/src/index.ts | 92 ++++++------------- .../src/matrix-helper.ts | 47 +++++++++- .../polkabot-plugin-operator/src/types.ts | 4 + 4 files changed, 76 insertions(+), 73 deletions(-) diff --git a/packages/polkabot-api/src/plugin.interface.ts b/packages/polkabot-api/src/plugin.interface.ts index 2a2d1b6..b2b0796 100644 --- a/packages/polkabot-api/src/plugin.interface.ts +++ b/packages/polkabot-api/src/plugin.interface.ts @@ -83,7 +83,7 @@ export interface ChatBot { export class PolkabotPluginBase { // TODO: fix the mess here public module: PluginModule; - public config: ConfigObject; + // public config: ConfigObject; public context: PluginContext; // TODO public package: packageJson; public type: Type; @@ -95,7 +95,7 @@ export class PolkabotPluginBase { // console.log(`++ PolkabotPluginBase/${type} ${mod.name}: ${mod.path}`); this.type = type; this.context = context; - this.config = config; + // this.config = config; this.module = mod; const packageFile = path.join(mod.path, 'package.json'); @@ -125,7 +125,7 @@ export type PolkabotPlugin = PolkabotWorker | PolkabotNotifier | PolkabotChatbot */ export interface PluginContext { config: ConfigObject; - pkg; + pkg: packageJson; db; matrix; polkadot; diff --git a/packages/polkabot-plugin-operator/src/index.ts b/packages/polkabot-plugin-operator/src/index.ts index c1881a9..e2f971a 100644 --- a/packages/polkabot-plugin-operator/src/index.ts +++ b/packages/polkabot-plugin-operator/src/index.ts @@ -12,12 +12,16 @@ import { Room, SenderId, RoomId, + NotifierMessage, + NotifierSpecs, } from '@polkabot/api/src/plugin.interface'; import moment from 'moment'; import getCommandSet from './commandSet'; import { PolkabotChatbot } from '@polkabot/api/src/PolkabotChatbot'; import MatrixHelper from './matrix-helper'; import { packageJson } from 'package-json'; +import { assert } from '@polkadot/util'; +import { OperatorParams } from './types'; const capitalize: (string) => string = (s: string) => { if (typeof s !== 'string') return ''; @@ -29,17 +33,30 @@ export default class Operator extends PolkabotChatbot implements Controllable { package: packageJson; controllables: Controllable[]; context: PluginContext; + params: OperatorParams; + matrixHelper: MatrixHelper + + /** + * This function reads the config and populate the params object of + * this plugin as it should. The config object should not be used after that. + */ + private loadParams() : OperatorParams { + return { + botMasterId: this.context.config.Get('MATRIX', 'BOTMASTER_ID'), + botUserId: this.context.config.Get('MATRIX', 'BOTUSER_ID'), + } + } public constructor(mod: PluginModule, context: PluginContext, config?) { super(mod, context, config); this.commandSet = getCommandSet(this); + assert(this.context.config, "The config seems to be missing") + this.params = this.loadParams(); + this.matrixHelper = new MatrixHelper(this.params) } public start(): void { - // Todo: this should be done in private and on demand - // ideally, each plugin report its commands and the bot - // provide the instructions instead of having each plugin to the work. - this.watchChat(); + this.watchChat(); } // TODO: move all handlers to a separate file @@ -138,10 +155,10 @@ export default class Operator extends PolkabotChatbot implements Controllable { // console.log('Operator - event.getContent()', event.getContent()) const msg: string = event.getContent().body; - const senderId = event.getSender(); + const senderId: SenderId = event.getSender(); // If we see our own message, we skip - if (MatrixHelper.isSelf(senderId, this.config.Get('MATRIX', 'BOTUSER_ID'))) return; + if (this.matrixHelper.isBot(senderId)) return; // If there is no ! and the string contains help, we try to help if (msg.indexOf('!') < 0 && msg.toLowerCase().indexOf('help') > 0) { @@ -187,7 +204,6 @@ export default class Operator extends PolkabotChatbot implements Controllable { }); return; } - // console.log("msg", msg); // TODO FIXME - this still triggers an error in the logs when the Bot Master // sends a message without an argument in the public room (i.e. `!say`) @@ -198,19 +214,7 @@ export default class Operator extends PolkabotChatbot implements Controllable { const senderRoomId: RoomId = event.sender.roomId; const roomIdWithBot: RoomId = room.roomId; - console.log(senderId, senderRoomId, roomIdWithBot); - - // console.log('Operator - msg: ', msg) - // console.log('Operator - senderId: ', senderId) - // console.log('Operator - senderRoomId', senderRoomId) - // console.log('Operator - roomIdWithBot', roomIdWithBot) - - // console.log("isPrivate", this.isPrivate(senderRoomId, roomIdWithBot)); - // console.log("isMaster", this.isMaster(senderId)); - // console.log("isBotMasterAndBotInRoom", this.isBotMasterAndBotInRoom(room)); - // console.log("isBotMessageRecipient", this.isBotMessageRecipient(room)); - - if (MatrixHelper.isPrivate(senderRoomId, roomIdWithBot)) { + if (this.matrixHelper.isPrivate(senderRoomId, roomIdWithBot)) { /** * Check that the senderId is the Bot Master with isOperator * Also check that the message is from a direct message between @@ -222,8 +226,8 @@ export default class Operator extends PolkabotChatbot implements Controllable { * commands, we only want them to appears in the direct message. **/ if ( - this.isMaster(senderId) && - this.isBotMasterAndBotInRoom(room) + this.matrixHelper.isMaster(senderId) && + this.matrixHelper.isBotMasterAndBotInRoom(room) // && isBotMessageRecipient ) { console.log('Operator - Bot received message from Bot Master in direct message'); @@ -299,48 +303,4 @@ export default class Operator extends PolkabotChatbot implements Controllable { } }); } - - - - // private showInstructions() { - // // Send message to the room notifying users how to use the bot - // const notifierMessage: NotifierMessage = { - // message: - // "Polkabot Operator Plugin public user usage instructions:\n 1) Ask Polkabot Operator to provide node info with command: !status" - // }; - - // const notifierSpecs: NotifierSpecs = { - // notifiers: ["matrix", "demo", "all"] - // }; - - // this.context.polkabot.notify(notifierMessage, notifierSpecs); - // } - - /** - * Check if the sender id of the user that sent the message - * is the Bot Master's id - */ - private isMaster(senderId: SenderId): boolean { - return senderId === this.context.config.Get('MATRIX', 'BOTMASTER_ID'); - } - - // Is the chat room name the same name as the Bot's name - // After string manipulation to get just the username from the Bot's - // user id (i.e. @mybot:matrix.org ---> mybot) - public isBotMessageRecipient(room: Room): boolean { - return ( - room.name === - this.context.config.Get('MATRIX', 'BOTUSER_ID') - .split(':') - .shift() - .substring(1) - ); - } - - // Has the Bot Master initiated a direct chat with the Bot - private isBotMasterAndBotInRoom(room: Room): boolean { - const expectedDirectMessageRoomMemberIds = [this.context.config.Get('MATRIX', 'BOTMASTER_ID'), this.context.config.Get('MATRIX', 'BOTUSER_ID')]; - const directChatRoomMemberIds = Object.keys(room.currentState.members); - return expectedDirectMessageRoomMemberIds.every(val => directChatRoomMemberIds.includes(val)); - } } diff --git a/packages/polkabot-plugin-operator/src/matrix-helper.ts b/packages/polkabot-plugin-operator/src/matrix-helper.ts index e5a06d7..8c59146 100644 --- a/packages/polkabot-plugin-operator/src/matrix-helper.ts +++ b/packages/polkabot-plugin-operator/src/matrix-helper.ts @@ -1,12 +1,51 @@ -import { RoomId } from '@polkabot/api/src/plugin.interface'; +import { RoomId, SenderId, Room } from '@polkabot/api/src/plugin.interface'; +import { OperatorParams } from './types'; export default class MatrixHelper { + params: OperatorParams; - public static isPrivate(senderRoomId: RoomId, roomIdWithBot: RoomId): boolean { + public constructor(p: OperatorParams) { + this.params = p; + } + + public isPrivate(senderRoomId: RoomId, roomIdWithBot: RoomId): boolean { return senderRoomId === roomIdWithBot; } - public static isSelf(senderId, botUserId): boolean { - return senderId === botUserId; + public isBot(senderId): boolean { + return senderId === this.params.botUserId; + } + + /** + * Check if the sender id of the user that sent the message + * is the Bot Master's id + */ + public isMaster(senderId: SenderId): boolean { + return senderId === this.params.botMasterId; + } + + /** + * Is the chat room name the same name as the Bot's name + * After string manipulation to get just the username from the Bot's + * user id (i.e. @mybot:matrix.org ---> mybot) + * @param room the room + */ + public isBotMessageRecipient(room: Room): boolean { + return ( + room.name === + this.params.botUserId + .split(':') + .shift() + .substring(1) + ); + } + + /** + * Has the Bot Master initiated a direct chat with the Bot + */ + public isBotMasterAndBotInRoom(room: Room): boolean { + const expectedDirectMessageRoomMemberIds = [this.params.botMasterId, this.params.botUserId]; + const directChatRoomMemberIds = Object.keys(room.currentState.members); + return expectedDirectMessageRoomMemberIds.every(val => directChatRoomMemberIds.includes(val)); } } diff --git a/packages/polkabot-plugin-operator/src/types.ts b/packages/polkabot-plugin-operator/src/types.ts index e69de29..841a46e 100644 --- a/packages/polkabot-plugin-operator/src/types.ts +++ b/packages/polkabot-plugin-operator/src/types.ts @@ -0,0 +1,4 @@ +export type OperatorParams = { + botMasterId: string; + botUserId: string; +}; -- GitLab From 4cf7dd6f9b526a7438dc24bfaa5e9a55b70b9723 Mon Sep 17 00:00:00 2001 From: Will Date: Mon, 23 Mar 2020 18:08:00 +0100 Subject: [PATCH 53/86] Fix a few issues and bump up deps for confmgr, polkadotjs api and matrix --- packages/polkabot-api/src/PolkabotNotifier.ts | 1 + .../polkabot-plugin-reporter/src/index.ts | 4 +- .../polkabot-plugin-stallwatcher/src/index.ts | 2 +- packages/polkabot/package.json | 11 +- yarn.lock | 239 +++++++++--------- 5 files changed, 126 insertions(+), 131 deletions(-) diff --git a/packages/polkabot-api/src/PolkabotNotifier.ts b/packages/polkabot-api/src/PolkabotNotifier.ts index 7cdb2de..e78dfc7 100644 --- a/packages/polkabot-api/src/PolkabotNotifier.ts +++ b/packages/polkabot-api/src/PolkabotNotifier.ts @@ -2,6 +2,7 @@ import { PolkabotPluginBase, PluginModule, PluginContext, Type, NotifierMessage, export abstract class PolkabotNotifier extends PolkabotPluginBase { public abstract channel: string; // 'twitter', 'matrix', 'email', .... + constructor(mod: PluginModule, context: PluginContext, config?) { super(Type.Notifier, mod, context, config); } diff --git a/packages/polkabot-plugin-reporter/src/index.ts b/packages/polkabot-plugin-reporter/src/index.ts index 0a4a33c..9391ddd 100644 --- a/packages/polkabot-plugin-reporter/src/index.ts +++ b/packages/polkabot-plugin-reporter/src/index.ts @@ -34,7 +34,7 @@ export default class Reporter extends PolkabotWorker { private notifierSpecs: NotifierSpecs = { notifiers: ['matrix'], }; - + // TODO: bring params and loadParams here private consts: any; public constructor(mod: PluginModule, context: PluginContext, config?) { @@ -87,7 +87,7 @@ export default class Reporter extends PolkabotWorker { } public start(): void { - console.log('Reporter - Starting with config:', this.config); + // console.log('Reporter - Starting with config:', this.config); this.watchChain().catch(error => { console.error('Reporter - Error subscribing to chain: ', error); }); diff --git a/packages/polkabot-plugin-stallwatcher/src/index.ts b/packages/polkabot-plugin-stallwatcher/src/index.ts index 3535e1a..0a24976 100644 --- a/packages/polkabot-plugin-stallwatcher/src/index.ts +++ b/packages/polkabot-plugin-stallwatcher/src/index.ts @@ -17,7 +17,7 @@ export default class StallWatcher extends PolkabotWorker { public constructor(mod: PluginModule, context: PluginContext, config?) { super(mod, context, config); this.params = { - duration: this.config.Get('STALLWATCHER', 'DURATION') + duration: this.context.config.Get('STALLWATCHER', 'DURATION') }; this.stalled = null; } diff --git a/packages/polkabot/package.json b/packages/polkabot/package.json index c3f1ee8..924737b 100644 --- a/packages/polkabot/package.json +++ b/packages/polkabot/package.json @@ -33,11 +33,12 @@ "Matrix.org" ], "dependencies": { - "@polkadot/api": "1.7.1", + "@babel/runtime": "^7.8.7", + "@polkadot/api": "1.8.1", "bn.js": "5.1.1", - "confmgr": "^1.0.3", + "confmgr": "^1.0.5", "find-node-modules": "^2.0.0", - "matrix-js-sdk": "2.3.0", + "matrix-js-sdk": "^5.1.1", "minimongo": "6.5.0", "nedb": "^1.8.0", "olm": "https://matrix.org/packages/npm/olm/olm-3.0.0.tgz", @@ -55,7 +56,7 @@ "eslint-config-prettier": "6.10.0", "eslint-config-standard": "14.1.0", "eslint-plugin-import": "2.20.1", - "eslint-plugin-node": "^11.0.00", + "eslint-plugin-node": "^11.0.0", "eslint-plugin-promise": "4.2.1", "eslint-plugin-react": "7.19.0", "eslint-plugin-standard": "4.0.1", @@ -65,7 +66,7 @@ "nodemon": "2.0.2", "snazzy": "^8.0.0", "standard": "14.3.3", - "ts-node": "^8.6.2", + "ts-node": "^8.8.1", "typescript": "3.8.3", "yarn": "^1.22.4" }, diff --git a/yarn.lock b/yarn.lock index 3c6f232..f293073 100644 --- a/yarn.lock +++ b/yarn.lock @@ -32,9 +32,9 @@ source-map "^0.5.0" "@babel/generator@^7.9.0": - version "7.9.0" - resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.9.0.tgz#0f67adea4ec39dad6e63345f70eec33014d78c89" - integrity sha512-onl4Oy46oGCzymOXtKMQpI7VXtCbTSHK1kqBydZ6AmzuNcacEVqGk9tZtAS+48IA9IstZcDCgIg8hQKnb7suRw== + version "7.9.3" + resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.9.3.tgz#7c8b2956c6f68b3ab732bd16305916fbba521d94" + integrity sha512-RpxM252EYsz9qLUIq6F7YJyK1sv0wWDBFuztfDGWaQKzHjqDHysxSiRUpA/X9jmfqo+WzkAVKFaUily5h+gDCQ== dependencies: "@babel/types" "^7.9.0" jsesc "^2.5.1" @@ -127,9 +127,9 @@ integrity sha512-6G8bQKjOh+of4PV/ThDm/rRqlU7+IGoJuofpagU5GlEl29Vv0RGqqt86ZGRV8ZuSOY3o+8yXl5y782SMcG7SHw== "@babel/helpers@^7.9.0": - version "7.9.0" - resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.9.0.tgz#ab2c1bc4821af766cab51d4868a5038874ea5a12" - integrity sha512-/9GvfYTCG1NWCNwDj9e+XlnSCmWW/r9T794Xi58vPF9WCcnZCAZ0kWLSn54oqP40SUvh1T2G6VwKmFO5AOlW3A== + version "7.9.2" + resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.9.2.tgz#b42a81a811f1e7313b88cba8adc66b3d9ae6c09f" + integrity sha512-JwLvzlXVPjO8eU9c/wF9/zOIN7X6h8DYf7mG4CiFRZRvZNKEF5dQ3H3V+ASkHoIB3mWhatgl5ONhyqHRI6MppA== dependencies: "@babel/template" "^7.8.3" "@babel/traverse" "^7.9.0" @@ -145,9 +145,9 @@ js-tokens "^4.0.0" "@babel/parser@^7.0.0", "@babel/parser@^7.4.4", "@babel/parser@^7.7.5", "@babel/parser@^7.8.6", "@babel/parser@^7.9.0": - version "7.9.0" - resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.9.0.tgz#f821b32313f07ee570976d3f6238e8d2d66e0a8e" - integrity sha512-Iwyp00CZsypoNJcpXCbq3G4tcDgphtlMwMVrMhhZ//XBkqjXF7LW6V511yk0+pBX3ZwwGnPea+pTKNJiqA7pUg== + version "7.9.3" + resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.9.3.tgz#043a5fc2ad8b7ea9facddc4e802a1f0f25da7255" + integrity sha512-E6SpIDJZ0cZAKoCNk+qSDd0ChfTnpiJN9FfNf3RZ20dzwA2vL2oq5IX1XTVT+4vDmRlta2nGk5HGMMskJAR+4A== "@babel/plugin-transform-runtime@^7.8.3": version "7.9.0" @@ -160,9 +160,9 @@ semver "^5.5.1" "@babel/runtime-corejs3@^7.8.3": - version "7.9.0" - resolved "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.9.0.tgz#0d4119c44ad05bfa0ca16f2f4f91cde430056c08" - integrity sha512-Fe3z3yVZNCUTaOFBAofwkEtFiYi7a7Gg2F5S1QX+mqP403i2iKJtyHJYEp/PV2ijUheT0PiKWbmXcqtwLhmBzg== + version "7.9.2" + resolved "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.9.2.tgz#26fe4aa77e9f1ecef9b776559bbb8e84d34284b7" + integrity sha512-HHxmgxbIzOfFlZ+tdeRKtaxWOMUoCG5Mu3wKeUmOxjYrwb3AAHgnmtCUbPPK11/raIWLIBK250t8E2BPO0p7jA== dependencies: core-js-pure "^3.0.0" regenerator-runtime "^0.13.4" @@ -174,10 +174,10 @@ dependencies: regenerator-runtime "^0.13.4" -"@babel/runtime@^7.8.7": - version "7.9.0" - resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.0.tgz#337eda67401f5b066a6f205a3113d4ac18ba495b" - integrity sha512-cTIudHnzuWLS56ik4DnRnqqNf8MkdUzV4iFFI1h7Jo9xvrpQROYaAnaSd2mHLQAzzZAPfATynX5ord6YlNYNMA== +"@babel/runtime@^7.8.3", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": + version "7.9.2" + resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.2.tgz#d90df0583a3a252f09aaa619665367bae518db06" + integrity sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q== dependencies: regenerator-runtime "^0.13.4" @@ -229,49 +229,40 @@ resolved "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.2.tgz#26520bf09abe4a5644cd5414e37125a8954241dd" integrity sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw== -"@polkadot/api-derive@1.7.1": - version "1.7.1" - resolved "https://registry.npmjs.org/@polkadot/api-derive/-/api-derive-1.7.1.tgz#17446854462886e9782e68cbfb6f86dc0405a830" - integrity sha512-kSJ9K6RQH8fuyUL+51PtuVjBhwUW+Cwm15fBzX0qWrZHqPzeBnZBdZFCJ8gGP61Olfl7u6OQeChhujL5NGwCHA== +"@polkadot/api-derive@1.8.1": + version "1.8.1" + resolved "https://registry.npmjs.org/@polkadot/api-derive/-/api-derive-1.8.1.tgz#0253e23c922a3a94c19de64f6c64904e3cc11648" + integrity sha512-/eDtnfdfiEcm28s6IKYHw0i1Y8ZBONAKuuP7NQWKehQD6JkPBBtEheTTjl1r3sPQMP+bSD/rFU+G4kB4Ly2RhA== dependencies: - "@babel/runtime" "^7.8.7" - "@polkadot/api" "1.7.1" - "@polkadot/rpc-core" "1.7.1" - "@polkadot/rpc-provider" "1.7.1" - "@polkadot/types" "1.7.1" + "@babel/runtime" "^7.9.2" + "@polkadot/api" "1.8.1" + "@polkadot/rpc-core" "1.8.1" + "@polkadot/rpc-provider" "1.8.1" + "@polkadot/types" "1.8.1" "@polkadot/util" "^2.6.2" "@polkadot/util-crypto" "^2.6.2" bn.js "^5.1.1" memoizee "^0.4.14" rxjs "^6.5.4" -"@polkadot/api@1.7.1": - version "1.7.1" - resolved "https://registry.npmjs.org/@polkadot/api/-/api-1.7.1.tgz#89470ca40bc64e355d691e75940f92f6e444aa1b" - integrity sha512-axrsxpXbM1K3H6FzSWYQKaVlKyqXheZVId1grOKwX3ZA/DB/mSr1YFXqZt8UNgzJDf8LH3VOyWHOOcmxWyi7nw== +"@polkadot/api@1.8.1": + version "1.8.1" + resolved "https://registry.npmjs.org/@polkadot/api/-/api-1.8.1.tgz#a8341ddcacbe60c1236e46bdb0246c971f7f4485" + integrity sha512-3x+7Q/Gsol/UnWsA/dqbvysQ4nZ0ffmCrUJiTu6U7JrVP+a8PLrGU4asr+aqtSvY861iHfZjv8xmSqIiGjRuUw== dependencies: - "@babel/runtime" "^7.8.7" - "@polkadot/api-derive" "1.7.1" + "@babel/runtime" "^7.9.2" + "@polkadot/api-derive" "1.8.1" "@polkadot/keyring" "^2.6.2" - "@polkadot/metadata" "1.7.1" - "@polkadot/rpc-core" "1.7.1" - "@polkadot/rpc-provider" "1.7.1" - "@polkadot/types" "1.7.1" + "@polkadot/metadata" "1.8.1" + "@polkadot/rpc-core" "1.8.1" + "@polkadot/rpc-provider" "1.8.1" + "@polkadot/types" "1.8.1" "@polkadot/util" "^2.6.2" "@polkadot/util-crypto" "^2.6.2" bn.js "^5.1.1" eventemitter3 "^4.0.0" rxjs "^6.5.4" -"@polkadot/jsonrpc@1.7.1": - version "1.7.1" - resolved "https://registry.npmjs.org/@polkadot/jsonrpc/-/jsonrpc-1.7.1.tgz#eb5a07415e56311cc0dbe03eeca28060e49b3d30" - integrity sha512-tOniIG97p4QYTsKlRK10UTbV8EFBAlY/VeW2+vQqItY/8jsDHvExF7Wzhbxs1pRYXILaVaqGMxaXXEjoMw6Xxg== - dependencies: - "@babel/runtime" "^7.8.7" - "@polkadot/types" "1.7.1" - "@polkadot/util" "^2.6.2" - "@polkadot/keyring@^2.6.2": version "2.6.2" resolved "https://registry.npmjs.org/@polkadot/keyring/-/keyring-2.6.2.tgz#a0fc5b12e6b2bba738384fbc1cd93a0c61f30bac" @@ -281,40 +272,38 @@ "@polkadot/util" "2.6.2" "@polkadot/util-crypto" "2.6.2" -"@polkadot/metadata@1.7.1": - version "1.7.1" - resolved "https://registry.npmjs.org/@polkadot/metadata/-/metadata-1.7.1.tgz#47878d714a0d4898a17eac74e72131140680eec9" - integrity sha512-We5eaUwuBNa4Q/shLpEtwUoTZvYMQgpZPW5N/JRoitkJBHJiHvt12IR8JgQnB5wrDNoJ8f97kVOv1eeXTzhn4g== +"@polkadot/metadata@1.8.1": + version "1.8.1" + resolved "https://registry.npmjs.org/@polkadot/metadata/-/metadata-1.8.1.tgz#879a3f011fcd78765e6560eefc6ce1124d94c02a" + integrity sha512-mVCcEU9U9r8jGFWPYyxwwiZlFFZK2LgDLzKDexkJqfB2HmgeEVxIBBGFdrclYb1yeNlojKq2ge7P4V4Zr5ShJQ== dependencies: - "@babel/runtime" "^7.8.7" - "@polkadot/types" "1.7.1" + "@babel/runtime" "^7.9.2" + "@polkadot/types" "1.8.1" "@polkadot/util" "^2.6.2" "@polkadot/util-crypto" "^2.6.2" bn.js "^5.1.1" -"@polkadot/rpc-core@1.7.1": - version "1.7.1" - resolved "https://registry.npmjs.org/@polkadot/rpc-core/-/rpc-core-1.7.1.tgz#ad90b330b9edef34035cd3ba755da2e0f6dc512d" - integrity sha512-et5sdEJkIgU5l/nU5o5JwvuIAYz9HDYLxj+VNGIwA7ACcG+OWb/sDtBELmlYGCXmzKnMgW5aq/Fj2+Wgvj34PA== +"@polkadot/rpc-core@1.8.1": + version "1.8.1" + resolved "https://registry.npmjs.org/@polkadot/rpc-core/-/rpc-core-1.8.1.tgz#be1c9393e8a4509fcd12e6ea1c54e5c686125a96" + integrity sha512-eepA2xLhtNfdtKgv9c2k8rMmFMjmrFqtTjy12APuqCY8qBk4q32X5gXYmioV76Ie8PaMq4bkBF6fYiXa08qxDw== dependencies: - "@babel/runtime" "^7.8.7" - "@polkadot/jsonrpc" "1.7.1" - "@polkadot/metadata" "1.7.1" - "@polkadot/rpc-provider" "1.7.1" - "@polkadot/types" "1.7.1" + "@babel/runtime" "^7.9.2" + "@polkadot/metadata" "1.8.1" + "@polkadot/rpc-provider" "1.8.1" + "@polkadot/types" "1.8.1" "@polkadot/util" "^2.6.2" memoizee "^0.4.14" rxjs "^6.5.4" -"@polkadot/rpc-provider@1.7.1": - version "1.7.1" - resolved "https://registry.npmjs.org/@polkadot/rpc-provider/-/rpc-provider-1.7.1.tgz#745bfda406281783a7cb2d350e1ac72f4795d54c" - integrity sha512-AVAoqeXBNEvy9B1n9Gs0ENW/AHRnHqwDMysAz5hCdoQZXuSYh2WTikXbIsvWH1ouS1Fu3x0pfZW1s2EONonYWA== +"@polkadot/rpc-provider@1.8.1": + version "1.8.1" + resolved "https://registry.npmjs.org/@polkadot/rpc-provider/-/rpc-provider-1.8.1.tgz#66b4894658081cb8c701cacb2a11f1532bd49e44" + integrity sha512-zkwehn1dgXZvwWppS/W7BdU6SZ1WxGkxXBtLEcEzSY43WxPcwpXm0iWy9JkWzVJ28xGenFjk4ngLquNBzL1hSw== dependencies: - "@babel/runtime" "^7.8.7" - "@polkadot/jsonrpc" "1.7.1" - "@polkadot/metadata" "1.7.1" - "@polkadot/types" "1.7.1" + "@babel/runtime" "^7.9.2" + "@polkadot/metadata" "1.8.1" + "@polkadot/types" "1.8.1" "@polkadot/util" "^2.6.2" "@polkadot/util-crypto" "^2.6.2" bn.js "^5.1.1" @@ -322,13 +311,13 @@ isomorphic-fetch "^2.2.1" websocket "^1.0.31" -"@polkadot/types@1.7.1": - version "1.7.1" - resolved "https://registry.npmjs.org/@polkadot/types/-/types-1.7.1.tgz#83a0c6a8ccc621f513d79510280af21632d058b8" - integrity sha512-w0GOVuBssu+AAB5uk5eOiSToTJnej9J7r5M4sdxGb+nJHxnnHcyNYm8j6PtSK0O/UwYgJG4FzUhzSkvRczE+hQ== +"@polkadot/types@1.8.1": + version "1.8.1" + resolved "https://registry.npmjs.org/@polkadot/types/-/types-1.8.1.tgz#1ff499653aefbcc6ff852c830b74e9a31ac12806" + integrity sha512-UVyrNhW8khUw7nDNOdEdZNJvG4Nlq1wBOTmmOFnpihBY95jVtk63jUjcb8CjR5/kJgpAIYumZ3XupZ8BgN1KPw== dependencies: - "@babel/runtime" "^7.8.7" - "@polkadot/metadata" "1.7.1" + "@babel/runtime" "^7.9.2" + "@polkadot/metadata" "1.8.1" "@polkadot/util" "^2.6.2" "@polkadot/util-crypto" "^2.6.2" "@types/bn.js" "^4.11.6" @@ -524,9 +513,9 @@ integrity sha512-ZvO2tAcjmMi8V/5Z3JsyofMe3hasRcaw88cto5etSVMwVQfeivGAlEYmaQgceUSVYFofVjT+ioHsATjdWcFt1w== "@types/node@*": - version "13.9.2" - resolved "https://registry.npmjs.org/@types/node/-/node-13.9.2.tgz#ace1880c03594cc3e80206d96847157d8e7fa349" - integrity sha512-bnoqK579sAYrQbp73wwglccjJ4sfRdKU7WNEZ5FW4K2U6Kc0/eZ5kvXG0JKsEKFB50zrFmfFt52/cvBbZa7eXg== + version "13.9.3" + resolved "https://registry.npmjs.org/@types/node/-/node-13.9.3.tgz#6356df2647de9eac569f9a52eda3480fa9e70b4d" + integrity sha512-01s+ac4qerwd6RHD+mVbOEsraDHSgUaefQlEdBbUolnQFjKwCr7luvAlEwW1RFojh67u0z4OUTjPn9LEl4zIkA== "@types/node@11.11.6": version "11.11.6" @@ -1521,7 +1510,7 @@ blakejs@^1.1.0: resolved "https://registry.npmjs.org/blakejs/-/blakejs-1.1.0.tgz#69df92ef953aa88ca51a32df6ab1c54a155fc7a5" integrity sha1-ad+S75U6qIylGjLfarHFShVfx6U= -bluebird@^3.5.0, bluebird@^3.5.4: +bluebird@^3.5.4: version "3.7.2" resolved "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== @@ -1696,9 +1685,9 @@ camelcase@^5.0.0, camelcase@^5.3.1: integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== caniuse-lite@^1.0.30000844: - version "1.0.30001035" - resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001035.tgz#2bb53b8aa4716b2ed08e088d4dc816a5fe089a1e" - integrity sha512-C1ZxgkuA4/bUEdMbU5WrGY4+UhMFFiXrgNAfxiMIqWgFTWfv/xsZCS2xEHT2LMq7xAZfuAnu6mcqyDl0ZR6wLQ== + version "1.0.30001036" + resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001036.tgz#930ea5272010d8bf190d859159d757c0b398caf0" + integrity sha512-jU8CIFIj2oR7r4W+5AKcsvWNVIb6Q6OZE3UsrXrZBHFtreT4YgTeOJtTucp+zSedEpTi3L5wASSP0LYIE3if6w== capture-stack-trace@^1.0.0: version "1.0.1" @@ -2007,7 +1996,7 @@ configstore@^3.0.0: write-file-atomic "^2.0.0" xdg-basedir "^3.0.0" -confmgr@^1.0.3: +confmgr@^1.0.5: version "1.0.5" resolved "https://registry.npmjs.org/confmgr/-/confmgr-1.0.5.tgz#9b039c8ef62bce349292fd4ec91783ea483c6f05" integrity sha512-G3eDWg5tT9O4N6K6H/SJn5ZYew5LKXhuB/hE3i54wa/1YbRjb6BXTiZEeSzanFFMkAEZUC3jWII/mkTQjAycOw== @@ -2349,9 +2338,9 @@ ecc-jsbn@~0.1.1: safer-buffer "^2.1.0" electron-to-chromium@^1.3.47: - version "1.3.379" - resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.379.tgz#81dc5e82a3e72bbb830d93e15bc35eda2bbc910e" - integrity sha512-NK9DBBYEBb5f9D7zXI0hiE941gq3wkBeQmXs1ingigA/jnTg5mhwY2Z5egwA+ZI8OLGKCx0h1Cl8/xeuIBuLlg== + version "1.3.380" + resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.380.tgz#1e1f07091b42b54bccd0ad6d3a14f2b73b60dc9d" + integrity sha512-2jhQxJKcjcSpVOQm0NAfuLq8o+130blrcawoumdXT6411xG/xIAOyZodO/y7WTaYlz/NHe3sCCAe/cJLnDsqTw== elliptic@^6.5.2: version "6.5.2" @@ -2396,9 +2385,9 @@ error-ex@^1.2.0, error-ex@^1.3.1: is-arrayish "^0.2.1" es-abstract@^1.17.0, es-abstract@^1.17.0-next.1: - version "1.17.4" - resolved "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.4.tgz#e3aedf19706b20e7c2594c35fc0d57605a79e184" - integrity sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ== + version "1.17.5" + resolved "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz#d8c9d1d66c8981fb9200e2251d799eee92774ae9" + integrity sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg== dependencies: es-to-primitive "^1.2.1" function-bind "^1.1.1" @@ -2600,7 +2589,7 @@ eslint-plugin-import@~2.18.0: read-pkg-up "^2.0.0" resolve "^1.11.0" -eslint-plugin-node@^11.0.00: +eslint-plugin-node@^11.0.0: version "11.0.0" resolved "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-11.0.0.tgz#365944bb0804c5d1d501182a9bc41a0ffefed726" integrity sha512-chUs/NVID+sknFiJzxoN9lM7uKSOEta8GC8365hw1nDfwIPIjjpRSwwPvQanWv8dt/pDe9EV4anmVSwdiSndNg== @@ -2947,11 +2936,11 @@ esprima@^4.0.0: integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== esquery@^1.0.1: - version "1.1.0" - resolved "https://registry.npmjs.org/esquery/-/esquery-1.1.0.tgz#c5c0b66f383e7656404f86b31334d72524eddb48" - integrity sha512-MxYW9xKmROWF672KqjO75sszsA8Mxhw06YFeS5VHlB98KDHbOSurm3ArsjO60Eaf3QmGMCP1yn+0JQkNLo/97Q== + version "1.2.0" + resolved "https://registry.npmjs.org/esquery/-/esquery-1.2.0.tgz#a010a519c0288f2530b3404124bfb5f02e9797fe" + integrity sha512-weltsSqdeWIX9G2qQZz7KlTRJdkkOCTPgLYJUz1Hacf48R4YOwGPHO3+ORfWedqJKbq5WQmsgK90n+pFLIKt/Q== dependencies: - estraverse "^4.0.0" + estraverse "^5.0.0" esrecurse@^4.1.0: version "4.2.1" @@ -2960,11 +2949,16 @@ esrecurse@^4.1.0: dependencies: estraverse "^4.1.0" -estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1: +estraverse@^4.1.0, estraverse@^4.1.1: version "4.3.0" resolved "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== +estraverse@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.0.0.tgz#ac81750b482c11cca26e4b07e83ed8f75fbcdc22" + integrity sha512-j3acdrMzqrxmJTNj5dbr1YbjacrYgAxVMeF0gK16E3j494mOe7xygM/ZLIguEQ0ETwAg2hlJCtHRGav+y0Ny5A== + esutils@^2.0.2: version "2.0.3" resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" @@ -3466,9 +3460,9 @@ glob-parent@^2.0.0: is-glob "^2.0.0" glob-parent@^5.0.0, glob-parent@~5.1.0: - version "5.1.0" - resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.0.tgz#5f4c1d1e748d30cd73ad2944b3577a81b081e8c2" - integrity sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw== + version "5.1.1" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229" + integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ== dependencies: is-glob "^4.0.1" @@ -3704,9 +3698,9 @@ hosted-git-info@^2.1.4: integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg== html-escaper@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.0.tgz#71e87f931de3fe09e56661ab9a29aadec707b491" - integrity sha512-a4u9BeERWGu/S8JiWEAQcdrg9v4QArtP9keViQjGMdff20fBdd8waotXaNmODqBe6uZ3Nafi7K/ho4gCQHV3Ig== + version "2.0.1" + resolved "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.1.tgz#beed86b5d2b921e92533aa11bce6d8e3b583dee7" + integrity sha512-hNX23TjWwD3q56HpWjUHOKj1+4KKlnjv9PcmBUYKVpga+2cnb9nDx/B1o0yO4n+RZXZdiNxzx6B24C9aNMTkkQ== http-signature@~1.2.0: version "1.2.0" @@ -4568,10 +4562,10 @@ log-symbols@3.0.0: dependencies: chalk "^2.4.2" -loglevel@1.6.1: - version "1.6.1" - resolved "https://registry.npmjs.org/loglevel/-/loglevel-1.6.1.tgz#e0fc95133b6ef276cdc8887cdaf24aa6f156f8fa" - integrity sha1-4PyVEztu8nbNyIh82vJKpvFW+Po= +loglevel@^1.6.4: + version "1.6.7" + resolved "https://registry.npmjs.org/loglevel/-/loglevel-1.6.7.tgz#b3e034233188c68b889f5b862415306f565e2c56" + integrity sha512-cY2eLFrQSAfVPhCgH1s7JI73tMbg9YC3v3+ZHVW67sBS7UxWzNEk/ZBbSfLykBWHp33dqqtOv82gjhKEi81T/A== loose-envify@^1.0.0, loose-envify@^1.4.0: version "1.4.0" @@ -4665,18 +4659,17 @@ math-random@^1.0.1: resolved "https://registry.npmjs.org/math-random/-/math-random-1.0.4.tgz#5dd6943c938548267016d4e34f057583080c514c" integrity sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A== -matrix-js-sdk@2.3.0: - version "2.3.0" - resolved "https://registry.npmjs.org/matrix-js-sdk/-/matrix-js-sdk-2.3.0.tgz#ed04172add2e31c532dc87e2f38c26c2a63191c6" - integrity sha512-jeswie7cWK7+XxcD+pQ7LplWnWkOQDa+x6y7FUUnxCdEvaj38cE5Obo9bPMjFgOln2hISlLdR8fzMNE9F4oUJA== +matrix-js-sdk@^5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/matrix-js-sdk/-/matrix-js-sdk-5.1.1.tgz#d93c2db08acf07e894fb85345d3eaa8d4736b56c" + integrity sha512-zCkylD/oia9v/9Fbx54k/aBNd3szDflscViXq0gf2fQlKzTJRT3LoCAXZ9Uwr7gJ8AE8kFquyZ7revk3Y5YmPQ== dependencies: + "@babel/runtime" "^7.8.3" another-json "^0.2.0" - babel-runtime "^6.26.0" - bluebird "^3.5.0" browser-request "^0.3.3" bs58 "^4.0.1" content-type "^1.0.2" - loglevel "1.6.1" + loglevel "^1.6.4" qs "^6.5.2" request "^2.88.0" unhomoglyph "^1.0.2" @@ -5538,9 +5531,9 @@ performance-now@^2.1.0: integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= picomatch@^2.0.4, picomatch@^2.0.7: - version "2.2.1" - resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.2.1.tgz#21bac888b6ed8601f831ce7816e335bc779f0a4a" - integrity sha512-ISBaA8xQNmwELC7eOjqFKMESB2VIqt4PPDD0nsS95b/9dZXvVKOlz9keMSnoGGKcOHXfTvDD6WMaRoSc9UuhRA== + version "2.2.2" + resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" + integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== pify@^2.0.0: version "2.3.0" @@ -5673,9 +5666,9 @@ punycode@^2.1.0, punycode@^2.1.1: integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== qs@^6.5.1, qs@^6.5.2: - version "6.9.1" - resolved "https://registry.npmjs.org/qs/-/qs-6.9.1.tgz#20082c65cb78223635ab1a9eaca8875a29bf8ec9" - integrity sha512-Cxm7/SS/y/Z3MHWSxXb8lIFqgqBowP5JMlTUFyJN88y0SGQhVmZnqFK/PeuMX9LzUyWsqqhNxIyg0jlzq946yA== + version "6.9.2" + resolved "https://registry.npmjs.org/qs/-/qs-6.9.2.tgz#a27b695006544a04bf0e6c6a7e8120778926d5bd" + integrity sha512-2eQ6zajpK7HwqrY1rRtGw5IZvjgtELXzJECaEDuzDFo2jjnIXpJSimzd4qflWZq6bLLi+Zgfj5eDrAzl/lptyg== qs@~6.5.2: version "6.5.2" @@ -6797,10 +6790,10 @@ ts-node@8.6.2: source-map-support "^0.5.6" yn "3.1.1" -ts-node@^8.3.0, ts-node@^8.6.2: - version "8.7.0" - resolved "https://registry.npmjs.org/ts-node/-/ts-node-8.7.0.tgz#266186947596bef9f3a034687595b30e31b20976" - integrity sha512-s659CsHrsxaRVDEleuOkGvbsA0rWHtszUNEt1r0CgAFN5ZZTQtDzpsluS7W5pOGJIa1xZE8R/zK4dEs+ldFezg== +ts-node@^8.3.0, ts-node@^8.8.1: + version "8.8.1" + resolved "https://registry.npmjs.org/ts-node/-/ts-node-8.8.1.tgz#7c4d3e9ed33aa703b64b28d7f9d194768be5064d" + integrity sha512-10DE9ONho06QORKAaCBpPiFCdW+tZJuY/84tyypGtl6r+/C7Asq0dhqbRZURuUlLQtZxxDvT8eoj8cGW0ha6Bg== dependencies: arg "^4.1.0" diff "^4.0.1" @@ -7197,9 +7190,9 @@ yallist@^3.0.0, yallist@^3.0.3: integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== yaml@^1.8.2: - version "1.8.2" - resolved "https://registry.npmjs.org/yaml/-/yaml-1.8.2.tgz#a29c03f578faafd57dcb27055f9a5d569cb0c3d9" - integrity sha512-omakb0d7FjMo3R1D2EbTKVIk6dAVLRxFXdLZMEUToeAvuqgG/YuHMuQOZ5fgk+vQ8cx+cnGKwyg+8g8PNT0xQg== + version "1.8.3" + resolved "https://registry.npmjs.org/yaml/-/yaml-1.8.3.tgz#2f420fca58b68ce3a332d0ca64be1d191dd3f87a" + integrity sha512-X/v7VDnK+sxbQ2Imq4Jt2PRUsRsP7UcpSl3Llg6+NRRqWLIvxkMFYtH1FmvwNGYRKKPa+EPA4qDBlI9WVG1UKw== dependencies: "@babel/runtime" "^7.8.7" -- GitLab From 39cf102e135df7928e7ff52e3ad5407f68bd6528 Mon Sep 17 00:00:00 2001 From: Will Date: Tue, 21 Apr 2020 17:11:07 +0200 Subject: [PATCH 54/86] Dependencies upgrade and switch target to es2015 --- packages/polkabot/package.json | 10 +- packages/polkabot/tsconfig.json | 2 +- yarn.lock | 280 +++++--------------------------- 3 files changed, 44 insertions(+), 248 deletions(-) diff --git a/packages/polkabot/package.json b/packages/polkabot/package.json index 924737b..43fba9b 100644 --- a/packages/polkabot/package.json +++ b/packages/polkabot/package.json @@ -33,7 +33,7 @@ "Matrix.org" ], "dependencies": { - "@babel/runtime": "^7.8.7", + "@babel/runtime": "^7.9.2", "@polkadot/api": "1.8.1", "bn.js": "5.1.1", "confmgr": "^1.0.5", @@ -47,14 +47,14 @@ "devDependencies": { "@types/dotenv": "^8.2.0", "@types/mocha": "^7.0.2", - "@typescript-eslint/eslint-plugin": "2.24.0", - "@typescript-eslint/parser": "2.24.0", + "@typescript-eslint/eslint-plugin": "2.25.0", + "@typescript-eslint/parser": "2.25.0", "chai": "4.2.0", "chai-http": "4.3.0", "dotenv": "8.2.0", "eslint": "6.8.0", - "eslint-config-prettier": "6.10.0", - "eslint-config-standard": "14.1.0", + "eslint-config-prettier": "^6.10.1", + "eslint-config-standard": "14.1.1", "eslint-plugin-import": "2.20.1", "eslint-plugin-node": "^11.0.0", "eslint-plugin-promise": "4.2.1", diff --git a/packages/polkabot/tsconfig.json b/packages/polkabot/tsconfig.json index c2b1968..68f435b 100644 --- a/packages/polkabot/tsconfig.json +++ b/packages/polkabot/tsconfig.json @@ -5,7 +5,7 @@ "esModuleInterop": true, "resolveJsonModule": true, "allowJs": true, - "target": "es5", + "target": "es2015", "noImplicitAny": false, "sourceMap": true, "preserveConstEnums": true, diff --git a/yarn.lock b/yarn.lock index f293073..ded0bbf 100644 --- a/yarn.lock +++ b/yarn.lock @@ -535,40 +535,40 @@ resolved "https://registry.npmjs.org/@types/yaml/-/yaml-1.2.0.tgz#4ed577fc4ebbd6b829b28734e56d10c9e6984e09" integrity sha512-GW8b9qM+ebgW3/zjzPm0I1NxMvLaz/YKT9Ph6tTb+Fkeyzd9yLTvQ6ciQ2MorTRmb/qXmfjMerRpG4LviixaqQ== -"@typescript-eslint/eslint-plugin@2.24.0": - version "2.24.0" - resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.24.0.tgz#a86cf618c965a462cddf3601f594544b134d6d68" - integrity sha512-wJRBeaMeT7RLQ27UQkDFOu25MqFOBus8PtOa9KaT5ZuxC1kAsd7JEHqWt4YXuY9eancX0GK9C68i5OROnlIzBA== +"@typescript-eslint/eslint-plugin@2.25.0": + version "2.25.0" + resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.25.0.tgz#0b60917332f20dcff54d0eb9be2a9e9f4c9fbd02" + integrity sha512-W2YyMtjmlrOjtXc+FtTelVs9OhuR6OlYc4XKIslJ8PUJOqgYYAPRJhAqkYRQo3G4sjvG8jSodsNycEn4W2gHUw== dependencies: - "@typescript-eslint/experimental-utils" "2.24.0" - eslint-utils "^1.4.3" + "@typescript-eslint/experimental-utils" "2.25.0" functional-red-black-tree "^1.0.1" regexpp "^3.0.0" tsutils "^3.17.1" -"@typescript-eslint/experimental-utils@2.24.0": - version "2.24.0" - resolved "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-2.24.0.tgz#a5cb2ed89fedf8b59638dc83484eb0c8c35e1143" - integrity sha512-DXrwuXTdVh3ycNCMYmWhUzn/gfqu9N0VzNnahjiDJvcyhfBy4gb59ncVZVxdp5XzBC77dCncu0daQgOkbvPwBw== +"@typescript-eslint/experimental-utils@2.25.0": + version "2.25.0" + resolved "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-2.25.0.tgz#13691c4fe368bd377b1e5b1e4ad660b220bf7714" + integrity sha512-0IZ4ZR5QkFYbaJk+8eJ2kYeA+1tzOE1sBjbwwtSV85oNWYUBep+EyhlZ7DLUCyhMUGuJpcCCFL0fDtYAP1zMZw== dependencies: "@types/json-schema" "^7.0.3" - "@typescript-eslint/typescript-estree" "2.24.0" + "@typescript-eslint/typescript-estree" "2.25.0" eslint-scope "^5.0.0" + eslint-utils "^2.0.0" -"@typescript-eslint/parser@2.24.0": - version "2.24.0" - resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-2.24.0.tgz#2cf0eae6e6dd44d162486ad949c126b887f11eb8" - integrity sha512-H2Y7uacwSSg8IbVxdYExSI3T7uM1DzmOn2COGtCahCC3g8YtM1xYAPi2MAHyfPs61VKxP/J/UiSctcRgw4G8aw== +"@typescript-eslint/parser@2.25.0": + version "2.25.0" + resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-2.25.0.tgz#abfb3d999084824d9a756d9b9c0f36fba03adb76" + integrity sha512-mccBLaBSpNVgp191CP5W+8U1crTyXsRziWliCqzj02kpxdjKMvFHGJbK33NroquH3zB/gZ8H511HEsJBa2fNEg== dependencies: "@types/eslint-visitor-keys" "^1.0.0" - "@typescript-eslint/experimental-utils" "2.24.0" - "@typescript-eslint/typescript-estree" "2.24.0" + "@typescript-eslint/experimental-utils" "2.25.0" + "@typescript-eslint/typescript-estree" "2.25.0" eslint-visitor-keys "^1.1.0" -"@typescript-eslint/typescript-estree@2.24.0": - version "2.24.0" - resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-2.24.0.tgz#38bbc8bb479790d2f324797ffbcdb346d897c62a" - integrity sha512-RJ0yMe5owMSix55qX7Mi9V6z2FDuuDpN6eR5fzRJrp+8in9UF41IGNQHbg5aMK4/PjVaEQksLvz0IA8n+Mr/FA== +"@typescript-eslint/typescript-estree@2.25.0": + version "2.25.0" + resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-2.25.0.tgz#b790497556734b7476fa7dd3fa539955a5c79e2c" + integrity sha512-VUksmx5lDxSi6GfmwSK7SSoIKSw9anukWWNitQPqt58LuYrKalzsgeuignbqnB+rK/xxGlSsCy8lYnwFfB6YJg== dependencies: debug "^4.1.1" eslint-visitor-keys "^1.1.0" @@ -720,24 +720,11 @@ append-transform@^2.0.0: dependencies: default-require-extensions "^3.0.0" -aproba@^1.0.3: - version "1.2.0" - resolved "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" - integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== - archy@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" integrity sha1-+cjBN1fMHde8N5rHeyxipcKGjEA= -are-we-there-yet@~1.1.2: - version "1.1.5" - resolved "https://registry.npmjs.org/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.3" resolved "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" @@ -1820,11 +1807,6 @@ chokidar@^3.2.2: optionalDependencies: fsevents "~2.1.2" -chownr@^1.1.1: - version "1.1.4" - resolved "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" - integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== - ci-info@^1.5.0: version "1.6.0" resolved "https://registry.npmjs.org/ci-info/-/ci-info-1.6.0.tgz#2ca20dbb9ceb32d4524a683303313f0304b1e497" @@ -1910,11 +1892,6 @@ cliui@^6.0.0: strip-ansi "^6.0.0" wrap-ansi "^6.2.0" -code-point-at@^1.0.0: - version "1.1.0" - resolved "https://registry.npmjs.org/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.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" @@ -2009,11 +1986,6 @@ confmgr@^1.0.5: typescript "^3.8.3" yaml "^1.8.2" -console-control-strings@^1.0.0, console-control-strings@~1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" - integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= - contains-path@^0.1.0: version "0.1.0" resolved "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" @@ -2258,11 +2230,6 @@ delayed-stream@~1.0.0: resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= -delegates@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" - integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= - detect-file@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7" @@ -2275,11 +2242,6 @@ detect-indent@^4.0.0: dependencies: repeating "^2.0.0" -detect-libc@^1.0.2: - version "1.0.3" - resolved "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" - integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= - diff@3.5.0: version "3.5.0" resolved "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" @@ -2461,10 +2423,10 @@ escape-string-regexp@^2.0.0: resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== -eslint-config-prettier@6.10.0: - version "6.10.0" - resolved "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-6.10.0.tgz#7b15e303bf9c956875c948f6b21500e48ded6a7f" - integrity sha512-AtndijGte1rPILInUdHjvKEGbIV06NuvPrqlIEaEaWtbtvJh464mDeyGMdZEQMsGvC0ZVkiex1fSNcC4HAbRGg== +eslint-config-prettier@^6.10.1: + version "6.10.1" + resolved "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-6.10.1.tgz#129ef9ec575d5ddc0e269667bf09defcd898642a" + integrity sha512-svTy6zh1ecQojvpbJSgH3aei/Rt7C6i090l5f2WQ4aB05lYHeZIR1qL4wZyyILTbtmnbHP5Yn8MrsOJMGa8RkQ== dependencies: get-stdin "^6.0.0" @@ -2493,6 +2455,11 @@ eslint-config-standard@14.1.0: resolved "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-14.1.0.tgz#b23da2b76fe5a2eba668374f246454e7058f15d4" integrity sha512-EF6XkrrGVbvv8hL/kYa/m6vnvmUT+K82pJJc4JJVMM6+Qgqh0pnwprSxdduDLB9p/7bIxD+YV5O0wfb8lmcPbA== +eslint-config-standard@14.1.1: + version "14.1.1" + resolved "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-14.1.1.tgz#830a8e44e7aef7de67464979ad06b406026c56ea" + integrity sha512-Z9B+VR+JIXRxz21udPTL9HpFMyoMUEeX1G251EQ6e05WD9aPVtVBn09XUmZ259wCMlCDmYDSZG62Hhm+ZTJcUg== + eslint-config-standard@~14.0.0: version "14.0.1" resolved "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-14.0.1.tgz#375c3636fb4bd453cb95321d873de12e4eef790b" @@ -3327,13 +3294,6 @@ fromentries@^1.2.0: resolved "https://registry.npmjs.org/fromentries/-/fromentries-1.2.0.tgz#e6aa06f240d6267f913cea422075ef88b63e7897" integrity sha512-33X7H/wdfO99GdRLLgkjUrD4geAFdq/Uv0kl3HD4da6HDixd2GUg8Mw7dahLCV9r/EARkmtYBB6Tch4EEokFTQ== -fs-minipass@^1.2.5: - version "1.2.7" - resolved "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7" - integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA== - dependencies: - minipass "^2.6.0" - fs-readdir-recursive@^1.0.0: version "1.1.0" resolved "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz#e32fc030a2ccee44a6b5371308da54be0b397d27" @@ -3378,20 +3338,6 @@ funding@^1.0.0: term-size "^2.1.0" word-wrap "^1.2.3" -gauge@~2.7.3: - version "2.7.4" - resolved "https://registry.npmjs.org/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" - gensync@^1.0.0-beta.1: version "1.0.0-beta.1" resolved "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269" @@ -3596,11 +3542,6 @@ has-symbols@^1.0.0, has-symbols@^1.0.1: resolved "https://registry.npmjs.org/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.npmjs.org/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.npmjs.org/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" @@ -3711,7 +3652,7 @@ http-signature@~1.2.0: jsprim "^1.2.2" sshpk "^1.7.0" -iconv-lite@^0.4.17, iconv-lite@^0.4.24, iconv-lite@^0.4.4, iconv-lite@~0.4.13: +iconv-lite@^0.4.17, iconv-lite@^0.4.24, iconv-lite@~0.4.13: version "0.4.24" resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== @@ -3728,13 +3669,6 @@ ignore-by-default@^1.0.1: resolved "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09" integrity sha1-SMptcvbGo68Aqa1K5odr44ieKwk= -ignore-walk@^3.0.1: - version "3.0.3" - resolved "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.3.tgz#017e2447184bfeade7c238e4aefdd1e8f95b1e37" - integrity sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw== - dependencies: - minimatch "^3.0.4" - ignore@^3.0.9: version "3.3.10" resolved "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" @@ -4010,13 +3944,6 @@ is-finite@^1.0.0: resolved "https://registry.npmjs.org/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.npmjs.org/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.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" @@ -4820,21 +4747,6 @@ minimongo@6.5.0: js-sha1 "^0.6.0" lodash "^3.10.1" -minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0: - version "2.9.0" - resolved "https://registry.npmjs.org/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.npmjs.org/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.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" @@ -4850,7 +4762,7 @@ mkdirp@0.5.1: dependencies: minimist "0.0.8" -mkdirp@0.5.3, mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.1: +mkdirp@0.5.3, mkdirp@^0.5.1, mkdirp@~0.5.1: version "0.5.3" resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.3.tgz#5a514b7179259287952881e94410ec5465659f8c" integrity sha512-P+2gwrFqx8lhew375MQHHeTlY8AuOJSrGf0R5ddkEndUkmwpgUob/vQuBD1V22/Cw1/lJr4x+EjllSezBThzBg== @@ -4984,15 +4896,6 @@ nedb@^1.8.0: mkdirp "~0.5.1" underscore "~1.4.4" -needle@^2.2.1: - version "2.3.3" - resolved "https://registry.npmjs.org/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" - next-tick@1: version "1.1.0" resolved "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz#1836ee30ad56d67ef281b22bd199f709449b35eb" @@ -5032,22 +4935,6 @@ node-fetch@^1.0.1: encoding "^0.1.11" is-stream "^1.0.1" -node-pre-gyp@*: - version "0.14.0" - resolved "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.14.0.tgz#9a0596533b877289bcad4e143982ca3d904ddc83" - integrity sha512-+CvDC7ZttU/sSt9rFjix/P05iS43qHCOOGzcr3Ry99bXG7VX953+vFyEuph/tfqoYu8dttBkE86JSKBO2OzcxA== - 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.4.2" - node-preload@^0.2.0: version "0.2.1" resolved "https://registry.npmjs.org/node-preload/-/node-preload-0.2.1.tgz#c03043bb327f417a18fee7ab7ee57b408a144301" @@ -5071,14 +4958,6 @@ nodemon@2.0.2: undefsafe "^2.0.2" update-notifier "^2.5.0" -nopt@^4.0.1: - version "4.0.3" - resolved "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz#a375cad9d02fd921278d954c2254d5aa57e15e48" - integrity sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg== - dependencies: - abbrev "1" - osenv "^0.1.4" - nopt@~1.0.10: version "1.0.10" resolved "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz#6ddd21bd2a31417b92727dd585f8a6f37608ebee" @@ -5108,27 +4987,6 @@ normalize-path@^3.0.0, normalize-path@~3.0.0: resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== -npm-bundled@^1.0.1: - version "1.1.1" - resolved "https://registry.npmjs.org/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.npmjs.org/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.8" - resolved "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.8.tgz#56ee6cc135b9f98ad3d51c1c95da22bbb9b2ef3e" - integrity sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A== - dependencies: - ignore-walk "^3.0.1" - npm-bundled "^1.0.1" - npm-normalize-package-bin "^1.0.1" - npm-run-path@^2.0.0: version "2.0.2" resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" @@ -5136,21 +4994,6 @@ npm-run-path@^2.0.0: dependencies: path-key "^2.0.0" -npmlog@^4.0.2: - version "4.1.2" - resolved "https://registry.npmjs.org/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.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" - integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= - nyc@^15.0.0: version "15.0.0" resolved "https://registry.npmjs.org/nyc/-/nyc-15.0.0.tgz#eb32db2c0f29242c2414fe46357f230121cfc162" @@ -5326,19 +5169,11 @@ os-homedir@^1.0.0: resolved "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= -os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.2: +os-tmpdir@^1.0.1, os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/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.npmjs.org/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" - integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== - dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.0" - output-file-sync@^1.1.2: version "1.1.2" resolved "https://registry.npmjs.org/output-file-sync/-/output-file-sync-1.1.2.tgz#d0a33eefe61a205facb90092e826598d5245ce76" @@ -5703,7 +5538,7 @@ rbush@^2.0.0: dependencies: quickselect "^1.0.1" -rc@^1.0.1, rc@^1.1.6, rc@^1.2.7: +rc@^1.0.1, rc@^1.1.6: version "1.2.8" resolved "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== @@ -5735,7 +5570,7 @@ read-pkg@^2.0.0: normalize-package-data "^2.3.2" path-type "^2.0.0" -readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.3.5: +readable-stream@^2.0.2, readable-stream@^2.3.5: version "2.3.7" resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== @@ -6021,13 +5856,6 @@ rimraf@2.6.3, rimraf@~2.6.2: dependencies: glob "^7.1.3" -rimraf@^2.6.1: - version "2.7.1" - resolved "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" - integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== - dependencies: - glob "^7.1.3" - rimraf@^3.0.0: version "3.0.2" resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" @@ -6091,11 +5919,6 @@ safe-regex@^1.1.0: resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -sax@^1.2.4: - version "1.2.4" - resolved "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" - integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== - semver-diff@^2.0.0: version "2.1.0" resolved "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36" @@ -6113,7 +5936,7 @@ semver@^6.0.0, semver@^6.1.0, semver@^6.1.2, semver@^6.3.0: resolved "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== -set-blocking@^2.0.0, set-blocking@~2.0.0: +set-blocking@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= @@ -6444,15 +6267,6 @@ static-extend@^0.1.1: define-property "^0.2.5" object-copy "^0.1.0" -string-width@^1.0.1: - version "1.0.2" - resolved "https://registry.npmjs.org/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@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: version "2.1.1" resolved "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" @@ -6521,7 +6335,7 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -strip-ansi@^3.0.0, strip-ansi@^3.0.1: +strip-ansi@^3.0.0: version "3.0.1" resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= @@ -6648,19 +6462,6 @@ taffydb@2.6.2: resolved "https://registry.npmjs.org/taffydb/-/taffydb-2.6.2.tgz#7cbcb64b5a141b6a2efc2c5d2c67b4e150b2a268" integrity sha1-fLy2S1oUG2ou/CxdLGe04VCyomg= -tar@^4.4.2: - version "4.4.13" - resolved "https://registry.npmjs.org/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" - term-size@^1.2.0: version "1.2.0" resolved "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz#458b83887f288fc56d6fffbfad262e26638efa69" @@ -7065,7 +6866,7 @@ which@^2.0.1: dependencies: isexe "^2.0.0" -wide-align@1.1.3, wide-align@^1.1.0: +wide-align@1.1.3: version "1.1.3" resolved "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== @@ -7184,11 +6985,6 @@ yallist@^2.1.2: resolved "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= -yallist@^3.0.0, yallist@^3.0.3: - version "3.1.1" - resolved "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" - integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== - yaml@^1.8.2: version "1.8.3" resolved "https://registry.npmjs.org/yaml/-/yaml-1.8.3.tgz#2f420fca58b68ce3a332d0ca64be1d191dd3f87a" -- GitLab From 021e5d792ec2d9bc59f8c9b3ccb4605ff27d0998 Mon Sep 17 00:00:00 2001 From: Will Date: Tue, 21 Apr 2020 17:11:07 +0200 Subject: [PATCH 55/86] Dependencies upgrade and switch target to es2015 --- packages/polkabot-api/tsconfig.json | 2 +- .../polkabot-plugin-blockstats/tsconfig.json | 2 +- .../polkabot-plugin-blocthday/tsconfig.json | 2 +- .../tsconfig.json | 2 +- .../tsconfig.json | 2 +- .../polkabot-plugin-operator/tsconfig.json | 2 +- .../polkabot-plugin-reporter/tsconfig.json | 2 +- .../tsconfig.json | 2 +- packages/polkabot/package.json | 14 +- packages/polkabot/tsconfig.json | 2 +- yarn.lock | 459 ++++++------------ 11 files changed, 157 insertions(+), 334 deletions(-) diff --git a/packages/polkabot-api/tsconfig.json b/packages/polkabot-api/tsconfig.json index 3192684..fb9cecc 100644 --- a/packages/polkabot-api/tsconfig.json +++ b/packages/polkabot-api/tsconfig.json @@ -5,7 +5,7 @@ "esModuleInterop": true, "resolveJsonModule": true, "allowJs": true, - "target": "es5", + "target": "es2015", "noImplicitAny": false, "sourceMap": true, "preserveConstEnums": true, diff --git a/packages/polkabot-plugin-blockstats/tsconfig.json b/packages/polkabot-plugin-blockstats/tsconfig.json index a7dac9c..ce600e4 100644 --- a/packages/polkabot-plugin-blockstats/tsconfig.json +++ b/packages/polkabot-plugin-blockstats/tsconfig.json @@ -5,7 +5,7 @@ "esModuleInterop": true, "resolveJsonModule": true, "allowJs": true, - "target": "es5", + "target": "es2015", "noImplicitAny": false, "sourceMap": true, "preserveConstEnums": true, diff --git a/packages/polkabot-plugin-blocthday/tsconfig.json b/packages/polkabot-plugin-blocthday/tsconfig.json index 3192684..fb9cecc 100644 --- a/packages/polkabot-plugin-blocthday/tsconfig.json +++ b/packages/polkabot-plugin-blocthday/tsconfig.json @@ -5,7 +5,7 @@ "esModuleInterop": true, "resolveJsonModule": true, "allowJs": true, - "target": "es5", + "target": "es2015", "noImplicitAny": false, "sourceMap": true, "preserveConstEnums": true, diff --git a/packages/polkabot-plugin-notifier-matrix/tsconfig.json b/packages/polkabot-plugin-notifier-matrix/tsconfig.json index 3192684..fb9cecc 100644 --- a/packages/polkabot-plugin-notifier-matrix/tsconfig.json +++ b/packages/polkabot-plugin-notifier-matrix/tsconfig.json @@ -5,7 +5,7 @@ "esModuleInterop": true, "resolveJsonModule": true, "allowJs": true, - "target": "es5", + "target": "es2015", "noImplicitAny": false, "sourceMap": true, "preserveConstEnums": true, diff --git a/packages/polkabot-plugin-notifier-twitter/tsconfig.json b/packages/polkabot-plugin-notifier-twitter/tsconfig.json index 3192684..fb9cecc 100644 --- a/packages/polkabot-plugin-notifier-twitter/tsconfig.json +++ b/packages/polkabot-plugin-notifier-twitter/tsconfig.json @@ -5,7 +5,7 @@ "esModuleInterop": true, "resolveJsonModule": true, "allowJs": true, - "target": "es5", + "target": "es2015", "noImplicitAny": false, "sourceMap": true, "preserveConstEnums": true, diff --git a/packages/polkabot-plugin-operator/tsconfig.json b/packages/polkabot-plugin-operator/tsconfig.json index a7dac9c..ce600e4 100644 --- a/packages/polkabot-plugin-operator/tsconfig.json +++ b/packages/polkabot-plugin-operator/tsconfig.json @@ -5,7 +5,7 @@ "esModuleInterop": true, "resolveJsonModule": true, "allowJs": true, - "target": "es5", + "target": "es2015", "noImplicitAny": false, "sourceMap": true, "preserveConstEnums": true, diff --git a/packages/polkabot-plugin-reporter/tsconfig.json b/packages/polkabot-plugin-reporter/tsconfig.json index a7dac9c..ce600e4 100644 --- a/packages/polkabot-plugin-reporter/tsconfig.json +++ b/packages/polkabot-plugin-reporter/tsconfig.json @@ -5,7 +5,7 @@ "esModuleInterop": true, "resolveJsonModule": true, "allowJs": true, - "target": "es5", + "target": "es2015", "noImplicitAny": false, "sourceMap": true, "preserveConstEnums": true, diff --git a/packages/polkabot-plugin-stallwatcher/tsconfig.json b/packages/polkabot-plugin-stallwatcher/tsconfig.json index a7dac9c..ce600e4 100644 --- a/packages/polkabot-plugin-stallwatcher/tsconfig.json +++ b/packages/polkabot-plugin-stallwatcher/tsconfig.json @@ -5,7 +5,7 @@ "esModuleInterop": true, "resolveJsonModule": true, "allowJs": true, - "target": "es5", + "target": "es2015", "noImplicitAny": false, "sourceMap": true, "preserveConstEnums": true, diff --git a/packages/polkabot/package.json b/packages/polkabot/package.json index 924737b..9a1e0ca 100644 --- a/packages/polkabot/package.json +++ b/packages/polkabot/package.json @@ -8,7 +8,7 @@ }, "repository": "https://gitlab.com/Polkabot/polkabot", "scripts": { - "start": "node --inspect=5858 -r ts-node/register ./src/polkabot.ts", + "start": "node -r ts-node/register ./src/polkabot.ts", "start:watch": "nodemon", "dev": "nodemon ./src/polkabot -c ./config.js --exec babel-node --presets env", "build": "tsc --build tsconfig.json", @@ -33,8 +33,8 @@ "Matrix.org" ], "dependencies": { - "@babel/runtime": "^7.8.7", - "@polkadot/api": "1.8.1", + "@babel/runtime": "^7.9.2", + "@polkadot/api": "1.11.1", "bn.js": "5.1.1", "confmgr": "^1.0.5", "find-node-modules": "^2.0.0", @@ -47,14 +47,14 @@ "devDependencies": { "@types/dotenv": "^8.2.0", "@types/mocha": "^7.0.2", - "@typescript-eslint/eslint-plugin": "2.24.0", - "@typescript-eslint/parser": "2.24.0", + "@typescript-eslint/eslint-plugin": "2.25.0", + "@typescript-eslint/parser": "2.25.0", "chai": "4.2.0", "chai-http": "4.3.0", "dotenv": "8.2.0", "eslint": "6.8.0", - "eslint-config-prettier": "6.10.0", - "eslint-config-standard": "14.1.0", + "eslint-config-prettier": "^6.10.1", + "eslint-config-standard": "14.1.1", "eslint-plugin-import": "2.20.1", "eslint-plugin-node": "^11.0.0", "eslint-plugin-promise": "4.2.1", diff --git a/packages/polkabot/tsconfig.json b/packages/polkabot/tsconfig.json index c2b1968..68f435b 100644 --- a/packages/polkabot/tsconfig.json +++ b/packages/polkabot/tsconfig.json @@ -5,7 +5,7 @@ "esModuleInterop": true, "resolveJsonModule": true, "allowJs": true, - "target": "es5", + "target": "es2015", "noImplicitAny": false, "sourceMap": true, "preserveConstEnums": true, diff --git a/yarn.lock b/yarn.lock index f293073..a4c2dbf 100644 --- a/yarn.lock +++ b/yarn.lock @@ -229,109 +229,121 @@ resolved "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.2.tgz#26520bf09abe4a5644cd5414e37125a8954241dd" integrity sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw== -"@polkadot/api-derive@1.8.1": - version "1.8.1" - resolved "https://registry.npmjs.org/@polkadot/api-derive/-/api-derive-1.8.1.tgz#0253e23c922a3a94c19de64f6c64904e3cc11648" - integrity sha512-/eDtnfdfiEcm28s6IKYHw0i1Y8ZBONAKuuP7NQWKehQD6JkPBBtEheTTjl1r3sPQMP+bSD/rFU+G4kB4Ly2RhA== +"@polkadot/api-derive@1.11.1": + version "1.11.1" + resolved "https://registry.npmjs.org/@polkadot/api-derive/-/api-derive-1.11.1.tgz#086de89d99eedfa84d722b094ec9c3e0be46ba15" + integrity sha512-xout+I8JEXMz6Icd/viQIvPg/lsJmNylufC4UXPK/STL1tB62Wl48I1EKvDLSiZo2dw9mZ94ffaw8bALgs257A== dependencies: "@babel/runtime" "^7.9.2" - "@polkadot/api" "1.8.1" - "@polkadot/rpc-core" "1.8.1" - "@polkadot/rpc-provider" "1.8.1" - "@polkadot/types" "1.8.1" - "@polkadot/util" "^2.6.2" - "@polkadot/util-crypto" "^2.6.2" + "@polkadot/api" "1.11.1" + "@polkadot/rpc-core" "1.11.1" + "@polkadot/rpc-provider" "1.11.1" + "@polkadot/types" "1.11.1" + "@polkadot/util" "^2.8.1" + "@polkadot/util-crypto" "^2.8.1" bn.js "^5.1.1" memoizee "^0.4.14" - rxjs "^6.5.4" + rxjs "^6.5.5" -"@polkadot/api@1.8.1": - version "1.8.1" - resolved "https://registry.npmjs.org/@polkadot/api/-/api-1.8.1.tgz#a8341ddcacbe60c1236e46bdb0246c971f7f4485" - integrity sha512-3x+7Q/Gsol/UnWsA/dqbvysQ4nZ0ffmCrUJiTu6U7JrVP+a8PLrGU4asr+aqtSvY861iHfZjv8xmSqIiGjRuUw== +"@polkadot/api@1.11.1": + version "1.11.1" + resolved "https://registry.npmjs.org/@polkadot/api/-/api-1.11.1.tgz#da754acbb720da30f2a1373ac6aad0aa886d5cd1" + integrity sha512-Qjjl6BAH8PFC2ALh9Hqs/tDCG5Q9Fw96HG+ntoW+x9HDL6NReKzffCz/BnZthxHjfS3/yzIK7hz6ZyXTYd7evQ== dependencies: "@babel/runtime" "^7.9.2" - "@polkadot/api-derive" "1.8.1" - "@polkadot/keyring" "^2.6.2" - "@polkadot/metadata" "1.8.1" - "@polkadot/rpc-core" "1.8.1" - "@polkadot/rpc-provider" "1.8.1" - "@polkadot/types" "1.8.1" - "@polkadot/util" "^2.6.2" - "@polkadot/util-crypto" "^2.6.2" + "@polkadot/api-derive" "1.11.1" + "@polkadot/keyring" "^2.8.1" + "@polkadot/metadata" "1.11.1" + "@polkadot/rpc-core" "1.11.1" + "@polkadot/rpc-provider" "1.11.1" + "@polkadot/types" "1.11.1" + "@polkadot/types-known" "1.11.1" + "@polkadot/util" "^2.8.1" + "@polkadot/util-crypto" "^2.8.1" bn.js "^5.1.1" eventemitter3 "^4.0.0" - rxjs "^6.5.4" + rxjs "^6.5.5" -"@polkadot/keyring@^2.6.2": - version "2.6.2" - resolved "https://registry.npmjs.org/@polkadot/keyring/-/keyring-2.6.2.tgz#a0fc5b12e6b2bba738384fbc1cd93a0c61f30bac" - integrity sha512-R7rB0+bE0FjZoTJtd07oWQ2sD6l8+eQUKOs4rYr6JFC3eaveFu/G/5thRt+gs2a/X0TdRGnahlt02SaFX6sZpg== +"@polkadot/keyring@^2.8.1": + version "2.8.1" + resolved "https://registry.npmjs.org/@polkadot/keyring/-/keyring-2.8.1.tgz#befc87d262a3c00a70e9b9bde7ed9c89e88ebc46" + integrity sha512-VYuFucacGqOB6ZmSN/3/vUvEMFaOg7NmGcWLnjiGY7T5W3Qv8Up/3zGbnt9UspDcQckoQsIumQyfkeLAjcRjoA== dependencies: - "@babel/runtime" "^7.8.7" - "@polkadot/util" "2.6.2" - "@polkadot/util-crypto" "2.6.2" + "@babel/runtime" "^7.9.2" + "@polkadot/util" "2.8.1" + "@polkadot/util-crypto" "2.8.1" -"@polkadot/metadata@1.8.1": - version "1.8.1" - resolved "https://registry.npmjs.org/@polkadot/metadata/-/metadata-1.8.1.tgz#879a3f011fcd78765e6560eefc6ce1124d94c02a" - integrity sha512-mVCcEU9U9r8jGFWPYyxwwiZlFFZK2LgDLzKDexkJqfB2HmgeEVxIBBGFdrclYb1yeNlojKq2ge7P4V4Zr5ShJQ== +"@polkadot/metadata@1.11.1": + version "1.11.1" + resolved "https://registry.npmjs.org/@polkadot/metadata/-/metadata-1.11.1.tgz#dbd117b55527da81273bc30c93d2473f30cfe241" + integrity sha512-v2mblCHL2Mkifgqotvx1Aev4iFF+9rb6YmOIE2Q3ZHsIozlNEfcEU1NYDeAj/Z4dHFvC4JL63nFlltQA2Ju5Og== dependencies: "@babel/runtime" "^7.9.2" - "@polkadot/types" "1.8.1" - "@polkadot/util" "^2.6.2" - "@polkadot/util-crypto" "^2.6.2" + "@polkadot/types" "1.11.1" + "@polkadot/types-known" "1.11.1" + "@polkadot/util" "^2.8.1" + "@polkadot/util-crypto" "^2.8.1" bn.js "^5.1.1" -"@polkadot/rpc-core@1.8.1": - version "1.8.1" - resolved "https://registry.npmjs.org/@polkadot/rpc-core/-/rpc-core-1.8.1.tgz#be1c9393e8a4509fcd12e6ea1c54e5c686125a96" - integrity sha512-eepA2xLhtNfdtKgv9c2k8rMmFMjmrFqtTjy12APuqCY8qBk4q32X5gXYmioV76Ie8PaMq4bkBF6fYiXa08qxDw== +"@polkadot/rpc-core@1.11.1": + version "1.11.1" + resolved "https://registry.npmjs.org/@polkadot/rpc-core/-/rpc-core-1.11.1.tgz#212b9e15487ab0a8385ee9e97cfaacbe8b1d7985" + integrity sha512-tE6DafIv4adswgK2BXRo4cpXz7rEUQSAPOLHJ1bQD3WwC5/grElLuC1wawGnZbE2qeYD9Vz3/kdZeW5sD1FjSA== dependencies: "@babel/runtime" "^7.9.2" - "@polkadot/metadata" "1.8.1" - "@polkadot/rpc-provider" "1.8.1" - "@polkadot/types" "1.8.1" - "@polkadot/util" "^2.6.2" + "@polkadot/metadata" "1.11.1" + "@polkadot/rpc-provider" "1.11.1" + "@polkadot/types" "1.11.1" + "@polkadot/util" "^2.8.1" memoizee "^0.4.14" - rxjs "^6.5.4" + rxjs "^6.5.5" -"@polkadot/rpc-provider@1.8.1": - version "1.8.1" - resolved "https://registry.npmjs.org/@polkadot/rpc-provider/-/rpc-provider-1.8.1.tgz#66b4894658081cb8c701cacb2a11f1532bd49e44" - integrity sha512-zkwehn1dgXZvwWppS/W7BdU6SZ1WxGkxXBtLEcEzSY43WxPcwpXm0iWy9JkWzVJ28xGenFjk4ngLquNBzL1hSw== +"@polkadot/rpc-provider@1.11.1": + version "1.11.1" + resolved "https://registry.npmjs.org/@polkadot/rpc-provider/-/rpc-provider-1.11.1.tgz#cdca0534750e5fac1fbbba30f5644d2e71f635d8" + integrity sha512-MEkmPhzb59PL+Mpj5JAu+NmQ9MxdU/vpq33qb1k53DoLYjUrq8z0+pDQIa/0XdBo3rl5NuNfPZkugcXvNcW2Vg== dependencies: "@babel/runtime" "^7.9.2" - "@polkadot/metadata" "1.8.1" - "@polkadot/types" "1.8.1" - "@polkadot/util" "^2.6.2" - "@polkadot/util-crypto" "^2.6.2" + "@polkadot/metadata" "1.11.1" + "@polkadot/types" "1.11.1" + "@polkadot/util" "^2.8.1" + "@polkadot/util-crypto" "^2.8.1" bn.js "^5.1.1" eventemitter3 "^4.0.0" isomorphic-fetch "^2.2.1" websocket "^1.0.31" -"@polkadot/types@1.8.1": - version "1.8.1" - resolved "https://registry.npmjs.org/@polkadot/types/-/types-1.8.1.tgz#1ff499653aefbcc6ff852c830b74e9a31ac12806" - integrity sha512-UVyrNhW8khUw7nDNOdEdZNJvG4Nlq1wBOTmmOFnpihBY95jVtk63jUjcb8CjR5/kJgpAIYumZ3XupZ8BgN1KPw== +"@polkadot/types-known@1.11.1": + version "1.11.1" + resolved "https://registry.npmjs.org/@polkadot/types-known/-/types-known-1.11.1.tgz#51c38400fb9ec62092ecea82845cc1642d63e465" + integrity sha512-MTc1IqtwBmrUWcEWBY8gRZPNouervzrUbaDz83Xuyoj4cjHuSOk03PK0JyEIyw0gOFBQ/bHK0ZhVYjJFNV7jmQ== + dependencies: + "@babel/runtime" "^7.9.2" + "@polkadot/types" "1.11.1" + "@polkadot/util" "^2.8.1" + bn.js "^5.1.1" + +"@polkadot/types@1.11.1": + version "1.11.1" + resolved "https://registry.npmjs.org/@polkadot/types/-/types-1.11.1.tgz#a8017411233ef49d8c928d33bd3a9bca5ddfadf0" + integrity sha512-cO/FZcNosSPp/zefV3gDPh4YFyygYD+1L9pC5Wnpd1pQ1cnGY/wIhvvkHTqKRxEG6yD+THEj+pJMg9DbMzxD+g== dependencies: "@babel/runtime" "^7.9.2" - "@polkadot/metadata" "1.8.1" - "@polkadot/util" "^2.6.2" - "@polkadot/util-crypto" "^2.6.2" + "@polkadot/metadata" "1.11.1" + "@polkadot/util" "^2.8.1" + "@polkadot/util-crypto" "^2.8.1" "@types/bn.js" "^4.11.6" bn.js "^5.1.1" memoizee "^0.4.14" - rxjs "^6.5.4" + rxjs "^6.5.5" -"@polkadot/util-crypto@2.6.2", "@polkadot/util-crypto@^2.6.2": - version "2.6.2" - resolved "https://registry.npmjs.org/@polkadot/util-crypto/-/util-crypto-2.6.2.tgz#6118de39986a42213406e629fcb79ff74cabede6" - integrity sha512-U+M10kkVcCrDm5FXo6uzUmyL/iEr0PTlSinOlNTZHuRPzdbQmgw3XZ3Deqg/7CPx15KT2K9wIKv8jOfFu/dg2w== +"@polkadot/util-crypto@2.8.1", "@polkadot/util-crypto@^2.8.1": + version "2.8.1" + resolved "https://registry.npmjs.org/@polkadot/util-crypto/-/util-crypto-2.8.1.tgz#ae49d5efa79d7f234f7caf57d33bb91993097d72" + integrity sha512-vakpc/2PVGvQ3rEaCS3QnZlf74WA5U45MBNqK0Q6Yj4fGAYzTcKPKFGeoxxSenrVr/nKp2N1osXqcIOYsuCzHw== dependencies: - "@babel/runtime" "^7.8.7" - "@polkadot/util" "2.6.2" + "@babel/runtime" "^7.9.2" + "@polkadot/util" "2.8.1" "@polkadot/wasm-crypto" "^1.2.1" base-x "^3.0.8" bip39 "^3.0.2" @@ -344,16 +356,16 @@ tweetnacl "^1.0.3" xxhashjs "^0.2.2" -"@polkadot/util@2.6.2", "@polkadot/util@^2.6.2": - version "2.6.2" - resolved "https://registry.npmjs.org/@polkadot/util/-/util-2.6.2.tgz#1d32819b2451a695e9117ec8aef08a3ee1a2524f" - integrity sha512-/dsOuNPsl0IdNu0YZZm+BskESbiTG77NBnRDk0MwAoBmYhvulS34De+Ev/Qx2okS+C8aQ6Uai0AtnYX6rlEXfA== +"@polkadot/util@2.8.1", "@polkadot/util@^2.8.1": + version "2.8.1" + resolved "https://registry.npmjs.org/@polkadot/util/-/util-2.8.1.tgz#bc625df27c34193627da9f0db37b757b297858fb" + integrity sha512-OUc/Jn41wd1G9D36J8mqjxAr3LBoxenuylQGXxQyf48/9fMVeUMb5i3wrWiVu2bO21OOXh85HhbUyLvX4V6nLw== dependencies: - "@babel/runtime" "^7.8.7" + "@babel/runtime" "^7.9.2" "@types/bn.js" "^4.11.6" bn.js "^5.1.1" camelcase "^5.3.1" - chalk "^3.0.0" + chalk "^4.0.0" ip-regex "^4.1.0" "@polkadot/wasm-crypto@^1.2.1": @@ -535,40 +547,40 @@ resolved "https://registry.npmjs.org/@types/yaml/-/yaml-1.2.0.tgz#4ed577fc4ebbd6b829b28734e56d10c9e6984e09" integrity sha512-GW8b9qM+ebgW3/zjzPm0I1NxMvLaz/YKT9Ph6tTb+Fkeyzd9yLTvQ6ciQ2MorTRmb/qXmfjMerRpG4LviixaqQ== -"@typescript-eslint/eslint-plugin@2.24.0": - version "2.24.0" - resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.24.0.tgz#a86cf618c965a462cddf3601f594544b134d6d68" - integrity sha512-wJRBeaMeT7RLQ27UQkDFOu25MqFOBus8PtOa9KaT5ZuxC1kAsd7JEHqWt4YXuY9eancX0GK9C68i5OROnlIzBA== +"@typescript-eslint/eslint-plugin@2.25.0": + version "2.25.0" + resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.25.0.tgz#0b60917332f20dcff54d0eb9be2a9e9f4c9fbd02" + integrity sha512-W2YyMtjmlrOjtXc+FtTelVs9OhuR6OlYc4XKIslJ8PUJOqgYYAPRJhAqkYRQo3G4sjvG8jSodsNycEn4W2gHUw== dependencies: - "@typescript-eslint/experimental-utils" "2.24.0" - eslint-utils "^1.4.3" + "@typescript-eslint/experimental-utils" "2.25.0" functional-red-black-tree "^1.0.1" regexpp "^3.0.0" tsutils "^3.17.1" -"@typescript-eslint/experimental-utils@2.24.0": - version "2.24.0" - resolved "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-2.24.0.tgz#a5cb2ed89fedf8b59638dc83484eb0c8c35e1143" - integrity sha512-DXrwuXTdVh3ycNCMYmWhUzn/gfqu9N0VzNnahjiDJvcyhfBy4gb59ncVZVxdp5XzBC77dCncu0daQgOkbvPwBw== +"@typescript-eslint/experimental-utils@2.25.0": + version "2.25.0" + resolved "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-2.25.0.tgz#13691c4fe368bd377b1e5b1e4ad660b220bf7714" + integrity sha512-0IZ4ZR5QkFYbaJk+8eJ2kYeA+1tzOE1sBjbwwtSV85oNWYUBep+EyhlZ7DLUCyhMUGuJpcCCFL0fDtYAP1zMZw== dependencies: "@types/json-schema" "^7.0.3" - "@typescript-eslint/typescript-estree" "2.24.0" + "@typescript-eslint/typescript-estree" "2.25.0" eslint-scope "^5.0.0" + eslint-utils "^2.0.0" -"@typescript-eslint/parser@2.24.0": - version "2.24.0" - resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-2.24.0.tgz#2cf0eae6e6dd44d162486ad949c126b887f11eb8" - integrity sha512-H2Y7uacwSSg8IbVxdYExSI3T7uM1DzmOn2COGtCahCC3g8YtM1xYAPi2MAHyfPs61VKxP/J/UiSctcRgw4G8aw== +"@typescript-eslint/parser@2.25.0": + version "2.25.0" + resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-2.25.0.tgz#abfb3d999084824d9a756d9b9c0f36fba03adb76" + integrity sha512-mccBLaBSpNVgp191CP5W+8U1crTyXsRziWliCqzj02kpxdjKMvFHGJbK33NroquH3zB/gZ8H511HEsJBa2fNEg== dependencies: "@types/eslint-visitor-keys" "^1.0.0" - "@typescript-eslint/experimental-utils" "2.24.0" - "@typescript-eslint/typescript-estree" "2.24.0" + "@typescript-eslint/experimental-utils" "2.25.0" + "@typescript-eslint/typescript-estree" "2.25.0" eslint-visitor-keys "^1.1.0" -"@typescript-eslint/typescript-estree@2.24.0": - version "2.24.0" - resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-2.24.0.tgz#38bbc8bb479790d2f324797ffbcdb346d897c62a" - integrity sha512-RJ0yMe5owMSix55qX7Mi9V6z2FDuuDpN6eR5fzRJrp+8in9UF41IGNQHbg5aMK4/PjVaEQksLvz0IA8n+Mr/FA== +"@typescript-eslint/typescript-estree@2.25.0": + version "2.25.0" + resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-2.25.0.tgz#b790497556734b7476fa7dd3fa539955a5c79e2c" + integrity sha512-VUksmx5lDxSi6GfmwSK7SSoIKSw9anukWWNitQPqt58LuYrKalzsgeuignbqnB+rK/xxGlSsCy8lYnwFfB6YJg== dependencies: debug "^4.1.1" eslint-visitor-keys "^1.1.0" @@ -720,24 +732,11 @@ append-transform@^2.0.0: dependencies: default-require-extensions "^3.0.0" -aproba@^1.0.3: - version "1.2.0" - resolved "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" - integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== - archy@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" integrity sha1-+cjBN1fMHde8N5rHeyxipcKGjEA= -are-we-there-yet@~1.1.2: - version "1.1.5" - resolved "https://registry.npmjs.org/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.3" resolved "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" @@ -1759,6 +1758,14 @@ chalk@^3.0.0: ansi-styles "^4.1.0" supports-color "^7.1.0" +chalk@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/chalk/-/chalk-4.0.0.tgz#6e98081ed2d17faab615eb52ac66ec1fe6209e72" + integrity sha512-N9oWFcegS0sFr9oh1oz2d7Npos6vNoWW9HvtCg5N1KRFpUhaAhvTv5Y58g880fZaEYSNm3qDz8SU1UrGvp+n7A== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + chardet@^0.4.0: version "0.4.2" resolved "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz#b5473b33dc97c424e5d98dc87d55d4d8a29c8bf2" @@ -1820,11 +1827,6 @@ chokidar@^3.2.2: optionalDependencies: fsevents "~2.1.2" -chownr@^1.1.1: - version "1.1.4" - resolved "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" - integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== - ci-info@^1.5.0: version "1.6.0" resolved "https://registry.npmjs.org/ci-info/-/ci-info-1.6.0.tgz#2ca20dbb9ceb32d4524a683303313f0304b1e497" @@ -1910,11 +1912,6 @@ cliui@^6.0.0: strip-ansi "^6.0.0" wrap-ansi "^6.2.0" -code-point-at@^1.0.0: - version "1.1.0" - resolved "https://registry.npmjs.org/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.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" @@ -2009,11 +2006,6 @@ confmgr@^1.0.5: typescript "^3.8.3" yaml "^1.8.2" -console-control-strings@^1.0.0, console-control-strings@~1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" - integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= - contains-path@^0.1.0: version "0.1.0" resolved "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" @@ -2258,11 +2250,6 @@ delayed-stream@~1.0.0: resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= -delegates@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" - integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= - detect-file@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7" @@ -2275,11 +2262,6 @@ detect-indent@^4.0.0: dependencies: repeating "^2.0.0" -detect-libc@^1.0.2: - version "1.0.3" - resolved "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" - integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= - diff@3.5.0: version "3.5.0" resolved "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" @@ -2461,10 +2443,10 @@ escape-string-regexp@^2.0.0: resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== -eslint-config-prettier@6.10.0: - version "6.10.0" - resolved "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-6.10.0.tgz#7b15e303bf9c956875c948f6b21500e48ded6a7f" - integrity sha512-AtndijGte1rPILInUdHjvKEGbIV06NuvPrqlIEaEaWtbtvJh464mDeyGMdZEQMsGvC0ZVkiex1fSNcC4HAbRGg== +eslint-config-prettier@^6.10.1: + version "6.10.1" + resolved "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-6.10.1.tgz#129ef9ec575d5ddc0e269667bf09defcd898642a" + integrity sha512-svTy6zh1ecQojvpbJSgH3aei/Rt7C6i090l5f2WQ4aB05lYHeZIR1qL4wZyyILTbtmnbHP5Yn8MrsOJMGa8RkQ== dependencies: get-stdin "^6.0.0" @@ -2493,6 +2475,11 @@ eslint-config-standard@14.1.0: resolved "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-14.1.0.tgz#b23da2b76fe5a2eba668374f246454e7058f15d4" integrity sha512-EF6XkrrGVbvv8hL/kYa/m6vnvmUT+K82pJJc4JJVMM6+Qgqh0pnwprSxdduDLB9p/7bIxD+YV5O0wfb8lmcPbA== +eslint-config-standard@14.1.1: + version "14.1.1" + resolved "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-14.1.1.tgz#830a8e44e7aef7de67464979ad06b406026c56ea" + integrity sha512-Z9B+VR+JIXRxz21udPTL9HpFMyoMUEeX1G251EQ6e05WD9aPVtVBn09XUmZ259wCMlCDmYDSZG62Hhm+ZTJcUg== + eslint-config-standard@~14.0.0: version "14.0.1" resolved "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-14.0.1.tgz#375c3636fb4bd453cb95321d873de12e4eef790b" @@ -3327,13 +3314,6 @@ fromentries@^1.2.0: resolved "https://registry.npmjs.org/fromentries/-/fromentries-1.2.0.tgz#e6aa06f240d6267f913cea422075ef88b63e7897" integrity sha512-33X7H/wdfO99GdRLLgkjUrD4geAFdq/Uv0kl3HD4da6HDixd2GUg8Mw7dahLCV9r/EARkmtYBB6Tch4EEokFTQ== -fs-minipass@^1.2.5: - version "1.2.7" - resolved "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7" - integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA== - dependencies: - minipass "^2.6.0" - fs-readdir-recursive@^1.0.0: version "1.1.0" resolved "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz#e32fc030a2ccee44a6b5371308da54be0b397d27" @@ -3378,20 +3358,6 @@ funding@^1.0.0: term-size "^2.1.0" word-wrap "^1.2.3" -gauge@~2.7.3: - version "2.7.4" - resolved "https://registry.npmjs.org/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" - gensync@^1.0.0-beta.1: version "1.0.0-beta.1" resolved "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269" @@ -3596,11 +3562,6 @@ has-symbols@^1.0.0, has-symbols@^1.0.1: resolved "https://registry.npmjs.org/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.npmjs.org/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.npmjs.org/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" @@ -3711,7 +3672,7 @@ http-signature@~1.2.0: jsprim "^1.2.2" sshpk "^1.7.0" -iconv-lite@^0.4.17, iconv-lite@^0.4.24, iconv-lite@^0.4.4, iconv-lite@~0.4.13: +iconv-lite@^0.4.17, iconv-lite@^0.4.24, iconv-lite@~0.4.13: version "0.4.24" resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== @@ -3728,13 +3689,6 @@ ignore-by-default@^1.0.1: resolved "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09" integrity sha1-SMptcvbGo68Aqa1K5odr44ieKwk= -ignore-walk@^3.0.1: - version "3.0.3" - resolved "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.3.tgz#017e2447184bfeade7c238e4aefdd1e8f95b1e37" - integrity sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw== - dependencies: - minimatch "^3.0.4" - ignore@^3.0.9: version "3.3.10" resolved "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" @@ -4010,13 +3964,6 @@ is-finite@^1.0.0: resolved "https://registry.npmjs.org/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.npmjs.org/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.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" @@ -4820,21 +4767,6 @@ minimongo@6.5.0: js-sha1 "^0.6.0" lodash "^3.10.1" -minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0: - version "2.9.0" - resolved "https://registry.npmjs.org/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.npmjs.org/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.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" @@ -4850,7 +4782,7 @@ mkdirp@0.5.1: dependencies: minimist "0.0.8" -mkdirp@0.5.3, mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.1: +mkdirp@0.5.3, mkdirp@^0.5.1, mkdirp@~0.5.1: version "0.5.3" resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.3.tgz#5a514b7179259287952881e94410ec5465659f8c" integrity sha512-P+2gwrFqx8lhew375MQHHeTlY8AuOJSrGf0R5ddkEndUkmwpgUob/vQuBD1V22/Cw1/lJr4x+EjllSezBThzBg== @@ -4984,15 +4916,6 @@ nedb@^1.8.0: mkdirp "~0.5.1" underscore "~1.4.4" -needle@^2.2.1: - version "2.3.3" - resolved "https://registry.npmjs.org/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" - next-tick@1: version "1.1.0" resolved "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz#1836ee30ad56d67ef281b22bd199f709449b35eb" @@ -5032,22 +4955,6 @@ node-fetch@^1.0.1: encoding "^0.1.11" is-stream "^1.0.1" -node-pre-gyp@*: - version "0.14.0" - resolved "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.14.0.tgz#9a0596533b877289bcad4e143982ca3d904ddc83" - integrity sha512-+CvDC7ZttU/sSt9rFjix/P05iS43qHCOOGzcr3Ry99bXG7VX953+vFyEuph/tfqoYu8dttBkE86JSKBO2OzcxA== - 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.4.2" - node-preload@^0.2.0: version "0.2.1" resolved "https://registry.npmjs.org/node-preload/-/node-preload-0.2.1.tgz#c03043bb327f417a18fee7ab7ee57b408a144301" @@ -5071,14 +4978,6 @@ nodemon@2.0.2: undefsafe "^2.0.2" update-notifier "^2.5.0" -nopt@^4.0.1: - version "4.0.3" - resolved "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz#a375cad9d02fd921278d954c2254d5aa57e15e48" - integrity sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg== - dependencies: - abbrev "1" - osenv "^0.1.4" - nopt@~1.0.10: version "1.0.10" resolved "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz#6ddd21bd2a31417b92727dd585f8a6f37608ebee" @@ -5108,27 +5007,6 @@ normalize-path@^3.0.0, normalize-path@~3.0.0: resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== -npm-bundled@^1.0.1: - version "1.1.1" - resolved "https://registry.npmjs.org/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.npmjs.org/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.8" - resolved "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.8.tgz#56ee6cc135b9f98ad3d51c1c95da22bbb9b2ef3e" - integrity sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A== - dependencies: - ignore-walk "^3.0.1" - npm-bundled "^1.0.1" - npm-normalize-package-bin "^1.0.1" - npm-run-path@^2.0.0: version "2.0.2" resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" @@ -5136,21 +5014,6 @@ npm-run-path@^2.0.0: dependencies: path-key "^2.0.0" -npmlog@^4.0.2: - version "4.1.2" - resolved "https://registry.npmjs.org/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.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" - integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= - nyc@^15.0.0: version "15.0.0" resolved "https://registry.npmjs.org/nyc/-/nyc-15.0.0.tgz#eb32db2c0f29242c2414fe46357f230121cfc162" @@ -5326,19 +5189,11 @@ os-homedir@^1.0.0: resolved "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= -os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.2: +os-tmpdir@^1.0.1, os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/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.npmjs.org/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" - integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== - dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.0" - output-file-sync@^1.1.2: version "1.1.2" resolved "https://registry.npmjs.org/output-file-sync/-/output-file-sync-1.1.2.tgz#d0a33eefe61a205facb90092e826598d5245ce76" @@ -5703,7 +5558,7 @@ rbush@^2.0.0: dependencies: quickselect "^1.0.1" -rc@^1.0.1, rc@^1.1.6, rc@^1.2.7: +rc@^1.0.1, rc@^1.1.6: version "1.2.8" resolved "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== @@ -5735,7 +5590,7 @@ read-pkg@^2.0.0: normalize-package-data "^2.3.2" path-type "^2.0.0" -readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.3.5: +readable-stream@^2.0.2, readable-stream@^2.3.5: version "2.3.7" resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== @@ -6021,13 +5876,6 @@ rimraf@2.6.3, rimraf@~2.6.2: dependencies: glob "^7.1.3" -rimraf@^2.6.1: - version "2.7.1" - resolved "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" - integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== - dependencies: - glob "^7.1.3" - rimraf@^3.0.0: version "3.0.2" resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" @@ -6062,13 +5910,20 @@ rxjs@^5.5.2: dependencies: symbol-observable "1.0.1" -rxjs@^6.4.0, rxjs@^6.5.3, rxjs@^6.5.4: +rxjs@^6.4.0, rxjs@^6.5.3: version "6.5.4" resolved "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz#e0777fe0d184cec7872df147f303572d414e211c" integrity sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q== dependencies: tslib "^1.9.0" +rxjs@^6.5.5: + version "6.5.5" + resolved "https://registry.npmjs.org/rxjs/-/rxjs-6.5.5.tgz#c5c884e3094c8cfee31bf27eb87e54ccfc87f9ec" + integrity sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ== + dependencies: + tslib "^1.9.0" + safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.2, safe-buffer@~5.2.0: version "5.2.0" resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519" @@ -6091,11 +5946,6 @@ safe-regex@^1.1.0: resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -sax@^1.2.4: - version "1.2.4" - resolved "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" - integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== - semver-diff@^2.0.0: version "2.1.0" resolved "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36" @@ -6113,7 +5963,7 @@ semver@^6.0.0, semver@^6.1.0, semver@^6.1.2, semver@^6.3.0: resolved "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== -set-blocking@^2.0.0, set-blocking@~2.0.0: +set-blocking@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= @@ -6444,15 +6294,6 @@ static-extend@^0.1.1: define-property "^0.2.5" object-copy "^0.1.0" -string-width@^1.0.1: - version "1.0.2" - resolved "https://registry.npmjs.org/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@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: version "2.1.1" resolved "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" @@ -6521,7 +6362,7 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -strip-ansi@^3.0.0, strip-ansi@^3.0.1: +strip-ansi@^3.0.0: version "3.0.1" resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= @@ -6648,19 +6489,6 @@ taffydb@2.6.2: resolved "https://registry.npmjs.org/taffydb/-/taffydb-2.6.2.tgz#7cbcb64b5a141b6a2efc2c5d2c67b4e150b2a268" integrity sha1-fLy2S1oUG2ou/CxdLGe04VCyomg= -tar@^4.4.2: - version "4.4.13" - resolved "https://registry.npmjs.org/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" - term-size@^1.2.0: version "1.2.0" resolved "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz#458b83887f288fc56d6fffbfad262e26638efa69" @@ -7065,7 +6893,7 @@ which@^2.0.1: dependencies: isexe "^2.0.0" -wide-align@1.1.3, wide-align@^1.1.0: +wide-align@1.1.3: version "1.1.3" resolved "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== @@ -7184,11 +7012,6 @@ yallist@^2.1.2: resolved "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= -yallist@^3.0.0, yallist@^3.0.3: - version "3.1.1" - resolved "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" - integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== - yaml@^1.8.2: version "1.8.3" resolved "https://registry.npmjs.org/yaml/-/yaml-1.8.3.tgz#2f420fca58b68ce3a332d0ca64be1d191dd3f87a" -- GitLab From 7722ed9e5a2b1ac2a294a3cb75da97e170cd73c0 Mon Sep 17 00:00:00 2001 From: Will Date: Tue, 21 Apr 2020 18:01:45 +0200 Subject: [PATCH 56/86] Dependencies upgrade --- packages/polkabot/package.json | 18 +- yarn.lock | 642 ++++++++++++++++++++++----------- 2 files changed, 431 insertions(+), 229 deletions(-) diff --git a/packages/polkabot/package.json b/packages/polkabot/package.json index 9a1e0ca..14c8737 100644 --- a/packages/polkabot/package.json +++ b/packages/polkabot/package.json @@ -38,35 +38,35 @@ "bn.js": "5.1.1", "confmgr": "^1.0.5", "find-node-modules": "^2.0.0", - "matrix-js-sdk": "^5.1.1", + "matrix-js-sdk": "^5.2.0", "minimongo": "6.5.0", "nedb": "^1.8.0", - "olm": "https://matrix.org/packages/npm/olm/olm-3.0.0.tgz", + "olm": "https://matrix.org/packages/npm/olm/olm-3.1.0.tgz", "yargs": "15.3.1" }, "devDependencies": { "@types/dotenv": "^8.2.0", "@types/mocha": "^7.0.2", - "@typescript-eslint/eslint-plugin": "2.25.0", - "@typescript-eslint/parser": "2.25.0", + "@typescript-eslint/eslint-plugin": "2.29.0", + "@typescript-eslint/parser": "2.29.0", "chai": "4.2.0", "chai-http": "4.3.0", "dotenv": "8.2.0", "eslint": "6.8.0", "eslint-config-prettier": "^6.10.1", "eslint-config-standard": "14.1.1", - "eslint-plugin-import": "2.20.1", - "eslint-plugin-node": "^11.0.0", + "eslint-plugin-import": "2.20.2", + "eslint-plugin-node": "^11.1.0", "eslint-plugin-promise": "4.2.1", "eslint-plugin-react": "7.19.0", "eslint-plugin-standard": "4.0.1", - "jsdoc": "3.6.3", + "jsdoc": "3.6.4", "jsdoc-route-plugin": "^0.1.0", "mocha": "^7.1.1", - "nodemon": "2.0.2", + "nodemon": "2.0.3", "snazzy": "^8.0.0", "standard": "14.3.3", - "ts-node": "^8.8.1", + "ts-node": "^8.9.0", "typescript": "3.8.3", "yarn": "^1.22.4" }, diff --git a/yarn.lock b/yarn.lock index a4c2dbf..ec6d2cb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -144,11 +144,16 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.0.0", "@babel/parser@^7.4.4", "@babel/parser@^7.7.5", "@babel/parser@^7.8.6", "@babel/parser@^7.9.0": +"@babel/parser@^7.0.0", "@babel/parser@^7.7.5", "@babel/parser@^7.8.6", "@babel/parser@^7.9.0": version "7.9.3" resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.9.3.tgz#043a5fc2ad8b7ea9facddc4e802a1f0f25da7255" integrity sha512-E6SpIDJZ0cZAKoCNk+qSDd0ChfTnpiJN9FfNf3RZ20dzwA2vL2oq5IX1XTVT+4vDmRlta2nGk5HGMMskJAR+4A== +"@babel/parser@^7.9.4": + version "7.9.4" + resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.9.4.tgz#68a35e6b0319bbc014465be43828300113f2f2e8" + integrity sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA== + "@babel/plugin-transform-runtime@^7.8.3": version "7.9.0" resolved "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.9.0.tgz#45468c0ae74cc13204e1d3b1f4ce6ee83258af0b" @@ -373,6 +378,18 @@ resolved "https://registry.npmjs.org/@polkadot/wasm-crypto/-/wasm-crypto-1.2.1.tgz#2189702447acd28d763886359576c87562241767" integrity sha512-nckIoZBV4nBZdeKwFwH5t7skS7L7GO5EFUl5B1F6uCjUfdNpDz3DtqbYQHcLdCZNmG4TDLg6w/1J+rkl2SiUZw== +"@sindresorhus/is@^0.14.0": + version "0.14.0" + resolved "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" + integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== + +"@szmarczak/http-timer@^1.1.2": + version "1.1.2" + resolved "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz#b1665e2c461a2cd92f4c1bbf50d5454de0d4b421" + integrity sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA== + dependencies: + defer-to-connect "^1.0.1" + "@turf/bbox@*", "@turf/bbox@6.x": version "6.0.1" resolved "https://registry.npmjs.org/@turf/bbox/-/bbox-6.0.1.tgz#b966075771475940ee1c16be2a12cf389e6e923a" @@ -547,40 +564,40 @@ resolved "https://registry.npmjs.org/@types/yaml/-/yaml-1.2.0.tgz#4ed577fc4ebbd6b829b28734e56d10c9e6984e09" integrity sha512-GW8b9qM+ebgW3/zjzPm0I1NxMvLaz/YKT9Ph6tTb+Fkeyzd9yLTvQ6ciQ2MorTRmb/qXmfjMerRpG4LviixaqQ== -"@typescript-eslint/eslint-plugin@2.25.0": - version "2.25.0" - resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.25.0.tgz#0b60917332f20dcff54d0eb9be2a9e9f4c9fbd02" - integrity sha512-W2YyMtjmlrOjtXc+FtTelVs9OhuR6OlYc4XKIslJ8PUJOqgYYAPRJhAqkYRQo3G4sjvG8jSodsNycEn4W2gHUw== +"@typescript-eslint/eslint-plugin@2.29.0": + version "2.29.0" + resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.29.0.tgz#c9efab7624e3dd6d144a0e4577a541d1bd42c2ac" + integrity sha512-X/YAY7azKirENm4QRpT7OVmzok02cSkqeIcLmdz6gXUQG4Hk0Fi9oBAynSAyNXeGdMRuZvjBa0c1Lu0dn/u6VA== dependencies: - "@typescript-eslint/experimental-utils" "2.25.0" + "@typescript-eslint/experimental-utils" "2.29.0" functional-red-black-tree "^1.0.1" regexpp "^3.0.0" tsutils "^3.17.1" -"@typescript-eslint/experimental-utils@2.25.0": - version "2.25.0" - resolved "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-2.25.0.tgz#13691c4fe368bd377b1e5b1e4ad660b220bf7714" - integrity sha512-0IZ4ZR5QkFYbaJk+8eJ2kYeA+1tzOE1sBjbwwtSV85oNWYUBep+EyhlZ7DLUCyhMUGuJpcCCFL0fDtYAP1zMZw== +"@typescript-eslint/experimental-utils@2.29.0": + version "2.29.0" + resolved "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-2.29.0.tgz#3cb8060de9265ba131625a96bbfec31ba6d4a0fe" + integrity sha512-H/6VJr6eWYstyqjWXBP2Nn1hQJyvJoFdDtsHxGiD+lEP7piGnGpb/ZQd+z1ZSB1F7dN+WsxUDh8+S4LwI+f3jw== dependencies: "@types/json-schema" "^7.0.3" - "@typescript-eslint/typescript-estree" "2.25.0" + "@typescript-eslint/typescript-estree" "2.29.0" eslint-scope "^5.0.0" eslint-utils "^2.0.0" -"@typescript-eslint/parser@2.25.0": - version "2.25.0" - resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-2.25.0.tgz#abfb3d999084824d9a756d9b9c0f36fba03adb76" - integrity sha512-mccBLaBSpNVgp191CP5W+8U1crTyXsRziWliCqzj02kpxdjKMvFHGJbK33NroquH3zB/gZ8H511HEsJBa2fNEg== +"@typescript-eslint/parser@2.29.0": + version "2.29.0" + resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-2.29.0.tgz#6e3c4e21ed6393dc05b9d8b47f0b7e731ef21c9c" + integrity sha512-H78M+jcu5Tf6m/5N8iiFblUUv+HJDguMSdFfzwa6vSg9lKR8Mk9BsgeSjO8l2EshKnJKcbv0e8IDDOvSNjl0EA== dependencies: "@types/eslint-visitor-keys" "^1.0.0" - "@typescript-eslint/experimental-utils" "2.25.0" - "@typescript-eslint/typescript-estree" "2.25.0" + "@typescript-eslint/experimental-utils" "2.29.0" + "@typescript-eslint/typescript-estree" "2.29.0" eslint-visitor-keys "^1.1.0" -"@typescript-eslint/typescript-estree@2.25.0": - version "2.25.0" - resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-2.25.0.tgz#b790497556734b7476fa7dd3fa539955a5c79e2c" - integrity sha512-VUksmx5lDxSi6GfmwSK7SSoIKSw9anukWWNitQPqt58LuYrKalzsgeuignbqnB+rK/xxGlSsCy8lYnwFfB6YJg== +"@typescript-eslint/typescript-estree@2.29.0": + version "2.29.0" + resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-2.29.0.tgz#1be6612bb02fc37ac9f466521c1459a4744e8d3a" + integrity sha512-3YGbtnWy4az16Egy5Fj5CckkVlpIh0MADtAQza+jiMADRSKkjdpzZp/5WuvwK/Qib3Z0HtzrDFeWanS99dNhnA== dependencies: debug "^4.1.1" eslint-visitor-keys "^1.1.0" @@ -638,13 +655,6 @@ another-json@^0.2.0: resolved "https://registry.npmjs.org/another-json/-/another-json-0.2.0.tgz#b5f4019c973b6dd5c6506a2d93469cb6d32aeedc" integrity sha1-tfQBnJc7bdXGUGotk0acttMq7tw= -ansi-align@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz#c36aeccba563b89ceb556f3690f0b1d9e3547f7f" - integrity sha1-w2rsy6VjuJzrVW82kPCx2eNUf38= - dependencies: - string-width "^2.0.0" - ansi-align@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.0.tgz#b536b371cf687caaef236c18d3e21fe3797467cb" @@ -1509,7 +1519,7 @@ blakejs@^1.1.0: resolved "https://registry.npmjs.org/blakejs/-/blakejs-1.1.0.tgz#69df92ef953aa88ca51a32df6ab1c54a155fc7a5" integrity sha1-ad+S75U6qIylGjLfarHFShVfx6U= -bluebird@^3.5.4: +bluebird@^3.7.2: version "3.7.2" resolved "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== @@ -1529,19 +1539,6 @@ bowser@^0.7.1: resolved "https://registry.npmjs.org/bowser/-/bowser-0.7.3.tgz#4fc0cb4e0e2bdd9b394df0d2038c32c2cc2712c8" integrity sha1-T8DLTg4r3Zs5TfDSA4wywswnEsg= -boxen@^1.2.1: - version "1.3.0" - resolved "https://registry.npmjs.org/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" - boxen@^3.2.0: version "3.2.0" resolved "https://registry.npmjs.org/boxen/-/boxen-3.2.0.tgz#fbdff0de93636ab4450886b6ff45b92d098f45eb" @@ -1556,6 +1553,20 @@ boxen@^3.2.0: type-fest "^0.3.0" widest-line "^2.0.0" +boxen@^4.2.0: + version "4.2.0" + resolved "https://registry.npmjs.org/boxen/-/boxen-4.2.0.tgz#e411b62357d6d6d36587c8ac3d5d974daa070e64" + integrity sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ== + dependencies: + ansi-align "^3.0.0" + camelcase "^5.3.1" + chalk "^3.0.0" + cli-boxes "^2.2.0" + string-width "^4.1.0" + term-size "^2.1.0" + type-fest "^0.8.1" + widest-line "^3.1.0" + brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" @@ -1646,6 +1657,19 @@ cache-base@^1.0.1: union-value "^1.0.0" unset-value "^1.0.0" +cacheable-request@^6.0.0: + version "6.1.0" + resolved "https://registry.npmjs.org/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" + caching-transform@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/caching-transform/-/caching-transform-4.0.0.tgz#00d297a4206d71e2163c39eaffa8157ac0651f0f" @@ -1673,11 +1697,6 @@ callsites@^3.0.0: resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== -camelcase@^4.0.0: - version "4.1.0" - resolved "https://registry.npmjs.org/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.npmjs.org/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" @@ -1827,11 +1846,6 @@ chokidar@^3.2.2: optionalDependencies: fsevents "~2.1.2" -ci-info@^1.5.0: - version "1.6.0" - resolved "https://registry.npmjs.org/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.npmjs.org/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" @@ -1865,11 +1879,6 @@ clean-stack@^2.0.0: resolved "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== -cli-boxes@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/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.npmjs.org/cli-boxes/-/cli-boxes-2.2.0.tgz#538ecae8f9c6ca508e3c3c95b453fe93cb4c168d" @@ -1912,6 +1921,13 @@ cliui@^6.0.0: strip-ansi "^6.0.0" wrap-ansi "^6.2.0" +clone-response@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b" + integrity sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws= + dependencies: + mimic-response "^1.0.0" + collection-visit@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" @@ -1981,17 +1997,17 @@ concat-stream@^2.0.0: readable-stream "^3.0.2" typedarray "^0.0.6" -configstore@^3.0.0: - version "3.1.2" - resolved "https://registry.npmjs.org/configstore/-/configstore-3.1.2.tgz#c6f25defaeef26df12dd33414b001fe81a543f8f" - integrity sha512-vtv5HtGjcYUgFrXc6Kx747B83MRRVS5R1VTEQoXvuP+kMI+if6uywV0nDGoiydJRy4yk7h9od5Og0kxx4zUXmw== +configstore@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz#d365021b5df4b98cdd187d6a3b0e3f6a7cc5ed96" + integrity sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA== dependencies: - dot-prop "^4.1.0" + 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" + make-dir "^3.0.0" + unique-string "^2.0.0" + write-file-atomic "^3.0.0" + xdg-basedir "^4.0.0" confmgr@^1.0.5: version "1.0.5" @@ -2107,10 +2123,10 @@ cross-spawn@^7.0.0: shebang-command "^2.0.0" which "^2.0.1" -crypto-random-string@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e" - integrity sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4= +crypto-random-string@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" + integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== cuint@^0.2.2: version "0.2.2" @@ -2168,6 +2184,13 @@ decode-uri-component@^0.2.0: resolved "https://registry.npmjs.org/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.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" + integrity sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M= + dependencies: + mimic-response "^1.0.0" + deep-eql@^3.0.1: version "3.0.1" resolved "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz#dfc9404400ad1c8fe023e7da1df1c147c4b444df" @@ -2192,6 +2215,11 @@ default-require-extensions@^3.0.0: dependencies: strip-bom "^4.0.0" +defer-to-connect@^1.0.1: + version "1.1.3" + resolved "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591" + integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ== + define-properties@^1.1.2, define-properties@^1.1.3: version "1.1.3" resolved "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" @@ -2294,12 +2322,12 @@ doctrine@^3.0.0: dependencies: esutils "^2.0.2" -dot-prop@^4.1.0: - version "4.2.0" - resolved "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz#1f19e0c2e1aa0e32797c49799f2837ac6af69c57" - integrity sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ== +dot-prop@^5.2.0: + version "5.2.0" + resolved "https://registry.npmjs.org/dot-prop/-/dot-prop-5.2.0.tgz#c34ecc29556dc45f1f4c22697b6f4904e0cc4fcb" + integrity sha512-uEUyaDKoSQ1M4Oq8l45hSE26SnTxL6snNnqvK/VWx5wJhmff5z0FUVJDKDanor/6w3kzE3i7XZOk+7wC0EXr1A== dependencies: - is-obj "^1.0.0" + is-obj "^2.0.0" dotenv@*, dotenv@8.2.0: version "8.2.0" @@ -2354,10 +2382,17 @@ encoding@^0.1.11: dependencies: iconv-lite "~0.4.13" -entities@~1.1.1: - version "1.1.2" - resolved "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" - integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w== +end-of-stream@^1.1.0: + version "1.4.4" + resolved "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== + dependencies: + once "^1.4.0" + +entities@~2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/entities/-/entities-2.0.0.tgz#68d6084cab1b079767540d80e56a39b423e4abf4" + integrity sha512-D9f7V0JSRwIxlRI2mjMqufDrRDnx8p+eEOz7aUM9SuvF8gsBzra0/6tbjl1m8eQHrZlYj6PxqE00hZ1SAIKPLw== error-ex@^1.2.0, error-ex@^1.3.1: version "1.3.2" @@ -2433,6 +2468,11 @@ es6-weak-map@^2.0.2: es6-iterator "^2.0.3" es6-symbol "^3.1.1" +escape-goat@^2.0.0: + version "2.1.1" + resolved "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz#1b2dc77003676c457ec760b2dc68edb648188675" + integrity sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q== + escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" @@ -2525,10 +2565,10 @@ eslint-plugin-es@^3.0.0: eslint-utils "^2.0.0" regexpp "^3.0.0" -eslint-plugin-import@2.20.1: - version "2.20.1" - resolved "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.20.1.tgz#802423196dcb11d9ce8435a5fc02a6d3b46939b3" - integrity sha512-qQHgFOTjguR+LnYRoToeZWT62XM55MBVXObHM6SKFd1VzDcX/vqT1kAz8ssqigh5eMj8qXcRoXXGZpPP6RfdCw== +eslint-plugin-import@2.20.2: + version "2.20.2" + resolved "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.20.2.tgz#91fc3807ce08be4837141272c8b99073906e588d" + integrity sha512-FObidqpXrR8OnCh4iNsxy+WACztJLXAHBO5hK79T1Hc77PgQZkyDGA5Ag9xAvRpglvLNxhH/zSmZ70/pZ31dHg== dependencies: array-includes "^3.0.3" array.prototype.flat "^1.2.1" @@ -2576,10 +2616,10 @@ eslint-plugin-import@~2.18.0: read-pkg-up "^2.0.0" resolve "^1.11.0" -eslint-plugin-node@^11.0.0: - version "11.0.0" - resolved "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-11.0.0.tgz#365944bb0804c5d1d501182a9bc41a0ffefed726" - integrity sha512-chUs/NVID+sknFiJzxoN9lM7uKSOEta8GC8365hw1nDfwIPIjjpRSwwPvQanWv8dt/pDe9EV4anmVSwdiSndNg== +eslint-plugin-node@^11.1.0: + version "11.1.0" + resolved "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz#c95544416ee4ada26740a30474eefc5402dc671d" + integrity sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g== dependencies: eslint-plugin-es "^3.0.0" eslint-utils "^2.0.0" @@ -3398,6 +3438,20 @@ get-stream@^3.0.0: resolved "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ= +get-stream@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/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.npmjs.org/get-stream/-/get-stream-5.1.0.tgz#01203cdc92597f9b909067c3e656cc1f4d3c4dc9" + integrity sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw== + dependencies: + pump "^3.0.0" + get-value@^2.0.3, get-value@^2.0.6: version "2.0.6" resolved "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" @@ -3456,12 +3510,12 @@ glob@^7.0.5, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: once "^1.3.0" path-is-absolute "^1.0.0" -global-dirs@^0.1.0: - version "0.1.1" - resolved "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz#b319c0dd4607f353f3be9cca4c72fc148c49f445" - integrity sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU= +global-dirs@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/global-dirs/-/global-dirs-2.0.1.tgz#acdf3bb6685bcd55cb35e8a052266569e9469201" + integrity sha512-5HqUqdhkEovj2Of/ms3IeS/EekcO54ytHRLV4PEY2rhRwrHXLQjeVEES0Lhka0xwNDtGYn58wyC4s5+MHsOO6A== dependencies: - ini "^1.3.4" + ini "^1.3.5" global-modules@^1.0.0: version "1.0.0" @@ -3517,6 +3571,23 @@ got@^6.7.1: unzip-response "^2.0.1" url-parse-lax "^1.0.0" +got@^9.6.0: + version "9.6.0" + resolved "https://registry.npmjs.org/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85" + integrity sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q== + dependencies: + "@sindresorhus/is" "^0.14.0" + "@szmarczak/http-timer" "^1.1.2" + cacheable-request "^6.0.0" + decompress-response "^3.3.0" + duplexer3 "^0.1.4" + get-stream "^4.1.0" + lowercase-keys "^1.0.1" + mimic-response "^1.0.1" + p-cancelable "^1.0.0" + to-readable-stream "^1.0.0" + url-parse-lax "^3.0.0" + graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.4, graceful-fs@^4.1.9: version "4.2.3" resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423" @@ -3593,6 +3664,11 @@ has-values@^1.0.0: is-number "^3.0.0" kind-of "^4.0.0" +has-yarn@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/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.npmjs.org/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" @@ -3663,6 +3739,11 @@ html-escaper@^2.0.0: resolved "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.1.tgz#beed86b5d2b921e92533aa11bce6d8e3b583dee7" integrity sha512-hNX23TjWwD3q56HpWjUHOKj1+4KKlnjv9PcmBUYKVpga+2cnb9nDx/B1o0yO4n+RZXZdiNxzx6B24C9aNMTkkQ== +http-cache-semantics@^4.0.0: + version "4.1.0" + resolved "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390" + integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ== + http-signature@~1.2.0: version "1.2.0" resolved "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" @@ -3745,7 +3826,7 @@ inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.3: resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== -ini@^1.3.4, ini@~1.3.0: +ini@^1.3.4, ini@^1.3.5, ini@~1.3.0: version "1.3.5" resolved "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== @@ -3881,12 +3962,12 @@ is-callable@^1.1.4, is-callable@^1.1.5: resolved "https://registry.npmjs.org/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.npmjs.org/is-ci/-/is-ci-1.2.1.tgz#e3779c8ee17fccf428488f6e281187f2e632841c" - integrity sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg== +is-ci@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" + integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== dependencies: - ci-info "^1.5.0" + ci-info "^2.0.0" is-data-descriptor@^0.1.4: version "0.1.4" @@ -3988,13 +4069,13 @@ is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: dependencies: is-extglob "^2.1.1" -is-installed-globally@^0.1.0: - version "0.1.0" - resolved "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.1.0.tgz#0dfd98f5a9111716dd535dda6492f67bf3d25a80" - integrity sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA= +is-installed-globally@^0.3.1: + version "0.3.2" + resolved "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.3.2.tgz#fd3efa79ee670d1187233182d5b0a1dd00313141" + integrity sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g== dependencies: - global-dirs "^0.1.0" - is-path-inside "^1.0.0" + global-dirs "^2.0.1" + is-path-inside "^3.0.1" is-ip@^2.0.0: version "2.0.0" @@ -4003,10 +4084,10 @@ is-ip@^2.0.0: dependencies: ip-regex "^2.0.0" -is-npm@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4" - integrity sha1-8vtjpl5JBbQGyGBydloaTceTufQ= +is-npm@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/is-npm/-/is-npm-4.0.0.tgz#c90dd8380696df87a7a6d823c20d0b12bbe3c84d" + integrity sha512-96ECIfh9xtDDlPylNPXhzjsykHsMJZ18ASpaWzQyBr4YRTcVjUvzaHayDAES2oU/3KpljhHUjtSRNiDwi0F0ig== is-number@^2.1.0: version "2.1.0" @@ -4032,17 +4113,15 @@ is-number@^7.0.0: resolved "https://registry.npmjs.org/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.npmjs.org/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" - integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= +is-obj@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/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.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz#8ef5b7de50437a3fdca6b4e865ef7aa55cb48036" - integrity sha1-jvW33lBDej/cprToZe96pVy0gDY= - dependencies: - path-is-inside "^1.0.1" +is-path-inside@^3.0.1: + version "3.0.2" + resolved "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.2.tgz#f5220fc82a3e233757291dddc9c5877f2a1f3017" + integrity sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg== is-plain-object@^2.0.3, is-plain-object@^2.0.4: version "2.0.4" @@ -4120,6 +4199,11 @@ is-windows@^1.0.1, is-windows@^1.0.2: resolved "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== +is-yarn-global@^0.3.0: + version "0.3.0" + resolved "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz#d502d3382590ea3004893746754c89139973e232" + integrity sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw== + isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" @@ -4252,7 +4336,7 @@ js-yaml@3.13.1, js-yaml@^3.11.0, js-yaml@^3.13.1: argparse "^1.0.7" esprima "^4.0.0" -js2xmlparser@^4.0.0: +js2xmlparser@^4.0.1: version "4.0.1" resolved "https://registry.npmjs.org/js2xmlparser/-/js2xmlparser-4.0.1.tgz#670ef71bc5661f089cc90481b99a05a1227ae3bd" integrity sha512-KrPTolcw6RocpYjdC7pL7v62e55q7qOMHvLX1UCLc5AAS8qeJ6nukarEJAF2KL2PZxlbGueEbINqZR2bDe/gUw== @@ -4269,25 +4353,25 @@ jsdoc-route-plugin@^0.1.0: resolved "https://registry.npmjs.org/jsdoc-route-plugin/-/jsdoc-route-plugin-0.1.0.tgz#22d167a92b84c11afd570813794a24144a7892e0" integrity sha1-ItFnqSuEwRr9VwgTeUokFEp4kuA= -jsdoc@3.6.3: - version "3.6.3" - resolved "https://registry.npmjs.org/jsdoc/-/jsdoc-3.6.3.tgz#dccea97d0e62d63d306b8b3ed1527173b5e2190d" - integrity sha512-Yf1ZKA3r9nvtMWHO1kEuMZTlHOF8uoQ0vyo5eH7SQy5YeIiHM+B0DgKnn+X6y6KDYZcF7G2SPkKF+JORCXWE/A== +jsdoc@3.6.4: + version "3.6.4" + resolved "https://registry.npmjs.org/jsdoc/-/jsdoc-3.6.4.tgz#246b2832a0ea8b37a441b61745509cfe29e174b6" + integrity sha512-3G9d37VHv7MFdheviDCjUfQoIjdv4TC5zTTf5G9VODLtOnVS6La1eoYBDlbWfsRT3/Xo+j2MIqki2EV12BZfwA== dependencies: - "@babel/parser" "^7.4.4" - bluebird "^3.5.4" + "@babel/parser" "^7.9.4" + bluebird "^3.7.2" catharsis "^0.8.11" escape-string-regexp "^2.0.0" - js2xmlparser "^4.0.0" + js2xmlparser "^4.0.1" klaw "^3.0.0" - markdown-it "^8.4.2" - markdown-it-anchor "^5.0.2" - marked "^0.7.0" - mkdirp "^0.5.1" + markdown-it "^10.0.0" + markdown-it-anchor "^5.2.7" + marked "^0.8.2" + mkdirp "^1.0.4" requizzle "^0.2.3" - strip-json-comments "^3.0.1" + strip-json-comments "^3.1.0" taffydb "2.6.2" - underscore "~1.9.1" + underscore "~1.10.2" jsesc@^1.3.0: version "1.3.0" @@ -4304,6 +4388,11 @@ jsesc@~0.5.0: resolved "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= +json-buffer@3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/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.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" @@ -4359,6 +4448,13 @@ jsx-ast-utils@^2.0.1, jsx-ast-utils@^2.1.0, jsx-ast-utils@^2.2.3: array-includes "^3.0.3" object.assign "^4.1.0" +keyv@^3.0.0: + version "3.1.0" + resolved "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9" + integrity sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA== + dependencies: + json-buffer "3.0.0" + kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: version "3.2.2" resolved "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" @@ -4390,12 +4486,12 @@ klaw@^3.0.0: dependencies: graceful-fs "^4.1.9" -latest-version@^3.0.0: - version "3.1.0" - resolved "https://registry.npmjs.org/latest-version/-/latest-version-3.1.0.tgz#a205383fea322b33b5ae3b18abee0dc2f356ee15" - integrity sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU= +latest-version@^5.0.0: + version "5.1.0" + resolved "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz#119dfe908fe38d15dfa43ecd13fa12ec8832face" + integrity sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA== dependencies: - package-json "^4.0.0" + package-json "^6.3.0" levn@^0.3.0, levn@~0.3.0: version "0.3.0" @@ -4521,11 +4617,16 @@ loose-envify@^1.0.0, loose-envify@^1.4.0: dependencies: js-tokens "^3.0.0 || ^4.0.0" -lowercase-keys@^1.0.0: +lowercase-keys@^1.0.0, lowercase-keys@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/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.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" + integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== + lru-cache@^4.0.1: version "4.1.5" resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" @@ -4541,13 +4642,6 @@ lru-queue@0.1: dependencies: es5-ext "~0.10.2" -make-dir@^1.0.0: - version "1.3.0" - resolved "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" - integrity sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ== - dependencies: - pify "^3.0.0" - make-dir@^3.0.0, make-dir@^3.0.2: version "3.0.2" resolved "https://registry.npmjs.org/make-dir/-/make-dir-3.0.2.tgz#04a1acbf22221e1d6ef43559f43e05a90dbb4392" @@ -4572,26 +4666,26 @@ map-visit@^1.0.0: dependencies: object-visit "^1.0.0" -markdown-it-anchor@^5.0.2: - version "5.2.5" - resolved "https://registry.npmjs.org/markdown-it-anchor/-/markdown-it-anchor-5.2.5.tgz#dbf13cfcdbffd16a510984f1263e1d479a47d27a" - integrity sha512-xLIjLQmtym3QpoY9llBgApknl7pxAcN3WDRc2d3rwpl+/YvDZHPmKscGs+L6E05xf2KrCXPBvosWt7MZukwSpQ== +markdown-it-anchor@^5.2.7: + version "5.2.7" + resolved "https://registry.npmjs.org/markdown-it-anchor/-/markdown-it-anchor-5.2.7.tgz#ec740f6bd03258a582cd0c65b9644b9f9852e5a3" + integrity sha512-REFmIaSS6szaD1bye80DMbp7ePwsPNvLTR5HunsUcZ0SG0rWJQ+Pz24R4UlTKtjKBPhxo0v0tOBDYjZQQknW8Q== -markdown-it@^8.4.2: - version "8.4.2" - resolved "https://registry.npmjs.org/markdown-it/-/markdown-it-8.4.2.tgz#386f98998dc15a37722aa7722084f4020bdd9b54" - integrity sha512-GcRz3AWTqSUphY3vsUqQSFMbgR38a4Lh3GWlHRh/7MRwz8mcu9n2IO7HOh+bXHrR9kOPDl5RNCaEsrneb+xhHQ== +markdown-it@^10.0.0: + version "10.0.0" + resolved "https://registry.npmjs.org/markdown-it/-/markdown-it-10.0.0.tgz#abfc64f141b1722d663402044e43927f1f50a8dc" + integrity sha512-YWOP1j7UbDNz+TumYP1kpwnP0aEa711cJjrAQrzd0UXlbJfc5aAq0F/PZHjiioqDC1NKgvIMX+o+9Bk7yuM2dg== dependencies: argparse "^1.0.7" - entities "~1.1.1" + entities "~2.0.0" linkify-it "^2.0.0" mdurl "^1.0.1" uc.micro "^1.0.5" -marked@^0.7.0: - version "0.7.0" - resolved "https://registry.npmjs.org/marked/-/marked-0.7.0.tgz#b64201f051d271b1edc10a04d1ae9b74bb8e5c0e" - integrity sha512-c+yYdCZJQrsRjTPhUx7VKkApw9bwDkNbHUKo1ovgcfDjb2kc8rLuRbIFyXL5WOEUwzSSKo3IXpph2K6DqB/KZg== +marked@^0.8.2: + version "0.8.2" + resolved "https://registry.npmjs.org/marked/-/marked-0.8.2.tgz#4faad28d26ede351a7a1aaa5fec67915c869e355" + integrity sha512-EGwzEeCcLniFX51DhTpmTom+dSA/MG/OBUDjnWtHbEnjAH180VzUeAw+oE4+Zv+CoYBWyRlYOTR0N8SO9R1PVw== martinez-polygon-clipping@^0.4.3: version "0.4.3" @@ -4606,10 +4700,10 @@ math-random@^1.0.1: resolved "https://registry.npmjs.org/math-random/-/math-random-1.0.4.tgz#5dd6943c938548267016d4e34f057583080c514c" integrity sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A== -matrix-js-sdk@^5.1.1: - version "5.1.1" - resolved "https://registry.npmjs.org/matrix-js-sdk/-/matrix-js-sdk-5.1.1.tgz#d93c2db08acf07e894fb85345d3eaa8d4736b56c" - integrity sha512-zCkylD/oia9v/9Fbx54k/aBNd3szDflscViXq0gf2fQlKzTJRT3LoCAXZ9Uwr7gJ8AE8kFquyZ7revk3Y5YmPQ== +matrix-js-sdk@^5.2.0: + version "5.2.0" + resolved "https://registry.npmjs.org/matrix-js-sdk/-/matrix-js-sdk-5.2.0.tgz#f213fd7671538a57c6d7e0665a2178ab23b950da" + integrity sha512-IscXYNx+k7wq5fuwsvKlXSI6Z1/nQ7TBI8AkStHJOAR8rz1DRoxICLFJtWzpOUSrgQuSaUYpOm4+6hS6IVlmtA== dependencies: "@babel/runtime" "^7.8.3" another-json "^0.2.0" @@ -4724,6 +4818,11 @@ mimic-fn@^2.1.0: resolved "https://registry.npmjs.org/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.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" + integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== + minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" @@ -4789,6 +4888,11 @@ mkdirp@0.5.3, mkdirp@^0.5.1, mkdirp@~0.5.1: dependencies: minimist "^1.2.5" +mkdirp@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + mocha@^6.1.4: version "6.2.2" resolved "https://registry.npmjs.org/mocha/-/mocha-6.2.2.tgz#5d8987e28940caf8957a7d7664b910dc5b2fea20" @@ -4962,10 +5066,10 @@ node-preload@^0.2.0: dependencies: process-on-spawn "^1.0.0" -nodemon@2.0.2: - version "2.0.2" - resolved "https://registry.npmjs.org/nodemon/-/nodemon-2.0.2.tgz#9c7efeaaf9b8259295a97e5d4585ba8f0cbe50b0" - integrity sha512-GWhYPMfde2+M0FsHnggIHXTqPDHXia32HRhh6H0d75Mt9FKUoCBvumNHr7LdrpPBTKxsWmIEOjoN+P4IU6Hcaw== +nodemon@2.0.3: + version "2.0.3" + resolved "https://registry.npmjs.org/nodemon/-/nodemon-2.0.3.tgz#e9c64df8740ceaef1cb00e1f3da57c0a93ef3714" + integrity sha512-lLQLPS90Lqwc99IHe0U94rDgvjo+G9I4uEIxRG3evSLROcqQ9hwc0AxlSHKS4T1JW/IMj/7N5mthiN58NL/5kw== dependencies: chokidar "^3.2.2" debug "^3.2.6" @@ -4976,7 +5080,7 @@ nodemon@2.0.2: supports-color "^5.5.0" touch "^3.1.0" undefsafe "^2.0.2" - update-notifier "^2.5.0" + update-notifier "^4.0.0" nopt@~1.0.10: version "1.0.10" @@ -5007,6 +5111,11 @@ normalize-path@^3.0.0, normalize-path@~3.0.0: resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== +normalize-url@^4.1.0: + version "4.5.0" + resolved "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz#453354087e6ca96957bd8f5baf753f5982142129" + integrity sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ== + npm-run-path@^2.0.0: version "2.0.2" resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" @@ -5147,11 +5256,11 @@ object.values@^1.1.0, object.values@^1.1.1: function-bind "^1.1.1" has "^1.0.3" -"olm@https://matrix.org/packages/npm/olm/olm-3.0.0.tgz": - version "3.0.0" - resolved "https://matrix.org/packages/npm/olm/olm-3.0.0.tgz#4a6f5e83c5c4d05a268246a5db9bdf0e720311b1" +"olm@https://matrix.org/packages/npm/olm/olm-3.1.0.tgz": + version "3.1.0" + resolved "https://matrix.org/packages/npm/olm/olm-3.1.0.tgz#2c8fc2a42b7ea12febc31baa73ec03d9b601da16" -once@^1.3.0: +once@^1.3.0, once@^1.3.1, once@^1.4.0: version "1.4.0" resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= @@ -5203,6 +5312,11 @@ output-file-sync@^1.1.2: mkdirp "^0.5.1" object-assign "^4.1.0" +p-cancelable@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc" + integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw== + p-finally@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" @@ -5270,7 +5384,7 @@ package-hash@^4.0.0: lodash.flattendeep "^4.4.0" release-zalgo "^1.0.0" -package-json@^4.0.0, package-json@^4.0.1: +package-json@^4.0.1: version "4.0.1" resolved "https://registry.npmjs.org/package-json/-/package-json-4.0.1.tgz#8869a0401253661c4c4ca3da6c2121ed555f5eed" integrity sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0= @@ -5280,6 +5394,16 @@ package-json@^4.0.0, package-json@^4.0.1: registry-url "^3.0.3" semver "^5.1.0" +package-json@^6.3.0: + version "6.5.0" + resolved "https://registry.npmjs.org/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" + parent-module@^1.0.0: version "1.0.1" resolved "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" @@ -5337,7 +5461,7 @@ path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= -path-is-inside@^1.0.1, path-is-inside@^1.0.2: +path-is-inside@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= @@ -5464,6 +5588,11 @@ prepend-http@^1.0.1: resolved "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= +prepend-http@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" + integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc= + preserve@^0.2.0: version "0.2.0" resolved "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" @@ -5515,11 +5644,26 @@ pstree.remy@^1.1.7: resolved "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.7.tgz#c76963a28047ed61542dc361aa26ee55a7fa15f3" integrity sha512-xsMgrUwRpuGskEzBFkH8NmTimbZ5PcPup0LA8JJkHIm2IMUbQcpo3yeLNWVrufEYjh8YwtSVh0xz6UeWc5Oh5A== +pump@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/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@^2.1.0, punycode@^2.1.1: version "2.1.1" resolved "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== +pupa@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/pupa/-/pupa-2.0.1.tgz#dbdc9ff48ffbea4a26a069b6f9f7abb051008726" + integrity sha512-hEJH0s8PXLY/cdXh66tNEQGndDrIKNqNC5xmrysZy3i5C3oEoLna7YAOad+7u125+zH1HNXUmGEkrhb3c2VriA== + dependencies: + escape-goat "^2.0.0" + qs@^6.5.1, qs@^6.5.2: version "6.9.2" resolved "https://registry.npmjs.org/qs/-/qs-6.9.2.tgz#a27b695006544a04bf0e6c6a7e8120778926d5bd" @@ -5558,7 +5702,7 @@ rbush@^2.0.0: dependencies: quickselect "^1.0.1" -rc@^1.0.1, rc@^1.1.6: +rc@^1.0.1, rc@^1.1.6, rc@^1.2.8: version "1.2.8" resolved "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== @@ -5714,6 +5858,13 @@ registry-auth-token@^3.0.1: rc "^1.1.6" safe-buffer "^5.0.1" +registry-auth-token@^4.0.0: + version "4.1.1" + resolved "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.1.1.tgz#40a33be1e82539460f94328b0f7f0f84c16d9479" + integrity sha512-9bKS7nTl9+/A1s7tnPeGrUpRcVY+LUh7bfFgzpndALdPfXQBfQV77rQVtqgUV3ti4vc/Ik81Ex8UJDWDQ12zQA== + dependencies: + rc "^1.2.8" + registry-url@^3.0.3: version "3.1.0" resolved "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz#3d4ef870f73dde1d77f0cf9a381432444e174942" @@ -5721,6 +5872,13 @@ registry-url@^3.0.3: dependencies: rc "^1.0.1" +registry-url@^5.0.0: + version "5.1.0" + resolved "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz#e98334b50d5434b81136b44ec638d9c2009c5009" + integrity sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw== + dependencies: + rc "^1.2.8" + regjsgen@^0.2.0: version "0.2.0" resolved "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" @@ -5848,6 +6006,13 @@ resolve@^1.10.0, resolve@^1.10.1, resolve@^1.11.0, resolve@^1.12.0, resolve@^1.1 dependencies: path-parse "^1.0.6" +responselike@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" + integrity sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec= + dependencies: + lowercase-keys "^1.0.0" + restore-cursor@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" @@ -5946,19 +6111,19 @@ safe-regex@^1.1.0: resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -semver-diff@^2.0.0: - version "2.1.0" - resolved "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36" - integrity sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY= +semver-diff@^3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz#05f77ce59f325e00e2706afd67bb506ddb1ca32b" + integrity sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg== dependencies: - semver "^5.0.3" + semver "^6.3.0" -"semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.7.0, semver@^5.7.1: +"semver@2 || 3 || 4 || 5", semver@^5.1.0, semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.7.0, semver@^5.7.1: version "5.7.1" resolved "https://registry.npmjs.org/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.3.0: +semver@^6.0.0, semver@^6.1.0, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0: version "6.3.0" resolved "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== @@ -6105,6 +6270,14 @@ source-map-support@^0.4.15: dependencies: source-map "^0.5.6" +source-map-support@^0.5.17: + version "0.5.17" + resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.17.tgz#29fe1b3c98b9dbd5064ada89052ee8ff070cb46c" + integrity sha512-bwdKOBZ5L0gFRh4KOxNap/J/MpvX9Yxsq9lFDx65s3o7F/NiHy7JRaGIS8MwW6tZPAq9UXE207Il0cfcb5yu/Q== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + source-map-support@^0.5.6: version "0.5.16" resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.16.tgz#0ae069e7fe3ba7538c64c98515e35339eac5a042" @@ -6294,7 +6467,7 @@ static-extend@^0.1.1: define-property "^0.2.5" object-copy "^0.1.0" -"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: +"string-width@^1.0.2 || 2", string-width@^2.1.0, string-width@^2.1.1: version "2.1.1" resolved "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== @@ -6311,7 +6484,7 @@ string-width@^3.0.0, string-width@^3.1.0: is-fullwidth-code-point "^2.0.0" strip-ansi "^5.1.0" -string-width@^4.1.0, string-width@^4.2.0: +string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0: version "4.2.0" resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== @@ -6415,6 +6588,11 @@ strip-json-comments@^3.0.1: resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.0.1.tgz#85713975a91fb87bf1b305cca77395e40d2a64a7" integrity sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw== +strip-json-comments@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.0.tgz#7638d31422129ecf4457440009fba03f9f9ac180" + integrity sha512-e6/d0eBu7gHtdCqFt0xJr642LdToM5/cN4Qb9DbHjVx1CP5RyeM+zH7pbecEmDv/lBqb0QH+6Uqq75rxFPkM0w== + superagent@^3.7.0: version "3.8.3" resolved "https://registry.npmjs.org/superagent/-/superagent-3.8.3.tgz#460ea0dbdb7d5b11bc4f78deba565f86a178e128" @@ -6562,6 +6740,11 @@ to-object-path@^0.3.0: dependencies: kind-of "^3.0.2" +to-readable-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/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.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" @@ -6618,7 +6801,7 @@ ts-node@8.6.2: source-map-support "^0.5.6" yn "3.1.1" -ts-node@^8.3.0, ts-node@^8.8.1: +ts-node@^8.3.0: version "8.8.1" resolved "https://registry.npmjs.org/ts-node/-/ts-node-8.8.1.tgz#7c4d3e9ed33aa703b64b28d7f9d194768be5064d" integrity sha512-10DE9ONho06QORKAaCBpPiFCdW+tZJuY/84tyypGtl6r+/C7Asq0dhqbRZURuUlLQtZxxDvT8eoj8cGW0ha6Bg== @@ -6629,6 +6812,17 @@ ts-node@^8.3.0, ts-node@^8.8.1: source-map-support "^0.5.6" yn "3.1.1" +ts-node@^8.9.0: + version "8.9.0" + resolved "https://registry.npmjs.org/ts-node/-/ts-node-8.9.0.tgz#d7bf7272dcbecd3a2aa18bd0b96c7d2f270c15d4" + integrity sha512-rwkXfOs9zmoHrV8xE++dmNd6ZIS+nmHHCxcV53ekGJrxFLMbp+pizpPS07ARvhwneCIECPppOwbZHvw9sQtU4w== + dependencies: + arg "^4.1.0" + diff "^4.0.1" + make-error "^1.1.1" + source-map-support "^0.5.17" + yn "3.1.1" + tslib@^1.8.1, tslib@^1.9.0: version "1.11.1" resolved "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz#eb15d128827fbee2841549e171f45ed338ac7e35" @@ -6724,16 +6918,16 @@ undefsafe@^2.0.2: dependencies: debug "^2.2.0" +underscore@~1.10.2: + version "1.10.2" + resolved "https://registry.npmjs.org/underscore/-/underscore-1.10.2.tgz#73d6aa3668f3188e4adb0f1943bd12cfd7efaaaf" + integrity sha512-N4P+Q/BuyuEKFJ43B9gYuOj4TQUHXX+j2FqguVOpjkssLUUrnJofCcBccJSCoeturDoZU6GorDTHSvUDlSQbTg== + underscore@~1.4.4: version "1.4.4" resolved "https://registry.npmjs.org/underscore/-/underscore-1.4.4.tgz#61a6a32010622afa07963bf325203cf12239d604" integrity sha1-YaajIBBiKvoHljvzJSA88SI51gQ= -underscore@~1.9.1: - version "1.9.2" - resolved "https://registry.npmjs.org/underscore/-/underscore-1.9.2.tgz#0c8d6f536d6f378a5af264a72f7bec50feb7cf2f" - integrity sha512-D39qtimx0c1fI3ya1Lnhk3E9nONswSKhnffBI0gME9C99fYOkNi04xs8K6pePLhvl1frbDemkaBQ5ikWllR2HQ== - unhomoglyph@^1.0.2: version "1.0.5" resolved "https://registry.npmjs.org/unhomoglyph/-/unhomoglyph-1.0.5.tgz#a68c6244f0ec140bfe58293a1f66a9bd2a244343" @@ -6754,12 +6948,12 @@ uniq@^1.0.1: resolved "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= -unique-string@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz#9e1057cca851abb93398f8b33ae187b99caec11a" - integrity sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo= +unique-string@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz#39c6451f81afb2749de2b233e3f7c5e8843bd89d" + integrity sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg== dependencies: - crypto-random-string "^1.0.0" + crypto-random-string "^2.0.0" unset-value@^1.0.0: version "1.0.0" @@ -6774,21 +6968,24 @@ unzip-response@^2.0.1: resolved "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz#d2f0f737d16b0615e72a6935ed04214572d56f97" integrity sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c= -update-notifier@^2.5.0: - version "2.5.0" - resolved "https://registry.npmjs.org/update-notifier/-/update-notifier-2.5.0.tgz#d0744593e13f161e406acb1d9408b72cad08aff6" - integrity sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw== +update-notifier@^4.0.0: + version "4.1.0" + resolved "https://registry.npmjs.org/update-notifier/-/update-notifier-4.1.0.tgz#4866b98c3bc5b5473c020b1250583628f9a328f3" + integrity sha512-w3doE1qtI0/ZmgeoDoARmI5fjDoT93IfKgEGqm26dGUOh8oNpaSTsGNdYRN/SjOuo10jcJGwkEL3mroKzktkew== dependencies: - boxen "^1.2.1" - chalk "^2.0.1" - configstore "^3.0.0" + boxen "^4.2.0" + chalk "^3.0.0" + configstore "^5.0.1" + has-yarn "^2.1.0" import-lazy "^2.1.0" - is-ci "^1.0.10" - is-installed-globally "^0.1.0" - is-npm "^1.0.0" - latest-version "^3.0.0" - semver-diff "^2.0.0" - xdg-basedir "^3.0.0" + is-ci "^2.0.0" + is-installed-globally "^0.3.1" + is-npm "^4.0.0" + is-yarn-global "^0.3.0" + latest-version "^5.0.0" + pupa "^2.0.1" + semver-diff "^3.1.1" + xdg-basedir "^4.0.0" uri-js@^4.2.2: version "4.2.2" @@ -6809,6 +7006,13 @@ 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.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c" + integrity sha1-FrXK/Afb42dsGxmZF3gj1lA6yww= + dependencies: + prepend-http "^2.0.0" + use@^3.1.0: version "3.1.1" resolved "https://registry.npmjs.org/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" @@ -6907,6 +7111,13 @@ widest-line@^2.0.0: dependencies: string-width "^2.1.1" +widest-line@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz#8292333bbf66cb45ff0de1603b136b7ae1496eca" + integrity sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg== + dependencies: + string-width "^4.0.0" + word-wrap@^1.2.3, word-wrap@~1.2.3: version "1.2.3" resolved "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" @@ -6935,15 +7146,6 @@ wrappy@1: resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= -write-file-atomic@^2.0.0: - version "2.4.3" - resolved "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz#1fd2e9ae1df3e75b8d8c367443c692d4ca81f481" - integrity sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ== - dependencies: - graceful-fs "^4.1.11" - imurmurhash "^0.1.4" - signal-exit "^3.0.2" - write-file-atomic@^3.0.0: version "3.0.3" resolved "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" @@ -6968,10 +7170,10 @@ write@^0.2.1: dependencies: mkdirp "^0.5.1" -xdg-basedir@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz#496b2cc109eca8dbacfe2dc72b603c17c5870ad4" - integrity sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ= +xdg-basedir@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz#4bc8d9984403696225ef83a1573cbbcb4e79db13" + integrity sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q== xmlcreate@^2.0.3: version "2.0.3" -- GitLab From bf5f61592476495b60379c2a1523df3094b48885 Mon Sep 17 00:00:00 2001 From: Will Date: Tue, 21 Apr 2020 19:10:48 +0200 Subject: [PATCH 57/86] Fix blockthday and add types --- .../polkabot-plugin-blocthday/src/index.ts | 4 +- packages/polkabot/src/index.ts | 39 ++++++++++--------- packages/polkabot/src/types.ts | 11 ++++++ 3 files changed, 34 insertions(+), 20 deletions(-) diff --git a/packages/polkabot-plugin-blocthday/src/index.ts b/packages/polkabot-plugin-blocthday/src/index.ts index 2d7acd4..6cf44aa 100644 --- a/packages/polkabot-plugin-blocthday/src/index.ts +++ b/packages/polkabot-plugin-blocthday/src/index.ts @@ -33,7 +33,7 @@ export default class Blocthday extends PolkabotWorker implements Controllable { public constructor(mod: PluginModule, context: PluginContext, config?) { super(mod, context, config); - this.NB_BLOCKS = parseInt(process.env.POLKABOT_PLUGIN_BLOCTHDAY_NB_BLOCKS) || 1000000; + this.NB_BLOCKS = parseInt(process.env.POLKABOT_BLOCTHDAY_NB_BLOCKS) || 1000000; this.commandSet = getCommandSet(this); } @@ -53,7 +53,7 @@ export default class Blocthday extends PolkabotWorker implements Controllable { async watchChain(): Promise { // Reference: https://polkadot.js.org/api/examples/promise/02_listen_to_blocks/ await this.context.polkadot.rpc.chain.subscribeNewHeads(header => { - // console.log(`Blocthday - Chain is at block: #${header.number}`); + //console.log(`Blocthday - Chain is at block: #${header.number}`); const bnBlockNumber: BN = header.number.unwrap().toBn(); const bnNumberOfBlocks: BN = new BN(this.NB_BLOCKS); diff --git a/packages/polkabot/src/index.ts b/packages/polkabot/src/index.ts index cbcf819..58323fc 100644 --- a/packages/polkabot/src/index.ts +++ b/packages/polkabot/src/index.ts @@ -22,10 +22,11 @@ import { import { PolkabotNotifier } from '../../polkabot-api/src/PolkabotNotifier'; import { PolkabotChatbot } from '../../polkabot-api/src/PolkabotChatbot'; import { PolkabotWorker } from '../../polkabot-api/src/PolkabotWorker'; +import { MatrixClient } from './types'; type PolkabotGlobal = { Olm: Olm; -} +}; ((global as unknown) as PolkabotGlobal).Olm = Olm; @@ -41,8 +42,8 @@ export default class Polkabot { // private args: any; private db: any; private config: ConfigObject; - private matrix: any; - private polkadot: any; + private matrix: MatrixClient; + private polkadot: ApiPromise; private notifiersTable: NotifiersTable = {}; private controllablePlugins: Controllable[] = []; private chatBots: PolkabotChatbot[] = []; @@ -109,7 +110,8 @@ export default class Polkabot { } private async loadPlugins(): Promise { - return new Promise(async (resolve, _reject) => { // eslint-disable-line no-async-promise-executor + return new Promise(async (resolve, _reject) => { + // eslint-disable-line no-async-promise-executor console.log('Polkabot - Loading plugins: ------------------------'); const pluginScanner = new PluginScanner(pkg.name + '-plugin'); let plugins = await pluginScanner.scan(); @@ -139,7 +141,7 @@ export default class Polkabot { db: this.db, matrix: this.matrix, polkadot: this.polkadot, - polkabot: this + polkabot: this, }; loads.push( @@ -227,7 +229,7 @@ export default class Polkabot { // this.config = require(configLocation) const config = ConfigManager.getInstance('configSpecs.yml').getConfig(); - config.Print({compact: true}); + config.Print({ compact: true }); console.log(`Your config is${config.Validate() ? '' : ' NOT'} valid!`); this.config = config; @@ -244,7 +246,7 @@ export default class Polkabot { const [chain, nodeName, nodeVersion] = await Promise.all([ this.polkadot.rpc.system.chain(), this.polkadot.rpc.system.name(), - this.polkadot.rpc.system.version() + this.polkadot.rpc.system.version(), ]); console.log(`Polkabot - You are connected to chain ${chain} using ${nodeName} v${nodeVersion}`); @@ -253,14 +255,11 @@ export default class Polkabot { this.db = new LocalDb(); this.db.addCollection('config'); - this.db.config.upsert( - { botMasterId: this.config.values.MATRIX.BOTMASTER_ID }, - () => { - this.db.config.findOne({}, {}, res => { - console.log('Polkabot - Matrix client bot manager id: ' + res.botMasterId); - }); - } - ); + this.db.config.upsert({ botMasterId: this.config.values.MATRIX.BOTMASTER_ID }, () => { + this.db.config.findOne({}, {}, res => { + console.log('Polkabot - Matrix client bot manager id: ' + res.botMasterId); + }); + }); // TODO - refactor using async/await. See https://github.com/matrix-org/matrix-js-sdk/issues/789 console.log('Polkabot - creating client'); @@ -268,14 +267,14 @@ export default class Polkabot { this.matrix = sdk.createClient({ baseUrl: this.config.values.MATRIX.BASE_URL, accessToken: this.config.values.MATRIX.TOKEN, - userId: this.config.values.MATRIX.BOTUSER_ID + userId: this.config.values.MATRIX.BOTUSER_ID, }); if (this.isCustomBaseUrl()) { const data = await this.matrix .login('m.login.password', { user: this.config.values.MATRIX.LOGIN_USER_ID, - password: this.config.values.MATRIX.LOGIN_USER_PASSWORD + password: this.config.values.MATRIX.LOGIN_USER_PASSWORD, }) .catch(error => { console.error('Polkabot: Error logging into matrix:', error); @@ -293,7 +292,11 @@ export default class Polkabot { this.start(state); break; default: - console.log('Polkabot - Error. Unable to establish client sync state, state =', state, data); + console.log( + 'Polkabot - Error. Unable to establish client sync state, state =', + state, + data + ); process.exit(1); } }); diff --git a/packages/polkabot/src/types.ts b/packages/polkabot/src/types.ts index e977ba7..05c0c57 100644 --- a/packages/polkabot/src/types.ts +++ b/packages/polkabot/src/types.ts @@ -1,3 +1,5 @@ +import { RoomId } from '../../polkabot-api/src/plugin.interface'; + export interface EnvVar { name: string; // Name of the envrionment varibale description: string; // Description of what the var does @@ -26,3 +28,12 @@ export interface PolkabotConfig { loginUserPassword: string; }; } + +export interface MatrixClient { + sendTextMessage: (roomId, string) => void; + sendHtmlMessage: (roomId: RoomId, html: string, text: string) => void; + //on: (string, (event, room, _toStartOfTimeline) => void) => void; + once: (event: string, handler: Function) => void; + startClient(msgToSHow: number); + login: (pass: string, options: any) => Promise; +} -- GitLab From d2849ffcad2ef77bf1f51ab201c83577c93682ed Mon Sep 17 00:00:00 2001 From: chevdor Date: Tue, 12 May 2020 17:43:13 +0200 Subject: [PATCH 58/86] Bump up dependencies --- README.adoc | 11 +- packages/polkabot/.env-sample | 2 +- packages/polkabot/package.json | 4 +- yarn.lock | 189 +++++++++++++++++---------------- 4 files changed, 111 insertions(+), 95 deletions(-) diff --git a/README.adoc b/README.adoc index c779c90..0b87ed6 100644 --- a/README.adoc +++ b/README.adoc @@ -20,12 +20,21 @@ NOTE: {proj} aims as being *as silent as possible* so don't expect lots of fuzz git clone https://gitlab.com/chevdor/polkabot.git cd polkabot + nvm use yarn -At that point, you will need to search for the `config-sample.js` files. Everywhere you find one, create a `config.js` and make sure you adapt the content. Once you think you are good: +Before you can start {proj}, you will have to configure a few things. {proj} is using https://gitlab.com/chevdor/confmgr[confmgr]. + +You will need to create a file under packages/polkabot. This file should be named `.env` or `.env.foobar` if you start with `NODE_ENV=foobar`. As a test, you may start {proj} without any config and it will tell you what is missing. Many values have default, so you can get started with a very minimal configuration. + +Look for the sample file under `packages/polkabot/.env-sample`. yarn start +For devs, the command is typically: + + NODE_ENV=dev LOG_LEVEL=silly yarn start + == Docker images To build the base and the custom: diff --git a/packages/polkabot/.env-sample b/packages/polkabot/.env-sample index 9fa7f2a..094efd6 100644 --- a/packages/polkabot/.env-sample +++ b/packages/polkabot/.env-sample @@ -10,7 +10,7 @@ # Replace the value of POLKABOT_POLKADOT_NODE_NAME with the name of your Substrate node POLKABOT_POLKADOT_NODE_NAME=your_substrate_node_name_here_is_optional -POLKABOT_POLKADOT_WS_HOST=ws://127.0.0.1:9944 +POLKABOT_POLKADOT_URL=ws://127.0.0.1:9944 # Required # diff --git a/packages/polkabot/package.json b/packages/polkabot/package.json index 14c8737..5148e02 100644 --- a/packages/polkabot/package.json +++ b/packages/polkabot/package.json @@ -34,11 +34,11 @@ ], "dependencies": { "@babel/runtime": "^7.9.2", - "@polkadot/api": "1.11.1", + "@polkadot/api": "^1.13.1", "bn.js": "5.1.1", "confmgr": "^1.0.5", "find-node-modules": "^2.0.0", - "matrix-js-sdk": "^5.2.0", + "matrix-js-sdk": "^6.0.0", "minimongo": "6.5.0", "nedb": "^1.8.0", "olm": "https://matrix.org/packages/npm/olm/olm-3.1.0.tgz", diff --git a/yarn.lock b/yarn.lock index ec6d2cb..1da0c57 100644 --- a/yarn.lock +++ b/yarn.lock @@ -186,6 +186,13 @@ dependencies: regenerator-runtime "^0.13.4" +"@babel/runtime@^7.9.6": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.9.6.tgz#a9102eb5cadedf3f31d08a9ecf294af7827ea29f" + integrity sha512-64AF1xY3OAkFHqOb9s4jpgk1Mm5vDZ4L3acHvAml+53nO1XbXLuDodsVpO4OIUsmemlUHMxNdYMNJmsvOwLrvQ== + dependencies: + regenerator-runtime "^0.13.4" + "@babel/template@^7.7.4", "@babel/template@^7.8.3", "@babel/template@^7.8.6": version "7.8.6" resolved "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz#86b22af15f828dfb086474f964dcc3e39c43ce2b" @@ -234,121 +241,121 @@ resolved "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.2.tgz#26520bf09abe4a5644cd5414e37125a8954241dd" integrity sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw== -"@polkadot/api-derive@1.11.1": - version "1.11.1" - resolved "https://registry.npmjs.org/@polkadot/api-derive/-/api-derive-1.11.1.tgz#086de89d99eedfa84d722b094ec9c3e0be46ba15" - integrity sha512-xout+I8JEXMz6Icd/viQIvPg/lsJmNylufC4UXPK/STL1tB62Wl48I1EKvDLSiZo2dw9mZ94ffaw8bALgs257A== - dependencies: - "@babel/runtime" "^7.9.2" - "@polkadot/api" "1.11.1" - "@polkadot/rpc-core" "1.11.1" - "@polkadot/rpc-provider" "1.11.1" - "@polkadot/types" "1.11.1" - "@polkadot/util" "^2.8.1" - "@polkadot/util-crypto" "^2.8.1" +"@polkadot/api-derive@1.13.1": + version "1.13.1" + resolved "https://registry.yarnpkg.com/@polkadot/api-derive/-/api-derive-1.13.1.tgz#e52743291c64ae7f71624bb251bc5544785d9a33" + integrity sha512-Zj5JIg8oyn321G8vX2tpD9UlEHFhMNvdvho8nK7a1L+pqglcE3rs3GSDbCGhCaPHx2fUXYEARazBJKkOHMgMdQ== + dependencies: + "@babel/runtime" "^7.9.6" + "@polkadot/api" "1.13.1" + "@polkadot/rpc-core" "1.13.1" + "@polkadot/rpc-provider" "1.13.1" + "@polkadot/types" "1.13.1" + "@polkadot/util" "^2.9.1" + "@polkadot/util-crypto" "^2.9.1" bn.js "^5.1.1" memoizee "^0.4.14" rxjs "^6.5.5" -"@polkadot/api@1.11.1": - version "1.11.1" - resolved "https://registry.npmjs.org/@polkadot/api/-/api-1.11.1.tgz#da754acbb720da30f2a1373ac6aad0aa886d5cd1" - integrity sha512-Qjjl6BAH8PFC2ALh9Hqs/tDCG5Q9Fw96HG+ntoW+x9HDL6NReKzffCz/BnZthxHjfS3/yzIK7hz6ZyXTYd7evQ== - dependencies: - "@babel/runtime" "^7.9.2" - "@polkadot/api-derive" "1.11.1" - "@polkadot/keyring" "^2.8.1" - "@polkadot/metadata" "1.11.1" - "@polkadot/rpc-core" "1.11.1" - "@polkadot/rpc-provider" "1.11.1" - "@polkadot/types" "1.11.1" - "@polkadot/types-known" "1.11.1" - "@polkadot/util" "^2.8.1" - "@polkadot/util-crypto" "^2.8.1" +"@polkadot/api@1.13.1", "@polkadot/api@^1.13.1": + version "1.13.1" + resolved "https://registry.yarnpkg.com/@polkadot/api/-/api-1.13.1.tgz#6e8cb2f59a230498811c9fd818e1756316188044" + integrity sha512-q/dzklbTpshR58tpLmi7Z51ii6dtpbW6vmPu9PAJbFoFIe45Z09B8rczf6BgXi9mWMiO1Az9gxwtjuc1lnnobg== + dependencies: + "@babel/runtime" "^7.9.6" + "@polkadot/api-derive" "1.13.1" + "@polkadot/keyring" "^2.9.1" + "@polkadot/metadata" "1.13.1" + "@polkadot/rpc-core" "1.13.1" + "@polkadot/rpc-provider" "1.13.1" + "@polkadot/types" "1.13.1" + "@polkadot/types-known" "1.13.1" + "@polkadot/util" "^2.9.1" + "@polkadot/util-crypto" "^2.9.1" bn.js "^5.1.1" eventemitter3 "^4.0.0" rxjs "^6.5.5" -"@polkadot/keyring@^2.8.1": - version "2.8.1" - resolved "https://registry.npmjs.org/@polkadot/keyring/-/keyring-2.8.1.tgz#befc87d262a3c00a70e9b9bde7ed9c89e88ebc46" - integrity sha512-VYuFucacGqOB6ZmSN/3/vUvEMFaOg7NmGcWLnjiGY7T5W3Qv8Up/3zGbnt9UspDcQckoQsIumQyfkeLAjcRjoA== +"@polkadot/keyring@^2.9.1": + version "2.9.1" + resolved "https://registry.yarnpkg.com/@polkadot/keyring/-/keyring-2.9.1.tgz#637aa5f4af4fd90065c3cb66e45d0e60928819a6" + integrity sha512-r1jcgV7SQCpc5r2twUxGLqOeQ2tqkfCFVcl877lEolCn+xrASx5rXqO+YyHDKgRnft3RK9z9/k407R+2DjVF9w== dependencies: "@babel/runtime" "^7.9.2" - "@polkadot/util" "2.8.1" - "@polkadot/util-crypto" "2.8.1" + "@polkadot/util" "2.9.1" + "@polkadot/util-crypto" "2.9.1" -"@polkadot/metadata@1.11.1": - version "1.11.1" - resolved "https://registry.npmjs.org/@polkadot/metadata/-/metadata-1.11.1.tgz#dbd117b55527da81273bc30c93d2473f30cfe241" - integrity sha512-v2mblCHL2Mkifgqotvx1Aev4iFF+9rb6YmOIE2Q3ZHsIozlNEfcEU1NYDeAj/Z4dHFvC4JL63nFlltQA2Ju5Og== - dependencies: - "@babel/runtime" "^7.9.2" - "@polkadot/types" "1.11.1" - "@polkadot/types-known" "1.11.1" - "@polkadot/util" "^2.8.1" - "@polkadot/util-crypto" "^2.8.1" +"@polkadot/metadata@1.13.1": + version "1.13.1" + resolved "https://registry.yarnpkg.com/@polkadot/metadata/-/metadata-1.13.1.tgz#ce76d4c640ffafe460e3fe02e5993362f241af1e" + integrity sha512-81/iWr+49nWJ8FY1+xF73jiUphTR6+JSkB299oHDPvGOcbNgrcJCK49OlAvn1CLdDSybUfv62dLKX5COQ0qaNQ== + dependencies: + "@babel/runtime" "^7.9.6" + "@polkadot/types" "1.13.1" + "@polkadot/types-known" "1.13.1" + "@polkadot/util" "^2.9.1" + "@polkadot/util-crypto" "^2.9.1" bn.js "^5.1.1" -"@polkadot/rpc-core@1.11.1": - version "1.11.1" - resolved "https://registry.npmjs.org/@polkadot/rpc-core/-/rpc-core-1.11.1.tgz#212b9e15487ab0a8385ee9e97cfaacbe8b1d7985" - integrity sha512-tE6DafIv4adswgK2BXRo4cpXz7rEUQSAPOLHJ1bQD3WwC5/grElLuC1wawGnZbE2qeYD9Vz3/kdZeW5sD1FjSA== - dependencies: - "@babel/runtime" "^7.9.2" - "@polkadot/metadata" "1.11.1" - "@polkadot/rpc-provider" "1.11.1" - "@polkadot/types" "1.11.1" - "@polkadot/util" "^2.8.1" +"@polkadot/rpc-core@1.13.1": + version "1.13.1" + resolved "https://registry.yarnpkg.com/@polkadot/rpc-core/-/rpc-core-1.13.1.tgz#b4da2a73396fc3ea6eadfa9e0d3371a12f6836fb" + integrity sha512-Lzr3XdLzn9VWATUKc+tjysPZIIoDxhIU3uxN/SeTBIIigelkRoEjs3xSVSeUjN+K81N7blnUqWlS2ka2qyuDrw== + dependencies: + "@babel/runtime" "^7.9.6" + "@polkadot/metadata" "1.13.1" + "@polkadot/rpc-provider" "1.13.1" + "@polkadot/types" "1.13.1" + "@polkadot/util" "^2.9.1" memoizee "^0.4.14" rxjs "^6.5.5" -"@polkadot/rpc-provider@1.11.1": - version "1.11.1" - resolved "https://registry.npmjs.org/@polkadot/rpc-provider/-/rpc-provider-1.11.1.tgz#cdca0534750e5fac1fbbba30f5644d2e71f635d8" - integrity sha512-MEkmPhzb59PL+Mpj5JAu+NmQ9MxdU/vpq33qb1k53DoLYjUrq8z0+pDQIa/0XdBo3rl5NuNfPZkugcXvNcW2Vg== - dependencies: - "@babel/runtime" "^7.9.2" - "@polkadot/metadata" "1.11.1" - "@polkadot/types" "1.11.1" - "@polkadot/util" "^2.8.1" - "@polkadot/util-crypto" "^2.8.1" +"@polkadot/rpc-provider@1.13.1": + version "1.13.1" + resolved "https://registry.yarnpkg.com/@polkadot/rpc-provider/-/rpc-provider-1.13.1.tgz#ce4e9ccf76a72b5858d80d9309d6d67c8dfd91bf" + integrity sha512-thr8sa/4MSx36+VYrQUtRSHgeyND1sz/GyQyPYj57KHrzG0AkXs/akM2p4ohdUKs7SCcBVCXuGq5rNbO9hjgQQ== + dependencies: + "@babel/runtime" "^7.9.6" + "@polkadot/metadata" "1.13.1" + "@polkadot/types" "1.13.1" + "@polkadot/util" "^2.9.1" + "@polkadot/util-crypto" "^2.9.1" bn.js "^5.1.1" eventemitter3 "^4.0.0" isomorphic-fetch "^2.2.1" websocket "^1.0.31" -"@polkadot/types-known@1.11.1": - version "1.11.1" - resolved "https://registry.npmjs.org/@polkadot/types-known/-/types-known-1.11.1.tgz#51c38400fb9ec62092ecea82845cc1642d63e465" - integrity sha512-MTc1IqtwBmrUWcEWBY8gRZPNouervzrUbaDz83Xuyoj4cjHuSOk03PK0JyEIyw0gOFBQ/bHK0ZhVYjJFNV7jmQ== +"@polkadot/types-known@1.13.1": + version "1.13.1" + resolved "https://registry.yarnpkg.com/@polkadot/types-known/-/types-known-1.13.1.tgz#a26aa12dc67ed9748f840758b077b15dbc17d898" + integrity sha512-TIFV9Fzoostg9dgdIGy4zh4cpQJ0WeyyMeYstYUBMbLU4cfTLpHEXLJN2U7/wZ5SDFpQh1TOt/xzGWjCzmv1jg== dependencies: - "@babel/runtime" "^7.9.2" - "@polkadot/types" "1.11.1" - "@polkadot/util" "^2.8.1" + "@babel/runtime" "^7.9.6" + "@polkadot/types" "1.13.1" + "@polkadot/util" "^2.9.1" bn.js "^5.1.1" -"@polkadot/types@1.11.1": - version "1.11.1" - resolved "https://registry.npmjs.org/@polkadot/types/-/types-1.11.1.tgz#a8017411233ef49d8c928d33bd3a9bca5ddfadf0" - integrity sha512-cO/FZcNosSPp/zefV3gDPh4YFyygYD+1L9pC5Wnpd1pQ1cnGY/wIhvvkHTqKRxEG6yD+THEj+pJMg9DbMzxD+g== +"@polkadot/types@1.13.1": + version "1.13.1" + resolved "https://registry.yarnpkg.com/@polkadot/types/-/types-1.13.1.tgz#4583b7773644fe777d8fa0b837d8d562f8172ac0" + integrity sha512-cyANcVkDQmb3Ih5XggvLMWj7Gu9/VL/HYoebua50mecuYWa9eOn3iYGVmvvYG2rFcObikLwAwrUu8Dn1AZ5RoA== dependencies: - "@babel/runtime" "^7.9.2" - "@polkadot/metadata" "1.11.1" - "@polkadot/util" "^2.8.1" - "@polkadot/util-crypto" "^2.8.1" + "@babel/runtime" "^7.9.6" + "@polkadot/metadata" "1.13.1" + "@polkadot/util" "^2.9.1" + "@polkadot/util-crypto" "^2.9.1" "@types/bn.js" "^4.11.6" bn.js "^5.1.1" memoizee "^0.4.14" rxjs "^6.5.5" -"@polkadot/util-crypto@2.8.1", "@polkadot/util-crypto@^2.8.1": - version "2.8.1" - resolved "https://registry.npmjs.org/@polkadot/util-crypto/-/util-crypto-2.8.1.tgz#ae49d5efa79d7f234f7caf57d33bb91993097d72" - integrity sha512-vakpc/2PVGvQ3rEaCS3QnZlf74WA5U45MBNqK0Q6Yj4fGAYzTcKPKFGeoxxSenrVr/nKp2N1osXqcIOYsuCzHw== +"@polkadot/util-crypto@2.9.1", "@polkadot/util-crypto@^2.9.1": + version "2.9.1" + resolved "https://registry.yarnpkg.com/@polkadot/util-crypto/-/util-crypto-2.9.1.tgz#a09aa507a2a09a034acb2f764efff40f90a078b1" + integrity sha512-agPZyW1XJH0vpbwLh3khZ5txBMSjWtyflmpTJeYSVinrDqs4EFkcN3IOVqQEL+SEpLPXUHxNXYNQM7Ls7poZ6Q== dependencies: "@babel/runtime" "^7.9.2" - "@polkadot/util" "2.8.1" + "@polkadot/util" "2.9.1" "@polkadot/wasm-crypto" "^1.2.1" base-x "^3.0.8" bip39 "^3.0.2" @@ -361,10 +368,10 @@ tweetnacl "^1.0.3" xxhashjs "^0.2.2" -"@polkadot/util@2.8.1", "@polkadot/util@^2.8.1": - version "2.8.1" - resolved "https://registry.npmjs.org/@polkadot/util/-/util-2.8.1.tgz#bc625df27c34193627da9f0db37b757b297858fb" - integrity sha512-OUc/Jn41wd1G9D36J8mqjxAr3LBoxenuylQGXxQyf48/9fMVeUMb5i3wrWiVu2bO21OOXh85HhbUyLvX4V6nLw== +"@polkadot/util@2.9.1", "@polkadot/util@^2.9.1": + version "2.9.1" + resolved "https://registry.yarnpkg.com/@polkadot/util/-/util-2.9.1.tgz#841105eef98c9689cc369bc5eeb7a09a98ec14b2" + integrity sha512-7E/bl9B8hNPb3gnuH8IDAqpsdQ6Z+Y8RgPIJNY9l20FJ1W1ST0UpZgB0BCurrL9kTf4TTg4Lt8iFVwcq8MHRjg== dependencies: "@babel/runtime" "^7.9.2" "@types/bn.js" "^4.11.6" @@ -4700,10 +4707,10 @@ math-random@^1.0.1: resolved "https://registry.npmjs.org/math-random/-/math-random-1.0.4.tgz#5dd6943c938548267016d4e34f057583080c514c" integrity sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A== -matrix-js-sdk@^5.2.0: - version "5.2.0" - resolved "https://registry.npmjs.org/matrix-js-sdk/-/matrix-js-sdk-5.2.0.tgz#f213fd7671538a57c6d7e0665a2178ab23b950da" - integrity sha512-IscXYNx+k7wq5fuwsvKlXSI6Z1/nQ7TBI8AkStHJOAR8rz1DRoxICLFJtWzpOUSrgQuSaUYpOm4+6hS6IVlmtA== +matrix-js-sdk@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/matrix-js-sdk/-/matrix-js-sdk-6.0.0.tgz#2374a583878073871a0202dc237691ef15540575" + integrity sha512-NBHb5JIKetCVhOdfETyhUL9lYs2M+v8W/uczTzW6IX9XFOtNaha8X82waXlRt6RJpZRm5aJveODkybvo9VOLtg== dependencies: "@babel/runtime" "^7.8.3" another-json "^0.2.0" -- GitLab From 1baa84aeebed5aa403aaf2274688152e7cf0f282 Mon Sep 17 00:00:00 2001 From: chevdor Date: Tue, 12 May 2020 20:14:19 +0200 Subject: [PATCH 59/86] Fix linting issues, doc and new command set --- CONTRIBUTING.adoc | 37 +++++----- README.adoc | 52 +++----------- doc/config.adoc | 14 ++++ doc/docker.adoc | 13 ++++ doc/plugins.adoc | 16 +++++ packages/polkabot-api/src/plugin.interface.ts | 17 ++++- .../polkabot-plugin-blocthday/src/index.ts | 2 +- .../src/commandSet.ts | 18 +++++ .../src/index.ts | 27 +++++++- .../src/index.ts | 2 +- .../polkabot-plugin-operator/src/index.ts | 2 +- packages/polkabot/src/index.ts | 68 +++---------------- packages/polkabot/src/lib/plugin-loader.ts | 12 ---- packages/polkabot/src/lib/plugin-scanner.ts | 8 +-- packages/polkabot/src/polkabot.ts | 2 - packages/polkabot/src/types.ts | 2 +- 16 files changed, 142 insertions(+), 150 deletions(-) create mode 100644 doc/config.adoc create mode 100644 doc/docker.adoc create mode 100644 doc/plugins.adoc create mode 100644 packages/polkabot-plugin-notifier-matrix/src/commandSet.ts diff --git a/CONTRIBUTING.adoc b/CONTRIBUTING.adoc index d4cc6dc..c1ebaee 100644 --- a/CONTRIBUTING.adoc +++ b/CONTRIBUTING.adoc @@ -1,5 +1,4 @@ - -== Contributing += Contributing Contributions are more than welcome, especially in the form of Pull Requests. @@ -7,15 +6,15 @@ You may also report any issue you run into, questions, wishes and ideas at https === Development Guide -These are the steps that we suggest you follow that will allow you to contribute to Polkabot, as well as run your own bot and create your own custom plugins. +These are the steps that we suggest you follow that will allow you to contribute to {proj}, as well as run your own bot and create your own custom plugins. -==== Fork Polkabot and associated plugins +==== Fork {proj} and associated plugins Click the 'Fork' icon in GitLab to fork the repository -==== Clone each fork you made of Polkabot and associated plugins +==== Clone each fork you made of {proj} and associated plugins -The following assumes that you have forked repositories from https://gitlab.com/Polkabot into your own GitLab account 'yourusername' and that you are going to develop in the following directory on your local machine: ~/code/gitlab/yourusername/. Note that there may be more plugins available than those listed below. +The following assumes that you have forked repositories from https://gitlab.com/{proj} into your own GitLab account 'yourusername' and that you are going to develop in the following directory on your local machine: ~/code/gitlab/yourusername/. Note that there may be more plugins available than those listed below. ``` cd ~/code/gitlab/yourusername/ && git clone https://gitlab.com/yourusername/polkabot && \ @@ -34,8 +33,8 @@ Install Node Version Manager and use it to install and switch to a supported ver nvm use v10.15.3 ``` -Find out where globally installed NPM modules are installed since Polkabot will scan that directory -for any Polkabot plugins and load any that it finds there. The following will return the location of the +Find out where globally installed NPM modules are installed since {proj} will scan that directory +for any {proj} plugins and load any that it finds there. The following will return the location of the Node.js binary for the current version being used. ``` @@ -46,7 +45,7 @@ It may return something like `/home/yourusername/.nvm/versions/node/v10.15.3/bin Now we want to create a symlink from where the NPM modules are located that are associated with this version Node.js, which is in the following 'lib' subdirectory `/home/yourusername/.nvm/versions/node/v10.15.3/lib`. -==== Create symbolic links from each of the cloned Polkabot plugins to where the globally installed NPM modules are located for your current version of Node.js +==== Create symbolic links from each of the cloned {proj} plugins to where the globally installed NPM modules are located for your current version of Node.js The following is an example of how you might create the symlinks: @@ -58,11 +57,11 @@ ln -s ~/code/gitlab/yourusername/polkabot-plugin-stallwatcher/ ~/.nvm/versions/n ln -s ~/code/gitlab/yourusername/polkabot-plugin-reporter/ ~/.nvm/versions/node/v10.15.3/lib/node_modules ``` -==== Build each of the Polkabot plugins +==== Build each of the {proj} plugins -Build all the Polkabot plugins easily with a single command similar to that shown below. -A mirror reflection each of the built plugins will be available for Polkabot's plugin scanner to find them -earlier we created symbolic links between each of the cloned Polkabot plugin repositories +Build all the {proj} plugins easily with a single command similar to that shown below. +A mirror reflection each of the built plugins will be available for {proj}'s plugin scanner to find them +earlier we created symbolic links between each of the cloned {proj} plugin repositories and the globally installed NPM module directory your current Node.js version. ``` @@ -79,7 +78,7 @@ In Matrix Riot, create a new Room, then change the settings so you can find the In the settings for the Room, the Advanced section shows the Internal room ID (i.e. !AbCdEfGhIjKlMnPqRS:matrix.org). You will add this to your .env file in a subsequent step. -In order test Polkabot with your two users, you may wish to run one instance of the Matrix Riot Desktop application, and login to that with your existing Matrix Riot user id. Then in a subsequent step make this user id the Bot Master in your .env file. Then create a second user using Matrix Riot's Browser application, by going to the address of the room id (i.e. https://riot.im/app/#/room/!AbCdEfGhIjKlMnPqRS:matrix.org). Then in a subsequent step make this user id the Bot in your .env file. +In order test {proj} with your two users, you may wish to run one instance of the Matrix Riot Desktop application, and login to that with your existing Matrix Riot user id. Then in a subsequent step make this user id the Bot Master in your .env file. Then create a second user using Matrix Riot's Browser application, by going to the address of the room id (i.e. https://riot.im/app/#/room/!AbCdEfGhIjKlMnPqRS:matrix.org). Then in a subsequent step make this user id the Bot in your .env file. ==== Add a .env file with your credentials @@ -98,7 +97,7 @@ able to send direct messages to the Bot requesting them to perform certain actio announcement to the Matrix Riot room id that you specified) Replace `MATRIX_BOT_USER_ID` with your Bot's user id. -Note that Polkabot will only try to login your user if you are using a custom Matrix base url (i.e. not matrix.org). +Note that {proj} will only try to login your user if you are using a custom Matrix base url (i.e. not matrix.org). ``` POLKADOT_NODE_NAME=anything @@ -128,7 +127,7 @@ substrate --dev Reference: https://docs.substrate.dev/ -==== Run Polkabot +==== Run {proj} ``` cd ~/code/gitlab/yourusername/polkabot && \ @@ -137,16 +136,16 @@ yarn && yarn start ==== View the logs and identify any errors -If you encounter any errors then please create an issue in the respective GitLab repo of the 'Polkabot' username (i.e. click 'New Issue' at https://gitlab.com/Polkabot/polkabot/issues). +If you encounter any errors then please create an issue in the respective GitLab repo of the '{proj}' username (i.e. click 'New Issue' at https://gitlab.com/{proj}/polkabot/issues). ==== Try using the Bot -===== Polkabot Operator plugin +===== {proj} Operator plugin Write a direct message from your Bot Master to your Bot `!say hello`, and the Bot will announce the message `hello` in the room id that you specified in the .env file. Any user may write `!status` and the Bot will respond with the Polkadot / Substrate node network status. -===== Polkabot StallWatcher plugin +===== {proj} StallWatcher plugin Write a direct message from your Bot Master to your Bot `!sw duration `, and the Bot's configuration settings will change the threshold upon which it makes announcements in the room id that you specified in the .env file (from the default specified in that plugin repositories config.js file). diff --git a/README.adoc b/README.adoc index 0b87ed6..dfe1299 100644 --- a/README.adoc +++ b/README.adoc @@ -1,5 +1,7 @@ = Polkabot :toc: +:sectnums: +:sectanchors: :proj: PolkaBOT :exe: polkabot @@ -16,63 +18,25 @@ Polkabot is an extensible bot for http://polkadot.network[Polkadot], running on NOTE: {proj} aims as being *as silent as possible* so don't expect lots of fuzz and action! +include::doc/config.adoc[leveloffset=+1] + == Install & Run git clone https://gitlab.com/chevdor/polkabot.git cd polkabot nvm use yarn - -Before you can start {proj}, you will have to configure a few things. {proj} is using https://gitlab.com/chevdor/confmgr[confmgr]. - -You will need to create a file under packages/polkabot. This file should be named `.env` or `.env.foobar` if you start with `NODE_ENV=foobar`. As a test, you may start {proj} without any config and it will tell you what is missing. Many values have default, so you can get started with a very minimal configuration. - -Look for the sample file under `packages/polkabot/.env-sample`. - yarn start -For devs, the command is typically: +NOTE: For devs, the command is typically: NODE_ENV=dev LOG_LEVEL=silly yarn start -== Docker images - -To build the base and the custom: - - yarn build:docker - -This will build the {proj} main image. - -Then, test with : - ----- -docker run --rm -it -v ~/path/to/your/config.js:/data/config.js chevdor/polkabot npm start -- --config /data/config.js ----- - -== Configuration - -{proj} uses 2 levels of configuration: -- the main config in src/config.js -- the plugin specific config in `src/plugins/.../config.js` - - -include::CONTRIBUTING.adoc[] - - -=== Create plugins - -Once you picked a name for your plugin, create a folder in `src/plugin`. - -Your plugin can start with code similar to: - -[source, js, indent=0, linenums] ----- -include::doc/plugin.js[] ----- +include::doc/docker.adoc[leveloffset=+1] -== Plugins +include::CONTRIBUTING.adoc[leveloffset=+1] -You can all the plugins in https://gitlab.com/Polkabot +include::doc/plugins.adoc[leveloffset=+1] == Dev notes diff --git a/doc/config.adoc b/doc/config.adoc new file mode 100644 index 0000000..09bea8a --- /dev/null +++ b/doc/config.adoc @@ -0,0 +1,14 @@ += Configuration + +Before you can start {proj}, you will have to configure a few things. {proj} is using https://gitlab.com/chevdor/confmgr[confmgr]. + +You will need to create a file under packages/polkabot. This file should be named `.env` or `.env.foobar` if you start with `NODE_ENV=foobar`. As a test, you may start {proj} without any config and it will tell you what is missing. Many values have default, so you can get started with a very minimal configuration. + +Look for the sample file under `packages/polkabot/.env-sample`. + +== Configuration + +{proj} uses 2 levels of configuration: + +- the main config in src/config.js +- the plugin specific config in `src/plugins/.../config.js` diff --git a/doc/docker.adoc b/doc/docker.adoc new file mode 100644 index 0000000..b4ea00e --- /dev/null +++ b/doc/docker.adoc @@ -0,0 +1,13 @@ += Docker images + +To build the base and the custom: + + yarn build:docker + +This will build the {proj} main image. + +Then, test with : + +---- +docker run --rm -it -v ~/path/to/your/config.js:/data/config.js chevdor/polkabot npm start -- --config /data/config.js +---- \ No newline at end of file diff --git a/doc/plugins.adoc b/doc/plugins.adoc new file mode 100644 index 0000000..d7eedee --- /dev/null +++ b/doc/plugins.adoc @@ -0,0 +1,16 @@ += Plugins + +== Create plugins + +Once you picked a name for your plugin, create a folder in `src/plugin`. + +Your plugin can start with code similar to: + +[source, js, indent=0, linenums] +---- +include::doc/plugin.js[] +---- + +== Plugins list + +You can all the plugins in https://gitlab.com/Polkabot \ No newline at end of file diff --git a/packages/polkabot-api/src/plugin.interface.ts b/packages/polkabot-api/src/plugin.interface.ts index b2b0796..3469312 100644 --- a/packages/polkabot-api/src/plugin.interface.ts +++ b/packages/polkabot-api/src/plugin.interface.ts @@ -29,10 +29,21 @@ export type RoomAnswer = { html?: boolean; // If we don't pass HTML it is assumed that it is }; +/** + * Some error code + */ +export enum ErrorCode { + /** Some error occured */ + GenericError= -1, + Ok=0 +} + export type CommandHandlerOutput = { - code: number; - msg: string; - answers?: RoomAnswer[]; + code: ErrorCode; + /** This is a message sent to the room */ + msg: string; + /** Those are answers directed to the room where we got the request */ + answers?: RoomAnswer[]; }; export type RoomId = string; diff --git a/packages/polkabot-plugin-blocthday/src/index.ts b/packages/polkabot-plugin-blocthday/src/index.ts index 6cf44aa..f128c77 100644 --- a/packages/polkabot-plugin-blocthday/src/index.ts +++ b/packages/polkabot-plugin-blocthday/src/index.ts @@ -26,7 +26,7 @@ export default class Blocthday extends PolkabotWorker implements Controllable { msg: 'Implement me first!', answers: [{ room, - message: 'Oups! I am not implmented yet 🥴' + message: 'Oups! This is BlockDay, this command is not implmented yet 🥴' }] }; } diff --git a/packages/polkabot-plugin-notifier-matrix/src/commandSet.ts b/packages/polkabot-plugin-notifier-matrix/src/commandSet.ts new file mode 100644 index 0000000..aa23b68 --- /dev/null +++ b/packages/polkabot-plugin-notifier-matrix/src/commandSet.ts @@ -0,0 +1,18 @@ +import { PluginCommandSet } from '@polkabot/api/src/plugin.interface'; +import MatrixNotifier from '.'; + +export default function getCommandSet(ref: MatrixNotifier): PluginCommandSet { + return { + name: 'MatrixNotifier', + alias: 'matrix', + commands: [ + { + name: 'say', + description: 'Show say something in the channel', + argsRegexp: '', + adminOnly: true, + handler: ref.cmdSay + } + ] + }; +} diff --git a/packages/polkabot-plugin-notifier-matrix/src/index.ts b/packages/polkabot-plugin-notifier-matrix/src/index.ts index 731875d..0e9dfbf 100644 --- a/packages/polkabot-plugin-notifier-matrix/src/index.ts +++ b/packages/polkabot-plugin-notifier-matrix/src/index.ts @@ -2,23 +2,46 @@ import { NotifierMessage, NotifierSpecs, PluginModule, - PluginContext + PluginContext, + Room, + CommandHandlerOutput, + ErrorCode } from '../../polkabot-api/src/plugin.interface'; import { PolkabotNotifier } from '../../polkabot-api/src/PolkabotNotifier'; +import getCommandSet from './commandSet'; + // TODO: we want that to extends PolkabotPlugin export default class MatrixNotifier extends PolkabotNotifier { public channel = 'matrix'; public constructor(mod: PluginModule, context: PluginContext, config?) { super(mod, context, config); // console.log("++MatrixNotifier", this); + this.commandSet = getCommandSet(this); } public notify(message: NotifierMessage, specs: NotifierSpecs): void { super.notify(message, specs); const roomId = this.context.config.Get('MATRIX', 'ROOM_ID'); - console.log('Notifier/matrix:', message, specs); + console.log('🌐 Notifier/matrix:', message, specs); this.context.matrix.sendTextMessage(roomId, message.message).finally(null); } + + public cmdSay(_event, room: Room, messages: string[]): CommandHandlerOutput { + console.log('MatrixNotifier.cmdSay()'); + + const roomId = this.context.config.Get('MATRIX', 'ROOM_ID'); + + this.context.matrix.sendTextMessage(roomId, { message: messages.join(' ') }); + + return { + code: ErrorCode.Ok, + msg: messages.join(' '), + answers: [{ + room, + message: 'Done' + }] + }; + } } diff --git a/packages/polkabot-plugin-notifier-twitter/src/index.ts b/packages/polkabot-plugin-notifier-twitter/src/index.ts index 4a4f50d..b757b1b 100644 --- a/packages/polkabot-plugin-notifier-twitter/src/index.ts +++ b/packages/polkabot-plugin-notifier-twitter/src/index.ts @@ -16,6 +16,6 @@ export default class TwitterNotifier extends PolkabotNotifier { public notify(message: NotifierMessage, specs: NotifierSpecs): void { super.notify(message, specs); - console.log('Notifier/twitter: Placeholder'); + console.log('🐦 Notifier/twitter: Placeholder - This is where the tweet will be sent'); } } diff --git a/packages/polkabot-plugin-operator/src/index.ts b/packages/polkabot-plugin-operator/src/index.ts index e2f971a..4fd0500 100644 --- a/packages/polkabot-plugin-operator/src/index.ts +++ b/packages/polkabot-plugin-operator/src/index.ts @@ -161,7 +161,7 @@ export default class Operator extends PolkabotChatbot implements Controllable { if (this.matrixHelper.isBot(senderId)) return; // If there is no ! and the string contains help, we try to help - if (msg.indexOf('!') < 0 && msg.toLowerCase().indexOf('help') > 0) { + if (msg.indexOf('!') < 0 && msg.toLowerCase().indexOf('help') >= 0) { console.log('Mentioning help in natural language'); const output = this.cmdHelp(event, room); if (output.answers) { diff --git a/packages/polkabot/src/index.ts b/packages/polkabot/src/index.ts index 58323fc..be7e82d 100644 --- a/packages/polkabot/src/index.ts +++ b/packages/polkabot/src/index.ts @@ -1,6 +1,6 @@ import Olm from 'olm'; import { ApiPromise, WsProvider } from '@polkadot/api'; -import minimongo from 'minimongo'; +import minimongo, { MemoryDb } from 'minimongo'; import Datastore from 'nedb'; import pkg from '../package.json'; @@ -40,7 +40,7 @@ export interface NotifiersTable { } export default class Polkabot { // private args: any; - private db: any; + private db: minimongo.MemoryDb; private config: ConfigObject; private matrix: MatrixClient; private polkadot: ApiPromise; @@ -48,7 +48,7 @@ export default class Polkabot { private controllablePlugins: Controllable[] = []; private chatBots: PolkabotChatbot[] = []; - public constructor(..._args: any[]) { + public constructor(..._args: string[]) { // this.args = args this.db = new Datastore({ filename: 'polkabot.db' }); } @@ -110,12 +110,10 @@ export default class Polkabot { } private async loadPlugins(): Promise { - return new Promise(async (resolve, _reject) => { - // eslint-disable-line no-async-promise-executor - console.log('Polkabot - Loading plugins: ------------------------'); - const pluginScanner = new PluginScanner(pkg.name + '-plugin'); - let plugins = await pluginScanner.scan(); - + console.log('Polkabot - Loading plugins: ------------------------'); + const pluginScanner = new PluginScanner(pkg.name + '-plugin'); + let plugins = await pluginScanner.scan(); + return new Promise((resolve, _reject) => { console.log('Plugins found (incl. disabled ones):'); plugins.map(p => { console.log(`- ${p.name}`); @@ -183,31 +181,6 @@ export default class Polkabot { } private start(_syncState): void { - // Send message to the room notifying users of the bot's state - - // TODO we don't want to bother users, the following should be removed - // TODO: if the state is not PREPARED, we could log and error or tell the bot - // owner as private message. - // const messageBody = `Polkadot - sync state with Matrix client is: ${syncState}.` - // const sendEventArgs = { - // roomId: this.config.matrix.roomId, - // eventType: 'm.room.message', - // content: { - // 'body': messageBody, - // 'msgsype': 'm.text' - // }, - // txnId: '' - // } - - // this.matrix.sendEvent( - // sendEventArgs.roomId, - // sendEventArgs.eventType, - // sendEventArgs.content, - // sendEventArgs.txnId, (err, res) => { - // if (err) { console.log(err) }; - // } - // ) - this.loadPlugins() .then(_ => { return this.attachControllableToBots(); @@ -253,15 +226,15 @@ export default class Polkabot { const LocalDb = minimongo.MemoryDb; this.db = new LocalDb(); - this.db.addCollection('config'); + const ConfigCollection = 'config'; + this.db.addCollection(ConfigCollection); - this.db.config.upsert({ botMasterId: this.config.values.MATRIX.BOTMASTER_ID }, () => { - this.db.config.findOne({}, {}, res => { + this.db[ConfigCollection].upsert({ botMasterId: this.config.values.MATRIX.BOTMASTER_ID }, () => { + this.db[ConfigCollection].findOne({}, {}, res => { console.log('Polkabot - Matrix client bot manager id: ' + res.botMasterId); }); }); - // TODO - refactor using async/await. See https://github.com/matrix-org/matrix-js-sdk/issues/789 console.log('Polkabot - creating client'); this.matrix = sdk.createClient({ @@ -301,25 +274,6 @@ export default class Polkabot { } }); - // // Event emitted when member's membership changes - // this.matrix.on('RoomMember.membership', (event, member) => { - // if (member.membership === 'invite') { - // // TODO: Fix the following to get the latest activity in the room - // // const roomState = new sdk.RoomState(member.roomId) - // // const inactivityInDays = (new Date() - new Date(roomState._modified)) / 1000 / 60 / 60 - // // console.log(roomState.events) - - // // if (inactivityInDays < 7) { - // this.matrix.joinRoom(member.roomId).done(() => { - // console.log('Polkabot - Auto-joined %s', member.roomId) - // console.log(` - ${event.event.membership} from ${event.event.sender}`) - // // console.log(` - modified ${new Date(roomState._modified)})`) - // // console.log(` - last activity for ${(inactivityInDays / 24).toFixed(3)} days (${(inactivityInDays).toFixed(2)}h)`) - // }) - // // } - // } - // }) - this.matrix.startClient(this.config.values.MATRIX.MESSAGES_TO_SHOW); } diff --git a/packages/polkabot/src/lib/plugin-loader.ts b/packages/polkabot/src/lib/plugin-loader.ts index 469105a..3b036e8 100644 --- a/packages/polkabot/src/lib/plugin-loader.ts +++ b/packages/polkabot/src/lib/plugin-loader.ts @@ -10,12 +10,6 @@ import { PolkabotWorker } from '../../../polkabot-api/src/PolkabotWorker'; import { PolkabotChatbot } from '../../../polkabot-api/src/PolkabotChatbot'; export default class PluginLoader { - // private static getType(mod: PluginModule) { - // // TODO this is not a great option, the type should be part of the plugin and not guessed from the name - // if (mod.name.includes("notifier")) return PolkabotNotifier.name; - // return PolkabotWorker.name; - // } - public static async load(mod: PluginModule, context: PluginContext): Promise { console.log(`Loading ${mod.name} from ${mod.path}`); return new Promise((resolve, _reject) => { @@ -23,14 +17,8 @@ export default class PluginLoader { if (err) console.log('ERR:', err); const myModule = (await import(pluginPath)).default; - // console.log("Module", myModule); let plugin; - - // TODO here we should load the ENV/config of a plugin - // let test = new myModule(mod, context) - const parentClass = Object.getPrototypeOf(myModule).name; - // console.log('+++',PolkabotNotifier.name); switch (parentClass) { case PolkabotNotifier.name: diff --git a/packages/polkabot/src/lib/plugin-scanner.ts b/packages/polkabot/src/lib/plugin-scanner.ts index 2fa8cc9..af193bb 100644 --- a/packages/polkabot/src/lib/plugin-scanner.ts +++ b/packages/polkabot/src/lib/plugin-scanner.ts @@ -61,13 +61,7 @@ export default class PluginScanner { const pattern = 'polkabot'; const modules = []; - - // TODO the following helps find the @polkabot/stuff - // but some more work need to be done as the name should be found as - // @polkabot/stuff and not just stuff - // searchPaths.map(p => { - // searchPaths.push(`${p}/@${pattern}`) - // }) + console.log(`PluginScanner scanning searchPaths for ${pattern} plugins: `, searchPaths); searchPaths.map(p => { diff --git a/packages/polkabot/src/polkabot.ts b/packages/polkabot/src/polkabot.ts index ca5a559..eb5a79a 100755 --- a/packages/polkabot/src/polkabot.ts +++ b/packages/polkabot/src/polkabot.ts @@ -1,8 +1,6 @@ #!/usr/bin/env node import Polkabot from './index'; -// TODO: swap index.ts and polkabot.ts - const argv = require('yargs') .usage('Usage: $0 [options]') .help('h') diff --git a/packages/polkabot/src/types.ts b/packages/polkabot/src/types.ts index 05c0c57..d8ad329 100644 --- a/packages/polkabot/src/types.ts +++ b/packages/polkabot/src/types.ts @@ -35,5 +35,5 @@ export interface MatrixClient { //on: (string, (event, room, _toStartOfTimeline) => void) => void; once: (event: string, handler: Function) => void; startClient(msgToSHow: number); - login: (pass: string, options: any) => Promise; + login: (pass: string, options: Record) => Promise; } -- GitLab From dec2fbadc19c912fb6a4d46f5a9ed18889596798 Mon Sep 17 00:00:00 2001 From: chevdor Date: Wed, 13 May 2020 18:20:31 +0200 Subject: [PATCH 60/86] Get logging under control --- .gitignore | 1 + package.json | 3 +- packages/polkabot-api/src/PolkabotChatbot.ts | 36 ++-- packages/polkabot-api/src/logger.ts | 57 +++++++ packages/polkabot-api/src/plugin.interface.ts | 35 ++-- .../polkabot-plugin-blockstats/src/index.ts | 20 ++- .../src/index.ts | 2 - .../src/index.ts | 1 - .../polkabot-plugin-operator/src/index.ts | 20 ++- packages/polkabot/package.json | 3 +- packages/polkabot/src/index.ts | 99 ++++++----- packages/polkabot/src/lib/plugin-loader.ts | 9 +- packages/polkabot/src/lib/plugin-scanner.ts | 67 ++++---- packages/polkabot/tsconfig.json | 2 +- yarn.lock | 158 +++++++++++++++++- 15 files changed, 375 insertions(+), 138 deletions(-) create mode 100644 packages/polkabot-api/src/logger.ts diff --git a/.gitignore b/.gitignore index bcb6d12..f60b715 100644 --- a/.gitignore +++ b/.gitignore @@ -11,3 +11,4 @@ package-lock.json yarn-error.log *.db polkabot.code-workspace +*.log diff --git a/package.json b/package.json index 29a0ba0..6acbcee 100644 --- a/package.json +++ b/package.json @@ -19,6 +19,7 @@ "@babel/plugin-transform-runtime": "^7.8.3" }, "dependencies": { - "@babel/runtime": "^7.8.7" + "@babel/runtime": "^7.8.7", + "@polkadot/api": "^1.13.1" } } diff --git a/packages/polkabot-api/src/PolkabotChatbot.ts b/packages/polkabot-api/src/PolkabotChatbot.ts index 0d67c78..6c0a7b9 100644 --- a/packages/polkabot-api/src/PolkabotChatbot.ts +++ b/packages/polkabot-api/src/PolkabotChatbot.ts @@ -1,23 +1,32 @@ -import { PolkabotPluginBase, ChatBot, Controllable, PluginModule, PluginContext, Type, PluginCommandSet, PluginCommand, RoomAnswer, BotCommand } from './plugin.interface'; +import { + PolkabotPluginBase, ChatBot, Controllable, PluginModule, + PluginContext, Type, PluginCommandSet, PluginCommand, RoomAnswer, BotCommand +} from './plugin.interface'; +import LoggerSingleton from './logger'; + +const Logger = LoggerSingleton.getInstance() export abstract class PolkabotChatbot extends PolkabotPluginBase implements ChatBot { controllables: Controllable[] = []; + constructor(mod: PluginModule, context: PluginContext, config?) { super(Type.Chatbot, mod, context, config); } public registerControllables(controllables: Controllable[]): void { - console.log('Registering controllables: '); - // console.log(`controllables: ${JSON.stringify(controllables, null, 2)}`); + Logger.info('Registering controllables: '); + controllables.map((ctrl: PolkabotPluginBase) => { - console.log(` >> ${ctrl.commandSet.name} (!${ctrl.commandSet.alias})`); + Logger.info(` >> ${ctrl.commandSet.name} (!${ctrl.commandSet.alias})`); const commandObject: PluginCommandSet = (ctrl as Controllable).commandSet; const commands: PluginCommand[] = commandObject.commands; - console.log(commands.map(c => c.name)); + Logger.info(commands.map(c => c.name)); }); this.controllables = controllables; } + public abstract start(); - // TODO add stop() + public abstract stop(); + /** * Check that the room id where the sender of the message * sent the message from is the same as the room id where @@ -26,20 +35,20 @@ export abstract class PolkabotChatbot extends PolkabotPluginBase implements Chat protected isPrivate(senderRoomId, roomIdWithBot): boolean { return senderRoomId === roomIdWithBot; } - // public answer(roomId: RoomId, msg: Message) { + public answer(data: RoomAnswer): void { - // console.log("RoomAnswer", data); const html = data.html || true; - console.log(`Sending HTML: ${html ? 'TRUE' : 'FALSE'}`); + Logger.info(`Sending HTML: ${html ? 'TRUE' : 'FALSE'}`); if (!html) { - // Pure text + // Simple text this.context.matrix.sendTextMessage(data.room.roomId, data.message); } else { // Html - this.context.matrix.sendHtmlMessage(data.room.roomId, data.message, data.message); // TODO: here we cheat sending HTML 2x times... we should have a text version + this.context.matrix.sendHtmlMessage(data.room.roomId, data.message, data.message); } } + /** * Get a string from the chat and extract a BotCommand or none * See https://regex101.com/r/1EDFsV/1/tests @@ -49,17 +58,16 @@ export abstract class PolkabotChatbot extends PolkabotPluginBase implements Chat const capture = str.match(/^!(?\w+)(\s+(?\w+))(\s+(?.*))?$/i) || []; if (capture.length > 0 && capture.groups.module && capture.groups.command) { const { module, command, args } = capture.groups; - const argList: string[] = args === undefined ? null : args.split(' ').map(i => i.replace(' ', '')); // TODO a smarter regexp would do that + const argList: string[] = args === undefined ? null : args.split(' ').map(i => i.replace(' ', '')); const obj: BotCommand = { module, command, args: argList }; - // console.log("obj", obj); return obj; } else { - // console.log("FAILED PARSING COMMAND", str); // TODO: make this a silly logger message so it does not bother + // Logger.info("FAILED PARSING COMMAND", str); // TODO: make this a silly logger message so it does not bother return null; } } diff --git a/packages/polkabot-api/src/logger.ts b/packages/polkabot-api/src/logger.ts new file mode 100644 index 0000000..fe639b3 --- /dev/null +++ b/packages/polkabot-api/src/logger.ts @@ -0,0 +1,57 @@ +const { createLogger, format, transports } = require('winston'); +import { Logger } from 'winston'; +import winston from 'winston'; +export { winston }; + +// import winston from "winston/lib/winston/config"; +const { combine, timestamp, label, printf } = format; + +export default class LoggerSingleton { + private static instance: Logger; + + public static getInstance(source: string = 'Polkabot'): Logger { + if (!LoggerSingleton.instance) { + // const _colorizer = format.colorize(); + + const consoleFormat = printf(({ level, message, label, timestamp, meta }) => { + return `${timestamp} [${label}${meta ? '|' + meta : ''}] ${level}: ${message}`; + }); + + LoggerSingleton.instance = createLogger({ + level: process.env.LOG_LEVEL, + format: combine( + label({ label: source }), + format.splat(), + format.json(), + timestamp(), + ), + defaultMeta: { source: 'Polkabot' }, + transports: [ + // + // - Write to all logs with level `info` and below to `combined.log` + // - Write all logs error (and below) to `error.log`. + // + new transports.File({ filename: 'error.log', level: 'error' }), + new transports.File({ filename: 'combined.log' }) + ] + }); + + if (process.env.NODE_ENV !== 'production') { + LoggerSingleton.instance.add(new transports.Console({ + format: combine( + // format.colorize(), + format.align(), + timestamp(), + format.simple(), + format.colorize(), + label({ label: source }), + format.splat(), + consoleFormat, + ) + })); + } + } + + return LoggerSingleton.instance + } +} diff --git a/packages/polkabot-api/src/plugin.interface.ts b/packages/polkabot-api/src/plugin.interface.ts index 3469312..f826fce 100644 --- a/packages/polkabot-api/src/plugin.interface.ts +++ b/packages/polkabot-api/src/plugin.interface.ts @@ -5,7 +5,10 @@ import { PolkabotWorker } from './PolkabotWorker'; import { PolkabotChatbot } from './PolkabotChatbot'; import { PolkabotNotifier } from './PolkabotNotifier'; import { ConfigObject } from 'confmgr'; +import type Room from 'matrix-js-sdk'; +import type MatrixClient from 'matrix-js-sdk'; +export { Room, MatrixClient }; /** * A plugin module before the package has been loaded. * Before loading the patch we know only the path and the name @@ -34,38 +37,30 @@ export type RoomAnswer = { */ export enum ErrorCode { /** Some error occured */ - GenericError= -1, - Ok=0 + GenericError = -1, + Ok = 0 } export type CommandHandlerOutput = { code: ErrorCode; /** This is a message sent to the room */ - msg: string; + msg: string; /** Those are answers directed to the room where we got the request */ - answers?: RoomAnswer[]; + answers?: RoomAnswer[]; }; export type RoomId = string; export type Message = string; export type SenderId = string; -export type Room = { - name: string; - roomId: RoomId; - currentState: { - members: Member[]; - }; -}; - -export type Member = any; +// export type Member = any; export type PluginCommand = { name: string; // ie: start description: string; // what does this command do argsRegexp: string; // regexp to validate the expected args adminOnly: boolean; // is the command only for admins ? - handler: (...args: any[]) => CommandHandlerOutput; + handler: (...args: unknown[]) => CommandHandlerOutput; }; export type PluginCommandSet = { @@ -92,21 +87,15 @@ export interface ChatBot { } export class PolkabotPluginBase { - // TODO: fix the mess here public module: PluginModule; - // public config: ConfigObject; - public context: PluginContext; // TODO + public context: PluginContext; public package: packageJson; public type: Type; public commandSet?: PluginCommandSet; - // public description: string; // some blabla about the plugin, we dont have this field, we use the package.json/description - - constructor(type: Type, mod: PluginModule, context: PluginContext, config?) { - // console.log(`++ PolkabotPluginBase/${type} ${mod.name}: ${mod.path}`); + constructor(type: Type, mod: PluginModule, context: PluginContext, _config?) { this.type = type; this.context = context; - // this.config = config; this.module = mod; const packageFile = path.join(mod.path, 'package.json'); @@ -138,7 +127,7 @@ export interface PluginContext { config: ConfigObject; pkg: packageJson; db; - matrix; + matrix: MatrixClient; polkadot; polkabot; } diff --git a/packages/polkabot-plugin-blockstats/src/index.ts b/packages/polkabot-plugin-blockstats/src/index.ts index 38bf6ef..e719032 100644 --- a/packages/polkabot-plugin-blockstats/src/index.ts +++ b/packages/polkabot-plugin-blockstats/src/index.ts @@ -7,7 +7,8 @@ import { PluginModule, PluginContext } from '@polkabot/api/src/plugin.interface'; -import { PolkabotWorker} from '@polkabot/api/src/PolkabotWorker'; +import { PolkabotWorker } from '@polkabot/api/src/PolkabotWorker'; +import { HeaderExtended } from '@polkadot/api-derive/type' type Data = { tmsp: number; @@ -27,13 +28,16 @@ export default class BlocsStats extends PolkabotWorker { private data: Data[]; private previousData?: Data; private stats; + private unsubHandler = { + newHead: null + }; public constructor(mod: PluginModule, context: PluginContext, config?) { super(mod, context, config); - + this.params = { NB_BLOCKS: context.config.Get(BlocsStats.NAME, 'NB_BLOCKS'), /// Size of the rolling buffer - THRESHOLD: context.config.Get(BlocsStats.NAME, 'THRESHOLD'), /// We remain silent unless the average goes above this value + THRESHOLD: context.config.Get(BlocsStats.NAME, 'THRESHOLD'), /// We remain silent unless the average goes above this value LOG_NTH_BLOCK: context.config.Get(BlocsStats.NAME, 'LOG_NTH_BLOCK') }; @@ -49,13 +53,13 @@ export default class BlocsStats extends PolkabotWorker { } public stop(): void { - // TODO missing impl - throw new Error('Not Implemented'); + if (this.unsubHandler.newHead) + this.unsubHandler.newHead() } - + async watchChain(): Promise { // Reference: https://polkadot.js.org/api/examples/promise/02_listen_to_blocks/ - await this.context.polkadot.rpc.chain.subscribeNewHeads(header => { + this.unsubHandler.newHead = await this.context.polkadot.rpc.chain.subscribeNewHeads(header => { const bnBlockNumber: BN = header.number.unwrap().toBn(); if (bnBlockNumber.mod(new BN(this.params.LOG_NTH_BLOCK)).toString(10) === '0') { @@ -71,7 +75,7 @@ export default class BlocsStats extends PolkabotWorker { }); } - addBlock(header): void { + addBlock(header: HeaderExtended): void { const data: Data = { tmsp: new Date().getTime(), blockTime: this.previousData ? new Date().getTime() - this.previousData.tmsp : null, diff --git a/packages/polkabot-plugin-notifier-matrix/src/index.ts b/packages/polkabot-plugin-notifier-matrix/src/index.ts index 0e9dfbf..fee5282 100644 --- a/packages/polkabot-plugin-notifier-matrix/src/index.ts +++ b/packages/polkabot-plugin-notifier-matrix/src/index.ts @@ -8,10 +8,8 @@ import { ErrorCode } from '../../polkabot-api/src/plugin.interface'; import { PolkabotNotifier } from '../../polkabot-api/src/PolkabotNotifier'; - import getCommandSet from './commandSet'; -// TODO: we want that to extends PolkabotPlugin export default class MatrixNotifier extends PolkabotNotifier { public channel = 'matrix'; public constructor(mod: PluginModule, context: PluginContext, config?) { diff --git a/packages/polkabot-plugin-notifier-twitter/src/index.ts b/packages/polkabot-plugin-notifier-twitter/src/index.ts index b757b1b..984d013 100644 --- a/packages/polkabot-plugin-notifier-twitter/src/index.ts +++ b/packages/polkabot-plugin-notifier-twitter/src/index.ts @@ -6,7 +6,6 @@ import { } from '../../polkabot-api/src/plugin.interface'; import { PolkabotNotifier } from '../../polkabot-api/src/PolkabotNotifier'; -// TODO: we want that to extends PolkabotPlugin export default class TwitterNotifier extends PolkabotNotifier { public channel = 'twitter'; diff --git a/packages/polkabot-plugin-operator/src/index.ts b/packages/polkabot-plugin-operator/src/index.ts index 4fd0500..798476b 100644 --- a/packages/polkabot-plugin-operator/src/index.ts +++ b/packages/polkabot-plugin-operator/src/index.ts @@ -12,8 +12,6 @@ import { Room, SenderId, RoomId, - NotifierMessage, - NotifierSpecs, } from '@polkabot/api/src/plugin.interface'; import moment from 'moment'; import getCommandSet from './commandSet'; @@ -29,6 +27,7 @@ const capitalize: (string) => string = (s: string) => { }; export default class Operator extends PolkabotChatbot implements Controllable { + public commandSet: PluginCommandSet; package: packageJson; controllables: Controllable[]; @@ -40,31 +39,34 @@ export default class Operator extends PolkabotChatbot implements Controllable { * This function reads the config and populate the params object of * this plugin as it should. The config object should not be used after that. */ - private loadParams() : OperatorParams { + private loadParams(): OperatorParams { return { botMasterId: this.context.config.Get('MATRIX', 'BOTMASTER_ID'), botUserId: this.context.config.Get('MATRIX', 'BOTUSER_ID'), - } + }; } public constructor(mod: PluginModule, context: PluginContext, config?) { super(mod, context, config); this.commandSet = getCommandSet(this); - assert(this.context.config, "The config seems to be missing") + assert(this.context.config, 'The config seems to be missing'); this.params = this.loadParams(); - this.matrixHelper = new MatrixHelper(this.params) + this.matrixHelper = new MatrixHelper(this.params); } public start(): void { this.watchChat(); } - // TODO: move all handlers to a separate file - public cmdStatus(_event: unknown, room: Room, ..._args: any): CommandHandlerOutput { + public stop() { + // clean up here + } + + public cmdStatus(_event: unknown, room: Room, ..._args: string[]): CommandHandlerOutput { const uptimeSec: number = process.uptime(); const m = moment.duration(uptimeSec, 'seconds'); - // this.answer(room.roomId); + console.log(' XXXX room:', room); return { code: 0, diff --git a/packages/polkabot/package.json b/packages/polkabot/package.json index 5148e02..fe1d495 100644 --- a/packages/polkabot/package.json +++ b/packages/polkabot/package.json @@ -34,7 +34,6 @@ ], "dependencies": { "@babel/runtime": "^7.9.2", - "@polkadot/api": "^1.13.1", "bn.js": "5.1.1", "confmgr": "^1.0.5", "find-node-modules": "^2.0.0", @@ -42,10 +41,12 @@ "minimongo": "6.5.0", "nedb": "^1.8.0", "olm": "https://matrix.org/packages/npm/olm/olm-3.1.0.tgz", + "winston": "^3.2.1", "yargs": "15.3.1" }, "devDependencies": { "@types/dotenv": "^8.2.0", + "@types/matrix-js-sdk": "^5.1.0", "@types/mocha": "^7.0.2", "@typescript-eslint/eslint-plugin": "2.29.0", "@typescript-eslint/parser": "2.29.0", diff --git a/packages/polkabot/src/index.ts b/packages/polkabot/src/index.ts index be7e82d..9c63cb2 100644 --- a/packages/polkabot/src/index.ts +++ b/packages/polkabot/src/index.ts @@ -23,6 +23,7 @@ import { PolkabotNotifier } from '../../polkabot-api/src/PolkabotNotifier'; import { PolkabotChatbot } from '../../polkabot-api/src/PolkabotChatbot'; import { PolkabotWorker } from '../../polkabot-api/src/PolkabotWorker'; import { MatrixClient } from './types'; +import LoggerSingleton, { winston } from '../../polkabot-api/src/logger'; type PolkabotGlobal = { Olm: Olm; @@ -32,12 +33,25 @@ type PolkabotGlobal = { // comment out if you need to trouble shoot matrix issues // matrix.on('event', function (event) { -// console.log(event.getType()) +// Logger.silly(event.getType()) // }) +// Here we rewrite the Matrix SDK logger to redirect to our logger +import { logger as mxLogger } from 'matrix-js-sdk/lib/logger'; + +// rewrite matrix logger +mxLogger.info = (...msg) => Logger.log({ level: 'info', message: msg.join(' '), labels: { label: 'MatrixSDK' } }); +mxLogger.log = (...msg) => Logger.log({ level: 'info', message: msg.join(' '), labels: { label: 'MatrixSDK' } }); +mxLogger.warn = (...msg) => Logger.log({ level: 'warn', message: msg.join(' '), labels: { label: 'MatrixSDK' } }); +mxLogger.error = (...msg) => Logger.log({ level: 'error', message: msg.join(' '), labels: { label: 'MatrixSDK' } }); +mxLogger.trace = (...msg) => Logger.log({ level: 'debug', message: msg.join(' '), labels: { label: 'MatrixSDK' } }); + export interface NotifiersTable { [type: string]: PolkabotNotifier[]; } + +const Logger = LoggerSingleton.getInstance() + export default class Polkabot { // private args: any; private db: minimongo.MemoryDb; @@ -47,6 +61,7 @@ export default class Polkabot { private notifiersTable: NotifiersTable = {}; private controllablePlugins: Controllable[] = []; private chatBots: PolkabotChatbot[] = []; + private Logger: winston.Logger; public constructor(..._args: string[]) { // this.args = args @@ -76,7 +91,7 @@ export default class Polkabot { * delegate them the task */ public notify(message: NotifierMessage, specs: NotifierSpecs): void { - console.log('Notifier requested', message, specs); + Logger.info('Notifier requested', message, specs); Object.keys(this.notifiersTable) .filter(channel => specs.notifiers.includes(channel)) @@ -93,43 +108,44 @@ export default class Polkabot { const channel = notifier.channel; if (!this.notifiersTable[channel]) this.notifiersTable[channel] = []; this.notifiersTable[channel].push(notifier); - // console.log("notifierTable", this.notifiersTable); + Logger.silly("notifierTable", this.notifiersTable); } /** Register all the Controllable we find. They will be passed to the Operator. */ private registerControllable(controllable: Controllable): void { assert(controllable.commandSet, 'No commands defined'); - console.log('Registering controllable:', controllable.commandSet.name); + Logger.info('Registering controllable:', controllable.commandSet.name); this.controllablePlugins.push(controllable); - // console.log("Controllables", this.controllablePlugins); + // Logger.info("Controllables", this.controllablePlugins); } private registerChatbot(bot: PolkabotChatbot): void { - console.log('Registering Chat bot:', bot.module.name); + Logger.info('Registering Chat bot:', bot.module.name); this.chatBots.push(bot); } private async loadPlugins(): Promise { - console.log('Polkabot - Loading plugins: ------------------------'); + Logger.info('Loading plugins', { meta: { source: 'Polkabot' } }) + const pluginScanner = new PluginScanner(pkg.name + '-plugin'); let plugins = await pluginScanner.scan(); return new Promise((resolve, _reject) => { - console.log('Plugins found (incl. disabled ones):'); + Logger.info('Plugins found (incl. disabled ones):'); plugins.map(p => { - console.log(`- ${p.name}`); + Logger.info(`- ${p.name}`); }); // Here we check the ENV content to see if plugins should be disabled (= not loaded) - console.log('Filtering out disabled plugins...'); + Logger.debug('Filtering out disabled plugins...'); plugins = plugins.filter((p: PluginModule) => { const DISABLED_KEY = `POLKABOT_${p.shortName}_DISABLED`; const disabled: boolean = (process.env[DISABLED_KEY] || 'false') === 'true'; - console.log(disabled ? '❌' : '✅', p.shortName); + Logger.debug(`${disabled ? '❌' : '✅'} ${p.shortName}`); return !disabled; }); - console.log(`Found ${plugins.length} plugins`); + Logger.info(`Found ${plugins.length} plugins`); const loads = []; plugins.map(plugin => { @@ -146,36 +162,36 @@ export default class Polkabot { PluginLoader.load(plugin, context).then((p: PolkabotPlugin) => { if (this.isControllable(p)) { this.registerControllable(p); - } else console.log(`▶ NOT Controllable: ${p.package.name}`); + } else Logger.debug(`▶ NOT Controllable: ${p.package.name}`); if (this.isWorker(p)) { - console.log(`Starting worker plugin ${p.package.name} v${p.package.version}`); + Logger.debug(`Starting worker plugin ${p.package.name} v${p.package.version}`); p.start(); - } //else console.log(`▶ NOT a Worker: ${p.package.name}`); + } //else Logger.debug(`▶ NOT a Worker: ${p.package.name}`); if (this.isNotifier(p)) { - console.log(`Registering notifier plugin ${p.package.name} v${p.package.version}`); + Logger.debug(`Registering notifier plugin ${p.package.name} v${p.package.version}`); this.registerNotifier(p); - } //else console.log(`▶ NOT a Notifier: ${p.package.name}`); + } //else Logger.debug(`▶ NOT a Notifier: ${p.package.name}`); if (this.isChatBot(p)) { - console.log(`Registering ChatBot plugin ${p.package.name} v${p.package.version}`); + Logger.debug(`Registering ChatBot plugin ${p.package.name} v${p.package.version}`); this.registerChatbot(p); - } // else console.log(`▶ NOT a ChatBot: ${p.package.name}`); + } // else Logger.debug(`▶ NOT a ChatBot: ${p.package.name}`); }) ); }); Promise.all(loads).then(_ => { - console.log('Polkabot - Done loading plugins: ------------------------'); + Logger.info('Done loading plugins'); resolve(); }); }); } private attachControllableToBots(): void { - console.log('Passing controllables to following bots:'); + Logger.info('Passing controllables to following bots:'); this.chatBots.map((bot: PolkabotChatbot) => { - console.log(` > ${bot.module.name}`); + Logger.info(` > ${bot.module.name}`); bot.registerControllables(this.controllablePlugins); }); } @@ -186,30 +202,34 @@ export default class Polkabot { return this.attachControllableToBots(); }) .then(_ => { - console.log('Done loading plugins'); + Logger.debug('Done loading plugins'); }); } public async run(): Promise { - console.log(`${pkg.name} v${pkg.version}`); - console.log('==========================='); + Logger.info(`${pkg.name} v${pkg.version}`); // const configLocation = this.args.config // ? this.args.config // : path.join(__dirname, './config') - // console.log('Polkabot - Config location: ', configLocation) + // Logger.info('Polkabot - Config location: ', configLocation) // this.config = require(configLocation) - const config = ConfigManager.getInstance('configSpecs.yml').getConfig(); - config.Print({ compact: true }); - console.log(`Your config is${config.Validate() ? '' : ' NOT'} valid!`); + this.config = ConfigManager.getInstance('configSpecs.yml').getConfig(); + this.config.Print({ compact: true, logger: (msg) => Logger.debug(msg) }); + const isConfigValid = this.config.Validate() + if (!isConfigValid) { + Logger.error('Config is NOT valid') + this.config.Print({ compact: true, logger: (msg) => Logger.error(msg) }); + process.exit(1) + // this.Logger[ isConfigValid ? 'info': 'error'] (`Your config is${ isConfigValid? '' : ' NOT'} valid!`); + } - this.config = config; - // console.log(`Polkabot - config: ${JSON.stringify(this.config, null, 2)}`); - console.log(`Polkabot - Connecting to host: ${this.config.values.POLKADOT.URL}`); - console.log(`Polkabot - Running with bot user id: ${this.config.values.MATRIX.BOTUSER_ID}`); + // Logger.info(`Polkabot - config: ${JSON.stringify(this.config, null, 2)}`); + Logger.info(`Connecting to host: ${this.config.values.POLKADOT.URL}`); + Logger.silly(`Running with bot user id: ${this.config.values.MATRIX.BOTUSER_ID}`); const provider = new WsProvider(this.config.values.POLKADOT.URL); // Create the API and wait until ready @@ -222,7 +242,7 @@ export default class Polkabot { this.polkadot.rpc.system.version(), ]); - console.log(`Polkabot - You are connected to chain ${chain} using ${nodeName} v${nodeVersion}`); + Logger.info(`You are connected to chain ${chain} using ${nodeName} v${nodeVersion}`); const LocalDb = minimongo.MemoryDb; this.db = new LocalDb(); @@ -231,16 +251,17 @@ export default class Polkabot { this.db[ConfigCollection].upsert({ botMasterId: this.config.values.MATRIX.BOTMASTER_ID }, () => { this.db[ConfigCollection].findOne({}, {}, res => { - console.log('Polkabot - Matrix client bot manager id: ' + res.botMasterId); + Logger.info('Matrix client bot manager id: ' + res.botMasterId); }); }); - console.log('Polkabot - creating client'); + Logger.debug('Creating Matrix client'); this.matrix = sdk.createClient({ baseUrl: this.config.values.MATRIX.BASE_URL, accessToken: this.config.values.MATRIX.TOKEN, userId: this.config.values.MATRIX.BOTUSER_ID, + logger: (msg) => Logger.silly(msg, { labels: { source: 'MatrixSDK' } }) }); if (this.isCustomBaseUrl()) { @@ -254,18 +275,18 @@ export default class Polkabot { }); if (data) { - console.log('Polkabot - Logged in with credentials: ', data); + Logger.info('Polkabot - Logged in with credentials: ', data); } } this.matrix.once('sync', (state, _prevState, data) => { switch (state) { case 'PREPARED': - console.log(`Polkabot - Detected client sync state: ${state}`); + Logger.info(`Polkabot - Detected client sync state: ${state}`); this.start(state); break; default: - console.log( + Logger.info( 'Polkabot - Error. Unable to establish client sync state, state =', state, data diff --git a/packages/polkabot/src/lib/plugin-loader.ts b/packages/polkabot/src/lib/plugin-loader.ts index 3b036e8..b0060e5 100644 --- a/packages/polkabot/src/lib/plugin-loader.ts +++ b/packages/polkabot/src/lib/plugin-loader.ts @@ -8,13 +8,16 @@ import { import { PolkabotNotifier } from '../../../polkabot-api/src/PolkabotNotifier'; import { PolkabotWorker } from '../../../polkabot-api/src/PolkabotWorker'; import { PolkabotChatbot } from '../../../polkabot-api/src/PolkabotChatbot'; +import LoggerSingleton from '../../../polkabot-api/src/logger'; + +const Logger = LoggerSingleton.getInstance() export default class PluginLoader { public static async load(mod: PluginModule, context: PluginContext): Promise { - console.log(`Loading ${mod.name} from ${mod.path}`); + Logger.debug(` - Loading ${mod.name} from ${mod.path}`); return new Promise((resolve, _reject) => { fs.realpath(mod.path, async (err, pluginPath) => { - if (err) console.log('ERR:', err); + if (err) Logger.error('ERR:', err); const myModule = (await import(pluginPath)).default; let plugin; @@ -34,7 +37,7 @@ export default class PluginLoader { throw new Error('Plugin type not supported'); } - console.log( + Logger.info( ` - ${plugin.constructor.name}: ${plugin.package.name} version ${plugin.package.version} from ${plugin.package.author .name || plugin.package.author}` ); diff --git a/packages/polkabot/src/lib/plugin-scanner.ts b/packages/polkabot/src/lib/plugin-scanner.ts index af193bb..af4215b 100644 --- a/packages/polkabot/src/lib/plugin-scanner.ts +++ b/packages/polkabot/src/lib/plugin-scanner.ts @@ -2,6 +2,9 @@ import * as path from 'path'; import * as fs from 'fs'; import findNodeModules from 'find-node-modules'; import { PluginModule } from '../../../polkabot-api/src/plugin.interface'; +import LoggerSingleton from '../../../polkabot-api/src/logger'; + +const Logger = LoggerSingleton.getInstance() export default class PluginScanner { private name: string; @@ -10,38 +13,38 @@ export default class PluginScanner { this.name = name; } - public scanold(cb, done): void { - // console.log('dbg', path.dirname(process.argv0), __filename, __dirname) - const scriptLocation = path.join(path.dirname(process.argv[1]), '..'); - console.log('script loc', scriptLocation); - const searchPaths: string[] = findNodeModules({ cwd: scriptLocation, relative: false }); - // path.join(scriptLocation, "../lib/node_modules"), - // path.join(__dirname, '../../../node_modules') + // public scanold(cb, done): void { + // // console.log('dbg', path.dirname(process.argv0), __filename, __dirname) + // const scriptLocation = path.join(path.dirname(process.argv[1]), '..'); + // console.log('script loc', scriptLocation); + // const searchPaths: string[] = findNodeModules({ cwd: scriptLocation, relative: false }); + // // path.join(scriptLocation, "../lib/node_modules"), + // // path.join(__dirname, '../../../node_modules') - console.log('PluginScanner scanning searchPaths for Polkabot plugins: ', searchPaths); - const modules = []; + // console.log('PluginScanner scanning searchPaths for Polkabot plugins: ', searchPaths); + // const modules = []; - searchPaths.map(p => { - // const p = searchPaths[0] - fs.readdir(p, (err, items) => { - if (err) console.error(err); - done( - null, - items - .filter(i => i.indexOf(this.name) === 0) - .map(plugin => { - console.log('Plugin detected:', plugin); - const mod = { - name: plugin, - path: path.join(p, plugin) - }; - modules.push(mod); - cb(null, mod); - }) - ); - }); - }); - } + // searchPaths.map(p => { + // // const p = searchPaths[0] + // fs.readdir(p, (err, items) => { + // if (err) console.error(err); + // done( + // null, + // items + // .filter(i => i.indexOf(this.name) === 0) + // .map(plugin => { + // console.log('Plugin detected:', plugin); + // const mod = { + // name: plugin, + // path: path.join(p, plugin) + // }; + // modules.push(mod); + // cb(null, mod); + // }) + // ); + // }); + // }); + // } /** input: polkabot-plugin-foo-bar * output: FOO_BAR @@ -54,7 +57,7 @@ export default class PluginScanner { return new Promise(resolve => { // console.log('dbg', path.dirname(process.argv0), __filename, __dirname) const scriptLocation = path.join(path.dirname(process.argv[1]), '..'); - console.log('script loc', scriptLocation); + Logger.debug('script loc', scriptLocation); const searchPaths: string[] = findNodeModules({ cwd: scriptLocation, relative: false }); // path.join(scriptLocation, "../lib/node_modules"), // path.join(__dirname, '../../../node_modules') @@ -62,7 +65,7 @@ export default class PluginScanner { const pattern = 'polkabot'; const modules = []; - console.log(`PluginScanner scanning searchPaths for ${pattern} plugins: `, searchPaths); + Logger.debug(`PluginScanner scanning searchPaths for ${pattern} plugins: `, searchPaths); searchPaths.map(p => { fs.readdirSync(p) diff --git a/packages/polkabot/tsconfig.json b/packages/polkabot/tsconfig.json index 68f435b..133ee31 100644 --- a/packages/polkabot/tsconfig.json +++ b/packages/polkabot/tsconfig.json @@ -22,6 +22,6 @@ "suppressImplicitAnyIndexErrors": true, "outDir": "./build" }, - "include": ["./bin/**/*", "./src/**/*", "./test/**/*", "./package.json"], + "include": ["./bin/**/*", "./src/**/*", "./test/**/*", "./package.json", "../polkabot-api/src/logger.ts"], "compileOnSave": true } diff --git a/yarn.lock b/yarn.lock index 1da0c57..d5f40d8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -538,6 +538,11 @@ resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.4.tgz#38fd73ddfd9b55abb1e1b2ed578cb55bd7b7d339" integrity sha512-8+KAKzEvSUdeo+kmqnKrqgeE+LcA0tjYWFY7RPProVYwnqDjukzO+3b6dLD56rYX5TdWejnEOLJYOIeh4CXKuA== +"@types/matrix-js-sdk@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@types/matrix-js-sdk/-/matrix-js-sdk-5.1.0.tgz#a732afd9b457e4a97c3fd550603bdd3395c47263" + integrity sha512-u3zWul7ENUnWko8GsTnM20HKO1tDhyRiVsQha8aOSOxd3DbNAcXceIKw3XaMLqCRaH60L6yZVrJai9K2b6iIwg== + "@types/mocha@^5.2.7": version "5.2.7" resolved "https://registry.npmjs.org/@types/mocha/-/mocha-5.2.7.tgz#315d570ccb56c53452ff8638738df60726d5b6ea" @@ -857,6 +862,13 @@ async@^1.4.2: resolved "https://registry.npmjs.org/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo= +async@^2.6.1: + 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.npmjs.org/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" @@ -1943,7 +1955,7 @@ collection-visit@^1.0.0: map-visit "^1.0.0" object-visit "^1.0.0" -color-convert@^1.9.0: +color-convert@^1.9.0, color-convert@^1.9.1: version "1.9.3" resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== @@ -1962,11 +1974,45 @@ color-name@1.1.3: resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= -color-name@~1.1.4: +color-name@^1.0.0, color-name@~1.1.4: version "1.1.4" resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== +color-string@^1.5.2: + version "1.5.3" + resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.5.3.tgz#c9bbc5f01b58b5492f3d6857459cb6590ce204cc" + integrity sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw== + dependencies: + color-name "^1.0.0" + simple-swizzle "^0.2.2" + +color@3.0.x: + version "3.0.0" + resolved "https://registry.yarnpkg.com/color/-/color-3.0.0.tgz#d920b4328d534a3ac8295d68f7bd4ba6c427be9a" + integrity sha512-jCpd5+s0s0t7p3pHQKpnJ0TpQKKdleP71LWcA0aqiljpiuAkOSUFN/dyH8ZwF0hRmFlrIuRhufds1QyEP9EB+w== + dependencies: + color-convert "^1.9.1" + color-string "^1.5.2" + +colornames@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/colornames/-/colornames-1.1.1.tgz#f8889030685c7c4ff9e2a559f5077eb76a816f96" + integrity sha1-+IiQMGhcfE/54qVZ9Qd+t2qBb5Y= + +colors@^1.2.1: + version "1.4.0" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" + integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== + +colorspace@1.1.x: + version "1.1.2" + resolved "https://registry.yarnpkg.com/colorspace/-/colorspace-1.1.2.tgz#e0128950d082b86a2168580796a0aa5d6c68d8c5" + integrity sha512-vt+OoIP2d76xLhjwbBaucYlNSpPsrJWPlBTtwCpQKIu6/CSMutyzX93O/Do0qzpH3YoHEes8YEFXyZ797rEhzQ== + dependencies: + color "3.0.x" + text-hex "1.0.x" + combined-stream@^1.0.6, combined-stream@~1.0.6: version "1.0.8" resolved "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" @@ -2297,6 +2343,15 @@ detect-indent@^4.0.0: dependencies: repeating "^2.0.0" +diagnostics@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/diagnostics/-/diagnostics-1.1.1.tgz#cab6ac33df70c9d9a727490ae43ac995a769b22a" + integrity sha512-8wn1PmdunLJ9Tqbx+Fx/ZEuHfJf4NKSN2ZBj7SJC/OWRWha843+WsTjqMe1B5E3p28jqBlp+mJ2fPVxPyNgYKQ== + dependencies: + colorspace "1.1.x" + enabled "1.0.x" + kuler "1.0.x" + diff@3.5.0: version "3.5.0" resolved "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" @@ -2382,6 +2437,13 @@ emoji-regex@^8.0.0: resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== +enabled@1.0.x: + version "1.0.2" + resolved "https://registry.yarnpkg.com/enabled/-/enabled-1.0.2.tgz#965f6513d2c2d1c5f4652b64a2e3396467fc2f93" + integrity sha1-ll9lE9LC0cX0ZStkouM5ZGf8L5M= + dependencies: + env-variable "0.0.x" + encoding@^0.1.11: version "0.1.12" resolved "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb" @@ -2401,6 +2463,11 @@ entities@~2.0.0: resolved "https://registry.npmjs.org/entities/-/entities-2.0.0.tgz#68d6084cab1b079767540d80e56a39b423e4abf4" integrity sha512-D9f7V0JSRwIxlRI2mjMqufDrRDnx8p+eEOz7aUM9SuvF8gsBzra0/6tbjl1m8eQHrZlYj6PxqE00hZ1SAIKPLw== +env-variable@0.0.x: + version "0.0.6" + resolved "https://registry.yarnpkg.com/env-variable/-/env-variable-0.0.6.tgz#74ab20b3786c545b62b4a4813ab8cf22726c9808" + integrity sha512-bHz59NlBbtS0NhftmR8+ExBEekE7br0e01jw+kk0NDro7TtZzBYZ5ScGPs3OmwnpyfHTHOtr1Y6uedCdrIldtg== + error-ex@^1.2.0, error-ex@^1.3.1: version "1.3.2" resolved "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" @@ -3149,6 +3216,16 @@ fast-levenshtein@~2.0.6: resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= +fast-safe-stringify@^2.0.4: + version "2.0.7" + resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz#124aa885899261f68aedb42a7c080de9da608743" + integrity sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA== + +fecha@^2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/fecha/-/fecha-2.3.3.tgz#948e74157df1a32fd1b12c3a3c3cdcb6ec9d96cd" + integrity sha512-lUGBnIamTAwk4znq5BcqsDaxSmZ9nDVJaij6NvRt/Tg4R69gERA+otPKbS86ROw9nxVMw2/mp1fnaiWqbs6Sdg== + figures@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" @@ -3940,6 +4017,11 @@ is-arrayish@^0.2.1: resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= +is-arrayish@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" + integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== + is-binary-path@^1.0.0: version "1.0.1" resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" @@ -4493,6 +4575,13 @@ klaw@^3.0.0: dependencies: graceful-fs "^4.1.9" +kuler@1.0.x: + version "1.0.1" + resolved "https://registry.yarnpkg.com/kuler/-/kuler-1.0.1.tgz#ef7c784f36c9fb6e16dd3150d152677b2b0228a6" + integrity sha512-J9nVUucG1p/skKul6DU3PUZrhs0LPulNaeUOox0IyXDi8S4CztTHs1gQphhuZmzXG7VOQSf6NJfKuzteQLv9gQ== + dependencies: + colornames "^1.1.1" + latest-version@^5.0.0: version "5.1.0" resolved "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz#119dfe908fe38d15dfa43ecd13fa12ec8832face" @@ -4612,6 +4701,17 @@ log-symbols@3.0.0: dependencies: chalk "^2.4.2" +logform@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/logform/-/logform-2.1.2.tgz#957155ebeb67a13164069825ce67ddb5bb2dd360" + integrity sha512-+lZh4OpERDBLqjiwDLpAWNQu6KMjnlXH2ByZwCuSqVPJletw0kTWJf5CgSNAUKn1KUkv3m2cUz/LK8zyEy7wzQ== + dependencies: + colors "^1.2.1" + fast-safe-stringify "^2.0.4" + fecha "^2.3.3" + ms "^2.1.1" + triple-beam "^1.3.0" + loglevel@^1.6.4: version "1.6.7" resolved "https://registry.npmjs.org/loglevel/-/loglevel-1.6.7.tgz#b3e034233188c68b889f5b862415306f565e2c56" @@ -5274,6 +5374,11 @@ once@^1.3.0, once@^1.3.1, once@^1.4.0: dependencies: wrappy "1" +one-time@0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/one-time/-/one-time-0.0.4.tgz#f8cdf77884826fe4dff93e3a9cc37b1e4480742e" + integrity sha1-+M33eISCb+Tf+T46nMN7HkSAdC4= + onetime@^2.0.0: version "2.0.1" resolved "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" @@ -5741,7 +5846,7 @@ read-pkg@^2.0.0: normalize-package-data "^2.3.2" path-type "^2.0.0" -readable-stream@^2.0.2, readable-stream@^2.3.5: +readable-stream@^2.0.2, readable-stream@^2.3.5, readable-stream@^2.3.6: version "2.3.7" resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== @@ -5754,7 +5859,7 @@ readable-stream@^2.0.2, readable-stream@^2.3.5: string_decoder "~1.1.1" util-deprecate "~1.0.1" -readable-stream@^3.0.2: +readable-stream@^3.0.2, readable-stream@^3.1.1: version "3.6.0" resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== @@ -6195,6 +6300,13 @@ signal-exit@^3.0.0, signal-exit@^3.0.2: resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= +simple-swizzle@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" + integrity sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo= + dependencies: + is-arrayish "^0.3.1" + slash@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" @@ -6378,6 +6490,11 @@ sshpk@^1.7.0: safer-buffer "^2.0.2" tweetnacl "~0.14.0" +stack-trace@0.0.x: + version "0.0.10" + resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0" + integrity sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA= + standard-engine@^12.0.0: version "12.0.0" resolved "https://registry.npmjs.org/standard-engine/-/standard-engine-12.0.0.tgz#1643dceba96ca9c04c535a1fb28d79bfb21b3572" @@ -6695,6 +6812,11 @@ test-exclude@^6.0.0: glob "^7.1.4" minimatch "^3.0.4" +text-hex@1.0.x: + version "1.0.0" + resolved "https://registry.yarnpkg.com/text-hex/-/text-hex-1.0.0.tgz#69dc9c1b17446ee79a92bf5b884bb4b9127506f5" + integrity sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg== + text-table@^0.2.0: version "0.2.0" resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" @@ -6797,6 +6919,11 @@ trim-right@^1.0.1: resolved "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" integrity sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM= +triple-beam@^1.2.0, triple-beam@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/triple-beam/-/triple-beam-1.3.0.tgz#a595214c7298db8339eeeee083e4d10bd8cb8dd9" + integrity sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw== + ts-node@8.6.2: version "8.6.2" resolved "https://registry.npmjs.org/ts-node/-/ts-node-8.6.2.tgz#7419a01391a818fbafa6f826a33c1a13e9464e35" @@ -7125,6 +7252,29 @@ widest-line@^3.1.0: dependencies: string-width "^4.0.0" +winston-transport@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/winston-transport/-/winston-transport-4.3.0.tgz#df68c0c202482c448d9b47313c07304c2d7c2c66" + integrity sha512-B2wPuwUi3vhzn/51Uukcao4dIduEiPOcOt9HJ3QeaXgkJ5Z7UwpBzxS4ZGNHtrxrUvTwemsQiSys0ihOf8Mp1A== + dependencies: + readable-stream "^2.3.6" + triple-beam "^1.2.0" + +winston@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/winston/-/winston-3.2.1.tgz#63061377976c73584028be2490a1846055f77f07" + integrity sha512-zU6vgnS9dAWCEKg/QYigd6cgMVVNwyTzKs81XZtTFuRwJOcDdBg7AU0mXVyNbs7O5RH2zdv+BdNZUlx7mXPuOw== + dependencies: + async "^2.6.1" + diagnostics "^1.1.1" + is-stream "^1.1.0" + logform "^2.1.1" + one-time "0.0.4" + readable-stream "^3.1.1" + stack-trace "0.0.x" + triple-beam "^1.3.0" + winston-transport "^4.3.0" + word-wrap@^1.2.3, word-wrap@~1.2.3: version "1.2.3" resolved "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" -- GitLab From aafd55a6e4fcbb280f1a3ecd7b1031f07bc9581e Mon Sep 17 00:00:00 2001 From: chevdor Date: Wed, 13 May 2020 19:52:20 +0200 Subject: [PATCH 61/86] Fix linting issues and pass logger to plugins --- packages/polkabot-api/src/PolkabotChatbot.ts | 10 +-- packages/polkabot-api/src/PolkabotWorker.ts | 2 +- packages/polkabot-api/src/logger.ts | 90 +++++++++---------- packages/polkabot-api/src/plugin.interface.ts | 5 +- .../polkabot-plugin-blockstats/src/index.ts | 6 +- .../polkabot-plugin-blocthday/src/index.ts | 25 +++--- .../src/index.ts | 6 +- .../src/index.ts | 2 +- .../polkabot-plugin-operator/src/index.ts | 42 +++++---- packages/polkabot/src/index.ts | 26 +++--- packages/polkabot/src/lib/plugin-loader.ts | 2 +- packages/polkabot/src/lib/plugin-scanner.ts | 2 +- 12 files changed, 109 insertions(+), 109 deletions(-) diff --git a/packages/polkabot-api/src/PolkabotChatbot.ts b/packages/polkabot-api/src/PolkabotChatbot.ts index 6c0a7b9..b93cbef 100644 --- a/packages/polkabot-api/src/PolkabotChatbot.ts +++ b/packages/polkabot-api/src/PolkabotChatbot.ts @@ -4,7 +4,7 @@ import { } from './plugin.interface'; import LoggerSingleton from './logger'; -const Logger = LoggerSingleton.getInstance() +const Logger = LoggerSingleton.getInstance(); export abstract class PolkabotChatbot extends PolkabotPluginBase implements ChatBot { controllables: Controllable[] = []; @@ -13,13 +13,13 @@ export abstract class PolkabotChatbot extends PolkabotPluginBase implements Chat super(Type.Chatbot, mod, context, config); } public registerControllables(controllables: Controllable[]): void { - Logger.info('Registering controllables: '); + Logger.debug('Registering controllables: '); controllables.map((ctrl: PolkabotPluginBase) => { - Logger.info(` >> ${ctrl.commandSet.name} (!${ctrl.commandSet.alias})`); const commandObject: PluginCommandSet = (ctrl as Controllable).commandSet; const commands: PluginCommand[] = commandObject.commands; - Logger.info(commands.map(c => c.name)); + Logger.debug(` ctrl: ${ctrl.commandSet.name} (!${ctrl.commandSet.alias}) ${commands.map(c => c.name)}`); + // Logger.info(commands.map(c => c.name)); }); this.controllables = controllables; } @@ -38,7 +38,7 @@ export abstract class PolkabotChatbot extends PolkabotPluginBase implements Chat public answer(data: RoomAnswer): void { const html = data.html || true; - Logger.info(`Sending HTML: ${html ? 'TRUE' : 'FALSE'}`); + Logger.debug(`Sending HTML: ${html ? 'TRUE' : 'FALSE'}`); if (!html) { // Simple text this.context.matrix.sendTextMessage(data.room.roomId, data.message); diff --git a/packages/polkabot-api/src/PolkabotWorker.ts b/packages/polkabot-api/src/PolkabotWorker.ts index 8e2889d..ab888b5 100644 --- a/packages/polkabot-api/src/PolkabotWorker.ts +++ b/packages/polkabot-api/src/PolkabotWorker.ts @@ -1,6 +1,6 @@ import { PolkabotPluginBase, PluginModule, PluginContext, Type } from './plugin.interface'; -export abstract class PolkabotWorker extends PolkabotPluginBase { +export abstract class PolkabotWorker extends PolkabotPluginBase { constructor(mod: PluginModule, context: PluginContext, config?) { super(Type.Worker, mod, context, config); } diff --git a/packages/polkabot-api/src/logger.ts b/packages/polkabot-api/src/logger.ts index fe639b3..bd0777a 100644 --- a/packages/polkabot-api/src/logger.ts +++ b/packages/polkabot-api/src/logger.ts @@ -1,57 +1,49 @@ -const { createLogger, format, transports } = require('winston'); -import { Logger } from 'winston'; +import { Logger, createLogger, format, transports } from 'winston'; import winston from 'winston'; export { winston }; +const { combine, label, printf } = format; -// import winston from "winston/lib/winston/config"; -const { combine, timestamp, label, printf } = format; +export default class LoggerFactory { + public static getInstance(source = 'POLKABOT'): Logger { + const consoleFormat = printf(({ level, message, label, _timestamp, meta }) => { + return `[${label}${meta ? '|' + meta : ''}]\t${level} ${message}`; + }); -export default class LoggerSingleton { - private static instance: Logger; + const productionFormat = printf(({ level, message, label, timestamp, meta }) => { + return `${timestamp} [${label}${meta ? '|' + meta : ''}]\t${level} ${message}`; + }); - public static getInstance(source: string = 'Polkabot'): Logger { - if (!LoggerSingleton.instance) { - // const _colorizer = format.colorize(); + const instance = createLogger({ + level: process.env.LOG_LEVEL, + format: combine( + label({ label: source }), + format.splat(), + // format.json(), + // timestamp(), + productionFormat, + ), + transports: [ + // - Write to all logs with level `info` and below to `combined.log` + // - Write all logs error (and below) to `error.log`. + new transports.File({ filename: 'error.log', level: 'error' }), + new transports.File({ filename: 'combined.log' }) + ] + }); - const consoleFormat = printf(({ level, message, label, timestamp, meta }) => { - return `${timestamp} [${label}${meta ? '|' + meta : ''}] ${level}: ${message}`; - }); - - LoggerSingleton.instance = createLogger({ - level: process.env.LOG_LEVEL, - format: combine( - label({ label: source }), - format.splat(), - format.json(), - timestamp(), - ), - defaultMeta: { source: 'Polkabot' }, - transports: [ - // - // - Write to all logs with level `info` and below to `combined.log` - // - Write all logs error (and below) to `error.log`. - // - new transports.File({ filename: 'error.log', level: 'error' }), - new transports.File({ filename: 'combined.log' }) - ] - }); - - if (process.env.NODE_ENV !== 'production') { - LoggerSingleton.instance.add(new transports.Console({ - format: combine( - // format.colorize(), - format.align(), - timestamp(), - format.simple(), - format.colorize(), - label({ label: source }), - format.splat(), - consoleFormat, - ) - })); - } - } - - return LoggerSingleton.instance + if (process.env.NODE_ENV !== 'production') { + instance.add(new transports.Console({ + format: combine( + format.align(), + format.simple(), + format.colorize(), + label({ label: source }), + format.splat(), + consoleFormat, + ) + })); } + // } + + return instance; + } } diff --git a/packages/polkabot-api/src/plugin.interface.ts b/packages/polkabot-api/src/plugin.interface.ts index f826fce..de9d94b 100644 --- a/packages/polkabot-api/src/plugin.interface.ts +++ b/packages/polkabot-api/src/plugin.interface.ts @@ -7,8 +7,10 @@ import { PolkabotNotifier } from './PolkabotNotifier'; import { ConfigObject } from 'confmgr'; import type Room from 'matrix-js-sdk'; import type MatrixClient from 'matrix-js-sdk'; +import type Event from 'matrix-js-sdk'; +import { winston } from './logger'; -export { Room, MatrixClient }; +export { Room, MatrixClient, Event }; /** * A plugin module before the package has been loaded. * Before loading the patch we know only the path and the name @@ -128,6 +130,7 @@ export interface PluginContext { pkg: packageJson; db; matrix: MatrixClient; + logger: winston.Logger; polkadot; polkabot; } diff --git a/packages/polkabot-plugin-blockstats/src/index.ts b/packages/polkabot-plugin-blockstats/src/index.ts index e719032..92e7ad2 100644 --- a/packages/polkabot-plugin-blockstats/src/index.ts +++ b/packages/polkabot-plugin-blockstats/src/index.ts @@ -8,12 +8,12 @@ import { PluginContext } from '@polkabot/api/src/plugin.interface'; import { PolkabotWorker } from '@polkabot/api/src/PolkabotWorker'; -import { HeaderExtended } from '@polkadot/api-derive/type' +import { HeaderExtended } from '@polkadot/api-derive/type'; type Data = { tmsp: number; blockTime: number; - header: any; + header: HeaderExtended; }; export default class BlocsStats extends PolkabotWorker { @@ -54,7 +54,7 @@ export default class BlocsStats extends PolkabotWorker { public stop(): void { if (this.unsubHandler.newHead) - this.unsubHandler.newHead() + this.unsubHandler.newHead(); } async watchChain(): Promise { diff --git a/packages/polkabot-plugin-blocthday/src/index.ts b/packages/polkabot-plugin-blocthday/src/index.ts index f128c77..58c9b82 100644 --- a/packages/polkabot-plugin-blocthday/src/index.ts +++ b/packages/polkabot-plugin-blocthday/src/index.ts @@ -10,17 +10,19 @@ import { Room } from '@polkabot/api/src/plugin.interface'; import { PolkabotWorker } from '@polkabot/api/src/PolkabotWorker'; +import { HeaderExtended } from '@polkadot/api-derive/type'; import getCommandSet from './commandSet'; export default class Blocthday extends PolkabotWorker implements Controllable { private NB_BLOCKS: number; public commandSet: PluginCommandSet; + public unsub: Function; public cmdStatus(_event, room: Room): CommandHandlerOutput { - console.log('Blocthday.cmdStatus()'); - // console.log("Called cmdStatus with:", args); - + this.context.logger.debug('Blocthday.cmdStatus()'); + // this.context.logger.info("Called cmdStatus with:", args); + return { code: -1, msg: 'Implement me first!', @@ -38,28 +40,31 @@ export default class Blocthday extends PolkabotWorker implements Controllable { } public start(): void { - console.log('Blocthday - Starting with NB_BLOCKS:', this.NB_BLOCKS); + this.context.logger.info('Blocthday - Starting with NB_BLOCKS:', this.NB_BLOCKS); this.watchChain().catch(error => { console.error('Blocthday - Error subscribing to chain head: ', error); }); } public stop(): void { - console.log('Blocthday - STOPPING'); + this.context.logger.debug('Blocthday - STOPPING'); - // TODO: unsubscribe to everything here + if (this.unsub) + this.unsub(); } + /** + * Start watching the chain. + * See https://polkadot.js.org/api/examples/promise/02_listen_to_blocks/ + */ async watchChain(): Promise { - // Reference: https://polkadot.js.org/api/examples/promise/02_listen_to_blocks/ - await this.context.polkadot.rpc.chain.subscribeNewHeads(header => { - //console.log(`Blocthday - Chain is at block: #${header.number}`); + this.unsub = await this.context.polkadot.rpc.chain.subscribeNewHeads((header: HeaderExtended) => { const bnBlockNumber: BN = header.number.unwrap().toBn(); const bnNumberOfBlocks: BN = new BN(this.NB_BLOCKS); if (bnBlockNumber.mod(bnNumberOfBlocks).toString(10) === '0') { const notifierMessage: NotifierMessage = { - message: `Happy ${this.NB_BLOCKS}-BlocthDay!!! Polkadot is now at #${header.number}` + message: `Happy ${this.NB_BLOCKS}-BlocthDay!!! Chain is now at #${header.number}` }; const notifierSpecs: NotifierSpecs = { diff --git a/packages/polkabot-plugin-notifier-matrix/src/index.ts b/packages/polkabot-plugin-notifier-matrix/src/index.ts index fee5282..5689383 100644 --- a/packages/polkabot-plugin-notifier-matrix/src/index.ts +++ b/packages/polkabot-plugin-notifier-matrix/src/index.ts @@ -14,20 +14,20 @@ export default class MatrixNotifier extends PolkabotNotifier { public channel = 'matrix'; public constructor(mod: PluginModule, context: PluginContext, config?) { super(mod, context, config); - // console.log("++MatrixNotifier", this); + // this.context.logger.info("++MatrixNotifier", this); this.commandSet = getCommandSet(this); } public notify(message: NotifierMessage, specs: NotifierSpecs): void { super.notify(message, specs); const roomId = this.context.config.Get('MATRIX', 'ROOM_ID'); - console.log('🌐 Notifier/matrix:', message, specs); + this.context.logger.info('🌐 Notifier/matrix:', message, specs); this.context.matrix.sendTextMessage(roomId, message.message).finally(null); } public cmdSay(_event, room: Room, messages: string[]): CommandHandlerOutput { - console.log('MatrixNotifier.cmdSay()'); + this.context.logger.debug('MatrixNotifier.cmdSay()'); const roomId = this.context.config.Get('MATRIX', 'ROOM_ID'); diff --git a/packages/polkabot-plugin-notifier-twitter/src/index.ts b/packages/polkabot-plugin-notifier-twitter/src/index.ts index 984d013..ec056d5 100644 --- a/packages/polkabot-plugin-notifier-twitter/src/index.ts +++ b/packages/polkabot-plugin-notifier-twitter/src/index.ts @@ -15,6 +15,6 @@ export default class TwitterNotifier extends PolkabotNotifier { public notify(message: NotifierMessage, specs: NotifierSpecs): void { super.notify(message, specs); - console.log('🐦 Notifier/twitter: Placeholder - This is where the tweet will be sent'); + this.context.logger.warn('🐦 Notifier/twitter: Placeholder - This is where the tweet will be sent'); } } diff --git a/packages/polkabot-plugin-operator/src/index.ts b/packages/polkabot-plugin-operator/src/index.ts index 798476b..0abeddd 100644 --- a/packages/polkabot-plugin-operator/src/index.ts +++ b/packages/polkabot-plugin-operator/src/index.ts @@ -58,7 +58,7 @@ export default class Operator extends PolkabotChatbot implements Controllable { this.watchChat(); } - public stop() { + public stop(): void { // clean up here } @@ -66,8 +66,6 @@ export default class Operator extends PolkabotChatbot implements Controllable { const uptimeSec: number = process.uptime(); const m = moment.duration(uptimeSec, 'seconds'); - console.log(' XXXX room:', room); - return { code: 0, msg: null, @@ -82,7 +80,7 @@ export default class Operator extends PolkabotChatbot implements Controllable { }; } - public cmdHelp(event: any, room: Room): CommandHandlerOutput { + public cmdHelp(_event: Event, room: Room): CommandHandlerOutput { // TODO: later we could parse the msg below for keywords and try to make good guesses to focus the help a bit better // const msg: string = event.getContent().body; // fetch all the controllable, show their commands and deescriptions. @@ -128,9 +126,9 @@ export default class Operator extends PolkabotChatbot implements Controllable { if (!controllable) return null; - console.log(`${controllable.module.name} could be able to do the job... checking supported commands`); + this.context.logger.info(`${controllable.module.name} could be able to do the job... checking supported commands`); const handler: PluginCommand = controllable.commandSet.commands.find(c => c.name === cmd.command); - console.log(`Handler found: ${handler ? handler.name : null}`); + this.context.logger.info(`Handler found: ${handler ? handler.name : null}`); return handler; } @@ -148,14 +146,14 @@ export default class Operator extends PolkabotChatbot implements Controllable { // // Has the Bot Master initiated a direct chat with the Bot // const isBotMasterAndBotInRoom = expectedDirectMessageRoomMemberIds.every(val => directChatRoomMemberIds.includes(val)); - // console.log('Operator - isBotMasterAndBotInRoom: ', isBotMasterAndBotInRoom) + // this.context.logger.info('Operator - isBotMasterAndBotInRoom: ', isBotMasterAndBotInRoom) // In general we don´t want the bot to react to its own messages! // const isSelf = senderId => { // return senderId === this.context.config.matrix.botUserId; // }; - // console.log('Operator - event.getContent()', event.getContent()) + // this.context.logger.info('Operator - event.getContent()', event.getContent()) const msg: string = event.getContent().body; const senderId: SenderId = event.getSender(); @@ -164,7 +162,7 @@ export default class Operator extends PolkabotChatbot implements Controllable { // If there is no ! and the string contains help, we try to help if (msg.indexOf('!') < 0 && msg.toLowerCase().indexOf('help') >= 0) { - console.log('Mentioning help in natural language'); + this.context.logger.info('Mentioning help in natural language'); const output = this.cmdHelp(event, room); if (output.answers) { // this.answer(output.answers[0]) @@ -176,9 +174,9 @@ export default class Operator extends PolkabotChatbot implements Controllable { } const botCommand: BotCommand | null = PolkabotChatbot.getBotCommand(msg); - // console.log(" *** bot command:", JSON.stringify(botCommand, null, 2)); + // this.context.logger.info(" *** bot command:", JSON.stringify(botCommand, null, 2)); if (!botCommand) { - console.log(`No bot command found in: >${msg}<`); + this.context.logger.info(`No bot command found in: >${msg}<`); this.answer({ room, message: 'I was tought to smile when I don\'t get it. 😁' @@ -186,12 +184,12 @@ export default class Operator extends PolkabotChatbot implements Controllable { } else { const cmdHandler = this.matchCommand(botCommand); - // console.log(" *** bot command handler:", JSON.stringify(cmdHandler, null, 2)); + // this.context.logger.info(" *** bot command handler:", JSON.stringify(cmdHandler, null, 2)); if (cmdHandler) { - console.log(`handler found, running ${cmdHandler.name}`); + this.context.logger.info(`handler found, running ${cmdHandler.name}`); const output: CommandHandlerOutput = cmdHandler.handler.bind(this)(event, room, botCommand.args); - console.log(`RET: ${output.code} : ${output.msg}`); + this.context.logger.info(`RET: ${output.code} : ${output.msg}`); if (output.answers) { // this.answer(output.answers[0]) output.answers.map(a => { @@ -199,7 +197,7 @@ export default class Operator extends PolkabotChatbot implements Controllable { }); } } else { - console.log('No handler found'); + this.context.logger.info('No handler found'); this.answer({ room, message: 'Hmmm no one told me about that command. 😁' @@ -232,19 +230,19 @@ export default class Operator extends PolkabotChatbot implements Controllable { this.matrixHelper.isBotMasterAndBotInRoom(room) // && isBotMessageRecipient ) { - console.log('Operator - Bot received message from Bot Master in direct message'); + this.context.logger.info('Operator - Bot received message from Bot Master in direct message'); /** * Detect if the command received from the Bot Master is in * the following form: `!say ` or `!status` */ const capture = msg.match(/^!(?\w+)(\s+(?.*?))??$/i) || []; - // console.log("Operator - captured from Bot Master: ", capture); + // this.context.logger.info("Operator - captured from Bot Master: ", capture); if (capture.length > 0 && capture.groups.cmd) { const _cmd: string = capture.groups.cmd; const _args = capture.groups.args; - // console.log("Operator - cmd: ", cmd); - // console.log("Operator - args: ", args); + // this.context.logger.info("Operator - cmd: ", cmd); + // this.context.logger.info("Operator - args: ", args); // switch (cmd) { // case "status": // const uptime = (process.uptime() / 60 / 60).toFixed(2); @@ -256,7 +254,7 @@ export default class Operator extends PolkabotChatbot implements Controllable { // ); // break; // case "say": - // console.log("Operator - Received command !say:", cmd, args); + // this.context.logger.info("Operator - Received command !say:", cmd, args); // const notifierMessage: NotifierMessage = { // message: args // }; @@ -276,11 +274,11 @@ export default class Operator extends PolkabotChatbot implements Controllable { // } // } } else { - console.log(`Operator - Bot received message from non-Bot Master (sender: ${senderId}) in direct message`); + this.context.logger.info(`Operator - Bot received message from non-Bot Master (sender: ${senderId}) in direct message`); // const re = new RegExp('') // let capture = msg.match(/^!(?\w+)(\s+(?.*?))??$/i) || []; - // console.log("Operator - captured from non-Bot Master: ", capture); + // this.context.logger.info("Operator - captured from non-Bot Master: ", capture); // if (capture.length > 0 && capture.groups.cmd) { // const cmd: string = capture.groups.cmd; diff --git a/packages/polkabot/src/index.ts b/packages/polkabot/src/index.ts index 9c63cb2..6b3206c 100644 --- a/packages/polkabot/src/index.ts +++ b/packages/polkabot/src/index.ts @@ -25,6 +25,8 @@ import { PolkabotWorker } from '../../polkabot-api/src/PolkabotWorker'; import { MatrixClient } from './types'; import LoggerSingleton, { winston } from '../../polkabot-api/src/logger'; +const Logger = LoggerSingleton.getInstance(); + type PolkabotGlobal = { Olm: Olm; }; @@ -40,17 +42,16 @@ type PolkabotGlobal = { import { logger as mxLogger } from 'matrix-js-sdk/lib/logger'; // rewrite matrix logger -mxLogger.info = (...msg) => Logger.log({ level: 'info', message: msg.join(' '), labels: { label: 'MatrixSDK' } }); -mxLogger.log = (...msg) => Logger.log({ level: 'info', message: msg.join(' '), labels: { label: 'MatrixSDK' } }); +mxLogger.info = (...msg) => Logger.log({ level: 'debug', message: msg.join(' '), labels: { label: 'MatrixSDK' } }); +mxLogger.log = (...msg) => Logger.log({ level: 'debug', message: msg.join(' '), labels: { label: 'MatrixSDK' } }); mxLogger.warn = (...msg) => Logger.log({ level: 'warn', message: msg.join(' '), labels: { label: 'MatrixSDK' } }); mxLogger.error = (...msg) => Logger.log({ level: 'error', message: msg.join(' '), labels: { label: 'MatrixSDK' } }); -mxLogger.trace = (...msg) => Logger.log({ level: 'debug', message: msg.join(' '), labels: { label: 'MatrixSDK' } }); +mxLogger.trace = (...msg) => Logger.log({ level: 'silly', message: msg.join(' '), labels: { label: 'MatrixSDK' } }); export interface NotifiersTable { [type: string]: PolkabotNotifier[]; } -const Logger = LoggerSingleton.getInstance() export default class Polkabot { // private args: any; @@ -108,13 +109,13 @@ export default class Polkabot { const channel = notifier.channel; if (!this.notifiersTable[channel]) this.notifiersTable[channel] = []; this.notifiersTable[channel].push(notifier); - Logger.silly("notifierTable", this.notifiersTable); + Logger.silly('notifierTable', this.notifiersTable); } /** Register all the Controllable we find. They will be passed to the Operator. */ private registerControllable(controllable: Controllable): void { assert(controllable.commandSet, 'No commands defined'); - Logger.info('Registering controllable:', controllable.commandSet.name); + Logger.debug('Registering controllable:', controllable.commandSet.name); this.controllablePlugins.push(controllable); // Logger.info("Controllables", this.controllablePlugins); } @@ -125,7 +126,7 @@ export default class Polkabot { } private async loadPlugins(): Promise { - Logger.info('Loading plugins', { meta: { source: 'Polkabot' } }) + Logger.info('Loading plugins', { meta: { source: 'Polkabot' } }); const pluginScanner = new PluginScanner(pkg.name + '-plugin'); let plugins = await pluginScanner.scan(); @@ -156,6 +157,7 @@ export default class Polkabot { matrix: this.matrix, polkadot: this.polkadot, polkabot: this, + logger: LoggerSingleton.getInstance(plugin.shortName), }; loads.push( @@ -189,9 +191,9 @@ export default class Polkabot { } private attachControllableToBots(): void { - Logger.info('Passing controllables to following bots:'); + Logger.debug('Passing controllables to following bots:'); this.chatBots.map((bot: PolkabotChatbot) => { - Logger.info(` > ${bot.module.name}`); + Logger.debug(` ${bot.module.name}`); bot.registerControllables(this.controllablePlugins); }); } @@ -218,11 +220,11 @@ export default class Polkabot { this.config = ConfigManager.getInstance('configSpecs.yml').getConfig(); this.config.Print({ compact: true, logger: (msg) => Logger.debug(msg) }); - const isConfigValid = this.config.Validate() + const isConfigValid = this.config.Validate(); if (!isConfigValid) { - Logger.error('Config is NOT valid') + Logger.error('Config is NOT valid'); this.config.Print({ compact: true, logger: (msg) => Logger.error(msg) }); - process.exit(1) + process.exit(1); // this.Logger[ isConfigValid ? 'info': 'error'] (`Your config is${ isConfigValid? '' : ' NOT'} valid!`); } diff --git a/packages/polkabot/src/lib/plugin-loader.ts b/packages/polkabot/src/lib/plugin-loader.ts index b0060e5..6c881e8 100644 --- a/packages/polkabot/src/lib/plugin-loader.ts +++ b/packages/polkabot/src/lib/plugin-loader.ts @@ -10,7 +10,7 @@ import { PolkabotWorker } from '../../../polkabot-api/src/PolkabotWorker'; import { PolkabotChatbot } from '../../../polkabot-api/src/PolkabotChatbot'; import LoggerSingleton from '../../../polkabot-api/src/logger'; -const Logger = LoggerSingleton.getInstance() +const Logger = LoggerSingleton.getInstance(); export default class PluginLoader { public static async load(mod: PluginModule, context: PluginContext): Promise { diff --git a/packages/polkabot/src/lib/plugin-scanner.ts b/packages/polkabot/src/lib/plugin-scanner.ts index af4215b..be304d4 100644 --- a/packages/polkabot/src/lib/plugin-scanner.ts +++ b/packages/polkabot/src/lib/plugin-scanner.ts @@ -4,7 +4,7 @@ import findNodeModules from 'find-node-modules'; import { PluginModule } from '../../../polkabot-api/src/plugin.interface'; import LoggerSingleton from '../../../polkabot-api/src/logger'; -const Logger = LoggerSingleton.getInstance() +const Logger = LoggerSingleton.getInstance(); export default class PluginScanner { private name: string; -- GitLab From ea4d191b839bc8fe7f66bb8fb9dd4810ad30746b Mon Sep 17 00:00:00 2001 From: chevdor Date: Thu, 14 May 2020 11:36:28 +0200 Subject: [PATCH 62/86] Fix build:doc using lerna --- .gitignore | 1 + jsdoc.conf | 20 - lerna.json | 8 + package.json | 10 +- packages/polkabot-api/.gitlab-ci.yml | 80 - packages/polkabot-api/package.json | 5 +- packages/polkabot-api/tsconfig.json | 25 +- packages/polkabot-api/typedoc.json | 10 + packages/polkabot/package.json | 6 +- packages/polkabot/tsconfig.json | 22 +- packages/polkabot/typedoc.json | 10 + readme.md | 1 + tsconfig.base.json | 25 + tsconfig.json | 10 + typedoc.json | 11 + yarn.lock | 3206 +++++++++++++++++++++++++- 16 files changed, 3251 insertions(+), 199 deletions(-) delete mode 100644 jsdoc.conf create mode 100644 lerna.json delete mode 100644 packages/polkabot-api/.gitlab-ci.yml create mode 100644 packages/polkabot-api/typedoc.json create mode 100644 packages/polkabot/typedoc.json create mode 100644 readme.md create mode 100644 tsconfig.base.json create mode 100644 tsconfig.json create mode 100644 typedoc.json diff --git a/.gitignore b/.gitignore index f60b715..012e9bd 100644 --- a/.gitignore +++ b/.gitignore @@ -12,3 +12,4 @@ yarn-error.log *.db polkabot.code-workspace *.log +docs diff --git a/jsdoc.conf b/jsdoc.conf deleted file mode 100644 index 8904131..0000000 --- a/jsdoc.conf +++ /dev/null @@ -1,20 +0,0 @@ -{ - "tags": { - "allowUnknownTags": true, - "dictionaries": ["jsdoc","closure"] - }, - "source": { - "include": [ "src" ], - "exclude": [ "node_modules" ], - "includePattern": ".+\\.js(doc|x)?$", - "excludePattern": "(^|\\/|\\\\)_" - }, - "plugins": ["jsdoc-route-plugin"], - "templates": { - "cleverLinks": false, - "monospaceLinks": false - }, - "opts": { - "recurse": true - } -} diff --git a/lerna.json b/lerna.json new file mode 100644 index 0000000..08ca220 --- /dev/null +++ b/lerna.json @@ -0,0 +1,8 @@ + +{ + "packages": [ + "packages/*" + ], + "version": "independent" + } + \ No newline at end of file diff --git a/package.json b/package.json index 6acbcee..2f629fb 100644 --- a/package.json +++ b/package.json @@ -13,11 +13,15 @@ "lint": "eslint --ext .ts,.tsx .", "test": "echo \"skipping tests\"", "start": "cd packages/polkabot && yarn start", - "build": "cd packages/polkabot && yarn build" + "build": "cd packages/polkabot && yarn build", + "build:doc": "lerna run build:doc", + "clean": "lerna run clean" }, "devDependencies": { - "@babel/plugin-transform-runtime": "^7.8.3" - }, + "@babel/plugin-transform-runtime": "^7.8.3", + "lerna": "^3.21.0", + "typedoc": "^0.17.6" + }, "dependencies": { "@babel/runtime": "^7.8.7", "@polkadot/api": "^1.13.1" diff --git a/packages/polkabot-api/.gitlab-ci.yml b/packages/polkabot-api/.gitlab-ci.yml deleted file mode 100644 index a0c2bba..0000000 --- a/packages/polkabot-api/.gitlab-ci.yml +++ /dev/null @@ -1,80 +0,0 @@ -image: node:11 - -before_script: - # install ssh-agent - # - 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )' - # # run ssh-agent - # - eval $(ssh-agent -s) - # # add ssh key stored in SSH_PRIVATE_KEY variable to the agent store - # - ssh-add <(echo "$SSH_PRIVATE_KEY" | base64 -d) - # # disable host key checking (NOTE: makes you susceptible to man-in-the-middle attacks) - # # WARNING: use only in docker container, if you use it with shell you will overwrite your user's ssh config - # - mkdir -p ~/.ssh - # - echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config - - npm install -g yarn - - yarn - -stages: - - lint - # - test - - build - -# http://docs.gitlab.com/ce/ci/yaml/README.html#cache -cache: - paths: - - node_modules/ - -lint: - stage: lint - script: - - yarn lint - -# Supported node versions can be found here: -# https://github.com/nodejs/LTS#lts_schedule -# test:node:7: -# image: node:7 -# script: -# - yarn build -# - npm test -# only: -# - $NIGHLTY - -# test:node:8: -# image: node:8 -# script: -# - yarn build -# - npm test - -# test:node:9: -# image: node:9 -# script: -# - yarn build -# - npm test -# only: -# - $NIGHLTY - -# test:node:10: -# image: node:10 -# script: -# - yarn build -# - npm test -# only: -# - $NIGHLTY - -build: - stage: build - script: yarn build - -# build:doc: -# stage: build -# script: yarn build:doc - -# build:docker: -# image: docker:git -# services: -# - docker:dind -# stage: build -# before_script: -# - echo "Skipping before_script" -# script: -# - docker build -t chevdor/polkabot . diff --git a/packages/polkabot-api/package.json b/packages/polkabot-api/package.json index fb0cc25..28072ea 100644 --- a/packages/polkabot-api/package.json +++ b/packages/polkabot-api/package.json @@ -8,8 +8,9 @@ "start": "babel-node ./src/index.js", "build": "tsc --build tsconfig.json", "prepublishOnly": "npm run build", - "clean": "rm -rf dist build node_modules", - "postinstall": "npm run build" + "clean": "rm -rf dist build node_modules docs", + "postinstall": "npm run build", + "build:doc": "typedoc --out docs src" }, "author": "Chevdor ", "license": "ISC", diff --git a/packages/polkabot-api/tsconfig.json b/packages/polkabot-api/tsconfig.json index fb9cecc..56a9af7 100644 --- a/packages/polkabot-api/tsconfig.json +++ b/packages/polkabot-api/tsconfig.json @@ -1,27 +1,8 @@ { + "extends": "../../tsconfig.base.json", "compilerOptions": { - "module": "commonjs", - "moduleResolution": "node", - "esModuleInterop": true, - "resolveJsonModule": true, - "allowJs": true, - "target": "es2015", - "noImplicitAny": false, - "sourceMap": true, - "preserveConstEnums": true, - "lib": ["es2015", "dom"], - "noUnusedLocals": true, - "noImplicitReturns": true, - "noImplicitThis": true, - "alwaysStrict": true, - "strictNullChecks": false, - "noUnusedParameters": false, - "pretty": true, - "allowUnreachableCode": false, - "experimentalDecorators": true, - "suppressImplicitAnyIndexErrors": true, - "outDir": "./dist" + "outDir": "./build" }, "include": ["./bin/**/*", "./src/**/*", "./test/**/*", "./package.json"], - "compileOnSave": true } + diff --git a/packages/polkabot-api/typedoc.json b/packages/polkabot-api/typedoc.json new file mode 100644 index 0000000..2299d55 --- /dev/null +++ b/packages/polkabot-api/typedoc.json @@ -0,0 +1,10 @@ +{ + "name": "PolkaBOT-api", + "mode": "modules", + "out": "docs", + "theme": "default", + "ignoreCompilerErrors": "false", + "preserveConstEnums": "true", + "exclude": "*.spec.ts", + "stripInternal": "false" + } \ No newline at end of file diff --git a/packages/polkabot/package.json b/packages/polkabot/package.json index fe1d495..9dab91a 100644 --- a/packages/polkabot/package.json +++ b/packages/polkabot/package.json @@ -16,9 +16,9 @@ "test:local": "mocha --require babel-core/register test/* --exit", "test:watch": "mocha --watch --require babel-core/register test/* --exit", "lint": "eslint --ext .js,.ts src", - "clean": "rm -rf .nyc_output build coverage node_modules out dist", + "clean": "rm -rf .nyc_output build coverage node_modules out dist *.log docs", "prepublishOnly": "npm run build", - "build:doc": "jsdoc -r -d out -c jsdoc.conf", + "build:doc": "typedoc --out docs src", "build:docker": "docker build -t chevdor/polkabot .", "docker:run": "docker run --rm -it chevdor/mypolkabot", "patch": "echo 'Disabling package uniqueness check. See https://github.com/polkadot-js/api/issues/984'; sed -i '/function assertSingletonPackage(name) {/ a return' node_modules/@polkadot/util/assertSingletonPackage.js" @@ -68,7 +68,7 @@ "snazzy": "^8.0.0", "standard": "14.3.3", "ts-node": "^8.9.0", - "typescript": "3.8.3", + "typescript": "^3.9.2", "yarn": "^1.22.4" }, "standard": { diff --git a/packages/polkabot/tsconfig.json b/packages/polkabot/tsconfig.json index 133ee31..a5f8cfd 100644 --- a/packages/polkabot/tsconfig.json +++ b/packages/polkabot/tsconfig.json @@ -1,27 +1,7 @@ { + "extends": "../../tsconfig.base.json", "compilerOptions": { - "module": "commonjs", - "moduleResolution": "node", - "esModuleInterop": true, - "resolveJsonModule": true, - "allowJs": true, - "target": "es2015", - "noImplicitAny": false, - "sourceMap": true, - "preserveConstEnums": true, - "lib": ["es2015", "dom"], - "noUnusedLocals": false, - "noImplicitReturns": true, - "noImplicitThis": true, - "alwaysStrict": true, - "strictNullChecks": false, - "noUnusedParameters": false, - "pretty": true, - "allowUnreachableCode": false, - "experimentalDecorators": true, - "suppressImplicitAnyIndexErrors": true, "outDir": "./build" }, "include": ["./bin/**/*", "./src/**/*", "./test/**/*", "./package.json", "../polkabot-api/src/logger.ts"], - "compileOnSave": true } diff --git a/packages/polkabot/typedoc.json b/packages/polkabot/typedoc.json new file mode 100644 index 0000000..21346b6 --- /dev/null +++ b/packages/polkabot/typedoc.json @@ -0,0 +1,10 @@ +{ + "name": "PolkaBOT", + "mode": "modules", + "out": "docs", + "theme": "default", + "ignoreCompilerErrors": "false", + "preserveConstEnums": "true", + "exclude": "*.spec.ts", + "stripInternal": "false" + } \ No newline at end of file diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..0c1a721 --- /dev/null +++ b/readme.md @@ -0,0 +1 @@ +placeholder for the stuff that do not understand asciidoc... \ No newline at end of file diff --git a/tsconfig.base.json b/tsconfig.base.json new file mode 100644 index 0000000..52767a2 --- /dev/null +++ b/tsconfig.base.json @@ -0,0 +1,25 @@ +{ + "compilerOptions": { + "module": "commonjs", + "moduleResolution": "node", + "esModuleInterop": true, + "resolveJsonModule": true, + "allowJs": true, + "target": "es2015", + "noImplicitAny": false, + "sourceMap": true, + "preserveConstEnums": true, + "lib": ["es2015", "dom"], + "noUnusedLocals": false, + "noImplicitReturns": true, + "noImplicitThis": true, + "alwaysStrict": true, + "strictNullChecks": false, + "noUnusedParameters": false, + "pretty": true, + "allowUnreachableCode": false, + "experimentalDecorators": true, + "suppressImplicitAnyIndexErrors": true, + }, + "compileOnSave": true +} diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..fa37197 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "./tsconfig.base.json", + + "compilerOptions": { + "baseUrl": ".", + "paths": { + "@polkabot/*": ["packages/*/src"] + } + } + } \ No newline at end of file diff --git a/typedoc.json b/typedoc.json new file mode 100644 index 0000000..79b13f8 --- /dev/null +++ b/typedoc.json @@ -0,0 +1,11 @@ +{ + "name": "My Library", + "mode": "modules", + "out": "docs", + "theme": "default", + "ignoreCompilerErrors": "false", + "preserveConstEnums": "true", + "exclude": "*.spec.ts", + "external-modulemap": "packages\/.*", + "stripInternal": "false" + } \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index d5f40d8..db0a6c4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -226,6 +226,80 @@ lodash "^4.17.13" to-fast-properties "^2.0.0" +"@evocateur/libnpmaccess@^3.1.2": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@evocateur/libnpmaccess/-/libnpmaccess-3.1.2.tgz#ecf7f6ce6b004e9f942b098d92200be4a4b1c845" + integrity sha512-KSCAHwNWro0CF2ukxufCitT9K5LjL/KuMmNzSu8wuwN2rjyKHD8+cmOsiybK+W5hdnwc5M1SmRlVCaMHQo+3rg== + dependencies: + "@evocateur/npm-registry-fetch" "^4.0.0" + aproba "^2.0.0" + figgy-pudding "^3.5.1" + get-stream "^4.0.0" + npm-package-arg "^6.1.0" + +"@evocateur/libnpmpublish@^1.2.2": + version "1.2.2" + resolved "https://registry.yarnpkg.com/@evocateur/libnpmpublish/-/libnpmpublish-1.2.2.tgz#55df09d2dca136afba9c88c759ca272198db9f1a" + integrity sha512-MJrrk9ct1FeY9zRlyeoyMieBjGDG9ihyyD9/Ft6MMrTxql9NyoEx2hw9casTIP4CdqEVu+3nQ2nXxoJ8RCXyFg== + dependencies: + "@evocateur/npm-registry-fetch" "^4.0.0" + aproba "^2.0.0" + figgy-pudding "^3.5.1" + get-stream "^4.0.0" + lodash.clonedeep "^4.5.0" + normalize-package-data "^2.4.0" + npm-package-arg "^6.1.0" + semver "^5.5.1" + ssri "^6.0.1" + +"@evocateur/npm-registry-fetch@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@evocateur/npm-registry-fetch/-/npm-registry-fetch-4.0.0.tgz#8c4c38766d8d32d3200fcb0a83f064b57365ed66" + integrity sha512-k1WGfKRQyhJpIr+P17O5vLIo2ko1PFLKwoetatdduUSt/aQ4J2sJrJwwatdI5Z3SiYk/mRH9S3JpdmMFd/IK4g== + dependencies: + JSONStream "^1.3.4" + bluebird "^3.5.1" + figgy-pudding "^3.4.1" + lru-cache "^5.1.1" + make-fetch-happen "^5.0.0" + npm-package-arg "^6.1.0" + safe-buffer "^5.1.2" + +"@evocateur/pacote@^9.6.3": + version "9.6.5" + resolved "https://registry.yarnpkg.com/@evocateur/pacote/-/pacote-9.6.5.tgz#33de32ba210b6f17c20ebab4d497efc6755f4ae5" + integrity sha512-EI552lf0aG2nOV8NnZpTxNo2PcXKPmDbF9K8eCBFQdIZwHNGN/mi815fxtmUMa2wTa1yndotICIDt/V0vpEx2w== + dependencies: + "@evocateur/npm-registry-fetch" "^4.0.0" + bluebird "^3.5.3" + cacache "^12.0.3" + chownr "^1.1.2" + figgy-pudding "^3.5.1" + get-stream "^4.1.0" + glob "^7.1.4" + infer-owner "^1.0.4" + lru-cache "^5.1.1" + make-fetch-happen "^5.0.0" + minimatch "^3.0.4" + minipass "^2.3.5" + mississippi "^3.0.0" + mkdirp "^0.5.1" + normalize-package-data "^2.5.0" + npm-package-arg "^6.1.0" + npm-packlist "^1.4.4" + npm-pick-manifest "^3.0.0" + osenv "^0.1.5" + promise-inflight "^1.0.1" + promise-retry "^1.1.1" + protoduck "^5.0.1" + rimraf "^2.6.3" + safe-buffer "^5.2.0" + semver "^5.7.0" + ssri "^6.0.1" + tar "^4.4.10" + unique-filename "^1.1.1" + which "^1.3.1" + "@istanbuljs/load-nyc-config@^1.0.0": version "1.0.0" resolved "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.0.0.tgz#10602de5570baea82f8afbfa2630b24e7a8cfe5b" @@ -241,6 +315,806 @@ resolved "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.2.tgz#26520bf09abe4a5644cd5414e37125a8954241dd" integrity sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw== +"@lerna/add@3.21.0": + version "3.21.0" + resolved "https://registry.yarnpkg.com/@lerna/add/-/add-3.21.0.tgz#27007bde71cc7b0a2969ab3c2f0ae41578b4577b" + integrity sha512-vhUXXF6SpufBE1EkNEXwz1VLW03f177G9uMOFMQkp6OJ30/PWg4Ekifuz9/3YfgB2/GH8Tu4Lk3O51P2Hskg/A== + dependencies: + "@evocateur/pacote" "^9.6.3" + "@lerna/bootstrap" "3.21.0" + "@lerna/command" "3.21.0" + "@lerna/filter-options" "3.20.0" + "@lerna/npm-conf" "3.16.0" + "@lerna/validation-error" "3.13.0" + dedent "^0.7.0" + npm-package-arg "^6.1.0" + p-map "^2.1.0" + semver "^6.2.0" + +"@lerna/bootstrap@3.21.0": + version "3.21.0" + resolved "https://registry.yarnpkg.com/@lerna/bootstrap/-/bootstrap-3.21.0.tgz#bcd1b651be5b0970b20d8fae04c864548123aed6" + integrity sha512-mtNHlXpmvJn6JTu0KcuTTPl2jLsDNud0QacV/h++qsaKbhAaJr/FElNZ5s7MwZFUM3XaDmvWzHKaszeBMHIbBw== + dependencies: + "@lerna/command" "3.21.0" + "@lerna/filter-options" "3.20.0" + "@lerna/has-npm-version" "3.16.5" + "@lerna/npm-install" "3.16.5" + "@lerna/package-graph" "3.18.5" + "@lerna/pulse-till-done" "3.13.0" + "@lerna/rimraf-dir" "3.16.5" + "@lerna/run-lifecycle" "3.16.2" + "@lerna/run-topologically" "3.18.5" + "@lerna/symlink-binary" "3.17.0" + "@lerna/symlink-dependencies" "3.17.0" + "@lerna/validation-error" "3.13.0" + dedent "^0.7.0" + get-port "^4.2.0" + multimatch "^3.0.0" + npm-package-arg "^6.1.0" + npmlog "^4.1.2" + p-finally "^1.0.0" + p-map "^2.1.0" + p-map-series "^1.0.0" + p-waterfall "^1.0.0" + read-package-tree "^5.1.6" + semver "^6.2.0" + +"@lerna/changed@3.21.0": + version "3.21.0" + resolved "https://registry.yarnpkg.com/@lerna/changed/-/changed-3.21.0.tgz#108e15f679bfe077af500f58248c634f1044ea0b" + integrity sha512-hzqoyf8MSHVjZp0gfJ7G8jaz+++mgXYiNs9iViQGA8JlN/dnWLI5sWDptEH3/B30Izo+fdVz0S0s7ydVE3pWIw== + dependencies: + "@lerna/collect-updates" "3.20.0" + "@lerna/command" "3.21.0" + "@lerna/listable" "3.18.5" + "@lerna/output" "3.13.0" + +"@lerna/check-working-tree@3.16.5": + version "3.16.5" + resolved "https://registry.yarnpkg.com/@lerna/check-working-tree/-/check-working-tree-3.16.5.tgz#b4f8ae61bb4523561dfb9f8f8d874dd46bb44baa" + integrity sha512-xWjVBcuhvB8+UmCSb5tKVLB5OuzSpw96WEhS2uz6hkWVa/Euh1A0/HJwn2cemyK47wUrCQXtczBUiqnq9yX5VQ== + dependencies: + "@lerna/collect-uncommitted" "3.16.5" + "@lerna/describe-ref" "3.16.5" + "@lerna/validation-error" "3.13.0" + +"@lerna/child-process@3.16.5": + version "3.16.5" + resolved "https://registry.yarnpkg.com/@lerna/child-process/-/child-process-3.16.5.tgz#38fa3c18064aa4ac0754ad80114776a7b36a69b2" + integrity sha512-vdcI7mzei9ERRV4oO8Y1LHBZ3A5+ampRKg1wq5nutLsUA4mEBN6H7JqjWOMY9xZemv6+kATm2ofjJ3lW5TszQg== + dependencies: + chalk "^2.3.1" + execa "^1.0.0" + strong-log-transformer "^2.0.0" + +"@lerna/clean@3.21.0": + version "3.21.0" + resolved "https://registry.yarnpkg.com/@lerna/clean/-/clean-3.21.0.tgz#c0b46b5300cc3dae2cda3bec14b803082da3856d" + integrity sha512-b/L9l+MDgE/7oGbrav6rG8RTQvRiZLO1zTcG17zgJAAuhlsPxJExMlh2DFwJEVi2les70vMhHfST3Ue1IMMjpg== + dependencies: + "@lerna/command" "3.21.0" + "@lerna/filter-options" "3.20.0" + "@lerna/prompt" "3.18.5" + "@lerna/pulse-till-done" "3.13.0" + "@lerna/rimraf-dir" "3.16.5" + p-map "^2.1.0" + p-map-series "^1.0.0" + p-waterfall "^1.0.0" + +"@lerna/cli@3.18.5": + version "3.18.5" + resolved "https://registry.yarnpkg.com/@lerna/cli/-/cli-3.18.5.tgz#c90c461542fcd35b6d5b015a290fb0dbfb41d242" + integrity sha512-erkbxkj9jfc89vVs/jBLY/fM0I80oLmJkFUV3Q3wk9J3miYhP14zgVEBsPZY68IZlEjT6T3Xlq2xO1AVaatHsA== + dependencies: + "@lerna/global-options" "3.13.0" + dedent "^0.7.0" + npmlog "^4.1.2" + yargs "^14.2.2" + +"@lerna/collect-uncommitted@3.16.5": + version "3.16.5" + resolved "https://registry.yarnpkg.com/@lerna/collect-uncommitted/-/collect-uncommitted-3.16.5.tgz#a494d61aac31cdc7aec4bbe52c96550274132e63" + integrity sha512-ZgqnGwpDZiWyzIQVZtQaj9tRizsL4dUOhuOStWgTAw1EMe47cvAY2kL709DzxFhjr6JpJSjXV5rZEAeU3VE0Hg== + dependencies: + "@lerna/child-process" "3.16.5" + chalk "^2.3.1" + figgy-pudding "^3.5.1" + npmlog "^4.1.2" + +"@lerna/collect-updates@3.20.0": + version "3.20.0" + resolved "https://registry.yarnpkg.com/@lerna/collect-updates/-/collect-updates-3.20.0.tgz#62f9d76ba21a25b7d9fbf31c02de88744a564bd1" + integrity sha512-qBTVT5g4fupVhBFuY4nI/3FSJtQVcDh7/gEPOpRxoXB/yCSnT38MFHXWl+y4einLciCjt/+0x6/4AG80fjay2Q== + dependencies: + "@lerna/child-process" "3.16.5" + "@lerna/describe-ref" "3.16.5" + minimatch "^3.0.4" + npmlog "^4.1.2" + slash "^2.0.0" + +"@lerna/command@3.21.0": + version "3.21.0" + resolved "https://registry.yarnpkg.com/@lerna/command/-/command-3.21.0.tgz#9a2383759dc7b700dacfa8a22b2f3a6e190121f7" + integrity sha512-T2bu6R8R3KkH5YoCKdutKv123iUgUbW8efVjdGCDnCMthAQzoentOJfDeodBwn0P2OqCl3ohsiNVtSn9h78fyQ== + dependencies: + "@lerna/child-process" "3.16.5" + "@lerna/package-graph" "3.18.5" + "@lerna/project" "3.21.0" + "@lerna/validation-error" "3.13.0" + "@lerna/write-log-file" "3.13.0" + clone-deep "^4.0.1" + dedent "^0.7.0" + execa "^1.0.0" + is-ci "^2.0.0" + npmlog "^4.1.2" + +"@lerna/conventional-commits@3.18.5": + version "3.18.5" + resolved "https://registry.yarnpkg.com/@lerna/conventional-commits/-/conventional-commits-3.18.5.tgz#08efd2e5b45acfaf3f151a53a3ec7ecade58a7bc" + integrity sha512-qcvXIEJ3qSgalxXnQ7Yxp5H9Ta5TVyai6vEor6AAEHc20WiO7UIdbLDCxBtiiHMdGdpH85dTYlsoYUwsCJu3HQ== + dependencies: + "@lerna/validation-error" "3.13.0" + conventional-changelog-angular "^5.0.3" + conventional-changelog-core "^3.1.6" + conventional-recommended-bump "^5.0.0" + fs-extra "^8.1.0" + get-stream "^4.0.0" + lodash.template "^4.5.0" + npm-package-arg "^6.1.0" + npmlog "^4.1.2" + pify "^4.0.1" + semver "^6.2.0" + +"@lerna/create-symlink@3.16.2": + version "3.16.2" + resolved "https://registry.yarnpkg.com/@lerna/create-symlink/-/create-symlink-3.16.2.tgz#412cb8e59a72f5a7d9463e4e4721ad2070149967" + integrity sha512-pzXIJp6av15P325sgiIRpsPXLFmkisLhMBCy4764d+7yjf2bzrJ4gkWVMhsv4AdF0NN3OyZ5jjzzTtLNqfR+Jw== + dependencies: + "@zkochan/cmd-shim" "^3.1.0" + fs-extra "^8.1.0" + npmlog "^4.1.2" + +"@lerna/create@3.21.0": + version "3.21.0" + resolved "https://registry.yarnpkg.com/@lerna/create/-/create-3.21.0.tgz#e813832adf3488728b139e5a75c8b01b1372e62f" + integrity sha512-cRIopzKzE2vXJPmsiwCDMWo4Ct+KTmX3nvvkQLDoQNrrRK7w+3KQT3iiorbj1koD95RsVQA7mS2haWok9SIv0g== + dependencies: + "@evocateur/pacote" "^9.6.3" + "@lerna/child-process" "3.16.5" + "@lerna/command" "3.21.0" + "@lerna/npm-conf" "3.16.0" + "@lerna/validation-error" "3.13.0" + camelcase "^5.0.0" + dedent "^0.7.0" + fs-extra "^8.1.0" + globby "^9.2.0" + init-package-json "^1.10.3" + npm-package-arg "^6.1.0" + p-reduce "^1.0.0" + pify "^4.0.1" + semver "^6.2.0" + slash "^2.0.0" + validate-npm-package-license "^3.0.3" + validate-npm-package-name "^3.0.0" + whatwg-url "^7.0.0" + +"@lerna/describe-ref@3.16.5": + version "3.16.5" + resolved "https://registry.yarnpkg.com/@lerna/describe-ref/-/describe-ref-3.16.5.tgz#a338c25aaed837d3dc70b8a72c447c5c66346ac0" + integrity sha512-c01+4gUF0saOOtDBzbLMFOTJDHTKbDFNErEY6q6i9QaXuzy9LNN62z+Hw4acAAZuJQhrVWncVathcmkkjvSVGw== + dependencies: + "@lerna/child-process" "3.16.5" + npmlog "^4.1.2" + +"@lerna/diff@3.21.0": + version "3.21.0" + resolved "https://registry.yarnpkg.com/@lerna/diff/-/diff-3.21.0.tgz#e6df0d8b9916167ff5a49fcb02ac06424280a68d" + integrity sha512-5viTR33QV3S7O+bjruo1SaR40m7F2aUHJaDAC7fL9Ca6xji+aw1KFkpCtVlISS0G8vikUREGMJh+c/VMSc8Usw== + dependencies: + "@lerna/child-process" "3.16.5" + "@lerna/command" "3.21.0" + "@lerna/validation-error" "3.13.0" + npmlog "^4.1.2" + +"@lerna/exec@3.21.0": + version "3.21.0" + resolved "https://registry.yarnpkg.com/@lerna/exec/-/exec-3.21.0.tgz#17f07533893cb918a17b41bcc566dc437016db26" + integrity sha512-iLvDBrIE6rpdd4GIKTY9mkXyhwsJ2RvQdB9ZU+/NhR3okXfqKc6py/24tV111jqpXTtZUW6HNydT4dMao2hi1Q== + dependencies: + "@lerna/child-process" "3.16.5" + "@lerna/command" "3.21.0" + "@lerna/filter-options" "3.20.0" + "@lerna/profiler" "3.20.0" + "@lerna/run-topologically" "3.18.5" + "@lerna/validation-error" "3.13.0" + p-map "^2.1.0" + +"@lerna/filter-options@3.20.0": + version "3.20.0" + resolved "https://registry.yarnpkg.com/@lerna/filter-options/-/filter-options-3.20.0.tgz#0f0f5d5a4783856eece4204708cc902cbc8af59b" + integrity sha512-bmcHtvxn7SIl/R9gpiNMVG7yjx7WyT0HSGw34YVZ9B+3xF/83N3r5Rgtjh4hheLZ+Q91Or0Jyu5O3Nr+AwZe2g== + dependencies: + "@lerna/collect-updates" "3.20.0" + "@lerna/filter-packages" "3.18.0" + dedent "^0.7.0" + figgy-pudding "^3.5.1" + npmlog "^4.1.2" + +"@lerna/filter-packages@3.18.0": + version "3.18.0" + resolved "https://registry.yarnpkg.com/@lerna/filter-packages/-/filter-packages-3.18.0.tgz#6a7a376d285208db03a82958cfb8172e179b4e70" + integrity sha512-6/0pMM04bCHNATIOkouuYmPg6KH3VkPCIgTfQmdkPJTullERyEQfNUKikrefjxo1vHOoCACDpy65JYyKiAbdwQ== + dependencies: + "@lerna/validation-error" "3.13.0" + multimatch "^3.0.0" + npmlog "^4.1.2" + +"@lerna/get-npm-exec-opts@3.13.0": + version "3.13.0" + resolved "https://registry.yarnpkg.com/@lerna/get-npm-exec-opts/-/get-npm-exec-opts-3.13.0.tgz#d1b552cb0088199fc3e7e126f914e39a08df9ea5" + integrity sha512-Y0xWL0rg3boVyJk6An/vurKzubyJKtrxYv2sj4bB8Mc5zZ3tqtv0ccbOkmkXKqbzvNNF7VeUt1OJ3DRgtC/QZw== + dependencies: + npmlog "^4.1.2" + +"@lerna/get-packed@3.16.0": + version "3.16.0" + resolved "https://registry.yarnpkg.com/@lerna/get-packed/-/get-packed-3.16.0.tgz#1b316b706dcee86c7baa55e50b087959447852ff" + integrity sha512-AjsFiaJzo1GCPnJUJZiTW6J1EihrPkc2y3nMu6m3uWFxoleklsSCyImumzVZJssxMi3CPpztj8LmADLedl9kXw== + dependencies: + fs-extra "^8.1.0" + ssri "^6.0.1" + tar "^4.4.8" + +"@lerna/github-client@3.16.5": + version "3.16.5" + resolved "https://registry.yarnpkg.com/@lerna/github-client/-/github-client-3.16.5.tgz#2eb0235c3bf7a7e5d92d73e09b3761ab21f35c2e" + integrity sha512-rHQdn8Dv/CJrO3VouOP66zAcJzrHsm+wFuZ4uGAai2At2NkgKH+tpNhQy2H1PSC0Ezj9LxvdaHYrUzULqVK5Hw== + dependencies: + "@lerna/child-process" "3.16.5" + "@octokit/plugin-enterprise-rest" "^3.6.1" + "@octokit/rest" "^16.28.4" + git-url-parse "^11.1.2" + npmlog "^4.1.2" + +"@lerna/gitlab-client@3.15.0": + version "3.15.0" + resolved "https://registry.yarnpkg.com/@lerna/gitlab-client/-/gitlab-client-3.15.0.tgz#91f4ec8c697b5ac57f7f25bd50fe659d24aa96a6" + integrity sha512-OsBvRSejHXUBMgwWQqNoioB8sgzL/Pf1pOUhHKtkiMl6aAWjklaaq5HPMvTIsZPfS6DJ9L5OK2GGZuooP/5c8Q== + dependencies: + node-fetch "^2.5.0" + npmlog "^4.1.2" + whatwg-url "^7.0.0" + +"@lerna/global-options@3.13.0": + version "3.13.0" + resolved "https://registry.yarnpkg.com/@lerna/global-options/-/global-options-3.13.0.tgz#217662290db06ad9cf2c49d8e3100ee28eaebae1" + integrity sha512-SlZvh1gVRRzYLVluz9fryY1nJpZ0FHDGB66U9tFfvnnxmueckRQxLopn3tXj3NU1kc3QANT2I5BsQkOqZ4TEFQ== + +"@lerna/has-npm-version@3.16.5": + version "3.16.5" + resolved "https://registry.yarnpkg.com/@lerna/has-npm-version/-/has-npm-version-3.16.5.tgz#ab83956f211d8923ea6afe9b979b38cc73b15326" + integrity sha512-WL7LycR9bkftyqbYop5rEGJ9sRFIV55tSGmbN1HLrF9idwOCD7CLrT64t235t3t4O5gehDnwKI5h2U3oxTrF8Q== + dependencies: + "@lerna/child-process" "3.16.5" + semver "^6.2.0" + +"@lerna/import@3.21.0": + version "3.21.0" + resolved "https://registry.yarnpkg.com/@lerna/import/-/import-3.21.0.tgz#87b08f2a2bfeeff7357c6fd8490e638d3cd5b32d" + integrity sha512-aISkL4XD0Dqf5asDaOZWu65jgj8fWUhuQseZWuQe3UfHxav69fTS2YLIngUfencaOSZVOcVCom28YCzp61YDxw== + dependencies: + "@lerna/child-process" "3.16.5" + "@lerna/command" "3.21.0" + "@lerna/prompt" "3.18.5" + "@lerna/pulse-till-done" "3.13.0" + "@lerna/validation-error" "3.13.0" + dedent "^0.7.0" + fs-extra "^8.1.0" + p-map-series "^1.0.0" + +"@lerna/info@3.21.0": + version "3.21.0" + resolved "https://registry.yarnpkg.com/@lerna/info/-/info-3.21.0.tgz#76696b676fdb0f35d48c83c63c1e32bb5e37814f" + integrity sha512-0XDqGYVBgWxUquFaIptW2bYSIu6jOs1BtkvRTWDDhw4zyEdp6q4eaMvqdSap1CG+7wM5jeLCi6z94wS0AuiuwA== + dependencies: + "@lerna/command" "3.21.0" + "@lerna/output" "3.13.0" + envinfo "^7.3.1" + +"@lerna/init@3.21.0": + version "3.21.0" + resolved "https://registry.yarnpkg.com/@lerna/init/-/init-3.21.0.tgz#1e810934dc8bf4e5386c031041881d3b4096aa5c" + integrity sha512-6CM0z+EFUkFfurwdJCR+LQQF6MqHbYDCBPyhu/d086LRf58GtYZYj49J8mKG9ktayp/TOIxL/pKKjgLD8QBPOg== + dependencies: + "@lerna/child-process" "3.16.5" + "@lerna/command" "3.21.0" + fs-extra "^8.1.0" + p-map "^2.1.0" + write-json-file "^3.2.0" + +"@lerna/link@3.21.0": + version "3.21.0" + resolved "https://registry.yarnpkg.com/@lerna/link/-/link-3.21.0.tgz#8be68ff0ccee104b174b5bbd606302c2f06e9d9b" + integrity sha512-tGu9GxrX7Ivs+Wl3w1+jrLi1nQ36kNI32dcOssij6bg0oZ2M2MDEFI9UF2gmoypTaN9uO5TSsjCFS7aR79HbdQ== + dependencies: + "@lerna/command" "3.21.0" + "@lerna/package-graph" "3.18.5" + "@lerna/symlink-dependencies" "3.17.0" + p-map "^2.1.0" + slash "^2.0.0" + +"@lerna/list@3.21.0": + version "3.21.0" + resolved "https://registry.yarnpkg.com/@lerna/list/-/list-3.21.0.tgz#42f76fafa56dea13b691ec8cab13832691d61da2" + integrity sha512-KehRjE83B1VaAbRRkRy6jLX1Cin8ltsrQ7FHf2bhwhRHK0S54YuA6LOoBnY/NtA8bHDX/Z+G5sMY78X30NS9tg== + dependencies: + "@lerna/command" "3.21.0" + "@lerna/filter-options" "3.20.0" + "@lerna/listable" "3.18.5" + "@lerna/output" "3.13.0" + +"@lerna/listable@3.18.5": + version "3.18.5" + resolved "https://registry.yarnpkg.com/@lerna/listable/-/listable-3.18.5.tgz#e82798405b5ed8fc51843c8ef1e7a0e497388a1a" + integrity sha512-Sdr3pVyaEv5A7ZkGGYR7zN+tTl2iDcinryBPvtuv20VJrXBE8wYcOks1edBTcOWsPjCE/rMP4bo1pseyk3UTsg== + dependencies: + "@lerna/query-graph" "3.18.5" + chalk "^2.3.1" + columnify "^1.5.4" + +"@lerna/log-packed@3.16.0": + version "3.16.0" + resolved "https://registry.yarnpkg.com/@lerna/log-packed/-/log-packed-3.16.0.tgz#f83991041ee77b2495634e14470b42259fd2bc16" + integrity sha512-Fp+McSNBV/P2mnLUYTaSlG8GSmpXM7krKWcllqElGxvAqv6chk2K3c2k80MeVB4WvJ9tRjUUf+i7HUTiQ9/ckQ== + dependencies: + byte-size "^5.0.1" + columnify "^1.5.4" + has-unicode "^2.0.1" + npmlog "^4.1.2" + +"@lerna/npm-conf@3.16.0": + version "3.16.0" + resolved "https://registry.yarnpkg.com/@lerna/npm-conf/-/npm-conf-3.16.0.tgz#1c10a89ae2f6c2ee96962557738685300d376827" + integrity sha512-HbO3DUrTkCAn2iQ9+FF/eisDpWY5POQAOF1m7q//CZjdC2HSW3UYbKEGsSisFxSfaF9Z4jtrV+F/wX6qWs3CuA== + dependencies: + config-chain "^1.1.11" + pify "^4.0.1" + +"@lerna/npm-dist-tag@3.18.5": + version "3.18.5" + resolved "https://registry.yarnpkg.com/@lerna/npm-dist-tag/-/npm-dist-tag-3.18.5.tgz#9ef9abb7c104077b31f6fab22cc73b314d54ac55" + integrity sha512-xw0HDoIG6HreVsJND9/dGls1c+lf6vhu7yJoo56Sz5bvncTloYGLUppIfDHQr4ZvmPCK8rsh0euCVh2giPxzKQ== + dependencies: + "@evocateur/npm-registry-fetch" "^4.0.0" + "@lerna/otplease" "3.18.5" + figgy-pudding "^3.5.1" + npm-package-arg "^6.1.0" + npmlog "^4.1.2" + +"@lerna/npm-install@3.16.5": + version "3.16.5" + resolved "https://registry.yarnpkg.com/@lerna/npm-install/-/npm-install-3.16.5.tgz#d6bfdc16f81285da66515ae47924d6e278d637d3" + integrity sha512-hfiKk8Eku6rB9uApqsalHHTHY+mOrrHeWEs+gtg7+meQZMTS3kzv4oVp5cBZigndQr3knTLjwthT/FX4KvseFg== + dependencies: + "@lerna/child-process" "3.16.5" + "@lerna/get-npm-exec-opts" "3.13.0" + fs-extra "^8.1.0" + npm-package-arg "^6.1.0" + npmlog "^4.1.2" + signal-exit "^3.0.2" + write-pkg "^3.1.0" + +"@lerna/npm-publish@3.18.5": + version "3.18.5" + resolved "https://registry.yarnpkg.com/@lerna/npm-publish/-/npm-publish-3.18.5.tgz#240e4039959fd9816b49c5b07421e11b5cb000af" + integrity sha512-3etLT9+2L8JAx5F8uf7qp6iAtOLSMj+ZYWY6oUgozPi/uLqU0/gsMsEXh3F0+YVW33q0M61RpduBoAlOOZnaTg== + dependencies: + "@evocateur/libnpmpublish" "^1.2.2" + "@lerna/otplease" "3.18.5" + "@lerna/run-lifecycle" "3.16.2" + figgy-pudding "^3.5.1" + fs-extra "^8.1.0" + npm-package-arg "^6.1.0" + npmlog "^4.1.2" + pify "^4.0.1" + read-package-json "^2.0.13" + +"@lerna/npm-run-script@3.16.5": + version "3.16.5" + resolved "https://registry.yarnpkg.com/@lerna/npm-run-script/-/npm-run-script-3.16.5.tgz#9c2ec82453a26c0b46edc0bb7c15816c821f5c15" + integrity sha512-1asRi+LjmVn3pMjEdpqKJZFT/3ZNpb+VVeJMwrJaV/3DivdNg7XlPK9LTrORuKU4PSvhdEZvJmSlxCKyDpiXsQ== + dependencies: + "@lerna/child-process" "3.16.5" + "@lerna/get-npm-exec-opts" "3.13.0" + npmlog "^4.1.2" + +"@lerna/otplease@3.18.5": + version "3.18.5" + resolved "https://registry.yarnpkg.com/@lerna/otplease/-/otplease-3.18.5.tgz#b77b8e760b40abad9f7658d988f3ea77d4fd0231" + integrity sha512-S+SldXAbcXTEDhzdxYLU0ZBKuYyURP/ND2/dK6IpKgLxQYh/z4ScljPDMyKymmEvgiEJmBsPZAAPfmNPEzxjog== + dependencies: + "@lerna/prompt" "3.18.5" + figgy-pudding "^3.5.1" + +"@lerna/output@3.13.0": + version "3.13.0" + resolved "https://registry.yarnpkg.com/@lerna/output/-/output-3.13.0.tgz#3ded7cc908b27a9872228a630d950aedae7a4989" + integrity sha512-7ZnQ9nvUDu/WD+bNsypmPG5MwZBwu86iRoiW6C1WBuXXDxM5cnIAC1m2WxHeFnjyMrYlRXM9PzOQ9VDD+C15Rg== + dependencies: + npmlog "^4.1.2" + +"@lerna/pack-directory@3.16.4": + version "3.16.4" + resolved "https://registry.yarnpkg.com/@lerna/pack-directory/-/pack-directory-3.16.4.tgz#3eae5f91bdf5acfe0384510ed53faddc4c074693" + integrity sha512-uxSF0HZeGyKaaVHz5FroDY9A5NDDiCibrbYR6+khmrhZtY0Bgn6hWq8Gswl9iIlymA+VzCbshWIMX4o2O8C8ng== + dependencies: + "@lerna/get-packed" "3.16.0" + "@lerna/package" "3.16.0" + "@lerna/run-lifecycle" "3.16.2" + figgy-pudding "^3.5.1" + npm-packlist "^1.4.4" + npmlog "^4.1.2" + tar "^4.4.10" + temp-write "^3.4.0" + +"@lerna/package-graph@3.18.5": + version "3.18.5" + resolved "https://registry.yarnpkg.com/@lerna/package-graph/-/package-graph-3.18.5.tgz#c740e2ea3578d059e551633e950690831b941f6b" + integrity sha512-8QDrR9T+dBegjeLr+n9WZTVxUYUhIUjUgZ0gvNxUBN8S1WB9r6H5Yk56/MVaB64tA3oGAN9IIxX6w0WvTfFudA== + dependencies: + "@lerna/prerelease-id-from-version" "3.16.0" + "@lerna/validation-error" "3.13.0" + npm-package-arg "^6.1.0" + npmlog "^4.1.2" + semver "^6.2.0" + +"@lerna/package@3.16.0": + version "3.16.0" + resolved "https://registry.yarnpkg.com/@lerna/package/-/package-3.16.0.tgz#7e0a46e4697ed8b8a9c14d59c7f890e0d38ba13c" + integrity sha512-2lHBWpaxcBoiNVbtyLtPUuTYEaB/Z+eEqRS9duxpZs6D+mTTZMNy6/5vpEVSCBmzvdYpyqhqaYjjSLvjjr5Riw== + dependencies: + load-json-file "^5.3.0" + npm-package-arg "^6.1.0" + write-pkg "^3.1.0" + +"@lerna/prerelease-id-from-version@3.16.0": + version "3.16.0" + resolved "https://registry.yarnpkg.com/@lerna/prerelease-id-from-version/-/prerelease-id-from-version-3.16.0.tgz#b24bfa789f5e1baab914d7b08baae9b7bd7d83a1" + integrity sha512-qZyeUyrE59uOK8rKdGn7jQz+9uOpAaF/3hbslJVFL1NqF9ELDTqjCPXivuejMX/lN4OgD6BugTO4cR7UTq/sZA== + dependencies: + semver "^6.2.0" + +"@lerna/profiler@3.20.0": + version "3.20.0" + resolved "https://registry.yarnpkg.com/@lerna/profiler/-/profiler-3.20.0.tgz#0f6dc236f4ea8f9ea5f358c6703305a4f32ad051" + integrity sha512-bh8hKxAlm6yu8WEOvbLENm42i2v9SsR4WbrCWSbsmOElx3foRnMlYk7NkGECa+U5c3K4C6GeBbwgqs54PP7Ljg== + dependencies: + figgy-pudding "^3.5.1" + fs-extra "^8.1.0" + npmlog "^4.1.2" + upath "^1.2.0" + +"@lerna/project@3.21.0": + version "3.21.0" + resolved "https://registry.yarnpkg.com/@lerna/project/-/project-3.21.0.tgz#5d784d2d10c561a00f20320bcdb040997c10502d" + integrity sha512-xT1mrpET2BF11CY32uypV2GPtPVm6Hgtha7D81GQP9iAitk9EccrdNjYGt5UBYASl4CIDXBRxwmTTVGfrCx82A== + dependencies: + "@lerna/package" "3.16.0" + "@lerna/validation-error" "3.13.0" + cosmiconfig "^5.1.0" + dedent "^0.7.0" + dot-prop "^4.2.0" + glob-parent "^5.0.0" + globby "^9.2.0" + load-json-file "^5.3.0" + npmlog "^4.1.2" + p-map "^2.1.0" + resolve-from "^4.0.0" + write-json-file "^3.2.0" + +"@lerna/prompt@3.18.5": + version "3.18.5" + resolved "https://registry.yarnpkg.com/@lerna/prompt/-/prompt-3.18.5.tgz#628cd545f225887d060491ab95df899cfc5218a1" + integrity sha512-rkKj4nm1twSbBEb69+Em/2jAERK8htUuV8/xSjN0NPC+6UjzAwY52/x9n5cfmpa9lyKf/uItp7chCI7eDmNTKQ== + dependencies: + inquirer "^6.2.0" + npmlog "^4.1.2" + +"@lerna/publish@3.21.0": + version "3.21.0" + resolved "https://registry.yarnpkg.com/@lerna/publish/-/publish-3.21.0.tgz#0112393125f000484c3f50caba71a547f91bd7f4" + integrity sha512-JZ+ehZB9UCQ9nqH8Ld/Yqc/If++aK/7XIubkrB9sQ5hf2GeIbmI/BrJpMgLW/e9T5bKrUBZPUvoUN3daVipA5A== + dependencies: + "@evocateur/libnpmaccess" "^3.1.2" + "@evocateur/npm-registry-fetch" "^4.0.0" + "@evocateur/pacote" "^9.6.3" + "@lerna/check-working-tree" "3.16.5" + "@lerna/child-process" "3.16.5" + "@lerna/collect-updates" "3.20.0" + "@lerna/command" "3.21.0" + "@lerna/describe-ref" "3.16.5" + "@lerna/log-packed" "3.16.0" + "@lerna/npm-conf" "3.16.0" + "@lerna/npm-dist-tag" "3.18.5" + "@lerna/npm-publish" "3.18.5" + "@lerna/otplease" "3.18.5" + "@lerna/output" "3.13.0" + "@lerna/pack-directory" "3.16.4" + "@lerna/prerelease-id-from-version" "3.16.0" + "@lerna/prompt" "3.18.5" + "@lerna/pulse-till-done" "3.13.0" + "@lerna/run-lifecycle" "3.16.2" + "@lerna/run-topologically" "3.18.5" + "@lerna/validation-error" "3.13.0" + "@lerna/version" "3.21.0" + figgy-pudding "^3.5.1" + fs-extra "^8.1.0" + npm-package-arg "^6.1.0" + npmlog "^4.1.2" + p-finally "^1.0.0" + p-map "^2.1.0" + p-pipe "^1.2.0" + semver "^6.2.0" + +"@lerna/pulse-till-done@3.13.0": + version "3.13.0" + resolved "https://registry.yarnpkg.com/@lerna/pulse-till-done/-/pulse-till-done-3.13.0.tgz#c8e9ce5bafaf10d930a67d7ed0ccb5d958fe0110" + integrity sha512-1SOHpy7ZNTPulzIbargrgaJX387csN7cF1cLOGZiJQA6VqnS5eWs2CIrG8i8wmaUavj2QlQ5oEbRMVVXSsGrzA== + dependencies: + npmlog "^4.1.2" + +"@lerna/query-graph@3.18.5": + version "3.18.5" + resolved "https://registry.yarnpkg.com/@lerna/query-graph/-/query-graph-3.18.5.tgz#df4830bb5155273003bf35e8dda1c32d0927bd86" + integrity sha512-50Lf4uuMpMWvJ306be3oQDHrWV42nai9gbIVByPBYJuVW8dT8O8pA3EzitNYBUdLL9/qEVbrR0ry1HD7EXwtRA== + dependencies: + "@lerna/package-graph" "3.18.5" + figgy-pudding "^3.5.1" + +"@lerna/resolve-symlink@3.16.0": + version "3.16.0" + resolved "https://registry.yarnpkg.com/@lerna/resolve-symlink/-/resolve-symlink-3.16.0.tgz#37fc7095fabdbcf317c26eb74e0d0bde8efd2386" + integrity sha512-Ibj5e7njVHNJ/NOqT4HlEgPFPtPLWsO7iu59AM5bJDcAJcR96mLZ7KGVIsS2tvaO7akMEJvt2P+ErwCdloG3jQ== + dependencies: + fs-extra "^8.1.0" + npmlog "^4.1.2" + read-cmd-shim "^1.0.1" + +"@lerna/rimraf-dir@3.16.5": + version "3.16.5" + resolved "https://registry.yarnpkg.com/@lerna/rimraf-dir/-/rimraf-dir-3.16.5.tgz#04316ab5ffd2909657aaf388ea502cb8c2f20a09" + integrity sha512-bQlKmO0pXUsXoF8lOLknhyQjOZsCc0bosQDoX4lujBXSWxHVTg1VxURtWf2lUjz/ACsJVDfvHZbDm8kyBk5okA== + dependencies: + "@lerna/child-process" "3.16.5" + npmlog "^4.1.2" + path-exists "^3.0.0" + rimraf "^2.6.2" + +"@lerna/run-lifecycle@3.16.2": + version "3.16.2" + resolved "https://registry.yarnpkg.com/@lerna/run-lifecycle/-/run-lifecycle-3.16.2.tgz#67b288f8ea964db9ea4fb1fbc7715d5bbb0bce00" + integrity sha512-RqFoznE8rDpyyF0rOJy3+KjZCeTkO8y/OB9orPauR7G2xQ7PTdCpgo7EO6ZNdz3Al+k1BydClZz/j78gNCmL2A== + dependencies: + "@lerna/npm-conf" "3.16.0" + figgy-pudding "^3.5.1" + npm-lifecycle "^3.1.2" + npmlog "^4.1.2" + +"@lerna/run-topologically@3.18.5": + version "3.18.5" + resolved "https://registry.yarnpkg.com/@lerna/run-topologically/-/run-topologically-3.18.5.tgz#3cd639da20e967d7672cb88db0f756b92f2fdfc3" + integrity sha512-6N1I+6wf4hLOnPW+XDZqwufyIQ6gqoPfHZFkfWlvTQ+Ue7CuF8qIVQ1Eddw5HKQMkxqN10thKOFfq/9NQZ4NUg== + dependencies: + "@lerna/query-graph" "3.18.5" + figgy-pudding "^3.5.1" + p-queue "^4.0.0" + +"@lerna/run@3.21.0": + version "3.21.0" + resolved "https://registry.yarnpkg.com/@lerna/run/-/run-3.21.0.tgz#2a35ec84979e4d6e42474fe148d32e5de1cac891" + integrity sha512-fJF68rT3veh+hkToFsBmUJ9MHc9yGXA7LSDvhziAojzOb0AI/jBDp6cEcDQyJ7dbnplba2Lj02IH61QUf9oW0Q== + dependencies: + "@lerna/command" "3.21.0" + "@lerna/filter-options" "3.20.0" + "@lerna/npm-run-script" "3.16.5" + "@lerna/output" "3.13.0" + "@lerna/profiler" "3.20.0" + "@lerna/run-topologically" "3.18.5" + "@lerna/timer" "3.13.0" + "@lerna/validation-error" "3.13.0" + p-map "^2.1.0" + +"@lerna/symlink-binary@3.17.0": + version "3.17.0" + resolved "https://registry.yarnpkg.com/@lerna/symlink-binary/-/symlink-binary-3.17.0.tgz#8f8031b309863814883d3f009877f82e38aef45a" + integrity sha512-RLpy9UY6+3nT5J+5jkM5MZyMmjNHxZIZvXLV+Q3MXrf7Eaa1hNqyynyj4RO95fxbS+EZc4XVSk25DGFQbcRNSQ== + dependencies: + "@lerna/create-symlink" "3.16.2" + "@lerna/package" "3.16.0" + fs-extra "^8.1.0" + p-map "^2.1.0" + +"@lerna/symlink-dependencies@3.17.0": + version "3.17.0" + resolved "https://registry.yarnpkg.com/@lerna/symlink-dependencies/-/symlink-dependencies-3.17.0.tgz#48d6360e985865a0e56cd8b51b308a526308784a" + integrity sha512-KmjU5YT1bpt6coOmdFueTJ7DFJL4H1w5eF8yAQ2zsGNTtZ+i5SGFBWpb9AQaw168dydc3s4eu0W0Sirda+F59Q== + dependencies: + "@lerna/create-symlink" "3.16.2" + "@lerna/resolve-symlink" "3.16.0" + "@lerna/symlink-binary" "3.17.0" + fs-extra "^8.1.0" + p-finally "^1.0.0" + p-map "^2.1.0" + p-map-series "^1.0.0" + +"@lerna/timer@3.13.0": + version "3.13.0" + resolved "https://registry.yarnpkg.com/@lerna/timer/-/timer-3.13.0.tgz#bcd0904551db16e08364d6c18e5e2160fc870781" + integrity sha512-RHWrDl8U4XNPqY5MQHkToWS9jHPnkLZEt5VD+uunCKTfzlxGnRCr3/zVr8VGy/uENMYpVP3wJa4RKGY6M0vkRw== + +"@lerna/validation-error@3.13.0": + version "3.13.0" + resolved "https://registry.yarnpkg.com/@lerna/validation-error/-/validation-error-3.13.0.tgz#c86b8f07c5ab9539f775bd8a54976e926f3759c3" + integrity sha512-SiJP75nwB8GhgwLKQfdkSnDufAaCbkZWJqEDlKOUPUvVOplRGnfL+BPQZH5nvq2BYSRXsksXWZ4UHVnQZI/HYA== + dependencies: + npmlog "^4.1.2" + +"@lerna/version@3.21.0": + version "3.21.0" + resolved "https://registry.yarnpkg.com/@lerna/version/-/version-3.21.0.tgz#5bcc3d2de9eb8f4db18efb0d88973f9a509eccc3" + integrity sha512-nIT3u43fCNj6uSMN1dRxFnF4GhmIiOEqSTkGSjrMU+8kHKwzOqS/6X6TOzklBmCyEZOpF/fLlGqH3BZHnwLDzQ== + dependencies: + "@lerna/check-working-tree" "3.16.5" + "@lerna/child-process" "3.16.5" + "@lerna/collect-updates" "3.20.0" + "@lerna/command" "3.21.0" + "@lerna/conventional-commits" "3.18.5" + "@lerna/github-client" "3.16.5" + "@lerna/gitlab-client" "3.15.0" + "@lerna/output" "3.13.0" + "@lerna/prerelease-id-from-version" "3.16.0" + "@lerna/prompt" "3.18.5" + "@lerna/run-lifecycle" "3.16.2" + "@lerna/run-topologically" "3.18.5" + "@lerna/validation-error" "3.13.0" + chalk "^2.3.1" + dedent "^0.7.0" + load-json-file "^5.3.0" + minimatch "^3.0.4" + npmlog "^4.1.2" + p-map "^2.1.0" + p-pipe "^1.2.0" + p-reduce "^1.0.0" + p-waterfall "^1.0.0" + semver "^6.2.0" + slash "^2.0.0" + temp-write "^3.4.0" + write-json-file "^3.2.0" + +"@lerna/write-log-file@3.13.0": + version "3.13.0" + resolved "https://registry.yarnpkg.com/@lerna/write-log-file/-/write-log-file-3.13.0.tgz#b78d9e4cfc1349a8be64d91324c4c8199e822a26" + integrity sha512-RibeMnDPvlL8bFYW5C8cs4mbI3AHfQef73tnJCQ/SgrXZHehmHnsyWUiE7qDQCAo+B1RfTapvSyFF69iPj326A== + dependencies: + npmlog "^4.1.2" + write-file-atomic "^2.3.0" + +"@mrmlnc/readdir-enhanced@^2.2.1": + version "2.2.1" + resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde" + integrity sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g== + dependencies: + call-me-maybe "^1.0.1" + glob-to-regexp "^0.3.0" + +"@nodelib/fs.stat@^1.1.2": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b" + integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw== + +"@octokit/auth-token@^2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@octokit/auth-token/-/auth-token-2.4.0.tgz#b64178975218b99e4dfe948253f0673cbbb59d9f" + integrity sha512-eoOVMjILna7FVQf96iWc3+ZtE/ZT6y8ob8ZzcqKY1ibSQCnu4O/B7pJvzMx5cyZ/RjAff6DAdEb0O0Cjcxidkg== + dependencies: + "@octokit/types" "^2.0.0" + +"@octokit/endpoint@^6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-6.0.1.tgz#16d5c0e7a83e3a644d1ddbe8cded6c3d038d31d7" + integrity sha512-pOPHaSz57SFT/m3R5P8MUu4wLPszokn5pXcB/pzavLTQf2jbU+6iayTvzaY6/BiotuRS0qyEUkx3QglT4U958A== + dependencies: + "@octokit/types" "^2.11.1" + is-plain-object "^3.0.0" + universal-user-agent "^5.0.0" + +"@octokit/plugin-enterprise-rest@^3.6.1": + version "3.6.2" + resolved "https://registry.yarnpkg.com/@octokit/plugin-enterprise-rest/-/plugin-enterprise-rest-3.6.2.tgz#74de25bef21e0182b4fa03a8678cd00a4e67e561" + integrity sha512-3wF5eueS5OHQYuAEudkpN+xVeUsg8vYEMMenEzLphUZ7PRZ8OJtDcsreL3ad9zxXmBbaFWzLmFcdob5CLyZftA== + +"@octokit/plugin-paginate-rest@^1.1.1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-1.1.2.tgz#004170acf8c2be535aba26727867d692f7b488fc" + integrity sha512-jbsSoi5Q1pj63sC16XIUboklNw+8tL9VOnJsWycWYR78TKss5PVpIPb1TUUcMQ+bBh7cY579cVAWmf5qG+dw+Q== + dependencies: + "@octokit/types" "^2.0.1" + +"@octokit/plugin-request-log@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@octokit/plugin-request-log/-/plugin-request-log-1.0.0.tgz#eef87a431300f6148c39a7f75f8cfeb218b2547e" + integrity sha512-ywoxP68aOT3zHCLgWZgwUJatiENeHE7xJzYjfz8WI0goynp96wETBF+d95b8g/uL4QmS6owPVlaxiz3wyMAzcw== + +"@octokit/plugin-rest-endpoint-methods@2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-2.4.0.tgz#3288ecf5481f68c494dd0602fc15407a59faf61e" + integrity sha512-EZi/AWhtkdfAYi01obpX0DF7U6b1VRr30QNQ5xSFPITMdLSfhcBqjamE3F+sKcxPbD7eZuMHu3Qkk2V+JGxBDQ== + dependencies: + "@octokit/types" "^2.0.1" + deprecation "^2.3.1" + +"@octokit/request-error@^1.0.2": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-1.2.1.tgz#ede0714c773f32347576c25649dc013ae6b31801" + integrity sha512-+6yDyk1EES6WK+l3viRDElw96MvwfJxCt45GvmjDUKWjYIb3PJZQkq3i46TwGwoPD4h8NmTrENmtyA1FwbmhRA== + dependencies: + "@octokit/types" "^2.0.0" + deprecation "^2.0.0" + once "^1.4.0" + +"@octokit/request-error@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-2.0.0.tgz#94ca7293373654400fbb2995f377f9473e00834b" + integrity sha512-rtYicB4Absc60rUv74Rjpzek84UbVHGHJRu4fNVlZ1mCcyUPPuzFfG9Rn6sjHrd95DEsmjSt1Axlc699ZlbDkw== + dependencies: + "@octokit/types" "^2.0.0" + deprecation "^2.0.0" + once "^1.4.0" + +"@octokit/request@^5.2.0": + version "5.4.2" + resolved "https://registry.yarnpkg.com/@octokit/request/-/request-5.4.2.tgz#74f8e5bbd39dc738a1b127629791f8ad1b3193ee" + integrity sha512-zKdnGuQ2TQ2vFk9VU8awFT4+EYf92Z/v3OlzRaSh4RIP0H6cvW1BFPXq4XYvNez+TPQjqN+0uSkCYnMFFhcFrw== + dependencies: + "@octokit/endpoint" "^6.0.1" + "@octokit/request-error" "^2.0.0" + "@octokit/types" "^2.11.1" + deprecation "^2.0.0" + is-plain-object "^3.0.0" + node-fetch "^2.3.0" + once "^1.4.0" + universal-user-agent "^5.0.0" + +"@octokit/rest@^16.28.4": + version "16.43.1" + resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-16.43.1.tgz#3b11e7d1b1ac2bbeeb23b08a17df0b20947eda6b" + integrity sha512-gfFKwRT/wFxq5qlNjnW2dh+qh74XgTQ2B179UX5K1HYCluioWj8Ndbgqw2PVqa1NnVJkGHp2ovMpVn/DImlmkw== + dependencies: + "@octokit/auth-token" "^2.4.0" + "@octokit/plugin-paginate-rest" "^1.1.1" + "@octokit/plugin-request-log" "^1.0.0" + "@octokit/plugin-rest-endpoint-methods" "2.4.0" + "@octokit/request" "^5.2.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", "@octokit/types@^2.0.1", "@octokit/types@^2.11.1": + version "2.16.2" + resolved "https://registry.yarnpkg.com/@octokit/types/-/types-2.16.2.tgz#4c5f8da3c6fecf3da1811aef678fda03edac35d2" + integrity sha512-O75k56TYvJ8WpAakWwYRN8Bgu60KrmX0z1KqFp1kNiFNkgW+JW+9EBKZ+S33PU6SLvbihqd+3drvPxKK68Ee8Q== + dependencies: + "@types/node" ">= 8" + "@polkadot/api-derive@1.13.1": version "1.13.1" resolved "https://registry.yarnpkg.com/@polkadot/api-derive/-/api-derive-1.13.1.tgz#e52743291c64ae7f71624bb251bc5544785d9a33" @@ -533,6 +1407,20 @@ resolved "https://registry.npmjs.org/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#1ee30d79544ca84d68d4b3cdb0af4f205663dd2d" integrity sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag== +"@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/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/json-schema@^7.0.3": version "7.0.4" resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.4.tgz#38fd73ddfd9b55abb1e1b2ed578cb55bd7b7d339" @@ -543,6 +1431,16 @@ resolved "https://registry.yarnpkg.com/@types/matrix-js-sdk/-/matrix-js-sdk-5.1.0.tgz#a732afd9b457e4a97c3fd550603bdd3395c47263" integrity sha512-u3zWul7ENUnWko8GsTnM20HKO1tDhyRiVsQha8aOSOxd3DbNAcXceIKw3XaMLqCRaH60L6yZVrJai9K2b6iIwg== +"@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/minimist@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.0.tgz#69a23a3ad29caf0097f06eda59b361ee2f0639f6" + integrity sha1-aaI6OtKcrwCX8G7aWbNh7i8GOfY= + "@types/mocha@^5.2.7": version "5.2.7" resolved "https://registry.npmjs.org/@types/mocha/-/mocha-5.2.7.tgz#315d570ccb56c53452ff8638738df60726d5b6ea" @@ -563,6 +1461,16 @@ resolved "https://registry.npmjs.org/@types/node/-/node-11.11.6.tgz#df929d1bb2eee5afdda598a41930fe50b43eaa6a" integrity sha512-Exw4yUWMBXM3X+8oqzJNRqZSwUAaS4+7NdvHqQuFi/d+synz++xmX3QIf+BFqneW8N31R8Ky+sikfZUXq07ggQ== +"@types/node@>= 8": + version "14.0.1" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.0.1.tgz#5d93e0a099cd0acd5ef3d5bde3c086e1f49ff68c" + integrity sha512-FAYBGwC+W6F9+huFIDtn43cpy7+SzG+atzRiTfdp3inUKL2hXnd4rG8hylJLIh4+hqrQy1P17kvJByE/z825hA== + +"@types/normalize-package-data@^2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e" + integrity sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA== + "@types/superagent@^3.8.3": version "3.8.7" resolved "https://registry.npmjs.org/@types/superagent/-/superagent-3.8.7.tgz#1f1ed44634d5459b3a672eb7235a8e7cfd97704c" @@ -619,6 +1527,23 @@ semver "^6.3.0" tsutils "^3.17.1" +"@zkochan/cmd-shim@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@zkochan/cmd-shim/-/cmd-shim-3.1.0.tgz#2ab8ed81f5bb5452a85f25758eb9b8681982fd2e" + integrity sha512-o8l0+x7C7sMZU3v9GuJIAU10qQLtwR1dtRQIOmlNMtyaqhmpXOzx1HWiYoWfmmf9HHZoAkXpc9TM9PQYF9d4Jg== + dependencies: + is-windows "^1.0.0" + mkdirp-promise "^5.0.1" + mz "^2.5.0" + +JSONStream@^1.0.4, JSONStream@^1.3.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" + abbrev@1: version "1.1.1" resolved "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" @@ -639,6 +1564,27 @@ acorn@^7.1.1: resolved "https://registry.npmjs.org/acorn/-/acorn-7.1.1.tgz#e35668de0b402f359de515c5482a1ab9f89a69bf" integrity sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg== +agent-base@4, 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" + +agentkeepalive@^3.4.1: + version "3.5.2" + resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-3.5.2.tgz#a113924dd3fa24a0bc3b78108c450c2abee00f67" + integrity sha512-e0L/HNe6qkQ7H19kTlRRqUibEAwDK5AFk6y3PtMsuut2VAH6+Q4xZml1tNDJD7kSAyqmbG/K08K5WEJYtUrSlQ== + dependencies: + humanize-ms "^1.2.1" + aggregate-error@^3.0.0: version "3.0.1" resolved "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.0.1.tgz#db2fe7246e536f40d9b5442a39e117d7dd6a24e0" @@ -731,6 +1677,11 @@ ansi-styles@^4.0.0, ansi-styles@^4.1.0: "@types/color-name" "^1.1.1" color-convert "^2.0.1" +any-promise@^1.0.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" + integrity sha1-q8av7tzqUugJzcA3au0845Y10X8= + anymatch@^1.3.0: version "1.3.2" resolved "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz#553dcb8f91e3c889845dfdba34c77721b90b9d7a" @@ -754,11 +1705,29 @@ append-transform@^2.0.0: dependencies: default-require-extensions "^3.0.0" +aproba@^1.0.3, aproba@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" + integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== + +aproba@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc" + integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== + archy@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/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.3" resolved "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" @@ -793,6 +1762,21 @@ arr-union@^3.1.0: resolved "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= +array-differ@^2.0.3: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-2.1.0.tgz#4b9c1c3f14b906757082925769e8ab904f4801b1" + integrity sha512-KbUpJgx909ZscOc/7CLATBFam7P1Z1QRQInvgT0UztM9Q72aGKCunKASAl7WNW0tnPmPyEMeMhdsfWhfmW037w== + +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-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-includes@^3.0.3, array-includes@^3.1.1: version "3.1.1" resolved "https://registry.npmjs.org/array-includes/-/array-includes-3.1.1.tgz#cdd67e6852bdf9c1215460786732255ed2459348" @@ -802,6 +1786,18 @@ array-includes@^3.0.3, array-includes@^3.1.1: es-abstract "^1.17.0" is-string "^1.0.5" +array-union@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" + integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk= + dependencies: + array-uniq "^1.0.1" + +array-uniq@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" + integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= + array-unique@^0.2.1: version "0.2.1" resolved "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" @@ -820,6 +1816,21 @@ array.prototype.flat@^1.2.1: define-properties "^1.1.3" es-abstract "^1.17.0-next.1" +arrify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" + integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= + +arrify@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa" + integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug== + +asap@^2.0.0: + 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.npmjs.org/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" @@ -874,6 +1885,11 @@ asynckit@^0.4.0: resolved "https://registry.npmjs.org/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.2: version "2.1.2" resolved "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" @@ -1499,6 +2515,11 @@ bcrypt-pbkdf@^1.0.0: 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.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" @@ -1538,7 +2559,7 @@ blakejs@^1.1.0: resolved "https://registry.npmjs.org/blakejs/-/blakejs-1.1.0.tgz#69df92ef953aa88ca51a32df6ab1c54a155fc7a5" integrity sha1-ad+S75U6qIylGjLfarHFShVfx6U= -bluebird@^3.7.2: +bluebird@^3.5.1, bluebird@^3.5.3, bluebird@^3.5.5, bluebird@^3.7.2: version "3.7.2" resolved "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== @@ -1656,11 +2677,52 @@ bs58@^4.0.1: dependencies: base-x "^3.0.2" +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: version "1.1.1" resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== +builtins@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88" + integrity sha1-y5T662HIaWRR2zZTThQi+U8K7og= + +byline@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/byline/-/byline-5.0.0.tgz#741c5216468eadc457b03410118ad77de8c1ddb1" + integrity sha1-dBxSFkaOrcRXsDQQEYrXfejB3bE= + +byte-size@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/byte-size/-/byte-size-5.0.1.tgz#4b651039a5ecd96767e71a3d7ed380e48bed4191" + integrity sha512-/XuKeqWocKsYa/cBY1YbSJSWWqTi4cFgr9S6OyM7PBaPbr9zvNGwWP33vt0uqGhwDdN+y3yhbXVILEUpnwEWGw== + +cacache@^12.0.0, cacache@^12.0.3: + version "12.0.4" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.4.tgz#668bcbd105aeb5f1d92fe25570ec9525c8faa40c" + integrity sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ== + dependencies: + bluebird "^3.5.5" + chownr "^1.1.1" + figgy-pudding "^3.5.1" + glob "^7.1.4" + graceful-fs "^4.1.15" + infer-owner "^1.0.3" + lru-cache "^5.1.1" + mississippi "^3.0.0" + mkdirp "^0.5.1" + move-concurrently "^1.0.1" + promise-inflight "^1.0.1" + rimraf "^2.6.3" + ssri "^6.0.1" + unique-filename "^1.1.1" + y18n "^4.0.0" + cache-base@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" @@ -1699,6 +2761,18 @@ caching-transform@^4.0.0: package-hash "^4.0.0" write-file-atomic "^3.0.0" +call-me-maybe@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" + integrity sha1-JtII6onje1y95gJQoV8DHBak1ms= + +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@^0.1.0: version "0.1.0" resolved "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f" @@ -1706,21 +2780,74 @@ caller-path@^0.1.0: dependencies: callsites "^0.2.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@^0.2.0: version "0.2.0" resolved "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca" integrity sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo= +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= + callsites@^3.0.0: version "3.1.0" resolved "https://registry.npmjs.org/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-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-keys@^6.2.2: + version "6.2.2" + resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-6.2.2.tgz#5e755d6ba51aa223ec7d3d52f25778210f9dc3c0" + integrity sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg== + dependencies: + camelcase "^5.3.1" + map-obj "^4.0.0" + quick-lru "^4.0.1" + +camelcase@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" + integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8= + +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.npmjs.org/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== +camelcase@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.0.0.tgz#5259f7c30e35e278f1bdc2a4d91230b37cad981e" + integrity sha512-8KMDF1Vz2gzOq54ONPJS65IvTUaB1cHJ2DMM7MbPmLZljDH1qpzzLsWdiN9pHh6qvkRVDTi/07+eNGch/oLU4w== + caniuse-lite@^1.0.30000844: version "1.0.30001036" resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001036.tgz#930ea5272010d8bf190d859159d757c0b398caf0" @@ -1779,7 +2906,7 @@ chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" -chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.4.2: +chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.3.1, chalk@^2.4.2: version "2.4.2" resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -1865,6 +2992,11 @@ chokidar@^3.2.2: optionalDependencies: fsevents "~2.1.2" +chownr@^1.1.1, chownr@^1.1.2: + version "1.1.4" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" + integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== + ci-info@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" @@ -1940,6 +3072,15 @@ cliui@^6.0.0: strip-ansi "^6.0.0" wrap-ansi "^6.2.0" +clone-deep@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" + integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== + dependencies: + is-plain-object "^2.0.4" + kind-of "^6.0.2" + shallow-clone "^3.0.0" + clone-response@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b" @@ -1947,6 +3088,16 @@ clone-response@^1.0.2: 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= + +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.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" @@ -2013,6 +3164,14 @@ colorspace@1.1.x: color "3.0.x" text-hex "1.0.x" +columnify@^1.5.4: + version "1.5.4" + resolved "https://registry.yarnpkg.com/columnify/-/columnify-1.5.4.tgz#4737ddf1c7b69a8a7c340570782e947eec8e78bb" + integrity sha1-Rzfd8ce2mop8NAVweC6UfuyOeLs= + dependencies: + strip-ansi "^3.0.0" + wcwidth "^1.0.0" + combined-stream@^1.0.6, combined-stream@~1.0.6: version "1.0.8" resolved "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" @@ -2020,7 +3179,7 @@ combined-stream@^1.0.6, combined-stream@~1.0.6: dependencies: delayed-stream "~1.0.0" -commander@^2.11.0: +commander@^2.11.0, commander@~2.20.3: version "2.20.3" resolved "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== @@ -2030,6 +3189,14 @@ commondir@^1.0.1: resolved "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= +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.0, component-emitter@^1.2.1: version "1.3.0" resolved "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" @@ -2040,6 +3207,16 @@ concat-map@0.0.1: resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= +concat-stream@^1.5.0: + version "1.6.2" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" + integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== + dependencies: + buffer-from "^1.0.0" + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" + concat-stream@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz#414cf5af790a48c60ab9be4527d56d5e41133cb1" @@ -2050,6 +3227,14 @@ concat-stream@^2.0.0: readable-stream "^3.0.2" typedarray "^0.0.6" +config-chain@^1.1.11: + version "1.1.12" + resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.12.tgz#0fde8d091200eb5e808caf25fe618c02f48e4efa" + integrity sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA== + dependencies: + ini "^1.3.4" + proto-list "~1.2.1" + configstore@^5.0.1: version "5.0.1" resolved "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz#d365021b5df4b98cdd187d6a3b0e3f6a7cc5ed96" @@ -2075,6 +3260,11 @@ confmgr@^1.0.5: typescript "^3.8.3" yaml "^1.8.2" +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= + contains-path@^0.1.0: version "0.1.0" resolved "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" @@ -2085,6 +3275,89 @@ content-type@^1.0.2: resolved "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== +conventional-changelog-angular@^5.0.3: + version "5.0.10" + resolved "https://registry.yarnpkg.com/conventional-changelog-angular/-/conventional-changelog-angular-5.0.10.tgz#5cf7b00dd315b6a6a558223c80d5ef24ddb34205" + integrity sha512-k7RPPRs0vp8+BtPsM9uDxRl6KcgqtCJmzRD1wRtgqmhQ96g8ifBGo9O/TZBG23jqlXS/rg8BKRDELxfnQQGiaA== + dependencies: + compare-func "^1.3.1" + q "^1.5.1" + +conventional-changelog-core@^3.1.6: + version "3.2.3" + resolved "https://registry.yarnpkg.com/conventional-changelog-core/-/conventional-changelog-core-3.2.3.tgz#b31410856f431c847086a7dcb4d2ca184a7d88fb" + integrity sha512-LMMX1JlxPIq/Ez5aYAYS5CpuwbOk6QFp8O4HLAcZxe3vxoCtABkhfjetk8IYdRB9CDQGwJFLR3Dr55Za6XKgUQ== + dependencies: + conventional-changelog-writer "^4.0.6" + conventional-commits-parser "^3.0.3" + 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 "^2.0.3" + lodash "^4.2.1" + 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-preset-loader@^2.1.1: + version "2.3.4" + resolved "https://registry.yarnpkg.com/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.3.4.tgz#14a855abbffd59027fd602581f1f34d9862ea44c" + integrity sha512-GEKRWkrSAZeTq5+YjUZOYxdHq+ci4dNwHvpaBC3+ENalzFWuCWa9EZXSuZBpkr72sMdKB+1fyDV4takK1Lf58g== + +conventional-changelog-writer@^4.0.6: + version "4.0.16" + resolved "https://registry.yarnpkg.com/conventional-changelog-writer/-/conventional-changelog-writer-4.0.16.tgz#ca10f2691a8ea6d3c2eb74bd35bcf40aa052dda5" + integrity sha512-jmU1sDJDZpm/dkuFxBeRXvyNcJQeKhGtVcFFkwTphUAzyYWcwz2j36Wcv+Mv2hU3tpvLMkysOPXJTLO55AUrYQ== + dependencies: + compare-func "^1.3.1" + conventional-commits-filter "^2.0.6" + dateformat "^3.0.0" + handlebars "^4.7.6" + json-stringify-safe "^5.0.1" + lodash "^4.17.15" + meow "^7.0.0" + semver "^6.0.0" + split "^1.0.0" + through2 "^3.0.0" + +conventional-commits-filter@^2.0.2, conventional-commits-filter@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/conventional-commits-filter/-/conventional-commits-filter-2.0.6.tgz#0935e1240c5ca7698329affee1b6a46d33324c4c" + integrity sha512-4g+sw8+KA50/Qwzfr0hL5k5NWxqtrOVw4DDk3/h6L85a9Gz0/Eqp3oP+CWCNfesBvZZZEFHF7OTEbRe+yYSyKw== + dependencies: + lodash.ismatch "^4.4.0" + modify-values "^1.0.0" + +conventional-commits-parser@^3.0.3: + version "3.1.0" + resolved "https://registry.yarnpkg.com/conventional-commits-parser/-/conventional-commits-parser-3.1.0.tgz#10140673d5e7ef5572633791456c5d03b69e8be4" + integrity sha512-RSo5S0WIwXZiRxUGTPuYFbqvrR4vpJ1BDdTlthFgvHt5kEdnd1+pdvwWphWn57/oIl4V72NMmOocFqqJ8mFFhA== + dependencies: + JSONStream "^1.0.4" + is-text-path "^1.0.1" + lodash "^4.17.15" + meow "^7.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.5.0, convert-source-map@^1.5.1, convert-source-map@^1.7.0: version "1.7.0" resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" @@ -2097,6 +3370,18 @@ cookiejar@^2.1.0, cookiejar@^2.1.1: resolved "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.2.tgz#dd8a235530752f988f9a0844f3fc589e3111125c" integrity sha512-Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA== +copy-concurrently@^1.0.0: + version "1.0.5" + resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" + integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A== + dependencies: + aproba "^1.1.1" + fs-write-stream-atomic "^1.0.8" + iferr "^0.1.5" + mkdirp "^0.5.1" + rimraf "^2.5.4" + run-queue "^1.0.0" + copy-descriptor@^0.1.0: version "0.1.1" resolved "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" @@ -2117,6 +3402,16 @@ core-util-is@1.0.2, core-util-is@~1.0.0: resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= +cosmiconfig@^5.1.0: + 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" + create-error-class@^3.0.0: version "3.0.2" resolved "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6" @@ -2156,7 +3451,7 @@ cross-spawn@^5.0.1: shebang-command "^1.2.0" which "^1.2.9" -cross-spawn@^6.0.5: +cross-spawn@^6.0.0, cross-spawn@^6.0.5: version "6.0.5" resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== @@ -2186,6 +3481,18 @@ cuint@^0.2.2: resolved "https://registry.npmjs.org/cuint/-/cuint-0.2.2.tgz#408086d409550c2631155619e9fa7bcadc3b991b" integrity sha1-QICG1AlVDCYxFVYZ6fp7ytw7mRs= +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" + +cyclist@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" + integrity sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk= + d@1, d@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" @@ -2194,6 +3501,13 @@ d@1, d@^1.0.1: es5-ext "^0.10.50" type "^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.npmjs.org/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" @@ -2201,13 +3515,25 @@ dashdash@^1.12.0: dependencies: assert-plus "^1.0.0" +dateformat@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae" + integrity sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q== + debug-log@^1.0.0: version "1.0.1" resolved "https://registry.npmjs.org/debug-log/-/debug-log-1.0.1.tgz#2307632d4c04382b8df8a32f70b895046d52745f" integrity sha1-IwdjLUwEOCuN+KMvcLiVBG1SdF8= -debug@3.2.6, debug@^3.1.0, debug@^3.2.6: - version "3.2.6" +debug@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" + integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== + dependencies: + ms "2.0.0" + +debug@3.2.6, debug@^3.1.0, debug@^3.2.6: + version "3.2.6" resolved "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== dependencies: @@ -2227,7 +3553,20 @@ debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: dependencies: ms "^2.1.1" -decamelize@^1.2.0: +debuglog@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492" + integrity sha1-qiT/uaw9+aI1GDfPstJ5NgzXhJI= + +decamelize-keys@^1.0.0, decamelize-keys@^1.1.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.2, decamelize@^1.2.0: version "1.2.0" resolved "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= @@ -2244,6 +3583,11 @@ decompress-response@^3.3.0: dependencies: mimic-response "^1.0.0" +dedent@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" + integrity sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw= + deep-eql@^3.0.1: version "3.0.1" resolved "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz#dfc9404400ad1c8fe023e7da1df1c147c4b444df" @@ -2268,6 +3612,13 @@ default-require-extensions@^3.0.0: dependencies: strip-bom "^4.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.3" resolved "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591" @@ -2331,6 +3682,16 @@ delayed-stream@~1.0.0: resolved "https://registry.npmjs.org/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= + +deprecation@^2.0.0, deprecation@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/deprecation/-/deprecation-2.3.1.tgz#6368cbdb40abf3373b525ac87e4a260c3a700919" + integrity sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ== + detect-file@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7" @@ -2343,6 +3704,19 @@ detect-indent@^4.0.0: dependencies: repeating "^2.0.0" +detect-indent@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-5.0.0.tgz#3871cc0a6a002e8c3e5b3cf7f336264675f06b9d" + integrity sha1-OHHMCmoALow+Wzz38zYmRnXwa50= + +dezalgo@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/dezalgo/-/dezalgo-1.0.3.tgz#7f742de066fc748bc8db820569dddce49bf0d456" + integrity sha1-f3Qt4Gb8dIvI24IFad3c5Jvw1FY= + dependencies: + asap "^2.0.0" + wrappy "1" + diagnostics@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/diagnostics/-/diagnostics-1.1.1.tgz#cab6ac33df70c9d9a727490ae43ac995a769b22a" @@ -2362,6 +3736,13 @@ diff@^4.0.1: resolved "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== +dir-glob@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.2.2.tgz#fa09f0694153c8918b18ba0deafae94769fc50c4" + integrity sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw== + dependencies: + path-type "^3.0.0" + doctrine@1.5.0: version "1.5.0" resolved "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" @@ -2384,6 +3765,20 @@ doctrine@^3.0.0: dependencies: esutils "^2.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.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.0.tgz#1f19e0c2e1aa0e32797c49799f2837ac6af69c57" + integrity sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ== + dependencies: + is-obj "^1.0.0" + dot-prop@^5.2.0: version "5.2.0" resolved "https://registry.npmjs.org/dot-prop/-/dot-prop-5.2.0.tgz#c34ecc29556dc45f1f4c22697b6f4904e0cc4fcb" @@ -2401,6 +3796,21 @@ duplexer3@^0.1.4: resolved "https://registry.npmjs.org/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= + +duplexify@^3.4.2, duplexify@^3.6.0: + version "3.7.1" + resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" + integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== + dependencies: + end-of-stream "^1.0.0" + inherits "^2.0.1" + readable-stream "^2.0.0" + stream-shift "^1.0.0" + ecc-jsbn@~0.1.1: version "0.1.2" resolved "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" @@ -2451,7 +3861,7 @@ encoding@^0.1.11: dependencies: iconv-lite "~0.4.13" -end-of-stream@^1.1.0: +end-of-stream@^1.0.0, end-of-stream@^1.1.0: version "1.4.4" resolved "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== @@ -2463,11 +3873,26 @@ entities@~2.0.0: resolved "https://registry.npmjs.org/entities/-/entities-2.0.0.tgz#68d6084cab1b079767540d80e56a39b423e4abf4" integrity sha512-D9f7V0JSRwIxlRI2mjMqufDrRDnx8p+eEOz7aUM9SuvF8gsBzra0/6tbjl1m8eQHrZlYj6PxqE00hZ1SAIKPLw== +env-paths@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.0.tgz#cdca557dc009152917d6166e2febe1f039685e43" + integrity sha512-6u0VYSCo/OW6IoD5WCLLy9JUGARbamfSavcNXry/eu8aHVFei6CD3Sw+VGX5alea1i9pgPHW0mbu6Xj0uBh7gA== + env-variable@0.0.x: version "0.0.6" resolved "https://registry.yarnpkg.com/env-variable/-/env-variable-0.0.6.tgz#74ab20b3786c545b62b4a4813ab8cf22726c9808" integrity sha512-bHz59NlBbtS0NhftmR8+ExBEekE7br0e01jw+kk0NDro7TtZzBYZ5ScGPs3OmwnpyfHTHOtr1Y6uedCdrIldtg== +envinfo@^7.3.1: + version "7.5.1" + resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.5.1.tgz#93c26897225a00457c75e734d354ea9106a72236" + integrity sha512-hQBkDf2iO4Nv0CNHpCuSBeaSrveU6nThVxFGTrq/eDlV716UQk09zChaJae4mZRsos1x4YLY2TaH3LHUae3ZmQ== + +err-code@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/err-code/-/err-code-1.1.2.tgz#06e0116d3028f6aef4806849eb0ea6a748ae6960" + integrity sha1-BuARbTAo9q70gGhJ6w6mp0iuaWA= + error-ex@^1.2.0, error-ex@^1.3.1: version "1.3.2" resolved "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" @@ -2524,6 +3949,18 @@ es6-iterator@^2.0.3, es6-iterator@~2.0.3: es5-ext "^0.10.35" es6-symbol "^3.1.1" +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" + es6-symbol@^3.1.1, es6-symbol@~3.1.3: version "3.1.3" resolved "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18" @@ -3073,6 +4510,11 @@ event-emitter@^0.3.5: d "1" es5-ext "~0.10.14" +eventemitter3@^3.1.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.2.tgz#2d3d48f9c346698fce83a85d7d664e98535df6e7" + integrity sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q== + eventemitter3@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.0.tgz#d65176163887ee59f386d64c82610b696a4a74eb" @@ -3091,6 +4533,19 @@ execa@^0.7.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" + expand-brackets@^0.1.4: version "0.1.5" resolved "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" @@ -3206,6 +4661,18 @@ fast-deep-equal@^3.1.1: resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz#545145077c501491e33b15ec408c294376e94ae4" integrity sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA== +fast-glob@^2.2.6: + version "2.2.7" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.7.tgz#6953857c3afa475fff92ee6015d52da70a4cd39d" + integrity sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw== + dependencies: + "@mrmlnc/readdir-enhanced" "^2.2.1" + "@nodelib/fs.stat" "^1.1.2" + glob-parent "^3.1.0" + is-glob "^4.0.0" + merge2 "^1.2.3" + micromatch "^3.1.10" + fast-json-stable-stringify@^2.0.0: version "2.1.0" resolved "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" @@ -3226,6 +4693,11 @@ fecha@^2.3.3: resolved "https://registry.yarnpkg.com/fecha/-/fecha-2.3.3.tgz#948e74157df1a32fd1b12c3a3c3cdcb6ec9d96cd" integrity sha512-lUGBnIamTAwk4znq5BcqsDaxSmZ9nDVJaij6NvRt/Tg4R69gERA+otPKbS86ROw9nxVMw2/mp1fnaiWqbs6Sdg== +figgy-pudding@^3.4.1, figgy-pudding@^3.5.1: + version "3.5.2" + resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" + integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw== + figures@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" @@ -3322,6 +4794,14 @@ find-up@3.0.0, find-up@^3.0.0: dependencies: locate-path "^3.0.0" +find-up@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" + integrity sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8= + dependencies: + 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.npmjs.org/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" @@ -3378,6 +4858,14 @@ flatted@^2.0.0: resolved "https://registry.npmjs.org/flatted/-/flatted-2.0.1.tgz#69e57caa8f0eacbc281d2e2cb458d46fdb449e08" integrity sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg== +flush-write-stream@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" + integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w== + dependencies: + inherits "^2.0.3" + readable-stream "^2.3.6" + for-in@^1.0.1, for-in@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" @@ -3433,16 +4921,50 @@ fragment-cache@^0.2.1: dependencies: map-cache "^0.2.2" +from2@^2.1.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" + integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8= + dependencies: + inherits "^2.0.1" + readable-stream "^2.0.0" + fromentries@^1.2.0: version "1.2.0" resolved "https://registry.npmjs.org/fromentries/-/fromentries-1.2.0.tgz#e6aa06f240d6267f913cea422075ef88b63e7897" integrity sha512-33X7H/wdfO99GdRLLgkjUrD4geAFdq/Uv0kl3HD4da6HDixd2GUg8Mw7dahLCV9r/EARkmtYBB6Tch4EEokFTQ== +fs-extra@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" + integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== + dependencies: + graceful-fs "^4.2.0" + 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-readdir-recursive@^1.0.0: version "1.1.0" resolved "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz#e32fc030a2ccee44a6b5371308da54be0b397d27" integrity sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA== +fs-write-stream-atomic@^1.0.8: + version "1.0.10" + resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" + integrity sha1-tH31NJPvkR33VzHnCp3tAYnbQMk= + dependencies: + graceful-fs "^4.1.2" + iferr "^0.1.5" + imurmurhash "^0.1.4" + readable-stream "1 || 2" + fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" @@ -3482,6 +5004,25 @@ funding@^1.0.0: term-size "^2.1.0" word-wrap "^1.2.3" +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" + +genfun@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/genfun/-/genfun-5.0.0.tgz#9dd9710a06900a5c4a5bf57aca5da4e52fe76537" + integrity sha512-KGDOARWVga7+rnB3z9Sd2Letx515owfk0hSxHGuqjANb1M+x2bGZGqHLiozPsYMdM2OubeMni/Hpwmjq6qIUhA== + gensync@^1.0.0-beta.1: version "1.0.0-beta.1" resolved "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269" @@ -3507,6 +5048,27 @@ get-func-name@^2.0.0: resolved "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41" integrity sha1-6td0q+5y4gQJQzoGY2YCPdaIekE= +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-port@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/get-port/-/get-port-4.2.0.tgz#e37368b1e863b7629c43c5a323625f95cf24b119" + integrity sha512-/b3jarXkH8KJoOMQc3uVGHASwGLPq3gSFJ7tgJm2diza+bydJPTGOibin2steecKeOylE8oY2JERlVWkAJO6yw== + +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-stdin@^6.0.0: version "6.0.0" resolved "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz#9e09bf712b360ab9225e812048f71fde9c89657b" @@ -3522,7 +5084,7 @@ get-stream@^3.0.0: resolved "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ= -get-stream@^4.1.0: +get-stream@^4.0.0, get-stream@^4.1.0: version "4.1.0" resolved "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== @@ -3548,6 +5110,55 @@ getpass@^0.1.1: 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-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" + +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.npmjs.org/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" @@ -3563,6 +5174,14 @@ glob-parent@^2.0.0: dependencies: is-glob "^2.0.0" +glob-parent@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" + integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= + dependencies: + is-glob "^3.1.0" + path-dirname "^1.0.0" + glob-parent@^5.0.0, glob-parent@~5.1.0: version "5.1.1" resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229" @@ -3570,6 +5189,11 @@ glob-parent@^5.0.0, glob-parent@~5.1.0: dependencies: is-glob "^4.0.1" +glob-to-regexp@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" + integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs= + glob@7.1.3: version "7.1.3" resolved "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" @@ -3582,7 +5206,7 @@ glob@7.1.3: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.0.5, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: +glob@^7.0.0, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: version "7.1.6" resolved "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== @@ -3638,6 +5262,20 @@ globals@^9.18.0: resolved "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" integrity sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ== +globby@^9.2.0: + version "9.2.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-9.2.0.tgz#fd029a706c703d29bdd170f4b6db3a3f7a7cb63d" + integrity sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg== + dependencies: + "@types/glob" "^7.1.1" + array-union "^1.0.2" + dir-glob "^2.2.2" + fast-glob "^2.2.6" + glob "^7.1.3" + ignore "^4.0.3" + pify "^4.0.1" + slash "^2.0.0" + got@^6.7.1: version "6.7.1" resolved "https://registry.npmjs.org/got/-/got-6.7.1.tgz#240cd05785a9a18e561dc1b44b41c763ef1e8db0" @@ -3677,11 +5315,28 @@ graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.4 resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423" integrity sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ== +graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.2: + version "4.2.4" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" + integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== + growl@1.10.5: version "1.10.5" resolved "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== +handlebars@^4.7.6: + version "4.7.6" + resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.6.tgz#d4c05c1baf90e9945f77aa68a7a219aa4a7df74e" + integrity sha512-1f2BACcBfiwAfStCKZNrUCgqNZkGsAT7UM3kkYtXuLo0KnaVfjKOyf7PRzB6++aK9STyT1Pd2ZCPe3EGOXleXA== + dependencies: + minimist "^1.2.5" + neo-async "^2.6.0" + source-map "^0.6.1" + wordwrap "^1.0.0" + optionalDependencies: + uglify-js "^3.1.4" + har-schema@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" @@ -3695,6 +5350,11 @@ har-validator@~5.1.3: ajv "^6.5.5" har-schema "^2.0.0" +hard-rejection@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/hard-rejection/-/hard-rejection-2.1.0.tgz#1c6eda5c1685c63942766d79bb40ae773cecd883" + integrity sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA== + has-ansi@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" @@ -3717,6 +5377,11 @@ has-symbols@^1.0.0, has-symbols@^1.0.1: resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== +has-unicode@^2.0.0, has-unicode@^2.0.1: + 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.npmjs.org/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" @@ -3789,6 +5454,11 @@ he@1.2.0: resolved "https://registry.npmjs.org/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== +highlight.js@^10.0.0: + version "10.0.3" + resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-10.0.3.tgz#5effcc58420f113f279a0badb8ac50c4be06e63b" + integrity sha512-9FG7SSzv9yOY5CGGxfI6NDm7xLYtMOjKtPBxw7Zff3t5UcRcUNTGEeS8lNjhceL34KeetLMoGMFTGoaa83HwyQ== + hmac-drbg@^1.0.0: version "1.0.1" resolved "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" @@ -3813,7 +5483,7 @@ homedir-polyfill@^1.0.1: dependencies: parse-passwd "^1.0.0" -hosted-git-info@^2.1.4: +hosted-git-info@^2.1.4, hosted-git-info@^2.7.1: version "2.8.8" resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488" integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg== @@ -3823,11 +5493,24 @@ html-escaper@^2.0.0: resolved "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.1.tgz#beed86b5d2b921e92533aa11bce6d8e3b583dee7" integrity sha512-hNX23TjWwD3q56HpWjUHOKj1+4KKlnjv9PcmBUYKVpga+2cnb9nDx/B1o0yO4n+RZXZdiNxzx6B24C9aNMTkkQ== +http-cache-semantics@^3.8.1: + version "3.8.1" + resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz#39b0e16add9b605bf0a9ef3d9daaf4843b4cacd2" + integrity sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w== + http-cache-semantics@^4.0.0: version "4.1.0" resolved "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390" integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ== +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.npmjs.org/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" @@ -3837,6 +5520,21 @@ http-signature@~1.2.0: jsprim "^1.2.2" sshpk "^1.7.0" +https-proxy-agent@^2.2.3: + version "2.2.4" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz#4ee7a737abd92678a293d9b34a1af4d0d08c787b" + integrity sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg== + dependencies: + agent-base "^4.3.0" + debug "^3.1.0" + +humanize-ms@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" + integrity sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0= + dependencies: + ms "^2.0.0" + iconv-lite@^0.4.17, iconv-lite@^0.4.24, iconv-lite@~0.4.13: version "0.4.24" resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" @@ -3849,17 +5547,29 @@ idb-wrapper@^1.4.1: resolved "https://registry.npmjs.org/idb-wrapper/-/idb-wrapper-1.7.2.tgz#8251afd5e77fe95568b1c16152eb44b396767ea2" integrity sha512-zfNREywMuf0NzDo9mVsL0yegjsirJxHpKHvWcyRozIqQy89g0a3U+oBPOCN4cc0oCiOuYgZHimzaW/R46G1Mpg== +iferr@^0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" + integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE= + ignore-by-default@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09" integrity sha1-SMptcvbGo68Aqa1K5odr44ieKwk= +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@^3.0.9: version "3.3.10" resolved "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug== -ignore@^4.0.2, ignore@^4.0.6: +ignore@^4.0.2, ignore@^4.0.3, ignore@^4.0.6: version "4.0.6" resolved "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== @@ -3874,6 +5584,14 @@ immediate@~3.0.5: resolved "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" integrity sha1-nbHb0Pr43m++D13V5Wu2BigN5ps= +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-fresh@^3.0.0: version "3.2.1" resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66" @@ -3887,16 +5605,41 @@ import-lazy@^2.1.0: resolved "https://registry.npmjs.org/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.npmjs.org/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" + +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= + indent-string@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== +infer-owner@^1.0.3, infer-owner@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" + integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== + inflight@^1.0.4: version "1.0.6" resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" @@ -3910,11 +5653,25 @@ inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.3: resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== -ini@^1.3.4, ini@^1.3.5, ini@~1.3.0: +ini@^1.3.2, ini@^1.3.4, ini@^1.3.5, ini@~1.3.0: version "1.3.5" resolved "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== +init-package-json@^1.10.3: + version "1.10.3" + resolved "https://registry.yarnpkg.com/init-package-json/-/init-package-json-1.10.3.tgz#45ffe2f610a8ca134f2bd1db5637b235070f6cbe" + integrity sha512-zKSiXKhQveNteyhcj1CoOP8tqp1QuxPIPBl8Bid99DGLFqA1p87M6lNgfjJHSBoWJJlidGOv5rWjyYKEB3g2Jw== + dependencies: + glob "^7.1.1" + npm-package-arg "^4.0.0 || ^5.0.0 || ^6.0.0" + promzard "^0.3.0" + read "~1.0.1" + read-package-json "1 || 2" + semver "2.x || 3.x || 4 || 5" + validate-npm-package-license "^3.0.1" + validate-npm-package-name "^3.0.0" + inquirer@^5.2.0: version "5.2.0" resolved "https://registry.npmjs.org/inquirer/-/inquirer-5.2.0.tgz#db350c2b73daca77ff1243962e9f22f099685726" @@ -3934,7 +5691,7 @@ inquirer@^5.2.0: strip-ansi "^4.0.0" through "^2.3.6" -inquirer@^6.4.1: +inquirer@^6.2.0, inquirer@^6.4.1: version "6.5.2" resolved "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz#ad50942375d036d327ff528c08bd5fab089928ca" integrity sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ== @@ -3981,6 +5738,11 @@ internal-slot@^1.0.2: has "^1.0.3" side-channel "^1.0.2" +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.npmjs.org/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" @@ -3998,6 +5760,11 @@ ip-regex@^4.1.0: resolved "https://registry.npmjs.org/ip-regex/-/ip-regex-4.1.0.tgz#5ad62f685a14edb421abebc2fff8db94df67b455" integrity sha512-pKnZpbgCTfH/1NLIlOduP/V+WRXzC2MOz3Qo8xmxk8C5GudJLgK5QyLVXOSWy3ParAH7Eemurl3xjv/WXYFvMA== +ip@1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" + integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= + is-accessor-descriptor@^0.1.6: version "0.1.6" resolved "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" @@ -4095,6 +5862,11 @@ is-descriptor@^1.0.0, is-descriptor@^1.0.2: 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.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1" @@ -4124,7 +5896,7 @@ is-extglob@^1.0.0: resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" integrity sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA= -is-extglob@^2.1.1: +is-extglob@^2.1.0, is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= @@ -4134,6 +5906,13 @@ is-finite@^1.0.0: resolved "https://registry.npmjs.org/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.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" @@ -4151,6 +5930,13 @@ is-glob@^2.0.0, is-glob@^2.0.1: dependencies: is-extglob "^1.0.0" +is-glob@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" + integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= + dependencies: + is-extglob "^2.1.0" + is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: version "4.0.1" resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" @@ -4202,6 +5988,11 @@ is-number@^7.0.0: resolved "https://registry.npmjs.org/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" + integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= + is-obj@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" @@ -4212,6 +6003,11 @@ is-path-inside@^3.0.1: resolved "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.2.tgz#f5220fc82a3e233757291dddc9c5877f2a1f3017" integrity sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg== +is-plain-obj@^1.0.0, 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.3, is-plain-object@^2.0.4: version "2.0.4" resolved "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" @@ -4219,6 +6015,13 @@ is-plain-object@^2.0.3, is-plain-object@^2.0.4: 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.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" @@ -4256,6 +6059,13 @@ is-retry-allowed@^1.0.0: resolved "https://registry.npmjs.org/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.0.1, is-stream@^1.1.0: version "1.1.0" resolved "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" @@ -4278,12 +6088,24 @@ 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, is-typedarray@~1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= -is-windows@^1.0.1, is-windows@^1.0.2: +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.0, is-windows@^1.0.1, is-windows@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== @@ -4315,6 +6137,11 @@ isobject@^3.0.0, isobject@^3.0.1: resolved "https://registry.npmjs.org/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== + isomorphic-fetch@^2.2.1: version "2.2.1" resolved "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz#611ae1acf14f5e81f729507472819fe9733558a9" @@ -4482,7 +6309,7 @@ json-buffer@3.0.0: resolved "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" integrity sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg= -json-parse-better-errors@^1.0.1: +json-parse-better-errors@^1.0.0, json-parse-better-errors@^1.0.1: version "1.0.2" resolved "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== @@ -4502,7 +6329,7 @@ json-stable-stringify-without-jsonify@^1.0.1: resolved "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= -json-stringify-safe@~5.0.1: +json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: version "5.0.1" resolved "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= @@ -4519,6 +6346,18 @@ json5@^2.1.2: dependencies: minimist "^1.2.5" +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" + +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.npmjs.org/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" @@ -4589,6 +6428,30 @@ latest-version@^5.0.0: dependencies: package-json "^6.3.0" +lerna@^3.21.0: + version "3.21.0" + resolved "https://registry.yarnpkg.com/lerna/-/lerna-3.21.0.tgz#c81a0f8df45c6b7c9d3fc9fdcd0f846aca2375c6" + integrity sha512-ux8yOwQEgIXOZVUfq+T8nVzPymL19vlIoPbysOP3YA4hcjKlqQIlsjI/1ugBe6b4MF7W4iV5vS3gH9cGqBBc1A== + dependencies: + "@lerna/add" "3.21.0" + "@lerna/bootstrap" "3.21.0" + "@lerna/changed" "3.21.0" + "@lerna/clean" "3.21.0" + "@lerna/cli" "3.18.5" + "@lerna/create" "3.21.0" + "@lerna/diff" "3.21.0" + "@lerna/exec" "3.21.0" + "@lerna/import" "3.21.0" + "@lerna/info" "3.21.0" + "@lerna/init" "3.21.0" + "@lerna/link" "3.21.0" + "@lerna/list" "3.21.0" + "@lerna/publish" "3.21.0" + "@lerna/run" "3.21.0" + "@lerna/version" "3.21.0" + import-local "^2.0.0" + npmlog "^4.1.2" + levn@^0.3.0, levn@~0.3.0: version "0.3.0" resolved "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" @@ -4604,6 +6467,11 @@ lie@3.1.1: dependencies: immediate "~3.0.5" +lines-and-columns@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" + integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= + linkify-it@^2.0.0: version "2.2.0" resolved "https://registry.npmjs.org/linkify-it/-/linkify-it-2.2.0.tgz#e3b54697e78bf915c70a38acd78fd09e0058b1cf" @@ -4611,6 +6479,17 @@ linkify-it@^2.0.0: dependencies: uc.micro "^1.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" + 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@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" @@ -4631,7 +6510,7 @@ load-json-file@^4.0.0: pify "^3.0.0" strip-bom "^3.0.0" -load-json-file@^5.2.0: +load-json-file@^5.2.0, load-json-file@^5.3.0: version "5.3.0" resolved "https://registry.npmjs.org/load-json-file/-/load-json-file-5.3.0.tgz#4d3c1e01fa1c03ea78a60ac7af932c9ce53403f3" integrity sha512-cJGP40Jc/VXUsp8/OrnyKyTZ1y6v/dphm3bioS+RrKXjK2BB6wHUd6JptZEFDGgGahMT+InnZO5i1Ei9mpC8Bw== @@ -4672,17 +6551,67 @@ locate-path@^5.0.0: 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.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.flattendeep@^4.4.0: version "4.4.0" resolved "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz#fb030917f86a3134e5bc9bec0d69e0013ddfedb2" integrity sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI= +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.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, lodash.template@^4.5.0: + 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@^3.10.1: version "3.10.1" resolved "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6" integrity sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y= -lodash@^4.17.12, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.3.0: +lodash@^4.17.12, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.2.1, lodash@^4.3.0: version "4.17.15" resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== @@ -4724,6 +6653,14 @@ loose-envify@^1.0.0, loose-envify@^1.4.0: 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, lowercase-keys@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" @@ -4742,6 +6679,13 @@ lru-cache@^4.0.1: 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" + lru-queue@0.1: version "0.1.0" resolved "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz#2738bd9f0d3cf4f84490c5736c48699ac632cda3" @@ -4749,6 +6693,31 @@ lru-queue@0.1: dependencies: es5-ext "~0.10.2" +lunr@^2.3.8: + version "2.3.8" + resolved "https://registry.yarnpkg.com/lunr/-/lunr-2.3.8.tgz#a8b89c31f30b5a044b97d2d28e2da191b6ba2072" + integrity sha512-oxMeX/Y35PNFuZoHp+jUj5OSEmLCaIH4KTFJh7a93cHBoFmpw2IoPs22VIz7vyO2YUnx2Tn9dzIwO2P/4quIRg== + +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-dir@^3.0.0, make-dir@^3.0.2: version "3.0.2" resolved "https://registry.npmjs.org/make-dir/-/make-dir-3.0.2.tgz#04a1acbf22221e1d6ef43559f43e05a90dbb4392" @@ -4761,15 +6730,47 @@ make-error@^1.1.1: resolved "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== +make-fetch-happen@^5.0.0: + version "5.0.2" + resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-5.0.2.tgz#aa8387104f2687edca01c8687ee45013d02d19bd" + integrity sha512-07JHC0r1ykIoruKO8ifMXu+xEU8qOXDFETylktdug6vJDACnP+HKevOu3PXyNPzFyTSlz8vrBYlBO1JZRe8Cag== + dependencies: + agentkeepalive "^3.4.1" + cacache "^12.0.0" + http-cache-semantics "^3.8.1" + http-proxy-agent "^2.1.0" + https-proxy-agent "^2.2.3" + lru-cache "^5.1.1" + mississippi "^3.0.0" + node-fetch-npm "^2.0.2" + promise-retry "^1.1.1" + socks-proxy-agent "^4.0.0" + ssri "^6.0.0" + map-cache@^0.2.2: version "0.2.2" resolved "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= -map-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" - integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= +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-obj@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-4.1.0.tgz#b91221b542734b9f14256c0132c897c5d7256fd5" + integrity sha512-glc9y00wgtwcDmp7GaE/0b0OnxpNJsVf3ael/An6Fe2Q51LLwN1er6sdomLRzz5h0+yMpiYLhWYF5R7HeqVd4g== + +map-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" + integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= dependencies: object-visit "^1.0.0" @@ -4789,6 +6790,11 @@ markdown-it@^10.0.0: mdurl "^1.0.1" uc.micro "^1.0.5" +marked@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/marked/-/marked-1.0.0.tgz#d35784245a04871e5988a491e28867362e941693" + integrity sha512-Wo+L1pWTVibfrSr+TTtMuiMfNzmZWiOPeO7rZsQUY5bgsxpHesBEcIWJloWVTFnrMXnf/TL30eTFSGJddmQAng== + marked@^0.8.2: version "0.8.2" resolved "https://registry.npmjs.org/marked/-/marked-0.8.2.tgz#4faad28d26ede351a7a1aaa5fec67915c869e355" @@ -4850,6 +6856,61 @@ memoizee@^0.4.14: next-tick "1" timers-ext "^0.1.5" +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" + +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@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/meow/-/meow-7.0.1.tgz#1ed4a0a50b3844b451369c48362eb0515f04c1dc" + integrity sha512-tBKIQqVrAHqwit0vfuFPY3LlzJYkEOFyKa3bPgxzNl6q/RtN8KQ+ALYEASYuFayzSAsjlhXj/JZ10rH85Q6TUw== + dependencies: + "@types/minimist" "^1.2.0" + arrify "^2.0.1" + camelcase "^6.0.0" + camelcase-keys "^6.2.2" + decamelize-keys "^1.1.0" + hard-rejection "^2.1.0" + minimist-options "^4.0.2" + normalize-package-data "^2.5.0" + read-pkg-up "^7.0.1" + redent "^3.0.0" + trim-newlines "^3.0.0" + type-fest "^0.13.1" + yargs-parser "^18.1.3" + +merge2@^1.2.3: + version "1.3.0" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.3.0.tgz#5b366ee83b2f1582c48f87e47cf1a9352103ca81" + integrity sha512-2j4DAdlBOkiSZIsaXk4mTE3sRS02yBHAtfy127xRV3bQUFqXkjHCHLW6Scv7DwNRbIWNHH8zpnz9zMaKXIdvYw== + merge@^1.2.1: version "1.2.1" resolved "https://registry.npmjs.org/merge/-/merge-1.2.1.tgz#38bebf80c3220a8a487b6fcfb3941bb11720c145" @@ -4930,6 +6991,11 @@ mimic-response@^1.0.0, mimic-response@^1.0.1: resolved "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== +min-indent@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.0.tgz#cfc45c37e9ec0d8f0a0ec3dd4ef7f7c3abe39256" + integrity sha1-z8RcN+nsDY8KDsPdTvf3w6vjklY= + minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" @@ -4940,19 +7006,35 @@ minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: resolved "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= -minimatch@3.0.4, minimatch@^3.0.3, minimatch@^3.0.4: +minimatch@3.0.4, minimatch@^3.0.0, minimatch@^3.0.3, minimatch@^3.0.4: version "3.0.4" resolved "https://registry.npmjs.org/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-options@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-4.0.2.tgz#29c4021373ded40d546186725e57761e4b1984a7" + integrity sha512-seq4hpWkYSUh1y7NXxzucwAN9yVlBc3Upgdjz8vLCP97jG8kaOmzYrVH/m7tQ1NYD1wdtZbSLfdy4zFmRWuc/w== + dependencies: + arrify "^1.0.1" + is-plain-obj "^1.1.0" + minimist@0.0.8: version "0.0.8" resolved "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= -minimist@^1.1.0, minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.5: +minimist@^1.1.0, minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0, minimist@^1.2.5: version "1.2.5" resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== @@ -4973,6 +7055,37 @@ minimongo@6.5.0: js-sha1 "^0.6.0" lodash "^3.10.1" +minipass@^2.3.5, 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" + +mississippi@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" + integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA== + dependencies: + concat-stream "^1.5.0" + duplexify "^3.4.2" + end-of-stream "^1.1.0" + flush-write-stream "^1.0.0" + from2 "^2.1.0" + parallel-transform "^1.1.0" + pump "^3.0.0" + pumpify "^1.3.3" + stream-each "^1.1.0" + through2 "^2.0.0" + mixin-deep@^1.2.0: version "1.3.2" resolved "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" @@ -4981,6 +7094,18 @@ mixin-deep@^1.2.0: for-in "^1.0.2" is-extendable "^1.0.1" +mkdirp-promise@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/mkdirp-promise/-/mkdirp-promise-5.0.1.tgz#e9b8f68e552c68a9c1713b84883f7a1dd039b8a1" + integrity sha1-6bj2jlUsaKnBcTuEiD96HdA5uKE= + dependencies: + mkdirp "*" + +mkdirp@*, mkdirp@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + mkdirp@0.5.1: version "0.5.1" resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" @@ -4995,10 +7120,12 @@ mkdirp@0.5.3, mkdirp@^0.5.1, mkdirp@~0.5.1: dependencies: minimist "^1.2.5" -mkdirp@^1.0.4: - version "1.0.4" - resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" - integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== +mkdirp@^0.5.0: + version "0.5.5" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" + integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== + dependencies: + minimist "^1.2.5" mocha@^6.1.4: version "6.2.2" @@ -5059,11 +7186,28 @@ mocha@^7.1.1: yargs-parser "13.1.2" yargs-unparser "1.6.0" +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== + moment@^2.24.0: version "2.24.0" resolved "https://registry.npmjs.org/moment/-/moment-2.24.0.tgz#0d055d53f5052aa653c9f6eb68bb5d12bf5c2b5b" integrity sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg== +move-concurrently@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" + integrity sha1-viwAX9oy4LKa8fBdfEszIUxwH5I= + dependencies: + aproba "^1.1.1" + copy-concurrently "^1.0.0" + fs-write-stream-atomic "^1.0.8" + mkdirp "^0.5.1" + rimraf "^2.5.4" + run-queue "^1.0.3" + ms@2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" @@ -5074,21 +7218,40 @@ ms@2.1.1: resolved "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== -ms@^2.1.1: +ms@^2.0.0, ms@^2.1.1: version "2.1.2" resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== +multimatch@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-3.0.0.tgz#0e2534cc6bc238d9ab67e1b9cd5fcd85a6dbf70b" + integrity sha512-22foS/gqQfANZ3o+W7ST2x25ueHDVNWl/b9OlGcLpy/iKxjCpvcNCM51YCenUi7Mt/jAjjqv8JwZRs8YP5sRjA== + dependencies: + array-differ "^2.0.3" + array-union "^1.0.2" + arrify "^1.0.1" + minimatch "^3.0.4" + mute-stream@0.0.7: version "0.0.7" resolved "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= -mute-stream@0.0.8: +mute-stream@0.0.8, mute-stream@~0.0.4: version "0.0.8" resolved "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== +mz@^2.5.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" + integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q== + dependencies: + any-promise "^1.0.0" + object-assign "^4.0.1" + thenify-all "^1.0.0" + nan@^2.12.1, nan@^2.14.0: version "2.14.0" resolved "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c" @@ -5127,6 +7290,11 @@ nedb@^1.8.0: mkdirp "~0.5.1" underscore "~1.4.4" +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== + next-tick@1: version "1.1.0" resolved "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz#1836ee30ad56d67ef281b22bd199f709449b35eb" @@ -5158,6 +7326,15 @@ node-environment-flags@1.0.6: object.getownpropertydescriptors "^2.0.3" semver "^5.7.0" +node-fetch-npm@^2.0.2: + version "2.0.4" + resolved "https://registry.yarnpkg.com/node-fetch-npm/-/node-fetch-npm-2.0.4.tgz#6507d0e17a9ec0be3bec516958a497cec54bf5a4" + integrity sha512-iOuIQDWDyjhv9qSDrj9aq/klt6F9z1p2otB3AV7v3zBDcL/x+OfGsvGQZZCcMZbUf4Ujw1xGNQkjvGnVT22cKg== + dependencies: + encoding "^0.1.11" + json-parse-better-errors "^1.0.0" + safe-buffer "^5.1.1" + node-fetch@^1.0.1: version "1.7.3" resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef" @@ -5166,6 +7343,28 @@ node-fetch@^1.0.1: encoding "^0.1.11" is-stream "^1.0.1" +node-fetch@^2.3.0, node-fetch@^2.5.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-gyp@^5.0.2: + version "5.1.0" + resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-5.1.0.tgz#8e31260a7af4a2e2f994b0673d4e0b3866156332" + integrity sha512-OUTryc5bt/P8zVgNUmC6xdXiDJxLMAW8cF5tLQOT9E5sOQj+UeQxnnPy74K3CLCa/SOjjBlbuzDLR8ANwA+wmw== + dependencies: + env-paths "^2.2.0" + glob "^7.1.4" + graceful-fs "^4.2.2" + mkdirp "^0.5.1" + nopt "^4.0.1" + npmlog "^4.1.2" + request "^2.88.0" + rimraf "^2.6.3" + semver "^5.7.1" + tar "^4.4.12" + which "^1.3.1" + node-preload@^0.2.0: version "0.2.1" resolved "https://registry.npmjs.org/node-preload/-/node-preload-0.2.1.tgz#c03043bb327f417a18fee7ab7ee57b408a144301" @@ -5189,6 +7388,14 @@ nodemon@2.0.3: undefsafe "^2.0.2" update-notifier "^4.0.0" +nopt@^4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.3.tgz#a375cad9d02fd921278d954c2254d5aa57e15e48" + integrity sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg== + dependencies: + abbrev "1" + osenv "^0.1.4" + nopt@~1.0.10: version "1.0.10" resolved "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz#6ddd21bd2a31417b92727dd585f8a6f37608ebee" @@ -5196,7 +7403,7 @@ nopt@~1.0.10: dependencies: abbrev "1" -normalize-package-data@^2.3.2: +normalize-package-data@^2.0.0, normalize-package-data@^2.3.0, normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.3.5, normalize-package-data@^2.4.0, normalize-package-data@^2.5.0: version "2.5.0" resolved "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== @@ -5218,11 +7425,70 @@ normalize-path@^3.0.0, normalize-path@~3.0.0: resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== +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.npmjs.org/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-lifecycle@^3.1.2: + version "3.1.5" + resolved "https://registry.yarnpkg.com/npm-lifecycle/-/npm-lifecycle-3.1.5.tgz#9882d3642b8c82c815782a12e6a1bfeed0026309" + integrity sha512-lDLVkjfZmvmfvpvBzA4vzee9cn+Me4orq0QF8glbswJVEbIcSNWib7qGOffolysc3teCqbbPZZkzbr3GQZTL1g== + dependencies: + byline "^5.0.0" + graceful-fs "^4.1.15" + node-gyp "^5.0.2" + resolve-from "^4.0.0" + slide "^1.1.6" + uid-number "0.0.6" + umask "^1.1.0" + which "^1.3.1" + +npm-normalize-package-bin@^1.0.0, 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-package-arg@^4.0.0 || ^5.0.0 || ^6.0.0", npm-package-arg@^6.0.0, npm-package-arg@^6.1.0: + version "6.1.1" + resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-6.1.1.tgz#02168cb0a49a2b75bf988a28698de7b529df5cb7" + integrity sha512-qBpssaL3IOZWi5vEKUKW0cO7kzLeT+EQO9W8RsLOZf76KF9E/K9+wH0C7t06HXPpaH8WH5xF1MExLuCwbTqRUg== + dependencies: + hosted-git-info "^2.7.1" + osenv "^0.1.5" + semver "^5.6.0" + validate-npm-package-name "^3.0.0" + +npm-packlist@^1.4.4: + version "1.4.8" + resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.8.tgz#56ee6cc135b9f98ad3d51c1c95da22bbb9b2ef3e" + integrity sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A== + dependencies: + ignore-walk "^3.0.1" + npm-bundled "^1.0.1" + npm-normalize-package-bin "^1.0.1" + +npm-pick-manifest@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-3.0.2.tgz#f4d9e5fd4be2153e5f4e5f9b7be8dc419a99abb7" + integrity sha512-wNprTNg+X5nf+tDi+hbjdHhM4bX+mKqv6XmPh7B5eG+QY9VARfQPfCEH013H5GqfNj6ee8Ij2fg8yk0mzps1Vw== + dependencies: + figgy-pudding "^3.5.1" + npm-package-arg "^6.0.0" + semver "^5.4.1" + npm-run-path@^2.0.0: version "2.0.2" resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" @@ -5230,6 +7496,21 @@ npm-run-path@^2.0.0: dependencies: path-key "^2.0.0" +npmlog@^4.1.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= + nyc@^15.0.0: version "15.0.0" resolved "https://registry.npmjs.org/nyc/-/nyc-15.0.0.tgz#eb32db2c0f29242c2414fe46357f230121cfc162" @@ -5363,6 +7644,11 @@ object.values@^1.1.0, object.values@^1.1.1: function-bind "^1.1.1" has "^1.0.3" +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== + "olm@https://matrix.org/packages/npm/olm/olm-3.1.0.tgz": version "3.1.0" resolved "https://matrix.org/packages/npm/olm/olm-3.1.0.tgz#2c8fc2a42b7ea12febc31baa73ec03d9b601da16" @@ -5410,11 +7696,27 @@ os-homedir@^1.0.0: resolved "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= -os-tmpdir@^1.0.1, os-tmpdir@~1.0.2: +os-name@^3.1.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.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= +osenv@^0.1.4, osenv@^0.1.5: + 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" + output-file-sync@^1.1.2: version "1.1.2" resolved "https://registry.npmjs.org/output-file-sync/-/output-file-sync-1.1.2.tgz#d0a33eefe61a205facb90092e826598d5245ce76" @@ -5469,6 +7771,18 @@ p-locate@^4.1.0: dependencies: p-limit "^2.2.0" +p-map-series@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-map-series/-/p-map-series-1.0.0.tgz#bf98fe575705658a9e1351befb85ae4c1f07bdca" + integrity sha1-v5j+V1cFZYqeE1G++4WuTB8Hvco= + dependencies: + p-reduce "^1.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-map@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz#d704d9af8a2ba684e2600d9a215983d4141a979d" @@ -5476,6 +7790,23 @@ p-map@^3.0.0: dependencies: aggregate-error "^3.0.0" +p-pipe@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/p-pipe/-/p-pipe-1.2.0.tgz#4b1a11399a11520a67790ee5a0c1d5881d6befe9" + integrity sha1-SxoROZoRUgpneQ7loMHViB1r7+k= + +p-queue@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/p-queue/-/p-queue-4.0.0.tgz#ed0eee8798927ed6f2c2f5f5b77fdb2061a5d346" + integrity sha512-3cRXXn3/O0o3+eVmUroJPSj/esxoEFIm0ZOno/T+NzG/VZgPOqQ8WKmlNqubSEpZmCIngEy34unkHGg83ZIBmg== + dependencies: + eventemitter3 "^3.1.0" + +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@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" @@ -5486,6 +7817,13 @@ p-try@^2.0.0: resolved "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== +p-waterfall@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-waterfall/-/p-waterfall-1.0.0.tgz#7ed94b3ceb3332782353af6aae11aa9fc235bb00" + integrity sha1-ftlLPOszMngjU69qrhGqn8I1uwA= + dependencies: + p-reduce "^1.0.0" + package-hash@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/package-hash/-/package-hash-4.0.0.tgz#3537f654665ec3cc38827387fc904c163c54f506" @@ -5516,6 +7854,15 @@ package-json@^6.3.0: registry-url "^5.0.0" semver "^6.2.0" +parallel-transform@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.2.0.tgz#9049ca37d6cb2182c3b1d2c720be94d14a5814fc" + integrity sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg== + dependencies: + cyclist "^1.0.1" + inherits "^2.0.3" + readable-stream "^2.1.5" + parent-module@^1.0.0: version "1.0.1" resolved "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" @@ -5523,6 +7870,11 @@ parent-module@^1.0.0: dependencies: callsites "^3.0.0" +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.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" @@ -5548,16 +7900,56 @@ parse-json@^4.0.0: error-ex "^1.3.1" json-parse-better-errors "^1.0.1" +parse-json@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.0.0.tgz#73e5114c986d143efa3712d4ea24db9a4266f60f" + integrity sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw== + dependencies: + "@babel/code-frame" "^7.0.0" + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" + lines-and-columns "^1.1.6" + parse-passwd@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY= +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" + pascalcase@^0.1.1: version "0.1.1" resolved "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= +path-dirname@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" + integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= + +path-exists@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" + integrity sha1-D+tsZPD8UY2adU3V77YscCJ2H0s= + dependencies: + pinkie-promise "^2.0.0" + path-exists@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" @@ -5593,6 +7985,15 @@ path-parse@^1.0.6: resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== +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@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" @@ -5600,6 +8001,13 @@ path-type@^2.0.0: dependencies: pify "^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" + pathval@^1.1.0: version "1.1.0" resolved "https://registry.npmjs.org/pathval/-/pathval-1.1.0.tgz#b942e6d4bde653005ef6b71361def8727d0645e0" @@ -5626,7 +8034,7 @@ picomatch@^2.0.4, picomatch@^2.0.7: resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== -pify@^2.0.0: +pify@^2.0.0, pify@^2.3.0: version "2.3.0" resolved "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= @@ -5641,6 +8049,18 @@ pify@^4.0.1: resolved "https://registry.npmjs.org/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= + pkg-conf@^2.0.0: version "2.1.0" resolved "https://registry.npmjs.org/pkg-conf/-/pkg-conf-2.1.0.tgz#2126514ca6f2abfebd168596df18ba57867f0058" @@ -5673,6 +8093,13 @@ pkg-dir@^2.0.0: dependencies: find-up "^2.1.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" + pkg-dir@^4.1.0: version "4.2.0" resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" @@ -5727,11 +8154,31 @@ process-on-spawn@^1.0.0: dependencies: fromentries "^1.2.0" -progress@^2.0.0: +progress@^2.0.0, progress@^2.0.3: version "2.0.3" resolved "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== +promise-inflight@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" + integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= + +promise-retry@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/promise-retry/-/promise-retry-1.1.1.tgz#6739e968e3051da20ce6497fb2b50f6911df3d6d" + integrity sha1-ZznpaOMFHaIM5kl/srUPaRHfPW0= + dependencies: + err-code "^1.0.0" + retry "^0.10.0" + +promzard@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/promzard/-/promzard-0.3.0.tgz#26a5d6ee8c7dee4cb12208305acfb93ba382a9ee" + integrity sha1-JqXW7ox97kyxIggwWs+5O6OCqe4= + dependencies: + read "1" + prop-types@^15.6.2, prop-types@^15.7.2: version "15.7.2" resolved "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" @@ -5741,6 +8188,23 @@ prop-types@^15.6.2, prop-types@^15.7.2: object-assign "^4.1.1" react-is "^16.8.1" +proto-list@~1.2.1: + version "1.2.4" + resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" + integrity sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk= + +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== + +protoduck@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/protoduck/-/protoduck-5.0.1.tgz#03c3659ca18007b69a50fd82a7ebcc516261151f" + integrity sha512-WxoCeDCoCBY55BMvj4cAEjdVUFGRWed9ZxPlqTKYyw1nDDTQ4pqmnIMAGfJlg7Dx35uB/M+PHJPTmGOvaCaPTg== + dependencies: + genfun "^5.0.0" + pseudomap@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" @@ -5756,6 +8220,14 @@ pstree.remy@^1.1.7: resolved "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.7.tgz#c76963a28047ed61542dc361aa26ee55a7fa15f3" integrity sha512-xsMgrUwRpuGskEzBFkH8NmTimbZ5PcPup0LA8JJkHIm2IMUbQcpo3yeLNWVrufEYjh8YwtSVh0xz6UeWc5Oh5A== +pump@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" + integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + pump@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" @@ -5764,6 +8236,15 @@ pump@^3.0.0: end-of-stream "^1.1.0" once "^1.3.1" +pumpify@^1.3.3: + version "1.5.1" + resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" + integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== + dependencies: + duplexify "^3.6.0" + inherits "^2.0.3" + pump "^2.0.0" + punycode@^2.1.0, punycode@^2.1.1: version "2.1.1" resolved "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" @@ -5776,6 +8257,11 @@ pupa@^2.0.1: dependencies: escape-goat "^2.0.0" +q@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" + integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= + qs@^6.5.1, qs@^6.5.2: version "6.9.2" resolved "https://registry.npmjs.org/qs/-/qs-6.9.2.tgz#a27b695006544a04bf0e6c6a7e8120778926d5bd" @@ -5786,6 +8272,16 @@ qs@~6.5.2: resolved "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== +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= + +quick-lru@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f" + integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g== + quickselect@^1.0.1: version "1.1.1" resolved "https://registry.npmjs.org/quickselect/-/quickselect-1.1.1.tgz#852e412ce418f237ad5b660d70cffac647ae94c2" @@ -5829,6 +8325,42 @@ react-is@^16.8.1: resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== +read-cmd-shim@^1.0.1: + version "1.0.5" + resolved "https://registry.yarnpkg.com/read-cmd-shim/-/read-cmd-shim-1.0.5.tgz#87e43eba50098ba5a32d0ceb583ab8e43b961c16" + integrity sha512-v5yCqQ/7okKoZZkBQUAfTsQ3sVJtXdNfbPnI5cceppoxEVLYA3k+VtV2omkeo8MS94JCy4fSiUwlRBAwCVRPUA== + dependencies: + graceful-fs "^4.1.2" + +"read-package-json@1 || 2", read-package-json@^2.0.0, read-package-json@^2.0.13: + version "2.1.1" + resolved "https://registry.yarnpkg.com/read-package-json/-/read-package-json-2.1.1.tgz#16aa66c59e7d4dad6288f179dd9295fd59bb98f1" + integrity sha512-dAiqGtVc/q5doFz6096CcnXhpYk0ZN8dEKVkGLU0CsASt8SrgF6SF7OTKAYubfvFhWaqofl+Y8HK19GR8jwW+A== + dependencies: + glob "^7.1.1" + json-parse-better-errors "^1.0.1" + normalize-package-data "^2.0.0" + npm-normalize-package-bin "^1.0.0" + optionalDependencies: + graceful-fs "^4.1.2" + +read-package-tree@^5.1.6: + version "5.3.1" + resolved "https://registry.yarnpkg.com/read-package-tree/-/read-package-tree-5.3.1.tgz#a32cb64c7f31eb8a6f31ef06f9cedf74068fe636" + integrity sha512-mLUDsD5JVtlZxjSlPPx1RETkNjjvQYuweKwNVt1Sn8kP5Jh44pvYuUHCp6xSVDZWbNxVxG5lyZJ921aJH61sTw== + dependencies: + read-package-json "^2.0.0" + readdir-scoped-modules "^1.0.0" + util-promisify "^2.1.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-up@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" @@ -5837,6 +8369,32 @@ read-pkg-up@^2.0.0: find-up "^2.0.0" read-pkg "^2.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-up@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507" + integrity sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg== + dependencies: + find-up "^4.1.0" + read-pkg "^5.2.0" + type-fest "^0.8.1" + +read-pkg@^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@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" @@ -5846,7 +8404,33 @@ read-pkg@^2.0.0: normalize-package-data "^2.3.2" path-type "^2.0.0" -readable-stream@^2.0.2, readable-stream@^2.3.5, readable-stream@^2.3.6: +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" + +read-pkg@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" + integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== + dependencies: + "@types/normalize-package-data" "^2.4.0" + normalize-package-data "^2.5.0" + parse-json "^5.0.0" + type-fest "^0.6.0" + +read@1, read@~1.0.1: + version "1.0.7" + resolved "https://registry.yarnpkg.com/read/-/read-1.0.7.tgz#b3da19bd052431a97671d44a42634adf710b40c4" + integrity sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ= + dependencies: + mute-stream "~0.0.4" + +"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@~2.3.6: version "2.3.7" resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== @@ -5859,7 +8443,7 @@ readable-stream@^2.0.2, readable-stream@^2.3.5, readable-stream@^2.3.6: string_decoder "~1.1.1" util-deprecate "~1.0.1" -readable-stream@^3.0.2, readable-stream@^3.1.1: +"readable-stream@2 || 3", readable-stream@^3.0.2, readable-stream@^3.1.1: version "3.6.0" resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== @@ -5868,6 +8452,16 @@ readable-stream@^3.0.2, readable-stream@^3.1.1: string_decoder "^1.1.1" util-deprecate "^1.0.1" +readdir-scoped-modules@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz#8d45407b4f870a0dcaebc0e28670d18e74514309" + integrity sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw== + dependencies: + debuglog "^1.0.1" + dezalgo "^1.0.0" + graceful-fs "^4.1.2" + once "^1.3.0" + readdirp@^2.0.0: version "2.2.1" resolved "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" @@ -5891,6 +8485,37 @@ readdirp@~3.3.0: dependencies: picomatch "^2.0.7" +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" + integrity sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94= + dependencies: + 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" + +redent@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f" + integrity sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg== + dependencies: + indent-string "^4.0.0" + strip-indent "^3.0.0" + regenerate@^1.2.1: version "1.4.0" resolved "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" @@ -6083,6 +8708,13 @@ requizzle@^0.2.3: dependencies: lodash "^4.17.14" +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-dir@^1.0.0, resolve-dir@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43" @@ -6096,6 +8728,11 @@ resolve-from@^1.0.0: resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226" integrity sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY= +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@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" @@ -6111,6 +8748,13 @@ resolve-url@^0.2.1: resolved "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= +resolve@^1.1.6: + version "1.17.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" + integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== + dependencies: + path-parse "^1.0.6" + resolve@^1.10.0, resolve@^1.10.1, resolve@^1.11.0, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.15.1, resolve@^1.3.2, resolve@^1.6.0, resolve@^1.8.1: version "1.15.1" resolved "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz#27bdcdeffeaf2d6244b95bb0f9f4b4653451f3e8" @@ -6146,6 +8790,11 @@ ret@~0.1.10: resolved "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== +retry@^0.10.0: + version "0.10.1" + resolved "https://registry.yarnpkg.com/retry/-/retry-0.10.1.tgz#e76388d217992c252750241d3d3956fed98d8ff4" + integrity sha1-52OI0heZLCUnUCQdPTlW/tmNj/Q= + rimraf@2.6.3, rimraf@~2.6.2: version "2.6.3" resolved "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" @@ -6153,6 +8802,13 @@ rimraf@2.6.3, rimraf@~2.6.2: dependencies: glob "^7.1.3" +rimraf@^2.5.4, rimraf@^2.6.2, rimraf@^2.6.3: + version "2.7.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + rimraf@^3.0.0: version "3.0.2" resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" @@ -6180,6 +8836,13 @@ run-parallel@^1.1.2: resolved "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.9.tgz#c9dd3a7cf9f4b2c4b6244e173a6ed866e61dd679" integrity sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q== +run-queue@^1.0.0, run-queue@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" + integrity sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec= + dependencies: + aproba "^1.1.1" + rxjs@^5.5.2: version "5.5.12" resolved "https://registry.npmjs.org/rxjs/-/rxjs-5.5.12.tgz#6fa61b8a77c3d793dbaf270bee2f43f652d741cc" @@ -6206,6 +8869,11 @@ safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.2, safe-buffer@~5.2.0: resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519" integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg== +safe-buffer@^5.1.1, safe-buffer@^5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" @@ -6230,7 +8898,7 @@ semver-diff@^3.1.1: dependencies: semver "^6.3.0" -"semver@2 || 3 || 4 || 5", semver@^5.1.0, semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.7.0, semver@^5.7.1: +"semver@2 || 3 || 4 || 5", "semver@2.x || 3.x || 4 || 5", semver@^5.1.0, semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0, semver@^5.7.0, semver@^5.7.1: version "5.7.1" resolved "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== @@ -6240,7 +8908,7 @@ semver@^6.0.0, semver@^6.1.0, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0: resolved "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== -set-blocking@^2.0.0: +set-blocking@^2.0.0, set-blocking@~2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= @@ -6263,6 +8931,13 @@ sha.js@^2.4.0, sha.js@^2.4.8: inherits "^2.0.1" safe-buffer "^5.0.1" +shallow-clone@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" + integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== + dependencies: + kind-of "^6.0.2" + shebang-command@^1.2.0: version "1.2.0" resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" @@ -6287,6 +8962,15 @@ shebang-regex@^3.0.0: resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== +shelljs@^0.8.4: + version "0.8.4" + resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.4.tgz#de7684feeb767f8716b326078a8a00875890e3c2" + integrity sha512-7gk3UZ9kOfPLIAbslLzyWeGiEqx9e3rxwZM0KE6EL8GlGwjym9Mrlx5/p33bWTu9YG6vcS4MBxYZDHYr5lr8BQ== + dependencies: + glob "^7.0.0" + interpret "^1.0.0" + rechoir "^0.6.2" + side-channel@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/side-channel/-/side-channel-1.0.2.tgz#df5d1abadb4e4bf4af1cd8852bf132d2f7876947" @@ -6312,6 +8996,11 @@ slash@^1.0.0: resolved "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU= +slash@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" + integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== + slice-ansi@1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz#044f1a49d8842ff307aad6b505ed178bd950134d" @@ -6328,6 +9017,16 @@ slice-ansi@^2.1.0: astral-regex "^1.0.0" is-fullwidth-code-point "^2.0.0" +slide@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" + integrity sha1-VusCfWW00tzmyy4tMsTUr8nh1wc= + +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.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" @@ -6371,6 +9070,29 @@ snazzy@^8.0.0: strip-ansi "^4.0.0" text-table "^0.2.0" +socks-proxy-agent@^4.0.0: + 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" + +sort-keys@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-2.0.0.tgz#658535584861ec97d730d6cf41822e1f56684128" + integrity sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg= + dependencies: + is-plain-obj "^1.0.0" + source-map-resolve@^0.5.0: version "0.5.3" resolved "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" @@ -6470,6 +9192,20 @@ split-string@^3.0.1, split-string@^3.0.2: 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.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" @@ -6490,6 +9226,13 @@ sshpk@^1.7.0: safer-buffer "^2.0.2" tweetnacl "~0.14.0" +ssri@^6.0.0, ssri@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.1.tgz#2a3c41b28dd45b62b63676ecb74001265ae9edd8" + integrity sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA== + dependencies: + figgy-pudding "^3.5.1" + stack-trace@0.0.x: version "0.0.10" resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0" @@ -6591,6 +9334,28 @@ static-extend@^0.1.1: define-property "^0.2.5" object-copy "^0.1.0" +stream-each@^1.1.0: + version "1.2.3" + resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae" + integrity sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw== + dependencies: + end-of-stream "^1.1.0" + stream-shift "^1.0.0" + +stream-shift@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" + integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== + +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@^1.0.2 || 2", string-width@^2.1.0, string-width@^2.1.1: version "2.1.1" resolved "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" @@ -6659,7 +9424,7 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -strip-ansi@^3.0.0: +strip-ansi@^3.0.0, strip-ansi@^3.0.1: version "3.0.1" resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= @@ -6687,6 +9452,13 @@ strip-ansi@^6.0.0: dependencies: ansi-regex "^5.0.0" +strip-bom@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" + integrity sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4= + dependencies: + is-utf8 "^0.2.0" + strip-bom@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" @@ -6702,6 +9474,25 @@ strip-eof@^1.0.0: resolved "https://registry.npmjs.org/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-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-indent@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001" + integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ== + dependencies: + min-indent "^1.0.0" + strip-json-comments@2.0.1, strip-json-comments@^2.0.1, strip-json-comments@~2.0.1: version "2.0.1" resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" @@ -6717,6 +9508,15 @@ strip-json-comments@^3.1.0: resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.0.tgz#7638d31422129ecf4457440009fba03f9f9ac180" integrity sha512-e6/d0eBu7gHtdCqFt0xJr642LdToM5/cN4Qb9DbHjVx1CP5RyeM+zH7pbecEmDv/lBqb0QH+6Uqq75rxFPkM0w== +strong-log-transformer@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/strong-log-transformer/-/strong-log-transformer-2.1.0.tgz#0f5ed78d325e0421ac6f90f7f10e691d6ae3ae10" + integrity sha512-B3Hgul+z0L9a236FAUC9iZsL+nVHgoCJnqCbN588DjYxvGXaXaaFbfmQ/JhvKjZwsOukuR72XbHv71Qkug0HxA== + dependencies: + duplexer "^0.1.1" + minimist "^1.2.0" + through "^2.3.4" + superagent@^3.7.0: version "3.8.3" resolved "https://registry.npmjs.org/superagent/-/superagent-3.8.3.tgz#460ea0dbdb7d5b11bc4f78deba565f86a178e128" @@ -6791,6 +9591,36 @@ taffydb@2.6.2: resolved "https://registry.npmjs.org/taffydb/-/taffydb-2.6.2.tgz#7cbcb64b5a141b6a2efc2c5d2c67b4e150b2a268" integrity sha1-fLy2S1oUG2ou/CxdLGe04VCyomg= +tar@^4.4.10, tar@^4.4.12, tar@^4.4.8: + 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" + integrity sha1-CnwOom06Oa+n4OvqnB/AvE2qAR0= + +temp-write@^3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/temp-write/-/temp-write-3.4.0.tgz#8cff630fb7e9da05f047c74ce4ce4d685457d492" + integrity sha1-jP9jD7fp2gXwR8dM5M5NaFRX1JI= + dependencies: + graceful-fs "^4.1.2" + is-stream "^1.1.0" + make-dir "^1.0.0" + pify "^3.0.0" + temp-dir "^1.0.0" + uuid "^3.0.1" + term-size@^1.2.0: version "1.2.0" resolved "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz#458b83887f288fc56d6fffbfad262e26638efa69" @@ -6812,6 +9642,11 @@ test-exclude@^6.0.0: glob "^7.1.4" minimatch "^3.0.4" +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== + text-hex@1.0.x: version "1.0.0" resolved "https://registry.yarnpkg.com/text-hex/-/text-hex-1.0.0.tgz#69dc9c1b17446ee79a92bf5b884bb4b9127506f5" @@ -6822,7 +9657,36 @@ text-table@^0.2.0: resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= -through@^2.3.6: +thenify-all@^1.0.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726" + integrity sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY= + dependencies: + thenify ">= 3.1.0 < 4" + +"thenify@>= 3.1.0 < 4": + version "3.3.0" + resolved "https://registry.yarnpkg.com/thenify/-/thenify-3.3.0.tgz#e69e38a1babe969b0108207978b9f62b88604839" + integrity sha1-5p44obq+lpsBCCB5eLn2K4hgSDk= + dependencies: + any-promise "^1.0.0" + +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.4, through@^2.3.6: version "2.3.8" resolved "https://registry.npmjs.org/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= @@ -6914,6 +9778,33 @@ tough-cookie@~2.5.0: 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" + +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= + +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-newlines@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-3.0.0.tgz#79726304a6a898aa8373427298d54c2ee8b1cb30" + integrity sha512-C4+gOpvmxaSMKuEf9Qc134F1ZuOHVXKRbtEflf4NTtuuJDEIJ9p5PXsalL8SkeRw+qit1Mo+yuvMPAKwWg/1hA== + +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.npmjs.org/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" @@ -7003,11 +9894,21 @@ type-fest@^0.11.0: resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1" integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ== +type-fest@^0.13.1: + version "0.13.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.13.1.tgz#0172cb5bce80b0bd542ea348db50c7e21834d934" + integrity sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg== + type-fest@^0.3.0: version "0.3.1" resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz#63d00d204e059474fe5e1b7c011112bbd1dc29e1" integrity sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ== +type-fest@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" + integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== + type-fest@^0.8.0, type-fest@^0.8.1: version "0.8.1" resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" @@ -7035,7 +9936,35 @@ typedarray@^0.0.6: resolved "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= -typescript@3.8.3, typescript@^3.5.3, typescript@^3.8.3: +typedoc-default-themes@^0.10.1: + version "0.10.1" + resolved "https://registry.yarnpkg.com/typedoc-default-themes/-/typedoc-default-themes-0.10.1.tgz#eb27b7d689457c7ec843e47ec0d3e500581296a7" + integrity sha512-SuqAQI0CkwhqSJ2kaVTgl37cWs733uy9UGUqwtcds8pkFK8oRF4rZmCq+FXTGIb9hIUOu40rf5Kojg0Ha6akeg== + dependencies: + lunr "^2.3.8" + +typedoc@^0.17.6: + version "0.17.6" + resolved "https://registry.yarnpkg.com/typedoc/-/typedoc-0.17.6.tgz#cab87a72c10e05429016d659a4c3071a5a3ffb61" + integrity sha512-pQiYnhG3yJk7939cv2n8uFoTsSgy5Hfiw0dgOQYa9nT9Ya1013dMctQdAXMj8JbNu7KhcauQyq9Zql9D/TziLw== + dependencies: + fs-extra "^8.1.0" + handlebars "^4.7.6" + highlight.js "^10.0.0" + lodash "^4.17.15" + lunr "^2.3.8" + marked "1.0.0" + minimatch "^3.0.0" + progress "^2.0.3" + shelljs "^0.8.4" + typedoc-default-themes "^0.10.1" + +typescript@3.9.2: + version "3.9.2" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.2.tgz#64e9c8e9be6ea583c54607677dd4680a1cf35db9" + integrity sha512-q2ktq4n/uLuNNShyayit+DTobV2ApPEo/6so68JaD5ojvc/6GClBipedB9zNWYxRSAlZXAe405Rlijzl6qDiSw== + +typescript@^3.5.3, typescript@^3.8.3: version "3.8.3" resolved "https://registry.npmjs.org/typescript/-/typescript-3.8.3.tgz#409eb8544ea0335711205869ec458ab109ee1061" integrity sha512-MYlEfn5VrLNsgudQTVJeNaQFUAI7DkhnOjdpAp4T+ku1TfQClewlbSuTVHiA+8skNBgaf02TL/kLOvig4y3G8w== @@ -7045,6 +9974,23 @@ uc.micro@^1.0.1, uc.micro@^1.0.5: resolved "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz#9c411a802a409a91fc6cf74081baba34b24499ac" integrity sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA== +uglify-js@^3.1.4: + version "3.9.3" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.9.3.tgz#4a285d1658b8a2ebaef9e51366b3a0f7acd79ec2" + integrity sha512-r5ImcL6QyzQGVimQoov3aL2ZScywrOgBXGndbWrdehKoSvGe/RmiE5Jpw/v+GvxODt6l2tpBXwA7n+qZVlHBMA== + dependencies: + commander "~2.20.3" + +uid-number@0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" + integrity sha1-DqEOgDXo61uOREnwbaHHMGY7qoE= + +umask@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/umask/-/umask-1.1.0.tgz#f29cebf01df517912bb58ff9c4e50fde8e33320d" + integrity sha1-8pzr8B31F5ErtY/5xOUP3o4zMg0= + undefsafe@^2.0.2: version "2.0.3" resolved "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.3.tgz#6b166e7094ad46313b2202da7ecc2cd7cc6e7aae" @@ -7082,6 +10028,20 @@ uniq@^1.0.1: resolved "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= +unique-filename@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" + integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== + dependencies: + unique-slug "^2.0.0" + +unique-slug@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" + integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== + dependencies: + imurmurhash "^0.1.4" + unique-string@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz#39c6451f81afb2749de2b233e3f7c5e8843bd89d" @@ -7089,6 +10049,25 @@ unique-string@^2.0.0: dependencies: crypto-random-string "^2.0.0" +universal-user-agent@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-4.0.1.tgz#fd8d6cb773a679a709e967ef8288a31fcc03e557" + integrity sha512-LnST3ebHwVL2aNe4mejI9IQh2HfZ1RLo8Io2HugSif8ekzD1TlWpHpColOB/eh8JHMLkGH3Akqf040I+4ylNxg== + dependencies: + os-name "^3.1.0" + +universal-user-agent@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-5.0.0.tgz#a3182aa758069bf0e79952570ca757de3579c1d9" + integrity sha512-B5TPtzZleXyPrUMKCpEHFmVhMN6EhmJYjG5PQna9s7mXeSqGTLap4OpqLl5FCEFUI3UBmllkETwKf/db66Y54Q== + 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== + unset-value@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" @@ -7102,6 +10081,11 @@ unzip-response@^2.0.1: resolved "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz#d2f0f737d16b0615e72a6935ed04214572d56f97" integrity sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c= +upath@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" + integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== + update-notifier@^4.0.0: version "4.1.0" resolved "https://registry.npmjs.org/update-notifier/-/update-notifier-4.1.0.tgz#4866b98c3bc5b5473c020b1250583628f9a328f3" @@ -7162,7 +10146,14 @@ util-deprecate@^1.0.1, util-deprecate@~1.0.1: resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= -uuid@^3.3.2, uuid@^3.3.3: +util-promisify@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/util-promisify/-/util-promisify-2.1.0.tgz#3c2236476c4d32c5ff3c47002add7c13b9a82a53" + integrity sha1-PCI2R2xNMsX/PEcAKt18E7moKlM= + dependencies: + object.getownpropertydescriptors "^2.0.3" + +uuid@^3.0.1, uuid@^3.3.2, uuid@^3.3.3: version "3.4.0" resolved "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== @@ -7179,7 +10170,7 @@ v8flags@^2.1.1: dependencies: user-home "^1.1.1" -validate-npm-package-license@^3.0.1: +validate-npm-package-license@^3.0.1, validate-npm-package-license@^3.0.3: version "3.0.4" resolved "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== @@ -7187,6 +10178,13 @@ validate-npm-package-license@^3.0.1: spdx-correct "^3.0.0" spdx-expression-parse "^3.0.0" +validate-npm-package-name@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz#5fa912d81eb7d0c74afc140de7317f0ca7df437e" + integrity sha1-X6kS2B630MdK/BQN5zF/DKffQ34= + dependencies: + builtins "^1.0.3" + verror@1.10.0: version "1.10.0" resolved "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" @@ -7196,6 +10194,18 @@ verror@1.10.0: core-util-is "1.0.2" extsprintf "^1.2.0" +wcwidth@^1.0.0: + 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== + websocket@^1.0.31: version "1.0.31" resolved "https://registry.npmjs.org/websocket/-/websocket-1.0.31.tgz#e5d0f16c3340ed87670e489ecae6144c79358730" @@ -7212,12 +10222,21 @@ whatwg-fetch@>=0.10.0: resolved "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz#fc804e458cc460009b1a2b966bc8817d2578aefb" integrity sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q== +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.npmjs.org/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= -which@1.3.1, which@^1.2.14, which@^1.2.9: +which@1.3.1, which@^1.2.14, which@^1.2.9, which@^1.3.1: version "1.3.1" resolved "https://registry.npmjs.org/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== @@ -7231,7 +10250,7 @@ which@^2.0.1: dependencies: isexe "^2.0.0" -wide-align@1.1.3: +wide-align@1.1.3, wide-align@^1.1.0: version "1.1.3" resolved "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== @@ -7252,6 +10271,13 @@ widest-line@^3.1.0: dependencies: string-width "^4.0.0" +windows-release@^3.1.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/windows-release/-/windows-release-3.3.0.tgz#dce167e9f8be733f21c849ebd4d03fe66b29b9f0" + integrity sha512-2HetyTg1Y+R+rUgrKeUEhAG/ZuOmTrI1NBb3ZyAGQMYmOJjBBPe4MTodghRkmLJZHwkuPi02anbeGP+Zf401LQ== + dependencies: + execa "^1.0.0" + winston-transport@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/winston-transport/-/winston-transport-4.3.0.tgz#df68c0c202482c448d9b47313c07304c2d7c2c66" @@ -7280,6 +10306,11 @@ word-wrap@^1.2.3, word-wrap@~1.2.3: resolved "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== +wordwrap@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" + integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= + wrap-ansi@^5.1.0: version "5.1.0" resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" @@ -7303,6 +10334,15 @@ wrappy@1: resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= +write-file-atomic@^2.0.0, write-file-atomic@^2.3.0, write-file-atomic@^2.4.2: + version "2.4.3" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.3.tgz#1fd2e9ae1df3e75b8d8c367443c692d4ca81f481" + integrity sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ== + dependencies: + graceful-fs "^4.1.11" + imurmurhash "^0.1.4" + signal-exit "^3.0.2" + write-file-atomic@^3.0.0: version "3.0.3" resolved "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" @@ -7313,6 +10353,38 @@ write-file-atomic@^3.0.0: signal-exit "^3.0.2" typedarray-to-buffer "^3.1.5" +write-json-file@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/write-json-file/-/write-json-file-2.3.0.tgz#2b64c8a33004d54b8698c76d585a77ceb61da32f" + integrity sha1-K2TIozAE1UuGmMdtWFp3zrYdoy8= + dependencies: + detect-indent "^5.0.0" + graceful-fs "^4.1.2" + make-dir "^1.0.0" + pify "^3.0.0" + sort-keys "^2.0.0" + write-file-atomic "^2.0.0" + +write-json-file@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/write-json-file/-/write-json-file-3.2.0.tgz#65bbdc9ecd8a1458e15952770ccbadfcff5fe62a" + integrity sha512-3xZqT7Byc2uORAatYiP3DHUUAVEkNOswEWNs9H5KXiicRTvzYzYqKjYc4G7p+8pltvAw641lVByKVtMpf+4sYQ== + dependencies: + detect-indent "^5.0.0" + graceful-fs "^4.1.15" + make-dir "^2.1.0" + pify "^4.0.1" + sort-keys "^2.0.0" + write-file-atomic "^2.4.2" + +write-pkg@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/write-pkg/-/write-pkg-3.2.0.tgz#0e178fe97820d389a8928bc79535dbe68c2cff21" + integrity sha512-tX2ifZ0YqEFOF1wjRW2Pk93NLsj02+n1UP5RvO6rCs0K6R2g1padvf006cY74PQJKMGS2r42NK7FD0dG6Y6paw== + dependencies: + sort-keys "^2.0.0" + write-json-file "^2.2.0" + write@1.0.3: version "1.0.3" resolved "https://registry.npmjs.org/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3" @@ -7344,7 +10416,7 @@ xregexp@^4.3.0: dependencies: "@babel/runtime-corejs3" "^7.8.3" -xtend@^4.0.1: +xtend@^4.0.1, xtend@~4.0.1: version "4.0.2" resolved "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== @@ -7371,6 +10443,11 @@ yallist@^2.1.2: resolved "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= +yallist@^3.0.0, yallist@^3.0.2, yallist@^3.0.3: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + yaml@^1.8.2: version "1.8.3" resolved "https://registry.npmjs.org/yaml/-/yaml-1.8.3.tgz#2f420fca58b68ce3a332d0ca64be1d191dd3f87a" @@ -7394,6 +10471,14 @@ yargs-parser@13.1.2, yargs-parser@^13.1.1, yargs-parser@^13.1.2: camelcase "^5.0.0" decamelize "^1.2.0" +yargs-parser@^15.0.1: + version "15.0.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-15.0.1.tgz#54786af40b820dcb2fb8025b11b4d659d76323b3" + integrity sha512-0OAMV2mAZQrs3FkNpDQcBk1x5HXb8X4twADss4S0Iuk+2dGnLOE/fRHrsYm542GduMveyA77OF4wrNJuanRCWw== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + yargs-parser@^18.1.1: version "18.1.1" resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.1.tgz#bf7407b915427fc760fcbbccc6c82b4f0ffcbd37" @@ -7402,6 +10487,14 @@ yargs-parser@^18.1.1: camelcase "^5.0.0" decamelize "^1.2.0" +yargs-parser@^18.1.3: + version "18.1.3" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" + integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + yargs-unparser@1.6.0: version "1.6.0" resolved "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.6.0.tgz#ef25c2c769ff6bd09e4b0f9d7c605fb27846ea9f" @@ -7460,6 +10553,23 @@ yargs@15.3.1, yargs@^15.0.2: y18n "^4.0.0" yargs-parser "^18.1.1" +yargs@^14.2.2: + version "14.2.3" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-14.2.3.tgz#1a1c3edced1afb2a2fea33604bc6d1d8d688a414" + integrity sha512-ZbotRWhF+lkjijC/VhmOT9wSgyBQ7+zr13+YLkhfsSiTriYsMzkTUFP18pFhWwBeMa5gUc1MzbhrO6/VB7c9Xg== + dependencies: + cliui "^5.0.0" + decamelize "^1.2.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 "^15.0.1" + yarn@^1.22.4: version "1.22.4" resolved "https://registry.npmjs.org/yarn/-/yarn-1.22.4.tgz#01c1197ca5b27f21edc8bc472cd4c8ce0e5a470e" -- GitLab From 5bc4c5d22dfb692b07d170fda5b80c1853747a54 Mon Sep 17 00:00:00 2001 From: chevdor Date: Thu, 14 May 2020 17:30:29 +0200 Subject: [PATCH 63/86] Add typedoc support for all packages --- .gitignore | 1 + package.json | 7 +- packages/polkabot-api/package.json | 2 +- packages/polkabot-api/typedoc.json | 2 +- .../polkabot-plugin-blockstats/package.json | 3 +- .../polkabot-plugin-blockstats/typedoc.json | 10 + .../polkabot-plugin-blocthday/package.json | 3 +- .../polkabot-plugin-blocthday/typedoc.json | 9 + .../package.json | 3 +- .../typedoc.json | 10 + .../package.json | 3 +- .../typedoc.json | 10 + .../polkabot-plugin-operator/package.json | 3 +- .../polkabot-plugin-operator/typedoc.json | 10 + .../polkabot-plugin-reporter/package.json | 3 +- .../polkabot-plugin-reporter/typedoc.json | 10 + .../polkabot-plugin-stallwatcher/package.json | 3 +- .../polkabot-plugin-stallwatcher/typedoc.json | 10 + packages/polkabot/package.json | 2 +- packages/polkabot/typedoc.json | 2 +- yarn.lock | 178 +++++++++--------- 21 files changed, 181 insertions(+), 103 deletions(-) create mode 100644 packages/polkabot-plugin-blockstats/typedoc.json create mode 100644 packages/polkabot-plugin-blocthday/typedoc.json create mode 100644 packages/polkabot-plugin-notifier-matrix/typedoc.json create mode 100644 packages/polkabot-plugin-notifier-twitter/typedoc.json create mode 100644 packages/polkabot-plugin-operator/typedoc.json create mode 100644 packages/polkabot-plugin-reporter/typedoc.json create mode 100644 packages/polkabot-plugin-stallwatcher/typedoc.json diff --git a/.gitignore b/.gitignore index 012e9bd..b98d840 100644 --- a/.gitignore +++ b/.gitignore @@ -13,3 +13,4 @@ yarn-error.log polkabot.code-workspace *.log docs +public/doc diff --git a/package.json b/package.json index 2f629fb..45470d4 100644 --- a/package.json +++ b/package.json @@ -13,9 +13,10 @@ "lint": "eslint --ext .ts,.tsx .", "test": "echo \"skipping tests\"", "start": "cd packages/polkabot && yarn start", - "build": "cd packages/polkabot && yarn build", + "build": "lerna run build", "build:doc": "lerna run build:doc", - "clean": "lerna run clean" + "clean:local": "rm -rf docs", + "clean": "yarn clean:local; lerna run clean" }, "devDependencies": { "@babel/plugin-transform-runtime": "^7.8.3", @@ -24,6 +25,6 @@ }, "dependencies": { "@babel/runtime": "^7.8.7", - "@polkadot/api": "^1.13.1" + "@polkadot/api": "^1.14.1" } } diff --git a/packages/polkabot-api/package.json b/packages/polkabot-api/package.json index 28072ea..1f232b6 100644 --- a/packages/polkabot-api/package.json +++ b/packages/polkabot-api/package.json @@ -10,7 +10,7 @@ "prepublishOnly": "npm run build", "clean": "rm -rf dist build node_modules docs", "postinstall": "npm run build", - "build:doc": "typedoc --out docs src" + "build:doc": "typedoc src" }, "author": "Chevdor ", "license": "ISC", diff --git a/packages/polkabot-api/typedoc.json b/packages/polkabot-api/typedoc.json index 2299d55..57c7280 100644 --- a/packages/polkabot-api/typedoc.json +++ b/packages/polkabot-api/typedoc.json @@ -1,7 +1,7 @@ { "name": "PolkaBOT-api", "mode": "modules", - "out": "docs", + "out": "../../public/doc/polkabot-api", "theme": "default", "ignoreCompilerErrors": "false", "preserveConstEnums": "true", diff --git a/packages/polkabot-plugin-blockstats/package.json b/packages/polkabot-plugin-blockstats/package.json index a620bfc..013be06 100644 --- a/packages/polkabot-plugin-blockstats/package.json +++ b/packages/polkabot-plugin-blockstats/package.json @@ -9,7 +9,8 @@ "build": "tsc --build tsconfig.json", "prepublishOnly": "npm run build", "clean": "rm -rf dist node_modules", - "postinstall": "npm run build" + "postinstall": "npm run build", + "build:doc": "typedoc src" }, "author": "Chevdor ", "license": "ISC", diff --git a/packages/polkabot-plugin-blockstats/typedoc.json b/packages/polkabot-plugin-blockstats/typedoc.json new file mode 100644 index 0000000..105b4e4 --- /dev/null +++ b/packages/polkabot-plugin-blockstats/typedoc.json @@ -0,0 +1,10 @@ +{ + "name": "PolkaBOT plugin: Blockstats", + "mode": "modules", + "out": "../../public/doc/polkabot-blockstats", + "theme": "default", + "ignoreCompilerErrors": "false", + "preserveConstEnums": "true", + "exclude": "*.spec.ts", + "stripInternal": "false" + } \ No newline at end of file diff --git a/packages/polkabot-plugin-blocthday/package.json b/packages/polkabot-plugin-blocthday/package.json index 38dd8a3..1e5d239 100644 --- a/packages/polkabot-plugin-blocthday/package.json +++ b/packages/polkabot-plugin-blocthday/package.json @@ -9,7 +9,8 @@ "build": "tsc --build tsconfig.json", "prepublishOnly": "npm run build", "clean": "rm -rf dist build node_modules", - "postinstall": "npm run build" + "postinstall": "npm run build", + "build:doc": "typedoc src" }, "author": "Chevdor ", "license": "ISC", diff --git a/packages/polkabot-plugin-blocthday/typedoc.json b/packages/polkabot-plugin-blocthday/typedoc.json new file mode 100644 index 0000000..ff9613d --- /dev/null +++ b/packages/polkabot-plugin-blocthday/typedoc.json @@ -0,0 +1,9 @@ +{ + "name": "PolkaBOT plugin: Blocthday", + "out": "../../public/doc/polkabot-blocthday", + "theme": "default", + "ignoreCompilerErrors": "false", + "preserveConstEnums": "true", + "exclude": "*.spec.ts", + "stripInternal": "false" + } \ No newline at end of file diff --git a/packages/polkabot-plugin-notifier-matrix/package.json b/packages/polkabot-plugin-notifier-matrix/package.json index 72479cf..8a4083f 100644 --- a/packages/polkabot-plugin-notifier-matrix/package.json +++ b/packages/polkabot-plugin-notifier-matrix/package.json @@ -9,7 +9,8 @@ "build": "tsc --build tsconfig.json", "prepublishOnly": "npm run build", "clean": "rm -rf dist build node_modules", - "postinstall": "npm run build" + "postinstall": "npm run build", + "build:doc": "typedoc src" }, "author": "Chevdor ", "license": "ISC", diff --git a/packages/polkabot-plugin-notifier-matrix/typedoc.json b/packages/polkabot-plugin-notifier-matrix/typedoc.json new file mode 100644 index 0000000..5ff87de --- /dev/null +++ b/packages/polkabot-plugin-notifier-matrix/typedoc.json @@ -0,0 +1,10 @@ +{ + "name": "PolkaBOT plugin: Matrix Notifier", + "mode": "modules", + "out": "../../public/doc/polkabot-notifier-matrix", + "theme": "default", + "ignoreCompilerErrors": "false", + "preserveConstEnums": "true", + "exclude": "*.spec.ts", + "stripInternal": "false" + } \ No newline at end of file diff --git a/packages/polkabot-plugin-notifier-twitter/package.json b/packages/polkabot-plugin-notifier-twitter/package.json index e6271d4..ba3d6bb 100644 --- a/packages/polkabot-plugin-notifier-twitter/package.json +++ b/packages/polkabot-plugin-notifier-twitter/package.json @@ -9,7 +9,8 @@ "build": "tsc --build tsconfig.json", "prepublishOnly": "npm run build", "clean": "rm -rf dist build node_modules", - "postinstall": "npm run build" + "postinstall": "npm run build", + "build:doc": "typedoc src" }, "author": "Chevdor ", "license": "ISC", diff --git a/packages/polkabot-plugin-notifier-twitter/typedoc.json b/packages/polkabot-plugin-notifier-twitter/typedoc.json new file mode 100644 index 0000000..2b04aa8 --- /dev/null +++ b/packages/polkabot-plugin-notifier-twitter/typedoc.json @@ -0,0 +1,10 @@ +{ + "name": "PolkaBOT plugin: Twitter Notifier", + "mode": "modules", + "out": "../../public/doc/polkabot-notifier-twitter", + "theme": "default", + "ignoreCompilerErrors": "false", + "preserveConstEnums": "true", + "exclude": "*.spec.ts", + "stripInternal": "false" + } \ No newline at end of file diff --git a/packages/polkabot-plugin-operator/package.json b/packages/polkabot-plugin-operator/package.json index f07f697..5d777cf 100644 --- a/packages/polkabot-plugin-operator/package.json +++ b/packages/polkabot-plugin-operator/package.json @@ -12,7 +12,8 @@ "postinstall": "npm run build", "clean": "rm -rf dist node_modules", "test": "mocha -r ts-node/register tests/**/*.test.ts", - "coverage": "nyc -r lcov -e .ts -x \"*.test.ts\" npm run test" + "coverage": "nyc -r lcov -e .ts -x \"*.test.ts\" npm run test", + "build:doc": "typedoc src" }, "author": "Chevdor ", "license": "ISC", diff --git a/packages/polkabot-plugin-operator/typedoc.json b/packages/polkabot-plugin-operator/typedoc.json new file mode 100644 index 0000000..ff545fd --- /dev/null +++ b/packages/polkabot-plugin-operator/typedoc.json @@ -0,0 +1,10 @@ +{ + "name": "PolkaBOT plugin: Operator", + "mode": "modules", + "out": "../../public/doc/polkabot-operator", + "theme": "default", + "ignoreCompilerErrors": "false", + "preserveConstEnums": "true", + "exclude": "*.spec.ts", + "stripInternal": "false" + } \ No newline at end of file diff --git a/packages/polkabot-plugin-reporter/package.json b/packages/polkabot-plugin-reporter/package.json index 92ae4ed..e4200b8 100644 --- a/packages/polkabot-plugin-reporter/package.json +++ b/packages/polkabot-plugin-reporter/package.json @@ -9,7 +9,8 @@ "start": "babel-node ./src/index.js", "prepublishOnly": "npm run build", "postinstall": "npm run build", - "clean": "rm -rf dist build node_modules" + "clean": "rm -rf dist build node_modules", + "build:doc": "typedoc src" }, "author": "Chevdor ", "license": "ISC", diff --git a/packages/polkabot-plugin-reporter/typedoc.json b/packages/polkabot-plugin-reporter/typedoc.json new file mode 100644 index 0000000..bfcdae2 --- /dev/null +++ b/packages/polkabot-plugin-reporter/typedoc.json @@ -0,0 +1,10 @@ +{ + "name": "PolkaBOT plugin: Reporter", + "mode": "modules", + "out": "../../public/doc/polkabot-reporter", + "theme": "default", + "ignoreCompilerErrors": "false", + "preserveConstEnums": "true", + "exclude": "*.spec.ts", + "stripInternal": "false" + } \ No newline at end of file diff --git a/packages/polkabot-plugin-stallwatcher/package.json b/packages/polkabot-plugin-stallwatcher/package.json index 93f6651..3cb6f94 100644 --- a/packages/polkabot-plugin-stallwatcher/package.json +++ b/packages/polkabot-plugin-stallwatcher/package.json @@ -9,7 +9,8 @@ "start": "babel-node ./src/index.js", "prepublishOnly": "npm run build", "postinstall": "npm run build", - "clean": "rm -rf dist node_mdules" + "clean": "rm -rf dist node_mdules", + "build:doc": "typedoc src" }, "author": "Chevdor ", "license": "ISC", diff --git a/packages/polkabot-plugin-stallwatcher/typedoc.json b/packages/polkabot-plugin-stallwatcher/typedoc.json new file mode 100644 index 0000000..28c7336 --- /dev/null +++ b/packages/polkabot-plugin-stallwatcher/typedoc.json @@ -0,0 +1,10 @@ +{ + "name": "PolkaBOT plugin: Stallwatcher", + "mode": "modules", + "out": "../../public/doc/polkabot-stallwatcher", + "theme": "default", + "ignoreCompilerErrors": "false", + "preserveConstEnums": "true", + "exclude": "*.spec.ts", + "stripInternal": "false" + } \ No newline at end of file diff --git a/packages/polkabot/package.json b/packages/polkabot/package.json index 9dab91a..173d376 100644 --- a/packages/polkabot/package.json +++ b/packages/polkabot/package.json @@ -18,7 +18,7 @@ "lint": "eslint --ext .js,.ts src", "clean": "rm -rf .nyc_output build coverage node_modules out dist *.log docs", "prepublishOnly": "npm run build", - "build:doc": "typedoc --out docs src", + "build:doc": "typedoc src", "build:docker": "docker build -t chevdor/polkabot .", "docker:run": "docker run --rm -it chevdor/mypolkabot", "patch": "echo 'Disabling package uniqueness check. See https://github.com/polkadot-js/api/issues/984'; sed -i '/function assertSingletonPackage(name) {/ a return' node_modules/@polkadot/util/assertSingletonPackage.js" diff --git a/packages/polkabot/typedoc.json b/packages/polkabot/typedoc.json index 21346b6..0cd5f84 100644 --- a/packages/polkabot/typedoc.json +++ b/packages/polkabot/typedoc.json @@ -1,7 +1,7 @@ { "name": "PolkaBOT", "mode": "modules", - "out": "docs", + "out": "../../public/doc/polkabot", "theme": "default", "ignoreCompilerErrors": "false", "preserveConstEnums": "true", diff --git a/yarn.lock b/yarn.lock index db0a6c4..f1c6020 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1115,121 +1115,121 @@ dependencies: "@types/node" ">= 8" -"@polkadot/api-derive@1.13.1": - version "1.13.1" - resolved "https://registry.yarnpkg.com/@polkadot/api-derive/-/api-derive-1.13.1.tgz#e52743291c64ae7f71624bb251bc5544785d9a33" - integrity sha512-Zj5JIg8oyn321G8vX2tpD9UlEHFhMNvdvho8nK7a1L+pqglcE3rs3GSDbCGhCaPHx2fUXYEARazBJKkOHMgMdQ== +"@polkadot/api-derive@1.14.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@polkadot/api-derive/-/api-derive-1.14.1.tgz#3f3064af65bbb103b07a0986b97c76a40396e633" + integrity sha512-Qt+ijb+9WhDvBQM1ZJPSJKMchILY4/9pgGAMUcWZf9iC2nR9tOE8OG+OeFdzno43jspuZ8qUrkg5vapfZ/5/gQ== dependencies: "@babel/runtime" "^7.9.6" - "@polkadot/api" "1.13.1" - "@polkadot/rpc-core" "1.13.1" - "@polkadot/rpc-provider" "1.13.1" - "@polkadot/types" "1.13.1" - "@polkadot/util" "^2.9.1" - "@polkadot/util-crypto" "^2.9.1" + "@polkadot/api" "1.14.1" + "@polkadot/rpc-core" "1.14.1" + "@polkadot/rpc-provider" "1.14.1" + "@polkadot/types" "1.14.1" + "@polkadot/util" "^2.10.1" + "@polkadot/util-crypto" "^2.10.1" bn.js "^5.1.1" memoizee "^0.4.14" rxjs "^6.5.5" -"@polkadot/api@1.13.1", "@polkadot/api@^1.13.1": - version "1.13.1" - resolved "https://registry.yarnpkg.com/@polkadot/api/-/api-1.13.1.tgz#6e8cb2f59a230498811c9fd818e1756316188044" - integrity sha512-q/dzklbTpshR58tpLmi7Z51ii6dtpbW6vmPu9PAJbFoFIe45Z09B8rczf6BgXi9mWMiO1Az9gxwtjuc1lnnobg== +"@polkadot/api@1.14.1", "@polkadot/api@^1.14.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@polkadot/api/-/api-1.14.1.tgz#14ce2e9365343a8c810335473f5ae9e028313ca0" + integrity sha512-8HKrDp8khcy41jaEcTbelLircEhT+tCGc0yX9rSij2N4oulpxdY8fWWaF2ipVr2GKpE2t6fjBPiZcVMCDwpu9g== dependencies: "@babel/runtime" "^7.9.6" - "@polkadot/api-derive" "1.13.1" - "@polkadot/keyring" "^2.9.1" - "@polkadot/metadata" "1.13.1" - "@polkadot/rpc-core" "1.13.1" - "@polkadot/rpc-provider" "1.13.1" - "@polkadot/types" "1.13.1" - "@polkadot/types-known" "1.13.1" - "@polkadot/util" "^2.9.1" - "@polkadot/util-crypto" "^2.9.1" + "@polkadot/api-derive" "1.14.1" + "@polkadot/keyring" "^2.10.1" + "@polkadot/metadata" "1.14.1" + "@polkadot/rpc-core" "1.14.1" + "@polkadot/rpc-provider" "1.14.1" + "@polkadot/types" "1.14.1" + "@polkadot/types-known" "1.14.1" + "@polkadot/util" "^2.10.1" + "@polkadot/util-crypto" "^2.10.1" bn.js "^5.1.1" - eventemitter3 "^4.0.0" + eventemitter3 "^4.0.1" rxjs "^6.5.5" -"@polkadot/keyring@^2.9.1": - version "2.9.1" - resolved "https://registry.yarnpkg.com/@polkadot/keyring/-/keyring-2.9.1.tgz#637aa5f4af4fd90065c3cb66e45d0e60928819a6" - integrity sha512-r1jcgV7SQCpc5r2twUxGLqOeQ2tqkfCFVcl877lEolCn+xrASx5rXqO+YyHDKgRnft3RK9z9/k407R+2DjVF9w== +"@polkadot/keyring@^2.10.1": + version "2.10.1" + resolved "https://registry.yarnpkg.com/@polkadot/keyring/-/keyring-2.10.1.tgz#815c01984c6c3721e3f9454f64bf55bdac5e01d0" + integrity sha512-6Wbft7MtxbnWaHZpvg3yT8l4oQNp5xTwbqVkdaRfXmPsmhJ1YJcprFWLuKsWZE4x59cYyK7eKhnKcAvFny4HTQ== dependencies: - "@babel/runtime" "^7.9.2" - "@polkadot/util" "2.9.1" - "@polkadot/util-crypto" "2.9.1" + "@babel/runtime" "^7.9.6" + "@polkadot/util" "2.10.1" + "@polkadot/util-crypto" "2.10.1" -"@polkadot/metadata@1.13.1": - version "1.13.1" - resolved "https://registry.yarnpkg.com/@polkadot/metadata/-/metadata-1.13.1.tgz#ce76d4c640ffafe460e3fe02e5993362f241af1e" - integrity sha512-81/iWr+49nWJ8FY1+xF73jiUphTR6+JSkB299oHDPvGOcbNgrcJCK49OlAvn1CLdDSybUfv62dLKX5COQ0qaNQ== +"@polkadot/metadata@1.14.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@polkadot/metadata/-/metadata-1.14.1.tgz#3746ab1cd43f551e1a9c64478b95baae98ac7849" + integrity sha512-nehxg81vcjSay5ScIwASNzM6Li59M0BR3g57hVkkj4uAbvu4bOEZ92dnQuGKbfzMmEQtvLfDdw/iDPqzCgxyGg== dependencies: "@babel/runtime" "^7.9.6" - "@polkadot/types" "1.13.1" - "@polkadot/types-known" "1.13.1" - "@polkadot/util" "^2.9.1" - "@polkadot/util-crypto" "^2.9.1" + "@polkadot/types" "1.14.1" + "@polkadot/types-known" "1.14.1" + "@polkadot/util" "^2.10.1" + "@polkadot/util-crypto" "^2.10.1" bn.js "^5.1.1" -"@polkadot/rpc-core@1.13.1": - version "1.13.1" - resolved "https://registry.yarnpkg.com/@polkadot/rpc-core/-/rpc-core-1.13.1.tgz#b4da2a73396fc3ea6eadfa9e0d3371a12f6836fb" - integrity sha512-Lzr3XdLzn9VWATUKc+tjysPZIIoDxhIU3uxN/SeTBIIigelkRoEjs3xSVSeUjN+K81N7blnUqWlS2ka2qyuDrw== +"@polkadot/rpc-core@1.14.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@polkadot/rpc-core/-/rpc-core-1.14.1.tgz#b9af6102d94d4f3f993e8f5000a5a8243cfa382c" + integrity sha512-GxZlnxO4ocwaMKdfHgAc7/fvH5nLqZ1AdR9xKkqyR2t3MVjQozB2NeJi99mmZ093AhYHKvGmaBtu38CVTO8Sxg== dependencies: "@babel/runtime" "^7.9.6" - "@polkadot/metadata" "1.13.1" - "@polkadot/rpc-provider" "1.13.1" - "@polkadot/types" "1.13.1" - "@polkadot/util" "^2.9.1" + "@polkadot/metadata" "1.14.1" + "@polkadot/rpc-provider" "1.14.1" + "@polkadot/types" "1.14.1" + "@polkadot/util" "^2.10.1" memoizee "^0.4.14" rxjs "^6.5.5" -"@polkadot/rpc-provider@1.13.1": - version "1.13.1" - resolved "https://registry.yarnpkg.com/@polkadot/rpc-provider/-/rpc-provider-1.13.1.tgz#ce4e9ccf76a72b5858d80d9309d6d67c8dfd91bf" - integrity sha512-thr8sa/4MSx36+VYrQUtRSHgeyND1sz/GyQyPYj57KHrzG0AkXs/akM2p4ohdUKs7SCcBVCXuGq5rNbO9hjgQQ== +"@polkadot/rpc-provider@1.14.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@polkadot/rpc-provider/-/rpc-provider-1.14.1.tgz#4f243d7991fdd9fe0317aa5d42a1b29379acff1e" + integrity sha512-bp1EVLYVculRwcxKGlNxi1CWdsCEal9rtwMryOu5jw637Lpm23N1xq5vrX/pVQB2DzytvmuBJeUsf7DdgHEVAg== dependencies: "@babel/runtime" "^7.9.6" - "@polkadot/metadata" "1.13.1" - "@polkadot/types" "1.13.1" - "@polkadot/util" "^2.9.1" - "@polkadot/util-crypto" "^2.9.1" + "@polkadot/metadata" "1.14.1" + "@polkadot/types" "1.14.1" + "@polkadot/util" "^2.10.1" + "@polkadot/util-crypto" "^2.10.1" bn.js "^5.1.1" - eventemitter3 "^4.0.0" + eventemitter3 "^4.0.1" isomorphic-fetch "^2.2.1" websocket "^1.0.31" -"@polkadot/types-known@1.13.1": - version "1.13.1" - resolved "https://registry.yarnpkg.com/@polkadot/types-known/-/types-known-1.13.1.tgz#a26aa12dc67ed9748f840758b077b15dbc17d898" - integrity sha512-TIFV9Fzoostg9dgdIGy4zh4cpQJ0WeyyMeYstYUBMbLU4cfTLpHEXLJN2U7/wZ5SDFpQh1TOt/xzGWjCzmv1jg== +"@polkadot/types-known@1.14.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@polkadot/types-known/-/types-known-1.14.1.tgz#4bafa1159ed3ac50bd043643dce0eeb44fa31157" + integrity sha512-fqde3QavX1z+xIra1D6cObf36ATbK5rCcwG2vQU3YXV3NIHYIqQ6CO79TaybKsxx+Sv7ygy4j13G2rSdLqSuXQ== dependencies: "@babel/runtime" "^7.9.6" - "@polkadot/types" "1.13.1" - "@polkadot/util" "^2.9.1" + "@polkadot/types" "1.14.1" + "@polkadot/util" "^2.10.1" bn.js "^5.1.1" -"@polkadot/types@1.13.1": - version "1.13.1" - resolved "https://registry.yarnpkg.com/@polkadot/types/-/types-1.13.1.tgz#4583b7773644fe777d8fa0b837d8d562f8172ac0" - integrity sha512-cyANcVkDQmb3Ih5XggvLMWj7Gu9/VL/HYoebua50mecuYWa9eOn3iYGVmvvYG2rFcObikLwAwrUu8Dn1AZ5RoA== +"@polkadot/types@1.14.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@polkadot/types/-/types-1.14.1.tgz#1854b74eec76af5ead1be6444e553c945c7c537a" + integrity sha512-Q3JIlAXMVWNGjsdWG0xnhone/1uj7R3vWFjft+cweNs40/tUalY6AbyBZ29XTU8WPEmmUspprQ5YmujhHtZg8Q== dependencies: "@babel/runtime" "^7.9.6" - "@polkadot/metadata" "1.13.1" - "@polkadot/util" "^2.9.1" - "@polkadot/util-crypto" "^2.9.1" + "@polkadot/metadata" "1.14.1" + "@polkadot/util" "^2.10.1" + "@polkadot/util-crypto" "^2.10.1" "@types/bn.js" "^4.11.6" bn.js "^5.1.1" memoizee "^0.4.14" rxjs "^6.5.5" -"@polkadot/util-crypto@2.9.1", "@polkadot/util-crypto@^2.9.1": - version "2.9.1" - resolved "https://registry.yarnpkg.com/@polkadot/util-crypto/-/util-crypto-2.9.1.tgz#a09aa507a2a09a034acb2f764efff40f90a078b1" - integrity sha512-agPZyW1XJH0vpbwLh3khZ5txBMSjWtyflmpTJeYSVinrDqs4EFkcN3IOVqQEL+SEpLPXUHxNXYNQM7Ls7poZ6Q== +"@polkadot/util-crypto@2.10.1", "@polkadot/util-crypto@^2.10.1": + version "2.10.1" + resolved "https://registry.yarnpkg.com/@polkadot/util-crypto/-/util-crypto-2.10.1.tgz#10c00a0b63d3f4005583e6aab5e9baee5234437c" + integrity sha512-sxJZwi5CWfOrytVGtvMT5gn7+rrdgCECtmiG94AouyzdCIWqr9DC+BbX95q7Rja8+kLwkm08FWAsI5pwN9oizQ== dependencies: - "@babel/runtime" "^7.9.2" - "@polkadot/util" "2.9.1" + "@babel/runtime" "^7.9.6" + "@polkadot/util" "2.10.1" "@polkadot/wasm-crypto" "^1.2.1" base-x "^3.0.8" bip39 "^3.0.2" @@ -1242,12 +1242,12 @@ tweetnacl "^1.0.3" xxhashjs "^0.2.2" -"@polkadot/util@2.9.1", "@polkadot/util@^2.9.1": - version "2.9.1" - resolved "https://registry.yarnpkg.com/@polkadot/util/-/util-2.9.1.tgz#841105eef98c9689cc369bc5eeb7a09a98ec14b2" - integrity sha512-7E/bl9B8hNPb3gnuH8IDAqpsdQ6Z+Y8RgPIJNY9l20FJ1W1ST0UpZgB0BCurrL9kTf4TTg4Lt8iFVwcq8MHRjg== +"@polkadot/util@2.10.1", "@polkadot/util@^2.10.1": + version "2.10.1" + resolved "https://registry.yarnpkg.com/@polkadot/util/-/util-2.10.1.tgz#981e19327b49532c8b8d2f2d18e23c3548cbe969" + integrity sha512-DaIvvx3zphDlf3ZywLnlrRTngcjGIl7Dn3lbwsgHlMSyENz07TG6YG+ztr0ztUrb9BqFKAeH6XGNtGPBp0LxwA== dependencies: - "@babel/runtime" "^7.9.2" + "@babel/runtime" "^7.9.6" "@types/bn.js" "^4.11.6" bn.js "^5.1.1" camelcase "^5.3.1" @@ -4515,10 +4515,10 @@ eventemitter3@^3.1.0: resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.2.tgz#2d3d48f9c346698fce83a85d7d664e98535df6e7" integrity sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q== -eventemitter3@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.0.tgz#d65176163887ee59f386d64c82610b696a4a74eb" - integrity sha512-qerSRB0p+UDEssxTtm6EDKcE7W4OaoisfIMl4CngyEhjpYglocpNg6UEqCvemdGhosAsg4sO2dXJOdyBifPGCg== +eventemitter3@^4.0.1: + version "4.0.4" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.4.tgz#b5463ace635a083d018bdc7c917b4c5f10a85384" + integrity sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ== execa@^0.7.0: version "0.7.0" @@ -9959,16 +9959,16 @@ typedoc@^0.17.6: shelljs "^0.8.4" typedoc-default-themes "^0.10.1" -typescript@3.9.2: - version "3.9.2" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.2.tgz#64e9c8e9be6ea583c54607677dd4680a1cf35db9" - integrity sha512-q2ktq4n/uLuNNShyayit+DTobV2ApPEo/6so68JaD5ojvc/6GClBipedB9zNWYxRSAlZXAe405Rlijzl6qDiSw== - typescript@^3.5.3, typescript@^3.8.3: version "3.8.3" resolved "https://registry.npmjs.org/typescript/-/typescript-3.8.3.tgz#409eb8544ea0335711205869ec458ab109ee1061" integrity sha512-MYlEfn5VrLNsgudQTVJeNaQFUAI7DkhnOjdpAp4T+ku1TfQClewlbSuTVHiA+8skNBgaf02TL/kLOvig4y3G8w== +typescript@^3.9.2: + version "3.9.2" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.2.tgz#64e9c8e9be6ea583c54607677dd4680a1cf35db9" + integrity sha512-q2ktq4n/uLuNNShyayit+DTobV2ApPEo/6so68JaD5ojvc/6GClBipedB9zNWYxRSAlZXAe405Rlijzl6qDiSw== + uc.micro@^1.0.1, uc.micro@^1.0.5: version "1.0.6" resolved "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz#9c411a802a409a91fc6cf74081baba34b24499ac" -- GitLab From 59f037cbbe6ea22dddde3087189fbf68025739cc Mon Sep 17 00:00:00 2001 From: chevdor Date: Thu, 14 May 2020 17:47:33 +0200 Subject: [PATCH 64/86] Fix linting issues --- packages/polkabot-api/src/types.ts | 3 +++ .../polkabot-plugin-reporter/src/index.ts | 21 +++++++------------ 2 files changed, 10 insertions(+), 14 deletions(-) create mode 100644 packages/polkabot-api/src/types.ts diff --git a/packages/polkabot-api/src/types.ts b/packages/polkabot-api/src/types.ts new file mode 100644 index 0000000..39bbd21 --- /dev/null +++ b/packages/polkabot-api/src/types.ts @@ -0,0 +1,3 @@ +export type Cache = { + [Key: string]: unknown; +} \ No newline at end of file diff --git a/packages/polkabot-plugin-reporter/src/index.ts b/packages/polkabot-plugin-reporter/src/index.ts index 9391ddd..cd866dc 100644 --- a/packages/polkabot-plugin-reporter/src/index.ts +++ b/packages/polkabot-plugin-reporter/src/index.ts @@ -1,13 +1,7 @@ import BN from 'bn.js'; import moment from 'moment'; -// import "moment-duration-format"; - import { NotifierSpecs, PluginModule, PluginContext } from '@polkabot/api/src/plugin.interface'; - import { PolkabotWorker } from '@polkabot/api/src/PolkabotWorker'; - -// TODO: Will move to hash later on -// import xxhash from "@polkadot/util-crypto/xxhash/xxhash64/asHex"; import blake2 from '@polkadot/util-crypto/blake2/asHex'; enum Severity { @@ -31,17 +25,15 @@ type BlockMoment = { export default class Reporter extends PolkabotWorker { private cache: any; + private unsub: Function; + private notifierSpecs: NotifierSpecs = { notifiers: ['matrix'], }; - // TODO: bring params and loadParams here - private consts: any; public constructor(mod: PluginModule, context: PluginContext, config?) { super(mod, context, config); this.cache = {}; - // this.config = {}; - this.consts = this.context.polkadot.consts; } /** Check the last blocks and figure out the block time. @@ -95,7 +87,8 @@ export default class Reporter extends PolkabotWorker { public stop(): void { console.log('Reporter - STOPPING'); - // TODO: do all the unsub here + if (this.unsub) + this.unsub(); } private announce(message: Announcement): void { @@ -115,7 +108,7 @@ export default class Reporter extends PolkabotWorker { } async subscribeChainBlockHeader(): Promise { - await this.context.polkadot.rpc.chain.subscribeNewHeads(header => { + this.unsub = await this.context.polkadot.rpc.chain.subscribeNewHeads(header => { const KEY = 'blockNumber'; if (header) { this.cache[KEY] = header.number.unwrap().toBn(); @@ -222,10 +215,10 @@ You will be able to vote shortly, a new referendum will show up in the UI.`, if (!this.cache[KEY]) this.cache[KEY] = count; if (this.cache[KEY] && !this.cache[KEY].eq(count)) { this.cache[KEY] = count; - const deadline = this.cache.blockNumber.add(this.consts.democracy.votingPeriod) as BN; + const deadline = this.cache.blockNumber.add(this.context.polkadot.consts.democracy.votingPeriod) as BN; const blockMoment = await this.getBlockMoment(deadline); // const votingTimeInMinutes = - // parseInt(this.consts.democracy.votingPeriod.mul(this.cache.minimumPeriod).toString(10)) / 60; + // parseInt(this.context.polkadot.consts.democracy.votingPeriod.mul(this.cache.minimumPeriod).toString(10)) / 60; console.log('Reporter - Proposal count changed:', count.toString(10)); const id = count.sub(new BN(1)).toString(10); -- GitLab From 673285eb0ec02535de3316f3b8a133463f1b4089 Mon Sep 17 00:00:00 2001 From: chevdor Date: Thu, 14 May 2020 18:55:31 +0200 Subject: [PATCH 65/86] Plug mocha tests in and add tests --- package.json | 2 +- packages/polkabot-api/.mocharc.yml | 15 +++++++ packages/polkabot-api/package.json | 2 + packages/polkabot-api/src/PolkabotChatbot.ts | 5 +-- packages/polkabot-api/test/chatbot.spec.ts | 42 +++++++++++++++++++ .../polkabot-plugin-operator/.mocharc.yml | 15 +++++++ .../polkabot-plugin-operator/package.json | 3 +- .../polkabot-plugin-operator/src/helpers.ts | 8 ++++ .../polkabot-plugin-operator/src/index.ts | 12 +++--- .../commands.spec.ts} | 0 .../test/helpers.spec.ts | 0 .../polkabot-plugin-reporter/src/index.ts | 2 +- .../polkabot-plugin-stallwatcher/src/index.ts | 4 +- packages/polkabot/.mocharc.yml | 15 +++++++ packages/polkabot/package.json | 4 +- packages/polkabot/test/sample.spec.ts | 7 ++++ packages/polkabot/test/user.js | 13 ------ 17 files changed, 118 insertions(+), 31 deletions(-) create mode 100644 packages/polkabot-api/.mocharc.yml create mode 100644 packages/polkabot-api/test/chatbot.spec.ts create mode 100644 packages/polkabot-plugin-operator/.mocharc.yml create mode 100644 packages/polkabot-plugin-operator/src/helpers.ts rename packages/polkabot-plugin-operator/{tests/commands.test.ts => test/commands.spec.ts} (100%) create mode 100644 packages/polkabot-plugin-operator/test/helpers.spec.ts create mode 100644 packages/polkabot/.mocharc.yml create mode 100644 packages/polkabot/test/sample.spec.ts delete mode 100644 packages/polkabot/test/user.js diff --git a/package.json b/package.json index 45470d4..a34de5e 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,7 @@ "analyze": "yarn run build", "check": "yarn lint", "lint": "eslint --ext .ts,.tsx .", - "test": "echo \"skipping tests\"", + "test": "lerna run test", "start": "cd packages/polkabot && yarn start", "build": "lerna run build", "build:doc": "lerna run build:doc", diff --git a/packages/polkabot-api/.mocharc.yml b/packages/polkabot-api/.mocharc.yml new file mode 100644 index 0000000..4760947 --- /dev/null +++ b/packages/polkabot-api/.mocharc.yml @@ -0,0 +1,15 @@ +diff: true +extension: + - js + - ts +package: ./package.json +reporter: spec +slow: 75 +timeout: 2000 +ui: bdd +recursive: true +require: + - ts-node/register +watch-files: + - 'test/**/*.spec.ts' + - 'src/**/*.ts' \ No newline at end of file diff --git a/packages/polkabot-api/package.json b/packages/polkabot-api/package.json index 1f232b6..a7927ec 100644 --- a/packages/polkabot-api/package.json +++ b/packages/polkabot-api/package.json @@ -8,6 +8,8 @@ "start": "babel-node ./src/index.js", "build": "tsc --build tsconfig.json", "prepublishOnly": "npm run build", + "test": "mocha", + "test:watch": "mocha --watch", "clean": "rm -rf dist build node_modules docs", "postinstall": "npm run build", "build:doc": "typedoc src" diff --git a/packages/polkabot-api/src/PolkabotChatbot.ts b/packages/polkabot-api/src/PolkabotChatbot.ts index b93cbef..27c78cc 100644 --- a/packages/polkabot-api/src/PolkabotChatbot.ts +++ b/packages/polkabot-api/src/PolkabotChatbot.ts @@ -50,9 +50,8 @@ export abstract class PolkabotChatbot extends PolkabotPluginBase implements Chat } /** - * Get a string from the chat and extract a BotCommand or none + * Get a string from the chat and extract a BotCommand from it or none if there is no match * See https://regex101.com/r/1EDFsV/1/tests - * TODO: That should be a factory creating an instance of a BotCommand class */ public static getBotCommand(str: string): BotCommand | null { const capture = str.match(/^!(?\w+)(\s+(?\w+))(\s+(?.*))?$/i) || []; @@ -67,7 +66,7 @@ export abstract class PolkabotChatbot extends PolkabotPluginBase implements Chat return obj; } else { - // Logger.info("FAILED PARSING COMMAND", str); // TODO: make this a silly logger message so it does not bother + Logger.silly('FAILED PARSING COMMAND', str); return null; } } diff --git a/packages/polkabot-api/test/chatbot.spec.ts b/packages/polkabot-api/test/chatbot.spec.ts new file mode 100644 index 0000000..199a767 --- /dev/null +++ b/packages/polkabot-api/test/chatbot.spec.ts @@ -0,0 +1,42 @@ +import { PolkabotChatbot } from '../src/PolkabotChatbot'; +import { expect } from 'chai'; + +describe('PolkabotChatbot', () => { + it('Should get a valid botCommand #1', () => { + const cmd = PolkabotChatbot.getBotCommand('!mod foo bar'); + expect(cmd.module).to.equal('mod'); + expect(cmd.command).to.equal('foo'); + expect(cmd.args).to.deep.equal(['bar']); + }); + + it('Should get a valid botCommand #2', () => { + const cmd = PolkabotChatbot.getBotCommand('!mod foo'); + expect(cmd.module).to.equal('mod'); + expect(cmd.command).to.equal('foo'); + expect(cmd.args).to.be.null; + }); + + it('Should get a valid botCommand with all args', () => { + const cmd = PolkabotChatbot.getBotCommand('!mod foo bar param=42'); + expect(cmd.module).to.equal('mod'); + expect(cmd.command).to.equal('foo'); + expect(cmd.args).to.deep.equal(['bar', 'param=42']); + }); + + xit('Should get a valid botCommand', () => { + const cmd = PolkabotChatbot.getBotCommand(' !mod foo bar'); + expect(cmd.module).to.equal('mod'); + expect(cmd.command).to.equal('foo'); + expect(cmd.args).to.be.null; + }); + + it('Should not find a botCommand #1', () => { + const cmd = PolkabotChatbot.getBotCommand('! mod foo'); + expect(cmd).to.be.null; + }); + + it('Should not find a botCommand #2', () => { + const cmd = PolkabotChatbot.getBotCommand('!mod'); + expect(cmd).to.be.null; + }); +}); diff --git a/packages/polkabot-plugin-operator/.mocharc.yml b/packages/polkabot-plugin-operator/.mocharc.yml new file mode 100644 index 0000000..4760947 --- /dev/null +++ b/packages/polkabot-plugin-operator/.mocharc.yml @@ -0,0 +1,15 @@ +diff: true +extension: + - js + - ts +package: ./package.json +reporter: spec +slow: 75 +timeout: 2000 +ui: bdd +recursive: true +require: + - ts-node/register +watch-files: + - 'test/**/*.spec.ts' + - 'src/**/*.ts' \ No newline at end of file diff --git a/packages/polkabot-plugin-operator/package.json b/packages/polkabot-plugin-operator/package.json index 5d777cf..68ce9bf 100644 --- a/packages/polkabot-plugin-operator/package.json +++ b/packages/polkabot-plugin-operator/package.json @@ -11,7 +11,8 @@ "prepublishOnly": "npm run build", "postinstall": "npm run build", "clean": "rm -rf dist node_modules", - "test": "mocha -r ts-node/register tests/**/*.test.ts", + "test": "mocha", + "test:watch": "mocha --watch", "coverage": "nyc -r lcov -e .ts -x \"*.test.ts\" npm run test", "build:doc": "typedoc src" }, diff --git a/packages/polkabot-plugin-operator/src/helpers.ts b/packages/polkabot-plugin-operator/src/helpers.ts new file mode 100644 index 0000000..dd108dd --- /dev/null +++ b/packages/polkabot-plugin-operator/src/helpers.ts @@ -0,0 +1,8 @@ + +/** + * Parse a given message to figure out whether the user needs help + * @param msg the message to parse + */ +export function isHelpNeeded(msg: string) : boolean { + return msg.indexOf('!') < 0 && msg.toLowerCase().indexOf('help') >= 0 +} \ No newline at end of file diff --git a/packages/polkabot-plugin-operator/src/index.ts b/packages/polkabot-plugin-operator/src/index.ts index 0abeddd..967fc72 100644 --- a/packages/polkabot-plugin-operator/src/index.ts +++ b/packages/polkabot-plugin-operator/src/index.ts @@ -20,6 +20,7 @@ import MatrixHelper from './matrix-helper'; import { packageJson } from 'package-json'; import { assert } from '@polkadot/util'; import { OperatorParams } from './types'; +import { isHelpNeeded } from './helpers'; const capitalize: (string) => string = (s: string) => { if (typeof s !== 'string') return ''; @@ -55,7 +56,7 @@ export default class Operator extends PolkabotChatbot implements Controllable { } public start(): void { - this.watchChat(); + this.watchChat(); } public stop(): void { @@ -81,16 +82,13 @@ export default class Operator extends PolkabotChatbot implements Controllable { } public cmdHelp(_event: Event, room: Room): CommandHandlerOutput { - // TODO: later we could parse the msg below for keywords and try to make good guesses to focus the help a bit better - // const msg: string = event.getContent().body; - // fetch all the controllable, show their commands and deescriptions. let message = 'Here is also a list of all the loaded modules and their commands:
    '; this.controllables.map((controllable: Controllable) => { message += `
  • ${controllable.commandSet.name}:
    • `; controllable.commandSet.commands.map((command: PluginCommand) => { message += `
    • !${controllable.commandSet.alias} ${command.name}: ${command.description} !${ command.adminOnly ? ' (Master only)' : '' - }
    • `; + }`; }); message += '
    '; }); @@ -125,7 +123,7 @@ export default class Operator extends PolkabotChatbot implements Controllable { const controllable = hits.length > 0 ? (hits[0] as PolkabotPlugin) : null; if (!controllable) return null; - + this.context.logger.info(`${controllable.module.name} could be able to do the job... checking supported commands`); const handler: PluginCommand = controllable.commandSet.commands.find(c => c.name === cmd.command); this.context.logger.info(`Handler found: ${handler ? handler.name : null}`); @@ -161,7 +159,7 @@ export default class Operator extends PolkabotChatbot implements Controllable { if (this.matrixHelper.isBot(senderId)) return; // If there is no ! and the string contains help, we try to help - if (msg.indexOf('!') < 0 && msg.toLowerCase().indexOf('help') >= 0) { + if (isHelpNeeded(msg)) { this.context.logger.info('Mentioning help in natural language'); const output = this.cmdHelp(event, room); if (output.answers) { diff --git a/packages/polkabot-plugin-operator/tests/commands.test.ts b/packages/polkabot-plugin-operator/test/commands.spec.ts similarity index 100% rename from packages/polkabot-plugin-operator/tests/commands.test.ts rename to packages/polkabot-plugin-operator/test/commands.spec.ts diff --git a/packages/polkabot-plugin-operator/test/helpers.spec.ts b/packages/polkabot-plugin-operator/test/helpers.spec.ts new file mode 100644 index 0000000..e69de29 diff --git a/packages/polkabot-plugin-reporter/src/index.ts b/packages/polkabot-plugin-reporter/src/index.ts index cd866dc..ca16291 100644 --- a/packages/polkabot-plugin-reporter/src/index.ts +++ b/packages/polkabot-plugin-reporter/src/index.ts @@ -74,7 +74,7 @@ export default class Reporter extends PolkabotWorker { future, duration, date: other, - message: `${future ? 'in' : 'for'} ${duration} seconds`, // TODO with Moment.js we dont need that + message: `${moment(duration).fromNow()}`, }; } diff --git a/packages/polkabot-plugin-stallwatcher/src/index.ts b/packages/polkabot-plugin-stallwatcher/src/index.ts index 0a24976..df09d83 100644 --- a/packages/polkabot-plugin-stallwatcher/src/index.ts +++ b/packages/polkabot-plugin-stallwatcher/src/index.ts @@ -79,7 +79,7 @@ export default class StallWatcher extends PolkabotWorker { // this.context.matrix.sendTextMessage(roomId, msg); // } - // TODO Many of the bot function should not be here. This is a worker, not a bot. + // Many of the bot function should not be here. This is a worker, not a bot. // The worker could however publish supported commands the bot can fetch with the form // !sw duration 42 // !sw restart @@ -129,8 +129,6 @@ export default class StallWatcher extends PolkabotWorker { // // }; // // const msg = event.getContent().body; - - // // // FIXME - this still triggers an error in the logs when the Bot Master // // // sends a message without an argument in the public room (i.e. `!say`) // // if (!msg) { // // return; diff --git a/packages/polkabot/.mocharc.yml b/packages/polkabot/.mocharc.yml new file mode 100644 index 0000000..4760947 --- /dev/null +++ b/packages/polkabot/.mocharc.yml @@ -0,0 +1,15 @@ +diff: true +extension: + - js + - ts +package: ./package.json +reporter: spec +slow: 75 +timeout: 2000 +ui: bdd +recursive: true +require: + - ts-node/register +watch-files: + - 'test/**/*.spec.ts' + - 'src/**/*.ts' \ No newline at end of file diff --git a/packages/polkabot/package.json b/packages/polkabot/package.json index 173d376..b674abd 100644 --- a/packages/polkabot/package.json +++ b/packages/polkabot/package.json @@ -12,9 +12,9 @@ "start:watch": "nodemon", "dev": "nodemon ./src/polkabot -c ./config.js --exec babel-node --presets env", "build": "tsc --build tsconfig.json", - "test": "yarn lint --quiet && yarn build && mocha --recursive build/test --exit", + "test": "mocha", + "test:watch": "mocha --watch", "test:local": "mocha --require babel-core/register test/* --exit", - "test:watch": "mocha --watch --require babel-core/register test/* --exit", "lint": "eslint --ext .js,.ts src", "clean": "rm -rf .nyc_output build coverage node_modules out dist *.log docs", "prepublishOnly": "npm run build", diff --git a/packages/polkabot/test/sample.spec.ts b/packages/polkabot/test/sample.spec.ts new file mode 100644 index 0000000..6331c3e --- /dev/null +++ b/packages/polkabot/test/sample.spec.ts @@ -0,0 +1,7 @@ +import { expect } from 'chai'; + +describe('Sample', () => { + it('should pass', () => { + expect(1 + 1).to.equal(2); + }); +}); diff --git a/packages/polkabot/test/user.js b/packages/polkabot/test/user.js deleted file mode 100644 index 5b4ec81..0000000 --- a/packages/polkabot/test/user.js +++ /dev/null @@ -1,13 +0,0 @@ -// import chai from 'chai' -// import chaiHttp from 'chai-http' -// import { User } from '../src/lib/lib' - -// const should = chai.should() - -// describe('User', () => { -// it('Should say hello', (done) => { -// const hello = new User('bob').hello() -// hello.should.equal('Hello bob') -// done() -// }) -// }) -- GitLab From bc05b8c953c8f23b6729f75895a5e91c63186c57 Mon Sep 17 00:00:00 2001 From: chevdor Date: Fri, 15 May 2020 11:15:38 +0200 Subject: [PATCH 66/86] Cleanup, remove unused deps --- .../polkabot-plugin-blocthday/src/index.ts | 19 ++++++++++++++- .../polkabot-plugin-blocthday/tsconfig.json | 2 +- .../polkabot-plugin-operator/package.json | 12 +--------- .../polkabot-plugin-operator/src/helpers.ts | 4 ++-- .../polkabot-plugin-operator/src/index.ts | 24 ++----------------- .../src/matrix-helper.ts | 10 +++++++- 6 files changed, 33 insertions(+), 38 deletions(-) diff --git a/packages/polkabot-plugin-blocthday/src/index.ts b/packages/polkabot-plugin-blocthday/src/index.ts index 58c9b82..b5fdf8d 100644 --- a/packages/polkabot-plugin-blocthday/src/index.ts +++ b/packages/polkabot-plugin-blocthday/src/index.ts @@ -7,13 +7,30 @@ import { CommandHandlerOutput, Controllable, PluginCommandSet, - Room + Room, } from '@polkabot/api/src/plugin.interface'; import { PolkabotWorker } from '@polkabot/api/src/PolkabotWorker'; import { HeaderExtended } from '@polkadot/api-derive/type'; import getCommandSet from './commandSet'; +import LoggerSingleton from '../../polkabot-api/src/logger'; +const Logger = LoggerSingleton.getInstance(); + +export type PolkabotPluginParams = { + name: string; + alias: string; +} + +// function PolkabotPlugin(params: PolkabotPluginParams) { +// Logger.info(params) +// } +function PolkabotPlugin(_ctor: Function): void { + Logger.info('decorator'); + +} + +@PolkabotPlugin // ({name: 'Blocthday', alias: 'bday'}) export default class Blocthday extends PolkabotWorker implements Controllable { private NB_BLOCKS: number; public commandSet: PluginCommandSet; diff --git a/packages/polkabot-plugin-blocthday/tsconfig.json b/packages/polkabot-plugin-blocthday/tsconfig.json index fb9cecc..e59bc61 100644 --- a/packages/polkabot-plugin-blocthday/tsconfig.json +++ b/packages/polkabot-plugin-blocthday/tsconfig.json @@ -20,7 +20,7 @@ "allowUnreachableCode": false, "experimentalDecorators": true, "suppressImplicitAnyIndexErrors": true, - "outDir": "./dist" + "outDir": "./dist", }, "include": ["./bin/**/*", "./src/**/*", "./test/**/*", "./package.json"], "compileOnSave": true diff --git a/packages/polkabot-plugin-operator/package.json b/packages/polkabot-plugin-operator/package.json index 68ce9bf..dee922f 100644 --- a/packages/polkabot-plugin-operator/package.json +++ b/packages/polkabot-plugin-operator/package.json @@ -5,7 +5,7 @@ "main": "dist/src/index.js", "scripts": { "build": "tsc --build tsconfig.json", - "lint": "standard", + "lint": "eslint --ext .ts,.tsx .", "start": "babel-node ./src/index.js", "build:watch": "tsc --build tsconfig.json -w", "prepublishOnly": "npm run build", @@ -30,7 +30,6 @@ "chai": "^4.2.0", "mocha": "^6.1.4", "nyc": "^15.0.0", - "standard": "14.0.0", "ts-node": "^8.3.0", "typescript": "^3.5.3" }, @@ -38,15 +37,6 @@ "type": "git", "url": "https://gitlab.com/Polkabot/polkabot-plugin-operator.git" }, - "standard": { - "parser": "babel-eslint", - "ignore": [ - "dist/" - ], - "env": [ - "mocha" - ] - }, "engines": { "node": ">=10.13.0", "yarn": "^1.10.1" diff --git a/packages/polkabot-plugin-operator/src/helpers.ts b/packages/polkabot-plugin-operator/src/helpers.ts index dd108dd..e594899 100644 --- a/packages/polkabot-plugin-operator/src/helpers.ts +++ b/packages/polkabot-plugin-operator/src/helpers.ts @@ -3,6 +3,6 @@ * Parse a given message to figure out whether the user needs help * @param msg the message to parse */ -export function isHelpNeeded(msg: string) : boolean { - return msg.indexOf('!') < 0 && msg.toLowerCase().indexOf('help') >= 0 +export function isHelpNeeded(msg: string): boolean { + return msg.indexOf('!') < 0 && msg.toLowerCase().indexOf('help') >= 0; } \ No newline at end of file diff --git a/packages/polkabot-plugin-operator/src/index.ts b/packages/polkabot-plugin-operator/src/index.ts index 967fc72..dafc824 100644 --- a/packages/polkabot-plugin-operator/src/index.ts +++ b/packages/polkabot-plugin-operator/src/index.ts @@ -88,7 +88,7 @@ export default class Operator extends PolkabotChatbot implements Controllable { controllable.commandSet.commands.map((command: PluginCommand) => { message += `
  • !${controllable.commandSet.alias} ${command.name}: ${command.description} !${ command.adminOnly ? ' (Master only)' : '' - }
  • `; + }`; }); message += '
'; }); @@ -137,20 +137,6 @@ export default class Operator extends PolkabotChatbot implements Controllable { return; } - // TODO - refactor into a common utility plugin or similar - // const directChatRoomMemberIds = Object.keys(room.currentState.members); - - // const expectedDirectMessageRoomMemberIds = [this.context.config.matrix.botMasterId, this.context.config.matrix.botUserId]; - - // // Has the Bot Master initiated a direct chat with the Bot - // const isBotMasterAndBotInRoom = expectedDirectMessageRoomMemberIds.every(val => directChatRoomMemberIds.includes(val)); - // this.context.logger.info('Operator - isBotMasterAndBotInRoom: ', isBotMasterAndBotInRoom) - - // In general we don´t want the bot to react to its own messages! - // const isSelf = senderId => { - // return senderId === this.context.config.matrix.botUserId; - // }; - // this.context.logger.info('Operator - event.getContent()', event.getContent()) const msg: string = event.getContent().body; const senderId: SenderId = event.getSender(); @@ -198,17 +184,11 @@ export default class Operator extends PolkabotChatbot implements Controllable { this.context.logger.info('No handler found'); this.answer({ room, - message: 'Hmmm no one told me about that command. 😁' + message: 'Hmmm no one told me about that command. You may want to try to ask for help.' }); return; } - // TODO FIXME - this still triggers an error in the logs when the Bot Master - // sends a message without an argument in the public room (i.e. `!say`) - // if (!msg) { - // return; - // } - const senderRoomId: RoomId = event.sender.roomId; const roomIdWithBot: RoomId = room.roomId; diff --git a/packages/polkabot-plugin-operator/src/matrix-helper.ts b/packages/polkabot-plugin-operator/src/matrix-helper.ts index 8c59146..11b0641 100644 --- a/packages/polkabot-plugin-operator/src/matrix-helper.ts +++ b/packages/polkabot-plugin-operator/src/matrix-helper.ts @@ -42,10 +42,18 @@ export default class MatrixHelper { /** * Has the Bot Master initiated a direct chat with the Bot - */ + */ public isBotMasterAndBotInRoom(room: Room): boolean { const expectedDirectMessageRoomMemberIds = [this.params.botMasterId, this.params.botUserId]; const directChatRoomMemberIds = Object.keys(room.currentState.members); return expectedDirectMessageRoomMemberIds.every(val => directChatRoomMemberIds.includes(val)); } + + // const directChatRoomMemberIds = Object.keys(room.currentState.members); + + // const expectedDirectMessageRoomMemberIds = [this.context.config.matrix.botMasterId, this.context.config.matrix.botUserId]; + + // // Has the Bot Master initiated a direct chat with the Bot + // const isBotMasterAndBotInRoom = expectedDirectMessageRoomMemberIds.every(val => directChatRoomMemberIds.includes(val)); + // this.context.logger.info('Operator - isBotMasterAndBotInRoom: ', isBotMasterAndBotInRoom) } -- GitLab From cfc942ad4717b76bbe0ab77964cd58473d65c9bf Mon Sep 17 00:00:00 2001 From: chevdor Date: Fri, 15 May 2020 19:55:01 +0200 Subject: [PATCH 67/86] Minor changes --- packages/polkabot-api/src/PolkabotChatbot.ts | 2 +- packages/polkabot-api/src/PolkabotWorker.ts | 1 + packages/polkabot-api/src/types.ts | 7 ++++++- packages/polkabot/configSpecs.yml | 2 +- 4 files changed, 9 insertions(+), 3 deletions(-) diff --git a/packages/polkabot-api/src/PolkabotChatbot.ts b/packages/polkabot-api/src/PolkabotChatbot.ts index 27c78cc..a6d8f57 100644 --- a/packages/polkabot-api/src/PolkabotChatbot.ts +++ b/packages/polkabot-api/src/PolkabotChatbot.ts @@ -38,7 +38,7 @@ export abstract class PolkabotChatbot extends PolkabotPluginBase implements Chat public answer(data: RoomAnswer): void { const html = data.html || true; - Logger.debug(`Sending HTML: ${html ? 'TRUE' : 'FALSE'}`); + Logger.silly(`Sending HTML: ${html ? 'TRUE' : 'FALSE'}`); if (!html) { // Simple text this.context.matrix.sendTextMessage(data.room.roomId, data.message); diff --git a/packages/polkabot-api/src/PolkabotWorker.ts b/packages/polkabot-api/src/PolkabotWorker.ts index ab888b5..62774ab 100644 --- a/packages/polkabot-api/src/PolkabotWorker.ts +++ b/packages/polkabot-api/src/PolkabotWorker.ts @@ -4,6 +4,7 @@ export abstract class PolkabotWorker extends PolkabotPluginBase { constructor(mod: PluginModule, context: PluginContext, config?) { super(Type.Worker, mod, context, config); } + public abstract start(); public abstract stop(); } diff --git a/packages/polkabot-api/src/types.ts b/packages/polkabot-api/src/types.ts index 39bbd21..0ac5561 100644 --- a/packages/polkabot-api/src/types.ts +++ b/packages/polkabot-api/src/types.ts @@ -1,3 +1,8 @@ export type Cache = { [Key: string]: unknown; -} \ No newline at end of file +} + +export type PolkabotPluginParams = { + name: string; + alias: string; +} diff --git a/packages/polkabot/configSpecs.yml b/packages/polkabot/configSpecs.yml index da307cd..0fcb226 100644 --- a/packages/polkabot/configSpecs.yml +++ b/packages/polkabot/configSpecs.yml @@ -63,7 +63,7 @@ POLKABOT: NB_BLOCKS: description: How often do we want to wish a happy Block-th-day type: number - default: 100 + default: 1000000 BLOCKSTATS: DISABLED: -- GitLab From b8e2237a97ccf7ce1ade548dc2520d875d705aae Mon Sep 17 00:00:00 2001 From: chevdor Date: Fri, 15 May 2020 19:56:31 +0200 Subject: [PATCH 68/86] Clean up logs and few minor fixes --- packages/polkabot/src/index.ts | 68 ++++++++++++++++++---------------- 1 file changed, 36 insertions(+), 32 deletions(-) diff --git a/packages/polkabot/src/index.ts b/packages/polkabot/src/index.ts index 6b3206c..3bfc9c8 100644 --- a/packages/polkabot/src/index.ts +++ b/packages/polkabot/src/index.ts @@ -18,11 +18,12 @@ import { PluginModule, Controllable, Type, + MatrixClient, } from '../../polkabot-api/src/plugin.interface'; import { PolkabotNotifier } from '../../polkabot-api/src/PolkabotNotifier'; import { PolkabotChatbot } from '../../polkabot-api/src/PolkabotChatbot'; import { PolkabotWorker } from '../../polkabot-api/src/PolkabotWorker'; -import { MatrixClient } from './types'; +// import { MatrixClient } from './types'; import LoggerSingleton, { winston } from '../../polkabot-api/src/logger'; const Logger = LoggerSingleton.getInstance(); @@ -33,17 +34,12 @@ type PolkabotGlobal = { ((global as unknown) as PolkabotGlobal).Olm = Olm; -// comment out if you need to trouble shoot matrix issues -// matrix.on('event', function (event) { -// Logger.silly(event.getType()) -// }) - // Here we rewrite the Matrix SDK logger to redirect to our logger import { logger as mxLogger } from 'matrix-js-sdk/lib/logger'; // rewrite matrix logger -mxLogger.info = (...msg) => Logger.log({ level: 'debug', message: msg.join(' '), labels: { label: 'MatrixSDK' } }); -mxLogger.log = (...msg) => Logger.log({ level: 'debug', message: msg.join(' '), labels: { label: 'MatrixSDK' } }); +mxLogger.info = (...msg) => Logger.log({ level: 'silly', message: msg.join(' '), labels: { label: 'MatrixSDK' } }); +mxLogger.log = (...msg) => Logger.log({ level: 'silly', message: msg.join(' '), labels: { label: 'MatrixSDK' } }); mxLogger.warn = (...msg) => Logger.log({ level: 'warn', message: msg.join(' '), labels: { label: 'MatrixSDK' } }); mxLogger.error = (...msg) => Logger.log({ level: 'error', message: msg.join(' '), labels: { label: 'MatrixSDK' } }); mxLogger.trace = (...msg) => Logger.log({ level: 'silly', message: msg.join(' '), labels: { label: 'MatrixSDK' } }); @@ -109,7 +105,7 @@ export default class Polkabot { const channel = notifier.channel; if (!this.notifiersTable[channel]) this.notifiersTable[channel] = []; this.notifiersTable[channel].push(notifier); - Logger.silly('notifierTable', this.notifiersTable); + Logger.silly('notifierTable %j', this.notifiersTable); } /** Register all the Controllable we find. They will be passed to the Operator. */ @@ -126,7 +122,8 @@ export default class Polkabot { } private async loadPlugins(): Promise { - Logger.info('Loading plugins', { meta: { source: 'Polkabot' } }); + // Logger.info('Loading plugins', { meta: { source: 'Polkabot' } }); + Logger.info('Loading plugins'); const pluginScanner = new PluginScanner(pkg.name + '-plugin'); let plugins = await pluginScanner.scan(); @@ -146,7 +143,7 @@ export default class Polkabot { return !disabled; }); - Logger.info(`Found ${plugins.length} plugins`); + Logger.debug(`Found ${plugins.length} plugins that are enabled`); const loads = []; plugins.map(plugin => { @@ -214,7 +211,7 @@ export default class Polkabot { // const configLocation = this.args.config // ? this.args.config // : path.join(__dirname, './config') - // Logger.info('Polkabot - Config location: ', configLocation) + // Logger.info('Config location: ', configLocation) // this.config = require(configLocation) @@ -228,8 +225,7 @@ export default class Polkabot { // this.Logger[ isConfigValid ? 'info': 'error'] (`Your config is${ isConfigValid? '' : ' NOT'} valid!`); } - - // Logger.info(`Polkabot - config: ${JSON.stringify(this.config, null, 2)}`); + // Logger.info(`config: ${JSON.stringify(this.config, null, 2)}`); Logger.info(`Connecting to host: ${this.config.values.POLKADOT.URL}`); Logger.silly(`Running with bot user id: ${this.config.values.MATRIX.BOTUSER_ID}`); @@ -266,30 +262,31 @@ export default class Polkabot { logger: (msg) => Logger.silly(msg, { labels: { source: 'MatrixSDK' } }) }); - if (this.isCustomBaseUrl()) { - const data = await this.matrix - .login('m.login.password', { - user: this.config.values.MATRIX.LOGIN_USER_ID, - password: this.config.values.MATRIX.LOGIN_USER_PASSWORD, - }) - .catch(error => { - console.error('Polkabot: Error logging into matrix:', error); - }); - - if (data) { - Logger.info('Polkabot - Logged in with credentials: ', data); - } - } + // TODO: the following is not valid, it is not b/c we use another server than matrix.org that we need a password + // if (this.isCustomBaseUrl()) { + // const data = await this.matrix + // .login('m.login.password', { + // user: this.config.values.MATRIX.LOGIN_USER_ID, + // password: this.config.values.MATRIX.LOGIN_USER_PASSWORD, + // }) + // .catch(error => { + // Logger.error('Error logging into matrix:', error); + // }); + + // if (data) { + // Logger.info('Logged in with credentials: ', data); + // } + // } this.matrix.once('sync', (state, _prevState, data) => { switch (state) { case 'PREPARED': - Logger.info(`Polkabot - Detected client sync state: ${state}`); + Logger.debug(`Detected client sync state: ${state}`); this.start(state); break; default: - Logger.info( - 'Polkabot - Error. Unable to establish client sync state, state =', + Logger.error( + 'Error. Unable to establish client sync state, state = %j %j', state, data ); @@ -297,7 +294,9 @@ export default class Polkabot { } }); - this.matrix.startClient(this.config.values.MATRIX.MESSAGES_TO_SHOW); + // TODO: ensure we get a number below, otherwise the matrix SDK is unhappy + // this.matrix.startClient({ initialSyncLimit: this.config.values.MATRIX.MESSAGES_TO_SHOW }); + this.matrix.startClient({ initialSyncLimit: 3 }); } private isCustomBaseUrl(): boolean { @@ -305,3 +304,8 @@ export default class Polkabot { return baseUrl && baseUrl !== 'https://matrix.org'; } } + +// comment out if you need to trouble shoot matrix issues +// matrix.on('event', function (event) { +// Logger.silly(event.getType()) +// }) -- GitLab From 47ff9eb7a82769414b46c5f5726b87f8698be3e1 Mon Sep 17 00:00:00 2001 From: chevdor Date: Fri, 15 May 2020 19:56:54 +0200 Subject: [PATCH 69/86] Switch to the official types --- packages/polkabot/src/types.ts | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/packages/polkabot/src/types.ts b/packages/polkabot/src/types.ts index d8ad329..f87b87c 100644 --- a/packages/polkabot/src/types.ts +++ b/packages/polkabot/src/types.ts @@ -1,4 +1,4 @@ -import { RoomId } from '../../polkabot-api/src/plugin.interface'; +// import { RoomId } from '../../polkabot-api/src/plugin.interface'; export interface EnvVar { name: string; // Name of the envrionment varibale @@ -29,11 +29,11 @@ export interface PolkabotConfig { }; } -export interface MatrixClient { - sendTextMessage: (roomId, string) => void; - sendHtmlMessage: (roomId: RoomId, html: string, text: string) => void; - //on: (string, (event, room, _toStartOfTimeline) => void) => void; - once: (event: string, handler: Function) => void; - startClient(msgToSHow: number); - login: (pass: string, options: Record) => Promise; -} +// export interface MatrixClient { +// sendTextMessage: (roomId, string) => void; +// sendHtmlMessage: (roomId: RoomId, html: string, text: string) => void; +// //on: (string, (event, room, _toStartOfTimeline) => void) => void; +// once: (event: string, handler: Function) => void; +// startClient(msgToSHow: number); +// login: (pass: string, options: Record) => Promise; +// } -- GitLab From 407a7f45e474ce9eec70d101b5b9418a305c3658 Mon Sep 17 00:00:00 2001 From: chevdor Date: Fri, 15 May 2020 19:57:06 +0200 Subject: [PATCH 70/86] Add error handling --- packages/polkabot/src/lib/plugin-loader.ts | 47 ++++++++++++---------- 1 file changed, 26 insertions(+), 21 deletions(-) diff --git a/packages/polkabot/src/lib/plugin-loader.ts b/packages/polkabot/src/lib/plugin-loader.ts index 6c881e8..544c0e8 100644 --- a/packages/polkabot/src/lib/plugin-loader.ts +++ b/packages/polkabot/src/lib/plugin-loader.ts @@ -19,30 +19,35 @@ export default class PluginLoader { fs.realpath(mod.path, async (err, pluginPath) => { if (err) Logger.error('ERR:', err); - const myModule = (await import(pluginPath)).default; - let plugin; - const parentClass = Object.getPrototypeOf(myModule).name; + try { + Logger.debug(`Loading plugin from ${pluginPath}`); + const myModule = (await import(pluginPath)).default; + let plugin; + const parentClass = Object.getPrototypeOf(myModule).name; - switch (parentClass) { - case PolkabotNotifier.name: - plugin = new myModule(mod, context) as PolkabotNotifier; - break; - case PolkabotWorker.name: - plugin = new myModule(mod, context) as PolkabotWorker; - break; - case PolkabotChatbot.name: - plugin = new myModule(mod, context) as PolkabotChatbot; - break; - default: - throw new Error('Plugin type not supported'); - } + switch (parentClass) { + case PolkabotNotifier.name: + plugin = new myModule(mod, context) as PolkabotNotifier; + break; + case PolkabotWorker.name: + plugin = new myModule(mod, context) as PolkabotWorker; + break; + case PolkabotChatbot.name: + plugin = new myModule(mod, context) as PolkabotChatbot; + break; + default: + throw new Error('Plugin type not supported'); + } - Logger.info( - ` - ${plugin.constructor.name}: ${plugin.package.name} version ${plugin.package.version} from ${plugin.package.author - .name || plugin.package.author}` - ); + Logger.info( + ` - ${plugin.constructor.name}: ${plugin.package.name} version ${plugin.package.version} from ${plugin.package.author + .name || plugin.package.author}` + ); - resolve(plugin); + resolve(plugin); + } catch (e) { + Logger.error(`Houston, plugin <${mod.name} failed ! %o`, e); + } }); }); } -- GitLab From 3d803980d036e42d7acbe0e0bd615805820f76ee Mon Sep 17 00:00:00 2001 From: chevdor Date: Fri, 15 May 2020 19:57:38 +0200 Subject: [PATCH 71/86] Support for decorators --- packages/polkabot-api/src/decorators.ts | 58 +++++++++++++++++++ packages/polkabot-api/src/plugin.interface.ts | 7 +++ 2 files changed, 65 insertions(+) create mode 100644 packages/polkabot-api/src/decorators.ts diff --git a/packages/polkabot-api/src/decorators.ts b/packages/polkabot-api/src/decorators.ts new file mode 100644 index 0000000..5b8119c --- /dev/null +++ b/packages/polkabot-api/src/decorators.ts @@ -0,0 +1,58 @@ +import LoggerSingleton from '../../polkabot-api/src/logger'; +import { PolkabotPluginParams } from './types'; +import { CommandDecoratorArgs, PluginCommand } from './plugin.interface'; + +const Logger = LoggerSingleton.getInstance(); + +/** + * This class decorator signals a class that will be callable from the + * chat. + * @param args + */ +export function Callable(args: PolkabotPluginParams): Function { + return (ctor: Function) => { + ctor.prototype.context.logger.silly('++ Callable ' + args.name); + ctor.prototype.commandSet = args; + }; +} + + + +/** + * This class decorator simplifies how we can make config + * values available. We pass the list of config params and + * they will be made available. + * @param params The list of config params + */ +export function Configured(params: string[]) { + return (_ctor: Function) => { + Logger.silly('Configured: ' + params.join(' ')); + }; +} + +/** + * This method decorator signals that the function it is applied to + * is a command handler. This function will run to answer a command + * given by the user. + * @param cmd + */ +export function Command(args?: CommandDecoratorArgs): Function { + return function (target: any, propertyKey: string, descriptor: PropertyDescriptor) { + Logger.silly('Command: %o', args); + Logger.silly('Command called on %o %s %o', target, propertyKey, descriptor); + + const that = target.prototype; + + const cmd: PluginCommand = { + name: args.name || propertyKey.toLowerCase().replace('cmd', ''), + description: args.description || '', // TODO: fill a default generic one + argsRegexp: args.argsRegexp || null, + adminOnly: args.adminOnly ?? true, + handler: that[propertyKey] + }; + that.context.logger.debug(cmd); + that.commandSet.commands.push(cmd); + }; +} + + diff --git a/packages/polkabot-api/src/plugin.interface.ts b/packages/polkabot-api/src/plugin.interface.ts index de9d94b..b7e7748 100644 --- a/packages/polkabot-api/src/plugin.interface.ts +++ b/packages/polkabot-api/src/plugin.interface.ts @@ -65,6 +65,13 @@ export type PluginCommand = { handler: (...args: unknown[]) => CommandHandlerOutput; }; +export type CommandDecoratorArgs = { + name?: string; + description?: string; // what does this command do + argsRegexp?: string; // regexp to validate the expected args + adminOnly?: boolean; // is the command only for admins ? +} + export type PluginCommandSet = { name: string; // ie: Identity Registrar alias: string; // ie: reg -- GitLab From 860b6a7de84d13cd111a28add93d19541c67452f Mon Sep 17 00:00:00 2001 From: chevdor Date: Fri, 15 May 2020 19:58:30 +0200 Subject: [PATCH 72/86] Minor fixes for the logs --- packages/polkabot-api/src/logger.ts | 4 ++-- packages/polkabot/src/lib/plugin-scanner.ts | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/polkabot-api/src/logger.ts b/packages/polkabot-api/src/logger.ts index bd0777a..5929fec 100644 --- a/packages/polkabot-api/src/logger.ts +++ b/packages/polkabot-api/src/logger.ts @@ -6,11 +6,11 @@ const { combine, label, printf } = format; export default class LoggerFactory { public static getInstance(source = 'POLKABOT'): Logger { const consoleFormat = printf(({ level, message, label, _timestamp, meta }) => { - return `[${label}${meta ? '|' + meta : ''}]\t${level} ${message}`; + return `[${label}${meta ? '|' + meta.source : ''}]\t${level} ${message}`; }); const productionFormat = printf(({ level, message, label, timestamp, meta }) => { - return `${timestamp} [${label}${meta ? '|' + meta : ''}]\t${level} ${message}`; + return `${timestamp} [${label}${meta ? '|' + meta.source : ''}]\t${level} ${message}`; }); const instance = createLogger({ diff --git a/packages/polkabot/src/lib/plugin-scanner.ts b/packages/polkabot/src/lib/plugin-scanner.ts index be304d4..512edb2 100644 --- a/packages/polkabot/src/lib/plugin-scanner.ts +++ b/packages/polkabot/src/lib/plugin-scanner.ts @@ -57,7 +57,7 @@ export default class PluginScanner { return new Promise(resolve => { // console.log('dbg', path.dirname(process.argv0), __filename, __dirname) const scriptLocation = path.join(path.dirname(process.argv[1]), '..'); - Logger.debug('script loc', scriptLocation); + Logger.silly('Script loc: %s', scriptLocation); const searchPaths: string[] = findNodeModules({ cwd: scriptLocation, relative: false }); // path.join(scriptLocation, "../lib/node_modules"), // path.join(__dirname, '../../../node_modules') @@ -65,7 +65,7 @@ export default class PluginScanner { const pattern = 'polkabot'; const modules = []; - Logger.debug(`PluginScanner scanning searchPaths for ${pattern} plugins: `, searchPaths); + Logger.debug(`PluginScanner scanning searchPaths for ${pattern} plugins: ${searchPaths}`); searchPaths.map(p => { fs.readdirSync(p) -- GitLab From ab068b87222fbc25f7c35218fc9e203604d5cddb Mon Sep 17 00:00:00 2001 From: chevdor Date: Fri, 15 May 2020 20:01:21 +0200 Subject: [PATCH 73/86] cleanup logs and move decorators away --- .../polkabot-plugin-blocthday/src/index.ts | 53 +++++++++++-------- 1 file changed, 30 insertions(+), 23 deletions(-) diff --git a/packages/polkabot-plugin-blocthday/src/index.ts b/packages/polkabot-plugin-blocthday/src/index.ts index b5fdf8d..2d6ad62 100644 --- a/packages/polkabot-plugin-blocthday/src/index.ts +++ b/packages/polkabot-plugin-blocthday/src/index.ts @@ -11,34 +11,19 @@ import { } from '@polkabot/api/src/plugin.interface'; import { PolkabotWorker } from '@polkabot/api/src/PolkabotWorker'; import { HeaderExtended } from '@polkadot/api-derive/type'; - import getCommandSet from './commandSet'; -import LoggerSingleton from '../../polkabot-api/src/logger'; - -const Logger = LoggerSingleton.getInstance(); - -export type PolkabotPluginParams = { - name: string; - alias: string; -} - -// function PolkabotPlugin(params: PolkabotPluginParams) { -// Logger.info(params) -// } -function PolkabotPlugin(_ctor: Function): void { - Logger.info('decorator'); +// import { Command } from '../../polkabot-api/src/decorators'; -} - -@PolkabotPlugin // ({name: 'Blocthday', alias: 'bday'}) +// @Callable({ name: 'Blocthday', alias: 'bday' }) +// @Configured(['NB_BLOCKS']) export default class Blocthday extends PolkabotWorker implements Controllable { private NB_BLOCKS: number; public commandSet: PluginCommandSet; public unsub: Function; + // @Command({ name: 'status', description: 'Show status of the plugin', argsRegexp: '', adminOnly: false }) public cmdStatus(_event, room: Room): CommandHandlerOutput { this.context.logger.debug('Blocthday.cmdStatus()'); - // this.context.logger.info("Called cmdStatus with:", args); return { code: -1, @@ -50,21 +35,43 @@ export default class Blocthday extends PolkabotWorker implements Controllable { }; } + // @Command() + public cmdTest(_event, room: Room): CommandHandlerOutput { + return { + code: -1, + msg: 'Implement me first!', + answers: [{ + room, + message: 'Oups! This is BlockDay, this command is not implmented yet 🥴' + }] + }; + } + public constructor(mod: PluginModule, context: PluginContext, config?) { super(mod, context, config); - this.NB_BLOCKS = parseInt(process.env.POLKABOT_BLOCTHDAY_NB_BLOCKS) || 1000000; + this.context.logger.silly('++ Blocthday'); + + // TODO: would be great to use a decorator for that + this.NB_BLOCKS = this.context.config.Get('BLOCTHDAY', 'NB_BLOCKS'); this.commandSet = getCommandSet(this); + this.context.logger.debug('%o', this.commandSet); } public start(): void { - this.context.logger.info('Blocthday - Starting with NB_BLOCKS:', this.NB_BLOCKS); + this.context.logger.info('Starting with NB_BLOCKS: %d', this.NB_BLOCKS); + + if (!this.commandSet) + this.context.logger.error('Commandset NOT defined'); + else + this.context.logger.debug('Commandset: %o', this.commandSet); + this.watchChain().catch(error => { - console.error('Blocthday - Error subscribing to chain head: ', error); + this.context.logger.error('Error subscribing to chain head: ', error); }); } public stop(): void { - this.context.logger.debug('Blocthday - STOPPING'); + this.context.logger.debug('STOPPING'); if (this.unsub) this.unsub(); -- GitLab From aa53320905b91fed9a3ab5914abfa8d2a6d3c641 Mon Sep 17 00:00:00 2001 From: chevdor Date: Fri, 15 May 2020 20:04:50 +0200 Subject: [PATCH 74/86] Update yarn.lock --- yarn.lock | 166 +----------------------------------------------------- 1 file changed, 3 insertions(+), 163 deletions(-) diff --git a/yarn.lock b/yarn.lock index f1c6020..70ffeef 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2579,20 +2579,6 @@ bowser@^0.7.1: resolved "https://registry.npmjs.org/bowser/-/bowser-0.7.3.tgz#4fc0cb4e0e2bdd9b394df0d2038c32c2cc2712c8" integrity sha1-T8DLTg4r3Zs5TfDSA4wywswnEsg= -boxen@^3.2.0: - version "3.2.0" - resolved "https://registry.npmjs.org/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" - boxen@^4.2.0: version "4.2.0" resolved "https://registry.npmjs.org/boxen/-/boxen-4.2.0.tgz#e411b62357d6d6d36587c8ac3d5d974daa070e64" @@ -3442,15 +3428,6 @@ create-hmac@^1.1.4: safe-buffer "^5.0.1" sha.js "^2.4.8" -cross-spawn@^5.0.1: - version "5.1.0" - resolved "https://registry.npmjs.org/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, cross-spawn@^6.0.5: version "6.0.5" resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" @@ -4011,11 +3988,6 @@ eslint-config-standard-jsx@8.1.0: resolved "https://registry.npmjs.org/eslint-config-standard-jsx/-/eslint-config-standard-jsx-8.1.0.tgz#314c62a0e6f51f75547f89aade059bec140edfc7" integrity sha512-ULVC8qH8qCqbU792ZOO6DaiaZyHNS/5CZt3hKqHkEhVlhPEPN3nfBqqxJCyp59XrjIBZPu1chMYe9T2DXZ7TMw== -eslint-config-standard-jsx@~8.0.0: - version "8.0.1" - resolved "https://registry.npmjs.org/eslint-config-standard-jsx/-/eslint-config-standard-jsx-8.0.1.tgz#987bdeb063f0bfbd1de55300b02fdd220c94a68a" - integrity sha512-SDnpVLSzTcT0eLNTG7s8ffRi3WadBBpw+pFsiBj4BcrHOFOga9O/7mjtNRyPgetmsiDPWGxsiS4UdJLZhaIukA== - eslint-config-standard@12.0.0: version "12.0.0" resolved "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-12.0.0.tgz#638b4c65db0bd5a41319f96bba1f15ddad2107d9" @@ -4031,11 +4003,6 @@ eslint-config-standard@14.1.1: resolved "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-14.1.1.tgz#830a8e44e7aef7de67464979ad06b406026c56ea" integrity sha512-Z9B+VR+JIXRxz21udPTL9HpFMyoMUEeX1G251EQ6e05WD9aPVtVBn09XUmZ259wCMlCDmYDSZG62Hhm+ZTJcUg== -eslint-config-standard@~14.0.0: - version "14.0.1" - resolved "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-14.0.1.tgz#375c3636fb4bd453cb95321d873de12e4eef790b" - integrity sha512-1RWsAKTDTZgA8bIM6PSC9aTGDAUlKqNkYNJlTZ5xYD/HYkIM6GlcefFvgcJ8xi0SWG5203rttKYX28zW+rKNOg== - eslint-import-resolver-node@^0.3.1, eslint-import-resolver-node@^0.3.2: version "0.3.3" resolved "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.3.tgz#dbaa52b6b2816b50bc6711af75422de808e98404" @@ -4052,7 +4019,7 @@ eslint-module-utils@^2.2.0, eslint-module-utils@^2.4.0, eslint-module-utils@^2.4 debug "^2.6.9" pkg-dir "^2.0.0" -eslint-plugin-es@^1.3.1, eslint-plugin-es@^1.4.0: +eslint-plugin-es@^1.3.1: version "1.4.1" resolved "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-1.4.1.tgz#12acae0f4953e76ba444bfd1b2271081ac620998" integrity sha512-5fa/gR2yR3NxQf+UXkeLeP8FBBl6tSgdrAz1+cF84v1FMM4twGwQoqTnn+QxFLcPOrF4pdKEJKDB/q9GoyJrCA== @@ -4163,18 +4130,6 @@ eslint-plugin-node@~7.0.1: resolve "^1.8.1" semver "^5.5.0" -eslint-plugin-node@~9.1.0: - version "9.1.0" - resolved "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-9.1.0.tgz#f2fd88509a31ec69db6e9606d76dabc5adc1b91a" - integrity sha512-ZwQYGm6EoV2cfLpE1wxJWsfnKUIXfM/KM09/TlorkukgCAwmkgajEJnPCmyzoFPQQkmvo5DrW/nyKutNIw36Mw== - dependencies: - eslint-plugin-es "^1.4.0" - eslint-utils "^1.3.1" - ignore "^5.1.1" - minimatch "^3.0.4" - resolve "^1.10.1" - semver "^6.1.0" - eslint-plugin-promise@4.2.1, eslint-plugin-promise@~4.2.1: version "4.2.1" resolved "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-4.2.1.tgz#845fd8b2260ad8f82564c1222fce44ad71d9418a" @@ -4364,49 +4319,6 @@ eslint@~5.4.0: table "^4.0.3" text-table "^0.2.0" -eslint@~6.1.0: - version "6.1.0" - resolved "https://registry.npmjs.org/eslint/-/eslint-6.1.0.tgz#06438a4a278b1d84fb107d24eaaa35471986e646" - integrity sha512-QhrbdRD7ofuV09IuE2ySWBz0FyXCq0rriLTZXZqaWSI79CVtHVRdkFuFTViiqzZhkCgfOh9USpriuGN2gIpZDQ== - dependencies: - "@babel/code-frame" "^7.0.0" - ajv "^6.10.0" - chalk "^2.1.0" - cross-spawn "^6.0.5" - debug "^4.0.1" - doctrine "^3.0.0" - eslint-scope "^5.0.0" - eslint-utils "^1.3.1" - eslint-visitor-keys "^1.0.0" - espree "^6.0.0" - esquery "^1.0.1" - esutils "^2.0.2" - file-entry-cache "^5.0.1" - functional-red-black-tree "^1.0.1" - glob-parent "^5.0.0" - globals "^11.7.0" - ignore "^4.0.6" - import-fresh "^3.0.0" - imurmurhash "^0.1.4" - inquirer "^6.4.1" - is-glob "^4.0.0" - js-yaml "^3.13.1" - json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.3.0" - lodash "^4.17.14" - minimatch "^3.0.4" - mkdirp "^0.5.1" - natural-compare "^1.4.0" - optionator "^0.8.2" - progress "^2.0.0" - regexpp "^2.0.1" - semver "^6.1.2" - strip-ansi "^5.2.0" - strip-json-comments "^3.0.1" - table "^5.2.3" - text-table "^0.2.0" - v8-compile-cache "^2.0.3" - eslint@~6.4.0: version "6.4.0" resolved "https://registry.npmjs.org/eslint/-/eslint-6.4.0.tgz#5aa9227c3fbe921982b2eda94ba0d7fae858611a" @@ -4459,7 +4371,7 @@ espree@^4.0.0: acorn-jsx "^5.0.0" eslint-visitor-keys "^1.0.0" -espree@^6.0.0, espree@^6.1.1, espree@^6.1.2: +espree@^6.1.1, espree@^6.1.2: version "6.2.1" resolved "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz#77fc72e1fd744a2052c20f38a5b575832e82734a" integrity sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw== @@ -4520,19 +4432,6 @@ eventemitter3@^4.0.1: resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.4.tgz#b5463ace635a083d018bdc7c917b4c5f10a85384" integrity sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ== -execa@^0.7.0: - version "0.7.0" - resolved "https://registry.npmjs.org/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" @@ -4993,17 +4892,6 @@ functional-red-black-tree@^1.0.1: resolved "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= -funding@^1.0.0: - version "1.0.9" - resolved "https://registry.npmjs.org/funding/-/funding-1.0.9.tgz#3b0b1c920095c74949639587554eacc817e50e63" - integrity sha512-W7lR6g6WKr00qGBmKE8VpTlXkI+vWdw56a+9jWunm8hubl3wtP1PBuc/iNes7c7HQyq9HwXVuDjNogjF3MiXMA== - dependencies: - boxen "^3.2.0" - chalk "^2.4.2" - ci-info "^2.0.0" - term-size "^2.1.0" - word-wrap "^1.2.3" - gauge@~2.7.3: version "2.7.4" resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" @@ -6671,14 +6559,6 @@ lowercase-keys@^2.0.0: resolved "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== -lru-cache@^4.0.1: - version "4.1.5" - resolved "https://registry.npmjs.org/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" @@ -8205,11 +8085,6 @@ protoduck@^5.0.1: dependencies: genfun "^5.0.0" -pseudomap@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" - integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= - psl@^1.1.28: version "1.7.0" resolved "https://registry.npmjs.org/psl/-/psl-1.7.0.tgz#f1c4c47a8ef97167dea5d6bbf4816d736e884a3c" @@ -9280,22 +9155,6 @@ standard@12.0.1: eslint-plugin-standard "~4.0.0" standard-engine "~9.0.0" -standard@14.0.0: - version "14.0.0" - resolved "https://registry.npmjs.org/standard/-/standard-14.0.0.tgz#72c1bedb9d24e04ab96adde98b44a512dc109d0f" - integrity sha512-FNKr9wkXQYvqO1txmileQm+r3+NBJp/H+yF1x9Ak3kZgLh3xrmc5HDyiKWizMEekbffBC7yq+PuB8+GMuRp8Vg== - dependencies: - eslint "~6.1.0" - eslint-config-standard "~14.0.0" - eslint-config-standard-jsx "~8.0.0" - eslint-plugin-import "~2.18.0" - eslint-plugin-node "~9.1.0" - eslint-plugin-promise "~4.2.1" - eslint-plugin-react "~7.14.2" - eslint-plugin-standard "~4.0.0" - funding "^1.0.0" - standard-engine "^12.0.0" - standard@14.3.1: version "14.3.1" resolved "https://registry.npmjs.org/standard/-/standard-14.3.1.tgz#f6a5d9244fbb6b76d0c2dbcc1048a03c863038b6" @@ -9621,13 +9480,6 @@ temp-write@^3.4.0: temp-dir "^1.0.0" uuid "^3.0.1" -term-size@^1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz#458b83887f288fc56d6fffbfad262e26638efa69" - integrity sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk= - dependencies: - execa "^0.7.0" - term-size@^2.1.0: version "2.2.0" resolved "https://registry.npmjs.org/term-size/-/term-size-2.2.0.tgz#1f16adedfe9bdc18800e1776821734086fcc6753" @@ -10257,13 +10109,6 @@ wide-align@1.1.3, wide-align@^1.1.0: dependencies: string-width "^1.0.2 || 2" -widest-line@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/widest-line/-/widest-line-2.0.1.tgz#7438764730ec7ef4381ce4df82fb98a53142a3fc" - integrity sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA== - dependencies: - string-width "^2.1.1" - widest-line@^3.1.0: version "3.1.0" resolved "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz#8292333bbf66cb45ff0de1603b136b7ae1496eca" @@ -10301,7 +10146,7 @@ winston@^3.2.1: triple-beam "^1.3.0" winston-transport "^4.3.0" -word-wrap@^1.2.3, word-wrap@~1.2.3: +word-wrap@~1.2.3: version "1.2.3" resolved "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== @@ -10438,11 +10283,6 @@ yaeti@^0.0.6: resolved "https://registry.npmjs.org/yaeti/-/yaeti-0.0.6.tgz#f26f484d72684cf42bedfb76970aa1608fbf9577" integrity sha1-8m9ITXJoTPQr7ft2lwqhYI+/lXc= -yallist@^2.1.2: - version "2.1.2" - resolved "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" - integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= - yallist@^3.0.0, yallist@^3.0.2, yallist@^3.0.3: version "3.1.1" resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" -- GitLab From 9e1f80f49ff26ece4ca5eac0f0f93db7b8c40ea0 Mon Sep 17 00:00:00 2001 From: chevdor Date: Tue, 19 May 2020 16:55:06 +0200 Subject: [PATCH 75/86] New tests and fix for the natural help requests --- .../polkabot-plugin-operator/src/helpers.ts | 2 +- .../test/helpers.spec.ts | 21 +++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/packages/polkabot-plugin-operator/src/helpers.ts b/packages/polkabot-plugin-operator/src/helpers.ts index e594899..6d7a51c 100644 --- a/packages/polkabot-plugin-operator/src/helpers.ts +++ b/packages/polkabot-plugin-operator/src/helpers.ts @@ -4,5 +4,5 @@ * @param msg the message to parse */ export function isHelpNeeded(msg: string): boolean { - return msg.indexOf('!') < 0 && msg.toLowerCase().indexOf('help') >= 0; + return msg.toLowerCase().indexOf('help') >= 0; } \ No newline at end of file diff --git a/packages/polkabot-plugin-operator/test/helpers.spec.ts b/packages/polkabot-plugin-operator/test/helpers.spec.ts index e69de29..5e31562 100644 --- a/packages/polkabot-plugin-operator/test/helpers.spec.ts +++ b/packages/polkabot-plugin-operator/test/helpers.spec.ts @@ -0,0 +1,21 @@ +import { expect } from 'chai'; +import { isHelpNeeded } from '../src/helpers'; + +describe('Operator Helpers', () => { + const tests = [ + { msg: 'help', expectation: true }, + { msg: 'help me !', expectation: true }, + { msg: 'can you help', expectation: true }, + { msg: 'can you help me', expectation: true }, + { msg: 'help!!!', expectation: true }, + { msg: ' help', expectation: true }, + ] + + tests.forEach((test) => { + it('Should detect help request in: ' + test.msg, () => { + tests.map(t => { + expect(isHelpNeeded(t.msg)).to.equal(t.expectation) + }) + }); + }) +}); -- GitLab From fa78470a036af1e8cf42a4764d187344f6b1329a Mon Sep 17 00:00:00 2001 From: chevdor Date: Tue, 19 May 2020 18:23:31 +0200 Subject: [PATCH 76/86] Basic implementation of the decorators - remove all encryption (was never active) - cleanup - fix decorators - add some tests for decorators - documentation --- README.adoc | 10 +++ lerna.json | 4 +- packages/polkabot-api/src/PolkabotChatbot.ts | 10 +-- packages/polkabot-api/src/decorators.ts | 46 ++++++------ packages/polkabot-api/src/logger.ts | 30 +++++++- packages/polkabot-api/src/plugin.interface.ts | 8 ++- packages/polkabot-api/src/types.ts | 4 +- packages/polkabot-api/test/decorators.spec.ts | 36 ++++++++++ .../src/commandSet.ts | 2 +- .../polkabot-plugin-blocthday/src/index.ts | 72 +++++++++++++------ .../polkabot-plugin-blocthday/tsconfig.json | 28 ++------ .../src/index.ts | 6 +- .../polkabot-plugin-operator/package.json | 2 +- .../src/commandSet.ts | 2 +- .../polkabot-plugin-operator/src/helpers.ts | 12 ++++ .../polkabot-plugin-operator/src/index.ts | 68 +++++++++++++----- .../test/helpers.spec.ts | 30 ++++---- .../polkabot-plugin-operator/tsconfig.json | 26 +------ packages/polkabot/package.json | 3 +- packages/polkabot/src/index.ts | 54 ++++++-------- packages/polkabot/src/lib/helpers.ts | 21 ++++++ packages/polkabot/src/types.ts | 13 +++- packages/polkabot/tsconfig.json | 2 +- tsconfig.base.json | 2 + yarn.lock | 18 ++++- 25 files changed, 334 insertions(+), 175 deletions(-) create mode 100644 packages/polkabot-api/test/decorators.spec.ts create mode 100644 packages/polkabot/src/lib/helpers.ts diff --git a/README.adoc b/README.adoc index dfe1299..9a43bdc 100644 --- a/README.adoc +++ b/README.adoc @@ -62,3 +62,13 @@ If you want to use another file such as `.env.dev`, you may use: NODE_ENV=dev y start + +== Settingg the bot account + +Matrix is changing quickly and e2e is now enabled by default. You will need to make an account for the bot and login a to get your recovery key and define your recovery passphrase. After that, e2e should work. + +WARNING: If you use a browser to login as the bot, you will automatically signal that the bot is 2e2 capable.. which it is not. After that, all invitations from Riot will be with encryption turned on. There is a workaround which is to create a new room without encryption, invite the bot (it will join automatically) and change the conversation level to 'Direct Message'. + +== Encryption + +Currently, Polkabot does NOT support encryption as it adds a few more headache. If encryption is needed, https://github.com/matrix-org/pantalaimon could be used as proxy. diff --git a/lerna.json b/lerna.json index 08ca220..6dd55ef 100644 --- a/lerna.json +++ b/lerna.json @@ -1,8 +1,10 @@ { "packages": [ - "packages/*" + "packages/*", + "!packages/*twitter" ], + "version": "independent" } \ No newline at end of file diff --git a/packages/polkabot-api/src/PolkabotChatbot.ts b/packages/polkabot-api/src/PolkabotChatbot.ts index a6d8f57..8324029 100644 --- a/packages/polkabot-api/src/PolkabotChatbot.ts +++ b/packages/polkabot-api/src/PolkabotChatbot.ts @@ -1,6 +1,6 @@ import { PolkabotPluginBase, ChatBot, Controllable, PluginModule, - PluginContext, Type, PluginCommandSet, PluginCommand, RoomAnswer, BotCommand + PluginContext, Type, PluginCommand, RoomAnswer, BotCommand } from './plugin.interface'; import LoggerSingleton from './logger'; @@ -15,10 +15,10 @@ export abstract class PolkabotChatbot extends PolkabotPluginBase implements Chat public registerControllables(controllables: Controllable[]): void { Logger.debug('Registering controllables: '); - controllables.map((ctrl: PolkabotPluginBase) => { - const commandObject: PluginCommandSet = (ctrl as Controllable).commandSet; - const commands: PluginCommand[] = commandObject.commands; - Logger.debug(` ctrl: ${ctrl.commandSet.name} (!${ctrl.commandSet.alias}) ${commands.map(c => c.name)}`); + controllables.map((ctrl: Controllable) => { + // const commandObject: PluginCommandSet = (ctrl as Controllable).commandSet; + const commands: PluginCommand[] = ctrl.getCommandSet().commands; + Logger.debug(` ctrl: ${ctrl.getCommandSet().name} (!${ctrl.getCommandSet().alias}) ${commands.map(c => c.name)}`); // Logger.info(commands.map(c => c.name)); }); this.controllables = controllables; diff --git a/packages/polkabot-api/src/decorators.ts b/packages/polkabot-api/src/decorators.ts index 5b8119c..dea9826 100644 --- a/packages/polkabot-api/src/decorators.ts +++ b/packages/polkabot-api/src/decorators.ts @@ -1,5 +1,5 @@ import LoggerSingleton from '../../polkabot-api/src/logger'; -import { PolkabotPluginParams } from './types'; +import { CallableMetas } from './types'; import { CommandDecoratorArgs, PluginCommand } from './plugin.interface'; const Logger = LoggerSingleton.getInstance(); @@ -9,22 +9,28 @@ const Logger = LoggerSingleton.getInstance(); * chat. * @param args */ -export function Callable(args: PolkabotPluginParams): Function { - return (ctor: Function) => { - ctor.prototype.context.logger.silly('++ Callable ' + args.name); - ctor.prototype.commandSet = args; +export function Callable(args?: CallableMetas): Function { + // Note we cannot use context yet + return (target: any) => { + Logger.silly('target: %o', target) + const meta: CallableMetas = { + name: args && args.name ? args.name : target.name, + alias: args && args.alias ? args.alias : target.name.toLowerCase() + }; + + target.meta = meta; }; } - - /** * This class decorator simplifies how we can make config * values available. We pass the list of config params and * they will be made available. * @param params The list of config params */ -export function Configured(params: string[]) { +export function Configured(params: string[]): Function { + Logger.silly('Configured: ' + params.join(' ')); + return (_ctor: Function) => { Logger.silly('Configured: ' + params.join(' ')); }; @@ -37,22 +43,16 @@ export function Configured(params: string[]) { * @param cmd */ export function Command(args?: CommandDecoratorArgs): Function { - return function (target: any, propertyKey: string, descriptor: PropertyDescriptor) { - Logger.silly('Command: %o', args); - Logger.silly('Command called on %o %s %o', target, propertyKey, descriptor); - - const that = target.prototype; - + return function (target: any, propertyKey: string, _descriptor: PropertyDescriptor) { const cmd: PluginCommand = { - name: args.name || propertyKey.toLowerCase().replace('cmd', ''), - description: args.description || '', // TODO: fill a default generic one - argsRegexp: args.argsRegexp || null, - adminOnly: args.adminOnly ?? true, - handler: that[propertyKey] + // TODO: extract a getCommandName() + name: args && args.name ? args.name : propertyKey.toLowerCase().replace('cmd', ''), + description: args ? args.description : 'Missing description', + argsRegexp: args ? args.argsRegexp : null, + adminOnly: args ? args.adminOnly : true, + handler: target[propertyKey] }; - that.context.logger.debug(cmd); - that.commandSet.commands.push(cmd); + if (!target.constructor.commands) target.constructor.commands = []; + target.constructor.commands.push(cmd); }; } - - diff --git a/packages/polkabot-api/src/logger.ts b/packages/polkabot-api/src/logger.ts index 5929fec..192ba3a 100644 --- a/packages/polkabot-api/src/logger.ts +++ b/packages/polkabot-api/src/logger.ts @@ -13,6 +13,33 @@ export default class LoggerFactory { return `${timestamp} [${label}${meta ? '|' + meta.source : ''}]\t${level} ${message}`; }); + // var myCustomLevels = { + // levels: { + // emerg: 0, + // alert: 1, + // crit: 2, + // error: 3, + // warning: 4, + // notice: 5, + // info: 6, + // debug: 7, + // silly: 8, + // trace: 9 + // }, + // colors: { + // emerg: 'redBG yellow', + // alert: 'redBG grey', + // crit: 'redBG white', + // error: 'red', + // warning: 'orange', + // notice: 'cyan', + // info: 'blue', + // debug: 'white', + // silly: 'grey', + // trace: 'greenBG red' + // } + // }; + // winston.addColors(myCustomLevels.colors); const instance = createLogger({ level: process.env.LOG_LEVEL, format: combine( @@ -22,6 +49,7 @@ export default class LoggerFactory { // timestamp(), productionFormat, ), + // levels: myCustomLevels.levels, transports: [ // - Write to all logs with level `info` and below to `combined.log` // - Write all logs error (and below) to `error.log`. @@ -33,9 +61,9 @@ export default class LoggerFactory { if (process.env.NODE_ENV !== 'production') { instance.add(new transports.Console({ format: combine( + format.colorize(), format.align(), format.simple(), - format.colorize(), label({ label: source }), format.splat(), consoleFormat, diff --git a/packages/polkabot-api/src/plugin.interface.ts b/packages/polkabot-api/src/plugin.interface.ts index b7e7748..9f9d783 100644 --- a/packages/polkabot-api/src/plugin.interface.ts +++ b/packages/polkabot-api/src/plugin.interface.ts @@ -7,10 +7,12 @@ import { PolkabotNotifier } from './PolkabotNotifier'; import { ConfigObject } from 'confmgr'; import type Room from 'matrix-js-sdk'; import type MatrixClient from 'matrix-js-sdk'; +import type RoomMember from 'matrix-js-sdk'; + import type Event from 'matrix-js-sdk'; import { winston } from './logger'; -export { Room, MatrixClient, Event }; +export { Room, MatrixClient, Event, RoomMember }; /** * A plugin module before the package has been loaded. * Before loading the patch we know only the path and the name @@ -88,7 +90,7 @@ export type PluginCommandSet = { * be called to control the thing. */ export interface Controllable { - commandSet?: PluginCommandSet; + getCommandSet(): PluginCommandSet; } export interface ChatBot { @@ -100,7 +102,7 @@ export class PolkabotPluginBase { public context: PluginContext; public package: packageJson; public type: Type; - public commandSet?: PluginCommandSet; + // public commandSet?: PluginCommandSet; constructor(type: Type, mod: PluginModule, context: PluginContext, _config?) { this.type = type; diff --git a/packages/polkabot-api/src/types.ts b/packages/polkabot-api/src/types.ts index 0ac5561..bb8e939 100644 --- a/packages/polkabot-api/src/types.ts +++ b/packages/polkabot-api/src/types.ts @@ -2,7 +2,9 @@ export type Cache = { [Key: string]: unknown; } -export type PolkabotPluginParams = { +export type CallableMetas = { name: string; alias: string; } + +export type MatrixEventType = 'm.room.encrypted' | 'm.room.message' \ No newline at end of file diff --git a/packages/polkabot-api/test/decorators.spec.ts b/packages/polkabot-api/test/decorators.spec.ts new file mode 100644 index 0000000..13beef3 --- /dev/null +++ b/packages/polkabot-api/test/decorators.spec.ts @@ -0,0 +1,36 @@ +import { expect } from 'chai'; +import { Callable, Command } from '../src/decorators'; +import { PluginCommand } from 'polkabot-api/src/plugin.interface'; +import { CallableMetas } from 'polkabot-api/src/types'; + +@Callable({ name: 'Foo', alias: 'bar' }) +class TestClass1 { + static meta: CallableMetas; + static commands: PluginCommand[] = []; + + @Command() + cmdTest() { } +} + +@Callable() +class TestClass2 { + static meta: CallableMetas; + static commands: PluginCommand[] = []; + + @Command() + cmdTest() { } +} + +describe('Decorators', () => { + it('TestClass1', () => { + expect(TestClass1.meta.alias).not.to.be.undefined + expect(TestClass1.meta.name).to.eql('Foo') + expect(TestClass1.meta.alias).to.eql('bar') + }); + + it('TestClass2', () => { + expect(TestClass2.meta.alias).not.to.be.undefined + expect(TestClass2.meta.name).to.eql('TestClass2') + expect(TestClass2.meta.alias).to.eql('testclass2') + }); +}); diff --git a/packages/polkabot-plugin-blocthday/src/commandSet.ts b/packages/polkabot-plugin-blocthday/src/commandSet.ts index d28addd..4e3af64 100644 --- a/packages/polkabot-plugin-blocthday/src/commandSet.ts +++ b/packages/polkabot-plugin-blocthday/src/commandSet.ts @@ -8,7 +8,7 @@ export default function getCommandSet(ref: Blocthday): PluginCommandSet { commands: [ { name: 'status', - description: 'Show status of the plugin', + description: 'Show status of the bday plugin', argsRegexp: '', adminOnly: false, handler: ref.cmdStatus diff --git a/packages/polkabot-plugin-blocthday/src/index.ts b/packages/polkabot-plugin-blocthday/src/index.ts index 2d6ad62..2aca8e8 100644 --- a/packages/polkabot-plugin-blocthday/src/index.ts +++ b/packages/polkabot-plugin-blocthday/src/index.ts @@ -6,22 +6,60 @@ import { PluginContext, CommandHandlerOutput, Controllable, - PluginCommandSet, Room, + PluginCommand, + PluginCommandSet, } from '@polkabot/api/src/plugin.interface'; import { PolkabotWorker } from '@polkabot/api/src/PolkabotWorker'; import { HeaderExtended } from '@polkadot/api-derive/type'; -import getCommandSet from './commandSet'; -// import { Command } from '../../polkabot-api/src/decorators'; +// import getCommandSet from './commandSet'; +import { Command, Callable } from '@polkabot/api/src/decorators'; +import { CallableMetas } from '@polkabot/api/src/types'; + +// const log = (originalConstructor: new(...args: any[]) => T) => { +// function newConstructor(... args) { +// console.log('Arguments: ', args.join(', ')); +// new originalConstructor(args); +// } +// newConstructor.prototype = originalConstructor.prototype; +// return newConstructor; +// }; + +function trace(ctor: Function): void { + console.log('trace on ' + ctor.constructor.name); +} -// @Callable({ name: 'Blocthday', alias: 'bday' }) // @Configured(['NB_BLOCKS']) +@trace +// @deco +// @deco2('yo') +@Callable({ name: 'Blocthday', alias: 'bday' }) export default class Blocthday extends PolkabotWorker implements Controllable { private NB_BLOCKS: number; - public commandSet: PluginCommandSet; - public unsub: Function; + // public commandSet: PluginCommandSet; + + // TODO: it would be nice if the decorator could declare that + static meta: CallableMetas; + static commands: PluginCommand[] = []; + + private unsub: Function; + + public constructor(mod: PluginModule, context: PluginContext, config?) { + super(mod, context, config); + this.context.logger.silly('++ Blocthday'); + + // TODO: would be great to use a decorator for that + this.NB_BLOCKS = this.context.config.Get('BLOCTHDAY', 'NB_BLOCKS'); + // Blocthday.commandSet = {} // getCommandSet(this); + this.context.logger.debug('commands: %s', JSON.stringify(Blocthday.commands, null, 0)); + } + + getCommandSet(): PluginCommandSet { + const res: PluginCommandSet = { ...Blocthday.meta, commands: Blocthday.commands}; + return res; + } - // @Command({ name: 'status', description: 'Show status of the plugin', argsRegexp: '', adminOnly: false }) + @Command({ name: 'status', description: 'Show status of the plugin', argsRegexp: '', adminOnly: false }) public cmdStatus(_event, room: Room): CommandHandlerOutput { this.context.logger.debug('Blocthday.cmdStatus()'); @@ -35,7 +73,7 @@ export default class Blocthday extends PolkabotWorker implements Controllable { }; } - // @Command() + @Command() public cmdTest(_event, room: Room): CommandHandlerOutput { return { code: -1, @@ -47,23 +85,15 @@ export default class Blocthday extends PolkabotWorker implements Controllable { }; } - public constructor(mod: PluginModule, context: PluginContext, config?) { - super(mod, context, config); - this.context.logger.silly('++ Blocthday'); - - // TODO: would be great to use a decorator for that - this.NB_BLOCKS = this.context.config.Get('BLOCTHDAY', 'NB_BLOCKS'); - this.commandSet = getCommandSet(this); - this.context.logger.debug('%o', this.commandSet); - } - public start(): void { this.context.logger.info('Starting with NB_BLOCKS: %d', this.NB_BLOCKS); - if (!this.commandSet) - this.context.logger.error('Commandset NOT defined'); + if (!this.getCommandSet().commands){ + console.log(this); + this.context.logger.error('No command defined'); + } else - this.context.logger.debug('Commandset: %o', this.commandSet); + this.context.logger.debug('Commandset: %s', JSON.stringify(this.getCommandSet(), null, 0)); this.watchChain().catch(error => { this.context.logger.error('Error subscribing to chain head: ', error); diff --git a/packages/polkabot-plugin-blocthday/tsconfig.json b/packages/polkabot-plugin-blocthday/tsconfig.json index e59bc61..6f1fd88 100644 --- a/packages/polkabot-plugin-blocthday/tsconfig.json +++ b/packages/polkabot-plugin-blocthday/tsconfig.json @@ -1,27 +1,13 @@ { + "extends": "../../tsconfig.base.json", "compilerOptions": { - "module": "commonjs", - "moduleResolution": "node", - "esModuleInterop": true, - "resolveJsonModule": true, - "allowJs": true, - "target": "es2015", - "noImplicitAny": false, - "sourceMap": true, - "preserveConstEnums": true, - "lib": ["es2015", "dom"], - "noUnusedLocals": true, - "noImplicitReturns": true, - "noImplicitThis": true, - "alwaysStrict": true, - "strictNullChecks": false, - "noUnusedParameters": false, - "pretty": true, - "allowUnreachableCode": false, - "experimentalDecorators": true, - "suppressImplicitAnyIndexErrors": true, "outDir": "./dist", + + "paths": { + "Command": ["polkabot-api/src/decorators"], + "Callable": ["polkabot-api/src/decorators"], + + }, }, "include": ["./bin/**/*", "./src/**/*", "./test/**/*", "./package.json"], - "compileOnSave": true } diff --git a/packages/polkabot-plugin-notifier-matrix/src/index.ts b/packages/polkabot-plugin-notifier-matrix/src/index.ts index 5689383..ba97a42 100644 --- a/packages/polkabot-plugin-notifier-matrix/src/index.ts +++ b/packages/polkabot-plugin-notifier-matrix/src/index.ts @@ -8,14 +8,16 @@ import { ErrorCode } from '../../polkabot-api/src/plugin.interface'; import { PolkabotNotifier } from '../../polkabot-api/src/PolkabotNotifier'; -import getCommandSet from './commandSet'; +// import getCommandSet from './commandSet'; export default class MatrixNotifier extends PolkabotNotifier { public channel = 'matrix'; public constructor(mod: PluginModule, context: PluginContext, config?) { super(mod, context, config); // this.context.logger.info("++MatrixNotifier", this); - this.commandSet = getCommandSet(this); + + // TODO: add decorators to bring that back + // this.commandSet = getCommandSet(this); } public notify(message: NotifierMessage, specs: NotifierSpecs): void { diff --git a/packages/polkabot-plugin-operator/package.json b/packages/polkabot-plugin-operator/package.json index dee922f..3b90d95 100644 --- a/packages/polkabot-plugin-operator/package.json +++ b/packages/polkabot-plugin-operator/package.json @@ -2,7 +2,7 @@ "name": "polkabot-plugin-operator", "version": "0.5.0", "description": "The operator plugin is targeted mainly to the Bot Master and allows performing monitoring and maintenance tasks.", - "main": "dist/src/index.js", + "main": "dist/polkabot-plugin-operator/src/index.js", "scripts": { "build": "tsc --build tsconfig.json", "lint": "eslint --ext .ts,.tsx .", diff --git a/packages/polkabot-plugin-operator/src/commandSet.ts b/packages/polkabot-plugin-operator/src/commandSet.ts index 6e75aae..7bc005b 100644 --- a/packages/polkabot-plugin-operator/src/commandSet.ts +++ b/packages/polkabot-plugin-operator/src/commandSet.ts @@ -8,7 +8,7 @@ export default function getCommandSet(ref: Operator): PluginCommandSet { commands: [ { name: 'status', - description: 'Show status of the plugin', + description: 'Show status of the op plugin', argsRegexp: '', adminOnly: false, handler: ref.cmdStatus diff --git a/packages/polkabot-plugin-operator/src/helpers.ts b/packages/polkabot-plugin-operator/src/helpers.ts index 6d7a51c..692f321 100644 --- a/packages/polkabot-plugin-operator/src/helpers.ts +++ b/packages/polkabot-plugin-operator/src/helpers.ts @@ -4,5 +4,17 @@ * @param msg the message to parse */ export function isHelpNeeded(msg: string): boolean { + if (!msg) return false; return msg.toLowerCase().indexOf('help') >= 0; +} + +/** + * Once the bot start, it can contact the Operator. + * First of all, that lets the Operator know that the bot is up. + * Second, this will open the communication channel with the bot. + * The Operator used to be able to contact the bot but this + * is nowadays more complicated as e2e is enabled by default in clients such as Riot. + */ +export function contactOperator() { + throw new Error('Not implemented'); } \ No newline at end of file diff --git a/packages/polkabot-plugin-operator/src/index.ts b/packages/polkabot-plugin-operator/src/index.ts index dafc824..4099b23 100644 --- a/packages/polkabot-plugin-operator/src/index.ts +++ b/packages/polkabot-plugin-operator/src/index.ts @@ -5,31 +5,37 @@ import { CommandHandlerOutput, BotCommand, Controllable, - PolkabotPluginBase, - PluginCommandSet, - PolkabotPlugin, PluginCommand, Room, + Event, SenderId, RoomId, + PluginCommandSet, } from '@polkabot/api/src/plugin.interface'; import moment from 'moment'; -import getCommandSet from './commandSet'; +// import getCommandSet from './commandSet'; import { PolkabotChatbot } from '@polkabot/api/src/PolkabotChatbot'; import MatrixHelper from './matrix-helper'; import { packageJson } from 'package-json'; import { assert } from '@polkadot/util'; import { OperatorParams } from './types'; import { isHelpNeeded } from './helpers'; +import { CallableMetas, MatrixEventType } from '@polkabot/api/src/types'; const capitalize: (string) => string = (s: string) => { if (typeof s !== 'string') return ''; return s.charAt(0).toUpperCase() + s.slice(1); }; +import { Command, Callable } from '@polkabot/api/src/decorators'; + +@Callable() export default class Operator extends PolkabotChatbot implements Controllable { - public commandSet: PluginCommandSet; + // public commandSet: PluginCommandSet; + static meta: CallableMetas; + static commands: PluginCommand[] = []; + package: packageJson; controllables: Controllable[]; context: PluginContext; @@ -49,12 +55,21 @@ export default class Operator extends PolkabotChatbot implements Controllable { public constructor(mod: PluginModule, context: PluginContext, config?) { super(mod, context, config); - this.commandSet = getCommandSet(this); + + // TODO: Fix below = add decorators + // this.commandSet = getCommandSet(this); assert(this.context.config, 'The config seems to be missing'); this.params = this.loadParams(); this.matrixHelper = new MatrixHelper(this.params); } + + getCommandSet(): PluginCommandSet { + const res: PluginCommandSet = { ...Operator.meta, commands: Operator.commands }; + assert(res.name.length > 0, 'something went wrong'); + return res; + } + public start(): void { this.watchChat(); } @@ -63,7 +78,8 @@ export default class Operator extends PolkabotChatbot implements Controllable { // clean up here } - public cmdStatus(_event: unknown, room: Room, ..._args: string[]): CommandHandlerOutput { + @Command() + public cmdStatus(_event: Event, room: Room, ..._args: string[]): CommandHandlerOutput { const uptimeSec: number = process.uptime(); const m = moment.duration(uptimeSec, 'seconds'); @@ -81,13 +97,18 @@ export default class Operator extends PolkabotChatbot implements Controllable { }; } + @Command({ description: 'This shows the help. It is also triggered when the user write anything mentioning HELP' }) public cmdHelp(_event: Event, room: Room): CommandHandlerOutput { let message = 'Here is also a list of all the loaded modules and their commands:
    '; + this.controllables.map((controllable: Controllable) => { - message += `
  • ${controllable.commandSet.name}:
    • `; - controllable.commandSet.commands.map((command: PluginCommand) => { - message += `
    • !${controllable.commandSet.alias} ${command.name}: ${command.description} !${ - command.adminOnly ? ' (Master only)' : '' + // console.log(controllable) + this.context.logger.silly('commandSet: %o', controllable.getCommandSet()); + + message += `
    • ${controllable.getCommandSet().name}:
      • `; + controllable.getCommandSet().commands.map((command: PluginCommand) => { + message += `
      • !${controllable.getCommandSet().alias} ${command.name}: ${command.description} - ${ + command.adminOnly ? 'Admin' : 'Public' }
      • `; }); message += '
      '; @@ -119,35 +140,46 @@ export default class Operator extends PolkabotChatbot implements Controllable { */ private matchCommand(cmd: BotCommand): PluginCommand | null { // first we look if the module is known - const hits = this.controllables.filter((c: PolkabotPluginBase) => c.commandSet.alias === cmd.module); - const controllable = hits.length > 0 ? (hits[0] as PolkabotPlugin) : null; + const hits = this.controllables.filter((c: Controllable) => c.getCommandSet().alias === cmd.module); + const controllable = hits.length > 0 ? (hits[0]) : null; if (!controllable) return null; - this.context.logger.info(`${controllable.module.name} could be able to do the job... checking supported commands`); - const handler: PluginCommand = controllable.commandSet.commands.find(c => c.name === cmd.command); + this.context.logger.info(`${controllable.getCommandSet().name} could be able to do the job... checking supported commands`); + const handler: PluginCommand = (controllable as Controllable).getCommandSet().commands.find(c => c.name === cmd.command); this.context.logger.info(`Handler found: ${handler ? handler.name : null}`); return handler; } private watchChat(): void { - this.context.matrix.on('Room.timeline', (event, room, _toStartOfTimeline) => { - if (event.getType() !== 'm.room.message') { + this.context.matrix.on('Room.timeline', (event: Event, room: Room, _toStartOfTimeline) => { + const evenType: MatrixEventType = event.getType(); + this.context.logger.silly(`Got event: ${evenType}`); + + if (evenType == 'm.room.encrypted') { + this.context.logger.warn('We got an encrypted message but we don\'t support encryption! We ignored it'); + return; + } + + if (evenType !== 'm.room.message') { + this.context.logger.silly('Event %s : %s', evenType, JSON.stringify(event, null, 0)); return; } // this.context.logger.info('Operator - event.getContent()', event.getContent()) const msg: string = event.getContent().body; + const senderId: SenderId = event.getSender(); + this.context.logger.debug(`${senderId}> ${msg}`); // If we see our own message, we skip if (this.matrixHelper.isBot(senderId)) return; - // If there is no ! and the string contains help, we try to help if (isHelpNeeded(msg)) { this.context.logger.info('Mentioning help in natural language'); const output = this.cmdHelp(event, room); + if (output.answers) { // this.answer(output.answers[0]) output.answers.map(a => { diff --git a/packages/polkabot-plugin-operator/test/helpers.spec.ts b/packages/polkabot-plugin-operator/test/helpers.spec.ts index 5e31562..00f8b07 100644 --- a/packages/polkabot-plugin-operator/test/helpers.spec.ts +++ b/packages/polkabot-plugin-operator/test/helpers.spec.ts @@ -2,20 +2,20 @@ import { expect } from 'chai'; import { isHelpNeeded } from '../src/helpers'; describe('Operator Helpers', () => { - const tests = [ - { msg: 'help', expectation: true }, - { msg: 'help me !', expectation: true }, - { msg: 'can you help', expectation: true }, - { msg: 'can you help me', expectation: true }, - { msg: 'help!!!', expectation: true }, - { msg: ' help', expectation: true }, - ] + const tests = [ + { msg: 'help', expectation: true }, + { msg: 'help me !', expectation: true }, + { msg: 'can you help', expectation: true }, + { msg: 'can you help me', expectation: true }, + { msg: 'help!!!', expectation: true }, + { msg: ' help', expectation: true }, + ]; - tests.forEach((test) => { - it('Should detect help request in: ' + test.msg, () => { - tests.map(t => { - expect(isHelpNeeded(t.msg)).to.equal(t.expectation) - }) - }); - }) + tests.forEach((test) => { + it('Should detect help request in: ' + test.msg, () => { + tests.map(t => { + expect(isHelpNeeded(t.msg)).to.equal(t.expectation); + }); + }); + }); }); diff --git a/packages/polkabot-plugin-operator/tsconfig.json b/packages/polkabot-plugin-operator/tsconfig.json index ce600e4..eb0cf5c 100644 --- a/packages/polkabot-plugin-operator/tsconfig.json +++ b/packages/polkabot-plugin-operator/tsconfig.json @@ -1,27 +1,7 @@ { + "extends": "../../tsconfig.base.json", "compilerOptions": { - "module": "commonjs", - "moduleResolution": "node", - "esModuleInterop": true, - "resolveJsonModule": true, - "allowJs": true, - "target": "es2015", - "noImplicitAny": false, - "sourceMap": true, - "preserveConstEnums": true, - "lib": ["es2015", "dom"], - "noUnusedLocals": false, - "noImplicitReturns": true, - "noImplicitThis": true, - "alwaysStrict": true, - "strictNullChecks": false, - "noUnusedParameters": false, - "pretty": true, - "allowUnreachableCode": false, - "experimentalDecorators": true, - "suppressImplicitAnyIndexErrors": true, - "outDir": "./dist" + "outDir": "./dist", }, "include": ["./bin/**/*", "./src/**/*", "./test/**/*", "./package.json"], - "compileOnSave": true -} +} \ No newline at end of file diff --git a/packages/polkabot/package.json b/packages/polkabot/package.json index b674abd..d781d8c 100644 --- a/packages/polkabot/package.json +++ b/packages/polkabot/package.json @@ -2,7 +2,7 @@ "name": "@polkabot/polkabot", "version": "0.5.0", "description": "Matrix Bot for Polkadot", - "main": "./build/src/polkabot.js", + "main": "dist/src/polkabot.js", "bin": { "polkabot": "./dist/polkabot.js" }, @@ -40,6 +40,7 @@ "matrix-js-sdk": "^6.0.0", "minimongo": "6.5.0", "nedb": "^1.8.0", + "node-localstorage": "^2.1.6", "olm": "https://matrix.org/packages/npm/olm/olm-3.1.0.tgz", "winston": "^3.2.1", "yargs": "15.3.1" diff --git a/packages/polkabot/src/index.ts b/packages/polkabot/src/index.ts index 3bfc9c8..b1c4751 100644 --- a/packages/polkabot/src/index.ts +++ b/packages/polkabot/src/index.ts @@ -1,14 +1,12 @@ -import Olm from 'olm'; import { ApiPromise, WsProvider } from '@polkadot/api'; import minimongo, { MemoryDb } from 'minimongo'; import Datastore from 'nedb'; - import pkg from '../package.json'; import PluginScanner from './lib/plugin-scanner'; import PluginLoader from './lib/plugin-loader'; -import sdk from 'matrix-js-sdk'; -import { ConfigManager, ConfigObject } from 'confmgr'; +import sdk from 'matrix-js-sdk'; // must be after adding olm to global +import { ConfigManager, ConfigObject } from 'confmgr'; import { assert } from '@polkadot/util'; import { PluginContext, @@ -19,35 +17,18 @@ import { Controllable, Type, MatrixClient, + RoomMember, + Event, } from '../../polkabot-api/src/plugin.interface'; import { PolkabotNotifier } from '../../polkabot-api/src/PolkabotNotifier'; import { PolkabotChatbot } from '../../polkabot-api/src/PolkabotChatbot'; import { PolkabotWorker } from '../../polkabot-api/src/PolkabotWorker'; -// import { MatrixClient } from './types'; import LoggerSingleton, { winston } from '../../polkabot-api/src/logger'; +import { routeMatrixLogger } from './lib/helpers'; +import { NotifiersTable } from './types'; const Logger = LoggerSingleton.getInstance(); - -type PolkabotGlobal = { - Olm: Olm; -}; - -((global as unknown) as PolkabotGlobal).Olm = Olm; - -// Here we rewrite the Matrix SDK logger to redirect to our logger -import { logger as mxLogger } from 'matrix-js-sdk/lib/logger'; - -// rewrite matrix logger -mxLogger.info = (...msg) => Logger.log({ level: 'silly', message: msg.join(' '), labels: { label: 'MatrixSDK' } }); -mxLogger.log = (...msg) => Logger.log({ level: 'silly', message: msg.join(' '), labels: { label: 'MatrixSDK' } }); -mxLogger.warn = (...msg) => Logger.log({ level: 'warn', message: msg.join(' '), labels: { label: 'MatrixSDK' } }); -mxLogger.error = (...msg) => Logger.log({ level: 'error', message: msg.join(' '), labels: { label: 'MatrixSDK' } }); -mxLogger.trace = (...msg) => Logger.log({ level: 'silly', message: msg.join(' '), labels: { label: 'MatrixSDK' } }); - -export interface NotifiersTable { - [type: string]: PolkabotNotifier[]; -} - +routeMatrixLogger(Logger); export default class Polkabot { // private args: any; @@ -74,7 +55,7 @@ export default class Polkabot { } private isControllable(candidate: PolkabotPlugin): boolean { - const res = candidate.commandSet !== undefined; + const res = (candidate as unknown as Controllable).getCommandSet !== undefined; // assert(candidate.package.name !== "polkabot-plugin-blocthday" || res, "BUG!"); return res; } @@ -110,8 +91,8 @@ export default class Polkabot { /** Register all the Controllable we find. They will be passed to the Operator. */ private registerControllable(controllable: Controllable): void { - assert(controllable.commandSet, 'No commands defined'); - Logger.debug('Registering controllable:', controllable.commandSet.name); + assert(controllable.getCommandSet().commands.length, 'No commands defined'); + Logger.debug('Registering controllable:', controllable.getCommandSet().name); this.controllablePlugins.push(controllable); // Logger.info("Controllables", this.controllablePlugins); } @@ -160,7 +141,7 @@ export default class Polkabot { loads.push( PluginLoader.load(plugin, context).then((p: PolkabotPlugin) => { if (this.isControllable(p)) { - this.registerControllable(p); + this.registerControllable(p as unknown as Controllable); } else Logger.debug(`▶ NOT Controllable: ${p.package.name}`); if (this.isWorker(p)) { @@ -294,6 +275,15 @@ export default class Polkabot { } }); + // Auto join on invite + this.matrix.on('RoomMember.membership', (_event: Event, member: RoomMember) => { + if (member.membership === 'invite') { + this.matrix.joinRoom(member.roomId).then(_ => { + Logger.info('Auto-joined %o', member); + }); + } + }); + // TODO: ensure we get a number below, otherwise the matrix SDK is unhappy // this.matrix.startClient({ initialSyncLimit: this.config.values.MATRIX.MESSAGES_TO_SHOW }); this.matrix.startClient({ initialSyncLimit: 3 }); @@ -305,7 +295,3 @@ export default class Polkabot { } } -// comment out if you need to trouble shoot matrix issues -// matrix.on('event', function (event) { -// Logger.silly(event.getType()) -// }) diff --git a/packages/polkabot/src/lib/helpers.ts b/packages/polkabot/src/lib/helpers.ts new file mode 100644 index 0000000..f56d69e --- /dev/null +++ b/packages/polkabot/src/lib/helpers.ts @@ -0,0 +1,21 @@ +import { winston } from '../../../polkabot-api/src/logger'; +import { logger as mxLogger } from 'matrix-js-sdk/lib/logger'; + +/** + * The Matrix JS SDK logger is rather verbose and we don't really want + * to pollute our output or logs with too many details. + * This is why we re-reroute the Matrix logger to our winston logger + * and lower the log levels. + * @param logger + */ +export function routeMatrixLogger(logger: winston.Logger): void { + // Here we rewrite the Matrix SDK logger to redirect to our logger + + // rewrite matrix logger + mxLogger.info = (...msg) => logger.log({ level: 'silly', message: msg.join(' '), labels: { label: 'MatrixSDK' } }); + mxLogger.log = (...msg) => logger.log({ level: 'silly', message: msg.join(' '), labels: { label: 'MatrixSDK' } }); + mxLogger.warn = (...msg) => logger.log({ level: 'warn', message: msg.join(' '), labels: { label: 'MatrixSDK' } }); + mxLogger.error = (...msg) => logger.log({ level: 'error', message: msg.join(' '), labels: { label: 'MatrixSDK' } }); + mxLogger.trace = (...msg) => logger.log({ level: 'silly', message: msg.join(' '), labels: { label: 'MatrixSDK' } }); + mxLogger.debug = (...msg) => logger.log({ level: 'silly', message: msg.join(' '), labels: { label: 'MatrixSDK' } }); +} diff --git a/packages/polkabot/src/types.ts b/packages/polkabot/src/types.ts index f87b87c..fa0e93e 100644 --- a/packages/polkabot/src/types.ts +++ b/packages/polkabot/src/types.ts @@ -1,4 +1,5 @@ -// import { RoomId } from '../../polkabot-api/src/plugin.interface'; +import Olm from 'olm'; +import { PolkabotNotifier } from '../../polkabot-api/src/PolkabotNotifier'; export interface EnvVar { name: string; // Name of the envrionment varibale @@ -29,6 +30,16 @@ export interface PolkabotConfig { }; } +export interface NotifiersTable { + [type: string]: PolkabotNotifier[]; +} + +export type PolkabotGlobal = { + Olm: Olm; + localStorage: any; +}; + + // export interface MatrixClient { // sendTextMessage: (roomId, string) => void; // sendHtmlMessage: (roomId: RoomId, html: string, text: string) => void; diff --git a/packages/polkabot/tsconfig.json b/packages/polkabot/tsconfig.json index a5f8cfd..bc642a4 100644 --- a/packages/polkabot/tsconfig.json +++ b/packages/polkabot/tsconfig.json @@ -1,7 +1,7 @@ { "extends": "../../tsconfig.base.json", "compilerOptions": { - "outDir": "./build" + "outDir": "./build", }, "include": ["./bin/**/*", "./src/**/*", "./test/**/*", "./package.json", "../polkabot-api/src/logger.ts"], } diff --git a/tsconfig.base.json b/tsconfig.base.json index 52767a2..8deebaa 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -20,6 +20,8 @@ "allowUnreachableCode": false, "experimentalDecorators": true, "suppressImplicitAnyIndexErrors": true, + // "outDir": "./dist", + "baseUrl": "packages", }, "compileOnSave": true } diff --git a/yarn.lock b/yarn.lock index 70ffeef..d427e52 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7245,6 +7245,13 @@ node-gyp@^5.0.2: tar "^4.4.12" which "^1.3.1" +node-localstorage@^2.1.6: + version "2.1.6" + resolved "https://registry.yarnpkg.com/node-localstorage/-/node-localstorage-2.1.6.tgz#7c62120beff8abbf960c858da70fddcfc336898a" + integrity sha512-yE7AycE5G2hU55d+F7Ona9nx97C+enJzWWx6jrsji7fuPZFJOvuW3X/LKKAcXRBcEIJPDOKt8ZiFWFmShR/irg== + dependencies: + write-file-atomic "^1.1.4" + node-preload@^0.2.0: version "0.2.1" resolved "https://registry.npmjs.org/node-preload/-/node-preload-0.2.1.tgz#c03043bb327f417a18fee7ab7ee57b408a144301" @@ -8892,7 +8899,7 @@ slice-ansi@^2.1.0: astral-regex "^1.0.0" is-fullwidth-code-point "^2.0.0" -slide@^1.1.6: +slide@^1.1.5, slide@^1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" integrity sha1-VusCfWW00tzmyy4tMsTUr8nh1wc= @@ -10179,6 +10186,15 @@ wrappy@1: resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= +write-file-atomic@^1.1.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-1.3.4.tgz#f807a4f0b1d9e913ae7a48112e6cc3af1991b45f" + integrity sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8= + dependencies: + graceful-fs "^4.1.11" + imurmurhash "^0.1.4" + slide "^1.1.5" + write-file-atomic@^2.0.0, write-file-atomic@^2.3.0, write-file-atomic@^2.4.2: version "2.4.3" resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.3.tgz#1fd2e9ae1df3e75b8d8c367443c692d4ca81f481" -- GitLab From 0a06b8ed06e6ad6cc4c6a20104a945ce7cdcc62e Mon Sep 17 00:00:00 2001 From: chevdor Date: Sat, 23 May 2020 20:02:54 +0200 Subject: [PATCH 77/86] Add doc and fix doc generation --- package.json | 2 +- .../src/{logger.ts => LoggerFactory.ts} | 37 +--- packages/polkabot-api/src/PolkabotChatbot.ts | 10 +- packages/polkabot-api/src/PolkabotNotifier.ts | 5 +- .../polkabot-api/src/PolkabotPluginBase.ts | 36 ++++ packages/polkabot-api/src/PolkabotWorker.ts | 5 +- packages/polkabot-api/src/decorators.ts | 9 +- packages/polkabot-api/src/index.ts | 9 + packages/polkabot-api/src/plugin.interface.ts | 165 ---------------- packages/polkabot-api/src/types.ts | 185 +++++++++++++++++- packages/polkabot-api/src/utils.ts | 10 +- packages/polkabot-api/test/decorators.spec.ts | 53 +++-- packages/polkabot-api/tsconfig.json | 2 +- packages/polkabot-api/typedoc.js | 9 + packages/polkabot-api/typedoc.json | 10 - .../polkabot-plugin-blockstats/typedoc.js | 9 + .../polkabot-plugin-blockstats/typedoc.json | 10 - .../src/commandSet.ts | 18 -- .../polkabot-plugin-blocthday/src/index.ts | 30 +-- .../polkabot-plugin-blocthday/tsconfig.json | 4 +- packages/polkabot-plugin-blocthday/typedoc.js | 9 + .../polkabot-plugin-blocthday/typedoc.json | 9 - .../src/commandSet.ts | 18 -- .../src/index.ts | 22 +-- .../typedoc.js | 9 + .../typedoc.json | 10 - .../src/index.ts | 7 +- .../typedoc.js | 9 + .../typedoc.json | 10 - .../polkabot-plugin-operator/package.json | 2 +- .../src/commandSet.ts | 48 ++--- .../polkabot-plugin-operator/src/helpers.ts | 12 +- .../polkabot-plugin-operator/src/index.ts | 26 +-- .../src/matrix-helper.ts | 2 +- .../polkabot-plugin-operator/tsconfig.json | 2 +- packages/polkabot-plugin-operator/typedoc.js | 9 + .../polkabot-plugin-operator/typedoc.json | 10 - packages/polkabot-plugin-reporter/typedoc.js | 9 + .../polkabot-plugin-reporter/typedoc.json | 10 - .../polkabot-plugin-stallwatcher/typedoc.js | 9 + .../polkabot-plugin-stallwatcher/typedoc.json | 10 - packages/polkabot/package.json | 2 +- packages/polkabot/src/index.ts | 99 ++++------ .../src/lib/{helpers.ts => matrix-helpers.ts} | 9 +- packages/polkabot/src/lib/plugin-loader.ts | 13 +- packages/polkabot/src/lib/plugin-scanner.ts | 4 +- packages/polkabot/src/lib/type-helpers.ts | 19 ++ packages/polkabot/src/types.ts | 7 +- packages/polkabot/tsconfig.json | 7 +- packages/polkabot/typedoc.js | 9 + packages/polkabot/typedoc.json | 10 - tsconfig.base.json | 27 --- tsconfig.json | 39 +++- typedoc.js | 14 ++ typedoc.json | 11 -- yarn.lock | 130 ++++++------ 56 files changed, 615 insertions(+), 655 deletions(-) rename packages/polkabot-api/src/{logger.ts => LoggerFactory.ts} (59%) create mode 100644 packages/polkabot-api/src/PolkabotPluginBase.ts create mode 100644 packages/polkabot-api/src/index.ts delete mode 100644 packages/polkabot-api/src/plugin.interface.ts create mode 100644 packages/polkabot-api/typedoc.js delete mode 100644 packages/polkabot-api/typedoc.json create mode 100644 packages/polkabot-plugin-blockstats/typedoc.js delete mode 100644 packages/polkabot-plugin-blockstats/typedoc.json delete mode 100644 packages/polkabot-plugin-blocthday/src/commandSet.ts create mode 100644 packages/polkabot-plugin-blocthday/typedoc.js delete mode 100644 packages/polkabot-plugin-blocthday/typedoc.json delete mode 100644 packages/polkabot-plugin-notifier-matrix/src/commandSet.ts create mode 100644 packages/polkabot-plugin-notifier-matrix/typedoc.js delete mode 100644 packages/polkabot-plugin-notifier-matrix/typedoc.json create mode 100644 packages/polkabot-plugin-notifier-twitter/typedoc.js delete mode 100644 packages/polkabot-plugin-notifier-twitter/typedoc.json create mode 100644 packages/polkabot-plugin-operator/typedoc.js delete mode 100644 packages/polkabot-plugin-operator/typedoc.json create mode 100644 packages/polkabot-plugin-reporter/typedoc.js delete mode 100644 packages/polkabot-plugin-reporter/typedoc.json create mode 100644 packages/polkabot-plugin-stallwatcher/typedoc.js delete mode 100644 packages/polkabot-plugin-stallwatcher/typedoc.json rename packages/polkabot/src/lib/{helpers.ts => matrix-helpers.ts} (82%) create mode 100644 packages/polkabot/src/lib/type-helpers.ts create mode 100644 packages/polkabot/typedoc.js delete mode 100644 packages/polkabot/typedoc.json delete mode 100644 tsconfig.base.json create mode 100644 typedoc.js delete mode 100644 typedoc.json diff --git a/package.json b/package.json index a34de5e..6ba4594 100644 --- a/package.json +++ b/package.json @@ -25,6 +25,6 @@ }, "dependencies": { "@babel/runtime": "^7.8.7", - "@polkadot/api": "^1.14.1" + "@polkadot/api": "^1.15.1" } } diff --git a/packages/polkabot-api/src/logger.ts b/packages/polkabot-api/src/LoggerFactory.ts similarity index 59% rename from packages/polkabot-api/src/logger.ts rename to packages/polkabot-api/src/LoggerFactory.ts index 192ba3a..f721c2f 100644 --- a/packages/polkabot-api/src/logger.ts +++ b/packages/polkabot-api/src/LoggerFactory.ts @@ -1,6 +1,7 @@ -import { Logger, createLogger, format, transports } from 'winston'; import winston from 'winston'; +import { Logger, createLogger, format, transports } from 'winston'; export { winston }; + const { combine, label, printf } = format; export default class LoggerFactory { @@ -13,46 +14,14 @@ export default class LoggerFactory { return `${timestamp} [${label}${meta ? '|' + meta.source : ''}]\t${level} ${message}`; }); - // var myCustomLevels = { - // levels: { - // emerg: 0, - // alert: 1, - // crit: 2, - // error: 3, - // warning: 4, - // notice: 5, - // info: 6, - // debug: 7, - // silly: 8, - // trace: 9 - // }, - // colors: { - // emerg: 'redBG yellow', - // alert: 'redBG grey', - // crit: 'redBG white', - // error: 'red', - // warning: 'orange', - // notice: 'cyan', - // info: 'blue', - // debug: 'white', - // silly: 'grey', - // trace: 'greenBG red' - // } - // }; - // winston.addColors(myCustomLevels.colors); const instance = createLogger({ level: process.env.LOG_LEVEL, format: combine( label({ label: source }), format.splat(), - // format.json(), - // timestamp(), productionFormat, ), - // levels: myCustomLevels.levels, transports: [ - // - Write to all logs with level `info` and below to `combined.log` - // - Write all logs error (and below) to `error.log`. new transports.File({ filename: 'error.log', level: 'error' }), new transports.File({ filename: 'combined.log' }) ] @@ -70,8 +39,6 @@ export default class LoggerFactory { ) })); } - // } - return instance; } } diff --git a/packages/polkabot-api/src/PolkabotChatbot.ts b/packages/polkabot-api/src/PolkabotChatbot.ts index 8324029..600f27a 100644 --- a/packages/polkabot-api/src/PolkabotChatbot.ts +++ b/packages/polkabot-api/src/PolkabotChatbot.ts @@ -1,8 +1,6 @@ -import { - PolkabotPluginBase, ChatBot, Controllable, PluginModule, - PluginContext, Type, PluginCommand, RoomAnswer, BotCommand -} from './plugin.interface'; -import LoggerSingleton from './logger'; +import { PolkabotPluginBase } from './PolkabotPluginBase'; +import LoggerSingleton from './LoggerFactory'; +import { ChatBot, Controllable, PluginModule, PluginContext, PluginCommand, RoomAnswer, BotCommand, PluginType } from './types'; const Logger = LoggerSingleton.getInstance(); @@ -10,7 +8,7 @@ export abstract class PolkabotChatbot extends PolkabotPluginBase implements Chat controllables: Controllable[] = []; constructor(mod: PluginModule, context: PluginContext, config?) { - super(Type.Chatbot, mod, context, config); + super(PluginType.Chatbot, mod, context, config); } public registerControllables(controllables: Controllable[]): void { Logger.debug('Registering controllables: '); diff --git a/packages/polkabot-api/src/PolkabotNotifier.ts b/packages/polkabot-api/src/PolkabotNotifier.ts index e78dfc7..9d091d2 100644 --- a/packages/polkabot-api/src/PolkabotNotifier.ts +++ b/packages/polkabot-api/src/PolkabotNotifier.ts @@ -1,10 +1,11 @@ -import { PolkabotPluginBase, PluginModule, PluginContext, Type, NotifierMessage, NotifierSpecs } from './plugin.interface'; +import { PolkabotPluginBase } from './PolkabotPluginBase'; +import { PluginModule, PluginContext, NotifierMessage, NotifierSpecs, PluginType } from './types'; export abstract class PolkabotNotifier extends PolkabotPluginBase { public abstract channel: string; // 'twitter', 'matrix', 'email', .... constructor(mod: PluginModule, context: PluginContext, config?) { - super(Type.Notifier, mod, context, config); + super(PluginType.Notifier, mod, context, config); } public notify(_message: NotifierMessage, _specs: NotifierSpecs): void { // console.log("Notifier - notify()", message, specs); diff --git a/packages/polkabot-api/src/PolkabotPluginBase.ts b/packages/polkabot-api/src/PolkabotPluginBase.ts new file mode 100644 index 0000000..9c749b6 --- /dev/null +++ b/packages/polkabot-api/src/PolkabotPluginBase.ts @@ -0,0 +1,36 @@ +import { packageJson } from 'package-json'; +import * as path from 'path'; +import { assert } from './utils'; +import { PluginModule, PluginType, PluginContext } from './types'; + +/** + * Any plugin must extend this base class. It provides the basic + * functions any plugin should provide. + */ +export class PolkabotPluginBase { + /** This is describing our plugin before we could load it */ + public module: PluginModule; + /** The context is passed from polkabot and contains useful resources such as the logger and the connection to polkadot */ + public context: PluginContext; + /** Once we successfully loaded the plugin, its package.json is available to us */ + public package: packageJson; + /** Each plugin has a given type, descriving how it can interacts + */ + public type: PluginType; + + constructor(type: PluginType, mod: PluginModule, context: PluginContext, _config?) { + this.type = type; + this.context = context; + this.module = mod; + + const packageFile = path.join(mod.path, 'package.json'); + this.context.logger.debug(`loading package from ${packageFile}`); + this.package = require(packageFile) as packageJson; + + assert(this.package, `package ${this.module.name} failed to load properly`); + } + + public toString = (): string => { + return `[${this.type}] ${this.module.name}`; + } +} diff --git a/packages/polkabot-api/src/PolkabotWorker.ts b/packages/polkabot-api/src/PolkabotWorker.ts index 62774ab..9773dc3 100644 --- a/packages/polkabot-api/src/PolkabotWorker.ts +++ b/packages/polkabot-api/src/PolkabotWorker.ts @@ -1,8 +1,9 @@ -import { PolkabotPluginBase, PluginModule, PluginContext, Type } from './plugin.interface'; +import { PolkabotPluginBase } from './PolkabotPluginBase'; +import { PluginModule, PluginContext, PluginType } from './types'; export abstract class PolkabotWorker extends PolkabotPluginBase { constructor(mod: PluginModule, context: PluginContext, config?) { - super(Type.Worker, mod, context, config); + super(PluginType.Worker, mod, context, config); } public abstract start(); diff --git a/packages/polkabot-api/src/decorators.ts b/packages/polkabot-api/src/decorators.ts index dea9826..59b8a26 100644 --- a/packages/polkabot-api/src/decorators.ts +++ b/packages/polkabot-api/src/decorators.ts @@ -1,6 +1,5 @@ -import LoggerSingleton from '../../polkabot-api/src/logger'; -import { CallableMetas } from './types'; -import { CommandDecoratorArgs, PluginCommand } from './plugin.interface'; +import LoggerSingleton from './LoggerFactory'; +import { CallableMetas, CommandDecoratorArgs, PluginCommand } from './types'; const Logger = LoggerSingleton.getInstance(); @@ -12,12 +11,12 @@ const Logger = LoggerSingleton.getInstance(); export function Callable(args?: CallableMetas): Function { // Note we cannot use context yet return (target: any) => { - Logger.silly('target: %o', target) + Logger.silly('target: %o', target); const meta: CallableMetas = { name: args && args.name ? args.name : target.name, alias: args && args.alias ? args.alias : target.name.toLowerCase() }; - + if (!target.commands) target.commands = []; target.meta = meta; }; } diff --git a/packages/polkabot-api/src/index.ts b/packages/polkabot-api/src/index.ts new file mode 100644 index 0000000..24031b3 --- /dev/null +++ b/packages/polkabot-api/src/index.ts @@ -0,0 +1,9 @@ +export * from './PolkabotChatbot'; +export * from './PolkabotNotifier'; +export * from './PolkabotPluginBase'; +export * from './PolkabotWorker'; +export * from './types'; +export * from './utils'; + +import LoggerFactory from './LoggerFactory'; +export { LoggerFactory }; diff --git a/packages/polkabot-api/src/plugin.interface.ts b/packages/polkabot-api/src/plugin.interface.ts deleted file mode 100644 index 9f9d783..0000000 --- a/packages/polkabot-api/src/plugin.interface.ts +++ /dev/null @@ -1,165 +0,0 @@ -import { packageJson } from 'package-json'; -import * as path from 'path'; -import { assert } from './utils'; -import { PolkabotWorker } from './PolkabotWorker'; -import { PolkabotChatbot } from './PolkabotChatbot'; -import { PolkabotNotifier } from './PolkabotNotifier'; -import { ConfigObject } from 'confmgr'; -import type Room from 'matrix-js-sdk'; -import type MatrixClient from 'matrix-js-sdk'; -import type RoomMember from 'matrix-js-sdk'; - -import type Event from 'matrix-js-sdk'; -import { winston } from './logger'; - -export { Room, MatrixClient, Event, RoomMember }; -/** - * A plugin module before the package has been loaded. - * Before loading the patch we know only the path and the name - * of the package. - */ -export type PluginModule = { - name: string; // polkabot-plugin-foobar - shortName: string; // foobar - path: string; // /some/path/to/module -}; - -export enum Type { - Worker, - Notifier, - Chatbot -} - -export type RoomAnswer = { - room: Room; - message: string; - html?: boolean; // If we don't pass HTML it is assumed that it is -}; - -/** - * Some error code - */ -export enum ErrorCode { - /** Some error occured */ - GenericError = -1, - Ok = 0 -} - -export type CommandHandlerOutput = { - code: ErrorCode; - /** This is a message sent to the room */ - msg: string; - /** Those are answers directed to the room where we got the request */ - answers?: RoomAnswer[]; -}; - -export type RoomId = string; -export type Message = string; -export type SenderId = string; - -// export type Member = any; - -export type PluginCommand = { - name: string; // ie: start - description: string; // what does this command do - argsRegexp: string; // regexp to validate the expected args - adminOnly: boolean; // is the command only for admins ? - handler: (...args: unknown[]) => CommandHandlerOutput; -}; - -export type CommandDecoratorArgs = { - name?: string; - description?: string; // what does this command do - argsRegexp?: string; // regexp to validate the expected args - adminOnly?: boolean; // is the command only for admins ? -} - -export type PluginCommandSet = { - name: string; // ie: Identity Registrar - alias: string; // ie: reg - commands: Array; -}; - -// export interface IPolkabotPlugin { -// start(): void; -// stop(): void; -// } - -/** - * Something implementing IControllable must expose commands and handlers that can - * be called to control the thing. - */ -export interface Controllable { - getCommandSet(): PluginCommandSet; -} - -export interface ChatBot { - controllables: Controllable[]; -} - -export class PolkabotPluginBase { - public module: PluginModule; - public context: PluginContext; - public package: packageJson; - public type: Type; - // public commandSet?: PluginCommandSet; - - constructor(type: Type, mod: PluginModule, context: PluginContext, _config?) { - this.type = type; - this.context = context; - this.module = mod; - const packageFile = path.join(mod.path, 'package.json'); - - // console.log("loading package from", packageFile); - this.package = require(packageFile); - - assert(this.package, 'package not loaded properly'); - } - - // toString() { - // const obj = this; - // delete obj.context; - // return JSON.stringify(obj, null, 2); - // } -} - -export type BotCommand = { - module: string; // op, id, bday, etc... - command: string; // status, help, etc, ... - args?: string[]; -}; - -export type PolkabotPlugin = PolkabotWorker | PolkabotNotifier | PolkabotChatbot; - -/** - * This is the context Polkabot passes to any plugin - */ -export interface PluginContext { - config: ConfigObject; - pkg: packageJson; - db; - matrix: MatrixClient; - logger: winston.Logger; - polkadot; - polkabot; -} - -export type NotifierMessageEmail = { - message: string; - subject: string; - email: string; -}; - -export type NotifierMessageTwitter = { - message: string; -}; - -export type NotifierMessageMatrix = { - message: string; -}; - -export type NotifierMessage = NotifierMessageMatrix | NotifierMessageTwitter | NotifierMessageEmail; - -export type NotifierSpecs = { - notifiers: string[] | string; -}; diff --git a/packages/polkabot-api/src/types.ts b/packages/polkabot-api/src/types.ts index bb8e939..a156a5c 100644 --- a/packages/polkabot-api/src/types.ts +++ b/packages/polkabot-api/src/types.ts @@ -1,3 +1,18 @@ +import type Room from 'matrix-js-sdk'; +import type MatrixClient from 'matrix-js-sdk'; +import type RoomMember from 'matrix-js-sdk'; +import type Event from 'matrix-js-sdk'; +export { Room, MatrixClient, Event, RoomMember }; + +import { PolkabotWorker } from './PolkabotWorker'; +import { PolkabotNotifier } from './PolkabotNotifier'; +import { PolkabotChatbot } from './PolkabotChatbot'; +import { winston } from './LoggerFactory'; +import { packageJson } from 'package-json'; +import { ConfigObject } from 'confmgr'; + +export { winston }; + export type Cache = { [Key: string]: unknown; } @@ -7,4 +22,172 @@ export type CallableMetas = { alias: string; } -export type MatrixEventType = 'm.room.encrypted' | 'm.room.message' \ No newline at end of file +export type MatrixEventType = 'm.room.encrypted' | 'm.room.message' + +/** + * A plugin module before the package has been loaded. + * Before loading the patch we know only the path and the name + * of the package. + */ +export type PluginModule = { + name: string; // polkabot-plugin-foobar + shortName: string; // foobar + path: string; // /some/path/to/module +}; + +/** + * Polkabot recognizes thos 3 types of plugins. + */ +export enum PluginType { + Worker, + Notifier, + Chatbot +} + +export type RoomAnswer = { + room: Room; + message: string; + html?: boolean; // If we don't pass HTML it is assumed that it is +}; + +/** + * Some error code + */ +export enum ErrorCode { + /** Some error occured */ + GenericError = -1, + Ok = 0 +} + +export type CommandHandlerOutput = { + code: ErrorCode; + /** This is a message sent to the room */ + msg: string; + /** Those are answers directed to the room where we got the request */ + answers?: RoomAnswer[]; +}; + +export type RoomId = string; +export type Message = string; +export type SenderId = string; + +// export type Member = any; + +export type PluginCommand = { + name: string; // ie: start + description: string; // what does this command do + argsRegexp: string; // regexp to validate the expected args + adminOnly: boolean; // is the command only for admins ? + handler: (...args: unknown[]) => CommandHandlerOutput; +}; + +export type CommandDecoratorArgs = { + name?: string; + description?: string; // what does this command do + argsRegexp?: string; // regexp to validate the expected args + adminOnly?: boolean; // is the command only for admins ? +} + +export type PluginCommandSet = { + name: string; // ie: Identity Registrar + alias: string; // ie: reg + commands: Array; +}; + +// export interface IPolkabotPlugin { +// start(): void; +// stop(): void; +// } + +/** + * Something implementing this interface must expose a function that helps + * fetching an object describing all the commands and handlers that can + * be called to control the thing. + */ +export interface Controllable { + getCommandSet(): PluginCommandSet; +} + +/** + * A ChatBot must have controllables to send commands to. + */ +export interface ChatBot { + controllables: Controllable[]; +} + +/** + * A BotCommand consists in a module, a command and some optionnal arguments. + * For instance: `!op add 1 2` where `op` is the module, `add` is the command + * and `1 2` are the 2 arguments. + */ +export type BotCommand = { + module: string; // op, id, bday, etc... + command: string; // status, help, etc, ... + args?: string[]; +}; + +/** + * Polkabot knows 3 types of plugins: + * - PolkabotWorker + * - PolkabotNotifier + * - PolkabotChatbot + */ +export type PolkabotPlugin = PolkabotWorker | PolkabotNotifier | PolkabotChatbot; + +/** + * This is the context Polkabot passes to any plugin + */ +export interface PluginContext { + config: ConfigObject; + pkg: packageJson; + db; + matrix: MatrixClient; + logger: winston.Logger; + polkadot; + polkabot; +} + +/** + * Without surprise, the most basic message we can have + * is a single string. + */ +export type BasicMessage = { + message: string; +} + +/** + * This is the type of message an email notifier would handle. + * NOTE: There is currently no such notifier. + */ +export type NotifierMessageEmail = BasicMessage & { + subject: string; + email: string; +}; + +/** + * This is a message as we send it to the Twitter notifier. + */ +export type NotifierMessageTwitter = BasicMessage; + +//TODO: fix that one, it should be text | html + text +/** + * This is a message as we send it to the Matrix notifier. + */ +export type NotifierMessageMatrix = BasicMessage; + +/** + * This is the list of messages currently supported by Polkabot + */ +export type NotifierMessage = + | NotifierMessageMatrix + | NotifierMessageTwitter +//| NotifierMessageEmail; + +/** + * When a plugin wants to send a notification, it needs to include a + * NotifierSpecs object that is describing what notifier(s) should be targeted. + * In other worlds, this is where a plugin says "now send 'hello world' on _twitter and matrix_" + */ +export type NotifierSpecs = { + notifiers: string[] | string; +}; diff --git a/packages/polkabot-api/src/utils.ts b/packages/polkabot-api/src/utils.ts index 3c495d3..3d30ca9 100644 --- a/packages/polkabot-api/src/utils.ts +++ b/packages/polkabot-api/src/utils.ts @@ -1,3 +1,9 @@ -export function assert(val, msg): void { - if (!val) throw new Error(msg || 'Assertion failed'); + +/** + * If something goes wrong, this method will make it visible as it happens! + * @param statement Statement to be tested + * @param message If the statement is false, throw an Error with this message + */ +export function assert(statement: boolean, message: string): void { + if (!statement) throw new Error(message || 'Assertion failed'); } diff --git a/packages/polkabot-api/test/decorators.spec.ts b/packages/polkabot-api/test/decorators.spec.ts index 13beef3..c3306e2 100644 --- a/packages/polkabot-api/test/decorators.spec.ts +++ b/packages/polkabot-api/test/decorators.spec.ts @@ -1,36 +1,47 @@ import { expect } from 'chai'; import { Callable, Command } from '../src/decorators'; -import { PluginCommand } from 'polkabot-api/src/plugin.interface'; -import { CallableMetas } from 'polkabot-api/src/types'; +import { CallableMetas, PluginCommand } from '../src/types'; @Callable({ name: 'Foo', alias: 'bar' }) class TestClass1 { - static meta: CallableMetas; - static commands: PluginCommand[] = []; + static meta: CallableMetas; + static commands: PluginCommand[] = []; - @Command() - cmdTest() { } + @Command() + cmdTest(): void { return; } } @Callable() class TestClass2 { - static meta: CallableMetas; - static commands: PluginCommand[] = []; + static meta: CallableMetas; + static commands: PluginCommand[] = []; - @Command() - cmdTest() { } + @Command() + cmdTest1(): void { return; } + + @Command() + cmdTest2(): void { return; } + + @Command({ name: 'test' }) + sometest(): void { return; } } describe('Decorators', () => { - it('TestClass1', () => { - expect(TestClass1.meta.alias).not.to.be.undefined - expect(TestClass1.meta.name).to.eql('Foo') - expect(TestClass1.meta.alias).to.eql('bar') - }); - - it('TestClass2', () => { - expect(TestClass2.meta.alias).not.to.be.undefined - expect(TestClass2.meta.name).to.eql('TestClass2') - expect(TestClass2.meta.alias).to.eql('testclass2') - }); + it('TestClass1', () => { + expect(TestClass1.meta.alias).not.to.be.undefined; + expect(TestClass1.meta.name).to.eql('Foo'); + expect(TestClass1.meta.alias).to.eql('bar'); + expect(TestClass1.commands).to.be.lengthOf(1); + }); + + it('TestClass2', () => { + expect(TestClass2.meta.alias).not.to.be.undefined; + expect(TestClass2.meta.name).to.eql('TestClass2'); + expect(TestClass2.meta.alias).to.eql('testclass2'); + expect(TestClass2.commands).to.be.lengthOf(3); + // expect(TestClass1.getCommand('foo')).to.be.null + // expect(TestClass1.getCommand('test1')).to.be.not.null + // expect(TestClass1.getCommand('test2')).to.be.not.null + // expect(TestClass1.getCommand('test')).to.be.not.null + }); }); diff --git a/packages/polkabot-api/tsconfig.json b/packages/polkabot-api/tsconfig.json index 56a9af7..fcb3b0b 100644 --- a/packages/polkabot-api/tsconfig.json +++ b/packages/polkabot-api/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "../../tsconfig.base.json", + "extends": "../../tsconfig.json", "compilerOptions": { "outDir": "./build" }, diff --git a/packages/polkabot-api/typedoc.js b/packages/polkabot-api/typedoc.js new file mode 100644 index 0000000..7aecd1e --- /dev/null +++ b/packages/polkabot-api/typedoc.js @@ -0,0 +1,9 @@ +const name = 'PolkaBOT API' + +let base = require('../../typedoc'); +const folder = name.toLowerCase().replace(/ /g, '-') +module.exports = { + ...base, + name, + out: '../../public/doc/' + folder, +}; diff --git a/packages/polkabot-api/typedoc.json b/packages/polkabot-api/typedoc.json deleted file mode 100644 index 57c7280..0000000 --- a/packages/polkabot-api/typedoc.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "name": "PolkaBOT-api", - "mode": "modules", - "out": "../../public/doc/polkabot-api", - "theme": "default", - "ignoreCompilerErrors": "false", - "preserveConstEnums": "true", - "exclude": "*.spec.ts", - "stripInternal": "false" - } \ No newline at end of file diff --git a/packages/polkabot-plugin-blockstats/typedoc.js b/packages/polkabot-plugin-blockstats/typedoc.js new file mode 100644 index 0000000..1972c18 --- /dev/null +++ b/packages/polkabot-plugin-blockstats/typedoc.js @@ -0,0 +1,9 @@ +const name = 'PolkaBOT Plugin Blockstats' + +let base = require('../../typedoc'); +const folder = name.toLowerCase().replace(/ /g, '-') +module.exports = { + ...base, + name, + out: '../../public/doc/' + folder, +}; diff --git a/packages/polkabot-plugin-blockstats/typedoc.json b/packages/polkabot-plugin-blockstats/typedoc.json deleted file mode 100644 index 105b4e4..0000000 --- a/packages/polkabot-plugin-blockstats/typedoc.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "name": "PolkaBOT plugin: Blockstats", - "mode": "modules", - "out": "../../public/doc/polkabot-blockstats", - "theme": "default", - "ignoreCompilerErrors": "false", - "preserveConstEnums": "true", - "exclude": "*.spec.ts", - "stripInternal": "false" - } \ No newline at end of file diff --git a/packages/polkabot-plugin-blocthday/src/commandSet.ts b/packages/polkabot-plugin-blocthday/src/commandSet.ts deleted file mode 100644 index 4e3af64..0000000 --- a/packages/polkabot-plugin-blocthday/src/commandSet.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { PluginCommandSet } from '@polkabot/api/src/plugin.interface'; -import Blocthday from '.'; - -export default function getCommandSet(ref: Blocthday): PluginCommandSet { - return { - name: 'Blocthday', - alias: 'bday', - commands: [ - { - name: 'status', - description: 'Show status of the bday plugin', - argsRegexp: '', - adminOnly: false, - handler: ref.cmdStatus - } - ] - }; -} diff --git a/packages/polkabot-plugin-blocthday/src/index.ts b/packages/polkabot-plugin-blocthday/src/index.ts index 2aca8e8..302d8f0 100644 --- a/packages/polkabot-plugin-blocthday/src/index.ts +++ b/packages/polkabot-plugin-blocthday/src/index.ts @@ -1,38 +1,10 @@ import BN from 'bn.js'; -import { - NotifierMessage, - NotifierSpecs, - PluginModule, - PluginContext, - CommandHandlerOutput, - Controllable, - Room, - PluginCommand, - PluginCommandSet, -} from '@polkabot/api/src/plugin.interface'; import { PolkabotWorker } from '@polkabot/api/src/PolkabotWorker'; import { HeaderExtended } from '@polkadot/api-derive/type'; -// import getCommandSet from './commandSet'; import { Command, Callable } from '@polkabot/api/src/decorators'; -import { CallableMetas } from '@polkabot/api/src/types'; - -// const log = (originalConstructor: new(...args: any[]) => T) => { -// function newConstructor(... args) { -// console.log('Arguments: ', args.join(', ')); -// new originalConstructor(args); -// } -// newConstructor.prototype = originalConstructor.prototype; -// return newConstructor; -// }; - -function trace(ctor: Function): void { - console.log('trace on ' + ctor.constructor.name); -} +import { CallableMetas, Controllable, PluginCommand, PluginModule, PluginContext, PluginCommandSet, Room, CommandHandlerOutput, NotifierMessage, NotifierSpecs } from '@polkabot/api/src/types'; // @Configured(['NB_BLOCKS']) -@trace -// @deco -// @deco2('yo') @Callable({ name: 'Blocthday', alias: 'bday' }) export default class Blocthday extends PolkabotWorker implements Controllable { private NB_BLOCKS: number; diff --git a/packages/polkabot-plugin-blocthday/tsconfig.json b/packages/polkabot-plugin-blocthday/tsconfig.json index 6f1fd88..2483e4d 100644 --- a/packages/polkabot-plugin-blocthday/tsconfig.json +++ b/packages/polkabot-plugin-blocthday/tsconfig.json @@ -1,12 +1,10 @@ { - "extends": "../../tsconfig.base.json", + "extends": "../../tsconfig.json", "compilerOptions": { "outDir": "./dist", - "paths": { "Command": ["polkabot-api/src/decorators"], "Callable": ["polkabot-api/src/decorators"], - }, }, "include": ["./bin/**/*", "./src/**/*", "./test/**/*", "./package.json"], diff --git a/packages/polkabot-plugin-blocthday/typedoc.js b/packages/polkabot-plugin-blocthday/typedoc.js new file mode 100644 index 0000000..0a24e0d --- /dev/null +++ b/packages/polkabot-plugin-blocthday/typedoc.js @@ -0,0 +1,9 @@ +const name = 'PolkaBOT Plugin Blocthday' + +let base = require('../../typedoc'); +const folder = name.toLowerCase().replace(/ /g, '-') +module.exports = { + ...base, + name, + out: '../../public/doc/' + folder, +}; diff --git a/packages/polkabot-plugin-blocthday/typedoc.json b/packages/polkabot-plugin-blocthday/typedoc.json deleted file mode 100644 index ff9613d..0000000 --- a/packages/polkabot-plugin-blocthday/typedoc.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "name": "PolkaBOT plugin: Blocthday", - "out": "../../public/doc/polkabot-blocthday", - "theme": "default", - "ignoreCompilerErrors": "false", - "preserveConstEnums": "true", - "exclude": "*.spec.ts", - "stripInternal": "false" - } \ No newline at end of file diff --git a/packages/polkabot-plugin-notifier-matrix/src/commandSet.ts b/packages/polkabot-plugin-notifier-matrix/src/commandSet.ts deleted file mode 100644 index aa23b68..0000000 --- a/packages/polkabot-plugin-notifier-matrix/src/commandSet.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { PluginCommandSet } from '@polkabot/api/src/plugin.interface'; -import MatrixNotifier from '.'; - -export default function getCommandSet(ref: MatrixNotifier): PluginCommandSet { - return { - name: 'MatrixNotifier', - alias: 'matrix', - commands: [ - { - name: 'say', - description: 'Show say something in the channel', - argsRegexp: '', - adminOnly: true, - handler: ref.cmdSay - } - ] - }; -} diff --git a/packages/polkabot-plugin-notifier-matrix/src/index.ts b/packages/polkabot-plugin-notifier-matrix/src/index.ts index ba97a42..0f8fcd0 100644 --- a/packages/polkabot-plugin-notifier-matrix/src/index.ts +++ b/packages/polkabot-plugin-notifier-matrix/src/index.ts @@ -1,21 +1,14 @@ -import { - NotifierMessage, - NotifierSpecs, - PluginModule, - PluginContext, - Room, - CommandHandlerOutput, - ErrorCode -} from '../../polkabot-api/src/plugin.interface'; import { PolkabotNotifier } from '../../polkabot-api/src/PolkabotNotifier'; -// import getCommandSet from './commandSet'; +import { PluginModule, PluginContext, NotifierMessage, NotifierSpecs, CommandHandlerOutput, ErrorCode, Room } from '../../polkabot-api/src/types'; +import { Callable, Command } from '../../polkabot-api/src/decorators'; +@Callable() export default class MatrixNotifier extends PolkabotNotifier { public channel = 'matrix'; public constructor(mod: PluginModule, context: PluginContext, config?) { super(mod, context, config); // this.context.logger.info("++MatrixNotifier", this); - + // TODO: add decorators to bring that back // this.commandSet = getCommandSet(this); } @@ -27,12 +20,13 @@ export default class MatrixNotifier extends PolkabotNotifier { this.context.matrix.sendTextMessage(roomId, message.message).finally(null); } - + + @Command() public cmdSay(_event, room: Room, messages: string[]): CommandHandlerOutput { this.context.logger.debug('MatrixNotifier.cmdSay()'); - + const roomId = this.context.config.Get('MATRIX', 'ROOM_ID'); - + this.context.matrix.sendTextMessage(roomId, { message: messages.join(' ') }); return { diff --git a/packages/polkabot-plugin-notifier-matrix/typedoc.js b/packages/polkabot-plugin-notifier-matrix/typedoc.js new file mode 100644 index 0000000..235f577 --- /dev/null +++ b/packages/polkabot-plugin-notifier-matrix/typedoc.js @@ -0,0 +1,9 @@ +const name = 'PolkaBOT Plugin Notifier Matrix' + +let base = require('../../typedoc'); +const folder = name.toLowerCase().replace(/ /g, '-') +module.exports = { + ...base, + name, + out: '../../public/doc/' + folder, +}; diff --git a/packages/polkabot-plugin-notifier-matrix/typedoc.json b/packages/polkabot-plugin-notifier-matrix/typedoc.json deleted file mode 100644 index 5ff87de..0000000 --- a/packages/polkabot-plugin-notifier-matrix/typedoc.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "name": "PolkaBOT plugin: Matrix Notifier", - "mode": "modules", - "out": "../../public/doc/polkabot-notifier-matrix", - "theme": "default", - "ignoreCompilerErrors": "false", - "preserveConstEnums": "true", - "exclude": "*.spec.ts", - "stripInternal": "false" - } \ No newline at end of file diff --git a/packages/polkabot-plugin-notifier-twitter/src/index.ts b/packages/polkabot-plugin-notifier-twitter/src/index.ts index ec056d5..36a8227 100644 --- a/packages/polkabot-plugin-notifier-twitter/src/index.ts +++ b/packages/polkabot-plugin-notifier-twitter/src/index.ts @@ -1,10 +1,5 @@ -import { - NotifierMessage, - NotifierSpecs, - PluginModule, - PluginContext -} from '../../polkabot-api/src/plugin.interface'; import { PolkabotNotifier } from '../../polkabot-api/src/PolkabotNotifier'; +import { PluginModule, PluginContext, NotifierMessage, NotifierSpecs } from '../../polkabot-api/src/types'; export default class TwitterNotifier extends PolkabotNotifier { public channel = 'twitter'; diff --git a/packages/polkabot-plugin-notifier-twitter/typedoc.js b/packages/polkabot-plugin-notifier-twitter/typedoc.js new file mode 100644 index 0000000..c3bb653 --- /dev/null +++ b/packages/polkabot-plugin-notifier-twitter/typedoc.js @@ -0,0 +1,9 @@ +const name = 'PolkaBOT Plugin Notifier Twitter' + +let base = require('../../typedoc'); +const folder = name.toLowerCase().replace(/ /g, '-') +module.exports = { + ...base, + name, + out: '../../public/doc/' + folder, +}; diff --git a/packages/polkabot-plugin-notifier-twitter/typedoc.json b/packages/polkabot-plugin-notifier-twitter/typedoc.json deleted file mode 100644 index 2b04aa8..0000000 --- a/packages/polkabot-plugin-notifier-twitter/typedoc.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "name": "PolkaBOT plugin: Twitter Notifier", - "mode": "modules", - "out": "../../public/doc/polkabot-notifier-twitter", - "theme": "default", - "ignoreCompilerErrors": "false", - "preserveConstEnums": "true", - "exclude": "*.spec.ts", - "stripInternal": "false" - } \ No newline at end of file diff --git a/packages/polkabot-plugin-operator/package.json b/packages/polkabot-plugin-operator/package.json index 3b90d95..92b17aa 100644 --- a/packages/polkabot-plugin-operator/package.json +++ b/packages/polkabot-plugin-operator/package.json @@ -31,7 +31,7 @@ "mocha": "^6.1.4", "nyc": "^15.0.0", "ts-node": "^8.3.0", - "typescript": "^3.5.3" + "typescript": "^3.9.3" }, "repository": { "type": "git", diff --git a/packages/polkabot-plugin-operator/src/commandSet.ts b/packages/polkabot-plugin-operator/src/commandSet.ts index 7bc005b..a68b68d 100644 --- a/packages/polkabot-plugin-operator/src/commandSet.ts +++ b/packages/polkabot-plugin-operator/src/commandSet.ts @@ -1,25 +1,25 @@ -import { PluginCommandSet } from '@polkabot/api/src/plugin.interface'; -import Operator from '.'; +// import { PluginCommandSet } from '@polkabot/api/src/plugin.interface'; +// import Operator from '.'; -export default function getCommandSet(ref: Operator): PluginCommandSet { - return { - name: 'Operator', - alias: 'op', - commands: [ - { - name: 'status', - description: 'Show status of the op plugin', - argsRegexp: '', - adminOnly: false, - handler: ref.cmdStatus - }, - { - name: 'help', - description: 'Show some help', - argsRegexp: '', - adminOnly: false, - handler: ref.cmdHelp - } - ] - }; -} +// export default function getCommandSet(ref: Operator): PluginCommandSet { +// return { +// name: 'Operator', +// alias: 'op', +// commands: [ +// { +// name: 'status', +// description: 'Show status of the op plugin', +// argsRegexp: '', +// adminOnly: false, +// handler: ref.cmdStatus +// }, +// { +// name: 'help', +// description: 'Show some help', +// argsRegexp: '', +// adminOnly: false, +// handler: ref.cmdHelp +// } +// ] +// }; +// } diff --git a/packages/polkabot-plugin-operator/src/helpers.ts b/packages/polkabot-plugin-operator/src/helpers.ts index 692f321..b484e60 100644 --- a/packages/polkabot-plugin-operator/src/helpers.ts +++ b/packages/polkabot-plugin-operator/src/helpers.ts @@ -1,4 +1,3 @@ - /** * Parse a given message to figure out whether the user needs help * @param msg the message to parse @@ -15,6 +14,15 @@ export function isHelpNeeded(msg: string): boolean { * The Operator used to be able to contact the bot but this * is nowadays more complicated as e2e is enabled by default in clients such as Riot. */ -export function contactOperator() { +export function contactOperator(): void { throw new Error('Not implemented'); +} + +/** + * Capitalize the first char of a string + * @param s The string to captitalize + */ +export function capitalize(s: string): string { + if (typeof s !== 'string') return ''; + return s.charAt(0).toUpperCase() + s.slice(1); } \ No newline at end of file diff --git a/packages/polkabot-plugin-operator/src/index.ts b/packages/polkabot-plugin-operator/src/index.ts index 4099b23..776c3ea 100644 --- a/packages/polkabot-plugin-operator/src/index.ts +++ b/packages/polkabot-plugin-operator/src/index.ts @@ -1,32 +1,11 @@ -#!/usr/bin/env node -import { - PluginModule, - PluginContext, - CommandHandlerOutput, - BotCommand, - Controllable, - PluginCommand, - Room, - Event, - SenderId, - RoomId, - PluginCommandSet, -} from '@polkabot/api/src/plugin.interface'; import moment from 'moment'; -// import getCommandSet from './commandSet'; import { PolkabotChatbot } from '@polkabot/api/src/PolkabotChatbot'; import MatrixHelper from './matrix-helper'; import { packageJson } from 'package-json'; import { assert } from '@polkadot/util'; import { OperatorParams } from './types'; -import { isHelpNeeded } from './helpers'; -import { CallableMetas, MatrixEventType } from '@polkabot/api/src/types'; - -const capitalize: (string) => string = (s: string) => { - if (typeof s !== 'string') return ''; - return s.charAt(0).toUpperCase() + s.slice(1); -}; - +import { isHelpNeeded, capitalize } from './helpers'; +import { Event, CallableMetas, MatrixEventType, Controllable, PluginCommand, PluginContext, PluginModule, PluginCommandSet, CommandHandlerOutput, BotCommand, SenderId, RoomId, Room } from '@polkabot/api/src/types'; import { Command, Callable } from '@polkabot/api/src/decorators'; @Callable() @@ -63,7 +42,6 @@ export default class Operator extends PolkabotChatbot implements Controllable { this.matrixHelper = new MatrixHelper(this.params); } - getCommandSet(): PluginCommandSet { const res: PluginCommandSet = { ...Operator.meta, commands: Operator.commands }; assert(res.name.length > 0, 'something went wrong'); diff --git a/packages/polkabot-plugin-operator/src/matrix-helper.ts b/packages/polkabot-plugin-operator/src/matrix-helper.ts index 11b0641..bfb7bf2 100644 --- a/packages/polkabot-plugin-operator/src/matrix-helper.ts +++ b/packages/polkabot-plugin-operator/src/matrix-helper.ts @@ -1,5 +1,5 @@ -import { RoomId, SenderId, Room } from '@polkabot/api/src/plugin.interface'; import { OperatorParams } from './types'; +import { RoomId, SenderId, Room } from '@polkabot/api/src/types'; export default class MatrixHelper { params: OperatorParams; diff --git a/packages/polkabot-plugin-operator/tsconfig.json b/packages/polkabot-plugin-operator/tsconfig.json index eb0cf5c..935c08c 100644 --- a/packages/polkabot-plugin-operator/tsconfig.json +++ b/packages/polkabot-plugin-operator/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "../../tsconfig.base.json", + "extends": "../../tsconfig.json", "compilerOptions": { "outDir": "./dist", }, diff --git a/packages/polkabot-plugin-operator/typedoc.js b/packages/polkabot-plugin-operator/typedoc.js new file mode 100644 index 0000000..d1be74e --- /dev/null +++ b/packages/polkabot-plugin-operator/typedoc.js @@ -0,0 +1,9 @@ +const name = 'PolkaBOT Plugin Operator' + +let base = require('../../typedoc'); +const folder = name.toLowerCase().replace(/ /g, '-') +module.exports = { + ...base, + name, + out: '../../public/doc/' + folder, +}; diff --git a/packages/polkabot-plugin-operator/typedoc.json b/packages/polkabot-plugin-operator/typedoc.json deleted file mode 100644 index ff545fd..0000000 --- a/packages/polkabot-plugin-operator/typedoc.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "name": "PolkaBOT plugin: Operator", - "mode": "modules", - "out": "../../public/doc/polkabot-operator", - "theme": "default", - "ignoreCompilerErrors": "false", - "preserveConstEnums": "true", - "exclude": "*.spec.ts", - "stripInternal": "false" - } \ No newline at end of file diff --git a/packages/polkabot-plugin-reporter/typedoc.js b/packages/polkabot-plugin-reporter/typedoc.js new file mode 100644 index 0000000..e6ca040 --- /dev/null +++ b/packages/polkabot-plugin-reporter/typedoc.js @@ -0,0 +1,9 @@ +const name = 'PolkaBOT Plugin Reported' + +let base = require('../../typedoc'); +const folder = name.toLowerCase().replace(/ /g, '-') +module.exports = { + ...base, + name, + out: '../../public/doc/' + folder, +}; diff --git a/packages/polkabot-plugin-reporter/typedoc.json b/packages/polkabot-plugin-reporter/typedoc.json deleted file mode 100644 index bfcdae2..0000000 --- a/packages/polkabot-plugin-reporter/typedoc.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "name": "PolkaBOT plugin: Reporter", - "mode": "modules", - "out": "../../public/doc/polkabot-reporter", - "theme": "default", - "ignoreCompilerErrors": "false", - "preserveConstEnums": "true", - "exclude": "*.spec.ts", - "stripInternal": "false" - } \ No newline at end of file diff --git a/packages/polkabot-plugin-stallwatcher/typedoc.js b/packages/polkabot-plugin-stallwatcher/typedoc.js new file mode 100644 index 0000000..1770273 --- /dev/null +++ b/packages/polkabot-plugin-stallwatcher/typedoc.js @@ -0,0 +1,9 @@ +const name = 'PolkaBOT Plugin Stallwatcher' + +let base = require('../../typedoc'); +const folder = name.toLowerCase().replace(/ /g, '-') +module.exports = { + ...base, + name, + out: '../../public/doc/' + folder, +}; diff --git a/packages/polkabot-plugin-stallwatcher/typedoc.json b/packages/polkabot-plugin-stallwatcher/typedoc.json deleted file mode 100644 index 28c7336..0000000 --- a/packages/polkabot-plugin-stallwatcher/typedoc.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "name": "PolkaBOT plugin: Stallwatcher", - "mode": "modules", - "out": "../../public/doc/polkabot-stallwatcher", - "theme": "default", - "ignoreCompilerErrors": "false", - "preserveConstEnums": "true", - "exclude": "*.spec.ts", - "stripInternal": "false" - } \ No newline at end of file diff --git a/packages/polkabot/package.json b/packages/polkabot/package.json index d781d8c..be40cec 100644 --- a/packages/polkabot/package.json +++ b/packages/polkabot/package.json @@ -69,7 +69,7 @@ "snazzy": "^8.0.0", "standard": "14.3.3", "ts-node": "^8.9.0", - "typescript": "^3.9.2", + "typescript": "^3.9.3", "yarn": "^1.22.4" }, "standard": { diff --git a/packages/polkabot/src/index.ts b/packages/polkabot/src/index.ts index b1c4751..4763b0c 100644 --- a/packages/polkabot/src/index.ts +++ b/packages/polkabot/src/index.ts @@ -1,37 +1,27 @@ import { ApiPromise, WsProvider } from '@polkadot/api'; -import minimongo, { MemoryDb } from 'minimongo'; +import minimongo from 'minimongo'; import Datastore from 'nedb'; import pkg from '../package.json'; import PluginScanner from './lib/plugin-scanner'; import PluginLoader from './lib/plugin-loader'; import sdk from 'matrix-js-sdk'; // must be after adding olm to global - import { ConfigManager, ConfigObject } from 'confmgr'; import { assert } from '@polkadot/util'; -import { - PluginContext, - PolkabotPlugin, - NotifierMessage, - NotifierSpecs, - PluginModule, - Controllable, - Type, - MatrixClient, - RoomMember, - Event, -} from '../../polkabot-api/src/plugin.interface'; -import { PolkabotNotifier } from '../../polkabot-api/src/PolkabotNotifier'; -import { PolkabotChatbot } from '../../polkabot-api/src/PolkabotChatbot'; -import { PolkabotWorker } from '../../polkabot-api/src/PolkabotWorker'; -import LoggerSingleton, { winston } from '../../polkabot-api/src/logger'; -import { routeMatrixLogger } from './lib/helpers'; +import { routeMatrixLogger } from './lib/matrix-helpers'; import { NotifiersTable } from './types'; +import { PolkabotChatbot, PolkabotNotifier, MatrixClient, Controllable, PolkabotPlugin, NotifierMessage, NotifierSpecs, PluginModule, PluginContext, RoomMember, winston } from '@polkabot/api/src'; +import LoggerSingleton from '@polkabot/api/src/LoggerFactory'; +import { isControllable, isWorker, isNotifier, isChatBot } from './lib/type-helpers'; const Logger = LoggerSingleton.getInstance(); routeMatrixLogger(Logger); +/** + * This is the main Polkabot class. It discovers the available plugins. + * It takes care of connecting and creating various resources and sharing that + * with the plugins. It also links all plugins together depending on their types. + */ export default class Polkabot { - // private args: any; private db: minimongo.MemoryDb; private config: ConfigObject; private matrix: MatrixClient; @@ -42,31 +32,12 @@ export default class Polkabot { private Logger: winston.Logger; public constructor(..._args: string[]) { - // this.args = args this.db = new Datastore({ filename: 'polkabot.db' }); } - private isWorker(candidate: PolkabotPlugin): candidate is PolkabotWorker { - return (candidate as PolkabotWorker).start !== undefined; - } - - private isNotifier(candidate: PolkabotPlugin): candidate is PolkabotNotifier { - return (candidate as PolkabotNotifier).notify !== undefined; - } - - private isControllable(candidate: PolkabotPlugin): boolean { - const res = (candidate as unknown as Controllable).getCommandSet !== undefined; - // assert(candidate.package.name !== "polkabot-plugin-blocthday" || res, "BUG!"); - return res; - } - - private isChatBot(candidate: PolkabotPlugin): candidate is PolkabotChatbot { - return (candidate as PolkabotChatbot).type === Type.Chatbot; - } - - /** this method is usually called by the workers who wish to notify something - * polkabot itself does nothing about it. it searches in the list of notifiers which one(s) can do the job and - * delegate them the task + /** This method is called by any plugin that wishes to notify about something. + * Polkabot itself does nothing about it. Instead it searches in the list of notifiers which one(s) can do the job and + * delegate the task to those. */ public notify(message: NotifierMessage, specs: NotifierSpecs): void { Logger.info('Notifier requested', message, specs); @@ -80,7 +51,10 @@ export default class Polkabot { }); } - /** This adds a new notifier to those Polkabot is aware of */ + /** + * This adds a new notifier to those Polkabot is aware of + * @param notifier + */ private registerNotifier(notifier: PolkabotNotifier): void { assert(notifier.channel, 'No channel defined'); const channel = notifier.channel; @@ -89,19 +63,28 @@ export default class Polkabot { Logger.silly('notifierTable %j', this.notifiersTable); } - /** Register all the Controllable we find. They will be passed to the Operator. */ + /** + * Register a Controllable. The Controllable will be passed to the Operator. + * @param controllable + */ private registerControllable(controllable: Controllable): void { assert(controllable.getCommandSet().commands.length, 'No commands defined'); Logger.debug('Registering controllable:', controllable.getCommandSet().name); this.controllablePlugins.push(controllable); - // Logger.info("Controllables", this.controllablePlugins); } + /** + * Register a new Chatbot such as Operator. + * @param bot + */ private registerChatbot(bot: PolkabotChatbot): void { Logger.info('Registering Chat bot:', bot.module.name); this.chatBots.push(bot); } + /** + * Finds, starts and register all the plugins that can be found. + */ private async loadPlugins(): Promise { // Logger.info('Loading plugins', { meta: { source: 'Polkabot' } }); Logger.info('Loading plugins'); @@ -140,21 +123,21 @@ export default class Polkabot { loads.push( PluginLoader.load(plugin, context).then((p: PolkabotPlugin) => { - if (this.isControllable(p)) { + if (isControllable(p)) { this.registerControllable(p as unknown as Controllable); } else Logger.debug(`▶ NOT Controllable: ${p.package.name}`); - if (this.isWorker(p)) { + if (isWorker(p)) { Logger.debug(`Starting worker plugin ${p.package.name} v${p.package.version}`); p.start(); } //else Logger.debug(`▶ NOT a Worker: ${p.package.name}`); - if (this.isNotifier(p)) { + if (isNotifier(p)) { Logger.debug(`Registering notifier plugin ${p.package.name} v${p.package.version}`); this.registerNotifier(p); } //else Logger.debug(`▶ NOT a Notifier: ${p.package.name}`); - if (this.isChatBot(p)) { + if (isChatBot(p)) { Logger.debug(`Registering ChatBot plugin ${p.package.name} v${p.package.version}`); this.registerChatbot(p); } // else Logger.debug(`▶ NOT a ChatBot: ${p.package.name}`); @@ -168,6 +151,9 @@ export default class Polkabot { }); } + /** + * Attach all the controllables to the Chatbot(s) + */ private attachControllableToBots(): void { Logger.debug('Passing controllables to following bots:'); this.chatBots.map((bot: PolkabotChatbot) => { @@ -176,6 +162,10 @@ export default class Polkabot { }); } + /** + * Starting Polkabot is mostly about finding and starting all the plugins. + * @param _syncState + */ private start(_syncState): void { this.loadPlugins() .then(_ => { @@ -186,6 +176,9 @@ export default class Polkabot { }); } + /** + * Connects to Polkadot and Matrix then start Polkabot. + */ public async run(): Promise { Logger.info(`${pkg.name} v${pkg.version}`); @@ -244,7 +237,7 @@ export default class Polkabot { }); // TODO: the following is not valid, it is not b/c we use another server than matrix.org that we need a password - // if (this.isCustomBaseUrl()) { + // if (isCustomBaseUrl(this.config.values.MATRIX.BASE_URL)) { // const data = await this.matrix // .login('m.login.password', { // user: this.config.values.MATRIX.LOGIN_USER_ID, @@ -288,10 +281,4 @@ export default class Polkabot { // this.matrix.startClient({ initialSyncLimit: this.config.values.MATRIX.MESSAGES_TO_SHOW }); this.matrix.startClient({ initialSyncLimit: 3 }); } - - private isCustomBaseUrl(): boolean { - const baseUrl = this.config.values.MATRIX.BASE_URL; - return baseUrl && baseUrl !== 'https://matrix.org'; - } } - diff --git a/packages/polkabot/src/lib/helpers.ts b/packages/polkabot/src/lib/matrix-helpers.ts similarity index 82% rename from packages/polkabot/src/lib/helpers.ts rename to packages/polkabot/src/lib/matrix-helpers.ts index f56d69e..9452952 100644 --- a/packages/polkabot/src/lib/helpers.ts +++ b/packages/polkabot/src/lib/matrix-helpers.ts @@ -1,4 +1,4 @@ -import { winston } from '../../../polkabot-api/src/logger'; +import { winston } from '../../../polkabot-api/src/LoggerFactory'; import { logger as mxLogger } from 'matrix-js-sdk/lib/logger'; /** @@ -19,3 +19,10 @@ export function routeMatrixLogger(logger: winston.Logger): void { mxLogger.trace = (...msg) => logger.log({ level: 'silly', message: msg.join(' '), labels: { label: 'MatrixSDK' } }); mxLogger.debug = (...msg) => logger.log({ level: 'silly', message: msg.join(' '), labels: { label: 'MatrixSDK' } }); } + +/** + * Returns whether the URL points to a custom matrix server. + */ +export function isCustomBaseUrl(baseUrl: string): boolean { + return baseUrl && baseUrl !== 'https://matrix.org'; +} \ No newline at end of file diff --git a/packages/polkabot/src/lib/plugin-loader.ts b/packages/polkabot/src/lib/plugin-loader.ts index 544c0e8..d4bb9ce 100644 --- a/packages/polkabot/src/lib/plugin-loader.ts +++ b/packages/polkabot/src/lib/plugin-loader.ts @@ -1,14 +1,9 @@ /* eslint-disable @typescript-eslint/no-var-requires */ import * as fs from 'fs'; -import { - PluginModule, - PluginContext, - PolkabotPlugin, -} from '../../../polkabot-api/src/plugin.interface'; -import { PolkabotNotifier } from '../../../polkabot-api/src/PolkabotNotifier'; -import { PolkabotWorker } from '../../../polkabot-api/src/PolkabotWorker'; -import { PolkabotChatbot } from '../../../polkabot-api/src/PolkabotChatbot'; -import LoggerSingleton from '../../../polkabot-api/src/logger'; +import { PolkabotWorker, PolkabotChatbot } from '@polkabot/api/src'; +import LoggerSingleton from '@polkabot/api/src/LoggerFactory'; +import { PluginModule, PluginContext, PolkabotPlugin } from '@polkabot/api/src/types'; +import { PolkabotNotifier } from '@polkabot/api/src/PolkabotNotifier'; const Logger = LoggerSingleton.getInstance(); diff --git a/packages/polkabot/src/lib/plugin-scanner.ts b/packages/polkabot/src/lib/plugin-scanner.ts index 512edb2..46b78ea 100644 --- a/packages/polkabot/src/lib/plugin-scanner.ts +++ b/packages/polkabot/src/lib/plugin-scanner.ts @@ -1,8 +1,8 @@ import * as path from 'path'; import * as fs from 'fs'; import findNodeModules from 'find-node-modules'; -import { PluginModule } from '../../../polkabot-api/src/plugin.interface'; -import LoggerSingleton from '../../../polkabot-api/src/logger'; +import LoggerSingleton from '@polkabot/api/src/LoggerFactory'; +import { PluginModule } from '@polkabot/api/src/types'; const Logger = LoggerSingleton.getInstance(); diff --git a/packages/polkabot/src/lib/type-helpers.ts b/packages/polkabot/src/lib/type-helpers.ts new file mode 100644 index 0000000..47250f9 --- /dev/null +++ b/packages/polkabot/src/lib/type-helpers.ts @@ -0,0 +1,19 @@ +import { PolkabotPlugin, Controllable, PluginType } from '@polkabot/api/src/types'; +import { PolkabotWorker, PolkabotNotifier, PolkabotChatbot } from '@polkabot/api/src'; + +export function isWorker(candidate: PolkabotPlugin): candidate is PolkabotWorker { + return (candidate as PolkabotWorker).start !== undefined; +} + +export function isNotifier(candidate: PolkabotPlugin): candidate is PolkabotNotifier { + return (candidate as PolkabotNotifier).notify !== undefined; +} + +export function isControllable(candidate: PolkabotPlugin): boolean { + const res = (candidate as unknown as Controllable).getCommandSet !== undefined; + return res; +} + +export function isChatBot(candidate: PolkabotPlugin): candidate is PolkabotChatbot { + return (candidate as PolkabotChatbot).type === PluginType.Chatbot; +} diff --git a/packages/polkabot/src/types.ts b/packages/polkabot/src/types.ts index fa0e93e..fc8d826 100644 --- a/packages/polkabot/src/types.ts +++ b/packages/polkabot/src/types.ts @@ -12,8 +12,11 @@ export interface EnvDictionnary { [key: string]: EnvVar; } -/** This interface describes how the Polkabot Config - * object looks like. */ +/** + * This interface describes the Polkabot Config. + * This is mostly a typescript helper, the config + * is managed by confmgr. + */ export interface PolkabotConfig { polkadot: { nodeName: string; // This is just for you to remember. i.e. 'Crash Override' diff --git a/packages/polkabot/tsconfig.json b/packages/polkabot/tsconfig.json index bc642a4..d9b9232 100644 --- a/packages/polkabot/tsconfig.json +++ b/packages/polkabot/tsconfig.json @@ -1,7 +1,12 @@ { - "extends": "../../tsconfig.base.json", + "extends": "../../tsconfig.json", "compilerOptions": { "outDir": "./build", + "baseUrl": ".", + "paths": { + "@polkabot/api": ["../polkabot-api/src"], + "@polkabot/api/*": ["../polkabot-api/src/*"], + } }, "include": ["./bin/**/*", "./src/**/*", "./test/**/*", "./package.json", "../polkabot-api/src/logger.ts"], } diff --git a/packages/polkabot/typedoc.js b/packages/polkabot/typedoc.js new file mode 100644 index 0000000..7a42938 --- /dev/null +++ b/packages/polkabot/typedoc.js @@ -0,0 +1,9 @@ +const name = 'PolkaBOT' + +let base = require('../../typedoc'); +const folder = name.toLowerCase().replace(/ /g, '-') +module.exports = { + ...base, + name, + out: '../../public/doc/' + folder, +}; diff --git a/packages/polkabot/typedoc.json b/packages/polkabot/typedoc.json deleted file mode 100644 index 0cd5f84..0000000 --- a/packages/polkabot/typedoc.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "name": "PolkaBOT", - "mode": "modules", - "out": "../../public/doc/polkabot", - "theme": "default", - "ignoreCompilerErrors": "false", - "preserveConstEnums": "true", - "exclude": "*.spec.ts", - "stripInternal": "false" - } \ No newline at end of file diff --git a/tsconfig.base.json b/tsconfig.base.json deleted file mode 100644 index 8deebaa..0000000 --- a/tsconfig.base.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "compilerOptions": { - "module": "commonjs", - "moduleResolution": "node", - "esModuleInterop": true, - "resolveJsonModule": true, - "allowJs": true, - "target": "es2015", - "noImplicitAny": false, - "sourceMap": true, - "preserveConstEnums": true, - "lib": ["es2015", "dom"], - "noUnusedLocals": false, - "noImplicitReturns": true, - "noImplicitThis": true, - "alwaysStrict": true, - "strictNullChecks": false, - "noUnusedParameters": false, - "pretty": true, - "allowUnreachableCode": false, - "experimentalDecorators": true, - "suppressImplicitAnyIndexErrors": true, - // "outDir": "./dist", - "baseUrl": "packages", - }, - "compileOnSave": true -} diff --git a/tsconfig.json b/tsconfig.json index fa37197..18d8489 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,10 +1,31 @@ { - "extends": "./tsconfig.base.json", - - "compilerOptions": { - "baseUrl": ".", - "paths": { - "@polkabot/*": ["packages/*/src"] - } - } - } \ No newline at end of file + "compilerOptions": { + "module": "commonjs", + "moduleResolution": "node", + "esModuleInterop": true, + "resolveJsonModule": true, + "allowJs": true, + "target": "es2015", + "noImplicitAny": false, + "sourceMap": true, + "preserveConstEnums": true, + "lib": ["es2015", "dom"], + "noUnusedLocals": false, + "noImplicitReturns": true, + "noImplicitThis": true, + "alwaysStrict": true, + "strictNullChecks": false, + "noUnusedParameters": false, + "pretty": true, + "allowUnreachableCode": false, + "experimentalDecorators": true, + "suppressImplicitAnyIndexErrors": true, + // "outDir": "./dist", + "baseUrl": ".", + "paths": { + "@polkabot/api": ["packages/polkabot-api/src"], + "@polkabot/api/*": ["packages/polkabot-api/src/*"], + } + }, + "compileOnSave": true +} diff --git a/typedoc.js b/typedoc.js new file mode 100644 index 0000000..ce0075c --- /dev/null +++ b/typedoc.js @@ -0,0 +1,14 @@ +module.exports = { + name: 'PolkaBOT', + exclude: '**/*+(index|e2e|spec|types).ts', + excludeExternals: true, + excludeNotExported: true, + excludePrivate: false, + excludeProtected: false, + hideGenerator: true, + includeDeclarations: false, + module: 'commonjs', + moduleResolution: 'node', + out: 'public/doc', + stripInternal: 'false' +}; \ No newline at end of file diff --git a/typedoc.json b/typedoc.json deleted file mode 100644 index 79b13f8..0000000 --- a/typedoc.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "name": "My Library", - "mode": "modules", - "out": "docs", - "theme": "default", - "ignoreCompilerErrors": "false", - "preserveConstEnums": "true", - "exclude": "*.spec.ts", - "external-modulemap": "packages\/.*", - "stripInternal": "false" - } \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index d427e52..e8f2b36 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1115,39 +1115,39 @@ dependencies: "@types/node" ">= 8" -"@polkadot/api-derive@1.14.1": - version "1.14.1" - resolved "https://registry.yarnpkg.com/@polkadot/api-derive/-/api-derive-1.14.1.tgz#3f3064af65bbb103b07a0986b97c76a40396e633" - integrity sha512-Qt+ijb+9WhDvBQM1ZJPSJKMchILY4/9pgGAMUcWZf9iC2nR9tOE8OG+OeFdzno43jspuZ8qUrkg5vapfZ/5/gQ== +"@polkadot/api-derive@1.15.1": + version "1.15.1" + resolved "https://registry.yarnpkg.com/@polkadot/api-derive/-/api-derive-1.15.1.tgz#8b08f3224bbe5e6156c27827c0f87d8e1973d5d9" + integrity sha512-QiCfWVwZP2NAOFb8qacoejDh6lKj6g0zwrJ0ZctORKxigL4PMiW1sStotNipL7fTOHNDWvwBIIEb1y3eCQ2GMg== dependencies: "@babel/runtime" "^7.9.6" - "@polkadot/api" "1.14.1" - "@polkadot/rpc-core" "1.14.1" - "@polkadot/rpc-provider" "1.14.1" - "@polkadot/types" "1.14.1" + "@polkadot/api" "1.15.1" + "@polkadot/rpc-core" "1.15.1" + "@polkadot/rpc-provider" "1.15.1" + "@polkadot/types" "1.15.1" "@polkadot/util" "^2.10.1" "@polkadot/util-crypto" "^2.10.1" - bn.js "^5.1.1" + bn.js "^5.1.2" memoizee "^0.4.14" rxjs "^6.5.5" -"@polkadot/api@1.14.1", "@polkadot/api@^1.14.1": - version "1.14.1" - resolved "https://registry.yarnpkg.com/@polkadot/api/-/api-1.14.1.tgz#14ce2e9365343a8c810335473f5ae9e028313ca0" - integrity sha512-8HKrDp8khcy41jaEcTbelLircEhT+tCGc0yX9rSij2N4oulpxdY8fWWaF2ipVr2GKpE2t6fjBPiZcVMCDwpu9g== +"@polkadot/api@1.15.1", "@polkadot/api@^1.15.1": + version "1.15.1" + resolved "https://registry.yarnpkg.com/@polkadot/api/-/api-1.15.1.tgz#cfb926e529a181e4234f9f4774fd72fa23fbae42" + integrity sha512-m4Je+RF6yU29VOd9SAiUgckdzFXmPgwOKPkk8C+CZSgvukGxqLs11LGRpPc3bhht2kdCUjcLaZY62+6iRZfuog== dependencies: "@babel/runtime" "^7.9.6" - "@polkadot/api-derive" "1.14.1" + "@polkadot/api-derive" "1.15.1" "@polkadot/keyring" "^2.10.1" - "@polkadot/metadata" "1.14.1" - "@polkadot/rpc-core" "1.14.1" - "@polkadot/rpc-provider" "1.14.1" - "@polkadot/types" "1.14.1" - "@polkadot/types-known" "1.14.1" + "@polkadot/metadata" "1.15.1" + "@polkadot/rpc-core" "1.15.1" + "@polkadot/rpc-provider" "1.15.1" + "@polkadot/types" "1.15.1" + "@polkadot/types-known" "1.15.1" "@polkadot/util" "^2.10.1" "@polkadot/util-crypto" "^2.10.1" - bn.js "^5.1.1" - eventemitter3 "^4.0.1" + bn.js "^5.1.2" + eventemitter3 "^4.0.4" rxjs "^6.5.5" "@polkadot/keyring@^2.10.1": @@ -1159,67 +1159,67 @@ "@polkadot/util" "2.10.1" "@polkadot/util-crypto" "2.10.1" -"@polkadot/metadata@1.14.1": - version "1.14.1" - resolved "https://registry.yarnpkg.com/@polkadot/metadata/-/metadata-1.14.1.tgz#3746ab1cd43f551e1a9c64478b95baae98ac7849" - integrity sha512-nehxg81vcjSay5ScIwASNzM6Li59M0BR3g57hVkkj4uAbvu4bOEZ92dnQuGKbfzMmEQtvLfDdw/iDPqzCgxyGg== +"@polkadot/metadata@1.15.1": + version "1.15.1" + resolved "https://registry.yarnpkg.com/@polkadot/metadata/-/metadata-1.15.1.tgz#d3bffb4530f422c934980081729f999d54c70649" + integrity sha512-sWVd7Vsj9d/5xB/C6H2Yitfl1RMjNniUwzioy2DEa5pYpfHZ7QYJEZ3LpARLHZnoJlfouOo2+NNYniCFfo6DAA== dependencies: "@babel/runtime" "^7.9.6" - "@polkadot/types" "1.14.1" - "@polkadot/types-known" "1.14.1" + "@polkadot/types" "1.15.1" + "@polkadot/types-known" "1.15.1" "@polkadot/util" "^2.10.1" "@polkadot/util-crypto" "^2.10.1" - bn.js "^5.1.1" + bn.js "^5.1.2" -"@polkadot/rpc-core@1.14.1": - version "1.14.1" - resolved "https://registry.yarnpkg.com/@polkadot/rpc-core/-/rpc-core-1.14.1.tgz#b9af6102d94d4f3f993e8f5000a5a8243cfa382c" - integrity sha512-GxZlnxO4ocwaMKdfHgAc7/fvH5nLqZ1AdR9xKkqyR2t3MVjQozB2NeJi99mmZ093AhYHKvGmaBtu38CVTO8Sxg== +"@polkadot/rpc-core@1.15.1": + version "1.15.1" + resolved "https://registry.yarnpkg.com/@polkadot/rpc-core/-/rpc-core-1.15.1.tgz#fe21c37ce6ddc565abb3cdeb49f45349eee7e5ef" + integrity sha512-N/bwpaYSs1qBfKxmeKRTrCzgY13NQ0SAtzSxczA1nKLgkpCGgcSkJPyOdlmBA/hSQabB5GO6CDfrIaS0cNqe2A== dependencies: "@babel/runtime" "^7.9.6" - "@polkadot/metadata" "1.14.1" - "@polkadot/rpc-provider" "1.14.1" - "@polkadot/types" "1.14.1" + "@polkadot/metadata" "1.15.1" + "@polkadot/rpc-provider" "1.15.1" + "@polkadot/types" "1.15.1" "@polkadot/util" "^2.10.1" memoizee "^0.4.14" rxjs "^6.5.5" -"@polkadot/rpc-provider@1.14.1": - version "1.14.1" - resolved "https://registry.yarnpkg.com/@polkadot/rpc-provider/-/rpc-provider-1.14.1.tgz#4f243d7991fdd9fe0317aa5d42a1b29379acff1e" - integrity sha512-bp1EVLYVculRwcxKGlNxi1CWdsCEal9rtwMryOu5jw637Lpm23N1xq5vrX/pVQB2DzytvmuBJeUsf7DdgHEVAg== +"@polkadot/rpc-provider@1.15.1": + version "1.15.1" + resolved "https://registry.yarnpkg.com/@polkadot/rpc-provider/-/rpc-provider-1.15.1.tgz#1d763bc7c1dfe0b7d13335bf85506c83e20c675f" + integrity sha512-WaVZ5fjacPtiAEI6W3rrDV3KJtjSgmoKQxKCgZUH06kFYAFBBM/2GvKqdvFlQ2bh57QrcLZPuia55yzSAGUjfQ== dependencies: "@babel/runtime" "^7.9.6" - "@polkadot/metadata" "1.14.1" - "@polkadot/types" "1.14.1" + "@polkadot/metadata" "1.15.1" + "@polkadot/types" "1.15.1" "@polkadot/util" "^2.10.1" "@polkadot/util-crypto" "^2.10.1" - bn.js "^5.1.1" - eventemitter3 "^4.0.1" + bn.js "^5.1.2" + eventemitter3 "^4.0.4" isomorphic-fetch "^2.2.1" websocket "^1.0.31" -"@polkadot/types-known@1.14.1": - version "1.14.1" - resolved "https://registry.yarnpkg.com/@polkadot/types-known/-/types-known-1.14.1.tgz#4bafa1159ed3ac50bd043643dce0eeb44fa31157" - integrity sha512-fqde3QavX1z+xIra1D6cObf36ATbK5rCcwG2vQU3YXV3NIHYIqQ6CO79TaybKsxx+Sv7ygy4j13G2rSdLqSuXQ== +"@polkadot/types-known@1.15.1": + version "1.15.1" + resolved "https://registry.yarnpkg.com/@polkadot/types-known/-/types-known-1.15.1.tgz#d785c51f125702fba7a60849fdefa2a534ed1b32" + integrity sha512-8qvMLCgJJMWXIbJ6QjjhLUB/sKyzsNGLUwoiKf2doaYa4ATfZoNv9jygKLkfogFmQ2HD1y+G6vpK1s79CB5InQ== dependencies: "@babel/runtime" "^7.9.6" - "@polkadot/types" "1.14.1" + "@polkadot/types" "1.15.1" "@polkadot/util" "^2.10.1" - bn.js "^5.1.1" + bn.js "^5.1.2" -"@polkadot/types@1.14.1": - version "1.14.1" - resolved "https://registry.yarnpkg.com/@polkadot/types/-/types-1.14.1.tgz#1854b74eec76af5ead1be6444e553c945c7c537a" - integrity sha512-Q3JIlAXMVWNGjsdWG0xnhone/1uj7R3vWFjft+cweNs40/tUalY6AbyBZ29XTU8WPEmmUspprQ5YmujhHtZg8Q== +"@polkadot/types@1.15.1": + version "1.15.1" + resolved "https://registry.yarnpkg.com/@polkadot/types/-/types-1.15.1.tgz#68ac9c420db74273b26812d4c7960f8a32b6b8d5" + integrity sha512-k4Yhv5TV+K9ubwXYgxm/k5Ml8IIsenCVNhhEn+1Ym5lnr+zKaDhwpjNWrqp3xabktiikkUQnnYLVY9rP3pV23Q== dependencies: "@babel/runtime" "^7.9.6" - "@polkadot/metadata" "1.14.1" + "@polkadot/metadata" "1.15.1" "@polkadot/util" "^2.10.1" "@polkadot/util-crypto" "^2.10.1" "@types/bn.js" "^4.11.6" - bn.js "^5.1.1" + bn.js "^5.1.2" memoizee "^0.4.14" rxjs "^6.5.5" @@ -2574,6 +2574,11 @@ bn.js@^4.11.8, bn.js@^4.4.0: resolved "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" integrity sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA== +bn.js@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.1.2.tgz#c9686902d3c9a27729f43ab10f9d79c2004da7b0" + integrity sha512-40rZaf3bUNKTVYu9sIeeEGOg7g14Yvnj9kH7b50EiwX0Q7A6umbvfI5tvHaOERH0XigqKkfLkFQxzb4e6CIXnA== + bowser@^0.7.1: version "0.7.3" resolved "https://registry.npmjs.org/bowser/-/bowser-0.7.3.tgz#4fc0cb4e0e2bdd9b394df0d2038c32c2cc2712c8" @@ -4427,7 +4432,7 @@ eventemitter3@^3.1.0: resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.2.tgz#2d3d48f9c346698fce83a85d7d664e98535df6e7" integrity sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q== -eventemitter3@^4.0.1: +eventemitter3@^4.0.4: version "4.0.4" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.4.tgz#b5463ace635a083d018bdc7c917b4c5f10a85384" integrity sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ== @@ -9818,15 +9823,10 @@ typedoc@^0.17.6: shelljs "^0.8.4" typedoc-default-themes "^0.10.1" -typescript@^3.5.3, typescript@^3.8.3: - version "3.8.3" - resolved "https://registry.npmjs.org/typescript/-/typescript-3.8.3.tgz#409eb8544ea0335711205869ec458ab109ee1061" - integrity sha512-MYlEfn5VrLNsgudQTVJeNaQFUAI7DkhnOjdpAp4T+ku1TfQClewlbSuTVHiA+8skNBgaf02TL/kLOvig4y3G8w== - -typescript@^3.9.2: - version "3.9.2" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.2.tgz#64e9c8e9be6ea583c54607677dd4680a1cf35db9" - integrity sha512-q2ktq4n/uLuNNShyayit+DTobV2ApPEo/6so68JaD5ojvc/6GClBipedB9zNWYxRSAlZXAe405Rlijzl6qDiSw== +typescript@^3.8.3, typescript@^3.9.3: + version "3.9.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.3.tgz#d3ac8883a97c26139e42df5e93eeece33d610b8a" + integrity sha512-D/wqnB2xzNFIcoBG9FG8cXRDjiqSTbG2wd8DMZeQyJlP1vfTkIxH4GKveWaEBYySKIg+USu+E+EDIR47SqnaMQ== uc.micro@^1.0.1, uc.micro@^1.0.5: version "1.0.6" -- GitLab From edb1dbd9a9fa80c495d83e0dfa5075d1a39659cd Mon Sep 17 00:00:00 2001 From: chevdor Date: Mon, 25 May 2020 10:09:49 +0200 Subject: [PATCH 78/86] Fix doc generation and add to CI --- .gitlab-ci.yml | 60 +++++++------------ packages/polkabot-api/src/types.ts | 19 ++++++ .../polkabot-plugin-blockstats/src/index.ts | 7 +-- .../polkabot-plugin-reporter/src/index.ts | 21 +------ .../polkabot-plugin-stallwatcher/src/index.ts | 2 +- typedoc.js | 4 +- 6 files changed, 47 insertions(+), 66 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 0a9c086..e249f71 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -16,7 +16,7 @@ before_script: stages: - lint - # - test + - test - build # http://docs.gitlab.com/ce/ci/yaml/README.html#cache @@ -29,46 +29,32 @@ lint: script: - yarn lint -# Supported node versions can be found here: -# https://github.com/nodejs/LTS#lts_schedule -# test:node:7: -# image: node:7 -# script: -# - npm run build -# - npm test -# only: -# - $NIGHLTY - -# test:node:8: -# image: node:8 -# script: -# - npm run build -# - npm test - -# test:node:9: -# image: node:9 -# script: -# - npm run build -# - npm test -# only: -# - $NIGHLTY - -# test:node:10: -# image: node:10 -# script: -# - npm run build -# - npm test -# only: -# - $NIGHLTY +test:node:11: + image: node:11 + script: + # - yarn build + - yarn test + only: + - $NIGHLTY -# build: -# stage: build -# script: npm run build +build: + stage: build + script: yarn build -build:doc: +pages: stage: build - script: yarn build:doc + script: + - yarn build:doc + # only: + # refs: + # - master + # - tags + artifacts: + paths: + - public +after_script: + - echo "End CI" # build:docker: # image: docker:git # services: diff --git a/packages/polkabot-api/src/types.ts b/packages/polkabot-api/src/types.ts index a156a5c..094a9c8 100644 --- a/packages/polkabot-api/src/types.ts +++ b/packages/polkabot-api/src/types.ts @@ -191,3 +191,22 @@ export type NotifierMessage = export type NotifierSpecs = { notifiers: string[] | string; }; + +export enum Severity { + INFO, + WARNING, + IMPORTANT, + CRITICAL, +} + +export type Announcement = { + severity: Severity; + message: string; +}; + +export type BlockMoment = { + future: boolean; // is the block in the future + duration: number; // in/for how many seconds + date: Date; // what is the estimated date + message: string; // formated date string that will be removed +}; diff --git a/packages/polkabot-plugin-blockstats/src/index.ts b/packages/polkabot-plugin-blockstats/src/index.ts index 92e7ad2..964aff1 100644 --- a/packages/polkabot-plugin-blockstats/src/index.ts +++ b/packages/polkabot-plugin-blockstats/src/index.ts @@ -1,14 +1,9 @@ #!/usr/bin/env node import BN from 'bn.js'; -import { - NotifierMessage, - NotifierSpecs, - PluginModule, - PluginContext -} from '@polkabot/api/src/plugin.interface'; import { PolkabotWorker } from '@polkabot/api/src/PolkabotWorker'; import { HeaderExtended } from '@polkadot/api-derive/type'; +import { PluginModule, PluginContext, NotifierMessage, NotifierSpecs } from '@polkabot/api/src/types'; type Data = { tmsp: number; diff --git a/packages/polkabot-plugin-reporter/src/index.ts b/packages/polkabot-plugin-reporter/src/index.ts index ca16291..6ef73a5 100644 --- a/packages/polkabot-plugin-reporter/src/index.ts +++ b/packages/polkabot-plugin-reporter/src/index.ts @@ -1,27 +1,8 @@ import BN from 'bn.js'; import moment from 'moment'; -import { NotifierSpecs, PluginModule, PluginContext } from '@polkabot/api/src/plugin.interface'; import { PolkabotWorker } from '@polkabot/api/src/PolkabotWorker'; import blake2 from '@polkadot/util-crypto/blake2/asHex'; - -enum Severity { - INFO, - WARNING, - IMPORTANT, - CRITICAL, -} - -type Announcement = { - severity: Severity; - message: string; -}; - -type BlockMoment = { - future: boolean; // is the block in the future - duration: number; // in/for how many seconds - date: Date; // what is the estimated date - message: string; // formated date string that will be removed -}; +import { NotifierSpecs, PluginModule, PluginContext, BlockMoment, Announcement, Severity } from '@polkabot/api/src/types'; export default class Reporter extends PolkabotWorker { private cache: any; diff --git a/packages/polkabot-plugin-stallwatcher/src/index.ts b/packages/polkabot-plugin-stallwatcher/src/index.ts index df09d83..12427a4 100644 --- a/packages/polkabot-plugin-stallwatcher/src/index.ts +++ b/packages/polkabot-plugin-stallwatcher/src/index.ts @@ -1,7 +1,7 @@ #!/usr/bin/env node import BN from 'bn.js'; -import { PluginModule, PluginContext } from '@polkabot/api/src/plugin.interface'; import { PolkabotWorker } from '@polkabot/api/src/PolkabotWorker'; +import { PluginModule, PluginContext } from '@polkabot/api/src/types'; type StallWatcherConfig = { duration: number; diff --git a/typedoc.js b/typedoc.js index ce0075c..3e325ce 100644 --- a/typedoc.js +++ b/typedoc.js @@ -1,5 +1,5 @@ module.exports = { - name: 'PolkaBOT', + name: 'PolkaBOT Project', exclude: '**/*+(index|e2e|spec|types).ts', excludeExternals: true, excludeNotExported: true, @@ -9,6 +9,6 @@ module.exports = { includeDeclarations: false, module: 'commonjs', moduleResolution: 'node', - out: 'public/doc', + out: 'public/doc/main', stripInternal: 'false' }; \ No newline at end of file -- GitLab From 86505e999c3998a4df6763c97bc5be53df158145 Mon Sep 17 00:00:00 2001 From: chevdor Date: Mon, 25 May 2020 16:54:59 +0200 Subject: [PATCH 79/86] Fix related to the decorators adding static members --- packages/polkabot-api/src/PolkabotChatbot.ts | 30 ++++++++- packages/polkabot-api/src/decorators.ts | 30 +++++---- packages/polkabot-api/src/helpers.ts | 16 +++++ packages/polkabot-api/src/index.ts | 1 + packages/polkabot-api/src/types.ts | 5 +- packages/polkabot-api/test/decorators.spec.ts | 30 ++++----- .../polkabot-plugin-blocthday/src/index.ts | 32 +++++----- .../src/commandSet.ts | 25 -------- .../polkabot-plugin-operator/src/helpers.ts | 9 --- .../polkabot-plugin-operator/src/index.ts | 63 +++++++++---------- .../polkabot-plugin-reporter/src/index.ts | 36 ++++++----- .../polkabot-plugin-stallwatcher/src/index.ts | 28 ++++----- packages/polkabot/src/index.ts | 16 ++--- packages/polkabot/src/lib/plugin-loader.ts | 2 +- packages/polkabot/src/lib/type-helpers.ts | 9 ++- packages/polkabot/test/sample.spec.ts | 7 --- packages/polkabot/test/type-helpers.spec.ts | 23 +++++++ 17 files changed, 195 insertions(+), 167 deletions(-) create mode 100644 packages/polkabot-api/src/helpers.ts delete mode 100644 packages/polkabot-plugin-operator/src/commandSet.ts delete mode 100644 packages/polkabot/test/sample.spec.ts create mode 100644 packages/polkabot/test/type-helpers.spec.ts diff --git a/packages/polkabot-api/src/PolkabotChatbot.ts b/packages/polkabot-api/src/PolkabotChatbot.ts index 600f27a..feeceb4 100644 --- a/packages/polkabot-api/src/PolkabotChatbot.ts +++ b/packages/polkabot-api/src/PolkabotChatbot.ts @@ -1,6 +1,7 @@ import { PolkabotPluginBase } from './PolkabotPluginBase'; import LoggerSingleton from './LoggerFactory'; import { ChatBot, Controllable, PluginModule, PluginContext, PluginCommand, RoomAnswer, BotCommand, PluginType } from './types'; +import { getClass } from './helpers'; const Logger = LoggerSingleton.getInstance(); @@ -14,9 +15,10 @@ export abstract class PolkabotChatbot extends PolkabotPluginBase implements Chat Logger.debug('Registering controllables: '); controllables.map((ctrl: Controllable) => { + const CtrlClass = getClass(ctrl) as unknown as Controllable; // const commandObject: PluginCommandSet = (ctrl as Controllable).commandSet; - const commands: PluginCommand[] = ctrl.getCommandSet().commands; - Logger.debug(` ctrl: ${ctrl.getCommandSet().name} (!${ctrl.getCommandSet().alias}) ${commands.map(c => c.name)}`); + const commands: PluginCommand[] = CtrlClass.commands; + Logger.debug(` ctrl: ${CtrlClass.metas.name} (!${CtrlClass.metas.alias}) ${commands.map(c => c.name)}`); // Logger.info(commands.map(c => c.name)); }); this.controllables = controllables; @@ -68,4 +70,28 @@ export abstract class PolkabotChatbot extends PolkabotPluginBase implements Chat return null; } } + + /** This function takes a BotCommand and look for a plugin that can handle it. + * If a plugin is found, its information and handler are returned. + * If not, null is retuned. In that case it means we are not able to fullfill the request. + */ + public static matchCommand(controllables: Controllable[], cmd: BotCommand): PluginCommand | null { + // first we look if the module is known + const hits = controllables.filter((c: Controllable) => c.metas.alias === cmd.module); + + const controllable = hits.length > 0 ? (hits[0]) : null; + if (!controllable) return null; + + const handler: PluginCommand = (controllable as Controllable).commands.find(c => c.name === cmd.command); + return handler; + } + + // TODO + /** + * Search which Controllable plugins can 'do the job' for a given command. + * @param cmd + */ + public static findSupportedModules(_cmd: string): Controllable[] { + throw new Error('Not implemented'); + } } diff --git a/packages/polkabot-api/src/decorators.ts b/packages/polkabot-api/src/decorators.ts index 59b8a26..04acca5 100644 --- a/packages/polkabot-api/src/decorators.ts +++ b/packages/polkabot-api/src/decorators.ts @@ -1,23 +1,27 @@ -import LoggerSingleton from './LoggerFactory'; -import { CallableMetas, CommandDecoratorArgs, PluginCommand } from './types'; +import { CallableMetas, CommandDecoratorArgs, PluginCommand, Controllable } from './types'; +import LoggerSingleton from '@polkabot/api/src/LoggerFactory'; const Logger = LoggerSingleton.getInstance(); /** * This class decorator signals a class that will be callable from the - * chat. + * chat. It dynamically sets up a few of the members and helpers required + * by a Controllable. * @param args */ export function Callable(args?: CallableMetas): Function { // Note we cannot use context yet - return (target: any) => { - Logger.silly('target: %o', target); - const meta: CallableMetas = { - name: args && args.name ? args.name : target.name, - alias: args && args.alias ? args.alias : target.name.toLowerCase() + return (target: Controllable) => { + Logger.silly(`DECORATOR Callable on ${(target as unknown as Function).name}`); + const metas: CallableMetas = { + name: args && args.name ? args.name : (target as any).name, + alias: args && args.alias ? args.alias : (target as any).name.toLowerCase() }; + + // Implement Controllable if (!target.commands) target.commands = []; - target.meta = meta; + target.metas = metas; + target.isControllable = true; }; } @@ -27,11 +31,11 @@ export function Callable(args?: CallableMetas): Function { * they will be made available. * @param params The list of config params */ -export function Configured(params: string[]): Function { - Logger.silly('Configured: ' + params.join(' ')); +export function Configured(_params: string[]): Function { + return (_target: any) => { - return (_ctor: Function) => { - Logger.silly('Configured: ' + params.join(' ')); + // if (!target.commands) target.commands = []; + // target.meta = meta; }; } diff --git a/packages/polkabot-api/src/helpers.ts b/packages/polkabot-api/src/helpers.ts new file mode 100644 index 0000000..1e706f9 --- /dev/null +++ b/packages/polkabot-api/src/helpers.ts @@ -0,0 +1,16 @@ +/** + * Capitalize the first char of a string + * @param s The string to captitalize + */ +export function capitalize(s: string): string { + if (typeof s !== 'string') return ''; + return s.charAt(0).toUpperCase() + s.slice(1); +} + +/** + * Fetch the class of an object to reach its static members and access the commands + * @param object + */ +export function getClass(object: Record): Function { + return (object.constructor); +} \ No newline at end of file diff --git a/packages/polkabot-api/src/index.ts b/packages/polkabot-api/src/index.ts index 24031b3..d7dab0d 100644 --- a/packages/polkabot-api/src/index.ts +++ b/packages/polkabot-api/src/index.ts @@ -4,6 +4,7 @@ export * from './PolkabotPluginBase'; export * from './PolkabotWorker'; export * from './types'; export * from './utils'; +export * from './helpers'; import LoggerFactory from './LoggerFactory'; export { LoggerFactory }; diff --git a/packages/polkabot-api/src/types.ts b/packages/polkabot-api/src/types.ts index 094a9c8..4e00a3e 100644 --- a/packages/polkabot-api/src/types.ts +++ b/packages/polkabot-api/src/types.ts @@ -105,7 +105,10 @@ export type PluginCommandSet = { * be called to control the thing. */ export interface Controllable { - getCommandSet(): PluginCommandSet; + commands: Array; + metas: CallableMetas; + isControllable: boolean; + getCommand(cmd: string): PluginCommand | null; } /** diff --git a/packages/polkabot-api/test/decorators.spec.ts b/packages/polkabot-api/test/decorators.spec.ts index c3306e2..8949d6b 100644 --- a/packages/polkabot-api/test/decorators.spec.ts +++ b/packages/polkabot-api/test/decorators.spec.ts @@ -1,11 +1,11 @@ import { expect } from 'chai'; import { Callable, Command } from '../src/decorators'; -import { CallableMetas, PluginCommand } from '../src/types'; +import { Controllable } from '../src/types'; @Callable({ name: 'Foo', alias: 'bar' }) class TestClass1 { - static meta: CallableMetas; - static commands: PluginCommand[] = []; + // static meta: CallableMetas; + // static commands: PluginCommand[] = []; @Command() cmdTest(): void { return; } @@ -13,8 +13,8 @@ class TestClass1 { @Callable() class TestClass2 { - static meta: CallableMetas; - static commands: PluginCommand[] = []; + // static meta: CallableMetas; + // static commands: PluginCommand[] = []; @Command() cmdTest1(): void { return; } @@ -28,20 +28,16 @@ class TestClass2 { describe('Decorators', () => { it('TestClass1', () => { - expect(TestClass1.meta.alias).not.to.be.undefined; - expect(TestClass1.meta.name).to.eql('Foo'); - expect(TestClass1.meta.alias).to.eql('bar'); - expect(TestClass1.commands).to.be.lengthOf(1); + expect((TestClass1 as unknown as Controllable).metas.alias).not.to.be.undefined; + expect((TestClass1 as unknown as Controllable).metas.name).to.eql('Foo'); + expect((TestClass1 as unknown as Controllable).metas.alias).to.eql('bar'); + expect((TestClass1 as unknown as Controllable).commands).to.be.lengthOf(1); }); it('TestClass2', () => { - expect(TestClass2.meta.alias).not.to.be.undefined; - expect(TestClass2.meta.name).to.eql('TestClass2'); - expect(TestClass2.meta.alias).to.eql('testclass2'); - expect(TestClass2.commands).to.be.lengthOf(3); - // expect(TestClass1.getCommand('foo')).to.be.null - // expect(TestClass1.getCommand('test1')).to.be.not.null - // expect(TestClass1.getCommand('test2')).to.be.not.null - // expect(TestClass1.getCommand('test')).to.be.not.null + expect((TestClass2 as unknown as Controllable).metas.alias).not.to.be.undefined; + expect((TestClass2 as unknown as Controllable).metas.name).to.eql('TestClass2'); + expect((TestClass2 as unknown as Controllable).metas.alias).to.eql('testclass2'); + expect((TestClass2 as unknown as Controllable).commands).to.be.lengthOf(3); }); }); diff --git a/packages/polkabot-plugin-blocthday/src/index.ts b/packages/polkabot-plugin-blocthday/src/index.ts index 302d8f0..91cbbd3 100644 --- a/packages/polkabot-plugin-blocthday/src/index.ts +++ b/packages/polkabot-plugin-blocthday/src/index.ts @@ -2,17 +2,18 @@ import BN from 'bn.js'; import { PolkabotWorker } from '@polkabot/api/src/PolkabotWorker'; import { HeaderExtended } from '@polkadot/api-derive/type'; import { Command, Callable } from '@polkabot/api/src/decorators'; -import { CallableMetas, Controllable, PluginCommand, PluginModule, PluginContext, PluginCommandSet, Room, CommandHandlerOutput, NotifierMessage, NotifierSpecs } from '@polkabot/api/src/types'; +import { Controllable, PluginModule, PluginContext, Room, CommandHandlerOutput, NotifierMessage, NotifierSpecs } from '@polkabot/api/src/types'; +import { assert } from '@polkabot/api/src/utils'; -// @Configured(['NB_BLOCKS']) +// @Configured({['NB_BLOCKS'}]) @Callable({ name: 'Blocthday', alias: 'bday' }) -export default class Blocthday extends PolkabotWorker implements Controllable { +export default class Blocthday extends PolkabotWorker { private NB_BLOCKS: number; // public commandSet: PluginCommandSet; // TODO: it would be nice if the decorator could declare that - static meta: CallableMetas; - static commands: PluginCommand[] = []; + // static meta: CallableMetas; + // static commands: PluginCommand[] = []; private unsub: Function; @@ -23,13 +24,13 @@ export default class Blocthday extends PolkabotWorker implements Controllable { // TODO: would be great to use a decorator for that this.NB_BLOCKS = this.context.config.Get('BLOCTHDAY', 'NB_BLOCKS'); // Blocthday.commandSet = {} // getCommandSet(this); - this.context.logger.debug('commands: %s', JSON.stringify(Blocthday.commands, null, 0)); + // this.context.logger.debug('commands: %s', JSON.stringify(this.getCommands(), null, 0)); } - getCommandSet(): PluginCommandSet { - const res: PluginCommandSet = { ...Blocthday.meta, commands: Blocthday.commands}; - return res; - } + // getCommandSet(): PluginCommandSet { + // const res: PluginCommandSet = { ...Blocthday.meta, commands: Blocthday.commands}; + // return res; + // } @Command({ name: 'status', description: 'Show status of the plugin', argsRegexp: '', adminOnly: false }) public cmdStatus(_event, room: Room): CommandHandlerOutput { @@ -59,14 +60,8 @@ export default class Blocthday extends PolkabotWorker implements Controllable { public start(): void { this.context.logger.info('Starting with NB_BLOCKS: %d', this.NB_BLOCKS); - - if (!this.getCommandSet().commands){ - console.log(this); - this.context.logger.error('No command defined'); - } - else - this.context.logger.debug('Commandset: %s', JSON.stringify(this.getCommandSet(), null, 0)); - + assert((Blocthday as unknown as Controllable).commands.length > 0, 'Missing commands'); + this.watchChain().catch(error => { this.context.logger.error('Error subscribing to chain head: ', error); }); @@ -75,6 +70,7 @@ export default class Blocthday extends PolkabotWorker implements Controllable { public stop(): void { this.context.logger.debug('STOPPING'); + // TODO: we can make it generic if unsub is a dictionnary of unsub handlers. We could then automatically go thru them and unsub in the base class if (this.unsub) this.unsub(); } diff --git a/packages/polkabot-plugin-operator/src/commandSet.ts b/packages/polkabot-plugin-operator/src/commandSet.ts deleted file mode 100644 index a68b68d..0000000 --- a/packages/polkabot-plugin-operator/src/commandSet.ts +++ /dev/null @@ -1,25 +0,0 @@ -// import { PluginCommandSet } from '@polkabot/api/src/plugin.interface'; -// import Operator from '.'; - -// export default function getCommandSet(ref: Operator): PluginCommandSet { -// return { -// name: 'Operator', -// alias: 'op', -// commands: [ -// { -// name: 'status', -// description: 'Show status of the op plugin', -// argsRegexp: '', -// adminOnly: false, -// handler: ref.cmdStatus -// }, -// { -// name: 'help', -// description: 'Show some help', -// argsRegexp: '', -// adminOnly: false, -// handler: ref.cmdHelp -// } -// ] -// }; -// } diff --git a/packages/polkabot-plugin-operator/src/helpers.ts b/packages/polkabot-plugin-operator/src/helpers.ts index b484e60..68fcd44 100644 --- a/packages/polkabot-plugin-operator/src/helpers.ts +++ b/packages/polkabot-plugin-operator/src/helpers.ts @@ -17,12 +17,3 @@ export function isHelpNeeded(msg: string): boolean { export function contactOperator(): void { throw new Error('Not implemented'); } - -/** - * Capitalize the first char of a string - * @param s The string to captitalize - */ -export function capitalize(s: string): string { - if (typeof s !== 'string') return ''; - return s.charAt(0).toUpperCase() + s.slice(1); -} \ No newline at end of file diff --git a/packages/polkabot-plugin-operator/src/index.ts b/packages/polkabot-plugin-operator/src/index.ts index 776c3ea..1ba057f 100644 --- a/packages/polkabot-plugin-operator/src/index.ts +++ b/packages/polkabot-plugin-operator/src/index.ts @@ -4,17 +4,13 @@ import MatrixHelper from './matrix-helper'; import { packageJson } from 'package-json'; import { assert } from '@polkadot/util'; import { OperatorParams } from './types'; -import { isHelpNeeded, capitalize } from './helpers'; -import { Event, CallableMetas, MatrixEventType, Controllable, PluginCommand, PluginContext, PluginModule, PluginCommandSet, CommandHandlerOutput, BotCommand, SenderId, RoomId, Room } from '@polkabot/api/src/types'; +import { isHelpNeeded } from './helpers'; +import { Event, MatrixEventType, Controllable, PluginCommand, PluginContext, PluginModule, CommandHandlerOutput, BotCommand, SenderId, RoomId, Room } from '@polkabot/api/src/types'; +import { capitalize, getClass } from '@polkabot/api/src'; import { Command, Callable } from '@polkabot/api/src/decorators'; @Callable() -export default class Operator extends PolkabotChatbot implements Controllable { - - // public commandSet: PluginCommandSet; - static meta: CallableMetas; - static commands: PluginCommand[] = []; - +export default class Operator extends PolkabotChatbot { package: packageJson; controllables: Controllable[]; context: PluginContext; @@ -42,11 +38,11 @@ export default class Operator extends PolkabotChatbot implements Controllable { this.matrixHelper = new MatrixHelper(this.params); } - getCommandSet(): PluginCommandSet { - const res: PluginCommandSet = { ...Operator.meta, commands: Operator.commands }; - assert(res.name.length > 0, 'something went wrong'); - return res; - } + // getCommandSet(): PluginCommandSet { + // const res: PluginCommandSet = { ...Operator.meta, commands: Operator.commands }; + // assert(res.name.length > 0, 'something went wrong'); + // return res; + // } public start(): void { this.watchChat(); @@ -75,17 +71,19 @@ export default class Operator extends PolkabotChatbot implements Controllable { }; } - @Command({ description: 'This shows the help. It is also triggered when the user write anything mentioning HELP' }) + @Command({ description: 'This shows some help. It is also triggered when the user write anything mentioning HELP' }) public cmdHelp(_event: Event, room: Room): CommandHandlerOutput { let message = 'Here is also a list of all the loaded modules and their commands:
        '; + // this.context.logger.debug('controllables: %o', this.controllables); + assert(this.controllables.length, 'No controllable found!'); this.controllables.map((controllable: Controllable) => { - // console.log(controllable) - this.context.logger.silly('commandSet: %o', controllable.getCommandSet()); + const CtrlClass = getClass(controllable) as unknown as Controllable; + assert(CtrlClass.isControllable, 'Houston, we expect a controllable here!'); - message += `
      • ${controllable.getCommandSet().name}:
        • `; - controllable.getCommandSet().commands.map((command: PluginCommand) => { - message += `
        • !${controllable.getCommandSet().alias} ${command.name}: ${command.description} - ${ + message += `
        • ${CtrlClass.metas.name}:
          • `; + CtrlClass.commands.map((command: PluginCommand) => { + message += `
          • !${CtrlClass.metas.alias} ${command.name}: ${command.description} - ${ command.adminOnly ? 'Admin' : 'Public' }
          • `; }); @@ -112,23 +110,20 @@ export default class Operator extends PolkabotChatbot implements Controllable { }; } - /** This function takes a BotCommand and look for a plugin that can handle it. - * If a plugin is found, its information and handler are returned. - * If not, null is retuned. In that case it means we are not able to fullfill the request. - */ - private matchCommand(cmd: BotCommand): PluginCommand | null { - // first we look if the module is known - const hits = this.controllables.filter((c: Controllable) => c.getCommandSet().alias === cmd.module); - const controllable = hits.length > 0 ? (hits[0]) : null; - if (!controllable) return null; + // private matchCommand(cmd: BotCommand): PluginCommand | null { + // // first we look if the module is known + // const hits = this.controllables.filter((c: Controllable) => c.metas.alias === cmd.module); + // const controllable = hits.length > 0 ? (hits[0]) : null; - this.context.logger.info(`${controllable.getCommandSet().name} could be able to do the job... checking supported commands`); - const handler: PluginCommand = (controllable as Controllable).getCommandSet().commands.find(c => c.name === cmd.command); - this.context.logger.info(`Handler found: ${handler ? handler.name : null}`); + // if (!controllable) return null; - return handler; - } + // this.context.logger.info(`${controllable.metas.name} could be able to do the job... checking supported commands`); + // const handler: PluginCommand = (controllable as Controllable).commands.find(c => c.name === cmd.command); + // this.context.logger.info(`Handler found: ${handler ? handler.name : null}`); + + // return handler; + // } private watchChat(): void { this.context.matrix.on('Room.timeline', (event: Event, room: Room, _toStartOfTimeline) => { @@ -176,7 +171,7 @@ export default class Operator extends PolkabotChatbot implements Controllable { message: 'I was tought to smile when I don\'t get it. 😁' }); } else { - const cmdHandler = this.matchCommand(botCommand); + const cmdHandler = PolkabotChatbot.matchCommand(this.controllables, botCommand); // this.context.logger.info(" *** bot command handler:", JSON.stringify(cmdHandler, null, 2)); diff --git a/packages/polkabot-plugin-reporter/src/index.ts b/packages/polkabot-plugin-reporter/src/index.ts index 6ef73a5..719d611 100644 --- a/packages/polkabot-plugin-reporter/src/index.ts +++ b/packages/polkabot-plugin-reporter/src/index.ts @@ -4,6 +4,10 @@ import { PolkabotWorker } from '@polkabot/api/src/PolkabotWorker'; import blake2 from '@polkadot/util-crypto/blake2/asHex'; import { NotifierSpecs, PluginModule, PluginContext, BlockMoment, Announcement, Severity } from '@polkabot/api/src/types'; +/** + * This plugin is keeping an eye on on the public referendum and + * important changes that may happen on-chain. + */ export default class Reporter extends PolkabotWorker { private cache: any; private unsub: Function; @@ -60,14 +64,14 @@ export default class Reporter extends PolkabotWorker { } public start(): void { - // console.log('Reporter - Starting with config:', this.config); + // this.context.logger.info('Reporter - Starting with config:', this.config); this.watchChain().catch(error => { console.error('Reporter - Error subscribing to chain: ', error); }); } public stop(): void { - console.log('Reporter - STOPPING'); + this.context.logger.info('Reporter - STOPPING'); if (this.unsub) this.unsub(); } @@ -104,7 +108,7 @@ export default class Reporter extends PolkabotWorker { if (!this.cache[KEY]) this.cache[KEY] = validators; if (this.cache[KEY] && this.cache[KEY].length !== validators.length) { - console.log('Reporter - Active Validator count: ', validators.length); + this.context.logger.info('Reporter - Active Validator count: ', validators.length); this.announce({ message: `Active Validator count has changed from ${this.cache[KEY].length} to ${validators.length}`, @@ -112,7 +116,7 @@ export default class Reporter extends PolkabotWorker { }); this.cache[KEY] = validators; } else { - console.log(`Reporter - Active Validator count: ${validators.length}`); + this.context.logger.info(`Reporter - Active Validator count: ${validators.length}`); } }); } @@ -124,7 +128,7 @@ export default class Reporter extends PolkabotWorker { if (!this.cache[KEY]) this.cache[KEY] = validatorCount; if (this.cache[KEY] && this.cache[KEY] !== validatorCount) { this.cache[KEY] = validatorCount; - console.log('Reporter - Validator count:', validatorCount.toString(10)); + this.context.logger.info('Reporter - Validator count:', validatorCount.toString(10)); this.announce({ message: `The number of validator slots has changed. It is now ${validatorCount.toString( 10 @@ -143,10 +147,10 @@ export default class Reporter extends PolkabotWorker { if (!this.cache[KEY]) this.cache[KEY] = { hash, code }; if (this.cache[KEY] && this.cache[KEY].hash !== hash) { this.cache[KEY] = { hash, code }; - console.log('Reporter - Runtime Code hash changed:', hash); + this.context.logger.info('Reporter - Runtime Code hash changed:', hash); // const codeInHex = '0x' + this.buf2hex(code) - // console.log('Runtime Code hex changed', codeInHex) + // this.context.logger.info('Runtime Code hex changed', codeInHex) this.announce({ message: `Runtime code hash has changed. The hash is now ${hash}. The runtime is now ${ @@ -155,7 +159,7 @@ export default class Reporter extends PolkabotWorker { severity: Severity.CRITICAL, }); } else { - console.log(`Reporter - Runtime Code hash: ${hash}`); + this.context.logger.info(`Reporter - Runtime Code hash: ${hash}`); } }); } @@ -174,7 +178,7 @@ export default class Reporter extends PolkabotWorker { if (this.cache[KEY] && !this.cache[KEY].eq(count)) { this.cache[KEY] = count; - console.log('Reporter - Proposal count changed:', count.toString(10)); + this.context.logger.info('Reporter - Proposal count changed:', count.toString(10)); const id = count.sub(new BN(1)); this.announce({ message: `A new council motion proposal is available (#${id}), check your UI at https://polkadot.js.org/apps/#/democracy. @@ -182,7 +186,7 @@ You will be able to vote shortly, a new referendum will show up in the UI.`, severity: Severity.INFO, }); } else { - console.log(`Reporter - Proposal count: ${count.toString(10)}`); + this.context.logger.info(`Reporter - Proposal count: ${count.toString(10)}`); } }); } @@ -190,7 +194,7 @@ You will be able to vote shortly, a new referendum will show up in the UI.`, async watchPublicProposalCount(): Promise { await this.context.polkadot.query.democracy.publicPropCount(async (publicPropCount: BN) => { const KEY = 'publicPropCount'; - console.log('Reporter - publicPropCount:', publicPropCount.toString(10)); + this.context.logger.info('Reporter - publicPropCount:', publicPropCount.toString(10)); const count = publicPropCount; if (!this.cache[KEY]) this.cache[KEY] = count; @@ -200,7 +204,7 @@ You will be able to vote shortly, a new referendum will show up in the UI.`, const blockMoment = await this.getBlockMoment(deadline); // const votingTimeInMinutes = // parseInt(this.context.polkadot.consts.democracy.votingPeriod.mul(this.cache.minimumPeriod).toString(10)) / 60; - console.log('Reporter - Proposal count changed:', count.toString(10)); + this.context.logger.info('Reporter - Proposal count changed:', count.toString(10)); const id = count.sub(new BN(1)).toString(10); this.announce({ @@ -213,7 +217,7 @@ You will be able to vote shortly, a new referendum will show up in the UI.`, severity: Severity.INFO, }); } else { - console.log(`Reporter - Proposal count: ${count.toString(10)}`); + this.context.logger.info(`Reporter - Proposal count: ${count.toString(10)}`); } }); } @@ -221,7 +225,7 @@ You will be able to vote shortly, a new referendum will show up in the UI.`, async watchReferendumCount(): Promise { await this.context.polkadot.query.democracy.referendumCount(referendumCount => { const KEY = 'referendumCount'; - console.log('Reporter - referendumCount:', referendumCount.toString(10)); + this.context.logger.info('Reporter - referendumCount:', referendumCount.toString(10)); const count = new BN(referendumCount); if (!this.cache[KEY]) this.cache[KEY] = count; @@ -236,7 +240,7 @@ You will be able to vote shortly, a new referendum will show up in the UI.`, .mul(this.cache.minimumPeriod) .toString(10) ) / 60; - console.log('Reporter - Referendum count changed:', count.toString(10)); + this.context.logger.info('Reporter - Referendum count changed:', count.toString(10)); const id = count.sub(new BN(1)).toString(10); this.announce({ @@ -249,7 +253,7 @@ You have around ${votingTimeInMinutes.toFixed(2)} minutes to vote.`, severity: Severity.INFO, }); } else { - console.log(`Reporter - Referendum count: ${count.toString(10)}`); + this.context.logger.info(`Reporter - Referendum count: ${count.toString(10)}`); } }); } diff --git a/packages/polkabot-plugin-stallwatcher/src/index.ts b/packages/polkabot-plugin-stallwatcher/src/index.ts index 12427a4..219d179 100644 --- a/packages/polkabot-plugin-stallwatcher/src/index.ts +++ b/packages/polkabot-plugin-stallwatcher/src/index.ts @@ -23,7 +23,7 @@ export default class StallWatcher extends PolkabotWorker { } public start(): void { - console.log('StallWatcher - Starting with config:', this.params); + this.context.logger.info('StallWatcher - Starting with config:', this.params); this.watchChain().catch(error => { console.error('StallWatcher - Error subscribing to chain head: ', error); }); @@ -39,7 +39,7 @@ export default class StallWatcher extends PolkabotWorker { // Reference: https://polkadot.js.org/api/examples/promise/02_listen_to_blocks/ this.unsubFn = await this.context.polkadot.rpc.chain.subscribeNewHeads(header => { clearTimeout(this.watchdogId); - // console.log('StallWatcher: ' + this.getDuration().toFixed(2) + 's') + // this.context.logger.info('StallWatcher: ' + this.getDuration().toFixed(2) + 's') this.watchdogId = setTimeout(this.alert.bind(this), this.params.duration * 1000); this.lastBlockNumber = header.number.unwrap().toBn(); if (this.stalled) { @@ -96,7 +96,7 @@ export default class StallWatcher extends PolkabotWorker { // // Has the Bot Master initiated a direct chat with the Bot // const isBotMasterAndBotInRoom = expectedDirectMessageRoomMemberIds.every(val => directChatRoomMemberIds.includes(val)); - // // console.log('StallWatcher - isBotMasterAndBotInRoom: ', isBotMasterAndBotInRoom) + // // this.context.logger.info('StallWatcher - isBotMasterAndBotInRoom: ', isBotMasterAndBotInRoom) // // Is the chat room name the same name as the Bot's name // // After string manipulation to get just the username from the Bot's @@ -107,7 +107,7 @@ export default class StallWatcher extends PolkabotWorker { // .split(":") // .shift() // .substring(1); - // // console.log('StallWatcher - isBotMessageRecipient: ', isBotMessageRecipient) + // // this.context.logger.info('StallWatcher - isBotMessageRecipient: ', isBotMessageRecipient) // /** // * Check that the room id where the sender of the message @@ -124,7 +124,7 @@ export default class StallWatcher extends PolkabotWorker { // */ // // const isOperator = senderId => { // // const isSenderOperator = senderId === this.context.config.matrix.botMasterId; - // // // console.log('StallWatcher - isSenderOperator: ', isSenderOperator) + // // // this.context.logger.info('StallWatcher - isSenderOperator: ', isSenderOperator) // // return isSenderOperator; // // }; @@ -138,20 +138,20 @@ export default class StallWatcher extends PolkabotWorker { // // const senderRoomId = event.sender.roomId; // // const roomIdWithBot = room.roomId; - // // console.log('StallWatcher - msg: ', msg) - // // console.log('StallWatcher - senderId: ', senderId) - // // console.log('StallWatcher - senderRoomId', senderRoomId) - // // console.log('StallWatcher - roomIdWithBot', roomIdWithBot) + // // this.context.logger.info('StallWatcher - msg: ', msg) + // // this.context.logger.info('StallWatcher - senderId: ', senderId) + // // this.context.logger.info('StallWatcher - senderRoomId', senderRoomId) + // // this.context.logger.info('StallWatcher - roomIdWithBot', roomIdWithBot) // if (isPrivate(senderRoomId, roomIdWithBot)) { // if (isOperator(senderId) && isBotMasterAndBotInRoom && isBotMessageRecipient) { - // // console.log('StallWatcher - Bot received message from Bot Master in direct message') + // // this.context.logger.info('StallWatcher - Bot received message from Bot Master in direct message') // /** // * Detect if the command received from the Bot Master is in // * the following form: `!sw duration ` // */ // let capture = msg.match(/^!((?\w+)\s+)?(?\w+)(\s+(?.*?))??$/i) || []; - // // console.log('StallWatcher - captured from Bot Master: ', capture) + // // this.context.logger.info('StallWatcher - captured from Bot Master: ', capture) // if (capture.length > 0 && capture.groups.cmd) { // const mod = capture.groups.mod; // const cmd = capture.groups.cmd; @@ -159,9 +159,9 @@ export default class StallWatcher extends PolkabotWorker { // if (mod !== "sw") return; - // console.log("StallWatcher - mod: ", mod); - // console.log("StallWatcher - cmd: ", cmd); - // console.log("StallWatcher - args: ", args); + // this.context.logger.info("StallWatcher - mod: ", mod); + // this.context.logger.info("StallWatcher - cmd: ", cmd); + // this.context.logger.info("StallWatcher - args: ", args); // switch (cmd) { // case "duration": // const val = parseFloat(args); diff --git a/packages/polkabot/src/index.ts b/packages/polkabot/src/index.ts index 4763b0c..e20fd18 100644 --- a/packages/polkabot/src/index.ts +++ b/packages/polkabot/src/index.ts @@ -9,7 +9,7 @@ import { ConfigManager, ConfigObject } from 'confmgr'; import { assert } from '@polkadot/util'; import { routeMatrixLogger } from './lib/matrix-helpers'; import { NotifiersTable } from './types'; -import { PolkabotChatbot, PolkabotNotifier, MatrixClient, Controllable, PolkabotPlugin, NotifierMessage, NotifierSpecs, PluginModule, PluginContext, RoomMember, winston } from '@polkabot/api/src'; +import { PolkabotChatbot, PolkabotNotifier, MatrixClient, Controllable, PolkabotPlugin, NotifierMessage, NotifierSpecs, PluginModule, PluginContext, RoomMember, winston, getClass } from '@polkabot/api/src'; import LoggerSingleton from '@polkabot/api/src/LoggerFactory'; import { isControllable, isWorker, isNotifier, isChatBot } from './lib/type-helpers'; @@ -68,8 +68,9 @@ export default class Polkabot { * @param controllable */ private registerControllable(controllable: Controllable): void { - assert(controllable.getCommandSet().commands.length, 'No commands defined'); - Logger.debug('Registering controllable:', controllable.getCommandSet().name); + const CtrlClass = getClass(controllable) as unknown as Controllable; + assert(CtrlClass.isControllable && CtrlClass.commands.length, 'No commands defined'); + Logger.debug('Registering controllable:', CtrlClass.metas.name); this.controllablePlugins.push(controllable); } @@ -86,7 +87,6 @@ export default class Polkabot { * Finds, starts and register all the plugins that can be found. */ private async loadPlugins(): Promise { - // Logger.info('Loading plugins', { meta: { source: 'Polkabot' } }); Logger.info('Loading plugins'); const pluginScanner = new PluginScanner(pkg.name + '-plugin'); @@ -123,9 +123,10 @@ export default class Polkabot { loads.push( PluginLoader.load(plugin, context).then((p: PolkabotPlugin) => { - if (isControllable(p)) { + if (isControllable(getClass(p))) { + Logger.info(`▶ Controllable: ${p.package.name}`); this.registerControllable(p as unknown as Controllable); - } else Logger.debug(`▶ NOT Controllable: ${p.package.name}`); + } else Logger.warn(`▶ NOT Controllable: ${p.package.name}`); if (isWorker(p)) { Logger.debug(`Starting worker plugin ${p.package.name} v${p.package.version}`); @@ -155,7 +156,8 @@ export default class Polkabot { * Attach all the controllables to the Chatbot(s) */ private attachControllableToBots(): void { - Logger.debug('Passing controllables to following bots:'); + assert(this.controllablePlugins.length, 'No Controllable to attach?'); + Logger.debug(`Passing controllables (${this.controllablePlugins.length}) to following bots:`); this.chatBots.map((bot: PolkabotChatbot) => { Logger.debug(` ${bot.module.name}`); bot.registerControllables(this.controllablePlugins); diff --git a/packages/polkabot/src/lib/plugin-loader.ts b/packages/polkabot/src/lib/plugin-loader.ts index d4bb9ce..cdafa05 100644 --- a/packages/polkabot/src/lib/plugin-loader.ts +++ b/packages/polkabot/src/lib/plugin-loader.ts @@ -35,7 +35,7 @@ export default class PluginLoader { } Logger.info( - ` - ${plugin.constructor.name}: ${plugin.package.name} version ${plugin.package.version} from ${plugin.package.author + ` - [${parentClass.replace('Polkabot', '')}] ${plugin.constructor.name}: ${plugin.package.name} version ${plugin.package.version} from ${plugin.package.author .name || plugin.package.author}` ); diff --git a/packages/polkabot/src/lib/type-helpers.ts b/packages/polkabot/src/lib/type-helpers.ts index 47250f9..1decfc9 100644 --- a/packages/polkabot/src/lib/type-helpers.ts +++ b/packages/polkabot/src/lib/type-helpers.ts @@ -9,9 +9,12 @@ export function isNotifier(candidate: PolkabotPlugin): candidate is PolkabotNoti return (candidate as PolkabotNotifier).notify !== undefined; } -export function isControllable(candidate: PolkabotPlugin): boolean { - const res = (candidate as unknown as Controllable).getCommandSet !== undefined; - return res; +/** + * Here we test an 'assumed' Controllable that may or not be one. + * @param candidate The class to be checked. Note that you should not pass a Controllable object here but the class itself. + */ +export function isControllable(candidate: Function): boolean { + return (candidate as unknown as Controllable).isControllable === true; } export function isChatBot(candidate: PolkabotPlugin): candidate is PolkabotChatbot { diff --git a/packages/polkabot/test/sample.spec.ts b/packages/polkabot/test/sample.spec.ts deleted file mode 100644 index 6331c3e..0000000 --- a/packages/polkabot/test/sample.spec.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { expect } from 'chai'; - -describe('Sample', () => { - it('should pass', () => { - expect(1 + 1).to.equal(2); - }); -}); diff --git a/packages/polkabot/test/type-helpers.spec.ts b/packages/polkabot/test/type-helpers.spec.ts new file mode 100644 index 0000000..5184392 --- /dev/null +++ b/packages/polkabot/test/type-helpers.spec.ts @@ -0,0 +1,23 @@ +import { expect } from 'chai'; +import { Callable, Command } from '@polkabot/api/src/decorators'; +import { Controllable } from '@polkabot/api/src'; + +@Callable() +class Foo { + @Command() + cmdFoo(): void { return; } +} + +class Bar { + +} + +describe('Type helpers', () => { + it('should be seen as Controllable', () => { + expect((Foo as unknown as Controllable).isControllable).to.be.true; + }); + + it('should not be seen as Controllable', () => { + expect((Bar as unknown as Controllable).isControllable).to.be.undefined; + }); +}); -- GitLab From cb1fba03fd96857168ba67e4ed446555a723df3f Mon Sep 17 00:00:00 2001 From: chevdor Date: Mon, 25 May 2020 18:02:55 +0200 Subject: [PATCH 80/86] Some cleanup (doc, unsubs as dictionnary handled by default) --- package.json | 10 ++-- packages/polkabot-api/package.json | 2 +- packages/polkabot-api/src/PolkabotChatbot.ts | 4 +- packages/polkabot-api/src/PolkabotWorker.ts | 19 ++++++-- packages/polkabot-api/src/decorators.ts | 8 ++-- packages/polkabot-api/src/types.ts | 18 +++++++- packages/polkabot-api/test/decorators.spec.ts | 18 +++----- .../polkabot-plugin-blockstats/package.json | 2 +- .../polkabot-plugin-blocthday/package.json | 2 +- .../polkabot-plugin-blocthday/src/index.ts | 46 ++----------------- .../package.json | 2 +- .../package.json | 2 +- .../polkabot-plugin-operator/package.json | 2 +- .../polkabot-plugin-operator/src/index.ts | 21 ++------- .../polkabot-plugin-reporter/package.json | 2 +- .../polkabot-plugin-stallwatcher/package.json | 2 +- packages/polkabot/package.json | 2 +- packages/polkabot/src/index.ts | 17 +++++-- packages/polkabot/src/lib/type-helpers.ts | 20 ++++++-- packages/polkabot/src/polkabot.ts | 2 +- tsconfig.json | 5 +- typedoc.js | 10 ++-- yarn.lock | 30 ++++++------ 23 files changed, 120 insertions(+), 126 deletions(-) diff --git a/package.json b/package.json index 6ba4594..80cc3fc 100644 --- a/package.json +++ b/package.json @@ -14,15 +14,15 @@ "test": "lerna run test", "start": "cd packages/polkabot && yarn start", "build": "lerna run build", - "build:doc": "lerna run build:doc", - "clean:local": "rm -rf docs", - "clean": "yarn clean:local; lerna run clean" + "build:doc": "typedoc", + "clean": "yarn clean:local; lerna run clean", + "clean:local": "rm -rf public/doc" }, "devDependencies": { "@babel/plugin-transform-runtime": "^7.8.3", "lerna": "^3.21.0", - "typedoc": "^0.17.6" - }, + "typedoc": "^0.17.7" + }, "dependencies": { "@babel/runtime": "^7.8.7", "@polkadot/api": "^1.15.1" diff --git a/packages/polkabot-api/package.json b/packages/polkabot-api/package.json index a7927ec..6d2da38 100644 --- a/packages/polkabot-api/package.json +++ b/packages/polkabot-api/package.json @@ -12,7 +12,7 @@ "test:watch": "mocha --watch", "clean": "rm -rf dist build node_modules docs", "postinstall": "npm run build", - "build:doc": "typedoc src" + "build:doc": "typedoc src --readme none" }, "author": "Chevdor ", "license": "ISC", diff --git a/packages/polkabot-api/src/PolkabotChatbot.ts b/packages/polkabot-api/src/PolkabotChatbot.ts index feeceb4..3ede0f0 100644 --- a/packages/polkabot-api/src/PolkabotChatbot.ts +++ b/packages/polkabot-api/src/PolkabotChatbot.ts @@ -18,7 +18,7 @@ export abstract class PolkabotChatbot extends PolkabotPluginBase implements Chat const CtrlClass = getClass(ctrl) as unknown as Controllable; // const commandObject: PluginCommandSet = (ctrl as Controllable).commandSet; const commands: PluginCommand[] = CtrlClass.commands; - Logger.debug(` ctrl: ${CtrlClass.metas.name} (!${CtrlClass.metas.alias}) ${commands.map(c => c.name)}`); + Logger.debug(` ctrl: ${CtrlClass.meta.name} (!${CtrlClass.meta.alias}) ${commands.map(c => c.name)}`); // Logger.info(commands.map(c => c.name)); }); this.controllables = controllables; @@ -77,7 +77,7 @@ export abstract class PolkabotChatbot extends PolkabotPluginBase implements Chat */ public static matchCommand(controllables: Controllable[], cmd: BotCommand): PluginCommand | null { // first we look if the module is known - const hits = controllables.filter((c: Controllable) => c.metas.alias === cmd.module); + const hits = controllables.filter((c: Controllable) => c.meta.alias === cmd.module); const controllable = hits.length > 0 ? (hits[0]) : null; if (!controllable) return null; diff --git a/packages/polkabot-api/src/PolkabotWorker.ts b/packages/polkabot-api/src/PolkabotWorker.ts index 9773dc3..1109e58 100644 --- a/packages/polkabot-api/src/PolkabotWorker.ts +++ b/packages/polkabot-api/src/PolkabotWorker.ts @@ -1,11 +1,22 @@ import { PolkabotPluginBase } from './PolkabotPluginBase'; -import { PluginModule, PluginContext, PluginType } from './types'; +import { PluginModule, PluginContext, PluginType, UnsubDictionnary } from './types'; + +export abstract class PolkabotWorker extends PolkabotPluginBase { + protected unsubs: UnsubDictionnary = {} -export abstract class PolkabotWorker extends PolkabotPluginBase { constructor(mod: PluginModule, context: PluginContext, config?) { super(PluginType.Worker, mod, context, config); } - + public abstract start(); - public abstract stop(); + + public stop() { + this.context.logger.debug('STOPPING'); + + Object.keys(this.unsubs).map(unsub => { + let fn = this.unsubs[unsub] + this.context.logger.debug(`Running unsub for ${unsub}`) + if (fn) fn() + }) + } } diff --git a/packages/polkabot-api/src/decorators.ts b/packages/polkabot-api/src/decorators.ts index 04acca5..c74f839 100644 --- a/packages/polkabot-api/src/decorators.ts +++ b/packages/polkabot-api/src/decorators.ts @@ -1,4 +1,4 @@ -import { CallableMetas, CommandDecoratorArgs, PluginCommand, Controllable } from './types'; +import { CallableMeta, CommandDecoratorArgs, PluginCommand, Controllable, ControllableMeta } from './types'; import LoggerSingleton from '@polkabot/api/src/LoggerFactory'; const Logger = LoggerSingleton.getInstance(); @@ -9,18 +9,18 @@ const Logger = LoggerSingleton.getInstance(); * by a Controllable. * @param args */ -export function Callable(args?: CallableMetas): Function { +export function Callable(args?: CallableMeta): Function { // Note we cannot use context yet return (target: Controllable) => { Logger.silly(`DECORATOR Callable on ${(target as unknown as Function).name}`); - const metas: CallableMetas = { + const meta: ControllableMeta = { name: args && args.name ? args.name : (target as any).name, alias: args && args.alias ? args.alias : (target as any).name.toLowerCase() }; // Implement Controllable if (!target.commands) target.commands = []; - target.metas = metas; + target.meta = meta; target.isControllable = true; }; } diff --git a/packages/polkabot-api/src/types.ts b/packages/polkabot-api/src/types.ts index 4e00a3e..0a91ef3 100644 --- a/packages/polkabot-api/src/types.ts +++ b/packages/polkabot-api/src/types.ts @@ -17,7 +17,12 @@ export type Cache = { [Key: string]: unknown; } -export type CallableMetas = { +export type CallableMeta = { + name?: string; + alias?: string; +} + +export type ControllableMeta = { name: string; alias: string; } @@ -44,6 +49,15 @@ export enum PluginType { Chatbot } +/** + * This is a hash of all the subscriptions. + * If the user keeps on using this, there will be nothing for them to do to unsubscribe. + */ +export interface UnsubDictionnary { + [key: string]: Function; +} + + export type RoomAnswer = { room: Room; message: string; @@ -106,7 +120,7 @@ export type PluginCommandSet = { */ export interface Controllable { commands: Array; - metas: CallableMetas; + meta: ControllableMeta; isControllable: boolean; getCommand(cmd: string): PluginCommand | null; } diff --git a/packages/polkabot-api/test/decorators.spec.ts b/packages/polkabot-api/test/decorators.spec.ts index 8949d6b..0da333a 100644 --- a/packages/polkabot-api/test/decorators.spec.ts +++ b/packages/polkabot-api/test/decorators.spec.ts @@ -4,18 +4,12 @@ import { Controllable } from '../src/types'; @Callable({ name: 'Foo', alias: 'bar' }) class TestClass1 { - // static meta: CallableMetas; - // static commands: PluginCommand[] = []; - @Command() cmdTest(): void { return; } } @Callable() class TestClass2 { - // static meta: CallableMetas; - // static commands: PluginCommand[] = []; - @Command() cmdTest1(): void { return; } @@ -28,16 +22,16 @@ class TestClass2 { describe('Decorators', () => { it('TestClass1', () => { - expect((TestClass1 as unknown as Controllable).metas.alias).not.to.be.undefined; - expect((TestClass1 as unknown as Controllable).metas.name).to.eql('Foo'); - expect((TestClass1 as unknown as Controllable).metas.alias).to.eql('bar'); + expect((TestClass1 as unknown as Controllable).meta.alias).not.to.be.undefined; + expect((TestClass1 as unknown as Controllable).meta.name).to.eql('Foo'); + expect((TestClass1 as unknown as Controllable).meta.alias).to.eql('bar'); expect((TestClass1 as unknown as Controllable).commands).to.be.lengthOf(1); }); it('TestClass2', () => { - expect((TestClass2 as unknown as Controllable).metas.alias).not.to.be.undefined; - expect((TestClass2 as unknown as Controllable).metas.name).to.eql('TestClass2'); - expect((TestClass2 as unknown as Controllable).metas.alias).to.eql('testclass2'); + expect((TestClass2 as unknown as Controllable).meta.alias).not.to.be.undefined; + expect((TestClass2 as unknown as Controllable).meta.name).to.eql('TestClass2'); + expect((TestClass2 as unknown as Controllable).meta.alias).to.eql('testclass2'); expect((TestClass2 as unknown as Controllable).commands).to.be.lengthOf(3); }); }); diff --git a/packages/polkabot-plugin-blockstats/package.json b/packages/polkabot-plugin-blockstats/package.json index 013be06..6418bcd 100644 --- a/packages/polkabot-plugin-blockstats/package.json +++ b/packages/polkabot-plugin-blockstats/package.json @@ -10,7 +10,7 @@ "prepublishOnly": "npm run build", "clean": "rm -rf dist node_modules", "postinstall": "npm run build", - "build:doc": "typedoc src" + "build:doc": "typedoc src --readme none" }, "author": "Chevdor ", "license": "ISC", diff --git a/packages/polkabot-plugin-blocthday/package.json b/packages/polkabot-plugin-blocthday/package.json index 1e5d239..9a71231 100644 --- a/packages/polkabot-plugin-blocthday/package.json +++ b/packages/polkabot-plugin-blocthday/package.json @@ -10,7 +10,7 @@ "prepublishOnly": "npm run build", "clean": "rm -rf dist build node_modules", "postinstall": "npm run build", - "build:doc": "typedoc src" + "build:doc": "typedoc src --readme none" }, "author": "Chevdor ", "license": "ISC", diff --git a/packages/polkabot-plugin-blocthday/src/index.ts b/packages/polkabot-plugin-blocthday/src/index.ts index 91cbbd3..fcd7e37 100644 --- a/packages/polkabot-plugin-blocthday/src/index.ts +++ b/packages/polkabot-plugin-blocthday/src/index.ts @@ -2,20 +2,12 @@ import BN from 'bn.js'; import { PolkabotWorker } from '@polkabot/api/src/PolkabotWorker'; import { HeaderExtended } from '@polkadot/api-derive/type'; import { Command, Callable } from '@polkabot/api/src/decorators'; -import { Controllable, PluginModule, PluginContext, Room, CommandHandlerOutput, NotifierMessage, NotifierSpecs } from '@polkabot/api/src/types'; -import { assert } from '@polkabot/api/src/utils'; +import { PluginModule, PluginContext, Room, CommandHandlerOutput, NotifierMessage, NotifierSpecs } from '@polkabot/api/src/types'; // @Configured({['NB_BLOCKS'}]) -@Callable({ name: 'Blocthday', alias: 'bday' }) +@Callable({ alias: 'bday' }) export default class Blocthday extends PolkabotWorker { private NB_BLOCKS: number; - // public commandSet: PluginCommandSet; - - // TODO: it would be nice if the decorator could declare that - // static meta: CallableMetas; - // static commands: PluginCommand[] = []; - - private unsub: Function; public constructor(mod: PluginModule, context: PluginContext, config?) { super(mod, context, config); @@ -23,16 +15,9 @@ export default class Blocthday extends PolkabotWorker { // TODO: would be great to use a decorator for that this.NB_BLOCKS = this.context.config.Get('BLOCTHDAY', 'NB_BLOCKS'); - // Blocthday.commandSet = {} // getCommandSet(this); - // this.context.logger.debug('commands: %s', JSON.stringify(this.getCommands(), null, 0)); } - - // getCommandSet(): PluginCommandSet { - // const res: PluginCommandSet = { ...Blocthday.meta, commands: Blocthday.commands}; - // return res; - // } - @Command({ name: 'status', description: 'Show status of the plugin', argsRegexp: '', adminOnly: false }) + @Command({ description: 'Show status of the plugin' }) public cmdStatus(_event, room: Room): CommandHandlerOutput { this.context.logger.debug('Blocthday.cmdStatus()'); @@ -46,41 +31,20 @@ export default class Blocthday extends PolkabotWorker { }; } - @Command() - public cmdTest(_event, room: Room): CommandHandlerOutput { - return { - code: -1, - msg: 'Implement me first!', - answers: [{ - room, - message: 'Oups! This is BlockDay, this command is not implmented yet 🥴' - }] - }; - } - public start(): void { this.context.logger.info('Starting with NB_BLOCKS: %d', this.NB_BLOCKS); - assert((Blocthday as unknown as Controllable).commands.length > 0, 'Missing commands'); - + this.watchChain().catch(error => { this.context.logger.error('Error subscribing to chain head: ', error); }); } - public stop(): void { - this.context.logger.debug('STOPPING'); - - // TODO: we can make it generic if unsub is a dictionnary of unsub handlers. We could then automatically go thru them and unsub in the base class - if (this.unsub) - this.unsub(); - } - /** * Start watching the chain. * See https://polkadot.js.org/api/examples/promise/02_listen_to_blocks/ */ async watchChain(): Promise { - this.unsub = await this.context.polkadot.rpc.chain.subscribeNewHeads((header: HeaderExtended) => { + this.unsubs['subscribeNewHeads'] = await this.context.polkadot.rpc.chain.subscribeNewHeads((header: HeaderExtended) => { const bnBlockNumber: BN = header.number.unwrap().toBn(); const bnNumberOfBlocks: BN = new BN(this.NB_BLOCKS); diff --git a/packages/polkabot-plugin-notifier-matrix/package.json b/packages/polkabot-plugin-notifier-matrix/package.json index 8a4083f..65ce592 100644 --- a/packages/polkabot-plugin-notifier-matrix/package.json +++ b/packages/polkabot-plugin-notifier-matrix/package.json @@ -10,7 +10,7 @@ "prepublishOnly": "npm run build", "clean": "rm -rf dist build node_modules", "postinstall": "npm run build", - "build:doc": "typedoc src" + "build:doc": "typedoc src --readme none" }, "author": "Chevdor ", "license": "ISC", diff --git a/packages/polkabot-plugin-notifier-twitter/package.json b/packages/polkabot-plugin-notifier-twitter/package.json index ba3d6bb..45e7f7c 100644 --- a/packages/polkabot-plugin-notifier-twitter/package.json +++ b/packages/polkabot-plugin-notifier-twitter/package.json @@ -10,7 +10,7 @@ "prepublishOnly": "npm run build", "clean": "rm -rf dist build node_modules", "postinstall": "npm run build", - "build:doc": "typedoc src" + "build:doc": "typedoc src --readme none" }, "author": "Chevdor ", "license": "ISC", diff --git a/packages/polkabot-plugin-operator/package.json b/packages/polkabot-plugin-operator/package.json index 92b17aa..f69a252 100644 --- a/packages/polkabot-plugin-operator/package.json +++ b/packages/polkabot-plugin-operator/package.json @@ -14,7 +14,7 @@ "test": "mocha", "test:watch": "mocha --watch", "coverage": "nyc -r lcov -e .ts -x \"*.test.ts\" npm run test", - "build:doc": "typedoc src" + "build:doc": "typedoc src --readme none" }, "author": "Chevdor ", "license": "ISC", diff --git a/packages/polkabot-plugin-operator/src/index.ts b/packages/polkabot-plugin-operator/src/index.ts index 1ba057f..8f405db 100644 --- a/packages/polkabot-plugin-operator/src/index.ts +++ b/packages/polkabot-plugin-operator/src/index.ts @@ -9,7 +9,7 @@ import { Event, MatrixEventType, Controllable, PluginCommand, PluginContext, Plu import { capitalize, getClass } from '@polkabot/api/src'; import { Command, Callable } from '@polkabot/api/src/decorators'; -@Callable() +@Callable({ alias: 'op' }) export default class Operator extends PolkabotChatbot { package: packageJson; controllables: Controllable[]; @@ -81,9 +81,9 @@ export default class Operator extends PolkabotChatbot { const CtrlClass = getClass(controllable) as unknown as Controllable; assert(CtrlClass.isControllable, 'Houston, we expect a controllable here!'); - message += `
          • ${CtrlClass.metas.name}:
            • `; + message += `
            • ${CtrlClass.meta.name}:
              • `; CtrlClass.commands.map((command: PluginCommand) => { - message += `
              • !${CtrlClass.metas.alias} ${command.name}: ${command.description} - ${ + message += `
              • !${CtrlClass.meta.alias} ${command.name}: ${command.description} - ${ command.adminOnly ? 'Admin' : 'Public' }
              • `; }); @@ -110,21 +110,6 @@ export default class Operator extends PolkabotChatbot { }; } - - // private matchCommand(cmd: BotCommand): PluginCommand | null { - // // first we look if the module is known - // const hits = this.controllables.filter((c: Controllable) => c.metas.alias === cmd.module); - // const controllable = hits.length > 0 ? (hits[0]) : null; - - // if (!controllable) return null; - - // this.context.logger.info(`${controllable.metas.name} could be able to do the job... checking supported commands`); - // const handler: PluginCommand = (controllable as Controllable).commands.find(c => c.name === cmd.command); - // this.context.logger.info(`Handler found: ${handler ? handler.name : null}`); - - // return handler; - // } - private watchChat(): void { this.context.matrix.on('Room.timeline', (event: Event, room: Room, _toStartOfTimeline) => { const evenType: MatrixEventType = event.getType(); diff --git a/packages/polkabot-plugin-reporter/package.json b/packages/polkabot-plugin-reporter/package.json index e4200b8..6f0085d 100644 --- a/packages/polkabot-plugin-reporter/package.json +++ b/packages/polkabot-plugin-reporter/package.json @@ -10,7 +10,7 @@ "prepublishOnly": "npm run build", "postinstall": "npm run build", "clean": "rm -rf dist build node_modules", - "build:doc": "typedoc src" + "build:doc": "typedoc src --readme none" }, "author": "Chevdor ", "license": "ISC", diff --git a/packages/polkabot-plugin-stallwatcher/package.json b/packages/polkabot-plugin-stallwatcher/package.json index 3cb6f94..e7246e9 100644 --- a/packages/polkabot-plugin-stallwatcher/package.json +++ b/packages/polkabot-plugin-stallwatcher/package.json @@ -10,7 +10,7 @@ "prepublishOnly": "npm run build", "postinstall": "npm run build", "clean": "rm -rf dist node_mdules", - "build:doc": "typedoc src" + "build:doc": "typedoc src --readme none" }, "author": "Chevdor ", "license": "ISC", diff --git a/packages/polkabot/package.json b/packages/polkabot/package.json index be40cec..1227a85 100644 --- a/packages/polkabot/package.json +++ b/packages/polkabot/package.json @@ -18,7 +18,7 @@ "lint": "eslint --ext .js,.ts src", "clean": "rm -rf .nyc_output build coverage node_modules out dist *.log docs", "prepublishOnly": "npm run build", - "build:doc": "typedoc src", + "build:doc": "typedoc src --readme none", "build:docker": "docker build -t chevdor/polkabot .", "docker:run": "docker run --rm -it chevdor/mypolkabot", "patch": "echo 'Disabling package uniqueness check. See https://github.com/polkadot-js/api/issues/984'; sed -i '/function assertSingletonPackage(name) {/ a return' node_modules/@polkadot/util/assertSingletonPackage.js" diff --git a/packages/polkabot/src/index.ts b/packages/polkabot/src/index.ts index e20fd18..c367865 100644 --- a/packages/polkabot/src/index.ts +++ b/packages/polkabot/src/index.ts @@ -60,7 +60,7 @@ export default class Polkabot { const channel = notifier.channel; if (!this.notifiersTable[channel]) this.notifiersTable[channel] = []; this.notifiersTable[channel].push(notifier); - Logger.silly('notifierTable %j', this.notifiersTable); + // Logger.silly('notifierTable %j', this.notifiersTable); } /** @@ -70,7 +70,7 @@ export default class Polkabot { private registerControllable(controllable: Controllable): void { const CtrlClass = getClass(controllable) as unknown as Controllable; assert(CtrlClass.isControllable && CtrlClass.commands.length, 'No commands defined'); - Logger.debug('Registering controllable:', CtrlClass.metas.name); + Logger.debug('Registering controllable:', CtrlClass.meta.name); this.controllablePlugins.push(controllable); } @@ -79,7 +79,7 @@ export default class Polkabot { * @param bot */ private registerChatbot(bot: PolkabotChatbot): void { - Logger.info('Registering Chat bot:', bot.module.name); + Logger.info('Registering Chatbot: %s', bot.module.name); this.chatBots.push(bot); } @@ -147,11 +147,20 @@ export default class Polkabot { }); Promise.all(loads).then(_ => { Logger.info('Done loading plugins'); + this.logAvailableNotificationChannels(); + resolve(); }); }); } + private logAvailableNotificationChannels(): void { + Logger.info('Available notification channels:'); + Object.keys(this.notifiersTable).map((name: string) => { + Logger.info(` - ${name}`); + }) + } + /** * Attach all the controllables to the Chatbot(s) */ @@ -174,7 +183,7 @@ export default class Polkabot { return this.attachControllableToBots(); }) .then(_ => { - Logger.debug('Done loading plugins'); + Logger.debug('Done loading plugins and linking everything together'); }); } diff --git a/packages/polkabot/src/lib/type-helpers.ts b/packages/polkabot/src/lib/type-helpers.ts index 1decfc9..8c708ef 100644 --- a/packages/polkabot/src/lib/type-helpers.ts +++ b/packages/polkabot/src/lib/type-helpers.ts @@ -1,14 +1,30 @@ import { PolkabotPlugin, Controllable, PluginType } from '@polkabot/api/src/types'; import { PolkabotWorker, PolkabotNotifier, PolkabotChatbot } from '@polkabot/api/src'; +/** + * Test whether the [[candidate]] is a [[PolkabotWorker]]. + * @param candidate + */ export function isWorker(candidate: PolkabotPlugin): candidate is PolkabotWorker { return (candidate as PolkabotWorker).start !== undefined; } +/** + * Test whether the [[candidate]] is a [[PolkabotNotifier]]. + * @param candidate + */ export function isNotifier(candidate: PolkabotPlugin): candidate is PolkabotNotifier { return (candidate as PolkabotNotifier).notify !== undefined; } +/** + * Test whether the [[candidate]] is a [[PolkabotChatbot]]. + * @param candidate + */ +export function isChatBot(candidate: PolkabotPlugin): candidate is PolkabotChatbot { + return (candidate as PolkabotChatbot).type === PluginType.Chatbot; +} + /** * Here we test an 'assumed' Controllable that may or not be one. * @param candidate The class to be checked. Note that you should not pass a Controllable object here but the class itself. @@ -16,7 +32,3 @@ export function isNotifier(candidate: PolkabotPlugin): candidate is PolkabotNoti export function isControllable(candidate: Function): boolean { return (candidate as unknown as Controllable).isControllable === true; } - -export function isChatBot(candidate: PolkabotPlugin): candidate is PolkabotChatbot { - return (candidate as PolkabotChatbot).type === PluginType.Chatbot; -} diff --git a/packages/polkabot/src/polkabot.ts b/packages/polkabot/src/polkabot.ts index eb5a79a..b0b4564 100755 --- a/packages/polkabot/src/polkabot.ts +++ b/packages/polkabot/src/polkabot.ts @@ -1,6 +1,6 @@ #!/usr/bin/env node -import Polkabot from './index'; +import Polkabot from './index'; const argv = require('yargs') .usage('Usage: $0 [options]') .help('h') diff --git a/tsconfig.json b/tsconfig.json index 18d8489..ee822f3 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -4,7 +4,7 @@ "moduleResolution": "node", "esModuleInterop": true, "resolveJsonModule": true, - "allowJs": true, + "allowJs": false, "target": "es2015", "noImplicitAny": false, "sourceMap": true, @@ -27,5 +27,8 @@ "@polkabot/api/*": ["packages/polkabot-api/src/*"], } }, + "exclude": [ + "node_modules" + ], "compileOnSave": true } diff --git a/typedoc.js b/typedoc.js index 3e325ce..1294aa5 100644 --- a/typedoc.js +++ b/typedoc.js @@ -1,14 +1,16 @@ module.exports = { name: 'PolkaBOT Project', - exclude: '**/*+(index|e2e|spec|types).ts', + exclude: '**/*+(e2e|spec|types).ts', excludeExternals: true, - excludeNotExported: true, + excludeNotExported: false, excludePrivate: false, excludeProtected: false, hideGenerator: true, includeDeclarations: false, module: 'commonjs', moduleResolution: 'node', - out: 'public/doc/main', - stripInternal: 'false' + out: 'public/doc', + stripInternal: 'false', + mode: "file", + inputFiles: ["packages/**/*"] }; \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index e8f2b36..924f5ed 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2485,7 +2485,7 @@ babylon@^6.18.0: balanced-match@^1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= base-x@^3.0.2, base-x@^3.0.8: @@ -2600,7 +2600,7 @@ boxen@^4.2.0: brace-expansion@^1.1.7: version "1.1.11" - resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== dependencies: balanced-match "^1.0.0" @@ -3172,7 +3172,7 @@ combined-stream@^1.0.6, combined-stream@~1.0.6: commander@^2.11.0, commander@~2.20.3: version "2.20.3" - resolved "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== commondir@^1.0.1: @@ -3195,7 +3195,7 @@ component-emitter@^1.2.0, component-emitter@^1.2.1: concat-map@0.0.1: version "0.0.1" - resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= concat-stream@^1.5.0: @@ -4871,7 +4871,7 @@ fs-write-stream-atomic@^1.0.8: fs.realpath@^1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= fsevents@^1.0.0: @@ -5535,7 +5535,7 @@ infer-owner@^1.0.3, infer-owner@^1.0.4: inflight@^1.0.4: version "1.0.6" - resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= dependencies: once "^1.3.0" @@ -6893,7 +6893,7 @@ minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: minimatch@3.0.4, minimatch@^3.0.0, minimatch@^3.0.3, minimatch@^3.0.4: version "3.0.4" - resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== dependencies: brace-expansion "^1.1.7" @@ -7854,7 +7854,7 @@ path-exists@^4.0.0: path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: version "1.0.1" - resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= path-is-inside@^1.0.2: @@ -7874,7 +7874,7 @@ path-key@^3.1.0: path-parse@^1.0.6: version "1.0.6" - resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== path-type@^1.0.0: @@ -9026,7 +9026,7 @@ source-map@^0.5.0, source-map@^0.5.6, source-map@^0.5.7: source-map@^0.6.0, source-map@^0.6.1: version "0.6.1" - resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== spawn-wrap@^2.0.0: @@ -9807,10 +9807,10 @@ typedoc-default-themes@^0.10.1: dependencies: lunr "^2.3.8" -typedoc@^0.17.6: - version "0.17.6" - resolved "https://registry.yarnpkg.com/typedoc/-/typedoc-0.17.6.tgz#cab87a72c10e05429016d659a4c3071a5a3ffb61" - integrity sha512-pQiYnhG3yJk7939cv2n8uFoTsSgy5Hfiw0dgOQYa9nT9Ya1013dMctQdAXMj8JbNu7KhcauQyq9Zql9D/TziLw== +typedoc@^0.17.7: + version "0.17.7" + resolved "https://registry.yarnpkg.com/typedoc/-/typedoc-0.17.7.tgz#70797401140403a5f91589ed3f4f24c03841bf7a" + integrity sha512-PEnzjwQAGjb0O8a6VDE0lxyLAadqNujN5LltsTUhZETolRMiIJv6Ox+Toa8h0XhKHqAOh8MOmB0eBVcWz6nuAw== dependencies: fs-extra "^8.1.0" handlebars "^4.7.6" @@ -10183,7 +10183,7 @@ wrap-ansi@^6.2.0: wrappy@1: version "1.0.2" - resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= write-file-atomic@^1.1.4: -- GitLab From 3b119e8444321f0e667a4f5b3d52bda639b7cac7 Mon Sep 17 00:00:00 2001 From: chevdor Date: Thu, 28 May 2020 00:41:35 +0200 Subject: [PATCH 81/86] Fix major issues with the decorators and binding of the handlers --- README.adoc | 7 +- package.json | 2 +- packages/polkabot-api/src/PolkabotChatbot.ts | 46 ++++-- .../polkabot-api/src/PolkabotPluginBase.ts | 45 ++++- packages/polkabot-api/src/PolkabotWorker.ts | 8 +- packages/polkabot-api/src/decorators.ts | 117 ++++++++++--- packages/polkabot-api/src/types.ts | 25 ++- packages/polkabot-api/test/decorators.spec.ts | 16 ++ .../polkabot-plugin-blocthday/src/index.ts | 49 ++++-- .../src/index.ts | 20 ++- .../tsconfig.json | 28 +--- .../polkabot-plugin-operator/src/index.ts | 26 +-- .../polkabot-plugin-operator/tsconfig.json | 6 +- packages/polkabot/src/index.ts | 28 +++- tsconfig.json | 3 +- yarn.lock | 154 +++++++++--------- 16 files changed, 391 insertions(+), 189 deletions(-) diff --git a/README.adoc b/README.adoc index 9a43bdc..f5995a5 100644 --- a/README.adoc +++ b/README.adoc @@ -5,12 +5,9 @@ :proj: PolkaBOT :exe: polkabot -image:https://gitlab.com/chevdor/polkabot/badges/master/pipeline.svg[link="https://gitlab.com/chevdor/polkabot/commits/master",title="pipeline status"] -image:https://gitlab.com/chevdor/polkabot/badges/master/coverage.svg[link="https://gitlab.com/chevdor/polkabot/commits/master",title="coverage report"] - == Intro -image::doc/polkabot.png[width=300px] +image::doc/polkabot.png[width=300px, align=center] You can see {proj} in action in link:++https://matrix.to/#/#polkadot-network-status:matrix.org++[#polkadot-network-status:matrix.org] @@ -40,6 +37,8 @@ include::doc/plugins.adoc[leveloffset=+1] == Dev notes +You can find the API documentation at https://polkabot.gitlab.io/polkabot/ + yarn yarn-check yarn upgrade diff --git a/package.json b/package.json index 80cc3fc..ed77a56 100644 --- a/package.json +++ b/package.json @@ -25,6 +25,6 @@ }, "dependencies": { "@babel/runtime": "^7.8.7", - "@polkadot/api": "^1.15.1" + "@polkadot/api": "^1.16.1" } } diff --git a/packages/polkabot-api/src/PolkabotChatbot.ts b/packages/polkabot-api/src/PolkabotChatbot.ts index 3ede0f0..98af81a 100644 --- a/packages/polkabot-api/src/PolkabotChatbot.ts +++ b/packages/polkabot-api/src/PolkabotChatbot.ts @@ -1,6 +1,6 @@ import { PolkabotPluginBase } from './PolkabotPluginBase'; import LoggerSingleton from './LoggerFactory'; -import { ChatBot, Controllable, PluginModule, PluginContext, PluginCommand, RoomAnswer, BotCommand, PluginType } from './types'; +import { ChatBot, Controllable, PluginModule, PluginContext, PluginCommand, RoomAnswer, BotCommand, PluginType, CommandDictionary } from './types'; import { getClass } from './helpers'; const Logger = LoggerSingleton.getInstance(); @@ -11,21 +11,21 @@ export abstract class PolkabotChatbot extends PolkabotPluginBase implements Chat constructor(mod: PluginModule, context: PluginContext, config?) { super(PluginType.Chatbot, mod, context, config); } + public registerControllables(controllables: Controllable[]): void { - Logger.debug('Registering controllables: '); + Logger.info('Registering controllables:'); controllables.map((ctrl: Controllable) => { const CtrlClass = getClass(ctrl) as unknown as Controllable; // const commandObject: PluginCommandSet = (ctrl as Controllable).commandSet; - const commands: PluginCommand[] = CtrlClass.commands; - Logger.debug(` ctrl: ${CtrlClass.meta.name} (!${CtrlClass.meta.alias}) ${commands.map(c => c.name)}`); + const commands: CommandDictionary = CtrlClass.commands; + Logger.info(` ctrl: ${CtrlClass.meta.name} (!${CtrlClass.meta.alias}) ${Object.keys(commands).map(c => commands[c].name)}`); // Logger.info(commands.map(c => c.name)); }); this.controllables = controllables; } public abstract start(); - public abstract stop(); /** * Check that the room id where the sender of the message @@ -71,19 +71,45 @@ export abstract class PolkabotChatbot extends PolkabotPluginBase implements Chat } } - /** This function takes a BotCommand and look for a plugin that can handle it. + /** + * At runtime, once we need to bind our command handlers with the instance + * of the controllables. This method, retrieves this instance. + * We are searching for the controllable that has the right alias and contains the command. + * @param cmd + */ + public static getControllableInstance(controllables: Controllable[], cmd: BotCommand): PolkabotPluginBase { + return controllables.find(c => { + if (!c.isControllable){ + Logger.silly('getControllableInstance, %s not controllable ', (c as unknown as PolkabotPluginBase).module.name); + return false; + } + if (c.meta.alias !== cmd.module) { + Logger.silly('getControllableInstance, %s not matching %s', c.meta.alias, cmd.module); + return false; + } + Logger.silly('Looking for a command matching %s', cmd.command); + return (c.commands[cmd.command] !== undefined); + }) as unknown as PolkabotPluginBase; + } + + /** + * This function takes a BotCommand and look for a plugin that can handle it. * If a plugin is found, its information and handler are returned. * If not, null is retuned. In that case it means we are not able to fullfill the request. */ public static matchCommand(controllables: Controllable[], cmd: BotCommand): PluginCommand | null { // first we look if the module is known - const hits = controllables.filter((c: Controllable) => c.meta.alias === cmd.module); + const hits = controllables.filter((c: Controllable) => (getClass(c) as unknown as Controllable).meta.alias === cmd.module); const controllable = hits.length > 0 ? (hits[0]) : null; if (!controllable) return null; - - const handler: PluginCommand = (controllable as Controllable).commands.find(c => c.name === cmd.command); - return handler; + const commands = (getClass(controllable) as unknown as Controllable).commands; + const res: PluginCommand = commands[cmd.command]; + Logger.silly('Found PluginCommand: %o', res); + // const instance = this.getControllableInstance(controllables, cmd) + // Logger.silly('Found its instance: %o', controllable) + // res.handler = res.handler.bind(instance); // This does not seem to work unfortunately, not sure why + return res; } // TODO diff --git a/packages/polkabot-api/src/PolkabotPluginBase.ts b/packages/polkabot-api/src/PolkabotPluginBase.ts index 9c749b6..8e19647 100644 --- a/packages/polkabot-api/src/PolkabotPluginBase.ts +++ b/packages/polkabot-api/src/PolkabotPluginBase.ts @@ -1,7 +1,8 @@ import { packageJson } from 'package-json'; import * as path from 'path'; import { assert } from './utils'; -import { PluginModule, PluginType, PluginContext } from './types'; +import { PluginModule, PluginType, PluginContext, Controllable } from './types'; +import { getClass } from './helpers'; /** * Any plugin must extend this base class. It provides the basic @@ -33,4 +34,46 @@ export class PolkabotPluginBase { public toString = (): string => { return `[${this.type}] ${this.module.name}`; } + + /** + * Get the value of a given [[key]] from the module matching the plugin's name. + * For instance, calling `this.getConfig('FOO')` from Blocthday will invoke + * confmgr and request POLKABOT_BLOCTHDAY_FOO. + * + * Calling `this.getConfig('FOO', 'BDAY')` forces using the BDAY module: POLKABOT_BDAY_FOO + * + * @param key Configuration key + * @param module Optionnal module name + */ + public getConfig(key: string, module?: string): T { + return this.context.config.Get(module ? module : this.constructor.name.toUpperCase(), key) as T; + } + + /** + * This utility function may be called from the ctor of classes + * that want to be controllable. + * @param this + */ + public static bindCommands(that: PolkabotPluginBase): void { + assert(typeof that !== "undefined", "Binding to undefined is no good idea!") + const CtrlClass = getClass(that) as unknown as Controllable; + assert(typeof CtrlClass.commands !== 'undefined', 'No command was set!') + // if (CtrlClass.commands) { + // let counter = 0; + Object.keys(CtrlClass.commands).map((key: string) => { + // const command = that.commands[key] + //console.log('command:', command) + that.context.logger.silly('Binding method %s:%s', CtrlClass.meta.name, key) // TODO; check here, are we binding the status function or cmdStatus ? + + + // TODO: fix this cheap trick: we want to use the original method name here, not hope that it was called cmdSomething + CtrlClass.commands[key].handler = CtrlClass.commands[key].handler.bind(that); + // counter++; + }); + // this.context.logger.warn('Bound %d commands', counter) + // } + // else { + // // this.context.logger.warn('No command to bind') + // } + } } diff --git a/packages/polkabot-api/src/PolkabotWorker.ts b/packages/polkabot-api/src/PolkabotWorker.ts index 1109e58..9eadbd5 100644 --- a/packages/polkabot-api/src/PolkabotWorker.ts +++ b/packages/polkabot-api/src/PolkabotWorker.ts @@ -14,9 +14,9 @@ export abstract class PolkabotWorker extends PolkabotPluginBase { this.context.logger.debug('STOPPING'); Object.keys(this.unsubs).map(unsub => { - let fn = this.unsubs[unsub] - this.context.logger.debug(`Running unsub for ${unsub}`) - if (fn) fn() - }) + const fn = this.unsubs[unsub]; + this.context.logger.debug(`Running unsub for ${unsub}`); + if (fn) fn(); + }); } } diff --git a/packages/polkabot-api/src/decorators.ts b/packages/polkabot-api/src/decorators.ts index c74f839..837f067 100644 --- a/packages/polkabot-api/src/decorators.ts +++ b/packages/polkabot-api/src/decorators.ts @@ -1,5 +1,7 @@ -import { CallableMeta, CommandDecoratorArgs, PluginCommand, Controllable, ControllableMeta } from './types'; +import { CallableMeta, CommandDecoratorArgs, PluginCommand, ControllableMeta } from './types'; import LoggerSingleton from '@polkabot/api/src/LoggerFactory'; +import { PolkabotChatbot, CommandDictionary } from '.'; +import { assert } from './utils'; const Logger = LoggerSingleton.getInstance(); @@ -11,7 +13,7 @@ const Logger = LoggerSingleton.getInstance(); */ export function Callable(args?: CallableMeta): Function { // Note we cannot use context yet - return (target: Controllable) => { + return (target: any) => { Logger.silly(`DECORATOR Callable on ${(target as unknown as Function).name}`); const meta: ControllableMeta = { name: args && args.name ? args.name : (target as any).name, @@ -19,43 +21,116 @@ export function Callable(args?: CallableMeta): Function { }; // Implement Controllable - if (!target.commands) target.commands = []; + // We keep the following so that we have it initialized even if the user + // did not use @Command yet. + if (typeof target.commands === 'undefined') target.commands = {}; + + //Logger.silly('target= %o', target); + // Logger.silly('Commands are %o', target.constructor.commands); + const commandCount = Object.keys(target.commands).length; + assert(commandCount > 0, 'A Callable without command does not sound good!'); target.meta = meta; - target.isControllable = true; + target.isControllable = commandCount > 0; }; } /** - * This class decorator simplifies how we can make config - * values available. We pass the list of config params and - * they will be made available. + * This type describes the arguments expected by the [[Configured | Configured decorator]]. + */ +export type ConfiguredDecoratorArgs = { + /** Defaults to POLKABOT */ + application?: string; + /** Optional, this is the name of the MODULE as found in the config specs. If omited, the uppercased name of the class is used. */ + module?: string; + /** Mandatory, this is the list of keys we expect in the config */ + keys: string[]; +} + +export interface Configured { + configKeys: string[]; + configModule: string; + configApplication: string; + getKeys(): string[]; + getValue(key: string, module?: string, application?: string): T; +} + +/** + * This class decorator simplifies how we can make config values available. + * We pass the list of config params and they will be made available as list and getters. * @param params The list of config params */ -export function Configured(_params: string[]): Function { - return (_target: any) => { +export function Configured(params: ConfiguredDecoratorArgs): Function { + return (target: Configured) => { + Logger.debug('DECORATOR CONFIGURED'); + target.configApplication = params.application ? params.application : 'POLKABOT'; + target.configModule = params.module ? params.module : (target as any).name.toUpperCase(); + + if (!target.configKeys) target.configKeys = params.keys; + + target.getKeys = (): string[] => { + return target.configKeys; + }; - // if (!target.commands) target.commands = []; - // target.meta = meta; + target.getValue = function (key: string): T { + Logger.debug(`Get key for ${target.configApplication}_${target.configModule}_${key}`); + return 42 as unknown as T; + // return + // [key] + }; }; } +/** + * Define the name of a command given the name of the function the decorator + * is applied to or set defaults. + * For instance, if the function is named cmdStatus, the command will be 'status'. + */ +function getCommandName(functionName: string, args?: CommandDecoratorArgs): string { + return args && args.name ? args.name : functionName.toLowerCase().replace('cmd', ''); +} + +function getCommand(commands: CommandDictionary, msg: string): PluginCommand { + const botCommand = PolkabotChatbot.getBotCommand(msg); + return commands[botCommand.command]; +} + /** * This method decorator signals that the function it is applied to * is a command handler. This function will run to answer a command * given by the user. * @param cmd */ -export function Command(args?: CommandDecoratorArgs): Function { - return function (target: any, propertyKey: string, _descriptor: PropertyDescriptor) { +export function Command(decoargs?: CommandDecoratorArgs): Function { + return function (target: any, methodName: string, _descriptor: PropertyDescriptor) { + let cls = target.constructor + + if (!cls.commands) cls.commands = { } + + // if (typeof cls === 'function') cls = cls() + assert(cls.name !== 'Function', 'There is a problem here. Did you use a static method? You should not!') + + // Logger.info('Command, target %o',target) + // Logger.info('Command, cls: %o', cls) + + Logger.silly(`DECORATOR Command on ${cls.name}:${methodName}`); const cmd: PluginCommand = { - // TODO: extract a getCommandName() - name: args && args.name ? args.name : propertyKey.toLowerCase().replace('cmd', ''), - description: args ? args.description : 'Missing description', - argsRegexp: args ? args.argsRegexp : null, - adminOnly: args ? args.adminOnly : true, - handler: target[propertyKey] + name: getCommandName(methodName, decoargs), + description: decoargs ? decoargs.description : 'Missing description', + argsRegexp: decoargs ? decoargs.argsRegexp : null, + adminOnly: decoargs && decoargs.adminOnly !== undefined ? decoargs.adminOnly : true, + handler: target[methodName] }; - if (!target.constructor.commands) target.constructor.commands = []; - target.constructor.commands.push(cmd); + // if (typeof cls.commands == 'undefined') cls.commands = {}; + Logger.silly(`Adding command ${cmd.name} to commands`); + cls.commands[cmd.name] = cmd; + cls.getCommand = getCommand; + cls.getCommands = () => { + const res = [] + Object.keys(cls.commands).map((key: string) => { + const cmd = cls.commands[key] + res.push(cmd) + }) + return res + } }; } diff --git a/packages/polkabot-api/src/types.ts b/packages/polkabot-api/src/types.ts index 0a91ef3..ab153b8 100644 --- a/packages/polkabot-api/src/types.ts +++ b/packages/polkabot-api/src/types.ts @@ -10,6 +10,7 @@ import { PolkabotChatbot } from './PolkabotChatbot'; import { winston } from './LoggerFactory'; import { packageJson } from 'package-json'; import { ConfigObject } from 'confmgr'; +import { PolkabotPluginBase } from '.'; export { winston }; @@ -92,7 +93,7 @@ export type PluginCommand = { description: string; // what does this command do argsRegexp: string; // regexp to validate the expected args adminOnly: boolean; // is the command only for admins ? - handler: (...args: unknown[]) => CommandHandlerOutput; + handler: (plugin: PolkabotPluginBase, ...args: unknown[]) => CommandHandlerOutput; }; export type CommandDecoratorArgs = { @@ -119,12 +120,29 @@ export type PluginCommandSet = { * be called to control the thing. */ export interface Controllable { - commands: Array; + commands: CommandDictionary; meta: ControllableMeta; isControllable: boolean; - getCommand(cmd: string): PluginCommand | null; + getCommand(commands: PluginCommand[], cmd: string): PluginCommand | null; + getCommands(): PluginCommand[]; +} + +/** + * Some of our plugins may expose some commands to be controlled from outside. + * Those commands will be executed thanks to handlers. + * This type describes a handler dictionnary where + * the command (key) is mapped to the handler function. + */ +export type CommandDictionary = { + [key: string]: PluginCommand; } +// TODO: delete +// interface hasHandlers { +// handlers: CommandDictionary; +// showHandlers: () => void; +// } + /** * A ChatBot must have controllables to send commands to. */ @@ -227,3 +245,4 @@ export type BlockMoment = { date: Date; // what is the estimated date message: string; // formated date string that will be removed }; + diff --git a/packages/polkabot-api/test/decorators.spec.ts b/packages/polkabot-api/test/decorators.spec.ts index 0da333a..eb48245 100644 --- a/packages/polkabot-api/test/decorators.spec.ts +++ b/packages/polkabot-api/test/decorators.spec.ts @@ -35,3 +35,19 @@ describe('Decorators', () => { expect((TestClass2 as unknown as Controllable).commands).to.be.lengthOf(3); }); }); + +// @Configured({ keys: ['VAL1', 'VAL2']}) +// class Configured1 { + +// } + +// describe('Decorator Configured', () => { +// it('should provide defaults', () => { +// expect((Configured1 as unknown as Configured).getKeys).to.be.a('Function'); +// expect((Configured1 as unknown as Configured).getValue).to.be.a('Function'); + +// expect((Configured1 as unknown as Configured).getKeys()).to.deep.equal(['VAL1', 'VAL2']) +// expect((Configured1 as unknown as Configured).getValue('VAL1')).to.equal(42) + +// }); +// }); diff --git a/packages/polkabot-plugin-blocthday/src/index.ts b/packages/polkabot-plugin-blocthday/src/index.ts index fcd7e37..b22836e 100644 --- a/packages/polkabot-plugin-blocthday/src/index.ts +++ b/packages/polkabot-plugin-blocthday/src/index.ts @@ -2,37 +2,59 @@ import BN from 'bn.js'; import { PolkabotWorker } from '@polkabot/api/src/PolkabotWorker'; import { HeaderExtended } from '@polkadot/api-derive/type'; import { Command, Callable } from '@polkabot/api/src/decorators'; -import { PluginModule, PluginContext, Room, CommandHandlerOutput, NotifierMessage, NotifierSpecs } from '@polkabot/api/src/types'; +import { PluginModule, PluginContext, Room, CommandHandlerOutput, NotifierMessage, NotifierSpecs, ErrorCode, Controllable } from '@polkabot/api/src/types'; +import { PolkabotPluginBase, assert } from '@polkabot/api/src'; + +/** + * This is a trick: we cannot declare Blocthday as implementing + * the Controllable interface as it 'apparently' does not. + * It actually does thanks to decorators but this is dynamic + * and typescript cannot know about it. This also allows not having to + * cast 'as unknown as Controllable' all over the place. + */ +// interface Blocthday extends Controllable { } // TODO: bring back -// @Configured({['NB_BLOCKS'}]) @Callable({ alias: 'bday' }) export default class Blocthday extends PolkabotWorker { - private NB_BLOCKS: number; + private nbBlocks: number; public constructor(mod: PluginModule, context: PluginContext, config?) { super(mod, context, config); this.context.logger.silly('++ Blocthday'); - // TODO: would be great to use a decorator for that - this.NB_BLOCKS = this.context.config.Get('BLOCTHDAY', 'NB_BLOCKS'); + // The following asserts are only valid if you want this plugin to be Controllable + const commands = (Blocthday as unknown as Controllable).commands + assert(typeof commands !== 'undefined', 'Commands were not set') + assert(Object.values(commands).length > 0, 'commands contains no command!') + //this.context.logger.silly('Blocthday: %o', Blocthday); // OK + //this.context.logger.silly('commands: %o', commands); // OK + + PolkabotPluginBase.bindCommands(this); + + this.nbBlocks = this.getConfig('NB_BLOCKS'); + this.context.logger.silly('nbBlocks set to %d', this.nbBlocks); } @Command({ description: 'Show status of the plugin' }) - public cmdStatus(_event, room: Room): CommandHandlerOutput { + // public cmdStatus(that: Blocthday, _event, room: Room): CommandHandlerOutput { + public status( _event, room: Room): CommandHandlerOutput { + console.log('Running Blocthday.status()') + console.log(this, this.context) + this.context.logger.debug('Blocthday.cmdStatus()'); return { - code: -1, - msg: 'Implement me first!', + code: ErrorCode.Ok, + msg: `We wish blocthday every ${this.nbBlocks}`, answers: [{ room, - message: 'Oups! This is BlockDay, this command is not implmented yet 🥴' + message: `We wish blocthday every ${this.nbBlocks}` }] }; } public start(): void { - this.context.logger.info('Starting with NB_BLOCKS: %d', this.NB_BLOCKS); + this.context.logger.info('Starting with NB_BLOCKS: %d', this.nbBlocks); this.watchChain().catch(error => { this.context.logger.error('Error subscribing to chain head: ', error); @@ -44,13 +66,14 @@ export default class Blocthday extends PolkabotWorker { * See https://polkadot.js.org/api/examples/promise/02_listen_to_blocks/ */ async watchChain(): Promise { + this.unsubs['subscribeNewHeads'] = await this.context.polkadot.rpc.chain.subscribeNewHeads((header: HeaderExtended) => { const bnBlockNumber: BN = header.number.unwrap().toBn(); - const bnNumberOfBlocks: BN = new BN(this.NB_BLOCKS); + const bnNumberOfBlocks: BN = new BN(this.nbBlocks); if (bnBlockNumber.mod(bnNumberOfBlocks).toString(10) === '0') { const notifierMessage: NotifierMessage = { - message: `Happy ${this.NB_BLOCKS}-BlocthDay!!! Chain is now at #${header.number}` + message: `Happy ${this.nbBlocks}-BlocthDay!!! Chain is now at #${header.number}` }; const notifierSpecs: NotifierSpecs = { @@ -62,3 +85,5 @@ export default class Blocthday extends PolkabotWorker { }); } } + +// export default Blocthday; // TODO: bring back diff --git a/packages/polkabot-plugin-notifier-matrix/src/index.ts b/packages/polkabot-plugin-notifier-matrix/src/index.ts index 0f8fcd0..fc43cb8 100644 --- a/packages/polkabot-plugin-notifier-matrix/src/index.ts +++ b/packages/polkabot-plugin-notifier-matrix/src/index.ts @@ -1,16 +1,22 @@ import { PolkabotNotifier } from '../../polkabot-api/src/PolkabotNotifier'; -import { PluginModule, PluginContext, NotifierMessage, NotifierSpecs, CommandHandlerOutput, ErrorCode, Room } from '../../polkabot-api/src/types'; -import { Callable, Command } from '../../polkabot-api/src/decorators'; +import { PluginModule, PluginContext, NotifierMessage, NotifierSpecs, CommandHandlerOutput, ErrorCode, Room, Controllable } from '../../polkabot-api/src/types'; +import { Command, Callable } from '@polkabot/api/src/decorators'; +import { assert, PolkabotPluginBase } from '@polkabot/api/src'; -@Callable() +@Callable({ alias: 'matrix' }) export default class MatrixNotifier extends PolkabotNotifier { public channel = 'matrix'; public constructor(mod: PluginModule, context: PluginContext, config?) { super(mod, context, config); - // this.context.logger.info("++MatrixNotifier", this); + this.context.logger.silly("++MatrixNotifier", this); - // TODO: add decorators to bring that back - // this.commandSet = getCommandSet(this); + const commands = (MatrixNotifier as unknown as Controllable).commands + assert(typeof commands !== 'undefined', 'Commands were not set') + assert(Object.values(commands).length > 0, 'commands contains no command!') + //this.context.logger.silly('MatrixNotifier: %o', MatrixNotifier); // OK + //this.context.logger.silly('commands: %o', commands); // OK + + PolkabotPluginBase.bindCommands(this); } public notify(message: NotifierMessage, specs: NotifierSpecs): void { @@ -21,7 +27,7 @@ export default class MatrixNotifier extends PolkabotNotifier { this.context.matrix.sendTextMessage(roomId, message.message).finally(null); } - @Command() + @Command({ description: 'Send a message as if the bot did' }) public cmdSay(_event, room: Room, messages: string[]): CommandHandlerOutput { this.context.logger.debug('MatrixNotifier.cmdSay()'); diff --git a/packages/polkabot-plugin-notifier-matrix/tsconfig.json b/packages/polkabot-plugin-notifier-matrix/tsconfig.json index fb9cecc..2483e4d 100644 --- a/packages/polkabot-plugin-notifier-matrix/tsconfig.json +++ b/packages/polkabot-plugin-notifier-matrix/tsconfig.json @@ -1,27 +1,11 @@ { + "extends": "../../tsconfig.json", "compilerOptions": { - "module": "commonjs", - "moduleResolution": "node", - "esModuleInterop": true, - "resolveJsonModule": true, - "allowJs": true, - "target": "es2015", - "noImplicitAny": false, - "sourceMap": true, - "preserveConstEnums": true, - "lib": ["es2015", "dom"], - "noUnusedLocals": true, - "noImplicitReturns": true, - "noImplicitThis": true, - "alwaysStrict": true, - "strictNullChecks": false, - "noUnusedParameters": false, - "pretty": true, - "allowUnreachableCode": false, - "experimentalDecorators": true, - "suppressImplicitAnyIndexErrors": true, - "outDir": "./dist" + "outDir": "./dist", + "paths": { + "Command": ["polkabot-api/src/decorators"], + "Callable": ["polkabot-api/src/decorators"], + }, }, "include": ["./bin/**/*", "./src/**/*", "./test/**/*", "./package.json"], - "compileOnSave": true } diff --git a/packages/polkabot-plugin-operator/src/index.ts b/packages/polkabot-plugin-operator/src/index.ts index 8f405db..3d9423b 100644 --- a/packages/polkabot-plugin-operator/src/index.ts +++ b/packages/polkabot-plugin-operator/src/index.ts @@ -30,28 +30,15 @@ export default class Operator extends PolkabotChatbot { public constructor(mod: PluginModule, context: PluginContext, config?) { super(mod, context, config); - - // TODO: Fix below = add decorators - // this.commandSet = getCommandSet(this); assert(this.context.config, 'The config seems to be missing'); this.params = this.loadParams(); this.matrixHelper = new MatrixHelper(this.params); } - // getCommandSet(): PluginCommandSet { - // const res: PluginCommandSet = { ...Operator.meta, commands: Operator.commands }; - // assert(res.name.length > 0, 'something went wrong'); - // return res; - // } - public start(): void { this.watchChat(); } - public stop(): void { - // clean up here - } - @Command() public cmdStatus(_event: Event, room: Room, ..._args: string[]): CommandHandlerOutput { const uptimeSec: number = process.uptime(); @@ -82,7 +69,8 @@ export default class Operator extends PolkabotChatbot { assert(CtrlClass.isControllable, 'Houston, we expect a controllable here!'); message += `
              • ${CtrlClass.meta.name}:
                • `; - CtrlClass.commands.map((command: PluginCommand) => { + Object.keys(CtrlClass.commands).map((commandName: string) => { + const command = CtrlClass.commands[commandName]; message += `
                • !${CtrlClass.meta.alias} ${command.name}: ${command.description} - ${ command.adminOnly ? 'Admin' : 'Public' }
                • `; @@ -156,13 +144,15 @@ export default class Operator extends PolkabotChatbot { message: 'I was tought to smile when I don\'t get it. 😁' }); } else { - const cmdHandler = PolkabotChatbot.matchCommand(this.controllables, botCommand); - + const cmdHandler: PluginCommand = PolkabotChatbot.matchCommand(this.controllables, botCommand); + // const instance = PolkabotChatbot.getControllableInstance(this.controllables, botCommand); + // assert(instance !== undefined, 'Instance NOT found'); // this.context.logger.info(" *** bot command handler:", JSON.stringify(cmdHandler, null, 2)); if (cmdHandler) { - this.context.logger.info(`handler found, running ${cmdHandler.name}`); - const output: CommandHandlerOutput = cmdHandler.handler.bind(this)(event, room, botCommand.args); + this.context.logger.info(`handler found, running [${cmdHandler.name}]`); + const output: CommandHandlerOutput = cmdHandler.handler(event, room, botCommand.args); + this.context.logger.info(`RET: ${output.code} : ${output.msg}`); if (output.answers) { // this.answer(output.answers[0]) diff --git a/packages/polkabot-plugin-operator/tsconfig.json b/packages/polkabot-plugin-operator/tsconfig.json index 935c08c..2483e4d 100644 --- a/packages/polkabot-plugin-operator/tsconfig.json +++ b/packages/polkabot-plugin-operator/tsconfig.json @@ -2,6 +2,10 @@ "extends": "../../tsconfig.json", "compilerOptions": { "outDir": "./dist", + "paths": { + "Command": ["polkabot-api/src/decorators"], + "Callable": ["polkabot-api/src/decorators"], + }, }, "include": ["./bin/**/*", "./src/**/*", "./test/**/*", "./package.json"], -} \ No newline at end of file +} diff --git a/packages/polkabot/src/index.ts b/packages/polkabot/src/index.ts index c367865..5dd992a 100644 --- a/packages/polkabot/src/index.ts +++ b/packages/polkabot/src/index.ts @@ -9,7 +9,7 @@ import { ConfigManager, ConfigObject } from 'confmgr'; import { assert } from '@polkadot/util'; import { routeMatrixLogger } from './lib/matrix-helpers'; import { NotifiersTable } from './types'; -import { PolkabotChatbot, PolkabotNotifier, MatrixClient, Controllable, PolkabotPlugin, NotifierMessage, NotifierSpecs, PluginModule, PluginContext, RoomMember, winston, getClass } from '@polkabot/api/src'; +import { PolkabotChatbot, PolkabotNotifier, MatrixClient, Controllable, PolkabotPlugin, NotifierMessage, NotifierSpecs, PluginModule, PluginContext, RoomMember, winston, getClass, PolkabotPluginBase, CommandDictionary } from '@polkabot/api/src'; import LoggerSingleton from '@polkabot/api/src/LoggerFactory'; import { isControllable, isWorker, isNotifier, isChatBot } from './lib/type-helpers'; @@ -68,10 +68,24 @@ export default class Polkabot { * @param controllable */ private registerControllable(controllable: Controllable): void { + const commandCount = (commands: CommandDictionary): number => { + if (typeof CtrlClass === 'undefined') return 0; + if (typeof CtrlClass.commands === 'undefined') return 0; + return Object.keys(CtrlClass.commands).length; + }; const CtrlClass = getClass(controllable) as unknown as Controllable; - assert(CtrlClass.isControllable && CtrlClass.commands.length, 'No commands defined'); - Logger.debug('Registering controllable:', CtrlClass.meta.name); - this.controllablePlugins.push(controllable); + const commands = CtrlClass.commands; + if (typeof commands === 'undefined') Logger.error('commands should not be undefined! Did you use some decorators ?') + + Logger.silly(`${(controllable as unknown as PolkabotPluginBase).module.name} - isControllable: ${CtrlClass.isControllable}, nb commands: ${commandCount(CtrlClass.commands)}`); + // assert(CtrlClass.isControllable && commandCount(CtrlClass), 'No commands defined'); + + if (commandCount(CtrlClass.commands) > 0) { + Logger.info('Registering controllable: %s', CtrlClass.meta.name); + this.controllablePlugins.push(controllable); + } else { + Logger.warn('SKIPPING Registering controllable %s as it has 0 commands', CtrlClass.meta.name); + } } /** @@ -148,7 +162,7 @@ export default class Polkabot { Promise.all(loads).then(_ => { Logger.info('Done loading plugins'); this.logAvailableNotificationChannels(); - + resolve(); }); }); @@ -158,7 +172,7 @@ export default class Polkabot { Logger.info('Available notification channels:'); Object.keys(this.notifiersTable).map((name: string) => { Logger.info(` - ${name}`); - }) + }); } /** @@ -183,7 +197,7 @@ export default class Polkabot { return this.attachControllableToBots(); }) .then(_ => { - Logger.debug('Done loading plugins and linking everything together'); + Logger.info('Done loading plugins and linking everything together. Polkabot is ready!'); }); } diff --git a/tsconfig.json b/tsconfig.json index ee822f3..2c018fa 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -5,7 +5,7 @@ "esModuleInterop": true, "resolveJsonModule": true, "allowJs": false, - "target": "es2015", + "target": "ES2017", "noImplicitAny": false, "sourceMap": true, "preserveConstEnums": true, @@ -19,6 +19,7 @@ "pretty": true, "allowUnreachableCode": false, "experimentalDecorators": true, + "emitDecoratorMetadata": true, "suppressImplicitAnyIndexErrors": true, // "outDir": "./dist", "baseUrl": ".", diff --git a/yarn.lock b/yarn.lock index 924f5ed..cda904f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1115,126 +1115,126 @@ dependencies: "@types/node" ">= 8" -"@polkadot/api-derive@1.15.1": - version "1.15.1" - resolved "https://registry.yarnpkg.com/@polkadot/api-derive/-/api-derive-1.15.1.tgz#8b08f3224bbe5e6156c27827c0f87d8e1973d5d9" - integrity sha512-QiCfWVwZP2NAOFb8qacoejDh6lKj6g0zwrJ0ZctORKxigL4PMiW1sStotNipL7fTOHNDWvwBIIEb1y3eCQ2GMg== +"@polkadot/api-derive@1.16.1": + version "1.16.1" + resolved "https://registry.yarnpkg.com/@polkadot/api-derive/-/api-derive-1.16.1.tgz#a0560d1788fff69a1f7cdd209f40b3e37e7263b0" + integrity sha512-SLH/Wq5sIMQ9zFbQKdmB7Ne/jXMRgaA8TZ5rj0n0dp0yOqadEiJHZC5lx9hm5kR4u/DCuZc7aOFHYwd33N64qA== dependencies: "@babel/runtime" "^7.9.6" - "@polkadot/api" "1.15.1" - "@polkadot/rpc-core" "1.15.1" - "@polkadot/rpc-provider" "1.15.1" - "@polkadot/types" "1.15.1" - "@polkadot/util" "^2.10.1" - "@polkadot/util-crypto" "^2.10.1" + "@polkadot/api" "1.16.1" + "@polkadot/rpc-core" "1.16.1" + "@polkadot/rpc-provider" "1.16.1" + "@polkadot/types" "1.16.1" + "@polkadot/util" "^2.11.1" + "@polkadot/util-crypto" "^2.11.1" bn.js "^5.1.2" memoizee "^0.4.14" rxjs "^6.5.5" -"@polkadot/api@1.15.1", "@polkadot/api@^1.15.1": - version "1.15.1" - resolved "https://registry.yarnpkg.com/@polkadot/api/-/api-1.15.1.tgz#cfb926e529a181e4234f9f4774fd72fa23fbae42" - integrity sha512-m4Je+RF6yU29VOd9SAiUgckdzFXmPgwOKPkk8C+CZSgvukGxqLs11LGRpPc3bhht2kdCUjcLaZY62+6iRZfuog== +"@polkadot/api@1.16.1", "@polkadot/api@^1.16.1": + version "1.16.1" + resolved "https://registry.yarnpkg.com/@polkadot/api/-/api-1.16.1.tgz#a0ff0e7307bae71a202a2e3be818ecce81f96c51" + integrity sha512-wNEi/9wD+5hSt7zm/dKErkJqkuHFFBJAB3vy4ZCOVQRQ6IkxVJ0OMg/7Q2xIEYxz962VmT/DDhwqOb4JBKW5qw== dependencies: "@babel/runtime" "^7.9.6" - "@polkadot/api-derive" "1.15.1" - "@polkadot/keyring" "^2.10.1" - "@polkadot/metadata" "1.15.1" - "@polkadot/rpc-core" "1.15.1" - "@polkadot/rpc-provider" "1.15.1" - "@polkadot/types" "1.15.1" - "@polkadot/types-known" "1.15.1" - "@polkadot/util" "^2.10.1" - "@polkadot/util-crypto" "^2.10.1" + "@polkadot/api-derive" "1.16.1" + "@polkadot/keyring" "^2.11.1" + "@polkadot/metadata" "1.16.1" + "@polkadot/rpc-core" "1.16.1" + "@polkadot/rpc-provider" "1.16.1" + "@polkadot/types" "1.16.1" + "@polkadot/types-known" "1.16.1" + "@polkadot/util" "^2.11.1" + "@polkadot/util-crypto" "^2.11.1" bn.js "^5.1.2" eventemitter3 "^4.0.4" rxjs "^6.5.5" -"@polkadot/keyring@^2.10.1": - version "2.10.1" - resolved "https://registry.yarnpkg.com/@polkadot/keyring/-/keyring-2.10.1.tgz#815c01984c6c3721e3f9454f64bf55bdac5e01d0" - integrity sha512-6Wbft7MtxbnWaHZpvg3yT8l4oQNp5xTwbqVkdaRfXmPsmhJ1YJcprFWLuKsWZE4x59cYyK7eKhnKcAvFny4HTQ== +"@polkadot/keyring@^2.11.1": + version "2.11.1" + resolved "https://registry.yarnpkg.com/@polkadot/keyring/-/keyring-2.11.1.tgz#4f3fb9f7d3cda7de743899a819cac85a0db9fc6b" + integrity sha512-nIeEiX0w7FmPJsuoAsEpDBRfy7QAgj+NTiY67mZoEDHAOJ6E9Bf6PubR24k1wzV57/0gmNEbd5FNZdI+tLSKdw== dependencies: "@babel/runtime" "^7.9.6" - "@polkadot/util" "2.10.1" - "@polkadot/util-crypto" "2.10.1" + "@polkadot/util" "2.11.1" + "@polkadot/util-crypto" "2.11.1" -"@polkadot/metadata@1.15.1": - version "1.15.1" - resolved "https://registry.yarnpkg.com/@polkadot/metadata/-/metadata-1.15.1.tgz#d3bffb4530f422c934980081729f999d54c70649" - integrity sha512-sWVd7Vsj9d/5xB/C6H2Yitfl1RMjNniUwzioy2DEa5pYpfHZ7QYJEZ3LpARLHZnoJlfouOo2+NNYniCFfo6DAA== +"@polkadot/metadata@1.16.1": + version "1.16.1" + resolved "https://registry.yarnpkg.com/@polkadot/metadata/-/metadata-1.16.1.tgz#ed96227ec046e53a4a9e0ad21a9d582daa4b07fa" + integrity sha512-qQ13JoDCt5jgV6WwKs/8zj41t9kBWGCArixs0lNzVaqYf3igSsvA+p7H6t9K8yvSpWzK7rzQuzvMwnq3prlMWg== dependencies: "@babel/runtime" "^7.9.6" - "@polkadot/types" "1.15.1" - "@polkadot/types-known" "1.15.1" - "@polkadot/util" "^2.10.1" - "@polkadot/util-crypto" "^2.10.1" + "@polkadot/types" "1.16.1" + "@polkadot/types-known" "1.16.1" + "@polkadot/util" "^2.11.1" + "@polkadot/util-crypto" "^2.11.1" bn.js "^5.1.2" -"@polkadot/rpc-core@1.15.1": - version "1.15.1" - resolved "https://registry.yarnpkg.com/@polkadot/rpc-core/-/rpc-core-1.15.1.tgz#fe21c37ce6ddc565abb3cdeb49f45349eee7e5ef" - integrity sha512-N/bwpaYSs1qBfKxmeKRTrCzgY13NQ0SAtzSxczA1nKLgkpCGgcSkJPyOdlmBA/hSQabB5GO6CDfrIaS0cNqe2A== +"@polkadot/rpc-core@1.16.1": + version "1.16.1" + resolved "https://registry.yarnpkg.com/@polkadot/rpc-core/-/rpc-core-1.16.1.tgz#be1a7e04e74092dd0c10b0ad22f8a92cd0e49aa8" + integrity sha512-DjPZOTWOPzNy0/gzrcMVWzOcYmxXvFwoGsZjRo4eD+5l+A5Zwd+3fDy6zuafVmHxRW0pcwMpbk1KmnEwyLhUtg== dependencies: "@babel/runtime" "^7.9.6" - "@polkadot/metadata" "1.15.1" - "@polkadot/rpc-provider" "1.15.1" - "@polkadot/types" "1.15.1" - "@polkadot/util" "^2.10.1" + "@polkadot/metadata" "1.16.1" + "@polkadot/rpc-provider" "1.16.1" + "@polkadot/types" "1.16.1" + "@polkadot/util" "^2.11.1" memoizee "^0.4.14" rxjs "^6.5.5" -"@polkadot/rpc-provider@1.15.1": - version "1.15.1" - resolved "https://registry.yarnpkg.com/@polkadot/rpc-provider/-/rpc-provider-1.15.1.tgz#1d763bc7c1dfe0b7d13335bf85506c83e20c675f" - integrity sha512-WaVZ5fjacPtiAEI6W3rrDV3KJtjSgmoKQxKCgZUH06kFYAFBBM/2GvKqdvFlQ2bh57QrcLZPuia55yzSAGUjfQ== +"@polkadot/rpc-provider@1.16.1": + version "1.16.1" + resolved "https://registry.yarnpkg.com/@polkadot/rpc-provider/-/rpc-provider-1.16.1.tgz#7709ea14851a8c6f0ee35cfaeb8217f722cf5b68" + integrity sha512-qhqI3kfzetusollFhnsgpio6kvM8f/tMB5gROYXj5Oq2t9FcM03BzOWzqXRcBvUUQwQS1qp8eZzTYVVSf3CqnA== dependencies: "@babel/runtime" "^7.9.6" - "@polkadot/metadata" "1.15.1" - "@polkadot/types" "1.15.1" - "@polkadot/util" "^2.10.1" - "@polkadot/util-crypto" "^2.10.1" + "@polkadot/metadata" "1.16.1" + "@polkadot/types" "1.16.1" + "@polkadot/util" "^2.11.1" + "@polkadot/util-crypto" "^2.11.1" bn.js "^5.1.2" eventemitter3 "^4.0.4" isomorphic-fetch "^2.2.1" websocket "^1.0.31" -"@polkadot/types-known@1.15.1": - version "1.15.1" - resolved "https://registry.yarnpkg.com/@polkadot/types-known/-/types-known-1.15.1.tgz#d785c51f125702fba7a60849fdefa2a534ed1b32" - integrity sha512-8qvMLCgJJMWXIbJ6QjjhLUB/sKyzsNGLUwoiKf2doaYa4ATfZoNv9jygKLkfogFmQ2HD1y+G6vpK1s79CB5InQ== +"@polkadot/types-known@1.16.1": + version "1.16.1" + resolved "https://registry.yarnpkg.com/@polkadot/types-known/-/types-known-1.16.1.tgz#748c07c7b613e01c69fd780c71aab8583eecef63" + integrity sha512-rcANtjwGPTt3ZWVrwGtRk5UJYHTjqAvHL2JRNWn7hcedYbYWFoioCMloeIwCZgi3KZmPWeerNHHrz1SzMyF8HA== dependencies: "@babel/runtime" "^7.9.6" - "@polkadot/types" "1.15.1" - "@polkadot/util" "^2.10.1" + "@polkadot/types" "1.16.1" + "@polkadot/util" "^2.11.1" bn.js "^5.1.2" -"@polkadot/types@1.15.1": - version "1.15.1" - resolved "https://registry.yarnpkg.com/@polkadot/types/-/types-1.15.1.tgz#68ac9c420db74273b26812d4c7960f8a32b6b8d5" - integrity sha512-k4Yhv5TV+K9ubwXYgxm/k5Ml8IIsenCVNhhEn+1Ym5lnr+zKaDhwpjNWrqp3xabktiikkUQnnYLVY9rP3pV23Q== +"@polkadot/types@1.16.1": + version "1.16.1" + resolved "https://registry.yarnpkg.com/@polkadot/types/-/types-1.16.1.tgz#6f43abdaa8c037bd6f06a7dcf6e7e4ae0fcbc716" + integrity sha512-Z3RhHwV8YGG/wf5L7KeiFGt5NoAz4nS8hwIFgfMlTfPbb2obkuHEd6tEcsziwquqj5dnxM5sAfVFarInsyqD+A== dependencies: "@babel/runtime" "^7.9.6" - "@polkadot/metadata" "1.15.1" - "@polkadot/util" "^2.10.1" - "@polkadot/util-crypto" "^2.10.1" + "@polkadot/metadata" "1.16.1" + "@polkadot/util" "^2.11.1" + "@polkadot/util-crypto" "^2.11.1" "@types/bn.js" "^4.11.6" bn.js "^5.1.2" memoizee "^0.4.14" rxjs "^6.5.5" -"@polkadot/util-crypto@2.10.1", "@polkadot/util-crypto@^2.10.1": - version "2.10.1" - resolved "https://registry.yarnpkg.com/@polkadot/util-crypto/-/util-crypto-2.10.1.tgz#10c00a0b63d3f4005583e6aab5e9baee5234437c" - integrity sha512-sxJZwi5CWfOrytVGtvMT5gn7+rrdgCECtmiG94AouyzdCIWqr9DC+BbX95q7Rja8+kLwkm08FWAsI5pwN9oizQ== +"@polkadot/util-crypto@2.11.1", "@polkadot/util-crypto@^2.11.1": + version "2.11.1" + resolved "https://registry.yarnpkg.com/@polkadot/util-crypto/-/util-crypto-2.11.1.tgz#38bdca3b521127f82fbbfa84d6eb3716f6ebefb3" + integrity sha512-5LqSdjckKMOrdsGudeRKl2ybO0KS8n0HFTQ/zXTSUmXEOYrjlr6/XbwdJloSRwaJJvEeQcXlGrT9N4J7VousqQ== dependencies: "@babel/runtime" "^7.9.6" - "@polkadot/util" "2.10.1" + "@polkadot/util" "2.11.1" "@polkadot/wasm-crypto" "^1.2.1" base-x "^3.0.8" bip39 "^3.0.2" blakejs "^1.1.0" - bn.js "^5.1.1" + bn.js "^5.1.2" bs58 "^4.0.1" elliptic "^6.5.2" js-sha3 "^0.8.0" @@ -1242,14 +1242,14 @@ tweetnacl "^1.0.3" xxhashjs "^0.2.2" -"@polkadot/util@2.10.1", "@polkadot/util@^2.10.1": - version "2.10.1" - resolved "https://registry.yarnpkg.com/@polkadot/util/-/util-2.10.1.tgz#981e19327b49532c8b8d2f2d18e23c3548cbe969" - integrity sha512-DaIvvx3zphDlf3ZywLnlrRTngcjGIl7Dn3lbwsgHlMSyENz07TG6YG+ztr0ztUrb9BqFKAeH6XGNtGPBp0LxwA== +"@polkadot/util@2.11.1", "@polkadot/util@^2.11.1": + version "2.11.1" + resolved "https://registry.yarnpkg.com/@polkadot/util/-/util-2.11.1.tgz#be41aa56c4969e4efef755b3a648f2ee7af93ab3" + integrity sha512-JW09nmznZcM8KLfQISUQHu47/uq9mZwMfvDD/FSPVCOWBhYbwfjQknrwvslvhaJmBk/EvQsOS9hbE0/I4EoZAg== dependencies: "@babel/runtime" "^7.9.6" "@types/bn.js" "^4.11.6" - bn.js "^5.1.1" + bn.js "^5.1.2" camelcase "^5.3.1" chalk "^4.0.0" ip-regex "^4.1.0" -- GitLab From f80434ec6c8c19c434bb9ec6dcd63ff2873ab340 Mon Sep 17 00:00:00 2001 From: chevdor Date: Thu, 28 May 2020 00:52:36 +0200 Subject: [PATCH 82/86] Fix linting issues --- .../polkabot-api/src/PolkabotPluginBase.ts | 6 +++--- packages/polkabot-api/src/decorators.ts | 18 +++++++++--------- .../polkabot-plugin-blocthday/src/index.ts | 10 +++++----- .../src/index.ts | 8 ++++---- packages/polkabot/src/index.ts | 8 ++++---- 5 files changed, 25 insertions(+), 25 deletions(-) diff --git a/packages/polkabot-api/src/PolkabotPluginBase.ts b/packages/polkabot-api/src/PolkabotPluginBase.ts index 8e19647..0f51e35 100644 --- a/packages/polkabot-api/src/PolkabotPluginBase.ts +++ b/packages/polkabot-api/src/PolkabotPluginBase.ts @@ -55,15 +55,15 @@ export class PolkabotPluginBase { * @param this */ public static bindCommands(that: PolkabotPluginBase): void { - assert(typeof that !== "undefined", "Binding to undefined is no good idea!") + assert(typeof that !== 'undefined', 'Binding to undefined is no good idea!'); const CtrlClass = getClass(that) as unknown as Controllable; - assert(typeof CtrlClass.commands !== 'undefined', 'No command was set!') + assert(typeof CtrlClass.commands !== 'undefined', 'No command was set!'); // if (CtrlClass.commands) { // let counter = 0; Object.keys(CtrlClass.commands).map((key: string) => { // const command = that.commands[key] //console.log('command:', command) - that.context.logger.silly('Binding method %s:%s', CtrlClass.meta.name, key) // TODO; check here, are we binding the status function or cmdStatus ? + that.context.logger.silly('Binding method %s:%s', CtrlClass.meta.name, key); // TODO; check here, are we binding the status function or cmdStatus ? // TODO: fix this cheap trick: we want to use the original method name here, not hope that it was called cmdSomething diff --git a/packages/polkabot-api/src/decorators.ts b/packages/polkabot-api/src/decorators.ts index 837f067..528cfed 100644 --- a/packages/polkabot-api/src/decorators.ts +++ b/packages/polkabot-api/src/decorators.ts @@ -102,12 +102,12 @@ function getCommand(commands: CommandDictionary, msg: string): PluginCommand { */ export function Command(decoargs?: CommandDecoratorArgs): Function { return function (target: any, methodName: string, _descriptor: PropertyDescriptor) { - let cls = target.constructor + const cls = target.constructor; - if (!cls.commands) cls.commands = { } + if (!cls.commands) cls.commands = { }; // if (typeof cls === 'function') cls = cls() - assert(cls.name !== 'Function', 'There is a problem here. Did you use a static method? You should not!') + assert(cls.name !== 'Function', 'There is a problem here. Did you use a static method? You should not!'); // Logger.info('Command, target %o',target) // Logger.info('Command, cls: %o', cls) @@ -125,12 +125,12 @@ export function Command(decoargs?: CommandDecoratorArgs): Function { cls.commands[cmd.name] = cmd; cls.getCommand = getCommand; cls.getCommands = () => { - const res = [] + const res = []; Object.keys(cls.commands).map((key: string) => { - const cmd = cls.commands[key] - res.push(cmd) - }) - return res - } + const cmd = cls.commands[key]; + res.push(cmd); + }); + return res; + }; }; } diff --git a/packages/polkabot-plugin-blocthday/src/index.ts b/packages/polkabot-plugin-blocthday/src/index.ts index b22836e..aeaa02b 100644 --- a/packages/polkabot-plugin-blocthday/src/index.ts +++ b/packages/polkabot-plugin-blocthday/src/index.ts @@ -23,9 +23,9 @@ export default class Blocthday extends PolkabotWorker { this.context.logger.silly('++ Blocthday'); // The following asserts are only valid if you want this plugin to be Controllable - const commands = (Blocthday as unknown as Controllable).commands - assert(typeof commands !== 'undefined', 'Commands were not set') - assert(Object.values(commands).length > 0, 'commands contains no command!') + const commands = (Blocthday as unknown as Controllable).commands; + assert(typeof commands !== 'undefined', 'Commands were not set'); + assert(Object.values(commands).length > 0, 'commands contains no command!'); //this.context.logger.silly('Blocthday: %o', Blocthday); // OK //this.context.logger.silly('commands: %o', commands); // OK @@ -38,8 +38,8 @@ export default class Blocthday extends PolkabotWorker { @Command({ description: 'Show status of the plugin' }) // public cmdStatus(that: Blocthday, _event, room: Room): CommandHandlerOutput { public status( _event, room: Room): CommandHandlerOutput { - console.log('Running Blocthday.status()') - console.log(this, this.context) + console.log('Running Blocthday.status()'); + console.log(this, this.context); this.context.logger.debug('Blocthday.cmdStatus()'); diff --git a/packages/polkabot-plugin-notifier-matrix/src/index.ts b/packages/polkabot-plugin-notifier-matrix/src/index.ts index fc43cb8..8c71458 100644 --- a/packages/polkabot-plugin-notifier-matrix/src/index.ts +++ b/packages/polkabot-plugin-notifier-matrix/src/index.ts @@ -8,11 +8,11 @@ export default class MatrixNotifier extends PolkabotNotifier { public channel = 'matrix'; public constructor(mod: PluginModule, context: PluginContext, config?) { super(mod, context, config); - this.context.logger.silly("++MatrixNotifier", this); + this.context.logger.silly('++MatrixNotifier', this); - const commands = (MatrixNotifier as unknown as Controllable).commands - assert(typeof commands !== 'undefined', 'Commands were not set') - assert(Object.values(commands).length > 0, 'commands contains no command!') + const commands = (MatrixNotifier as unknown as Controllable).commands; + assert(typeof commands !== 'undefined', 'Commands were not set'); + assert(Object.values(commands).length > 0, 'commands contains no command!'); //this.context.logger.silly('MatrixNotifier: %o', MatrixNotifier); // OK //this.context.logger.silly('commands: %o', commands); // OK diff --git a/packages/polkabot/src/index.ts b/packages/polkabot/src/index.ts index 5dd992a..50f932b 100644 --- a/packages/polkabot/src/index.ts +++ b/packages/polkabot/src/index.ts @@ -69,13 +69,13 @@ export default class Polkabot { */ private registerControllable(controllable: Controllable): void { const commandCount = (commands: CommandDictionary): number => { - if (typeof CtrlClass === 'undefined') return 0; - if (typeof CtrlClass.commands === 'undefined') return 0; - return Object.keys(CtrlClass.commands).length; + // if (typeof CtrlClass === 'undefined') return 0; + if (!commands) return 0; + return Object.keys(commands).length; }; const CtrlClass = getClass(controllable) as unknown as Controllable; const commands = CtrlClass.commands; - if (typeof commands === 'undefined') Logger.error('commands should not be undefined! Did you use some decorators ?') + if (typeof commands === 'undefined') Logger.error('commands should not be undefined! Did you use some decorators ?'); Logger.silly(`${(controllable as unknown as PolkabotPluginBase).module.name} - isControllable: ${CtrlClass.isControllable}, nb commands: ${commandCount(CtrlClass.commands)}`); // assert(CtrlClass.isControllable && commandCount(CtrlClass), 'No commands defined'); -- GitLab From 84b830baab14ca8b83d4e9191d4121e9509c05e3 Mon Sep 17 00:00:00 2001 From: chevdor Date: Thu, 28 May 2020 17:55:14 +0200 Subject: [PATCH 83/86] Add more checks for Bocthday and demonstrate how to change variables at runtime --- packages/polkabot-api/src/PolkabotChatbot.ts | 21 +-- .../polkabot-api/src/PolkabotPluginBase.ts | 23 +-- packages/polkabot-api/src/PolkabotWorker.ts | 8 +- packages/polkabot-api/src/decorators.ts | 136 --------------- .../polkabot-api/src/decorators/callable.ts | 33 ++++ .../polkabot-api/src/decorators/command.ts | 61 +++++++ .../polkabot-api/src/decorators/configured.ts | 49 ++++++ packages/polkabot-api/src/decorators/index.ts | 4 + packages/polkabot-api/src/decorators/trace.ts | 16 ++ packages/polkabot-api/src/helpers.ts | 4 +- packages/polkabot-api/src/types.ts | 9 +- .../polkabot-plugin-blockstats/src/index.ts | 1 + .../polkabot-plugin-blocthday/.mocharc.yml | 15 ++ .../polkabot-plugin-blocthday/package.json | 2 + .../polkabot-plugin-blocthday/src/checkers.ts | 79 +++++++++ .../polkabot-plugin-blocthday/src/index.ts | 165 +++++++++++++++--- .../test/checkers.spec.ts | 109 ++++++++++++ .../src/index.ts | 2 +- .../polkabot-plugin-operator/src/index.ts | 18 +- .../polkabot-plugin-reporter/src/index.ts | 2 + .../polkabot-plugin-stallwatcher/src/index.ts | 2 + packages/polkabot/configSpecs.yml | 2 +- packages/polkabot/src/index.ts | 4 +- packages/polkabot/src/types.ts | 4 +- 24 files changed, 547 insertions(+), 222 deletions(-) delete mode 100644 packages/polkabot-api/src/decorators.ts create mode 100644 packages/polkabot-api/src/decorators/callable.ts create mode 100644 packages/polkabot-api/src/decorators/command.ts create mode 100644 packages/polkabot-api/src/decorators/configured.ts create mode 100644 packages/polkabot-api/src/decorators/index.ts create mode 100644 packages/polkabot-api/src/decorators/trace.ts create mode 100644 packages/polkabot-plugin-blocthday/.mocharc.yml create mode 100644 packages/polkabot-plugin-blocthday/src/checkers.ts create mode 100644 packages/polkabot-plugin-blocthday/test/checkers.spec.ts diff --git a/packages/polkabot-api/src/PolkabotChatbot.ts b/packages/polkabot-api/src/PolkabotChatbot.ts index 98af81a..1c8217b 100644 --- a/packages/polkabot-api/src/PolkabotChatbot.ts +++ b/packages/polkabot-api/src/PolkabotChatbot.ts @@ -16,11 +16,9 @@ export abstract class PolkabotChatbot extends PolkabotPluginBase implements Chat Logger.info('Registering controllables:'); controllables.map((ctrl: Controllable) => { - const CtrlClass = getClass(ctrl) as unknown as Controllable; - // const commandObject: PluginCommandSet = (ctrl as Controllable).commandSet; + const CtrlClass = getClass(ctrl); const commands: CommandDictionary = CtrlClass.commands; Logger.info(` ctrl: ${CtrlClass.meta.name} (!${CtrlClass.meta.alias}) ${Object.keys(commands).map(c => commands[c].name)}`); - // Logger.info(commands.map(c => c.name)); }); this.controllables = controllables; } @@ -99,25 +97,14 @@ export abstract class PolkabotChatbot extends PolkabotPluginBase implements Chat */ public static matchCommand(controllables: Controllable[], cmd: BotCommand): PluginCommand | null { // first we look if the module is known - const hits = controllables.filter((c: Controllable) => (getClass(c) as unknown as Controllable).meta.alias === cmd.module); + const hits = controllables.filter((c: Controllable) => (getClass(c)).meta.alias === cmd.module); const controllable = hits.length > 0 ? (hits[0]) : null; if (!controllable) return null; - const commands = (getClass(controllable) as unknown as Controllable).commands; + const commands = (getClass(controllable)).commands; const res: PluginCommand = commands[cmd.command]; Logger.silly('Found PluginCommand: %o', res); - // const instance = this.getControllableInstance(controllables, cmd) - // Logger.silly('Found its instance: %o', controllable) - // res.handler = res.handler.bind(instance); // This does not seem to work unfortunately, not sure why - return res; - } - // TODO - /** - * Search which Controllable plugins can 'do the job' for a given command. - * @param cmd - */ - public static findSupportedModules(_cmd: string): Controllable[] { - throw new Error('Not implemented'); + return res; } } diff --git a/packages/polkabot-api/src/PolkabotPluginBase.ts b/packages/polkabot-api/src/PolkabotPluginBase.ts index 0f51e35..877c9c4 100644 --- a/packages/polkabot-api/src/PolkabotPluginBase.ts +++ b/packages/polkabot-api/src/PolkabotPluginBase.ts @@ -50,30 +50,21 @@ export class PolkabotPluginBase { } /** - * This utility function may be called from the ctor of classes - * that want to be controllable. + * This utility function must be called from the ctor of classes + * that want to be controllable in order to bind all the commands with + * their object. * @param this */ public static bindCommands(that: PolkabotPluginBase): void { assert(typeof that !== 'undefined', 'Binding to undefined is no good idea!'); - const CtrlClass = getClass(that) as unknown as Controllable; + + const CtrlClass = getClass(that); assert(typeof CtrlClass.commands !== 'undefined', 'No command was set!'); - // if (CtrlClass.commands) { - // let counter = 0; - Object.keys(CtrlClass.commands).map((key: string) => { - // const command = that.commands[key] - //console.log('command:', command) - that.context.logger.silly('Binding method %s:%s', CtrlClass.meta.name, key); // TODO; check here, are we binding the status function or cmdStatus ? + Object.keys(CtrlClass.commands).map((key: string) => { - // TODO: fix this cheap trick: we want to use the original method name here, not hope that it was called cmdSomething + that.context.logger.silly('Binding method %s:%s', CtrlClass.meta.name, key); // TODO; check here, are we binding the status function or cmdStatus ? CtrlClass.commands[key].handler = CtrlClass.commands[key].handler.bind(that); - // counter++; }); - // this.context.logger.warn('Bound %d commands', counter) - // } - // else { - // // this.context.logger.warn('No command to bind') - // } } } diff --git a/packages/polkabot-api/src/PolkabotWorker.ts b/packages/polkabot-api/src/PolkabotWorker.ts index 9eadbd5..a918bbd 100644 --- a/packages/polkabot-api/src/PolkabotWorker.ts +++ b/packages/polkabot-api/src/PolkabotWorker.ts @@ -2,13 +2,16 @@ import { PolkabotPluginBase } from './PolkabotPluginBase'; import { PluginModule, PluginContext, PluginType, UnsubDictionnary } from './types'; export abstract class PolkabotWorker extends PolkabotPluginBase { - protected unsubs: UnsubDictionnary = {} + protected unsubs: UnsubDictionnary = {}; + protected started: boolean = false; constructor(mod: PluginModule, context: PluginContext, config?) { super(PluginType.Worker, mod, context, config); } - public abstract start(); + public start() { + this.started = true; + } public stop() { this.context.logger.debug('STOPPING'); @@ -18,5 +21,6 @@ export abstract class PolkabotWorker extends PolkabotPluginBase { this.context.logger.debug(`Running unsub for ${unsub}`); if (fn) fn(); }); + this.started=false; } } diff --git a/packages/polkabot-api/src/decorators.ts b/packages/polkabot-api/src/decorators.ts deleted file mode 100644 index 528cfed..0000000 --- a/packages/polkabot-api/src/decorators.ts +++ /dev/null @@ -1,136 +0,0 @@ -import { CallableMeta, CommandDecoratorArgs, PluginCommand, ControllableMeta } from './types'; -import LoggerSingleton from '@polkabot/api/src/LoggerFactory'; -import { PolkabotChatbot, CommandDictionary } from '.'; -import { assert } from './utils'; - -const Logger = LoggerSingleton.getInstance(); - -/** - * This class decorator signals a class that will be callable from the - * chat. It dynamically sets up a few of the members and helpers required - * by a Controllable. - * @param args - */ -export function Callable(args?: CallableMeta): Function { - // Note we cannot use context yet - return (target: any) => { - Logger.silly(`DECORATOR Callable on ${(target as unknown as Function).name}`); - const meta: ControllableMeta = { - name: args && args.name ? args.name : (target as any).name, - alias: args && args.alias ? args.alias : (target as any).name.toLowerCase() - }; - - // Implement Controllable - // We keep the following so that we have it initialized even if the user - // did not use @Command yet. - if (typeof target.commands === 'undefined') target.commands = {}; - - //Logger.silly('target= %o', target); - // Logger.silly('Commands are %o', target.constructor.commands); - const commandCount = Object.keys(target.commands).length; - assert(commandCount > 0, 'A Callable without command does not sound good!'); - target.meta = meta; - target.isControllable = commandCount > 0; - }; -} - -/** - * This type describes the arguments expected by the [[Configured | Configured decorator]]. - */ -export type ConfiguredDecoratorArgs = { - /** Defaults to POLKABOT */ - application?: string; - /** Optional, this is the name of the MODULE as found in the config specs. If omited, the uppercased name of the class is used. */ - module?: string; - /** Mandatory, this is the list of keys we expect in the config */ - keys: string[]; -} - -export interface Configured { - configKeys: string[]; - configModule: string; - configApplication: string; - getKeys(): string[]; - getValue(key: string, module?: string, application?: string): T; -} - -/** - * This class decorator simplifies how we can make config values available. - * We pass the list of config params and they will be made available as list and getters. - * @param params The list of config params - */ -export function Configured(params: ConfiguredDecoratorArgs): Function { - return (target: Configured) => { - Logger.debug('DECORATOR CONFIGURED'); - target.configApplication = params.application ? params.application : 'POLKABOT'; - target.configModule = params.module ? params.module : (target as any).name.toUpperCase(); - - if (!target.configKeys) target.configKeys = params.keys; - - target.getKeys = (): string[] => { - return target.configKeys; - }; - - target.getValue = function (key: string): T { - Logger.debug(`Get key for ${target.configApplication}_${target.configModule}_${key}`); - return 42 as unknown as T; - // return - // [key] - }; - }; -} - -/** - * Define the name of a command given the name of the function the decorator - * is applied to or set defaults. - * For instance, if the function is named cmdStatus, the command will be 'status'. - */ -function getCommandName(functionName: string, args?: CommandDecoratorArgs): string { - return args && args.name ? args.name : functionName.toLowerCase().replace('cmd', ''); -} - -function getCommand(commands: CommandDictionary, msg: string): PluginCommand { - const botCommand = PolkabotChatbot.getBotCommand(msg); - return commands[botCommand.command]; -} - -/** - * This method decorator signals that the function it is applied to - * is a command handler. This function will run to answer a command - * given by the user. - * @param cmd - */ -export function Command(decoargs?: CommandDecoratorArgs): Function { - return function (target: any, methodName: string, _descriptor: PropertyDescriptor) { - const cls = target.constructor; - - if (!cls.commands) cls.commands = { }; - - // if (typeof cls === 'function') cls = cls() - assert(cls.name !== 'Function', 'There is a problem here. Did you use a static method? You should not!'); - - // Logger.info('Command, target %o',target) - // Logger.info('Command, cls: %o', cls) - - Logger.silly(`DECORATOR Command on ${cls.name}:${methodName}`); - const cmd: PluginCommand = { - name: getCommandName(methodName, decoargs), - description: decoargs ? decoargs.description : 'Missing description', - argsRegexp: decoargs ? decoargs.argsRegexp : null, - adminOnly: decoargs && decoargs.adminOnly !== undefined ? decoargs.adminOnly : true, - handler: target[methodName] - }; - // if (typeof cls.commands == 'undefined') cls.commands = {}; - Logger.silly(`Adding command ${cmd.name} to commands`); - cls.commands[cmd.name] = cmd; - cls.getCommand = getCommand; - cls.getCommands = () => { - const res = []; - Object.keys(cls.commands).map((key: string) => { - const cmd = cls.commands[key]; - res.push(cmd); - }); - return res; - }; - }; -} diff --git a/packages/polkabot-api/src/decorators/callable.ts b/packages/polkabot-api/src/decorators/callable.ts new file mode 100644 index 0000000..7022328 --- /dev/null +++ b/packages/polkabot-api/src/decorators/callable.ts @@ -0,0 +1,33 @@ +import LoggerSingleton from '@polkabot/api/src/LoggerFactory'; +import { assert } from '../utils'; +import { CallableMeta, ControllableMeta } from '../types'; + +const Logger = LoggerSingleton.getInstance(); + +/** + * This class decorator signals a class that will be callable from the + * chat (usually [[Operator]]). It dynamically sets up a few of the members and helpers required + * by a Controllable. + * @param args + */ +export function Callable(args?: CallableMeta): Function { + // Note we cannot use context yet + return (target: any) => { + Logger.silly(`@Callable on ${(target as unknown as Function).name}`); + const meta: ControllableMeta = { + name: args && args.name ? args.name : (target as any).name, + alias: args && args.alias ? args.alias : (target as any).name.toLowerCase() + }; + + // Implement Controllable + // We keep the following so that we have it initialized even if the user + // did not use @Command yet. + if (typeof target.commands === 'undefined') target.commands = {}; + + const commandCount = Object.keys(target.commands).length; + assert(commandCount > 0, 'A Callable without command does not sound good!'); + target.meta = meta; + target.isControllable = commandCount > 0; + }; +} + diff --git a/packages/polkabot-api/src/decorators/command.ts b/packages/polkabot-api/src/decorators/command.ts new file mode 100644 index 0000000..a3af457 --- /dev/null +++ b/packages/polkabot-api/src/decorators/command.ts @@ -0,0 +1,61 @@ +import { CommandDecoratorArgs, PluginCommand, CommandDictionary } from '../types'; +import LoggerSingleton from '@polkabot/api/src/LoggerFactory'; +import { assert } from '../utils'; +import { PolkabotChatbot } from '..'; + +const Logger = LoggerSingleton.getInstance(); + +/** + * Define the name of a command given the name of the function the decorator + * is applied to or set defaults. + * For instance, if the function is named cmdStatus, the command will be 'status'. + */ +function getCommandName(functionName: string, args?: CommandDecoratorArgs): string { + return args && args.name ? args.name : functionName.toLowerCase().replace('cmd', ''); +} + +/** + * Get the right command in a [[CommandDictionnary]] given a message ([[msg]]) + * @param commands Command dictionnary + * @param msg The message provided by the user + */ +function getCommand(commands: CommandDictionary, msg: string): PluginCommand { + const botCommand = PolkabotChatbot.getBotCommand(msg); + return commands[botCommand.command]; +} + +/** + * This method decorator signals that the function it is applied to + * is a command handler. This function will run to answer a command + * given by the user. + * @param cmd + */ +export function Command(decoargs?: CommandDecoratorArgs): Function { + return function (target: any, methodName: string, _descriptor: PropertyDescriptor) { + const cls = target.constructor; + + if (!cls.commands) cls.commands = {}; + assert(cls.name !== 'Function', 'There is a problem here. Did you use a static method? You should not!'); + + Logger.silly(`@Command on ${cls.name}:${methodName}`); + const cmd: PluginCommand = { + name: getCommandName(methodName, decoargs), + description: decoargs ? decoargs.description : 'Missing description', + argsRegexp: decoargs ? decoargs.argsRegexp : null, + adminOnly: decoargs && decoargs.adminOnly !== undefined ? decoargs.adminOnly : true, + handler: target[methodName] + }; + + Logger.silly(`Adding command ${cmd.name} to commands`); + cls.commands[cmd.name] = cmd; + cls.getCommand = getCommand; + cls.getCommands = () => { + const res = []; + Object.keys(cls.commands).map((key: string) => { + const cmd = cls.commands[key]; + res.push(cmd); + }); + return res; + }; + }; +} diff --git a/packages/polkabot-api/src/decorators/configured.ts b/packages/polkabot-api/src/decorators/configured.ts new file mode 100644 index 0000000..d405918 --- /dev/null +++ b/packages/polkabot-api/src/decorators/configured.ts @@ -0,0 +1,49 @@ +import LoggerSingleton from '@polkabot/api/src/LoggerFactory'; + +const Logger = LoggerSingleton.getInstance(); + +/** + * This type describes the arguments expected by the [[Configured | Configured decorator]]. + */ +export type ConfiguredDecoratorArgs = { + /** Defaults to POLKABOT */ + application?: string; + /** Optional, this is the name of the MODULE as found in the config specs. If omited, the uppercased name of the class is used. */ + module?: string; + /** Mandatory, this is the list of keys we expect in the config */ + keys: string[]; +} + +export interface Configured { + configKeys: string[]; + configModule: string; + configApplication: string; + getKeys(): string[]; + getValue(key: string, module?: string, application?: string): T; +} + +/** + * This class decorator simplifies how we can make config values available. + * We pass the list of config params and they will be made available as list and getters. + * @param params The list of config params + * @deprecated This is currently not used and will likely be removed + */ +export function Configured(params: ConfiguredDecoratorArgs): Function { + return (target: Configured) => { + Logger.debug('@Configured'); + target.configApplication = params.application ? params.application : 'POLKABOT'; + target.configModule = params.module ? params.module : (target as any).name.toUpperCase(); + + if (!target.configKeys) target.configKeys = params.keys; + + target.getKeys = (): string[] => { + return target.configKeys; + }; + + target.getValue = function (key: string): T { + Logger.debug(`Get key for ${target.configApplication}_${target.configModule}_${key}`); + throw new Error('@Configured is not implemented') + //return 42 as unknown as T; + }; + }; +} diff --git a/packages/polkabot-api/src/decorators/index.ts b/packages/polkabot-api/src/decorators/index.ts new file mode 100644 index 0000000..f93d67c --- /dev/null +++ b/packages/polkabot-api/src/decorators/index.ts @@ -0,0 +1,4 @@ +export { Configured } from './configured' +export { Callable } from './callable' +export { Command } from './command' +export { Trace } from './trace' \ No newline at end of file diff --git a/packages/polkabot-api/src/decorators/trace.ts b/packages/polkabot-api/src/decorators/trace.ts new file mode 100644 index 0000000..70a706d --- /dev/null +++ b/packages/polkabot-api/src/decorators/trace.ts @@ -0,0 +1,16 @@ +import LoggerSingleton from '@polkabot/api/src/LoggerFactory'; +const Logger = LoggerSingleton.getInstance(); + +/** + * This method decorator allows easily adding tracing. + * @param msg + */ +export function Trace(msg?: string) { + return function (target: any, methodName: string, _descriptor: PropertyDescriptor) { + const cls = target.constructor; + Logger.silly('TRACE: %s:%s%s', cls.name, methodName, msg? ` - ${msg}` : '') + // TODO: wrong, here we trace when the DECORATOR runs, what we want is to inject code in the target method + + }; +} + diff --git a/packages/polkabot-api/src/helpers.ts b/packages/polkabot-api/src/helpers.ts index 1e706f9..6d85ef6 100644 --- a/packages/polkabot-api/src/helpers.ts +++ b/packages/polkabot-api/src/helpers.ts @@ -11,6 +11,6 @@ export function capitalize(s: string): string { * Fetch the class of an object to reach its static members and access the commands * @param object */ -export function getClass(object: Record): Function { - return (object.constructor); +export function getClass(object: Record): T { + return (object.constructor) as T; } \ No newline at end of file diff --git a/packages/polkabot-api/src/types.ts b/packages/polkabot-api/src/types.ts index ab153b8..92ee30e 100644 --- a/packages/polkabot-api/src/types.ts +++ b/packages/polkabot-api/src/types.ts @@ -75,10 +75,11 @@ export enum ErrorCode { } export type CommandHandlerOutput = { + /** This error code will show up in the logs */ code: ErrorCode; - /** This is a message sent to the room */ - msg: string; - /** Those are answers directed to the room where we got the request */ + /** This is a message mainly used in the logs */ + logMsg: string; + /** Those are answers directed to the room where the request came from*/ answers?: RoomAnswer[]; }; @@ -119,7 +120,7 @@ export type PluginCommandSet = { * fetching an object describing all the commands and handlers that can * be called to control the thing. */ -export interface Controllable { +export interface Controllable extends Function { commands: CommandDictionary; meta: ControllableMeta; isControllable: boolean; diff --git a/packages/polkabot-plugin-blockstats/src/index.ts b/packages/polkabot-plugin-blockstats/src/index.ts index 964aff1..327a28e 100644 --- a/packages/polkabot-plugin-blockstats/src/index.ts +++ b/packages/polkabot-plugin-blockstats/src/index.ts @@ -41,6 +41,7 @@ export default class BlocsStats extends PolkabotWorker { } public start(): void { + super.start(); console.log('BlocksStats - Starting with config:', this.params); this.watchChain().catch(error => { console.error('BlocksStats - Error subscribing to chain head: ', error); diff --git a/packages/polkabot-plugin-blocthday/.mocharc.yml b/packages/polkabot-plugin-blocthday/.mocharc.yml new file mode 100644 index 0000000..4760947 --- /dev/null +++ b/packages/polkabot-plugin-blocthday/.mocharc.yml @@ -0,0 +1,15 @@ +diff: true +extension: + - js + - ts +package: ./package.json +reporter: spec +slow: 75 +timeout: 2000 +ui: bdd +recursive: true +require: + - ts-node/register +watch-files: + - 'test/**/*.spec.ts' + - 'src/**/*.ts' \ No newline at end of file diff --git a/packages/polkabot-plugin-blocthday/package.json b/packages/polkabot-plugin-blocthday/package.json index 9a71231..83e196f 100644 --- a/packages/polkabot-plugin-blocthday/package.json +++ b/packages/polkabot-plugin-blocthday/package.json @@ -9,6 +9,8 @@ "build": "tsc --build tsconfig.json", "prepublishOnly": "npm run build", "clean": "rm -rf dist build node_modules", + "test": "mocha", + "test:watch": "mocha --watch", "postinstall": "npm run build", "build:doc": "typedoc src --readme none" }, diff --git a/packages/polkabot-plugin-blocthday/src/checkers.ts b/packages/polkabot-plugin-blocthday/src/checkers.ts new file mode 100644 index 0000000..63e1844 --- /dev/null +++ b/packages/polkabot-plugin-blocthday/src/checkers.ts @@ -0,0 +1,79 @@ +import BN from "bn.js"; + +export type checker = (n: BN, arg?: number | BN | BN[]) => boolean; + +/** + * This class contains static methods telling us whether a block + * is worth a Blocthday wish. All the checks are combined in the + * [[checker]] function. + */ +export class Checkers { + /** + * Returns true for 'plain' numbers suchas 10, 8000, 300, etc... + */ + public static checkerExp: checker = (n: BN): boolean => { + const s = n.toString(10); + return s.length > 1 && new BN(s.substring(1)).eq(new BN(0)) + } + + /** + * Returns true for sequence numbers starting with 1 such as + * 123, 123456, etc... + */ + public static checkerSeq: checker = (n: BN): boolean => { + const s = n.toString(10); + if (s.substring(0, 1) !== '1') return false; + let previous = 1; + for (let str of s.split('')) { + if (parseInt(str) !== previous++) return false; + } + return true + } + + /** + * Returns true for numbers with 2 or more digits where all + * digits are the same. For instance: 1111, or 777 + */ + public static checkerSame: checker = (n: BN): boolean => { + const s = n.toString(10); + const ref = s.substring(0, 1); + const pattern = `${ref}\{${s.length}\}` + const regexp = new RegExp(pattern, 'g') + return s.length > 1 && regexp.test(s) + } + + public static checkerSpecials: checker = (n: BN, specials:BN[]): boolean => { + return specials.find(special => special.eq(n)) !== undefined + } + + /** + * Check whether if matches block Nth. + * For instance, for N=11, return true for block 11, 22, 33, ... + */ + public static checkerNth: checker = (n: BN, nbBlocks: BN): boolean => { + // [name] == 'junk' + nbBlocks = new BN(nbBlocks) + if (nbBlocks.eq(new BN(0))) return false; + return (n.mod(nbBlocks).toString(10) === '0'); + } + + public static checkers: checker[] = [ + Checkers.checkerExp, + Checkers.checkerSeq, + Checkers.checkerSame, + Checkers.checkerNth, + ] + + + /** + * This function runs the combined tests and returns true + * if at least one checker did return true. It combines the checkers from the [[Checker]] class. + */ + public static check: checker = (n: BN, nbBlocks: BN): boolean => { + let res = true; + const tests = Checkers.checkers.map((c: checker) => { + return c(n, nbBlocks); + }) + return tests.filter(item => item === true).length >= 1 + } +} \ No newline at end of file diff --git a/packages/polkabot-plugin-blocthday/src/index.ts b/packages/polkabot-plugin-blocthday/src/index.ts index aeaa02b..0056ebd 100644 --- a/packages/polkabot-plugin-blocthday/src/index.ts +++ b/packages/polkabot-plugin-blocthday/src/index.ts @@ -1,22 +1,44 @@ import BN from 'bn.js'; import { PolkabotWorker } from '@polkabot/api/src/PolkabotWorker'; import { HeaderExtended } from '@polkadot/api-derive/type'; -import { Command, Callable } from '@polkabot/api/src/decorators'; +import { Command, Callable, Trace } from '@polkabot/api/src/decorators'; import { PluginModule, PluginContext, Room, CommandHandlerOutput, NotifierMessage, NotifierSpecs, ErrorCode, Controllable } from '@polkabot/api/src/types'; -import { PolkabotPluginBase, assert } from '@polkabot/api/src'; +import { PolkabotPluginBase, assert, LoggerFactory } from '@polkabot/api/src'; +import { Checkers } from './checkers'; /** * This is a trick: we cannot declare Blocthday as implementing * the Controllable interface as it 'apparently' does not. * It actually does thanks to decorators but this is dynamic * and typescript cannot know about it. This also allows not having to - * cast 'as unknown as Controllable' all over the place. + * cast 'as unknown as Controllable' all over the place for instances. */ // interface Blocthday extends Controllable { } // TODO: bring back +/** + * This is a convenience to describe the config expected by the plugin. + * Most of the fields should be available in the config (See confmgr). + */ +export type BlocthdayConfig = { + /** The list of channels we notify */ + channels: string[]; + /** A list of 'special' blocks we may want to announce. */ + specials: BN[]; + /** Every nth block to announce. 0= disabled. 1=every block.*/ + nbBlocks: number; +} + +/** + * This plugin wishes announces when the chain reached a set of given block numbers. + * The initial version was taking a NB_BLOCKS parameters. It ended up annoying: at first, when the chain is at block < 1000, + * you may want to wish every 1000th block. After a while however, this is very boring. It has been kept for debuggin purposes + * but NB_BLOCKS should be left to its default (0) in production. + * The current version is adapting and supporting special arbitrary anniversaries. + */ @Callable({ alias: 'bday' }) export default class Blocthday extends PolkabotWorker { - private nbBlocks: number; + private config: BlocthdayConfig; + private currentBlock: BN; public constructor(mod: PluginModule, context: PluginContext, config?) { super(mod, context, config); @@ -25,36 +47,123 @@ export default class Blocthday extends PolkabotWorker { // The following asserts are only valid if you want this plugin to be Controllable const commands = (Blocthday as unknown as Controllable).commands; assert(typeof commands !== 'undefined', 'Commands were not set'); - assert(Object.values(commands).length > 0, 'commands contains no command!'); - //this.context.logger.silly('Blocthday: %o', Blocthday); // OK - //this.context.logger.silly('commands: %o', commands); // OK + assert(Object.keys(commands).length > 0, 'commands contains no command!'); + // Calling this method in the ctor is mandatory PolkabotPluginBase.bindCommands(this); - - this.nbBlocks = this.getConfig('NB_BLOCKS'); - this.context.logger.silly('nbBlocks set to %d', this.nbBlocks); + + // We initialize the config. Here we usually call confmgr + // TODO: Call confmgr + this.config = { + channels: ['matrix', 'twitter'], // TODO: Load from config + nbBlocks: this.getConfig('NB_BLOCKS'), + specials: [], // TODO: Load from config + } } + /** + * This command shows the status of the plugin. + * @param _event + * @param room + */ @Command({ description: 'Show status of the plugin' }) - // public cmdStatus(that: Blocthday, _event, room: Room): CommandHandlerOutput { - public status( _event, room: Room): CommandHandlerOutput { - console.log('Running Blocthday.status()'); - console.log(this, this.context); + @Trace() + public cmdStatus(_event, room: Room): CommandHandlerOutput { + return { + code: ErrorCode.Ok, + logMsg: `Config: ${JSON.stringify(this.config)}, started: ${this.started}`, + answers: [{ + room, + message: `
                  • Current block: ${this.currentBlock.toString(10)}
                  • NB_BLOCKS: ${this.config.nbBlocks}
                  • started: ${this.started}
                    • ` + }] + }; + } + + // @Trace() + // @Command({ description: 'Get the current list of the special blocks' }) + // public cmdGetSpecials(_event, room: Room): CommandHandlerOutput { + // return { + // code: ErrorCode.Ok, + // logMsg: `Specials: ${JSON.stringify(this.config.specials)}`, + // answers: [{ + // room, + // message: `Specials: ${JSON.stringify(this.config.specials)}` + // }] + // }; + // } - this.context.logger.debug('Blocthday.cmdStatus()'); + /** + * This command mainly demonstrates how to change some varialbles of the plugin at runtime + * @param _event + * @param room + * @param args + */ + @Trace() + @Command({ description: 'Add/remove specials' }) // TODO: Add regexp here to keep simple + public cmdSpecials(_event, room: Room, args: string[]): CommandHandlerOutput { + this.context.logger.debug('args: %o', args) + + const subCommand = args && args.length == 2 ? args[0] : 'get' + const commandArgs = args && args.length == 2 ? args[1] : null // TODO: should not take [1] but 'all the rest + + this.context.logger.debug('subCommand: %s', subCommand) + this.context.logger.debug('commandArgs: %s', commandArgs) + + // TODO: Ideally, specials should be handled as a set + const blockArg = new BN(commandArgs); + switch (subCommand) { + case 'get': + break + case 'add': + if (blockArg.lte(this.currentBlock)) + return { code: ErrorCode.GenericError, logMsg: `It makes no sense to add a block that past` } + else + this.config.specials.push(blockArg) + break + case 'rm': + + const index = this.config.specials.indexOf(blockArg, 0); + if (index > -1) { + this.config.specials.splice(index, 1); + } + break + default: + return { + code: ErrorCode.GenericError, + logMsg: `Blocthday subcommand ${subCommand} for command specials not found`, + answers: [{ + room, + message: `Blocthday subcommand ${subCommand} for command specials not found` + }] + }; + } + const specialsAsString = this.config.specials.map(bn => bn.toString(10)) return { code: ErrorCode.Ok, - msg: `We wish blocthday every ${this.nbBlocks}`, + logMsg: `Specials: ${specialsAsString}`, answers: [{ room, - message: `We wish blocthday every ${this.nbBlocks}` + message: `Specials: ${specialsAsString}` }] }; } + @Trace() + @Command({ description: 'Start the plugin' }) + public cmdStart() { + + } + + @Command({ description: 'Stop the plugin' }) + @Trace() + public cmdStop() { + + } + public start(): void { - this.context.logger.info('Starting with NB_BLOCKS: %d', this.nbBlocks); + super.start(); + this.context.logger.info('Starting Blocthday with config set to %o', this.config); this.watchChain().catch(error => { this.context.logger.error('Error subscribing to chain head: ', error); @@ -66,24 +175,22 @@ export default class Blocthday extends PolkabotWorker { * See https://polkadot.js.org/api/examples/promise/02_listen_to_blocks/ */ async watchChain(): Promise { - this.unsubs['subscribeNewHeads'] = await this.context.polkadot.rpc.chain.subscribeNewHeads((header: HeaderExtended) => { - const bnBlockNumber: BN = header.number.unwrap().toBn(); - const bnNumberOfBlocks: BN = new BN(this.nbBlocks); + this.currentBlock = header.number.unwrap().toBn(); - if (bnBlockNumber.mod(bnNumberOfBlocks).toString(10) === '0') { - const notifierMessage: NotifierMessage = { - message: `Happy ${this.nbBlocks}-BlocthDay!!! Chain is now at #${header.number}` - }; + if (Checkers.check(this.currentBlock, this.config.nbBlocks) || + Checkers.checkerSpecials(this.currentBlock, this.config.specials)) { + // TODO: If you hit one of the specials, we could not remove it from the list - const notifierSpecs: NotifierSpecs = { - notifiers: ['matrix', 'twitter'] + const notifierMessage: NotifierMessage = { + message: `Happy ${this.config.nbBlocks}-BlocthDay!!! The chain is now at block #${this.currentBlock.toString(10)}` }; - this.context.polkabot.notify(notifierMessage, notifierSpecs); + this.context.polkabot.notify(notifierMessage, { notifiers: this.config.channels }); } }); } } -// export default Blocthday; // TODO: bring back +// Related to the Blocthday interface, see above. +// export default Blocthday; diff --git a/packages/polkabot-plugin-blocthday/test/checkers.spec.ts b/packages/polkabot-plugin-blocthday/test/checkers.spec.ts new file mode 100644 index 0000000..8b25b33 --- /dev/null +++ b/packages/polkabot-plugin-blocthday/test/checkers.spec.ts @@ -0,0 +1,109 @@ +import { expect } from 'chai'; +import { Checkers } from '../src/checkers'; +import BN from 'bn.js'; + +describe('Checkers', () => { + const casesExp = [new BN(1e1), new BN(1e2), new BN(1e3), new BN(1e14), new BN(8e5)]; + const casesExpFalse = [new BN(5), new BN(10004)]; + const casesSeq = [new BN('12'), new BN('123456')] + const casesSeqFalse = [new BN('1237'), new BN('1234576'), new BN('12345678910')] + const casesSame = [new BN('11'), new BN('9999999999999999')]; + const casesSameFalse = [new BN('5'), new BN('112'), new BN('9999989999999999')]; + const cases11th = [new BN('11'), new BN('22'), new BN('121')]; + const cases11thFalse = [new BN('5'), new BN('11211')]; + + const all = [] + .concat(casesExp) + .concat(casesSeq) + .concat(casesSame) + .concat(cases11th); + + const allFalse = [] + .concat(casesExpFalse) + .concat(casesSeqFalse) + .concat(casesSameFalse) + .concat(cases11thFalse); + + describe('checkerExp', () => { + casesExp.forEach((test) => { + it(`Should run checkerExp(${test}) and return true`, () => { + expect(Checkers.checkerExp(test)).to.be.true; + }); + }); + + casesExpFalse.forEach((test) => { + it(`Should run checkerExp(${test}) and return false`, () => { + expect(Checkers.checkerExp(test)).to.be.false; + }); + }); + }) + + describe('checkerSeq', () => { + casesSeq.forEach((test) => { + it(`Should run checkerSeq(${test}) and return true`, () => { + expect(Checkers.checkerSeq(test)).to.be.true; + }); + }); + + casesSeqFalse.forEach((test) => { + it(`Should run checkerSeq(${test}) and return false`, () => { + expect(Checkers.checkerSeq(test)).to.be.false; + }); + }); + }) + + describe('checkerSame', () => { + casesSame.forEach((test) => { + it(`Should run checkerSame(${test}) and return true`, () => { + expect(Checkers.checkerSame(test)).to.be.true; + }); + }); + + casesSameFalse.forEach((test) => { + it(`Should run checkerSame(${test}) and return false`, () => { + expect(Checkers.checkerSame(test)).to.be.false; + }); + }); + }) + + describe('checkerSame', () => { + all.forEach((test) => { + it(`Should run checker(${test}) and return true`, () => { + expect(Checkers.check(test, 11)).to.be.true; + }); + }); + + allFalse.forEach((test) => { + it(`Should run checker(${test}) and return false`, () => { + expect(Checkers.check(test, 11)).to.be.false; + }); + }); + }) + + describe('Checkers Nth', () => { + cases11th.forEach((test) => { + it(`Should run checkerNth(${test}, 11) and return true`, () => { + expect(Checkers.checkerNth(test, 11)).to.be.true; + }); + }); + + cases11thFalse.forEach((test) => { + it(`Should run checkerNth(${test}, 11) and return false`, () => { + expect(Checkers.checkerNth(test, 11)).to.be.false; + }); + }); + + it(`Should run checkerNth(2, 1) and return true`, () => { + expect(Checkers.checkerNth(new BN(2), 1)).to.be.true; + }); + + it(`Should run checkerNth(2, 0) and return false`, () => { + expect(Checkers.checkerNth(new BN(2), 0)).to.be.false; + }); + + it(`Should return the list of checker functions by name`, () => { + console.log(Checkers.checkers.map(fn => fn).join(',')) + expect(Checkers.checkerNth(new BN(2), 0)).to.be.false; + }); + }) +}); diff --git a/packages/polkabot-plugin-notifier-matrix/src/index.ts b/packages/polkabot-plugin-notifier-matrix/src/index.ts index 8c71458..23ba240 100644 --- a/packages/polkabot-plugin-notifier-matrix/src/index.ts +++ b/packages/polkabot-plugin-notifier-matrix/src/index.ts @@ -37,7 +37,7 @@ export default class MatrixNotifier extends PolkabotNotifier { return { code: ErrorCode.Ok, - msg: messages.join(' '), + logMsg: messages.join(' '), answers: [{ room, message: 'Done' diff --git a/packages/polkabot-plugin-operator/src/index.ts b/packages/polkabot-plugin-operator/src/index.ts index 3d9423b..687c2dd 100644 --- a/packages/polkabot-plugin-operator/src/index.ts +++ b/packages/polkabot-plugin-operator/src/index.ts @@ -46,7 +46,7 @@ export default class Operator extends PolkabotChatbot { return { code: 0, - msg: null, + logMsg: null, answers: [ { room, @@ -61,11 +61,10 @@ export default class Operator extends PolkabotChatbot { @Command({ description: 'This shows some help. It is also triggered when the user write anything mentioning HELP' }) public cmdHelp(_event: Event, room: Room): CommandHandlerOutput { let message = 'Here is also a list of all the loaded modules and their commands:
                        '; - // this.context.logger.debug('controllables: %o', this.controllables); assert(this.controllables.length, 'No controllable found!'); this.controllables.map((controllable: Controllable) => { - const CtrlClass = getClass(controllable) as unknown as Controllable; + const CtrlClass = getClass(controllable); assert(CtrlClass.isControllable, 'Houston, we expect a controllable here!'); message += `
                      • ${CtrlClass.meta.name}:
                        • `; @@ -73,18 +72,14 @@ export default class Operator extends PolkabotChatbot { const command = CtrlClass.commands[commandName]; message += `
                        • !${CtrlClass.meta.alias} ${command.name}: ${command.description} - ${ command.adminOnly ? 'Admin' : 'Public' - }
                        • `; + }`; }); message += '
                        '; }); message += '
                      '; - // this.answer( { - // room, - // message - // }); return { code: 0, - msg: null, + logMsg: null, answers: [ { room, @@ -151,9 +146,12 @@ export default class Operator extends PolkabotChatbot { if (cmdHandler) { this.context.logger.info(`handler found, running [${cmdHandler.name}]`); + if (botCommand.args) + this.context.logger.debug(`args: ${botCommand.args.join(' ')}`); + const output: CommandHandlerOutput = cmdHandler.handler(event, room, botCommand.args); - this.context.logger.info(`RET: ${output.code} : ${output.msg}`); + this.context.logger.info(`RET: ${output.code} : ${output.logMsg}`); if (output.answers) { // this.answer(output.answers[0]) output.answers.map(a => { diff --git a/packages/polkabot-plugin-reporter/src/index.ts b/packages/polkabot-plugin-reporter/src/index.ts index 719d611..983d989 100644 --- a/packages/polkabot-plugin-reporter/src/index.ts +++ b/packages/polkabot-plugin-reporter/src/index.ts @@ -64,6 +64,8 @@ export default class Reporter extends PolkabotWorker { } public start(): void { + super.start(); + // this.context.logger.info('Reporter - Starting with config:', this.config); this.watchChain().catch(error => { console.error('Reporter - Error subscribing to chain: ', error); diff --git a/packages/polkabot-plugin-stallwatcher/src/index.ts b/packages/polkabot-plugin-stallwatcher/src/index.ts index 219d179..b7d4e68 100644 --- a/packages/polkabot-plugin-stallwatcher/src/index.ts +++ b/packages/polkabot-plugin-stallwatcher/src/index.ts @@ -23,6 +23,8 @@ export default class StallWatcher extends PolkabotWorker { } public start(): void { + super.start(); + this.context.logger.info('StallWatcher - Starting with config:', this.params); this.watchChain().catch(error => { console.error('StallWatcher - Error subscribing to chain head: ', error); diff --git a/packages/polkabot/configSpecs.yml b/packages/polkabot/configSpecs.yml index 0fcb226..4de431b 100644 --- a/packages/polkabot/configSpecs.yml +++ b/packages/polkabot/configSpecs.yml @@ -63,7 +63,7 @@ POLKABOT: NB_BLOCKS: description: How often do we want to wish a happy Block-th-day type: number - default: 1000000 + default: 0 BLOCKSTATS: DISABLED: diff --git a/packages/polkabot/src/index.ts b/packages/polkabot/src/index.ts index 50f932b..6b4c135 100644 --- a/packages/polkabot/src/index.ts +++ b/packages/polkabot/src/index.ts @@ -73,7 +73,7 @@ export default class Polkabot { if (!commands) return 0; return Object.keys(commands).length; }; - const CtrlClass = getClass(controllable) as unknown as Controllable; + const CtrlClass = getClass(controllable); const commands = CtrlClass.commands; if (typeof commands === 'undefined') Logger.error('commands should not be undefined! Did you use some decorators ?'); @@ -137,7 +137,7 @@ export default class Polkabot { loads.push( PluginLoader.load(plugin, context).then((p: PolkabotPlugin) => { - if (isControllable(getClass(p))) { + if (isControllable(getClass(p))) { Logger.info(`▶ Controllable: ${p.package.name}`); this.registerControllable(p as unknown as Controllable); } else Logger.warn(`▶ NOT Controllable: ${p.package.name}`); diff --git a/packages/polkabot/src/types.ts b/packages/polkabot/src/types.ts index fc8d826..a80b9bd 100644 --- a/packages/polkabot/src/types.ts +++ b/packages/polkabot/src/types.ts @@ -1,4 +1,4 @@ -import Olm from 'olm'; +// import Olm from 'olm'; import { PolkabotNotifier } from '../../polkabot-api/src/PolkabotNotifier'; export interface EnvVar { @@ -38,7 +38,7 @@ export interface NotifiersTable { } export type PolkabotGlobal = { - Olm: Olm; + // Olm: Olm; localStorage: any; }; -- GitLab From b420155407656a1353ad08d631843588086b405e Mon Sep 17 00:00:00 2001 From: chevdor Date: Thu, 28 May 2020 19:57:34 +0200 Subject: [PATCH 84/86] Cleanup in Blocthday --- .../polkabot-api/src/PolkabotPluginBase.ts | 21 +- packages/polkabot-api/src/PolkabotWorker.ts | 2 +- .../polkabot-api/src/decorators/configured.ts | 2 +- packages/polkabot-api/src/decorators/index.ts | 8 +- packages/polkabot-api/src/decorators/trace.ts | 10 +- .../polkabot-plugin-blocthday/src/checkers.ts | 94 ++++---- .../polkabot-plugin-blocthday/src/index.ts | 112 +++++----- .../test/checkers.spec.ts | 206 +++++++++--------- .../polkabot-plugin-operator/src/index.ts | 2 +- packages/polkabot/configSpecs.yml | 12 +- 10 files changed, 245 insertions(+), 224 deletions(-) diff --git a/packages/polkabot-api/src/PolkabotPluginBase.ts b/packages/polkabot-api/src/PolkabotPluginBase.ts index 877c9c4..7e612ce 100644 --- a/packages/polkabot-api/src/PolkabotPluginBase.ts +++ b/packages/polkabot-api/src/PolkabotPluginBase.ts @@ -1,7 +1,7 @@ import { packageJson } from 'package-json'; import * as path from 'path'; import { assert } from './utils'; -import { PluginModule, PluginType, PluginContext, Controllable } from './types'; +import { PluginModule, PluginType, PluginContext, Controllable, ErrorCode, Room, CommandHandlerOutput } from './types'; import { getClass } from './helpers'; /** @@ -57,7 +57,7 @@ export class PolkabotPluginBase { */ public static bindCommands(that: PolkabotPluginBase): void { assert(typeof that !== 'undefined', 'Binding to undefined is no good idea!'); - + const CtrlClass = getClass(that); assert(typeof CtrlClass.commands !== 'undefined', 'No command was set!'); @@ -67,4 +67,21 @@ export class PolkabotPluginBase { CtrlClass.commands[key].handler = CtrlClass.commands[key].handler.bind(that); }); } + + /** + * In many places, we need to simply answer the same response to the chat and to the log. + * This is rather verbose to create the object. This function is a shortcut for that. + * @param str + * @param errorCode + */ + public static generateSingleAnswer(message: string, room: Room, errorCode: ErrorCode = ErrorCode.Ok): CommandHandlerOutput { + return { + code: errorCode, + logMsg: message, + answers: [{ + room, + message + }] + }; + } } diff --git a/packages/polkabot-api/src/PolkabotWorker.ts b/packages/polkabot-api/src/PolkabotWorker.ts index a918bbd..3a9db2f 100644 --- a/packages/polkabot-api/src/PolkabotWorker.ts +++ b/packages/polkabot-api/src/PolkabotWorker.ts @@ -3,7 +3,7 @@ import { PluginModule, PluginContext, PluginType, UnsubDictionnary } from './typ export abstract class PolkabotWorker extends PolkabotPluginBase { protected unsubs: UnsubDictionnary = {}; - protected started: boolean = false; + protected started = false; constructor(mod: PluginModule, context: PluginContext, config?) { super(PluginType.Worker, mod, context, config); diff --git a/packages/polkabot-api/src/decorators/configured.ts b/packages/polkabot-api/src/decorators/configured.ts index d405918..8857f8d 100644 --- a/packages/polkabot-api/src/decorators/configured.ts +++ b/packages/polkabot-api/src/decorators/configured.ts @@ -42,7 +42,7 @@ export function Configured(params: ConfiguredDecoratorArgs): Function { target.getValue = function (key: string): T { Logger.debug(`Get key for ${target.configApplication}_${target.configModule}_${key}`); - throw new Error('@Configured is not implemented') + throw new Error('@Configured is not implemented'); //return 42 as unknown as T; }; }; diff --git a/packages/polkabot-api/src/decorators/index.ts b/packages/polkabot-api/src/decorators/index.ts index f93d67c..c79f873 100644 --- a/packages/polkabot-api/src/decorators/index.ts +++ b/packages/polkabot-api/src/decorators/index.ts @@ -1,4 +1,4 @@ -export { Configured } from './configured' -export { Callable } from './callable' -export { Command } from './command' -export { Trace } from './trace' \ No newline at end of file +export { Configured } from './configured'; +export { Callable } from './callable'; +export { Command } from './command'; +export { Trace } from './trace'; \ No newline at end of file diff --git a/packages/polkabot-api/src/decorators/trace.ts b/packages/polkabot-api/src/decorators/trace.ts index 70a706d..40fd9f0 100644 --- a/packages/polkabot-api/src/decorators/trace.ts +++ b/packages/polkabot-api/src/decorators/trace.ts @@ -6,11 +6,11 @@ const Logger = LoggerSingleton.getInstance(); * @param msg */ export function Trace(msg?: string) { - return function (target: any, methodName: string, _descriptor: PropertyDescriptor) { - const cls = target.constructor; - Logger.silly('TRACE: %s:%s%s', cls.name, methodName, msg? ` - ${msg}` : '') - // TODO: wrong, here we trace when the DECORATOR runs, what we want is to inject code in the target method + return function (target: any, methodName: string, _descriptor: PropertyDescriptor) { + const cls = target.constructor; + Logger.silly('TRACE: %s:%s%s', cls.name, methodName, msg? ` - ${msg}` : ''); + // TODO: wrong, here we trace when the DECORATOR runs, what we want is to inject code in the target method - }; + }; } diff --git a/packages/polkabot-plugin-blocthday/src/checkers.ts b/packages/polkabot-plugin-blocthday/src/checkers.ts index 63e1844..9313768 100644 --- a/packages/polkabot-plugin-blocthday/src/checkers.ts +++ b/packages/polkabot-plugin-blocthday/src/checkers.ts @@ -1,4 +1,4 @@ -import BN from "bn.js"; +import BN from 'bn.js'; export type checker = (n: BN, arg?: number | BN | BN[]) => boolean; @@ -8,72 +8,72 @@ export type checker = (n: BN, arg?: number | BN | BN[]) => boolean; * [[checker]] function. */ export class Checkers { - /** + /** * Returns true for 'plain' numbers suchas 10, 8000, 300, etc... */ - public static checkerExp: checker = (n: BN): boolean => { - const s = n.toString(10); - return s.length > 1 && new BN(s.substring(1)).eq(new BN(0)) - } + public static checkerExp: checker = (n: BN): boolean => { + const s = n.toString(10); + return s.length > 1 && new BN(s.substring(1)).eq(new BN(0)); + } - /** + /** * Returns true for sequence numbers starting with 1 such as * 123, 123456, etc... */ - public static checkerSeq: checker = (n: BN): boolean => { - const s = n.toString(10); - if (s.substring(0, 1) !== '1') return false; - let previous = 1; - for (let str of s.split('')) { - if (parseInt(str) !== previous++) return false; - } - return true + public static checkerSeq: checker = (n: BN): boolean => { + const s = n.toString(10); + if (s.substring(0, 1) !== '1') return false; + let previous = 1; + for (const str of s.split('')) { + if (parseInt(str) !== previous++) return false; } + return true; + } - /** + /** * Returns true for numbers with 2 or more digits where all * digits are the same. For instance: 1111, or 777 */ - public static checkerSame: checker = (n: BN): boolean => { - const s = n.toString(10); - const ref = s.substring(0, 1); - const pattern = `${ref}\{${s.length}\}` - const regexp = new RegExp(pattern, 'g') - return s.length > 1 && regexp.test(s) - } + public static checkerSame: checker = (n: BN): boolean => { + const s = n.toString(10); + const ref = s.substring(0, 1); + const pattern = `${ref}{${s.length}}`; + const regexp = new RegExp(pattern, 'g'); + return s.length > 1 && regexp.test(s); + } - public static checkerSpecials: checker = (n: BN, specials:BN[]): boolean => { - return specials.find(special => special.eq(n)) !== undefined - } + public static checkerSpecials: checker = (n: BN, specials: BN[]): boolean => { + const res = specials.filter(s => n.eq(s)) + return res.length > 0 + } - /** + /** * Check whether if matches block Nth. * For instance, for N=11, return true for block 11, 22, 33, ... */ - public static checkerNth: checker = (n: BN, nbBlocks: BN): boolean => { - // [name] == 'junk' - nbBlocks = new BN(nbBlocks) - if (nbBlocks.eq(new BN(0))) return false; - return (n.mod(nbBlocks).toString(10) === '0'); - } + public static checkerNth: checker = (n: BN, nbBlocks: BN): boolean => { + // [name] == 'junk' + nbBlocks = new BN(nbBlocks); + if (nbBlocks.eq(new BN(0))) return false; + return (n.mod(nbBlocks).toString(10) === '0'); + } - public static checkers: checker[] = [ - Checkers.checkerExp, - Checkers.checkerSeq, - Checkers.checkerSame, - Checkers.checkerNth, - ] + public static checkers: checker[] = [ + Checkers.checkerExp, + Checkers.checkerSeq, + Checkers.checkerSame, + Checkers.checkerNth, + ] - /** + /** * This function runs the combined tests and returns true * if at least one checker did return true. It combines the checkers from the [[Checker]] class. */ - public static check: checker = (n: BN, nbBlocks: BN): boolean => { - let res = true; - const tests = Checkers.checkers.map((c: checker) => { - return c(n, nbBlocks); - }) - return tests.filter(item => item === true).length >= 1 - } + public static check: checker = (n: BN, nbBlocks: BN): boolean => { + const tests = Checkers.checkers.map((c: checker) => { + return c(n, nbBlocks); + }); + return tests.filter(item => item === true).length >= 1; + } } \ No newline at end of file diff --git a/packages/polkabot-plugin-blocthday/src/index.ts b/packages/polkabot-plugin-blocthday/src/index.ts index 0056ebd..a151843 100644 --- a/packages/polkabot-plugin-blocthday/src/index.ts +++ b/packages/polkabot-plugin-blocthday/src/index.ts @@ -2,8 +2,8 @@ import BN from 'bn.js'; import { PolkabotWorker } from '@polkabot/api/src/PolkabotWorker'; import { HeaderExtended } from '@polkadot/api-derive/type'; import { Command, Callable, Trace } from '@polkabot/api/src/decorators'; -import { PluginModule, PluginContext, Room, CommandHandlerOutput, NotifierMessage, NotifierSpecs, ErrorCode, Controllable } from '@polkabot/api/src/types'; -import { PolkabotPluginBase, assert, LoggerFactory } from '@polkabot/api/src'; +import { PluginModule, PluginContext, Room, CommandHandlerOutput, NotifierMessage, ErrorCode, Controllable } from '@polkabot/api/src/types'; +import { PolkabotPluginBase, assert } from '@polkabot/api/src'; import { Checkers } from './checkers'; /** @@ -28,6 +28,15 @@ export type BlocthdayConfig = { nbBlocks: number; } +/** + * Convenience for Blothday to avoid typos. + */ +export enum ConfigKeys { + NB_BLOCKS = 'NB_BLOCKS', + CHANNELS = 'CHANNELS', + SPECIALS = 'SPECIALS' +} + /** * This plugin wishes announces when the chain reached a set of given block numbers. * The initial version was taking a NB_BLOCKS parameters. It ended up annoying: at first, when the chain is at block < 1000, @@ -39,6 +48,7 @@ export type BlocthdayConfig = { export default class Blocthday extends PolkabotWorker { private config: BlocthdayConfig; private currentBlock: BN; + private static readonly MODULE = 'BLOCTHDAY'; public constructor(mod: PluginModule, context: PluginContext, config?) { super(mod, context, config); @@ -52,13 +62,11 @@ export default class Blocthday extends PolkabotWorker { // Calling this method in the ctor is mandatory PolkabotPluginBase.bindCommands(this); - // We initialize the config. Here we usually call confmgr - // TODO: Call confmgr this.config = { - channels: ['matrix', 'twitter'], // TODO: Load from config - nbBlocks: this.getConfig('NB_BLOCKS'), - specials: [], // TODO: Load from config - } + channels: this.context.config.Get(Blocthday.MODULE, ConfigKeys.CHANNELS), + nbBlocks: this.context.config.Get(Blocthday.MODULE, ConfigKeys.NB_BLOCKS), + specials: this.context.config.Get(Blocthday.MODULE, ConfigKeys.SPECIALS), + }; } /** @@ -79,18 +87,16 @@ export default class Blocthday extends PolkabotWorker { }; } - // @Trace() - // @Command({ description: 'Get the current list of the special blocks' }) - // public cmdGetSpecials(_event, room: Room): CommandHandlerOutput { - // return { - // code: ErrorCode.Ok, - // logMsg: `Specials: ${JSON.stringify(this.config.specials)}`, - // answers: [{ - // room, - // message: `Specials: ${JSON.stringify(this.config.specials)}` - // }] - // }; - // } + /** + * Remove a block number from the list of specials + * @param n + */ + private removeSpecial(n: BN): void { + const index = this.config.specials.indexOf(n, 0); + if (index > -1) { + this.config.specials.splice(index, 1); + } + } /** * This command mainly demonstrates how to change some varialbles of the plugin at runtime @@ -101,64 +107,50 @@ export default class Blocthday extends PolkabotWorker { @Trace() @Command({ description: 'Add/remove specials' }) // TODO: Add regexp here to keep simple public cmdSpecials(_event, room: Room, args: string[]): CommandHandlerOutput { - this.context.logger.debug('args: %o', args) + this.context.logger.debug('args: %o', args); - const subCommand = args && args.length == 2 ? args[0] : 'get' - const commandArgs = args && args.length == 2 ? args[1] : null // TODO: should not take [1] but 'all the rest + const subCommand = args && args.length == 2 ? args[0] : 'get'; + const commandArgs = args && args.length == 2 ? args[1] : null; // TODO: should not take [1] but 'all the rest - this.context.logger.debug('subCommand: %s', subCommand) - this.context.logger.debug('commandArgs: %s', commandArgs) + this.context.logger.debug('subCommand: %s', subCommand); + this.context.logger.debug('commandArgs: %s', commandArgs); - // TODO: Ideally, specials should be handled as a set const blockArg = new BN(commandArgs); switch (subCommand) { case 'get': - break + break; + case 'add': if (blockArg.lte(this.currentBlock)) - return { code: ErrorCode.GenericError, logMsg: `It makes no sense to add a block that past` } + return Blocthday.generateSingleAnswer('It makes no sense to add a block that past', room); else - this.config.specials.push(blockArg) - break + this.config.specials.push(blockArg); + break; + case 'rm': + this.removeSpecial(blockArg); + break; - const index = this.config.specials.indexOf(blockArg, 0); - if (index > -1) { - this.config.specials.splice(index, 1); - } - break default: - return { - code: ErrorCode.GenericError, - logMsg: `Blocthday subcommand ${subCommand} for command specials not found`, - answers: [{ - room, - message: `Blocthday subcommand ${subCommand} for command specials not found` - }] - }; + return Blocthday.generateSingleAnswer(`Blocthday subcommand ${subCommand} for command specials not found`, room); } - const specialsAsString = this.config.specials.map(bn => bn.toString(10)) - return { - code: ErrorCode.Ok, - logMsg: `Specials: ${specialsAsString}`, - answers: [{ - room, - message: `Specials: ${specialsAsString}` - }] - }; + const specialsAsString = this.config.specials.map(bn => bn.toString(10)); + return Blocthday.generateSingleAnswer(`Specials: ${specialsAsString}`, room); } @Trace() @Command({ description: 'Start the plugin' }) - public cmdStart() { - + public cmdStart(_event, room: Room): CommandHandlerOutput { + this.start(); + return Blocthday.generateSingleAnswer('OK Started', room); } @Command({ description: 'Stop the plugin' }) @Trace() - public cmdStop() { - + public cmdStop(_event, room: Room): CommandHandlerOutput { + this.stop(); + return Blocthday.generateSingleAnswer('OK Stopped', room); } public start(): void { @@ -178,9 +170,11 @@ export default class Blocthday extends PolkabotWorker { this.unsubs['subscribeNewHeads'] = await this.context.polkadot.rpc.chain.subscribeNewHeads((header: HeaderExtended) => { this.currentBlock = header.number.unwrap().toBn(); - if (Checkers.check(this.currentBlock, this.config.nbBlocks) || - Checkers.checkerSpecials(this.currentBlock, this.config.specials)) { - // TODO: If you hit one of the specials, we could not remove it from the list + const isSpecial = Checkers.checkerSpecials(this.currentBlock, this.config.specials); + if (Checkers.check(this.currentBlock, this.config.nbBlocks) || isSpecial) { + + if (isSpecial) + this.removeSpecial(this.currentBlock); const notifierMessage: NotifierMessage = { message: `Happy ${this.config.nbBlocks}-BlocthDay!!! The chain is now at block #${this.currentBlock.toString(10)}` diff --git a/packages/polkabot-plugin-blocthday/test/checkers.spec.ts b/packages/polkabot-plugin-blocthday/test/checkers.spec.ts index 8b25b33..c308c7a 100644 --- a/packages/polkabot-plugin-blocthday/test/checkers.spec.ts +++ b/packages/polkabot-plugin-blocthday/test/checkers.spec.ts @@ -3,107 +3,107 @@ import { Checkers } from '../src/checkers'; import BN from 'bn.js'; describe('Checkers', () => { - const casesExp = [new BN(1e1), new BN(1e2), new BN(1e3), new BN(1e14), new BN(8e5)]; - const casesExpFalse = [new BN(5), new BN(10004)]; - const casesSeq = [new BN('12'), new BN('123456')] - const casesSeqFalse = [new BN('1237'), new BN('1234576'), new BN('12345678910')] - const casesSame = [new BN('11'), new BN('9999999999999999')]; - const casesSameFalse = [new BN('5'), new BN('112'), new BN('9999989999999999')]; - const cases11th = [new BN('11'), new BN('22'), new BN('121')]; - const cases11thFalse = [new BN('5'), new BN('11211')]; - - const all = [] - .concat(casesExp) - .concat(casesSeq) - .concat(casesSame) - .concat(cases11th); - - const allFalse = [] - .concat(casesExpFalse) - .concat(casesSeqFalse) - .concat(casesSameFalse) - .concat(cases11thFalse); - - describe('checkerExp', () => { - casesExp.forEach((test) => { - it(`Should run checkerExp(${test}) and return true`, () => { - expect(Checkers.checkerExp(test)).to.be.true; - }); - }); - - casesExpFalse.forEach((test) => { - it(`Should run checkerExp(${test}) and return false`, () => { - expect(Checkers.checkerExp(test)).to.be.false; - }); - }); - }) - - describe('checkerSeq', () => { - casesSeq.forEach((test) => { - it(`Should run checkerSeq(${test}) and return true`, () => { - expect(Checkers.checkerSeq(test)).to.be.true; - }); - }); - - casesSeqFalse.forEach((test) => { - it(`Should run checkerSeq(${test}) and return false`, () => { - expect(Checkers.checkerSeq(test)).to.be.false; - }); - }); - }) - - describe('checkerSame', () => { - casesSame.forEach((test) => { - it(`Should run checkerSame(${test}) and return true`, () => { - expect(Checkers.checkerSame(test)).to.be.true; - }); - }); - - casesSameFalse.forEach((test) => { - it(`Should run checkerSame(${test}) and return false`, () => { - expect(Checkers.checkerSame(test)).to.be.false; - }); - }); - }) - - describe('checkerSame', () => { - all.forEach((test) => { - it(`Should run checker(${test}) and return true`, () => { - expect(Checkers.check(test, 11)).to.be.true; - }); - }); - - allFalse.forEach((test) => { - it(`Should run checker(${test}) and return false`, () => { - expect(Checkers.check(test, 11)).to.be.false; - }); - }); - }) - - describe('Checkers Nth', () => { - cases11th.forEach((test) => { - it(`Should run checkerNth(${test}, 11) and return true`, () => { - expect(Checkers.checkerNth(test, 11)).to.be.true; - }); - }); - - cases11thFalse.forEach((test) => { - it(`Should run checkerNth(${test}, 11) and return false`, () => { - expect(Checkers.checkerNth(test, 11)).to.be.false; - }); - }); - - it(`Should run checkerNth(2, 1) and return true`, () => { - expect(Checkers.checkerNth(new BN(2), 1)).to.be.true; - }); - - it(`Should run checkerNth(2, 0) and return false`, () => { - expect(Checkers.checkerNth(new BN(2), 0)).to.be.false; - }); - - it(`Should return the list of checker functions by name`, () => { - console.log(Checkers.checkers.map(fn => fn).join(',')) - expect(Checkers.checkerNth(new BN(2), 0)).to.be.false; - }); - }) + const casesExp = [new BN(1e1), new BN(1e2), new BN(1e3), new BN(1e14), new BN(8e5)]; + const casesExpFalse = [new BN(5), new BN(10004)]; + const casesSeq = [new BN('12'), new BN('123456')]; + const casesSeqFalse = [new BN('1237'), new BN('1234576'), new BN('12345678910')]; + const casesSame = [new BN('11'), new BN('9999999999999999')]; + const casesSameFalse = [new BN('5'), new BN('112'), new BN('9999989999999999')]; + const cases11th = [new BN('11'), new BN('22'), new BN('121')]; + const cases11thFalse = [new BN('5'), new BN('11211')]; + + const all = [] + .concat(casesExp) + .concat(casesSeq) + .concat(casesSame) + .concat(cases11th); + + const allFalse = [] + .concat(casesExpFalse) + .concat(casesSeqFalse) + .concat(casesSameFalse) + .concat(cases11thFalse); + + describe('checkerExp', () => { + casesExp.forEach((test) => { + it(`Should run checkerExp(${test}) and return true`, () => { + expect(Checkers.checkerExp(test)).to.be.true; + }); + }); + + casesExpFalse.forEach((test) => { + it(`Should run checkerExp(${test}) and return false`, () => { + expect(Checkers.checkerExp(test)).to.be.false; + }); + }); + }); + + describe('checkerSeq', () => { + casesSeq.forEach((test) => { + it(`Should run checkerSeq(${test}) and return true`, () => { + expect(Checkers.checkerSeq(test)).to.be.true; + }); + }); + + casesSeqFalse.forEach((test) => { + it(`Should run checkerSeq(${test}) and return false`, () => { + expect(Checkers.checkerSeq(test)).to.be.false; + }); + }); + }); + + describe('checkerSame', () => { + casesSame.forEach((test) => { + it(`Should run checkerSame(${test}) and return true`, () => { + expect(Checkers.checkerSame(test)).to.be.true; + }); + }); + + casesSameFalse.forEach((test) => { + it(`Should run checkerSame(${test}) and return false`, () => { + expect(Checkers.checkerSame(test)).to.be.false; + }); + }); + }); + + describe('checkerSame', () => { + all.forEach((test) => { + it(`Should run checker(${test}) and return true`, () => { + expect(Checkers.check(test, 11)).to.be.true; + }); + }); + + allFalse.forEach((test) => { + it(`Should run checker(${test}) and return false`, () => { + expect(Checkers.check(test, 11)).to.be.false; + }); + }); + }); + + describe('Checkers Nth', () => { + cases11th.forEach((test) => { + it(`Should run checkerNth(${test}, 11) and return true`, () => { + expect(Checkers.checkerNth(test, 11)).to.be.true; + }); + }); + + cases11thFalse.forEach((test) => { + it(`Should run checkerNth(${test}, 11) and return false`, () => { + expect(Checkers.checkerNth(test, 11)).to.be.false; + }); + }); + + it('Should run checkerNth(2, 1) and return true', () => { + expect(Checkers.checkerNth(new BN(2), 1)).to.be.true; + }); + + it('Should run checkerNth(2, 0) and return false', () => { + expect(Checkers.checkerNth(new BN(2), 0)).to.be.false; + }); + + it('Should return the list of checker functions by name', () => { + console.log(Checkers.checkers.map(fn => fn).join(',')); + expect(Checkers.checkerNth(new BN(2), 0)).to.be.false; + }); + }); }); diff --git a/packages/polkabot-plugin-operator/src/index.ts b/packages/polkabot-plugin-operator/src/index.ts index 687c2dd..2b4b437 100644 --- a/packages/polkabot-plugin-operator/src/index.ts +++ b/packages/polkabot-plugin-operator/src/index.ts @@ -72,7 +72,7 @@ export default class Operator extends PolkabotChatbot { const command = CtrlClass.commands[commandName]; message += `
                    • !${CtrlClass.meta.alias} ${command.name}: ${command.description} - ${ command.adminOnly ? 'Admin' : 'Public' - }
                    • `; + }`; }); message += '
                    '; }); diff --git a/packages/polkabot/configSpecs.yml b/packages/polkabot/configSpecs.yml index 4de431b..6c6b96a 100644 --- a/packages/polkabot/configSpecs.yml +++ b/packages/polkabot/configSpecs.yml @@ -61,10 +61,20 @@ POLKABOT: regexp: ^true|false$ NB_BLOCKS: - description: How often do we want to wish a happy Block-th-day + description: How often do we want to wish a happy Block-th-day. 0 disables it but many other automatic checks are done. type: number default: 0 + CHANNELS: + description: List of notification channels + type: array + default: ['matrix', 'twitter'] + + SPECIALS: + description: List special (=random...) blocks we want to announce. Blocks in the past have no effect. Note that the current checkers already cover many cases such as 800000, 123456, 888888, etc.... + type: array + default: [42, 69, 8888888] + BLOCKSTATS: DISABLED: description: Whether BLOCKSTATS should be enabled -- GitLab From 37f05a164cd66928347cea52510c66b07b59f1b6 Mon Sep 17 00:00:00 2001 From: chevdor Date: Thu, 28 May 2020 20:13:36 +0200 Subject: [PATCH 85/86] Fix the Matrix Notifier --- .../polkabot-plugin-blocthday/src/checkers.ts | 4 ++-- .../polkabot-plugin-notifier-matrix/src/index.ts | 15 +++++---------- 2 files changed, 7 insertions(+), 12 deletions(-) diff --git a/packages/polkabot-plugin-blocthday/src/checkers.ts b/packages/polkabot-plugin-blocthday/src/checkers.ts index 9313768..297ba75 100644 --- a/packages/polkabot-plugin-blocthday/src/checkers.ts +++ b/packages/polkabot-plugin-blocthday/src/checkers.ts @@ -43,8 +43,8 @@ export class Checkers { } public static checkerSpecials: checker = (n: BN, specials: BN[]): boolean => { - const res = specials.filter(s => n.eq(s)) - return res.length > 0 + const res = specials.filter(s => n.eq(s)); + return res.length > 0; } /** diff --git a/packages/polkabot-plugin-notifier-matrix/src/index.ts b/packages/polkabot-plugin-notifier-matrix/src/index.ts index 23ba240..7302ff4 100644 --- a/packages/polkabot-plugin-notifier-matrix/src/index.ts +++ b/packages/polkabot-plugin-notifier-matrix/src/index.ts @@ -1,5 +1,5 @@ import { PolkabotNotifier } from '../../polkabot-api/src/PolkabotNotifier'; -import { PluginModule, PluginContext, NotifierMessage, NotifierSpecs, CommandHandlerOutput, ErrorCode, Room, Controllable } from '../../polkabot-api/src/types'; +import { PluginModule, PluginContext, NotifierMessage, NotifierSpecs, CommandHandlerOutput, Room, Controllable } from '../../polkabot-api/src/types'; import { Command, Callable } from '@polkabot/api/src/decorators'; import { assert, PolkabotPluginBase } from '@polkabot/api/src'; @@ -33,15 +33,10 @@ export default class MatrixNotifier extends PolkabotNotifier { const roomId = this.context.config.Get('MATRIX', 'ROOM_ID'); - this.context.matrix.sendTextMessage(roomId, { message: messages.join(' ') }); + // Send the message to the public room + this.context.matrix.sendTextMessage(roomId, messages.join(' ')); - return { - code: ErrorCode.Ok, - logMsg: messages.join(' '), - answers: [{ - room, - message: 'Done' - }] - }; + // return the result that will show up in the logs and operator room + return PolkabotPluginBase.generateSingleAnswer(messages.join(' '), room); } } -- GitLab From a6a9c5f782f0c2ecd035f75812318876316445ee Mon Sep 17 00:00:00 2001 From: chevdor Date: Fri, 29 May 2020 10:30:34 +0200 Subject: [PATCH 86/86] Fix tests, cleanup and version bump --- packages/polkabot-api/src/PolkabotChatbot.ts | 2 +- .../polkabot-api/src/decorators/configured.ts | 49 ------------------- packages/polkabot-api/src/decorators/index.ts | 1 - packages/polkabot-api/test/chatbot.spec.ts | 4 +- packages/polkabot-api/test/decorators.spec.ts | 35 +++++-------- .../polkabot-plugin-blocthday/package.json | 2 +- 6 files changed, 15 insertions(+), 78 deletions(-) delete mode 100644 packages/polkabot-api/src/decorators/configured.ts diff --git a/packages/polkabot-api/src/PolkabotChatbot.ts b/packages/polkabot-api/src/PolkabotChatbot.ts index 1c8217b..61543e1 100644 --- a/packages/polkabot-api/src/PolkabotChatbot.ts +++ b/packages/polkabot-api/src/PolkabotChatbot.ts @@ -52,7 +52,7 @@ export abstract class PolkabotChatbot extends PolkabotPluginBase implements Chat * See https://regex101.com/r/1EDFsV/1/tests */ public static getBotCommand(str: string): BotCommand | null { - const capture = str.match(/^!(?\w+)(\s+(?\w+))(\s+(?.*))?$/i) || []; + const capture = str.match(/!(?\w+)(\s+(?\w+))(\s+(?.*))?$/i) || []; if (capture.length > 0 && capture.groups.module && capture.groups.command) { const { module, command, args } = capture.groups; const argList: string[] = args === undefined ? null : args.split(' ').map(i => i.replace(' ', '')); diff --git a/packages/polkabot-api/src/decorators/configured.ts b/packages/polkabot-api/src/decorators/configured.ts deleted file mode 100644 index 8857f8d..0000000 --- a/packages/polkabot-api/src/decorators/configured.ts +++ /dev/null @@ -1,49 +0,0 @@ -import LoggerSingleton from '@polkabot/api/src/LoggerFactory'; - -const Logger = LoggerSingleton.getInstance(); - -/** - * This type describes the arguments expected by the [[Configured | Configured decorator]]. - */ -export type ConfiguredDecoratorArgs = { - /** Defaults to POLKABOT */ - application?: string; - /** Optional, this is the name of the MODULE as found in the config specs. If omited, the uppercased name of the class is used. */ - module?: string; - /** Mandatory, this is the list of keys we expect in the config */ - keys: string[]; -} - -export interface Configured { - configKeys: string[]; - configModule: string; - configApplication: string; - getKeys(): string[]; - getValue(key: string, module?: string, application?: string): T; -} - -/** - * This class decorator simplifies how we can make config values available. - * We pass the list of config params and they will be made available as list and getters. - * @param params The list of config params - * @deprecated This is currently not used and will likely be removed - */ -export function Configured(params: ConfiguredDecoratorArgs): Function { - return (target: Configured) => { - Logger.debug('@Configured'); - target.configApplication = params.application ? params.application : 'POLKABOT'; - target.configModule = params.module ? params.module : (target as any).name.toUpperCase(); - - if (!target.configKeys) target.configKeys = params.keys; - - target.getKeys = (): string[] => { - return target.configKeys; - }; - - target.getValue = function (key: string): T { - Logger.debug(`Get key for ${target.configApplication}_${target.configModule}_${key}`); - throw new Error('@Configured is not implemented'); - //return 42 as unknown as T; - }; - }; -} diff --git a/packages/polkabot-api/src/decorators/index.ts b/packages/polkabot-api/src/decorators/index.ts index c79f873..88900b5 100644 --- a/packages/polkabot-api/src/decorators/index.ts +++ b/packages/polkabot-api/src/decorators/index.ts @@ -1,4 +1,3 @@ -export { Configured } from './configured'; export { Callable } from './callable'; export { Command } from './command'; export { Trace } from './trace'; \ No newline at end of file diff --git a/packages/polkabot-api/test/chatbot.spec.ts b/packages/polkabot-api/test/chatbot.spec.ts index 199a767..85822b9 100644 --- a/packages/polkabot-api/test/chatbot.spec.ts +++ b/packages/polkabot-api/test/chatbot.spec.ts @@ -23,11 +23,11 @@ describe('PolkabotChatbot', () => { expect(cmd.args).to.deep.equal(['bar', 'param=42']); }); - xit('Should get a valid botCommand', () => { + it('Should get a valid botCommand', () => { const cmd = PolkabotChatbot.getBotCommand(' !mod foo bar'); expect(cmd.module).to.equal('mod'); expect(cmd.command).to.equal('foo'); - expect(cmd.args).to.be.null; + expect(cmd.args).to.deep.equal(['bar']); }); it('Should not find a botCommand #1', () => { diff --git a/packages/polkabot-api/test/decorators.spec.ts b/packages/polkabot-api/test/decorators.spec.ts index eb48245..8cae2cc 100644 --- a/packages/polkabot-api/test/decorators.spec.ts +++ b/packages/polkabot-api/test/decorators.spec.ts @@ -22,32 +22,19 @@ class TestClass2 { describe('Decorators', () => { it('TestClass1', () => { - expect((TestClass1 as unknown as Controllable).meta.alias).not.to.be.undefined; - expect((TestClass1 as unknown as Controllable).meta.name).to.eql('Foo'); - expect((TestClass1 as unknown as Controllable).meta.alias).to.eql('bar'); - expect((TestClass1 as unknown as Controllable).commands).to.be.lengthOf(1); + const CtrlClass = (TestClass1 as unknown as Controllable) + expect(CtrlClass.meta.alias).not.to.be.undefined; + expect(CtrlClass.meta.name).to.eql('Foo'); + expect(CtrlClass.meta.alias).to.eql('bar'); + expect(CtrlClass.getCommands()).to.be.lengthOf(1); }); it('TestClass2', () => { - expect((TestClass2 as unknown as Controllable).meta.alias).not.to.be.undefined; - expect((TestClass2 as unknown as Controllable).meta.name).to.eql('TestClass2'); - expect((TestClass2 as unknown as Controllable).meta.alias).to.eql('testclass2'); - expect((TestClass2 as unknown as Controllable).commands).to.be.lengthOf(3); + const CtrlClass = (TestClass2 as unknown as Controllable) + + expect(CtrlClass.meta.alias).not.to.be.undefined; + expect(CtrlClass.meta.name).to.eql('TestClass2'); + expect(CtrlClass.meta.alias).to.eql('testclass2'); + expect(CtrlClass.getCommands()).to.be.lengthOf(3); }); }); - -// @Configured({ keys: ['VAL1', 'VAL2']}) -// class Configured1 { - -// } - -// describe('Decorator Configured', () => { -// it('should provide defaults', () => { -// expect((Configured1 as unknown as Configured).getKeys).to.be.a('Function'); -// expect((Configured1 as unknown as Configured).getValue).to.be.a('Function'); - -// expect((Configured1 as unknown as Configured).getKeys()).to.deep.equal(['VAL1', 'VAL2']) -// expect((Configured1 as unknown as Configured).getValue('VAL1')).to.equal(42) - -// }); -// }); diff --git a/packages/polkabot-plugin-blocthday/package.json b/packages/polkabot-plugin-blocthday/package.json index 83e196f..0c3eae1 100644 --- a/packages/polkabot-plugin-blocthday/package.json +++ b/packages/polkabot-plugin-blocthday/package.json @@ -1,6 +1,6 @@ { "name": "polkabot-plugin-blocthday", - "version": "0.4.4", + "version": "0.5.0", "description": "", "main": "dist/src/index.js", "scripts": { -- GitLab