@platform/state
Version:
A small, simple, strongly typed, [rx/observable] state-machine.
43 lines (42 loc) • 1.58 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Patch = void 0;
var tslib_1 = require("tslib");
var Patch = (function () {
function Patch() {
}
Patch.toPatchSet = function (forward, backward) {
return {
prev: backward ? toPatches(backward) : [],
next: forward ? toPatches(forward) : [],
};
};
Patch.isEmpty = function (input) {
if (input === null || typeof input !== 'object') {
return true;
}
else {
var isEmptyArray = function (input) { return (Array.isArray(input) ? input.length === 0 : true); };
return isEmptyArray(input.prev) && isEmptyArray(input.next);
}
};
return Patch;
}());
exports.Patch = Patch;
var toPatch = function (input) {
var hasForwardSlash = input.path.some(function (part) {
return typeof part === 'string' ? part.includes('/') : false;
});
if (hasForwardSlash) {
var path = input.path
.map(function (part) { return (typeof part === 'string' ? "'" + part + "'" : part); })
.join(',');
var err = "Property names cannot contain the \"/\" character. op: '" + input.op + "' path: [" + path + "]";
throw new Error(err);
}
return tslib_1.__assign(tslib_1.__assign({}, input), { path: input.path.join('/') });
};
var toPatches = function (input) {
var patches = Array.isArray(input) ? input : [input];
return patches.filter(function (p) { return Boolean(p); }).map(function (p) { return toPatch(p); });
};