From 61655b14dffb389de5c05811406cd32656dd72fd Mon Sep 17 00:00:00 2001 From: Guillaume Chau Date: Wed, 7 Mar 2018 19:17:27 +0100 Subject: [PATCH] feat(ui): Project creation working! --- packages/@vue/cli-shared-utils/index.js | 3 +- packages/@vue/cli-shared-utils/lib/exit.js | 9 ++ .../@vue/cli-shared-utils/lib/validate.js | 3 +- packages/@vue/cli-ui/README.md | 13 ++ packages/@vue/cli-ui/package.json | 30 ++-- packages/@vue/cli-ui/src/App.vue | 4 +- packages/@vue/cli-ui/src/apollo.js | 136 +++--------------- .../cli-ui/src/components/ApolloExample.vue | 128 ----------------- .../cli-ui/src/components/FolderExplorer.vue | 8 +- .../@vue/cli-ui/src/components/HelloWorld.vue | 57 -------- .../cli-ui/src/components/LoadingScreen.vue | 64 +++++++++ .../src/components/ProjectSelectList.vue | 66 ++++++++- .../src/components/ProjectSelectListItem.vue | 73 ++++++++++ .../@vue/cli-ui/src/graphql-api/channels.js | 3 +- .../src/graphql-api/connectors/folders.js | 7 +- .../src/graphql-api/connectors/projects.js | 136 +++++++++++++++++- .../src/graphql-api/connectors/prompts.js | 5 + .../@vue/cli-ui/src/graphql-api/resolvers.js | 17 ++- .../@vue/cli-ui/src/graphql-api/type-defs.js | 9 +- .../@vue/cli-ui/src/graphql/createStatus.gql | 3 + .../@vue/cli-ui/src/graphql/projectCreate.gql | 7 + .../src/graphql/projectCurrentFragment.gql | 10 +- .../cli-ui/src/graphql/projectFragment.gql | 6 + .../@vue/cli-ui/src/graphql/projectImport.gql | 7 + .../@vue/cli-ui/src/graphql/projectOpen.gql | 7 + .../@vue/cli-ui/src/graphql/projectRemove.gql | 3 + packages/@vue/cli-ui/src/graphql/projects.gql | 7 +- .../@vue/cli-ui/src/views/ProjectCreate.vue | 128 +++++++++++++++-- .../@vue/cli-ui/src/views/ProjectSelect.vue | 17 +++ packages/@vue/cli-ui/src/vue-apollo.js | 1 - packages/@vue/cli/lib/Creator.js | 61 +++++--- packages/@vue/cli/lib/options.js | 3 +- yarn.lock | 102 +++++++------ 33 files changed, 702 insertions(+), 431 deletions(-) create mode 100644 packages/@vue/cli-shared-utils/lib/exit.js create mode 100644 packages/@vue/cli-ui/README.md delete mode 100644 packages/@vue/cli-ui/src/components/ApolloExample.vue delete mode 100644 packages/@vue/cli-ui/src/components/HelloWorld.vue create mode 100644 packages/@vue/cli-ui/src/components/LoadingScreen.vue create mode 100644 packages/@vue/cli-ui/src/components/ProjectSelectListItem.vue create mode 100644 packages/@vue/cli-ui/src/graphql/createStatus.gql create mode 100644 packages/@vue/cli-ui/src/graphql/projectCreate.gql create mode 100644 packages/@vue/cli-ui/src/graphql/projectFragment.gql create mode 100644 packages/@vue/cli-ui/src/graphql/projectImport.gql create mode 100644 packages/@vue/cli-ui/src/graphql/projectOpen.gql create mode 100644 packages/@vue/cli-ui/src/graphql/projectRemove.gql diff --git a/packages/@vue/cli-shared-utils/index.js b/packages/@vue/cli-shared-utils/index.js index 700ee8a116..0286dc27df 100644 --- a/packages/@vue/cli-shared-utils/index.js +++ b/packages/@vue/cli-shared-utils/index.js @@ -4,7 +4,8 @@ 'spinner', 'validate', 'openBrowser', - 'pluginResolution' + 'pluginResolution', + 'exit' ].forEach(m => { Object.assign(exports, require(`./lib/${m}`)) }) diff --git a/packages/@vue/cli-shared-utils/lib/exit.js b/packages/@vue/cli-shared-utils/lib/exit.js new file mode 100644 index 0000000000..f33383181a --- /dev/null +++ b/packages/@vue/cli-shared-utils/lib/exit.js @@ -0,0 +1,9 @@ +exports.exitProcess = true + +exports.exit = function (code) { + if (exports.exitProcess) { + process.exit(code) + } else if (code > 0) { + throw new Error(`Process exited with code ${code}`) + } +} diff --git a/packages/@vue/cli-shared-utils/lib/validate.js b/packages/@vue/cli-shared-utils/lib/validate.js index 3e61d53715..c1508a8411 100644 --- a/packages/@vue/cli-shared-utils/lib/validate.js +++ b/packages/@vue/cli-shared-utils/lib/validate.js @@ -1,4 +1,5 @@ const joi = require('joi') +const { exit } = require('./exit') // proxy to joi for option validation exports.createSchema = fn => fn(joi) @@ -10,7 +11,7 @@ exports.validate = (obj, schema, cb) => { if (process.env.VUE_CLI_TEST) { throw err } else { - process.exit(1) + exit(1) } } }) diff --git a/packages/@vue/cli-ui/README.md b/packages/@vue/cli-ui/README.md new file mode 100644 index 0000000000..67dd27747e --- /dev/null +++ b/packages/@vue/cli-ui/README.md @@ -0,0 +1,13 @@ +# @vue/cli-ui + +Start development version: + +``` +yarn run serve +``` + +In another terminal: + +``` +yarn run graphql-api +``` diff --git a/packages/@vue/cli-ui/package.json b/packages/@vue/cli-ui/package.json index 7447f04c59..dccef85175 100644 --- a/packages/@vue/cli-ui/package.json +++ b/packages/@vue/cli-ui/package.json @@ -8,28 +8,29 @@ "graphql-api": "vue-cli-service graphql-api", "run-graphql-api": "vue-cli-service run-graphql-api" }, + "dependencies": { + "graphql": "^0.13.0", + "lowdb": "^1.0.0", + "mkdirp": "^0.5.1", + "rimraf": "^2.6.2", + "shortid": "^2.2.8" + }, "devDependencies": { "@vue/cli-plugin-babel": "^3.0.0-beta.3", "@vue/cli-plugin-eslint": "^3.0.0-beta.3", "@vue/cli-service": "^3.0.0-beta.3", "@vue/eslint-config-standard": "^3.0.0-beta.3", - "@vue/ui": "^0.1.6", - "apollo-cache-inmemory": "^1.0.0", - "apollo-client": "^2.0.1", - "apollo-link": "^1.0.0", - "apollo-link-context": "^1.0.5", - "apollo-link-http": "^1.0.0", - "apollo-link-persisted-queries": "^0.1.0", + "@vue/ui": "^0.1.9", + "apollo-cache-inmemory": "^1.1.10", + "apollo-client": "^2.2.6", + "apollo-link": "^1.2.1", + "apollo-link-http": "^1.5.3", "apollo-link-state": "^0.4.0", "apollo-link-ws": "^1.0.0", - "apollo-upload-client": "^7.0.0-alpha.4", - "apollo-utilities": "^1.0.1", - "graphql": "^0.13.0", + "apollo-utilities": "^1.0.9", + "eslint": "^4.16.0", "graphql-tag": "^2.5.0", "lint-staged": "^6.0.0", - "lowdb": "^1.0.0", - "mkdirp": "^0.5.1", - "shortid": "^2.2.8", "stylus": "^0.54.5", "stylus-loader": "^3.0.1", "subscriptions-transport-ws": "^0.9.5", @@ -62,8 +63,5 @@ "vue-cli-service lint", "git add" ] - }, - "dependencies": { - "eslint": "^4.16.0" } } diff --git a/packages/@vue/cli-ui/src/App.vue b/packages/@vue/cli-ui/src/App.vue index b5df14fb76..a0719d33a1 100644 --- a/packages/@vue/cli-ui/src/App.vue +++ b/packages/@vue/cli-ui/src/App.vue @@ -4,7 +4,9 @@ - + diff --git a/packages/@vue/cli-ui/src/apollo.js b/packages/@vue/cli-ui/src/apollo.js index 9a6a0ada4a..fecd872d83 100644 --- a/packages/@vue/cli-ui/src/apollo.js +++ b/packages/@vue/cli-ui/src/apollo.js @@ -1,46 +1,16 @@ import { ApolloClient } from 'apollo-client' import { split, ApolloLink } from 'apollo-link' import { HttpLink } from 'apollo-link-http' -import { createUploadLink } from 'apollo-upload-client' import { InMemoryCache } from 'apollo-cache-inmemory' -import { SubscriptionClient, MessageTypes } from 'subscriptions-transport-ws' +import { SubscriptionClient } from 'subscriptions-transport-ws' import { WebSocketLink } from 'apollo-link-ws' import { getMainDefinition } from 'apollo-utilities' -import { createPersistedQueryLink } from 'apollo-link-persisted-queries' -import { setContext } from 'apollo-link-context' import { withClientState } from 'apollo-link-state' import defaults from './state/defaults' import resolvers from './state/resolvers' -function getAuth () { - // get the authentication token from local storage if it exists - const token = localStorage.getItem('apollo-token') - // return the headers to the context so httpLink can read them - return token ? `Bearer ${token}` : '' -} - -function restartWebsockets (wsClient) { - // Copy current operations - const operations = Object.assign({}, wsClient.operations) - - // Close connection - wsClient.close(true) - - // Open a new one - wsClient.connect() - - // Push all current operations to the new connection - Object.keys(operations).forEach(id => { - wsClient.sendMessage( - id, - MessageTypes.GQL_START, - operations[id].options - ) - }) -} - // Create the apollo client -export default function createApolloClient ({ ssr, base, endpoints, persisting }) { +export default function createApolloClient ({ base, endpoints, persisting }) { let link let wsClient @@ -49,102 +19,36 @@ export default function createApolloClient ({ ssr, base, endpoints, persisting } uri: base + endpoints.graphql }) - // HTTP Auth header injection - const authLink = setContext((_, { headers }) => ({ - headers: { - ...headers, - authorization: getAuth() - } - })) - - // Concat all the http link parts - httpLink = authLink.concat(httpLink) - if (persisting) { - httpLink = createPersistedQueryLink().concat(httpLink) - } - // Apollo cache const cache = new InMemoryCache() // Client-side state const stateLink = withClientState({ defaults, cache, resolvers }) - if (!ssr) { - // If on the client, recover the injected state - if (typeof window !== 'undefined') { - // eslint-disable-next-line no-underscore-dangle - const state = window.__APOLLO_STATE__ - if (state) { - // If you have multiple clients, use `state.` - cache.restore(state.defaultClient) - } - } - - // Web socket - wsClient = new SubscriptionClient(base.replace(/^https?/i, 'ws' + (process.env.NODE_ENV === 'production' ? 's' : '')) + - endpoints.subscription, { - reconnect: true, - connectionParams: () => ({ - 'Authorization': getAuth() - }) - }) - - // Create the subscription websocket link - const wsLink = new WebSocketLink(wsClient) - - // File upload - const uploadLink = authLink.concat(createUploadLink({ - uri: base + endpoints.graphql - })) + // Web socket + wsClient = new SubscriptionClient(base.replace(/^https?/i, 'ws' + (process.env.NODE_ENV === 'production' ? 's' : '')) + + endpoints.subscription, { + reconnect: true + }) - // using the ability to split links, you can send data to each link - // depending on what kind of operation is being sent - httpLink = split( - operation => operation.getContext().upload, - uploadLink, - httpLink - ) + // Create the subscription websocket link + const wsLink = new WebSocketLink(wsClient) - link = split( - // split based on operation type - ({ query }) => { - const { kind, operation } = getMainDefinition(query) - return kind === 'OperationDefinition' && - operation === 'subscription' - }, - wsLink, - httpLink - ) - } else { - // On the server, we don't want WebSockets - link = httpLink - } + link = split( + // split based on operation type + ({ query }) => { + const { kind, operation } = getMainDefinition(query) + return kind === 'OperationDefinition' && + operation === 'subscription' + }, + wsLink, + httpLink + ) const apolloClient = new ApolloClient({ link: ApolloLink.from([stateLink, link]), - cache, - // Additional options - ...(ssr ? { - // Set this on the server to optimize queries when SSR - ssrMode: true - } : { - // This will temporary disable query force-fetching - ssrForceFetchDelay: 100, - // Apollo devtools - connectToDevTools: process.env.NODE_ENV !== 'production' - }) + cache }) - apolloClient.$onLogin = token => { - localStorage.setItem('apollo-token', token) - if (wsClient) restartWebsockets(wsClient) - } - - apolloClient.$onLogout = () => { - localStorage.removeItem('apollo-token') - if (wsClient) restartWebsockets(wsClient) - apolloClient.resetStore() - } - return apolloClient } diff --git a/packages/@vue/cli-ui/src/components/ApolloExample.vue b/packages/@vue/cli-ui/src/components/ApolloExample.vue deleted file mode 100644 index 283320531d..0000000000 --- a/packages/@vue/cli-ui/src/components/ApolloExample.vue +++ /dev/null @@ -1,128 +0,0 @@ - - - - - diff --git a/packages/@vue/cli-ui/src/components/FolderExplorer.vue b/packages/@vue/cli-ui/src/components/FolderExplorer.vue index 796dd9dd44..c376683fa5 100644 --- a/packages/@vue/cli-ui/src/components/FolderExplorer.vue +++ b/packages/@vue/cli-ui/src/components/FolderExplorer.vue @@ -51,7 +51,7 @@ class="icon-button favorite-button" :icon-left="folderCurrent.favorite ? 'star' : 'star_border'" v-tooltip="'Toggle favorite'" - @click="toggleFavorite" + @click="toggleFavorite()" /> -
-

