diff --git a/.gitignore b/.gitignore index 0662b19..0412ae8 100644 --- a/.gitignore +++ b/.gitignore @@ -197,4 +197,5 @@ typings/ ### Manually ignored files /src/main/resources/public/ +/src/frontend/src/braze-model.d.ts **/*.mv.db \ No newline at end of file diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 0000000..7595a0d --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,7 @@ + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index 3521517..5168f6d 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,8 +1,11 @@ - + + + + diff --git a/build.gradle.kts b/build.gradle.kts index 2afe51d..4542bdd 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,8 +1,10 @@ +@file:Suppress("HasPlatformType", "PropertyName") + import org.jetbrains.kotlin.gradle.tasks.KotlinCompile buildscript { var kotlinVersion: String by extra - kotlinVersion = "1.3.20" + kotlinVersion = "1.3.21" repositories { mavenCentral() @@ -20,9 +22,9 @@ plugins { idea maven - kotlin("jvm") version "1.3.20" - kotlin("plugin.spring") version "1.3.20" - kotlin("plugin.jpa") version "1.3.20" + kotlin("jvm") version "1.3.21" + kotlin("plugin.spring") version "1.3.21" + kotlin("plugin.jpa") version "1.3.21" id("org.springframework.boot") version "2.0.4.RELEASE" id("io.spring.dependency-management") version "1.0.6.RELEASE" @@ -36,6 +38,7 @@ val retrofitVersion = "2.4.0" repositories { mavenLocal() mavenCentral() + maven { url = uri("https://jitpack.io") } } dependencies { @@ -55,11 +58,15 @@ dependencies { compile("com.h2database", "h2") + compile("com.github.ntrrgc", "ts-generator", "1.1.1") + testCompile("org.testng", "testng", "6.14.3") testCompile("org.springframework", "spring-test") testCompile("org.springframework.boot", "spring-boot-starter-test") } +// todo: replace with tasks{} block + val bootJar by tasks.getting val assemble by tasks.getting val install by tasks.getting @@ -74,11 +81,23 @@ val cleanStatic by tasks.creating(Delete::class) { delete("src/main/resources/public") } +val generateDefinitions by tasks.creating(JavaExec::class) { + classpath = sourceSets["main"].runtimeClasspath + main = "com.forresthopkinsa.braze.model.TypeDefGeneratorKt" + standardOutput = File(buildDir, "braze-model.d.ts").outputStream() +} + +val copyDefinitions by tasks.creating(Copy::class) { + dependsOn(generateDefinitions) + from(File(buildDir, "braze-model.d.ts")) + destinationDir = File(projectDir, "src/frontend/src") +} + npm_run_build.dependsOn(cleanStatic) bootJar.mustRunAfter(npm_run_build) -assemble.dependsOn(npm_run_build) +assemble.dependsOn(npm_run_build, copyDefinitions) install.dependsOn(assemble) @@ -90,6 +109,10 @@ tasks.withType { useTestNG() } +springBoot { + mainClassName = "com.forresthopkinsa.braze.spring.ApplicationKt" +} + node { nodeModulesDir = file("${project.projectDir}/src/frontend") } diff --git a/src/frontend/.eslintignore b/src/frontend/.eslintignore index e2192c5..df13559 100644 --- a/src/frontend/.eslintignore +++ b/src/frontend/.eslintignore @@ -3,3 +3,4 @@ /dist/ /*.js /test/unit/coverage/ +**/braze-model.d.ts diff --git a/src/frontend/.eslintrc.js b/src/frontend/.eslintrc.js index 5cb29d6..b676da3 100644 --- a/src/frontend/.eslintrc.js +++ b/src/frontend/.eslintrc.js @@ -1,28 +1,31 @@ -// https://eslint.org/docs/user-guide/configuring - module.exports = { root: true, - parserOptions: { - parser: 'babel-eslint' - }, env: { browser: true, }, + parserOptions: { + project: './tsconfig.json', + }, extends: [ - // https://github.com/vuejs/eslint-plugin-vue#priority-a-essential-error-prevention - 'plugin:vue/recommended', - // https://github.com/standard/standard/blob/master/docs/RULES-en.md - 'standard' + 'airbnb-base', + 'plugin:@typescript-eslint/recommended', + 'plugin:prettier/recommended', + 'prettier', + 'prettier/@typescript-eslint', ], - // required to lint *.vue files - plugins: [ - 'vue' - ], - // add your custom rules here + plugins: ['@typescript-eslint', 'prettier'], rules: { // allow async-await 'generator-star-spacing': 'off', - // allow debugger during development - 'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off' - } -} + 'no-param-reassign': 'off', + 'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off', + 'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'off', + }, + settings: { + 'import/resolver': { + webpack: { + config: 'build/webpack.base.conf.js', + }, + }, + }, +}; diff --git a/src/frontend/.prettierrc.js b/src/frontend/.prettierrc.js new file mode 100644 index 0000000..eb35f04 --- /dev/null +++ b/src/frontend/.prettierrc.js @@ -0,0 +1,4 @@ +module.exports = { + singleQuote: true, + trailingComma: "es5" +} diff --git a/src/frontend/build/vue-loader.conf.js b/src/frontend/build/vue-loader.conf.js index 33ed58b..18b7295 100644 --- a/src/frontend/build/vue-loader.conf.js +++ b/src/frontend/build/vue-loader.conf.js @@ -11,6 +11,7 @@ module.exports = { sourceMap: sourceMapEnabled, extract: isProduction }), + esModule: true, cssSourceMap: sourceMapEnabled, cacheBusting: config.dev.cacheBusting, transformToRequire: { diff --git a/src/frontend/build/webpack.base.conf.js b/src/frontend/build/webpack.base.conf.js index 1f4f47e..46d72b4 100644 --- a/src/frontend/build/webpack.base.conf.js +++ b/src/frontend/build/webpack.base.conf.js @@ -9,7 +9,7 @@ function resolve (dir) { } const createLintingRule = () => ({ - test: /\.(js|vue)$/, + test: /\.(ts|js|vue)$/, loader: 'eslint-loader', enforce: 'pre', include: [resolve('src'), resolve('test')], @@ -22,7 +22,7 @@ const createLintingRule = () => ({ module.exports = { context: path.resolve(__dirname, '../'), entry: { - app: './src/main.js' + app: './src/main.ts' }, output: { path: config.build.assetsRoot, @@ -32,7 +32,7 @@ module.exports = { : config.dev.assetsPublicPath }, resolve: { - extensions: ['.js', '.vue', '.json'], + extensions: ['.ts', '.js', '.vue', '.json'], alias: { 'vue$': 'vue/dist/vue.esm.js', '@': resolve('src'), @@ -46,6 +46,14 @@ module.exports = { loader: 'vue-loader', options: vueLoaderConfig }, + { + test: /\.tsx?$/, + loader: 'ts-loader', + exclude: /node_modules/, + options: { + appendTsSuffixTo: [/\.vue$/] + } + }, { test: /\.js$/, loader: 'babel-loader', diff --git a/src/frontend/build/webpack.dev.conf.js b/src/frontend/build/webpack.dev.conf.js index 070ae22..6a9f764 100755 --- a/src/frontend/build/webpack.dev.conf.js +++ b/src/frontend/build/webpack.dev.conf.js @@ -20,7 +20,7 @@ const devWebpackConfig = merge(baseWebpackConfig, { // cheap-module-eval-source-map is faster for development devtool: config.dev.devtool, - // these devServer options should be customized in /config/index.js + // these devServer options should be customized in /config/index.ts devServer: { clientLogLevel: 'warning', historyApiFallback: { diff --git a/src/frontend/package-lock.json b/src/frontend/package-lock.json index 7414875..404445f 100644 --- a/src/frontend/package-lock.json +++ b/src/frontend/package-lock.json @@ -172,6 +172,68 @@ "integrity": "sha512-7NQmHra/JILCd1QqpSzl8+mJRc8ZHz3uDm8YV1Ks9IhK0epEiTw8aIErbvH9PI+6XbqhyIQy3462nEsn7UVzjQ==", "dev": true }, + "@typescript-eslint/eslint-plugin": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-1.3.0.tgz", + "integrity": "sha512-s+vjO9+PvYS2A6FnQC/imyEDOkrEKIzSpPf2OEGnkKqa5+1d0cuXgCi/oROtuBht2/u/iK22nrYcO/Ei4R8F/g==", + "dev": true, + "requires": { + "@typescript-eslint/parser": "1.3.0", + "requireindex": "^1.2.0", + "tsutils": "^3.7.0" + } + }, + "@typescript-eslint/parser": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-1.3.0.tgz", + "integrity": "sha512-Q5cz9nyEQyRrtItRElvQXdNs0Xja1xvOdphDQR7N6MqUdi4juWVNxHKypdHQCx9OcEBev6pWHOda8lwg/2W9/g==", + "dev": true, + "requires": { + "@typescript-eslint/typescript-estree": "1.3.0", + "eslint-scope": "^4.0.0", + "eslint-visitor-keys": "^1.0.0" + }, + "dependencies": { + "eslint-scope": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.0.tgz", + "integrity": "sha512-1G6UTDi7Jc1ELFwnR58HV4fK9OQK4S6N985f166xqXxpjU6plxFISJa2Ba9KCQuFa8RCnj/lSFJbHo7UFDBnUA==", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + } + } + }, + "@typescript-eslint/typescript-estree": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-1.3.0.tgz", + "integrity": "sha512-h6UxHSmBUopFcxHg/eryrA+GwHMbh7PxotMbkq9p2f3nX60CKm5Zc0VN8krBD3IS5KqsK0iOz24VpEWrP+JZ2Q==", + "dev": true, + "requires": { + "lodash.unescape": "4.0.1", + "semver": "5.5.0" + }, + "dependencies": { + "semver": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", + "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", + "dev": true + } + } + }, + "@vue/eslint-config-typescript": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@vue/eslint-config-typescript/-/eslint-config-typescript-4.0.0.tgz", + "integrity": "sha512-uSMAMgw4xDgVdZQhpbtJRo8nMV4oOy3Ht8olfOo7xvYFYLMF2JZ1tDRKd9/NSusxA72O2Vma+HzmyzDHg9evcQ==", + "dev": true, + "requires": { + "@typescript-eslint/eslint-plugin": "^1.1.0", + "@typescript-eslint/parser": "^1.1.0" + } + }, "abab": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/abab/-/abab-1.0.4.tgz", @@ -195,9 +257,9 @@ } }, "acorn": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.1.tgz", - "integrity": "sha512-d+nbxBUGKg7Arpsvbnlq61mc12ek3EY8EQldM3GPAhWJ1UVxC6TDGbIvUMNU6obBX3i1+ptCIzV4vq0gFPEGVQ==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.0.0.tgz", + "integrity": "sha512-vvZ8PwswGTM15ZXyk3I+SvpTm8UbF8iRnGiU/f9TPU6By7K1XTvfvusFtoQt0WYycudFSYW2lrJDivhBlGovvQ==", "dev": true }, "acorn-dynamic-import": { @@ -224,25 +286,28 @@ "dev": true, "requires": { "acorn": "^5.0.0" - } - }, - "acorn-jsx": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", - "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", - "dev": true, - "requires": { - "acorn": "^3.0.4" }, "dependencies": { "acorn": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", - "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", + "version": "5.7.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz", + "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==", "dev": true } } }, + "acorn-jsx": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.0.1.tgz", + "integrity": "sha512-HJ7CfNHrfJLlNTzIEUTj43LNWGkqpRLxm3YjAlcD0ACydk9XynzYsCBHxut+iqt+1aBXkx9UP/w/ZqMr13XIzg==", + "dev": true + }, + "acorn-walk": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz", + "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==", + "dev": true + }, "agent-base": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-2.1.1.tgz", @@ -273,10 +338,16 @@ "json-schema-traverse": "^0.3.0" } }, + "ajv-errors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", + "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", + "dev": true + }, "ajv-keywords": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.1.tgz", - "integrity": "sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I=", + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.1.tgz", + "integrity": "sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ==", "dev": true }, "align-text": { @@ -313,6 +384,12 @@ "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", "dev": true }, + "ansi-colors": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", + "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==", + "dev": true + }, "ansi-escapes": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.1.0.tgz", @@ -398,10 +475,10 @@ "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=", "dev": true }, - "array-find-index": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", - "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", + "array-find": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-find/-/array-find-1.0.0.tgz", + "integrity": "sha1-bI4obRHtdoMn+OYuzuhzU8o+eLg=", "dev": true }, "array-flatten": { @@ -410,16 +487,6 @@ "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", "dev": true }, - "array-includes": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.0.3.tgz", - "integrity": "sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0=", - "dev": true, - "requires": { - "define-properties": "^1.1.2", - "es-abstract": "^1.7.0" - } - }, "array-union": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", @@ -1624,15 +1691,24 @@ "tweetnacl": "^0.14.3" } }, - "bfj-node4": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/bfj-node4/-/bfj-node4-5.3.1.tgz", - "integrity": "sha512-SOmOsowQWfXc7ybFARsK3C4MCOWzERaOMV/Fl3Tgjs+5dJWyzo3oa127jL44eMbQiAN17J7SvAs2TRxEScTUmg==", + "bfj": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/bfj/-/bfj-6.1.2.tgz", + "integrity": "sha512-BmBJa4Lip6BPRINSZ0BPEIfB1wUY/9rwbwvIHQA1KjX9om29B6id0wnWXq7m3bn5JrUVjeOTnVuhPT1FiHwPGw==", "dev": true, "requires": { - "bluebird": "^3.5.1", - "check-types": "^7.3.0", - "tryer": "^1.0.0" + "bluebird": "^3.5.5", + "check-types": "^8.0.3", + "hoopy": "^0.1.4", + "tryer": "^1.0.1" + }, + "dependencies": { + "bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + } } }, "big.js": { @@ -1744,9 +1820,9 @@ }, "dependencies": { "array-flatten": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.1.tgz", - "integrity": "sha1-Qmu52oQJDBg42BLIFQryCoMx4pY=", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", "dev": true } } @@ -2005,19 +2081,10 @@ "unset-value": "^1.0.0" } }, - "caller-path": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", - "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", - "dev": true, - "requires": { - "callsites": "^0.2.0" - } - }, "callsites": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", - "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.0.0.tgz", + "integrity": "sha512-tWnkwu9YEq2uzlBDI4RcLn8jrFvF9AOi8PxDNU3hZZjJcjkcRAq3vCI+vZcg1SuxISDYe86k9VZFwAxDiJGoAw==", "dev": true }, "camel-case": { @@ -2036,24 +2103,6 @@ "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", "dev": true }, - "camelcase-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", - "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", - "dev": true, - "requires": { - "camelcase": "^2.0.0", - "map-obj": "^1.0.0" - }, - "dependencies": { - "camelcase": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", - "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", - "dev": true - } - } - }, "caniuse-api": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-1.6.1.tgz", @@ -2137,15 +2186,15 @@ } }, "chardet": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", - "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=", + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", "dev": true }, "check-types": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/check-types/-/check-types-7.4.0.tgz", - "integrity": "sha512-YbulWHdfP99UfZ73NcUDlNJhEIDgm9Doq9GhpyXbF+7Aegi3CVV7qqMCKTTqJxlvEvnQBp9IA+dxsGN6xK/nSg==", + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/check-types/-/check-types-8.0.3.tgz", + "integrity": "sha512-YpeKZngUmG65rLudJ4taU7VLkOCTMhNl/u4ctNC56LQS/zJTyNH0Lrtwm1tfTsbLlwvlfsA2d1c8vCf/Kh2KwQ==", "dev": true }, "chokidar": { @@ -2591,33 +2640,33 @@ "dev": true }, "compressible": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.14.tgz", - "integrity": "sha1-MmxfUH+7BV9UEWeCuWmoG2einac=", + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", "dev": true, "requires": { - "mime-db": ">= 1.34.0 < 2" + "mime-db": ">= 1.43.0 < 2" }, "dependencies": { "mime-db": { - "version": "1.36.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.36.0.tgz", - "integrity": "sha512-L+xvyD9MkoYMXb1jAmzI/lWYAxAMCPvIBSWur0PZ5nOf5euahRLVqH//FKW9mWp2lkqUgYiXPgkzfMUFi4zVDw==", + "version": "1.43.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.43.0.tgz", + "integrity": "sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ==", "dev": true } } }, "compression": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.3.tgz", - "integrity": "sha512-HSjyBG5N1Nnz7tF2+O7A9XUhyjru71/fwgNb7oIsEVHR0WShfs2tIS/EySLgiTe98aOK18YDlMXpzjCXY/n9mg==", + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", "dev": true, "requires": { "accepts": "~1.3.5", "bytes": "3.0.0", - "compressible": "~2.0.14", + "compressible": "~2.0.16", "debug": "2.6.9", - "on-headers": "~1.0.1", + "on-headers": "~1.0.2", "safe-buffer": "5.1.2", "vary": "~1.1.2" } @@ -2682,9 +2731,9 @@ } }, "connect-history-api-fallback": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz", - "integrity": "sha1-sGhzk0vF40T+9hGhlqb6rgruAVo=", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", + "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", "dev": true }, "console-browserify": { @@ -3210,15 +3259,6 @@ "integrity": "sha1-QICG1AlVDCYxFVYZ6fp7ytw7mRs=", "dev": true }, - "currently-unhandled": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", - "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", - "dev": true, - "requires": { - "array-find-index": "^1.0.1" - } - }, "cyclist": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz", @@ -3303,10 +3343,26 @@ } }, "deep-equal": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", - "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=", - "dev": true + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", + "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", + "dev": true, + "requires": { + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.1", + "is-regex": "^1.0.4", + "object-is": "^1.0.1", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.2.0" + }, + "dependencies": { + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + } + } }, "deep-is": { "version": "0.1.3", @@ -3314,6 +3370,46 @@ "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", "dev": true }, + "default-gateway": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-2.7.2.tgz", + "integrity": "sha512-lAc4i9QJR0YHSDFdzeBQKfZ1SRDG3hsJNEkrpcZa8QhBfidLAilT60BDEIVUUGqosFp425KOgB3uYqcnQrWafQ==", + "dev": true, + "requires": { + "execa": "^0.10.0", + "ip-regex": "^2.1.0" + }, + "dependencies": { + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "execa": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.10.0.tgz", + "integrity": "sha512-7XOMnz8Ynx1gGo/3hyV9loYNPWM94jG3+3T3Y8tsfSstFmETmENCMU/A/zj8Lyaj1lkgEepKepvd6240tBRvlw==", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + } + } + }, "default-require-extensions": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-2.0.0.tgz", @@ -3473,9 +3569,9 @@ "dev": true }, "detect-node": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.3.tgz", - "integrity": "sha1-ogM8CcyOFY03dI+951B4Mr1s4Sc=", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz", + "integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==", "dev": true }, "diff": { @@ -3930,88 +4026,194 @@ } }, "eslint": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.19.1.tgz", - "integrity": "sha512-bT3/1x1EbZB7phzYu7vCr1v3ONuzDtX8WjuM9c0iYxe+cq+pwcKEoQjl7zd3RpC6YOLgnSy3cTN58M2jcoPDIQ==", + "version": "5.13.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.13.0.tgz", + "integrity": "sha512-nqD5WQMisciZC5EHZowejLKQjWGuFS5c70fxqSKlnDME+oz9zmE8KTlX+lHSg+/5wsC/kf9Q9eMkC8qS3oM2fg==", "dev": true, "requires": { - "ajv": "^5.3.0", - "babel-code-frame": "^6.22.0", + "@babel/code-frame": "^7.0.0", + "ajv": "^6.5.3", "chalk": "^2.1.0", - "concat-stream": "^1.6.0", - "cross-spawn": "^5.1.0", - "debug": "^3.1.0", + "cross-spawn": "^6.0.5", + "debug": "^4.0.1", "doctrine": "^2.1.0", - "eslint-scope": "^3.7.1", + "eslint-scope": "^4.0.0", + "eslint-utils": "^1.3.1", "eslint-visitor-keys": "^1.0.0", - "espree": "^3.5.4", - "esquery": "^1.0.0", + "espree": "^5.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.0.1", - "ignore": "^3.3.3", + "globals": "^11.7.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", - "inquirer": "^3.0.6", - "is-resolvable": "^1.0.0", - "js-yaml": "^3.9.1", + "inquirer": "^6.1.0", + "js-yaml": "^3.12.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.3.0", - "lodash": "^4.17.4", - "minimatch": "^3.0.2", + "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": "^1.0.1", - "require-uncached": "^1.0.3", - "semver": "^5.3.0", + "regexpp": "^2.0.1", + "semver": "^5.5.1", "strip-ansi": "^4.0.0", - "strip-json-comments": "~2.0.1", - "table": "4.0.2", - "text-table": "~0.2.0" + "strip-json-comments": "^2.0.1", + "table": "^5.0.2", + "text-table": "^0.2.0" }, "dependencies": { + "@babel/code-frame": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz", + "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==", + "dev": true, + "requires": { + "@babel/highlight": "^7.0.0" + } + }, + "@babel/highlight": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz", + "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==", + "dev": true, + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" + } + }, + "acorn": { + "version": "6.0.7", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.0.7.tgz", + "integrity": "sha512-HNJNgE60C9eOTgn974Tlp3dpLZdUr+SoxxDwPaY9J/kDNOLQTkaDgwBUXAF4SSsrAwD9RpdxuHK/EbuF+W9Ahw==", + "dev": true + }, + "acorn-jsx": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.0.1.tgz", + "integrity": "sha512-HJ7CfNHrfJLlNTzIEUTj43LNWGkqpRLxm3YjAlcD0ACydk9XynzYsCBHxut+iqt+1aBXkx9UP/w/ZqMr13XIzg==", + "dev": true + }, + "ajv": { + "version": "6.8.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.8.1.tgz", + "integrity": "sha512-eqxCp82P+JfqL683wwsL73XmFs1eG6qjw+RD3YHx+Jll1r0jNd4dh8QG9NYAeNGA/hnZjeEDgtTskgJULbxpWQ==", + "dev": true, + "requires": { + "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-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "dev": true }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { - "ms": "2.0.0" + "ms": "^2.1.1" } }, - "esprima": { + "eslint-scope": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", - "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.0.tgz", + "integrity": "sha512-1G6UTDi7Jc1ELFwnR58HV4fK9OQK4S6N985f166xqXxpjU6plxFISJa2Ba9KCQuFa8RCnj/lSFJbHo7UFDBnUA==", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "espree": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-5.0.0.tgz", + "integrity": "sha512-1MpUfwsdS9MMoN7ZXqAr9e9UKdVHDcvrJpyx7mm1WuQlx/ygErEQBzgi5Nh5qBHIoYweprhtMkTCb9GhcAIcsA==", + "dev": true, + "requires": { + "acorn": "^6.0.2", + "acorn-jsx": "^5.0.0", + "eslint-visitor-keys": "^1.0.0" + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", "dev": true }, "globals": { - "version": "11.7.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.7.0.tgz", - "integrity": "sha512-K8BNSPySfeShBQXsahYB/AbbWruVOTyVpgoIDnl8odPpeSfP2J5QO2oLFFdl2j7GfDCtZj2bMKar2T49itTPCg==", + "version": "11.10.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.10.0.tgz", + "integrity": "sha512-0GZF1RiPKU97IHUO5TORo9w1PwrH/NBPl+fS7oMLdaTRiYmYbwK4NWoZWrAdd0/abG9R2BU+OiwyQpTpE6pdfQ==", + "dev": true + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "dev": true }, "js-yaml": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.0.tgz", - "integrity": "sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A==", + "version": "3.12.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.1.tgz", + "integrity": "sha512-um46hB9wNOKlwkHgiuyEVAybXBjwFUV0Z/RaHJblRd9DXltue9FTYvzCr9ErQrK9Adz5MU4gHWVaNUfdmrC8qA==", "dev": true, "requires": { "argparse": "^1.0.7", "esprima": "^4.0.0" } }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + }, "strip-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", @@ -4023,59 +4225,72 @@ } } }, - "eslint-config-standard": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-10.2.1.tgz", - "integrity": "sha1-wGHk0GbzedwXzVYsZOgZtN1FRZE=", - "dev": true + "eslint-config-airbnb-base": { + "version": "13.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-13.1.0.tgz", + "integrity": "sha512-XWwQtf3U3zIoKO1BbHh6aUhJZQweOwSt4c2JrPDg9FP3Ltv3+YfEv7jIDB8275tVnO/qOHbfuYg3kzw6Je7uWw==", + "dev": true, + "requires": { + "eslint-restricted-globals": "^0.1.1", + "object.assign": "^4.1.0", + "object.entries": "^1.0.4" + } + }, + "eslint-config-prettier": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-4.0.0.tgz", + "integrity": "sha512-kWuiJxzV5NwOwZcpyozTzDT5KJhBw292bbYro9Is7BWnbNMg15Gmpluc1CTetiCatF8DRkNvgPAOaSyg+bYr3g==", + "dev": true, + "requires": { + "get-stdin": "^6.0.0" + }, + "dependencies": { + "get-stdin": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", + "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", + "dev": true + } + } }, "eslint-friendly-formatter": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-friendly-formatter/-/eslint-friendly-formatter-3.0.0.tgz", - "integrity": "sha1-J4h0Q1psRuwdlPoLH/SU4w7wQpA=", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/eslint-friendly-formatter/-/eslint-friendly-formatter-4.0.1.tgz", + "integrity": "sha1-J9UE3IN/fK3b8gGy6EpO5zC6Pvo=", "dev": true, "requires": { - "chalk": "^1.0.0", + "chalk": "^2.0.1", "coalescy": "1.0.0", "extend": "^3.0.0", "minimist": "^1.2.0", + "strip-ansi": "^4.0.0", "text-table": "^0.2.0" }, "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "dev": true }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "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" - } - }, "minimist": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", "dev": true }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "eslint-import-resolver-node": { + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "eslint-import-resolver-node": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz", "integrity": "sha512-sfmTqJfPSizWu4aymbPr4Iidp5yKm8yDkHp+Ir3YiTHiiDfxh69mOUsmiqW6RZ9zRXFaF64GtYmN7e+8GHBv6Q==", @@ -4085,10 +4300,53 @@ "resolve": "^1.5.0" } }, + "eslint-import-resolver-webpack": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-webpack/-/eslint-import-resolver-webpack-0.11.0.tgz", + "integrity": "sha512-vX8rYSPdKtTLkK2FoU1ZRyEsl6wP1FB40ytjrEgMhzUkEkBLuZAkv1KNR+2Ml7lzMOObXI3yaEDiaQ/Yvoczhw==", + "dev": true, + "requires": { + "array-find": "^1.0.0", + "debug": "^2.6.8", + "enhanced-resolve": "~0.9.0", + "find-root": "^1.1.0", + "has": "^1.0.1", + "interpret": "^1.0.0", + "lodash": "^4.17.4", + "node-libs-browser": "^1.0.0 || ^2.0.0", + "resolve": "^1.4.0", + "semver": "^5.3.0" + }, + "dependencies": { + "enhanced-resolve": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-0.9.1.tgz", + "integrity": "sha1-TW5omzcl+GCQknzMhs2fFjW4ni4=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.2.0", + "tapable": "^0.1.8" + } + }, + "memory-fs": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.2.0.tgz", + "integrity": "sha1-8rslNovBIeORwlIN6Slpyu4KApA=", + "dev": true + }, + "tapable": { + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-0.1.10.tgz", + "integrity": "sha1-KcNXB8K3DlDQdIK10gLo7URtr9Q=", + "dev": true + } + } + }, "eslint-loader": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/eslint-loader/-/eslint-loader-1.9.0.tgz", - "integrity": "sha512-40aN976qSNPyb9ejTqjEthZITpls1SVKtwguahmH1dzGCwQU/vySE+xX33VZmD8csU0ahVNCtFlsPgKqRBiqgg==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/eslint-loader/-/eslint-loader-2.1.2.tgz", + "integrity": "sha512-rA9XiXEOilLYPOIInvVH5S/hYfyTPyxag6DZhoQOduM+3TkghAEQ3VcFO8VnX4J4qg/UIBzp72aOf/xvYmpmsg==", "dev": true, "requires": { "loader-fs-cache": "^1.0.0", @@ -4108,6 +4366,16 @@ "pkg-dir": "^2.0.0" } }, + "eslint-plugin-es": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-1.4.0.tgz", + "integrity": "sha512-XfFmgFdIUDgvaRAlaXUkxrRg5JSADoRC8IkKLc/cISeR3yHVMefFHQZpcyXXEUUPHfy5DwviBcrfqlyqEwlQVw==", + "dev": true, + "requires": { + "eslint-utils": "^1.3.0", + "regexpp": "^2.0.1" + } + }, "eslint-plugin-import": { "version": "2.16.0", "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.16.0.tgz", @@ -4208,46 +4476,57 @@ } }, "eslint-plugin-node": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-5.2.1.tgz", - "integrity": "sha512-xhPXrh0Vl/b7870uEbaumb2Q+LxaEcOQ3kS1jtIXanBAwpMre1l5q/l2l/hESYJGEFKuI78bp6Uw50hlpr7B+g==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-8.0.1.tgz", + "integrity": "sha512-ZjOjbjEi6jd82rIpFSgagv4CHWzG9xsQAVp1ZPlhRnnYxcTgENUVBvhYmkQ7GvT1QFijUSo69RaiOJKhMu6i8w==", "dev": true, "requires": { - "ignore": "^3.3.6", + "eslint-plugin-es": "^1.3.1", + "eslint-utils": "^1.3.1", + "ignore": "^5.0.2", "minimatch": "^3.0.4", - "resolve": "^1.3.3", - "semver": "5.3.0" + "resolve": "^1.8.1", + "semver": "^5.5.0" }, "dependencies": { - "semver": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", - "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", + "ignore": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.0.5.tgz", + "integrity": "sha512-kOC8IUb8HSDMVcYrDVezCxpJkzSQWTAzf3olpKM6o9rM5zpojx23O0Fl8Wr4+qJ6ZbPEHqf1fdwev/DS7v7pmA==", "dev": true } } }, - "eslint-plugin-promise": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-3.8.0.tgz", - "integrity": "sha512-JiFL9UFR15NKpHyGii1ZcvmtIqa3UTwiDAGb8atSffe43qJ3+1czVGN6UtkklpcJ2DVnqvTMzEKRaJdBkAL2aQ==", - "dev": true + "eslint-plugin-prettier": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.0.1.tgz", + "integrity": "sha512-/PMttrarPAY78PLvV3xfWibMOdMDl57hmlQ2XqFeA37wd+CJ7WSxV7txqjVPHi/AAFKd2lX0ZqfsOc/i5yFCSQ==", + "dev": true, + "requires": { + "prettier-linter-helpers": "^1.0.0" + } }, - "eslint-plugin-standard": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-3.1.0.tgz", - "integrity": "sha512-fVcdyuKRr0EZ4fjWl3c+gp1BANFJD1+RaWa2UPYfMZ6jCtp5RG00kSaXnK/dE5sYzt4kaWJ9qdxqUfc0d9kX0w==", + "eslint-plugin-promise": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-4.0.1.tgz", + "integrity": "sha512-Si16O0+Hqz1gDHsys6RtFRrW7cCTB6P7p3OJmKp3Y3dxpQE2qwOA7d3xnV+0mBmrPoi0RBnxlCKvqu70te6wjg==", "dev": true }, "eslint-plugin-vue": { - "version": "4.7.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-4.7.1.tgz", - "integrity": "sha512-esETKhVMI7Vdli70Wt4bvAwnZBJeM0pxVX9Yb0wWKxdCJc2EADalVYK/q2FzMw8oKN0wPMdqVCKS8kmR89recA==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-5.1.0.tgz", + "integrity": "sha512-C7avvbGLb9J1PyGiFolPcGR4ljUc+dKm5ZJdrUKXwXFxHHx4SqOmRI29AsFyW7PbCGcnOvIlaq7NJS6HDIak+g==", "dev": true, "requires": { - "vue-eslint-parser": "^2.0.3" + "vue-eslint-parser": "^4.0.2" } }, + "eslint-restricted-globals": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/eslint-restricted-globals/-/eslint-restricted-globals-0.1.1.tgz", + "integrity": "sha1-NfDVy8ZMLj7WLpO0saevBbp+1Nc=", + "dev": true + }, "eslint-scope": { "version": "3.7.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz", @@ -4258,6 +4537,12 @@ "estraverse": "^4.1.1" } }, + "eslint-utils": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.3.1.tgz", + "integrity": "sha512-Z7YjnIldX+2XMcjr7ZkgEsOj/bREONV60qYeB/bjMAqqqZ4zxKyWX+BOUkdmRmA9riiIPVvo5x86m5elviOk0Q==", + "dev": true + }, "eslint-visitor-keys": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", @@ -4265,13 +4550,22 @@ "dev": true }, "espree": { - "version": "3.5.4", - "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.4.tgz", - "integrity": "sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-4.1.0.tgz", + "integrity": "sha512-I5BycZW6FCVIub93TeVY1s7vjhP9CY6cXCznIRfiig7nRviKZYdRnj/sHEWC6A7WE9RDWOFq9+7OsWSYz8qv2w==", "dev": true, "requires": { - "acorn": "^5.5.0", - "acorn-jsx": "^3.0.0" + "acorn": "^6.0.2", + "acorn-jsx": "^5.0.0", + "eslint-visitor-keys": "^1.0.0" + }, + "dependencies": { + "acorn": { + "version": "6.0.7", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.0.7.tgz", + "integrity": "sha512-HNJNgE60C9eOTgn974Tlp3dpLZdUr+SoxxDwPaY9J/kDNOLQTkaDgwBUXAF4SSsrAwD9RpdxuHK/EbuF+W9Ahw==", + "dev": true + } } }, "esprima": { @@ -4327,9 +4621,9 @@ } }, "eventemitter3": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.0.tgz", - "integrity": "sha512-ivIvhpq/Y0uSjcHDcOIccjmYjGLcP09MFGE7ysAwkAvkXfpZlC985pH2/ui64DKazbTW/4kN3yqozUxlXzI6cA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.0.tgz", + "integrity": "sha512-qerSRB0p+UDEssxTtm6EDKcE7W4OaoisfIMl4CngyEhjpYglocpNg6UEqCvemdGhosAsg4sO2dXJOdyBifPGCg==", "dev": true }, "events": { @@ -4339,12 +4633,12 @@ "dev": true }, "eventsource": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-0.1.6.tgz", - "integrity": "sha1-Cs7ehJ7X3RzMMsgRuxG5RNTykjI=", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.0.7.tgz", + "integrity": "sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ==", "dev": true, "requires": { - "original": ">=0.0.5" + "original": "^1.0.0" } }, "evp_bytestokey": { @@ -4573,14 +4867,25 @@ } }, "external-editor": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz", - "integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.0.3.tgz", + "integrity": "sha512-bn71H9+qWoOQKyZDo25mOMVpSmXROAsTJVVVYzrrtol3d4y+AsKjf4Iwl2Q+IuT0kFSQ1qo166UuIwqYq7mGnA==", "dev": true, "requires": { - "chardet": "^0.4.0", - "iconv-lite": "^0.4.17", + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", "tmp": "^0.0.33" + }, + "dependencies": { + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + } } }, "extglob": { @@ -4684,6 +4989,12 @@ "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", "dev": true }, + "fast-diff": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", + "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", + "dev": true + }, "fast-json-stable-stringify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", @@ -4895,6 +5206,12 @@ "pkg-dir": "^2.0.0" } }, + "find-root": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", + "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==", + "dev": true + }, "find-up": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", @@ -4905,46 +5222,15 @@ } }, "flat-cache": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.0.tgz", - "integrity": "sha1-0wMLMrOBVPTjt+nHCfSQ9++XxIE=", + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.4.tgz", + "integrity": "sha512-VwyB3Lkgacfik2vhqR4uv2rvebqmDvFu4jlN/C1RzWoJEo8I7z4Q404oiqYCkq41mni8EzQnm95emU9seckwtg==", "dev": true, "requires": { "circular-json": "^0.3.1", - "del": "^2.0.2", "graceful-fs": "^4.1.2", + "rimraf": "~2.6.2", "write": "^0.2.1" - }, - "dependencies": { - "del": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", - "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", - "dev": true, - "requires": { - "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" - } - }, - "globby": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", - "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", - "dev": true, - "requires": { - "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" - } - } } }, "flatten": { @@ -5126,7 +5412,8 @@ "ansi-regex": { "version": "2.1.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "aproba": { "version": "1.2.0", @@ -5147,12 +5434,14 @@ "balanced-match": { "version": "1.0.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, "dev": true, + "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -5167,17 +5456,20 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "concat-map": { "version": "0.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "core-util-is": { "version": "1.0.2", @@ -5294,7 +5586,8 @@ "inherits": { "version": "2.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "ini": { "version": "1.3.5", @@ -5306,6 +5599,7 @@ "version": "1.0.0", "bundled": true, "dev": true, + "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -5320,6 +5614,7 @@ "version": "3.0.4", "bundled": true, "dev": true, + "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -5327,12 +5622,14 @@ "minimist": { "version": "0.0.8", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "minipass": { "version": "2.2.4", "bundled": true, "dev": true, + "optional": true, "requires": { "safe-buffer": "^5.1.1", "yallist": "^3.0.0" @@ -5351,6 +5648,7 @@ "version": "0.5.1", "bundled": true, "dev": true, + "optional": true, "requires": { "minimist": "0.0.8" } @@ -5431,7 +5729,8 @@ "number-is-nan": { "version": "1.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "object-assign": { "version": "4.1.1", @@ -5443,6 +5742,7 @@ "version": "1.4.0", "bundled": true, "dev": true, + "optional": true, "requires": { "wrappy": "1" } @@ -5528,7 +5828,8 @@ "safe-buffer": { "version": "5.1.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "safer-buffer": { "version": "2.1.2", @@ -5564,6 +5865,7 @@ "version": "1.0.2", "bundled": true, "dev": true, + "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -5583,6 +5885,7 @@ "version": "3.0.1", "bundled": true, "dev": true, + "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -5626,12 +5929,14 @@ "wrappy": { "version": "1.0.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "yallist": { "version": "3.0.2", "bundled": true, - "dev": true + "dev": true, + "optional": true } } }, @@ -5689,12 +5994,6 @@ "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", "dev": true }, - "get-stdin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", - "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", - "dev": true - }, "get-stream": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", @@ -5841,27 +6140,27 @@ "dev": true }, "gzip-size": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-4.1.0.tgz", - "integrity": "sha1-iuCWJX6r59acRb4rZ8RIEk/7UXw=", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-5.1.1.tgz", + "integrity": "sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA==", "dev": true, "requires": { "duplexer": "^0.1.1", - "pify": "^3.0.0" + "pify": "^4.0.1" }, "dependencies": { "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", "dev": true } } }, "handle-thing": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-1.2.5.tgz", - "integrity": "sha1-/Xqtcmvxpf0W38KbL3pmAdJxOcQ=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.0.tgz", + "integrity": "sha512-d4sze1JNC454Wdo2fkuyzCr6aHcbL6PGGuFAz0Li/NcOm1tCHGnWDRmJP85dh9IhQErTc2svWFEX5xHIOo//kQ==", "dev": true }, "handlebars": { @@ -5967,6 +6266,12 @@ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true }, + "has-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", + "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", + "dev": true + }, "has-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", @@ -6052,6 +6357,12 @@ "os-tmpdir": "^1.0.1" } }, + "hoopy": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/hoopy/-/hoopy-0.1.4.tgz", + "integrity": "sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ==", + "dev": true + }, "hosted-git-info": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.6.0.tgz", @@ -6206,18 +6517,18 @@ } }, "http-parser-js": { - "version": "0.4.13", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.13.tgz", - "integrity": "sha1-O9bW/ebjFyyTNMOzO2wZPYD+ETc=", + "version": "0.4.10", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.10.tgz", + "integrity": "sha1-ksnBN0w1CF912zWexWzCV8u5P6Q=", "dev": true }, "http-proxy": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.17.0.tgz", - "integrity": "sha512-Taqn+3nNvYRfJ3bGvKfBSRwy1v6eePlm3oc/aWVxZp57DQr5Eq3xhKJi7Z4hZpS8PC3H4qI+Yly5EmFacGuA/g==", + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.0.tgz", + "integrity": "sha512-84I2iJM/n1d4Hdgc6y2+qY5mDaz2PUVjlg9znE9byl+q0uC3DeByqBGReQu5tpLK0TAqTIXScRUV+dg7+bUPpQ==", "dev": true, "requires": { - "eventemitter3": "^3.0.0", + "eventemitter3": "^4.0.0", "follow-redirects": "^1.0.0", "requires-port": "^1.0.0" } @@ -6234,213 +6545,113 @@ } }, "http-proxy-middleware": { - "version": "0.17.4", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.17.4.tgz", - "integrity": "sha1-ZC6ISIUdZvCdTxJJEoRtuutBuDM=", + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.18.0.tgz", + "integrity": "sha512-Fs25KVMPAIIcgjMZkVHJoKg9VcXcC1C8yb9JUgeDvVXY0S/zgVIhMb+qVswDIgtJe2DfckMSY2d6TuTEutlk6Q==", "dev": true, "requires": { "http-proxy": "^1.16.2", - "is-glob": "^3.1.0", - "lodash": "^4.17.2", - "micromatch": "^2.3.11" - }, - "dependencies": { - "arr-diff": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", - "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", - "dev": true, - "requires": { - "arr-flatten": "^1.0.1" - } - }, - "array-unique": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", - "dev": true - }, - "braces": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", - "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", - "dev": true, - "requires": { - "expand-range": "^1.8.1", - "preserve": "^0.2.0", - "repeat-element": "^1.1.2" - } - }, - "expand-brackets": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", - "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", - "dev": true, - "requires": { - "is-posix-bracket": "^0.1.0" - } - }, - "extglob": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", - "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", - "dev": true, - "requires": { - "is-extglob": "^1.0.0" - }, - "dependencies": { - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", - "dev": true - } - } - }, - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "requires": { - "is-extglob": "^2.1.0" - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - }, - "micromatch": { - "version": "2.3.11", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", - "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", - "dev": true, - "requires": { - "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" - }, - "dependencies": { - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", - "dev": true - }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "dev": true, - "requires": { - "is-extglob": "^1.0.0" - } - } - } - } - } - }, - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - } - }, - "https-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", - "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", - "dev": true - }, - "https-proxy-agent": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-1.0.0.tgz", - "integrity": "sha1-NffabEjOTdv6JkiRrFk+5f+GceY=", - "dev": true, - "requires": { - "agent-base": "2", - "debug": "2", - "extend": "3" - } - }, - "iconv-lite": { - "version": "0.4.23", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", - "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "icss-replace-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", - "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=", - "dev": true - }, - "icss-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-2.1.0.tgz", - "integrity": "sha1-g/Cg7DeL8yRheLbCrZE28TWxyWI=", - "dev": true, - "requires": { - "postcss": "^6.0.1" - } - }, - "ieee754": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.12.tgz", - "integrity": "sha512-GguP+DRY+pJ3soyIiGPTvdiVXjZ+DbXOxGpXn3eMvNW4x4irjqXm4wHKscC+TfxSJ0yw/S1F24tqdMNsMZTiLA==", - "dev": true - }, - "iferr": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", - "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", - "dev": true - }, - "ignore": { - "version": "3.3.10", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", - "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", - "dev": true - }, - "import-cwd": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz", - "integrity": "sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk=", - "dev": true, - "requires": { - "import-from": "^2.1.0" - } - }, - "import-from": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/import-from/-/import-from-2.1.0.tgz", - "integrity": "sha1-M1238qev/VOqpHHUuAId7ja387E=", - "dev": true, - "requires": { - "resolve-from": "^3.0.0" + "is-glob": "^4.0.0", + "lodash": "^4.17.5", + "micromatch": "^3.1.9" + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", + "dev": true + }, + "https-proxy-agent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-1.0.0.tgz", + "integrity": "sha1-NffabEjOTdv6JkiRrFk+5f+GceY=", + "dev": true, + "requires": { + "agent-base": "2", + "debug": "2", + "extend": "3" + } + }, + "iconv-lite": { + "version": "0.4.23", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", + "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "icss-replace-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", + "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=", + "dev": true + }, + "icss-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-2.1.0.tgz", + "integrity": "sha1-g/Cg7DeL8yRheLbCrZE28TWxyWI=", + "dev": true, + "requires": { + "postcss": "^6.0.1" + } + }, + "ieee754": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.12.tgz", + "integrity": "sha512-GguP+DRY+pJ3soyIiGPTvdiVXjZ+DbXOxGpXn3eMvNW4x4irjqXm4wHKscC+TfxSJ0yw/S1F24tqdMNsMZTiLA==", + "dev": true + }, + "iferr": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", + "dev": true + }, + "ignore": { + "version": "3.3.10", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", + "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", + "dev": true + }, + "import-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz", + "integrity": "sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk=", + "dev": true, + "requires": { + "import-from": "^2.1.0" + } + }, + "import-fresh": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.0.0.tgz", + "integrity": "sha512-pOnA9tfM3Uwics+SaBLCNyZZZbK+4PTu0OPZtLlMIrv17EdBoC15S9Kn8ckJ9TZTyKb3ywNE5y1yeDxxGA7nTQ==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "import-from": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-from/-/import-from-2.1.0.tgz", + "integrity": "sha1-M1238qev/VOqpHHUuAId7ja387E=", + "dev": true, + "requires": { + "resolve-from": "^3.0.0" }, "dependencies": { "resolve-from": { @@ -6467,15 +6678,6 @@ "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", "dev": true }, - "indent-string": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", - "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", - "dev": true, - "requires": { - "repeating": "^2.0.0" - } - }, "indexes-of": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", @@ -6511,51 +6713,63 @@ "dev": true }, "inquirer": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz", - "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==", + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.2.2.tgz", + "integrity": "sha512-Z2rREiXA6cHRR9KBOarR3WuLlFzlIfAEIiB45ll5SSadMg7WqOh1MKEjjndfuH5ewXdixWCxqnVfGOQzPeiztA==", "dev": true, "requires": { - "ansi-escapes": "^3.0.0", - "chalk": "^2.0.0", + "ansi-escapes": "^3.2.0", + "chalk": "^2.4.2", "cli-cursor": "^2.1.0", "cli-width": "^2.0.0", - "external-editor": "^2.0.4", + "external-editor": "^3.0.3", "figures": "^2.0.0", - "lodash": "^4.3.0", + "lodash": "^4.17.11", "mute-stream": "0.0.7", "run-async": "^2.2.0", - "rx-lite": "^4.0.8", - "rx-lite-aggregates": "^4.0.8", + "rxjs": "^6.4.0", "string-width": "^2.1.0", - "strip-ansi": "^4.0.0", + "strip-ansi": "^5.0.0", "through": "^2.3.6" }, "dependencies": { + "ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "dev": true + }, "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.0.0.tgz", + "integrity": "sha512-iB5Dda8t/UqpPI/IjsejXu5jOGDrzn41wJyljwPH65VCIbk6+1BzFIMJGFwTNrYXT1CrD+B4l19U7awiQ8rk7w==", + "dev": true + }, + "lodash": { + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", "dev": true }, "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.0.0.tgz", + "integrity": "sha512-Uu7gQyZI7J7gn5qLn1Np3G9vcYGTVqB+lFTytnDJv83dd8T22aGH451P3jueT2/QemInJDfxHB5Tde5OzgG1Ow==", "dev": true, "requires": { - "ansi-regex": "^3.0.0" + "ansi-regex": "^4.0.0" } } } }, "internal-ip": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-1.2.0.tgz", - "integrity": "sha1-rp+/k7mEh4eF1QqN4bNWlWBYz1w=", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-3.0.1.tgz", + "integrity": "sha512-NXXgESC2nNVtU+pqmC9e6R8B1GpKxzsAQhffvh5AL79qKnodd+L7tnEQmTiUAVngqLalPbSqRA7XGIEL5nCd0Q==", "dev": true, "requires": { - "meow": "^3.3.0" + "default-gateway": "^2.6.0", + "ipaddr.js": "^1.5.2" } }, "interpret": { @@ -6623,6 +6837,12 @@ } } }, + "is-arguments": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", + "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==", + "dev": true + }, "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", @@ -6878,12 +7098,6 @@ "has": "^1.0.1" } }, - "is-resolvable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", - "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", - "dev": true - }, "is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", @@ -7967,6 +8181,14 @@ "whatwg-url": "^6.4.1", "ws": "^4.0.0", "xml-name-validator": "^3.0.0" + }, + "dependencies": { + "acorn": { + "version": "5.7.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz", + "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==", + "dev": true + } } }, "jsesc": { @@ -8051,9 +8273,9 @@ } }, "killable": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.0.tgz", - "integrity": "sha1-2ouEvUfeU5WHj5XWTQLyRJ/gXms=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz", + "integrity": "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==", "dev": true }, "kind-of": { @@ -8399,6 +8621,12 @@ "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", "dev": true }, + "lodash.unescape": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.unescape/-/lodash.unescape-4.0.1.tgz", + "integrity": "sha1-vyJJiGzlFM2hEvrpIYzcBlIR/Jw=", + "dev": true + }, "lodash.uniq": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", @@ -8415,9 +8643,9 @@ } }, "loglevel": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.1.tgz", - "integrity": "sha1-4PyVEztu8nbNyIh82vJKpvFW+Po=", + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.7.tgz", + "integrity": "sha512-cY2eLFrQSAfVPhCgH1s7JI73tMbg9YC3v3+ZHVW67sBS7UxWzNEk/ZBbSfLykBWHp33dqqtOv82gjhKEi81T/A==", "dev": true }, "longest": { @@ -8435,16 +8663,6 @@ "js-tokens": "^3.0.0" } }, - "loud-rejection": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", - "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", - "dev": true, - "requires": { - "currently-unhandled": "^0.4.1", - "signal-exit": "^3.0.0" - } - }, "lower-case": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", @@ -8487,18 +8705,21 @@ "tmpl": "1.0.x" } }, + "map-age-cleaner": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", + "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "dev": true, + "requires": { + "p-defer": "^1.0.0" + } + }, "map-cache": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", "dev": true }, - "map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", - "dev": true - }, "map-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", @@ -8560,32 +8781,6 @@ "readable-stream": "^2.0.1" } }, - "meow": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", - "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", - "dev": true, - "requires": { - "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" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - } - } - }, "merge": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/merge/-/merge-1.2.0.tgz", @@ -8930,6 +9125,12 @@ "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", "dev": true }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, "nightwatch": { "version": "0.9.21", "resolved": "https://registry.npmjs.org/nightwatch/-/nightwatch-0.9.21.tgz", @@ -8993,9 +9194,9 @@ } }, "node-forge": { - "version": "0.7.5", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.5.tgz", - "integrity": "sha512-MmbQJ2MTESTjt3Gi/3yG1wGpIMhUfcIypUCGtTizFR9IiccFwxSpfp0vtIZlkFclEqERemxfnSdZEMR9VqqEFQ==", + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.9.0.tgz", + "integrity": "sha512-7ASaDa3pD+lJ3WvXFsxekJQelBKRpne+GOVbLbtHYdd7pFspyeuJHnWfLplGf3SwKGbfs/aYl5V/JCIaHVUKKQ==", "dev": true }, "node-int64": { @@ -9175,9 +9376,21 @@ } }, "object-hash": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-1.3.0.tgz", - "integrity": "sha512-05KzQ70lSeGSrZJQXE5wNDiTkBJDlUT/myi6RX9dVIvz7a7Qh4oH93BQdiPMn27nldYvVQCKMUaM83AfizZlsQ==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-1.3.1.tgz", + "integrity": "sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA==", + "dev": true + }, + "object-inspect": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "dev": true + }, + "object-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.0.2.tgz", + "integrity": "sha512-Epah+btZd5wrrfjkJZq1AOB9O6OxUQto45hzFd7lXGrpHPGE0W1k+426yrZV+k6NJOzLNNW/nVsmZdIWsAqoOQ==", "dev": true }, "object-keys": { @@ -9195,6 +9408,41 @@ "isobject": "^3.0.0" } }, + "object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" + } + }, + "object.entries": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.0.tgz", + "integrity": "sha512-l+H6EQ8qzGRxbkHOd5I/aHRhHDKoQXQ8g0BYt4uSweQU1/J6dZUOyWh9a2Vky35YCKjzmgxOzta2hH6kf9HuXA==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.12.0", + "function-bind": "^1.1.1", + "has": "^1.0.3" + }, + "dependencies": { + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "requires": { + "object-keys": "^1.0.12" + } + } + } + }, "object.getownpropertydescriptors": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz", @@ -9240,9 +9488,9 @@ } }, "on-headers": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz", - "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c=", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", "dev": true }, "once": { @@ -9264,15 +9512,15 @@ } }, "opener": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/opener/-/opener-1.4.3.tgz", - "integrity": "sha1-XG2ixdflgx6P+jlklQ+NZnSskLg=", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.1.tgz", + "integrity": "sha512-goYSy5c2UXE4Ra1xixabeVh1guIX/ZV/YokJksb6q2lubWu6UbvPQ20p542/sFIll1nl8JnCyK9oBaOcCWXwvA==", "dev": true }, "opn": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/opn/-/opn-5.3.0.tgz", - "integrity": "sha512-bYJHo/LOmoTd+pfiYhfZDnf9zekVJrY+cnS2a5F2x+w5ppvTqObojTP7WiFG+kVZs9Inw+qQ/lw7TroWwhdd2g==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", + "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", "dev": true, "requires": { "is-wsl": "^1.1.0" @@ -9370,12 +9618,24 @@ "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", "dev": true }, + "p-defer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", + "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", + "dev": true + }, "p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", "dev": true }, + "p-is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", + "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", + "dev": true + }, "p-limit": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", @@ -9470,6 +9730,15 @@ "no-case": "^2.2.0" } }, + "parent-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.0.tgz", + "integrity": "sha512-8Mf5juOMmiE4FcmzYc4IaiS9L3+9paz2KOiXzkRviCP6aDmN49Hz6EMWz0lGNp9pX80GvvAuLADtyGfW/Em3TA==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, "parse-asn1": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.1.tgz", @@ -9653,12 +9922,6 @@ "find-up": "^2.1.0" } }, - "pluralize": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz", - "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", - "dev": true - }, "pn": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", @@ -11767,11 +12030,20 @@ "dev": true }, "prettier": { - "version": "1.14.2", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.14.2.tgz", - "integrity": "sha512-McHPg0n1pIke+A/4VcaS2en+pTNjy4xF+Uuq86u/5dyDO59/TtFZtQ708QIRkEZ3qwKz3GVkVa6mpxK/CpB8Rg==", + "version": "1.16.4", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.16.4.tgz", + "integrity": "sha512-ZzWuos7TI5CKUeQAtFd6Zhm2s6EpAD/ZLApIhsF9pRvRtM1RFo61dM/4MSRUA0SuLugA/zgrZD8m0BaY46Og7g==", "dev": true }, + "prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "requires": { + "fast-diff": "^1.1.2" + } + }, "pretty": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/pretty/-/pretty-2.0.0.tgz", @@ -11841,9 +12113,9 @@ "dev": true }, "progress": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.0.tgz", - "integrity": "sha1-ihvjZr+Pwj2yvSPxDG/pILQ4nR8=", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", "dev": true }, "promise-inflight": { @@ -11985,9 +12257,9 @@ "dev": true }, "querystringify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.0.0.tgz", - "integrity": "sha512-eTPo5t/4bgaMNZxyjWx6N2a6AuE0mq51KWvpc7nU/MAqixcI6v6KrGUKES0HaomdnolQBBXU/++X6/QQ9KL4tw==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.1.1.tgz", + "integrity": "sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA==", "dev": true }, "randomatic": { @@ -12142,16 +12414,6 @@ "resolve": "^1.1.6" } }, - "redent": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", - "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", - "dev": true, - "requires": { - "indent-string": "^2.1.0", - "strip-indent": "^1.0.1" - } - }, "reduce-css-calc": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz", @@ -12230,10 +12492,99 @@ "safe-regex": "^1.1.0" } }, + "regexp.prototype.flags": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz", + "integrity": "sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + }, + "dependencies": { + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "requires": { + "object-keys": "^1.0.12" + } + }, + "es-abstract": { + "version": "1.17.4", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.4.tgz", + "integrity": "sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.1.5", + "is-regex": "^1.0.5", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimleft": "^2.1.1", + "string.prototype.trimright": "^2.1.1" + }, + "dependencies": { + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + } + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true + }, + "is-callable": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", + "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", + "dev": true + }, + "is-regex": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", + "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-symbol": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.1" + } + } + } + }, "regexpp": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-1.1.0.tgz", - "integrity": "sha512-LOPw8FpgdQF9etWMaAfG/WRthIdXJGYp4mJ2Jgn/2lpkbod9jPn0t9UqN7AxBOKNfzRbYyVfgc7Vk4t/MpnXgw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", + "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", "dev": true }, "regexpu-core": { @@ -12390,15 +12741,11 @@ "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", "dev": true }, - "require-uncached": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", - "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", - "dev": true, - "requires": { - "caller-path": "^0.1.0", - "resolve-from": "^1.0.0" - } + "requireindex": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/requireindex/-/requireindex-1.2.0.tgz", + "integrity": "sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww==", + "dev": true }, "requires-port": { "version": "1.0.0", @@ -12433,9 +12780,9 @@ } }, "resolve-from": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", - "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true }, "resolve-url": { @@ -12528,19 +12875,13 @@ "aproba": "^1.1.1" } }, - "rx-lite": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz", - "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=", - "dev": true - }, - "rx-lite-aggregates": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz", - "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=", + "rxjs": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz", + "integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==", "dev": true, "requires": { - "rx-lite": "*" + "tslib": "^1.9.0" } }, "safe-buffer": { @@ -12617,12 +12958,12 @@ "dev": true }, "selfsigned": { - "version": "1.10.3", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.3.tgz", - "integrity": "sha512-vmZenZ+8Al3NLHkWnhBQ0x6BkML1eCP2xEi3JE+f3D9wW9fipD9NNJHYtE9XJM4TsPaHGZJIamrSI6MTg1dU2Q==", + "version": "1.10.7", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.7.tgz", + "integrity": "sha512-8M3wBCzeWIJnQfl43IKwOmC4H/RAp50S8DF60znzjW5GVqTcSe2vWclt7hmYVPkKPlHWOu5EaWOMZ2Y6W8ZXTA==", "dev": true, "requires": { - "node-forge": "0.7.5" + "node-forge": "0.9.0" } }, "semver": { @@ -12807,11 +13148,13 @@ "dev": true }, "slice-ansi": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz", - "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", + "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", "dev": true, "requires": { + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", "is-fullwidth-code-point": "^2.0.0" } }, @@ -12945,27 +13288,42 @@ } }, "sockjs-client": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.1.5.tgz", - "integrity": "sha1-G7fA9yIsQPQq3xT0RCy9Eml3GoM=", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.3.0.tgz", + "integrity": "sha512-R9jxEzhnnrdxLCNln0xg5uGHqMnkhPSTzUZH2eXcR03S/On9Yvoq2wyUZILRUhZCNVu2PmwWVoyuiPz8th8zbg==", "dev": true, "requires": { - "debug": "^2.6.6", - "eventsource": "0.1.6", - "faye-websocket": "~0.11.0", - "inherits": "^2.0.1", + "debug": "^3.2.5", + "eventsource": "^1.0.7", + "faye-websocket": "~0.11.1", + "inherits": "^2.0.3", "json3": "^3.3.2", - "url-parse": "^1.1.8" + "url-parse": "^1.4.3" }, "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, "faye-websocket": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.1.tgz", - "integrity": "sha1-8O/hjE9W5PQK/H4Gxxn9XuYYjzg=", + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz", + "integrity": "sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==", "dev": true, "requires": { "websocket-driver": ">=0.5.1" } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true } } }, @@ -13088,32 +13446,75 @@ "dev": true }, "spdy": { - "version": "3.4.7", - "resolved": "https://registry.npmjs.org/spdy/-/spdy-3.4.7.tgz", - "integrity": "sha1-Qv9B7OXMD5mjpsKKq7c/XDsDrLw=", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.1.tgz", + "integrity": "sha512-HeZS3PBdMA+sZSu0qwpCxl3DeALD5ASx8pAX0jZdKXSpPWbQ6SYGnlg3BBmYLx5LtiZrmkAZfErCm2oECBcioA==", "dev": true, "requires": { - "debug": "^2.6.8", - "handle-thing": "^1.2.5", + "debug": "^4.1.0", + "handle-thing": "^2.0.0", "http-deceiver": "^1.2.7", - "safe-buffer": "^5.0.1", "select-hose": "^2.0.0", - "spdy-transport": "^2.0.18" + "spdy-transport": "^3.0.0" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } } }, "spdy-transport": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-2.1.0.tgz", - "integrity": "sha512-bpUeGpZcmZ692rrTiqf9/2EUakI6/kXX1Rpe0ib/DyOzbiexVfXkw6GnvI9hVGvIwVaUhkaBojjCZwLNRGQg1g==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", "dev": true, "requires": { - "debug": "^2.6.8", - "detect-node": "^2.0.3", + "debug": "^4.1.0", + "detect-node": "^2.0.4", "hpack.js": "^2.1.6", - "obuf": "^1.1.1", - "readable-stream": "^2.2.9", - "safe-buffer": "^5.0.1", - "wbuf": "^1.7.2" + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } } }, "split-string": { @@ -13301,6 +13702,48 @@ } } }, + "string.prototype.trimleft": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz", + "integrity": "sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + }, + "dependencies": { + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "requires": { + "object-keys": "^1.0.12" + } + } + } + }, + "string.prototype.trimright": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz", + "integrity": "sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + }, + "dependencies": { + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "requires": { + "object-keys": "^1.0.12" + } + } + } + }, "string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", @@ -13334,15 +13777,6 @@ "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", "dev": true }, - "strip-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", - "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", - "dev": true, - "requires": { - "get-stdin": "^4.0.1" - } - }, "strip-json-comments": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", @@ -13386,17 +13820,47 @@ "dev": true }, "table": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/table/-/table-4.0.2.tgz", - "integrity": "sha512-UUkEAPdSGxtRpiV9ozJ5cMTtYiqz7Ni1OGqLXRCynrvzdtR1p+cfOWe2RJLwvUG8hNanaSRjecIqwOjqeatDsA==", + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/table/-/table-5.2.2.tgz", + "integrity": "sha512-f8mJmuu9beQEDkKHLzOv4VxVYlU68NpdzjbGPl69i4Hx0sTopJuNxuzJd17iV2h24dAfa93u794OnDA5jqXvfQ==", "dev": true, "requires": { - "ajv": "^5.2.3", - "ajv-keywords": "^2.1.0", - "chalk": "^2.1.0", - "lodash": "^4.17.4", - "slice-ansi": "1.0.0", + "ajv": "^6.6.1", + "lodash": "^4.17.11", + "slice-ansi": "^2.0.0", "string-width": "^2.1.1" + }, + "dependencies": { + "ajv": { + "version": "6.8.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.8.1.tgz", + "integrity": "sha512-eqxCp82P+JfqL683wwsL73XmFs1eG6qjw+RD3YHx+Jll1r0jNd4dh8QG9NYAeNGA/hnZjeEDgtTskgJULbxpWQ==", + "dev": true, + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "lodash": { + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", + "dev": true + } } }, "tapable": { @@ -13480,15 +13944,9 @@ "dev": true }, "thunky": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.0.2.tgz", - "integrity": "sha1-qGLgGOP7HqLsP85dVWBc9X8kc3E=", - "dev": true - }, - "time-stamp": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-2.1.0.tgz", - "integrity": "sha512-lJbq6KsFhZJtN3fPUVje1tq/hHsJOKUUcUj/MGCiQR6qWBDcyi5kxL9J7/RnaEChCn0+L/DUN2WvemDrkk4i3Q==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", "dev": true }, "timers-browserify": { @@ -13601,12 +14059,6 @@ } } }, - "trim-newlines": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", - "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", - "dev": true - }, "trim-right": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", @@ -13614,11 +14066,24 @@ "dev": true }, "tryer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/tryer/-/tryer-1.0.0.tgz", - "integrity": "sha1-Antp+oIyJeVRys4+8DsR9qs3wdc=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tryer/-/tryer-1.0.1.tgz", + "integrity": "sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==", "dev": true }, + "ts-loader": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-3.5.0.tgz", + "integrity": "sha512-JTia3kObhTk36wPFgy0RnkZReiusYx7Le9IhcUWRrCTcFcr6Dy1zGsFd3x8DG4gevlbN65knI8W50FfoykXcng==", + "dev": true, + "requires": { + "chalk": "^2.3.0", + "enhanced-resolve": "^3.0.0", + "loader-utils": "^1.0.2", + "micromatch": "^3.1.4", + "semver": "^5.0.1" + } + }, "tsconfig": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/tsconfig/-/tsconfig-7.0.0.tgz", @@ -13639,6 +14104,21 @@ } } }, + "tslib": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", + "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==", + "dev": true + }, + "tsutils": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.8.0.tgz", + "integrity": "sha512-XQdPhgcoTbCD8baXC38PQ0vpTZ8T3YrE+vR66YIj/xvDt1//8iAhafpIT/4DmvzzC1QFapEImERu48Pa01dIUA==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + } + }, "tty-browserify": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", @@ -13697,6 +14177,12 @@ "resolved": "https://registry.npmjs.org/typeface-roboto/-/typeface-roboto-0.0.54.tgz", "integrity": "sha512-sOFA1FXgP0gOgBYlS6irwq6hHYA370KE3dPlgYEJHL3PJd5X8gQE0RmL79ONif6fL5JZuGDj+rtOrFeOqz5IZQ==" }, + "typescript": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.3.1.tgz", + "integrity": "sha512-cTmIDFW7O0IHbn1DPYjkiebHxwtCMU+eTy30ZtJNBPF9j2O1ITu5XH2YnBeVRKWHqF+3JQwWJv0Q0aUgX8W7IA==", + "dev": true + }, "uglify-js": { "version": "3.3.28", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.3.28.tgz", @@ -13971,12 +14457,12 @@ } }, "url-parse": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.3.tgz", - "integrity": "sha512-rh+KuAW36YKo0vClhQzLLveoj8FwPJNu65xLb7Mrt+eZht0IPT0IXgSv8gcMegZ6NvjJUALf6Mf25POlMwD1Fw==", + "version": "1.4.7", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.7.tgz", + "integrity": "sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg==", "dev": true, "requires": { - "querystringify": "^2.0.0", + "querystringify": "^2.1.1", "requires-port": "^1.0.0" } }, @@ -14075,39 +14561,66 @@ } }, "vue": { - "version": "2.5.22", - "resolved": "https://registry.npmjs.org/vue/-/vue-2.5.22.tgz", - "integrity": "sha512-pxY3ZHlXNJMFQbkjEgGVMaMMkSV1ONpz+4qB55kZuJzyJOhn6MSy/YZdzhdnumegNzVTL/Dn3Pp4UrVBYt1j/g==" + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/vue/-/vue-2.6.3.tgz", + "integrity": "sha512-yftjtahz4UTAtOlXXuw7UaYD86fWrMDAAzqTdqJJx2FIBqcPmBN6kPBHiBJFGaQELVblb5ijbFMXsx0i0F7q3g==" + }, + "vue-class-component": { + "version": "6.3.2", + "resolved": "https://registry.npmjs.org/vue-class-component/-/vue-class-component-6.3.2.tgz", + "integrity": "sha512-cH208IoM+jgZyEf/g7mnFyofwPDJTM/QvBNhYMjqGB8fCsRyTf68rH2ISw/G20tJv+5mIThQ3upKwoL4jLTr1A==" }, "vue-eslint-parser": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-2.0.3.tgz", - "integrity": "sha512-ZezcU71Owm84xVF6gfurBQUGg8WQ+WZGxgDEQu1IHFBZNx7BFZg3L1yHxrCBNNwbwFtE1GuvfJKMtb6Xuwc/Bw==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-4.0.3.tgz", + "integrity": "sha512-AUeQsYdO6+7QXCems+WvGlrXd37PHv/zcRQSQdY1xdOMwdFAPEnMBsv7zPvk0TPGulXkK/5p/ITgrjiYB7k3ag==", "dev": true, "requires": { - "debug": "^3.1.0", - "eslint-scope": "^3.7.1", + "debug": "^4.1.0", + "eslint-scope": "^4.0.0", "eslint-visitor-keys": "^1.0.0", - "espree": "^3.5.2", - "esquery": "^1.0.0", - "lodash": "^4.17.4" + "espree": "^4.1.0", + "esquery": "^1.0.1", + "lodash": "^4.17.11" }, "dependencies": { "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { - "ms": "2.0.0" + "ms": "^2.1.1" } + }, + "eslint-scope": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.0.tgz", + "integrity": "sha512-1G6UTDi7Jc1ELFwnR58HV4fK9OQK4S6N985f166xqXxpjU6plxFISJa2Ba9KCQuFa8RCnj/lSFJbHo7UFDBnUA==", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "lodash": { + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", + "dev": true + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true } } }, "vue-hot-reload-api": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/vue-hot-reload-api/-/vue-hot-reload-api-2.3.0.tgz", - "integrity": "sha512-2j/t+wIbyVMP5NvctQoSUvLkYKoWAAk2QlQiilrM2a6/ulzFgdcLUJfTvs4XQ/3eZhHiBmmEojbjmM4AzZj8JA==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/vue-hot-reload-api/-/vue-hot-reload-api-2.3.1.tgz", + "integrity": "sha512-AA86yKZ5uOKz87/q1UpngEXhbRkaYg1b7HMMVRobNV1IVKqZe8oLIzo6iMocVwZXnYitlGwf2k4ZRLOZlS8oPQ==", "dev": true }, "vue-jest": { @@ -14157,6 +14670,14 @@ "vue-template-es2015-compiler": "^1.6.0" } }, + "vue-property-decorator": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/vue-property-decorator/-/vue-property-decorator-7.3.0.tgz", + "integrity": "sha512-HarXfTQ/Nxm4s/APpAaGIGHq5ZzslApImQy8ZrtkfGamw8rUFAVgMS5C50/AQ80+wfw3Wpnf4bNzbmj75m/k2Q==", + "requires": { + "vue-class-component": "^6.2.0" + } + }, "vue-router": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-3.0.2.tgz", @@ -14173,9 +14694,9 @@ } }, "vue-template-compiler": { - "version": "2.5.22", - "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.5.22.tgz", - "integrity": "sha512-1VTw/NPTUeHNiwhkq6NkFzO7gYLjFCueBN0FX8NEiQIemd5EUMQ5hxrF7O0zCPo5tae+U9S/scETPea+hIz8Eg==", + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.6.3.tgz", + "integrity": "sha512-SQ3lJk7fwquz8fGac7MwvP9cEBZntokTWITaDrLC0zmyBKjcOfJtWZkMsv+2uSUBDD8kwz8Bsad9xmBWaNULhg==", "dev": true, "requires": { "de-indent": "^1.0.2", @@ -14189,14 +14710,14 @@ "dev": true }, "vuetify": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/vuetify/-/vuetify-1.4.4.tgz", - "integrity": "sha512-i0fNciTrzP+U6NinB2kmNMC5vWXtrTy5QcVFLOxv4dhhqTiMTyHj7rV1B2lwBTZYoDhimmSAYRfqHeKdCMx+Gg==" + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/vuetify/-/vuetify-1.5.0.tgz", + "integrity": "sha512-I2bITwvtkfbUf2hfrKo3Uta4egpv5KzEcKR1czgdyjZdA1nlo96XV2EDu0XetLl6p+AjhOqwlZWbLSezy9ZZmQ==" }, "vuetify-upload-button": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/vuetify-upload-button/-/vuetify-upload-button-0.1.2.tgz", - "integrity": "sha1-fVcLdO4Og05OAsWsE+tSQ+kkNAE=" + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/vuetify-upload-button/-/vuetify-upload-button-1.2.2.tgz", + "integrity": "sha512-WQmAevQl4F2musSLpPzyT3fCBCksFiL7V6Jh8qD1fxGxHjAvjGywJKWjPLMzXDHkJfo6q2OPJtynPU0QXN5hGA==" }, "w3c-hr-time": { "version": "1.0.1", @@ -14290,6 +14811,12 @@ "yargs": "^8.0.2" }, "dependencies": { + "acorn": { + "version": "5.7.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz", + "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==", + "dev": true + }, "ajv": { "version": "6.5.1", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.1.tgz", @@ -14513,46 +15040,82 @@ } }, "webpack-bundle-analyzer": { - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-2.13.1.tgz", - "integrity": "sha512-rwxyfecTAxoarCC9VlHlIpfQCmmJ/qWD5bpbjkof+7HrNhTNZIwZITxN6CdlYL2axGmwNUQ+tFgcSOiNXMf/sQ==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.3.2.tgz", + "integrity": "sha512-7qvJLPKB4rRWZGjVp5U1KEjwutbDHSKboAl0IfafnrdXMrgC0tOtZbQD6Rw0u4cmpgRN4O02Fc0t8eAT+FgGzA==", "dev": true, "requires": { - "acorn": "^5.3.0", - "bfj-node4": "^5.2.0", - "chalk": "^2.3.0", - "commander": "^2.13.0", - "ejs": "^2.5.7", - "express": "^4.16.2", - "filesize": "^3.5.11", - "gzip-size": "^4.1.0", - "lodash": "^4.17.4", + "acorn": "^6.0.7", + "acorn-walk": "^6.1.1", + "bfj": "^6.1.1", + "chalk": "^2.4.1", + "commander": "^2.18.0", + "ejs": "^2.6.1", + "express": "^4.16.3", + "filesize": "^3.6.1", + "gzip-size": "^5.0.0", + "lodash": "^4.17.10", "mkdirp": "^0.5.1", - "opener": "^1.4.3", - "ws": "^4.0.0" + "opener": "^1.5.1", + "ws": "^6.0.0" + }, + "dependencies": { + "acorn": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.0.tgz", + "integrity": "sha512-gac8OEcQ2Li1dxIEWGZzsp2BitJxwkwcOm0zHAJLcPJaVvm58FRnk6RkuLRpU1EujipU2ZFODv2P9DLMfnV8mw==", + "dev": true + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "ejs": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.7.4.tgz", + "integrity": "sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==", + "dev": true + }, + "ws": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", + "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0" + } + } } }, "webpack-dev-middleware": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-1.12.2.tgz", - "integrity": "sha512-FCrqPy1yy/sN6U/SaEZcHKRXGlqU0DUaEBL45jkUYoB8foVb6wCnbIJ1HKIx+qUFTW+3JpVcCJCxZ8VATL4e+A==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.4.0.tgz", + "integrity": "sha512-Q9Iyc0X9dP9bAsYskAVJ/hmIZZQwf/3Sy4xCAZgL5cUkjZmUZLt4l5HpbST/Pdgjn3u6pE7u5OdGd1apgzRujA==", "dev": true, "requires": { "memory-fs": "~0.4.1", - "mime": "^1.5.0", - "path-is-absolute": "^1.0.0", + "mime": "^2.3.1", "range-parser": "^1.0.3", - "time-stamp": "^2.0.0" + "webpack-log": "^2.0.0" + }, + "dependencies": { + "mime": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz", + "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==", + "dev": true + } } }, "webpack-dev-server": { - "version": "2.11.3", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-2.11.3.tgz", - "integrity": "sha512-Qz22YEFhWx+M2vvJ+rQppRv39JA0h5NNbOOdODApdX6iZ52Diz7vTPXjF7kJlfn+Uc24Qr48I3SZ9yncQwRycg==", + "version": "3.1.11", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.1.11.tgz", + "integrity": "sha512-E/uGbO9ndXrXgNUzw+O2UrrvYY/eIw10fpJnbvJf8VOH/NWZuY3nUG7arbgB/kbkORlF/sPHxnv10tKFtKf3aA==", "dev": true, "requires": { "ansi-html": "0.0.7", - "array-includes": "^3.0.3", "bonjour": "^3.5.0", "chokidar": "^2.0.0", "compression": "^1.5.2", @@ -14561,130 +15124,335 @@ "del": "^3.0.0", "express": "^4.16.2", "html-entities": "^1.2.0", - "http-proxy-middleware": "~0.17.4", - "import-local": "^1.0.0", - "internal-ip": "1.2.0", + "http-proxy-middleware": "~0.18.0", + "import-local": "^2.0.0", + "internal-ip": "^3.0.1", "ip": "^1.1.5", "killable": "^1.0.0", "loglevel": "^1.4.1", "opn": "^5.1.0", "portfinder": "^1.0.9", + "schema-utils": "^1.0.0", "selfsigned": "^1.9.1", + "semver": "^5.6.0", "serve-index": "^1.7.2", "sockjs": "0.3.19", - "sockjs-client": "1.1.5", - "spdy": "^3.4.1", + "sockjs-client": "1.3.0", + "spdy": "^4.0.0", "strip-ansi": "^3.0.0", "supports-color": "^5.1.0", - "webpack-dev-middleware": "1.12.2", - "yargs": "6.6.0" + "url": "^0.11.0", + "webpack-dev-middleware": "3.4.0", + "webpack-log": "^2.0.0", + "yargs": "12.0.2" }, "dependencies": { - "camelcase": { + "ajv": { + "version": "6.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz", + "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ansi-regex": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", "dev": true }, "cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", "dev": true, "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", "wrap-ansi": "^2.0.0" + }, + "dependencies": { + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" } }, "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", "dev": true, "requires": { - "ms": "2.0.0" + "ms": "^2.1.1" + } + }, + "decamelize": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-2.0.0.tgz", + "integrity": "sha512-Ikpp5scV3MSYxY39ymh45ZLEecsTdv/Xj2CaQfI8RLMuwi7XvjX9H/fhraiSuU+C5w5NTDu4ZU72xNiZnurBPg==", + "dev": true, + "requires": { + "xregexp": "4.0.0" + } + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "requires": { + "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" + } + }, + "fast-deep-equal": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", + "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", + "dev": true + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" } }, + "import-local": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", + "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", + "dev": true, + "requires": { + "pkg-dir": "^3.0.0", + "resolve-cwd": "^2.0.0" + } + }, + "invert-kv": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", + "dev": true + }, "ip": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", "dev": true }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "lcid": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", + "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", "dev": true, "requires": { - "number-is-nan": "^1.0.0" + "invert-kv": "^2.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" } }, + "mem": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", + "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", + "dev": true, + "requires": { + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^2.0.0", + "p-is-promise": "^2.0.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, "os-locale": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", - "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", + "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", "dev": true, "requires": { - "lcid": "^1.0.0" + "execa": "^1.0.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" } }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "p-limit": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz", + "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==", "dev": true, "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" + "p-try": "^2.0.0" } }, - "which-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", - "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true }, - "y18n": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "requires": { + "find-up": "^3.0.0" + } + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, + "xregexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-4.0.0.tgz", + "integrity": "sha512-PHyM+sQouu7xspQQwELlGwwd05mXUFqwFYfqPO0cC7x4fxyHnnuetmQr6CjJiafIDoH4MogHb9dOoJzR/Y4rFg==", "dev": true }, "yargs": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-6.6.0.tgz", - "integrity": "sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg=", + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.2.tgz", + "integrity": "sha512-e7SkEx6N6SIZ5c5H22RTZae61qtn3PYUE8JYbBFlK9sYmh3DMQ6E5ygtaG/2BW0JZi4WGgTR2IV5ChqlqrDGVQ==", "dev": true, "requires": { - "camelcase": "^3.0.0", - "cliui": "^3.2.0", - "decamelize": "^1.1.1", + "cliui": "^4.0.0", + "decamelize": "^2.0.0", + "find-up": "^3.0.0", "get-caller-file": "^1.0.1", - "os-locale": "^1.4.0", - "read-pkg-up": "^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": "^1.0.2", - "which-module": "^1.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^4.2.0" + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1 || ^4.0.0", + "yargs-parser": "^10.1.0" } }, "yargs-parser": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-4.2.1.tgz", - "integrity": "sha1-KczqwNxPA8bIe0qfIX3RjJ90hxw=", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz", + "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==", "dev": true, "requires": { - "camelcase": "^3.0.0" + "camelcase": "^4.1.0" } } } }, + "webpack-log": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz", + "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==", + "dev": true, + "requires": { + "ansi-colors": "^3.0.0", + "uuid": "^3.3.2" + }, + "dependencies": { + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true + } + } + }, "webpack-merge": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.1.tgz", @@ -14705,12 +15473,13 @@ } }, "websocket-driver": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.0.tgz", - "integrity": "sha1-DK+dLXVdk67gSdS90NP+LMoqJOs=", + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.3.tgz", + "integrity": "sha512-bpxWlvbbB459Mlipc5GBzzZwhoZgGEZLuqPaR0INBGnPAY1vdBX6hPnoFXiw+3yWxDuHyQjO2oXTMyS8A5haFg==", "dev": true, "requires": { - "http-parser-js": ">=0.4.0", + "http-parser-js": ">=0.4.0 <0.4.11", + "safe-buffer": ">=5.1.0", "websocket-extensions": ">=0.1.1" } }, diff --git a/src/frontend/package.json b/src/frontend/package.json index e06a0f5..0206077 100644 --- a/src/frontend/package.json +++ b/src/frontend/package.json @@ -10,19 +10,24 @@ "unit": "jest --config test/unit/jest.conf.js --coverage", "e2e": "node test/e2e/runner.js", "test": "npm run unit && npm run e2e", - "lint": "eslint --ext .js,.vue src test/unit test/e2e/specs", + "lint": "eslint --ext .js,.vue,.ts src", + "fix": "eslint --ext .js,.vue,.ts --fix src", "build": "node build/build.js" }, "dependencies": { "axios": "^0.18.0", "material-design-icons-iconfont": "^3.0.3", "typeface-roboto": "0.0.54", - "vue": "^2.5.22", + "vue": "^2.6.3", + "vue-class-component": "^6.3.2", + "vue-property-decorator": "^7.3.0", "vue-router": "^3.0.2", - "vuetify": "^1.4.4", - "vuetify-upload-button": "^0.1.2" + "vuetify": "^1.5.0", + "vuetify-upload-button": "^1.2.2" }, "devDependencies": { + "@vue/eslint-config-typescript": "^4.0.0", + "acorn": "^6.0.0", "autoprefixer": "^7.1.2", "babel-core": "^6.22.1", "babel-eslint": "^8.2.6", @@ -42,15 +47,17 @@ "copy-webpack-plugin": "^4.6.0", "cross-spawn": "^5.0.1", "css-loader": "^0.28.0", - "eslint": "^4.15.0", - "eslint-config-standard": "^10.2.1", - "eslint-friendly-formatter": "^3.0.0", - "eslint-loader": "^1.7.1", + "eslint": "^5.13.0", + "eslint-config-airbnb-base": "^13.1.0", + "eslint-config-prettier": "^4.0.0", + "eslint-friendly-formatter": "^4.0.1", + "eslint-import-resolver-webpack": "^0.11.0", + "eslint-loader": "^2.1.2", "eslint-plugin-import": "^2.16.0", - "eslint-plugin-node": "^5.2.0", - "eslint-plugin-promise": "^3.4.0", - "eslint-plugin-standard": "^3.0.1", - "eslint-plugin-vue": "^4.7.1", + "eslint-plugin-node": "^8.0.1", + "eslint-plugin-prettier": "^3.0.1", + "eslint-plugin-promise": "^4.0.1", + "eslint-plugin-vue": "^5.1.0", "extract-text-webpack-plugin": "^3.0.0", "file-loader": "^1.1.4", "friendly-errors-webpack-plugin": "^1.6.1", @@ -65,19 +72,22 @@ "postcss-import": "^11.0.0", "postcss-loader": "^2.1.6", "postcss-url": "^7.2.1", + "prettier": "^1.16.4", "rimraf": "^2.6.3", "selenium-server": "^3.141.59", "semver": "^5.6.0", "shelljs": "^0.7.6", + "ts-loader": "^3.5.0", + "typescript": "^3.3.1", "uglifyjs-webpack-plugin": "^1.3.0", "url-loader": "^0.5.8", "vue-jest": "^1.0.2", "vue-loader": "^13.7.3", "vue-style-loader": "^3.0.1", - "vue-template-compiler": "^2.5.22", + "vue-template-compiler": "^2.6.3", "webpack": "^3.6.0", - "webpack-bundle-analyzer": "^2.9.0", - "webpack-dev-server": "^2.11.3", + "webpack-bundle-analyzer": "^3.3.2", + "webpack-dev-server": "^3.1.11", "webpack-merge": "^4.2.1" }, "engines": { diff --git a/src/frontend/src/components/.eslintrc.js b/src/frontend/src/components/.eslintrc.js new file mode 100644 index 0000000..87f2337 --- /dev/null +++ b/src/frontend/src/components/.eslintrc.js @@ -0,0 +1,4 @@ +module.exports = { + extends: ['plugin:vue/recommended', '@vue/typescript', 'prettier/vue'], + plugins: ['vue', 'prettier'], +}; diff --git a/src/frontend/src/components/AddBtn.vue b/src/frontend/src/components/AddBtn.vue index 97f6a49..12510da 100644 --- a/src/frontend/src/components/AddBtn.vue +++ b/src/frontend/src/components/AddBtn.vue @@ -1,18 +1,14 @@ - diff --git a/src/frontend/src/components/AddDialog.vue b/src/frontend/src/components/AddDialog.vue index 0fc97aa..1bf58ae 100644 --- a/src/frontend/src/components/AddDialog.vue +++ b/src/frontend/src/components/AddDialog.vue @@ -1,39 +1,25 @@ - diff --git a/src/frontend/src/App.vue b/src/frontend/src/components/App.vue similarity index 54% rename from src/frontend/src/App.vue rename to src/frontend/src/components/App.vue index 3348032..c52d60d 100644 --- a/src/frontend/src/App.vue +++ b/src/frontend/src/components/App.vue @@ -1,10 +1,6 @@ - diff --git a/src/frontend/src/components/DataTable.vue b/src/frontend/src/components/DataTable.vue index 1ec2347..3dd8996 100644 --- a/src/frontend/src/components/DataTable.vue +++ b/src/frontend/src/components/DataTable.vue @@ -7,10 +7,7 @@ :items="truncatedItems" item-key="slug" > - - diff --git a/src/frontend/src/components/ModTable.vue b/src/frontend/src/components/ModTable.vue index 7857aa6..b4b12c8 100644 --- a/src/frontend/src/components/ModTable.vue +++ b/src/frontend/src/components/ModTable.vue @@ -1,6 +1,5 @@ - diff --git a/src/frontend/src/components/PackTable.vue b/src/frontend/src/components/PackTable.vue index 8f0d2ff..44d640c 100644 --- a/src/frontend/src/components/PackTable.vue +++ b/src/frontend/src/components/PackTable.vue @@ -1,6 +1,5 @@ - diff --git a/src/frontend/src/components/PackVersionDialog.vue b/src/frontend/src/components/PackVersionDialog.vue index 903af1c..95753d9 100644 --- a/src/frontend/src/components/PackVersionDialog.vue +++ b/src/frontend/src/components/PackVersionDialog.vue @@ -9,34 +9,27 @@ Add version for {{ pack }} - + - + - + - + add_circle_outline - + - - + + Cancel - - + + Save - + error @@ -146,165 +115,199 @@ - diff --git a/src/frontend/src/components/RootCard.vue b/src/frontend/src/components/RootCard.vue index 9d7f622..f870b58 100644 --- a/src/frontend/src/components/RootCard.vue +++ b/src/frontend/src/components/RootCard.vue @@ -2,31 +2,27 @@ {{ cardTitle }} - - + + - diff --git a/src/frontend/src/components/Snackbar.vue b/src/frontend/src/components/Snackbar.vue index 7840b36..47465c3 100644 --- a/src/frontend/src/components/Snackbar.vue +++ b/src/frontend/src/components/Snackbar.vue @@ -1,39 +1,34 @@ - diff --git a/src/frontend/src/ide-fix.js b/src/frontend/src/ide-fix.js deleted file mode 100644 index 57eebfe..0000000 --- a/src/frontend/src/ide-fix.js +++ /dev/null @@ -1,35 +0,0 @@ -import Vue from 'vue' - -Vue.component('v-app', {}) -Vue.component('v-autocomplete', {}) -Vue.component('v-badge', {}) -Vue.component('v-btn', {}) -Vue.component('v-card', {}) -Vue.component('v-card-actions', {}) -Vue.component('v-card-title', {}) -Vue.component('v-container', {}) -Vue.component('v-content', {}) -Vue.component('v-data-table', {}) -Vue.component('v-dialog', {}) -Vue.component('v-flex', {}) -Vue.component('v-footer', {}) -Vue.component('v-form', {}) -Vue.component('v-icon', {}) -Vue.component('v-layout', {}) -Vue.component('v-list', {}) -Vue.component('v-list-tile', {}) -Vue.component('v-list-tile-action', {}) -Vue.component('v-list-tile-content', {}) -Vue.component('v-list-tile-title', {}) -Vue.component('v-navigation-drawer', {}) -Vue.component('v-progress-linear', {}) -Vue.component('v-select', {}) -Vue.component('v-slider', {}) -Vue.component('v-snackbar', {}) -Vue.component('v-spacer', {}) -Vue.component('v-subheader', {}) -Vue.component('v-switch', {}) -Vue.component('v-text-field', {}) -Vue.component('v-toolbar', {}) -Vue.component('v-toolbar-side-icon', {}) -Vue.component('v-toolbar-title', {}) diff --git a/src/frontend/src/main.js b/src/frontend/src/main.js deleted file mode 100644 index 9566643..0000000 --- a/src/frontend/src/main.js +++ /dev/null @@ -1,98 +0,0 @@ -// The Vue build version to load with the `import` command -// (runtime-only or standalone) has been set in webpack.base.conf with an alias. -import 'material-design-icons-iconfont/dist/material-design-icons.css' -import 'typeface-roboto' -import 'vuetify/dist/vuetify.min.css' -import Vue from 'vue' -import Vuetify from 'vuetify' -import App from './App' -import router from './router' -import colors from 'vuetify/es5/util/colors' -import axios from 'axios' - -const url = location.protocol + '//' + location.hostname + ':8081' -const root = url + '/braze/api/' -const constants = root + 'constants' -const mods = root + 'mods' -const packs = root + 'packs' - -if (url !== location.origin) { // for dev environment - axios.defaults.headers.common['Authorization'] = 'Basic dXNlcjpjaGFuZ2VtZQ==' -} - -const latency = 1600 // artifical latency - -Vue.config.productionTip = false - -Vue.use(Vuetify, { - theme: { - 'primary': colors.orange.darken2, - 'accent': colors.blue.base - } -}) - -Vue.mixin({ - methods: { - getConstants (success, error) { - get(constants, success, error) - }, - getMods (success, error) { - get(mods, success, error) - }, - getMod (slug, success, error) { - get(`${mods}/${slug}`, success, error) - }, - getPack (slug, success, error) { - get(`${packs}/${slug}`, success, error) - }, - getPacks (success, error) { - get(packs, success, error) - }, - postMod (data, success, error) { - post(mods, data, success, error) - }, - postModVersion (slug, data, success, error) { - post(`${mods}/${slug}`, data, success, error) - }, - postPack (data, success, error) { - post(packs, data, success, error) - }, - postPackVersion (slug, data, success, error) { - post(`${packs}/${slug}`, data, success, error) - }, - slugify (str) { - return str.toLowerCase() - .replace(/[^\w\s-]/g, '') // remove non-word [a-z0-9_], non-whitespace, non-hyphen characters - .replace(/[\s_-]+/g, '-') // swap any length of whitespace, underscore, hyphen characters with a single - - .replace(/^-+|-+$/g, '') // remove leading, trailing - - // function written by kganser https://gist.github.com/mathewbyrne/1280286#gistcomment-1716050 - } - } -}) - -/* eslint-disable no-new */ -new Vue({ - el: '#app', - router, - components: { App }, - template: '' -}) - -function get (url, success, error) { - loadAndThen(() => - axios.get(url).then(success).catch(error) - ) -} - -function post (url, data, success, error) { - loadAndThen(() => - axios.post(url, data).then(success).catch(e => { - console.error(e.response.data) - error(e) - }) - ) -} - -function loadAndThen (cb) { - setTimeout(cb, latency) -} diff --git a/src/frontend/src/main.ts b/src/frontend/src/main.ts new file mode 100644 index 0000000..aee57e3 --- /dev/null +++ b/src/frontend/src/main.ts @@ -0,0 +1,27 @@ +// The Vue build version to load with the `import` command +// (runtime-only or standalone) has been set in webpack.base.conf with an alias. +import 'material-design-icons-iconfont/dist/material-design-icons.css'; +import 'typeface-roboto'; +import 'vuetify/dist/vuetify.min.css'; +import Vue from 'vue'; +import Vuetify from 'vuetify'; +import colors from 'vuetify/es5/util/colors'; +import App from './components/App.vue'; +import router from './router'; + +Vue.config.productionTip = false; + +Vue.use(Vuetify, { + theme: { + primary: colors.orange.darken2, + accent: colors.blue.base, + }, +}); + +/* eslint-disable no-new */ +new Vue({ + el: '#app', + router, + components: { App }, + template: '', +}); diff --git a/src/frontend/src/model.ts b/src/frontend/src/model.ts new file mode 100644 index 0000000..0cc58b0 --- /dev/null +++ b/src/frontend/src/model.ts @@ -0,0 +1,20 @@ +export interface DynamicInput { + name: string; + key: 'name' | 'slug' | 'author' | 'description' | 'link' | 'donate'; + icon: string; + value: string | null; + readonly?: boolean; +} + +export interface Expansion { + index: number; + slug: string; + expanded: boolean; +} + +export interface BasicElement { + name: string; + slug: string; + author: string; + description: string; +} diff --git a/src/frontend/src/router/index.js b/src/frontend/src/router/index.js deleted file mode 100644 index 4500cba..0000000 --- a/src/frontend/src/router/index.js +++ /dev/null @@ -1,21 +0,0 @@ -import Vue from 'vue' -import Router from 'vue-router' -import ModTable from '@/components/ModTable' -import PackTable from '@/components/PackTable' - -Vue.use(Router) - -export default new Router({ - routes: [ - { - path: '/mods', - name: 'Mods', - component: ModTable - }, - { - path: '/packs', - name: 'Packs', - component: PackTable - } - ] -}) diff --git a/src/frontend/src/router/index.ts b/src/frontend/src/router/index.ts new file mode 100644 index 0000000..093c7b5 --- /dev/null +++ b/src/frontend/src/router/index.ts @@ -0,0 +1,21 @@ +import Vue from 'vue'; +import Router from 'vue-router'; +import ModTable from '@/components/ModTable.vue'; +import PackTable from '@/components/PackTable.vue'; + +Vue.use(Router); + +export default new Router({ + routes: [ + { + path: '/mods', + name: 'Mods', + component: ModTable, + }, + { + path: '/packs', + name: 'Packs', + component: PackTable, + }, + ], +}); diff --git a/src/frontend/src/shims-tsx.d.ts b/src/frontend/src/shims-tsx.d.ts new file mode 100644 index 0000000..70111e9 --- /dev/null +++ b/src/frontend/src/shims-tsx.d.ts @@ -0,0 +1,14 @@ +/* eslint-disable */ +import Vue, { VNode } from 'vue'; + +declare global { + namespace JSX { + // tslint:disable no-empty-interface + interface Element extends VNode {} + // tslint:disable no-empty-interface + interface ElementClass extends Vue {} + interface IntrinsicElements { + [elem: string]: any; + } + } +} diff --git a/src/frontend/src/shims-vue.d.ts b/src/frontend/src/shims-vue.d.ts new file mode 100644 index 0000000..6cd55d9 --- /dev/null +++ b/src/frontend/src/shims-vue.d.ts @@ -0,0 +1,10 @@ +/* eslint-disable */ +declare module '*.vue' { + import Vue from 'vue'; + export default Vue; +} + +declare module 'vuetify-upload-button' { + let UploadButton: any; + export default UploadButton; +} diff --git a/src/frontend/src/shims-vuetify.ts b/src/frontend/src/shims-vuetify.ts new file mode 100644 index 0000000..0e5eb06 --- /dev/null +++ b/src/frontend/src/shims-vuetify.ts @@ -0,0 +1,2174 @@ +/* eslint-disable */ +import Vue from 'vue'; +import { PropValidator } from 'vue/types/options'; + +Vue.component('v-app', { + props: { + dark: Boolean, + id: String, + light: Boolean, + }, +}); +Vue.component('v-alert', { + props: { + color: String, + dismissible: Boolean, + icon: String, + mode: String, + origin: String, + outline: Boolean, + transition: String, + type: String, + value: (null as any) as PropValidator, + }, +}); +Vue.component('v-autocomplete', { + props: { + allowOverflow: Boolean, + appendIcon: String, + appendIconCb: Function, + appendOuterIcon: String, + appendOuterIconCb: Function, + attach: (null as any) as PropValidator, + autoSelectFirst: Boolean, + autofocus: Boolean, + backgroundColor: String, + box: Boolean, + browserAutocomplete: String, + cacheItems: Boolean, + chips: Boolean, + clearIcon: String, + clearIconCb: Function, + clearable: Boolean, + color: String, + counter: [Boolean, Number, String], + dark: Boolean, + deletableChips: Boolean, + dense: Boolean, + disabled: Boolean, + dontFillMaskBlanks: Boolean, + error: Boolean, + errorCount: [Number, String], + errorMessages: [String, Array], + filter: Function, + flat: Boolean, + fullWidth: Boolean, + height: [Number, String], + hideDetails: Boolean, + hideNoData: Boolean, + hideSelected: Boolean, + hint: String, + itemAvatar: [String, Array, Function], + itemDisabled: [String, Array, Function], + itemText: [String, Array, Function], + itemValue: [String, Array, Function], + items: Array, + label: String, + light: Boolean, + loading: [Boolean, String], + mask: [Object, String], + menuProps: [String, Array, Object], + messages: [String, Array], + multiple: Boolean, + noDataText: String, + noFilter: Boolean, + openOnClear: Boolean, + outline: Boolean, + persistentHint: Boolean, + placeholder: String, + prefix: String, + prependIcon: String, + prependIconCb: Function, + prependInnerIcon: String, + prependInnerIconCb: Function, + readonly: Boolean, + returnMaskedValue: Boolean, + returnObject: Boolean, + reverse: Boolean, + rules: Array, + searchInput: (null as any) as PropValidator, + singleLine: Boolean, + smallChips: Boolean, + solo: Boolean, + soloInverted: Boolean, + success: Boolean, + successMessages: [String, Array], + suffix: String, + type: String, + validateOnBlur: Boolean, + value: (null as any) as PropValidator, + valueComparator: Function, + }, +}); +Vue.component('v-avatar', { + props: { + color: String, + size: [Number, String], + tile: Boolean, + }, +}); +Vue.component('v-badge', { + props: { + bottom: Boolean, + color: String, + left: Boolean, + mode: String, + origin: String, + overlap: Boolean, + transition: String, + value: (null as any) as PropValidator, + }, +}); +Vue.component('v-bottom-nav', { + props: { + absolute: Boolean, + active: [Number, String], + app: Boolean, + color: String, + dark: Boolean, + fixed: Boolean, + height: [Number, String], + light: Boolean, + mandatory: Boolean, + shift: Boolean, + value: (null as any) as PropValidator, + }, +}); +Vue.component('v-bottom-sheet', { + props: { + disabled: Boolean, + fullWidth: Boolean, + hideOverlay: Boolean, + inset: Boolean, + lazy: Boolean, + maxWidth: [String, Number], + persistent: Boolean, + value: (null as any) as PropValidator, + }, +}); +Vue.component('v-breadcrumbs', { + props: { + dark: Boolean, + divider: String, + items: Array, + justifyCenter: Boolean, + justifyEnd: Boolean, + large: Boolean, + light: Boolean, + }, +}); +Vue.component('v-breadcrumbs-item', { + props: { + activeClass: String, + append: Boolean, + disabled: Boolean, + exact: Boolean, + exactActiveClass: String, + href: [String, Object], + nuxt: Boolean, + replace: Boolean, + ripple: [Boolean, Object], + tag: String, + target: String, + to: [String, Object], + }, +}); +Vue.component('v-breadcrumbs-divider', {}); +Vue.component('v-btn', { + props: { + absolute: Boolean, + activeClass: String, + append: Boolean, + block: Boolean, + bottom: Boolean, + color: String, + dark: Boolean, + depressed: Boolean, + disabled: Boolean, + exact: Boolean, + exactActiveClass: String, + fab: Boolean, + fixed: Boolean, + flat: Boolean, + href: [String, Object], + icon: Boolean, + inputValue: (null as any) as PropValidator, + large: Boolean, + left: Boolean, + light: Boolean, + loading: Boolean, + nuxt: Boolean, + outline: Boolean, + replace: Boolean, + right: Boolean, + ripple: [Boolean, Object], + round: Boolean, + small: Boolean, + tag: String, + target: String, + to: [String, Object], + top: Boolean, + type: String, + value: (null as any) as PropValidator, + }, +}); +Vue.component('v-btn-toggle', { + props: { + activeClass: String, + dark: Boolean, + light: Boolean, + mandatory: Boolean, + max: [Number, String], + multiple: Boolean, + value: (null as any) as PropValidator, + }, +}); +Vue.component('v-card', { + props: { + activeClass: String, + append: Boolean, + color: String, + dark: Boolean, + disabled: Boolean, + elevation: [Number, String], + exact: Boolean, + exactActiveClass: String, + flat: Boolean, + height: [Number, String], + hover: Boolean, + href: [String, Object], + img: String, + light: Boolean, + maxHeight: [Number, String], + maxWidth: [Number, String], + minHeight: [Number, String], + minWidth: [Number, String], + nuxt: Boolean, + raised: Boolean, + replace: Boolean, + ripple: [Boolean, Object], + tag: String, + target: String, + tile: Boolean, + to: [String, Object], + width: [Number, String], + }, +}); +Vue.component('v-card-media', { + props: { + alt: String, + aspectRatio: [String, Number], + contain: Boolean, + gradient: String, + height: [Number, String], + lazySrc: String, + maxHeight: [Number, String], + maxWidth: [Number, String], + minHeight: [Number, String], + minWidth: [Number, String], + position: String, + sizes: String, + src: [String, Object], + srcset: String, + transition: [Boolean, String], + width: [Number, String], + }, +}); +Vue.component('v-card-title', { + props: { + primaryTitle: Boolean, + }, +}); +Vue.component('v-card-actions', {}); +Vue.component('v-card-text', {}); +Vue.component('v-carousel', { + props: { + activeClass: String, + cycle: Boolean, + dark: Boolean, + delimiterIcon: String, + height: [Number, String], + hideControls: Boolean, + hideDelimiters: Boolean, + interval: [Number, String], + light: Boolean, + mandatory: Boolean, + max: [Number, String], + multiple: Boolean, + nextIcon: [Boolean, String], + prevIcon: [Boolean, String], + reverse: Boolean, + touch: Object, + touchless: Boolean, + value: (null as any) as PropValidator, + vertical: Boolean, + }, +}); +Vue.component('v-carousel-item', { + props: { + activeClass: String, + disabled: Boolean, + lazy: Boolean, + reverseTransition: [Boolean, String], + transition: [Boolean, String], + value: (null as any) as PropValidator, + }, +}); +Vue.component('v-checkbox', { + props: { + appendIcon: String, + appendIconCb: Function, + backgroundColor: String, + color: String, + dark: Boolean, + disabled: Boolean, + error: Boolean, + errorCount: [Number, String], + errorMessages: [String, Array], + falseValue: (null as any) as PropValidator, + height: [Number, String], + hideDetails: Boolean, + hint: String, + id: String, + indeterminate: Boolean, + indeterminateIcon: String, + inputValue: (null as any) as PropValidator, + label: String, + light: Boolean, + loading: Boolean, + messages: [String, Array], + multiple: Boolean, + offIcon: String, + onIcon: String, + persistentHint: Boolean, + prependIcon: String, + prependIconCb: Function, + readonly: Boolean, + ripple: [Boolean, Object], + rules: Array, + success: Boolean, + successMessages: [String, Array], + trueValue: (null as any) as PropValidator, + validateOnBlur: Boolean, + value: (null as any) as PropValidator, + valueComparator: Function, + }, +}); +Vue.component('v-chip', { + props: { + close: Boolean, + color: String, + dark: Boolean, + disabled: Boolean, + label: Boolean, + light: Boolean, + outline: Boolean, + selected: Boolean, + small: Boolean, + textColor: String, + value: Boolean, + }, +}); +Vue.component('v-combobox', { + props: { + allowOverflow: Boolean, + appendIcon: String, + appendIconCb: Function, + appendOuterIcon: String, + appendOuterIconCb: Function, + attach: (null as any) as PropValidator, + autoSelectFirst: Boolean, + autofocus: Boolean, + backgroundColor: String, + box: Boolean, + browserAutocomplete: String, + cacheItems: Boolean, + chips: Boolean, + clearIcon: String, + clearIconCb: Function, + clearable: Boolean, + color: String, + counter: [Boolean, Number, String], + dark: Boolean, + deletableChips: Boolean, + delimiters: Array, + dense: Boolean, + disabled: Boolean, + dontFillMaskBlanks: Boolean, + error: Boolean, + errorCount: [Number, String], + errorMessages: [String, Array], + filter: Function, + flat: Boolean, + fullWidth: Boolean, + height: [Number, String], + hideDetails: Boolean, + hideNoData: Boolean, + hideSelected: Boolean, + hint: String, + itemAvatar: [String, Array, Function], + itemDisabled: [String, Array, Function], + itemText: [String, Array, Function], + itemValue: [String, Array, Function], + items: Array, + label: String, + light: Boolean, + loading: [Boolean, String], + mask: [Object, String], + menuProps: [String, Array, Object], + messages: [String, Array], + multiple: Boolean, + noDataText: String, + noFilter: Boolean, + openOnClear: Boolean, + outline: Boolean, + persistentHint: Boolean, + placeholder: String, + prefix: String, + prependIcon: String, + prependIconCb: Function, + prependInnerIcon: String, + prependInnerIconCb: Function, + readonly: Boolean, + returnMaskedValue: Boolean, + returnObject: Boolean, + reverse: Boolean, + rules: Array, + searchInput: (null as any) as PropValidator, + singleLine: Boolean, + smallChips: Boolean, + solo: Boolean, + soloInverted: Boolean, + success: Boolean, + successMessages: [String, Array], + suffix: String, + type: String, + validateOnBlur: Boolean, + value: (null as any) as PropValidator, + valueComparator: Function, + }, +}); +Vue.component('v-counter', { + props: { + dark: Boolean, + light: Boolean, + max: [Number, String], + value: [Number, String], + }, +}); +Vue.component('v-data-iterator', { + props: { + contentClass: String, + contentProps: Object, + contentTag: String, + customFilter: Function, + customSort: Function, + dark: Boolean, + disableInitialSort: Boolean, + expand: Boolean, + filter: Function, + hideActions: Boolean, + itemKey: String, + items: Array, + light: Boolean, + loading: [Boolean, String], + mustSort: Boolean, + nextIcon: String, + noDataText: String, + noResultsText: String, + pagination: Object, + prevIcon: String, + rowsPerPageItems: Array, + rowsPerPageText: String, + search: (null as any) as PropValidator, + selectAll: [Boolean, String], + totalItems: Number, + value: Array, + }, +}); +Vue.component('v-data-table', { + props: { + customFilter: Function, + customSort: Function, + dark: Boolean, + disableInitialSort: Boolean, + expand: Boolean, + filter: Function, + headerKey: String, + headerText: String, + headers: Array, + headersLength: Number, + hideActions: Boolean, + hideHeaders: Boolean, + itemKey: String, + items: Array, + light: Boolean, + loading: [Boolean, String], + mustSort: Boolean, + nextIcon: String, + noDataText: String, + noResultsText: String, + pagination: Object, + prevIcon: String, + rowsPerPageItems: Array, + rowsPerPageText: String, + search: (null as any) as PropValidator, + selectAll: [Boolean, String], + sortIcon: String, + totalItems: Number, + value: Array, + }, +}); +Vue.component('v-edit-dialog', { + props: { + cancelText: (null as any) as PropValidator, + dark: Boolean, + large: Boolean, + lazy: Boolean, + light: Boolean, + persistent: Boolean, + returnValue: (null as any) as PropValidator, + saveText: (null as any) as PropValidator, + transition: String, + }, +}); +Vue.component('v-table-overflow', {}); +Vue.component('v-date-picker', { + props: { + allowedDates: Function, + color: String, + dark: Boolean, + dayFormat: Function, + disabled: Boolean, + eventColor: [Array, Function, Object, String], + events: [Array, Function, Object], + firstDayOfWeek: [String, Number], + fullWidth: Boolean, + headerColor: String, + headerDateFormat: Function, + landscape: Boolean, + light: Boolean, + locale: String, + max: String, + min: String, + monthFormat: Function, + multiple: Boolean, + nextIcon: String, + noTitle: Boolean, + pickerDate: String, + prevIcon: String, + reactive: Boolean, + readonly: Boolean, + scrollable: Boolean, + showCurrent: [Boolean, String], + showWeek: Boolean, + titleDateFormat: Function, + type: String, + value: [Array, String], + weekdayFormat: Function, + width: [Number, String], + yearFormat: Function, + yearIcon: String, + }, +}); +Vue.component('v-date-picker-title', { + props: { + color: String, + date: String, + disabled: Boolean, + readonly: Boolean, + selectingYear: Boolean, + value: String, + year: [Number, String], + yearIcon: String, + }, +}); +Vue.component('v-date-picker-header', { + props: { + color: String, + dark: Boolean, + disabled: Boolean, + format: Function, + light: Boolean, + locale: String, + max: String, + min: String, + nextIcon: String, + prevIcon: String, + readonly: Boolean, + value: [Number, String], + }, +}); +Vue.component('v-date-picker-date-table', { + props: { + allowedDates: Function, + color: String, + current: String, + dark: Boolean, + disabled: Boolean, + eventColor: [Array, Function, Object, String], + events: [Array, Function, Object], + firstDayOfWeek: [String, Number], + format: Function, + light: Boolean, + locale: String, + max: String, + min: String, + readonly: Boolean, + scrollable: Boolean, + showWeek: Boolean, + tableDate: String, + value: [String, Array], + weekdayFormat: Function, + }, +}); +Vue.component('v-date-picker-month-table', { + props: { + allowedDates: Function, + color: String, + current: String, + dark: Boolean, + disabled: Boolean, + eventColor: [Array, Function, Object, String], + events: [Array, Function, Object], + format: Function, + light: Boolean, + locale: String, + max: String, + min: String, + readonly: Boolean, + scrollable: Boolean, + tableDate: String, + value: [String, Array], + }, +}); +Vue.component('v-date-picker-years', { + props: { + color: String, + format: Function, + locale: String, + max: [Number, String], + min: [Number, String], + readonly: Boolean, + value: [Number, String], + }, +}); +Vue.component('v-dialog', { + props: { + attach: (null as any) as PropValidator, + contentClass: (null as any) as PropValidator, + dark: Boolean, + disabled: Boolean, + fullWidth: Boolean, + fullscreen: Boolean, + hideOverlay: Boolean, + lazy: Boolean, + light: Boolean, + maxWidth: [String, Number], + noClickAnimation: Boolean, + origin: String, + persistent: Boolean, + returnValue: (null as any) as PropValidator, + scrollable: Boolean, + transition: [String, Boolean], + value: (null as any) as PropValidator, + width: [String, Number], + }, +}); +Vue.component('v-divider', { + props: { + dark: Boolean, + inset: Boolean, + light: Boolean, + vertical: Boolean, + }, +}); +Vue.component('v-expansion-panel', { + props: { + dark: Boolean, + disabled: Boolean, + expand: Boolean, + focusable: Boolean, + inset: Boolean, + light: Boolean, + popout: Boolean, + readonly: Boolean, + value: [Number, Array], + }, +}); +Vue.component('v-expansion-panel-content', { + props: { + disabled: Boolean, + expandIcon: String, + hideActions: Boolean, + lazy: Boolean, + readonly: Boolean, + ripple: [Boolean, Object], + value: (null as any) as PropValidator, + }, +}); +Vue.component('v-footer', { + props: { + absolute: Boolean, + app: Boolean, + color: String, + dark: Boolean, + fixed: Boolean, + height: [Number, String], + inset: Boolean, + light: Boolean, + }, +}); +Vue.component('v-form', { + props: { + lazyValidation: Boolean, + value: Boolean, + }, +}); +Vue.component('v-container', { + props: { + alignBaseline: Boolean, + alignCenter: Boolean, + alignContentCenter: Boolean, + alignContentEnd: Boolean, + alignContentSpaceAround: Boolean, + alignContentSpaceBetween: Boolean, + alignContentStart: Boolean, + alignEnd: Boolean, + alignStart: Boolean, + 'd-{type}': Boolean, + fillHeight: Boolean, + fluid: Boolean, + 'grid-list-{xs through xl}': Boolean, + id: String, + justifyCenter: Boolean, + justifyEnd: Boolean, + justifySpaceAround: Boolean, + justifySpaceBetween: Boolean, + justifyStart: Boolean, + tag: String, + }, +}); +Vue.component('v-content', { + props: { + tag: String, + }, +}); +Vue.component('v-flex', { + props: { + '(size)(1-12)': Boolean, + alignSelfBaseline: Boolean, + alignSelfCenter: Boolean, + alignSelfEnd: Boolean, + alignSelfStart: Boolean, + grow: Boolean, + id: String, + 'offset-(size)(0-12)': Boolean, + 'order-(size)(1-12)': Boolean, + shrink: Boolean, + tag: String, + }, +}); +Vue.component('v-layout', { + props: { + alignBaseline: Boolean, + alignCenter: Boolean, + alignContentCenter: Boolean, + alignContentEnd: Boolean, + alignContentSpaceAround: Boolean, + alignContentSpaceBetween: Boolean, + alignContentStart: Boolean, + alignEnd: Boolean, + alignStart: Boolean, + column: Boolean, + 'd-{type}': Boolean, + fillHeight: Boolean, + id: String, + justifyCenter: Boolean, + justifyEnd: Boolean, + justifySpaceAround: Boolean, + justifySpaceBetween: Boolean, + justifyStart: Boolean, + reverse: Boolean, + row: Boolean, + tag: String, + wrap: Boolean, + }, +}); +Vue.component('v-spacer', {}); +Vue.component('v-hover', { + props: { + closeDelay: [Number, String], + disabled: Boolean, + openDelay: [Number, String], + value: Boolean, + }, +}); +Vue.component('v-icon', { + props: { + color: String, + dark: Boolean, + disabled: Boolean, + large: Boolean, + left: Boolean, + light: Boolean, + medium: Boolean, + right: Boolean, + size: [Number, String], + small: Boolean, + xLarge: Boolean, + }, +}); +Vue.component('v-img', { + props: { + alt: String, + aspectRatio: [String, Number], + contain: Boolean, + gradient: String, + height: [Number, String], + lazySrc: String, + maxHeight: [Number, String], + maxWidth: [Number, String], + minHeight: [Number, String], + minWidth: [Number, String], + position: String, + sizes: String, + src: [String, Object], + srcset: String, + transition: [Boolean, String], + width: [Number, String], + }, +}); +Vue.component('v-input', { + props: { + appendIcon: String, + appendIconCb: Function, + backgroundColor: String, + color: String, + dark: Boolean, + disabled: Boolean, + error: Boolean, + errorCount: [Number, String], + errorMessages: [String, Array], + height: [Number, String], + hideDetails: Boolean, + hint: String, + label: String, + light: Boolean, + loading: Boolean, + messages: [String, Array], + persistentHint: Boolean, + prependIcon: String, + prependIconCb: Function, + readonly: Boolean, + rules: Array, + success: Boolean, + successMessages: [String, Array], + validateOnBlur: Boolean, + value: (null as any) as PropValidator, + }, +}); +Vue.component('v-item', { + props: { + activeClass: String, + disabled: Boolean, + value: (null as any) as PropValidator, + }, +}); +Vue.component('v-item-group', { + props: { + activeClass: String, + dark: Boolean, + light: Boolean, + mandatory: Boolean, + max: [Number, String], + multiple: Boolean, + value: (null as any) as PropValidator, + }, +}); +Vue.component('v-jumbotron', { + props: { + activeClass: String, + append: Boolean, + color: String, + dark: Boolean, + disabled: Boolean, + exact: Boolean, + exactActiveClass: String, + gradient: String, + height: [Number, String], + href: [String, Object], + light: Boolean, + nuxt: Boolean, + replace: Boolean, + ripple: [Boolean, Object], + src: String, + tag: String, + target: String, + to: [String, Object], + }, +}); +Vue.component('v-label', { + props: { + absolute: Boolean, + color: [Boolean, String], + dark: Boolean, + disabled: Boolean, + focused: Boolean, + for: String, + left: [Number, String], + light: Boolean, + right: [Number, String], + value: Boolean, + }, +}); +Vue.component('v-list', { + props: { + dark: Boolean, + dense: Boolean, + expand: Boolean, + light: Boolean, + subheader: Boolean, + threeLine: Boolean, + twoLine: Boolean, + }, +}); +Vue.component('v-list-group', { + props: { + activeClass: String, + appendIcon: String, + disabled: Boolean, + group: String, + lazy: Boolean, + noAction: Boolean, + prependIcon: String, + subGroup: Boolean, + value: (null as any) as PropValidator, + }, +}); +Vue.component('v-list-tile', { + props: { + activeClass: String, + append: Boolean, + avatar: Boolean, + color: String, + dark: Boolean, + disabled: Boolean, + exact: Boolean, + exactActiveClass: String, + href: [String, Object], + inactive: Boolean, + light: Boolean, + nuxt: Boolean, + replace: Boolean, + ripple: [Boolean, Object], + tag: String, + target: String, + to: [String, Object], + value: (null as any) as PropValidator, + }, +}); +Vue.component('v-list-tile-action', {}); +Vue.component('v-list-tile-avatar', { + props: { + color: String, + size: [Number, String], + tile: Boolean, + }, +}); +Vue.component('v-list-tile-action-text', {}); +Vue.component('v-list-tile-content', {}); +Vue.component('v-list-tile-title', {}); +Vue.component('v-list-tile-sub-title', {}); +Vue.component('v-menu', { + props: { + absolute: Boolean, + activator: (null as any) as PropValidator, + allowOverflow: Boolean, + attach: (null as any) as PropValidator, + auto: Boolean, + bottom: Boolean, + closeDelay: [Number, String], + closeOnClick: Boolean, + closeOnContentClick: Boolean, + contentClass: (null as any) as PropValidator, + dark: Boolean, + disableKeys: Boolean, + disabled: Boolean, + fixed: Boolean, + fullWidth: Boolean, + inputActivator: Boolean, + lazy: Boolean, + left: Boolean, + light: Boolean, + maxHeight: (null as any) as PropValidator, + maxWidth: [Number, String], + minWidth: [Number, String], + nudgeBottom: [Number, String], + nudgeLeft: [Number, String], + nudgeRight: [Number, String], + nudgeTop: [Number, String], + nudgeWidth: [Number, String], + offsetOverflow: Boolean, + offsetX: Boolean, + offsetY: Boolean, + openDelay: [Number, String], + openOnClick: Boolean, + openOnHover: Boolean, + origin: String, + positionX: Number, + positionY: Number, + returnValue: (null as any) as PropValidator, + right: Boolean, + top: Boolean, + transition: [Boolean, String], + value: (null as any) as PropValidator, + zIndex: [Number, String], + }, +}); +Vue.component('v-messages', { + props: { + color: String, + dark: Boolean, + light: Boolean, + value: Array, + }, +}); +Vue.component('v-navigation-drawer', { + props: { + absolute: Boolean, + app: Boolean, + clipped: Boolean, + dark: Boolean, + disableResizeWatcher: Boolean, + disableRouteWatcher: Boolean, + fixed: Boolean, + floating: Boolean, + height: [Number, String], + hideOverlay: Boolean, + light: Boolean, + miniVariant: Boolean, + miniVariantWidth: [Number, String], + mobileBreakPoint: [Number, String], + permanent: Boolean, + right: Boolean, + stateless: Boolean, + temporary: Boolean, + touchless: Boolean, + value: (null as any) as PropValidator, + width: [Number, String], + }, +}); +Vue.component('v-overflow-btn', { + props: { + allowOverflow: Boolean, + appendIcon: String, + appendIconCb: Function, + appendOuterIcon: String, + appendOuterIconCb: Function, + attach: (null as any) as PropValidator, + autoSelectFirst: Boolean, + autofocus: Boolean, + backgroundColor: String, + box: Boolean, + browserAutocomplete: String, + cacheItems: Boolean, + chips: Boolean, + clearIcon: String, + clearIconCb: Function, + clearable: Boolean, + color: String, + counter: [Boolean, Number, String], + dark: Boolean, + deletableChips: Boolean, + dense: Boolean, + disabled: Boolean, + dontFillMaskBlanks: Boolean, + editable: Boolean, + error: Boolean, + errorCount: [Number, String], + errorMessages: [String, Array], + filter: Function, + flat: Boolean, + fullWidth: Boolean, + height: [Number, String], + hideDetails: Boolean, + hideNoData: Boolean, + hideSelected: Boolean, + hint: String, + itemAvatar: [String, Array, Function], + itemDisabled: [String, Array, Function], + itemText: [String, Array, Function], + itemValue: [String, Array, Function], + items: Array, + label: String, + light: Boolean, + loading: [Boolean, String], + mask: [Object, String], + menuProps: [String, Array, Object], + messages: [String, Array], + multiple: Boolean, + noDataText: String, + noFilter: Boolean, + openOnClear: Boolean, + outline: Boolean, + persistentHint: Boolean, + placeholder: String, + prefix: String, + prependIcon: String, + prependIconCb: Function, + prependInnerIcon: String, + prependInnerIconCb: Function, + readonly: Boolean, + returnMaskedValue: Boolean, + returnObject: Boolean, + reverse: Boolean, + rules: Array, + searchInput: (null as any) as PropValidator, + segmented: Boolean, + singleLine: Boolean, + smallChips: Boolean, + solo: Boolean, + soloInverted: Boolean, + success: Boolean, + successMessages: [String, Array], + suffix: String, + transition: (null as any) as PropValidator, + type: String, + validateOnBlur: Boolean, + value: (null as any) as PropValidator, + valueComparator: Function, + }, +}); +Vue.component('v-pagination', { + props: { + circle: Boolean, + color: String, + dark: Boolean, + disabled: Boolean, + length: Number, + light: Boolean, + nextIcon: String, + prevIcon: String, + totalVisible: [Number, String], + value: Number, + }, +}); +Vue.component('v-sheet', { + props: { + color: String, + dark: Boolean, + elevation: [Number, String], + height: [Number, String], + light: Boolean, + maxHeight: [Number, String], + maxWidth: [Number, String], + minHeight: [Number, String], + minWidth: [Number, String], + tag: String, + tile: Boolean, + width: [Number, String], + }, +}); +Vue.component('v-parallax', { + props: { + alt: String, + height: [String, Number], + src: String, + }, +}); +Vue.component('v-picker', { + props: { + color: String, + dark: Boolean, + fullWidth: Boolean, + landscape: Boolean, + light: Boolean, + transition: String, + width: [Number, String], + }, +}); +Vue.component('v-progress-circular', { + props: { + button: Boolean, + color: String, + indeterminate: Boolean, + rotate: [Number, String], + size: [Number, String], + value: [Number, String], + width: [Number, String], + }, +}); +Vue.component('v-progress-linear', { + props: { + active: Boolean, + backgroundColor: String, + backgroundOpacity: [Number, String], + bufferValue: [Number, String], + color: String, + height: [Number, String], + indeterminate: Boolean, + query: Boolean, + value: [Number, String], + }, +}); +Vue.component('v-radio-group', { + props: { + appendIcon: String, + appendIconCb: Function, + backgroundColor: String, + color: String, + column: Boolean, + dark: Boolean, + disabled: Boolean, + error: Boolean, + errorCount: [Number, String], + errorMessages: [String, Array], + height: [Number, String], + hideDetails: Boolean, + hint: String, + label: String, + light: Boolean, + loading: Boolean, + mandatory: Boolean, + messages: [String, Array], + name: String, + persistentHint: Boolean, + prependIcon: String, + prependIconCb: Function, + readonly: Boolean, + row: Boolean, + rules: Array, + success: Boolean, + successMessages: [String, Array], + validateOnBlur: Boolean, + value: (null as any) as PropValidator, + valueComparator: Function, + }, +}); +Vue.component('v-radio', { + props: { + color: String, + dark: Boolean, + disabled: Boolean, + label: String, + light: Boolean, + offIcon: String, + onIcon: String, + readonly: Boolean, + ripple: [Boolean, Object], + value: (null as any) as PropValidator, + }, +}); +Vue.component('v-range-slider', { + props: { + alwaysDirty: Boolean, + appendIcon: String, + appendIconCb: Function, + backgroundColor: String, + color: String, + dark: Boolean, + disabled: Boolean, + error: Boolean, + errorCount: [Number, String], + errorMessages: [String, Array], + height: [Number, String], + hideDetails: Boolean, + hint: String, + inverseLabel: Boolean, + label: String, + light: Boolean, + loading: [Boolean, String], + max: [Number, String], + messages: [String, Array], + min: [Number, String], + persistentHint: Boolean, + prependIcon: String, + prependIconCb: Function, + readonly: Boolean, + rules: Array, + step: [Number, String], + success: Boolean, + successMessages: [String, Array], + thumbColor: String, + thumbLabel: [Boolean, String], + thumbSize: [Number, String], + tickLabels: Array, + tickSize: [Number, String], + ticks: [Boolean, String], + trackColor: String, + validateOnBlur: Boolean, + value: Array, + }, +}); +Vue.component('v-rating', { + props: { + backgroundColor: String, + clearable: Boolean, + closeDelay: [Number, String], + color: String, + dark: Boolean, + dense: Boolean, + emptyIcon: String, + fullIcon: String, + halfIcon: String, + halfIncrements: Boolean, + hover: Boolean, + large: Boolean, + length: [Number, String], + light: Boolean, + medium: Boolean, + openDelay: [Number, String], + readonly: Boolean, + ripple: [Boolean, Object], + size: [Number, String], + small: Boolean, + value: Number, + xLarge: Boolean, + }, +}); +Vue.component('v-responsive', { + props: { + aspectRatio: [String, Number], + height: [Number, String], + maxHeight: [Number, String], + maxWidth: [Number, String], + minHeight: [Number, String], + minWidth: [Number, String], + width: [Number, String], + }, +}); +Vue.component('v-select', { + props: { + appendIcon: String, + appendIconCb: Function, + appendOuterIcon: String, + appendOuterIconCb: Function, + attach: (null as any) as PropValidator, + autofocus: Boolean, + backgroundColor: String, + box: Boolean, + browserAutocomplete: String, + cacheItems: Boolean, + chips: Boolean, + clearIcon: String, + clearIconCb: Function, + clearable: Boolean, + color: String, + counter: [Boolean, Number, String], + dark: Boolean, + deletableChips: Boolean, + dense: Boolean, + disabled: Boolean, + dontFillMaskBlanks: Boolean, + error: Boolean, + errorCount: [Number, String], + errorMessages: [String, Array], + filter: (null as any) as PropValidator, + flat: Boolean, + fullWidth: Boolean, + height: [Number, String], + hideDetails: Boolean, + hideSelected: Boolean, + hint: String, + itemAvatar: [String, Array, Function], + itemDisabled: [String, Array, Function], + itemText: [String, Array, Function], + itemValue: [String, Array, Function], + items: Array, + label: String, + light: Boolean, + loading: [Boolean, String], + mask: [Object, String], + menuProps: [String, Array, Object], + messages: [String, Array], + multiple: Boolean, + noDataText: String, + openOnClear: Boolean, + outline: Boolean, + persistentHint: Boolean, + placeholder: String, + prefix: String, + prependIcon: String, + prependIconCb: Function, + prependInnerIcon: String, + prependInnerIconCb: Function, + readonly: Boolean, + returnMaskedValue: Boolean, + returnObject: Boolean, + reverse: Boolean, + rules: Array, + searchInput: (null as any) as PropValidator, + singleLine: Boolean, + smallChips: Boolean, + solo: Boolean, + soloInverted: Boolean, + success: Boolean, + successMessages: [String, Array], + suffix: String, + type: String, + validateOnBlur: Boolean, + value: (null as any) as PropValidator, + valueComparator: Function, + }, +}); +Vue.component('v-slider', { + props: { + alwaysDirty: Boolean, + appendIcon: String, + appendIconCb: Function, + backgroundColor: String, + color: String, + dark: Boolean, + disabled: Boolean, + error: Boolean, + errorCount: [Number, String], + errorMessages: [String, Array], + height: [Number, String], + hideDetails: Boolean, + hint: String, + inverseLabel: Boolean, + label: String, + light: Boolean, + loading: [Boolean, String], + max: [Number, String], + messages: [String, Array], + min: [Number, String], + persistentHint: Boolean, + prependIcon: String, + prependIconCb: Function, + readonly: Boolean, + rules: Array, + step: [Number, String], + success: Boolean, + successMessages: [String, Array], + thumbColor: String, + thumbLabel: [Boolean, String], + thumbSize: [Number, String], + tickLabels: Array, + tickSize: [Number, String], + ticks: [Boolean, String], + trackColor: String, + validateOnBlur: Boolean, + value: [Number, String], + }, +}); +Vue.component('v-snackbar', { + props: { + absolute: Boolean, + autoHeight: Boolean, + bottom: Boolean, + color: String, + left: Boolean, + multiLine: Boolean, + right: Boolean, + timeout: Number, + top: Boolean, + value: (null as any) as PropValidator, + vertical: Boolean, + }, +}); +Vue.component('v-sparkline', { + props: { + autoDraw: Boolean, + autoDrawDuration: Number, + autoDrawEasing: String, + data: Array, + gradient: Array, + gradientDirection: String, + height: Number, + lineWidth: Number, + padding: Number, + showLabel: Boolean, + smooth: [Boolean, Number], + width: Number, + }, +}); +Vue.component('v-speed-dial', { + props: { + absolute: Boolean, + bottom: Boolean, + direction: String, + fixed: Boolean, + left: Boolean, + mode: String, + openOnHover: Boolean, + origin: String, + right: Boolean, + top: Boolean, + transition: String, + value: (null as any) as PropValidator, + }, +}); +Vue.component('v-stepper', { + props: { + altLabels: Boolean, + dark: Boolean, + light: Boolean, + nonLinear: Boolean, + value: [Number, String], + vertical: Boolean, + }, +}); +Vue.component('v-stepper-content', { + props: { + step: [Number, String], + }, +}); +Vue.component('v-stepper-step', { + props: { + color: String, + complete: Boolean, + completeIcon: String, + editIcon: String, + editable: Boolean, + errorIcon: String, + rules: Array, + step: [Number, String], + }, +}); +Vue.component('v-stepper-header', {}); +Vue.component('v-stepper-items', {}); +Vue.component('v-subheader', { + props: { + dark: Boolean, + inset: Boolean, + light: Boolean, + }, +}); +Vue.component('v-switch', { + props: { + appendIcon: String, + appendIconCb: Function, + backgroundColor: String, + color: String, + dark: Boolean, + disabled: Boolean, + error: Boolean, + errorCount: [Number, String], + errorMessages: [String, Array], + falseValue: (null as any) as PropValidator, + height: [Number, String], + hideDetails: Boolean, + hint: String, + id: String, + inputValue: (null as any) as PropValidator, + label: String, + light: Boolean, + loading: [Boolean, String], + messages: [String, Array], + multiple: Boolean, + persistentHint: Boolean, + prependIcon: String, + prependIconCb: Function, + readonly: Boolean, + ripple: [Boolean, Object], + rules: Array, + success: Boolean, + successMessages: [String, Array], + trueValue: (null as any) as PropValidator, + validateOnBlur: Boolean, + value: (null as any) as PropValidator, + valueComparator: Function, + }, +}); +Vue.component('v-system-bar', { + props: { + absolute: Boolean, + app: Boolean, + color: String, + dark: Boolean, + fixed: Boolean, + height: [Number, String], + light: Boolean, + lightsOut: Boolean, + status: Boolean, + window: Boolean, + }, +}); +Vue.component('v-tabs', { + props: { + activeClass: String, + alignWithTitle: Boolean, + centered: Boolean, + color: String, + dark: Boolean, + fixedTabs: Boolean, + grow: Boolean, + height: [Number, String], + hideSlider: Boolean, + iconsAndText: Boolean, + light: Boolean, + mandatory: Boolean, + max: [Number, String], + mobileBreakPoint: [Number, String], + multiple: Boolean, + nextIcon: String, + prevIcon: String, + right: Boolean, + showArrows: Boolean, + sliderColor: String, + value: [Number, String], + }, +}); +Vue.component('v-tab', { + props: { + activeClass: String, + append: Boolean, + dark: Boolean, + disabled: Boolean, + exact: Boolean, + exactActiveClass: String, + href: [String, Object], + light: Boolean, + nuxt: Boolean, + replace: Boolean, + ripple: [Boolean, Object], + tag: String, + target: String, + to: [String, Object], + }, +}); +Vue.component('v-tab-item', { + props: { + activeClass: String, + disabled: Boolean, + id: String, + lazy: Boolean, + reverseTransition: [Boolean, String], + transition: [Boolean, String], + value: (null as any) as PropValidator, + }, +}); +Vue.component('v-tabs-items', { + props: { + activeClass: String, + cycle: Boolean, + dark: Boolean, + light: Boolean, + mandatory: Boolean, + max: [Number, String], + multiple: Boolean, + reverse: Boolean, + touch: Object, + touchless: Boolean, + value: (null as any) as PropValidator, + vertical: Boolean, + }, +}); +Vue.component('v-tabs-slider', { + props: { + color: String, + }, +}); +Vue.component('v-textarea', { + props: { + appendIcon: String, + appendIconCb: Function, + appendOuterIcon: String, + appendOuterIconCb: Function, + autoGrow: Boolean, + autofocus: Boolean, + backgroundColor: String, + box: Boolean, + browserAutocomplete: String, + clearIcon: String, + clearIconCb: Function, + clearable: Boolean, + color: String, + counter: [Boolean, Number, String], + dark: Boolean, + disabled: Boolean, + dontFillMaskBlanks: Boolean, + error: Boolean, + errorCount: [Number, String], + errorMessages: [String, Array], + flat: Boolean, + fullWidth: Boolean, + height: [Number, String], + hideDetails: Boolean, + hint: String, + label: String, + light: Boolean, + loading: [Boolean, String], + mask: [Object, String], + messages: [String, Array], + noResize: Boolean, + outline: Boolean, + persistentHint: Boolean, + placeholder: String, + prefix: String, + prependIcon: String, + prependIconCb: Function, + prependInnerIcon: String, + prependInnerIconCb: Function, + readonly: Boolean, + returnMaskedValue: Boolean, + reverse: Boolean, + rowHeight: [Number, String], + rows: [Number, String], + rules: Array, + singleLine: Boolean, + solo: Boolean, + soloInverted: Boolean, + success: Boolean, + successMessages: [String, Array], + suffix: String, + type: String, + validateOnBlur: Boolean, + value: (null as any) as PropValidator, + }, +}); +Vue.component('v-text-field', { + props: { + appendIcon: String, + appendIconCb: Function, + appendOuterIcon: String, + appendOuterIconCb: Function, + autofocus: Boolean, + backgroundColor: String, + box: Boolean, + browserAutocomplete: String, + clearIcon: String, + clearIconCb: Function, + clearable: Boolean, + color: String, + counter: [Boolean, Number, String], + dark: Boolean, + disabled: Boolean, + dontFillMaskBlanks: Boolean, + error: Boolean, + errorCount: [Number, String], + errorMessages: [String, Array], + flat: Boolean, + fullWidth: Boolean, + height: [Number, String], + hideDetails: Boolean, + hint: String, + label: String, + light: Boolean, + loading: [Boolean, String], + mask: [Object, String], + messages: [String, Array], + outline: Boolean, + persistentHint: Boolean, + placeholder: String, + prefix: String, + prependIcon: String, + prependIconCb: Function, + prependInnerIcon: String, + prependInnerIconCb: Function, + readonly: Boolean, + returnMaskedValue: Boolean, + reverse: Boolean, + rules: Array, + singleLine: Boolean, + solo: Boolean, + soloInverted: Boolean, + success: Boolean, + successMessages: [String, Array], + suffix: String, + type: String, + validateOnBlur: Boolean, + value: (null as any) as PropValidator, + }, +}); +Vue.component('v-timeline', { + props: { + alignTop: Boolean, + dark: Boolean, + dense: Boolean, + light: Boolean, + }, +}); +Vue.component('v-timeline-item', { + props: { + color: String, + dark: Boolean, + fillDot: Boolean, + hideDot: Boolean, + icon: String, + iconColor: String, + large: Boolean, + left: Boolean, + light: Boolean, + right: Boolean, + small: Boolean, + }, +}); +Vue.component('v-time-picker', { + props: { + allowedHours: Function, + allowedMinutes: Function, + allowedSeconds: Function, + color: String, + dark: Boolean, + disabled: Boolean, + format: String, + fullWidth: Boolean, + headerColor: String, + landscape: Boolean, + light: Boolean, + max: String, + min: String, + noTitle: Boolean, + readonly: Boolean, + scrollable: Boolean, + useSeconds: Boolean, + value: (null as any) as PropValidator, + width: [Number, String], + }, +}); +Vue.component('v-time-picker-clock', { + props: { + allowedValues: Function, + color: String, + dark: Boolean, + disabled: Boolean, + double: Boolean, + format: Function, + light: Boolean, + max: Number, + min: Number, + readonly: Boolean, + rotate: Number, + scrollable: Boolean, + step: Number, + value: Number, + }, +}); +Vue.component('v-time-picker-title', { + props: { + ampm: Boolean, + color: String, + disabled: Boolean, + hour: Number, + minute: Number, + period: String, + readonly: Boolean, + second: Number, + selecting: Number, + useSeconds: Boolean, + }, +}); +Vue.component('v-toolbar', { + props: { + absolute: Boolean, + app: Boolean, + card: Boolean, + clippedLeft: Boolean, + clippedRight: Boolean, + color: String, + dark: Boolean, + dense: Boolean, + extended: Boolean, + extensionHeight: [Number, String], + fixed: Boolean, + flat: Boolean, + floating: Boolean, + height: [Number, String], + invertedScroll: Boolean, + light: Boolean, + manualScroll: Boolean, + prominent: Boolean, + scrollOffScreen: Boolean, + scrollTarget: String, + scrollThreshold: Number, + scrollToolbarOffScreen: Boolean, + tabs: Boolean, + }, +}); +Vue.component('v-toolbar-side-icon', {}); +Vue.component('v-toolbar-title', {}); +Vue.component('v-toolbar-items', {}); +Vue.component('v-tooltip', { + props: { + absolute: Boolean, + activator: (null as any) as PropValidator, + allowOverflow: Boolean, + attach: (null as any) as PropValidator, + bottom: Boolean, + closeDelay: [Number, String], + color: String, + contentClass: (null as any) as PropValidator, + dark: Boolean, + debounce: [Number, String], + disabled: Boolean, + fixed: Boolean, + inputActivator: Boolean, + lazy: Boolean, + left: Boolean, + light: Boolean, + maxWidth: [Number, String], + minWidth: [Number, String], + nudgeBottom: [Number, String], + nudgeLeft: [Number, String], + nudgeRight: [Number, String], + nudgeTop: [Number, String], + nudgeWidth: [Number, String], + offsetOverflow: Boolean, + openDelay: [Number, String], + positionX: Number, + positionY: Number, + right: Boolean, + tag: String, + top: Boolean, + transition: String, + value: (null as any) as PropValidator, + zIndex: (null as any) as PropValidator, + }, +}); +Vue.component('v-treeview', { + props: { + activatable: Boolean, + active: Array, + activeClass: String, + dark: Boolean, + expandIcon: String, + hoverable: Boolean, + indeterminateIcon: String, + itemChildren: String, + itemKey: String, + itemText: String, + items: Array, + light: Boolean, + loadChildren: Function, + loadingIcon: String, + multipleActive: Boolean, + offIcon: String, + onIcon: String, + open: Array, + openAll: Boolean, + openOnClick: Boolean, + selectable: Boolean, + selectedColor: String, + transition: Boolean, + value: Array, + }, +}); +Vue.component('v-treeview-node', { + props: { + activatable: Boolean, + activeClass: String, + expandIcon: String, + indeterminateIcon: String, + item: Object, + itemChildren: String, + itemKey: String, + itemText: String, + loadChildren: Function, + loadingIcon: String, + offIcon: String, + onIcon: String, + openOnClick: Boolean, + selectable: Boolean, + selectedColor: String, + transition: Boolean, + }, +}); +Vue.component('v-window', { + props: { + activeClass: String, + dark: Boolean, + light: Boolean, + mandatory: Boolean, + max: [Number, String], + multiple: Boolean, + reverse: Boolean, + touch: Object, + touchless: Boolean, + value: (null as any) as PropValidator, + vertical: Boolean, + }, +}); +Vue.component('v-window-item', { + props: { + activeClass: String, + disabled: Boolean, + lazy: Boolean, + reverseTransition: [Boolean, String], + transition: [Boolean, String], + value: (null as any) as PropValidator, + }, +}); +Vue.component('v-bottom-sheet-transition', { + props: { + group: Boolean, + hideOnLeave: Boolean, + leaveAbsolute: Boolean, + mode: String, + origin: String, + }, +}); +Vue.component('v-carousel-transition', { + props: { + group: Boolean, + hideOnLeave: Boolean, + leaveAbsolute: Boolean, + mode: String, + origin: String, + }, +}); +Vue.component('v-carousel-reverse-transition', { + props: { + group: Boolean, + hideOnLeave: Boolean, + leaveAbsolute: Boolean, + mode: String, + origin: String, + }, +}); +Vue.component('v-tab-transition', { + props: { + group: Boolean, + hideOnLeave: Boolean, + leaveAbsolute: Boolean, + mode: String, + origin: String, + }, +}); +Vue.component('v-tab-reverse-transition', { + props: { + group: Boolean, + hideOnLeave: Boolean, + leaveAbsolute: Boolean, + mode: String, + origin: String, + }, +}); +Vue.component('v-menu-transition', { + props: { + group: Boolean, + hideOnLeave: Boolean, + leaveAbsolute: Boolean, + mode: String, + origin: String, + }, +}); +Vue.component('v-fab-transition', { + props: { + group: Boolean, + hideOnLeave: Boolean, + leaveAbsolute: Boolean, + mode: String, + origin: String, + }, +}); +Vue.component('v-dialog-transition', { + props: { + group: Boolean, + hideOnLeave: Boolean, + leaveAbsolute: Boolean, + mode: String, + origin: String, + }, +}); +Vue.component('v-dialog-bottom-transition', { + props: { + group: Boolean, + hideOnLeave: Boolean, + leaveAbsolute: Boolean, + mode: String, + origin: String, + }, +}); +Vue.component('v-fade-transition', { + props: { + group: Boolean, + hideOnLeave: Boolean, + leaveAbsolute: Boolean, + mode: String, + origin: String, + }, +}); +Vue.component('v-scale-transition', { + props: { + group: Boolean, + hideOnLeave: Boolean, + leaveAbsolute: Boolean, + mode: String, + origin: String, + }, +}); +Vue.component('v-scroll-x-transition', { + props: { + group: Boolean, + hideOnLeave: Boolean, + leaveAbsolute: Boolean, + mode: String, + origin: String, + }, +}); +Vue.component('v-scroll-x-reverse-transition', { + props: { + group: Boolean, + hideOnLeave: Boolean, + leaveAbsolute: Boolean, + mode: String, + origin: String, + }, +}); +Vue.component('v-scroll-y-transition', { + props: { + group: Boolean, + hideOnLeave: Boolean, + leaveAbsolute: Boolean, + mode: String, + origin: String, + }, +}); +Vue.component('v-scroll-y-reverse-transition', { + props: { + group: Boolean, + hideOnLeave: Boolean, + leaveAbsolute: Boolean, + mode: String, + origin: String, + }, +}); +Vue.component('v-slide-x-transition', { + props: { + group: Boolean, + hideOnLeave: Boolean, + leaveAbsolute: Boolean, + mode: String, + origin: String, + }, +}); +Vue.component('v-slide-x-reverse-transition', { + props: { + group: Boolean, + hideOnLeave: Boolean, + leaveAbsolute: Boolean, + mode: String, + origin: String, + }, +}); +Vue.component('v-slide-y-transition', { + props: { + group: Boolean, + hideOnLeave: Boolean, + leaveAbsolute: Boolean, + mode: String, + origin: String, + }, +}); +Vue.component('v-slide-y-reverse-transition', { + props: { + group: Boolean, + hideOnLeave: Boolean, + leaveAbsolute: Boolean, + mode: String, + origin: String, + }, +}); +Vue.component('v-expand-transition', { + props: { + mode: String, + }, +}); +Vue.component('v-row-expand-transition', { + props: { + mode: String, + }, +}); diff --git a/src/frontend/src/util.ts b/src/frontend/src/util.ts new file mode 100644 index 0000000..c69894c --- /dev/null +++ b/src/frontend/src/util.ts @@ -0,0 +1,142 @@ +import axios, { AxiosError, AxiosResponse } from 'axios'; +import { DynamicInput } from './model'; + +const baseUrl = `${window.location.protocol}//${window.location.hostname}:8081`; +const root = `${baseUrl}/braze/api/`; +const constants = `${root}constants`; +const mods = `${root}mods`; +const packs = `${root}packs`; +const latency = 1600; // artifical latency + +type HttpSuccessHandler = (response: AxiosResponse) => void; +type HttpErrorHandler = (error: AxiosError) => void; + +if (baseUrl !== window.location.origin) { + // for dev environment + axios.defaults.headers.common.Authorization = 'Basic dXNlcjpjaGFuZ2VtZQ=='; +} + +function loadAndThen(cb: Function): void { + setTimeout(cb, latency); +} + +function get( + url: string, + success: HttpSuccessHandler, + error: HttpErrorHandler +): void { + loadAndThen(() => + axios + .get(url) + .then(success) + .catch(error) + ); +} + +function post( + url: string, + data: U, + success: HttpSuccessHandler, + error: HttpErrorHandler +): void { + loadAndThen(() => + axios + .post(url, data) + .then(success) + .catch(error) + ); +} + +export function getConstants( + success: HttpSuccessHandler, + error: HttpErrorHandler +): void { + get(constants, success, error); +} + +export function getMods( + success: HttpSuccessHandler, + error: HttpErrorHandler +): void { + get(mods, success, error); +} + +export function getMod( + slug: string, + success: HttpSuccessHandler, + error: HttpErrorHandler +): void { + get(`${mods}/${slug}`, success, error); +} + +export function getPack( + slug: string, + success: HttpSuccessHandler, + error: HttpErrorHandler +): void { + get(`${packs}/${slug}`, success, error); +} + +export function getPacks( + success: HttpSuccessHandler, + error: HttpErrorHandler +): void { + get(packs, success, error); +} + +export function postMod( + data: SimpleMod, + success: HttpSuccessHandler, + error: HttpErrorHandler +): void { + post(mods, data, success, error); +} + +export function postModVersion( + slug: string, + data: IndexedModVersion, + success: HttpSuccessHandler, + error: HttpErrorHandler +): void { + post(`${mods}/${slug}`, data, success, error); +} + +export function postPack( + data: SimplePack, + success: HttpSuccessHandler, + error: HttpErrorHandler +): void { + post(packs, data, success, error); +} + +export function postPackVersion( + slug: string, + data: IndexedPackVersion, + success: HttpSuccessHandler, + error: HttpErrorHandler +): void { + post(`${packs}/${slug}`, data, success, error); +} + +export function inputsToObject< + T extends { [K in DynamicInput['key']]: string | null } +>(inputs: DynamicInput[]): T { + return inputs.reduce((acc: Partial, input) => { + acc[input.key] = input.value; + return acc; + }, {}) as T; +} + +// https://stackoverflow.com/a/46941824/2172566 +export type Overwrite = { [P in Exclude]: T1[P] } & + T2; + +// eslint-disable-next-line @typescript-eslint/no-unused-vars +function slugify(str: string): string { + return str + .toLowerCase() + .replace(/[^\w\s-]/g, '') // remove non-word [a-z0-9_], non-whitespace, non-hyphen characters + .replace(/[\s_-]+/g, '-') // swap any length of whitespace, underscore, hyphen characters with a single - + .replace(/^-+|-+$/g, ''); // remove leading, trailing - + // function written by kganser https://gist.github.com/mathewbyrne/1280286#gistcomment-1716050 +} diff --git a/src/frontend/test/e2e/specs/test.js b/src/frontend/test/e2e/specs/test.js index a7b1bd9..2e5bf3a 100644 --- a/src/frontend/test/e2e/specs/test.js +++ b/src/frontend/test/e2e/specs/test.js @@ -3,7 +3,7 @@ module.exports = { 'default e2e tests': function (browser) { - // automatically uses dev Server port from /config.index.js + // automatically uses dev Server port from /config.index.ts // default: http://localhost:8080 // see nightwatch.conf.js const devServer = browser.globals.devServerURL diff --git a/src/frontend/test/unit/jest.conf.js b/src/frontend/test/unit/jest.conf.js index 4f7da15..2f0b7f7 100644 --- a/src/frontend/test/unit/jest.conf.js +++ b/src/frontend/test/unit/jest.conf.js @@ -22,9 +22,9 @@ module.exports = { mapCoverage: true, coverageDirectory: '/test/unit/coverage', collectCoverageFrom: [ - 'src/**/*.{js,vue}', - '!src/main.js', - '!src/router/index.js', + 'src/**/*.{ts,js,vue}', + '!src/main.ts', + '!src/router/index.ts', '!**/node_modules/**' ] } diff --git a/src/frontend/tsconfig.json b/src/frontend/tsconfig.json new file mode 100644 index 0000000..d6fdb0a --- /dev/null +++ b/src/frontend/tsconfig.json @@ -0,0 +1,16 @@ +{ + "compilerOptions": { + "lib": ["dom", "es5", "es2015", "esnext.array"], + "module": "es2015", + "target": "es5", + "strict": true, + "sourceMap": true, + "outDir": "./built/", + "moduleResolution": "node", + "allowSyntheticDefaultImports": true, + "experimentalDecorators": true + }, + "exclude": [ + "node_modules" + ] +} diff --git a/src/main/kotlin/com/forresthopkinsa/braze/model/TypeDefGenerator.kt b/src/main/kotlin/com/forresthopkinsa/braze/model/TypeDefGenerator.kt new file mode 100644 index 0000000..51d3218 --- /dev/null +++ b/src/main/kotlin/com/forresthopkinsa/braze/model/TypeDefGenerator.kt @@ -0,0 +1,30 @@ +package com.forresthopkinsa.braze.model + +import com.forresthopkinsa.braze.spring.RestController +import me.ntrrgc.tsGenerator.TypeScriptGenerator + +fun main() { + val classes = setOf( + RestController.Constants::class, + ForgeVersion::class, + GameVersion::class, + JavaVersion::class, + Mod::class, + SimpleMod::class, + ModVersion::class, + IndexedModVersion::class, + Pack::class, + SimplePack::class, + PackVersion::class, + IndexedPackVersion::class + ) + val ignored = setOf( + Element::class, + SimpleElement::class, + Version::class, + IndexedVersion::class, + Data::class + ) + val definitions = TypeScriptGenerator(rootClasses = classes, ignoreSuperclasses = ignored).definitionsText + println(definitions) +} \ No newline at end of file