{"version":3,"file":"methods-DLfRPkuN.mjs","names":[],"sources":["../src/modules/namespaces/methods.ts","../src/modules/tasks/methods.ts"],"sourcesContent":["import { transformCreatedUpdated } from '~/lib/transform';\n\nimport type { Namespace, RawNamespace } from './types';\n\nexport const transformNamespace = (namespace: RawNamespace): Namespace => ({\n  ...transformCreatedUpdated(namespace),\n});\n","import { parseISO } from 'date-fns';\n\nimport {\n  apiRequestOptionsToQuery,\n  type ApiResponse,\n  type ApiResponsePaginated,\n  type ApiRequestOptions,\n  type ApiDeletedResponse,\n  type SdkPaginated,\n} from '~/lib/api';\nimport { client } from '~/lib/fetch';\nimport { transformCreatedUpdated } from '~/lib/transform';\n\nimport type { RawNamespace } from '~/modules/namespaces/types';\nimport { assignPermission } from '~/helpers/permissions/decorator';\nimport { transformNamespace } from '~/modules/namespaces/methods';\n\nimport type { InputTask, RawTask, Task } from './types';\n\nexport const transformTaskWithoutBody = (\n  template: Omit<RawTask, 'template'>\n): Omit<Task, 'template'> => ({\n  ...transformCreatedUpdated(template),\n  nextRun: parseISO(template.nextRun),\n  lastRun: template.lastRun ? parseISO(template.lastRun) : undefined,\n  namespace:\n    template.namespace &&\n    transformNamespace(template.namespace as RawNamespace),\n});\n\nexport const transformTask = (template: RawTask): Task => ({\n  ...transformTaskWithoutBody(template),\n  template: template.template,\n});\n\ntype PaginatedTasks = SdkPaginated<Omit<Task, 'template'>>;\n\n/**\n * Get all available tasks\n *\n * @returns All tasks' info\n */\nexport async function getAllTasks(\n  opts?: ApiRequestOptions & { include?: string[] }\n): Promise<PaginatedTasks> {\n  const {\n    content,\n    meta: { total, count, page },\n  } = await client.fetch<ApiResponsePaginated<Omit<RawTask, 'template'>>>(\n    '/tasks',\n    {\n      query: {\n        ...apiRequestOptionsToQuery(opts),\n        include: opts?.include,\n      },\n    }\n  );\n\n  return {\n    items: content.map(transformTaskWithoutBody),\n    total,\n    count,\n    page,\n  };\n}\nassignPermission(getAllTasks, 'GET /tasks', true);\n\n/**\n * Get task info\n *\n * @param taskOrId Task or Task's id\n * @param include Fields to include\n *\n * @returns Task info\n */\nexport async function getTask(\n  taskOrId: Omit<Task, 'template'> | string,\n  include?: string[]\n): Promise<Task> {\n  const id = typeof taskOrId === 'string' ? taskOrId : taskOrId.id;\n  if (!id) {\n    throw new Error('Task id is required');\n  }\n\n  const { content } = await client.fetch<ApiResponse<RawTask>>(`/tasks/${id}`, {\n    query: { include },\n  });\n\n  return transformTask(content);\n}\nassignPermission(getTask, 'GET /tasks/:id', true);\n\n/**\n * Create a new task\n *\n * @param task Task's data\n *\n * @returns Created task's info\n */\nexport async function createTask(task: InputTask): Promise<Task> {\n  const { content } = await client.fetch<ApiResponse<RawTask>>('/tasks', {\n    method: 'POST',\n    body: task,\n  });\n\n  return transformTask(content);\n}\nassignPermission(createTask, 'POST /tasks', true);\n\n/**\n * Update or create a task\n *\n * @param task Task's data **with id**\n *\n * @returns Updated/Created Task's info\n */\nexport async function upsertTask({\n  id,\n  ...task\n}: InputTask & { id: Task['id'] }): Promise<Task> {\n  const { content } = await client.fetch<ApiResponse<RawTask>>(`/tasks/${id}`, {\n    method: 'PUT',\n    body: task,\n  });\n\n  return transformTask(content);\n}\nassignPermission(upsertTask, 'PUT /tasks/:id', true);\n\n/**\n * Delete a task\n *\n * @param taskOrId Task or Task's id\n *\n * @returns Whether the task was deleted\n */\nexport async function deleteTask(\n  taskOrId: Omit<Task, 'template'> | string\n): Promise<boolean> {\n  const id = typeof taskOrId === 'string' ? taskOrId : taskOrId.id;\n  if (!id) {\n    return false;\n  }\n\n  const { content } = await client.fetch<ApiDeletedResponse>(`/tasks/${id}`, {\n    method: 'DELETE',\n  });\n\n  return content.deleted;\n}\nassignPermission(deleteTask, 'DELETE /tasks/:id', true);\n\n/**\n * Unlink a task from it's template\n *\n * @param taskOrId Task or Task's id\n *\n * @returns Updated task\n */\nexport async function unlinkTaskFromTemplate(\n  taskOrId: Omit<Task, 'template'> | string\n): Promise<Task> {\n  const id = typeof taskOrId === 'string' ? taskOrId : taskOrId.id;\n  if (!id) {\n    throw new Error('Task id is required');\n  }\n\n  const { content } = await client.fetch<ApiResponse<RawTask>>(\n    `/tasks/${id}/extends`,\n    { method: 'DELETE' }\n  );\n\n  return transformTask(content);\n}\nassignPermission(unlinkTaskFromTemplate, 'DELETE /tasks/:id/extends', true);\n"],"mappings":";;;;;;;;;;AAIA,MAAa,sBAAsB,iCAC9B,wBAAwB,SAAS,CACtC;;;;mBC+GE;AAlGF,MAAa,4BACX,+CAEG,wBAAwB,QAAQ;CACnC,SAAS,SAAS,SAAS,OAAO;CAClC,SAAS,SAAS,UAAU,SAAS,SAAS,OAAO,IAAI;CACzD,WACE,SAAS,aACT,mBAAmB,SAAS,SAAyB;CACzD;AAEA,MAAa,iBAAiB,+CACzB,yBAAyB,QAAQ,UACpC,UAAU,SAAS,UACrB;;;;;;AASA,SAAsB,YACpB;;;;mDACyB;EACzB,MAAM,EACJ,SACA,MAAM,EAAE,OAAO,OAAO,WACpB,MAAM,OAAO,MACf,UACA,EACE,yCACK,yBAAyB,IAAI,UAChC,qDAAS,KAAM,SACjB,EACF,CACF;EAEA,OAAO;GACL,OAAO,QAAQ,IAAI,wBAAwB;GAC3C;GACA;GACA;EACF;CACF;;;AACA,iBAAiB,aAAa,cAAc,IAAI;;;;;;;;;AAUhD,SAAsB,QACpB,KACA;;;;yCADA,UACA,SACe;EACf,MAAM,KAAK,OAAO,aAAa,WAAW,WAAW,SAAS;EAC9D,IAAI,CAAC,IACH,MAAM,IAAI,MAAM,qBAAqB;EAGvC,MAAM,EAAE,YAAY,MAAM,OAAO,MAA4B,UAAU,MAAM,EAC3E,OAAO,EAAE,QAAQ,EACnB,CAAC;EAED,OAAO,cAAc,OAAO;CAC9B;;;AACA,iBAAiB,SAAS,kBAAkB,IAAI;;;;;;;;AAShD,SAAsB,WAAW;;;;kDAAgC;EAC/D,MAAM,EAAE,YAAY,MAAM,OAAO,MAA4B,UAAU;GACrE,QAAQ;GACR,MAAM;EACR,CAAC;EAED,OAAO,cAAc,OAAO;CAC9B;;;AACA,iBAAiB,YAAY,eAAe,IAAI;;;;;;;;AAShD,SAAsB,WAAW;;;;kDAGiB;MAHjB,EAC/B,aACG;EAEH,MAAM,EAAE,YAAY,MAAM,OAAO,MAA4B,UAAU,MAAM;GAC3E,QAAQ;GACR,MAAM;EACR,CAAC;EAED,OAAO,cAAc,OAAO;CAC9B;;;AACA,iBAAiB,YAAY,kBAAkB,IAAI;;;;;;;;AASnD,SAAsB,WACpB;;;;sDACkB;EAClB,MAAM,KAAK,OAAO,aAAa,WAAW,WAAW,SAAS;EAC9D,IAAI,CAAC,IACH,OAAO;EAGT,MAAM,EAAE,YAAY,MAAM,OAAO,MAA0B,UAAU,MAAM,EACzE,QAAQ,SACV,CAAC;EAED,OAAO,QAAQ;CACjB;;;AACA,iBAAiB,YAAY,qBAAqB,IAAI;;;;;;;;AAStD,SAAsB,uBACpB;;;;kEACe;EACf,MAAM,KAAK,OAAO,aAAa,WAAW,WAAW,SAAS;EAC9D,IAAI,CAAC,IACH,MAAM,IAAI,MAAM,qBAAqB;EAGvC,MAAM,EAAE,YAAY,MAAM,OAAO,MAC/B,UAAU,GAAG,WACb,EAAE,QAAQ,SAAS,CACrB;EAEA,OAAO,cAAc,OAAO;CAC9B;;;AACA,iBAAiB,wBAAwB,6BAA6B,IAAI"}