objectmodel 4.4.4 → 4.4.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintignore +8 -8
- package/.eslintrc.json +25 -25
- package/LICENSE +22 -22
- package/README.md +67 -67
- package/build/add-banner.js +13 -13
- package/build/bundle-entry.dev.js +2 -2
- package/build/bundle-entry.js +11 -11
- package/dist/object-model.cjs +84 -83
- package/dist/object-model.js +84 -83
- package/dist/object-model.js.map +1 -1
- package/dist/object-model.min.js +2 -2
- package/dist/object-model.min.js.map +1 -1
- package/index.html +4 -4
- package/package.json +70 -70
- package/rollup.config.js +13 -13
- package/src/helpers.js +43 -43
- package/src/list-model.js +43 -43
- package/src/object-model.d.ts +8 -7
- package/src/object-model.js +1 -0
- package/test/basic-model.spec.cjs +272 -272
- package/test/bench/array.html +51 -51
- package/test/bench/bench-lib.js +49 -49
- package/test/bench/map-no-cast.html +53 -53
- package/test/bench/map-set.html +52 -52
- package/test/bench/map.html +51 -51
- package/test/bench/object-models.html +87 -87
- package/test/index.cjs +13 -13
- package/test/map-model.spec.cjs +236 -236
- package/test/model.spec.cjs +30 -30
- package/test/object-model.spec.cjs +2 -1
- package/test/object-model.test-d.ts +7 -2
- package/test/set-model.spec.cjs +222 -222
- package/test/umd.html +25 -25
package/dist/object-model.js
CHANGED
|
@@ -1,48 +1,48 @@
|
|
|
1
|
-
// ObjectModel v4.4.
|
|
1
|
+
// ObjectModel v4.4.5 - http://objectmodel.js.org
|
|
2
2
|
// MIT License - Sylvain Pollet-Villard
|
|
3
|
-
const
|
|
4
|
-
ObjectProto = Object.prototype,
|
|
5
|
-
bettertypeof = x => ObjectProto.toString.call(x).match(/\s([a-zA-Z]+)/)[1],
|
|
6
|
-
getProto = Object.getPrototypeOf,
|
|
7
|
-
setProto = Object.setPrototypeOf,
|
|
8
|
-
|
|
9
|
-
has = (o, prop) => ObjectProto.hasOwnProperty.call(o, prop),
|
|
10
|
-
is = (Constructor, obj) => obj instanceof Constructor,
|
|
11
|
-
isFunction = f => typeof f === "function",
|
|
12
|
-
isObject = o => o && typeof o === "object",
|
|
13
|
-
isString = s => typeof s === "string",
|
|
14
|
-
isPlainObject = o => isObject(o) && getProto(o) === ObjectProto,
|
|
15
|
-
isIterable = x => x && isFunction(x[Symbol.iterator]),
|
|
16
|
-
|
|
17
|
-
proxify = (val, traps) => new Proxy(val, traps),
|
|
18
|
-
|
|
19
|
-
merge = (target, src = {}) => {
|
|
20
|
-
for (let key in src) {
|
|
21
|
-
if (isPlainObject(src[key])) {
|
|
22
|
-
const o = {};
|
|
23
|
-
merge(o, target[key]);
|
|
24
|
-
merge(o, src[key]);
|
|
25
|
-
target[key] = o;
|
|
26
|
-
} else {
|
|
27
|
-
target[key] = src[key];
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
return target
|
|
31
|
-
},
|
|
32
|
-
|
|
33
|
-
define = (obj, key, value, enumerable = false) => {
|
|
34
|
-
Object.defineProperty(obj, key, { value, enumerable, writable: true, configurable: true });
|
|
35
|
-
},
|
|
36
|
-
|
|
37
|
-
extend = (child, parent, props) => {
|
|
38
|
-
child.prototype = Object.assign(Object.create(parent.prototype, {
|
|
39
|
-
constructor: {
|
|
40
|
-
value: child,
|
|
41
|
-
writable: true,
|
|
42
|
-
configurable: true
|
|
43
|
-
}
|
|
44
|
-
}), props);
|
|
45
|
-
setProto(child, parent);
|
|
3
|
+
const
|
|
4
|
+
ObjectProto = Object.prototype,
|
|
5
|
+
bettertypeof = x => ObjectProto.toString.call(x).match(/\s([a-zA-Z]+)/)[1],
|
|
6
|
+
getProto = Object.getPrototypeOf,
|
|
7
|
+
setProto = Object.setPrototypeOf,
|
|
8
|
+
|
|
9
|
+
has = (o, prop) => ObjectProto.hasOwnProperty.call(o, prop),
|
|
10
|
+
is = (Constructor, obj) => obj instanceof Constructor,
|
|
11
|
+
isFunction = f => typeof f === "function",
|
|
12
|
+
isObject = o => o && typeof o === "object",
|
|
13
|
+
isString = s => typeof s === "string",
|
|
14
|
+
isPlainObject = o => isObject(o) && getProto(o) === ObjectProto,
|
|
15
|
+
isIterable = x => x && isFunction(x[Symbol.iterator]),
|
|
16
|
+
|
|
17
|
+
proxify = (val, traps) => new Proxy(val, traps),
|
|
18
|
+
|
|
19
|
+
merge = (target, src = {}) => {
|
|
20
|
+
for (let key in src) {
|
|
21
|
+
if (isPlainObject(src[key])) {
|
|
22
|
+
const o = {};
|
|
23
|
+
merge(o, target[key]);
|
|
24
|
+
merge(o, src[key]);
|
|
25
|
+
target[key] = o;
|
|
26
|
+
} else {
|
|
27
|
+
target[key] = src[key];
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
return target
|
|
31
|
+
},
|
|
32
|
+
|
|
33
|
+
define = (obj, key, value, enumerable = false) => {
|
|
34
|
+
Object.defineProperty(obj, key, { value, enumerable, writable: true, configurable: true });
|
|
35
|
+
},
|
|
36
|
+
|
|
37
|
+
extend = (child, parent, props) => {
|
|
38
|
+
child.prototype = Object.assign(Object.create(parent.prototype, {
|
|
39
|
+
constructor: {
|
|
40
|
+
value: child,
|
|
41
|
+
writable: true,
|
|
42
|
+
configurable: true
|
|
43
|
+
}
|
|
44
|
+
}), props);
|
|
45
|
+
setProto(child, parent);
|
|
46
46
|
};
|
|
47
47
|
|
|
48
48
|
const
|
|
@@ -102,6 +102,7 @@ const
|
|
|
102
102
|
err.message = "expecting " + (err.path ? err.path + " to be " : "") + formatDefinition(err.expected)
|
|
103
103
|
+ ", got " + (err.received != null ? bettertypeof(err.received) + " " : "") + format$1(err.received);
|
|
104
104
|
}
|
|
105
|
+
err.model = model;
|
|
105
106
|
return err
|
|
106
107
|
});
|
|
107
108
|
|
|
@@ -520,45 +521,45 @@ extend(Any.remaining, Any, {
|
|
|
520
521
|
});
|
|
521
522
|
Any[Symbol.iterator] = function* () { yield new Any.remaining(this.definition); };
|
|
522
523
|
|
|
523
|
-
const initListModel = (base, constructor, def, init, clone, mutators, otherTraps) => {
|
|
524
|
-
|
|
525
|
-
return initModel(def, constructor, base, init, model => Object.assign({
|
|
526
|
-
getPrototypeOf: () => model.prototype,
|
|
527
|
-
get(l, key) {
|
|
528
|
-
if (key === _original) return l
|
|
529
|
-
|
|
530
|
-
const val = l[key];
|
|
531
|
-
return isFunction(val) ? proxify(val, {
|
|
532
|
-
apply(fn, ctx, args) {
|
|
533
|
-
if (has(mutators, key)) {
|
|
534
|
-
// indexes of arguments to check def + cast
|
|
535
|
-
const [begin, end = args.length - 1, getArgDef] = mutators[key];
|
|
536
|
-
for (let i = begin; i <= end; i++) {
|
|
537
|
-
const argDef = getArgDef ? getArgDef(i) : model.definition;
|
|
538
|
-
args[i] = checkDefinition(
|
|
539
|
-
args[i],
|
|
540
|
-
argDef,
|
|
541
|
-
`${base.name}.${key} arguments[${i}]`,
|
|
542
|
-
model.errors,
|
|
543
|
-
[],
|
|
544
|
-
true
|
|
545
|
-
);
|
|
546
|
-
}
|
|
547
|
-
|
|
548
|
-
if (model.assertions.length > 0) {
|
|
549
|
-
const testingClone = clone(l);
|
|
550
|
-
fn.apply(testingClone, args);
|
|
551
|
-
checkAssertions(testingClone, model, `after ${key} mutation`);
|
|
552
|
-
}
|
|
553
|
-
|
|
554
|
-
unstackErrors(model);
|
|
555
|
-
}
|
|
556
|
-
|
|
557
|
-
return fn.apply(l, args)
|
|
558
|
-
}
|
|
559
|
-
}) : val
|
|
560
|
-
}
|
|
561
|
-
}, otherTraps))
|
|
524
|
+
const initListModel = (base, constructor, def, init, clone, mutators, otherTraps) => {
|
|
525
|
+
|
|
526
|
+
return initModel(def, constructor, base, init, model => Object.assign({
|
|
527
|
+
getPrototypeOf: () => model.prototype,
|
|
528
|
+
get(l, key) {
|
|
529
|
+
if (key === _original) return l
|
|
530
|
+
|
|
531
|
+
const val = l[key];
|
|
532
|
+
return isFunction(val) ? proxify(val, {
|
|
533
|
+
apply(fn, ctx, args) {
|
|
534
|
+
if (has(mutators, key)) {
|
|
535
|
+
// indexes of arguments to check def + cast
|
|
536
|
+
const [begin, end = args.length - 1, getArgDef] = mutators[key];
|
|
537
|
+
for (let i = begin; i <= end; i++) {
|
|
538
|
+
const argDef = getArgDef ? getArgDef(i) : model.definition;
|
|
539
|
+
args[i] = checkDefinition(
|
|
540
|
+
args[i],
|
|
541
|
+
argDef,
|
|
542
|
+
`${base.name}.${key} arguments[${i}]`,
|
|
543
|
+
model.errors,
|
|
544
|
+
[],
|
|
545
|
+
true
|
|
546
|
+
);
|
|
547
|
+
}
|
|
548
|
+
|
|
549
|
+
if (model.assertions.length > 0) {
|
|
550
|
+
const testingClone = clone(l);
|
|
551
|
+
fn.apply(testingClone, args);
|
|
552
|
+
checkAssertions(testingClone, model, `after ${key} mutation`);
|
|
553
|
+
}
|
|
554
|
+
|
|
555
|
+
unstackErrors(model);
|
|
556
|
+
}
|
|
557
|
+
|
|
558
|
+
return fn.apply(l, args)
|
|
559
|
+
}
|
|
560
|
+
}) : val
|
|
561
|
+
}
|
|
562
|
+
}, otherTraps))
|
|
562
563
|
};
|
|
563
564
|
|
|
564
565
|
function ArrayModel(initialDefinition) {
|
package/dist/object-model.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"object-model.js","sources":["../src/helpers.js","../src/object-model.js","../src/list-model.js","../src/array-model.js","../src/set-model.js","../src/map-model.js","../src/function-model.js","../src/devtool-formatter.js"],"sourcesContent":["export const\n\tObjectProto = Object.prototype,\n\tbettertypeof = x => ObjectProto.toString.call(x).match(/\\s([a-zA-Z]+)/)[1],\n\tgetProto = Object.getPrototypeOf,\n\tsetProto = Object.setPrototypeOf,\n\n\thas = (o, prop) => ObjectProto.hasOwnProperty.call(o, prop),\n\tis = (Constructor, obj) => obj instanceof Constructor,\n\tisFunction = f => typeof f === \"function\",\n\tisObject = o => o && typeof o === \"object\",\n\tisString = s => typeof s === \"string\",\n\tisPlainObject = o => isObject(o) && getProto(o) === ObjectProto,\n\tisIterable = x => x && isFunction(x[Symbol.iterator]),\n\n\tproxify = (val, traps) => new Proxy(val, traps),\n\n\tmerge = (target, src = {}) => {\n\t\tfor (let key in src) {\n\t\t\tif (isPlainObject(src[key])) {\n\t\t\t\tconst o = {}\n\t\t\t\tmerge(o, target[key])\n\t\t\t\tmerge(o, src[key])\n\t\t\t\ttarget[key] = o\n\t\t\t} else {\n\t\t\t\ttarget[key] = src[key]\n\t\t\t}\n\t\t}\n\t\treturn target\n\t},\n\n\tdefine = (obj, key, value, enumerable = false) => {\n\t\tObject.defineProperty(obj, key, { value, enumerable, writable: true, configurable: true })\n\t},\n\n\textend = (child, parent, props) => {\n\t\tchild.prototype = Object.assign(Object.create(parent.prototype, {\n\t\t\tconstructor: {\n\t\t\t\tvalue: child,\n\t\t\t\twritable: true,\n\t\t\t\tconfigurable: true\n\t\t\t}\n\t\t}), props)\n\t\tsetProto(child, parent)\n\t}","import {\r\n\tbettertypeof, define, extend, getProto, has,\r\n\tis, isFunction, isObject, isPlainObject, isString,\r\n\tmerge, ObjectProto, proxify, setProto\r\n} from \"./helpers.js\"\r\n\r\nexport const\r\n\t_check = Symbol(),\r\n\t_checked = Symbol(), // used to skip validation at instanciation for perf\r\n\t_original = Symbol(), // used to bypass proxy\r\n\tCHECK_ONCE = Symbol(),\r\n\r\n\tinitModel = (def, constructor, parent, init, getTraps, useNew) => {\r\n\t\tconst model = function (val = model.default, mode) {\r\n\t\t\tif (useNew && !is(model, this)) return new model(val)\r\n\t\t\tif (init) val = init(val, model, this)\r\n\r\n\t\t\tif (mode === _checked || check(model, val))\r\n\t\t\t\treturn getTraps && mode !== CHECK_ONCE ? proxify(val, getTraps(model)) : val\r\n\t\t}\r\n\r\n\t\tif (parent) extend(model, parent)\r\n\t\tsetProto(model, constructor.prototype)\r\n\t\tmodel.constructor = constructor\r\n\t\tmodel.definition = def\r\n\t\tmodel.assertions = [...model.assertions]\r\n\t\tdefine(model, \"errors\", [])\r\n\t\tdelete model.name\r\n\t\treturn model\r\n\t},\r\n\r\n\tinitObjectModel = (obj, model, _this) => {\r\n\t\tif (is(model, obj)) return obj\r\n\r\n\t\tif (!isObject(obj) && !isFunction(obj) && obj !== undefined) {\r\n\t\t\t// short circuit validation if not receiving an object as expected\r\n\t\t\treturn obj\r\n\t\t}\r\n\r\n\t\tmerge(_this, model.default)\r\n\t\tif (model.parentClass) merge(obj, new model.parentClass(obj))\r\n\t\tmerge(_this, obj)\r\n\t\treturn _this\r\n\t},\r\n\r\n\textendModel = (child, parent, newProps) => {\r\n\t\textend(child, parent, newProps)\r\n\t\tchild.assertions.push(...parent.assertions)\r\n\t\treturn child\r\n\t},\r\n\r\n\tstackError = (errors, expected, received, path, message) => {\r\n\t\terrors.push({ expected, received, path, message })\r\n\t},\r\n\r\n\tunstackErrors = (model, collector = model.errorCollector) => {\r\n\t\tconst nbErrors = model.errors.length\r\n\t\tif (nbErrors > 0) {\r\n\t\t\tconst errors = model.errors.map(err => {\r\n\t\t\t\tif (!err.message) {\r\n\t\t\t\t\terr.message = \"expecting \" + (err.path ? err.path + \" to be \" : \"\") + formatDefinition(err.expected)\r\n\t\t\t\t\t\t+ \", got \" + (err.received != null ? bettertypeof(err.received) + \" \" : \"\") + format(err.received)\r\n\t\t\t\t}\r\n\t\t\t\treturn err\r\n\t\t\t})\r\n\r\n\t\t\tmodel.errors.length = 0\r\n\t\t\tcollector.call(model, errors) // throw all errors collected\r\n\t\t}\r\n\t\treturn nbErrors\r\n\t},\r\n\r\n\tisModelInstance = i => i && getProto(i) && is(Model, getProto(i).constructor),\r\n\r\n\tparseDefinition = (def) => {\r\n\t\tif (isPlainObject(def)) {\r\n\t\t\tdef = {}\r\n\t\t\tfor (let key in def) { def[key] = parseDefinition(def[key]) }\r\n\t\t}\r\n\t\tif (!Array.isArray(def)) return [def]\r\n\t\telse if (def.length === 1) return [def[0], undefined, null]\r\n\r\n\t\treturn def\r\n\t},\r\n\r\n\tformatDefinition = (def, stack) => {\r\n\t\tconst parts = parseDefinition(def).map(d => format(d, stack))\r\n\t\treturn parts.length > 1 ? parts.join(\" or \") : parts[0]\r\n\t},\r\n\r\n\tformatAssertions = fns => fns.length ? `(${fns.map(f => f.name || f.description || f)})` : \"\",\r\n\r\n\textendDefinition = (def, newParts = []) => {\r\n\t\tif (newParts.length > 0) {\r\n\t\t\tdef = [].concat(def, ...[].concat(newParts))// clone to lose ref\r\n\t\t\t\t.filter((value, index, self) => self.indexOf(value) === index) // remove duplicates\r\n\t\t}\r\n\r\n\t\treturn def\r\n\t},\r\n\r\n\tcheck = (model, obj) => {\r\n\t\tmodel[_check](obj, null, model.errors, [], true);\r\n\t\treturn !unstackErrors(model)\r\n\t},\r\n\r\n\tcheckDefinition = (obj, def, path, errors, stack, shouldCast) => {\r\n\t\tconst indexFound = stack.indexOf(def)\r\n\t\tif (indexFound !== -1 && stack.indexOf(def, indexFound + 1) !== -1)\r\n\t\t\treturn obj // if found twice in call stack, cycle detected, skip validation\r\n\r\n\t\tif (Array.isArray(def) && def.length === 1 && obj != null) {\r\n\t\t\tdef = def[0] // shorten validation path for optionals\r\n\t\t}\r\n\r\n\t\tif (is(Model, def)) {\r\n\t\t\tif (shouldCast) obj = cast(obj, def)\r\n\t\t\tdef[_check](obj, path, errors, stack.concat(def), shouldCast)\r\n\t\t}\r\n\t\telse if (isPlainObject(def)) {\r\n\t\t\tfor (let key in def) {\r\n\t\t\t\tconst val = obj ? obj[key] : undefined\r\n\t\t\t\tcheckDefinition(val, def[key], formatPath(path, key), errors, stack, shouldCast)\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\tconst pdef = parseDefinition(def)\r\n\t\t\tif (pdef.some(part => checkDefinitionPart(obj, part, path, stack, shouldCast))) {\r\n\t\t\t\treturn shouldCast ? cast(obj, def) : obj\r\n\t\t\t}\r\n\r\n\t\t\tstackError(errors, def, obj, path)\r\n\t\t}\r\n\r\n\t\treturn obj\r\n\t},\r\n\r\n\tcheckDefinitionPart = (obj, def, path, stack, shouldCast) => {\r\n\t\tif (def === Any) return true\r\n\t\tif (obj == null) return obj === def\r\n\t\tif (isPlainObject(def) || is(Model, def)) { // object or model as part of union type\r\n\t\t\tconst errors = []\r\n\t\t\tcheckDefinition(obj, def, path, errors, stack, shouldCast)\r\n\t\t\treturn !errors.length\r\n\t\t}\r\n\t\tif (is(RegExp, def)) return def.test(obj)\r\n\t\tif (def === Number || def === Date) return obj.constructor === def && !isNaN(obj)\r\n\t\treturn obj === def\r\n\t\t\t|| (isFunction(def) && is(def, obj))\r\n\t\t\t|| obj.constructor === def\r\n\t},\r\n\r\n\tcheckAssertions = (obj, model, path, errors = model.errors) => {\r\n\t\tfor (let assertion of model.assertions) {\r\n\t\t\tlet result\r\n\t\t\ttry {\r\n\t\t\t\tresult = assertion.call(model, obj)\r\n\t\t\t} catch (err) {\r\n\t\t\t\tresult = err\r\n\t\t\t}\r\n\t\t\tif (result !== true) {\r\n\t\t\t\tconst onFail = isFunction(assertion.description) ? assertion.description : (assertionResult, value) =>\r\n\t\t\t\t\t`assertion \"${assertion.description}\" returned ${format(assertionResult)} `\r\n\t\t\t\t\t+ `for ${path ? path + \" =\" : \"value\"} ${format(value)}`\r\n\t\t\t\tstackError(errors, assertion, obj, path, onFail.call(model, result, obj, path))\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tformat = (obj, stack = []) => {\r\n\t\tif (stack.length > 15 || stack.includes(obj)) return \"...\"\r\n\t\tif (obj === null || obj === undefined) return String(obj)\r\n\t\tif (isString(obj)) return `\"${obj}\"`\r\n\t\tif (is(Model, obj)) return obj.toString(stack)\r\n\r\n\t\tstack.unshift(obj)\r\n\r\n\t\tif (isFunction(obj)) return obj.name || obj.toString()\r\n\t\tif (is(Map, obj) || is(Set, obj)) return format([...obj])\r\n\t\tif (Array.isArray(obj)) return `[${obj.map(item => format(item, stack)).join(\", \")}]`\r\n\t\tif (obj.toString && obj.toString !== ObjectProto.toString) return obj.toString()\r\n\t\tif (isObject(obj)) {\r\n\t\t\tconst props = Object.keys(obj),\r\n\t\t\t\tindent = \"\\t\".repeat(stack.length)\r\n\t\t\treturn `{${props.map(\r\n\t\t\t\tkey => `\\n${indent + key}: ${format(obj[key], [...stack])}`\r\n\t\t\t).join(\", \")} ${props.length ? `\\n${indent.slice(1)}` : \"\"}}`\r\n\t\t}\r\n\r\n\t\treturn String(obj)\r\n\t},\r\n\r\n\tformatPath = (path, key) => path ? path + \".\" + key : key,\r\n\r\n\tcontrolMutation = (model, def, path, o, key, privateAccess, applyMutation) => {\r\n\t\tconst newPath = formatPath(path, key),\r\n\t\t\tisPrivate = model.conventionForPrivate(key),\r\n\t\t\tisConstant = model.conventionForConstant(key),\r\n\t\t\tisOwnProperty = has(o, key),\r\n\t\t\tinitialPropDescriptor = isOwnProperty && Object.getOwnPropertyDescriptor(o, key)\r\n\r\n\t\tif (key in def && ((isPrivate && !privateAccess) || (isConstant && o[key] !== undefined)))\r\n\t\t\tcannot(`modify ${isPrivate ? \"private\" : \"constant\"} property ${key}`, model)\r\n\r\n\t\tapplyMutation()\r\n\t\tif (has(def, key)) checkDefinition(o[key], def[key], newPath, model.errors, [])\r\n\t\tcheckAssertions(o, model, newPath)\r\n\r\n\t\tconst nbErrors = model.errors.length\r\n\t\tif (nbErrors) {\r\n\t\t\tif (isOwnProperty) Object.defineProperty(o, key, initialPropDescriptor)\r\n\t\t\telse delete o[key] // back to the initial property defined in prototype chain\r\n\r\n\t\t\tunstackErrors(model)\r\n\t\t}\r\n\r\n\t\treturn !nbErrors\r\n\t},\r\n\r\n\tcannot = (msg, model) => {\r\n\t\tmodel.errors.push({ message: \"cannot \" + msg })\r\n\t},\r\n\r\n\tcast = (obj, defNode = []) => {\r\n\t\tif (!obj || isPlainObject(defNode) || is(BasicModel, defNode) || isModelInstance(obj))\r\n\t\t\treturn obj // no value or not leaf or already a model instance\r\n\r\n\t\tconst def = parseDefinition(defNode),\r\n\t\t\tsuitableModels = []\r\n\r\n\t\tfor (let part of def) {\r\n\t\t\tif (is(Model, part) && !is(BasicModel, part) && part.test(obj))\r\n\t\t\t\tsuitableModels.push(part)\r\n\t\t}\r\n\r\n\t\tif (suitableModels.length === 1) {\r\n\t\t\t// automatically cast to suitable model when explicit (autocasting)\r\n\t\t\treturn new suitableModels[0](obj, _checked)\r\n\t\t}\r\n\r\n\t\tif (suitableModels.length > 1)\r\n\t\t\tconsole.warn(`Ambiguous model for value ${format(obj)}, could be ${suitableModels.join(\" or \")}`)\r\n\r\n\t\treturn obj\r\n\t},\r\n\r\n\r\n\tgetProp = (val, model, def, path, privateAccess) => {\r\n\t\tif (!isPlainObject(def)) return cast(val, def)\r\n\t\treturn proxify(val, getTraps(model, def, path, privateAccess))\r\n\t},\r\n\r\n\tgetTraps = (model, def, path, privateAccess) => {\r\n\t\tconst grantPrivateAccess = f => proxify(f, {\r\n\t\t\tapply(fn, ctx, args) {\r\n\t\t\t\tprivateAccess = true\r\n\t\t\t\tconst result = Reflect.apply(fn, ctx, args)\r\n\t\t\t\tprivateAccess = false\r\n\t\t\t\treturn result\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\treturn {\r\n\t\t\tget(o, key) {\r\n\t\t\t\tif (key === _original) return o\r\n\r\n\t\t\t\tif (!isString(key)) return Reflect.get(o, key)\r\n\r\n\t\t\t\tconst newPath = formatPath(path, key)\r\n\t\t\t\tconst inDef = has(def, key)\r\n\t\t\t\tconst defPart = def[key]\r\n\r\n\t\t\t\tif (!privateAccess && inDef && model.conventionForPrivate(key)) {\r\n\t\t\t\t\tcannot(`access to private property ${newPath}`, model)\r\n\t\t\t\t\tunstackErrors(model)\r\n\t\t\t\t\treturn\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet value = o[key]\r\n\r\n\t\t\t\tif (inDef && value && has(o, key) && !isPlainObject(defPart) && !isModelInstance(value)) {\r\n\t\t\t\t\tReflect.set(o, key, value = cast(value, defPart)) // cast nested models\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (isFunction(value) && key !== \"constructor\" && !privateAccess) {\r\n\t\t\t\t\treturn grantPrivateAccess(value)\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (isPlainObject(defPart) && !value) {\r\n\t\t\t\t\to[key] = value = {} // null-safe traversal\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn getProp(value, model, defPart, newPath, privateAccess)\r\n\t\t\t},\r\n\r\n\t\t\tset(o, key, val) {\r\n\t\t\t\treturn controlMutation(model, def, path, o, key, privateAccess, () => Reflect.set(o, key, cast(val, def[key])))\r\n\t\t\t},\r\n\r\n\t\t\tdeleteProperty(o, key) {\r\n\t\t\t\treturn controlMutation(model, def, path, o, key, privateAccess, () => Reflect.deleteProperty(o, key))\r\n\t\t\t},\r\n\r\n\t\t\tdefineProperty(o, key, args) {\r\n\t\t\t\treturn controlMutation(model, def, path, o, key, privateAccess, () => Reflect.defineProperty(o, key, args))\r\n\t\t\t},\r\n\r\n\t\t\thas(o, key) {\r\n\t\t\t\treturn Reflect.has(o, key) && Reflect.has(def, key) && !model.conventionForPrivate(key)\r\n\t\t\t},\r\n\r\n\t\t\townKeys(o) {\r\n\t\t\t\treturn Reflect.ownKeys(o).filter(key => Reflect.has(def, key) && !model.conventionForPrivate(key))\r\n\t\t\t},\r\n\r\n\t\t\tgetOwnPropertyDescriptor(o, key) {\r\n\t\t\t\tlet descriptor\r\n\t\t\t\tif (!model.conventionForPrivate(key)) {\r\n\t\t\t\t\tdescriptor = Object.getOwnPropertyDescriptor(def, key)\r\n\t\t\t\t\tif (descriptor !== undefined) descriptor.value = o[key]\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn descriptor\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\nexport function Model(def) {\r\n\treturn isPlainObject(def) ? new ObjectModel(def) : new BasicModel(def)\r\n}\r\n\r\nObject.assign(Model.prototype, {\r\n\tname: \"Model\",\r\n\tassertions: [],\r\n\r\n\tconventionForConstant: key => key.toUpperCase() === key,\r\n\tconventionForPrivate: key => key[0] === \"_\",\r\n\r\n\ttoString(stack) {\r\n\t\treturn has(this, \"name\") ? this.name : formatDefinition(this.definition, stack) + formatAssertions(this.assertions)\r\n\t},\r\n\r\n\tas(name) {\r\n\t\tdefine(this, \"name\", name)\r\n\t\treturn this\r\n\t},\r\n\r\n\tdefaultTo(val) {\r\n\t\tthis.default = this(val)\r\n\t\treturn this\r\n\t},\r\n\r\n\t[_check](obj, path, errors, stack, shouldCast) {\r\n\t\tcheckDefinition(obj, this.definition, path, errors, stack, shouldCast)\r\n\t\tcheckAssertions(obj, this, path, errors)\r\n\t},\r\n\r\n\ttest(obj, errorCollector) {\r\n\t\tlet model = this\r\n\t\twhile (!has(model, \"errorCollector\")) {\r\n\t\t\tmodel = getProto(model)\r\n\t\t}\r\n\r\n\t\tconst initialErrorCollector = model.errorCollector\r\n\t\tlet failed\r\n\r\n\t\tmodel.errorCollector = errors => {\r\n\t\t\tfailed = true\r\n\t\t\tif (errorCollector) errorCollector.call(this, errors)\r\n\t\t}\r\n\r\n\t\tnew this(obj) // may trigger errorCollector\r\n\r\n\t\tmodel.errorCollector = initialErrorCollector\r\n\t\treturn !failed\r\n\t},\r\n\r\n\terrorCollector(errors) {\r\n\t\tconst e = new TypeError(errors.map(e => e.message).join(\"\\n\"))\r\n\t\te.stack = e.stack.replace(/\\n.*object-model(.|\\n)*object-model.*/, \"\") // blackbox objectmodel in stacktrace\r\n\t\tthrow e\r\n\t},\r\n\r\n\tassert(assertion, description = format(assertion)) {\r\n\t\tdefine(assertion, \"description\", description)\r\n\t\tthis.assertions = this.assertions.concat(assertion)\r\n\t\treturn this\r\n\t}\r\n})\r\n\r\nModel.CHECK_ONCE = CHECK_ONCE\r\n\r\nexport function BasicModel(def) {\r\n\treturn initModel(def, BasicModel)\r\n}\r\n\r\nextend(BasicModel, Model, {\r\n\textend(...newParts) {\r\n\t\tconst child = extendModel(new BasicModel(extendDefinition(this.definition, newParts)), this)\r\n\t\tfor (let part of newParts) {\r\n\t\t\tif (is(BasicModel, part)) child.assertions.push(...part.assertions)\r\n\t\t}\r\n\r\n\t\treturn child\r\n\t}\r\n})\r\n\r\nexport function ObjectModel(def) {\r\n\treturn initModel(def, ObjectModel, Object, initObjectModel, model => getTraps(model, def), true)\r\n}\r\n\r\nextend(ObjectModel, Model, {\r\n\tdefaultTo(obj) {\r\n\t\tconst def = this.definition\r\n\t\tfor (let key in obj) {\r\n\t\t\tif (has(def, key)) {\r\n\t\t\t\tobj[key] = checkDefinition(obj[key], def[key], key, this.errors, [], true)\r\n\t\t\t}\r\n\t\t}\r\n\t\tunstackErrors(this)\r\n\t\tthis.default = obj;\r\n\t\treturn this\r\n\t},\r\n\r\n\ttoString(stack) {\r\n\t\treturn format(this.definition, stack)\r\n\t},\r\n\r\n\textend(...newParts) {\r\n\t\tconst definition = { ...this.definition }\r\n\t\tconst proto = { ...this.prototype }\r\n\t\tconst defaults = { ...this.default }\r\n\t\tconst newAssertions = []\r\n\r\n\t\tfor (let part of newParts) {\r\n\t\t\tif (is(Model, part)) {\r\n\t\t\t\tmerge(definition, part.definition)\r\n\t\t\t\tmerge(defaults, part.default)\r\n\t\t\t\tnewAssertions.push(...part.assertions)\r\n\t\t\t}\r\n\t\t\tif (isFunction(part)) merge(proto, part.prototype)\r\n\t\t\tif (isObject(part)) merge(definition, part)\r\n\t\t}\r\n\r\n\t\tconst submodel = extendModel(new ObjectModel(definition), this, proto).defaultTo(defaults)\r\n\t\tsubmodel.assertions = [...this.assertions, ...newAssertions]\r\n\r\n\t\tif (getProto(this) !== ObjectModel.prototype) { // extended class\r\n\t\t\tsubmodel.parentClass = this\r\n\t\t}\r\n\r\n\t\treturn submodel\r\n\t},\r\n\r\n\t[_check](obj, path, errors, stack, shouldCast) {\r\n\t\tif (isObject(obj)) {\r\n\t\t\tcheckDefinition(obj[_original] || obj, this.definition, path, errors, stack, shouldCast)\r\n\t\t}\r\n\t\telse stackError(errors, this, obj, path)\r\n\r\n\t\tcheckAssertions(obj, this, path, errors)\r\n\t}\r\n})\r\n\r\nexport const Any = proxify(BasicModel(), {\r\n\tapply(target, ctx, [def]) {\r\n\t\tconst anyOf = Object.create(Any)\r\n\t\tanyOf.definition = def;\r\n\t\treturn anyOf\r\n\t}\r\n})\r\nAny.definition = Any\r\nAny.toString = () => \"Any\"\r\n\r\nAny.remaining = function (def) { this.definition = def }\r\nextend(Any.remaining, Any, {\r\n\ttoString() { return \"...\" + formatDefinition(this.definition) }\r\n})\r\nAny[Symbol.iterator] = function* () { yield new Any.remaining(this.definition) }","\nimport { _original, checkAssertions, checkDefinition, initModel, unstackErrors } from \"./object-model.js\"\nimport { has, isFunction, proxify } from \"./helpers.js\"\n\nexport const initListModel = (base, constructor, def, init, clone, mutators, otherTraps) => {\n\n\treturn initModel(def, constructor, base, init, model => Object.assign({\n\t\tgetPrototypeOf: () => model.prototype,\n\t\tget(l, key) {\n\t\t\tif (key === _original) return l\n\n\t\t\tconst val = l[key]\n\t\t\treturn isFunction(val) ? proxify(val, {\n\t\t\t\tapply(fn, ctx, args) {\n\t\t\t\t\tif (has(mutators, key)) {\n\t\t\t\t\t\t// indexes of arguments to check def + cast\n\t\t\t\t\t\tconst [begin, end = args.length - 1, getArgDef] = mutators[key]\n\t\t\t\t\t\tfor (let i = begin; i <= end; i++) {\n\t\t\t\t\t\t\tconst argDef = getArgDef ? getArgDef(i) : model.definition\n\t\t\t\t\t\t\targs[i] = checkDefinition(\n\t\t\t\t\t\t\t\targs[i],\n\t\t\t\t\t\t\t\targDef,\n\t\t\t\t\t\t\t\t`${base.name}.${key} arguments[${i}]`,\n\t\t\t\t\t\t\t\tmodel.errors,\n\t\t\t\t\t\t\t\t[],\n\t\t\t\t\t\t\t\ttrue\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (model.assertions.length > 0) {\n\t\t\t\t\t\t\tconst testingClone = clone(l)\n\t\t\t\t\t\t\tfn.apply(testingClone, args)\n\t\t\t\t\t\t\tcheckAssertions(testingClone, model, `after ${key} mutation`)\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tunstackErrors(model)\n\t\t\t\t\t}\n\n\t\t\t\t\treturn fn.apply(l, args)\n\t\t\t\t}\n\t\t\t}) : val\n\t\t}\n\t}, otherTraps))\n}","import {\r\n\t_original, _check, cast, checkAssertions, checkDefinition,\r\n\textendDefinition, extendModel, formatDefinition, Model, stackError, unstackErrors\r\n} from \"./object-model.js\"\r\nimport { initListModel } from \"./list-model.js\"\r\nimport { extend } from \"./helpers.js\"\r\n\r\nexport default function ArrayModel(initialDefinition) {\r\n\tconst model = initListModel(\r\n\t\tArray,\r\n\t\tArrayModel,\r\n\t\tinitialDefinition,\r\n\t\ta => Array.isArray(a) ? a.map(arg => cast(arg, model.definition)) : a,\r\n\t\ta => [...a],\r\n\t\t{\r\n\t\t\t\"copyWithin\": [],\r\n\t\t\t\"fill\": [0, 0],\r\n\t\t\t\"pop\": [],\r\n\t\t\t\"push\": [0],\r\n\t\t\t\"reverse\": [],\r\n\t\t\t\"shift\": [],\r\n\t\t\t\"sort\": [],\r\n\t\t\t\"splice\": [2],\r\n\t\t\t\"unshift\": [0]\r\n\t\t},\r\n\t\t{\r\n\t\t\tset(arr, key, val) {\r\n\t\t\t\treturn controlMutation(model, arr, key, val, (a, v) => a[key] = v, true)\r\n\t\t\t},\r\n\r\n\t\t\tdeleteProperty(arr, key) {\r\n\t\t\t\treturn controlMutation(model, arr, key, undefined, a => delete a[key])\r\n\t\t\t}\r\n\t\t}\r\n\t)\r\n\r\n\treturn model\r\n}\r\n\r\nextend(ArrayModel, Model, {\r\n\ttoString(stack) {\r\n\t\treturn \"Array of \" + formatDefinition(this.definition, stack)\r\n\t},\r\n\r\n\t[_check](arr, path, errors, stack, shouldCast) {\r\n\t\tif (Array.isArray(arr))\r\n\t\t\t(arr[_original] || arr).forEach((a, i) => checkDefinition(a, this.definition, `${path || \"Array\"}[${i}]`, errors, stack, shouldCast))\r\n\t\telse stackError(errors, this, arr, path)\r\n\r\n\t\tcheckAssertions(arr, this, path, errors)\r\n\t},\r\n\r\n\textend(...newParts) {\r\n\t\treturn extendModel(new ArrayModel(extendDefinition(this.definition, newParts)), this)\r\n\t}\r\n})\r\n\r\nconst controlMutation = (model, array, key, value, applyMutation, canBeExtended) => {\r\n\tconst path = `Array[${key}]`\r\n\tconst isInDef = (+key >= 0 && (canBeExtended || key in array))\r\n\tif (isInDef) value = checkDefinition(value, model.definition, path, model.errors, [], true)\r\n\r\n\tconst testArray = [...array]\r\n\tapplyMutation(testArray)\r\n\tcheckAssertions(testArray, model, path)\r\n\tconst isSuccess = !unstackErrors(model)\r\n\tif (isSuccess) applyMutation(array, value)\r\n\treturn isSuccess\r\n}","import {\r\n\t_check, cast, checkAssertions, checkDefinition,\r\n\textendDefinition, extendModel, formatDefinition, Model, stackError\r\n} from \"./object-model.js\"\r\nimport { initListModel } from \"./list-model.js\"\r\nimport { extend, is, isIterable } from \"./helpers.js\"\r\n\r\nexport default function SetModel(initialDefinition) {\r\n\tconst model = initListModel(\r\n\t\tSet,\r\n\t\tSetModel,\r\n\t\tinitialDefinition,\r\n\t\tit => isIterable(it) ? new Set([...it].map(val => cast(val, model.definition))) : it,\r\n\t\tset => new Set(set),\r\n\t\t{\r\n\t\t\t\"add\": [0, 0],\r\n\t\t\t\"delete\": [],\r\n\t\t\t\"clear\": []\r\n\t\t}\r\n\t)\r\n\r\n\treturn model\r\n}\r\n\r\nextend(SetModel, Model, {\r\n\ttoString(stack) {\r\n\t\treturn \"Set of \" + formatDefinition(this.definition, stack)\r\n\t},\r\n\r\n\t[_check](set, path, errors, stack, shouldCast) {\r\n\t\tif (is(Set, set)) {\r\n\t\t\tfor (let item of set.values()) {\r\n\t\t\t\tcheckDefinition(item, this.definition, `${path || \"Set\"} value`, errors, stack, shouldCast)\r\n\t\t\t}\r\n\t\t} else stackError(errors, this, set, path)\r\n\t\tcheckAssertions(set, this, path, errors)\r\n\t},\r\n\r\n\textend(...newParts) {\r\n\t\treturn extendModel(new SetModel(extendDefinition(this.definition, newParts)), this)\r\n\t}\r\n})","import {\r\n\t_check, cast, checkAssertions, checkDefinition,\r\n\textendDefinition, extendModel, format, formatDefinition, Model, stackError\r\n} from \"./object-model.js\"\r\nimport { initListModel } from \"./list-model.js\"\r\nimport { extend, is, isIterable } from \"./helpers.js\"\r\n\r\nexport default function MapModel(initialKeyDefinition, initialValueDefinition) {\r\n\tconst getDef = i => i === 0 ? model.definition.key : model.definition.value;\r\n\tconst model = initListModel(\r\n\t\tMap,\r\n\t\tMapModel,\r\n\t\t{ key: initialKeyDefinition, value: initialValueDefinition },\r\n\t\tit => isIterable(it) ? new Map([...it].map(pair => pair.map((x, i) => cast(x, getDef(i))))) : it,\r\n\t\tmap => new Map(map),\r\n\t\t{\r\n\t\t\t\"set\": [0, 1, getDef],\r\n\t\t\t\"delete\": [],\r\n\t\t\t\"clear\": []\r\n\t\t}\r\n\t)\r\n\r\n\treturn model\r\n}\r\n\r\nextend(MapModel, Model, {\r\n\ttoString(stack) {\r\n\t\treturn `Map of ${formatDefinition(this.definition.key, stack)} : ${formatDefinition(this.definition.value, stack)}`\r\n\t},\r\n\r\n\t[_check](map, path, errors, stack, shouldCast) {\r\n\t\tif (is(Map, map)) {\r\n\t\t\tpath = path || \"Map\"\r\n\t\t\tfor (let [key, value] of map) {\r\n\t\t\t\tcheckDefinition(key, this.definition.key, `${path} key`, errors, stack, shouldCast)\r\n\t\t\t\tcheckDefinition(value, this.definition.value, `${path}[${format(key)}]`, errors, stack, shouldCast)\r\n\t\t\t}\r\n\t\t} else stackError(errors, this, map, path)\r\n\r\n\t\tcheckAssertions(map, this, path, errors)\r\n\t},\r\n\r\n\textend(keyParts, valueParts) {\r\n\t\treturn extendModel(new MapModel(\r\n\t\t\textendDefinition(this.definition.key, keyParts),\r\n\t\t\textendDefinition(this.definition.value, valueParts)\r\n\t\t), this)\r\n\t}\r\n})","import {\r\n\t_check, _original, Any, checkAssertions, checkDefinition, extendDefinition, extendModel,\r\n\tformatDefinition, initModel, Model, stackError, unstackErrors\r\n} from \"./object-model.js\"\r\nimport { extend, is, isFunction } from \"./helpers.js\"\r\n\r\nexport default function FunctionModel(...argsDef) {\r\n\treturn initModel({ arguments: argsDef }, FunctionModel, Function, null, model => ({\r\n\t\tgetPrototypeOf: () => model.prototype,\r\n\r\n\t\tget(fn, key) {\r\n\t\t\treturn key === _original ? fn : fn[key]\r\n\t\t},\r\n\r\n\t\tapply(fn, ctx, args) {\r\n\t\t\tconst def = model.definition\r\n\t\t\tconst remainingArgDef = def.arguments.find(argDef => is(Any.remaining, argDef))\r\n\t\t\tconst nbArgsToCheck = remainingArgDef ? Math.max(args.length, def.arguments.length - 1) : def.arguments.length\r\n\r\n\t\t\tfor (let i = 0; i < nbArgsToCheck; i++) {\r\n\t\t\t\tconst argDef = remainingArgDef && i >= def.arguments.length - 1 ? remainingArgDef.definition : def.arguments[i]\r\n\t\t\t\targs[i] = checkDefinition(args[i], argDef, `arguments[${i}]`, model.errors, [], true)\r\n\t\t\t}\r\n\r\n\t\t\tcheckAssertions(args, model, \"arguments\")\r\n\r\n\t\t\tlet result\r\n\t\t\tif (!model.errors.length) {\r\n\t\t\t\tresult = Reflect.apply(fn, ctx, args)\r\n\t\t\t\tif (\"return\" in def)\r\n\t\t\t\t\tresult = checkDefinition(result, def.return, \"return value\", model.errors, [], true)\r\n\t\t\t}\r\n\t\t\tunstackErrors(model)\r\n\t\t\treturn result\r\n\t\t}\r\n\t}))\r\n}\r\n\r\nextend(FunctionModel, Model, {\r\n\ttoString(stack = []) {\r\n\t\tlet out = `Function(${this.definition.arguments.map(\r\n\t\t\targDef => formatDefinition(argDef, [...stack])\r\n\t\t).join(\", \")})`\r\n\r\n\t\tif (\"return\" in this.definition) {\r\n\t\t\tout += \" => \" + formatDefinition(this.definition.return, stack)\r\n\t\t}\r\n\t\treturn out\r\n\t},\r\n\r\n\treturn(def) {\r\n\t\tthis.definition.return = def\r\n\t\treturn this\r\n\t},\r\n\r\n\t[_check](f, path, errors) {\r\n\t\tif (!isFunction(f)) stackError(errors, \"Function\", f, path)\r\n\t}\r\n})","import { _original, Model, Any, BasicModel, ObjectModel } from \"./object-model.js\"\r\nimport ArrayModel from \"./array-model.js\"\r\nimport SetModel from \"./set-model.js\"\r\nimport MapModel from \"./map-model.js\"\r\nimport FunctionModel from \"./function-model.js\"\r\nimport { getProto, has, is, isFunction, isPlainObject } from \"./helpers.js\"\r\n\r\nconst styles = {\r\n\tlist: \"list-style-type: none; padding: 0; margin: 0;\",\r\n\tlistItem: \"padding: 0 0 0 1em;\",\r\n\tmodel: \"color: #3e999f;\",\r\n\tinstance: \"color: #718c00; font-style: italic\",\r\n\tfunction: \"color: #4271AE\",\r\n\tstring: \"color: #C41A16\",\r\n\tnumber: \"color: #1C00CF\",\r\n\tboolean: \"color: #AA0D91\",\r\n\tproperty: \"color: #8959a8\",\r\n\tprivate: \"color: #C19ED8\",\r\n\tconstant: \"color: #8959a8; font-weight: bold\",\r\n\tprivateConstant: \"color: #C19ED8; font-weight: bold\",\r\n\tnull: \"color: #8e908c\",\r\n\tundeclared: \"color: #C0C0C0;\",\r\n\tproto: \"color: #B871BD; font-style: italic\"\r\n};\r\n\r\nconst getModel = (instance) => {\r\n\tif (instance === undefined || instance === null)\r\n\t\treturn null\r\n\r\n\tconst proto = getProto(instance);\r\n\tif (!proto || !proto.constructor || !is(Model, proto.constructor))\r\n\t\treturn null\r\n\r\n\treturn proto.constructor\r\n}\r\n\r\nconst span = (style, ...children) => [\"span\", { style }, ...children]\r\n\r\nconst format = (x, config = {}) => {\r\n\tif (x === null || x === undefined)\r\n\t\treturn span(styles.null, \"\" + x);\r\n\r\n\tif (typeof x === \"boolean\")\r\n\t\treturn span(styles.boolean, x);\r\n\r\n\tif (typeof x === \"number\")\r\n\t\treturn span(styles.number, x);\r\n\r\n\tif (typeof x === \"string\")\r\n\t\treturn span(styles.string, `\"${x}\"`);\r\n\r\n\tif (Array.isArray(x) && config.isModelDefinition) {\r\n\t\treturn span(\"\", ...x.flatMap(part => [format(part, config), \" or \"]).slice(0, -1))\r\n\t}\r\n\r\n\tif (isPlainObject(x))\r\n\t\treturn formatObject(x, getModel(x), config)\r\n\r\n\tif (isFunction(x) && !is(Model, x) && config.isModelDefinition)\r\n\t\treturn span(styles.function, x.name || x.toString());\r\n\r\n\treturn [\"object\", { object: x, config }]\r\n}\r\n\r\nconst formatObject = (o, model, config) => span(\"\",\r\n\t\"{\",\r\n\t[\"ol\", { style: styles.list }, ...Object.keys(o).map(prop =>\r\n\t\t[\"li\", { style: styles.listItem }, span(styles.property, prop), \": \", format(o[prop], config)])\r\n\t],\r\n\t\"}\"\r\n)\r\n\r\nconst formatModel = model => {\r\n\tconst\r\n\t\tcfg = { isModelDefinition: true },\r\n\t\tdef = model.definition,\r\n\t\tformatList = (list, map) => list.flatMap(e => [map(e), \", \"]).slice(0, -1);\r\n\tlet parts = []\r\n\r\n\tif (is(BasicModel, model)) parts = [format(def, cfg)]\r\n\tif (is(ArrayModel, model)) parts = [\"Array of \", format(def, cfg)]\r\n\tif (is(SetModel, model)) parts = [\"Set of \", format(def, cfg)]\r\n\tif (is(MapModel, model)) parts = [\"Map of \", format(def.key, cfg), \" : \", format(def.value, cfg)]\r\n\tif (is(FunctionModel, model)) {\r\n\t\tparts = [\"Function(\", ...formatList(def.arguments, arg => format(arg, cfg)), \")\"]\r\n\t\tif (\"return\" in def) parts.push(\" => \", format(def.return, cfg))\r\n\t}\r\n\r\n\tif (model.assertions.length > 0) {\r\n\t\tparts.push(\"\\n(assertions: \", ...formatList(model.assertions, f => [\"object\", { object: f }]), \")\")\r\n\t}\r\n\r\n\treturn span(styles.model, ...parts)\r\n}\r\n\r\nconst ModelFormatter = {\r\n\theader(x, config = {}) {\r\n\t\tif (x === Any)\r\n\t\t\treturn span(styles.model, \"Any\")\r\n\r\n\t\tif (is(Any.remaining, x))\r\n\t\t\treturn span(styles.model, \"...\", format(x.definition, { isModelDefinition: true }))\r\n\r\n\t\tif (is(ObjectModel, x))\r\n\t\t\treturn span(styles.model, x.name)\r\n\r\n\t\tif (is(Model, x)) {\r\n\t\t\treturn formatModel(x)\r\n\t\t}\r\n\r\n\t\tif (config.isModelDefinition && isPlainObject(x))\r\n\t\t\treturn format(x, config)\r\n\r\n\t\treturn null;\r\n\t},\r\n\thasBody(x) {\r\n\t\treturn is(ObjectModel, x)\r\n\t},\r\n\tbody(model) {\r\n\t\treturn span(\"\",\r\n\t\t\t\"{\",\r\n\t\t\t[\"ol\", { style: styles.list }, ...Object.keys(model.definition).map(prop => {\r\n\t\t\t\tconst isPrivate = model.conventionForPrivate(prop)\r\n\t\t\t\tconst isConstant = model.conventionForConstant(prop)\r\n\t\t\t\tconst hasDefault = model.default && has(model.default, prop);\r\n\t\t\t\tlet style = styles.property;\r\n\r\n\t\t\t\tif (isPrivate) {\r\n\t\t\t\t\tstyle = isConstant ? styles.privateConstant : styles.private\r\n\t\t\t\t} else if (isConstant) {\r\n\t\t\t\t\tstyle = styles.constant\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn [\"li\", { style: styles.listItem },\r\n\t\t\t\t\tspan(style, prop), \": \", format(model.definition[prop], { isModelDefinition: true }),\r\n\t\t\t\t\thasDefault ? span(styles.proto, \" = \", format(model.default[prop])) : \"\"\r\n\t\t\t\t]\r\n\t\t\t})],\r\n\t\t\t\"}\"\r\n\t\t)\r\n\t}\r\n}\r\n\r\nconst ModelInstanceFormatter = {\r\n\theader(x, config = {}) {\r\n\t\tif (config.isInstanceProperty && isPlainObject(x)) {\r\n\t\t\treturn format(x, config)\r\n\t\t}\r\n\r\n\t\tconst model = getModel(x);\r\n\t\tif (is(Model, model)) {\r\n\t\t\tconst parts = is(ObjectModel, model) ? [model.name] : [[\"object\", { object: x[_original] }], ` (${model.name})`];\r\n\t\t\treturn span(styles.instance, ...parts)\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t},\r\n\thasBody(x) {\r\n\t\treturn x && is(ObjectModel, getModel(x))\r\n\t},\r\n\tbody(x) {\r\n\t\tconst model = getModel(x)\r\n\t\tconst o = x[_original] || x;\r\n\t\treturn span(\"\",\r\n\t\t\t\"{\",\r\n\t\t\t[\r\n\t\t\t\t\"ol\",\r\n\t\t\t\t{ style: styles.list },\r\n\t\t\t\t...Object.keys(o).map(prop => {\r\n\t\t\t\t\tconst isPrivate = model.conventionForPrivate(prop)\r\n\t\t\t\t\tconst isConstant = model.conventionForConstant(prop)\r\n\t\t\t\t\tconst isDeclared = prop in model.definition;\r\n\t\t\t\t\tlet style = styles.property;\r\n\r\n\t\t\t\t\tif (!isDeclared) {\r\n\t\t\t\t\t\tstyle = styles.undeclared\r\n\t\t\t\t\t} else if (isPrivate) {\r\n\t\t\t\t\t\tstyle = isConstant ? styles.privateConstant : styles.private\r\n\t\t\t\t\t} else if (isConstant) {\r\n\t\t\t\t\t\tstyle = styles.constant\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn [\"li\", { style: styles.listItem },\r\n\t\t\t\t\t\tspan(style, prop), \": \", format(o[prop], { isInstanceProperty: true })\r\n\t\t\t\t\t]\r\n\t\t\t\t}),\r\n\t\t\t\t[\"li\", { style: styles.listItem },\r\n\t\t\t\t\tspan(styles.proto, \"__proto__\", \": \", [\"object\", { object: getProto(x) }])\r\n\t\t\t\t]\r\n\t\t\t],\r\n\t\t\t\"}\"\r\n\t\t)\r\n\t}\r\n}\r\n\r\nif (typeof window !== \"undefined\") {\r\n\twindow.devtoolsFormatters = (window.devtoolsFormatters || [])\r\n\t\t.concat(ModelFormatter, ModelInstanceFormatter);\r\n}"],"names":["format","controlMutation"],"mappings":"AAAO;AACP,CAAC,WAAW,GAAG,MAAM,CAAC,SAAS;AAC/B,CAAC,YAAY,GAAG,CAAC,IAAI,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;AAC3E,CAAC,QAAQ,GAAG,MAAM,CAAC,cAAc;AACjC,CAAC,QAAQ,GAAG,MAAM,CAAC,cAAc;AACjC;AACA,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,IAAI,KAAK,WAAW,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC;AAC5D,CAAC,EAAE,GAAG,CAAC,WAAW,EAAE,GAAG,KAAK,GAAG,YAAY,WAAW;AACtD,CAAC,UAAU,GAAG,CAAC,IAAI,OAAO,CAAC,KAAK,UAAU;AAC1C,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ;AAC3C,CAAC,QAAQ,GAAG,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ;AACtC,CAAC,aAAa,GAAG,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,WAAW;AAChE,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AACtD;AACA,CAAC,OAAO,GAAG,CAAC,GAAG,EAAE,KAAK,KAAK,IAAI,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC;AAChD;AACA,CAAC,KAAK,GAAG,CAAC,MAAM,EAAE,GAAG,GAAG,EAAE,KAAK;AAC/B,EAAE,KAAK,IAAI,GAAG,IAAI,GAAG,EAAE;AACvB,GAAG,IAAI,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE;AAChC,IAAI,MAAM,CAAC,GAAG,GAAE;AAChB,IAAI,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,EAAC;AACzB,IAAI,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,EAAC;AACtB,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,EAAC;AACnB,IAAI,MAAM;AACV,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,EAAC;AAC1B,IAAI;AACJ,GAAG;AACH,EAAE,OAAO,MAAM;AACf,EAAE;AACF;AACA,CAAC,MAAM,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,GAAG,KAAK,KAAK;AACnD,EAAE,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,EAAC;AAC5F,EAAE;AACF;AACA,CAAC,MAAM,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,KAAK;AACpC,EAAE,KAAK,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE;AAClE,GAAG,WAAW,EAAE;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,QAAQ,EAAE,IAAI;AAClB,IAAI,YAAY,EAAE,IAAI;AACtB,IAAI;AACJ,GAAG,CAAC,EAAE,KAAK,EAAC;AACZ,EAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAC;AACzB;;ACrCO;AACP,CAAC,MAAM,GAAG,MAAM,EAAE;AAClB,CAAC,QAAQ,GAAG,MAAM,EAAE;AACpB,CAAC,SAAS,GAAG,MAAM,EAAE;AACrB,CAAC,UAAU,GAAG,MAAM,EAAE;AACtB;AACA,CAAC,SAAS,GAAG,CAAC,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,KAAK;AACnE,EAAE,MAAM,KAAK,GAAG,UAAU,GAAG,GAAG,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE;AACrD,GAAG,IAAI,MAAM,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,OAAO,IAAI,KAAK,CAAC,GAAG,CAAC;AACxD,GAAG,IAAI,IAAI,EAAE,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAC;AACzC;AACA,GAAG,IAAI,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC;AAC7C,IAAI,OAAO,QAAQ,IAAI,IAAI,KAAK,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG;AAChF,IAAG;AACH;AACA,EAAE,IAAI,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,EAAC;AACnC,EAAE,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC,SAAS,EAAC;AACxC,EAAE,KAAK,CAAC,WAAW,GAAG,YAAW;AACjC,EAAE,KAAK,CAAC,UAAU,GAAG,IAAG;AACxB,EAAE,KAAK,CAAC,UAAU,GAAG,CAAC,GAAG,KAAK,CAAC,UAAU,EAAC;AAC1C,EAAE,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAC;AAC7B,EAAE,OAAO,KAAK,CAAC,KAAI;AACnB,EAAE,OAAO,KAAK;AACd,EAAE;AACF;AACA,CAAC,eAAe,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,KAAK;AAC1C,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,OAAO,GAAG;AAChC;AACA,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,SAAS,EAAE;AAC/D;AACA,GAAG,OAAO,GAAG;AACb,GAAG;AACH;AACA,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,EAAC;AAC7B,EAAE,IAAI,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,EAAC;AAC/D,EAAE,KAAK,CAAC,KAAK,EAAE,GAAG,EAAC;AACnB,EAAE,OAAO,KAAK;AACd,EAAE;AACF;AACA,CAAC,WAAW,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,KAAK;AAC5C,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAC;AACjC,EAAE,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,UAAU,EAAC;AAC7C,EAAE,OAAO,KAAK;AACd,EAAE;AACF;AACA,CAAC,UAAU,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,KAAK;AAC7D,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,EAAC;AACpD,EAAE;AACF;AACA,CAAC,aAAa,GAAG,CAAC,KAAK,EAAE,SAAS,GAAG,KAAK,CAAC,cAAc,KAAK;AAC9D,EAAE,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,OAAM;AACtC,EAAE,IAAI,QAAQ,GAAG,CAAC,EAAE;AACpB,GAAG,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI;AAC1C,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE;AACtB,KAAK,GAAG,CAAC,OAAO,GAAG,YAAY,IAAI,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,SAAS,GAAG,EAAE,CAAC,GAAG,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC;AACzG,QAAQ,QAAQ,IAAI,GAAG,CAAC,QAAQ,IAAI,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,GAAGA,QAAM,CAAC,GAAG,CAAC,QAAQ,EAAC;AACxG,KAAK;AACL,IAAI,OAAO,GAAG;AACd,IAAI,EAAC;AACL;AACA,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,EAAC;AAC1B,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAC;AAChC,GAAG;AACH,EAAE,OAAO,QAAQ;AACjB,EAAE;AACF;AACA,CAAC,eAAe,GAAG,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;AAC9E;AACA,CAAC,eAAe,GAAG,CAAC,GAAG,KAAK;AAC5B,EAAE,IAAI,aAAa,CAAC,GAAG,CAAC,EAAE;AAC1B,GAAG,GAAG,GAAG,GAAE;AACX,GAAG,KAAK,IAAI,GAAG,IAAI,GAAG,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,EAAC,EAAE;AAChE,GAAG;AACH,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC;AACvC,OAAO,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC;AAC7D;AACA,EAAE,OAAO,GAAG;AACZ,EAAE;AACF;AACA,CAAC,gBAAgB,GAAG,CAAC,GAAG,EAAE,KAAK,KAAK;AACpC,EAAE,MAAM,KAAK,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAIA,QAAM,CAAC,CAAC,EAAE,KAAK,CAAC,EAAC;AAC/D,EAAE,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;AACzD,EAAE;AACF;AACA,CAAC,gBAAgB,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE;AAC9F;AACA,CAAC,gBAAgB,GAAG,CAAC,GAAG,EAAE,QAAQ,GAAG,EAAE,KAAK;AAC5C,EAAE,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AAC3B,GAAG,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC/C,KAAK,MAAM,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,KAAK,EAAC;AAClE,GAAG;AACH;AACA,EAAE,OAAO,GAAG;AACZ,EAAE;AACF;AACA,CAAC,KAAK,GAAG,CAAC,KAAK,EAAE,GAAG,KAAK;AACzB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;AACnD,EAAE,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC;AAC9B,EAAE;AACF;AACA,CAAC,eAAe,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,KAAK;AAClE,EAAE,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAC;AACvC,EAAE,IAAI,UAAU,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;AACpE,GAAG,OAAO,GAAG;AACb;AACA,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,IAAI,GAAG,IAAI,IAAI,EAAE;AAC7D,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,EAAC;AACf,GAAG;AACH;AACA,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE;AACtB,GAAG,IAAI,UAAU,EAAE,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,EAAC;AACvC,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,UAAU,EAAC;AAChE,GAAG;AACH,OAAO,IAAI,aAAa,CAAC,GAAG,CAAC,EAAE;AAC/B,GAAG,KAAK,IAAI,GAAG,IAAI,GAAG,EAAE;AACxB,IAAI,MAAM,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,UAAS;AAC1C,IAAI,eAAe,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAC;AACpF,IAAI;AACJ,GAAG;AACH,OAAO;AACP,GAAG,MAAM,IAAI,GAAG,eAAe,CAAC,GAAG,EAAC;AACpC,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,mBAAmB,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,EAAE;AACnF,IAAI,OAAO,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,GAAG;AAC5C,IAAI;AACJ;AACA,GAAG,UAAU,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAC;AACrC,GAAG;AACH;AACA,EAAE,OAAO,GAAG;AACZ,EAAE;AACF;AACA,CAAC,mBAAmB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,KAAK;AAC9D,EAAE,IAAI,GAAG,KAAK,GAAG,EAAE,OAAO,IAAI;AAC9B,EAAE,IAAI,GAAG,IAAI,IAAI,EAAE,OAAO,GAAG,KAAK,GAAG;AACrC,EAAE,IAAI,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE;AAC5C,GAAG,MAAM,MAAM,GAAG,GAAE;AACpB,GAAG,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAC;AAC7D,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM;AACxB,GAAG;AACH,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC;AAC3C,EAAE,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,IAAI,EAAE,OAAO,GAAG,CAAC,WAAW,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;AACnF,EAAE,OAAO,GAAG,KAAK,GAAG;AACpB,OAAO,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AACvC,MAAM,GAAG,CAAC,WAAW,KAAK,GAAG;AAC7B,EAAE;AACF;AACA,CAAC,eAAe,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,KAAK;AAChE,EAAE,KAAK,IAAI,SAAS,IAAI,KAAK,CAAC,UAAU,EAAE;AAC1C,GAAG,IAAI,OAAM;AACb,GAAG,IAAI;AACP,IAAI,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAC;AACvC,IAAI,CAAC,OAAO,GAAG,EAAE;AACjB,IAAI,MAAM,GAAG,IAAG;AAChB,IAAI;AACJ,GAAG,IAAI,MAAM,KAAK,IAAI,EAAE;AACxB,IAAI,MAAM,MAAM,GAAG,UAAU,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,SAAS,CAAC,WAAW,GAAG,CAAC,eAAe,EAAE,KAAK;AACtG,KAAK,CAAC,WAAW,EAAE,SAAS,CAAC,WAAW,CAAC,WAAW,EAAEA,QAAM,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;AAChF,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,OAAO,CAAC,CAAC,EAAEA,QAAM,CAAC,KAAK,CAAC,CAAC,EAAC;AAC7D,IAAI,UAAU,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,EAAC;AACnF,IAAI;AACJ,GAAG;AACH,EAAE;AACF;AACA,CAACA,QAAM,GAAG,CAAC,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK;AAC/B,EAAE,IAAI,KAAK,CAAC,MAAM,GAAG,EAAE,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,KAAK;AAC5D,EAAE,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,EAAE,OAAO,MAAM,CAAC,GAAG,CAAC;AAC3D,EAAE,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AACtC,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC;AAChD;AACA,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,EAAC;AACpB;AACA,EAAE,IAAI,UAAU,CAAC,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,QAAQ,EAAE;AACxD,EAAE,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,OAAOA,QAAM,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;AAC3D,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,IAAI,IAAIA,QAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACvF,EAAE,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ,KAAK,WAAW,CAAC,QAAQ,EAAE,OAAO,GAAG,CAAC,QAAQ,EAAE;AAClF,EAAE,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE;AACrB,GAAG,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;AACjC,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAC;AACtC,GAAG,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG;AACvB,IAAI,GAAG,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,GAAG,CAAC,EAAE,EAAEA,QAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AAC/D,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAChE,GAAG;AACH;AACA,EAAE,OAAO,MAAM,CAAC,GAAG,CAAC;AACpB,EAAE;AACF;AACA,CAAC,UAAU,GAAG,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG;AAC1D;AACA,CAACC,iBAAe,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,aAAa,EAAE,aAAa,KAAK;AAC/E,EAAE,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC;AACvC,GAAG,SAAS,GAAG,KAAK,CAAC,oBAAoB,CAAC,GAAG,CAAC;AAC9C,GAAG,UAAU,GAAG,KAAK,CAAC,qBAAqB,CAAC,GAAG,CAAC;AAChD,GAAG,aAAa,GAAG,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC;AAC9B,GAAG,qBAAqB,GAAG,aAAa,IAAI,MAAM,CAAC,wBAAwB,CAAC,CAAC,EAAE,GAAG,EAAC;AACnF;AACA,EAAE,IAAI,GAAG,IAAI,GAAG,KAAK,CAAC,SAAS,IAAI,CAAC,aAAa,MAAM,UAAU,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC,CAAC;AAC3F,GAAG,MAAM,CAAC,CAAC,OAAO,EAAE,SAAS,GAAG,SAAS,GAAG,UAAU,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,EAAE,KAAK,EAAC;AAChF;AACA,EAAE,aAAa,GAAE;AACjB,EAAE,IAAI,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,MAAM,EAAE,EAAE,EAAC;AACjF,EAAE,eAAe,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,EAAC;AACpC;AACA,EAAE,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,OAAM;AACtC,EAAE,IAAI,QAAQ,EAAE;AAChB,GAAG,IAAI,aAAa,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,GAAG,EAAE,qBAAqB,EAAC;AAC1E,QAAQ,OAAO,CAAC,CAAC,GAAG,EAAC;AACrB;AACA,GAAG,aAAa,CAAC,KAAK,EAAC;AACvB,GAAG;AACH;AACA,EAAE,OAAO,CAAC,QAAQ;AAClB,EAAE;AACF;AACA,CAAC,MAAM,GAAG,CAAC,GAAG,EAAE,KAAK,KAAK;AAC1B,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,SAAS,GAAG,GAAG,EAAE,EAAC;AACjD,EAAE;AACF;AACA,CAAC,IAAI,GAAG,CAAC,GAAG,EAAE,OAAO,GAAG,EAAE,KAAK;AAC/B,EAAE,IAAI,CAAC,GAAG,IAAI,aAAa,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE,OAAO,CAAC,IAAI,eAAe,CAAC,GAAG,CAAC;AACvF,GAAG,OAAO,GAAG;AACb;AACA,EAAE,MAAM,GAAG,GAAG,eAAe,CAAC,OAAO,CAAC;AACtC,GAAG,cAAc,GAAG,GAAE;AACtB;AACA,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE;AACxB,GAAG,IAAI,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;AACjE,IAAI,cAAc,CAAC,IAAI,CAAC,IAAI,EAAC;AAC7B,GAAG;AACH;AACA,EAAE,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE;AACnC;AACA,GAAG,OAAO,IAAI,cAAc,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,QAAQ,CAAC;AAC9C,GAAG;AACH;AACA,EAAE,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC;AAC/B,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,0BAA0B,EAAED,QAAM,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAC;AACpG;AACA,EAAE,OAAO,GAAG;AACZ,EAAE;AACF;AACA;AACA,CAAC,OAAO,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,aAAa,KAAK;AACrD,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC;AAChD,EAAE,OAAO,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;AAChE,EAAE;AACF;AACA,CAAC,QAAQ,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,aAAa,KAAK;AACjD,EAAE,MAAM,kBAAkB,GAAG,CAAC,IAAI,OAAO,CAAC,CAAC,EAAE;AAC7C,GAAG,KAAK,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE;AACxB,IAAI,aAAa,GAAG,KAAI;AACxB,IAAI,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,EAAC;AAC/C,IAAI,aAAa,GAAG,MAAK;AACzB,IAAI,OAAO,MAAM;AACjB,IAAI;AACJ,GAAG,EAAC;AACJ;AACA,EAAE,OAAO;AACT,GAAG,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE;AACf,IAAI,IAAI,GAAG,KAAK,SAAS,EAAE,OAAO,CAAC;AACnC;AACA,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC;AAClD;AACA,IAAI,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,EAAE,GAAG,EAAC;AACzC,IAAI,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,EAAE,GAAG,EAAC;AAC/B,IAAI,MAAM,OAAO,GAAG,GAAG,CAAC,GAAG,EAAC;AAC5B;AACA,IAAI,IAAI,CAAC,aAAa,IAAI,KAAK,IAAI,KAAK,CAAC,oBAAoB,CAAC,GAAG,CAAC,EAAE;AACpE,KAAK,MAAM,CAAC,CAAC,2BAA2B,EAAE,OAAO,CAAC,CAAC,EAAE,KAAK,EAAC;AAC3D,KAAK,aAAa,CAAC,KAAK,EAAC;AACzB,KAAK,MAAM;AACX,KAAK;AACL;AACA,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC,GAAG,EAAC;AACtB;AACA,IAAI,IAAI,KAAK,IAAI,KAAK,IAAI,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE;AAC7F,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,EAAC;AACtD,KAAK;AACL;AACA,IAAI,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,aAAa,IAAI,CAAC,aAAa,EAAE;AACtE,KAAK,OAAO,kBAAkB,CAAC,KAAK,CAAC;AACrC,KAAK;AACL;AACA,IAAI,IAAI,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE;AAC1C,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,GAAG,GAAE;AACxB,KAAK;AACL;AACA,IAAI,OAAO,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,CAAC;AACjE,IAAI;AACJ;AACA,GAAG,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE;AACpB,IAAI,OAAOC,iBAAe,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACnH,IAAI;AACJ;AACA,GAAG,cAAc,CAAC,CAAC,EAAE,GAAG,EAAE;AAC1B,IAAI,OAAOA,iBAAe,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC,cAAc,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AACzG,IAAI;AACJ;AACA,GAAG,cAAc,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE;AAChC,IAAI,OAAOA,iBAAe,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC,cAAc,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;AAC/G,IAAI;AACJ;AACA,GAAG,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE;AACf,IAAI,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,GAAG,CAAC;AAC3F,IAAI;AACJ;AACA,GAAG,OAAO,CAAC,CAAC,EAAE;AACd,IAAI,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;AACtG,IAAI;AACJ;AACA,GAAG,wBAAwB,CAAC,CAAC,EAAE,GAAG,EAAE;AACpC,IAAI,IAAI,WAAU;AAClB,IAAI,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,GAAG,CAAC,EAAE;AAC1C,KAAK,UAAU,GAAG,MAAM,CAAC,wBAAwB,CAAC,GAAG,EAAE,GAAG,EAAC;AAC3D,KAAK,IAAI,UAAU,KAAK,SAAS,EAAE,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,EAAC;AAC5D,KAAK;AACL;AACA,IAAI,OAAO,UAAU;AACrB,IAAI;AACJ,GAAG;AACH,GAAE;AACF;AACA;AACO,SAAS,KAAK,CAAC,GAAG,EAAE;AAC3B,CAAC,OAAO,aAAa,CAAC,GAAG,CAAC,GAAG,IAAI,WAAW,CAAC,GAAG,CAAC,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC;AACvE,CAAC;AACD;AACA,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE;AAC/B,CAAC,IAAI,EAAE,OAAO;AACd,CAAC,UAAU,EAAE,EAAE;AACf;AACA,CAAC,qBAAqB,EAAE,GAAG,IAAI,GAAG,CAAC,WAAW,EAAE,KAAK,GAAG;AACxD,CAAC,oBAAoB,EAAE,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG;AAC5C;AACA,CAAC,QAAQ,CAAC,KAAK,EAAE;AACjB,EAAE,OAAO,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,GAAG,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC;AACrH,EAAE;AACF;AACA,CAAC,EAAE,CAAC,IAAI,EAAE;AACV,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAC;AAC5B,EAAE,OAAO,IAAI;AACb,EAAE;AACF;AACA,CAAC,SAAS,CAAC,GAAG,EAAE;AAChB,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,EAAC;AAC1B,EAAE,OAAO,IAAI;AACb,EAAE;AACF;AACA,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE;AAChD,EAAE,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAC;AACxE,EAAE,eAAe,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAC;AAC1C,EAAE;AACF;AACA,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,EAAE;AAC3B,EAAE,IAAI,KAAK,GAAG,KAAI;AAClB,EAAE,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,gBAAgB,CAAC,EAAE;AACxC,GAAG,KAAK,GAAG,QAAQ,CAAC,KAAK,EAAC;AAC1B,GAAG;AACH;AACA,EAAE,MAAM,qBAAqB,GAAG,KAAK,CAAC,eAAc;AACpD,EAAE,IAAI,OAAM;AACZ;AACA,EAAE,KAAK,CAAC,cAAc,GAAG,MAAM,IAAI;AACnC,GAAG,MAAM,GAAG,KAAI;AAChB,GAAG,IAAI,cAAc,EAAE,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAC;AACxD,IAAG;AACH;AACA,EAAE,IAAI,IAAI,CAAC,GAAG,EAAC;AACf;AACA,EAAE,KAAK,CAAC,cAAc,GAAG,sBAAqB;AAC9C,EAAE,OAAO,CAAC,MAAM;AAChB,EAAE;AACF;AACA,CAAC,cAAc,CAAC,MAAM,EAAE;AACxB,EAAE,MAAM,CAAC,GAAG,IAAI,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAC;AAChE,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,uCAAuC,EAAE,EAAE,EAAC;AACxE,EAAE,MAAM,CAAC;AACT,EAAE;AACF;AACA,CAAC,MAAM,CAAC,SAAS,EAAE,WAAW,GAAGD,QAAM,CAAC,SAAS,CAAC,EAAE;AACpD,EAAE,MAAM,CAAC,SAAS,EAAE,aAAa,EAAE,WAAW,EAAC;AAC/C,EAAE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,EAAC;AACrD,EAAE,OAAO,IAAI;AACb,EAAE;AACF,CAAC,EAAC;AACF;AACA,KAAK,CAAC,UAAU,GAAG,WAAU;AAC7B;AACO,SAAS,UAAU,CAAC,GAAG,EAAE;AAChC,CAAC,OAAO,SAAS,CAAC,GAAG,EAAE,UAAU,CAAC;AAClC,CAAC;AACD;AACA,MAAM,CAAC,UAAU,EAAE,KAAK,EAAE;AAC1B,CAAC,MAAM,CAAC,GAAG,QAAQ,EAAE;AACrB,EAAE,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,EAAE,IAAI,EAAC;AAC9F,EAAE,KAAK,IAAI,IAAI,IAAI,QAAQ,EAAE;AAC7B,GAAG,IAAI,EAAE,CAAC,UAAU,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,EAAC;AACtE,GAAG;AACH;AACA,EAAE,OAAO,KAAK;AACd,EAAE;AACF,CAAC,EAAC;AACF;AACO,SAAS,WAAW,CAAC,GAAG,EAAE;AACjC,CAAC,OAAO,SAAS,CAAC,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,eAAe,EAAE,KAAK,IAAI,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC;AACjG,CAAC;AACD;AACA,MAAM,CAAC,WAAW,EAAE,KAAK,EAAE;AAC3B,CAAC,SAAS,CAAC,GAAG,EAAE;AAChB,EAAE,MAAM,GAAG,GAAG,IAAI,CAAC,WAAU;AAC7B,EAAE,KAAK,IAAI,GAAG,IAAI,GAAG,EAAE;AACvB,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE;AACtB,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,IAAI,EAAC;AAC9E,IAAI;AACJ,GAAG;AACH,EAAE,aAAa,CAAC,IAAI,EAAC;AACrB,EAAE,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC;AACrB,EAAE,OAAO,IAAI;AACb,EAAE;AACF;AACA,CAAC,QAAQ,CAAC,KAAK,EAAE;AACjB,EAAE,OAAOA,QAAM,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC;AACvC,EAAE;AACF;AACA,CAAC,MAAM,CAAC,GAAG,QAAQ,EAAE;AACrB,EAAE,MAAM,UAAU,GAAG,EAAE,GAAG,IAAI,CAAC,UAAU,GAAE;AAC3C,EAAE,MAAM,KAAK,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,GAAE;AACrC,EAAE,MAAM,QAAQ,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,GAAE;AACtC,EAAE,MAAM,aAAa,GAAG,GAAE;AAC1B;AACA,EAAE,KAAK,IAAI,IAAI,IAAI,QAAQ,EAAE;AAC7B,GAAG,IAAI,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE;AACxB,IAAI,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,EAAC;AACtC,IAAI,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,EAAC;AACjC,IAAI,aAAa,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,EAAC;AAC1C,IAAI;AACJ,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,EAAC;AACrD,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,UAAU,EAAE,IAAI,EAAC;AAC9C,GAAG;AACH;AACA,EAAE,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,WAAW,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,SAAS,CAAC,QAAQ,EAAC;AAC5F,EAAE,QAAQ,CAAC,UAAU,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,GAAG,aAAa,EAAC;AAC9D;AACA,EAAE,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,WAAW,CAAC,SAAS,EAAE;AAChD,GAAG,QAAQ,CAAC,WAAW,GAAG,KAAI;AAC9B,GAAG;AACH;AACA,EAAE,OAAO,QAAQ;AACjB,EAAE;AACF;AACA,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE;AAChD,EAAE,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE;AACrB,GAAG,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,GAAG,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAC;AAC3F,GAAG;AACH,OAAO,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAC;AAC1C;AACA,EAAE,eAAe,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAC;AAC1C,EAAE;AACF,CAAC,EAAC;AACF;AACY,MAAC,GAAG,GAAG,OAAO,CAAC,UAAU,EAAE,EAAE;AACzC,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE;AAC3B,EAAE,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,EAAC;AAClC,EAAE,KAAK,CAAC,UAAU,GAAG,GAAG,CAAC;AACzB,EAAE,OAAO,KAAK;AACd,EAAE;AACF,CAAC,EAAC;AACF,GAAG,CAAC,UAAU,GAAG,IAAG;AACpB,GAAG,CAAC,QAAQ,GAAG,MAAM,MAAK;AAC1B;AACA,GAAG,CAAC,SAAS,GAAG,UAAU,GAAG,EAAE,EAAE,IAAI,CAAC,UAAU,GAAG,IAAG,GAAE;AACxD,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,EAAE;AAC3B,CAAC,QAAQ,GAAG,EAAE,OAAO,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AAChE,CAAC,EAAC;AACF,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,aAAa,EAAE,MAAM,IAAI,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,EAAC;;AC3dvE,MAAM,aAAa,GAAG,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,KAAK;AAC5F;AACA,CAAC,OAAO,SAAS,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC;AACvE,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC,SAAS;AACvC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE;AACd,GAAG,IAAI,GAAG,KAAK,SAAS,EAAE,OAAO,CAAC;AAClC;AACA,GAAG,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,EAAC;AACrB,GAAG,OAAO,UAAU,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,EAAE;AACzC,IAAI,KAAK,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE;AACzB,KAAK,IAAI,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE;AAC7B;AACA,MAAM,MAAM,CAAC,KAAK,EAAE,GAAG,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAC;AACrE,MAAM,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,EAAE,EAAE;AACzC,OAAO,MAAM,MAAM,GAAG,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,WAAU;AACjE,OAAO,IAAI,CAAC,CAAC,CAAC,GAAG,eAAe;AAChC,QAAQ,IAAI,CAAC,CAAC,CAAC;AACf,QAAQ,MAAM;AACd,QAAQ,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC;AAC7C,QAAQ,KAAK,CAAC,MAAM;AACpB,QAAQ,EAAE;AACV,QAAQ,IAAI;AACZ,SAAQ;AACR,OAAO;AACP;AACA,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;AACvC,OAAO,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,EAAC;AACpC,OAAO,EAAE,CAAC,KAAK,CAAC,YAAY,EAAE,IAAI,EAAC;AACnC,OAAO,eAAe,CAAC,YAAY,EAAE,KAAK,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC,SAAS,CAAC,EAAC;AACpE,OAAO;AACP;AACA,MAAM,aAAa,CAAC,KAAK,EAAC;AAC1B,MAAM;AACN;AACA,KAAK,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC;AAC7B,KAAK;AACL,IAAI,CAAC,GAAG,GAAG;AACX,GAAG;AACH,EAAE,EAAE,UAAU,CAAC,CAAC;AAChB;;ACpCe,SAAS,UAAU,CAAC,iBAAiB,EAAE;AACtD,CAAC,MAAM,KAAK,GAAG,aAAa;AAC5B,EAAE,KAAK;AACP,EAAE,UAAU;AACZ,EAAE,iBAAiB;AACnB,EAAE,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC;AACvE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACb,EAAE;AACF,GAAG,YAAY,EAAE,EAAE;AACnB,GAAG,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;AACjB,GAAG,KAAK,EAAE,EAAE;AACZ,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC;AACd,GAAG,SAAS,EAAE,EAAE;AAChB,GAAG,OAAO,EAAE,EAAE;AACd,GAAG,MAAM,EAAE,EAAE;AACb,GAAG,QAAQ,EAAE,CAAC,CAAC,CAAC;AAChB,GAAG,SAAS,EAAE,CAAC,CAAC,CAAC;AACjB,GAAG;AACH,EAAE;AACF,GAAG,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;AACtB,IAAI,OAAO,eAAe,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC;AAC5E,IAAI;AACJ;AACA,GAAG,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE;AAC5B,IAAI,OAAO,eAAe,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,IAAI,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC;AAC1E,IAAI;AACJ,GAAG;AACH,GAAE;AACF;AACA,CAAC,OAAO,KAAK;AACb,CAAC;AACD;AACA,MAAM,CAAC,UAAU,EAAE,KAAK,EAAE;AAC1B,CAAC,QAAQ,CAAC,KAAK,EAAE;AACjB,EAAE,OAAO,WAAW,GAAG,gBAAgB,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC;AAC/D,EAAE;AACF;AACA,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE;AAChD,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;AACxB,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,eAAe,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,IAAI,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,EAAC;AACxI,OAAO,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAC;AAC1C;AACA,EAAE,eAAe,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAC;AAC1C,EAAE;AACF;AACA,CAAC,MAAM,CAAC,GAAG,QAAQ,EAAE;AACrB,EAAE,OAAO,WAAW,CAAC,IAAI,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC;AACvF,EAAE;AACF,CAAC,EAAC;AACF;AACA,MAAM,eAAe,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,aAAa,EAAE,aAAa,KAAK;AACpF,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,EAAC;AAC7B,CAAC,MAAM,OAAO,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,aAAa,IAAI,GAAG,IAAI,KAAK,CAAC,EAAC;AAC/D,CAAC,IAAI,OAAO,EAAE,KAAK,GAAG,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,EAAE,EAAE,IAAI,EAAC;AAC5F;AACA,CAAC,MAAM,SAAS,GAAG,CAAC,GAAG,KAAK,EAAC;AAC7B,CAAC,aAAa,CAAC,SAAS,EAAC;AACzB,CAAC,eAAe,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,EAAC;AACxC,CAAC,MAAM,SAAS,GAAG,CAAC,aAAa,CAAC,KAAK,EAAC;AACxC,CAAC,IAAI,SAAS,EAAE,aAAa,CAAC,KAAK,EAAE,KAAK,EAAC;AAC3C,CAAC,OAAO,SAAS;AACjB;;AC7De,SAAS,QAAQ,CAAC,iBAAiB,EAAE;AACpD,CAAC,MAAM,KAAK,GAAG,aAAa;AAC5B,EAAE,GAAG;AACL,EAAE,QAAQ;AACV,EAAE,iBAAiB;AACnB,EAAE,EAAE,IAAI,UAAU,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,EAAE;AACtF,EAAE,GAAG,IAAI,IAAI,GAAG,CAAC,GAAG,CAAC;AACrB,EAAE;AACF,GAAG,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;AAChB,GAAG,QAAQ,EAAE,EAAE;AACf,GAAG,OAAO,EAAE,EAAE;AACd,GAAG;AACH,GAAE;AACF;AACA,CAAC,OAAO,KAAK;AACb,CAAC;AACD;AACA,MAAM,CAAC,QAAQ,EAAE,KAAK,EAAE;AACxB,CAAC,QAAQ,CAAC,KAAK,EAAE;AACjB,EAAE,OAAO,SAAS,GAAG,gBAAgB,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC;AAC7D,EAAE;AACF;AACA,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE;AAChD,EAAE,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE;AACpB,GAAG,KAAK,IAAI,IAAI,IAAI,GAAG,CAAC,MAAM,EAAE,EAAE;AAClC,IAAI,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,IAAI,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAC;AAC/F,IAAI;AACJ,GAAG,MAAM,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAC;AAC5C,EAAE,eAAe,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAC;AAC1C,EAAE;AACF;AACA,CAAC,MAAM,CAAC,GAAG,QAAQ,EAAE;AACrB,EAAE,OAAO,WAAW,CAAC,IAAI,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC;AACrF,EAAE;AACF,CAAC;;AClCc,SAAS,QAAQ,CAAC,oBAAoB,EAAE,sBAAsB,EAAE;AAC/E,CAAC,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,GAAG,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC;AAC7E,CAAC,MAAM,KAAK,GAAG,aAAa;AAC5B,EAAE,GAAG;AACL,EAAE,QAAQ;AACV,EAAE,EAAE,GAAG,EAAE,oBAAoB,EAAE,KAAK,EAAE,sBAAsB,EAAE;AAC9D,EAAE,EAAE,IAAI,UAAU,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE;AAClG,EAAE,GAAG,IAAI,IAAI,GAAG,CAAC,GAAG,CAAC;AACrB,EAAE;AACF,GAAG,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;AACxB,GAAG,QAAQ,EAAE,EAAE;AACf,GAAG,OAAO,EAAE,EAAE;AACd,GAAG;AACH,GAAE;AACF;AACA,CAAC,OAAO,KAAK;AACb,CAAC;AACD;AACA,MAAM,CAAC,QAAQ,EAAE,KAAK,EAAE;AACxB,CAAC,QAAQ,CAAC,KAAK,EAAE;AACjB,EAAE,OAAO,CAAC,OAAO,EAAE,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,GAAG,EAAE,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;AACrH,EAAE;AACF;AACA,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE;AAChD,EAAE,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE;AACpB,GAAG,IAAI,GAAG,IAAI,IAAI,MAAK;AACvB,GAAG,KAAK,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,GAAG,EAAE;AACjC,IAAI,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAC;AACvF,IAAI,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,EAAEA,QAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAC;AACvG,IAAI;AACJ,GAAG,MAAM,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAC;AAC5C;AACA,EAAE,eAAe,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAC;AAC1C,EAAE;AACF;AACA,CAAC,MAAM,CAAC,QAAQ,EAAE,UAAU,EAAE;AAC9B,EAAE,OAAO,WAAW,CAAC,IAAI,QAAQ;AACjC,GAAG,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,QAAQ,CAAC;AAClD,GAAG,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,UAAU,CAAC;AACtD,GAAG,EAAE,IAAI,CAAC;AACV,EAAE;AACF,CAAC;;AC1Cc,SAAS,aAAa,CAAC,GAAG,OAAO,EAAE;AAClD,CAAC,OAAO,SAAS,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,aAAa,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,KAAK;AACnF,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC,SAAS;AACvC;AACA,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE;AACf,GAAG,OAAO,GAAG,KAAK,SAAS,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC;AAC1C,GAAG;AACH;AACA,EAAE,KAAK,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE;AACvB,GAAG,MAAM,GAAG,GAAG,KAAK,CAAC,WAAU;AAC/B,GAAG,MAAM,eAAe,GAAG,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,EAAC;AAClF,GAAG,MAAM,aAAa,GAAG,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,SAAS,CAAC,OAAM;AACjH;AACA,GAAG,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,EAAE,CAAC,EAAE,EAAE;AAC3C,IAAI,MAAM,MAAM,GAAG,eAAe,IAAI,CAAC,IAAI,GAAG,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,GAAG,eAAe,CAAC,UAAU,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,EAAC;AACnH,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,EAAE,EAAE,EAAE,IAAI,EAAC;AACzF,IAAI;AACJ;AACA,GAAG,eAAe,CAAC,IAAI,EAAE,KAAK,EAAE,WAAW,EAAC;AAC5C;AACA,GAAG,IAAI,OAAM;AACb,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE;AAC7B,IAAI,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,EAAC;AACzC,IAAI,IAAI,QAAQ,IAAI,GAAG;AACvB,KAAK,MAAM,GAAG,eAAe,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,EAAE,KAAK,CAAC,MAAM,EAAE,EAAE,EAAE,IAAI,EAAC;AACzF,IAAI;AACJ,GAAG,aAAa,CAAC,KAAK,EAAC;AACvB,GAAG,OAAO,MAAM;AAChB,GAAG;AACH,EAAE,CAAC,CAAC;AACJ,CAAC;AACD;AACA,MAAM,CAAC,aAAa,EAAE,KAAK,EAAE;AAC7B,CAAC,QAAQ,CAAC,KAAK,GAAG,EAAE,EAAE;AACtB,EAAE,IAAI,GAAG,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG;AACrD,GAAG,MAAM,IAAI,gBAAgB,CAAC,MAAM,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC;AACjD,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAC;AACjB;AACA,EAAE,IAAI,QAAQ,IAAI,IAAI,CAAC,UAAU,EAAE;AACnC,GAAG,GAAG,IAAI,MAAM,GAAG,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,KAAK,EAAC;AAClE,GAAG;AACH,EAAE,OAAO,GAAG;AACZ,EAAE;AACF;AACA,CAAC,MAAM,CAAC,GAAG,EAAE;AACb,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,IAAG;AAC9B,EAAE,OAAO,IAAI;AACb,EAAE;AACF;AACA,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE;AAC3B,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,EAAE,IAAI,EAAC;AAC7D,EAAE;AACF,CAAC;;ACnDD,MAAM,MAAM,GAAG;AACf,CAAC,IAAI,EAAE,+CAA+C;AACtD,CAAC,QAAQ,EAAE,qBAAqB;AAChC,CAAC,KAAK,EAAE,iBAAiB;AACzB,CAAC,QAAQ,EAAE,oCAAoC;AAC/C,CAAC,QAAQ,EAAE,gBAAgB;AAC3B,CAAC,MAAM,EAAE,gBAAgB;AACzB,CAAC,MAAM,EAAE,gBAAgB;AACzB,CAAC,OAAO,EAAE,gBAAgB;AAC1B,CAAC,QAAQ,EAAE,gBAAgB;AAC3B,CAAC,OAAO,EAAE,gBAAgB;AAC1B,CAAC,QAAQ,EAAE,mCAAmC;AAC9C,CAAC,eAAe,EAAE,mCAAmC;AACrD,CAAC,IAAI,EAAE,gBAAgB;AACvB,CAAC,UAAU,EAAE,iBAAiB;AAC9B,CAAC,KAAK,EAAE,oCAAoC;AAC5C,CAAC,CAAC;AACF;AACA,MAAM,QAAQ,GAAG,CAAC,QAAQ,KAAK;AAC/B,CAAC,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,IAAI;AAChD,EAAE,OAAO,IAAI;AACb;AACA,CAAC,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAClC,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC;AAClE,EAAE,OAAO,IAAI;AACb;AACA,CAAC,OAAO,KAAK,CAAC,WAAW;AACzB,EAAC;AACD;AACA,MAAM,IAAI,GAAG,CAAC,KAAK,EAAE,GAAG,QAAQ,KAAK,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE,GAAG,QAAQ,EAAC;AACrE;AACA,MAAM,MAAM,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,EAAE,KAAK;AACnC,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS;AAClC,EAAE,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;AACnC;AACA,CAAC,IAAI,OAAO,CAAC,KAAK,SAAS;AAC3B,EAAE,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;AACjC;AACA,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ;AAC1B,EAAE,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AAChC;AACA,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ;AAC1B,EAAE,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvC;AACA,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,iBAAiB,EAAE;AACnD,EAAE,OAAO,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACpF,EAAE;AACF;AACA,CAAC,IAAI,aAAa,CAAC,CAAC,CAAC;AACrB,EAAE,OAAO,YAAY,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC;AAC7C;AACA,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,iBAAiB;AAC/D,EAAE,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACvD;AACA,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC;AACzC,EAAC;AACD;AACA,MAAM,YAAY,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC,EAAE;AAClD,CAAC,GAAG;AACJ,CAAC,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI;AAC1D,EAAE,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;AACjG,EAAE;AACF,CAAC,GAAG;AACJ,EAAC;AACD;AACA,MAAM,WAAW,GAAG,KAAK,IAAI;AAC7B,CAAC;AACD,EAAE,GAAG,GAAG,EAAE,iBAAiB,EAAE,IAAI,EAAE;AACnC,EAAE,GAAG,GAAG,KAAK,CAAC,UAAU;AACxB,EAAE,UAAU,GAAG,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC7E,CAAC,IAAI,KAAK,GAAG,GAAE;AACf;AACA,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,EAAC;AACtD,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,EAAC;AACnE,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,EAAC;AAC/D,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,EAAC;AAClG,CAAC,IAAI,EAAE,CAAC,aAAa,EAAE,KAAK,CAAC,EAAE;AAC/B,EAAE,KAAK,GAAG,CAAC,WAAW,EAAE,GAAG,UAAU,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,IAAI,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,EAAC;AACnF,EAAE,IAAI,QAAQ,IAAI,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,EAAC;AAClE,EAAE;AACF;AACA,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;AAClC,EAAE,KAAK,CAAC,IAAI,CAAC,iBAAiB,EAAE,GAAG,UAAU,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAC;AACrG,EAAE;AACF;AACA,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,KAAK,CAAC;AACpC,EAAC;AACD;AACA,MAAM,cAAc,GAAG;AACvB,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,GAAG,EAAE,EAAE;AACxB,EAAE,IAAI,CAAC,KAAK,GAAG;AACf,GAAG,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC;AACnC;AACA,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC;AAC1B,GAAG,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,UAAU,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAC;AACtF;AACA,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;AACxB,GAAG,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC;AACpC;AACA,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE;AACpB,GAAG,OAAO,WAAW,CAAC,CAAC,CAAC;AACxB,GAAG;AACH;AACA,EAAE,IAAI,MAAM,CAAC,iBAAiB,IAAI,aAAa,CAAC,CAAC,CAAC;AAClD,GAAG,OAAO,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC;AAC3B;AACA,EAAE,OAAO,IAAI,CAAC;AACd,EAAE;AACF,CAAC,OAAO,CAAC,CAAC,EAAE;AACZ,EAAE,OAAO,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;AAC3B,EAAE;AACF,CAAC,IAAI,CAAC,KAAK,EAAE;AACb,EAAE,OAAO,IAAI,CAAC,EAAE;AAChB,GAAG,GAAG;AACN,GAAG,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI;AAC/E,IAAI,MAAM,SAAS,GAAG,KAAK,CAAC,oBAAoB,CAAC,IAAI,EAAC;AACtD,IAAI,MAAM,UAAU,GAAG,KAAK,CAAC,qBAAqB,CAAC,IAAI,EAAC;AACxD,IAAI,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AACjE,IAAI,IAAI,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC;AAChC;AACA,IAAI,IAAI,SAAS,EAAE;AACnB,KAAK,KAAK,GAAG,UAAU,GAAG,MAAM,CAAC,eAAe,GAAG,MAAM,CAAC,QAAO;AACjE,KAAK,MAAM,IAAI,UAAU,EAAE;AAC3B,KAAK,KAAK,GAAG,MAAM,CAAC,SAAQ;AAC5B,KAAK;AACL;AACA,IAAI,OAAO,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,QAAQ,EAAE;AAC5C,KAAK,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC;AACzF,KAAK,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE;AAC7E,KAAK;AACL,IAAI,CAAC,CAAC;AACN,GAAG,GAAG;AACN,GAAG;AACH,EAAE;AACF,EAAC;AACD;AACA,MAAM,sBAAsB,GAAG;AAC/B,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,GAAG,EAAE,EAAE;AACxB,EAAE,IAAI,MAAM,CAAC,kBAAkB,IAAI,aAAa,CAAC,CAAC,CAAC,EAAE;AACrD,GAAG,OAAO,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC;AAC3B,GAAG;AACH;AACA,EAAE,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC5B,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE;AACxB,GAAG,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,EAAE,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACpH,GAAG,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,GAAG,KAAK,CAAC;AACzC,GAAG;AACH;AACA,EAAE,OAAO,IAAI,CAAC;AACd,EAAE;AACF,CAAC,OAAO,CAAC,CAAC,EAAE;AACZ,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC1C,EAAE;AACF,CAAC,IAAI,CAAC,CAAC,EAAE;AACT,EAAE,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,EAAC;AAC3B,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAC9B,EAAE,OAAO,IAAI,CAAC,EAAE;AAChB,GAAG,GAAG;AACN,GAAG;AACH,IAAI,IAAI;AACR,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE;AAC1B,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI;AAClC,KAAK,MAAM,SAAS,GAAG,KAAK,CAAC,oBAAoB,CAAC,IAAI,EAAC;AACvD,KAAK,MAAM,UAAU,GAAG,KAAK,CAAC,qBAAqB,CAAC,IAAI,EAAC;AACzD,KAAK,MAAM,UAAU,GAAG,IAAI,IAAI,KAAK,CAAC,UAAU,CAAC;AACjD,KAAK,IAAI,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC;AACjC;AACA,KAAK,IAAI,CAAC,UAAU,EAAE;AACtB,MAAM,KAAK,GAAG,MAAM,CAAC,WAAU;AAC/B,MAAM,MAAM,IAAI,SAAS,EAAE;AAC3B,MAAM,KAAK,GAAG,UAAU,GAAG,MAAM,CAAC,eAAe,GAAG,MAAM,CAAC,QAAO;AAClE,MAAM,MAAM,IAAI,UAAU,EAAE;AAC5B,MAAM,KAAK,GAAG,MAAM,CAAC,SAAQ;AAC7B,MAAM;AACN;AACA,KAAK,OAAO,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,QAAQ,EAAE;AAC7C,MAAM,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC;AAC5E,MAAM;AACN,KAAK,CAAC;AACN,IAAI,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,QAAQ,EAAE;AACrC,KAAK,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAC/E,KAAK;AACL,IAAI;AACJ,GAAG,GAAG;AACN,GAAG;AACH,EAAE;AACF,EAAC;AACD;AACA,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;AACnC,CAAC,MAAM,CAAC,kBAAkB,GAAG,CAAC,MAAM,CAAC,kBAAkB,IAAI,EAAE;AAC7D,GAAG,MAAM,CAAC,cAAc,EAAE,sBAAsB,CAAC,CAAC;AAClD;;;;"}
|
|
1
|
+
{"version":3,"file":"object-model.js","sources":["../src/helpers.js","../src/object-model.js","../src/list-model.js","../src/array-model.js","../src/set-model.js","../src/map-model.js","../src/function-model.js","../src/devtool-formatter.js"],"sourcesContent":["export const\r\n\tObjectProto = Object.prototype,\r\n\tbettertypeof = x => ObjectProto.toString.call(x).match(/\\s([a-zA-Z]+)/)[1],\r\n\tgetProto = Object.getPrototypeOf,\r\n\tsetProto = Object.setPrototypeOf,\r\n\r\n\thas = (o, prop) => ObjectProto.hasOwnProperty.call(o, prop),\r\n\tis = (Constructor, obj) => obj instanceof Constructor,\r\n\tisFunction = f => typeof f === \"function\",\r\n\tisObject = o => o && typeof o === \"object\",\r\n\tisString = s => typeof s === \"string\",\r\n\tisPlainObject = o => isObject(o) && getProto(o) === ObjectProto,\r\n\tisIterable = x => x && isFunction(x[Symbol.iterator]),\r\n\r\n\tproxify = (val, traps) => new Proxy(val, traps),\r\n\r\n\tmerge = (target, src = {}) => {\r\n\t\tfor (let key in src) {\r\n\t\t\tif (isPlainObject(src[key])) {\r\n\t\t\t\tconst o = {}\r\n\t\t\t\tmerge(o, target[key])\r\n\t\t\t\tmerge(o, src[key])\r\n\t\t\t\ttarget[key] = o\r\n\t\t\t} else {\r\n\t\t\t\ttarget[key] = src[key]\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn target\r\n\t},\r\n\r\n\tdefine = (obj, key, value, enumerable = false) => {\r\n\t\tObject.defineProperty(obj, key, { value, enumerable, writable: true, configurable: true })\r\n\t},\r\n\r\n\textend = (child, parent, props) => {\r\n\t\tchild.prototype = Object.assign(Object.create(parent.prototype, {\r\n\t\t\tconstructor: {\r\n\t\t\t\tvalue: child,\r\n\t\t\t\twritable: true,\r\n\t\t\t\tconfigurable: true\r\n\t\t\t}\r\n\t\t}), props)\r\n\t\tsetProto(child, parent)\r\n\t}","import {\r\n\tbettertypeof, define, extend, getProto, has,\r\n\tis, isFunction, isObject, isPlainObject, isString,\r\n\tmerge, ObjectProto, proxify, setProto\r\n} from \"./helpers.js\"\r\n\r\nexport const\r\n\t_check = Symbol(),\r\n\t_checked = Symbol(), // used to skip validation at instanciation for perf\r\n\t_original = Symbol(), // used to bypass proxy\r\n\tCHECK_ONCE = Symbol(),\r\n\r\n\tinitModel = (def, constructor, parent, init, getTraps, useNew) => {\r\n\t\tconst model = function (val = model.default, mode) {\r\n\t\t\tif (useNew && !is(model, this)) return new model(val)\r\n\t\t\tif (init) val = init(val, model, this)\r\n\r\n\t\t\tif (mode === _checked || check(model, val))\r\n\t\t\t\treturn getTraps && mode !== CHECK_ONCE ? proxify(val, getTraps(model)) : val\r\n\t\t}\r\n\r\n\t\tif (parent) extend(model, parent)\r\n\t\tsetProto(model, constructor.prototype)\r\n\t\tmodel.constructor = constructor\r\n\t\tmodel.definition = def\r\n\t\tmodel.assertions = [...model.assertions]\r\n\t\tdefine(model, \"errors\", [])\r\n\t\tdelete model.name\r\n\t\treturn model\r\n\t},\r\n\r\n\tinitObjectModel = (obj, model, _this) => {\r\n\t\tif (is(model, obj)) return obj\r\n\r\n\t\tif (!isObject(obj) && !isFunction(obj) && obj !== undefined) {\r\n\t\t\t// short circuit validation if not receiving an object as expected\r\n\t\t\treturn obj\r\n\t\t}\r\n\r\n\t\tmerge(_this, model.default)\r\n\t\tif (model.parentClass) merge(obj, new model.parentClass(obj))\r\n\t\tmerge(_this, obj)\r\n\t\treturn _this\r\n\t},\r\n\r\n\textendModel = (child, parent, newProps) => {\r\n\t\textend(child, parent, newProps)\r\n\t\tchild.assertions.push(...parent.assertions)\r\n\t\treturn child\r\n\t},\r\n\r\n\tstackError = (errors, expected, received, path, message) => {\r\n\t\terrors.push({ expected, received, path, message })\r\n\t},\r\n\r\n\tunstackErrors = (model, collector = model.errorCollector) => {\r\n\t\tconst nbErrors = model.errors.length\r\n\t\tif (nbErrors > 0) {\r\n\t\t\tconst errors = model.errors.map(err => {\r\n\t\t\t\tif (!err.message) {\r\n\t\t\t\t\terr.message = \"expecting \" + (err.path ? err.path + \" to be \" : \"\") + formatDefinition(err.expected)\r\n\t\t\t\t\t\t+ \", got \" + (err.received != null ? bettertypeof(err.received) + \" \" : \"\") + format(err.received)\r\n\t\t\t\t}\r\n\t\t\t\terr.model = model\r\n\t\t\t\treturn err\r\n\t\t\t})\r\n\r\n\t\t\tmodel.errors.length = 0\r\n\t\t\tcollector.call(model, errors) // throw all errors collected\r\n\t\t}\r\n\t\treturn nbErrors\r\n\t},\r\n\r\n\tisModelInstance = i => i && getProto(i) && is(Model, getProto(i).constructor),\r\n\r\n\tparseDefinition = (def) => {\r\n\t\tif (isPlainObject(def)) {\r\n\t\t\tdef = {}\r\n\t\t\tfor (let key in def) { def[key] = parseDefinition(def[key]) }\r\n\t\t}\r\n\t\tif (!Array.isArray(def)) return [def]\r\n\t\telse if (def.length === 1) return [def[0], undefined, null]\r\n\r\n\t\treturn def\r\n\t},\r\n\r\n\tformatDefinition = (def, stack) => {\r\n\t\tconst parts = parseDefinition(def).map(d => format(d, stack))\r\n\t\treturn parts.length > 1 ? parts.join(\" or \") : parts[0]\r\n\t},\r\n\r\n\tformatAssertions = fns => fns.length ? `(${fns.map(f => f.name || f.description || f)})` : \"\",\r\n\r\n\textendDefinition = (def, newParts = []) => {\r\n\t\tif (newParts.length > 0) {\r\n\t\t\tdef = [].concat(def, ...[].concat(newParts))// clone to lose ref\r\n\t\t\t\t.filter((value, index, self) => self.indexOf(value) === index) // remove duplicates\r\n\t\t}\r\n\r\n\t\treturn def\r\n\t},\r\n\r\n\tcheck = (model, obj) => {\r\n\t\tmodel[_check](obj, null, model.errors, [], true);\r\n\t\treturn !unstackErrors(model)\r\n\t},\r\n\r\n\tcheckDefinition = (obj, def, path, errors, stack, shouldCast) => {\r\n\t\tconst indexFound = stack.indexOf(def)\r\n\t\tif (indexFound !== -1 && stack.indexOf(def, indexFound + 1) !== -1)\r\n\t\t\treturn obj // if found twice in call stack, cycle detected, skip validation\r\n\r\n\t\tif (Array.isArray(def) && def.length === 1 && obj != null) {\r\n\t\t\tdef = def[0] // shorten validation path for optionals\r\n\t\t}\r\n\r\n\t\tif (is(Model, def)) {\r\n\t\t\tif (shouldCast) obj = cast(obj, def)\r\n\t\t\tdef[_check](obj, path, errors, stack.concat(def), shouldCast)\r\n\t\t}\r\n\t\telse if (isPlainObject(def)) {\r\n\t\t\tfor (let key in def) {\r\n\t\t\t\tconst val = obj ? obj[key] : undefined\r\n\t\t\t\tcheckDefinition(val, def[key], formatPath(path, key), errors, stack, shouldCast)\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\tconst pdef = parseDefinition(def)\r\n\t\t\tif (pdef.some(part => checkDefinitionPart(obj, part, path, stack, shouldCast))) {\r\n\t\t\t\treturn shouldCast ? cast(obj, def) : obj\r\n\t\t\t}\r\n\r\n\t\t\tstackError(errors, def, obj, path)\r\n\t\t}\r\n\r\n\t\treturn obj\r\n\t},\r\n\r\n\tcheckDefinitionPart = (obj, def, path, stack, shouldCast) => {\r\n\t\tif (def === Any) return true\r\n\t\tif (obj == null) return obj === def\r\n\t\tif (isPlainObject(def) || is(Model, def)) { // object or model as part of union type\r\n\t\t\tconst errors = []\r\n\t\t\tcheckDefinition(obj, def, path, errors, stack, shouldCast)\r\n\t\t\treturn !errors.length\r\n\t\t}\r\n\t\tif (is(RegExp, def)) return def.test(obj)\r\n\t\tif (def === Number || def === Date) return obj.constructor === def && !isNaN(obj)\r\n\t\treturn obj === def\r\n\t\t\t|| (isFunction(def) && is(def, obj))\r\n\t\t\t|| obj.constructor === def\r\n\t},\r\n\r\n\tcheckAssertions = (obj, model, path, errors = model.errors) => {\r\n\t\tfor (let assertion of model.assertions) {\r\n\t\t\tlet result\r\n\t\t\ttry {\r\n\t\t\t\tresult = assertion.call(model, obj)\r\n\t\t\t} catch (err) {\r\n\t\t\t\tresult = err\r\n\t\t\t}\r\n\t\t\tif (result !== true) {\r\n\t\t\t\tconst onFail = isFunction(assertion.description) ? assertion.description : (assertionResult, value) =>\r\n\t\t\t\t\t`assertion \"${assertion.description}\" returned ${format(assertionResult)} `\r\n\t\t\t\t\t+ `for ${path ? path + \" =\" : \"value\"} ${format(value)}`\r\n\t\t\t\tstackError(errors, assertion, obj, path, onFail.call(model, result, obj, path))\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tformat = (obj, stack = []) => {\r\n\t\tif (stack.length > 15 || stack.includes(obj)) return \"...\"\r\n\t\tif (obj === null || obj === undefined) return String(obj)\r\n\t\tif (isString(obj)) return `\"${obj}\"`\r\n\t\tif (is(Model, obj)) return obj.toString(stack)\r\n\r\n\t\tstack.unshift(obj)\r\n\r\n\t\tif (isFunction(obj)) return obj.name || obj.toString()\r\n\t\tif (is(Map, obj) || is(Set, obj)) return format([...obj])\r\n\t\tif (Array.isArray(obj)) return `[${obj.map(item => format(item, stack)).join(\", \")}]`\r\n\t\tif (obj.toString && obj.toString !== ObjectProto.toString) return obj.toString()\r\n\t\tif (isObject(obj)) {\r\n\t\t\tconst props = Object.keys(obj),\r\n\t\t\t\tindent = \"\\t\".repeat(stack.length)\r\n\t\t\treturn `{${props.map(\r\n\t\t\t\tkey => `\\n${indent + key}: ${format(obj[key], [...stack])}`\r\n\t\t\t).join(\", \")} ${props.length ? `\\n${indent.slice(1)}` : \"\"}}`\r\n\t\t}\r\n\r\n\t\treturn String(obj)\r\n\t},\r\n\r\n\tformatPath = (path, key) => path ? path + \".\" + key : key,\r\n\r\n\tcontrolMutation = (model, def, path, o, key, privateAccess, applyMutation) => {\r\n\t\tconst newPath = formatPath(path, key),\r\n\t\t\tisPrivate = model.conventionForPrivate(key),\r\n\t\t\tisConstant = model.conventionForConstant(key),\r\n\t\t\tisOwnProperty = has(o, key),\r\n\t\t\tinitialPropDescriptor = isOwnProperty && Object.getOwnPropertyDescriptor(o, key)\r\n\r\n\t\tif (key in def && ((isPrivate && !privateAccess) || (isConstant && o[key] !== undefined)))\r\n\t\t\tcannot(`modify ${isPrivate ? \"private\" : \"constant\"} property ${key}`, model)\r\n\r\n\t\tapplyMutation()\r\n\t\tif (has(def, key)) checkDefinition(o[key], def[key], newPath, model.errors, [])\r\n\t\tcheckAssertions(o, model, newPath)\r\n\r\n\t\tconst nbErrors = model.errors.length\r\n\t\tif (nbErrors) {\r\n\t\t\tif (isOwnProperty) Object.defineProperty(o, key, initialPropDescriptor)\r\n\t\t\telse delete o[key] // back to the initial property defined in prototype chain\r\n\r\n\t\t\tunstackErrors(model)\r\n\t\t}\r\n\r\n\t\treturn !nbErrors\r\n\t},\r\n\r\n\tcannot = (msg, model) => {\r\n\t\tmodel.errors.push({ message: \"cannot \" + msg })\r\n\t},\r\n\r\n\tcast = (obj, defNode = []) => {\r\n\t\tif (!obj || isPlainObject(defNode) || is(BasicModel, defNode) || isModelInstance(obj))\r\n\t\t\treturn obj // no value or not leaf or already a model instance\r\n\r\n\t\tconst def = parseDefinition(defNode),\r\n\t\t\tsuitableModels = []\r\n\r\n\t\tfor (let part of def) {\r\n\t\t\tif (is(Model, part) && !is(BasicModel, part) && part.test(obj))\r\n\t\t\t\tsuitableModels.push(part)\r\n\t\t}\r\n\r\n\t\tif (suitableModels.length === 1) {\r\n\t\t\t// automatically cast to suitable model when explicit (autocasting)\r\n\t\t\treturn new suitableModels[0](obj, _checked)\r\n\t\t}\r\n\r\n\t\tif (suitableModels.length > 1)\r\n\t\t\tconsole.warn(`Ambiguous model for value ${format(obj)}, could be ${suitableModels.join(\" or \")}`)\r\n\r\n\t\treturn obj\r\n\t},\r\n\r\n\r\n\tgetProp = (val, model, def, path, privateAccess) => {\r\n\t\tif (!isPlainObject(def)) return cast(val, def)\r\n\t\treturn proxify(val, getTraps(model, def, path, privateAccess))\r\n\t},\r\n\r\n\tgetTraps = (model, def, path, privateAccess) => {\r\n\t\tconst grantPrivateAccess = f => proxify(f, {\r\n\t\t\tapply(fn, ctx, args) {\r\n\t\t\t\tprivateAccess = true\r\n\t\t\t\tconst result = Reflect.apply(fn, ctx, args)\r\n\t\t\t\tprivateAccess = false\r\n\t\t\t\treturn result\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\treturn {\r\n\t\t\tget(o, key) {\r\n\t\t\t\tif (key === _original) return o\r\n\r\n\t\t\t\tif (!isString(key)) return Reflect.get(o, key)\r\n\r\n\t\t\t\tconst newPath = formatPath(path, key)\r\n\t\t\t\tconst inDef = has(def, key)\r\n\t\t\t\tconst defPart = def[key]\r\n\r\n\t\t\t\tif (!privateAccess && inDef && model.conventionForPrivate(key)) {\r\n\t\t\t\t\tcannot(`access to private property ${newPath}`, model)\r\n\t\t\t\t\tunstackErrors(model)\r\n\t\t\t\t\treturn\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet value = o[key]\r\n\r\n\t\t\t\tif (inDef && value && has(o, key) && !isPlainObject(defPart) && !isModelInstance(value)) {\r\n\t\t\t\t\tReflect.set(o, key, value = cast(value, defPart)) // cast nested models\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (isFunction(value) && key !== \"constructor\" && !privateAccess) {\r\n\t\t\t\t\treturn grantPrivateAccess(value)\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (isPlainObject(defPart) && !value) {\r\n\t\t\t\t\to[key] = value = {} // null-safe traversal\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn getProp(value, model, defPart, newPath, privateAccess)\r\n\t\t\t},\r\n\r\n\t\t\tset(o, key, val) {\r\n\t\t\t\treturn controlMutation(model, def, path, o, key, privateAccess, () => Reflect.set(o, key, cast(val, def[key])))\r\n\t\t\t},\r\n\r\n\t\t\tdeleteProperty(o, key) {\r\n\t\t\t\treturn controlMutation(model, def, path, o, key, privateAccess, () => Reflect.deleteProperty(o, key))\r\n\t\t\t},\r\n\r\n\t\t\tdefineProperty(o, key, args) {\r\n\t\t\t\treturn controlMutation(model, def, path, o, key, privateAccess, () => Reflect.defineProperty(o, key, args))\r\n\t\t\t},\r\n\r\n\t\t\thas(o, key) {\r\n\t\t\t\treturn Reflect.has(o, key) && Reflect.has(def, key) && !model.conventionForPrivate(key)\r\n\t\t\t},\r\n\r\n\t\t\townKeys(o) {\r\n\t\t\t\treturn Reflect.ownKeys(o).filter(key => Reflect.has(def, key) && !model.conventionForPrivate(key))\r\n\t\t\t},\r\n\r\n\t\t\tgetOwnPropertyDescriptor(o, key) {\r\n\t\t\t\tlet descriptor\r\n\t\t\t\tif (!model.conventionForPrivate(key)) {\r\n\t\t\t\t\tdescriptor = Object.getOwnPropertyDescriptor(def, key)\r\n\t\t\t\t\tif (descriptor !== undefined) descriptor.value = o[key]\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn descriptor\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\nexport function Model(def) {\r\n\treturn isPlainObject(def) ? new ObjectModel(def) : new BasicModel(def)\r\n}\r\n\r\nObject.assign(Model.prototype, {\r\n\tname: \"Model\",\r\n\tassertions: [],\r\n\r\n\tconventionForConstant: key => key.toUpperCase() === key,\r\n\tconventionForPrivate: key => key[0] === \"_\",\r\n\r\n\ttoString(stack) {\r\n\t\treturn has(this, \"name\") ? this.name : formatDefinition(this.definition, stack) + formatAssertions(this.assertions)\r\n\t},\r\n\r\n\tas(name) {\r\n\t\tdefine(this, \"name\", name)\r\n\t\treturn this\r\n\t},\r\n\r\n\tdefaultTo(val) {\r\n\t\tthis.default = this(val)\r\n\t\treturn this\r\n\t},\r\n\r\n\t[_check](obj, path, errors, stack, shouldCast) {\r\n\t\tcheckDefinition(obj, this.definition, path, errors, stack, shouldCast)\r\n\t\tcheckAssertions(obj, this, path, errors)\r\n\t},\r\n\r\n\ttest(obj, errorCollector) {\r\n\t\tlet model = this\r\n\t\twhile (!has(model, \"errorCollector\")) {\r\n\t\t\tmodel = getProto(model)\r\n\t\t}\r\n\r\n\t\tconst initialErrorCollector = model.errorCollector\r\n\t\tlet failed\r\n\r\n\t\tmodel.errorCollector = errors => {\r\n\t\t\tfailed = true\r\n\t\t\tif (errorCollector) errorCollector.call(this, errors)\r\n\t\t}\r\n\r\n\t\tnew this(obj) // may trigger errorCollector\r\n\r\n\t\tmodel.errorCollector = initialErrorCollector\r\n\t\treturn !failed\r\n\t},\r\n\r\n\terrorCollector(errors) {\r\n\t\tconst e = new TypeError(errors.map(e => e.message).join(\"\\n\"))\r\n\t\te.stack = e.stack.replace(/\\n.*object-model(.|\\n)*object-model.*/, \"\") // blackbox objectmodel in stacktrace\r\n\t\tthrow e\r\n\t},\r\n\r\n\tassert(assertion, description = format(assertion)) {\r\n\t\tdefine(assertion, \"description\", description)\r\n\t\tthis.assertions = this.assertions.concat(assertion)\r\n\t\treturn this\r\n\t}\r\n})\r\n\r\nModel.CHECK_ONCE = CHECK_ONCE\r\n\r\nexport function BasicModel(def) {\r\n\treturn initModel(def, BasicModel)\r\n}\r\n\r\nextend(BasicModel, Model, {\r\n\textend(...newParts) {\r\n\t\tconst child = extendModel(new BasicModel(extendDefinition(this.definition, newParts)), this)\r\n\t\tfor (let part of newParts) {\r\n\t\t\tif (is(BasicModel, part)) child.assertions.push(...part.assertions)\r\n\t\t}\r\n\r\n\t\treturn child\r\n\t}\r\n})\r\n\r\nexport function ObjectModel(def) {\r\n\treturn initModel(def, ObjectModel, Object, initObjectModel, model => getTraps(model, def), true)\r\n}\r\n\r\nextend(ObjectModel, Model, {\r\n\tdefaultTo(obj) {\r\n\t\tconst def = this.definition\r\n\t\tfor (let key in obj) {\r\n\t\t\tif (has(def, key)) {\r\n\t\t\t\tobj[key] = checkDefinition(obj[key], def[key], key, this.errors, [], true)\r\n\t\t\t}\r\n\t\t}\r\n\t\tunstackErrors(this)\r\n\t\tthis.default = obj;\r\n\t\treturn this\r\n\t},\r\n\r\n\ttoString(stack) {\r\n\t\treturn format(this.definition, stack)\r\n\t},\r\n\r\n\textend(...newParts) {\r\n\t\tconst definition = { ...this.definition }\r\n\t\tconst proto = { ...this.prototype }\r\n\t\tconst defaults = { ...this.default }\r\n\t\tconst newAssertions = []\r\n\r\n\t\tfor (let part of newParts) {\r\n\t\t\tif (is(Model, part)) {\r\n\t\t\t\tmerge(definition, part.definition)\r\n\t\t\t\tmerge(defaults, part.default)\r\n\t\t\t\tnewAssertions.push(...part.assertions)\r\n\t\t\t}\r\n\t\t\tif (isFunction(part)) merge(proto, part.prototype)\r\n\t\t\tif (isObject(part)) merge(definition, part)\r\n\t\t}\r\n\r\n\t\tconst submodel = extendModel(new ObjectModel(definition), this, proto).defaultTo(defaults)\r\n\t\tsubmodel.assertions = [...this.assertions, ...newAssertions]\r\n\r\n\t\tif (getProto(this) !== ObjectModel.prototype) { // extended class\r\n\t\t\tsubmodel.parentClass = this\r\n\t\t}\r\n\r\n\t\treturn submodel\r\n\t},\r\n\r\n\t[_check](obj, path, errors, stack, shouldCast) {\r\n\t\tif (isObject(obj)) {\r\n\t\t\tcheckDefinition(obj[_original] || obj, this.definition, path, errors, stack, shouldCast)\r\n\t\t}\r\n\t\telse stackError(errors, this, obj, path)\r\n\r\n\t\tcheckAssertions(obj, this, path, errors)\r\n\t}\r\n})\r\n\r\nexport const Any = proxify(BasicModel(), {\r\n\tapply(target, ctx, [def]) {\r\n\t\tconst anyOf = Object.create(Any)\r\n\t\tanyOf.definition = def;\r\n\t\treturn anyOf\r\n\t}\r\n})\r\nAny.definition = Any\r\nAny.toString = () => \"Any\"\r\n\r\nAny.remaining = function (def) { this.definition = def }\r\nextend(Any.remaining, Any, {\r\n\ttoString() { return \"...\" + formatDefinition(this.definition) }\r\n})\r\nAny[Symbol.iterator] = function* () { yield new Any.remaining(this.definition) }","\r\nimport { _original, checkAssertions, checkDefinition, initModel, unstackErrors } from \"./object-model.js\"\r\nimport { has, isFunction, proxify } from \"./helpers.js\"\r\n\r\nexport const initListModel = (base, constructor, def, init, clone, mutators, otherTraps) => {\r\n\r\n\treturn initModel(def, constructor, base, init, model => Object.assign({\r\n\t\tgetPrototypeOf: () => model.prototype,\r\n\t\tget(l, key) {\r\n\t\t\tif (key === _original) return l\r\n\r\n\t\t\tconst val = l[key]\r\n\t\t\treturn isFunction(val) ? proxify(val, {\r\n\t\t\t\tapply(fn, ctx, args) {\r\n\t\t\t\t\tif (has(mutators, key)) {\r\n\t\t\t\t\t\t// indexes of arguments to check def + cast\r\n\t\t\t\t\t\tconst [begin, end = args.length - 1, getArgDef] = mutators[key]\r\n\t\t\t\t\t\tfor (let i = begin; i <= end; i++) {\r\n\t\t\t\t\t\t\tconst argDef = getArgDef ? getArgDef(i) : model.definition\r\n\t\t\t\t\t\t\targs[i] = checkDefinition(\r\n\t\t\t\t\t\t\t\targs[i],\r\n\t\t\t\t\t\t\t\targDef,\r\n\t\t\t\t\t\t\t\t`${base.name}.${key} arguments[${i}]`,\r\n\t\t\t\t\t\t\t\tmodel.errors,\r\n\t\t\t\t\t\t\t\t[],\r\n\t\t\t\t\t\t\t\ttrue\r\n\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (model.assertions.length > 0) {\r\n\t\t\t\t\t\t\tconst testingClone = clone(l)\r\n\t\t\t\t\t\t\tfn.apply(testingClone, args)\r\n\t\t\t\t\t\t\tcheckAssertions(testingClone, model, `after ${key} mutation`)\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tunstackErrors(model)\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn fn.apply(l, args)\r\n\t\t\t\t}\r\n\t\t\t}) : val\r\n\t\t}\r\n\t}, otherTraps))\r\n}","import {\r\n\t_original, _check, cast, checkAssertions, checkDefinition,\r\n\textendDefinition, extendModel, formatDefinition, Model, stackError, unstackErrors\r\n} from \"./object-model.js\"\r\nimport { initListModel } from \"./list-model.js\"\r\nimport { extend } from \"./helpers.js\"\r\n\r\nexport default function ArrayModel(initialDefinition) {\r\n\tconst model = initListModel(\r\n\t\tArray,\r\n\t\tArrayModel,\r\n\t\tinitialDefinition,\r\n\t\ta => Array.isArray(a) ? a.map(arg => cast(arg, model.definition)) : a,\r\n\t\ta => [...a],\r\n\t\t{\r\n\t\t\t\"copyWithin\": [],\r\n\t\t\t\"fill\": [0, 0],\r\n\t\t\t\"pop\": [],\r\n\t\t\t\"push\": [0],\r\n\t\t\t\"reverse\": [],\r\n\t\t\t\"shift\": [],\r\n\t\t\t\"sort\": [],\r\n\t\t\t\"splice\": [2],\r\n\t\t\t\"unshift\": [0]\r\n\t\t},\r\n\t\t{\r\n\t\t\tset(arr, key, val) {\r\n\t\t\t\treturn controlMutation(model, arr, key, val, (a, v) => a[key] = v, true)\r\n\t\t\t},\r\n\r\n\t\t\tdeleteProperty(arr, key) {\r\n\t\t\t\treturn controlMutation(model, arr, key, undefined, a => delete a[key])\r\n\t\t\t}\r\n\t\t}\r\n\t)\r\n\r\n\treturn model\r\n}\r\n\r\nextend(ArrayModel, Model, {\r\n\ttoString(stack) {\r\n\t\treturn \"Array of \" + formatDefinition(this.definition, stack)\r\n\t},\r\n\r\n\t[_check](arr, path, errors, stack, shouldCast) {\r\n\t\tif (Array.isArray(arr))\r\n\t\t\t(arr[_original] || arr).forEach((a, i) => checkDefinition(a, this.definition, `${path || \"Array\"}[${i}]`, errors, stack, shouldCast))\r\n\t\telse stackError(errors, this, arr, path)\r\n\r\n\t\tcheckAssertions(arr, this, path, errors)\r\n\t},\r\n\r\n\textend(...newParts) {\r\n\t\treturn extendModel(new ArrayModel(extendDefinition(this.definition, newParts)), this)\r\n\t}\r\n})\r\n\r\nconst controlMutation = (model, array, key, value, applyMutation, canBeExtended) => {\r\n\tconst path = `Array[${key}]`\r\n\tconst isInDef = (+key >= 0 && (canBeExtended || key in array))\r\n\tif (isInDef) value = checkDefinition(value, model.definition, path, model.errors, [], true)\r\n\r\n\tconst testArray = [...array]\r\n\tapplyMutation(testArray)\r\n\tcheckAssertions(testArray, model, path)\r\n\tconst isSuccess = !unstackErrors(model)\r\n\tif (isSuccess) applyMutation(array, value)\r\n\treturn isSuccess\r\n}","import {\r\n\t_check, cast, checkAssertions, checkDefinition,\r\n\textendDefinition, extendModel, formatDefinition, Model, stackError\r\n} from \"./object-model.js\"\r\nimport { initListModel } from \"./list-model.js\"\r\nimport { extend, is, isIterable } from \"./helpers.js\"\r\n\r\nexport default function SetModel(initialDefinition) {\r\n\tconst model = initListModel(\r\n\t\tSet,\r\n\t\tSetModel,\r\n\t\tinitialDefinition,\r\n\t\tit => isIterable(it) ? new Set([...it].map(val => cast(val, model.definition))) : it,\r\n\t\tset => new Set(set),\r\n\t\t{\r\n\t\t\t\"add\": [0, 0],\r\n\t\t\t\"delete\": [],\r\n\t\t\t\"clear\": []\r\n\t\t}\r\n\t)\r\n\r\n\treturn model\r\n}\r\n\r\nextend(SetModel, Model, {\r\n\ttoString(stack) {\r\n\t\treturn \"Set of \" + formatDefinition(this.definition, stack)\r\n\t},\r\n\r\n\t[_check](set, path, errors, stack, shouldCast) {\r\n\t\tif (is(Set, set)) {\r\n\t\t\tfor (let item of set.values()) {\r\n\t\t\t\tcheckDefinition(item, this.definition, `${path || \"Set\"} value`, errors, stack, shouldCast)\r\n\t\t\t}\r\n\t\t} else stackError(errors, this, set, path)\r\n\t\tcheckAssertions(set, this, path, errors)\r\n\t},\r\n\r\n\textend(...newParts) {\r\n\t\treturn extendModel(new SetModel(extendDefinition(this.definition, newParts)), this)\r\n\t}\r\n})","import {\r\n\t_check, cast, checkAssertions, checkDefinition,\r\n\textendDefinition, extendModel, format, formatDefinition, Model, stackError\r\n} from \"./object-model.js\"\r\nimport { initListModel } from \"./list-model.js\"\r\nimport { extend, is, isIterable } from \"./helpers.js\"\r\n\r\nexport default function MapModel(initialKeyDefinition, initialValueDefinition) {\r\n\tconst getDef = i => i === 0 ? model.definition.key : model.definition.value;\r\n\tconst model = initListModel(\r\n\t\tMap,\r\n\t\tMapModel,\r\n\t\t{ key: initialKeyDefinition, value: initialValueDefinition },\r\n\t\tit => isIterable(it) ? new Map([...it].map(pair => pair.map((x, i) => cast(x, getDef(i))))) : it,\r\n\t\tmap => new Map(map),\r\n\t\t{\r\n\t\t\t\"set\": [0, 1, getDef],\r\n\t\t\t\"delete\": [],\r\n\t\t\t\"clear\": []\r\n\t\t}\r\n\t)\r\n\r\n\treturn model\r\n}\r\n\r\nextend(MapModel, Model, {\r\n\ttoString(stack) {\r\n\t\treturn `Map of ${formatDefinition(this.definition.key, stack)} : ${formatDefinition(this.definition.value, stack)}`\r\n\t},\r\n\r\n\t[_check](map, path, errors, stack, shouldCast) {\r\n\t\tif (is(Map, map)) {\r\n\t\t\tpath = path || \"Map\"\r\n\t\t\tfor (let [key, value] of map) {\r\n\t\t\t\tcheckDefinition(key, this.definition.key, `${path} key`, errors, stack, shouldCast)\r\n\t\t\t\tcheckDefinition(value, this.definition.value, `${path}[${format(key)}]`, errors, stack, shouldCast)\r\n\t\t\t}\r\n\t\t} else stackError(errors, this, map, path)\r\n\r\n\t\tcheckAssertions(map, this, path, errors)\r\n\t},\r\n\r\n\textend(keyParts, valueParts) {\r\n\t\treturn extendModel(new MapModel(\r\n\t\t\textendDefinition(this.definition.key, keyParts),\r\n\t\t\textendDefinition(this.definition.value, valueParts)\r\n\t\t), this)\r\n\t}\r\n})","import {\r\n\t_check, _original, Any, checkAssertions, checkDefinition, extendDefinition, extendModel,\r\n\tformatDefinition, initModel, Model, stackError, unstackErrors\r\n} from \"./object-model.js\"\r\nimport { extend, is, isFunction } from \"./helpers.js\"\r\n\r\nexport default function FunctionModel(...argsDef) {\r\n\treturn initModel({ arguments: argsDef }, FunctionModel, Function, null, model => ({\r\n\t\tgetPrototypeOf: () => model.prototype,\r\n\r\n\t\tget(fn, key) {\r\n\t\t\treturn key === _original ? fn : fn[key]\r\n\t\t},\r\n\r\n\t\tapply(fn, ctx, args) {\r\n\t\t\tconst def = model.definition\r\n\t\t\tconst remainingArgDef = def.arguments.find(argDef => is(Any.remaining, argDef))\r\n\t\t\tconst nbArgsToCheck = remainingArgDef ? Math.max(args.length, def.arguments.length - 1) : def.arguments.length\r\n\r\n\t\t\tfor (let i = 0; i < nbArgsToCheck; i++) {\r\n\t\t\t\tconst argDef = remainingArgDef && i >= def.arguments.length - 1 ? remainingArgDef.definition : def.arguments[i]\r\n\t\t\t\targs[i] = checkDefinition(args[i], argDef, `arguments[${i}]`, model.errors, [], true)\r\n\t\t\t}\r\n\r\n\t\t\tcheckAssertions(args, model, \"arguments\")\r\n\r\n\t\t\tlet result\r\n\t\t\tif (!model.errors.length) {\r\n\t\t\t\tresult = Reflect.apply(fn, ctx, args)\r\n\t\t\t\tif (\"return\" in def)\r\n\t\t\t\t\tresult = checkDefinition(result, def.return, \"return value\", model.errors, [], true)\r\n\t\t\t}\r\n\t\t\tunstackErrors(model)\r\n\t\t\treturn result\r\n\t\t}\r\n\t}))\r\n}\r\n\r\nextend(FunctionModel, Model, {\r\n\ttoString(stack = []) {\r\n\t\tlet out = `Function(${this.definition.arguments.map(\r\n\t\t\targDef => formatDefinition(argDef, [...stack])\r\n\t\t).join(\", \")})`\r\n\r\n\t\tif (\"return\" in this.definition) {\r\n\t\t\tout += \" => \" + formatDefinition(this.definition.return, stack)\r\n\t\t}\r\n\t\treturn out\r\n\t},\r\n\r\n\treturn(def) {\r\n\t\tthis.definition.return = def\r\n\t\treturn this\r\n\t},\r\n\r\n\t[_check](f, path, errors) {\r\n\t\tif (!isFunction(f)) stackError(errors, \"Function\", f, path)\r\n\t}\r\n})","import { _original, Model, Any, BasicModel, ObjectModel } from \"./object-model.js\"\r\nimport ArrayModel from \"./array-model.js\"\r\nimport SetModel from \"./set-model.js\"\r\nimport MapModel from \"./map-model.js\"\r\nimport FunctionModel from \"./function-model.js\"\r\nimport { getProto, has, is, isFunction, isPlainObject } from \"./helpers.js\"\r\n\r\nconst styles = {\r\n\tlist: \"list-style-type: none; padding: 0; margin: 0;\",\r\n\tlistItem: \"padding: 0 0 0 1em;\",\r\n\tmodel: \"color: #3e999f;\",\r\n\tinstance: \"color: #718c00; font-style: italic\",\r\n\tfunction: \"color: #4271AE\",\r\n\tstring: \"color: #C41A16\",\r\n\tnumber: \"color: #1C00CF\",\r\n\tboolean: \"color: #AA0D91\",\r\n\tproperty: \"color: #8959a8\",\r\n\tprivate: \"color: #C19ED8\",\r\n\tconstant: \"color: #8959a8; font-weight: bold\",\r\n\tprivateConstant: \"color: #C19ED8; font-weight: bold\",\r\n\tnull: \"color: #8e908c\",\r\n\tundeclared: \"color: #C0C0C0;\",\r\n\tproto: \"color: #B871BD; font-style: italic\"\r\n};\r\n\r\nconst getModel = (instance) => {\r\n\tif (instance === undefined || instance === null)\r\n\t\treturn null\r\n\r\n\tconst proto = getProto(instance);\r\n\tif (!proto || !proto.constructor || !is(Model, proto.constructor))\r\n\t\treturn null\r\n\r\n\treturn proto.constructor\r\n}\r\n\r\nconst span = (style, ...children) => [\"span\", { style }, ...children]\r\n\r\nconst format = (x, config = {}) => {\r\n\tif (x === null || x === undefined)\r\n\t\treturn span(styles.null, \"\" + x);\r\n\r\n\tif (typeof x === \"boolean\")\r\n\t\treturn span(styles.boolean, x);\r\n\r\n\tif (typeof x === \"number\")\r\n\t\treturn span(styles.number, x);\r\n\r\n\tif (typeof x === \"string\")\r\n\t\treturn span(styles.string, `\"${x}\"`);\r\n\r\n\tif (Array.isArray(x) && config.isModelDefinition) {\r\n\t\treturn span(\"\", ...x.flatMap(part => [format(part, config), \" or \"]).slice(0, -1))\r\n\t}\r\n\r\n\tif (isPlainObject(x))\r\n\t\treturn formatObject(x, getModel(x), config)\r\n\r\n\tif (isFunction(x) && !is(Model, x) && config.isModelDefinition)\r\n\t\treturn span(styles.function, x.name || x.toString());\r\n\r\n\treturn [\"object\", { object: x, config }]\r\n}\r\n\r\nconst formatObject = (o, model, config) => span(\"\",\r\n\t\"{\",\r\n\t[\"ol\", { style: styles.list }, ...Object.keys(o).map(prop =>\r\n\t\t[\"li\", { style: styles.listItem }, span(styles.property, prop), \": \", format(o[prop], config)])\r\n\t],\r\n\t\"}\"\r\n)\r\n\r\nconst formatModel = model => {\r\n\tconst\r\n\t\tcfg = { isModelDefinition: true },\r\n\t\tdef = model.definition,\r\n\t\tformatList = (list, map) => list.flatMap(e => [map(e), \", \"]).slice(0, -1);\r\n\tlet parts = []\r\n\r\n\tif (is(BasicModel, model)) parts = [format(def, cfg)]\r\n\tif (is(ArrayModel, model)) parts = [\"Array of \", format(def, cfg)]\r\n\tif (is(SetModel, model)) parts = [\"Set of \", format(def, cfg)]\r\n\tif (is(MapModel, model)) parts = [\"Map of \", format(def.key, cfg), \" : \", format(def.value, cfg)]\r\n\tif (is(FunctionModel, model)) {\r\n\t\tparts = [\"Function(\", ...formatList(def.arguments, arg => format(arg, cfg)), \")\"]\r\n\t\tif (\"return\" in def) parts.push(\" => \", format(def.return, cfg))\r\n\t}\r\n\r\n\tif (model.assertions.length > 0) {\r\n\t\tparts.push(\"\\n(assertions: \", ...formatList(model.assertions, f => [\"object\", { object: f }]), \")\")\r\n\t}\r\n\r\n\treturn span(styles.model, ...parts)\r\n}\r\n\r\nconst ModelFormatter = {\r\n\theader(x, config = {}) {\r\n\t\tif (x === Any)\r\n\t\t\treturn span(styles.model, \"Any\")\r\n\r\n\t\tif (is(Any.remaining, x))\r\n\t\t\treturn span(styles.model, \"...\", format(x.definition, { isModelDefinition: true }))\r\n\r\n\t\tif (is(ObjectModel, x))\r\n\t\t\treturn span(styles.model, x.name)\r\n\r\n\t\tif (is(Model, x)) {\r\n\t\t\treturn formatModel(x)\r\n\t\t}\r\n\r\n\t\tif (config.isModelDefinition && isPlainObject(x))\r\n\t\t\treturn format(x, config)\r\n\r\n\t\treturn null;\r\n\t},\r\n\thasBody(x) {\r\n\t\treturn is(ObjectModel, x)\r\n\t},\r\n\tbody(model) {\r\n\t\treturn span(\"\",\r\n\t\t\t\"{\",\r\n\t\t\t[\"ol\", { style: styles.list }, ...Object.keys(model.definition).map(prop => {\r\n\t\t\t\tconst isPrivate = model.conventionForPrivate(prop)\r\n\t\t\t\tconst isConstant = model.conventionForConstant(prop)\r\n\t\t\t\tconst hasDefault = model.default && has(model.default, prop);\r\n\t\t\t\tlet style = styles.property;\r\n\r\n\t\t\t\tif (isPrivate) {\r\n\t\t\t\t\tstyle = isConstant ? styles.privateConstant : styles.private\r\n\t\t\t\t} else if (isConstant) {\r\n\t\t\t\t\tstyle = styles.constant\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn [\"li\", { style: styles.listItem },\r\n\t\t\t\t\tspan(style, prop), \": \", format(model.definition[prop], { isModelDefinition: true }),\r\n\t\t\t\t\thasDefault ? span(styles.proto, \" = \", format(model.default[prop])) : \"\"\r\n\t\t\t\t]\r\n\t\t\t})],\r\n\t\t\t\"}\"\r\n\t\t)\r\n\t}\r\n}\r\n\r\nconst ModelInstanceFormatter = {\r\n\theader(x, config = {}) {\r\n\t\tif (config.isInstanceProperty && isPlainObject(x)) {\r\n\t\t\treturn format(x, config)\r\n\t\t}\r\n\r\n\t\tconst model = getModel(x);\r\n\t\tif (is(Model, model)) {\r\n\t\t\tconst parts = is(ObjectModel, model) ? [model.name] : [[\"object\", { object: x[_original] }], ` (${model.name})`];\r\n\t\t\treturn span(styles.instance, ...parts)\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t},\r\n\thasBody(x) {\r\n\t\treturn x && is(ObjectModel, getModel(x))\r\n\t},\r\n\tbody(x) {\r\n\t\tconst model = getModel(x)\r\n\t\tconst o = x[_original] || x;\r\n\t\treturn span(\"\",\r\n\t\t\t\"{\",\r\n\t\t\t[\r\n\t\t\t\t\"ol\",\r\n\t\t\t\t{ style: styles.list },\r\n\t\t\t\t...Object.keys(o).map(prop => {\r\n\t\t\t\t\tconst isPrivate = model.conventionForPrivate(prop)\r\n\t\t\t\t\tconst isConstant = model.conventionForConstant(prop)\r\n\t\t\t\t\tconst isDeclared = prop in model.definition;\r\n\t\t\t\t\tlet style = styles.property;\r\n\r\n\t\t\t\t\tif (!isDeclared) {\r\n\t\t\t\t\t\tstyle = styles.undeclared\r\n\t\t\t\t\t} else if (isPrivate) {\r\n\t\t\t\t\t\tstyle = isConstant ? styles.privateConstant : styles.private\r\n\t\t\t\t\t} else if (isConstant) {\r\n\t\t\t\t\t\tstyle = styles.constant\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn [\"li\", { style: styles.listItem },\r\n\t\t\t\t\t\tspan(style, prop), \": \", format(o[prop], { isInstanceProperty: true })\r\n\t\t\t\t\t]\r\n\t\t\t\t}),\r\n\t\t\t\t[\"li\", { style: styles.listItem },\r\n\t\t\t\t\tspan(styles.proto, \"__proto__\", \": \", [\"object\", { object: getProto(x) }])\r\n\t\t\t\t]\r\n\t\t\t],\r\n\t\t\t\"}\"\r\n\t\t)\r\n\t}\r\n}\r\n\r\nif (typeof window !== \"undefined\") {\r\n\twindow.devtoolsFormatters = (window.devtoolsFormatters || [])\r\n\t\t.concat(ModelFormatter, ModelInstanceFormatter);\r\n}"],"names":["format","controlMutation"],"mappings":"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"}
|
package/dist/object-model.min.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// ObjectModel v4.4.
|
|
1
|
+
// ObjectModel v4.4.5 - http://objectmodel.js.org
|
|
2
2
|
// MIT License - Sylvain Pollet-Villard
|
|
3
|
-
const t=Object.prototype,e=Object.getPrototypeOf,r=Object.setPrototypeOf,n=(e,r)=>t.hasOwnProperty.call(e,r),i=(t,e)=>e instanceof t,o=t=>"function"==typeof t,s=t=>t&&"object"==typeof t,a=t=>"string"==typeof t,l=r=>s(r)&&e(r)===t,c=t=>t&&o(t[Symbol.iterator]),f=(t,e)=>new Proxy(t,e),u=(t,e={})=>{for(let r in e)if(l(e[r])){const n={};u(n,t[r]),u(n,e[r]),t[r]=n}else t[r]=e[r];return t},p=(t,e,r,n=!1)=>{Object.defineProperty(t,e,{value:r,enumerable:n,writable:!0,configurable:!0})},h=(t,e,n)=>{t.prototype=Object.assign(Object.create(e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),n),r(t,e)},d=Symbol(),g=Symbol(),y=Symbol(),m=Symbol(),v=(t,e,n,o,s,a)=>{const l=function(t=l.default,e){return a&&!i(l,this)?new l(t):(o&&(t=o(t,l,this)),e===g||x(l,t)?s&&e!==m?f(t,s(l)):t:void 0)};return n&&h(l,n),r(l,e.prototype),l.constructor=e,l.definition=t,l.assertions=[...l.assertions],p(l,"errors",[]),delete l.name,l},b=(t,e,r)=>i(e,t)?t:s(t)||o(t)||void 0===t?(u(r,e.default),e.parentClass&&u(t,new e.parentClass(t)),u(r,t),r):t,$=(t,e,r)=>(h(t,e,r),t.assertions.push(...e.assertions),t),S=(t,e,r,n,i)=>{t.push({expected:e,received:r,path:n,message:i})},w=(e,r=e.errorCollector)=>{const n=e.errors.length;if(n>0){const n=e.errors.map((
|
|
3
|
+
const t=Object.prototype,e=Object.getPrototypeOf,r=Object.setPrototypeOf,n=(e,r)=>t.hasOwnProperty.call(e,r),i=(t,e)=>e instanceof t,o=t=>"function"==typeof t,s=t=>t&&"object"==typeof t,a=t=>"string"==typeof t,l=r=>s(r)&&e(r)===t,c=t=>t&&o(t[Symbol.iterator]),f=(t,e)=>new Proxy(t,e),u=(t,e={})=>{for(let r in e)if(l(e[r])){const n={};u(n,t[r]),u(n,e[r]),t[r]=n}else t[r]=e[r];return t},p=(t,e,r,n=!1)=>{Object.defineProperty(t,e,{value:r,enumerable:n,writable:!0,configurable:!0})},h=(t,e,n)=>{t.prototype=Object.assign(Object.create(e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),n),r(t,e)},d=Symbol(),g=Symbol(),y=Symbol(),m=Symbol(),v=(t,e,n,o,s,a)=>{const l=function(t=l.default,e){return a&&!i(l,this)?new l(t):(o&&(t=o(t,l,this)),e===g||x(l,t)?s&&e!==m?f(t,s(l)):t:void 0)};return n&&h(l,n),r(l,e.prototype),l.constructor=e,l.definition=t,l.assertions=[...l.assertions],p(l,"errors",[]),delete l.name,l},b=(t,e,r)=>i(e,t)?t:s(t)||o(t)||void 0===t?(u(r,e.default),e.parentClass&&u(t,new e.parentClass(t)),u(r,t),r):t,$=(t,e,r)=>(h(t,e,r),t.assertions.push(...e.assertions),t),S=(t,e,r,n,i)=>{t.push({expected:e,received:r,path:n,message:i})},w=(e,r=e.errorCollector)=>{const n=e.errors.length;if(n>0){const n=e.errors.map((r=>{var n;return r.message||(r.message="expecting "+(r.path?r.path+" to be ":"")+P(r.expected)+", got "+(null!=r.received?(n=r.received,t.toString.call(n).match(/\s([a-zA-Z]+)/)[1]+" "):"")+k(r.received)),r.model=e,r}));e.errors.length=0,r.call(e,n)}return n},O=t=>t&&e(t)&&i(K,e(t).constructor),j=t=>{if(l(t)){t={};for(let e in t)t[e]=j(t[e])}return Array.isArray(t)?1===t.length?[t[0],void 0,null]:t:[t]},P=(t,e)=>{const r=j(t).map((t=>k(t,e)));return r.length>1?r.join(" or "):r[0]},A=(t,e=[])=>(e.length>0&&(t=[].concat(t,...[].concat(e)).filter(((t,e,r)=>r.indexOf(t)===e))),t),x=(t,e)=>(t[d](e,null,t.errors,[],!0),!w(t)),C=(t,e,r,n,o,s)=>{const a=o.indexOf(e);if(-1!==a&&-1!==o.indexOf(e,a+1))return t;if(Array.isArray(e)&&1===e.length&&null!=t&&(e=e[0]),i(K,e))s&&(t=N(t,e)),e[d](t,r,n,o.concat(e),s);else if(l(e))for(let i in e){const a=t?t[i]:void 0;C(a,e[i],M(r,i),n,o,s)}else{if(j(e).some((e=>R(t,e,r,o,s))))return s?N(t,e):t;S(n,e,t,r)}return t},R=(t,e,r,n,s)=>{if(e===H)return!0;if(null==t)return t===e;if(l(e)||i(K,e)){const i=[];return C(t,e,r,i,n,s),!i.length}return i(RegExp,e)?e.test(t):e===Number||e===Date?t.constructor===e&&!isNaN(t):t===e||o(e)&&i(e,t)||t.constructor===e},F=(t,e,r,n=e.errors)=>{for(let i of e.assertions){let s;try{s=i.call(e,t)}catch(t){s=t}if(!0!==s){const a=o(i.description)?i.description:(t,e)=>`assertion "${i.description}" returned ${k(t)} for ${r?r+" =":"value"} ${k(e)}`;S(n,i,t,r,a.call(e,s,t,r))}}},k=(e,r=[])=>{if(r.length>15||r.includes(e))return"...";if(null==e)return String(e);if(a(e))return`"${e}"`;if(i(K,e))return e.toString(r);if(r.unshift(e),o(e))return e.name||e.toString();if(i(Map,e)||i(Set,e))return k([...e]);if(Array.isArray(e))return`[${e.map((t=>k(t,r))).join(", ")}]`;if(e.toString&&e.toString!==t.toString)return e.toString();if(s(e)){const t=Object.keys(e),n="\t".repeat(r.length);return`{${t.map((t=>`\n${n+t}: ${k(e[t],[...r])}`)).join(", ")} ${t.length?`\n${n.slice(1)}`:""}}`}return String(e)},M=(t,e)=>t?t+"."+e:e,E=(t,e,r,i,o,s,a)=>{const l=M(r,o),c=t.conventionForPrivate(o),f=t.conventionForConstant(o),u=n(i,o),p=u&&Object.getOwnPropertyDescriptor(i,o);o in e&&(c&&!s||f&&void 0!==i[o])&&D(`modify ${c?"private":"constant"} property ${o}`,t),a(),n(e,o)&&C(i[o],e[o],l,t.errors,[]),F(i,t,l);const h=t.errors.length;return h&&(u?Object.defineProperty(i,o,p):delete i[o],w(t)),!h},D=(t,e)=>{e.errors.push({message:"cannot "+t})},N=(t,e=[])=>{if(!t||l(e)||i(_,e)||O(t))return t;const r=j(e),n=[];for(let e of r)i(K,e)&&!i(_,e)&&e.test(t)&&n.push(e);return 1===n.length?new n[0](t,g):(n.length>1&&console.warn(`Ambiguous model for value ${k(t)}, could be ${n.join(" or ")}`),t)},T=(t,e,r,i)=>({get(s,c){if(c===y)return s;if(!a(c))return Reflect.get(s,c);const u=M(r,c),p=n(e,c),h=e[c];if(!i&&p&&t.conventionForPrivate(c))return D(`access to private property ${u}`,t),void w(t);let d=s[c];return p&&d&&n(s,c)&&!l(h)&&!O(d)&&Reflect.set(s,c,d=N(d,h)),o(d)&&"constructor"!==c&&!i?f(d,{apply(t,e,r){i=!0;const n=Reflect.apply(t,e,r);return i=!1,n}}):(l(h)&&!d&&(s[c]=d={}),((t,e,r,n,i)=>l(r)?f(t,T(e,r,n,i)):N(t,r))(d,t,h,u,i))},set:(n,o,s)=>E(t,e,r,n,o,i,(()=>Reflect.set(n,o,N(s,e[o])))),deleteProperty:(n,o)=>E(t,e,r,n,o,i,(()=>Reflect.deleteProperty(n,o))),defineProperty:(n,o,s)=>E(t,e,r,n,o,i,(()=>Reflect.defineProperty(n,o,s))),has:(r,n)=>Reflect.has(r,n)&&Reflect.has(e,n)&&!t.conventionForPrivate(n),ownKeys:r=>Reflect.ownKeys(r).filter((r=>Reflect.has(e,r)&&!t.conventionForPrivate(r))),getOwnPropertyDescriptor(r,n){let i;return t.conventionForPrivate(n)||(i=Object.getOwnPropertyDescriptor(e,n),void 0!==i&&(i.value=r[n])),i}});function K(t){return l(t)?new z(t):new _(t)}function _(t){return v(t,_)}function z(t){return v(t,z,Object,b,(e=>T(e,t)),!0)}Object.assign(K.prototype,{name:"Model",assertions:[],conventionForConstant:t=>t.toUpperCase()===t,conventionForPrivate:t=>"_"===t[0],toString(t){return n(this,"name")?this.name:P(this.definition,t)+((e=this.assertions).length?`(${e.map((t=>t.name||t.description||t))})`:"");var e},as(t){return p(this,"name",t),this},defaultTo(t){return this.default=this(t),this},[d](t,e,r,n,i){C(t,this.definition,e,r,n,i),F(t,this,e,r)},test(t,r){let i=this;for(;!n(i,"errorCollector");)i=e(i);const o=i.errorCollector;let s;return i.errorCollector=t=>{s=!0,r&&r.call(this,t)},new this(t),i.errorCollector=o,!s},errorCollector(t){const e=new TypeError(t.map((t=>t.message)).join("\n"));throw e.stack=e.stack.replace(/\n.*object-model(.|\n)*object-model.*/,""),e},assert(t,e=k(t)){return p(t,"description",e),this.assertions=this.assertions.concat(t),this}}),K.CHECK_ONCE=m,h(_,K,{extend(...t){const e=$(new _(A(this.definition,t)),this);for(let r of t)i(_,r)&&e.assertions.push(...r.assertions);return e}}),h(z,K,{defaultTo(t){const e=this.definition;for(let r in t)n(e,r)&&(t[r]=C(t[r],e[r],r,this.errors,[],!0));return w(this),this.default=t,this},toString(t){return k(this.definition,t)},extend(...t){const r={...this.definition},n={...this.prototype},a={...this.default},l=[];for(let e of t)i(K,e)&&(u(r,e.definition),u(a,e.default),l.push(...e.assertions)),o(e)&&u(n,e.prototype),s(e)&&u(r,e);const c=$(new z(r),this,n).defaultTo(a);return c.assertions=[...this.assertions,...l],e(this)!==z.prototype&&(c.parentClass=this),c},[d](t,e,r,n,i){s(t)?C(t[y]||t,this.definition,e,r,n,i):S(r,this,t,e),F(t,this,e,r)}});const H=f(_(),{apply(t,e,[r]){const n=Object.create(H);return n.definition=r,n}});H.definition=H,H.toString=()=>"Any",H.remaining=function(t){this.definition=t},h(H.remaining,H,{toString(){return"..."+P(this.definition)}}),H[Symbol.iterator]=function*(){yield new H.remaining(this.definition)};const U=(t,e,r,i,s,a,l)=>v(r,e,t,i,(e=>Object.assign({getPrototypeOf:()=>e.prototype,get(r,i){if(i===y)return r;const l=r[i];return o(l)?f(l,{apply(o,l,c){if(n(a,i)){const[n,l=c.length-1,f]=a[i];for(let r=n;r<=l;r++){const n=f?f(r):e.definition;c[r]=C(c[r],n,`${t.name}.${i} arguments[${r}]`,e.errors,[],!0)}if(e.assertions.length>0){const t=s(r);o.apply(t,c),F(t,e,`after ${i} mutation`)}w(e)}return o.apply(r,c)}}):l}},l)));function W(t){const e=U(Array,W,t,(t=>Array.isArray(t)?t.map((t=>N(t,e.definition))):t),(t=>[...t]),{copyWithin:[],fill:[0,0],pop:[],push:[0],reverse:[],shift:[],sort:[],splice:[2],unshift:[0]},{set:(t,r,n)=>Z(e,t,r,n,((t,e)=>t[r]=e),!0),deleteProperty:(t,r)=>Z(e,t,r,void 0,(t=>delete t[r]))});return e}h(W,K,{toString(t){return"Array of "+P(this.definition,t)},[d](t,e,r,n,i){Array.isArray(t)?(t[y]||t).forEach(((t,o)=>C(t,this.definition,`${e||"Array"}[${o}]`,r,n,i))):S(r,this,t,e),F(t,this,e,r)},extend(...t){return $(new W(A(this.definition,t)),this)}});const Z=(t,e,r,n,i,o)=>{const s=`Array[${r}]`;+r>=0&&(o||r in e)&&(n=C(n,t.definition,s,t.errors,[],!0));const a=[...e];i(a),F(a,t,s);const l=!w(t);return l&&i(e,n),l};function q(...t){return v({arguments:t},q,Function,null,(t=>({getPrototypeOf:()=>t.prototype,get:(t,e)=>e===y?t:t[e],apply(e,r,n){const o=t.definition,s=o.arguments.find((t=>i(H.remaining,t))),a=s?Math.max(n.length,o.arguments.length-1):o.arguments.length;for(let e=0;e<a;e++){const r=s&&e>=o.arguments.length-1?s.definition:o.arguments[e];n[e]=C(n[e],r,`arguments[${e}]`,t.errors,[],!0)}let l;return F(n,t,"arguments"),t.errors.length||(l=Reflect.apply(e,r,n),"return"in o&&(l=C(l,o.return,"return value",t.errors,[],!0))),w(t),l}})))}function B(t,e){const r=t=>0===t?n.definition.key:n.definition.value,n=U(Map,B,{key:t,value:e},(t=>c(t)?new Map([...t].map((t=>t.map(((t,e)=>N(t,r(e))))))):t),(t=>new Map(t)),{set:[0,1,r],delete:[],clear:[]});return n}function G(t){const e=U(Set,G,t,(t=>c(t)?new Set([...t].map((t=>N(t,e.definition)))):t),(t=>new Set(t)),{add:[0,0],delete:[],clear:[]});return e}h(q,K,{toString(t=[]){let e=`Function(${this.definition.arguments.map((e=>P(e,[...t]))).join(", ")})`;return"return"in this.definition&&(e+=" => "+P(this.definition.return,t)),e},return(t){return this.definition.return=t,this},[d](t,e,r){o(t)||S(r,"Function",t,e)}}),h(B,K,{toString(t){return`Map of ${P(this.definition.key,t)} : ${P(this.definition.value,t)}`},[d](t,e,r,n,o){if(i(Map,t)){e=e||"Map";for(let[i,s]of t)C(i,this.definition.key,`${e} key`,r,n,o),C(s,this.definition.value,`${e}[${k(i)}]`,r,n,o)}else S(r,this,t,e);F(t,this,e,r)},extend(t,e){return $(new B(A(this.definition.key,t),A(this.definition.value,e)),this)}}),h(G,K,{toString(t){return"Set of "+P(this.definition,t)},[d](t,e,r,n,o){if(i(Set,t))for(let i of t.values())C(i,this.definition,`${e||"Set"} value`,r,n,o);else S(r,this,t,e);F(t,this,e,r)},extend(...t){return $(new G(A(this.definition,t)),this)}});export{H as Any,W as ArrayModel,_ as BasicModel,q as FunctionModel,B as MapModel,K as Model,z as ObjectModel,G as SetModel};
|
|
4
4
|
//# sourceMappingURL=object-model.min.js.map
|