mirror of
https://github.com/clusterio/clusterio.git
synced 2026-11-11 23:04:52 +09:00
47 lines
1.1 KiB
JavaScript
47 lines
1.1 KiB
JavaScript
/**
|
|
* Helper functions related to objects
|
|
* @module lib/objectOps
|
|
*/
|
|
"use strict";
|
|
|
|
/**
|
|
* Deep clones an object, is actually just JSON.parse(JSON.stringify()) but looks cleaner.
|
|
* @param {object} obj to clone
|
|
* @returns {object} The cloned object.
|
|
*
|
|
* @example
|
|
* a = {"thingy":"with a value"};
|
|
* b = a;
|
|
* a == b; // true
|
|
* c = objectOps.deepclone(a);
|
|
* a == c; // false
|
|
*/
|
|
module.exports.deepclone = function(obj){
|
|
return JSON.parse(JSON.stringify(obj));
|
|
};
|
|
|
|
/**
|
|
* Checks if a string is valid JSON using try/catch. If passed an object it will always return true.
|
|
* @param {string} string to verify
|
|
* @returns {boolean} true if valid JSON.
|
|
*
|
|
* @example
|
|
* objectOps.isJSON("99 bottles of beer"); // false
|
|
* objectOps.isJSON("99"); // true
|
|
* objectOps.isJSON({"thingy":"that is an object"}); // true
|
|
* objectOps.isJSON(JSON.stringify({"thingy":"that is an object"})); // true
|
|
*/
|
|
module.exports.isJSON = function(string){
|
|
let stringIsJson = false;
|
|
let x;
|
|
try {
|
|
x = JSON.parse(string);
|
|
} catch (e){
|
|
return false;
|
|
}
|
|
if (typeof x === "object" || typeof string === "object"){
|
|
stringIsJson = true;
|
|
}
|
|
return stringIsJson;
|
|
};
|