UNPKG

@arifwidianto/rpc-agent

Version:

RPC Agent for both client and server, extends more methods easily

73 lines 2.51 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.safeJSONString = exports.safeJSONParse = exports.isValidJSON = exports.stringifyJSON = exports.parseJSON = void 0; const logger_1 = require("./logger"); function parseJSON(str) { if (!str) return undefined; if (str?.trim()?.replace(/^\s+|\s+$/g, "")?.length === 0) return undefined; try { logger_1.logger.verbose("Parsing JSON data", { size: str?.length }); const result = JSON.parse(str); logger_1.logger.debug("JSON parsed successfully"); return result; } catch (error) { logger_1.logger.error("Failed to parse JSON", { error: error instanceof Error ? error.message : String(error), stack: error instanceof Error ? error.stack : undefined, }); throw new Error(`Failed to parse JSON: ${error instanceof Error ? error.message : "Unknown error"}`); } } exports.parseJSON = parseJSON; function stringifyJSON(value) { try { logger_1.logger.verbose("Stringifying JSON data"); const result = JSON.stringify(value); logger_1.logger.debug("JSON stringified successfully", { size: result.length }); return result; } catch (error) { logger_1.logger.error("Failed to stringify JSON", { error: error instanceof Error ? error.message : String(error), stack: error instanceof Error ? error.stack : undefined, }); throw new Error(`Failed to stringify JSON: ${error instanceof Error ? error.message : "Unknown error"}`); } } exports.stringifyJSON = stringifyJSON; function isValidJSON(value) { try { JSON.parse(JSON.stringify(value)); return true; } catch { return false; } } exports.isValidJSON = isValidJSON; function safeJSONParse(value, returnInvalid) { try { return JSON.parse(value); } catch { return returnInvalid ? returnInvalid : value; } } exports.safeJSONParse = safeJSONParse; function safeJSONString(value, returnInvalid) { try { if (!isValidJSON(value)) { throw new Error("Value is not a valid JSON value"); } return JSON.stringify(value); } catch { return returnInvalid ? String(returnInvalid) : String(value); } } exports.safeJSONString = safeJSONString; exports.default = { parseJSON, stringifyJSON, safeJSONParse, safeJSONString, isValidJSON }; //# sourceMappingURL=json.js.map