{"version":3,"file":"templates-CxUPZi0w.mjs","names":[],"sources":["../src/modules/templates/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 { assignPermission } from '~/helpers/permissions/decorator';\n\nimport type { InputTemplate, RawTemplate, Template } from './types';\n\ntype PaginatedTemplates = SdkPaginated<Omit<Template, 'body'>> & {\n  meta: { default: string };\n};\n\n/**\n * Get all available templates\n *\n * @returns All templates' info\n */\nexport async function getAllTemplates(\n  opts?: ApiRequestOptions & { include?: string[] }\n): Promise<PaginatedTemplates> {\n  const {\n    content,\n    meta: { total, count, page, ...meta },\n  } = await client.fetch<\n    ApiResponsePaginated<Omit<RawTemplate, 'body'>, { default: string }>\n  >('/templates', {\n    query: { ...apiRequestOptionsToQuery(opts), include: opts?.include },\n  });\n\n  return {\n    items: content.map(transformCreatedUpdated),\n    total,\n    count,\n    page,\n    meta,\n  };\n}\nassignPermission(getAllTemplates, 'GET /templates', true);\n\n/**\n * Get template info\n *\n * @param templateOrId Template or Template's id\n *\n * @returns Template info\n */\nexport async function getTemplate(\n  templateOrId: Omit<Template, 'body'> | string,\n  include?: string[]\n): Promise<Template> {\n  const id = typeof templateOrId === 'string' ? templateOrId : templateOrId.id;\n  if (!id) {\n    throw new Error('Template id is required');\n  }\n\n  const { content } = await client.fetch<ApiResponse<RawTemplate>>(\n    `/templates/${id}`,\n    {\n      query: { include },\n    }\n  );\n\n  return transformCreatedUpdated(content);\n}\nassignPermission(getTemplate, 'GET /templates/:id', true);\n\n/**\n * Create a new template\n *\n * @param template Template's data\n *\n * @returns Created template's info\n */\nexport async function createTemplate(\n  template: InputTemplate\n): Promise<Template> {\n  const { content } = await client.fetch<ApiResponse<RawTemplate>>(\n    '/templates',\n    {\n      method: 'POST',\n      body: template,\n    }\n  );\n\n  return transformCreatedUpdated(content);\n}\nassignPermission(createTemplate, 'POST /templates');\n\n/**\n * Update or create a template\n *\n * @param template Template's data **with id**\n *\n * @returns Updated/Created Template's info\n */\nexport async function upsertTemplate({\n  id,\n  ...template\n}: InputTemplate & { id: string }): Promise<Template> {\n  const { content } = await client.fetch<ApiResponse<RawTemplate>>(\n    `/templates/${id}`,\n    {\n      method: 'PUT',\n      body: template,\n    }\n  );\n\n  return transformCreatedUpdated(content);\n}\nassignPermission(upsertTemplate, 'PUT /templates/:id');\n\n/**\n * Delete a template\n *\n * @param templateOrId Template or Template's id\n *\n * @returns Whether the template was deleted\n */\nexport async function deleteTemplate(\n  templateOrId: Omit<Template, 'body'> | string\n): Promise<boolean> {\n  const id = typeof templateOrId === 'string' ? templateOrId : templateOrId.id;\n  if (!id) {\n    return false;\n  }\n\n  const { content } = await client.fetch<ApiDeletedResponse>(\n    `/templates/${id}`,\n    { method: 'DELETE' }\n  );\n\n  return content.deleted;\n}\nassignPermission(deleteTemplate, 'DELETE /templates/:id');\n"],"mappings":";;;;;;;;;;CA6BY;CAAO;CAAO;;oBA0ExB;;;;;;AA/EF,SAAsB,gBACpB;;;;uDAC6B;EAC7B,MAAM,EACJ,SACA,qBACQ,OAAO,MAEf,cAAc,EACd,yCAAY,yBAAyB,IAAI,UAAG,qDAAS,KAAM,SAAQ,EACrE,CAAC,GALO,EAAE,OAAO,OAAO,eAAS;EAOjC,OAAO;GACL,OAAO,QAAQ,IAAI,uBAAuB;GAC1C;GACA;GACA;GACA;EACF;CACF;;;AACA,iBAAiB,iBAAiB,kBAAkB,IAAI;;;;;;;;AASxD,SAAsB,YACpB,KACA;;;;6CADA,cACA,SACmB;EACnB,MAAM,KAAK,OAAO,iBAAiB,WAAW,eAAe,aAAa;EAC1E,IAAI,CAAC,IACH,MAAM,IAAI,MAAM,yBAAyB;EAG3C,MAAM,EAAE,YAAY,MAAM,OAAO,MAC/B,cAAc,MACd,EACE,OAAO,EAAE,QAAQ,EACnB,CACF;EAEA,OAAO,wBAAwB,OAAO;CACxC;;;AACA,iBAAiB,aAAa,sBAAsB,IAAI;;;;;;;;AASxD,SAAsB,eACpB;;;;0DACmB;EACnB,MAAM,EAAE,YAAY,MAAM,OAAO,MAC/B,cACA;GACE,QAAQ;GACR,MAAM;EACR,CACF;EAEA,OAAO,wBAAwB,OAAO;CACxC;;;AACA,iBAAiB,gBAAgB,iBAAiB;;;;;;;;AASlD,SAAsB,eAAe;;;;uDAGiB;MAHjB,EACnC,cACG;EAEH,MAAM,EAAE,YAAY,MAAM,OAAO,MAC/B,cAAc,MACd;GACE,QAAQ;GACR,MAAM;EACR,CACF;EAEA,OAAO,wBAAwB,OAAO;CACxC;;;AACA,iBAAiB,gBAAgB,oBAAoB;;;;;;;;AASrD,SAAsB,eACpB;;;;8DACkB;EAClB,MAAM,KAAK,OAAO,iBAAiB,WAAW,eAAe,aAAa;EAC1E,IAAI,CAAC,IACH,OAAO;EAGT,MAAM,EAAE,YAAY,MAAM,OAAO,MAC/B,cAAc,MACd,EAAE,QAAQ,SAAS,CACrB;EAEA,OAAO,QAAQ;CACjB;;;AACA,iBAAiB,gBAAgB,uBAAuB"}