New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

mobx-state-tree

Package Overview
Dependencies
Maintainers
2
Versions
129
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

mobx-state-tree - npm Package Compare versions

Comparing version 1.2.0 to 1.2.1

2

dist/mobx-state-tree.umd.js

@@ -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){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})});
!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}St(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),A(t,n?function(t,e){var n=e(t);return r(t),n}:function(t,e){return r(t),e(t)})}function g(){return Ot++}function w(t,e){var n=F(t.context),r=n._isRunningAction,o=xt;n.assertAlive(),n._isRunningAction=!0,xt=t;try{return j(n,t,e)}finally{xt=o,n._isRunningAction=r}}function P(){return xt||$("Not running an action!")}function V(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:xt?xt.rootId:e,parentId:xt?xt.id:0},o)}}function A(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 Et}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 _t(t,e,n,r,o,u,t.shouldAttachNode,a):new Tt(t,e,n,r,o,u,t.shouldAttachNode,a)}function z(t){return t instanceof Tt||t instanceof _t}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]:Et}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 Mt)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]=Vt(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 Ht;case"number":return Jt;case"boolean":return Wt;case"object":if(t instanceof Date)return qt}return $("Cannot determine primitive type from value "+t)}function gt(t){return h(t)&&(t.flags&(At.String|At.Number|At.Boolean|At.Date))>0}function wt(t){return new Gt(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 Kt(i,o,r)}function Vt(t,e){return new Qt(t,e)}var At,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=1,Tt=function(){function t(t,e,n,r,o,i,a,s){void 0===s&&(s=U),this.nodeId=++jt,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=Et,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 It),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}(),_t=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=V(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=V(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}(Tt);!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"}(At||(At={}));var Nt=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}(),Ct=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 Et},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}(Nt),Ot=1,xt=null,It=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}(),Dt="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`.",Et=Object.freeze([]),Rt=Object.freeze({}),zt=function(){};(zt=function(t,e){}).ids={};var kt=function(t){function n(n,r){var o=t.call(this,n)||this;return o.shouldAttachNode=!0,o.flags=At.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}(Nt),Ft=function(t){function n(n,r){var o=t.call(this,n)||this;return o.shouldAttachNode=!0,o.flags=At.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}(Nt),Mt={afterCreate:"afterCreate",afterAttach:"afterAttach",postProcessSnapshot:"postProcessSnapshot",beforeDetach:"beforeDetach",beforeDestroy:"beforeDestroy"},$t={name:"AnonymousModel",properties:{},initializers:Et},Lt=function(t){function n(n){var r=t.call(this,n.name||$t.name)||this;r.flags=At.Object,r.shouldAttachNode=!0,r.createNewInstance=function(){var t=e.observable.shallowObject(Rt);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(o,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){if(r.properties[t.name]){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||$t.name;return/^\w[\w\d_]*$/.test(o)||$("Typename should be a valid identifier: "+o),Object.assign(r,$t,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 Mt&&o){var i=r;r=n===Mt.postProcessSnapshot?function(t){return i(o(t))}:function(){o.apply(null,arguments),i.apply(null,arguments)}}Z(t,n,V(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.volatile=function(t){var e=this;return this.cloneAndEnhance({initializers:[function(n){return e.instantiateVolatileState(n,t(n)),n}]})},n.prototype.instantiateVolatileState=function(t,n){B(n)||$("state initializer should return a plain object containing views"),e.extendShallowObservable(t,n)},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=r.state,s=c(r,["actions","views","state"]);for(var u in s)$("The `extend` function should return an object with a subset of the fields 'actions', 'views' and 'state'. Found invalid key '"+u+"'");return a&&e.instantiateVolatileState(n,a),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);e.assertWritable();var n=this.properties[t.name];return n&&(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}(Nt),Ut=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}(Ct),Ht=new Ut("string",At.String,function(t){return"string"==typeof t}),Jt=new Ut("number",At.Number,function(t){return"number"==typeof t}),Wt=new Ut("boolean",At.Boolean,function(t){return"boolean"==typeof t}),Bt=new Ut("null",At.Null,function(t){return null===t}),Yt=new Ut("undefined",At.Undefined,function(t){return void 0===t}),qt=new Ut("Date",At.Date,function(t){return"number"==typeof t||t instanceof Date},function(t){return t instanceof Date?t:new Date(t)});qt.getSnapshot=function(t){return t.storedValue.getTime()};var Gt=function(t){function e(e){var n=t.call(this,JSON.stringify(e))||this;return n.shouldAttachNode=!1,n.flags=At.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}(Ct),Zt=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|At.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}(Ct),Kt=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=At.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}(Ct),Qt=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|At.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}(Ct),Xt=Vt(Bt,null),te=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|At.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}(Ct),ee=new(function(t){function e(){var e=t.call(this,"frozen")||this;return e.shouldAttachNode=!1,e.flags=At.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}(Ct)),ne=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.")}}}(),re=function(t){function e(e){var n=t.call(this,"reference("+e.name+")")||this;return n.targetType=e,n.flags=At.Reference,n}return p(e,t),e.prototype.describe=function(){return this.name},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}(Ct),oe=function(t){function e(e){var n=t.call(this,e)||this;return n.shouldAttachNode=!0,n}return p(e,t),e.prototype.getValue=function(t){if(t.isAlive){var e=t.storedValue;if("object"===e.mode)return e.value;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){return R(this,t,e,n,new ne(k(r)?"object":"identifier",r))},e.prototype.reconcile=function(t,e){if(t.type===this){var n=k(e)?"object":"identifier",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}(re),ie=function(t){function e(e,n){var r=t.call(this,e)||this;return r.options=n,r.shouldAttachNode=!1,r}return p(e,t),e.prototype.getValue=function(t){if(t.isAlive)return this.options.get(t.storedValue,t.parent?t.parent.storedValue:null)},e.prototype.getSnapshot=function(t){return t.storedValue},e.prototype.instantiate=function(t,e,n,r){return R(this,t,e,n,k(r)?this.options.set(r,t?t.storedValue:null):r)},e.prototype.reconcile=function(t,e){var n=k(e)?this.options.set(e,t?t.storedValue:null):e;if(t.type===this&&t.storedValue===n)return t;var r=this.instantiate(t.parent,t.subpath,t._environment,n);return t.die(),r},e}(re),ae=function(t){function e(e){var n=t.call(this,"identifier("+e.name+")")||this;return n.identifierType=e,n.shouldAttachNode=!1,n.flags=At.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}(Ct),se={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 Lt({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,e){return e?new ie(t,e):new oe(t)},union:Pt,optional:Vt,literal:wt,maybe:function(t){return Pt(Xt,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 Zt(n,r,o,i)},string:Ht,boolean:Wt,number:Jt,Date:qt,map:function(t){return new kt("map<string, "+t.name+">",t)},array:function(t){return new Ft(t.name+"[]",t)},frozen:ee,identifier:function(t){return void 0===t&&(t=Ht),new ae(t)},late:function(t,e){var n="string"==typeof t?t:"late("+t.toString()+")";return new te(n,"string"==typeof t?e:t)},undefined:Yt,null:Bt};t.types=se,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=A,t.process=function(t){return zt("process","`process()` has been renamed to `flow()`. "+Dt),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||Rt},t.walk=u,Object.defineProperty(t,"__esModule",{value:!0})});

@@ -34,8 +34,11 @@ import { IObjectChange, IObjectWillChange } from "mobx";

}): IModelType<S & SP, T & TP>;
volatile<TP>(fn: (self: T) => TP): IModelType<S, T & TP>;
instantiateVolatileState(self: T, state: Object): void;
extend<A extends {
[name: string]: Function;
} = {}, V extends Object = {}>(fn: (self: T & IStateTreeNode) => {
} = {}, V extends Object = {}, VS extends Object = {}>(fn: (self: T & IStateTreeNode) => {
actions?: A;
views?: V;
}): IModelType<S, T & A & V>;
state?: VS;
}): IModelType<S, T & A & V & VS>;
views<V extends Object>(fn: (self: T) => V): IModelType<S, T & V>;

@@ -74,8 +77,10 @@ instantiateViews(self: T, views: Object): void;

}>(fn: (self: T & IStateTreeNode) => A): IModelType<S, T & A>;
volatile<TP>(fn: (self: T) => TP): IModelType<S, T & TP>;
extend<A extends {
[name: string]: Function;
} = {}, V extends Object = {}>(fn: (self: T & IStateTreeNode) => {
} = {}, V extends Object = {}, VS extends Object = {}>(fn: (self: T & IStateTreeNode) => {
actions?: A;
views?: V;
}): IModelType<S, T & A & V>;
state?: VS;
}): IModelType<S, T & A & V & VS>;
preProcessSnapshot(fn: (snapshot: any) => S): IModelType<S, T>;

@@ -82,0 +87,0 @@ }

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;
import { IStateTreeNode } from "../../index";
export declare abstract class BaseReferenceType<T> extends Type<string | number, T> {
protected readonly targetType: IType<any, T>;
readonly flags: TypeFlags;
constructor(targetType: IType<any, T>);
describe(): string;
isAssignableFrom(type: IType<any, any>): boolean;
isValidSnapshot(value: any, context: IContext): IValidationResult;
}
export declare class IdentifierReferenceType<T> extends BaseReferenceType<T> {
readonly shouldAttachNode: boolean;
constructor(targetType: IType<any, T>);
getValue(node: INode): any;

@@ -12,6 +18,17 @@ getSnapshot(node: INode): any;

reconcile(current: INode, newValue: any): INode;
isAssignableFrom(type: IType<any, any>): boolean;
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>;
export declare class CustomReferenceType<T> extends BaseReferenceType<T> {
private readonly options;
readonly shouldAttachNode: boolean;
constructor(targetType: IType<any, T>, options: ReferenceOptions<T>);
getValue(node: INode): T | undefined;
getSnapshot(node: INode): any;
instantiate(parent: INode | null, subpath: string, environment: any, snapshot: any): INode;
reconcile(current: INode, snapshot: any): INode;
}
export declare type ReferenceOptions<T> = {
get(identifier: string | number, parent: IStateTreeNode | null): T;
set(value: T, parent: IStateTreeNode | null): string | number;
};
export declare function reference<T>(factory: IType<any, T>, options?: ReferenceOptions<T>): IType<string | number, T>;
export declare function isReferenceType(type: any): type is BaseReferenceType<any>;
{
"name": "mobx-state-tree",
"version": "1.2.0",
"version": "1.2.1",
"description": "Opinionated, transactional, MobX powered state container",

@@ -5,0 +5,0 @@ "main": "dist/mobx-state-tree.js",

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

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc