import type { IntegrationAccountRequirement, TriggerDefinition, TriggerPresentationContext, } from "../types" const CLICKUP_ACCOUNT = { connectionOptions: [ { connectionMethodId: "oauth", requiredScopes: [] }, { connectionMethodId: "personal-token", requiredScopes: [] }, ], serviceId: "clickup", } as const satisfies IntegrationAccountRequirement export const clickUpTriggerDefinitions = { clickUpFolderCreated: definition("clickup.folder.created"), clickUpFolderDeleted: definition("clickup.folder.deleted"), clickUpFolderUpdated: definition("clickup.folder.updated"), clickUpGoalCreated: definition("clickup.goal.created"), clickUpGoalDeleted: definition("clickup.goal.deleted"), clickUpGoalUpdated: definition("clickup.goal.updated"), clickUpListCreated: definition("clickup.list.created"), clickUpListDeleted: definition("clickup.list.deleted"), clickUpListUpdated: definition("clickup.list.updated"), clickUpSpaceCreated: definition("clickup.space.created"), clickUpSpaceDeleted: definition("clickup.space.deleted"), clickUpSpaceUpdated: definition("clickup.space.updated"), clickUpTargetCreated: definition("clickup.target.created"), clickUpTargetDeleted: definition("clickup.target.deleted"), clickUpTargetUpdated: definition("clickup.target.updated"), clickUpTaskAssigneeUpdated: definition("clickup.task.assignee.updated"), clickUpTaskCommentPosted: definition("clickup.task.comment.posted"), clickUpTaskCommentUpdated: definition("clickup.task.comment.updated"), clickUpTaskCreated: definition("clickup.task.created"), clickUpTaskDeleted: definition("clickup.task.deleted"), clickUpTaskDueDateUpdated: definition("clickup.task.due-date.updated"), clickUpTaskMoved: definition("clickup.task.moved"), clickUpTaskPriorityUpdated: definition("clickup.task.priority.updated"), clickUpTaskStatusUpdated: definition("clickup.task.status.updated"), clickUpTaskTagUpdated: definition("clickup.task.tag.updated"), clickUpTaskTimeEstimateUpdated: definition( "clickup.task.time-estimate.updated", ), clickUpTaskTimeTrackedUpdated: definition( "clickup.task.time-tracked.updated", ), clickUpTaskUpdated: definition("clickup.task.updated"), clickUpWorkspaceEvent: definition("clickup.workspace.event"), } as const satisfies Record /** * Builds one full-permission ClickUp trigger definition. * * @param type - Internal event type. */ function definition(type: TType) { return { account: CLICKUP_ACCOUNT, getPrimary: clickUpWorkspacePrimary, type, } as const } /** * Reads a trigger's configured ClickUp Workspace for presentation. * * @param context - Resolved trigger presentation context. * @throws When canonical trigger configuration is missing its Workspace ID. */ function clickUpWorkspacePrimary(context: TriggerPresentationContext) { if ( typeof context.config !== "object" || context.config === null || !("workspaceId" in context.config) || typeof context.config.workspaceId !== "string" ) { throw new TypeError( "ClickUp trigger configuration requires a Workspace ID.", ) } return { copyable: true, value: context.config.workspaceId } }