{"version":3,"file":"index.cjs","sources":[""],"sourcesContent":["import { getWindow, getDocument } from \"ssr-window\";\r\nimport { getObjFromFormData } from \"../../obj/getObjFromFormData/index.ts\";\r\n\r\ntype TQueryParams = Record<string, string | number | boolean | null> | FormData;\r\n\r\nexport type TGetUrlWithQueryParamsArgs = Parameters<typeof getUrlWithQueryParams>;\r\n\r\nexport type TGetUrlWithQueryParamsReturn = ReturnType<typeof getUrlWithQueryParams>;\r\n\r\n/**\r\n * Returns a URL string with updated query parameters from an object or `FormData`.\r\n *\r\n * @param {string} [uri=window.location.href] Source URL\r\n * @param {Record<string, string|number|boolean|null>|FormData} [params={}] Params to merge into the query string\r\n * @returns {string} Updated URL\r\n */\r\nexport const getUrlWithQueryParams = (\r\n  uri: string,\r\n  params: TQueryParams = {}\r\n): string => {\r\n\r\n  if (typeof uri !== \"string\") {\r\n    throw new TypeError(\"getUrlWithQueryParams: uri must be a string\");\r\n  } else if (!uri.length) {\r\n    uri = getWindow().location.href;\r\n  }\r\n\r\n  if (typeof params !== \"object\") {\r\n    throw new TypeError(\"getUrlWithQueryParams: params must be an object\");\r\n  }\r\n\r\n  if (params instanceof FormData) {\r\n    params = getObjFromFormData(params) as Record<string, string | number | boolean | null>;\r\n  }\r\n\r\n  const a: HTMLAnchorElement = getDocument().createElement(\"a\");\r\n  a.href = uri;\r\n\r\n  Object.entries(params)\r\n    .forEach(([ key, value ]) => {\r\n      // eslint-disable-next-line security/detect-non-literal-regexp\r\n      const regex = new RegExp(`${key}((?:\\\\[[^\\\\]]*\\\\])?)(=|$)(.*)`, \"i\");\r\n      let queryParams = (a.search || \"\")\r\n        .replace(/^\\?/, \"\")\r\n        .split(\"&\")\r\n        .filter(Boolean);\r\n      let paramFound = false;\r\n\r\n      queryParams = queryParams.map((param: string) => {\r\n        if (regex.test(param)) {\r\n          paramFound = true;\r\n          return `${key}=${value}`;\r\n        }\r\n        return param;\r\n      });\r\n\r\n      if (!paramFound) {\r\n        queryParams.push(`${key}=${value}`);\r\n      }\r\n\r\n      a.search = queryParams.length ? `?${queryParams.join(\"&\")}` : \"\";\r\n    });\r\n\r\n  return a.href;\r\n};\r\n"],"names":["getUrlWithQueryParams","uri","params","TypeError","length","getWindow","location","href","FormData","getObjFromFormData","a","getDocument","createElement","Object","entries","forEach","key","value","regex","RegExp","queryParams","search","replace","split","filter","Boolean","paramFound","map","param","test","push","join"],"mappings":";;;;;;;GAgBO,MAAMA,sBAAwBA,CACnCC,IACAC,OAAuB,MAGvB,UAAWD,MAAQ,SACjB,MAAM,IAAIE,UAAU,oDACf,IAAKF,IAAIG,OACdH,IAAMI,UAAAA,YAAYC,SAASC,KAG7B,UAAWL,SAAW,SACpB,MAAM,IAAIC,UAAU,mDAGtB,GAAID,kBAAkBM,SACpBN,OAASO,MAAAA,mBAAmBP,QAG9B,MAAMQ,EAAuBC,UAAAA,cAAcC,cAAc,KACzDF,EAAEH,KAAON,IAETY,OAAOC,QAAQZ,QACZa,QAAQ,EAAGC,IAAKC;;AAEf,MAAMC,MAAQ,IAAIC,OAAO,GAAGH,mCAAoC,KAChE,IAAII,aAAeV,EAAEW,QAAU,IAC5BC,QAAQ,MAAO,IACfC,MAAM,KACNC,OAAOC,SACV,IAAIC,WAAa,MAEjBN,YAAcA,YAAYO,IAAKC,QAC7B,GAAIV,MAAMW,KAAKD,OAAQ,CACrBF,WAAa,KACb,MAAO,GAAGV,OAAOC,OACnB,CACA,OAAOW,QAGT,IAAKF,WACHN,YAAYU,KAAK,GAAGd,OAAOC,SAG7BP,EAAEW,OAASD,YAAYhB,OAAS,IAAIgB,YAAYW,KAAK,OAAS,KAGlE,OAAOrB,EAAEH"}