{"version":3,"sources":["../src/client/request.ts"],"sourcesContent":["\"use client\";\n\nimport { ApiData } from \"../core/interfaces/ApiData\";\n\nexport interface DirectFetchParams {\n  method: string;\n  url: string;\n  token?: string;\n  body?: any;\n  files?: { [key: string]: File | Blob } | File | Blob;\n  companyId?: string;\n  language: string;\n  additionalHeaders?: Record<string, string>;\n}\n\n/**\n * Client-side direct fetch to bypass server action overhead.\n * Use this for client-side API calls.\n */\nexport async function directFetch(params: DirectFetchParams): Promise<ApiData> {\n  const response: ApiData = {\n    data: undefined,\n    ok: false,\n    status: 0,\n    statusText: \"\",\n  };\n\n  const additionalHeaders: Record<string, string> = { ...params.additionalHeaders };\n\n  if (params.companyId) {\n    additionalHeaders[\"x-companyid\"] = params.companyId;\n  }\n  additionalHeaders[\"x-language\"] = params.language;\n\n  let requestBody: BodyInit | undefined = undefined;\n\n  if (params.files) {\n    const formData = new FormData();\n    if (params.body && typeof params.body === \"object\") {\n      for (const key in params.body) {\n        if (Object.prototype.hasOwnProperty.call(params.body, key)) {\n          formData.append(\n            key,\n            typeof params.body[key] === \"object\" ? JSON.stringify(params.body[key]) : params.body[key],\n          );\n        }\n      }\n    }\n\n    if (params.files instanceof Blob) {\n      formData.append(\"file\", params.files);\n    } else if (typeof params.files === \"object\" && params.files !== null) {\n      for (const key in params.files) {\n        if (Object.prototype.hasOwnProperty.call(params.files, key)) {\n          formData.append(key, params.files[key]);\n        }\n      }\n    }\n\n    requestBody = formData;\n  } else if (params.body !== undefined) {\n    requestBody = JSON.stringify(params.body);\n    additionalHeaders[\"Content-Type\"] = \"application/json\";\n  }\n\n  const options: RequestInit = {\n    method: params.method,\n    headers: { Accept: \"application/json\", ...additionalHeaders },\n  };\n\n  if (requestBody !== undefined) {\n    options.body = requestBody;\n  }\n\n  if (params.token) {\n    options.headers = { ...options.headers, Authorization: `Bearer ${params.token}` };\n  }\n\n  try {\n    const apiResponse = await fetch(params.url, options);\n\n    response.ok = apiResponse.ok;\n    response.status = apiResponse.status;\n    response.statusText = apiResponse.statusText;\n    try {\n      response.data = await apiResponse.json();\n    } catch {\n      response.data = undefined;\n    }\n  } catch {\n    response.ok = false;\n    response.status = 500;\n    response.data = undefined;\n  }\n\n  return response;\n}\n"],"mappings":";;;;;AAmBA,eAAsB,YAAY,QAA6C;AAC7E,QAAM,WAAoB;AAAA,IACxB,MAAM;AAAA,IACN,IAAI;AAAA,IACJ,QAAQ;AAAA,IACR,YAAY;AAAA,EACd;AAEA,QAAM,oBAA4C,EAAE,GAAG,OAAO,kBAAkB;AAEhF,MAAI,OAAO,WAAW;AACpB,sBAAkB,aAAa,IAAI,OAAO;AAAA,EAC5C;AACA,oBAAkB,YAAY,IAAI,OAAO;AAEzC,MAAI,cAAoC;AAExC,MAAI,OAAO,OAAO;AAChB,UAAM,WAAW,IAAI,SAAS;AAC9B,QAAI,OAAO,QAAQ,OAAO,OAAO,SAAS,UAAU;AAClD,iBAAW,OAAO,OAAO,MAAM;AAC7B,YAAI,OAAO,UAAU,eAAe,KAAK,OAAO,MAAM,GAAG,GAAG;AAC1D,mBAAS;AAAA,YACP;AAAA,YACA,OAAO,OAAO,KAAK,GAAG,MAAM,WAAW,KAAK,UAAU,OAAO,KAAK,GAAG,CAAC,IAAI,OAAO,KAAK,GAAG;AAAA,UAC3F;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAEA,QAAI,OAAO,iBAAiB,MAAM;AAChC,eAAS,OAAO,QAAQ,OAAO,KAAK;AAAA,IACtC,WAAW,OAAO,OAAO,UAAU,YAAY,OAAO,UAAU,MAAM;AACpE,iBAAW,OAAO,OAAO,OAAO;AAC9B,YAAI,OAAO,UAAU,eAAe,KAAK,OAAO,OAAO,GAAG,GAAG;AAC3D,mBAAS,OAAO,KAAK,OAAO,MAAM,GAAG,CAAC;AAAA,QACxC;AAAA,MACF;AAAA,IACF;AAEA,kBAAc;AAAA,EAChB,WAAW,OAAO,SAAS,QAAW;AACpC,kBAAc,KAAK,UAAU,OAAO,IAAI;AACxC,sBAAkB,cAAc,IAAI;AAAA,EACtC;AAEA,QAAM,UAAuB;AAAA,IAC3B,QAAQ,OAAO;AAAA,IACf,SAAS,EAAE,QAAQ,oBAAoB,GAAG,kBAAkB;AAAA,EAC9D;AAEA,MAAI,gBAAgB,QAAW;AAC7B,YAAQ,OAAO;AAAA,EACjB;AAEA,MAAI,OAAO,OAAO;AAChB,YAAQ,UAAU,EAAE,GAAG,QAAQ,SAAS,eAAe,UAAU,OAAO,KAAK,GAAG;AAAA,EAClF;AAEA,MAAI;AACF,UAAM,cAAc,MAAM,MAAM,OAAO,KAAK,OAAO;AAEnD,aAAS,KAAK,YAAY;AAC1B,aAAS,SAAS,YAAY;AAC9B,aAAS,aAAa,YAAY;AAClC,QAAI;AACF,eAAS,OAAO,MAAM,YAAY,KAAK;AAAA,IACzC,QAAQ;AACN,eAAS,OAAO;AAAA,IAClB;AAAA,EACF,QAAQ;AACN,aAAS,KAAK;AACd,aAAS,SAAS;AAClB,aAAS,OAAO;AAAA,EAClB;AAEA,SAAO;AACT;AA7EsB;","names":[]}