{"version":3,"file":"task-presets-B6gqzfZh.mjs","names":[],"sources":["../src/modules/task-presets/methods.ts"],"sourcesContent":["import {\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 { RawTask, Task } from '~/modules/tasks/types';\nimport { assignPermission } from '~/helpers/permissions/decorator';\nimport { transformTask } from '~/modules/tasks/methods';\n\nimport type {\n  AdditionalDataForPreset,\n  InputTaskPreset,\n  RawTaskPreset,\n  TaskPreset,\n} from './types';\n\ntype PaginatedTaskPresets = SdkPaginated<TaskPreset>;\n\n/**\n * Get all available tasks presets\n *\n * @returns All presets' info\n */\nexport async function getAllTaskPresets(\n  opts?: ApiRequestOptions & { include?: string[] }\n): Promise<PaginatedTaskPresets> {\n  const {\n    content,\n    meta: { total, count, page },\n  } = await client.fetch<ApiResponsePaginated<RawTaskPreset>>('/task-presets', {\n    query: {\n      ...apiRequestOptionsToQuery(opts),\n      include: opts?.include,\n    },\n  });\n\n  return {\n    items: content.map(transformCreatedUpdated),\n    total,\n    count,\n    page,\n  };\n}\nassignPermission(getAllTaskPresets, 'GET /task-presets', true);\n\n/**\n * Get tasks preset info\n *\n * @param presetOrId Preset or Preset's id\n *\n * @returns Preset info\n */\nexport async function getTaskPreset(\n  presetOrId: TaskPreset | string\n): Promise<TaskPreset> {\n  const id = typeof presetOrId === 'string' ? presetOrId : presetOrId.id;\n  if (!id) {\n    throw new Error('Task preset id is required');\n  }\n\n  const { content } = await client.fetch<ApiResponse<RawTaskPreset>>(\n    `/task-presets/${id}`\n  );\n  return transformCreatedUpdated(content);\n}\nassignPermission(getTaskPreset, 'GET /task-presets/:id', true);\n\n/**\n * Create a new tasks preset\n *\n * @param preset Preset's data\n * @param namespaces\n *\n * @returns Created preset's info\n */\nexport async function createTaskPreset(\n  preset: InputTaskPreset\n): Promise<TaskPreset> {\n  const { content } = await client.fetch<ApiResponse<RawTaskPreset>>(\n    '/task-presets/',\n    {\n      method: 'POST',\n      body: preset,\n    }\n  );\n\n  return transformCreatedUpdated(content);\n}\nassignPermission(createTaskPreset, 'POST /task-presets');\n\n/**\n * Update or create a tasks preset\n *\n * @param preset Preset's data **with id**\n *\n * @returns Updated/Created Preset's info\n */\nexport async function upsertTaskPreset({\n  id,\n  ...preset\n}: InputTaskPreset & { id: string }): Promise<TaskPreset> {\n  const { content } = await client.fetch<ApiResponse<RawTaskPreset>>(\n    `/task-presets/${id}`,\n    {\n      method: 'PUT',\n      body: preset,\n    }\n  );\n\n  return transformCreatedUpdated(content);\n}\nassignPermission(upsertTaskPreset, 'PUT /task-presets/:id');\n\n/**\n * Delete a tasks preset\n *\n * @param presetOrId Preset or Preset's id\n *\n * @returns Whether the preset was deleted\n */\nexport async function deleteTaskPreset(\n  presetOrId: TaskPreset | string\n): Promise<boolean> {\n  const id = typeof presetOrId === 'string' ? presetOrId : presetOrId.id;\n  if (!id) {\n    return false;\n  }\n\n  const { content } = await client.fetch<ApiDeletedResponse>(\n    `/task-presets/${id}`,\n    {\n      method: 'DELETE',\n    }\n  );\n\n  return content.deleted;\n}\nassignPermission(deleteTaskPreset, 'DELETE /task-presets/:id');\n\n/**\n * Create a task from a preset\n *\n * @param presetOrId Preset or Preset's id\n * @param additionalData Additional data for the task\n *\n * @returns Created task's info\n */\nexport async function createTaskFromPreset(\n  presetOrId: TaskPreset | string,\n  additionalData: AdditionalDataForPreset\n): Promise<Task> {\n  const id = typeof presetOrId === 'string' ? presetOrId : presetOrId.id;\n  if (!id) {\n    throw new Error('Task preset id is required');\n  }\n\n  const { content } = await client.fetch<ApiResponse<RawTask>>(\n    `/task-presets/${id}/tasks`,\n    {\n      method: 'POST',\n      body: additionalData,\n    }\n  );\n\n  return transformTask(content);\n}\nassignPermission(createTaskFromPreset, 'POST /task-presets/:id/tasks');\n"],"mappings":";;;;;;;;;;mBAwGE;;;;;;AA3EF,SAAsB,kBACpB;;;;yDAC+B;EAC/B,MAAM,EACJ,SACA,MAAM,EAAE,OAAO,OAAO,WACpB,MAAM,OAAO,MAA2C,iBAAiB,EAC3E,yCACK,yBAAyB,IAAI,UAChC,qDAAS,KAAM,SACjB,EACF,CAAC;EAED,OAAO;GACL,OAAO,QAAQ,IAAI,uBAAuB;GAC1C;GACA;GACA;EACF;CACF;;;AACA,iBAAiB,mBAAmB,qBAAqB,IAAI;;;;;;;;AAS7D,SAAsB,cACpB;;;;2DACqB;EACrB,MAAM,KAAK,OAAO,eAAe,WAAW,aAAa,WAAW;EACpE,IAAI,CAAC,IACH,MAAM,IAAI,MAAM,4BAA4B;EAG9C,MAAM,EAAE,YAAY,MAAM,OAAO,MAC/B,iBAAiB,IACnB;EACA,OAAO,wBAAwB,OAAO;CACxC;;;AACA,iBAAiB,eAAe,yBAAyB,IAAI;;;;;;;;;AAU7D,SAAsB,iBACpB;;;;0DACqB;EACrB,MAAM,EAAE,YAAY,MAAM,OAAO,MAC/B,kBACA;GACE,QAAQ;GACR,MAAM;EACR,CACF;EAEA,OAAO,wBAAwB,OAAO;CACxC;;;AACA,iBAAiB,kBAAkB,oBAAoB;;;;;;;;AASvD,SAAsB,iBAAiB;;;;wDAGmB;MAHnB,EACrC,aACG;EAEH,MAAM,EAAE,YAAY,MAAM,OAAO,MAC/B,iBAAiB,MACjB;GACE,QAAQ;GACR,MAAM;EACR,CACF;EAEA,OAAO,wBAAwB,OAAO;CACxC;;;AACA,iBAAiB,kBAAkB,uBAAuB;;;;;;;;AAS1D,SAAsB,iBACpB;;;;8DACkB;EAClB,MAAM,KAAK,OAAO,eAAe,WAAW,aAAa,WAAW;EACpE,IAAI,CAAC,IACH,OAAO;EAGT,MAAM,EAAE,YAAY,MAAM,OAAO,MAC/B,iBAAiB,MACjB,EACE,QAAQ,SACV,CACF;EAEA,OAAO,QAAQ;CACjB;;;AACA,iBAAiB,kBAAkB,0BAA0B;;;;;;;;;AAU7D,SAAsB,qBACpB,KACA;;;;sDADA,YACA,gBACe;EACf,MAAM,KAAK,OAAO,eAAe,WAAW,aAAa,WAAW;EACpE,IAAI,CAAC,IACH,MAAM,IAAI,MAAM,4BAA4B;EAG9C,MAAM,EAAE,YAAY,MAAM,OAAO,MAC/B,iBAAiB,GAAG,SACpB;GACE,QAAQ;GACR,MAAM;EACR,CACF;EAEA,OAAO,cAAc,OAAO;CAC9B;;;AACA,iBAAiB,sBAAsB,8BAA8B"}