UNPKG

box-node-sdk

Version:

Official SDK for Box Platform APIs

204 lines (203 loc) 7.23 kB
import { serializeFileMini } from './fileMini'; import { deserializeFileMini } from './fileMini'; import { serializeTaskAssignments } from './taskAssignments'; import { deserializeTaskAssignments } from './taskAssignments'; import { serializeUserMini } from './userMini'; import { deserializeUserMini } from './userMini'; import { serializeDateTime } from '../internal/utils'; import { deserializeDateTime } from '../internal/utils'; import { FileMini } from './fileMini'; import { TaskAssignments } from './taskAssignments'; import { UserMini } from './userMini'; import { BoxSdkError } from '../box/errors'; import { DateTime } from '../internal/utils'; import { SerializedData } from '../serialization/json'; import { sdIsEmpty } from '../serialization/json'; import { sdIsBoolean } from '../serialization/json'; import { sdIsNumber } from '../serialization/json'; import { sdIsString } from '../serialization/json'; import { sdIsList } from '../serialization/json'; import { sdIsMap } from '../serialization/json'; export type TaskTypeField = 'task'; export type TaskActionField = 'review' | 'complete' | string; export type TaskCompletionRuleField = 'all_assignees' | 'any_assignee' | string; export interface Task { /** * The unique identifier for this task. */ readonly id?: string; /** * The value will always be `task`. */ readonly type?: TaskTypeField; readonly item?: FileMini; /** * When the task is due. */ readonly dueAt?: DateTime; /** * The type of task the task assignee will be prompted to * perform. */ readonly action?: TaskActionField; /** * A message that will be included with the task. */ readonly message?: string; readonly taskAssignmentCollection?: TaskAssignments; /** * Whether the task has been completed. */ readonly isCompleted?: boolean; readonly createdBy?: UserMini; /** * When the task object was created. */ readonly createdAt?: DateTime; /** * Defines which assignees need to complete this task before the task * is considered completed. * * * `all_assignees` requires all assignees to review or * approve the task in order for it to be considered completed. * * `any_assignee` accepts any one assignee to review or * approve the task in order for it to be considered completed. */ readonly completionRule?: TaskCompletionRuleField; readonly rawData?: SerializedData; } export function serializeTaskTypeField(val: TaskTypeField): SerializedData { return val; } export function deserializeTaskTypeField(val: SerializedData): TaskTypeField { if (val == 'task') { return val; } throw new BoxSdkError({ message: "Can't deserialize TaskTypeField" }); } export function serializeTaskActionField(val: TaskActionField): SerializedData { return val; } export function deserializeTaskActionField( val: SerializedData, ): TaskActionField { if (val == 'review') { return val; } if (val == 'complete') { return val; } if (sdIsString(val)) { return val; } throw new BoxSdkError({ message: "Can't deserialize TaskActionField" }); } export function serializeTaskCompletionRuleField( val: TaskCompletionRuleField, ): SerializedData { return val; } export function deserializeTaskCompletionRuleField( val: SerializedData, ): TaskCompletionRuleField { if (val == 'all_assignees') { return val; } if (val == 'any_assignee') { return val; } if (sdIsString(val)) { return val; } throw new BoxSdkError({ message: "Can't deserialize TaskCompletionRuleField", }); } export function serializeTask(val: Task): SerializedData { return { ['id']: val.id, ['type']: val.type == void 0 ? val.type : serializeTaskTypeField(val.type), ['item']: val.item == void 0 ? val.item : serializeFileMini(val.item), ['due_at']: val.dueAt == void 0 ? val.dueAt : serializeDateTime(val.dueAt), ['action']: val.action == void 0 ? val.action : serializeTaskActionField(val.action), ['message']: val.message, ['task_assignment_collection']: val.taskAssignmentCollection == void 0 ? val.taskAssignmentCollection : serializeTaskAssignments(val.taskAssignmentCollection), ['is_completed']: val.isCompleted, ['created_by']: val.createdBy == void 0 ? val.createdBy : serializeUserMini(val.createdBy), ['created_at']: val.createdAt == void 0 ? val.createdAt : serializeDateTime(val.createdAt), ['completion_rule']: val.completionRule == void 0 ? val.completionRule : serializeTaskCompletionRuleField(val.completionRule), }; } export function deserializeTask(val: SerializedData): Task { if (!sdIsMap(val)) { throw new BoxSdkError({ message: 'Expecting a map for "Task"' }); } if (!(val.id == void 0) && !sdIsString(val.id)) { throw new BoxSdkError({ message: 'Expecting string for "id" of type "Task"', }); } const id: undefined | string = val.id == void 0 ? void 0 : val.id; const type: undefined | TaskTypeField = val.type == void 0 ? void 0 : deserializeTaskTypeField(val.type); const item: undefined | FileMini = val.item == void 0 ? void 0 : deserializeFileMini(val.item); if (!(val.due_at == void 0) && !sdIsString(val.due_at)) { throw new BoxSdkError({ message: 'Expecting string for "due_at" of type "Task"', }); } const dueAt: undefined | DateTime = val.due_at == void 0 ? void 0 : deserializeDateTime(val.due_at); const action: undefined | TaskActionField = val.action == void 0 ? void 0 : deserializeTaskActionField(val.action); if (!(val.message == void 0) && !sdIsString(val.message)) { throw new BoxSdkError({ message: 'Expecting string for "message" of type "Task"', }); } const message: undefined | string = val.message == void 0 ? void 0 : val.message; const taskAssignmentCollection: undefined | TaskAssignments = val.task_assignment_collection == void 0 ? void 0 : deserializeTaskAssignments(val.task_assignment_collection); if (!(val.is_completed == void 0) && !sdIsBoolean(val.is_completed)) { throw new BoxSdkError({ message: 'Expecting boolean for "is_completed" of type "Task"', }); } const isCompleted: undefined | boolean = val.is_completed == void 0 ? void 0 : val.is_completed; const createdBy: undefined | UserMini = val.created_by == void 0 ? void 0 : deserializeUserMini(val.created_by); if (!(val.created_at == void 0) && !sdIsString(val.created_at)) { throw new BoxSdkError({ message: 'Expecting string for "created_at" of type "Task"', }); } const createdAt: undefined | DateTime = val.created_at == void 0 ? void 0 : deserializeDateTime(val.created_at); const completionRule: undefined | TaskCompletionRuleField = val.completion_rule == void 0 ? void 0 : deserializeTaskCompletionRuleField(val.completion_rule); return { id: id, type: type, item: item, dueAt: dueAt, action: action, message: message, taskAssignmentCollection: taskAssignmentCollection, isCompleted: isCompleted, createdBy: createdBy, createdAt: createdAt, completionRule: completionRule, } satisfies Task; }