@arifwidianto/rpc-agent
Version:
RPC Agent for both client and server, extends more methods easily
73 lines • 2.51 kB
JavaScript
;
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