47 lines
816 B
JavaScript
47 lines
816 B
JavaScript
import Vue from 'vue'
|
|
import VueCompositionAPI, { provide } from '@vue/composition-api'
|
|
import { DefaultApolloClient } from '@vue/apollo-composable'
|
|
import App from './App.vue'
|
|
import { createRouter } from './router'
|
|
import { createClient } from './vue-apollo'
|
|
|
|
Vue.use(VueCompositionAPI)
|
|
|
|
Vue.config.productionTip = false
|
|
|
|
export async function createApp ({
|
|
beforeApp = () => {},
|
|
afterApp = () => {}
|
|
} = {}) {
|
|
const router = createRouter()
|
|
|
|
const apolloClient = createClient({
|
|
ssr: process.server
|
|
})
|
|
|
|
await beforeApp({
|
|
router,
|
|
apolloClient
|
|
})
|
|
|
|
const app = new Vue({
|
|
router,
|
|
|
|
setup () {
|
|
provide(DefaultApolloClient, apolloClient)
|
|
},
|
|
|
|
render: h => h(App)
|
|
})
|
|
|
|
const result = {
|
|
app,
|
|
router,
|
|
apolloClient
|
|
}
|
|
|
|
await afterApp(result)
|
|
|
|
return result
|
|
}
|