@webqit/observer
Advanced tools
Comparing version 1.5.14 to 1.6.0
@@ -1,2 +0,2 @@ | ||
!function(e){var t={};function r(n){if(t[n])return t[n].exports;var s=t[n]={i:n,l:!1,exports:{}};return e[n].call(s.exports,s,s.exports,r),s.l=!0,s.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var s in e)r.d(n,s,function(t){return e[t]}.bind(null,s));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=0)}([function(e,t,r){"use strict";r.r(t);var n=function(e){return!Array.isArray(e)&&"object"==typeof e&&e},s=function(e){return typeof e};function i(e,...t){globalThis.WebQitInternalsRegistry||(globalThis.WebQitInternalsRegistry=new Map);var r,n,s=globalThis.WebQitInternalsRegistry.get(e);if(!s){if(s=new Map,!1===t[0])return s;globalThis.WebQitInternalsRegistry.set(e,s)}for(;r=t.shift();)if((n=s)&&!(s=s.get(r))){if(s=new Map,!1===t[0])return s;n.set(r,s)}return s}var a=function(e){return Array.isArray(e)},o=function(e){return"function"==typeof e},u=function(e){return null===e||""===e},l=function(e){return arguments.length&&(void 0===e||void 0===e)},c=function(e){return Array.isArray(e)||"object"==typeof e&&e||o(e)},f=function(e){return o(e)||e&&"[object function]"==={}.toString.call(e)},p=function(e){return e instanceof Number||"number"==typeof e},h=function(e){return p(e)||!0!==e&&!1!==e&&null!==e&&""!==e&&!isNaN(1*e)},g=function(e){return e instanceof String||"string"==typeof e&&null!==e},b=function(e,t=1){var r=0;e.forEach(e=>{r++});var n=e.slice(e.length-r,t);return arguments.length>1?n:n[0]},d=function(e,t=1){return arguments.length>1?b(e.slice().reverse(),t).reverse():b(e.slice().reverse())},m=function(e,...t){return t.forEach(t=>{e.indexOf(t)<0&&e.push(t)}),e},v=function(e,t){var r=[];return function(e,t){t=(t=t||Object.prototype)&&!a(t)?[t]:t;var r=[];for(e=e;e&&(!t||t.indexOf(e)<0)&&"default"!==e.name;)r.push(e),e=e?Object.getPrototypeOf(e):null;return r}(e,t).forEach(e=>{m(r,...Object.getOwnPropertyNames(e))}),r};function y(e,t,r=!1,s=!1,i=!1){var o=0,u=e.shift();if((h(u)||!0===u||!1===u)&&(o=u,u=e.shift()),!e.length)throw new Error("_merge() requires two or more array/objects.");return e.forEach((e,l)=>{(c(e)||f(e))&&(r?v(e):Object.getOwnPropertyNames(e)).forEach(c=>{if(t(c,u,e,l)){var f=u[c],p=e[c];if((a(f)&&a(p)||n(f)&&n(p))&&(!0===o||o>0))u[c]=a(f)&&a(p)?[]:{},y([h(o)?o-1:o,u[c],f,p],t,r,s,i);else if(a(u)&&a(e))s?u[c]=p:u.push(p);else try{i?Object.defineProperty(u,c,Object.getOwnPropertyDescriptor(e,c)):u[c]=e[c]}catch(e){}}})}),u}var j=function(e,t){var r=void 0;return c(e)&&Object.keys(e).forEach((n,s)=>{!1!==r&&(r=t(h(n)?parseFloat(n):n,e[n],s))}),r};new Map;var w=function(...e){return y(e,(e,t,r)=>!0,!1,!1,!1)};function O(e,t,r=null,n=!1){return t.length>e.length?-1:("number"==typeof r?n?e.slice(0,r+1+(r<0?e.length:0)):e.slice(r):e).reduce((e,r,s)=>{var[i,a,o]=e;if(!n&&i>-1)return[i,a,o];var u=o+1,l=r===t[u]?0===u?[s,0]:[a,u]:[-1,-1];return l[1]===t.length-1&&(l[1]=-1,l[0]>-1)?[l[0]].concat(l):[i].concat(l)},[-1,-1,-1])[0]+(n||"number"!=typeof r?0:r>-1?r:e.length-r)}function P(e,t,r=null,n=!1){var s=O(e,t,r,n);return-1===s?[]:e.slice(s+t.length)}var E=function(e,t=!0){return a(e)?e:!t&&n(e)?[e]:!1!==e&&0!==e&&function(e){return u(e)||l(e)||!1===e||0===e||c(e)&&!Object.keys(e).length}(e)?[]:function(e){return!g(e)&&!l(e.length)}(e)?Array.prototype.slice.call(e):n(e)?Object.values(e):[e]};function _(e,t,r=null){return r||!1!==r&&e.dotSafe&&t.dotSafe?e.join(".")===t.join("."):e.length===t.length&&e.reduce((e,r,n)=>e&&r===t[n],!0)}var S=function(e,t,r=null){return a(t)?e.filter(e=>r?t.filter(t=>r(e,t)).length:-1!==t.indexOf(e)):[]};function F(e,t,r=null){return r||!1!==r&&e.dotSafe&&t.dotSafe?(e.join(".")+".").startsWith(t.join(".")+"."):t.reduce((t,r,n)=>t&&r===e[n],!0)}function x(e){return(T(e)?e:E(e).length?[e]:[]).reduce((e,t)=>e.concat([E(t)]),[]).map(e=>D.resolve(e))}class D extends Array{static resolve(e){return e.every(e=>!(e+"").includes("."))?(new D).concat(e):e}get dotSafe(){return!0}}function T(e){return E(e).reduce((e,t)=>e||a(t),!1)}function z(e){return e.filter(e=>e||0===e).length!==e.length}class I{constructor(e){this.subject=e,this.fireables=[],this.currentlyFiring=[]}add(e){return this.fireables.push(e),e}remove(e){this.fireables=this.fireables.filter(t=>t!==e)}removeMatches(e){this.match(e).forEach(e=>{this.fireables=this.fireables.filter(t=>t!==e)})}match(e){return this.fireables.filter(t=>{var r=x(t.filter),n=E((t.params||{}).tags),s=x(e.filter),i=E((e.params||{}).tags);return(!e.originalHandler||t.handler===e.originalHandler)&&(!s.length||_(s,r))&&(!i.length||i.length===n.length&&S(n,i).length===i.length)})}static getFirebase(e,t=!0,r=null){var n=this;if(r&&this._namespaces&&this._namespaces.has(r)&&(n=this._namespaces.get(r)),!c(e))throw new Error('Subject must be of type object; "'+s(e)+'" given!');return!i(e,"firebases").has(n)&&t&&i(e,"firebases").set(n,new n(e)),i(e,"firebases").get(n)}static namespace(e,t=null){if(this._namespaces||(this._namespaces=new Map),1===arguments.length)return this._namespaces.get(e);if(!(t.prototype instanceof this))throw new Error(`The implementation of the namespace ${this.name}.${e} must be a subclass of ${this.name}.`);this._namespaces.set(e,t)}}class V{constructor(e,t){this.subject=e,this.handler=t.handler,this.filter=t.filter,this.params=t.params}disconnect(){this.disconnected=!0}}var k=function(e,t=[],r=!0){var n=0;return h(arguments[0])&&c(arguments[1])&&(n=arguments[0],e=arguments[1],t=arguments[2]||[]),y([n,{},e],(e,r,n)=>f(t)?t(e):!a(t)||!t.length||t.indexOf(e)>-1,!1,!1,r)};class M{constructor(e,t=!1){this._={},this._.target=e,this._.cancellable=t,this._.propagationStopped=!1,this._.defaultPrevented=!1,this._.promisesInstance=null,this._.promises=[]}get target(){return this._.target}get cancellable(){return this._.cancellable}stopPropagation(){this._.propagationStopped=!0}get propagationStopped(){return this._.propagationStopped}preventDefault(){this._.defaultPrevented=!0}get defaultPrevented(){return this._.defaultPrevented}waitUntil(e){e instanceof Promise&&(this._.promises.push(e),this._.promisesInstance=null)}get promises(){return!this._.promisesInstance&&this._.promises.length&&(this._.promisesInstance=Promise.all(this._.promises)),this._.promisesInstance}respondWith(e){var t,r=n(e)&&!l(e.propagationStopped)&&!l(e.defaultPrevented);!1===e||r&&e.propagationStopped?this.stopPropagation():!1===e||r&&e.defaultPrevented?this.preventDefault():(e instanceof Promise&&(t=e)||r&&(t=e.promises))&&this.waitUntil(t)}}class W extends V{constructor(e,t){if(super(e,t),this.filters2D=x(this.filter),this.filtersIsOriginally2D=T(this.filter),this.filtersIsDynamic=this.filters2D.filter(e=>z(E(e))).length>0,this.filtersIsDynamic&&this.filters2D.length>1)throw new Error('Only one "Dynamic Filter" must be observed at a time! "'+this.filters2D.map(e=>"["+e.join(", ")+"]").join(", ")+'" have been bound together.')}fire(e){if(this.disconnected||this.params.type&&(t=e=>this.params.type===e.type,!e.reduce((e,r,n)=>e||t(r,n),!1)))return;var t;const r=e=>!["set","def"].includes(e.type)||!this.params.diff||(f(this.params.diff)?this.params.diff(e.value,e.oldValue):e.value!==e.oldValue);var s=new M(this.subject);if(this.filters2D.length){var i=e.filter(e=>this.filters2D.filter((t,n)=>{var s=t.slice();return this.filtersIsDynamic&&e.path.forEach((e,t)=>{s[t]=s[t]||0===s[t]?s[t]:e}),(!this.filtersIsDynamic||!z(s))&&r(e)&&(!this.params.subtree&&_(s,e.path)||this.params.suptree&&F(s,e.path)&&(!h(this.params.suptree)||P(s,e.path).length<=this.params.suptree)||this.params.subtree&&e.path.length>=s.length&&F(e.path,s)&&(!h(this.params.subtree)||P(e.path,s).length<=this.params.subtree))}).length);if(i.length)if(this.filtersIsOriginally2D||this.params.subtree){var a=i;n(this.filter)&&(a={...this.filter},i.forEach((e,t)=>{a[e.name]=e})),s.respondWith(this.handler(a,s))}else i.forEach((e,t)=>{s.respondWith(this.handler(e,s))})}else(this.params.subtree||e.filter(e=>_(e.path,[e.name])).length===e.length)&&e.filter(e=>r(e)).length&&s.respondWith(this.handler(e,s));return s}}class A{constructor(e,t){if(this.subject=e,t.originalSubject||(this.originalSubject=e),!("type"in t))throw new Error("Mutation type must be given in definition!");if(!("name"in t))throw new Error("Property name must be given in definition!");j(t,(e,t)=>{"path"===e&&(t=D.resolve(t)),Object.defineProperty(this,e,{value:t,enumerable:!0})}),this.path||Object.defineProperty(this,"path",{value:D.resolve([t.name]),enumerable:!0}),Object.seal(this)}}class R extends I{constructor(e){super(e),this.buffers=[]}add(e){return super.add(new W(this.subject,e))}fire(e,t){var r=new M(this.subject,t);return e=E(e,!1).map(e=>e instanceof A?e:new A(this.subject,e)),this.buffers.length?(d(this.buffers)(e),r):(this.currentlyFiring.filter(t=>e.filter(e=>t.type===e.type&&t.name===e.name).length).length,this.fireables.forEach(n=>{if(r.propagationStopped&&t)return r;r.respondWith(n.fire(e))}),r)}}class C extends V{fire(e,t,r){return this.disconnected||this.filter&&!S(E(this.filter),[e.type]).length?t(...Array.prototype.slice.call(arguments,2)):this.handler(e,r,t)}}class H{constructor(e,t){if(this.subject=e,!t.type)throw new Error("Action type must be given in definition!");j(t,(e,t)=>{Object.defineProperty(this,e,{value:t,enumerable:!0})}),Object.seal(this)}}class Q extends I{add(e){return super.add(new C(this.subject,e))}fire(e,t=null){if(e instanceof H||(e=new H(this.subject,e)),this.currentlyFiring.filter(t=>t.type===e.type&&t.name===e.name).length)return t?t():void 0;this.currentlyFiring.push(e);const r=(n,...s)=>{var i=this.fireables[n];return i?i.fire(e,(...e)=>r(n+1,...e),...s):t?t(...s):s[0]};var n=r(0);return this.currentlyFiring.pop(),n}}var q=function(e){return i(e,!1).get(e)||e},B=function(e,t,r={}){if(!t||!c(t))throw new Error("Target must be of type object!");t=q(t);var n,s=function(r){return arguments.length?r:e?Reflect.ownKeys(t):Object.keys(t)};return(n=Q.getFirebase(t,!1,r.namespace))?n.fire({type:e?"ownKeys":"keys"},s)||[]:s()},U=function(e,t={}){return B(!1,...arguments)},N=function(e,t,r={}){if(!e||!c(e))throw new Error("Target must be of type object!");e=q(e);var n=E(t),s=n.map(t=>{var s,a=function(r){return arguments.length?r:i(e,"accessorizedProps").has(t)&&i(e,"accessorizedProps").get(t).touch(!0)?i(e,"accessorizedProps").get(t).get():e[t]};return(s=Q.getFirebase(e,!0,r.namespace))?s.fire({type:"get",name:t,related:n},a):a()});return a()?s:s[0]},G=function(e,t,r=null,n={}){if(!(e=q(e))||!c(e))throw new Error('Observable subjects must be of type object; "'+s(e)+'" given!');if(f(t)&&(n=arguments.length>2?r:{},r=t,t=null),!f(r))throw new Error('Handler must be a function; "'+s(r)+'" given!');var i,a=R.getFirebase(e,!0,n.namespace),o={filter:t,handler:r,params:n};if((o.filter||"*"===o.params.subtree||o.params.subtree&&L(e))&&J(e,o.filter,o.params.subtree,n.namespace),o.params.unique&&(i=a.match({filter:t,params:n})).length){if("replace"!==o.params.unique)return i[0];a.remove(i[0])}return a.add(o)},K=function(e,t,r,s=null,i={}){var a;if(e!==r&&(G(r,(r,n)=>{if(a=R.getFirebase(e,!1,i.namespace)){var s=r.map(r=>{var n=r;do{if(n.subject===e)return}while(n=n.src);var s={};return j(r,(e,t)=>{"subject"!==e&&"name"!==e&&"path"!==e&&"src"!==e&&(s[e]=t)}),s.name=t,s.path=[t].concat(r.path),s.originalSubject=r.originalSubject,s.src=r,new A(e,s)}).filter(e=>e);if(s.length)return a.fire(s,n.cancellable)}},{subtree:!0,...i,unique:!0,tags:[$,t,e]}),n(s)&&(a=R.getFirebase(e,!1,i.namespace)))){var o=w({name:t,type:"set",value:r,related:[t]},s);let e=a.fire(o,i.cancellable);if(i.eventTypeReturn)return e}};const $={};function J(e,t=null,r=!1,n=null){if(!e||!c(e))throw new Error("Target must be of type object!");var s=R.getFirebase(e,!0,n);if(s&&!s.build){s.build=r;var i=x(t),a=!i.length||i.filter(e=>!e[0]&&0!==e[0]).length?U(e):i.map(e=>e[0]),o=i.length?i.map(e=>e.slice(1)).filter(e=>e.length):null;s.subBuild=o&&o.length?o:null,a.forEach(t=>{var i=N(e,t);try{c(i)&&(K(e,t,i,null,params),(s.subBuild&&L(i)||(_isFunction(r)?r(i):r&&L(i)))&&J(i,s.subBuild,r,n))}catch(e){}})}}const L=e=>(e instanceof Object||e instanceof Array||e instanceof Function)&&("undefined"==typeof window||e!==window);var X=function(e,t,r=null,n={}){if(!(e=q(e))||!c(e))throw new Error('Observable subjects must be of type object; "'+s(e)+'" given!');if(f(t)&&(n=arguments.length>2?r:{},r=t,t=null),r&&!f(r))throw new Error('Handler must be a function; "'+s(r)+'" given!');var i;if(i=R.getFirebase(e,!1,n.namespace))return i.removeMatches({filter:t,originalHandler:r,params:n})},Y=function(e,t,r,s=null,i={}){var a;if(X(r,null,null,{...i,tags:[$,t,e]}),n(s)&&(a=R.getFirebase(e,!1,i.namespace))){var o=w({name:t,type:"del",oldValue:r,related:[t]},s);a.fire(o,i.cancellable)}},Z=function(e,t,r={}){if(!e||!c(e))throw new Error("Target must be of type object!");e=q(e);var n,s=function(r){return arguments.length?r:t in e};return(n=Q.getFirebase(e,!1,r.namespace))?n.fire({type:"has",name:t},s):s()},ee=function(e,t,r,s=null,o={}){if(!t||!c(t))throw new Error("Target must be of type object!");n(r)&&(o=s||{},s=null),t=q(t);var u=Q.getFirebase(t,!1,o.namespace),l=R.getFirebase(t,!1,o.namespace);const f=(r,n,s,a)=>{var f,p="set";e&&(p="definition",n=(f=n||{}).value);var h,g=!1;Z(t,r,o)&&(g=!0,h=N(t,r,o));var b={name:r,type:p,value:n,related:s,detail:a,isUpdate:g,oldValue:h},d=function(e){if(arguments.length&&(f?f=e:n=e),f){if(i(t,"accessorizedProps",!1).has(r)&&!i(t,"accessorizedProps").get(r).restore())return!1;Object.defineProperty(t,r,f)}else if(i(t,"accessorizedProps",!1).has(r))return i(t,"accessorizedProps").get(r).set(n);return t[r]=n,!0};if(u){var m=f?{type:"defineProperty",name:r,descriptor:f,related:s,detail:a,isUpdate:g,oldValue:h}:{type:"set",name:r,value:n,related:s,detail:a,isUpdate:g,oldValue:h};b.success=u.fire(m,d)}else b.success=d();return b.success&&b.value!==b.oldValue&&(c(b.oldValue)&&Y(t,r,b.oldValue,null,o),c(b.value)&&(K(t,r,b.value,null,o),l&&(l.subBuild||l.build&&L(b.value))&&J(b.value,l.subBuild,l.build,o.namespace))),b};var h,b=[];a(r)||(g(r)||p(r))&&(h=E(r))?b=h.map(e=>f(e,s,h,o.detail)):n(r)&&(h=Object.keys(r))&&(b=h.map(e=>f(e,r[e],h,o.detail)));var d,m=b.filter(e=>!1!==e.success);return l?(d=l.fire(m,o.cancellable)).successCount=m.length:o.eventTypeReturn&&(d=new M(t)),o.eventTypeReturn?d:m.length>0},te=function(e,t,r=null,n={}){return ee(!1,...arguments)},re=function(e,t,r={}){if(!e||!c(e))throw new Error("Target must be of type object!");e=q(e);var n,s,a=E(t),o=a.map(t=>{var n;Z(e,t,r)&&(n=N(e,t,r));var s,o={name:t,type:"deletion",related:a,detail:r.detail,oldValue:n},u=function(r){return arguments.length?r:!(i(e,"accessorizedProps",!1).has(t)&&!i(e,"accessorizedProps").get(t).restore())&&(delete e[t],!0)};return(s=Q.getFirebase(e,!1,r.namespace))?o.success=s.fire({type:"deleteProperty",name:t,oldValue:n,related:a},u):o.success=u(),o.success&&c(o.oldValue)&&Y(e,t,o.oldValue,null,r),o}).filter(e=>!1!==e.success);return(n=R.getFirebase(e,!1,r.namespace))?(s=n.fire(o,r.cancellable)).successCount=o.length:r.eventTypeReturn&&(s=new M(e)),r.eventTypeReturn?s:o.length>0},ne=function(e,t,r=null,n={}){return ee(!0,...arguments)},se=function(e,t={}){return B(!0,...arguments)};var ie={set:te,get:N,has:Z,deleteProperty:re,del:re,defineProperty:ne,def:ne,ownKeys:se,keys:U,accessorize:function(e,t=[],r={}){r=n(t)?t:r;var s=(1===arguments.length?Object.keys(e):E(t)).map(t=>{if(i(e,"accessorizedProps").has(t)&&i(e,"accessorizedProps").get(t).touch(!0))return!1;const n=()=>{for(var r,n=e;!r&&(n=Object.getPrototypeOf(n));)r=Object.getOwnPropertyDescriptor(n,t);return r};var s,a,o=Object.getOwnPropertyDescriptor(e,t);o||(s={writable:!0,enumerable:!(t in e),configurable:!1!==r.configurable});var u={...o||s};"value"in u&&delete u.value,"writable"in u&&delete u.writable,u.get=()=>{if(l.ongoingGets.length)return l.get();l.ongoingGets.push(1);var n=N(e,t,r);return l.ongoingGets.pop(),n},u.set=n=>{if(l.ongoingSets.length)return l.set(n);l.ongoingSets.push(1);var s=te(e,t,n,r);return l.ongoingSets.pop(),s};var l={ongoingGets:[],ongoingSets:[],get:function(){var t=o;return t||(t=a?s:n()||s),t.get?t.get.call(e):t.value},set:function(t){var r=o;return r||(a?r=s:(r=n())?"value"in r&&(r=s,a=!0):(r=s,a=!0)),r.set||r.get?!!r.set&&r.set.call(e,t):(r.value=t,!0)},restore:function(){try{return this.intact()&&(o||a?Object.defineProperty(e,t,o||s):delete e[t],i(e,"accessorizedProps").delete(t)),!0}catch(e){}return!1},intact:function(){return(Object.getOwnPropertyDescriptor(e,t)||{}).get===u.get},touch:function(e=!1){return this.intact()||!!e&&!this.restore()}};try{return Object.defineProperty(e,t,u),i(e,"accessorizedProps").set(t,l),!0}catch(e){}return!1});return a(t)?s:s[0]},unaccessorize:function(e,t=[],r={}){r=n(t)?t:r;var s=(1===arguments.length?Object.keys(e):E(t)).map(t=>!i(e,"accessorizedProps",!1).has(t)||i(e,"accessorizedProps").get(t).restore());return a(t)?s:s[0]},proxy:function(e,t={}){if(!c(e))throw new Error('Object must be of type subject; "'+s(e)+'" given!');var r=new Proxy(e,{get:(e,n)=>{var s=N(e,n,t);return!1!==t.proxyAutoBinding&&f(s)&&!function(e){return o(e)&&/^class\s?/.test(Function.prototype.toString.call(e))}(s)?s.bind(r):s},set:(...e)=>(te(...e.concat(t)),!0),has:(...e)=>Z(...e.concat(t)),deleteProperty:(...e)=>(re(...e.concat(t)),!0),defineProperty:(...e)=>(ne(...e.concat(t)),!0),ownKeys:(...e)=>se(...e.concat(t))});return i(r).set(r,e),r},unproxy:q,observe:G,unobserve:X,intercept:function(e,t,r,n={}){if(e=q(e),!c(e))throw new Error('Object must be of type subject; "'+s(r)+'" given!');if(f(t)&&(n=arguments.length>2?r:{},r=t,t=null),!f(r))throw new Error('Callback must be a function; "'+s(r)+'" given!');var i,a=Q.getFirebase(e,!0,n.namespace),o={filter:t,handler:r,params:n};if(o.params.unique&&(i=a.match(o)).length){if("replace"!==o.params.unique)return i[0];a.remove(i[0])}return a.add(o)},unintercept:function(e,t,r=null,n={}){if(!(e=q(e))||!c(e))throw new Error('Object must be of type subject; "'+s(e)+'" given!');if(f(t)&&(n=arguments.length>2?r:{},r=t,t=null),r&&!f(r))throw new Error('Handler must be a function; "'+s(r)+'" given!');var i;if(i=Q.getFirebase(e,!1,n.namespace))return i.removeMatches({filter:t,originalHandler:r,params:n})},closure:function(e,...t){var r=t.map(e=>{if(e=q(e),!c(e))throw new Error("Target must be of type object!");return{subject:e,subjectCopy:a(e)?e.slice(0):k(e)}}),n=e(...t);const s=()=>{r.map(e=>{var t,r,n=Object.keys(e.subjectCopy),s=Object.keys(e.subject),i=[],a=(t=n.concat(s),t.filter((e,t,r)=>r.indexOf(e)===t)).map(t=>{if(e.subjectCopy[t]!==e.subject[t]){i.push(t);var r={name:t,related:i,buffered:!0};return s.includes(t)?(r.type="set",r.value=e.subject[t],n.includes(t)&&(r.isUpdate=!0)):r.type="del",n.includes(t)&&(r.oldValue=e.subjectCopy[t]),c(e.subjectCopy[t])&&Y(e.subject,t,e.subjectCopy[t]),c(e.subject[t])&&K(e.subject,t,e.subject[t]),r}}).filter(e=>e);if(a.length&&(r=R.getFirebase(e.subject,!1)))return r.fire(a)})};return n instanceof Promise?n.then(s):s(),n},build:J,link:K,unlink:Y,Observers:R,Interceptors:Q};window.WebQit||(window.WebQit={}),window.WebQit.Observer=ie}]); | ||
!function(e){var t={};function r(n){if(t[n])return t[n].exports;var s=t[n]={i:n,l:!1,exports:{}};return e[n].call(s.exports,s,s.exports,r),s.l=!0,s.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var s in e)r.d(n,s,function(t){return e[t]}.bind(null,s));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=0)}([function(e,t,r){"use strict";r.r(t);var n=function(e){return!Array.isArray(e)&&"object"==typeof e&&e},s=function(e){return typeof e};function i(e,...t){globalThis.WebQitInternalsRegistry||(globalThis.WebQitInternalsRegistry=new Map);var r,n,s=globalThis.WebQitInternalsRegistry.get(e);if(!s){if(s=new Map,!1===t[0])return s;globalThis.WebQitInternalsRegistry.set(e,s)}for(;r=t.shift();)if((n=s)&&!(s=s.get(r))){if(s=new Map,!1===t[0])return s;n.set(r,s)}return s}var a=function(e){return Array.isArray(e)},o=function(e){return"function"==typeof e},u=function(e){return null===e||""===e},l=function(e){return arguments.length&&(void 0===e||void 0===e)},c=function(e){return Array.isArray(e)||"object"==typeof e&&e||o(e)},f=function(e){return o(e)||e&&"[object function]"==={}.toString.call(e)},p=function(e){return e instanceof Number||"number"==typeof e},h=function(e){return p(e)||!0!==e&&!1!==e&&null!==e&&""!==e&&!isNaN(1*e)},g=function(e){return e instanceof String||"string"==typeof e&&null!==e},b=function(e,t=1){var r=0;e.forEach(e=>{r++});var n=e.slice(e.length-r,t);return arguments.length>1?n:n[0]},d=function(e,t=1){return arguments.length>1?b(e.slice().reverse(),t).reverse():b(e.slice().reverse())},m=function(e,...t){return t.forEach(t=>{e.indexOf(t)<0&&e.push(t)}),e},v=function(e,t){var r=[];return function(e,t){t=(t=t||Object.prototype)&&!a(t)?[t]:t;var r=[];for(e=e;e&&(!t||t.indexOf(e)<0)&&"default"!==e.name;)r.push(e),e=e?Object.getPrototypeOf(e):null;return r}(e,t).forEach(e=>{m(r,...Object.getOwnPropertyNames(e))}),r};function y(e,t,r=!1,s=!1,i=!1){var o=0,u=e.shift();if((h(u)||!0===u||!1===u)&&(o=u,u=e.shift()),!e.length)throw new Error("_merge() requires two or more array/objects.");return e.forEach((e,l)=>{(c(e)||f(e))&&(r?v(e):Object.getOwnPropertyNames(e)).forEach(c=>{if(t(c,u,e,l)){var f=u[c],p=e[c];if((a(f)&&a(p)||n(f)&&n(p))&&(!0===o||o>0))u[c]=a(f)&&a(p)?[]:{},y([h(o)?o-1:o,u[c],f,p],t,r,s,i);else if(a(u)&&a(e))s?u[c]=p:u.push(p);else try{i?Object.defineProperty(u,c,Object.getOwnPropertyDescriptor(e,c)):u[c]=e[c]}catch(e){}}})}),u}var j=function(e,t){var r=void 0;return c(e)&&Object.keys(e).forEach((n,s)=>{!1!==r&&(r=t(h(n)?parseFloat(n):n,e[n],s))}),r};new Map;var w=function(...e){return y(e,(e,t,r)=>!0,!1,!1,!1)};function O(e,t,r=null,n=!1){return t.length>e.length?-1:("number"==typeof r?n?e.slice(0,r+1+(r<0?e.length:0)):e.slice(r):e).reduce((e,r,s)=>{var[i,a,o]=e;if(!n&&i>-1)return[i,a,o];var u=o+1,l=r===t[u]?0===u?[s,0]:[a,u]:[-1,-1];return l[1]===t.length-1&&(l[1]=-1,l[0]>-1)?[l[0]].concat(l):[i].concat(l)},[-1,-1,-1])[0]+(n||"number"!=typeof r?0:r>-1?r:e.length-r)}function P(e,t,r=null,n=!1){var s=O(e,t,r,n);return-1===s?[]:e.slice(s+t.length)}var E=function(e,t=!0){return a(e)?e:!t&&n(e)?[e]:!1!==e&&0!==e&&function(e){return u(e)||l(e)||!1===e||0===e||c(e)&&!Object.keys(e).length}(e)?[]:function(e){return!g(e)&&!l(e.length)}(e)?Array.prototype.slice.call(e):n(e)?Object.values(e):[e]};function _(e,t,r=null){return r||!1!==r&&e.dotSafe&&t.dotSafe?e.join(".")===t.join("."):e.length===t.length&&e.reduce((e,r,n)=>e&&r===t[n],!0)}var S=function(e,t,r=null){return a(t)?e.filter(e=>r?t.filter(t=>r(e,t)).length:-1!==t.indexOf(e)):[]};function F(e,t,r=null){return r||!1!==r&&e.dotSafe&&t.dotSafe?(e.join(".")+".").startsWith(t.join(".")+"."):t.reduce((t,r,n)=>t&&r===e[n],!0)}function x(e){return(T(e)?e:E(e).length?[e]:[]).reduce((e,t)=>e.concat([E(t)]),[]).map(e=>D.resolve(e))}class D extends Array{static resolve(e){return e.every(e=>!(e+"").includes("."))?(new D).concat(e):e}get dotSafe(){return!0}}function T(e){return E(e).reduce((e,t)=>e||a(t),!1)}function z(e){return e.filter(e=>e||0===e).length!==e.length}class I{constructor(e){this.subject=e,this.fireables=[],this.currentlyFiring=[]}add(e){return this.fireables.push(e),e}remove(e){this.fireables=this.fireables.filter(t=>t!==e)}removeMatches(e){this.match(e).forEach(e=>{this.fireables=this.fireables.filter(t=>t!==e)})}match(e){return this.fireables.filter(t=>{var r=x(t.filter),n=E((t.params||{}).tags),s=x(e.filter),i=E((e.params||{}).tags);return(!e.originalHandler||t.handler===e.originalHandler)&&(!s.length||_(s,r))&&(!i.length||i.length===n.length&&S(n,i).length===i.length)})}static getFirebase(e,t=!0,r=null){var n=this;if(r&&this._namespaces&&this._namespaces.has(r)&&(n=this._namespaces.get(r)),!c(e))throw new Error('Subject must be of type object; "'+s(e)+'" given!');return!i(e,"firebases").has(n)&&t&&i(e,"firebases").set(n,new n(e)),i(e,"firebases").get(n)}static namespace(e,t=null){if(this._namespaces||(this._namespaces=new Map),1===arguments.length)return this._namespaces.get(e);if(!(t.prototype instanceof this))throw new Error(`The implementation of the namespace ${this.name}.${e} must be a subclass of ${this.name}.`);this._namespaces.set(e,t)}}class V{constructor(e,t){this.subject=e,this.handler=t.handler,this.filter=t.filter,this.params=t.params}disconnect(){this.disconnected=!0}}var k=function(e,t=[],r=!0){var n=0;return h(arguments[0])&&c(arguments[1])&&(n=arguments[0],e=arguments[1],t=arguments[2]||[]),y([n,{},e],(e,r,n)=>f(t)?t(e):!a(t)||!t.length||t.indexOf(e)>-1,!1,!1,r)};class M{constructor(e,t=!1){this._={},this._.target=e,this._.cancellable=t,this._.propagationStopped=!1,this._.defaultPrevented=!1,this._.promisesInstance=null,this._.promises=[]}get target(){return this._.target}get cancellable(){return this._.cancellable}stopPropagation(){this._.propagationStopped=!0}get propagationStopped(){return this._.propagationStopped}preventDefault(){this._.defaultPrevented=!0}get defaultPrevented(){return this._.defaultPrevented}waitUntil(e){e instanceof Promise&&(this._.promises.push(e),this._.promisesInstance=null)}get promises(){return!this._.promisesInstance&&this._.promises.length&&(this._.promisesInstance=Promise.all(this._.promises)),this._.promisesInstance}respondWith(e){var t,r=n(e)&&!l(e.propagationStopped)&&!l(e.defaultPrevented);!1===e||r&&e.propagationStopped?this.stopPropagation():!1===e||r&&e.defaultPrevented?this.preventDefault():(e instanceof Promise&&(t=e)||r&&(t=e.promises))&&this.waitUntil(t)}}class W extends V{constructor(e,t){if(super(e,t),this.filters2D=x(this.filter),this.filtersIsOriginally2D=T(this.filter),this.filtersIsDynamic=this.filters2D.filter(e=>z(E(e))).length>0,this.filtersIsDynamic&&this.filters2D.length>1)throw new Error('Only one "Dynamic Filter" must be observed at a time! "'+this.filters2D.map(e=>"["+e.join(", ")+"]").join(", ")+'" have been bound together.')}fire(e){if(this.disconnected||this.params.type&&(t=e=>this.params.type===e.type,!e.reduce((e,r,n)=>e||t(r,n),!1)))return;var t;const r=e=>!["set","def"].includes(e.type)||!this.params.diff||(f(this.params.diff)?this.params.diff(e.value,e.oldValue):e.value!==e.oldValue);var s=new M(this.subject);if(this.filters2D.length){var i=e.filter(e=>this.filters2D.filter((t,n)=>{var s=t.slice();return this.filtersIsDynamic&&e.path.forEach((e,t)=>{s[t]=s[t]||0===s[t]?s[t]:e}),(!this.filtersIsDynamic||!z(s))&&r(e)&&(!this.params.subtree&&_(s,e.path)||this.params.suptree&&F(s,e.path)&&(!h(this.params.suptree)||P(s,e.path).length<=this.params.suptree)||this.params.subtree&&e.path.length>=s.length&&F(e.path,s)&&(!h(this.params.subtree)||P(e.path,s).length<=this.params.subtree))}).length);if(i.length)if(this.filtersIsOriginally2D||this.params.subtree){var a=i;n(this.filter)&&(a={...this.filter},i.forEach((e,t)=>{a[e.name]=e})),s.respondWith(this.handler(a,s))}else i.forEach((e,t)=>{s.respondWith(this.handler(e,s))})}else(this.params.subtree||e.filter(e=>_(e.path,[e.name])).length===e.length)&&e.filter(e=>r(e)).length&&s.respondWith(this.handler(e,s));return s}}class A{constructor(e,t){if(this.subject=e,t.originalSubject||(this.originalSubject=e),!("type"in t))throw new Error("Mutation type must be given in definition!");if(!("name"in t))throw new Error("Property name must be given in definition!");j(t,(e,t)=>{"path"===e&&(t=D.resolve(t)),Object.defineProperty(this,e,{value:t,enumerable:!0})}),this.path||Object.defineProperty(this,"path",{value:D.resolve([t.name]),enumerable:!0}),Object.seal(this)}}class R extends I{constructor(e){super(e),this.buffers=[]}add(e){return super.add(new W(this.subject,e))}fire(e,t){var r=new M(this.subject,t);return e=E(e,!1).map(e=>e instanceof A?e:new A(this.subject,e)),this.buffers.length?(d(this.buffers)(e),r):(this.currentlyFiring.filter(t=>e.filter(e=>t.type===e.type&&t.name===e.name).length).length,this.fireables.forEach(n=>{if(r.propagationStopped&&t)return r;r.respondWith(n.fire(e))}),r)}}class C extends V{fire(e,t,r){return this.disconnected||this.filter&&!S(E(this.filter),[e.type]).length?t(...Array.prototype.slice.call(arguments,2)):this.handler(e,r,t)}}class H{constructor(e,t){if(this.subject=e,!t.type)throw new Error("Action type must be given in definition!");j(t,(e,t)=>{Object.defineProperty(this,e,{value:t,enumerable:!0})}),Object.seal(this)}}class Q extends I{add(e){return super.add(new C(this.subject,e))}fire(e,t=null){if(e instanceof H||(e=new H(this.subject,e)),this.currentlyFiring.filter(t=>t.type===e.type&&t.name===e.name).length)return t?t():void 0;this.currentlyFiring.push(e);const r=(n,...s)=>{var i=this.fireables[n];return i?i.fire(e,(...e)=>r(n+1,...e),...s):t?t(...s):s[0]};var n=r(0);return this.currentlyFiring.pop(),n}}var q=function(e){return i(e,!1).get(e)||e},B=function(e,t,r={}){if(!t||!c(t))throw new Error("Target must be of type object!");t=q(t);var n,s=function(r){return arguments.length?r:e?Reflect.ownKeys(t):Object.keys(t)};return(n=Q.getFirebase(t,!1,r.namespace))?n.fire({type:e?"ownKeys":"keys"},s)||[]:s()},U=function(e,t={}){return B(!1,...arguments)},N=function(e,t,r={}){if(!e||!c(e))throw new Error("Target must be of type object!");e=q(e);var n=E(t),s=n.map(t=>{var s,a=function(r){return arguments.length?r:i(e,"accessorizedProps").has(t)&&i(e,"accessorizedProps").get(t).touch(!0)?i(e,"accessorizedProps").get(t).get():e[t]};return(s=Q.getFirebase(e,!0,r.namespace))?s.fire({type:"get",name:t,related:n},a):a()});return a()?s:s[0]},G=function(e,t,r=null,n={}){if(!(e=q(e))||!c(e))throw new Error('Observable subjects must be of type object; "'+s(e)+'" given!');if(f(t)&&(n=arguments.length>2?r:{},r=t,t=null),!f(r))throw new Error('Handler must be a function; "'+s(r)+'" given!');var i,a=R.getFirebase(e,!0,n.namespace),o={filter:t,handler:r,params:n};if((o.filter||"*"===o.params.subtree||o.params.subtree&&L(e))&&J(e,o.filter,o.params.subtree,n.namespace),o.params.unique&&(i=a.match({filter:t,params:n})).length){if("replace"!==o.params.unique)return i[0];a.remove(i[0])}return a.add(o)},K=function(e,t,r,s=null,i={}){var a;if(e!==r&&(G(r,(r,n)=>{if(a=R.getFirebase(e,!1,i.namespace)){var s=r.map(r=>{var n=r;do{if(n.subject===e)return}while(n=n.src);var s={};return j(r,(e,t)=>{"subject"!==e&&"name"!==e&&"path"!==e&&"src"!==e&&(s[e]=t)}),s.name=t,s.path=[t].concat(r.path),s.originalSubject=r.originalSubject,s.src=r,new A(e,s)}).filter(e=>e);if(s.length)return a.fire(s,n.cancellable)}},{subtree:!0,...i,unique:!0,tags:[$,t,e]}),n(s)&&(a=R.getFirebase(e,!1,i.namespace)))){var o=w({name:t,type:"set",value:r,related:[t]},s);let e=a.fire(o,i.cancellable);if(i.eventTypeReturn)return e}};const $={};function J(e,t=null,r=!1,n=null){if(!e||!c(e))throw new Error("Target must be of type object!");var s=R.getFirebase(e,!0,n);if(s&&!s.build){s.build=r;var i=x(t),a=!i.length||i.filter(e=>!e[0]&&0!==e[0]).length?U(e):i.map(e=>e[0]),o=i.length?i.map(e=>e.slice(1)).filter(e=>e.length):null;s.subBuild=o&&o.length?o:null,a.forEach(t=>{var i=N(e,t);try{c(i)&&(K(e,t,i,null,params),(s.subBuild&&L(i)||(_isFunction(r)?r(i):r&&L(i)))&&J(i,s.subBuild,r,n))}catch(e){}})}}const L=e=>(e instanceof Object||e instanceof Array||e instanceof Function)&&("undefined"==typeof window||e!==window);var X=function(e,t,r=null,n={}){if(!(e=q(e))||!c(e))throw new Error('Observable subjects must be of type object; "'+s(e)+'" given!');if(f(t)&&(n=arguments.length>2?r:{},r=t,t=null),r&&!f(r))throw new Error('Handler must be a function; "'+s(r)+'" given!');var i;if(i=R.getFirebase(e,!1,n.namespace))return i.removeMatches({filter:t,originalHandler:r,params:n})},Y=function(e,t,r,s=null,i={}){var a;if(X(r,null,null,{...i,tags:[$,t,e]}),n(s)&&(a=R.getFirebase(e,!1,i.namespace))){var o=w({name:t,type:"del",oldValue:r,related:[t]},s);a.fire(o,i.cancellable)}},Z=function(e,t,r={}){if(!e||!c(e))throw new Error("Target must be of type object!");e=q(e);var n,s=function(r){return arguments.length?r:t in e};return(n=Q.getFirebase(e,!1,r.namespace))?n.fire({type:"has",name:t},s):s()},ee=function(e,t,r,s=null,o={}){if(!t||!c(t))throw new Error("Target must be of type object!");n(r)&&(o=s||{},s=null),t=q(t);var u=Q.getFirebase(t,!1,o.namespace),l=R.getFirebase(t,!1,o.namespace);const f=(r,n,s,a)=>{var f,p="set";e&&(p="defineProperty",n=(f=n||{}).value);var h,g=!1;Z(t,r,o)&&(g=!0,h=N(t,r,o));var b={name:r,type:p,value:n,related:s,detail:a,isUpdate:g,oldValue:h},d=function(e){if(arguments.length&&(f?f=e:n=e),f){if(i(t,"accessorizedProps",!1).has(r)&&!i(t,"accessorizedProps").get(r).restore())return!1;Object.defineProperty(t,r,f)}else if(i(t,"accessorizedProps",!1).has(r))return i(t,"accessorizedProps").get(r).set(n);return t[r]=n,!0};if(u){var m=f?{type:"defineProperty",name:r,descriptor:f,related:s,detail:a,isUpdate:g,oldValue:h}:{type:"set",name:r,value:n,related:s,detail:a,isUpdate:g,oldValue:h};b.success=u.fire(m,d)}else b.success=d();return b.success&&b.value!==b.oldValue&&(c(b.oldValue)&&Y(t,r,b.oldValue,null,o),c(b.value)&&(K(t,r,b.value,null,o),l&&(l.subBuild||l.build&&L(b.value))&&J(b.value,l.subBuild,l.build,o.namespace))),b};var h,b=[];a(r)||(g(r)||p(r))&&(h=E(r))?b=h.map(e=>f(e,s,h,o.detail)):n(r)&&(h=Object.keys(r))&&(b=h.map(e=>f(e,r[e],h,o.detail)));var d,m=b.filter(e=>!1!==e.success);return l?(d=l.fire(m,o.cancellable)).successCount=m.length:o.eventTypeReturn&&(d=new M(t)),o.eventTypeReturn?d:m.length>0},te=function(e,t,r=null,n={}){return ee(!1,...arguments)},re=function(e,t,r={}){if(!e||!c(e))throw new Error("Target must be of type object!");e=q(e);var n,s,a=E(t),o=a.map(t=>{var n;Z(e,t,r)&&(n=N(e,t,r));var s,o={name:t,type:"deleteProperty",related:a,detail:r.detail,oldValue:n},u=function(r){return arguments.length?r:!(i(e,"accessorizedProps",!1).has(t)&&!i(e,"accessorizedProps").get(t).restore())&&(delete e[t],!0)};return(s=Q.getFirebase(e,!1,r.namespace))?o.success=s.fire({type:"deleteProperty",name:t,oldValue:n,related:a},u):o.success=u(),o.success&&c(o.oldValue)&&Y(e,t,o.oldValue,null,r),o}).filter(e=>!1!==e.success);return(n=R.getFirebase(e,!1,r.namespace))?(s=n.fire(o,r.cancellable)).successCount=o.length:r.eventTypeReturn&&(s=new M(e)),r.eventTypeReturn?s:o.length>0},ne=function(e,t,r=null,n={}){return ee(!0,...arguments)},se=function(e,t={}){return B(!0,...arguments)};var ie={set:te,get:N,has:Z,deleteProperty:re,del:re,defineProperty:ne,def:ne,ownKeys:se,keys:U,accessorize:function(e,t=[],r={}){r=n(t)?t:r;var s=(1===arguments.length?Object.keys(e):E(t)).map(t=>{if(i(e,"accessorizedProps").has(t)&&i(e,"accessorizedProps").get(t).touch(!0))return!1;const n=()=>{for(var r,n=e;!r&&(n=Object.getPrototypeOf(n));)r=Object.getOwnPropertyDescriptor(n,t);return r};var s,a,o=Object.getOwnPropertyDescriptor(e,t);o||(s={writable:!0,enumerable:!(t in e),configurable:!1!==r.configurable});var u={...o||s};"value"in u&&delete u.value,"writable"in u&&delete u.writable,u.get=()=>{if(l.ongoingGets.length)return l.get();l.ongoingGets.push(1);var n=N(e,t,r);return l.ongoingGets.pop(),n},u.set=n=>{if(l.ongoingSets.length)return l.set(n);l.ongoingSets.push(1);var s=te(e,t,n,r);return l.ongoingSets.pop(),s};var l={ongoingGets:[],ongoingSets:[],get:function(){var t=o;return t||(t=a?s:n()||s),t.get?t.get.call(e):t.value},set:function(t){var r=o;return r||(a?r=s:(r=n())?"value"in r&&(r=s,a=!0):(r=s,a=!0)),r.set||r.get?!!r.set&&r.set.call(e,t):(r.value=t,!0)},restore:function(){try{return this.intact()&&(o||a?Object.defineProperty(e,t,o||s):delete e[t],i(e,"accessorizedProps").delete(t)),!0}catch(e){}return!1},intact:function(){return(Object.getOwnPropertyDescriptor(e,t)||{}).get===u.get},touch:function(e=!1){return this.intact()||!!e&&!this.restore()}};try{return Object.defineProperty(e,t,u),i(e,"accessorizedProps").set(t,l),!0}catch(e){}return!1});return a(t)?s:s[0]},unaccessorize:function(e,t=[],r={}){r=n(t)?t:r;var s=(1===arguments.length?Object.keys(e):E(t)).map(t=>!i(e,"accessorizedProps",!1).has(t)||i(e,"accessorizedProps").get(t).restore());return a(t)?s:s[0]},proxy:function(e,t={},r={}){if(!c(e))throw new Error('Object must be of type subject; "'+s(e)+'" given!');var n=new Proxy(e,{...t,get:(e,t)=>{var s=N(e,t,r);return!1!==r.proxyAutoBinding&&f(s)&&!function(e){return o(e)&&/^class\s?/.test(Function.prototype.toString.call(e))}(s)?s.bind(n):s},set:(...e)=>(te(...e.concat(r)),!0),has:(...e)=>Z(...e.concat(r)),deleteProperty:(...e)=>(re(...e.concat(r)),!0),defineProperty:(...e)=>(ne(...e.concat(r)),!0),ownKeys:(...e)=>se(...e.concat(r))});return i(n).set(n,e),n},unproxy:q,observe:G,unobserve:X,intercept:function(e,t,r,n={}){if(e=q(e),!c(e))throw new Error('Object must be of type subject; "'+s(r)+'" given!');if(f(t)&&(n=arguments.length>2?r:{},r=t,t=null),!f(r))throw new Error('Callback must be a function; "'+s(r)+'" given!');var i,a=Q.getFirebase(e,!0,n.namespace),o={filter:t,handler:r,params:n};if(o.params.unique&&(i=a.match(o)).length){if("replace"!==o.params.unique)return i[0];a.remove(i[0])}return a.add(o)},unintercept:function(e,t,r=null,n={}){if(!(e=q(e))||!c(e))throw new Error('Object must be of type subject; "'+s(e)+'" given!');if(f(t)&&(n=arguments.length>2?r:{},r=t,t=null),r&&!f(r))throw new Error('Handler must be a function; "'+s(r)+'" given!');var i;if(i=Q.getFirebase(e,!1,n.namespace))return i.removeMatches({filter:t,originalHandler:r,params:n})},closure:function(e,...t){var r=t.map(e=>{if(e=q(e),!c(e))throw new Error("Target must be of type object!");return{subject:e,subjectCopy:a(e)?e.slice(0):k(e)}}),n=e(...t);const s=()=>{r.map(e=>{var t,r,n=Object.keys(e.subjectCopy),s=Object.keys(e.subject),i=[],a=(t=n.concat(s),t.filter((e,t,r)=>r.indexOf(e)===t)).map(t=>{if(e.subjectCopy[t]!==e.subject[t]){i.push(t);var r={name:t,related:i,buffered:!0};return s.includes(t)?(r.type="set",r.value=e.subject[t],n.includes(t)&&(r.isUpdate=!0)):r.type="del",n.includes(t)&&(r.oldValue=e.subjectCopy[t]),c(e.subjectCopy[t])&&Y(e.subject,t,e.subjectCopy[t]),c(e.subject[t])&&K(e.subject,t,e.subject[t]),r}}).filter(e=>e);if(a.length&&(r=R.getFirebase(e.subject,!1)))return r.fire(a)})};return n instanceof Promise?n.then(s):s(),n},build:J,link:K,unlink:Y,Observers:R,Interceptors:Q};window.WebQit||(window.WebQit={}),window.WebQit.Observer=ie}]); | ||
//# sourceMappingURL=main.js.map |
@@ -15,3 +15,3 @@ { | ||
"homepage": "https://webqit.io/tooling/observer", | ||
"version": "1.5.14", | ||
"version": "1.6.0", | ||
"license": "MIT", | ||
@@ -18,0 +18,0 @@ "repository": { |
@@ -48,3 +48,3 @@ | ||
if (define) { | ||
type = 'definition'; | ||
type = 'defineProperty'; | ||
descriptor = value || {}; | ||
@@ -61,3 +61,3 @@ value = descriptor.value; | ||
var e = { | ||
name:key, | ||
name: key, | ||
type, | ||
@@ -64,0 +64,0 @@ value, |
@@ -40,3 +40,3 @@ | ||
name: key, | ||
type: 'deletion', | ||
type: 'deleteProperty', | ||
related: _keys, | ||
@@ -43,0 +43,0 @@ detail: params.detail, |
@@ -20,8 +20,9 @@ | ||
* | ||
* @param object|array subject | ||
* @param object params | ||
* @param Object|Array subject | ||
* @param Object trapPatch | ||
* @param Object params | ||
* | ||
* @return Proxy | ||
*/ | ||
export default function(subject, params = {}) { | ||
export default function(subject, trapPatch = {}, params = {}) { | ||
if (!_isTypeObject(subject)) { | ||
@@ -31,2 +32,3 @@ throw new Error('Object must be of type subject; "' + _getType(subject) + '" given!'); | ||
var proxy = new Proxy(subject, { | ||
...trapPatch, | ||
get: (subject, key) => { | ||
@@ -33,0 +35,0 @@ var val = _get(subject, key, params); |
@@ -18,301 +18,301 @@ | ||
describe(`Observe all changes.`, function() { | ||
describe(`Observe all changes.`, function() { | ||
it(`Should recieve an event of one change on setting one prop.`, function() { | ||
var obj = {}, _changes; | ||
// ----- | ||
observe(obj, changes => { | ||
_changes = changes; | ||
it(`Should recieve an event of one change on setting one prop.`, function() { | ||
var obj = {}, _changes; | ||
// ----- | ||
observe(obj, changes => { | ||
_changes = changes; | ||
}); | ||
// ----- | ||
set(obj, { | ||
key1: 'value1', | ||
}); | ||
// ----- | ||
expect(_changes).to.be.an('array').with.length(1); | ||
}); | ||
// ----- | ||
set(obj, { | ||
key1: 'value1', | ||
it(`Should recieve an event of two changes on batch-setting two props.`, function() { | ||
var obj = {}, _changes; | ||
// ----- | ||
observe(obj, changes => { | ||
_changes = changes; | ||
}); | ||
// ----- | ||
set(obj, { | ||
key1: 'value1', | ||
key2: 'value2', | ||
}); | ||
// ----- | ||
expect(_changes).to.be.an('array').with.length(2); | ||
}); | ||
// ----- | ||
expect(_changes).to.be.an('array').with.length(1); | ||
}); | ||
it(`Should recieve an event of two changes on batch-setting two props.`, function() { | ||
var obj = {}, _changes; | ||
// ----- | ||
observe(obj, changes => { | ||
_changes = changes; | ||
}); | ||
// ----- | ||
set(obj, { | ||
key1: 'value1', | ||
key2: 'value2', | ||
}); | ||
// ----- | ||
expect(_changes).to.be.an('array').with.length(2); | ||
}); | ||
}); | ||
describe(`Observe with namespaces.`, function() { | ||
describe(`Observe with namespaces.`, function() { | ||
var obj = {}, | ||
ObserversCustomAddMethodCalled = false, | ||
InterceptorsCustomAddMethodCalled = false, | ||
_changesRecieved = []; | ||
class Observers2 extends Observers { | ||
// Catch when fireables added. | ||
add(...args) { | ||
ObserversCustomAddMethodCalled = true; | ||
return super.add(...args); | ||
var obj = {}, | ||
ObserversCustomAddMethodCalled = false, | ||
InterceptorsCustomAddMethodCalled = false, | ||
_changesRecieved = []; | ||
class Observers2 extends Observers { | ||
// Catch when fireables added. | ||
add(...args) { | ||
ObserversCustomAddMethodCalled = true; | ||
return super.add(...args); | ||
} | ||
} | ||
} | ||
class Interceptors2 extends Interceptors { | ||
// Catch when fireables added. | ||
add(...args) { | ||
InterceptorsCustomAddMethodCalled = true; | ||
return super.add(...args); | ||
class Interceptors2 extends Interceptors { | ||
// Catch when fireables added. | ||
add(...args) { | ||
InterceptorsCustomAddMethodCalled = true; | ||
return super.add(...args); | ||
} | ||
} | ||
} | ||
Observers.namespace('ns1', Observers2); | ||
Interceptors.namespace('ns1', Interceptors2); | ||
it(`Should that "events" off the namespace dont't leak.`, function() { | ||
observe(obj, () => {}); | ||
set(obj, { | ||
key1: 'value1', | ||
key2: 'value2', | ||
Observers.namespace('ns1', Observers2); | ||
Interceptors.namespace('ns1', Interceptors2); | ||
it(`Should that "events" off the namespace dont't leak.`, function() { | ||
observe(obj, () => {}); | ||
set(obj, { | ||
key1: 'value1', | ||
key2: 'value2', | ||
}); | ||
expect(_changesRecieved).to.be.an('array').with.lengthOf(0); | ||
expect(ObserversCustomAddMethodCalled).to.be.false; | ||
expect(InterceptorsCustomAddMethodCalled).to.be.false; | ||
}); | ||
expect(_changesRecieved).to.be.an('array').with.lengthOf(0); | ||
expect(ObserversCustomAddMethodCalled).to.be.false; | ||
expect(InterceptorsCustomAddMethodCalled).to.be.false; | ||
}); | ||
it(`Should assert that methods of an Observers namespace class are called.`, function() { | ||
observe(obj, changes => { | ||
_changesRecieved.push(changes); | ||
}, { | ||
namespace: 'ns1', | ||
it(`Should assert that methods of an Observers namespace class are called.`, function() { | ||
observe(obj, changes => { | ||
_changesRecieved.push(changes); | ||
}, { | ||
namespace: 'ns1', | ||
}); | ||
expect(ObserversCustomAddMethodCalled).to.be.true; | ||
}); | ||
expect(ObserversCustomAddMethodCalled).to.be.true; | ||
}); | ||
it(`Should assert that methods of an Interceptors namespace class are called.`, function() { | ||
intercept(obj, 'set', (e, recieved, next) => { | ||
return next(); | ||
}, { | ||
namespace: 'ns1', | ||
it(`Should assert that methods of an Interceptors namespace class are called.`, function() { | ||
intercept(obj, 'set', (e, recieved, next) => { | ||
return next(); | ||
}, { | ||
namespace: 'ns1', | ||
}); | ||
expect(InterceptorsCustomAddMethodCalled).to.be.true; | ||
}); | ||
expect(InterceptorsCustomAddMethodCalled).to.be.true; | ||
}); | ||
it(`Should assert that "custom events" in the namespace fire.`, function() { | ||
Observers2.getFirebase(obj).fire([{ | ||
name: 'costum-name', // required | ||
type: 'costum-type', // required | ||
}]); | ||
expect(_changesRecieved[0][0]).to.be.an('object').that.includes({ name: 'costum-name', type: 'costum-type', }); | ||
}); | ||
it(`Should that "set" operations in the namespace are recieved.`, function() { | ||
set(obj, { | ||
key1: 'value1', | ||
key2: 'value2', | ||
}, { | ||
namespace: 'ns1', | ||
it(`Should assert that "custom events" in the namespace fire.`, function() { | ||
Observers2.getFirebase(obj).fire([{ | ||
name: 'costum-name', // required | ||
type: 'costum-type', // required | ||
}]); | ||
expect(_changesRecieved[0][0]).to.be.an('object').that.includes({ name: 'costum-name', type: 'costum-type', }); | ||
}); | ||
expect(_changesRecieved[1]).to.be.an('array').with.length(2); | ||
it(`Should that "set" operations in the namespace are recieved.`, function() { | ||
set(obj, { | ||
key1: 'value1', | ||
key2: 'value2', | ||
}, { | ||
namespace: 'ns1', | ||
}); | ||
expect(_changesRecieved[1]).to.be.an('array').with.length(2); | ||
}); | ||
}); | ||
}); | ||
describe(`Observe paths.`, function() { | ||
describe(`Observe paths.`, function() { | ||
it(`Observe a one-level path of an object.`, function() { | ||
var obj = {}, _change; | ||
// ----- | ||
observe(obj, 'key1', change => { | ||
_change = change; | ||
}); | ||
// ----- | ||
set(obj, { | ||
key1: 'value1', | ||
}); | ||
// ----- | ||
expect(_change).to.be.an('object').that.includes({ name: 'key1', type: 'set', }); | ||
}); | ||
it(`Observe a one-level path of an object.`, function() { | ||
var obj = {}, _change; | ||
// ----- | ||
observe(obj, 'key1', change => { | ||
_change = change; | ||
it(`Observe a two-level path of an object.`, function() { | ||
var obj = {}, _changes = []; | ||
// ----- | ||
observe(obj, ['key1', 'sub.key1'], change => { | ||
_changes.push(change); | ||
}); | ||
// ----- | ||
set(obj, { | ||
key1: {}, | ||
key2: {}, | ||
}); | ||
set(obj.key1, { | ||
'sub.key1': {}, | ||
subkey1: {}, | ||
}); | ||
// ----- | ||
expect(_changes).to.have.lengthOf(1); | ||
expect(_changes[0]).to.be.an('object').that.deep.includes({ name: 'key1', path: [ 'key1', 'sub.key1' ], type: 'set', }); | ||
}); | ||
// ----- | ||
set(obj, { | ||
key1: 'value1', | ||
}); | ||
// ----- | ||
expect(_change).to.be.an('object').that.includes({ name: 'key1', type: 'set', }); | ||
}); | ||
it(`Observe a two-level path of an object.`, function() { | ||
var obj = {}, _changes = []; | ||
// ----- | ||
observe(obj, ['key1', 'sub.key1'], change => { | ||
_changes.push(change); | ||
it(`Observe path 0 of an array.`, function() { | ||
var arr = [], _changes = []; | ||
// ----- | ||
observe(arr, 0, change => { | ||
_changes.push(change); | ||
}); | ||
// ----- | ||
set(arr, 0, {}); | ||
// ----- | ||
expect(_changes).to.have.lengthOf(1); | ||
expect(_changes[0]).to.be.an('object').that.deep.includes({ name: 0, path: [ 0 ], type: 'set', }); | ||
}); | ||
// ----- | ||
set(obj, { | ||
key1: {}, | ||
key2: {}, | ||
}); | ||
set(obj.key1, { | ||
'sub.key1': {}, | ||
subkey1: {}, | ||
}); | ||
// ----- | ||
expect(_changes).to.have.lengthOf(1); | ||
expect(_changes[0]).to.be.an('object').that.deep.includes({ name: 'key1', path: [ 'key1', 'sub.key1' ], type: 'set', }); | ||
}); | ||
it(`Observe path 0 of an array.`, function() { | ||
var arr = [], _changes = []; | ||
// ----- | ||
observe(arr, 0, change => { | ||
_changes.push(change); | ||
it(`Observe path [0, 'key1'] of an array.`, function() { | ||
var arr = [], _changes = []; | ||
// ----- | ||
observe(arr, [0, 'key1'], change => { | ||
_changes.push(change); | ||
}); | ||
// ----- | ||
set(arr, 0, {}); | ||
set(arr[0], 'key1', {}); | ||
// ----- | ||
expect(_changes).to.have.lengthOf(1); | ||
expect(_changes[0]).to.be.an('object').that.deep.includes({ name: 0, path: [ 0, 'key1' ], type: 'set', }); | ||
}); | ||
// ----- | ||
set(arr, 0, {}); | ||
// ----- | ||
expect(_changes).to.have.lengthOf(1); | ||
expect(_changes[0]).to.be.an('object').that.deep.includes({ name: 0, path: [ 0 ], type: 'set', }); | ||
}); | ||
it(`Observe path [0, 'key1'] of an array.`, function() { | ||
var arr = [], _changes = []; | ||
// ----- | ||
observe(arr, [0, 'key1'], change => { | ||
_changes.push(change); | ||
it(`Observe wildcard paths.`, function() { | ||
var obj = {}, _changes = []; | ||
// ----- | ||
observe(obj, ['key1', ,], change => { | ||
_changes.push(change); | ||
}); | ||
// ----- | ||
set(obj, { | ||
key1: {}, | ||
key2: {}, | ||
}); | ||
set(obj.key1, { | ||
'sub.key1': {}, | ||
subkey1: {}, | ||
}); | ||
// ----- | ||
expect(_changes).to.have.lengthOf(2); | ||
expect(_changes[0]).to.be.an('object').that.deep.includes({ name: 'key1', path: [ 'key1', 'sub.key1' ], type: 'set', }); | ||
}); | ||
// ----- | ||
set(arr, 0, {}); | ||
set(arr[0], 'key1', {}); | ||
// ----- | ||
expect(_changes).to.have.lengthOf(1); | ||
expect(_changes[0]).to.be.an('object').that.deep.includes({ name: 0, path: [ 0, 'key1' ], type: 'set', }); | ||
}); | ||
it(`Observe wildcard paths.`, function() { | ||
var obj = {}, _changes = []; | ||
// ----- | ||
observe(obj, ['key1', ,], change => { | ||
_changes.push(change); | ||
it(`Observe path [0] and subtree of an array.`, function() { | ||
var arr = [], _changes = []; | ||
// ----- | ||
observe(arr, 0, change => { | ||
_changes.push(change); | ||
}, {subtree: true}); | ||
// ----- | ||
set(arr, 0, {}); | ||
set(arr[0], 'key1', {}); | ||
// ----- | ||
expect(_changes).to.have.lengthOf(2); | ||
expect(_changes[1][0]).to.be.an('object').that.deep.includes({ name: 0, path: [ 0, 'key1' ], type: 'set', }); | ||
}); | ||
// ----- | ||
set(obj, { | ||
key1: {}, | ||
key2: {}, | ||
}); | ||
set(obj.key1, { | ||
'sub.key1': {}, | ||
subkey1: {}, | ||
}); | ||
// ----- | ||
expect(_changes).to.have.lengthOf(2); | ||
expect(_changes[0]).to.be.an('object').that.deep.includes({ name: 'key1', path: [ 'key1', 'sub.key1' ], type: 'set', }); | ||
}); | ||
it(`Observe path [0] and subtree of an array.`, function() { | ||
var arr = [], _changes = []; | ||
// ----- | ||
observe(arr, 0, change => { | ||
_changes.push(change); | ||
}, {subtree: true}); | ||
// ----- | ||
set(arr, 0, {}); | ||
set(arr[0], 'key1', {}); | ||
// ----- | ||
expect(_changes).to.have.lengthOf(2); | ||
expect(_changes[1][0]).to.be.an('object').that.deep.includes({ name: 0, path: [ 0, 'key1' ], type: 'set', }); | ||
}); | ||
}); | ||
describe(`Accessorize/unaccessorize.`, function() { | ||
describe(`Accessorize/unaccessorize.`, function() { | ||
it(`Should report a change on setting an accessorized prop. Should report nothing after unaccessorizing the prop.`, function() { | ||
var obj = {}, _changes = []; | ||
// ----- | ||
observe(obj, changes => { | ||
_changes.push(changes); | ||
}); | ||
// ----- | ||
var accessorizeFlag = accessorize(obj, 'key1'); | ||
obj.key1 = 'value1'; // Should fire event | ||
// ----- | ||
var unaccessorizeFlag = unaccessorize(obj, 'key1'); | ||
obj.key1 = 'value1-b'; // Should not fire event | ||
// ----- | ||
expect(accessorizeFlag).to.be.true; | ||
expect(unaccessorizeFlag).to.be.true; | ||
expect(_changes).to.be.an('array').with.length(1); | ||
}); | ||
it(`Should report a change on setting an accessorized prop. Should report nothing after unaccessorizing the prop.`, function() { | ||
var obj = {}, _changes = []; | ||
// ----- | ||
observe(obj, changes => { | ||
_changes.push(changes); | ||
it(`Should report a change on setting an immutable accessorized prop. Should be unable to unaccessorize the immutable prop. Should report additional changes`, function() { | ||
var obj = {}, _changes = []; | ||
// ----- | ||
observe(obj, changes => { | ||
_changes.push(changes); | ||
}); | ||
// ----- | ||
var accessorizeFlag = accessorize(obj, 'key1', { configurable: false }); | ||
obj.key1 = 'value1'; // Should fire event | ||
// ----- | ||
var unaccessorizeFlag = unaccessorize(obj, 'key1'); | ||
obj.key1 = 'value1-b'; // Should still fire event | ||
// ----- | ||
expect(accessorizeFlag).to.be.true; | ||
expect(unaccessorizeFlag).to.be.false; | ||
expect(_changes).to.be.an('array').with.length(2); | ||
}); | ||
// ----- | ||
var accessorizeFlag = accessorize(obj, 'key1'); | ||
obj.key1 = 'value1'; // Should fire event | ||
// ----- | ||
var unaccessorizeFlag = unaccessorize(obj, 'key1'); | ||
obj.key1 = 'value1-b'; // Should not fire event | ||
// ----- | ||
expect(accessorizeFlag).to.be.true; | ||
expect(unaccessorizeFlag).to.be.true; | ||
expect(_changes).to.be.an('array').with.length(1); | ||
}); | ||
it(`Should report a change on setting an immutable accessorized prop. Should be unable to unaccessorize the immutable prop. Should report additional changes`, function() { | ||
var obj = {}, _changes = []; | ||
// ----- | ||
observe(obj, changes => { | ||
_changes.push(changes); | ||
}); | ||
// ----- | ||
var accessorizeFlag = accessorize(obj, 'key1', { configurable: false }); | ||
obj.key1 = 'value1'; // Should fire event | ||
// ----- | ||
var unaccessorizeFlag = unaccessorize(obj, 'key1'); | ||
obj.key1 = 'value1-b'; // Should still fire event | ||
// ----- | ||
expect(accessorizeFlag).to.be.true; | ||
expect(unaccessorizeFlag).to.be.false; | ||
expect(_changes).to.be.an('array').with.length(2); | ||
}); | ||
}); | ||
describe(`Proxy/unproxy.`, function() { | ||
describe(`Proxy/unproxy.`, function() { | ||
it(`Should report a change on setting a prop on a proxied instance.`, function() { | ||
var obj = {}, _changes = []; | ||
// ----- | ||
observe(obj, changes => { | ||
_changes.push(changes); | ||
}); | ||
// ----- | ||
var _obj = proxy(obj); | ||
_obj.key1 = 'value1'; // Should fire event | ||
_obj.key2 = 'value2'; // Should fire event | ||
// ----- | ||
expect(_obj === obj).to.be.false; | ||
expect(unproxy(_obj) === obj).to.be.true; | ||
expect(_changes).to.be.an('array').with.length(2); | ||
}); | ||
it(`Should report a change on setting a prop on a proxied instance.`, function() { | ||
var obj = {}, _changes = []; | ||
// ----- | ||
observe(obj, changes => { | ||
_changes.push(changes); | ||
}); | ||
// ----- | ||
var _obj = proxy(obj); | ||
_obj.key1 = 'value1'; // Should fire event | ||
_obj.key2 = 'value2'; // Should fire event | ||
// ----- | ||
expect(_obj === obj).to.be.false; | ||
expect(unproxy(_obj) === obj).to.be.true; | ||
expect(_changes).to.be.an('array').with.length(2); | ||
}); | ||
}); | ||
describe(`Accessorize/unaccessorize.`, function() { | ||
describe(`Accessorize/unaccessorize.`, function() { | ||
it(`Should report just a change on PROGRAMMATICALLY setting an already ACCESSORIZED prop.`, function() { | ||
var obj = {}, _changes = []; | ||
// ----- | ||
observe(obj, changes => { | ||
_changes.push(changes); | ||
}); | ||
// ----- | ||
accessorize(obj, 'key1'); | ||
set(obj, 'key1', 'value1'); // Should fire just one event | ||
// ----- | ||
obj.key1 = 'value1-b'; // Should fire event | ||
// ----- | ||
expect(_changes).to.be.an('array').with.length(2); | ||
}); | ||
it(`Should report just a change on PROGRAMMATICALLY setting an already ACCESSORIZED prop.`, function() { | ||
var obj = {}, _changes = []; | ||
// ----- | ||
observe(obj, changes => { | ||
_changes.push(changes); | ||
it(`Should report just a change on PROGRAMMATICALLY setting an already ACCESSORIZED prop of a PROXIED instance.`, function() { | ||
var obj = {}, _changes = []; | ||
// ----- | ||
observe(obj, changes => { | ||
_changes.push(changes); | ||
}); | ||
// ----- | ||
accessorize(obj, 'key1'); | ||
var _obj = proxy(obj); | ||
set(_obj, 'key1', 'value1'); // Should fire just one event | ||
// ----- | ||
obj.key1 = 'value1-b'; // Should fire event | ||
// ----- | ||
expect(_changes).to.be.an('array').with.length(2); | ||
}); | ||
// ----- | ||
accessorize(obj, 'key1'); | ||
set(obj, 'key1', 'value1'); // Should fire just one event | ||
// ----- | ||
obj.key1 = 'value1-b'; // Should fire event | ||
// ----- | ||
expect(_changes).to.be.an('array').with.length(2); | ||
}); | ||
it(`Should report just a change on PROGRAMMATICALLY setting an already ACCESSORIZED prop of a PROXIED instance.`, function() { | ||
var obj = {}, _changes = []; | ||
// ----- | ||
observe(obj, changes => { | ||
_changes.push(changes); | ||
}); | ||
// ----- | ||
accessorize(obj, 'key1'); | ||
var _obj = proxy(obj); | ||
set(_obj, 'key1', 'value1'); // Should fire just one event | ||
// ----- | ||
obj.key1 = 'value1-b'; // Should fire event | ||
// ----- | ||
expect(_changes).to.be.an('array').with.length(2); | ||
}); | ||
}); | ||
}); |
Sorry, the diff of this file is not supported yet
204167
2125