From 4643336e9df512e1146043092f30dd7d0e7b3526 Mon Sep 17 00:00:00 2001 From: NGPixel Date: Sun, 1 Jul 2018 19:50:42 -0400 Subject: [PATCH] feat: auth + storage config improvements --- .vscode/extensions.json | 1 - client/components/admin/admin-auth.vue | 39 +- client/components/admin/admin-storage.vue | 39 +- client/components/admin/admin-utilities.vue | 18 +- .../auth/auth-mutation-save-strategies.gql | 6 +- .../storage/storage-mutation-save-targets.gql | 6 +- package.json | 42 +- server/db/models/authentication.js | 19 +- server/db/models/storage.js | 19 +- server/graph/resolvers/authentication.js | 8 +- server/graph/resolvers/storage.js | 12 +- server/helpers/common.js | 17 + server/modules/authentication/auth0.js | 6 +- server/modules/authentication/azure.js | 13 +- server/modules/authentication/discord.js | 5 +- server/modules/authentication/dropbox.js | 5 +- server/modules/authentication/facebook.js | 5 +- server/modules/authentication/github.js | 5 +- server/modules/authentication/google.js | 5 +- server/modules/authentication/ldap.js | 25 +- server/modules/authentication/local.js | 2 +- server/modules/authentication/microsoft.js | 5 +- server/modules/authentication/oauth2.js | 7 +- server/modules/authentication/slack.js | 5 +- server/modules/authentication/twitch.js | 5 +- server/modules/storage/azure.js | 6 +- server/modules/storage/digitalocean.js | 10 +- server/modules/storage/disk.js | 4 +- server/modules/storage/dropbox.js | 5 +- server/modules/storage/gdrive.js | 5 +- server/modules/storage/git.js | 20 +- server/modules/storage/onedrive.js | 5 +- server/modules/storage/s3.js | 7 +- server/modules/storage/scp.js | 14 +- yarn.lock | 777 ++++++++++++------ 35 files changed, 818 insertions(+), 354 deletions(-) create mode 100644 server/helpers/common.js diff --git a/.vscode/extensions.json b/.vscode/extensions.json index 87e9d93b..adb5f8c6 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -4,7 +4,6 @@ "dbaeumer.vscode-eslint", "christian-kohler.path-intellisense", "mrmlnc.vscode-puglint", - "robinbentley.sass-indented", "octref.vetur" ] } diff --git a/client/components/admin/admin-auth.vue b/client/components/admin/admin-auth.vue index f740dd8b..c269eb1a 100644 --- a/client/components/admin/admin-auth.vue +++ b/client/components/admin/admin-auth.vue @@ -12,7 +12,7 @@ .body-2.grey--text.text--darken-1 Select which authentication strategies to enable: .caption.grey--text.pb-2 Some strategies require additional configuration in their dedicated tab (when selected). v-form - v-checkbox( + v-checkbox.my-1( v-for='strategy in strategies' v-model='strategy.isEnabled' :key='strategy.key' @@ -27,14 +27,30 @@ v-form v-subheader.pl-0 Strategy Configuration .body-1.ml-3(v-if='!strategy.config || strategy.config.length < 1') This strategy has no configuration options you can modify. - v-text-field( - v-else - v-for='cfg in strategy.config' - :key='cfg.key' - :label='cfg.key' - v-model='cfg.value' - prepend-icon='settings_applications' + template(v-else, v-for='cfg in strategy.config') + v-select( + v-if='cfg.value.type === "string" && cfg.value.enum' + :items='cfg.value.enum' + :key='cfg.key' + :label='cfg.key | startCase' + v-model='cfg.value.value' + prepend-icon='settings_applications' ) + v-switch( + v-else-if='cfg.value.type === "boolean"' + :key='cfg.key' + :label='cfg.key | startCase' + v-model='cfg.value.value' + color='primary' + prepend-icon='settings_applications' + ) + v-text-field( + v-else + :key='cfg.key' + :label='cfg.key | startCase' + v-model='cfg.value.value' + prepend-icon='settings_applications' + ) v-divider v-subheader.pl-0 Registration .pr-3 @@ -90,6 +106,9 @@ import strategiesQuery from 'gql/admin/auth/auth-query-strategies.gql' import strategiesSaveMutation from 'gql/admin/auth/auth-mutation-save-strategies.gql' export default { + filters: { + startCase(val) { return _.startCase(val) } + }, data() { return { groups: [], @@ -122,7 +141,7 @@ export default { 'selfRegistration', 'domainWhitelist', 'autoEnrollGroups' - ])) + ])).map(str => ({...str, config: str.config.map(cfg => ({...cfg, value: cfg.value.value}))})) } }) this.$store.commit('showNotification', { @@ -137,7 +156,7 @@ export default { strategies: { query: strategiesQuery, fetchPolicy: 'network-only', - update: (data) => _.cloneDeep(data.authentication.strategies), + update: (data) => _.cloneDeep(data.authentication.strategies).map(str => ({...str, config: str.config.map(cfg => ({...cfg, value: JSON.parse(cfg.value)}))})), watchLoading (isLoading) { this.$store.commit(`loading${isLoading ? 'Start' : 'Stop'}`, 'admin-auth-refresh') } diff --git a/client/components/admin/admin-storage.vue b/client/components/admin/admin-storage.vue index 211eed9e..5d9c51b4 100644 --- a/client/components/admin/admin-storage.vue +++ b/client/components/admin/admin-storage.vue @@ -12,7 +12,7 @@ .body-2.grey--text.text--darken-1 Select which storage targets to enable: .caption.grey--text.pb-2 Some storage targets require additional configuration in their dedicated tab (when selected). v-form - v-checkbox( + v-checkbox.my-1( v-for='tgt in targets' v-model='tgt.isEnabled' :key='tgt.key' @@ -27,14 +27,30 @@ v-form v-subheader.pl-0 Target Configuration .body-1.ml-3(v-if='!tgt.config || tgt.config.length < 1') This storage target has no configuration options you can modify. - v-text-field( - v-else - v-for='cfg in tgt.config' - :key='cfg.key' - :label='cfg.key' - v-model='cfg.value' - prepend-icon='settings_applications' + template(v-else, v-for='cfg in tgt.config') + v-select( + v-if='cfg.value.type === "string" && cfg.value.enum' + :items='cfg.value.enum' + :key='cfg.key' + :label='cfg.key | startCase' + v-model='cfg.value.value' + prepend-icon='settings_applications' ) + v-switch( + v-else-if='cfg.value.type === "boolean"' + :key='cfg.key' + :label='cfg.key | startCase' + v-model='cfg.value.value' + color='primary' + prepend-icon='settings_applications' + ) + v-text-field( + v-else + :key='cfg.key' + :label='cfg.key | startCase' + v-model='cfg.value.value' + prepend-icon='settings_applications' + ) v-divider v-subheader.pl-0 Sync Direction .body-1.ml-3 Choose how content synchronization is handled for this storage target. @@ -80,6 +96,9 @@ import targetsQuery from 'gql/admin/storage/storage-query-targets.gql' import targetsSaveMutation from 'gql/admin/storage/storage-mutation-save-targets.gql' export default { + filters: { + startCase(val) { return _.startCase(val) } + }, data() { return { targets: [] @@ -109,7 +128,7 @@ export default { 'key', 'config', 'mode' - ])) + ])).map(str => ({...str, config: str.config.map(cfg => ({...cfg, value: cfg.value.value}))})) } }) this.$store.commit('showNotification', { @@ -124,7 +143,7 @@ export default { targets: { query: targetsQuery, fetchPolicy: 'network-only', - update: (data) => _.cloneDeep(data.storage.targets), + update: (data) => _.cloneDeep(data.storage.targets).map(str => ({...str, config: str.config.map(cfg => ({...cfg, value: JSON.parse(cfg.value)}))})), watchLoading (isLoading) { this.$store.commit(`loading${isLoading ? 'Start' : 'Stop'}`, 'admin-storage-refresh') } diff --git a/client/components/admin/admin-utilities.vue b/client/components/admin/admin-utilities.vue index dcaf17b0..4d2e5b0e 100644 --- a/client/components/admin/admin-utilities.vue +++ b/client/components/admin/admin-utilities.vue @@ -17,17 +17,31 @@ v-toolbar-title .subheading Authentication v-subheader Flush User Sessions - v-card-text.pt-0 + v-card-text.pt-0.pl-4 .body-1 This will cause all users to be logged out. You will need to log back in after the operation. v-btn(depressed).ml-0 v-icon(left, color='grey') build span Proceed + v-divider.my-0 v-subheader Reset Guest User - v-card-text.pt-0 + v-card-text.pt-0.pl-4 .body-1 This will reset the guest user to its default parameters and permissions. v-btn(depressed).ml-0 v-icon(left, color='grey') build span Proceed + v-card.mt-3 + v-toolbar(:color='$vuetify.dark ? "" : "grey darken-3"', dark, dense, flat) + v-toolbar-title + .subheading Modules + v-subheader Rescan Modules + v-card-text.pt-0.pl-4 + .body-1 Look for new modules on disk. Existing configurations will be merged. + v-btn(depressed).ml-0 + v-icon(left, color='grey') youtube_searched_for + span Authentication + v-btn(depressed).ml-0 + v-icon(left, color='grey') youtube_searched_for + span Storage v-flex(xs12, sm6) v-card v-toolbar(:color='$vuetify.dark ? "" : "grey darken-3"', dark, dense, flat) diff --git a/client/graph/admin/auth/auth-mutation-save-strategies.gql b/client/graph/admin/auth/auth-mutation-save-strategies.gql index b8f95250..b488a535 100644 --- a/client/graph/admin/auth/auth-mutation-save-strategies.gql +++ b/client/graph/admin/auth/auth-mutation-save-strategies.gql @@ -1,6 +1,6 @@ -mutation($targets: [StorageTargetInput]) { - storage { - updateTargets(targets: $targets) { +mutation($strategies: [AuthenticationStrategyInput]) { + authentication { + updateStrategies(strategies: $strategies) { responseResult { succeeded errorCode diff --git a/client/graph/admin/storage/storage-mutation-save-targets.gql b/client/graph/admin/storage/storage-mutation-save-targets.gql index b488a535..b8f95250 100644 --- a/client/graph/admin/storage/storage-mutation-save-targets.gql +++ b/client/graph/admin/storage/storage-mutation-save-targets.gql @@ -1,6 +1,6 @@ -mutation($strategies: [AuthenticationStrategyInput]) { - authentication { - updateStrategies(strategies: $strategies) { +mutation($targets: [StorageTargetInput]) { + storage { + updateTargets(targets: $targets) { responseResult { succeeded errorCode diff --git a/package.json b/package.json index c89c3ed9..2aa9ad13 100644 --- a/package.json +++ b/package.json @@ -37,7 +37,7 @@ "node": ">=8.11" }, "dependencies": { - "apollo-server": "2.0.0-rc.2", + "apollo-server": "2.0.0-rc.5", "apollo-server-express": "2.0.0-rc.2", "auto-load": "3.0.0", "axios": "0.18.0", @@ -69,9 +69,9 @@ "getos": "3.1.0", "graphql": "0.13.2", "graphql-list-fields": "2.0.2", - "graphql-tools": "3.0.2", + "graphql-tools": "3.0.4", "i18next": "11.3.3", - "i18next-express-middleware": "1.1.1", + "i18next-express-middleware": "1.2.0", "i18next-localstorage-cache": "1.1.1", "i18next-node-fs-backend": "1.0.0", "image-size": "0.6.3", @@ -79,7 +79,7 @@ "js-yaml": "3.12.0", "jsonwebtoken": "8.3.0", "klaw": "2.1.1", - "knex": "0.14.6", + "knex": "0.15.0", "lodash": "4.17.10", "markdown-it": "8.4.1", "markdown-it-abbr": "1.0.4", @@ -99,9 +99,9 @@ "mime-types": "2.1.18", "moment": "2.22.2", "moment-timezone": "0.5.21", - "mongodb": "3.1.0-beta4", + "mongodb": "3.1.0", "mssql": "4.1.0", - "multer": "1.3.0", + "multer": "1.3.1", "mysql2": "1.5.3", "node-2fa": "1.1.2", "oauth2orize": "1.11.0", @@ -134,12 +134,12 @@ "scim-query-filter-parser": "1.1.0", "semver": "5.5.0", "serve-favicon": "2.5.0", - "sqlite3": "4.0.0", - "uuid": "3.2.1", + "sqlite3": "4.0.1", + "uuid": "3.3.2", "validator": "10.4.0", "validator-as-promised": "1.0.2", "winston": "3.0.0", - "yargs": "11.0.0" + "yargs": "12.0.1" }, "devDependencies": { "@panter/vue-i18next": "0.11.0", @@ -152,11 +152,11 @@ "apollo-link-error": "1.1.0", "apollo-link-http": "1.5.4", "apollo-link-persisted-queries": "0.2.1", - "autoprefixer": "8.6.3", + "autoprefixer": "8.6.4", "babel-cli": "6.26.0", "babel-core": "6.26.3", "babel-eslint": "8.2.5", - "babel-jest": "23.0.1", + "babel-jest": "23.2.0", "babel-loader": "7.1.4", "babel-plugin-graphql-tag": "1.6.0", "babel-plugin-lodash": "3.3.4", @@ -168,14 +168,14 @@ "cache-loader": "1.2.2", "chart.js": "2.7.2", "clean-webpack-plugin": "0.1.19", - "copy-webpack-plugin": "4.5.1", + "copy-webpack-plugin": "4.5.2", "css-loader": "0.28.11", "cssnano": "4.0.0-rc.2", "duplicate-package-checker-webpack-plugin": "3.0.0", - "eslint": "5.0.0", + "eslint": "5.0.1", "eslint-config-requarks": "1.0.7", "eslint-config-standard": "11.0.0", - "eslint-plugin-import": "2.12.0", + "eslint-plugin-import": "2.13.0", "eslint-plugin-node": "6.0.1", "eslint-plugin-promise": "3.8.0", "eslint-plugin-standard": "3.1.0", @@ -190,20 +190,20 @@ "html-webpack-pug-plugin": "0.3.0", "i18next-xhr-backend": "1.5.1", "ignore-loader": "0.1.2", - "jest": "23.1.0", + "jest": "23.2.0", "jest-junit": "5.1.0", "js-cookie": "2.2.0", "lodash-webpack-plugin": "0.11.5", - "mini-css-extract-plugin": "0.4.0", + "mini-css-extract-plugin": "0.4.1", "node-sass": "4.9.0", "offline-plugin": "5.0.5", - "optimize-css-assets-webpack-plugin": "4.0.2", + "optimize-css-assets-webpack-plugin": "4.0.3", "postcss-cssnext": "3.1.0", "postcss-flexbugs-fixes": "3.3.1", "postcss-flexibility": "2.0.0", "postcss-import": "11.1.0", "postcss-loader": "2.1.5", - "postcss-preset-env": "5.1.0", + "postcss-preset-env": "5.2.1", "postcss-selector-parser": "5.0.0-rc.3", "pug-lint": "2.5.0", "pug-loader": "2.4.0", @@ -220,7 +220,7 @@ "stylus-loader": "3.0.2", "twemoji-awesome": "1.0.6", "url-loader": "1.0.1", - "vee-validate": "2.1.0-beta.2", + "vee-validate": "2.1.0-beta.5", "velocity-animate": "1.5.1", "vue": "2.5.16", "vue-apollo": "3.0.0-beta.19", @@ -234,10 +234,10 @@ "vue-router": "3.0.1", "vue-simple-breakpoints": "1.0.3", "vue-template-compiler": "2.5.16", - "vuetify": "1.0.19", + "vuetify": "1.1.1", "vuex": "3.0.1", "vuex-persistedstate": "2.5.4", - "webpack": "4.12.0", + "webpack": "4.14.0", "webpack-bundle-analyzer": "2.13.1", "webpack-cli": "3.0.8", "webpack-dev-middleware": "3.1.3", diff --git a/server/db/models/authentication.js b/server/db/models/authentication.js index d9c360a8..8befded7 100644 --- a/server/db/models/authentication.js +++ b/server/db/models/authentication.js @@ -2,6 +2,7 @@ const Model = require('objection').Model const autoload = require('auto-load') const path = require('path') const _ = require('lodash') +const commonHelper = require('../../helpers/common') /* global WIKI */ @@ -51,8 +52,22 @@ module.exports = class Authentication extends Model { title: strategy.title, isEnabled: false, useForm: strategy.useForm, - config: _.reduce(strategy.props, (result, value, key) => { - _.set(result, value, '') + config: _.transform(strategy.props, (result, value, key) => { + if (_.isPlainObject(value)) { + let cfgValue = { + type: typeof value.type(), + value: !_.isNil(value.default) ? value.default : commonHelper.getTypeDefaultValue(value) + } + if (_.isArray(value.enum)) { + cfgValue.enum = value.enum + } + _.set(result, key, cfgValue) + } else { + _.set(result, key, { + type: typeof value(), + value: commonHelper.getTypeDefaultValue(value) + }) + } return result }, {}), selfRegistration: false, diff --git a/server/db/models/storage.js b/server/db/models/storage.js index 75ac0248..1a115d5b 100644 --- a/server/db/models/storage.js +++ b/server/db/models/storage.js @@ -2,6 +2,7 @@ const Model = require('objection').Model const autoload = require('auto-load') const path = require('path') const _ = require('lodash') +const commonHelper = require('../../helpers/common') /* global WIKI */ @@ -43,8 +44,22 @@ module.exports = class Storage extends Model { title: target.title, isEnabled: false, mode: 'push', - config: _.reduce(target.props, (result, value, key) => { - _.set(result, value, '') + config: _.transform(target.props, (result, value, key) => { + if (_.isPlainObject(value)) { + let cfgValue = { + type: typeof value.type(), + value: !_.isNil(value.default) ? value.default : commonHelper.getTypeDefaultValue(value) + } + if (_.isArray(value.enum)) { + cfgValue.enum = value.enum + } + _.set(result, key, cfgValue) + } else { + _.set(result, key, { + type: typeof value(), + value: commonHelper.getTypeDefaultValue(value) + }) + } return result }, {}) }) diff --git a/server/graph/resolvers/authentication.js b/server/graph/resolvers/authentication.js index 48ac4cf8..9a0c7d6c 100644 --- a/server/graph/resolvers/authentication.js +++ b/server/graph/resolvers/authentication.js @@ -19,9 +19,9 @@ module.exports = { let strategies = await WIKI.db.authentication.getStrategies() strategies = strategies.map(stg => ({ ...stg, - config: _.transform(stg.config, (res, value, key) => { - res.push({ key, value }) - }, []) + config: _.sortBy(_.transform(stg.config, (res, value, key) => { + res.push({ key, value: JSON.stringify(value) }) + }, []), 'key') })) if (args.filter) { strategies = graphHelper.filter(strategies, args.filter) } if (args.orderBy) { strategies = graphHelper.orderBy(strategies, args.orderBy) } @@ -57,7 +57,7 @@ module.exports = { await WIKI.db.authentication.query().patch({ isEnabled: str.isEnabled, config: _.reduce(str.config, (result, value, key) => { - _.set(result, value.key, value.value) + _.set(result, `${value.key}.value`, value.value) return result }, {}), selfRegistration: str.selfRegistration, diff --git a/server/graph/resolvers/storage.js b/server/graph/resolvers/storage.js index 2910d5ed..b4d89467 100644 --- a/server/graph/resolvers/storage.js +++ b/server/graph/resolvers/storage.js @@ -13,11 +13,11 @@ module.exports = { StorageQuery: { async targets(obj, args, context, info) { let targets = await WIKI.db.storage.getTargets() - targets = targets.map(stg => ({ - ...stg, - config: _.transform(stg.config, (res, value, key) => { - res.push({ key, value }) - }, []) + targets = targets.map(tgt => ({ + ...tgt, + config: _.sortBy(_.transform(tgt.config, (res, value, key) => { + res.push({ key, value: JSON.stringify(value) }) + }, []), 'key') })) if (args.filter) { targets = graphHelper.filter(targets, args.filter) } if (args.orderBy) { targets = graphHelper.orderBy(targets, args.orderBy) } @@ -32,7 +32,7 @@ module.exports = { isEnabled: tgt.isEnabled, mode: tgt.mode, config: _.reduce(tgt.config, (result, value, key) => { - _.set(result, value.key, value.value) + _.set(result, `${value.key}.value`, value.value) return result }, {}) }).where('key', tgt.key) diff --git a/server/helpers/common.js b/server/helpers/common.js new file mode 100644 index 00000000..5dbef225 --- /dev/null +++ b/server/helpers/common.js @@ -0,0 +1,17 @@ +const _ = require('lodash') + +module.exports = { + /** + * Get default value of type + * + * @param {any} Type Primitive Type + * @returns Default value + */ + getTypeDefaultValue (Type) { + if (_.isArray(Type)) { + return _.head(Type) + } else { + return new Type() + } + } +} diff --git a/server/modules/authentication/auth0.js b/server/modules/authentication/auth0.js index 58ec34ff..c1f6bd99 100644 --- a/server/modules/authentication/auth0.js +++ b/server/modules/authentication/auth0.js @@ -10,7 +10,11 @@ module.exports = { key: 'auth0', title: 'Auth0', useForm: false, - props: ['domain', 'clientId', 'clientSecret'], + props: { + domain: String, + clientId: String, + clientSecret: String + }, init (passport, conf) { passport.use('auth0', new Auth0Strategy({ diff --git a/server/modules/authentication/azure.js b/server/modules/authentication/azure.js index 6dae3b62..156d4def 100644 --- a/server/modules/authentication/azure.js +++ b/server/modules/authentication/azure.js @@ -10,7 +10,18 @@ module.exports = { key: 'azure', title: 'Azure Active Directory', useForm: false, - props: ['clientId', 'clientSecret', 'resource', 'tenant'], + props: { + clientId: String, + clientSecret: String, + resource: { + type: String, + default: '00000002-0000-0000-c000-000000000000' + }, + tenant: { + type: String, + default: 'YOUR_TENANT.onmicrosoft.com' + } + }, init (passport, conf) { const jwt = require('jsonwebtoken') passport.use('azure_ad_oauth2', diff --git a/server/modules/authentication/discord.js b/server/modules/authentication/discord.js index 1a5e2f5f..b9c3e51a 100644 --- a/server/modules/authentication/discord.js +++ b/server/modules/authentication/discord.js @@ -10,7 +10,10 @@ module.exports = { key: 'discord', title: 'Discord', useForm: false, - props: ['clientId', 'clientSecret'], + props: { + clientId: String, + clientSecret: String + }, init (passport, conf) { passport.use('discord', new DiscordStrategy({ diff --git a/server/modules/authentication/dropbox.js b/server/modules/authentication/dropbox.js index 750a82e0..07cc43dc 100644 --- a/server/modules/authentication/dropbox.js +++ b/server/modules/authentication/dropbox.js @@ -10,7 +10,10 @@ module.exports = { key: 'dropbox', title: 'Dropbox', useForm: false, - props: ['clientId', 'clientSecret'], + props: { + clientId: String, + clientSecret: String + }, init (passport, conf) { passport.use('dropbox', new DropboxStrategy({ diff --git a/server/modules/authentication/facebook.js b/server/modules/authentication/facebook.js index 54aa7628..f3818fb5 100644 --- a/server/modules/authentication/facebook.js +++ b/server/modules/authentication/facebook.js @@ -10,7 +10,10 @@ module.exports = { key: 'facebook', title: 'Facebook', useForm: false, - props: ['clientId', 'clientSecret'], + props: { + clientId: String, + clientSecret: String + }, init (passport, conf) { passport.use('facebook', new FacebookStrategy({ diff --git a/server/modules/authentication/github.js b/server/modules/authentication/github.js index da618805..9f140953 100644 --- a/server/modules/authentication/github.js +++ b/server/modules/authentication/github.js @@ -10,7 +10,10 @@ module.exports = { key: 'github', title: 'GitHub', useForm: false, - props: ['clientId', 'clientSecret'], + props: { + clientId: String, + clientSecret: String + }, init (passport, conf) { passport.use('github', new GitHubStrategy({ diff --git a/server/modules/authentication/google.js b/server/modules/authentication/google.js index 100bb038..bffc8b0e 100644 --- a/server/modules/authentication/google.js +++ b/server/modules/authentication/google.js @@ -10,7 +10,10 @@ module.exports = { key: 'google', title: 'Google', useForm: false, - props: ['clientId', 'clientSecret'], + props: { + clientId: String, + clientSecret: String + }, init (passport, conf) { passport.use('google', new GoogleStrategy({ diff --git a/server/modules/authentication/ldap.js b/server/modules/authentication/ldap.js index c924baad..d55c8ac8 100644 --- a/server/modules/authentication/ldap.js +++ b/server/modules/authentication/ldap.js @@ -11,7 +11,30 @@ module.exports = { key: 'ldap', title: 'LDAP / Active Directory', useForm: true, - props: ['url', 'bindDn', 'bindCredentials', 'searchBase', 'searchFilter', 'tlsEnabled', 'tlsCertPath'], + props: { + url: { + type: String, + default: 'ldap://serverhost:389' + }, + bindDn: { + type: String, + default: `cn='root'` + }, + bindCredentials: String, + searchBase: { + type: String, + default: 'o=users,o=example.com' + }, + searchFilter: { + type: String, + default: '(uid={{username}})' + }, + tlsEnabled: { + type: Boolean, + default: false + }, + tlsCertPath: String + }, init (passport, conf) { passport.use('ldapauth', new LdapStrategy({ diff --git a/server/modules/authentication/local.js b/server/modules/authentication/local.js index 752c67d4..ec21550c 100644 --- a/server/modules/authentication/local.js +++ b/server/modules/authentication/local.js @@ -10,7 +10,7 @@ module.exports = { key: 'local', title: 'Local', useForm: true, - props: [], + props: {}, init (passport, conf) { passport.use('local', new LocalStrategy({ diff --git a/server/modules/authentication/microsoft.js b/server/modules/authentication/microsoft.js index cfe23760..28e943f6 100644 --- a/server/modules/authentication/microsoft.js +++ b/server/modules/authentication/microsoft.js @@ -10,7 +10,10 @@ module.exports = { key: 'microsoft', title: 'Microsoft Account', useForm: false, - props: ['clientId', 'clientSecret'], + props: { + clientId: String, + clientSecret: String + }, init (passport, conf) { passport.use('microsoft', new WindowsLiveStrategy({ diff --git a/server/modules/authentication/oauth2.js b/server/modules/authentication/oauth2.js index e8ad97ff..cbc03d27 100644 --- a/server/modules/authentication/oauth2.js +++ b/server/modules/authentication/oauth2.js @@ -10,7 +10,12 @@ module.exports = { key: 'oauth2', title: 'OAuth2', useForm: false, - props: ['clientId', 'clientSecret', 'authorizationURL', 'tokenURL'], + props: { + clientId: String, + clientSecret: String, + authorizationURL: String, + tokenURL: String + }, init (passport, conf) { passport.use('oauth2', new OAuth2Strategy({ diff --git a/server/modules/authentication/slack.js b/server/modules/authentication/slack.js index 76291352..bc710c70 100644 --- a/server/modules/authentication/slack.js +++ b/server/modules/authentication/slack.js @@ -10,7 +10,10 @@ module.exports = { key: 'slack', title: 'Slack', useForm: false, - props: ['clientId', 'clientSecret'], + props: { + clientId: String, + clientSecret: String + }, init (passport, conf) { passport.use('slack', new SlackStrategy({ diff --git a/server/modules/authentication/twitch.js b/server/modules/authentication/twitch.js index 952b318b..da28eacc 100644 --- a/server/modules/authentication/twitch.js +++ b/server/modules/authentication/twitch.js @@ -10,7 +10,10 @@ module.exports = { key: 'twitch', title: 'Twitch', useForm: false, - props: ['clientId', 'clientSecret'], + props: { + clientId: String, + clientSecret: String + }, init (passport, conf) { passport.use('twitch', new TwitchStrategy({ diff --git a/server/modules/storage/azure.js b/server/modules/storage/azure.js index d4992a88..8f0612f6 100644 --- a/server/modules/storage/azure.js +++ b/server/modules/storage/azure.js @@ -1,7 +1,11 @@ module.exports = { key: 'azure', title: 'Azure Blob Storage', - props: [], + props: { + accountName: String, + accountKey: String, + container: String + }, activate() { }, diff --git a/server/modules/storage/digitalocean.js b/server/modules/storage/digitalocean.js index 4b013329..d1ce8ef8 100644 --- a/server/modules/storage/digitalocean.js +++ b/server/modules/storage/digitalocean.js @@ -1,7 +1,15 @@ module.exports = { key: 'digitalocean', title: 'DigialOcean Spaces', - props: ['accessKeyId', 'accessSecret', 'region', 'bucket'], + props: { + accessKeyId: String, + accessSecret: String, + region: { + type: String, + default: 'nyc3' + }, + bucket: String + }, activate() { }, diff --git a/server/modules/storage/disk.js b/server/modules/storage/disk.js index 88920d4f..028ff02a 100644 --- a/server/modules/storage/disk.js +++ b/server/modules/storage/disk.js @@ -1,7 +1,9 @@ module.exports = { key: 'disk', title: 'Local FS', - props: ['path'], + props: { + path: String + }, activate() { }, diff --git a/server/modules/storage/dropbox.js b/server/modules/storage/dropbox.js index 3fc5b9fb..38b892d5 100644 --- a/server/modules/storage/dropbox.js +++ b/server/modules/storage/dropbox.js @@ -1,7 +1,10 @@ module.exports = { key: 'dropbox', title: 'Dropbox', - props: [], + props: { + appKey: String, + appSecret: String + }, activate() { }, diff --git a/server/modules/storage/gdrive.js b/server/modules/storage/gdrive.js index 7d03828a..5d63cd3c 100644 --- a/server/modules/storage/gdrive.js +++ b/server/modules/storage/gdrive.js @@ -1,7 +1,10 @@ module.exports = { key: 'gdrive', title: 'Google Drive', - props: [], + props: { + clientId: String, + clientSecret: String + }, activate() { }, diff --git a/server/modules/storage/git.js b/server/modules/storage/git.js index 0735104b..8c4a9454 100644 --- a/server/modules/storage/git.js +++ b/server/modules/storage/git.js @@ -1,7 +1,25 @@ module.exports = { key: 'git', title: 'Git', - props: [], + props: { + authType: { + type: String, + default: 'ssh', + enum: ['basic', 'ssh'] + }, + repoUrl: String, + branch: { + type: String, + default: 'master' + }, + verifySSL: { + type: Boolean, + default: true + }, + sshPrivateKeyPath: String, + basicUsername: String, + basicPassword: String + }, activate() { }, diff --git a/server/modules/storage/onedrive.js b/server/modules/storage/onedrive.js index 38dd9f0c..888bd777 100644 --- a/server/modules/storage/onedrive.js +++ b/server/modules/storage/onedrive.js @@ -1,7 +1,10 @@ module.exports = { key: 'onedrive', title: 'OneDrive', - props: [], + props: { + clientId: String, + clientSecret: String + }, activate() { }, diff --git a/server/modules/storage/s3.js b/server/modules/storage/s3.js index a5c0cd64..16fbcf0d 100644 --- a/server/modules/storage/s3.js +++ b/server/modules/storage/s3.js @@ -1,7 +1,12 @@ module.exports = { key: 's3', title: 'Amazon S3', - props: [], + props: { + accessKeyId: String, + accessSecret: String, + region: String, + bucket: String + }, activate() { }, diff --git a/server/modules/storage/scp.js b/server/modules/storage/scp.js index 476a5f06..be637a62 100644 --- a/server/modules/storage/scp.js +++ b/server/modules/storage/scp.js @@ -1,7 +1,19 @@ module.exports = { key: 'scp', title: 'SCP (SSH)', - props: [], + props: { + host: String, + port: { + type: Number, + default: 22 + }, + username: String, + privateKeyPath: String, + basePath: { + type: String, + default: '~' + } + }, activate() { }, diff --git a/yarn.lock b/yarn.lock index 2b415762..9dc4681a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,6 +2,10 @@ # yarn lockfile v1 +"@apollographql/graphql-playground-html@^1.6.0": + version "1.6.0" + resolved "https://registry.yarnpkg.com/@apollographql/graphql-playground-html/-/graphql-playground-html-1.6.0.tgz#15e1a042b97d6834e6d70b17cc73e1514fde9027" + "@babel/code-frame@7.0.0-beta.44": version "7.0.0-beta.44" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0-beta.44.tgz#2a02643368de80916162be70865c97774f3adbd9" @@ -230,7 +234,7 @@ dependencies: "@types/babel-types" "*" -"@types/body-parser@*": +"@types/body-parser@*", "@types/body-parser@1.17.0": version "1.17.0" resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.17.0.tgz#9f5c9d9bd04bb54be32d5eb9fc0d8c974e6cf58c" dependencies: @@ -259,6 +263,12 @@ "@types/keygrip" "*" "@types/node" "*" +"@types/cors@^2.8.4": + version "2.8.4" + resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.4.tgz#50991a759a29c0b89492751008c6af7a7c8267b0" + dependencies: + "@types/express" "*" + "@types/events@*": version "1.2.0" resolved "https://registry.yarnpkg.com/@types/events/-/events-1.2.0.tgz#81a6731ce4df43619e5c8c945383b3e62a89ea86" @@ -278,6 +288,14 @@ "@types/express-serve-static-core" "*" "@types/serve-static" "*" +"@types/express@4.16.0": + version "4.16.0" + resolved "https://registry.yarnpkg.com/@types/express/-/express-4.16.0.tgz#6d8bc42ccaa6f35cf29a2b7c3333cb47b5a32a19" + dependencies: + "@types/body-parser" "*" + "@types/express-serve-static-core" "*" + "@types/serve-static" "*" + "@types/graphql@0.10.2": version "0.10.2" resolved "https://registry.yarnpkg.com/@types/graphql/-/graphql-0.10.2.tgz#d7c79acbaa17453b6681c80c34b38fcb10c4c08c" @@ -645,6 +663,17 @@ "@webassemblyjs/wast-parser" "1.5.12" long "^3.2.0" +"@webpack-contrib/schema-utils@^1.0.0-beta.0": + version "1.0.0-beta.0" + resolved "https://registry.yarnpkg.com/@webpack-contrib/schema-utils/-/schema-utils-1.0.0-beta.0.tgz#bf9638c9464d177b48209e84209e23bee2eb4f65" + dependencies: + ajv "^6.1.0" + ajv-keywords "^3.1.0" + chalk "^2.3.2" + strip-ansi "^4.0.0" + text-table "^0.2.0" + webpack-log "^1.1.2" + abab@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/abab/-/abab-1.0.4.tgz#5faad9c2c07f60dd76770f71cf025b62a63cfd4e" @@ -875,6 +904,16 @@ apollo-datasource-rest@^2.0.0-rc.2: http-cache-semantics "^4.0.0" lru-cache "^4.1.3" +apollo-datasource-rest@^2.0.0-rc.6: + version "2.0.0-rc.6" + resolved "https://registry.yarnpkg.com/apollo-datasource-rest/-/apollo-datasource-rest-2.0.0-rc.6.tgz#b87007917a98a5ade4ec82f7187d81de62b8f5cb" + dependencies: + apollo-server-caching "^2.0.0-rc.6" + apollo-server-env "^2.0.0-rc.6" + apollo-server-errors "^2.0.0-rc.6" + http-cache-semantics "^4.0.0" + lru-cache "^4.1.3" + apollo-engine-binary-darwin@0.2018.6-20-gc0e4bb519: version "0.2018.6-20-gc0e4bb519" resolved "https://registry.yarnpkg.com/apollo-engine-binary-darwin/-/apollo-engine-binary-darwin-0.2018.6-20-gc0e4bb519.tgz#1458cf9af9adff1248730b9e7ea3408a778ff20e" @@ -901,6 +940,16 @@ apollo-engine-reporting@0.0.0-beta.14: lodash "^4.17.10" requestretry "^1.13.0" +apollo-engine-reporting@^0.0.0-rc.0: + version "0.0.0-rc.0" + resolved "https://registry.yarnpkg.com/apollo-engine-reporting/-/apollo-engine-reporting-0.0.0-rc.0.tgz#862942b7d0b669769421e49ad8f6ad70667cb226" + dependencies: + apollo-engine-reporting-protobuf "0.0.0-beta.7" + apollo-server-env "^2.0.0-rc.6" + async-retry "^1.2.1" + graphql-extensions "^0.1.0-rc.0" + lodash "^4.17.10" + apollo-engine@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/apollo-engine/-/apollo-engine-1.1.2.tgz#ef8465fe5234b3bfe034b7e96d37bc441b72a9cb" @@ -1015,6 +1064,10 @@ apollo-server-caching@^2.0.0-rc.2: version "2.0.0-rc.2" resolved "https://registry.yarnpkg.com/apollo-server-caching/-/apollo-server-caching-2.0.0-rc.2.tgz#71220f6f5ddbf0ee752bbf60773b89b427747cbd" +apollo-server-caching@^2.0.0-rc.6: + version "2.0.0-rc.6" + resolved "https://registry.yarnpkg.com/apollo-server-caching/-/apollo-server-caching-2.0.0-rc.6.tgz#31a672f52254ea399a84053e40c2b5c54e12296a" + apollo-server-core@^1.3.6: version "1.3.6" resolved "https://registry.yarnpkg.com/apollo-server-core/-/apollo-server-core-1.3.6.tgz#08636243c2de56fa8c267d68dd602cb1fbd323e3" @@ -1046,17 +1099,51 @@ apollo-server-core@^2.0.0-rc.2: subscriptions-transport-ws "^0.9.9" ws "^5.2.0" +apollo-server-core@^2.0.0-rc.5, apollo-server-core@^2.0.0-rc.6: + version "2.0.0-rc.6" + resolved "https://registry.yarnpkg.com/apollo-server-core/-/apollo-server-core-2.0.0-rc.6.tgz#fee27a6c733f1d1d36cc5913cff9d869470933f3" + dependencies: + "@types/ws" "^5.1.2" + apollo-cache-control "^0.1.1" + apollo-datasource-rest "^2.0.0-rc.6" + apollo-engine-reporting "^0.0.0-rc.0" + apollo-server-env "^2.0.0-rc.6" + apollo-server-errors "^2.0.0-rc.6" + apollo-tracing "^0.2.0-beta.1" + apollo-upload-server "^5.0.0" + graphql-extensions "^0.1.0-rc.0" + graphql-subscriptions "^0.5.8" + graphql-tag "^2.9.2" + graphql-tools "^3.0.4" + hash.js "^1.1.3" + keyv "^3.0.0" + lodash "^4.17.10" + quick-lru "^1.1.0" + subscriptions-transport-ws "^0.9.11" + ws "^5.2.0" + apollo-server-env@^2.0.0-rc.2: version "2.0.0-rc.2" resolved "https://registry.yarnpkg.com/apollo-server-env/-/apollo-server-env-2.0.0-rc.2.tgz#fdf25f34053b542e8d7779f6f1526b1c6ef1f7c7" dependencies: node-fetch "^2.1.2" +apollo-server-env@^2.0.0-rc.6: + version "2.0.0-rc.6" + resolved "https://registry.yarnpkg.com/apollo-server-env/-/apollo-server-env-2.0.0-rc.6.tgz#0c0da59a1bc99973d3c85d39f6ef8eea2fa242cb" + dependencies: + node-fetch "^2.1.2" + util.promisify "^1.0.0" + apollo-server-errors@^2.0.0-rc.2: version "2.0.0-rc.2" resolved "https://registry.yarnpkg.com/apollo-server-errors/-/apollo-server-errors-2.0.0-rc.2.tgz#168ef5f81e164505e71ff3119094a0b3b815e8aa" -apollo-server-express@2.0.0-rc.2, apollo-server-express@^2.0.0-rc.2: +apollo-server-errors@^2.0.0-rc.6: + version "2.0.0-rc.6" + resolved "https://registry.yarnpkg.com/apollo-server-errors/-/apollo-server-errors-2.0.0-rc.6.tgz#28bc420ddda040073b49c68c8604ae7bb9180ed6" + +apollo-server-express@2.0.0-rc.2: version "2.0.0-rc.2" resolved "https://registry.yarnpkg.com/apollo-server-express/-/apollo-server-express-2.0.0-rc.2.tgz#1a931cba64f301afb0fa50da43d7b00c24055b97" dependencies: @@ -1076,16 +1163,34 @@ apollo-server-express@^1.3.6: apollo-server-core "^1.3.6" apollo-server-module-graphiql "^1.3.4" +apollo-server-express@^2.0.0-rc.5: + version "2.0.0-rc.6" + resolved "https://registry.yarnpkg.com/apollo-server-express/-/apollo-server-express-2.0.0-rc.6.tgz#f461dff0832da4932bd7ebfd69f7d5feab3eaa46" + dependencies: + "@apollographql/graphql-playground-html" "^1.6.0" + "@types/accepts" "^1.3.5" + "@types/body-parser" "1.17.0" + "@types/cors" "^2.8.4" + "@types/express" "4.16.0" + accepts "^1.3.5" + apollo-server-core "^2.0.0-rc.6" + apollo-upload-server "^5.0.0" + body-parser "^1.18.3" + cors "^2.8.4" + graphql-subscriptions "^0.5.8" + graphql-tools "^3.0.4" + type-is "^1.6.16" + apollo-server-module-graphiql@^1.3.4: version "1.3.4" resolved "https://registry.yarnpkg.com/apollo-server-module-graphiql/-/apollo-server-module-graphiql-1.3.4.tgz#50399b7c51b7267d0c841529f5173e5fc7304de4" -apollo-server@2.0.0-rc.2: - version "2.0.0-rc.2" - resolved "https://registry.yarnpkg.com/apollo-server/-/apollo-server-2.0.0-rc.2.tgz#46fcbd0893c30952e599a8407daa65aa2153dcaf" +apollo-server@2.0.0-rc.5: + version "2.0.0-rc.5" + resolved "https://registry.yarnpkg.com/apollo-server/-/apollo-server-2.0.0-rc.5.tgz#aa9ea0c0da50936920f170cc304d75fba2673211" dependencies: - apollo-server-core "^2.0.0-rc.2" - apollo-server-express "^2.0.0-rc.2" + apollo-server-core "^2.0.0-rc.5" + apollo-server-express "^2.0.0-rc.5" express "^4.0.0" graphql-subscriptions "^0.5.8" @@ -1295,6 +1400,12 @@ async-listener@^0.6.0: semver "^5.3.0" shimmer "^1.1.0" +async-retry@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/async-retry/-/async-retry-1.2.1.tgz#308c6c4e1d91e63397a4676290334ae9bda7bcb1" + dependencies: + retry "0.10.1" + async@1.5, async@^1.4.0, async@^1.5, async@^1.5.2: version "1.5.2" resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" @@ -1323,15 +1434,15 @@ auto-load@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/auto-load/-/auto-load-3.0.0.tgz#f3c91d15120a32c89524b420d7283584c72088aa" -autoprefixer@8.6.3: - version "8.6.3" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-8.6.3.tgz#1d38a129e6a4582a565b6570d16f2d7d3de9cbf9" +autoprefixer@8.6.4, autoprefixer@^8.6.3: + version "8.6.4" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-8.6.4.tgz#6bf501de426a3b95973f5d237dbcc9181e9904d2" dependencies: browserslist "^3.2.8" - caniuse-lite "^1.0.30000856" + caniuse-lite "^1.0.30000859" normalize-range "^0.1.2" num2fraction "^1.2.2" - postcss "^6.0.22" + postcss "^6.0.23" postcss-value-parser "^3.2.3" autoprefixer@^6.3.1: @@ -1356,17 +1467,6 @@ autoprefixer@^7.1.1: postcss "^6.0.17" postcss-value-parser "^3.2.3" -autoprefixer@^8.5.0: - version "8.6.0" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-8.6.0.tgz#6da6b0791e15cb0ebf33c3f299414afd340672c0" - dependencies: - browserslist "^3.2.8" - caniuse-lite "^1.0.30000847" - normalize-range "^0.1.2" - num2fraction "^1.2.2" - postcss "^6.0.22" - postcss-value-parser "^3.2.3" - aws-sign2@~0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f" @@ -1592,12 +1692,12 @@ babel-helpers@^6.24.1: babel-runtime "^6.22.0" babel-template "^6.24.1" -babel-jest@23.0.1, babel-jest@^23.0.1: - version "23.0.1" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-23.0.1.tgz#bbad3bf523fb202da05ed0a6540b48c84eed13a6" +babel-jest@23.2.0, babel-jest@^23.2.0: + version "23.2.0" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-23.2.0.tgz#14a9d6a3f4122dfea6069d37085adf26a53a4dba" dependencies: babel-plugin-istanbul "^4.1.6" - babel-preset-jest "^23.0.1" + babel-preset-jest "^23.2.0" babel-literal-to-ast@^0.1.2: version "0.1.2" @@ -1645,9 +1745,9 @@ babel-plugin-istanbul@^4.1.6: istanbul-lib-instrument "^1.10.1" test-exclude "^4.2.1" -babel-plugin-jest-hoist@^23.0.1: - version "23.0.1" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-23.0.1.tgz#eaa11c964563aea9c21becef2bdf7853f7f3c148" +babel-plugin-jest-hoist@^23.2.0: + version "23.2.0" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-23.2.0.tgz#e61fae05a1ca8801aadee57a6d66b8cefaf44167" babel-plugin-lodash@3.3.4: version "3.3.4" @@ -1976,11 +2076,11 @@ babel-preset-env@1.7.0: invariant "^2.2.2" semver "^5.3.0" -babel-preset-jest@^23.0.1: - version "23.0.1" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-23.0.1.tgz#631cc545c6cf021943013bcaf22f45d87fe62198" +babel-preset-jest@^23.2.0: + version "23.2.0" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-23.2.0.tgz#8ec7a03a138f001a1a8fb1e8113652bf1a55da46" dependencies: - babel-plugin-jest-hoist "^23.0.1" + babel-plugin-jest-hoist "^23.2.0" babel-plugin-syntax-object-rest-spread "^6.13.0" babel-preset-stage-2@6.24.1: @@ -2272,9 +2372,9 @@ browser-process-hrtime@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-0.1.2.tgz#425d68a58d3447f02a04aa894187fce8af8b7b8e" -browser-resolve@^1.11.2: - version "1.11.2" - resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.2.tgz#8ff09b0a2c421718a1051c260b32e48f442938ce" +browser-resolve@^1.11.3: + version "1.11.3" + resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.3.tgz#9b7cbb3d0f510e4cb86bdbd796124d28b5890af6" dependencies: resolve "1.1.7" @@ -2578,13 +2678,13 @@ caniuse-db@^1.0.30000529, caniuse-db@^1.0.30000634, caniuse-db@^1.0.30000639: version "1.0.30000847" resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000847.tgz#ff4072a5468809fec0ae9ac3b4035ef891e5b144" -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000792, caniuse-lite@^1.0.30000805, caniuse-lite@^1.0.30000844, caniuse-lite@^1.0.30000847: +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000792, caniuse-lite@^1.0.30000805, caniuse-lite@^1.0.30000844: version "1.0.30000847" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000847.tgz#be77f439be29bbc57ae08004b1e470b653b1ec1d" -caniuse-lite@^1.0.30000856: - version "1.0.30000856" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000856.tgz#ecc16978135a6f219b138991eb62009d25ee8daa" +caniuse-lite@^1.0.30000859: + version "1.0.30000861" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000861.tgz#a32bb9607c34e4639b497ff37de746fc8a160410" capture-exit@^1.2.0: version "1.2.0" @@ -2635,7 +2735,7 @@ chalk@2.3.2, chalk@2.3.x: escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chalk@2.4.1, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.3.1, chalk@^2.4.0, chalk@^2.4.1: +chalk@2.4.1, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.3.1, chalk@^2.3.2, chalk@^2.4.0, chalk@^2.4.1: version "2.4.1" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e" dependencies: @@ -2907,6 +3007,10 @@ clone@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.1.tgz#d217d1e961118e3ac9a4b8bba3285553bf647cdb" +clorox@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/clorox/-/clorox-1.0.3.tgz#6fa63653f280c33d69f548fb14d239ddcfa1590d" + cluster-key-slot@^1.0.6: version "1.0.12" resolved "https://registry.yarnpkg.com/cluster-key-slot/-/cluster-key-slot-1.0.12.tgz#d5deff2a520717bc98313979b687309b2d368e29" @@ -3100,7 +3204,7 @@ concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" -concat-stream@^1.5.0: +concat-stream@^1.5.0, concat-stream@^1.5.2: version "1.6.2" resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" dependencies: @@ -3223,9 +3327,9 @@ copy-descriptor@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" -copy-webpack-plugin@4.5.1: - version "4.5.1" - resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-4.5.1.tgz#fc4f68f4add837cc5e13d111b20715793225d29c" +copy-webpack-plugin@4.5.2: + version "4.5.2" + resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-4.5.2.tgz#d53444a8fea2912d806e78937390ddd7e632ee5c" dependencies: cacache "^10.0.4" find-cache-dir "^1.0.0" @@ -3240,7 +3344,7 @@ core-js@^1.0.0, core-js@^1.1.1: version "1.2.7" resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636" -core-js@^2.4.0, core-js@^2.5.0, core-js@^2.5.3, core-js@^2.5.6: +core-js@^2.4.0, core-js@^2.5.0, core-js@^2.5.3, core-js@^2.5.6, core-js@^2.5.7: version "2.5.7" resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.7.tgz#f972608ff0cead68b841a16a932d0b183791814e" @@ -3663,6 +3767,12 @@ decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" +decamelize@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-2.0.0.tgz#656d7bbc8094c4c788ea53c5840908c9c7d063c7" + dependencies: + xregexp "4.0.0" + decode-uri-component@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" @@ -4133,6 +4243,14 @@ enhanced-resolve@^4.0.0: memory-fs "^0.4.0" tapable "^1.0.0" +enhanced-resolve@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz#41c7e0bfdfe74ac1ffe1e57ad6a5c6c9f3742a7f" + dependencies: + graceful-fs "^4.1.2" + memory-fs "^0.4.0" + tapable "^1.0.0" + entities@^1.1.1, "entities@~ 1.1.1", entities@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.1.tgz#6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0" @@ -4239,9 +4357,9 @@ eslint-module-utils@^2.2.0: debug "^2.6.8" pkg-dir "^1.0.0" -eslint-plugin-import@2.12.0: - version "2.12.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.12.0.tgz#dad31781292d6664b25317fd049d2e2b2f02205d" +eslint-plugin-import@2.13.0: + version "2.13.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.13.0.tgz#df24f241175e312d91662dc91ca84064caec14ed" dependencies: contains-path "^0.1.0" debug "^2.6.8" @@ -4295,9 +4413,9 @@ eslint-visitor-keys@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#3f3180fb2e291017716acb4c9d6d5b5c34a6a81d" -eslint@5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-5.0.0.tgz#3576704f7377aca072da69c00862277c5fe57153" +eslint@5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-5.0.1.tgz#109b90ab7f7a736f54e0f341c8bb9d09777494c3" dependencies: ajv "^6.5.0" babel-code-frame "^6.26.0" @@ -4503,15 +4621,15 @@ expand-tilde@^2.0.0, expand-tilde@^2.0.2: dependencies: homedir-polyfill "^1.0.1" -expect@^23.1.0: - version "23.1.0" - resolved "https://registry.yarnpkg.com/expect/-/expect-23.1.0.tgz#bfdfd57a2a20170d875999ee9787cc71f01c205f" +expect@^23.2.0: + version "23.2.0" + resolved "https://registry.yarnpkg.com/expect/-/expect-23.2.0.tgz#53a7e135e36fe27e75867b1178ff08aaacc2b0dd" dependencies: ansi-styles "^3.2.0" - jest-diff "^23.0.1" + jest-diff "^23.2.0" jest-get-type "^22.1.0" - jest-matcher-utils "^23.0.1" - jest-message-util "^23.1.0" + jest-matcher-utils "^23.2.0" + jest-message-util "^23.2.0" jest-regex-util "^23.0.0" express-brute-redis@0.0.1: @@ -4853,6 +4971,12 @@ find-up@^2.0.0, find-up@^2.1.0: dependencies: locate-path "^2.0.0" +find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + dependencies: + locate-path "^3.0.0" + findup-sync@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-2.0.0.tgz#9326b1488c22d1a6088650a86901b2d9a90a2cbc" @@ -5358,6 +5482,14 @@ graphql-extensions@^0.0.x, graphql-extensions@~0.0.9: core-js "^2.5.3" source-map-support "^0.5.1" +graphql-extensions@^0.1.0-rc.0: + version "0.1.0-rc.0" + resolved "https://registry.yarnpkg.com/graphql-extensions/-/graphql-extensions-0.1.0-rc.0.tgz#150361fe0624cde814169af83e2a762af36de326" + dependencies: + apollo-server-env "^2.0.0-rc.6" + core-js "^2.5.7" + source-map-support "^0.5.6" + graphql-import@^0.1.7: version "0.1.9" resolved "https://registry.yarnpkg.com/graphql-import/-/graphql-import-0.1.9.tgz#9161f4f7ea92337b60fd40e22e64d3a68c212729" @@ -5451,7 +5583,17 @@ graphql-tag@^2.0.0, graphql-tag@^2.4.2, graphql-tag@^2.9.2: version "2.9.2" resolved "https://registry.yarnpkg.com/graphql-tag/-/graphql-tag-2.9.2.tgz#2f60a5a981375f430bf1e6e95992427dc18af686" -graphql-tools@3.0.2, graphql-tools@^3.0.2: +graphql-tools@3.0.4, graphql-tools@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/graphql-tools/-/graphql-tools-3.0.4.tgz#d08aa75db111d704cba05d92afd67ec5d1dc6b24" + dependencies: + apollo-link "1.2.1" + apollo-utilities "^1.0.1" + deprecated-decorator "^0.1.6" + iterall "^1.1.3" + uuid "^3.1.0" + +graphql-tools@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/graphql-tools/-/graphql-tools-3.0.2.tgz#fb79821c23b0f5d11d842c4d0c15000d856c6c8c" dependencies: @@ -5814,9 +5956,9 @@ https-browserify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" -i18next-express-middleware@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/i18next-express-middleware/-/i18next-express-middleware-1.1.1.tgz#9204f28c8800ac3bff87fbee01945367956f349c" +i18next-express-middleware@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/i18next-express-middleware/-/i18next-express-middleware-1.2.0.tgz#1622e79110806ea6132de30476394d56b2812fc7" dependencies: cookies "0.7.1" @@ -6525,15 +6667,15 @@ javascript-stringify@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/javascript-stringify/-/javascript-stringify-1.6.0.tgz#142d111f3a6e3dae8f4a9afd77d45855b5a9cce3" -jest-changed-files@^23.0.1: - version "23.0.1" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-23.0.1.tgz#f79572d0720844ea5df84c2a448e862c2254f60c" +jest-changed-files@^23.2.0: + version "23.2.0" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-23.2.0.tgz#a145a6e4b66d0129fc7c99cee134dc937a643d9c" dependencies: throat "^4.0.0" -jest-cli@^23.1.0: - version "23.1.0" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-23.1.0.tgz#eb8bdd4ce0d15250892e31ad9b69bc99d2a8f6bf" +jest-cli@^23.2.0: + version "23.2.0" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-23.2.0.tgz#3b543a3da5145dd8937931017282379fc696c45b" dependencies: ansi-escapes "^3.0.0" chalk "^2.0.1" @@ -6546,23 +6688,24 @@ jest-cli@^23.1.0: istanbul-lib-coverage "^1.2.0" istanbul-lib-instrument "^1.10.1" istanbul-lib-source-maps "^1.2.4" - jest-changed-files "^23.0.1" - jest-config "^23.1.0" - jest-environment-jsdom "^23.1.0" + jest-changed-files "^23.2.0" + jest-config "^23.2.0" + jest-environment-jsdom "^23.2.0" jest-get-type "^22.1.0" - jest-haste-map "^23.1.0" - jest-message-util "^23.1.0" + jest-haste-map "^23.2.0" + jest-message-util "^23.2.0" jest-regex-util "^23.0.0" - jest-resolve-dependencies "^23.0.1" - jest-runner "^23.1.0" - jest-runtime "^23.1.0" - jest-snapshot "^23.0.1" - jest-util "^23.1.0" - jest-validate "^23.0.1" - jest-watcher "^23.1.0" - jest-worker "^23.0.1" - micromatch "^2.3.11" + jest-resolve-dependencies "^23.2.0" + jest-runner "^23.2.0" + jest-runtime "^23.2.0" + jest-snapshot "^23.2.0" + jest-util "^23.2.0" + jest-validate "^23.2.0" + jest-watcher "^23.2.0" + jest-worker "^23.2.0" + micromatch "^3.1.10" node-notifier "^5.2.1" + prompts "^0.1.9" realpath-native "^1.0.0" rimraf "^2.5.4" slash "^1.0.0" @@ -6571,92 +6714,92 @@ jest-cli@^23.1.0: which "^1.2.12" yargs "^11.0.0" -jest-config@^23.1.0: - version "23.1.0" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-23.1.0.tgz#708ca0f431d356ee424fb4895d3308006bdd8241" +jest-config@^23.2.0: + version "23.2.0" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-23.2.0.tgz#d2fb556fd5a2a19c39eb56d139dcca5dad2a1c88" dependencies: babel-core "^6.0.0" - babel-jest "^23.0.1" + babel-jest "^23.2.0" chalk "^2.0.1" glob "^7.1.1" - jest-environment-jsdom "^23.1.0" - jest-environment-node "^23.1.0" + jest-environment-jsdom "^23.2.0" + jest-environment-node "^23.2.0" jest-get-type "^22.1.0" - jest-jasmine2 "^23.1.0" + jest-jasmine2 "^23.2.0" jest-regex-util "^23.0.0" - jest-resolve "^23.1.0" - jest-util "^23.1.0" - jest-validate "^23.0.1" - pretty-format "^23.0.1" + jest-resolve "^23.2.0" + jest-util "^23.2.0" + jest-validate "^23.2.0" + pretty-format "^23.2.0" -jest-diff@^23.0.1: - version "23.0.1" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-23.0.1.tgz#3d49137cee12c320a4b4d2b4a6fa6e82d491a16a" +jest-diff@^23.2.0: + version "23.2.0" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-23.2.0.tgz#9f2cf4b51e12c791550200abc16b47130af1062a" dependencies: chalk "^2.0.1" diff "^3.2.0" jest-get-type "^22.1.0" - pretty-format "^23.0.1" + pretty-format "^23.2.0" -jest-docblock@^23.0.1: - version "23.0.1" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-23.0.1.tgz#deddd18333be5dc2415260a04ef3fce9276b5725" +jest-docblock@^23.2.0: + version "23.2.0" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-23.2.0.tgz#f085e1f18548d99fdd69b20207e6fd55d91383a7" dependencies: detect-newline "^2.1.0" -jest-each@^23.1.0: - version "23.1.0" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-23.1.0.tgz#16146b592c354867a5ae5e13cdf15c6c65b696c6" +jest-each@^23.2.0: + version "23.2.0" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-23.2.0.tgz#a400f81c857083f50c4f53399b109f12023fb19d" dependencies: chalk "^2.0.1" - pretty-format "^23.0.1" + pretty-format "^23.2.0" -jest-environment-jsdom@^23.1.0: - version "23.1.0" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-23.1.0.tgz#85929914e23bed3577dac9755f4106d0697c479c" +jest-environment-jsdom@^23.2.0: + version "23.2.0" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-23.2.0.tgz#3634603a08a975b0ca8a658320f56a54a8e04558" dependencies: - jest-mock "^23.1.0" - jest-util "^23.1.0" + jest-mock "^23.2.0" + jest-util "^23.2.0" jsdom "^11.5.1" -jest-environment-node@^23.1.0: - version "23.1.0" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-23.1.0.tgz#452c0bf949cfcbbacda1e1762eeed70bc784c7d5" +jest-environment-node@^23.2.0: + version "23.2.0" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-23.2.0.tgz#b6fe41372e382093bb6f3d9bdf6c1c4ec0a50f18" dependencies: - jest-mock "^23.1.0" - jest-util "^23.1.0" + jest-mock "^23.2.0" + jest-util "^23.2.0" jest-get-type@^22.1.0: version "22.4.3" resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-22.4.3.tgz#e3a8504d8479342dd4420236b322869f18900ce4" -jest-haste-map@^23.1.0: - version "23.1.0" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-23.1.0.tgz#18e6c7d5a8d27136f91b7d9852f85de0c7074c49" +jest-haste-map@^23.2.0: + version "23.2.0" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-23.2.0.tgz#d10cbac007c695948c8ef1821a2b2ed2d4f2d4d8" dependencies: fb-watchman "^2.0.0" graceful-fs "^4.1.11" - jest-docblock "^23.0.1" + jest-docblock "^23.2.0" jest-serializer "^23.0.1" - jest-worker "^23.0.1" - micromatch "^2.3.11" + jest-worker "^23.2.0" + micromatch "^3.1.10" sane "^2.0.0" -jest-jasmine2@^23.1.0: - version "23.1.0" - resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-23.1.0.tgz#4afab31729b654ddcd2b074add849396f13b30b8" +jest-jasmine2@^23.2.0: + version "23.2.0" + resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-23.2.0.tgz#aa670cdb1e4d5f8ec774c94dda5e105fe33d8bb4" dependencies: chalk "^2.0.1" co "^4.6.0" - expect "^23.1.0" + expect "^23.2.0" is-generator-fn "^1.0.0" - jest-diff "^23.0.1" - jest-each "^23.1.0" - jest-matcher-utils "^23.0.1" - jest-message-util "^23.1.0" - jest-snapshot "^23.0.1" - jest-util "^23.1.0" - pretty-format "^23.0.1" + jest-diff "^23.2.0" + jest-each "^23.2.0" + jest-matcher-utils "^23.2.0" + jest-message-util "^23.2.0" + jest-snapshot "^23.2.0" + jest-util "^23.2.0" + pretty-format "^23.2.0" jest-junit@5.1.0: version "5.1.0" @@ -6667,74 +6810,74 @@ jest-junit@5.1.0: strip-ansi "^4.0.0" xml "^1.0.1" -jest-leak-detector@^23.0.1: - version "23.0.1" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-23.0.1.tgz#9dba07505ac3495c39d3ec09ac1e564599e861a0" +jest-leak-detector@^23.2.0: + version "23.2.0" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-23.2.0.tgz#c289d961dc638f14357d4ef96e0431ecc1aa377d" dependencies: - pretty-format "^23.0.1" + pretty-format "^23.2.0" -jest-matcher-utils@^23.0.1: - version "23.0.1" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-23.0.1.tgz#0c6c0daedf9833c2a7f36236069efecb4c3f6e5f" +jest-matcher-utils@^23.2.0: + version "23.2.0" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-23.2.0.tgz#4d4981f23213e939e3cedf23dc34c747b5ae1913" dependencies: chalk "^2.0.1" jest-get-type "^22.1.0" - pretty-format "^23.0.1" + pretty-format "^23.2.0" -jest-message-util@^23.1.0: - version "23.1.0" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-23.1.0.tgz#9a809ba487ecac5ce511d4e698ee3b5ee2461ea9" +jest-message-util@^23.2.0: + version "23.2.0" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-23.2.0.tgz#591e8148fff69cf89b0414809c721756ebefe744" dependencies: "@babel/code-frame" "^7.0.0-beta.35" chalk "^2.0.1" - micromatch "^2.3.11" + micromatch "^3.1.10" slash "^1.0.0" stack-utils "^1.0.1" -jest-mock@^23.1.0: - version "23.1.0" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-23.1.0.tgz#a381c31b121ab1f60c462a2dadb7b86dcccac487" +jest-mock@^23.2.0: + version "23.2.0" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-23.2.0.tgz#ad1c60f29e8719d47c26e1138098b6d18b261134" jest-regex-util@^23.0.0: version "23.0.0" resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-23.0.0.tgz#dd5c1fde0c46f4371314cf10f7a751a23f4e8f76" -jest-resolve-dependencies@^23.0.1: - version "23.0.1" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-23.0.1.tgz#d01a10ddad9152c4cecdf5eac2b88571c4b6a64d" +jest-resolve-dependencies@^23.2.0: + version "23.2.0" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-23.2.0.tgz#6df8d5709c6406639cd07f54bff074e01b5c0458" dependencies: jest-regex-util "^23.0.0" - jest-snapshot "^23.0.1" + jest-snapshot "^23.2.0" -jest-resolve@^23.1.0: - version "23.1.0" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-23.1.0.tgz#b9e316eecebd6f00bc50a3960d1527bae65792d2" +jest-resolve@^23.2.0: + version "23.2.0" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-23.2.0.tgz#a0790ad5a3b99002ab4dbfcbf8d9e2d6a69b3d99" dependencies: - browser-resolve "^1.11.2" + browser-resolve "^1.11.3" chalk "^2.0.1" realpath-native "^1.0.0" -jest-runner@^23.1.0: - version "23.1.0" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-23.1.0.tgz#fa20a933fff731a5432b3561e7f6426594fa29b5" +jest-runner@^23.2.0: + version "23.2.0" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-23.2.0.tgz#0d91967ea82f72b0c705910926086d2055ce75af" dependencies: exit "^0.1.2" graceful-fs "^4.1.11" - jest-config "^23.1.0" - jest-docblock "^23.0.1" - jest-haste-map "^23.1.0" - jest-jasmine2 "^23.1.0" - jest-leak-detector "^23.0.1" - jest-message-util "^23.1.0" - jest-runtime "^23.1.0" - jest-util "^23.1.0" - jest-worker "^23.0.1" + jest-config "^23.2.0" + jest-docblock "^23.2.0" + jest-haste-map "^23.2.0" + jest-jasmine2 "^23.2.0" + jest-leak-detector "^23.2.0" + jest-message-util "^23.2.0" + jest-runtime "^23.2.0" + jest-util "^23.2.0" + jest-worker "^23.2.0" source-map-support "^0.5.6" throat "^4.0.0" -jest-runtime@^23.1.0: - version "23.1.0" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-23.1.0.tgz#b4ae0e87259ecacfd4a884b639db07cf4dd620af" +jest-runtime@^23.2.0: + version "23.2.0" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-23.2.0.tgz#62dcb01766a1c4c64696dc090209e76ce1aadcbc" dependencies: babel-core "^6.0.0" babel-plugin-istanbul "^4.1.6" @@ -6743,15 +6886,15 @@ jest-runtime@^23.1.0: exit "^0.1.2" fast-json-stable-stringify "^2.0.0" graceful-fs "^4.1.11" - jest-config "^23.1.0" - jest-haste-map "^23.1.0" - jest-message-util "^23.1.0" + jest-config "^23.2.0" + jest-haste-map "^23.2.0" + jest-message-util "^23.2.0" jest-regex-util "^23.0.0" - jest-resolve "^23.1.0" - jest-snapshot "^23.0.1" - jest-util "^23.1.0" - jest-validate "^23.0.1" - micromatch "^2.3.11" + jest-resolve "^23.2.0" + jest-snapshot "^23.2.0" + jest-util "^23.2.0" + jest-validate "^23.2.0" + micromatch "^3.1.10" realpath-native "^1.0.0" slash "^1.0.0" strip-bom "3.0.0" @@ -6762,26 +6905,26 @@ jest-serializer@^23.0.1: version "23.0.1" resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-23.0.1.tgz#a3776aeb311e90fe83fab9e533e85102bd164165" -jest-snapshot@^23.0.1: - version "23.0.1" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-23.0.1.tgz#6674fa19b9eb69a99cabecd415bddc42d6af3e7e" +jest-snapshot@^23.2.0: + version "23.2.0" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-23.2.0.tgz#c7a3d017177bbad60c8a595869cf90a8782e6a7e" dependencies: chalk "^2.0.1" - jest-diff "^23.0.1" - jest-matcher-utils "^23.0.1" + jest-diff "^23.2.0" + jest-matcher-utils "^23.2.0" mkdirp "^0.5.1" natural-compare "^1.4.0" - pretty-format "^23.0.1" + pretty-format "^23.2.0" -jest-util@^23.1.0: - version "23.1.0" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-23.1.0.tgz#c0251baf34644c6dd2fea78a962f4263ac55772d" +jest-util@^23.2.0: + version "23.2.0" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-23.2.0.tgz#62b770757696d96e094a04b8f1c373ca50a5ab2e" dependencies: callsites "^2.0.0" chalk "^2.0.1" graceful-fs "^4.1.11" is-ci "^1.0.10" - jest-message-util "^23.1.0" + jest-message-util "^23.2.0" mkdirp "^0.5.1" slash "^1.0.0" source-map "^0.6.0" @@ -6795,26 +6938,35 @@ jest-validate@^23.0.1: leven "^2.1.0" pretty-format "^23.0.1" -jest-watcher@^23.1.0: - version "23.1.0" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-23.1.0.tgz#a8d5842e38d9fb4afff823df6abb42a58ae6cdbd" +jest-validate@^23.2.0: + version "23.2.0" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-23.2.0.tgz#67c8b909e11af1701765238894c67ac3291b195e" + dependencies: + chalk "^2.0.1" + jest-get-type "^22.1.0" + leven "^2.1.0" + pretty-format "^23.2.0" + +jest-watcher@^23.2.0: + version "23.2.0" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-23.2.0.tgz#678e852896e919e9d9a0eb4b8baf1ae279620ea9" dependencies: ansi-escapes "^3.0.0" chalk "^2.0.1" string-length "^2.0.0" -jest-worker@^23.0.1: - version "23.0.1" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-23.0.1.tgz#9e649dd963ff4046026f91c4017f039a6aa4a7bc" +jest-worker@^23.2.0: + version "23.2.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-23.2.0.tgz#faf706a8da36fae60eb26957257fa7b5d8ea02b9" dependencies: merge-stream "^1.0.1" -jest@23.1.0: - version "23.1.0" - resolved "https://registry.yarnpkg.com/jest/-/jest-23.1.0.tgz#bbb7f893100a11a742dd8bd0d047a54b0968ad1a" +jest@23.2.0: + version "23.2.0" + resolved "https://registry.yarnpkg.com/jest/-/jest-23.2.0.tgz#828bf31a096d45dcf06824d1ea03013af7bcfc20" dependencies: import-local "^1.0.0" - jest-cli "^23.1.0" + jest-cli "^23.2.0" joi@^12.0.0: version "12.0.0" @@ -7055,9 +7207,9 @@ klaw@2.1.1: dependencies: graceful-fs "^4.1.9" -knex@0.14.6: - version "0.14.6" - resolved "https://registry.yarnpkg.com/knex/-/knex-0.14.6.tgz#ad57c4ef8fa1b51ebc8c37c2c9b483f6fb34e41e" +knex@0.15.0: + version "0.15.0" + resolved "https://registry.yarnpkg.com/knex/-/knex-0.15.0.tgz#cc9bca03aab163cbe4a709ecee2fd0215099e55d" dependencies: babel-runtime "^6.26.0" bluebird "^3.5.1" @@ -7067,12 +7219,10 @@ knex@0.14.6: inherits "~2.0.3" interpret "^1.1.0" liftoff "2.5.0" - lodash "^4.17.5" + lodash "^4.17.10" minimist "1.2.0" mkdirp "^0.5.1" pg-connection-string "2.0.0" - readable-stream "2.3.6" - safe-buffer "^5.1.1" tarn "^1.1.4" tildify "1.2.0" uuid "^3.2.1" @@ -7235,6 +7385,13 @@ locate-path@^2.0.0: p-locate "^2.0.0" path-exists "^3.0.0" +locate-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" + dependencies: + p-locate "^3.0.0" + path-exists "^3.0.0" + lodash-es@^4.17.5, lodash-es@^4.2.1: version "4.17.10" resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.10.tgz#62cd7104cdf5dd87f235a837f0ede0e8e5117e05" @@ -7724,7 +7881,7 @@ methods@^1.1.1, methods@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" -micromatch@^2.1.5, micromatch@^2.3.11: +micromatch@^2.1.5: version "2.3.11" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" dependencies: @@ -7789,10 +7946,11 @@ mimic-fn@^1.0.0: version "1.2.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" -mini-css-extract-plugin@0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.4.0.tgz#ff3bf08bee96e618e177c16ca6131bfecef707f9" +mini-css-extract-plugin@0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.4.1.tgz#d2bcf77bb2596b8e4bd9257e43d3f9164c2e86cb" dependencies: + "@webpack-contrib/schema-utils" "^1.0.0-beta.0" loader-utils "^1.1.0" webpack-sources "^1.1.0" @@ -7890,20 +8048,20 @@ moment@2.22.2, "moment@>= 2.9.0", moment@^2.10.2, moment@^2.10.6, moment@^2.11.1 version "2.22.2" resolved "https://registry.yarnpkg.com/moment/-/moment-2.22.2.tgz#3c257f9839fc0e93ff53149632239eb90783ff66" -mongodb-core@3.1.0-beta4: - version "3.1.0-beta4" - resolved "https://registry.yarnpkg.com/mongodb-core/-/mongodb-core-3.1.0-beta4.tgz#44813da6ee0a61d26f0d523207cfba8ca32e59fc" +mongodb-core@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/mongodb-core/-/mongodb-core-3.1.0.tgz#af91f36fd560ed785f4e61e694432df4d3698aad" dependencies: bson "~1.0.4" require_optional "^1.0.1" optionalDependencies: saslprep "^1.0.0" -mongodb@3.1.0-beta4: - version "3.1.0-beta4" - resolved "https://registry.yarnpkg.com/mongodb/-/mongodb-3.1.0-beta4.tgz#922cb05c37d04a51ea783569743ef2a893585bfe" +mongodb@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/mongodb/-/mongodb-3.1.0.tgz#20cd836381a4d8a6b1c5a194bb9c8dde852163bb" dependencies: - mongodb-core "3.1.0-beta4" + mongodb-core "3.1.0" move-concurrently@^1.0.1: version "1.0.1" @@ -7932,13 +8090,13 @@ mssql@4.1.0: generic-pool "^3.1.7" tedious "^2.0.0" -multer@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/multer/-/multer-1.3.0.tgz#092b2670f6846fa4914965efc8cf94c20fec6cd2" +multer@1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/multer/-/multer-1.3.1.tgz#c3fb3b35f50c7eefe873532f90d3dde02ce6e040" dependencies: append-field "^0.1.0" busboy "^0.2.11" - concat-stream "^1.5.0" + concat-stream "^1.5.2" mkdirp "^0.5.1" object-assign "^3.0.0" on-finished "^2.3.0" @@ -7980,14 +8138,10 @@ named-placeholders@1.1.1: dependencies: lru-cache "2.5.0" -nan@^2.10.0, nan@^2.9.2: +nan@^2.10.0, nan@^2.9.2, nan@~2.10.0: version "2.10.0" resolved "https://registry.yarnpkg.com/nan/-/nan-2.10.0.tgz#96d0cd610ebd58d4b4de9cc0c6828cda99c7548f" -nan@~2.9.2: - version "2.9.2" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.9.2.tgz#f564d75f5f8f36a6d9456cca7a6c4fe488ab7866" - nanomatch@^1.2.9: version "1.2.9" resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.9.tgz#879f7150cb2dab7a471259066c104eee6e0fa7c2" @@ -8151,9 +8305,9 @@ node-pre-gyp@^0.10.0: semver "^5.3.0" tar "^4" -node-pre-gyp@~0.9.0: - version "0.9.1" - resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.9.1.tgz#f11c07516dd92f87199dbc7e1838eab7cd56c9e0" +node-pre-gyp@~0.10.1: + version "0.10.2" + resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.10.2.tgz#e8945c20ef6795a20aac2b44f036eb13cf5146e3" dependencies: detect-libc "^1.0.2" mkdirp "^0.5.1" @@ -8161,7 +8315,7 @@ node-pre-gyp@~0.9.0: nopt "^4.0.1" npm-packlist "^1.1.6" npmlog "^4.0.2" - rc "^1.1.7" + rc "^1.2.7" rimraf "^2.6.1" semver "^5.3.0" tar "^4" @@ -8474,9 +8628,9 @@ optimist@^0.6.1: minimist "~0.0.1" wordwrap "~0.0.2" -optimize-css-assets-webpack-plugin@4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-4.0.2.tgz#813d511d20fe5d9a605458441ed97074d79c1122" +optimize-css-assets-webpack-plugin@4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-4.0.3.tgz#4f714e276b279700892c4a6202b7e22812d6f683" dependencies: cssnano "^3.10.0" last-call-webpack-plugin "^3.0.0" @@ -8563,16 +8717,32 @@ p-limit@^1.0.0, p-limit@^1.1.0: dependencies: p-try "^1.0.0" +p-limit@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.0.0.tgz#e624ed54ee8c460a778b3c9f3670496ff8a57aec" + dependencies: + p-try "^2.0.0" + p-locate@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" dependencies: p-limit "^1.1.0" +p-locate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" + dependencies: + p-limit "^2.0.0" + p-try@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" +p-try@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.0.0.tgz#85080bb87c64688fa47996fe8f7dfbe8211760b1" + package-json@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/package-json/-/package-json-4.0.1.tgz#8869a0401253661c4c4ca3da6c2121ed555f5eed" @@ -9105,11 +9275,11 @@ postcss-attribute-case-insensitive@^2.0.0: postcss "^6.0.0" postcss-selector-parser "^2.2.3" -postcss-attribute-case-insensitive@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-3.0.0.tgz#03ec32ed221ed0a184fae26a99fea82c7de1a3b9" +postcss-attribute-case-insensitive@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-3.0.1.tgz#efd2c40b5d3d27dfab5678073bf652f76eaf4352" dependencies: - postcss "^6.0.22" + postcss "^6.0.23" postcss-selector-parser "^4.0.0" postcss-calc@^5.2.0: @@ -9655,11 +9825,11 @@ postcss-nesting@^4.0.1: dependencies: postcss "^6.0.11" -postcss-nesting@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/postcss-nesting/-/postcss-nesting-5.0.0.tgz#973e3a7dc6426543affc0b0beb367c3b2a8d9923" +postcss-nesting@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-nesting/-/postcss-nesting-6.0.0.tgz#4c45276a065765ec063efe1e4daf75c131518991" dependencies: - postcss "^6.0.21" + postcss "^6.0.22" postcss-normalize-charset@^1.1.0: version "1.1.1" @@ -9781,16 +9951,16 @@ postcss-place@^3.0.1: postcss "^6.0.22" postcss-values-parser "^1.5.0" -postcss-preset-env@5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-preset-env/-/postcss-preset-env-5.1.0.tgz#cc4dabd24fd39d2f2a78655b876debebff94f07c" +postcss-preset-env@5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/postcss-preset-env/-/postcss-preset-env-5.2.1.tgz#298fd5a7a6d323e025bd554fc31fe5e1003875c8" dependencies: - autoprefixer "^8.5.0" + autoprefixer "^8.6.3" browserslist "^3.2.8" - caniuse-lite "^1.0.30000844" + caniuse-lite "^1.0.30000859" cssdb "^3.1.0" - postcss "^6.0.22" - postcss-attribute-case-insensitive "^3.0.0" + postcss "^6.0.23" + postcss-attribute-case-insensitive "^3.0.1" postcss-color-functional-notation "^1.0.1" postcss-color-hex-alpha "^3.0.0" postcss-color-mod-function "^2.4.2" @@ -9810,7 +9980,7 @@ postcss-preset-env@5.1.0: postcss-lab-function "^1.0.1" postcss-logical "^1.1.1" postcss-media-minmax "^3.0.0" - postcss-nesting "^5.0.0" + postcss-nesting "^6.0.0" postcss-overflow-shorthand "^1.0.1" postcss-page-break "^1.0.0" postcss-place "^3.0.1" @@ -10002,6 +10172,14 @@ postcss@^6.0, postcss@^6.0.0, postcss@^6.0.1, postcss@^6.0.11, postcss@^6.0.14, source-map "^0.6.1" supports-color "^5.4.0" +postcss@^6.0.23: + version "6.0.23" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.23.tgz#61c82cc328ac60e677645f979054eb98bc0e3324" + dependencies: + chalk "^2.4.1" + source-map "^0.6.1" + supports-color "^5.4.0" + postgres-array@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/postgres-array/-/postgres-array-1.0.2.tgz#8e0b32eb03bf77a5c0a7851e0441c169a256a238" @@ -10054,6 +10232,13 @@ pretty-format@^23.0.1: ansi-regex "^3.0.0" ansi-styles "^3.2.0" +pretty-format@^23.2.0: + version "23.2.0" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-23.2.0.tgz#3b0aaa63c018a53583373c1cb3a5d96cc5e83017" + dependencies: + ansi-regex "^3.0.0" + ansi-styles "^3.2.0" + private@^0.1.6, private@^0.1.8, private@~0.1.5: version "0.1.8" resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" @@ -10090,6 +10275,13 @@ promptly@2.2.0: dependencies: read "^1.0.4" +prompts@^0.1.9: + version "0.1.10" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-0.1.10.tgz#832cbf6116ecb121d6884e84643bb2cf92b3ed2c" + dependencies: + clorox "^1.0.3" + sisteransi "^0.1.1" + prop-types@^15.5.10, prop-types@^15.5.4, prop-types@^15.6.0, prop-types@^15.6.1: version "15.6.1" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.6.1.tgz#36644453564255ddda391191fb3a125cbdf654ca" @@ -10421,7 +10613,7 @@ raw-loader@0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/raw-loader/-/raw-loader-0.5.1.tgz#0c3d0beaed8a01c966d9787bf778281252a979aa" -rc@^1.0.1, rc@^1.1.6, rc@^1.1.7: +rc@^1.0.1, rc@^1.1.6, rc@^1.1.7, rc@^1.2.7: version "1.2.8" resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" dependencies: @@ -10554,7 +10746,7 @@ read@^1.0.4: dependencies: mute-stream "~0.0.4" -"readable-stream@1 || 2", readable-stream@2.3.6, readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.2.6, readable-stream@^2.3.0, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.6: +"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.2.6, readable-stream@^2.3.0, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.6: version "2.3.6" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" dependencies: @@ -10984,6 +11176,10 @@ ret@~0.1.10: version "0.1.15" resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" +retry@0.10.1: + version "0.10.1" + resolved "https://registry.yarnpkg.com/retry/-/retry-0.10.1.tgz#e76388d217992c252750241d3d3956fed98d8ff4" + retry@0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/retry/-/retry-0.6.0.tgz#1c010713279a6fd1e8def28af0c3ff1871caa537" @@ -11353,6 +11549,10 @@ simple-swizzle@^0.2.2: dependencies: is-arrayish "^0.3.1" +sisteransi@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-0.1.1.tgz#5431447d5f7d1675aac667ccd0b865a4994cb3ce" + slash@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" @@ -11501,12 +11701,12 @@ sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" -sqlite3@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/sqlite3/-/sqlite3-4.0.0.tgz#cc0e093ab51873f50d9dfc4126fcbef15d486570" +sqlite3@4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/sqlite3/-/sqlite3-4.0.1.tgz#78e815bb50d7320fd90f03f1d7c3a920010d7ce3" dependencies: - nan "~2.9.2" - node-pre-gyp "~0.9.0" + nan "~2.10.0" + node-pre-gyp "~0.10.1" sqlstring@2.3.1: version "2.3.1" @@ -11772,6 +11972,16 @@ subscriptions-transport-ws@^0.9.10: symbol-observable "^1.0.4" ws "^5.2.0" +subscriptions-transport-ws@^0.9.11: + version "0.9.12" + resolved "https://registry.yarnpkg.com/subscriptions-transport-ws/-/subscriptions-transport-ws-0.9.12.tgz#0deb945134890d8694a93a090bacc6459c4478cc" + dependencies: + backo2 "^1.0.2" + eventemitter3 "^3.1.0" + iterall "^1.2.1" + symbol-observable "^1.0.4" + ws "^5.2.0" + subscriptions-transport-ws@^0.9.9: version "0.9.9" resolved "https://registry.yarnpkg.com/subscriptions-transport-ws/-/subscriptions-transport-ws-0.9.9.tgz#8a0bdc4c31df2e90e92901047fd8961deb138acc" @@ -12382,7 +12592,11 @@ uuid@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.0.0.tgz#6728fc0459c450d796a99c31837569bdf672d728" -uuid@3.2.1, uuid@^3.0.0, uuid@^3.0.1, uuid@^3.1.0, uuid@^3.2.1: +uuid@3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" + +uuid@^3.0.0, uuid@^3.0.1, uuid@^3.1.0, uuid@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.2.1.tgz#12c528bb9d58d0b9265d9a2f6f0fe8be17ff1f14" @@ -12445,9 +12659,9 @@ vasync@^1.6.4: dependencies: verror "1.6.0" -vee-validate@2.1.0-beta.2: - version "2.1.0-beta.2" - resolved "https://registry.yarnpkg.com/vee-validate/-/vee-validate-2.1.0-beta.2.tgz#b4a15f7aa0c4b1a9c78132d649b72a4dd4e2fa61" +vee-validate@2.1.0-beta.5: + version "2.1.0-beta.5" + resolved "https://registry.yarnpkg.com/vee-validate/-/vee-validate-2.1.0-beta.5.tgz#311c4629face2383964beb06768b379500f25a69" velocity-animate@1.5.1: version "1.5.1" @@ -12609,9 +12823,9 @@ vue@2.5.16: version "2.5.16" resolved "https://registry.yarnpkg.com/vue/-/vue-2.5.16.tgz#07edb75e8412aaeed871ebafa99f4672584a0085" -vuetify@1.0.19: - version "1.0.19" - resolved "https://registry.yarnpkg.com/vuetify/-/vuetify-1.0.19.tgz#fb6d123dd1c217795fc2333e912c0ecbed2ed69e" +vuetify@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/vuetify/-/vuetify-1.1.1.tgz#8d8f64306a45aaf862487addae8decf082dac0a3" vuex-persistedstate@2.5.4: version "2.5.4" @@ -12738,7 +12952,7 @@ webpack-hot-middleware@2.22.2: querystring "^0.2.0" strip-ansi "^3.0.0" -webpack-log@^1.0.1: +webpack-log@^1.0.1, webpack-log@^1.1.2: version "1.2.0" resolved "https://registry.yarnpkg.com/webpack-log/-/webpack-log-1.2.0.tgz#a4b34cda6b22b518dbb0ab32e567962d5c72a43d" dependencies: @@ -12760,9 +12974,9 @@ webpack-sources@^1.0.1, webpack-sources@^1.1.0: source-list-map "^2.0.0" source-map "~0.6.1" -webpack@4.12.0: - version "4.12.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.12.0.tgz#14758e035ae69747f68dd0edf3c5a572a82bdee9" +webpack@4.14.0: + version "4.14.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.14.0.tgz#bbcc40dbf9a34129491b431574189d3802972243" dependencies: "@webassemblyjs/ast" "1.5.12" "@webassemblyjs/helper-module-context" "1.5.12" @@ -12774,7 +12988,7 @@ webpack@4.12.0: ajv "^6.1.0" ajv-keywords "^3.1.0" chrome-trace-event "^1.0.0" - enhanced-resolve "^4.0.0" + enhanced-resolve "^4.1.0" eslint-scope "^3.7.1" json-parse-better-errors "^1.0.2" loader-runner "^2.3.0" @@ -12990,6 +13204,10 @@ xml@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/xml/-/xml-1.0.1.tgz#78ba72020029c5bc87b8a81a3cfcd74b4a2fc1e5" +xregexp@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-4.0.0.tgz#e698189de49dd2a18cc5687b05e17c8e43943020" + xtend@^4.0.0, xtend@~4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" @@ -12998,7 +13216,7 @@ y18n@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" -y18n@^4.0.0: +"y18n@^3.2.1 || ^4.0.0", y18n@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" @@ -13024,6 +13242,12 @@ yamljs@^0.3.0: argparse "^1.0.7" glob "^7.0.5" +yargs-parser@^10.1.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-10.1.0.tgz#7202265b89f7e9e9f2e5765e0fe735a905edbaa8" + dependencies: + camelcase "^4.1.0" + yargs-parser@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.0.tgz#275ecf0d7ffe05c77e64e7c86e4cd94bf0e1228a" @@ -13036,7 +13260,24 @@ yargs-parser@^9.0.2: dependencies: camelcase "^4.1.0" -yargs@11.0.0, yargs@^11.0.0: +yargs@12.0.1: + version "12.0.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.1.tgz#6432e56123bb4e7c3562115401e98374060261c2" + dependencies: + cliui "^4.0.0" + decamelize "^2.0.0" + find-up "^3.0.0" + get-caller-file "^1.0.1" + os-locale "^2.0.0" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^2.0.0" + which-module "^2.0.0" + y18n "^3.2.1 || ^4.0.0" + yargs-parser "^10.1.0" + +yargs@^11.0.0: version "11.0.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-11.0.0.tgz#c052931006c5eee74610e5fc0354bedfd08a201b" dependencies: