@mikeal/realistic-structured-clone
Version:
A pure JS implementation of the structured clone algorithm (or at least something pretty close to that)
854 lines (843 loc) • 65 kB
JavaScript
(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.realisticStructuredClone = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(_dereq_,module,exports){
'use strict';
var Typeson = _dereq_('typeson');
var structuredCloningThrowing = _dereq_('typeson-registry/dist/presets/structured-cloning-throwing');
// http://stackoverflow.com/a/33268326/786644 - works in browser, worker, and Node.js
var TSON = new Typeson().register(structuredCloningThrowing);
function realisticStructuredClone(obj) {
return TSON.revive(TSON.encapsulate(obj));
}
module.exports = realisticStructuredClone;
},{"typeson":3,"typeson-registry/dist/presets/structured-cloning-throwing":2}],2:[function(_dereq_,module,exports){
"use strict";
var _typeof2 = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
!function (e, t) {
"object" == (typeof exports === "undefined" ? "undefined" : _typeof2(exports)) && "undefined" != typeof module ? module.exports = t() : "function" == typeof define && define.amd ? define(t) : ((e = "undefined" != typeof globalThis ? globalThis : e || self).Typeson = e.Typeson || {}, e.Typeson.presets = e.Typeson.presets || {}, e.Typeson.presets.structuredCloningThrowing = t());
}(undefined, function () {
"use strict";
function _typeof(e) {
return (_typeof = "function" == typeof Symbol && "symbol" == _typeof2(Symbol.iterator) ? function (e) {
return typeof e === "undefined" ? "undefined" : _typeof2(e);
} : function (e) {
return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e === "undefined" ? "undefined" : _typeof2(e);
})(e);
}function _classCallCheck(e, t) {
if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function");
}function _defineProperties(e, t) {
for (var r = 0; r < t.length; r++) {
var n = t[r];n.enumerable = n.enumerable || !1, n.configurable = !0, "value" in n && (n.writable = !0), Object.defineProperty(e, n.key, n);
}
}function _defineProperty(e, t, r) {
return t in e ? Object.defineProperty(e, t, { value: r, enumerable: !0, configurable: !0, writable: !0 }) : e[t] = r, e;
}function ownKeys(e, t) {
var r = Object.keys(e);if (Object.getOwnPropertySymbols) {
var n = Object.getOwnPropertySymbols(e);t && (n = n.filter(function (t) {
return Object.getOwnPropertyDescriptor(e, t).enumerable;
})), r.push.apply(r, n);
}return r;
}function _toConsumableArray(e) {
return function _arrayWithoutHoles(e) {
if (Array.isArray(e)) return _arrayLikeToArray(e);
}(e) || function _iterableToArray(e) {
if ("undefined" != typeof Symbol && Symbol.iterator in Object(e)) return Array.from(e);
}(e) || function _unsupportedIterableToArray(e, t) {
if (!e) return;if ("string" == typeof e) return _arrayLikeToArray(e, t);var r = Object.prototype.toString.call(e).slice(8, -1);"Object" === r && e.constructor && (r = e.constructor.name);if ("Map" === r || "Set" === r) return Array.from(e);if ("Arguments" === r || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)) return _arrayLikeToArray(e, t);
}(e) || function _nonIterableSpread() {
throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
}();
}function _arrayLikeToArray(e, t) {
(null == t || t > e.length) && (t = e.length);for (var r = 0, n = new Array(t); r < t; r++) {
n[r] = e[r];
}return n;
}function _typeof$1(e) {
return (_typeof$1 = "function" == typeof Symbol && "symbol" === _typeof(Symbol.iterator) ? function _typeof$1(e) {
return _typeof(e);
} : function _typeof$1(e) {
return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : _typeof(e);
})(e);
}function asyncGeneratorStep(e, t, r, n, i, o, a) {
try {
var c = e[o](a),
s = c.value;
} catch (e) {
return void r(e);
}c.done ? t(s) : Promise.resolve(s).then(n, i);
}function _asyncToGenerator(e) {
return function () {
var t = this,
r = arguments;return new Promise(function (n, i) {
var o = e.apply(t, r);function _next(e) {
asyncGeneratorStep(o, n, i, _next, _throw, "next", e);
}function _throw(e) {
asyncGeneratorStep(o, n, i, _next, _throw, "throw", e);
}_next(void 0);
});
};
}function _classCallCheck$1(e, t) {
if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function");
}function _defineProperties$1(e, t) {
for (var r = 0; r < t.length; r++) {
var n = t[r];n.enumerable = n.enumerable || !1, n.configurable = !0, "value" in n && (n.writable = !0), Object.defineProperty(e, n.key, n);
}
}function _defineProperty$1(e, t, r) {
return t in e ? Object.defineProperty(e, t, { value: r, enumerable: !0, configurable: !0, writable: !0 }) : e[t] = r, e;
}function ownKeys$1(e, t) {
var r = Object.keys(e);if (Object.getOwnPropertySymbols) {
var n = Object.getOwnPropertySymbols(e);t && (n = n.filter(function (t) {
return Object.getOwnPropertyDescriptor(e, t).enumerable;
})), r.push.apply(r, n);
}return r;
}function _objectSpread2$1(e) {
for (var t = 1; t < arguments.length; t++) {
var r = null != arguments[t] ? arguments[t] : {};t % 2 ? ownKeys$1(Object(r), !0).forEach(function (t) {
_defineProperty$1(e, t, r[t]);
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(r)) : ownKeys$1(Object(r)).forEach(function (t) {
Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(r, t));
});
}return e;
}function _slicedToArray(e, t) {
return function _arrayWithHoles(e) {
if (Array.isArray(e)) return e;
}(e) || function _iterableToArrayLimit(e, t) {
if (!(Symbol.iterator in Object(e)) && "[object Arguments]" !== Object.prototype.toString.call(e)) return;var r = [],
n = !0,
i = !1,
o = void 0;try {
for (var a, c = e[Symbol.iterator](); !(n = (a = c.next()).done) && (r.push(a.value), !t || r.length !== t); n = !0) {}
} catch (e) {
i = !0, o = e;
} finally {
try {
n || null == c.return || c.return();
} finally {
if (i) throw o;
}
}return r;
}(e, t) || function _nonIterableRest() {
throw new TypeError("Invalid attempt to destructure non-iterable instance");
}();
}function _toConsumableArray$1(e) {
return function _arrayWithoutHoles$1(e) {
if (Array.isArray(e)) {
for (var t = 0, r = new Array(e.length); t < e.length; t++) {
r[t] = e[t];
}return r;
}
}(e) || function _iterableToArray$1(e) {
if (Symbol.iterator in Object(e) || "[object Arguments]" === Object.prototype.toString.call(e)) return Array.from(e);
}(e) || function _nonIterableSpread$1() {
throw new TypeError("Invalid attempt to spread non-iterable instance");
}();
}var e = function TypesonPromise(e) {
_classCallCheck$1(this, TypesonPromise), this.p = new Promise(e);
};e.__typeson__type__ = "TypesonPromise", "undefined" != typeof Symbol && (e.prototype[Symbol.toStringTag] = "TypesonPromise"), e.prototype.then = function (t, r) {
var n = this;return new e(function (e, i) {
n.p.then(function (r) {
e(t ? t(r) : r);
}).catch(function (e) {
return r ? r(e) : Promise.reject(e);
}).then(e, i);
});
}, e.prototype.catch = function (e) {
return this.then(null, e);
}, e.resolve = function (t) {
return new e(function (e) {
e(t);
});
}, e.reject = function (t) {
return new e(function (e, r) {
r(t);
});
}, ["all", "race"].forEach(function (t) {
e[t] = function (r) {
return new e(function (e, n) {
Promise[t](r.map(function (e) {
return e && e.constructor && "TypesonPromise" === e.constructor.__typeson__type__ ? e.p : e;
})).then(e, n);
});
};
});var t = {}.toString,
r = {}.hasOwnProperty,
n = Object.getPrototypeOf,
i = r.toString;function isThenable(e, t) {
return isObject(e) && "function" == typeof e.then && (!t || "function" == typeof e.catch);
}function toStringTag(e) {
return t.call(e).slice(8, -1);
}function hasConstructorOf(e, t) {
if (!e || "object" !== _typeof$1(e)) return !1;var o = n(e);if (!o) return null === t;var a = r.call(o, "constructor") && o.constructor;return "function" != typeof a ? null === t : t === a || null !== t && i.call(a) === i.call(t) || "function" == typeof t && "string" == typeof a.__typeson__type__ && a.__typeson__type__ === t.__typeson__type__;
}function isPlainObject(e) {
return !(!e || "Object" !== toStringTag(e)) && (!n(e) || hasConstructorOf(e, Object));
}function isObject(e) {
return e && "object" === _typeof$1(e);
}function escapeKeyPathComponent(e) {
return e.replace(/~/g, "~0").replace(/\./g, "~1");
}function unescapeKeyPathComponent(e) {
return e.replace(/~1/g, ".").replace(/~0/g, "~");
}function getByKeyPath(e, t) {
if ("" === t) return e;var r = t.indexOf(".");if (r > -1) {
var n = e[unescapeKeyPathComponent(t.slice(0, r))];return void 0 === n ? void 0 : getByKeyPath(n, t.slice(r + 1));
}return e[unescapeKeyPathComponent(t)];
}function setAtKeyPath(e, t, r) {
if ("" === t) return r;var n = t.indexOf(".");return n > -1 ? setAtKeyPath(e[unescapeKeyPathComponent(t.slice(0, n))], t.slice(n + 1), r) : (e[unescapeKeyPathComponent(t)] = r, e);
}var o = Object.keys,
a = Array.isArray,
c = {}.hasOwnProperty,
s = ["type", "replaced", "iterateIn", "iterateUnsetNumeric"];function nestedPathsFirst(e, t) {
if ("" === e.keypath) return -1;var r = e.keypath.match(/\./g) || 0,
n = t.keypath.match(/\./g) || 0;return r && (r = r.length), n && (n = n.length), r > n ? -1 : r < n ? 1 : e.keypath < t.keypath ? -1 : e.keypath > t.keypath;
}var u = function () {
function Typeson(e) {
_classCallCheck$1(this, Typeson), this.options = e, this.plainObjectReplacers = [], this.nonplainObjectReplacers = [], this.revivers = {}, this.types = {};
}return function _createClass$1(e, t, r) {
return t && _defineProperties$1(e.prototype, t), r && _defineProperties$1(e, r), e;
}(Typeson, [{ key: "stringify", value: function stringify(e, t, r, n) {
n = _objectSpread2$1({}, this.options, {}, n, { stringification: !0 });var i = this.encapsulate(e, null, n);return a(i) ? JSON.stringify(i[0], t, r) : i.then(function (e) {
return JSON.stringify(e, t, r);
});
} }, { key: "stringifySync", value: function stringifySync(e, t, r, n) {
return this.stringify(e, t, r, _objectSpread2$1({ throwOnBadSyncType: !0 }, n, { sync: !0 }));
} }, { key: "stringifyAsync", value: function stringifyAsync(e, t, r, n) {
return this.stringify(e, t, r, _objectSpread2$1({ throwOnBadSyncType: !0 }, n, { sync: !1 }));
} }, { key: "parse", value: function parse(e, t, r) {
return r = _objectSpread2$1({}, this.options, {}, r, { parse: !0 }), this.revive(JSON.parse(e, t), r);
} }, { key: "parseSync", value: function parseSync(e, t, r) {
return this.parse(e, t, _objectSpread2$1({ throwOnBadSyncType: !0 }, r, { sync: !0 }));
} }, { key: "parseAsync", value: function parseAsync(e, t, r) {
return this.parse(e, t, _objectSpread2$1({ throwOnBadSyncType: !0 }, r, { sync: !1 }));
} }, { key: "specialTypeNames", value: function specialTypeNames(e, t) {
var r = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {};return r.returnTypeNames = !0, this.encapsulate(e, t, r);
} }, { key: "rootTypeName", value: function rootTypeName(e, t) {
var r = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {};return r.iterateNone = !0, this.encapsulate(e, t, r);
} }, { key: "encapsulate", value: function encapsulate(t, r, n) {
var i = (n = _objectSpread2$1({ sync: !0 }, this.options, {}, n)).sync,
u = this,
f = {},
l = [],
p = [],
y = [],
v = !("cyclic" in n) || n.cyclic,
h = n.encapsulateObserver,
d = _encapsulate("", t, v, r || {}, y);function finish(e) {
var t = Object.values(f);if (n.iterateNone) return t.length ? t[0] : Typeson.getJSONType(e);if (t.length) {
if (n.returnTypeNames) return _toConsumableArray$1(new Set(t));e && isPlainObject(e) && !c.call(e, "$types") ? e.$types = f : e = { $: e, $types: { $: f } };
} else isObject(e) && c.call(e, "$types") && (e = { $: e, $types: !0 });return !n.returnTypeNames && e;
}function checkPromises(e, t) {
return _checkPromises.apply(this, arguments);
}function _checkPromises() {
return (_checkPromises = _asyncToGenerator(regeneratorRuntime.mark(function _callee2(t, r) {
var n;return regeneratorRuntime.wrap(function _callee2$(i) {
for (;;) {
switch (i.prev = i.next) {case 0:
return i.next = 2, Promise.all(r.map(function (e) {
return e[1].p;
}));case 2:
return n = i.sent, i.next = 5, Promise.all(n.map(function () {
var n = _asyncToGenerator(regeneratorRuntime.mark(function _callee(n) {
var i, o, a, c, s, u, f, l, p, y, v, h, d, b;return regeneratorRuntime.wrap(function _callee$(g) {
for (;;) {
switch (g.prev = g.next) {case 0:
if (i = [], o = r.splice(0, 1), a = _slicedToArray(o, 1), c = a[0], s = _slicedToArray(c, 7), u = s[0], f = s[2], l = s[3], p = s[4], y = s[5], v = s[6], h = _encapsulate(u, n, f, l, i, !0, v), d = hasConstructorOf(h, e), !u || !d) {
g.next = 11;break;
}return g.next = 8, h.p;case 8:
return b = g.sent, p[y] = b, g.abrupt("return", checkPromises(t, i));case 11:
return u ? p[y] = h : t = d ? h.p : h, g.abrupt("return", checkPromises(t, i));case 13:case "end":
return g.stop();}
}
}, _callee);
}));return function (e) {
return n.apply(this, arguments);
};
}()));case 5:
return i.abrupt("return", t);case 6:case "end":
return i.stop();}
}
}, _callee2);
}))).apply(this, arguments);
}function _adaptBuiltinStateObjectProperties(e, t, r) {
Object.assign(e, t);var n = s.map(function (t) {
var r = e[t];return delete e[t], r;
});r(), s.forEach(function (t, r) {
e[t] = n[r];
});
}function _encapsulate(t, r, i, s, y, v, d) {
var b,
g = {},
m = _typeof$1(r),
O = h ? function (n) {
var o = d || s.type || Typeson.getJSONType(r);h(Object.assign(n || g, { keypath: t, value: r, cyclic: i, stateObj: s, promisesData: y, resolvingTypesonPromise: v, awaitingTypesonPromise: hasConstructorOf(r, e) }, { type: o }));
} : null;if (["string", "boolean", "number", "undefined"].includes(m)) return void 0 === r || "number" === m && (isNaN(r) || r === -1 / 0 || r === 1 / 0) ? (b = s.replaced ? r : replace(t, r, s, y, !1, v, O)) !== r && (g = { replaced: b }) : b = r, O && O(), b;if (null === r) return O && O(), r;if (i && !s.iterateIn && !s.iterateUnsetNumeric && r && "object" === _typeof$1(r)) {
var _ = l.indexOf(r);if (!(_ < 0)) return f[t] = "#", O && O({ cyclicKeypath: p[_] }), "#" + p[_];!0 === i && (l.push(r), p.push(t));
}var w,
j = isPlainObject(r),
S = a(r),
T = (j || S) && (!u.plainObjectReplacers.length || s.replaced) || s.iterateIn ? r : replace(t, r, s, y, j || S, null, O);if (T !== r ? (b = T, g = { replaced: T }) : "" === t && hasConstructorOf(r, e) ? (y.push([t, r, i, s, void 0, void 0, s.type]), b = r) : S && "object" !== s.iterateIn || "array" === s.iterateIn ? (w = new Array(r.length), g = { clone: w }) : (["function", "symbol"].includes(_typeof$1(r)) || "toJSON" in r || hasConstructorOf(r, e) || hasConstructorOf(r, Promise) || hasConstructorOf(r, ArrayBuffer)) && !j && "object" !== s.iterateIn ? b = r : (w = {}, s.addLength && (w.length = r.length), g = { clone: w }), O && O(), n.iterateNone) return w || b;if (!w) return b;if (s.iterateIn) {
var A = function _loop(n) {
var o = { ownKeys: c.call(r, n) };_adaptBuiltinStateObjectProperties(s, o, function () {
var o = t + (t ? "." : "") + escapeKeyPathComponent(n),
a = _encapsulate(o, r[n], Boolean(i), s, y, v);hasConstructorOf(a, e) ? y.push([o, a, Boolean(i), s, w, n, s.type]) : void 0 !== a && (w[n] = a);
});
};for (var P in r) {
A(P);
}O && O({ endIterateIn: !0, end: !0 });
} else o(r).forEach(function (n) {
var o = t + (t ? "." : "") + escapeKeyPathComponent(n);_adaptBuiltinStateObjectProperties(s, { ownKeys: !0 }, function () {
var t = _encapsulate(o, r[n], Boolean(i), s, y, v);hasConstructorOf(t, e) ? y.push([o, t, Boolean(i), s, w, n, s.type]) : void 0 !== t && (w[n] = t);
});
}), O && O({ endIterateOwn: !0, end: !0 });if (s.iterateUnsetNumeric) {
for (var C = r.length, k = function _loop2(n) {
if (!(n in r)) {
var o = t + (t ? "." : "") + n;_adaptBuiltinStateObjectProperties(s, { ownKeys: !1 }, function () {
var t = _encapsulate(o, void 0, Boolean(i), s, y, v);hasConstructorOf(t, e) ? y.push([o, t, Boolean(i), s, w, n, s.type]) : void 0 !== t && (w[n] = t);
});
}
}, $ = 0; $ < C; $++) {
k($);
}O && O({ endIterateUnsetNumeric: !0, end: !0 });
}return w;
}function replace(e, t, r, n, o, a, c) {
for (var s = o ? u.plainObjectReplacers : u.nonplainObjectReplacers, l = s.length; l--;) {
var p = s[l];if (p.test(t, r)) {
var y = p.type;if (u.revivers[y]) {
var h = f[e];f[e] = h ? [y].concat(h) : y;
}return Object.assign(r, { type: y, replaced: !0 }), !i && p.replaceAsync || p.replace ? (c && c({ replacing: !0 }), _encapsulate(e, p[i || !p.replaceAsync ? "replace" : "replaceAsync"](t, r), v && "readonly", r, n, a, y)) : (c && c({ typeDetected: !0 }), _encapsulate(e, t, v && "readonly", r, n, a, y));
}
}return t;
}return y.length ? i && n.throwOnBadSyncType ? function () {
throw new TypeError("Sync method requested but async result obtained");
}() : Promise.resolve(checkPromises(d, y)).then(finish) : !i && n.throwOnBadSyncType ? function () {
throw new TypeError("Async method requested but sync result obtained");
}() : n.stringification && i ? [finish(d)] : i ? finish(d) : Promise.resolve(finish(d));
} }, { key: "encapsulateSync", value: function encapsulateSync(e, t, r) {
return this.encapsulate(e, t, _objectSpread2$1({ throwOnBadSyncType: !0 }, r, { sync: !0 }));
} }, { key: "encapsulateAsync", value: function encapsulateAsync(e, t, r) {
return this.encapsulate(e, t, _objectSpread2$1({ throwOnBadSyncType: !0 }, r, { sync: !1 }));
} }, { key: "revive", value: function revive(t, r) {
var n = t && t.$types;if (!n) return t;if (!0 === n) return t.$;var i = (r = _objectSpread2$1({ sync: !0 }, this.options, {}, r)).sync,
c = [],
s = {},
u = !0;n.$ && isPlainObject(n.$) && (t = t.$, n = n.$, u = !1);var l = this;function executeReviver(e, t) {
var r = _slicedToArray(l.revivers[e] || [], 1)[0];if (!r) throw new Error("Unregistered type: " + e);return i && !("revive" in r) ? t : r[i && r.revive ? "revive" : !i && r.reviveAsync ? "reviveAsync" : "revive"](t, s);
}var p = [];function checkUndefined(e) {
return hasConstructorOf(e, f) ? void 0 : e;
}var y,
v = function revivePlainObjects() {
var r = [];if (Object.entries(n).forEach(function (e) {
var t = _slicedToArray(e, 2),
i = t[0],
o = t[1];"#" !== o && [].concat(o).forEach(function (e) {
_slicedToArray(l.revivers[e] || [null, {}], 2)[1].plain && (r.push({ keypath: i, type: e }), delete n[i]);
});
}), r.length) return r.sort(nestedPathsFirst).reduce(function reducer(r, n) {
var i = n.keypath,
o = n.type;if (isThenable(r)) return r.then(function (e) {
return reducer(e, { keypath: i, type: o });
});var a = getByKeyPath(t, i);if (hasConstructorOf(a = executeReviver(o, a), e)) return a.then(function (e) {
var r = setAtKeyPath(t, i, e);r === e && (t = r);
});var c = setAtKeyPath(t, i, a);c === a && (t = c);
}, void 0);
}();return hasConstructorOf(v, e) ? y = v.then(function () {
return t;
}) : (y = function _revive(t, r, i, s, l) {
if (!u || "$types" !== t) {
var y = n[t],
v = a(r);if (v || isPlainObject(r)) {
var h = v ? new Array(r.length) : {};for (o(r).forEach(function (n) {
var o = _revive(t + (t ? "." : "") + escapeKeyPathComponent(n), r[n], i || h, h, n),
a = function set(e) {
return hasConstructorOf(e, f) ? h[n] = void 0 : void 0 !== e && (h[n] = e), e;
};hasConstructorOf(o, e) ? p.push(o.then(function (e) {
return a(e);
})) : a(o);
}), r = h; c.length;) {
var d = _slicedToArray(c[0], 4),
b = d[0],
g = d[1],
m = d[2],
O = d[3],
_ = getByKeyPath(b, g);if (void 0 === _) break;m[O] = _, c.splice(0, 1);
}
}if (!y) return r;if ("#" === y) {
var w = getByKeyPath(i, r.slice(1));return void 0 === w && c.push([i, r.slice(1), s, l]), w;
}return [].concat(y).reduce(function reducer(t, r) {
return hasConstructorOf(t, e) ? t.then(function (e) {
return reducer(e, r);
}) : executeReviver(r, t);
}, r);
}
}("", t, null), p.length && (y = e.resolve(y).then(function (t) {
return e.all([t].concat(p));
}).then(function (e) {
return _slicedToArray(e, 1)[0];
}))), isThenable(y) ? i && r.throwOnBadSyncType ? function () {
throw new TypeError("Sync method requested but async result obtained");
}() : hasConstructorOf(y, e) ? y.p.then(checkUndefined) : y : !i && r.throwOnBadSyncType ? function () {
throw new TypeError("Async method requested but sync result obtained");
}() : i ? checkUndefined(y) : Promise.resolve(checkUndefined(y));
} }, { key: "reviveSync", value: function reviveSync(e, t) {
return this.revive(e, _objectSpread2$1({ throwOnBadSyncType: !0 }, t, { sync: !0 }));
} }, { key: "reviveAsync", value: function reviveAsync(e, t) {
return this.revive(e, _objectSpread2$1({ throwOnBadSyncType: !0 }, t, { sync: !1 }));
} }, { key: "register", value: function register(e, t) {
return t = t || {}, [].concat(e).forEach(function R(e) {
var r = this;if (a(e)) return e.map(function (e) {
return R.call(r, e);
});e && o(e).forEach(function (r) {
if ("#" === r) throw new TypeError("# cannot be used as a type name as it is reserved for cyclic objects");if (Typeson.JSON_TYPES.includes(r)) throw new TypeError("Plain JSON object types are reserved as type names");var n = e[r],
i = n && n.testPlainObjects ? this.plainObjectReplacers : this.nonplainObjectReplacers,
o = i.filter(function (e) {
return e.type === r;
});if (o.length && (i.splice(i.indexOf(o[0]), 1), delete this.revivers[r], delete this.types[r]), "function" == typeof n) {
var c = n;n = { test: function test(e) {
return e && e.constructor === c;
}, replace: function replace(e) {
return _objectSpread2$1({}, e);
}, revive: function revive(e) {
return Object.assign(Object.create(c.prototype), e);
} };
} else if (a(n)) {
var s = _slicedToArray(n, 3);n = { test: s[0], replace: s[1], revive: s[2] };
}if (n && n.test) {
var u = { type: r, test: n.test.bind(n) };n.replace && (u.replace = n.replace.bind(n)), n.replaceAsync && (u.replaceAsync = n.replaceAsync.bind(n));var f = "number" == typeof t.fallback ? t.fallback : t.fallback ? 0 : 1 / 0;if (n.testPlainObjects ? this.plainObjectReplacers.splice(f, 0, u) : this.nonplainObjectReplacers.splice(f, 0, u), n.revive || n.reviveAsync) {
var l = {};n.revive && (l.revive = n.revive.bind(n)), n.reviveAsync && (l.reviveAsync = n.reviveAsync.bind(n)), this.revivers[r] = [l, { plain: n.testPlainObjects }];
}this.types[r] = n;
}
}, this);
}, this), this;
} }]), Typeson;
}(),
f = function Undefined() {
_classCallCheck$1(this, Undefined);
};f.__typeson__type__ = "TypesonUndefined", u.Undefined = f, u.Promise = e, u.isThenable = isThenable, u.toStringTag = toStringTag, u.hasConstructorOf = hasConstructorOf, u.isObject = isObject, u.isPlainObject = isPlainObject, u.isUserObject = function isUserObject(e) {
if (!e || "Object" !== toStringTag(e)) return !1;var t = n(e);return !t || hasConstructorOf(e, Object) || isUserObject(t);
}, u.escapeKeyPathComponent = escapeKeyPathComponent, u.unescapeKeyPathComponent = unescapeKeyPathComponent, u.getByKeyPath = getByKeyPath, u.getJSONType = function getJSONType(e) {
return null === e ? "null" : Array.isArray(e) ? "array" : _typeof$1(e);
}, u.JSON_TYPES = ["null", "boolean", "number", "string", "array", "object"];for (var l = { userObject: { test: function test(e, t) {
return u.isUserObject(e);
}, replace: function replace(e) {
return function _objectSpread2(e) {
for (var t = 1; t < arguments.length; t++) {
var r = null != arguments[t] ? arguments[t] : {};t % 2 ? ownKeys(Object(r), !0).forEach(function (t) {
_defineProperty(e, t, r[t]);
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(r)) : ownKeys(Object(r)).forEach(function (t) {
Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(r, t));
});
}return e;
}({}, e);
}, revive: function revive(e) {
return e;
} } }, p = [{ arrayNonindexKeys: { testPlainObjects: !0, test: function test(e, t) {
return !!Array.isArray(e) && (Object.keys(e).some(function (e) {
return String(Number.parseInt(e)) !== e;
}) && (t.iterateIn = "object", t.addLength = !0), !0);
}, replace: function replace(e, t) {
return t.iterateUnsetNumeric = !0, e;
}, revive: function revive(e) {
if (Array.isArray(e)) return e;var t = [];return Object.keys(e).forEach(function (r) {
var n = e[r];t[r] = n;
}), t;
} } }, { sparseUndefined: { test: function test(e, t) {
return void 0 === e && !1 === t.ownKeys;
}, replace: function replace(e) {
return 0;
}, revive: function revive(e) {} } }], y = { undef: { test: function test(e, t) {
return void 0 === e && (t.ownKeys || !("ownKeys" in t));
}, replace: function replace(e) {
return 0;
}, revive: function revive(e) {
return new u.Undefined();
} } }, v = { StringObject: { test: function test(e) {
return "String" === u.toStringTag(e) && "object" === _typeof(e);
}, replace: function replace(e) {
return String(e);
}, revive: function revive(e) {
return new String(e);
} }, BooleanObject: { test: function test(e) {
return "Boolean" === u.toStringTag(e) && "object" === _typeof(e);
}, replace: function replace(e) {
return Boolean(e);
}, revive: function revive(e) {
return new Boolean(e);
} }, NumberObject: { test: function test(e) {
return "Number" === u.toStringTag(e) && "object" === _typeof(e);
}, replace: function replace(e) {
return Number(e);
}, revive: function revive(e) {
return new Number(e);
} } }, h = [{ nan: { test: function test(e) {
return Number.isNaN(e);
}, replace: function replace(e) {
return "NaN";
}, revive: function revive(e) {
return Number.NaN;
} } }, { infinity: { test: function test(e) {
return e === 1 / 0;
}, replace: function replace(e) {
return "Infinity";
}, revive: function revive(e) {
return 1 / 0;
} } }, { negativeInfinity: { test: function test(e) {
return e === -1 / 0;
}, replace: function replace(e) {
return "-Infinity";
}, revive: function revive(e) {
return -1 / 0;
} } }], d = { date: { test: function test(e) {
return "Date" === u.toStringTag(e);
}, replace: function replace(e) {
var t = e.getTime();return Number.isNaN(t) ? "NaN" : t;
}, revive: function revive(e) {
return "NaN" === e ? new Date(Number.NaN) : new Date(e);
} } }, b = { regexp: { test: function test(e) {
return "RegExp" === u.toStringTag(e);
}, replace: function replace(e) {
return { source: e.source, flags: (e.global ? "g" : "") + (e.ignoreCase ? "i" : "") + (e.multiline ? "m" : "") + (e.sticky ? "y" : "") + (e.unicode ? "u" : "") };
}, revive: function revive(e) {
var t = e.source,
r = e.flags;return new RegExp(t, r);
} } }, g = { map: { test: function test(e) {
return "Map" === u.toStringTag(e);
}, replace: function replace(e) {
return _toConsumableArray(e.entries());
}, revive: function revive(e) {
return new Map(e);
} } }, m = { set: { test: function test(e) {
return "Set" === u.toStringTag(e);
}, replace: function replace(e) {
return _toConsumableArray(e.values());
}, revive: function revive(e) {
return new Set(e);
} } }, O = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", _ = new Uint8Array(256), w = 0; w < O.length; w++) {
_[O.charCodeAt(w)] = w;
}var j = function encode(e, t, r) {
null == r && (r = e.byteLength);for (var n = new Uint8Array(e, t || 0, r), i = n.length, o = "", a = 0; a < i; a += 3) {
o += O[n[a] >> 2], o += O[(3 & n[a]) << 4 | n[a + 1] >> 4], o += O[(15 & n[a + 1]) << 2 | n[a + 2] >> 6], o += O[63 & n[a + 2]];
}return i % 3 == 2 ? o = o.slice(0, -1) + "=" : i % 3 == 1 && (o = o.slice(0, -2) + "=="), o;
},
S = function decode(e) {
var t,
r,
n,
i,
o = e.length,
a = .75 * e.length,
c = 0;"=" === e[e.length - 1] && (a--, "=" === e[e.length - 2] && a--);for (var s = new ArrayBuffer(a), u = new Uint8Array(s), f = 0; f < o; f += 4) {
t = _[e.charCodeAt(f)], r = _[e.charCodeAt(f + 1)], n = _[e.charCodeAt(f + 2)], i = _[e.charCodeAt(f + 3)], u[c++] = t << 2 | r >> 4, u[c++] = (15 & r) << 4 | n >> 2, u[c++] = (3 & n) << 6 | 63 & i;
}return s;
},
T = { arraybuffer: { test: function test(e) {
return "ArrayBuffer" === u.toStringTag(e);
}, replace: function replace(e, t) {
t.buffers || (t.buffers = []);var r = t.buffers.indexOf(e);return r > -1 ? { index: r } : (t.buffers.push(e), j(e));
}, revive: function revive(e, t) {
if (t.buffers || (t.buffers = []), "object" === _typeof(e)) return t.buffers[e.index];var r = S(e);return t.buffers.push(r), r;
} } },
A = "undefined" == typeof self ? global : self,
P = {};["Int8Array", "Uint8Array", "Uint8ClampedArray", "Int16Array", "Uint16Array", "Int32Array", "Uint32Array", "Float32Array", "Float64Array"].forEach(function (e) {
var t = e,
r = A[t];r && (P[e.toLowerCase()] = { test: function test(e) {
return u.toStringTag(e) === t;
}, replace: function replace(e, t) {
var r = e.buffer,
n = e.byteOffset,
i = e.length;t.buffers || (t.buffers = []);var o = t.buffers.indexOf(r);return o > -1 ? { index: o, byteOffset: n, length: i } : (t.buffers.push(r), { encoded: j(r), byteOffset: n, length: i });
}, revive: function revive(e, t) {
t.buffers || (t.buffers = []);var n,
i = e.byteOffset,
o = e.length,
a = e.encoded,
c = e.index;return "index" in e ? n = t.buffers[c] : (n = S(a), t.buffers.push(n)), new r(n, i, o);
} });
});var C = { dataview: { test: function test(e) {
return "DataView" === u.toStringTag(e);
}, replace: function replace(e, t) {
var r = e.buffer,
n = e.byteOffset,
i = e.byteLength;t.buffers || (t.buffers = []);var o = t.buffers.indexOf(r);return o > -1 ? { index: o, byteOffset: n, byteLength: i } : (t.buffers.push(r), { encoded: j(r), byteOffset: n, byteLength: i });
}, revive: function revive(e, t) {
t.buffers || (t.buffers = []);var r,
n = e.byteOffset,
i = e.byteLength,
o = e.encoded,
a = e.index;return "index" in e ? r = t.buffers[a] : (r = S(o), t.buffers.push(r)), new DataView(r, n, i);
} } },
k = { IntlCollator: { test: function test(e) {
return u.hasConstructorOf(e, Intl.Collator);
}, replace: function replace(e) {
return e.resolvedOptions();
}, revive: function revive(e) {
return new Intl.Collator(e.locale, e);
} }, IntlDateTimeFormat: { test: function test(e) {
return u.hasConstructorOf(e, Intl.DateTimeFormat);
}, replace: function replace(e) {
return e.resolvedOptions();
}, revive: function revive(e) {
return new Intl.DateTimeFormat(e.locale, e);
} }, IntlNumberFormat: { test: function test(e) {
return u.hasConstructorOf(e, Intl.NumberFormat);
}, replace: function replace(e) {
return e.resolvedOptions();
}, revive: function revive(e) {
return new Intl.NumberFormat(e.locale, e);
} } };function string2arraybuffer(e) {
for (var t = new Uint8Array(e.length), r = 0; r < e.length; r++) {
t[r] = e.charCodeAt(r);
}return t.buffer;
}var $ = { file: { test: function test(e) {
return "File" === u.toStringTag(e);
}, replace: function replace(e) {
var t = new XMLHttpRequest();if (t.overrideMimeType("text/plain; charset=x-user-defined"), t.open("GET", URL.createObjectURL(e), !1), t.send(), 200 !== t.status && 0 !== t.status) throw new Error("Bad File access: " + t.status);return { type: e.type, stringContents: t.responseText, name: e.name, lastModified: e.lastModified };
}, revive: function revive(e) {
var t = e.name,
r = e.type,
n = e.stringContents,
i = e.lastModified;return new File([string2arraybuffer(n)], t, { type: r, lastModified: i });
}, replaceAsync: function replaceAsync(e) {
return new u.Promise(function (t, r) {
var n = new FileReader();n.addEventListener("load", function () {
t({ type: e.type, stringContents: n.result, name: e.name, lastModified: e.lastModified });
}), n.addEventListener("error", function () {
r(n.error);
}), n.readAsBinaryString(e);
});
} } },
N = { bigint: { test: function test(e) {
return "bigint" == typeof e;
}, replace: function replace(e) {
return String(e);
}, revive: function revive(e) {
return BigInt(e);
} } },
B = { bigintObject: { test: function test(e) {
return "object" === _typeof(e) && u.hasConstructorOf(e, BigInt);
}, replace: function replace(e) {
return String(e);
}, revive: function revive(e) {
return new Object(BigInt(e));
} } },
E = { cryptokey: { test: function test(e) {
return "CryptoKey" === u.toStringTag(e) && e.extractable;
}, replaceAsync: function replaceAsync(e) {
return new u.Promise(function (t, r) {
crypto.subtle.exportKey("jwk", e).catch(function (e) {
r(e);
}).then(function (r) {
t({ jwk: r, algorithm: e.algorithm, usages: e.usages });
});
});
}, revive: function revive(e) {
var t = e.jwk,
r = e.algorithm,
n = e.usages;return crypto.subtle.importKey("jwk", t, r, !0, n);
} } };return [l, y, p, v, h, d, b, { imagedata: { test: function test(e) {
return "ImageData" === u.toStringTag(e);
}, replace: function replace(e) {
return { array: _toConsumableArray(e.data), width: e.width, height: e.height };
}, revive: function revive(e) {
return new ImageData(new Uint8ClampedArray(e.array), e.width, e.height);
} } }, { imagebitmap: { test: function test(e) {
return "ImageBitmap" === u.toStringTag(e) || e && e.dataset && "ImageBitmap" === e.dataset.toStringTag;
}, replace: function replace(e) {
var t = document.createElement("canvas");return t.getContext("2d").drawImage(e, 0, 0), t.toDataURL();
}, revive: function revive(e) {
var t = document.createElement("canvas"),
r = t.getContext("2d"),
n = document.createElement("img");return n.addEventListener("load", function () {
r.drawImage(n, 0, 0);
}), n.src = e, t;
}, reviveAsync: function reviveAsync(e) {
var t = document.createElement("canvas"),
r = t.getContext("2d"),
n = document.createElement("img");return n.addEventListener("load", function () {
r.drawImage(n, 0, 0);
}), n.src = e, createImageBitmap(t);
} } }, $, { file: $.file, filelist: { test: function test(e) {
return "FileList" === u.toStringTag(e);
}, replace: function replace(e) {
for (var t = [], r = 0; r < e.length; r++) {
t[r] = e.item(r);
}return t;
}, revive: function revive(e) {
return new (function () {
function FileList() {
_classCallCheck(this, FileList), this._files = arguments[0], this.length = this._files.length;
}return function _createClass(e, t, r) {
return t && _defineProperties(e.prototype, t), r && _defineProperties(e, r), e;
}(FileList, [{ key: "item", value: function item(e) {
return this._files[e];
} }, { key: Symbol.toStringTag, get: function get() {
return "FileList";
} }]), FileList;
}())(e);
} } }, { blob: { test: function test(e) {
return "Blob" === u.toStringTag(e);
}, replace: function replace(e) {
var t = new XMLHttpRequest();if (t.overrideMimeType("text/plain; charset=x-user-defined"), t.open("GET", URL.createObjectURL(e), !1), t.send(), 200 !== t.status && 0 !== t.status) throw new Error("Bad Blob access: " + t.status);return { type: e.type, stringContents: t.responseText };
}, revive: function revive(e) {
var t = e.type,
r = e.stringContents;return new Blob([string2arraybuffer(r)], { type: t });
}, replaceAsync: function replaceAsync(e) {
return new u.Promise(function (t, r) {
var n = new FileReader();n.addEventListener("load", function () {
t({ type: e.type, stringContents: n.result });
}), n.addEventListener("error", function () {
r(n.error);
}), n.readAsBinaryString(e);
});
} } }].concat("function" == typeof Map ? g : [], "function" == typeof Set ? m : [], "function" == typeof ArrayBuffer ? T : [], "function" == typeof Uint8Array ? P : [], "function" == typeof DataView ? C : [], "undefined" != typeof Intl ? k : [], "undefined" != typeof crypto ? E : [], "undefined" != typeof BigInt ? [N, B] : []).concat({ checkDataCloneException: { test: function test(e) {
var t = {}.toString.call(e).slice(8, -1);if (["symbol", "function"].includes(_typeof(e)) || ["Arguments", "Module", "Error", "Promise", "WeakMap", "WeakSet", "Event", "MessageChannel"].includes(t) || e && "object" === _typeof(e) && "number" == typeof e.nodeType && "function" == typeof e.insertBefore) throw new DOMException("The object cannot be cloned.", "DataCloneError");return !1;
} } });
});
},{}],3:[function(_dereq_,module,exports){
"use strict";
var _typeof2 = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
function _typeof(e) {
return (_typeof = "function" == typeof Symbol && "symbol" == _typeof2(Symbol.iterator) ? function (e) {
return typeof e === "undefined" ? "undefined" : _typeof2(e);
} : function (e) {
return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e === "undefined" ? "undefined" : _typeof2(e);
})(e);
}function asyncGeneratorStep(e, t, n, r, o, a, i) {
try {
var c = e[a](i),
s = c.value;
} catch (e) {
return void n(e);
}c.done ? t(s) : Promise.resolve(s).then(r, o);
}function _asyncToGenerator(e) {
return function () {
var t = this,
n = arguments;return new Promise(function (r, o) {
var a = e.apply(t, n);function _next(e) {
asyncGeneratorStep(a, r, o, _next, _throw, "next", e);
}function _throw(e) {
asyncGeneratorStep(a, r, o, _next, _throw, "throw", e);
}_next(void 0);
});
};
}function _classCallCheck(e, t) {
if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function");
}function _defineProperties(e, t) {
for (var n = 0; n < t.length; n++) {
var r = t[n];r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(e, r.key, r);
}
}function _defineProperty(e, t, n) {
return t in e ? Object.defineProperty(e, t, { value: n, enumerable: !0, configurable: !0, writable: !0 }) : e[t] = n, e;
}function ownKeys(e, t) {
var n = Object.keys(e);if (Object.getOwnPropertySymbols) {
var r = Object.getOwnPropertySymbols(e);t && (r = r.filter(function (t) {
return Object.getOwnPropertyDescriptor(e, t).enumerable;
})), n.push.apply(n, r);
}return n;
}function _objectSpread2(e) {
for (var t = 1; t < arguments.length; t++) {
var n = null != arguments[t] ? arguments[t] : {};t % 2 ? ownKeys(Object(n), !0).forEach(function (t) {
_defineProperty(e, t, n[t]);
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(n)) : ownKeys(Object(n)).forEach(function (t) {
Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(n, t));
});
}return e;
}function _slicedToArray(e, t) {
return function _arrayWithHoles(e) {
if (Array.isArray(e)) return e;
}(e) || function _iterableToArrayLimit(e, t) {
if (!(Symbol.iterator in Object(e) || "[object Arguments]" === Object.prototype.toString.call(e))) return;var n = [],
r = !0,
o = !1,
a = void 0;try {
for (var i, c = e[Symbol.iterator](); !(r = (i = c.next()).done) && (n.push(i.value), !t || n.length !== t); r = !0) {}
} catch (e) {
o = !0, a = e;
} finally {
try {
r || null == c.return || c.return();
} finally {
if (o) throw a;
}
}return n;
}(e, t) || function _nonIterableRest() {
throw new TypeError("Invalid attempt to destructure non-iterable instance");
}();
}function _toConsumableArray(e) {
return function _arrayWithoutHoles(e) {
if (Array.isArray(e)) {
for (var t = 0, n = new Array(e.length); t < e.length; t++) {
n[t] = e[t];
}return n;
}
}(e) || function _iterableToArray(e) {
if (Symbol.iterator in Object(e) || "[object Arguments]" === Object.prototype.toString.call(e)) return Array.from(e);
}(e) || function _nonIterableSpread() {
throw new TypeError("Invalid attempt to spread non-iterable instance");
}();
}var e = function TypesonPromise(e) {
_classCallCheck(this, TypesonPromise), this.p = new Promise(e);
};e.__typeson__type__ = "TypesonPromise", "undefined" != typeof Symbol && (e.prototype[Symbol.toStringTag] = "TypesonPromise"), e.prototype.then = function (t, n) {
var r = this;return new e(function (e, o) {
r.p.then(function (n) {
e(t ? t(n) : n);
}).catch(function (e) {
return n ? n(e) : Promise.reject(e);
}).then(e, o);
});
}, e.prototype.catch = function (e) {
return this.then(null, e);
}, e.resolve = function (t) {
return new e(function (e) {
e(t);
});
}, e.reject = function (t) {
return new e(function (e, n) {
n(t);
});
}, ["all", "race"].forEach(function (t) {
e[t] = function (n) {
return new e(function (e, r) {
Promise[t](n.map(function (e) {
return e && e.constructor && "TypesonPromise" === e.constructor.__typeson__type__ ? e.p : e;
})).then(e, r);
});
};
});var t = {}.toString,
n = {}.hasOwnProperty,
r = Object.getPrototypeOf,
o = n.toString;function isThenable(e, t) {
return isObject(e) && "function" == typeof e.then && (!t || "function" == typeof e.catch);
}function toStringTag(e) {
return t.call(e).slice(8, -1);
}function hasConstructorOf(e, t) {
if (!e || "object" !== _typeof(e)) return !1;var a = r(e);if (!a) return null === t;var i = n.call(a, "constructor") && a.constructor;return "function" != typeof i ? null === t : t === i || null !== t && o.call(i) === o.call(t) || "function" == typeof t && "string" == typeof i.__typeson__type__ && i.__typeson__type__ === t.__typeson__type__;
}function isPlainObject(e) {
return !(!e || "Object" !== toStringTag(e)) && (!r(e) || hasConstructorOf(e, Object));
}function isObject(e) {
return e && "object" === _typeof(e);
}function escapeKeyPathComponent(e) {
return e.replace(/~/g, "~0").replace(/\./g, "~1");
}function unescapeKeyPathComponent(e) {
return e.replace(/~1/g, ".").replace(/~0/g, "~");
}function getByKeyPath(e, t) {
if ("" === t) return e;var n = t.indexOf(".");if (n > -1) {
var r = e[unescapeKeyPathComponent(t.slice(0, n))];return void 0 === r ? void 0 : getByKeyPath(r, t.slice(n + 1));
}return e[unescapeKeyPathComponent(t)];
}function setAtKeyPath(e, t, n) {
if ("" === t) return n;var r = t.indexOf(".");return r > -1 ? setAtKeyPath(e[unescapeKeyPathComponent(t.slice(0, r))], t.slice(r + 1), n) : (e[unescapeKeyPathComponent(t)] = n, e);
}var a = Object.keys,
i = Array.isArray,
c = {}.hasOwnProperty,
s = ["type", "replaced", "iterateIn", "iterateUnsetNumeric"];function nestedPathsFirst(e, t) {
if ("" === e.keypath) return -1;var n = e.keypath.match(/\./g) || 0,
r = t.keypath.match(/\./g) || 0;return n && (n = n.length), r && (r = r.length), n > r ? -1 : n < r ? 1 : e.keypath < t.keypath ? -1 : e.keypath > t.keypath;
}var u = function () {
function Typeson(e) {
_classCallCheck(this, Typeson), this.options = e, this.plainObjectReplacers = [], this.nonplainObjectReplacers = [], this.revivers = {}, this.types = {};
}return function _createClass(e, t, n) {
return t && _defineProperties(e.prototype, t), n && _defineProperties(e, n), e;
}(Typeson, [{ key: "stringify", value: function stringify(e, t, n, r) {
r = _objectSpread2({}, this.options, {}, r, { stringification: !0 });var o = this.encapsulate(e, null, r);return i(o) ? JSON.stringify(o[0], t, n) : o.then(function (e) {
return JSON.stringify(e, t, n);
});
} }, { key: "stringifySync", value: function stringifySync(e, t, n, r) {
return this.stringify(e, t, n, _objectSpread2({ throwOnBadSyncType: !0 }, r, { sync: !0 }));
} }, { key: "stringifyAsync", value: function stringifyAsync(e, t, n, r) {
return this.stringify(e, t, n, _objectSpread2({ throwOnBadSyncType: !0 }, r, { sync: !1 }));
} }, { key: "parse", value: function parse(e, t, n) {
return n = _objectSpread2({}, this.options, {}, n