/* * Copyright (c) 2016-2017, Michael A. Updike All rights reserved. * Licensed under Apache 2.0 * https://opensource.org/licenses/Apache-2.0 * https://github.com/opus1269/chrome-extension-utils/blob/master/LICENSE.md */ window.Chrome = window.Chrome || {}; /** * JSON utilities * @namespace */ Chrome.JSONUtils = (function() { 'use strict'; new ExceptionHandler(); return { /** * Parse JSON, with exception handling * @param {!string} jsonString - string to parse * @returns {?JSON} JSON Object, null on error * @memberOf Chrome.JSONUtils */ parse: function(jsonString) { let ret = null; try { ret = JSON.parse(jsonString); } catch (err) { Chrome.GA.exception(`Caught: JSONUtils.parse: ${err.message}`, err.stack, false); } return ret; }, /** * Return shallow copy of Object * @param {!Object} object - object to copy * @returns {?JSON} JSON Object, null on error * @memberOf Chrome.JSONUtils */ shallowCopy: function(object) { let ret = null; const jsonString = JSON.stringify(object); if (typeof(jsonString) !== 'undefined') { ret = Chrome.JSONUtils.parse(jsonString); } return ret; }, }; })();