@web3r/flowerkit
Version:
Tree-shakable JavaScript and TypeScript utility library for frontend/browser apps: DOM, events, arrays, objects, strings, date, JSON, and network helpers (ESM/CJS, SSR-friendly).
1 lines • 2.44 kB
Source Map (JSON)
{"version":3,"file":"index.cjs","sources":[""],"sourcesContent":["export type TGetJSONFromStrArgs = Parameters<typeof getJSONFromStr>;\r\n\r\nexport type TGetJSONFromStrReturn = ReturnType<typeof getJSONFromStr>;\r\n\r\n/**\r\n * Safely parses a JSON string.\r\n *\r\n * @template T\r\n * @param {string} str Source string to parse\r\n * @param {(this: any, key: string, value: any) => any} [reviver] Optional reviver function\r\n * @param {(err: unknown) => void} [onError] Optional error callback\r\n * @returns {T | Record<string, never>} Parsed object or empty object on error\r\n * @throws {TypeError} getJSONFromStr: str must be a string\r\n * @throws {TypeError} getJSONFromStr: reviver must be a function if provided\r\n * @throws {TypeError} getJSONFromStr: onError must be a function if provided\r\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse\r\n * @example\r\n * // How to convert string to JSON?\r\n * const json = getJSONFromStr<{ hello: string }>('{\"hello\":\"world\"}');\r\n * console.log(json.hello); // => \"world\"\r\n */\r\nexport const getJSONFromStr = <T = unknown>(\r\n str: string,\r\n reviver?: (this: any, key: string, value: any) => any,\r\n onError?: (err: unknown) => void\r\n): T | Record<string, never> => {\r\n if (typeof str !== \"string\") {\r\n throw new TypeError(\"getJSONFromStr: str must be a string\");\r\n }\r\n if (typeof reviver !== \"undefined\" && typeof reviver !== \"function\") {\r\n throw new TypeError(\"getJSONFromStr: reviver must be a function if provided\");\r\n }\r\n if (typeof onError !== \"undefined\" && typeof onError !== \"function\") {\r\n throw new TypeError(\"getJSONFromStr: onError must be a function if provided\");\r\n }\r\n\r\n let json: T | Record<string, never> = {};\r\n\r\n try {\r\n json = JSON.parse(str, reviver) as T;\r\n } catch (err) {\r\n if (typeof onError === \"function\") {\r\n onError(err);\r\n }\r\n }\r\n\r\n return json;\r\n};\r\n"],"names":["getJSONFromStr","str","reviver","onError","TypeError","json","JSON","parse","err"],"mappings":";;;;;;;;;;;;;;;;;GAqBO,MAAMA,eAAiBA,CAC5BC,IACAC,QACAC,WAEA,UAAWF,MAAQ,SACjB,MAAM,IAAIG,UAAU,wCAEtB,UAAWF,UAAY,oBAAsBA,UAAY,WACvD,MAAM,IAAIE,UAAU,0DAEtB,UAAWD,UAAY,oBAAsBA,UAAY,WACvD,MAAM,IAAIC,UAAU,0DAGtB,IAAIC,KAAkC,CAAA,EAEtC,IACEA,KAAOC,KAAKC,MAAMN,IAAKC,QACzB,CAAE,MAAOM,KACP,UAAWL,UAAY,WACrBA,QAAQK,IAEZ,CAEA,OAAOH"}