| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181 | /*! * https://github.com/Starcounter-Jack/JSON-Patch * (c) 2017-2022 Joachim Wester * MIT licensed */var __extends = (this && this.__extends) || (function () {    var extendStatics = function (d, b) {        extendStatics = Object.setPrototypeOf ||            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };        return extendStatics(d, b);    };    return function (d, b) {        extendStatics(d, b);        function __() { this.constructor = d; }        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());    };})();Object.defineProperty(exports, "__esModule", { value: true });var _hasOwnProperty = Object.prototype.hasOwnProperty;function hasOwnProperty(obj, key) {    return _hasOwnProperty.call(obj, key);}exports.hasOwnProperty = hasOwnProperty;function _objectKeys(obj) {    if (Array.isArray(obj)) {        var keys_1 = new Array(obj.length);        for (var k = 0; k < keys_1.length; k++) {            keys_1[k] = "" + k;        }        return keys_1;    }    if (Object.keys) {        return Object.keys(obj);    }    var keys = [];    for (var i in obj) {        if (hasOwnProperty(obj, i)) {            keys.push(i);        }    }    return keys;}exports._objectKeys = _objectKeys;;/*** Deeply clone the object.* https://jsperf.com/deep-copy-vs-json-stringify-json-parse/25 (recursiveDeepCopy)* @param  {any} obj value to clone* @return {any} cloned obj*/function _deepClone(obj) {    switch (typeof obj) {        case "object":            return JSON.parse(JSON.stringify(obj)); //Faster than ES5 clone - http://jsperf.com/deep-cloning-of-objects/5        case "undefined":            return null; //this is how JSON.stringify behaves for array items        default:            return obj; //no need to clone primitives    }}exports._deepClone = _deepClone;//3x faster than cached /^\d+$/.test(str)function isInteger(str) {    var i = 0;    var len = str.length;    var charCode;    while (i < len) {        charCode = str.charCodeAt(i);        if (charCode >= 48 && charCode <= 57) {            i++;            continue;        }        return false;    }    return true;}exports.isInteger = isInteger;/*** Escapes a json pointer path* @param path The raw pointer* @return the Escaped path*/function escapePathComponent(path) {    if (path.indexOf('/') === -1 && path.indexOf('~') === -1)        return path;    return path.replace(/~/g, '~0').replace(/\//g, '~1');}exports.escapePathComponent = escapePathComponent;/** * Unescapes a json pointer path * @param path The escaped pointer * @return The unescaped path */function unescapePathComponent(path) {    return path.replace(/~1/g, '/').replace(/~0/g, '~');}exports.unescapePathComponent = unescapePathComponent;function _getPathRecursive(root, obj) {    var found;    for (var key in root) {        if (hasOwnProperty(root, key)) {            if (root[key] === obj) {                return escapePathComponent(key) + '/';            }            else if (typeof root[key] === 'object') {                found = _getPathRecursive(root[key], obj);                if (found != '') {                    return escapePathComponent(key) + '/' + found;                }            }        }    }    return '';}exports._getPathRecursive = _getPathRecursive;function getPath(root, obj) {    if (root === obj) {        return '/';    }    var path = _getPathRecursive(root, obj);    if (path === '') {        throw new Error("Object not found in root");    }    return "/" + path;}exports.getPath = getPath;/*** Recursively checks whether an object has any undefined values inside.*/function hasUndefined(obj) {    if (obj === undefined) {        return true;    }    if (obj) {        if (Array.isArray(obj)) {            for (var i_1 = 0, len = obj.length; i_1 < len; i_1++) {                if (hasUndefined(obj[i_1])) {                    return true;                }            }        }        else if (typeof obj === "object") {            var objKeys = _objectKeys(obj);            var objKeysLength = objKeys.length;            for (var i = 0; i < objKeysLength; i++) {                if (hasUndefined(obj[objKeys[i]])) {                    return true;                }            }        }    }    return false;}exports.hasUndefined = hasUndefined;function patchErrorMessageFormatter(message, args) {    var messageParts = [message];    for (var key in args) {        var value = typeof args[key] === 'object' ? JSON.stringify(args[key], null, 2) : args[key]; // pretty print        if (typeof value !== 'undefined') {            messageParts.push(key + ": " + value);        }    }    return messageParts.join('\n');}var PatchError = /** @class */ (function (_super) {    __extends(PatchError, _super);    function PatchError(message, name, index, operation, tree) {        var _newTarget = this.constructor;        var _this = _super.call(this, patchErrorMessageFormatter(message, { name: name, index: index, operation: operation, tree: tree })) || this;        _this.name = name;        _this.index = index;        _this.operation = operation;        _this.tree = tree;        Object.setPrototypeOf(_this, _newTarget.prototype); // restore prototype chain, see https://stackoverflow.com/a/48342359        _this.message = patchErrorMessageFormatter(message, { name: name, index: index, operation: operation, tree: tree });        return _this;    }    return PatchError;}(Error));exports.PatchError = PatchError;
 |