{"version":3,"file":"query-string.cjs","sources":["../../src/util/query-string.ts"],"sourcesContent":["import queryString, { StringifyOptions, ParseOptions } from \"query-string\";\n\n// API query string management\nexport type APIParams = Record<string, string>;\n\ninterface QueryArgs {\n  [k: string]: any;\n}\n\nexport type QueryParams =\n  | string\n  | string[][]\n  | QueryArgs\n  | APIParams\n  | URLSearchParams\n  | null;\n\nfunction buildQueryString(\n  params: QueryParams,\n  opts: StringifyOptions = {},\n): string | null {\n  if (params == null) return null;\n  let p: string;\n  if (typeof params === \"string\") {\n    p = params;\n  } else {\n    p = queryString.stringify(params, { arrayFormat: \"comma\", ...opts });\n  }\n  return p;\n}\n\nfunction buildQueryURL(\n  route: string,\n  params: QueryParams = {},\n  opts?: StringifyOptions,\n): string {\n  const queryStr = buildQueryString(params, opts);\n  if (queryStr == \"\") {\n    return route;\n  } else {\n    return route + \"?\" + queryStr;\n  }\n}\n\n// Base query string management\n\nfunction parseParams(paramString: string, opts?: ParseOptions) {\n  const params = queryString.parse(paramString, {\n    parseBooleans: true,\n    parseNumbers: true,\n    arrayFormat: \"comma\",\n    ...opts,\n  });\n  // Return null unless we have params defined\n  return Object.keys(params).length > 0 ? params : null;\n}\n\nfunction updateURL(joinWith: string, args: QueryArgs, opts?: StringifyOptions) {\n  const params = buildQueryString(args, opts);\n  let pathname = document.location.pathname;\n  if (params != \"\") {\n    pathname += joinWith + params;\n  }\n  window.history.replaceState({}, \"\", pathname);\n}\n\nconst getHashString = (hashString: string | null) =>\n  parseParams(hashString ?? document.location.hash);\nconst setHashString = (args: QueryArgs, opts?: StringifyOptions) =>\n  updateURL(\"#\", args, opts);\n\nconst getQueryString = (queryString: string | null) =>\n  parseParams(queryString ?? document.location.search);\nconst setQueryString = (args: QueryArgs, opts?: StringifyOptions) =>\n  updateURL(\"?\", args, opts);\n\nexport {\n  buildQueryString,\n  buildQueryURL,\n  getQueryString,\n  setQueryString,\n  getHashString,\n  setHashString,\n};\n\nexport function joinURL(...args) {\n  let newURL = args[0];\n  for (let i = 1; i < args.length; i++) {\n    newURL = newURL.replace(/\\/$/, \"\") + \"/\" + args[i].replace(/^\\//, \"\");\n  }\n  return newURL;\n}\n\nexport function addQueryString(url: string, params: any) {\n  // If params is already urlsearchparams, just append\n  let p1: URLSearchParams;\n  if (params instanceof URLSearchParams) {\n    p1 = params;\n  } else {\n    p1 = new URLSearchParams(params);\n  }\n  return url + \"?\" + p1.toString();\n}\n"],"names":["queryString"],"mappings":";;;;;AAiBA,SAAS,iBACP,QACA,OAAyB,IACV;AACf,MAAI,UAAU,KAAM,QAAO;AAC3B,MAAI;AACJ,MAAI,OAAO,WAAW,UAAU;AAC9B,QAAI;AAAA,EACN,OAAO;AACL,QAAIA,qBAAAA,QAAY,UAAU,QAAQ,EAAE,aAAa,SAAS,GAAG,MAAM;AAAA,EACrE;AACA,SAAO;AACT;AAEA,SAAS,cACP,OACA,SAAsB,CAAA,GACtB,MACQ;AACR,QAAM,WAAW,iBAAiB,QAAQ,IAAI;AAC9C,MAAI,YAAY,IAAI;AAClB,WAAO;AAAA,EACT,OAAO;AACL,WAAO,QAAQ,MAAM;AAAA,EACvB;AACF;AAIA,SAAS,YAAY,aAAqB,MAAqB;AAC7D,QAAM,SAASA,qBAAAA,QAAY,MAAM,aAAa;AAAA,IAC5C,eAAe;AAAA,IACf,cAAc;AAAA,IACd,aAAa;AAAA,IACb,GAAG;AAAA,EAAA,CACJ;AAED,SAAO,OAAO,KAAK,MAAM,EAAE,SAAS,IAAI,SAAS;AACnD;AAEA,SAAS,UAAU,UAAkB,MAAiB,MAAyB;AAC7E,QAAM,SAAS,iBAAiB,MAAM,IAAI;AAC1C,MAAI,WAAW,SAAS,SAAS;AACjC,MAAI,UAAU,IAAI;AAChB,gBAAY,WAAW;AAAA,EACzB;AACA,SAAO,QAAQ,aAAa,CAAA,GAAI,IAAI,QAAQ;AAC9C;AAEA,MAAM,gBAAgB,CAAC,eACrB,YAAY,cAAc,SAAS,SAAS,IAAI;AAClD,MAAM,gBAAgB,CAAC,MAAiB,SACtC,UAAU,KAAK,MAAM,IAAI;AAE3B,MAAM,iBAAiB,CAACA,iBACtB,YAAYA,gBAAe,SAAS,SAAS,MAAM;AACrD,MAAM,iBAAiB,CAAC,MAAiB,SACvC,UAAU,KAAK,MAAM,IAAI;AAWpB,SAAS,WAAW,MAAM;AAC/B,MAAI,SAAS,KAAK,CAAC;AACnB,WAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AACpC,aAAS,OAAO,QAAQ,OAAO,EAAE,IAAI,MAAM,KAAK,CAAC,EAAE,QAAQ,OAAO,EAAE;AAAA,EACtE;AACA,SAAO;AACT;AAEO,SAAS,eAAe,KAAa,QAAa;AAEvD,MAAI;AACJ,MAAI,kBAAkB,iBAAiB;AACrC,SAAK;AAAA,EACP,OAAO;AACL,SAAK,IAAI,gBAAgB,MAAM;AAAA,EACjC;AACA,SAAO,MAAM,MAAM,GAAG,SAAA;AACxB;;;;;;;;;"}