mobx-state-tree
Advanced tools
Comparing version 1.1.0 to 1.1.1
@@ -0,1 +1,2 @@ | ||
import { IStateTreeNode, IDisposer } from "../internal"; | ||
export declare type IMiddlewareEventType = "action" | "flow_spawn" | "flow_resume" | "flow_resume_error" | "flow_return" | "flow_throw"; | ||
@@ -30,3 +31,1 @@ export declare type IMiddlewareEvent = { | ||
export declare function decorate<T extends Function>(middleware: IMiddlewareHandler, fn: T): T; | ||
import { IStateTreeNode } from "./node"; | ||
import { IDisposer } from "../utils"; |
@@ -0,1 +1,2 @@ | ||
import { IObservableArray, ObservableMap } from "mobx"; | ||
/** | ||
@@ -284,6 +285,2 @@ * Returns the _actual_ type of the given tree node. (Or throws) | ||
export declare function walk(target: IStateTreeNode, processor: (item: IStateTreeNode) => void): void; | ||
import { IObservableArray, ObservableMap } from "mobx"; | ||
import { IStateTreeNode } from "./node"; | ||
import { IJsonPatch } from "./json-patch"; | ||
import { IDisposer } from "../utils"; | ||
import { ISnapshottable, IType } from "../types/type"; | ||
import { IStateTreeNode, IJsonPatch, IDisposer, ISnapshottable, IType } from "../internal"; |
@@ -1,2 +0,2 @@ | ||
import { IMiddlewareEvent, IMiddlewareHandler } from "../core/action"; | ||
import { IMiddlewareEvent, IMiddlewareHandler } from "../internal"; | ||
/** | ||
@@ -3,0 +3,0 @@ * Convenience utility to create action based middleware that supports async processes more easily. |
@@ -1,3 +0,2 @@ | ||
import { IStateTreeNode } from "../core/node"; | ||
import { IDisposer } from "../utils"; | ||
import { IStateTreeNode, IDisposer } from "../internal"; | ||
export declare type ISerializedActionCall = { | ||
@@ -4,0 +3,0 @@ name: string; |
@@ -1,1 +0,1 @@ | ||
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("mobx")):"function"==typeof define&&define.amd?define(["exports","mobx"],e):e(t.mobxStateTree=t.mobxStateTree||{},t.mobx)}(this,function(t,e){"use strict";function n(t,e){function n(){this.constructor=t}St(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}function r(t,e){var n={};for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&e.indexOf(r)<0&&(n[r]=t[r]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols)for(var i=0,r=Object.getOwnPropertySymbols(t);i<r.length;i++)e.indexOf(r[i])<0&&(n[r[i]]=t[r[i]]);return n}function i(t,e,n,r){var i,o=arguments.length,a=o<3?e:null===r?r=Object.getOwnPropertyDescriptor(e,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(t,e,n,r);else for(var s=t.length-1;s>=0;s--)(i=t[s])&&(a=(o<3?i(a):o>3?i(e,n,a):i(e,n))||a);return o>3&&a&&Object.defineProperty(e,n,a),a}function o(t){throw void 0===t&&(t="Illegal state"),new Error("[mobx-state-tree] "+t)}function a(t){return t}function s(){}function u(t){return!(!Array.isArray(t)&&!e.isObservableArray(t))}function p(t){return t?u(t)?t:[t]:jt}function c(t){for(var e=[],n=1;n<arguments.length;n++)e[n-1]=arguments[n];for(var r=0;r<e.length;r++){var i=e[r];for(var o in i)t[o]=i[o]}return t}function l(t){if(null===t||"object"!=typeof t)return!1;var e=Object.getPrototypeOf(t);return e===Object.prototype||null===e}function f(t){return!(null===t||"object"!=typeof t||t instanceof Date||t instanceof RegExp)}function h(t){return null===t||void 0===t||("string"==typeof t||"number"==typeof t||"boolean"==typeof t||t instanceof Date)}function d(t){return"function"!=typeof t}function y(t,e,n){Object.defineProperty(t,e,{enumerable:!1,writable:!1,configurable:!0,value:n})}function v(t,e,n){Object.defineProperty(t,e,{enumerable:!0,writable:!1,configurable:!0,value:n})}function b(t,e){var n=t.indexOf(e);-1!==n&&t.splice(n,1)}function m(t,e){return t.push(e),function(){b(t,e)}}function g(t){for(var e=new Array(t.length),n=0;n<t.length;n++)e[n]=t[n];return e}function w(t){return"oldValue"in t||o("Patches without `oldValue` field cannot be inversed"),[P(t),V(t)]}function P(t){switch(t.op){case"add":return{op:"add",path:t.path,value:t.value};case"remove":return{op:"remove",path:t.path};case"replace":return{op:"replace",path:t.path,value:t.value}}}function V(t){switch(t.op){case"add":return{op:"remove",path:t.path};case"remove":return{op:"add",path:t.path,value:t.oldValue};case"replace":return{op:"replace",path:t.path,value:t.oldValue}}}function A(t){return t.replace(/~/g,"~1").replace(/\//g,"~0")}function S(t){return t.replace(/~0/g,"/").replace(/~1/g,"~")}function j(t){return 0===t.length?"":"/"+t.map(A).join("/")}function T(t){var e=t.split("/").map(S);return""===e[0]?e.slice(1):e}function _(t){return"object"==typeof t&&t&&!0===t.isType}function C(t){return _(t)&&(t.flags&(Ct.String|Ct.Number|Ct.Boolean|Ct.Date))>0}function O(t){return(t.flags&Ct.Reference)>0}function x(t){return W(t).type}function N(t,e){return W(t).onPatch(e)}function I(t,e){W(t).applyPatches(p(e))}function D(t,e){return W(t).applySnapshot(e)}function E(t){return W(t).root.storedValue}function R(t,e){var n=W(t).resolve(e,!1);if(void 0!==n)return n?n.value:void 0}function z(t,e){var n=W(t);n.getChildren().forEach(function(t){J(t.storedValue)&&z(t.storedValue,e)}),e(n.storedValue)}function k(){return Ot++}function F(t,e){var n=W(t.context),r=n._isRunningAction,i=xt;n.assertAlive(),n._isRunningAction=!0,xt=t;try{return H(n,t,e)}finally{xt=i,n._isRunningAction=r}}function M(){return xt||o("Not running an action!")}function $(t,n,r){var i=e.action(n,r);return i.$mst_middleware=r.$mst_middleware,function(){var e=k();return F({type:"action",name:n,id:e,args:g(arguments),context:t,tree:E(t),rootId:xt?xt.rootId:e,parentId:xt?xt.id:0},i)}}function L(t,e){return W(t).addMiddleWare(e)}function U(t,e,n){for(var r=n.$mst_middleware||[],i=t;i;)r=r.concat(i.middlewares),i=i.parent;return r}function H(t,e,n){function r(t){var o=i.shift();return o?o(t,r):n.apply(null,e.args)}var i=U(t,e,n);return i.length?r(e):n.apply(null,e.args)}function J(t){return!(!t||!t.$treenode)}function W(t){return J(t)?t.$treenode:o("Value "+t+" is no MST Node")}function B(t){return t&&"object"==typeof t&&!(t instanceof Date)&&!J(t)&&!Object.isFrozen(t)}function Y(){return W(this).snapshot}function q(t,e,n,r,i,u,p){if(void 0===u&&(u=a),void 0===p&&(p=s),J(i)){var c=W(i);return c.isRoot||o("Cannot add an object to a state tree if it is already part of the same or another state tree. Tried to assign an object to '"+(e?e.path:"")+"/"+n+"', but it lives already at '"+c.path+"'"),c.setParent(e,n),c}return new Dt(t,e,n,r,i,u,p)}function G(t){try{return JSON.stringify(t)}catch(t){return"<Unserializable: "+t+">"}}function Z(t){return"function"==typeof t?"<function"+(t.name?" "+t.name:"")+">":J(t)?"<"+t+">":"`"+G(t)+"`"}function K(t){var e=t.value,n=t.context[t.context.length-1].type,r=t.context.map(function(t){return t.path}).filter(function(t){return t.length>0}).join("/"),i=r.length>0?'at path "/'+r+'" ':"",o=J(e)?"value of type "+W(e).type.name+":":h(e)?"value":"snapshot",a=n&&J(e)&&n.is(W(e).snapshot);return""+i+o+" "+Z(e)+" is not assignable "+(n?"to type: `"+n.name+"`":"")+(t.message?" ("+t.message+")":"")+(n?C(n)?".":", expected an instance of `"+n.name+"` or a snapshot like `"+n.describe()+"` instead."+(a?" (Note that a snapshot of the provided value is compatible with the targeted type)":""):".")}function Q(t,e,n){return t.concat([{path:e,type:n}])}function X(){return jt}function tt(t,e,n){return[{context:t,value:e,message:n}]}function et(t){return t.reduce(function(t,e){return t.concat(e)},[])}function nt(t,e){}function rt(t,e){var n=t.validate(e,[{path:"",type:t}]);n.length>0&&o("Error while converting "+Z(e)+" to `"+t.name+"`:\n"+n.map(K).join("\n"))}function it(){return W(this)+"("+this.size+" items)"}function ot(t){t||o("Map.put cannot be used to set empty values");var e;if(J(t))e=W(t);else{if(!f(t))return o("Map.put can only be used to store complex values");e=W(W(this).type.subType.create(t))}return e.identifierAttribute||o("Map.put can only be used to store complex values that have an identifier type attribute"),this.set(e.identifier,e.value),this}function at(){return W(this)+"("+this.length+" items)"}function st(t,e,n,r,i){for(var a,s,u=!1,p=void 0,c=0;u=c<=r.length-1,a=n[c],(s=u?r[c]:void 0)instanceof Dt&&(s=s.storedValue),a||u;c++)if(u)if(a)if(pt(a,s))n[c]=ut(e,t,""+i[c],s,a);else{p=void 0;for(var l=c;l<n.length;l++)if(pt(n[l],s)){p=n.splice(l,1)[0];break}n.splice(c,0,ut(e,t,""+i[c],s,p))}else J(s)&&W(s).parent===t&&o("Cannot add an object to a state tree if it is already part of the same or another state tree. Tried to assign an object to '"+t.path+"/"+i[c]+"', but it lives already at '"+W(s).path+"'"),n.splice(c,0,ut(e,t,""+i[c],s));else a.die(),n.splice(c,1),c--;return n}function ut(t,e,n,r,i){if(nt(t,r),J(r)){var o=W(r);if(o.assertAlive(),null!==o.parent&&o.parent===e)return o.setParent(e,n),i&&i!==o&&i.die(),o}if(i){var a=t.reconcile(i,r);return a.setParent(e,n),a}return t.instantiate(e,n,e._environment,r)}function pt(t,e){return J(e)?W(e)===t:!(!f(e)||t.snapshot!==e)||!(null===t.identifier||!t.identifierAttribute||!l(e)||e[t.identifierAttribute]!==t.identifier)}function ct(t){switch(typeof t){case"string":return Mt;case"number":return $t;case"boolean":return Lt;case"object":if(t instanceof Date)return Jt}return o("Cannot determine primitive type from value "+t)}function lt(t,e){return new Bt(t,e)}function ft(){return W(this).toString()}function ht(t){return Object.keys(t).reduce(function(t,e){if(e in Yt)return o("Hook '"+e+"' was defined as property. Hooks should be defined as part of the actions");var n=Object.getOwnPropertyDescriptor(t,e);"get"in n&&o("Getters are not supported as properties. Please use views instead");var r=n.value;if(null===r)o("The default value of an attribute cannot be null or undefined as the type cannot be inferred. Did you mean `types.maybe(someType)`?");else{if(h(r))return Object.assign({},t,(i={},i[e]=lt(ct(r),r),i));if(_(r))return t;o("function"==typeof r?"Functions are not supported as properties, use views instead":"object"==typeof r?"In property '"+e+"': base model's should not contain complex values: '"+r+"'":"Unexpected value for property '"+e+"'")}var i},t)}function dt(t){for(var e=[],n=1;n<arguments.length;n++)e[n-1]=arguments[n];var r=_(t)?null:t,i=_(t)?e.concat(t):e,o="("+i.map(function(t){return t.name}).join(" | ")+")";return new Qt(o,i,r)}function yt(t){return new Xt(t)}function vt(t){return bt(t.name,t)}function bt(t,e){var n=function(){function r(e,r,o){e.$mst_middleware=n.$mst_middleware,F({name:t,type:r,id:i,args:[o],tree:a.tree,context:a.context,parentId:a.id,rootId:a.rootId},e)}var i=k(),a=M(),s=arguments;return new Promise(function(u,p){function c(t){var e;try{r(function(t){e=h.next(t)},"flow_resume",t)}catch(t){return void setImmediate(function(){r(function(e){p(t)},"flow_throw",t)})}f(e)}function l(t){var e;try{r(function(t){e=h.throw(t)},"flow_resume_error",t)}catch(t){return void setImmediate(function(){r(function(e){p(t)},"flow_throw",t)})}f(e)}function f(t){if(!t.done)return t.value&&"function"==typeof t.value.then||o("Only promises can be yielded to `async`, got: "+t),t.value.then(c,l);setImmediate(function(){r(function(t){u(t)},"flow_return",t.value)})}var h,d=function(){h=e.apply(null,arguments),c(void 0)};d.$mst_middleware=n.$mst_middleware,F({name:t,type:"flow_spawn",id:i,args:g(s),tree:a.tree,context:a.context,parentId:a.id,rootId:a.rootId},d)})};return n}function mt(t,e,n,r){if(r instanceof Date)return{$MST_DATE:r.getTime()};if(h(r))return r;if(J(r))return wt("[MSTNode: "+x(r).name+"]");if("function"==typeof r)return wt("[function]");if("object"==typeof r&&!l(r)&&!u(r))return wt("[object "+(r&&r.constructor&&r.constructor.name||"Complex Object")+"]");try{return JSON.stringify(r),r}catch(t){return wt(""+t)}}function gt(t,e){return e&&"object"==typeof e&&"$MST_DATE"in e?new Date(e.$MST_DATE):e}function wt(t){return{$MST_UNSERIALIZABLE:!0,type:t}}function Pt(t,n){e.runInAction(function(){p(n).forEach(function(e){return Vt(t,e)})})}function Vt(t,e){var n=R(t,e.path||"");if(!n)return o("Invalid action path: "+(e.path||""));var r=W(n);return"@APPLY_PATCHES"===e.name?I.call(null,n,e.args[0]):"@APPLY_SNAPSHOT"===e.name?D.call(null,n,e.args[0]):("function"!=typeof n[e.name]&&o("Action '"+e.name+"' does not exist in '"+r.path+"'"),n[e.name].apply(n,e.args?e.args.map(function(t){return gt(r,t)}):[]))}function At(t,e,n){function r(n){if("action"===n.type&&n.id===n.rootId){var r=W(n.context);e({name:n.name,path:W(t).getRelativePathTo(r),args:n.args.map(function(t,e){return mt(r,n.name,e,t)})})}}return void 0===n&&(n=!1),L(t,n?function(t,e){var n=e(t);return r(t),n}:function(t,e){return r(t),e(t)})}var St=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])},jt=Object.freeze([]),Tt=Object.freeze({}),_t=function(){};(_t=function(t,e){}).ids={};var Ct;!function(t){t[t.String=1]="String",t[t.Number=2]="Number",t[t.Boolean=4]="Boolean",t[t.Date=8]="Date",t[t.Literal=16]="Literal",t[t.Array=32]="Array",t[t.Map=64]="Map",t[t.Object=128]="Object",t[t.Frozen=256]="Frozen",t[t.Optional=512]="Optional",t[t.Reference=1024]="Reference",t[t.Identifier=2048]="Identifier",t[t.Late=4096]="Late",t[t.Refinement=8192]="Refinement",t[t.Union=16384]="Union",t[t.Null=32768]="Null",t[t.Undefined=65536]="Undefined"}(Ct||(Ct={}));var Ot=1,xt=null,Nt=function(){function t(){this.cache=e.observable.map()}return t.prototype.addNodeToCache=function(t){if(t.identifierAttribute){var n=t.identifier;this.cache.has(n)||this.cache.set(n,e.observable.shallowArray());var r=this.cache.get(n);-1!==r.indexOf(t)&&o("Already registered"),r.push(t)}return this},t.prototype.mergeCache=function(t){var e=this;t.identifierCache.cache.values().forEach(function(t){return t.forEach(function(t){e.addNodeToCache(t)})})},t.prototype.notifyDied=function(t){if(t.identifierAttribute){var e=this.cache.get(t.identifier);e&&e.remove(t)}},t.prototype.splitCache=function(e){var n=new t,r=e.path;return this.cache.values().forEach(function(t){for(var e=t.length-1;e>=0;e--)0===t[e].path.indexOf(r)&&(n.addNodeToCache(t[e]),t.splice(e,1))}),n},t.prototype.resolve=function(t,e){var n=this.cache.get(e);if(!n)return null;var r=n.filter(function(e){return t.isAssignableFrom(e.type)});switch(r.length){case 0:return null;case 1:return r[0];default:return o("Cannot resolve a reference to type '"+t.name+"' with id: '"+e+"' unambigously, there are multiple candidates: "+r.map(function(t){return t.path}).join(", "))}},t}(),It=1,Dt=function(){function t(t,n,r,i,o,u,p){void 0===u&&(u=a),void 0===p&&(p=s);var c=this;this.nodeId=++It,this._parent=null,this.subpath="",this.isProtectionEnabled=!0,this.identifierAttribute=void 0,this._environment=void 0,this._isRunningAction=!1,this._autoUnbox=!0,this._isAlive=!0,this._isDetaching=!1,this.middlewares=[],this.snapshotSubscribers=[],this.patchSubscribers=[],this.disposers=[],this.type=t,this._parent=n,this.subpath=r,this._environment=i,this.unbox=this.unbox.bind(this),this.storedValue=u(o);var l=B(this.storedValue);this.applyPatches=$(this.storedValue,"@APPLY_PATCHES",function(t){t.forEach(function(t){var e=T(t.path);c.resolvePath(e.slice(0,-1)).applyPatchLocally(e[e.length-1],t)})}).bind(this.storedValue),this.applySnapshot=$(this.storedValue,"@APPLY_SNAPSHOT",function(t){if(t!==c.snapshot)return c.type.applySnapshot(c,t)}).bind(this.storedValue),n||(this.identifierCache=new Nt),l&&y(this.storedValue,"$treenode",this);var f=!0;try{l&&y(this.storedValue,"toJSON",Y),this._isRunningAction=!0,p(this,o),this._isRunningAction=!1,n?n.root.identifierCache.addNodeToCache(this):this.identifierCache.addNodeToCache(this),this.fireHook("afterCreate"),n&&this.fireHook("afterAttach"),f=!1}finally{f&&(this._isAlive=!1)}var h=e.reaction(function(){return c.snapshot},function(t){c.emitSnapshot(t)});h.onError(function(t){throw t}),this.addDisposer(h)}return Object.defineProperty(t.prototype,"identifier",{get:function(){return this.identifierAttribute?this.storedValue[this.identifierAttribute]:null},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"path",{get:function(){return this.parent?this.parent.path+"/"+A(this.subpath):""},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isRoot",{get:function(){return null===this.parent},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"parent",{get:function(){return this._parent},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"root",{get:function(){for(var t,e=this;t=e.parent;)e=t;return e},enumerable:!0,configurable:!0}),t.prototype.getRelativePathTo=function(t){this.root!==t.root&&o("Cannot calculate relative path: objects '"+this+"' and '"+t+"' are not part of the same object tree");for(var e=T(this.path),n=T(t.path),r=0;r<e.length&&e[r]===n[r];r++);return e.slice(r).map(function(t){return".."}).join("/")+j(n.slice(r))},t.prototype.resolve=function(t,e){return void 0===e&&(e=!0),this.resolvePath(T(t),e)},t.prototype.resolvePath=function(t,e){void 0===e&&(e=!0);for(var n=this,r=0;r<t.length;r++){if(""===t[r])n=n.root;else if(".."===t[r])n=n.parent;else{if("."===t[r]||""===t[r])continue;if(n){n=n.getChildNode(t[r]);continue}}if(!n)return e?o("Could not resolve '"+t[r]+"' in '"+j(t.slice(0,r-1))+"', path of the patch does not resolve"):void 0}return n},Object.defineProperty(t.prototype,"value",{get:function(){if(this._isAlive)return this.type.getValue(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isAlive",{get:function(){return this._isAlive},enumerable:!0,configurable:!0}),t.prototype.die=function(){this._isDetaching||J(this.storedValue)&&(z(this.storedValue,function(t){return W(t).aboutToDie()}),z(this.storedValue,function(t){return W(t).finalizeDeath()}))},t.prototype.aboutToDie=function(){this.disposers.splice(0).forEach(function(t){return t()}),this.fireHook("beforeDestroy")},t.prototype.finalizeDeath=function(){this.root.identifierCache.notifyDied(this);var t=this,e=this.path;v(this,"snapshot",this.snapshot),this.patchSubscribers.splice(0),this.snapshotSubscribers.splice(0),this.patchSubscribers.splice(0),this._isAlive=!1,this._parent=null,this.subpath="",Object.defineProperty(this.storedValue,"$mobx",{get:function(){o("This object has died and is no longer part of a state tree. It cannot be used anymore. The object (of type '"+t.type.name+"') used to live at '"+e+"'. It is possible to access the last snapshot of this object using 'getSnapshot', or to create a fresh copy using 'clone'. If you want to remove an object from the tree without killing it, use 'detach' instead.")}})},t.prototype.assertAlive=function(){this._isAlive||o(this+" cannot be used anymore as it has died; it has been removed from a state tree. If you want to remove an element from a tree and let it live on, use 'detach' or 'clone' the value")},Object.defineProperty(t.prototype,"snapshot",{get:function(){if(this._isAlive)return this.type.getSnapshot(this)},enumerable:!0,configurable:!0}),t.prototype.onSnapshot=function(t){return m(this.snapshotSubscribers,t)},t.prototype.emitSnapshot=function(t){this.snapshotSubscribers.forEach(function(e){return e(t)})},t.prototype.applyPatchLocally=function(t,e){this.assertWritable(),this.type.applyPatchLocally(this,t,e)},t.prototype.onPatch=function(t){return m(this.patchSubscribers,t)},t.prototype.emitPatch=function(t,e){if(this.patchSubscribers.length){var n=w(c({},t,{path:e.path.substr(this.path.length)+"/"+t.path})),r=n[0],i=n[1];this.patchSubscribers.forEach(function(t){return t(r,i)})}this.parent&&this.parent.emitPatch(t,e)},t.prototype.setParent=function(t,e){void 0===e&&(e=null),this.parent===t&&this.subpath===e||(t&&(this._parent&&t!==this._parent&&o("A node cannot exists twice in the state tree. Failed to add "+this+" to path '"+t.path+"/"+e+"'."),this._parent||t.root!==this||o("A state tree is not allowed to contain itself. Cannot assign "+this+" to path '"+t.path+"/"+e+"'"),!this._parent&&this.root._environment&&this.root._environment!==t.root._environment&&o("A state tree cannot be made part of another state tree as long as their environments are different.")),this.parent&&!t?this.die():(this.subpath=e||"",t&&t!==this._parent&&(t.root.identifierCache.mergeCache(this),this._parent=t,this.fireHook("afterAttach"))))},t.prototype.addDisposer=function(t){this.disposers.unshift(t)},t.prototype.isRunningAction=function(){return!!this._isRunningAction||!this.isRoot&&this.parent.isRunningAction()},t.prototype.addMiddleWare=function(t){return m(this.middlewares,t)},t.prototype.getChildNode=function(t){this.assertAlive(),this._autoUnbox=!1;var e=this.type.getChildNode(this,t);return this._autoUnbox=!0,e},t.prototype.getChildren=function(){this.assertAlive(),this._autoUnbox=!1;var t=this.type.getChildren(this);return this._autoUnbox=!0,t},t.prototype.getChildType=function(t){return this.type.getChildType(t)},Object.defineProperty(t.prototype,"isProtected",{get:function(){return this.root.isProtectionEnabled},enumerable:!0,configurable:!0}),t.prototype.assertWritable=function(){this.assertAlive(),!this.isRunningAction()&&this.isProtected&&o("Cannot modify '"+this+"', the object is protected and can only be modified by using an action.")},t.prototype.removeChild=function(t){this.type.removeChild(this,t)},t.prototype.detach=function(){this._isAlive||o("Error while detaching, node is not alive."),this.isRoot||(this.fireHook("beforeDetach"),this._environment=this.root._environment,this._isDetaching=!0,this.identifierCache=this.root.identifierCache.splitCache(this),this.parent.removeChild(this.subpath),this._parent=null,this.subpath="",this._isDetaching=!1)},t.prototype.unbox=function(t){return t&&!0===this._autoUnbox?t.value:t},t.prototype.fireHook=function(t){var e=this.storedValue&&"object"==typeof this.storedValue&&this.storedValue[t];"function"==typeof e&&e.apply(this.storedValue)},t.prototype.toString=function(){var t=this.identifier?"(id: "+this.identifier+")":"";return this.type.name+"@"+(this.path||"<root>")+t+(this.isAlive?"":"[dead]")},i([e.observable],t.prototype,"_parent",void 0),i([e.observable],t.prototype,"subpath",void 0),i([e.computed],t.prototype,"path",null),i([e.computed],t.prototype,"value",null),i([e.computed],t.prototype,"snapshot",null),t}(),Et=function(){function t(t){this.isType=!0,this.name=t}return t.prototype.create=function(t,e){return void 0===t&&(t=this.getDefaultSnapshot()),nt(this,t),this.instantiate(null,"",e,t).value},t.prototype.isAssignableFrom=function(t){return t===this},t.prototype.validate=function(t,e){return J(t)?x(t)===this||this.isAssignableFrom(x(t))?X():tt(e,t):this.isValidSnapshot(t,e)},t.prototype.is=function(t){return 0===this.validate(t,[{path:"",type:this}]).length},t.prototype.reconcile=function(t,e){if(t.snapshot===e)return t;if(J(e)&&W(e)===t)return t;if(t.type===this&&f(e)&&!J(e)&&(!t.identifierAttribute||t.identifier===e[t.identifierAttribute]))return t.applySnapshot(e),t;var n=t.parent,r=t.subpath;if(t.die(),J(e)&&this.isAssignableFrom(x(e))){var i=W(e);return i.setParent(n,r),i}return this.instantiate(n,r,t._environment,e)},Object.defineProperty(t.prototype,"Type",{get:function(){return o("Factory.Type should not be actually called. It is just a Type signature that can be used at compile time with Typescript, by using `typeof type.Type`")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"SnapshotType",{get:function(){return o("Factory.SnapshotType should not be actually called. It is just a Type signature that can be used at compile time with Typescript, by using `typeof type.SnapshotType`")},enumerable:!0,configurable:!0}),i([e.action],t.prototype,"create",null),t}(),Rt=function(t){function e(e){return t.call(this,e)||this}return n(e,t),e.prototype.getValue=function(t){return t.storedValue},e.prototype.getSnapshot=function(t){return t.storedValue},e.prototype.getDefaultSnapshot=function(){},e.prototype.applySnapshot=function(t,e){o("Immutable types do not support applying snapshots")},e.prototype.applyPatchLocally=function(t,e,n){o("Immutable types do not support applying patches")},e.prototype.getChildren=function(t){return jt},e.prototype.getChildNode=function(t,e){return o("No child '"+e+"' available in type: "+this.name)},e.prototype.getChildType=function(t){return o("No child '"+t+"' available in type: "+this.name)},e.prototype.reconcile=function(t,e){if(t.type===this&&t.storedValue===e)return t;var n=this.instantiate(t.parent,t.subpath,t._environment,e);return t.die(),n},e.prototype.removeChild=function(t,e){return o("No child '"+e+"' available in type: "+this.name)},e}(Et),zt=function(t){function r(n,r){var i=t.call(this,n)||this;return i.shouldAttachNode=!0,i.flags=Ct.Map,i.createNewInstance=function(){var t=e.observable.shallowMap();return y(t,"put",ot),y(t,"toString",it),t},i.finalizeNewInstance=function(t,n){var r=t.storedValue;e.extras.interceptReads(r,t.unbox),e.intercept(r,function(t){return i.willChange(t)}),t.applySnapshot(n),e.observe(r,i.didChange)},i.subType=r,i}return n(r,t),r.prototype.instantiate=function(t,e,n,r){return q(this,t,e,n,r,this.createNewInstance,this.finalizeNewInstance)},r.prototype.describe=function(){return"Map<string, "+this.subType.describe()+">"},r.prototype.getChildren=function(t){return t.storedValue.values()},r.prototype.getChildNode=function(t,e){var n=t.storedValue.get(e);return n||o("Not a child "+e),n},r.prototype.willChange=function(t){var e=W(t.object);switch(e.assertWritable(),t.type){case"update":var n=t.newValue;if(n===t.object.get(t.name))return null;nt(this.subType,n),t.newValue=this.subType.reconcile(e.getChildNode(t.name),t.newValue),this.verifyIdentifier(t.name,t.newValue);break;case"add":nt(this.subType,t.newValue),t.newValue=this.subType.instantiate(e,t.name,void 0,t.newValue),this.verifyIdentifier(t.name,t.newValue)}return t},r.prototype.verifyIdentifier=function(t,e){var n=e.identifier;null!==n&&""+n!=""+t&&o("A map of objects containing an identifier should always store the object under their own identifier. Trying to store key '"+n+"', but expected: '"+t+"'")},r.prototype.getValue=function(t){return t.storedValue},r.prototype.getSnapshot=function(t){var e={};return t.getChildren().forEach(function(t){e[t.subpath]=t.snapshot}),e},r.prototype.didChange=function(t){var e=W(t.object);switch(t.type){case"update":return void e.emitPatch({op:"replace",path:A(t.name),value:t.newValue.snapshot,oldValue:t.oldValue?t.oldValue.snapshot:void 0},e);case"add":return void e.emitPatch({op:"add",path:A(t.name),value:t.newValue.snapshot,oldValue:void 0},e);case"delete":var n=t.oldValue.snapshot;return t.oldValue.die(),void e.emitPatch({op:"remove",path:A(t.name),oldValue:n},e)}},r.prototype.applyPatchLocally=function(t,e,n){var r=t.storedValue;switch(n.op){case"add":case"replace":r.set(e,n.value);break;case"remove":r.delete(e)}},r.prototype.applySnapshot=function(t,e){nt(this,e);var n=t.storedValue,r={};n.keys().forEach(function(t){r[t]=!1}),Object.keys(e).forEach(function(t){n.set(t,e[t]),r[t]=!0}),Object.keys(r).forEach(function(t){!1===r[t]&&n.delete(t)})},r.prototype.getChildType=function(t){return this.subType},r.prototype.isValidSnapshot=function(t,e){var n=this;return l(t)?et(Object.keys(t).map(function(r){return n.subType.validate(t[r],Q(e,r,n.subType))})):tt(e,t,"Value is not a plain object")},r.prototype.getDefaultSnapshot=function(){return{}},r.prototype.removeChild=function(t,e){t.storedValue.delete(e)},i([e.action],r.prototype,"applySnapshot",null),r}(Et),kt=function(t){function r(n,r){var i=t.call(this,n)||this;return i.shouldAttachNode=!0,i.flags=Ct.Array,i.createNewInstance=function(){var t=e.observable.shallowArray();return y(t,"toString",at),t},i.finalizeNewInstance=function(t,n){var r=t.storedValue;e.extras.getAdministration(r).dehancer=t.unbox,e.intercept(r,function(t){return i.willChange(t)}),t.applySnapshot(n),e.observe(r,i.didChange)},i.subType=r,i}return n(r,t),r.prototype.describe=function(){return this.subType.describe()+"[]"},r.prototype.instantiate=function(t,e,n,r){return q(this,t,e,n,r,this.createNewInstance,this.finalizeNewInstance)},r.prototype.getChildren=function(t){return t.storedValue.peek()},r.prototype.getChildNode=function(t,e){var n=parseInt(e,10);return n<t.storedValue.length?t.storedValue[n]:o("Not a child: "+e)},r.prototype.willChange=function(t){var e=W(t.object);e.assertWritable();var n=e.getChildren();switch(t.type){case"update":if(t.newValue===t.object[t.index])return null;t.newValue=st(e,this.subType,[n[t.index]],[t.newValue],[t.index])[0];break;case"splice":var r=t.index,i=t.removedCount,o=t.added;t.added=st(e,this.subType,n.slice(r,r+i),o,o.map(function(t,e){return r+e}));for(var a=r+i;a<n.length;a++)n[a].setParent(e,""+(a+o.length-i))}return t},r.prototype.getValue=function(t){return t.storedValue},r.prototype.getSnapshot=function(t){return t.getChildren().map(function(t){return t.snapshot})},r.prototype.didChange=function(t){var e=W(t.object);switch(t.type){case"update":return void e.emitPatch({op:"replace",path:""+t.index,value:t.newValue.snapshot,oldValue:t.oldValue?t.oldValue.snapshot:void 0},e);case"splice":for(n=t.removedCount-1;n>=0;n--)e.emitPatch({op:"remove",path:""+(t.index+n),oldValue:t.removed[n].snapshot},e);for(var n=0;n<t.addedCount;n++)e.emitPatch({op:"add",path:""+(t.index+n),value:e.getChildNode(""+(t.index+n)).snapshot,oldValue:void 0},e);return}},r.prototype.applyPatchLocally=function(t,e,n){var r=t.storedValue,i="-"===e?r.length:parseInt(e);switch(n.op){case"replace":r[i]=n.value;break;case"add":r.splice(i,0,n.value);break;case"remove":r.splice(i,1)}},r.prototype.applySnapshot=function(t,e){nt(this,e),t.storedValue.replace(e)},r.prototype.getChildType=function(t){return this.subType},r.prototype.isValidSnapshot=function(t,e){var n=this;return u(t)?et(t.map(function(t,r){return n.subType.validate(t,Q(e,""+r,n.subType))})):tt(e,t,"Value is not an array")},r.prototype.getDefaultSnapshot=function(){return[]},r.prototype.removeChild=function(t,e){t.storedValue.splice(parseInt(e,10),1)},i([e.action],r.prototype,"applySnapshot",null),r}(Et),Ft=function(t){function e(e,n,r,i){void 0===i&&(i=a);var o=t.call(this,e)||this;return o.flags=n,o.checker=r,o.initializer=i,o}return n(e,t),e.prototype.describe=function(){return this.name},e.prototype.instantiate=function(t,e,n,r){return q(this,t,e,n,r,this.initializer)},e.prototype.isValidSnapshot=function(t,e){return h(t)&&this.checker(t)?X():tt(e,t,"Value is not a "+("Date"===this.name?"Date or a unix milliseconds timestamp":this.name))},e}(Rt),Mt=new Ft("string",Ct.String,function(t){return"string"==typeof t}),$t=new Ft("number",Ct.Number,function(t){return"number"==typeof t}),Lt=new Ft("boolean",Ct.Boolean,function(t){return"boolean"==typeof t}),Ut=new Ft("null",Ct.Null,function(t){return null===t}),Ht=new Ft("undefined",Ct.Undefined,function(t){return void 0===t}),Jt=new Ft("Date",Ct.Date,function(t){return"number"==typeof t||t instanceof Date},function(t){return t instanceof Date?t:new Date(t)});Jt.getSnapshot=function(t){return t.storedValue.getTime()};var Wt=function(t){function e(e){var n=t.call(this,"identifier("+e.name+")")||this;return n.identifierType=e,n.flags=Ct.Identifier,n}return n(e,t),e.prototype.instantiate=function(t,e,n,r){return t&&J(t.storedValue)?(t.identifierAttribute&&o("Cannot define property '"+e+"' as object identifier, property '"+t.identifierAttribute+"' is already defined as identifier property"),t.identifierAttribute=e,q(this,t,e,n,r)):o("Identifier types can only be instantiated as direct child of a model type")},e.prototype.reconcile=function(t,e){return t.storedValue!==e?o("Tried to change identifier from '"+t.storedValue+"' to '"+e+"'. Changing identifiers is not allowed."):t},e.prototype.describe=function(){return"identifier("+this.identifierType.describe()+")"},e.prototype.isValidSnapshot=function(t,e){return void 0===t||null===t||"string"==typeof t||"number"==typeof t?this.identifierType.validate(t,e):tt(e,t,"Value is not a valid identifier, which is a string or a number")},e}(Rt),Bt=function(t){function e(e,n){var r=t.call(this,e.name)||this;return r.type=e,r.defaultValue=n,r}return n(e,t),Object.defineProperty(e.prototype,"flags",{get:function(){return this.type.flags|Ct.Optional},enumerable:!0,configurable:!0}),e.prototype.describe=function(){return this.type.describe()+"?"},e.prototype.instantiate=function(t,e,n,r){if(void 0===r){var i=this.getDefaultValue(),o=J(i)?W(i).snapshot:i;return this.type.instantiate(t,e,n,o)}return this.type.instantiate(t,e,n,r)},e.prototype.reconcile=function(t,e){return this.type.reconcile(t,this.type.is(e)?e:this.getDefaultValue())},e.prototype.getDefaultValue=function(){var t="function"==typeof this.defaultValue?this.defaultValue():this.defaultValue;return"function"==typeof this.defaultValue&&nt(this,t),t},e.prototype.isValidSnapshot=function(t,e){return void 0===t?X():this.type.validate(t,e)},e.prototype.isAssignableFrom=function(t){return this.type.isAssignableFrom(t)},e}(Rt),Yt={afterCreate:"afterCreate",afterAttach:"afterAttach",postProcessSnapshot:"postProcessSnapshot",beforeDetach:"beforeDetach",beforeDestroy:"beforeDestroy"},qt={name:"AnonymousModel",properties:{},initializers:jt},Gt=function(t){function a(n){var r=t.call(this,n.name||qt.name)||this;r.flags=Ct.Object,r.createNewInstance=function(){var t=e.observable.shallowObject(Tt);return y(t,"toString",ft),t},r.finalizeNewInstance=function(t,n){var i=t.storedValue;r.forAllProps(function(r,o){e.extendShallowObservable(i,(a={},a[r]=e.observable.ref(o.instantiate(t,r,t._environment,n[r])),a)),e.extras.interceptReads(t.storedValue,r,t.unbox);var a}),r.initializers.reduce(function(t,e){return e(t)},i),e.intercept(i,function(t){return r.willChange(t)}),e.observe(i,r.didChange)},r.didChange=function(t){var e=W(t.object);e.emitPatch({op:"replace",path:A(t.name),value:t.newValue.snapshot,oldValue:t.oldValue?t.oldValue.snapshot:void 0},e)};var i=n.name||qt.name;return/^\w[\w\d_]*$/.test(i)||o("Typename should be a valid identifier: "+i),Object.assign(r,qt,n),r.properties=ht(r.properties),r.propertiesNames=Object.keys(r.properties),Object.freeze(r.properties),r}return n(a,t),a.prototype.cloneAndEnhance=function(t){return new a({name:t.name||this.name,properties:Object.assign({},this.properties,t.properties),initializers:this.initializers.concat(t.initializers||[]),preProcessor:t.preProcessor||this.preProcessor})},a.prototype.actions=function(t){var e=this;return this.cloneAndEnhance({initializers:[function(n){return e.instantiateActions(n,t(n)),n}]})},a.prototype.instantiateActions=function(t,e){l(e)||o("actions initializer should return a plain object containing actions"),Object.keys(e).forEach(function(n){if("preProcessSnapshot"===n)return o("Cannot define action 'preProcessSnapshot', it should be defined using 'type.preProcessSnapshot(fn)' instead");var r=e[n],i=t[n];if(n in Yt&&i){var a=r;r=n===Yt.postProcessSnapshot?function(t){return a(i(t))}:function(){i.apply(null,arguments),a.apply(null,arguments)}}y(t,n,$(t,n,r))})},a.prototype.named=function(t){return this.cloneAndEnhance({name:t})},a.prototype.props=function(t){return this.cloneAndEnhance({properties:t})},a.prototype.extend=function(t){var e=this;return this.cloneAndEnhance({initializers:[function(n){var i=t(n),a=i.actions,s=i.views,u=r(i,["actions","views"]);for(var p in u)o("The `extend` function should return an object with fields 'actions' and / or 'views'. Found invalid key '"+p+"'");return s&&e.instantiateViews(n,s),a&&e.instantiateActions(n,a),n}]})},a.prototype.views=function(t){var e=this;return this.cloneAndEnhance({initializers:[function(n){return e.instantiateViews(n,t(n)),n}]})},a.prototype.instantiateViews=function(t,n){l(n)||o("views initializer should return a plain object containing views"),Object.keys(n).forEach(function(r){var i=Object.getOwnPropertyDescriptor(n,r),a=i.value;if("get"in i)if(e.isComputed(t.$mobx.values[r]))t.$mobx.values[r]=e.computed(i.get,{name:r,setter:i.set,context:t});else{var s={};Object.defineProperty(s,r,{get:i.get,set:i.set,enumerable:!0}),e.extendShallowObservable(t,s)}else"function"==typeof a?y(t,r,a):o("A view member should either be a function or getter based property")})},a.prototype.preProcessSnapshot=function(t){var e=this.preProcessor;return e?this.cloneAndEnhance({preProcessor:function(n){return e(t(n))}}):this.cloneAndEnhance({preProcessor:t})},a.prototype.instantiate=function(t,e,n,r){return q(this,t,e,n,this.applySnapshotPreProcessor(r),this.createNewInstance,this.finalizeNewInstance)},a.prototype.willChange=function(t){var e=W(t.object),n=this.properties[t.name];return e.assertWritable(),nt(n,t.newValue),t.newValue=n.reconcile(e.getChildNode(t.name),t.newValue),t},a.prototype.getChildren=function(t){var e=this,n=[];return this.forAllProps(function(r,i){n.push(e.getChildNode(t,r))}),n},a.prototype.getChildNode=function(t,e){if(!(e in this.properties))return o("Not a value property: "+e);var n=t.storedValue.$mobx.values[e].value;return n||o("Node not available for property "+e)},a.prototype.getValue=function(t){return t.storedValue},a.prototype.getSnapshot=function(t){var n=this,r={};return this.forAllProps(function(i,o){e.extras.getAtom(t.storedValue,i).reportObserved(),r[i]=n.getChildNode(t,i).snapshot}),"function"==typeof t.storedValue.postProcessSnapshot?t.storedValue.postProcessSnapshot.call(null,r):r},a.prototype.applyPatchLocally=function(t,e,n){"replace"!==n.op&&"add"!==n.op&&o("object does not support operation "+n.op),t.storedValue[e]=n.value},a.prototype.applySnapshot=function(t,e){var n=this.applySnapshotPreProcessor(e);nt(this,n),this.forAllProps(function(e,r){t.storedValue[e]=n[e]})},a.prototype.applySnapshotPreProcessor=function(t){return this.preProcessor?this.preProcessor.call(null,t):t},a.prototype.getChildType=function(t){return this.properties[t]},a.prototype.isValidSnapshot=function(t,e){var n=this,r=this.applySnapshotPreProcessor(t);return l(r)?et(this.propertiesNames.map(function(t){return n.properties[t].validate(r[t],Q(e,t,n.properties[t]))})):tt(e,r,"Value is not a plain object")},a.prototype.forAllProps=function(t){var e=this;this.propertiesNames.forEach(function(n){return t(n,e.properties[n])})},a.prototype.describe=function(){var t=this;return"{ "+this.propertiesNames.map(function(e){return e+": "+t.properties[e].describe()}).join("; ")+" }"},a.prototype.getDefaultSnapshot=function(){return{}},a.prototype.removeChild=function(t,e){t.storedValue[e]=null},i([e.action],a.prototype,"applySnapshot",null),a}(Et),Zt=function(){return function(t,e){if(this.mode=t,this.value=e,"object"===t){if(!J(e))return o("Can only store references to tree nodes, got: '"+e+"'");if(!W(e).identifierAttribute)return o("Can only store references with a defined identifier attribute.")}}}(),Kt=function(t){function e(e){var n=t.call(this,"reference("+e.name+")")||this;return n.targetType=e,n.flags=Ct.Reference,n}return n(e,t),e.prototype.describe=function(){return this.name},e.prototype.getValue=function(t){var e=t.storedValue;if("object"===e.mode)return e.value;if(t.isAlive){var n=t.root.identifierCache.resolve(this.targetType,e.value);return n?n.value:o("Failed to resolve reference of type "+this.targetType.name+": '"+e.value+"' (in: "+t.path+")")}},e.prototype.getSnapshot=function(t){var e=t.storedValue;switch(e.mode){case"identifier":return e.value;case"object":return W(e.value).identifier}},e.prototype.instantiate=function(t,e,n,r){var i=J(r);return q(this,t,e,n,new Zt(i?"object":"identifier",r))},e.prototype.reconcile=function(t,e){var n=J(e)?"object":"identifier";if(O(t.type)){var r=t.storedValue;if(n===r.mode&&r.value===e)return t}var i=this.instantiate(t.parent,t.subpath,t._environment,e);return t.die(),i},e.prototype.isAssignableFrom=function(t){return this.targetType.isAssignableFrom(t)},e.prototype.isValidSnapshot=function(t,e){return"string"==typeof t||"number"==typeof t?X():tt(e,t,"Value is not a valid identifier, which is a string or a number")},e}(Rt),Qt=function(t){function e(e,n,r){var i=t.call(this,e)||this;return i.dispatcher=null,i.dispatcher=r,i.types=n,i}return n(e,t),Object.defineProperty(e.prototype,"flags",{get:function(){var t=Ct.Union;return this.types.forEach(function(e){t|=e.flags}),t},enumerable:!0,configurable:!0}),e.prototype.isAssignableFrom=function(t){return this.types.some(function(e){return e.isAssignableFrom(t)})},e.prototype.describe=function(){return"("+this.types.map(function(t){return t.describe()}).join(" | ")+")"},e.prototype.instantiate=function(t,e,n,r){return this.determineType(r).instantiate(t,e,n,r)},e.prototype.reconcile=function(t,e){return this.determineType(e).reconcile(t,e)},e.prototype.determineType=function(t){if(null!==this.dispatcher)return this.dispatcher(t);var e=this.types.filter(function(e){return e.is(t)});return e.length>1?o("Ambiguos snapshot "+JSON.stringify(t)+" for union "+this.name+". Please provide a dispatch in the union declaration."):e[0]},e.prototype.isValidSnapshot=function(t,e){if(null!==this.dispatcher)return this.dispatcher(t).validate(t,e);var n=this.types.map(function(n){return n.validate(t,e)}),r=n.filter(function(t){return 0===t.length});return r.length>1?tt(e,t,"Multiple types are applicable for the union (hint: provide a dispatch function)"):0===r.length?tt(e,t,"No type is applicable for the union").concat(et(n)):X()},e}(Rt),Xt=function(t){function e(e){var n=t.call(this,JSON.stringify(e))||this;return n.flags=Ct.Literal,n.value=e,n}return n(e,t),e.prototype.instantiate=function(t,e,n,r){return q(this,t,e,n,r)},e.prototype.describe=function(){return JSON.stringify(this.value)},e.prototype.isValidSnapshot=function(t,e){return h(t)&&t===this.value?X():tt(e,t,"Value is not a literal "+JSON.stringify(this.value))},e}(Rt),te=new(function(t){function e(){var e=t.call(this,"frozen")||this;return e.flags=Ct.Frozen,e}return n(e,t),e.prototype.describe=function(){return"<any immutable value>"},e.prototype.instantiate=function(t,e,n,r){return q(this,t,e,n,r)},e.prototype.isValidSnapshot=function(t,e){return d(t)?X():tt(e,t,"Value is not serializable and cannot be frozen")},e}(Rt)),ee=lt(Ut,null),ne=function(t){function e(e,n,r,i){var o=t.call(this,e)||this;return o.type=n,o.predicate=r,o.message=i,o}return n(e,t),Object.defineProperty(e.prototype,"flags",{get:function(){return this.type.flags|Ct.Refinement},enumerable:!0,configurable:!0}),e.prototype.describe=function(){return this.name},e.prototype.instantiate=function(t,e,n,r){return this.type.instantiate(t,e,n,r)},e.prototype.isAssignableFrom=function(t){return this.type.isAssignableFrom(t)},e.prototype.isValidSnapshot=function(t,e){var n=this.type.validate(t,e);if(n.length>0)return n;var r=J(t)?W(t).snapshot:t;return this.predicate(r)?X():tt(e,t,this.message(t))},e}(Rt),re=function(t){function e(e,n){var r=t.call(this,e)||this;return r._subType=null,r.definition=n,r}return n(e,t),Object.defineProperty(e.prototype,"flags",{get:function(){return this.subType.flags|Ct.Late},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"subType",{get:function(){return null===this._subType&&(this._subType=this.definition()),this._subType},enumerable:!0,configurable:!0}),e.prototype.instantiate=function(t,e,n,r){return this.subType.instantiate(t,e,n,r)},e.prototype.reconcile=function(t,e){return this.subType.reconcile(t,e)},e.prototype.describe=function(){return this.subType.name},e.prototype.isValidSnapshot=function(t,e){return this.subType.validate(t,e)},e.prototype.isAssignableFrom=function(t){return this.subType.isAssignableFrom(t)},e}(Rt),ie={enumeration:function(t,e){var n="string"==typeof t?e:t,r=dt.apply(void 0,n.map(function(t){return yt(""+t)}));return"string"==typeof t&&(r.name=t),r},model:function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];var n="string"==typeof t[0]?t.shift():"AnonymousModel",r=t.shift()||{};return new Gt({name:n,properties:r})},compose:function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];var n="string"==typeof t[0]?t.shift():"AnonymousModel";return t.reduce(function(t,e){return t.cloneAndEnhance({name:t.name+"_"+e.name,properties:e.properties,initializers:e.initializers})}).named(n)},reference:function(t){return new Kt(t)},union:dt,optional:lt,literal:yt,maybe:function(t){return dt(ee,t)},refinement:function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];var n="string"==typeof t[0]?t.shift():_(t[0])?t[0].name:null,r=t[0],i=t[1],o=t[2]?t[2]:function(t){return"Value does not respect the refinement predicate"};return new ne(n,r,i,o)},string:Mt,boolean:Lt,number:$t,Date:Jt,map:function(t){return new zt("map<string, "+t.name+">",t)},array:function(t){return new kt(t.name+"[]",t)},frozen:te,identifier:function(t){return void 0===t&&(t=Mt),new Wt(t)},late:function(t,e){var n="string"==typeof t?t:"late("+t.toString()+")";return new re(n,"string"==typeof t?e:t)},undefined:Ht,null:Ut},oe="See https://github.com/mobxjs/mobx-state-tree/issues/399 for more information. Note that the middleware event types starting with `process` now start with `flow`.";t.types=ie,t.typecheck=rt,t.escapeJsonPath=A,t.unescapeJsonPath=S,t.decorate=function(t,e){return e.$mst_middleware?e.$mst_middleware.push(t):e.$mst_middleware=[t],e},t.addMiddleware=L,t.flow=vt,t.process=function(t){return _t("process","`process()` has been renamed to `flow()`. "+oe),vt(t)},t.isStateTreeNode=J,t.applyAction=Pt,t.onAction=At,t.recordActions=function(t){var e={actions:[],stop:function(){return n()},replay:function(t){Pt(t,e.actions)}},n=At(t,e.actions.push.bind(e.actions));return e},t.createActionTrackingMiddleware=function(t){var e=new Map;return function(n,r){switch(n.type){case"action":if(t.filter&&!0!==t.filter(n))return r(n);var i=t.onStart(n);t.onResume(n,i),e.set(n.id,{call:n,context:i,async:!1});try{var o=r(n);return t.onSuspend(n,i),!1===e.get(n.id).async&&t.onSuccess(n,i,o),o}catch(e){throw t.onFail(n,i,e),e}case"flow_spawn":return(a=e.get(n.rootId)).async=!0,r(n);case"flow_resume":case"flow_resume_error":a=e.get(n.rootId),t.onResume(n,a.context);try{return r(n)}finally{t.onSuspend(n,a.context)}case"flow_throw":return a=e.get(n.rootId),e.delete(n.id),t.onFail(n,a.context,n.args[0]),r(n);case"flow_return":var a=e.get(n.rootId);return e.delete(n.id),t.onSuccess(n,a.context,n.args[0]),r(n)}}},t.getType=x,t.getChildType=function(t,e){return W(t).getChildType(e)},t.onPatch=N,t.onSnapshot=function(t,e){return W(t).onSnapshot(e)},t.applyPatch=I,t.recordPatches=function(t){function e(){n||(n=N(t,function(t,e){r.rawPatches.push([t,e])}))}var n=null,r={rawPatches:[],get patches(){return this.rawPatches.map(function(t){return t[0]})},get inversePatches(){return this.rawPatches.map(function(t){return t[0],t[1]})},stop:function(){n&&n(),n=null},resume:e,replay:function(e){I(e||t,r.patches)},undo:function(e){I(e||t,r.inversePatches.slice().reverse())}};return e(),r},t.protect=function(t){var e=W(t);e.isRoot||o("`protect` can only be invoked on root nodes"),e.isProtectionEnabled=!0},t.unprotect=function(t){var e=W(t);e.isRoot||o("`unprotect` can only be invoked on root nodes"),e.isProtectionEnabled=!1},t.isProtected=function(t){return W(t).isProtected},t.applySnapshot=D,t.getSnapshot=function(t){return W(t).snapshot},t.hasParent=function(t,e){void 0===e&&(e=1);for(var n=W(t).parent;n;){if(0==--e)return!0;n=n.parent}return!1},t.getParent=function(t,e){void 0===e&&(e=1);for(var n=e,r=W(t).parent;r;){if(0==--n)return r.storedValue;r=r.parent}return o("Failed to find the parent of "+W(t)+" at depth "+e)},t.getRoot=E,t.getPath=function(t){return W(t).path},t.getPathParts=function(t){return T(W(t).path)},t.isRoot=function(t){return W(t).isRoot},t.resolvePath=function(t,e){var n=W(t).resolve(e);return n?n.value:void 0},t.resolveIdentifier=function(t,e,n){var r=W(e).root.identifierCache.resolve(t,""+n);return r?r.value:void 0},t.tryResolve=R,t.getRelativePath=function(t,e){return W(t).getRelativePathTo(W(e))},t.clone=function(t,e){void 0===e&&(e=!0);var n=W(t);return n.type.create(n.snapshot,!0===e?n.root._environment:!1===e?void 0:e)},t.detach=function(t){return W(t).detach(),t},t.destroy=function(t){var e=W(t);e.isRoot?e.die():e.parent.removeChild(e.subpath)},t.isAlive=function(t){return W(t).isAlive},t.addDisposer=function(t,e){W(t).addDisposer(e)},t.getEnv=function(t){var e=W(t).root._environment;return e||Tt},t.walk=z,Object.defineProperty(t,"__esModule",{value:!0})}); | ||
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("mobx")):"function"==typeof define&&define.amd?define(["exports","mobx"],e):e(t.mobxStateTree=t.mobxStateTree||{},t.mobx)}(this,function(t,e){"use strict";function n(t){return F(t).type}function r(t,e){return F(t).onPatch(e)}function o(t,e){F(t).applyPatches(J(e))}function i(t,e){return F(t).applySnapshot(e)}function a(t){return F(t).root.storedValue}function s(t,e){var n=F(t).resolve(e,!1);if(void 0!==n)return n?n.value:void 0}function u(t,e){var n=F(t);n.getChildren().forEach(function(t){k(t.storedValue)&&u(t.storedValue,e)}),e(n.storedValue)}function p(t,e){function n(){this.constructor=t}jt(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}function c(t,e){var n={};for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&e.indexOf(r)<0&&(n[r]=t[r]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,r=Object.getOwnPropertySymbols(t);o<r.length;o++)e.indexOf(r[o])<0&&(n[r[o]]=t[r[o]]);return n}function l(t,e,n,r){var o,i=arguments.length,a=i<3?e:null===r?r=Object.getOwnPropertyDescriptor(e,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(t,e,n,r);else for(var s=t.length-1;s>=0;s--)(o=t[s])&&(a=(i<3?o(a):i>3?o(e,n,a):o(e,n))||a);return i>3&&a&&Object.defineProperty(e,n,a),a}function h(t){return"object"==typeof t&&t&&!0===t.isType}function f(t,e,r,o){if(o instanceof Date)return{$MST_DATE:o.getTime()};if(q(o))return o;if(k(o))return y("[MSTNode: "+n(o).name+"]");if("function"==typeof o)return y("[function]");if("object"==typeof o&&!B(o)&&!H(o))return y("[object "+(o&&o.constructor&&o.constructor.name||"Complex Object")+"]");try{return JSON.stringify(o),o}catch(t){return y(""+t)}}function d(t,e){return e&&"object"==typeof e&&"$MST_DATE"in e?new Date(e.$MST_DATE):e}function y(t){return{$MST_UNSERIALIZABLE:!0,type:t}}function v(t,n){e.runInAction(function(){J(n).forEach(function(e){return b(t,e)})})}function b(t,e){var n=s(t,e.path||"");if(!n)return $("Invalid action path: "+(e.path||""));var r=F(n);return"@APPLY_PATCHES"===e.name?o.call(null,n,e.args[0]):"@APPLY_SNAPSHOT"===e.name?i.call(null,n,e.args[0]):("function"!=typeof n[e.name]&&$("Action '"+e.name+"' does not exist in '"+r.path+"'"),n[e.name].apply(n,e.args?e.args.map(function(t){return d(r,t)}):[]))}function m(t,e,n){function r(n){if("action"===n.type&&n.id===n.rootId){var r=F(n.context);e({name:n.name,path:F(t).getRelativePathTo(r),args:n.args.map(function(t,e){return f(r,n.name,e,t)})})}}return void 0===n&&(n=!1),V(t,n?function(t,e){var n=e(t);return r(t),n}:function(t,e){return r(t),e(t)})}function g(){return xt++}function w(t,e){var n=F(t.context),r=n._isRunningAction,o=It;n.assertAlive(),n._isRunningAction=!0,It=t;try{return j(n,t,e)}finally{It=o,n._isRunningAction=r}}function P(){return It||$("Not running an action!")}function A(t,n,r){var o=e.action(n,r);return o.$mst_middleware=r.$mst_middleware,function(){var e=g();return w({type:"action",name:n,id:e,args:tt(arguments),context:t,tree:a(t),rootId:It?It.rootId:e,parentId:It?It.id:0},o)}}function V(t,e){return F(t).addMiddleWare(e)}function S(t,e,n){for(var r=n.$mst_middleware||[],o=t;o;)r=r.concat(o.middlewares),o=o.parent;return r}function j(t,e,n){function r(t){var i=o.shift();return i?i(t,r):n.apply(null,e.args)}var o=S(t,e,n);return o.length?r(e):n.apply(null,e.args)}function T(t){try{return JSON.stringify(t)}catch(t){return"<Unserializable: "+t+">"}}function _(t){return"function"==typeof t?"<function"+(t.name?" "+t.name:"")+">":k(t)?"<"+t+">":"`"+T(t)+"`"}function N(t){var e=t.value,n=t.context[t.context.length-1].type,r=t.context.map(function(t){return t.path}).filter(function(t){return t.length>0}).join("/"),o=r.length>0?'at path "/'+r+'" ':"",i=k(e)?"value of type "+F(e).type.name+":":q(e)?"value":"snapshot",a=n&&k(e)&&n.is(F(e).snapshot);return""+o+i+" "+_(e)+" is not assignable "+(n?"to type: `"+n.name+"`":"")+(t.message?" ("+t.message+")":"")+(n?gt(n)?".":", expected an instance of `"+n.name+"` or a snapshot like `"+n.describe()+"` instead."+(a?" (Note that a snapshot of the provided value is compatible with the targeted type)":""):".")}function C(t,e,n){return t.concat([{path:e,type:n}])}function O(){return Rt}function x(t,e,n){return[{context:t,value:e,message:n}]}function I(t){return t.reduce(function(t,e){return t.concat(e)},[])}function D(t,e){}function E(t,e){var n=t.validate(e,[{path:"",type:t}]);n.length>0&&$("Error while converting "+_(e)+" to `"+t.name+"`:\n"+n.map(N).join("\n"))}function R(t,e,n,r,o,i,a){if(void 0===i&&(i=L),void 0===a&&(a=U),k(o)){var s=F(o);return s.isRoot||$("Cannot add an object to a state tree if it is already part of the same or another state tree. Tried to assign an object to '"+(e?e.path:"")+"/"+n+"', but it lives already at '"+s.path+"'"),s.setParent(e,n),s}var u=i(o);return t.shouldAttachNode?new Nt(t,e,n,r,o,u,t.shouldAttachNode,a):new _t(t,e,n,r,o,u,t.shouldAttachNode,a)}function z(t){return t instanceof _t||t instanceof Nt}function k(t){return!(!t||!t.$treenode)}function F(t){return k(t)?t.$treenode:$("Value "+t+" is no MST Node")}function M(){return F(this).snapshot}function $(t){throw void 0===t&&(t="Illegal state"),new Error("[mobx-state-tree] "+t)}function L(t){return t}function U(){}function H(t){return!(!Array.isArray(t)&&!e.isObservableArray(t))}function J(t){return t?H(t)?t:[t]:Rt}function W(t){for(var e=[],n=1;n<arguments.length;n++)e[n-1]=arguments[n];for(var r=0;r<e.length;r++){var o=e[r];for(var i in o)t[i]=o[i]}return t}function B(t){if(null===t||"object"!=typeof t)return!1;var e=Object.getPrototypeOf(t);return e===Object.prototype||null===e}function Y(t){return!(null===t||"object"!=typeof t||t instanceof Date||t instanceof RegExp)}function q(t){return null===t||void 0===t||("string"==typeof t||"number"==typeof t||"boolean"==typeof t||t instanceof Date)}function G(t){return"function"!=typeof t}function Z(t,e,n){Object.defineProperty(t,e,{enumerable:!1,writable:!1,configurable:!0,value:n})}function K(t,e,n){Object.defineProperty(t,e,{enumerable:!0,writable:!1,configurable:!0,value:n})}function Q(t,e){var n=t.indexOf(e);-1!==n&&t.splice(n,1)}function X(t,e){return t.push(e),function(){Q(t,e)}}function tt(t){for(var e=new Array(t.length),n=0;n<t.length;n++)e[n]=t[n];return e}function et(t){return nt(t.name,t)}function nt(t,e){var n=function(){function r(e,r,a){e.$mst_middleware=n.$mst_middleware,w({name:t,type:r,id:o,args:[a],tree:i.tree,context:i.context,parentId:i.id,rootId:i.rootId},e)}var o=g(),i=P(),a=arguments;return new Promise(function(s,u){function p(t){var e;try{r(function(t){e=h.next(t)},"flow_resume",t)}catch(t){return void setImmediate(function(){r(function(e){u(t)},"flow_throw",t)})}l(e)}function c(t){var e;try{r(function(t){e=h.throw(t)},"flow_resume_error",t)}catch(t){return void setImmediate(function(){r(function(e){u(t)},"flow_throw",t)})}l(e)}function l(t){if(!t.done)return t.value&&"function"==typeof t.value.then||$("Only promises can be yielded to `async`, got: "+t),t.value.then(p,c);setImmediate(function(){r(function(t){s(t)},"flow_return",t.value)})}var h,f=function(){h=e.apply(null,arguments),p(void 0)};f.$mst_middleware=n.$mst_middleware,w({name:t,type:"flow_spawn",id:o,args:tt(a),tree:i.tree,context:i.context,parentId:i.id,rootId:i.rootId},f)})};return n}function rt(t){return"oldValue"in t||$("Patches without `oldValue` field cannot be inversed"),[ot(t),it(t)]}function ot(t){switch(t.op){case"add":return{op:"add",path:t.path,value:t.value};case"remove":return{op:"remove",path:t.path};case"replace":return{op:"replace",path:t.path,value:t.value}}}function it(t){switch(t.op){case"add":return{op:"remove",path:t.path};case"remove":return{op:"add",path:t.path,value:t.oldValue};case"replace":return{op:"replace",path:t.path,value:t.oldValue}}}function at(t){return t.replace(/~/g,"~1").replace(/\//g,"~0")}function st(t){return t.replace(/~0/g,"/").replace(/~1/g,"~")}function ut(t){return 0===t.length?"":"/"+t.map(at).join("/")}function pt(t){var e=t.split("/").map(st);return""===e[0]?e.slice(1):e}function ct(){return F(this)+"("+this.size+" items)"}function lt(t){t||$("Map.put cannot be used to set empty values");var e;if(k(t))e=F(t);else{if(!Y(t))return $("Map.put can only be used to store complex values");e=F(F(this).type.subType.create(t))}return e.identifierAttribute||$("Map.put can only be used to store complex values that have an identifier type attribute"),this.set(e.identifier,e.value),this}function ht(){return F(this)+"("+this.length+" items)"}function ft(t,e,n,r,o){for(var i,a,s=!1,u=void 0,p=0;s=p<=r.length-1,i=n[p],a=s?r[p]:void 0,z(a)&&(a=a.storedValue),i||s;p++)if(s)if(i)if(yt(i,a))n[p]=dt(e,t,""+o[p],a,i);else{u=void 0;for(var c=p;c<n.length;c++)if(yt(n[c],a)){u=n.splice(c,1)[0];break}n.splice(p,0,dt(e,t,""+o[p],a,u))}else k(a)&&F(a).parent===t&&$("Cannot add an object to a state tree if it is already part of the same or another state tree. Tried to assign an object to '"+t.path+"/"+o[p]+"', but it lives already at '"+F(a).path+"'"),n.splice(p,0,dt(e,t,""+o[p],a));else i.die(),n.splice(p,1),p--;return n}function dt(t,e,n,r,o){if(D(t,r),k(r)){var i=F(r);if(i.assertAlive(),null!==i.parent&&i.parent===e)return i.setParent(e,n),o&&o!==i&&o.die(),i}if(o){var a=t.reconcile(o,r);return a.setParent(e,n),a}return t.instantiate(e,n,e._environment,r)}function yt(t,e){return k(e)?F(e)===t:!(!Y(e)||t.snapshot!==e)||!(null===t.identifier||!t.identifierAttribute||!B(e)||e[t.identifierAttribute]!==t.identifier)}function vt(){return F(this).toString()}function bt(t){return Object.keys(t).reduce(function(t,e){if(e in $t)return $("Hook '"+e+"' was defined as property. Hooks should be defined as part of the actions");var n=Object.getOwnPropertyDescriptor(t,e);"get"in n&&$("Getters are not supported as properties. Please use views instead");var r=n.value;if(null===r)$("The default value of an attribute cannot be null or undefined as the type cannot be inferred. Did you mean `types.maybe(someType)`?");else{if(q(r))return Object.assign({},t,(o={},o[e]=At(mt(r),r),o));if(h(r))return t;$("function"==typeof r?"Functions are not supported as properties, use views instead":"object"==typeof r?"In property '"+e+"': base model's should not contain complex values: '"+r+"'":"Unexpected value for property '"+e+"'")}var o},t)}function mt(t){switch(typeof t){case"string":return Jt;case"number":return Wt;case"boolean":return Bt;case"object":if(t instanceof Date)return Gt}return $("Cannot determine primitive type from value "+t)}function gt(t){return h(t)&&(t.flags&(St.String|St.Number|St.Boolean|St.Date))>0}function wt(t){return new Zt(t)}function Pt(t){for(var e=[],n=1;n<arguments.length;n++)e[n-1]=arguments[n];var r=h(t)?null:t,o=h(t)?e.concat(t):e,i="("+o.map(function(t){return t.name}).join(" | ")+")";return new Qt(i,o,r)}function At(t,e){return new Xt(t,e)}function Vt(t){return(t.flags&St.Reference)>0}var St,jt=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])},Tt=1,_t=function(){function t(t,e,n,r,o,i,a,s){void 0===s&&(s=U),this.nodeId=++Tt,this._parent=null,this.subpath="",this._isRunningAction=!1,this.isProtectionEnabled=!0,this.identifierAttribute=void 0,this._environment=void 0,this._autoUnbox=!0,this._isAlive=!0,this._isDetaching=!1,this.middlewares=Rt,this.type=t,this._parent=e,this.subpath=n,this.storedValue=i,this._environment=r,this.unbox=this.unbox.bind(this),this.preboot(),e||(this.identifierCache=new Dt),a&&Z(this.storedValue,"$treenode",this);var u=!0;try{a&&Z(this.storedValue,"toJSON",M),this._isRunningAction=!0,s(this,o),this._isRunningAction=!1,e?e.root.identifierCache.addNodeToCache(this):this.identifierCache.addNodeToCache(this),this.fireHook("afterCreate"),e&&this.fireHook("afterAttach"),u=!1}finally{u&&(this._isAlive=!1)}}return t.prototype.preboot=function(){},Object.defineProperty(t.prototype,"path",{get:function(){return this.parent?this.parent.path+"/"+at(this.subpath):""},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isRoot",{get:function(){return null===this.parent},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"parent",{get:function(){return this._parent},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"root",{get:function(){for(var t,e=this;t=e.parent;)e=t;return e},enumerable:!0,configurable:!0}),t.prototype.setParent=function(t,e){void 0===e&&(e=null),this.parent===t&&this.subpath===e||(t&&(this._parent&&t!==this._parent&&$("A node cannot exists twice in the state tree. Failed to add "+this+" to path '"+t.path+"/"+e+"'."),this._parent||t.root!==this||$("A state tree is not allowed to contain itself. Cannot assign "+this+" to path '"+t.path+"/"+e+"'"),!this._parent&&this.root._environment&&this.root._environment!==t.root._environment&&$("A state tree cannot be made part of another state tree as long as their environments are different.")),this.parent&&!t?this.die():(this.subpath=e||"",t&&t!==this._parent&&(t.root.identifierCache.mergeCache(this),this._parent=t,this.fireHook("afterAttach"))))},t.prototype.getRelativePathTo=function(t){this.root!==t.root&&$("Cannot calculate relative path: objects '"+this+"' and '"+t+"' are not part of the same object tree");for(var e=pt(this.path),n=pt(t.path),r=0;r<e.length&&e[r]===n[r];r++);return e.slice(r).map(function(t){return".."}).join("/")+ut(n.slice(r))},t.prototype.resolve=function(t,e){return void 0===e&&(e=!0),this.resolvePath(pt(t),e)},t.prototype.resolvePath=function(t,e){void 0===e&&(e=!0);for(var n=this,r=0;r<t.length;r++){if(""===t[r])n=n.root;else if(".."===t[r])n=n.parent;else{if("."===t[r]||""===t[r])continue;if(n){n=n.getChildNode(t[r]);continue}}if(!n)return e?$("Could not resolve '"+t[r]+"' in '"+ut(t.slice(0,r-1))+"', path of the patch does not resolve"):void 0}return n},t.prototype.fireHook=function(t){var e=this.storedValue&&"object"==typeof this.storedValue&&this.storedValue[t];"function"==typeof e&&e.apply(this.storedValue)},Object.defineProperty(t.prototype,"value",{get:function(){if(this._isAlive)return this.type.getValue(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"snapshot",{get:function(){if(this._isAlive)return this.type.getSnapshot(this)},enumerable:!0,configurable:!0}),t.prototype.isRunningAction=function(){return!!this._isRunningAction||!this.isRoot&&this.parent.isRunningAction()},Object.defineProperty(t.prototype,"identifier",{get:function(){return this.identifierAttribute?this.storedValue[this.identifierAttribute]:null},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isAlive",{get:function(){return this._isAlive},enumerable:!0,configurable:!0}),t.prototype.assertAlive=function(){this._isAlive||$(this+" cannot be used anymore as it has died; it has been removed from a state tree. If you want to remove an element from a tree and let it live on, use 'detach' or 'clone' the value")},t.prototype.getChildNode=function(t){this.assertAlive(),this._autoUnbox=!1;var e=this.type.getChildNode(this,t);return this._autoUnbox=!0,e},t.prototype.getChildren=function(){this.assertAlive(),this._autoUnbox=!1;var t=this.type.getChildren(this);return this._autoUnbox=!0,t},t.prototype.getChildType=function(t){return this.type.getChildType(t)},Object.defineProperty(t.prototype,"isProtected",{get:function(){return this.root.isProtectionEnabled},enumerable:!0,configurable:!0}),t.prototype.assertWritable=function(){this.assertAlive(),!this.isRunningAction()&&this.isProtected&&$("Cannot modify '"+this+"', the object is protected and can only be modified by using an action.")},t.prototype.removeChild=function(t){this.type.removeChild(this,t)},t.prototype.unbox=function(t){return t&&!0===this._autoUnbox?t.value:t},t.prototype.toString=function(){var t=this.identifier?"(id: "+this.identifier+")":"";return this.type.name+"@"+(this.path||"<root>")+t+(this.isAlive?"":"[dead]")},t.prototype.die=function(){},t.prototype.emitPatch=function(t,e){throw $("ImmutableNode does not support the emitPatch operation")},t.prototype.finalizeDeath=function(){throw $("ImmutableNode does not support the finalizeDeath operation")},t.prototype.aboutToDie=function(){throw $("ImmutableNode does not support the aboutToDie operation")},t.prototype.addMiddleWare=function(t){throw $("ImmutableNode does not support the addMiddleWare operation")},t.prototype.applyPatchLocally=function(t,e){throw $("ImmutableNode does not support the applyPatchLocally operation")},t.prototype.onPatch=function(t){throw $("ImmutableNode does not support the onPatch operation")},t.prototype.applyPatches=function(t){throw $("ImmutableNode does not support the applyPatches operation")},t.prototype.applySnapshot=function(t){throw $("ImmutableNode does not support the applySnapshot operation")},t.prototype.onSnapshot=function(t){throw $("ImmutableNode does not support the onSnapshot operation")},t.prototype.detach=function(){this._isAlive||$("Error while detaching, node is not alive."),this.isRoot||(this.fireHook("beforeDetach"),this._environment=this.root._environment,this._isDetaching=!0,this.identifierCache=this.root.identifierCache.splitCache(this),this.parent.removeChild(this.subpath),this._parent=null,this.subpath="",this._isDetaching=!1)},t.prototype.addDisposer=function(t){throw $("ImmutableNode does not support the addDisposer operation")},l([e.observable],t.prototype,"_parent",void 0),l([e.observable],t.prototype,"subpath",void 0),l([e.computed],t.prototype,"path",null),l([e.computed],t.prototype,"value",null),l([e.computed],t.prototype,"snapshot",null),t}(),Nt=function(t){function n(n,r,o,i,a,s,u,p){void 0===p&&(p=U);var c=t.call(this,n,r,o,i,a,s,u,p)||this,l=e.reaction(function(){return c.snapshot},function(t){c.emitSnapshot(t)});return l.onError(function(t){throw t}),c.addDisposer(l),c}return p(n,t),n.prototype.preboot=function(){var t=this;this.disposers=[],this.middlewares=[],this.snapshotSubscribers=[],this.patchSubscribers=[],this.applyPatches=A(this.storedValue,"@APPLY_PATCHES",function(e){e.forEach(function(e){var n=pt(e.path);t.resolvePath(n.slice(0,-1)).applyPatchLocally(n[n.length-1],e)})}).bind(this.storedValue),this.applySnapshot=A(this.storedValue,"@APPLY_SNAPSHOT",function(e){if(e!==t.snapshot)return t.type.applySnapshot(t,e)}).bind(this.storedValue)},n.prototype.die=function(){this._isDetaching||k(this.storedValue)&&(u(this.storedValue,function(t){return F(t).aboutToDie()}),u(this.storedValue,function(t){return F(t).finalizeDeath()}))},n.prototype.aboutToDie=function(){this.disposers.splice(0).forEach(function(t){return t()}),this.fireHook("beforeDestroy")},n.prototype.finalizeDeath=function(){this.root.identifierCache.notifyDied(this);var t=this,e=this.path;K(this,"snapshot",this.snapshot),this.patchSubscribers.splice(0),this.snapshotSubscribers.splice(0),this.patchSubscribers.splice(0),this._isAlive=!1,this._parent=null,this.subpath="",Object.defineProperty(this.storedValue,"$mobx",{get:function(){$("This object has died and is no longer part of a state tree. It cannot be used anymore. The object (of type '"+t.type.name+"') used to live at '"+e+"'. It is possible to access the last snapshot of this object using 'getSnapshot', or to create a fresh copy using 'clone'. If you want to remove an object from the tree without killing it, use 'detach' instead.")}})},n.prototype.onSnapshot=function(t){return X(this.snapshotSubscribers,t)},n.prototype.emitSnapshot=function(t){this.snapshotSubscribers.forEach(function(e){return e(t)})},n.prototype.onPatch=function(t){return X(this.patchSubscribers,t)},n.prototype.emitPatch=function(t,e){if(this.patchSubscribers.length){var n=rt(W({},t,{path:e.path.substr(this.path.length)+"/"+t.path})),r=n[0],o=n[1];this.patchSubscribers.forEach(function(t){return t(r,o)})}this.parent&&this.parent.emitPatch(t,e)},n.prototype.addDisposer=function(t){this.disposers.unshift(t)},n.prototype.addMiddleWare=function(t){return X(this.middlewares,t)},n.prototype.applyPatchLocally=function(t,e){this.assertWritable(),this.type.applyPatchLocally(this,t,e)},n}(_t);!function(t){t[t.String=1]="String",t[t.Number=2]="Number",t[t.Boolean=4]="Boolean",t[t.Date=8]="Date",t[t.Literal=16]="Literal",t[t.Array=32]="Array",t[t.Map=64]="Map",t[t.Object=128]="Object",t[t.Frozen=256]="Frozen",t[t.Optional=512]="Optional",t[t.Reference=1024]="Reference",t[t.Identifier=2048]="Identifier",t[t.Late=4096]="Late",t[t.Refinement=8192]="Refinement",t[t.Union=16384]="Union",t[t.Null=32768]="Null",t[t.Undefined=65536]="Undefined"}(St||(St={}));var Ct=function(){function t(t){this.isType=!0,this.name=t}return t.prototype.create=function(t,e){return void 0===t&&(t=this.getDefaultSnapshot()),D(this,t),this.instantiate(null,"",e,t).value},t.prototype.isAssignableFrom=function(t){return t===this},t.prototype.validate=function(t,e){return k(t)?n(t)===this||this.isAssignableFrom(n(t))?O():x(e,t):this.isValidSnapshot(t,e)},t.prototype.is=function(t){return 0===this.validate(t,[{path:"",type:this}]).length},t.prototype.reconcile=function(t,e){if(t.snapshot===e)return t;if(k(e)&&F(e)===t)return t;if(t.type===this&&Y(e)&&!k(e)&&(!t.identifierAttribute||t.identifier===e[t.identifierAttribute]))return t.applySnapshot(e),t;var r=t.parent,o=t.subpath;if(t.die(),k(e)&&this.isAssignableFrom(n(e))){var i=F(e);return i.setParent(r,o),i}return this.instantiate(r,o,t._environment,e)},Object.defineProperty(t.prototype,"Type",{get:function(){return $("Factory.Type should not be actually called. It is just a Type signature that can be used at compile time with Typescript, by using `typeof type.Type`")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"SnapshotType",{get:function(){return $("Factory.SnapshotType should not be actually called. It is just a Type signature that can be used at compile time with Typescript, by using `typeof type.SnapshotType`")},enumerable:!0,configurable:!0}),l([e.action],t.prototype,"create",null),t}(),Ot=function(t){function e(e){return t.call(this,e)||this}return p(e,t),e.prototype.getValue=function(t){return t.storedValue},e.prototype.getSnapshot=function(t){return t.storedValue},e.prototype.getDefaultSnapshot=function(){},e.prototype.applySnapshot=function(t,e){$("Immutable types do not support applying snapshots")},e.prototype.applyPatchLocally=function(t,e,n){$("Immutable types do not support applying patches")},e.prototype.getChildren=function(t){return Rt},e.prototype.getChildNode=function(t,e){return $("No child '"+e+"' available in type: "+this.name)},e.prototype.getChildType=function(t){return $("No child '"+t+"' available in type: "+this.name)},e.prototype.reconcile=function(t,e){if(t.type===this&&t.storedValue===e)return t;var n=this.instantiate(t.parent,t.subpath,t._environment,e);return t.die(),n},e.prototype.removeChild=function(t,e){return $("No child '"+e+"' available in type: "+this.name)},e}(Ct),xt=1,It=null,Dt=function(){function t(){this.cache=e.observable.map()}return t.prototype.addNodeToCache=function(t){if(t.identifierAttribute){var n=t.identifier;this.cache.has(n)||this.cache.set(n,e.observable.shallowArray());var r=this.cache.get(n);-1!==r.indexOf(t)&&$("Already registered"),r.push(t)}return this},t.prototype.mergeCache=function(t){var e=this;t.identifierCache.cache.values().forEach(function(t){return t.forEach(function(t){e.addNodeToCache(t)})})},t.prototype.notifyDied=function(t){if(t.identifierAttribute){var e=this.cache.get(t.identifier);e&&e.remove(t)}},t.prototype.splitCache=function(e){var n=new t,r=e.path;return this.cache.values().forEach(function(t){for(var e=t.length-1;e>=0;e--)0===t[e].path.indexOf(r)&&(n.addNodeToCache(t[e]),t.splice(e,1))}),n},t.prototype.resolve=function(t,e){var n=this.cache.get(e);if(!n)return null;var r=n.filter(function(e){return t.isAssignableFrom(e.type)});switch(r.length){case 0:return null;case 1:return r[0];default:return $("Cannot resolve a reference to type '"+t.name+"' with id: '"+e+"' unambigously, there are multiple candidates: "+r.map(function(t){return t.path}).join(", "))}},t}(),Et="See https://github.com/mobxjs/mobx-state-tree/issues/399 for more information. Note that the middleware event types starting with `process` now start with `flow`.",Rt=Object.freeze([]),zt=Object.freeze({}),kt=function(){};(kt=function(t,e){}).ids={};var Ft=function(t){function n(n,r){var o=t.call(this,n)||this;return o.shouldAttachNode=!0,o.flags=St.Map,o.createNewInstance=function(){var t=e.observable.shallowMap();return Z(t,"put",lt),Z(t,"toString",ct),t},o.finalizeNewInstance=function(t,n){var r=t.storedValue;e.extras.interceptReads(r,t.unbox),e.intercept(r,function(t){return o.willChange(t)}),t.applySnapshot(n),e.observe(r,o.didChange)},o.subType=r,o}return p(n,t),n.prototype.instantiate=function(t,e,n,r){return R(this,t,e,n,r,this.createNewInstance,this.finalizeNewInstance)},n.prototype.describe=function(){return"Map<string, "+this.subType.describe()+">"},n.prototype.getChildren=function(t){return t.storedValue.values()},n.prototype.getChildNode=function(t,e){var n=t.storedValue.get(e);return n||$("Not a child "+e),n},n.prototype.willChange=function(t){var e=F(t.object);switch(e.assertWritable(),t.type){case"update":var n=t.newValue;if(n===t.object.get(t.name))return null;D(this.subType,n),t.newValue=this.subType.reconcile(e.getChildNode(t.name),t.newValue),this.verifyIdentifier(t.name,t.newValue);break;case"add":D(this.subType,t.newValue),t.newValue=this.subType.instantiate(e,t.name,void 0,t.newValue),this.verifyIdentifier(t.name,t.newValue)}return t},n.prototype.verifyIdentifier=function(t,e){var n=e.identifier;null!==n&&""+n!=""+t&&$("A map of objects containing an identifier should always store the object under their own identifier. Trying to store key '"+n+"', but expected: '"+t+"'")},n.prototype.getValue=function(t){return t.storedValue},n.prototype.getSnapshot=function(t){var e={};return t.getChildren().forEach(function(t){e[t.subpath]=t.snapshot}),e},n.prototype.didChange=function(t){var e=F(t.object);switch(t.type){case"update":return void e.emitPatch({op:"replace",path:at(t.name),value:t.newValue.snapshot,oldValue:t.oldValue?t.oldValue.snapshot:void 0},e);case"add":return void e.emitPatch({op:"add",path:at(t.name),value:t.newValue.snapshot,oldValue:void 0},e);case"delete":var n=t.oldValue.snapshot;return t.oldValue.die(),void e.emitPatch({op:"remove",path:at(t.name),oldValue:n},e)}},n.prototype.applyPatchLocally=function(t,e,n){var r=t.storedValue;switch(n.op){case"add":case"replace":r.set(e,n.value);break;case"remove":r.delete(e)}},n.prototype.applySnapshot=function(t,e){D(this,e);var n=t.storedValue,r={};n.keys().forEach(function(t){r[t]=!1}),Object.keys(e).forEach(function(t){n.set(t,e[t]),r[t]=!0}),Object.keys(r).forEach(function(t){!1===r[t]&&n.delete(t)})},n.prototype.getChildType=function(t){return this.subType},n.prototype.isValidSnapshot=function(t,e){var n=this;return B(t)?I(Object.keys(t).map(function(r){return n.subType.validate(t[r],C(e,r,n.subType))})):x(e,t,"Value is not a plain object")},n.prototype.getDefaultSnapshot=function(){return{}},n.prototype.removeChild=function(t,e){t.storedValue.delete(e)},l([e.action],n.prototype,"applySnapshot",null),n}(Ct),Mt=function(t){function n(n,r){var o=t.call(this,n)||this;return o.shouldAttachNode=!0,o.flags=St.Array,o.createNewInstance=function(){var t=e.observable.shallowArray();return Z(t,"toString",ht),t},o.finalizeNewInstance=function(t,n){var r=t.storedValue;e.extras.getAdministration(r).dehancer=t.unbox,e.intercept(r,function(t){return o.willChange(t)}),t.applySnapshot(n),e.observe(r,o.didChange)},o.subType=r,o}return p(n,t),n.prototype.describe=function(){return this.subType.describe()+"[]"},n.prototype.instantiate=function(t,e,n,r){return R(this,t,e,n,r,this.createNewInstance,this.finalizeNewInstance)},n.prototype.getChildren=function(t){return t.storedValue.peek()},n.prototype.getChildNode=function(t,e){var n=parseInt(e,10);return n<t.storedValue.length?t.storedValue[n]:$("Not a child: "+e)},n.prototype.willChange=function(t){var e=F(t.object);e.assertWritable();var n=e.getChildren();switch(t.type){case"update":if(t.newValue===t.object[t.index])return null;t.newValue=ft(e,this.subType,[n[t.index]],[t.newValue],[t.index])[0];break;case"splice":var r=t.index,o=t.removedCount,i=t.added;t.added=ft(e,this.subType,n.slice(r,r+o),i,i.map(function(t,e){return r+e}));for(var a=r+o;a<n.length;a++)n[a].setParent(e,""+(a+i.length-o))}return t},n.prototype.getValue=function(t){return t.storedValue},n.prototype.getSnapshot=function(t){return t.getChildren().map(function(t){return t.snapshot})},n.prototype.didChange=function(t){var e=F(t.object);switch(t.type){case"update":return void e.emitPatch({op:"replace",path:""+t.index,value:t.newValue.snapshot,oldValue:t.oldValue?t.oldValue.snapshot:void 0},e);case"splice":for(n=t.removedCount-1;n>=0;n--)e.emitPatch({op:"remove",path:""+(t.index+n),oldValue:t.removed[n].snapshot},e);for(var n=0;n<t.addedCount;n++)e.emitPatch({op:"add",path:""+(t.index+n),value:e.getChildNode(""+(t.index+n)).snapshot,oldValue:void 0},e);return}},n.prototype.applyPatchLocally=function(t,e,n){var r=t.storedValue,o="-"===e?r.length:parseInt(e);switch(n.op){case"replace":r[o]=n.value;break;case"add":r.splice(o,0,n.value);break;case"remove":r.splice(o,1)}},n.prototype.applySnapshot=function(t,e){D(this,e),t.storedValue.replace(e)},n.prototype.getChildType=function(t){return this.subType},n.prototype.isValidSnapshot=function(t,e){var n=this;return H(t)?I(t.map(function(t,r){return n.subType.validate(t,C(e,""+r,n.subType))})):x(e,t,"Value is not an array")},n.prototype.getDefaultSnapshot=function(){return[]},n.prototype.removeChild=function(t,e){t.storedValue.splice(parseInt(e,10),1)},l([e.action],n.prototype,"applySnapshot",null),n}(Ct),$t={afterCreate:"afterCreate",afterAttach:"afterAttach",postProcessSnapshot:"postProcessSnapshot",beforeDetach:"beforeDetach",beforeDestroy:"beforeDestroy"},Lt={name:"AnonymousModel",properties:{},initializers:Rt},Ut=function(t){function n(n){var r=t.call(this,n.name||Lt.name)||this;r.flags=St.Object,r.shouldAttachNode=!0,r.createNewInstance=function(){var t=e.observable.shallowObject(zt);return Z(t,"toString",vt),t},r.finalizeNewInstance=function(t,n){var o=t.storedValue;r.forAllProps(function(r,i){e.extendShallowObservable(o,(a={},a[r]=e.observable.ref(i.instantiate(t,r,t._environment,n[r])),a)),e.extras.interceptReads(t.storedValue,r,t.unbox);var a}),r.initializers.reduce(function(t,e){return e(t)},o),e.intercept(o,function(t){return r.willChange(t)}),e.observe(o,r.didChange)},r.didChange=function(t){var e=F(t.object);e.emitPatch({op:"replace",path:at(t.name),value:t.newValue.snapshot,oldValue:t.oldValue?t.oldValue.snapshot:void 0},e)};var o=n.name||Lt.name;return/^\w[\w\d_]*$/.test(o)||$("Typename should be a valid identifier: "+o),Object.assign(r,Lt,n),r.properties=bt(r.properties),r.propertiesNames=Object.keys(r.properties),Object.freeze(r.properties),r}return p(n,t),n.prototype.cloneAndEnhance=function(t){return new n({name:t.name||this.name,properties:Object.assign({},this.properties,t.properties),initializers:this.initializers.concat(t.initializers||[]),preProcessor:t.preProcessor||this.preProcessor})},n.prototype.actions=function(t){var e=this;return this.cloneAndEnhance({initializers:[function(n){return e.instantiateActions(n,t(n)),n}]})},n.prototype.instantiateActions=function(t,e){B(e)||$("actions initializer should return a plain object containing actions"),Object.keys(e).forEach(function(n){if("preProcessSnapshot"===n)return $("Cannot define action 'preProcessSnapshot', it should be defined using 'type.preProcessSnapshot(fn)' instead");var r=e[n],o=t[n];if(n in $t&&o){var i=r;r=n===$t.postProcessSnapshot?function(t){return i(o(t))}:function(){o.apply(null,arguments),i.apply(null,arguments)}}Z(t,n,A(t,n,r))})},n.prototype.named=function(t){return this.cloneAndEnhance({name:t})},n.prototype.props=function(t){return this.cloneAndEnhance({properties:t})},n.prototype.extend=function(t){var e=this;return this.cloneAndEnhance({initializers:[function(n){var r=t(n),o=r.actions,i=r.views,a=c(r,["actions","views"]);for(var s in a)$("The `extend` function should return an object with fields 'actions' and / or 'views'. Found invalid key '"+s+"'");return i&&e.instantiateViews(n,i),o&&e.instantiateActions(n,o),n}]})},n.prototype.views=function(t){var e=this;return this.cloneAndEnhance({initializers:[function(n){return e.instantiateViews(n,t(n)),n}]})},n.prototype.instantiateViews=function(t,n){B(n)||$("views initializer should return a plain object containing views"),Object.keys(n).forEach(function(r){var o=Object.getOwnPropertyDescriptor(n,r),i=o.value;if("get"in o)if(e.isComputed(t.$mobx.values[r]))t.$mobx.values[r]=e.computed(o.get,{name:r,setter:o.set,context:t});else{var a={};Object.defineProperty(a,r,{get:o.get,set:o.set,enumerable:!0}),e.extendShallowObservable(t,a)}else"function"==typeof i?Z(t,r,i):$("A view member should either be a function or getter based property")})},n.prototype.preProcessSnapshot=function(t){var e=this.preProcessor;return e?this.cloneAndEnhance({preProcessor:function(n){return e(t(n))}}):this.cloneAndEnhance({preProcessor:t})},n.prototype.instantiate=function(t,e,n,r){return R(this,t,e,n,this.applySnapshotPreProcessor(r),this.createNewInstance,this.finalizeNewInstance)},n.prototype.willChange=function(t){var e=F(t.object),n=this.properties[t.name];return e.assertWritable(),D(n,t.newValue),t.newValue=n.reconcile(e.getChildNode(t.name),t.newValue),t},n.prototype.getChildren=function(t){var e=this,n=[];return this.forAllProps(function(r,o){n.push(e.getChildNode(t,r))}),n},n.prototype.getChildNode=function(t,e){if(!(e in this.properties))return $("Not a value property: "+e);var n=t.storedValue.$mobx.values[e].value;return n||$("Node not available for property "+e)},n.prototype.getValue=function(t){return t.storedValue},n.prototype.getSnapshot=function(t){var n=this,r={};return this.forAllProps(function(o,i){e.extras.getAtom(t.storedValue,o).reportObserved(),r[o]=n.getChildNode(t,o).snapshot}),"function"==typeof t.storedValue.postProcessSnapshot?t.storedValue.postProcessSnapshot.call(null,r):r},n.prototype.applyPatchLocally=function(t,e,n){"replace"!==n.op&&"add"!==n.op&&$("object does not support operation "+n.op),t.storedValue[e]=n.value},n.prototype.applySnapshot=function(t,e){var n=this.applySnapshotPreProcessor(e);D(this,n),this.forAllProps(function(e,r){t.storedValue[e]=n[e]})},n.prototype.applySnapshotPreProcessor=function(t){return this.preProcessor?this.preProcessor.call(null,t):t},n.prototype.getChildType=function(t){return this.properties[t]},n.prototype.isValidSnapshot=function(t,e){var n=this,r=this.applySnapshotPreProcessor(t);return B(r)?I(this.propertiesNames.map(function(t){return n.properties[t].validate(r[t],C(e,t,n.properties[t]))})):x(e,r,"Value is not a plain object")},n.prototype.forAllProps=function(t){var e=this;this.propertiesNames.forEach(function(n){return t(n,e.properties[n])})},n.prototype.describe=function(){var t=this;return"{ "+this.propertiesNames.map(function(e){return e+": "+t.properties[e].describe()}).join("; ")+" }"},n.prototype.getDefaultSnapshot=function(){return{}},n.prototype.removeChild=function(t,e){t.storedValue[e]=null},l([e.action],n.prototype,"applySnapshot",null),n}(Ct),Ht=function(t){function e(e,n,r,o){void 0===o&&(o=L);var i=t.call(this,e)||this;return i.shouldAttachNode=!1,i.flags=n,i.checker=r,i.initializer=o,i}return p(e,t),e.prototype.describe=function(){return this.name},e.prototype.instantiate=function(t,e,n,r){return R(this,t,e,n,r,this.initializer)},e.prototype.isValidSnapshot=function(t,e){return q(t)&&this.checker(t)?O():x(e,t,"Value is not a "+("Date"===this.name?"Date or a unix milliseconds timestamp":this.name))},e}(Ot),Jt=new Ht("string",St.String,function(t){return"string"==typeof t}),Wt=new Ht("number",St.Number,function(t){return"number"==typeof t}),Bt=new Ht("boolean",St.Boolean,function(t){return"boolean"==typeof t}),Yt=new Ht("null",St.Null,function(t){return null===t}),qt=new Ht("undefined",St.Undefined,function(t){return void 0===t}),Gt=new Ht("Date",St.Date,function(t){return"number"==typeof t||t instanceof Date},function(t){return t instanceof Date?t:new Date(t)});Gt.getSnapshot=function(t){return t.storedValue.getTime()};var Zt=function(t){function e(e){var n=t.call(this,JSON.stringify(e))||this;return n.shouldAttachNode=!1,n.flags=St.Literal,n.value=e,n}return p(e,t),e.prototype.instantiate=function(t,e,n,r){return R(this,t,e,n,r)},e.prototype.describe=function(){return JSON.stringify(this.value)},e.prototype.isValidSnapshot=function(t,e){return q(t)&&t===this.value?O():x(e,t,"Value is not a literal "+JSON.stringify(this.value))},e}(Ot),Kt=function(t){function e(e,n,r,o){var i=t.call(this,e)||this;return i.type=n,i.predicate=r,i.message=o,i}return p(e,t),Object.defineProperty(e.prototype,"flags",{get:function(){return this.type.flags|St.Refinement},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"shouldAttachNode",{get:function(){return this.type.shouldAttachNode},enumerable:!0,configurable:!0}),e.prototype.describe=function(){return this.name},e.prototype.instantiate=function(t,e,n,r){return this.type.instantiate(t,e,n,r)},e.prototype.isAssignableFrom=function(t){return this.type.isAssignableFrom(t)},e.prototype.isValidSnapshot=function(t,e){var n=this.type.validate(t,e);if(n.length>0)return n;var r=k(t)?F(t).snapshot:t;return this.predicate(r)?O():x(e,t,this.message(t))},e}(Ot),Qt=function(t){function e(e,n,r){var o=t.call(this,e)||this;return o.dispatcher=null,o.dispatcher=r,o.types=n,o}return p(e,t),Object.defineProperty(e.prototype,"flags",{get:function(){var t=St.Union;return this.types.forEach(function(e){t|=e.flags}),t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"shouldAttachNode",{get:function(){return this.types.some(function(t){return t.shouldAttachNode})},enumerable:!0,configurable:!0}),e.prototype.isAssignableFrom=function(t){return this.types.some(function(e){return e.isAssignableFrom(t)})},e.prototype.describe=function(){return"("+this.types.map(function(t){return t.describe()}).join(" | ")+")"},e.prototype.instantiate=function(t,e,n,r){return this.determineType(r).instantiate(t,e,n,r)},e.prototype.reconcile=function(t,e){return this.determineType(e).reconcile(t,e)},e.prototype.determineType=function(t){if(null!==this.dispatcher)return this.dispatcher(t);var e=this.types.filter(function(e){return e.is(t)});return e.length>1?$("Ambiguos snapshot "+JSON.stringify(t)+" for union "+this.name+". Please provide a dispatch in the union declaration."):e[0]},e.prototype.isValidSnapshot=function(t,e){if(null!==this.dispatcher)return this.dispatcher(t).validate(t,e);var n=this.types.map(function(n){return n.validate(t,e)}),r=n.filter(function(t){return 0===t.length});return r.length>1?x(e,t,"Multiple types are applicable for the union (hint: provide a dispatch function)"):0===r.length?x(e,t,"No type is applicable for the union").concat(I(n)):O()},e}(Ot),Xt=function(t){function e(e,n){var r=t.call(this,e.name)||this;return r.type=e,r.defaultValue=n,r}return p(e,t),Object.defineProperty(e.prototype,"flags",{get:function(){return this.type.flags|St.Optional},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"shouldAttachNode",{get:function(){return this.type.shouldAttachNode},enumerable:!0,configurable:!0}),e.prototype.describe=function(){return this.type.describe()+"?"},e.prototype.instantiate=function(t,e,n,r){if(void 0===r){var o=this.getDefaultValue(),i=k(o)?F(o).snapshot:o;return this.type.instantiate(t,e,n,i)}return this.type.instantiate(t,e,n,r)},e.prototype.reconcile=function(t,e){return this.type.reconcile(t,this.type.is(e)?e:this.getDefaultValue())},e.prototype.getDefaultValue=function(){var t="function"==typeof this.defaultValue?this.defaultValue():this.defaultValue;return"function"==typeof this.defaultValue&&D(this,t),t},e.prototype.isValidSnapshot=function(t,e){return void 0===t?O():this.type.validate(t,e)},e.prototype.isAssignableFrom=function(t){return this.type.isAssignableFrom(t)},e}(Ot),te=At(Yt,null),ee=function(t){function e(e,n){var r=t.call(this,e)||this;return r._subType=null,r.definition=n,r}return p(e,t),Object.defineProperty(e.prototype,"flags",{get:function(){return this.subType.flags|St.Late},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"shouldAttachNode",{get:function(){return this.subType.shouldAttachNode},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"subType",{get:function(){return null===this._subType&&(this._subType=this.definition()),this._subType},enumerable:!0,configurable:!0}),e.prototype.instantiate=function(t,e,n,r){return this.subType.instantiate(t,e,n,r)},e.prototype.reconcile=function(t,e){return this.subType.reconcile(t,e)},e.prototype.describe=function(){return this.subType.name},e.prototype.isValidSnapshot=function(t,e){return this.subType.validate(t,e)},e.prototype.isAssignableFrom=function(t){return this.subType.isAssignableFrom(t)},e}(Ot),ne=new(function(t){function e(){var e=t.call(this,"frozen")||this;return e.shouldAttachNode=!1,e.flags=St.Frozen,e}return p(e,t),e.prototype.describe=function(){return"<any immutable value>"},e.prototype.instantiate=function(t,e,n,r){return R(this,t,e,n,r)},e.prototype.isValidSnapshot=function(t,e){return G(t)?O():x(e,t,"Value is not serializable and cannot be frozen")},e}(Ot)),re=function(){return function(t,e){if(this.mode=t,this.value=e,"object"===t){if(!k(e))return $("Can only store references to tree nodes, got: '"+e+"'");if(!F(e).identifierAttribute)return $("Can only store references with a defined identifier attribute.")}}}(),oe=function(t){function e(e){var n=t.call(this,"reference("+e.name+")")||this;return n.targetType=e,n.shouldAttachNode=!0,n.flags=St.Reference,n}return p(e,t),e.prototype.describe=function(){return this.name},e.prototype.getValue=function(t){var e=t.storedValue;if("object"===e.mode)return e.value;if(t.isAlive){var n=t.root.identifierCache.resolve(this.targetType,e.value);return n?n.value:$("Failed to resolve reference of type "+this.targetType.name+": '"+e.value+"' (in: "+t.path+")")}},e.prototype.getSnapshot=function(t){var e=t.storedValue;switch(e.mode){case"identifier":return e.value;case"object":return F(e.value).identifier}},e.prototype.instantiate=function(t,e,n,r){var o=k(r);return R(this,t,e,n,new re(o?"object":"identifier",r))},e.prototype.reconcile=function(t,e){var n=k(e)?"object":"identifier";if(Vt(t.type)){var r=t.storedValue;if(n===r.mode&&r.value===e)return t}var o=this.instantiate(t.parent,t.subpath,t._environment,e);return t.die(),o},e.prototype.isAssignableFrom=function(t){return this.targetType.isAssignableFrom(t)},e.prototype.isValidSnapshot=function(t,e){return"string"==typeof t||"number"==typeof t?O():x(e,t,"Value is not a valid identifier, which is a string or a number")},e}(Ot),ie=function(t){function e(e){var n=t.call(this,"identifier("+e.name+")")||this;return n.identifierType=e,n.shouldAttachNode=!1,n.flags=St.Identifier,n}return p(e,t),e.prototype.instantiate=function(t,e,n,r){return t&&k(t.storedValue)?(t.identifierAttribute&&$("Cannot define property '"+e+"' as object identifier, property '"+t.identifierAttribute+"' is already defined as identifier property"),t.identifierAttribute=e,R(this,t,e,n,r)):$("Identifier types can only be instantiated as direct child of a model type")},e.prototype.reconcile=function(t,e){return t.storedValue!==e?$("Tried to change identifier from '"+t.storedValue+"' to '"+e+"'. Changing identifiers is not allowed."):t},e.prototype.describe=function(){return"identifier("+this.identifierType.describe()+")"},e.prototype.isValidSnapshot=function(t,e){return void 0===t||null===t||"string"==typeof t||"number"==typeof t?this.identifierType.validate(t,e):x(e,t,"Value is not a valid identifier, which is a string or a number")},e}(Ot),ae={enumeration:function(t,e){var n="string"==typeof t?e:t,r=Pt.apply(void 0,n.map(function(t){return wt(""+t)}));return"string"==typeof t&&(r.name=t),r},model:function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];var n="string"==typeof t[0]?t.shift():"AnonymousModel",r=t.shift()||{};return new Ut({name:n,properties:r})},compose:function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];var n="string"==typeof t[0]?t.shift():"AnonymousModel";return t.reduce(function(t,e){return t.cloneAndEnhance({name:t.name+"_"+e.name,properties:e.properties,initializers:e.initializers})}).named(n)},reference:function(t){return new oe(t)},union:Pt,optional:At,literal:wt,maybe:function(t){return Pt(te,t)},refinement:function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];var n="string"==typeof t[0]?t.shift():h(t[0])?t[0].name:null,r=t[0],o=t[1],i=t[2]?t[2]:function(t){return"Value does not respect the refinement predicate"};return new Kt(n,r,o,i)},string:Jt,boolean:Bt,number:Wt,Date:Gt,map:function(t){return new Ft("map<string, "+t.name+">",t)},array:function(t){return new Mt(t.name+"[]",t)},frozen:ne,identifier:function(t){return void 0===t&&(t=Jt),new ie(t)},late:function(t,e){var n="string"==typeof t?t:"late("+t.toString()+")";return new ee(n,"string"==typeof t?e:t)},undefined:qt,null:Yt};t.types=ae,t.typecheck=E,t.escapeJsonPath=at,t.unescapeJsonPath=st,t.decorate=function(t,e){return e.$mst_middleware?e.$mst_middleware.push(t):e.$mst_middleware=[t],e},t.addMiddleware=V,t.process=function(t){return kt("process","`process()` has been renamed to `flow()`. "+Et),et(t)},t.isStateTreeNode=k,t.flow=et,t.applyAction=v,t.onAction=m,t.recordActions=function(t){var e={actions:[],stop:function(){return n()},replay:function(t){v(t,e.actions)}},n=m(t,e.actions.push.bind(e.actions));return e},t.createActionTrackingMiddleware=function(t){var e=new Map;return function(n,r){switch(n.type){case"action":if(t.filter&&!0!==t.filter(n))return r(n);var o=t.onStart(n);t.onResume(n,o),e.set(n.id,{call:n,context:o,async:!1});try{var i=r(n);return t.onSuspend(n,o),!1===e.get(n.id).async&&t.onSuccess(n,o,i),i}catch(e){throw t.onFail(n,o,e),e}case"flow_spawn":return(a=e.get(n.rootId)).async=!0,r(n);case"flow_resume":case"flow_resume_error":a=e.get(n.rootId),t.onResume(n,a.context);try{return r(n)}finally{t.onSuspend(n,a.context)}case"flow_throw":return a=e.get(n.rootId),e.delete(n.id),t.onFail(n,a.context,n.args[0]),r(n);case"flow_return":var a=e.get(n.rootId);return e.delete(n.id),t.onSuccess(n,a.context,n.args[0]),r(n)}}},t.getType=n,t.getChildType=function(t,e){return F(t).getChildType(e)},t.onPatch=r,t.onSnapshot=function(t,e){return F(t).onSnapshot(e)},t.applyPatch=o,t.recordPatches=function(t){function e(){n||(n=r(t,function(t,e){i.rawPatches.push([t,e])}))}var n=null,i={rawPatches:[],get patches(){return this.rawPatches.map(function(t){return t[0]})},get inversePatches(){return this.rawPatches.map(function(t){return t[0],t[1]})},stop:function(){n&&n(),n=null},resume:e,replay:function(e){o(e||t,i.patches)},undo:function(e){o(e||t,i.inversePatches.slice().reverse())}};return e(),i},t.protect=function(t){var e=F(t);e.isRoot||$("`protect` can only be invoked on root nodes"),e.isProtectionEnabled=!0},t.unprotect=function(t){var e=F(t);e.isRoot||$("`unprotect` can only be invoked on root nodes"),e.isProtectionEnabled=!1},t.isProtected=function(t){return F(t).isProtected},t.applySnapshot=i,t.getSnapshot=function(t){return F(t).snapshot},t.hasParent=function(t,e){void 0===e&&(e=1);for(var n=F(t).parent;n;){if(0==--e)return!0;n=n.parent}return!1},t.getParent=function(t,e){void 0===e&&(e=1);for(var n=e,r=F(t).parent;r;){if(0==--n)return r.storedValue;r=r.parent}return $("Failed to find the parent of "+F(t)+" at depth "+e)},t.getRoot=a,t.getPath=function(t){return F(t).path},t.getPathParts=function(t){return pt(F(t).path)},t.isRoot=function(t){return F(t).isRoot},t.resolvePath=function(t,e){var n=F(t).resolve(e);return n?n.value:void 0},t.resolveIdentifier=function(t,e,n){var r=F(e).root.identifierCache.resolve(t,""+n);return r?r.value:void 0},t.tryResolve=s,t.getRelativePath=function(t,e){return F(t).getRelativePathTo(F(e))},t.clone=function(t,e){void 0===e&&(e=!0);var n=F(t);return n.type.create(n.snapshot,!0===e?n.root._environment:!1===e?void 0:e)},t.detach=function(t){return F(t).detach(),t},t.destroy=function(t){var e=F(t);e.isRoot?e.die():e.parent.removeChild(e.subpath)},t.isAlive=function(t){return F(t).isAlive},t.addDisposer=function(t,e){F(t).addDisposer(e)},t.getEnv=function(t){var e=F(t).root._environment;return e||zt},t.walk=u,Object.defineProperty(t,"__esModule",{value:!0})}); |
import { IObservableArray, IArrayWillChange, IArrayWillSplice, IArrayChange, IArraySplice } from "mobx"; | ||
import { IJsonPatch, Node, IStateTreeNode } from "../../core"; | ||
import { ComplexType, IComplexType, IType } from "../type"; | ||
import { TypeFlags } from "../type-flags"; | ||
import { IContext, IValidationResult } from "../type-checker"; | ||
import { IJsonPatch, INode, IStateTreeNode, IContext, IValidationResult, ComplexType, IComplexType, IType, TypeFlags } from "../../internal"; | ||
export declare function arrayToString(this: IObservableArray<any> & IStateTreeNode): string; | ||
@@ -14,16 +11,16 @@ export declare class ArrayType<S, T> extends ComplexType<S[], IObservableArray<T>> { | ||
createNewInstance: () => IObservableArray<{}>; | ||
finalizeNewInstance: (node: Node, snapshot: any) => void; | ||
instantiate(parent: Node | null, subpath: string, environment: any, snapshot: S): Node; | ||
getChildren(node: Node): Node[]; | ||
getChildNode(node: Node, key: string): Node; | ||
finalizeNewInstance: (node: INode, snapshot: any) => void; | ||
instantiate(parent: INode | null, subpath: string, environment: any, snapshot: S): INode; | ||
getChildren(node: INode): INode[]; | ||
getChildNode(node: INode, key: string): INode; | ||
willChange(change: IArrayWillChange<any> | IArrayWillSplice<any>): Object | null; | ||
getValue(node: Node): any; | ||
getSnapshot(node: Node): any; | ||
getValue(node: INode): any; | ||
getSnapshot(node: INode): any; | ||
didChange(this: {}, change: IArrayChange<any> | IArraySplice<any>): void; | ||
applyPatchLocally(node: Node, subpath: string, patch: IJsonPatch): void; | ||
applySnapshot(node: Node, snapshot: any[]): void; | ||
applyPatchLocally(node: INode, subpath: string, patch: IJsonPatch): void; | ||
applySnapshot(node: INode, snapshot: any[]): void; | ||
getChildType(key: string): IType<any, any>; | ||
isValidSnapshot(value: any, context: IContext): IValidationResult; | ||
getDefaultSnapshot(): never[]; | ||
removeChild(node: Node, subpath: string): void; | ||
removeChild(node: INode, subpath: string): void; | ||
} | ||
@@ -55,1 +52,2 @@ /** | ||
export declare function array<S, T>(subtype: IType<S, T>): IComplexType<S[], IObservableArray<T>>; | ||
export declare function isArrayType<S, T>(type: any): type is IComplexType<S[], IObservableArray<T>>; |
import { ObservableMap, IMapChange, IMapWillChange } from "mobx"; | ||
import { IJsonPatch, Node } from "../../core"; | ||
import { IType, IComplexType, ComplexType } from "../type"; | ||
import { TypeFlags } from "../type-flags"; | ||
import { IContext, IValidationResult } from "../type-checker"; | ||
import { IJsonPatch, INode, IType, IComplexType, ComplexType, TypeFlags, IContext, IValidationResult } from "../../internal"; | ||
export interface IExtendedObservableMap<T> extends ObservableMap<T> { | ||
@@ -17,21 +14,21 @@ put(value: T | any): this; | ||
constructor(name: string, subType: IType<any, any>); | ||
instantiate(parent: Node | null, subpath: string, environment: any, snapshot: S): Node; | ||
instantiate(parent: INode | null, subpath: string, environment: any, snapshot: S): INode; | ||
describe(): string; | ||
createNewInstance: () => ObservableMap<{}>; | ||
finalizeNewInstance: (node: Node, snapshot: any) => void; | ||
getChildren(node: Node): Node[]; | ||
getChildNode(node: Node, key: string): Node; | ||
finalizeNewInstance: (node: INode, snapshot: any) => void; | ||
getChildren(node: INode): INode[]; | ||
getChildNode(node: INode, key: string): INode; | ||
willChange(change: IMapWillChange<any>): IMapWillChange<any> | null; | ||
private verifyIdentifier(expected, node); | ||
getValue(node: Node): any; | ||
getSnapshot(node: Node): { | ||
getValue(node: INode): any; | ||
getSnapshot(node: INode): { | ||
[key: string]: any; | ||
}; | ||
didChange(change: IMapChange<any>): void; | ||
applyPatchLocally(node: Node, subpath: string, patch: IJsonPatch): void; | ||
applySnapshot(node: Node, snapshot: any): void; | ||
applyPatchLocally(node: INode, subpath: string, patch: IJsonPatch): void; | ||
applySnapshot(node: INode, snapshot: any): void; | ||
getChildType(key: string): IType<any, any>; | ||
isValidSnapshot(value: any, context: IContext): IValidationResult; | ||
getDefaultSnapshot(): {}; | ||
removeChild(node: Node, subpath: string): void; | ||
removeChild(node: INode, subpath: string): void; | ||
} | ||
@@ -68,1 +65,4 @@ /** | ||
}, IExtendedObservableMap<T>>; | ||
export declare function isMapType<S, T>(type: any): type is IComplexType<{ | ||
[key: string]: S; | ||
}, IExtendedObservableMap<T>>; |
import { IObjectChange, IObjectWillChange } from "mobx"; | ||
import { ComplexType, IComplexType, IType } from "../type"; | ||
import { TypeFlags } from "../type-flags"; | ||
import { IStateTreeNode, IJsonPatch, Node } from "../../core"; | ||
import { IContext, IValidationResult } from "../type-checker"; | ||
import { IStateTreeNode, IJsonPatch, INode, ComplexType, IComplexType, IType, TypeFlags, IContext, IValidationResult } from "../../internal"; | ||
export declare type ModelTypeConfig = { | ||
@@ -16,2 +13,3 @@ name?: string; | ||
readonly flags: TypeFlags; | ||
shouldAttachNode: boolean; | ||
readonly initializers: ((instance: any) => any)[]; | ||
@@ -46,13 +44,13 @@ readonly properties: { | ||
preProcessSnapshot(preProcessor: (snapshot: any) => S): IModelType<S, T>; | ||
instantiate(parent: Node | null, subpath: string, environment: any, snapshot: any): Node; | ||
instantiate(parent: INode | null, subpath: string, environment: any, snapshot: any): INode; | ||
createNewInstance: () => Object; | ||
finalizeNewInstance: (node: Node, snapshot: any) => void; | ||
finalizeNewInstance: (node: INode, snapshot: any) => void; | ||
willChange(change: IObjectWillChange): IObjectWillChange | null; | ||
didChange: (change: IObjectChange) => void; | ||
getChildren(node: Node): Node[]; | ||
getChildNode(node: Node, key: string): Node; | ||
getValue(node: Node): any; | ||
getSnapshot(node: Node): any; | ||
applyPatchLocally(node: Node, subpath: string, patch: IJsonPatch): void; | ||
applySnapshot(node: Node, snapshot: any): void; | ||
getChildren(node: INode): INode[]; | ||
getChildNode(node: INode, key: string): INode; | ||
getValue(node: INode): any; | ||
getSnapshot(node: INode): any; | ||
applyPatchLocally(node: INode, subpath: string, patch: IJsonPatch): void; | ||
applySnapshot(node: INode, snapshot: any): void; | ||
applySnapshotPreProcessor(snapshot: any): any; | ||
@@ -64,3 +62,3 @@ getChildType(key: string): IType<any, any>; | ||
getDefaultSnapshot(): any; | ||
removeChild(node: Node, subpath: string): void; | ||
removeChild(node: INode, subpath: string): void; | ||
} | ||
@@ -99,1 +97,2 @@ export interface IModelType<S, T> extends IComplexType<S, T & IStateTreeNode> { | ||
export declare function compose<T1, S1, A1, T2, S2, A2, T3, S3, A3>(name: string, t1: IModelType<T1, S1>, t2: IModelType<T2, S2>, t3?: IModelType<T3, S3>): IModelType<T1 & T2 & T3, S1 & S2 & S3>; | ||
export declare function isObjectType(type: any): type is ModelType<any, any>; |
@@ -1,6 +0,4 @@ | ||
import { ISimpleType, IType, Type } from "./type"; | ||
import { TypeFlags } from "./type-flags"; | ||
import { IContext, IValidationResult } from "./type-checker"; | ||
import { Node } from "../core"; | ||
import { Type, INode, ISimpleType, IType, TypeFlags, IContext, IValidationResult } from "../internal"; | ||
export declare class CoreType<S, T> extends Type<S, T> { | ||
readonly shouldAttachNode: boolean; | ||
readonly checker: (value: any) => boolean; | ||
@@ -11,3 +9,3 @@ readonly flags: TypeFlags; | ||
describe(): string; | ||
instantiate(parent: Node | null, subpath: string, environment: any, snapshot: T): Node; | ||
instantiate(parent: INode | null, subpath: string, environment: any, snapshot: T): INode; | ||
isValidSnapshot(value: any, context: IContext): IValidationResult; | ||
@@ -82,1 +80,2 @@ } | ||
export declare function getPrimitiveFactoryFromValue(value: any): ISimpleType<any>; | ||
export declare function isPrimitiveType(type: any): type is CoreType<any, any>; |
@@ -1,10 +0,8 @@ | ||
import { ISimpleType, Type } from "../type"; | ||
import { TypeFlags } from "../type-flags"; | ||
import { IContext, IValidationResult } from "../type-checker"; | ||
import { Node } from "../../core"; | ||
import { INode, ISimpleType, Type, IContext, IValidationResult, TypeFlags } from "../../internal"; | ||
export declare class Frozen<T> extends Type<T, T> { | ||
readonly shouldAttachNode: boolean; | ||
flags: TypeFlags; | ||
constructor(); | ||
describe(): string; | ||
instantiate(parent: Node | null, subpath: string, environment: any, value: any): Node; | ||
instantiate(parent: INode | null, subpath: string, environment: any, value: any): INode; | ||
isValidSnapshot(value: any, context: IContext): IValidationResult; | ||
@@ -14,3 +12,3 @@ } | ||
* Frozen can be used to story any value that is serializable in itself (that is valid JSON). | ||
* Frozen values need to be immutable or treated as if immutable. | ||
* Frozen values need to be immutable or treated as if immutable. They need be serializable as well. | ||
* Values stored in frozen will snapshotted as-is by MST, and internal changes will not be tracked. | ||
@@ -20,2 +18,4 @@ * | ||
* | ||
* Note: if you want to store free-form state that is mutable, or not serializeable, consider using volatile state instead. | ||
* | ||
* @example | ||
@@ -38,1 +38,2 @@ * const GameCharacter = types.model({ | ||
export declare const frozen: ISimpleType<any>; | ||
export declare function isFrozenType(type: any): type is Frozen<any>; |
@@ -1,11 +0,9 @@ | ||
import { Type, IType } from "../type"; | ||
import { TypeFlags } from "../type-flags"; | ||
import { IContext, IValidationResult } from "../type-checker"; | ||
import { Node } from "../../core"; | ||
import { INode, Type, IType, TypeFlags, IContext, IValidationResult } from "../../internal"; | ||
export declare class IdentifierType<T> extends Type<T, T> { | ||
readonly identifierType: IType<T, T>; | ||
readonly shouldAttachNode: boolean; | ||
readonly flags: TypeFlags; | ||
constructor(identifierType: IType<T, T>); | ||
instantiate(parent: Node | null, subpath: string, environment: any, snapshot: T): Node; | ||
reconcile(current: Node, newValue: any): Node; | ||
instantiate(parent: INode | null, subpath: string, environment: any, snapshot: T): INode; | ||
reconcile(current: INode, newValue: any): INode; | ||
describe(): string; | ||
@@ -16,1 +14,2 @@ isValidSnapshot(value: any, context: IContext): IValidationResult; | ||
export declare function identifier<T>(): T; | ||
export declare function isIdentifierType(type: any): type is IdentifierType<any>; |
@@ -1,4 +0,2 @@ | ||
import { Type, IType } from "../type"; | ||
import { IContext, IValidationResult } from "../type-checker"; | ||
import { Node } from "../../core"; | ||
import { INode, Type, IType, IContext, IValidationResult } from "../../internal"; | ||
export declare class Late<S, T> extends Type<S, T> { | ||
@@ -8,6 +6,7 @@ readonly definition: () => IType<S, T>; | ||
readonly flags: number; | ||
readonly shouldAttachNode: boolean; | ||
readonly subType: IType<S, T>; | ||
constructor(name: string, definition: () => IType<S, T>); | ||
instantiate(parent: Node | null, subpath: string, environment: any, snapshot: any): Node; | ||
reconcile(current: Node, newValue: any): Node; | ||
instantiate(parent: INode | null, subpath: string, environment: any, snapshot: any): INode; | ||
reconcile(current: INode, newValue: any): INode; | ||
describe(): string; | ||
@@ -20,1 +19,2 @@ isValidSnapshot(value: any, context: IContext): IValidationResult; | ||
export declare function late<S = any, T = any>(name: string, type: ILateType<S, T>): IType<S, T>; | ||
export declare function isLateType(type: any): type is Late<any, any>; |
@@ -1,10 +0,8 @@ | ||
import { ISimpleType, Type } from "../type"; | ||
import { TypeFlags } from "../type-flags"; | ||
import { IContext, IValidationResult } from "../type-checker"; | ||
import { Node } from "../../core"; | ||
import { INode, ISimpleType, Type, TypeFlags, IContext, IValidationResult } from "../../internal"; | ||
export declare class Literal<T> extends Type<T, T> { | ||
readonly shouldAttachNode: boolean; | ||
readonly value: any; | ||
readonly flags: TypeFlags; | ||
constructor(value: any); | ||
instantiate(parent: Node | null, subpath: string, environment: any, snapshot: T): Node; | ||
instantiate(parent: INode | null, subpath: string, environment: any, snapshot: T): INode; | ||
describe(): string; | ||
@@ -31,1 +29,2 @@ isValidSnapshot(value: any, context: IContext): IValidationResult; | ||
export declare function literal<S>(value: S): ISimpleType<S>; | ||
export declare function isLiteralType(type: any): type is Literal<any>; |
@@ -1,2 +0,2 @@ | ||
import { IType } from "../type"; | ||
import { IType } from "../../internal"; | ||
/** | ||
@@ -3,0 +3,0 @@ * Maybe will make a type nullable, and also null by default. |
@@ -1,4 +0,2 @@ | ||
import { Type, IType } from "../type"; | ||
import { IContext, IValidationResult } from "../type-checker"; | ||
import { Node } from "../../core"; | ||
import { INode, Type, IType, IContext, IValidationResult } from "../../internal"; | ||
export declare type IFunctionReturn<T> = () => T; | ||
@@ -10,6 +8,7 @@ export declare type IOptionalValue<S, T> = S | T | IFunctionReturn<S> | IFunctionReturn<T>; | ||
readonly flags: number; | ||
readonly shouldAttachNode: boolean; | ||
constructor(type: IType<S, T>, defaultValue: IOptionalValue<S, T>); | ||
describe(): string; | ||
instantiate(parent: Node, subpath: string, environment: any, value: S): Node; | ||
reconcile(current: Node, newValue: any): Node; | ||
instantiate(parent: INode, subpath: string, environment: any, value: S): INode; | ||
reconcile(current: INode, newValue: any): INode; | ||
private getDefaultValue(); | ||
@@ -23,1 +22,2 @@ isValidSnapshot(value: any, context: IContext): IValidationResult; | ||
export declare function optional<S, T>(type: IType<S, T>, defaultValueOrFunction: () => T): IType<S, T>; | ||
export declare function isOptionalType(type: any): type is OptionalValue<any, any>; |
@@ -1,14 +0,12 @@ | ||
import { Node } from "../../core"; | ||
import { Type, IType } from "../type"; | ||
import { TypeFlags } from "../type-flags"; | ||
import { IContext, IValidationResult } from "../type-checker"; | ||
import { INode, Type, IType, TypeFlags, IContext, IValidationResult } from "../../internal"; | ||
export declare class ReferenceType<T> extends Type<string | number, T> { | ||
private readonly targetType; | ||
readonly shouldAttachNode: boolean; | ||
readonly flags: TypeFlags; | ||
constructor(targetType: IType<any, T>); | ||
describe(): string; | ||
getValue(node: Node): any; | ||
getSnapshot(node: Node): any; | ||
instantiate(parent: Node | null, subpath: string, environment: any, snapshot: any): Node; | ||
reconcile(current: Node, newValue: any): Node; | ||
getValue(node: INode): any; | ||
getSnapshot(node: INode): any; | ||
instantiate(parent: INode | null, subpath: string, environment: any, snapshot: any): INode; | ||
reconcile(current: INode, newValue: any): INode; | ||
isAssignableFrom(type: IType<any, any>): boolean; | ||
@@ -18,1 +16,2 @@ isValidSnapshot(value: any, context: IContext): IValidationResult; | ||
export declare function reference<T>(factory: IType<any, T>): IType<string | number, T>; | ||
export declare function isReferenceType(type: any): type is ReferenceType<any>; |
@@ -1,4 +0,2 @@ | ||
import { IType, Type } from "../type"; | ||
import { Node } from "../../core"; | ||
import { IContext, IValidationResult } from "../type-checker"; | ||
import { INode, IType, Type, IContext, IValidationResult } from "../../internal"; | ||
export declare class Refinement<S, T> extends Type<S, T> { | ||
@@ -9,5 +7,6 @@ readonly type: IType<any, any>; | ||
readonly flags: number; | ||
readonly shouldAttachNode: boolean; | ||
constructor(name: string, type: IType<any, any>, predicate: (v: any) => boolean, message: (v: any) => string); | ||
describe(): string; | ||
instantiate(parent: Node, subpath: string, environment: any, value: any): Node; | ||
instantiate(parent: INode, subpath: string, environment: any, value: any): INode; | ||
isAssignableFrom(type: IType<any, any>): boolean; | ||
@@ -20,1 +19,2 @@ isValidSnapshot(value: any, context: IContext): IValidationResult; | ||
export declare function refinement<T>(type: IType<T, T>, predicate: (snapshot: T) => boolean, message?: string | ((v: any) => string)): IType<T, T>; | ||
export declare function isRefinementType(type: any): type is Refinement<any, any>; |
@@ -1,5 +0,2 @@ | ||
import { IType, Type } from "../type"; | ||
import { TypeFlags } from "../type-flags"; | ||
import { IContext, IValidationResult } from "../type-checker"; | ||
import { Node } from "../../core"; | ||
import { IContext, IValidationResult, TypeFlags, IType, Type, INode } from "../../internal"; | ||
export declare type ITypeDispatcher = (snapshot: any) => IType<any, any>; | ||
@@ -10,7 +7,8 @@ export declare class Union extends Type<any, any> { | ||
readonly flags: TypeFlags; | ||
readonly shouldAttachNode: boolean; | ||
constructor(name: string, types: IType<any, any>[], dispatcher: ITypeDispatcher | null); | ||
isAssignableFrom(type: IType<any, any>): boolean; | ||
describe(): string; | ||
instantiate(parent: Node, subpath: string, environment: any, value: any): Node; | ||
reconcile(current: Node, newValue: any): Node; | ||
instantiate(parent: INode, subpath: string, environment: any, value: any): INode; | ||
reconcile(current: INode, newValue: any): INode; | ||
determineType(value: any): IType<any, any>; | ||
@@ -39,1 +37,2 @@ isValidSnapshot(value: any, context: IContext): IValidationResult; | ||
export declare function union(dispatchOrType: ITypeDispatcher | IType<any, any>, ...otherTypes: IType<any, any>[]): IType<any, any>; | ||
export declare function isUnionType(type: any): type is Union; |
{ | ||
"name": "mobx-state-tree", | ||
"version": "1.1.0", | ||
"version": "1.1.1", | ||
"description": "Opinionated, transactional, MobX powered state container", | ||
@@ -14,7 +14,7 @@ "main": "dist/mobx-state-tree.js", | ||
"build-tests": "tsc -p test/", | ||
"test": "npm run build-tests && ava && npm run test-cyclic", | ||
"test": "npm run build-tests && cross-env NODE_ENV=development ava && cross-env NODE_ENV=production ava && npm run test-cyclic", | ||
"update-snapshots": "ava -u", | ||
"speedtest": "npm run build-tests && node --expose-gc test-lib/test/perf/report.js", | ||
"test-cyclic": "npm run build && node -e \"require('.')\"", | ||
"watch": "tsc -p test && concurrently --kill-others --names 'build-tests,test-runner' 'tsc --watch -p test' --raw 'ava --watch'", | ||
"watch": "(tsc -p test --skipLibCheck || true) && concurrently --kill-others --names 'build-tests,test-runner' 'tsc --skipLibCheck --watch -p test' --raw 'ava --watch'", | ||
"_prepublish": "npm run build && npm run build-docs", | ||
@@ -45,2 +45,3 @@ "coverage": "npm run build-tests && nyc ava && nyc report -r html && nyc report -r lcov", | ||
"cpr": "^2.1.0", | ||
"cross-env": "^5.1.1", | ||
"documentation": "^5.2.2", | ||
@@ -47,0 +48,0 @@ "mobx": "^3.2.2", |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Mixed license
License(Experimental) Package contains multiple licenses.
Found 1 instance in 1 package
590250
35
0
9669
21