{"version":3,"file":"template-tags.mjs","names":[],"sources":["../src/modules/template-tags/methods.ts"],"sourcesContent":["import { client } from '~/lib/fetch';\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 type { InputTemplateTag, TemplateTag } from './types';\n\ntype PaginatedTemplateTags = SdkPaginated<TemplateTag> & {\n  meta: { default: string };\n};\n\n/**\n * Get all available template tags\n *\n * @returns All template tags' info\n */\nexport async function getAllTemplateTags(\n  opts?: ApiRequestOptions & { include?: string[] }\n): Promise<PaginatedTemplateTags> {\n  const {\n    content,\n    meta: { total, count, page, ...meta },\n  } = await client.fetch<\n    ApiResponsePaginated<TemplateTag, { default: string }>\n  >('/template-tags', { query: apiRequestOptionsToQuery(opts) });\n\n  return {\n    items: content,\n    total,\n    count,\n    page,\n    meta,\n  };\n}\nassignPermission(getAllTemplateTags, 'GET /template-tags', true);\n\n/**\n * Get template tag info\n *\n * @param tagOrId Template tag or template tag's id\n *\n * @returns template tag info\n */\nexport async function getTemplateTag(\n  tagOrId: TemplateTag | string,\n  include?: string[]\n): Promise<TemplateTag> {\n  const id = typeof tagOrId === 'string' ? tagOrId : tagOrId.id;\n  if (!id) {\n    throw new Error('Tag id is required');\n  }\n\n  const { content } = await client.fetch<ApiResponse<TemplateTag>>(\n    `/template-tags/${id}`,\n    {\n      query: { include },\n    }\n  );\n\n  return content;\n}\nassignPermission(getTemplateTag, 'GET /template-tags/:id', true);\n\n/**\n * Create a new template tag\n *\n * @param tag Template tag's data\n *\n * @returns Created template tag's info\n */\nexport async function createTemplateTag(\n  tag: InputTemplateTag\n): Promise<TemplateTag> {\n  const { content } = await client.fetch<ApiResponse<TemplateTag>>(\n    '/template-tags',\n    {\n      method: 'POST',\n      body: tag,\n    }\n  );\n\n  return content;\n}\nassignPermission(createTemplateTag, 'POST /template-tags');\n\n/**\n * Update or create a template tag\n *\n * @param tag Template tag's data **with id**\n *\n * @returns Updated/Created template tag's info\n */\nexport async function upsertTemplateTag({\n  id,\n  ...tag\n}: InputTemplateTag & { id: string }): Promise<TemplateTag> {\n  const { content } = await client.fetch<ApiResponse<TemplateTag>>(\n    `/template-tags/${id}`,\n    {\n      method: 'PUT',\n      body: tag,\n    }\n  );\n\n  return content;\n}\nassignPermission(upsertTemplateTag, 'PUT /template-tags/:id');\n\n/**\n * Delete a template tag\n *\n * @param tagOrId Template tag or template tag's id\n *\n * @returns Whether the template tag was deleted\n */\nexport async function deleteTemplateTag(\n  tagOrId: TemplateTag | string\n): Promise<boolean> {\n  const id = typeof tagOrId === 'string' ? tagOrId : tagOrId.id;\n  if (!id) {\n    return false;\n  }\n\n  const { content } = await client.fetch<ApiDeletedResponse>(\n    `/template-tags/${id}`,\n    { method: 'DELETE' }\n  );\n\n  return content.deleted;\n}\nassignPermission(deleteTemplateTag, 'DELETE /template-tags/:id');\n"],"mappings":";;;;;;;;;CA4BY;CAAO;CAAO;iBAwExB;;;;;;AA7EF,SAAsB,mBACpB;;;;0DACgC;EAChC,MAAM,EACJ,SACA,qBACQ,OAAO,MAEf,kBAAkB,EAAE,OAAO,yBAAyB,KAAK,EAAE,CAAC,EAHtD,EAAE,OAAO,OAAO;AAKxB,SAAO;GACL,OAAO;GACP;GACA;GACA;GACA;GACD;;;;AAEH,iBAAiB,oBAAoB,sBAAsB,KAAK;;;;;;;;AAShE,SAAsB,eACpB,KACA;;;;gDADA,SACA,SACsB;EACtB,MAAM,KAAK,OAAO,YAAY,WAAW,UAAU,QAAQ;AAC3D,MAAI,CAAC,GACH,OAAM,IAAI,MAAM,qBAAqB;EAGvC,MAAM,EAAE,kBAAkB,OAAO,MAC/B,kBAAkB,MAClB,EACE,OAAO,EAAE,SAAS,EACnB,CACF;AAED,SAAO;;;;AAET,iBAAiB,gBAAgB,0BAA0B,KAAK;;;;;;;;AAShE,SAAsB,kBACpB;;;;wDACsB;EACtB,MAAM,EAAE,kBAAkB,OAAO,MAC/B,kBACA;GACE,QAAQ;GACR,MAAM;GACP,CACF;AAED,SAAO;;;;AAET,iBAAiB,mBAAmB,sBAAsB;;;;;;;;AAS1D,SAAsB,kBAAkB;;;;0DAGoB;MAHpB,EACtC,cACG;EAEH,MAAM,EAAE,kBAAkB,OAAO,MAC/B,kBAAkB,MAClB;GACE,QAAQ;GACR,MAAM;GACP,CACF;AAED,SAAO;;;;AAET,iBAAiB,mBAAmB,yBAAyB;;;;;;;;AAS7D,SAAsB,kBACpB;;;;4DACkB;EAClB,MAAM,KAAK,OAAO,YAAY,WAAW,UAAU,QAAQ;AAC3D,MAAI,CAAC,GACH,QAAO;EAGT,MAAM,EAAE,kBAAkB,OAAO,MAC/B,kBAAkB,MAClB,EAAE,QAAQ,UAAU,CACrB;AAED,SAAO,QAAQ;;;;AAEjB,iBAAiB,mBAAmB,4BAA4B"}