{{ msg }}

-

- For guide and recipes on how to configure / customize this project,
- check out the - vue-cli documentation. -

-

Installed CLI Plugins

- -

Essential Links

- -

Ecosystem

- -
- - - - - - diff --git a/packages/@vue/cli-ui/src/components/LoadingScreen.vue b/packages/@vue/cli-ui/src/components/LoadingScreen.vue new file mode 100644 index 0000000000..753e8992d7 --- /dev/null +++ b/packages/@vue/cli-ui/src/components/LoadingScreen.vue @@ -0,0 +1,64 @@ + + + + + diff --git a/packages/@vue/cli-ui/src/components/ProjectSelectList.vue b/packages/@vue/cli-ui/src/components/ProjectSelectList.vue index be54355b12..00a47f9ed1 100644 --- a/packages/@vue/cli-ui/src/components/ProjectSelectList.vue +++ b/packages/@vue/cli-ui/src/components/ProjectSelectList.vue @@ -2,11 +2,19 @@
diff --git a/packages/@vue/cli-ui/src/views/ProjectSelect.vue b/packages/@vue/cli-ui/src/views/ProjectSelect.vue index e2a490dc7f..ed59d0a61c 100644 --- a/packages/@vue/cli-ui/src/views/ProjectSelect.vue +++ b/packages/@vue/cli-ui/src/views/ProjectSelect.vue @@ -48,6 +48,7 @@ :label="$route.query.action || 'Import this folder'" class="big primary" :disabled="!folderCurrent.isVueProject" + @click="importProject()" />
@@ -61,6 +62,7 @@ import ProjectSelectList from '../components/ProjectSelectList' import StepWizard from '../components/StepWizard' import FOLDER_CURRENT from '../graphql/folderCurrent.gql' +import PROJECT_IMPORT from '../graphql/projectImport.gql' export default { components: { @@ -84,6 +86,21 @@ export default { async mounted () { await this.$nextTick() this.tab = this.$route.query.tab || 'existing' + }, + + methods: { + async importProject () { + await this.$apollo.mutate({ + mutation: PROJECT_IMPORT, + variables: { + input: { + path: this.folderCurrent.path + } + } + }) + + this.$router.push({ name: 'home' }) + } } } diff --git a/packages/@vue/cli-ui/src/vue-apollo.js b/packages/@vue/cli-ui/src/vue-apollo.js index 8fe1b82f60..b9b29707d9 100644 --- a/packages/@vue/cli-ui/src/vue-apollo.js +++ b/packages/@vue/cli-ui/src/vue-apollo.js @@ -7,7 +7,6 @@ Vue.use(VueApollo) // Config const options = { - ssr: false, base: process.env.VUE_APP_GRAPHQL_ENDPOINT || 'http://localhost:4000', endpoints: { graphql: process.env.VUE_APP_GRAPHQL_PATH || '/graphql', diff --git a/packages/@vue/cli/lib/Creator.js b/packages/@vue/cli/lib/Creator.js index 3d3344ad91..3d99d61189 100644 --- a/packages/@vue/cli/lib/Creator.js +++ b/packages/@vue/cli/lib/Creator.js @@ -1,3 +1,4 @@ +const EventEmitter = require('events') const chalk = require('chalk') const debug = require('debug') const execa = require('execa') @@ -29,13 +30,16 @@ const { hasGit, hasYarn, logWithSpinner, - stopSpinner + stopSpinner, + exit } = require('@vue/cli-shared-utils') const isManualMode = answers => answers.preset === '__manual__' -module.exports = class Creator { +module.exports = class Creator extends EventEmitter { constructor (name, context, promptModules) { + super() + this.name = name this.context = process.env.VUE_CLI_CONTEXT = context const { presetPrompt, featurePrompt } = this.resolveIntroPrompts() @@ -50,7 +54,7 @@ module.exports = class Creator { promptModules.forEach(m => m(promptAPI)) } - async create (cliOptions = {}) { + async create (cliOptions = {}, preset = null) { const isTestOrDebug = process.env.VUE_CLI_TEST || process.env.VUE_CLI_DEBUG const { name, context, createCompleteCbs } = this const run = (command, args) => { @@ -58,23 +62,24 @@ module.exports = class Creator { return execa(command, args, { cwd: context }) } - let preset - if (cliOptions.preset) { - // vue create foo --preset bar - preset = await this.resolvePreset(cliOptions.preset, cliOptions.clone) - } else if (cliOptions.default) { - // vue create foo --default - preset = defaults.presets.default - } else if (cliOptions.inlinePreset) { - // vue create foo --inlinePreset {...} - try { - preset = JSON.parse(cliOptions.inlinePreset) - } catch (e) { - error(`CLI inline preset is not valid JSON: ${cliOptions.inlinePreset}`) - process.exit(1) + if (!preset) { + if (cliOptions.preset) { + // vue create foo --preset bar + preset = await this.resolvePreset(cliOptions.preset, cliOptions.clone) + } else if (cliOptions.default) { + // vue create foo --default + preset = defaults.presets.default + } else if (cliOptions.inlinePreset) { + // vue create foo --inlinePreset {...} + try { + preset = JSON.parse(cliOptions.inlinePreset) + } catch (e) { + error(`CLI inline preset is not valid JSON: ${cliOptions.inlinePreset}`) + exit(1) + } + } else { + preset = await this.promptAndResolvePreset() } - } else { - preset = await this.promptAndResolvePreset() } // clone before mutating @@ -92,6 +97,7 @@ module.exports = class Creator { await clearConsole() logWithSpinner(`✨`, `Creating project in ${chalk.yellow(context)}.`) + this.emit('creation', { event: 'creating' }) // get latest CLI version const { latest } = await getVersions() @@ -116,6 +122,7 @@ module.exports = class Creator { // so that vue-cli-service can setup git hooks. if (hasGit()) { logWithSpinner(`🗃`, `Initializing git repository...`) + this.emit('creation', { event: 'git-init' }) await run('git init') } @@ -123,6 +130,7 @@ module.exports = class Creator { stopSpinner() log(`⚙ Installing CLI plugins. This might take a while...`) log() + this.emit('creation', { event: 'plugins-install' }) if (isTestOrDebug) { // in development, avoid installation process await setupDevProject(context) @@ -133,6 +141,7 @@ module.exports = class Creator { // run generator log() log(`🚀 Invoking generators...`) + this.emit('creation', { event: 'invoking-generators' }) const plugins = this.resolvePlugins(preset.plugins) const generator = new Generator(context, { pkg, @@ -145,6 +154,7 @@ module.exports = class Creator { // install additional deps (injected by generators) log(`📦 Installing additional dependencies...`) + this.emit('creation', { event: 'deps-install' }) log() if (!isTestOrDebug) { await installDeps(context, packageManager, cliOptions.registry) @@ -153,6 +163,7 @@ module.exports = class Creator { // run complete cbs if any (injected by generators) log() logWithSpinner('⚓', `Running completion hooks...`) + this.emit('creation', { event: 'completion-hooks' }) for (const cb of createCompleteCbs) { await cb() } @@ -177,14 +188,17 @@ module.exports = class Creator { chalk.cyan(` ${chalk.gray('$')} ${packageManager === 'yarn' ? 'yarn serve' : 'npm run serve'}`) ) log() + this.emit('creation', { event: 'done' }) generator.printExitLogs() } - async promptAndResolvePreset () { + async promptAndResolvePreset (answers = null) { // prompt - await clearConsole(true) - const answers = await inquirer.prompt(this.resolveFinalPrompts()) + if (!answers) { + await clearConsole(true) + answers = await inquirer.prompt(this.resolveFinalPrompts()) + } debug('vue-cli:answers')(answers) if (answers.packageManager) { @@ -225,6 +239,7 @@ module.exports = class Creator { if (name.includes('/')) { logWithSpinner(`Fetching remote preset ${chalk.cyan(name)}...`) + this.emit('creation', { event: 'fetch-remote-preset' }) try { preset = await fetchRemotePreset(name, clone) stopSpinner() @@ -251,7 +266,7 @@ module.exports = class Creator { log(`you don't seem to have any saved preset.`) log(`run vue-cli in manual mode to create a preset.`) } - process.exit(1) + exit(1) } return preset } diff --git a/packages/@vue/cli/lib/options.js b/packages/@vue/cli/lib/options.js index 5b76632d0a..b9000cae11 100644 --- a/packages/@vue/cli/lib/options.js +++ b/packages/@vue/cli/lib/options.js @@ -4,6 +4,7 @@ const path = require('path') const cloneDeep = require('lodash.clonedeep') const { error } = require('@vue/cli-shared-utils/lib/logger') const { createSchema, validate } = require('@vue/cli-shared-utils/lib/validate') +const { exit } = require('@vue/cli-shared-utils/lib/exit') const rcPath = exports.rcPath = ( process.env.VUE_CLI_CONFIG_PATH || @@ -67,7 +68,7 @@ exports.loadOptions = () => { `Please fix/delete it and re-run vue-cli in manual mode.\n` + `(${e.message})`, ) - process.exit(1) + exit(1) } validate(cachedOptions, schema, () => { error( diff --git a/yarn.lock b/yarn.lock index c1c1ecc437..c978a6d074 100644 --- a/yarn.lock +++ b/yarn.lock @@ -721,9 +721,9 @@ dependencies: lodash "^4.17.4" -"@vue/ui@^0.1.6": - version "0.1.7" - resolved "https://registry.yarnpkg.com/@vue/ui/-/ui-0.1.7.tgz#33445921e6bdcaad92b83d3d27b06b0457319229" +"@vue/ui@^0.1.9": + version "0.1.9" + resolved "https://registry.yarnpkg.com/@vue/ui/-/ui-0.1.9.tgz#1308d0c52f33415e7846cf9ec381eb518313a6fc" dependencies: focus-visible "^4.1.0" material-design-icons "^3.0.1" @@ -929,29 +929,29 @@ apollo-cache-control@^0.0.x: dependencies: graphql-extensions "^0.0.x" -apollo-cache-inmemory@^1.0.0: - version "1.1.9" - resolved "https://registry.yarnpkg.com/apollo-cache-inmemory/-/apollo-cache-inmemory-1.1.9.tgz#8bcd05e8ec4e7dc5ffda7f68252244cab3197b71" +apollo-cache-inmemory@^1.1.10: + version "1.1.10" + resolved "https://registry.yarnpkg.com/apollo-cache-inmemory/-/apollo-cache-inmemory-1.1.10.tgz#472442c6c59395159ae7d686ea33056248b26125" dependencies: - apollo-cache "^1.1.4" - apollo-utilities "^1.0.8" - graphql-anywhere "^4.1.5" + apollo-cache "^1.1.5" + apollo-utilities "^1.0.9" + graphql-anywhere "^4.1.6" -apollo-cache@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/apollo-cache/-/apollo-cache-1.1.4.tgz#a06544fdf4d946114168660961cf7a1fd340d8d6" +apollo-cache@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/apollo-cache/-/apollo-cache-1.1.5.tgz#159488bb8981ceacfe26172666a593f38318dbf7" dependencies: - apollo-utilities "^1.0.8" + apollo-utilities "^1.0.9" -apollo-client@^2.0.1: - version "2.2.5" - resolved "https://registry.yarnpkg.com/apollo-client/-/apollo-client-2.2.5.tgz#bc00704aa181d0ec299fd5bb2b72d0b44800f5d0" +apollo-client@^2.2.6: + version "2.2.6" + resolved "https://registry.yarnpkg.com/apollo-client/-/apollo-client-2.2.6.tgz#38b5a197976f3c22b63623c455d4c4606e420b66" dependencies: "@types/zen-observable" "^0.5.3" - apollo-cache "^1.1.4" + apollo-cache "^1.1.5" apollo-link "^1.0.0" apollo-link-dedup "^1.0.0" - apollo-utilities "^1.0.8" + apollo-utilities "^1.0.9" symbol-observable "^1.0.2" zen-observable "^0.7.0" optionalDependencies: @@ -980,37 +980,24 @@ apollo-engine@^0.8.9: apollo-engine-binary-linux "0.2018.2-37-g678cbb68b" apollo-engine-binary-windows "0.2018.2-37-g678cbb68b" -apollo-link-context@^1.0.5: - version "1.0.7" - resolved "https://registry.yarnpkg.com/apollo-link-context/-/apollo-link-context-1.0.7.tgz#3719697a677d3af5de500b7e4cbb6c0d0bf3bef3" - dependencies: - apollo-link "^1.2.1" - apollo-link-dedup@^1.0.0: version "1.0.8" resolved "https://registry.yarnpkg.com/apollo-link-dedup/-/apollo-link-dedup-1.0.8.tgz#8c3028cf32557bd040ab6ba8856f38067bdacead" dependencies: apollo-link "^1.2.1" -apollo-link-http-common@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/apollo-link-http-common/-/apollo-link-http-common-0.2.2.tgz#ac8a1810eca6a7ed37a34baeeb0a55752e6a0e30" +apollo-link-http-common@^0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/apollo-link-http-common/-/apollo-link-http-common-0.2.3.tgz#82ae0d4ff0cdd7c5c8826411d9dd7f7d8049ca46" dependencies: apollo-link "^1.2.1" -apollo-link-http@^1.0.0: - version "1.5.2" - resolved "https://registry.yarnpkg.com/apollo-link-http/-/apollo-link-http-1.5.2.tgz#cac4202b7f802869f892397f989d002c4ebb3b56" +apollo-link-http@^1.5.3: + version "1.5.3" + resolved "https://registry.yarnpkg.com/apollo-link-http/-/apollo-link-http-1.5.3.tgz#3aa0d3ecfe5666ef0c360f359c425ff6ea1d285b" dependencies: apollo-link "^1.2.1" - apollo-link-http-common "^0.2.2" - -apollo-link-persisted-queries@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/apollo-link-persisted-queries/-/apollo-link-persisted-queries-0.1.0.tgz#addc4b4f5b4755fb9909cd87685a8b50d7646d79" - dependencies: - apollo-link "^1.0.3" - hash.js "^1.1.3" + apollo-link-http-common "^0.2.3" apollo-link-state@^0.4.0: version "0.4.0" @@ -1025,7 +1012,7 @@ apollo-link-ws@^1.0.0: dependencies: apollo-link "^1.2.1" -apollo-link@^1.0.0, apollo-link@^1.0.3, apollo-link@^1.1.0, apollo-link@^1.2.1: +apollo-link@^1.0.0, apollo-link@^1.1.0, apollo-link@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/apollo-link/-/apollo-link-1.2.1.tgz#c120b16059f9bd93401b9f72b94d2f80f3f305d2" dependencies: @@ -1065,13 +1052,6 @@ apollo-tracing@^0.1.0: dependencies: graphql-extensions "^0.0.x" -apollo-upload-client@^7.0.0-alpha.4: - version "7.0.0-alpha.4" - resolved "https://registry.yarnpkg.com/apollo-upload-client/-/apollo-upload-client-7.0.0-alpha.4.tgz#9293bc8fa7f647da1ff36d828863e9072b9cd6c7" - dependencies: - "@babel/runtime" "^7.0.0-beta.38" - extract-files "^3.1.0" - apollo-upload-server@^4.0.0-alpha.1: version "4.0.2" resolved "https://registry.yarnpkg.com/apollo-upload-server/-/apollo-upload-server-4.0.2.tgz#1a042e413d09d4bd5529738f9e0af45ba553cc2d" @@ -1084,6 +1064,10 @@ apollo-utilities@^1.0.0, apollo-utilities@^1.0.1, apollo-utilities@^1.0.6, apoll version "1.0.8" resolved "https://registry.yarnpkg.com/apollo-utilities/-/apollo-utilities-1.0.8.tgz#74d797d38953d2ba35e16f880326e2abcbc8b016" +apollo-utilities@^1.0.9: + version "1.0.9" + resolved "https://registry.yarnpkg.com/apollo-utilities/-/apollo-utilities-1.0.9.tgz#16f9f2f92fd6c651d497aba6f2747ce17d87d80a" + app-root-path@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/app-root-path/-/app-root-path-2.0.1.tgz#cd62dcf8e4fd5a417efc664d2e5b10653c651b46" @@ -3406,6 +3390,16 @@ dot-prop@^3.0.0: dependencies: is-obj "^1.0.0" +dot-prop@^4.1.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.0.tgz#1f19e0c2e1aa0e32797c49799f2837ac6af69c57" + dependencies: + is-obj "^1.0.0" + +dotenv@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-0.4.0.tgz#f6fb351363c2d92207245c737802c9ab5ae1495a" + download-git-repo@^1.0.1, download-git-repo@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/download-git-repo/-/download-git-repo-1.0.2.tgz#0b93a62057e41e2f21b1a06c95e7b26362b108ff" @@ -4094,12 +4088,6 @@ extglob@^2.0.4: snapdragon "^0.8.1" to-regex "^3.0.1" -extract-files@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/extract-files/-/extract-files-3.1.0.tgz#b70424c9d4a1a4208efe22069388f428e4ae00f1" - dependencies: - "@babel/runtime" "^7.0.0-beta.38" - extract-from-css@^0.4.4: version "0.4.4" resolved "https://registry.yarnpkg.com/extract-from-css/-/extract-from-css-0.4.4.tgz#1ea7df2e7c7c6eb9922fa08e8adaea486f6f8f92" @@ -4800,12 +4788,18 @@ graceful-fs@^4.1.10, graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.3 version "1.0.1" resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" -graphql-anywhere@^4.1.0-alpha.0, graphql-anywhere@^4.1.5: +graphql-anywhere@^4.1.0-alpha.0: version "4.1.5" resolved "https://registry.yarnpkg.com/graphql-anywhere/-/graphql-anywhere-4.1.5.tgz#552ccd27b79a13a899022e20f658a2c2cb75e251" dependencies: apollo-utilities "^1.0.8" +graphql-anywhere@^4.1.6: + version "4.1.6" + resolved "https://registry.yarnpkg.com/graphql-anywhere/-/graphql-anywhere-4.1.6.tgz#1329ee62c76ff363aa44570d12067178b8611dca" + dependencies: + apollo-utilities "^1.0.9" + graphql-config@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/graphql-config/-/graphql-config-2.0.0.tgz#daf69091055c6f675d63893a2d14c48f3fec3327" @@ -5046,7 +5040,7 @@ hash-sum@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/hash-sum/-/hash-sum-1.0.2.tgz#33b40777754c6432573c120cc3808bbd10d47f04" -hash.js@^1.0.0, hash.js@^1.0.3, hash.js@^1.1.3: +hash.js@^1.0.0, hash.js@^1.0.3: version "1.1.3" resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.3.tgz#340dedbe6290187151c1ea1d777a3448935df846" dependencies: