1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- const { withFilter } = require('graphql-subscriptions')
- const globby = require('globby')
- const merge = require('lodash.merge')
- const { GraphQLJSON } = require('graphql-type-json')
- // Channels for subscriptions
- const channels = require('./channels')
- // Connectors
- const cwd = require('./connectors/cwd')
- const progress = require('./connectors/progress')
- const files = require('./connectors/files')
- const clientAddons = require('./connectors/client-addons')
- const sharedData = require('./connectors/shared-data')
- const locales = require('./connectors/locales')
- // Utils
- const stats = require('./util/stats')
- // Start ipc server
- require('./util/ipc')
- process.env.VUE_CLI_API_MODE = true
- const resolvers = [{
- JSON: GraphQLJSON,
- DescribedEntity: {
- __resolveType (obj, context, info) {
- return null
- }
- },
- ClientAddon: {
- url: (addon, args, context) => clientAddons.getUrl(addon, context)
- },
- Query: {
- cwd: () => cwd.get(),
- progress: (root, { id }, context) => progress.get(id, context),
- clientAddons: (root, args, context) => clientAddons.list(context),
- sharedData: (root, args, context) => sharedData.get(args, context),
- locales: (root, args, context) => locales.list(context)
- },
- Mutation: {
- fileOpenInEditor: (root, { input }, context) => files.openInEditor(input, context),
- sharedDataUpdate: (root, args, context) => sharedData.set(args, context)
- },
- Subscription: {
- cwdChanged: {
- subscribe: (parent, args, { pubsub }) => pubsub.asyncIterator(channels.CWD_CHANGED)
- },
- progressChanged: {
- subscribe: withFilter(
- // Iterator
- (parent, args, { pubsub }) => pubsub.asyncIterator(channels.PROGRESS_CHANGED),
- // Filter
- (payload, vars) => payload.progressChanged.id === vars.id
- )
- },
- progressRemoved: {
- subscribe: withFilter(
- // Iterator
- (parent, args, { pubsub }) => pubsub.asyncIterator(channels.PROGRESS_REMOVED),
- // Filter
- (payload, vars) => payload.progressRemoved === vars.id
- )
- },
- clientAddonAdded: {
- subscribe: (parent, args, { pubsub }) => pubsub.asyncIterator(channels.CLIENT_ADDON_ADDED)
- },
- sharedDataUpdated: {
- subscribe: withFilter(
- (parent, args, { pubsub }) => pubsub.asyncIterator(channels.SHARED_DATA_UPDATED),
- (payload, vars) => {
- const result = payload.sharedDataUpdated.id === vars.id && payload.sharedDataUpdated.projectId === vars.projectId
- if (result) {
- stats.get(`shared-data_${vars.projectId}`, vars.id).value++
- }
- return result
- }
- )
- },
- localeAdded: {
- subscribe: (parent, args, { pubsub }) => pubsub.asyncIterator(channels.LOCALE_ADDED)
- },
- routeRequested: {
- subscribe: (parent, args, { pubsub }) => pubsub.asyncIterator(channels.ROUTE_REQUESTED)
- }
- }
- }]
- // Load resolvers in './schema'
- const paths = globby.sync(['./schema/*.js'], { cwd: __dirname, absolute: true })
- paths.forEach(file => {
- const { resolvers: r } = require(file)
- r && resolvers.push(r)
- })
- module.exports = merge.apply(null, resolvers)
|