mirror of
https://github.com/vuejs/vue-cli.git
synced 2026-01-31 20:08:28 -06:00
106 lines
2.4 KiB
JavaScript
106 lines
2.4 KiB
JavaScript
const gql = require('graphql-tag')
|
|
// Subs
|
|
const { withFilter } = require('graphql-subscriptions')
|
|
const channels = require('../channels')
|
|
// Connectors
|
|
const tasks = require('../connectors/tasks')
|
|
const plugins = require('../connectors/plugins')
|
|
const projects = require('../connectors/projects')
|
|
|
|
exports.types = gql`
|
|
extend type Query {
|
|
tasks: [Task]
|
|
task (id: ID!): Task
|
|
}
|
|
|
|
extend type Mutation {
|
|
taskRun (id: ID!): Task
|
|
taskStop (id: ID!): Task
|
|
taskLogsClear (id: ID!): Task
|
|
taskOpen (id: ID!): Boolean
|
|
taskSaveParameters (id: ID!): [Prompt]
|
|
taskRestoreParameters (id: ID!): [Prompt]
|
|
}
|
|
|
|
extend type Subscription {
|
|
taskChanged: Task
|
|
taskLogAdded (id: ID!): TaskLog
|
|
}
|
|
|
|
type Task implements DescribedEntity {
|
|
id: ID!
|
|
status: TaskStatus!
|
|
command: String!
|
|
name: String
|
|
description: String
|
|
link: String
|
|
icon: String
|
|
logs: [TaskLog]
|
|
prompts: [Prompt]
|
|
views: [TaskView]
|
|
defaultView: String
|
|
plugin: Plugin
|
|
project: Project
|
|
}
|
|
|
|
enum TaskStatus {
|
|
idle
|
|
running
|
|
done
|
|
error
|
|
terminated
|
|
}
|
|
|
|
type TaskLog {
|
|
taskId: ID!
|
|
type: TaskLogType!
|
|
text: String
|
|
}
|
|
|
|
enum TaskLogType {
|
|
stdout
|
|
stderr
|
|
}
|
|
|
|
type TaskView {
|
|
id: ID!
|
|
label: String!
|
|
component: String!
|
|
icon: String
|
|
}
|
|
`
|
|
|
|
exports.resolvers = {
|
|
Task: {
|
|
prompts: (task, args, context) => tasks.getPrompts(task.id, context),
|
|
plugin: (task, args, context) => plugins.findOne({ id: task.pluginId, file: task.path }, context),
|
|
project: (task, args, context) => projects.findByPath(task.path, context)
|
|
},
|
|
|
|
Query: {
|
|
tasks: (root, args, context) => tasks.list(undefined, context),
|
|
task: (root, { id }, context) => tasks.findOne(id, context)
|
|
},
|
|
|
|
Mutation: {
|
|
taskRun: (root, { id }, context) => tasks.run(id, context),
|
|
taskStop: (root, { id }, context) => tasks.stop(id, context),
|
|
taskLogsClear: (root, { id }, context) => tasks.clearLogs(id, context),
|
|
taskOpen: (root, { id }, context) => tasks.open(id, context),
|
|
taskSaveParameters: (root, { id }, context) => tasks.saveParameters({ id }, context),
|
|
taskRestoreParameters: (root, { id }, context) => tasks.restoreParameters({ id }, context)
|
|
},
|
|
|
|
Subscription: {
|
|
taskChanged: {
|
|
subscribe: (parent, args, { pubsub }) => pubsub.asyncIterator(channels.TASK_CHANGED)
|
|
},
|
|
taskLogAdded: {
|
|
subscribe: withFilter(
|
|
(parent, args, { pubsub }) => pubsub.asyncIterator(channels.TASK_LOG_ADDED),
|
|
(payload, vars) => payload.taskLogAdded.taskId === vars.id
|
|
)
|
|
}
|
|
}
|
|
}
|