{"version":3,"file":"methods-BJmwe8TB.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 { client } from '~/lib/fetch';\nimport { transformCreatedUpdated } from '~/lib/transform';\nimport {\n  apiRequestOptionsToQuery,\n  type ApiResponse,\n  type ApiResponsePaginated,\n  type ApiRequestOptions,\n  type ApiDeletedResponse,\n  type SdkPaginated,\n} from '~/lib/api';\n\nimport { assignPermission } from '~/helpers/permissions/decorator';\n\nimport { transformNamespace } from '~/modules/namespaces/methods';\nimport type { RawNamespace } from '~/modules/namespaces/types';\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,UAAU;;;;mBCiHrC;AAlGF,MAAa,4BACX,+CAEG,wBAAwB,SAAS;CACpC,SAAS,SAAS,SAAS,QAAQ;CACnC,SAAS,SAAS,UAAU,SAAS,SAAS,QAAQ,GAAG;CACzD,WACE,SAAS,aACT,mBAAmB,SAAS,UAA0B;;AAG1D,MAAa,iBAAiB,+CACzB,yBAAyB,SAAS,SACrC,UAAU,SAAS;;;;;;AAUrB,SAAsB,YACpB;;;;mDACyB;EACzB,MAAM,EACJ,SACA,MAAM,EAAE,OAAO,OAAO,iBACd,OAAO,MACf,UACA,EACE,yCACK,yBAAyB,KAAK,SACjC,qDAAS,KAAM,YAElB,CACF;AAED,SAAO;GACL,OAAO,QAAQ,IAAI,yBAAyB;GAC5C;GACA;GACA;GACD;;;;AAEH,iBAAiB,aAAa,cAAc,KAAK;;;;;;;;;AAUjD,SAAsB,QACpB,KACA;;;;yCADA,UACA,SACe;EACf,MAAM,KAAK,OAAO,aAAa,WAAW,WAAW,SAAS;AAC9D,MAAI,CAAC,GACH,OAAM,IAAI,MAAM,sBAAsB;EAGxC,MAAM,EAAE,kBAAkB,OAAO,MAA4B,UAAU,MAAM,EAC3E,OAAO,EAAE,SAAS,EACnB,CAAC;AAEF,SAAO,cAAc,QAAQ;;;;AAE/B,iBAAiB,SAAS,kBAAkB,KAAK;;;;;;;;AASjD,SAAsB,WAAW;;;;kDAAgC;EAC/D,MAAM,EAAE,kBAAkB,OAAO,MAA4B,UAAU;GACrE,QAAQ;GACR,MAAM;GACP,CAAC;AAEF,SAAO,cAAc,QAAQ;;;;AAE/B,iBAAiB,YAAY,eAAe,KAAK;;;;;;;;AASjD,SAAsB,WAAW;;;;kDAGiB;MAHjB,EAC/B,aACG;EAEH,MAAM,EAAE,kBAAkB,OAAO,MAA4B,UAAU,MAAM;GAC3E,QAAQ;GACR,MAAM;GACP,CAAC;AAEF,SAAO,cAAc,QAAQ;;;;AAE/B,iBAAiB,YAAY,kBAAkB,KAAK;;;;;;;;AASpD,SAAsB,WACpB;;;;sDACkB;EAClB,MAAM,KAAK,OAAO,aAAa,WAAW,WAAW,SAAS;AAC9D,MAAI,CAAC,GACH,QAAO;EAGT,MAAM,EAAE,kBAAkB,OAAO,MAA0B,UAAU,MAAM,EACzE,QAAQ,UACT,CAAC;AAEF,SAAO,QAAQ;;;;AAEjB,iBAAiB,YAAY,qBAAqB,KAAK;;;;;;;;AASvD,SAAsB,uBACpB;;;;kEACe;EACf,MAAM,KAAK,OAAO,aAAa,WAAW,WAAW,SAAS;AAC9D,MAAI,CAAC,GACH,OAAM,IAAI,MAAM,sBAAsB;EAGxC,MAAM,EAAE,kBAAkB,OAAO,MAC/B,UAAU,GAAG,WACb,EAAE,QAAQ,UAAU,CACrB;AAED,SAAO,cAAc,QAAQ;;;;AAE/B,iBAAiB,wBAAwB,6BAA6B,KAAK"}