@webqit/observer 2.0.4 → 2.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/main.js CHANGED
@@ -1,2 +1,2 @@
1
- (()=>{var _e=Object.defineProperty;var ce=(e,t)=>{for(var n in t)_e(e,n,{get:t[n],enumerable:!0})};var le={};ce(le,{apply:()=>fe,batch:()=>Me,construct:()=>ie,deep:()=>qe,defineProperties:()=>Qe,defineProperty:()=>ne,deleteProperty:()=>oe,get:()=>z,getOwnPropertyDescriptor:()=>ee,getOwnPropertyDescriptors:()=>Le,getPrototypeOf:()=>te,has:()=>U,intercept:()=>Be,isExtensible:()=>re,observe:()=>We,ownKeys:()=>$,preventExtensions:()=>se,set:()=>W,setPrototypeOf:()=>ue});function h(e){return!Array.isArray(e)&&typeof e=="object"&&e}function q(e){return typeof e}function y(e,...t){globalThis.WebQitInternalsRegistry||(globalThis.WebQitInternalsRegistry=new Map);var n=globalThis.WebQitInternalsRegistry.get(e);if(!n){if(n=new Map,t[0]===!1)return n;globalThis.WebQitInternalsRegistry.set(e,n)}for(var r,o;r=t.shift();)if((o=n)&&!(n=n.get(r))){if(n=new Map,t[0]===!1)return n;o.set(r,n)}return n}function v(e){return Array.isArray(e)}function N(e){return typeof e=="function"}function k(e){return N(e)&&/^class\s?/.test(Function.prototype.toString.call(e))}function K(e){return e===null||e===""}function C(e){return arguments.length&&(e===void 0||typeof e>"u")}function b(e){return Array.isArray(e)||typeof e=="object"&&e||N(e)}function H(e){return K(e)||C(e)||e===!1||e===0||b(e)&&!Object.keys(e).length}function w(e){return N(e)||e&&{}.toString.call(e)==="[object function]"}function M(e){return e instanceof String||typeof e=="string"&&e!==null}function G(e){return!M(e)&&!C(e.length)}function I(e,t=!0){return v(e)?e:!t&&h(e)?[e]:e!==!1&&e!==0&&H(e)?[]:G(e)?Array.prototype.slice.call(e):h(e)?Object.values(e):[e]}var S=class{constructor(t,n){this.registry=t,Object.assign(this,{...n,target:t.target}),this.params.signal&&this.params.signal.addEventListener("abort",()=>this.remove())}remove(){return this.removed=!0,this.registry.removeRegistration(this)}};var B=class extends S{constructor(){super(...arguments),Object.defineProperty(this,"abortController",{value:new AbortController}),Object.defineProperty(this,"signal",{value:this.abortController.signal})}remove(){this.abortController.abort(),super.remove()}fire(t){let n=t,r=this.filter;if(r!==1/0&&(r=I(r))&&(n=t.filter(o=>r.includes(o.key))),n.length)return this.filter===1/0||Array.isArray(this.filter)?this.handler(n,this):this.handler(n[0],this)}};var F=class{constructor(t){this.target=t,this.entries=[]}addRegistration(t){return this.entries.push(t),t}removeRegistration(t){this.entries=this.entries.filter(n=>n!==t)}static _getInstance(t,n,r=!0,o=this.__namespace){if(!b(n))throw new Error(`Subject must be of type object; "${q(n)}" given!`);let f=this;return o&&globalThis.WebQitObserverNamespaceRegistry.has(t+"-"+o)&&(f=globalThis.WebQitObserverNamespaceRegistry.get(t+"-"+o),t+="-"+o),!y(n,"observerApi").has(t)&&r&&y(n,"observerApi").set(t,new f(n)),y(n,"observerApi").get(t)}static _namespace(t,n,r=null){if(t+="-"+n,arguments.length===2)return globalThis.WebQitObserverNamespaceRegistry.get(t);if(!(r.prototype instanceof this))throw new Error(`The implementation of the namespace ${this.name}.${n} must be a subclass of ${this.name}.`);globalThis.WebQitObserverNamespaceRegistry.set(t,r),r.__namespace=n}};globalThis.WebQitObserverNamespaceRegistry||(globalThis.WebQitObserverNamespaceRegistry=new Map);var R=class extends F{static getInstance(t,n=!0,r=null){return super._getInstance("listeners",...arguments)}static namespace(t,n=null){return super._namespace("listeners",...arguments)}constructor(t){super(t),this.batches=[]}addRegistration(t,n,r){return super.addRegistration(new B(this,{filter:t,handler:n,params:r}))}emit(t){if(this.batches.length){this.batches[0].events.push(...t);return}this.entries.forEach(n=>n.fire(t))}batch(t){this.batches.unshift({entries:[...this.entries],events:[]});let n=t(),r=this.batches.shift();return r.events.length&&r.entries.forEach(o=>o.fire(r.events)),n}};var L=class extends S{exec(t,n,r){return this.running||!this.traps[t.type]?n(...Array.prototype.slice.call(arguments,2)):(this.running=!0,this.traps[t.type](t,r,(...o)=>(this.running=!1,n(...o))))}};var T=class extends F{static getInstance(t,n=!0,r=null){return super._getInstance("traps",...arguments)}static namespace(t,n=null){return super._namespace("traps",...arguments)}addRegistration(t){return super.addRegistration(new L(this,t))}emit(t,n=null){let r=this;return function o(f,...u){let s=r.entries[f];return s?s.exec(t,(...i)=>o(f+1,...i),...u):n?n(t,...u):u[0]}(0)}};var P=class{constructor(t,n){if(this.target=t,!n.type)throw new Error("Descriptor type must be given in definition!");Object.assign(this,n)}};var Z={};ce(Z,{accessorize:()=>Fe,proxy:()=>De,unaccessorize:()=>ze,unproxy:()=>Q});function Fe(e,t,n={}){e=Y(e);let r=y(e,"accessorizedProps");function o(i){let l,c=e;for(;!l&&(c=Object.getPrototypeOf(c));)l=Object.getOwnPropertyDescriptor(c,i);return l?{proto:c,descriptor:l}:{descriptor:{value:void 0}}}function f(i){if(r.has(i))return!0;let l=o(i);l.getValue=function(){return"get"in this.descriptor?this.descriptor.get():this.descriptor.value},l.setValue=function(m){return"set"in this.descriptor?this.descriptor.set(m):this.descriptor.value=m},l.intact=function(){let m=Object.getOwnPropertyDescriptor(e,i);return m.get===d.get&&m.set===d.set&&r.get(i)===this},l.restore=function(){return this.intact()?(this.proto!==e?delete e[i]:Object.defineProperty(e,i,this.descriptor),r.delete(i),!0):!1},r.set(i,l);let{enumerable:c=!0,configurable:g=!0}=l.descriptor,d={enumerable:c,configurable:g};["value","set"].some(m=>m in l.descriptor)&&(d.set=function(m){return W(this,i,m,n)}),["value","get"].some(m=>m in l.descriptor)&&(d.get=function(){return z(this,i,n)});try{return Object.defineProperty(e,i,d),!0}catch{return r.delete(i),!1}}let s=(Array.isArray(t)?t:t===void 0?Object.keys(e):[t]).map(f);return t===void 0||Array.isArray(t)?s:s[0]}function ze(e,t,n={}){e=Y(e);let r=y(e,"accessorizedProps");function o(s){return r.has(s)?r.get(s).restore():!0}let u=(Array.isArray(t)?t:t===void 0?Object.keys(e):[t]).map(o);return t===void 0||Array.isArray(t)?u:u[0]}function De(e,t={}){e=Y(e);let n=new Proxy(e,{apply:(r,o,f)=>fe(r,o,f,t),construct:(r,o,f=null)=>ie(r,o,f,t),defineProperty:(r,o,f)=>ne(r,o,f,t),deleteProperty:(r,o)=>oe(r,o,t),get:(r,o,f=null)=>{let u=z(r,o,{...t,receiver:f});return t.proxyAutoBinding!==!1&&w(u)&&!k(u)?u.bind(n):u},getOwnPropertyDescriptor:(r,o)=>ee(r,o,t),getPrototypeOf:r=>te(r,t),has:(r,o)=>U(r,o,t),isExtensible:r=>re(r,t),ownKeys:r=>$(r,t),preventExtensions:r=>se(r,t),set:(r,o,f,u=null)=>W(r,o,f,{...t,receiver:u}),setPrototypeOf:(r,o)=>ue(r,o,t)});return y(n).set(n,e),n}function Q(e){return y(e,!1).get(e)||e}function Y(e){if(!e||!b(e))throw new Error("Target must be of type object!");return Q(e)}function qe(e,t,n,r=f=>f,o={}){return function f(u,s,i){let l=s[i.level];return i.level<s.length-1?i={...i,preflight:!0}:i={...i,preflight:o.preflight},n(u,l,(c,...g)=>{let d=(a={})=>({...i,...a,level:i.level+1}),m=a=>{a instanceof P&&(a.path=[a.key],u instanceof P&&(a.path=u.path.concat(a.key),a.context=u))};if(V(l)&&Array.isArray(c))return c.forEach(m),i.level===s.length-1||!c.length&&i.midwayResults?r(c,...g):c.map(a=>f(a,s,d(...g)));m(c);let x=b(D(c,!1));return i.level===s.length-1||!x&&i.midwayResults?r(c,...g):x&&f(c,s,d(...g))},i)}(e,t.slice(0),{...o,level:0})}function We(e,t,n,r={}){if(e=D(e),w(arguments[1])&&([,n,r={}]=arguments,t=1/0),!w(n))throw new Error(`Handler must be a function; "${q(n)}" given!`);let o=ye(e,t,n,r);return r.preflight?(r={...r,descripted:!0},delete r.live,z(e,t,o,r)):o()}function Be(e,t,n={}){return e=D(e),h(t)||([,,,n={}]=arguments,t={[arguments[1]]:arguments[2]}),T.getInstance(e,!0,n.namespace).addRegistration({traps:t,params:n})}function ee(e,t,n=o=>o,r={}){return A(e,"getOwnPropertyDescriptor",{key:t},n,r)}function Le(e,t,n=o=>o,r={}){return A(e,"getOwnPropertyDescriptors",{key:t},n,r)}function te(e,t=r=>r,n={}){return A(e,"getPrototypeOf",{},t,n)}function re(e,t=r=>r,n={}){return A(e,"isExtensible",{},t,n)}function $(e,t=r=>r,n={}){return A(e,"ownKeys",{},t,n)}function U(e,t,n=o=>o,r={}){return A(e,"has",{key:t},n,r)}function z(e,t,n=o=>o,r={}){let o;return e=D(e),h(n)?[r,n]=[n,f=>f]:r.live&&(o=!0),$e(e,t,f=>{let u=[...f];return function s(i,l,c){if(!l.length)return c(i);let g=l.shift();function d(a,p=void 0){let O=j=>(a.value=j,s(i.concat(r.live||r.descripted?a:j),l,c));if(arguments.length>1)return O(p);let _=y(e,"accessorizedProps",!1),E=_&&_.get(a.key);return E&&E.intact()?O(E.getValue()):O(Reflect.get(e,a.key,...r.receiver?[r.receiver]:[]))}let m=new P(e,{type:"get",key:g,value:void 0,related:u}),x=T.getInstance(e,!1,r.namespace);return x?x.emit(m,d):d(m)}([],f.slice(0),s=>{let i=V(t)?s:s[0];return o?ye(e,t,n,r)(i):n(i)})})}function Me(e,t,n={}){return R.getInstance(e,!0,n.namespace).batch(t)}function W(e,t,n,r=u=>u,o={},f=!1){e=D(e);let u=[[t,n]];h(t)&&([,,r=i=>i,o={},f=!1]=arguments,u=Object.entries(t)),h(r)&&([f,o,r]=[typeof o=="boolean"?o:!1,r,i=>i]);let s=u.map(([i])=>i);return function i(l,c,g){if(!c.length)return g(l);let[d,m]=c.shift();function x(p,O=void 0){let _=xe=>(p.status=xe,i(l.concat(p),c,g));if(arguments.length>1)return _(p,O);let E=y(e,"accessorizedProps",!1),j=E&&E.get(p.key);return p.type==="defineProperty"?(j&&!j.restore()&&_(!1),Object.defineProperty(e,p.key,p.value),_(!0)):j&&j.intact()?_(j.setValue(p.value)):_(Reflect.set(e,p.key,p.value))}function a(p,O){let _=new P(e,{type:f?"defineProperty":"set",key:d,value:m,isUpdate:p,oldValue:O,related:[...s],detail:o.detail}),E=T.getInstance(e,!1,o.namespace);return E?E.emit(_,x):x(_)}return U(e,d,p=>!p||o.oldValue!==!0?a(p):z(e,d,O=>a(p,O),o),o)}([],u.slice(0),i=>{let l=R.getInstance(e,!1,o.namespace);return l&&l.emit(i),r(V(t)?i.map(c=>c.status):i[0].status)})}function ne(e,t,n,r=f=>f,o={}){return W(e,t,n,r,o,!0)}function Qe(e,t,n=o=>o,r={}){return W(e,t,n,r,!0)}function oe(e,t,n=o=>o,r={}){e=D(e),h(n)&&([r,n]=[n,u=>u]);let o=I(t),f=[...o];return function u(s,i,l){if(!i.length)return l(s);let c=i.shift();function g(m,x=void 0){let a=_=>(m.status=_,u(s.concat(m),i,l));if(arguments.length>1)return a(m,x);let p=y(e,"accessorizedProps",!1),O=p&&p.get(m.key);return O&&!O.restore()&&a(!1),a(Reflect.deleteProperty(e,m.key))}function d(m){let x=new P(e,{type:"deleteProperty",key:c,oldValue:m,related:[...f],detail:r.detail}),a=T.getInstance(e,!1,r.namespace);return a?a.emit(x,g):g(x)}return r.oldValue===!1?d():z(e,c,d,r)}([],o.slice(0),u=>{let s=R.getInstance(e,!1,r.namespace);return s&&s.emit(u),n(V(t)?u.map(i=>i.status):u[0].status)})}function ie(e,t,n=null,r=f=>f,o={}){return A(e,"construct",arguments.length>2?{argumentsList:t,newTarget:n}:{argumentsList:t},r,o)}function fe(e,t,n,r=f=>f,o={}){return A(e,"apply",{thisArgument:t,argumentsList:n},r,o)}function ue(e,t,n=o=>o,r={}){return A(e,"setPrototypeOf",{proto:t},n,r)}function se(e,t=r=>r,n={}){return A(e,"preventExtensions",{},t,n)}function ye(e,t,n,r={}){let o;r.signal||(o=new AbortController,r={...r,signal:o.signal});let f=R.getInstance(e,!0,r.namespace);return function u(s,i=null){i?.remove();let c={signal:f.addRegistration(t,u,r).signal};return arguments.length&&n(s,c),o}}function A(e,t,n={},r=f=>f,o={}){e=D(e),h(r)&&([o,r]=[r,i=>i]);function f(i,l){return arguments.length>1?r(l):r(Reflect[t](e,...Object.values(n)))}let u=new P(e,{type:t,...n}),s=T.getInstance(e,!1,o.namespace);return s?s.emit(u,f):f(u)}function V(e){return e===1/0||Array.isArray(e)}function D(e,t=!0){if((!e||!b(e))&&t)throw new Error(`Object must be of type object or array! "${q(e)}" given.`);return e instanceof P&&(e=e.value),e&&Q(e)}function $e(e,t,n){return t===1/0?$(e,n):n(I(t))}var Ue={...le,...Z},ge=Ue;self.webqit||(self.webqit={});self.webqit.Observer=ge;})();
1
+ (()=>{var we=Object.defineProperty;var de=(e,t)=>{for(var n in t)we(e,n,{get:t[n],enumerable:!0})};var pe={};de(pe,{apply:()=>ce,batch:()=>We,construct:()=>le,deep:()=>Me,defineProperties:()=>Ke,defineProperty:()=>se,deleteProperty:()=>ue,get:()=>N,getOwnPropertyDescriptor:()=>oe,getOwnPropertyDescriptors:()=>ke,getPrototypeOf:()=>ie,has:()=>H,intercept:()=>$e,isExtensible:()=>fe,observe:()=>Ve,ownKeys:()=>K,preventExtensions:()=>ae,set:()=>B,setPrototypeOf:()=>me});function y(e){return!Array.isArray(e)&&typeof e=="object"&&e}function D(e){return typeof e}function b(e){return Array.isArray(e)}function J(e,t,n=null){return b(t)?e.filter(r=>n?t.filter(o=>n(r,o)).length:t.indexOf(r)!==-1):[]}function $(e,...t){globalThis.webqit||(globalThis.webqit={}),globalThis.webqit.refs||Object.defineProperty(globalThis.webqit,"refs",{value:new L});var n=globalThis.webqit.refs.get(e);n||(n=new L,globalThis.webqit.refs.set(e,n));for(var r,o;r=t.shift();)(o=n)&&!(n=n.get(r))&&(n=new L,o.set(r,n));return n}var L=class extends Map{constructor(...t){super(...t),this.observers=new Set}set(t,n){let r=super.set(t,n);return this.fire("set",t,n,t),r}delete(t){let n=super.delete(t);return this.fire("delete",t),n}has(t){return this.fire("has",t),super.has(t)}get(t){return this.fire("get",t),super.get(t)}keyNames(){return Array.from(super.keys())}observe(t,n,r){let o={type:t,key:n,callback:r};return this.observers.add(o),()=>this.observers.delete(o)}unobserve(t,n,r){if(Array.isArray(t)||Array.isArray(n))throw new Error('The "type" and "key" arguments can only be strings.');for(let o of this.observers)V([t,"*"],o.type)&&V([n,"*"],o.key)&&o.callback===r&&this.observers.delete(o)}fire(t,n,...r){for(let o of this.observers)V([t,"*"],o.type)&&V([n,"*"],o.key)&&o.callback(...r)}},V=(e,t)=>Array.isArray(t)?J(e,t).length:e.includes(t);function q(e){return typeof e=="function"}function Q(e){return q(e)&&/^class\s?/.test(Function.prototype.toString.call(e))}function X(e){return e===null||e===""}function S(e){return arguments.length&&(e===void 0||typeof e>"u")}function v(e){return Array.isArray(e)||typeof e=="object"&&e||q(e)}function Y(e){return X(e)||S(e)||e===!1||e===0||v(e)&&!Object.keys(e).length}function w(e){return q(e)||e&&{}.toString.call(e)==="[object function]"}function k(e){return e instanceof String||typeof e=="string"&&e!==null}function Z(e){return!k(e)&&!S(e.length)}function I(e,t=!0){return b(e)?e:!t&&y(e)?[e]:e!==!1&&e!==0&&Y(e)?[]:Z(e)?Array.prototype.slice.call(e):y(e)?Object.values(e):[e]}var R=class{constructor(t,n){this.registry=t,Object.assign(this,{...n,target:t.target}),this.params.signal&&this.params.signal.addEventListener("abort",()=>this.remove())}remove(){return this.removed=!0,this.registry.removeRegistration(this)}};var U=class extends R{constructor(){super(...arguments),Object.defineProperty(this,"abortController",{value:new AbortController}),Object.defineProperty(this,"signal",{value:this.abortController.signal})}remove(){this.abortController.abort(),super.remove()}fire(t){let n=t,r=this.filter;if(r!==1/0&&(r=I(r))&&(n=t.filter(o=>r.includes(o.key))),n.length)return this.filter===1/0||Array.isArray(this.filter)?this.handler(n,this):this.handler(n[0],this)}};var h=(...e)=>$("observer-api",...e);var F=class{constructor(t){this.target=t,this.entries=[]}addRegistration(t){return this.entries.push(t),t}removeRegistration(t){this.entries=this.entries.filter(n=>n!==t)}static _getInstance(t,n,r=!0,o=this.__namespace){if(!v(n))throw new Error(`Subject must be of type object; "${D(n)}" given!`);let f=this;return o&&h("namespaces").has(t+"-"+o)&&(f=h("namespaces").get(t+"-"+o),t+="-"+o),!h(n,"registry").has(t)&&r&&h(n,"registry").set(t,new f(n)),h(n,"registry").get(t)}static _namespace(t,n,r=null){if(t+="-"+n,arguments.length===2)return h("namespaces").get(t);if(!(r.prototype instanceof this))throw new Error(`The implementation of the namespace ${this.name}.${n} must be a subclass of ${this.name}.`);h("namespaces").set(t,r),r.__namespace=n}};var C=class extends F{static getInstance(t,n=!0,r=null){return super._getInstance("listeners",...arguments)}static namespace(t,n=null){return super._namespace("listeners",...arguments)}constructor(t){super(t),this.batches=[]}addRegistration(t,n,r){return super.addRegistration(new U(this,{filter:t,handler:n,params:r}))}emit(t){if(this.batches.length){this.batches[0].events.push(...t);return}this.entries.forEach(n=>n.fire(t))}batch(t){this.batches.unshift({entries:[...this.entries],events:[]});let n=t(),r=this.batches.shift();return r.events.length&&r.entries.forEach(o=>o.fire(r.events)),n}};var M=class extends R{exec(t,n,r){return this.running||!this.traps[t.type]?n(...Array.prototype.slice.call(arguments,2)):(this.running=!0,this.traps[t.type](t,r,(...o)=>(this.running=!1,n(...o))))}};var T=class extends F{static getInstance(t,n=!0,r=null){return super._getInstance("traps",...arguments)}static namespace(t,n=null){return super._namespace("traps",...arguments)}addRegistration(t){return super.addRegistration(new M(this,t))}emit(t,n=null){let r=this;return function o(f,...s){let l=r.entries[f];return l?l.exec(t,(...i)=>o(f+1,...i),...s):n?n(t,...s):s[0]}(0)}};var P=class{constructor(t,n){if(this.target=t,!n.type)throw new Error("Descriptor type must be given in definition!");Object.assign(this,n)}};var ne={};de(ne,{accessorize:()=>Be,proxy:()=>Ue,unaccessorize:()=>Le,unproxy:()=>W});function Be(e,t,n={}){e=re(e);let r=h(e,"accessorizedProps");function o(i){let u,c=e;for(;!u&&(c=Object.getPrototypeOf(c));)u=Object.getOwnPropertyDescriptor(c,i);return u?{proto:c,descriptor:u}:{descriptor:{value:void 0}}}function f(i){if(r.has(i))return!0;let u=o(i);u.getValue=function(){return"get"in this.descriptor?this.descriptor.get():this.descriptor.value},u.setValue=function(m){return"set"in this.descriptor?this.descriptor.set(m):this.descriptor.value=m},u.intact=function(){let m=Object.getOwnPropertyDescriptor(e,i);return m.get===d.get&&m.set===d.set&&r.get(i)===this},u.restore=function(){return this.intact()?(this.proto!==e?delete e[i]:Object.defineProperty(e,i,this.descriptor),r.delete(i),!0):!1},r.set(i,u);let{enumerable:c=!0,configurable:x=!0}=u.descriptor,d={enumerable:c,configurable:x};["value","set"].some(m=>m in u.descriptor)&&(d.set=function(m){return B(this,i,m,n)}),["value","get"].some(m=>m in u.descriptor)&&(d.get=function(){return N(this,i,n)});try{return Object.defineProperty(e,i,d),!0}catch{return r.delete(i),!1}}let l=(Array.isArray(t)?t:t===void 0?Object.keys(e):[t]).map(f);return t===void 0||Array.isArray(t)?l:l[0]}function Le(e,t,n={}){e=re(e);let r=h(e,"accessorizedProps");function o(l){return r.has(l)?r.get(l).restore():!0}let s=(Array.isArray(t)?t:t===void 0?Object.keys(e):[t]).map(o);return t===void 0||Array.isArray(t)?s:s[0]}function Ue(e,t={}){e=re(e);let n=new Proxy(e,{apply:(r,o,f)=>ce(r,o,f,t),construct:(r,o,f=null)=>le(r,o,f,t),defineProperty:(r,o,f)=>se(r,o,f,t),deleteProperty:(r,o)=>ue(r,o,t),get:(r,o,f=null)=>{let s=N(r,o,{...t,receiver:f});return t.proxyAutoBinding!==!1&&w(s)&&!Q(s)?s.bind(n):s},getOwnPropertyDescriptor:(r,o)=>oe(r,o,t),getPrototypeOf:r=>ie(r,t),has:(r,o)=>H(r,o,t),isExtensible:r=>fe(r,t),ownKeys:r=>K(r,t),preventExtensions:r=>ae(r,t),set:(r,o,f,s=null)=>B(r,o,f,{...t,receiver:s}),setPrototypeOf:(r,o)=>me(r,o,t)});return h(n).set(n,e),n}function W(e){return h(e).get(e)||e}function re(e){if(!e||!v(e))throw new Error("Target must be of type object!");return W(e)}function Me(e,t,n,r=f=>f,o={}){return function f(s,l,i){let u=l[i.level];return i.level<l.length-1?i={...i,preflight:!0}:i={...i,preflight:o.preflight},n(s,u,(c,...x)=>{let d=(a={})=>({...i,...a,level:i.level+1}),m=a=>{a instanceof P&&(a.path=[a.key],s instanceof P&&(a.path=s.path.concat(a.key),a.context=s))};if(G(u)&&Array.isArray(c))return c.forEach(m),i.level===l.length-1||!c.length&&i.midwayResults?r(c,...x):c.map(a=>f(a,l,d(...x)));m(c);let g=v(z(c,!1));return i.level===l.length-1||!g&&i.midwayResults?r(c,...x):g&&f(c,l,d(...x))},i)}(e,t.slice(0),{...o,level:0})}function Ve(e,t,n,r={}){if(e=z(e),w(arguments[1])&&([,n,r={}]=arguments,t=1/0),!w(n))throw new Error(`Handler must be a function; "${D(n)}" given!`);let o=Oe(e,t,n,r);return r.preflight?(r={...r,descripted:!0},delete r.live,N(e,t,o,r)):o()}function $e(e,t,n={}){return e=z(e),y(t)||([,,,n={}]=arguments,t={[arguments[1]]:arguments[2]}),T.getInstance(e,!0,n.namespace).addRegistration({traps:t,params:n})}function oe(e,t,n=o=>o,r={}){return A(e,"getOwnPropertyDescriptor",{key:t},n,r)}function ke(e,t,n=o=>o,r={}){return A(e,"getOwnPropertyDescriptors",{key:t},n,r)}function ie(e,t=r=>r,n={}){return A(e,"getPrototypeOf",{},t,n)}function fe(e,t=r=>r,n={}){return A(e,"isExtensible",{},t,n)}function K(e,t=r=>r,n={}){return A(e,"ownKeys",{},t,n)}function H(e,t,n=o=>o,r={}){return A(e,"has",{key:t},n,r)}function N(e,t,n=o=>o,r={}){let o;return e=z(e),y(n)?[r,n]=[n,f=>f]:r.live&&(o=!0),He(e,t,f=>{let s=[...f];return function l(i,u,c){if(!u.length)return c(i);let x=u.shift();function d(a,p=void 0){let _=j=>(a.value=j,l(i.concat(r.live||r.descripted?a:j),u,c));if(arguments.length>1)return _(p);let O=h(e,"accessorizedProps",!1),E=O&&O.get(a.key);return E&&E.intact()?_(E.getValue()):_(Reflect.get(e,a.key,...r.receiver?[r.receiver]:[]))}let m=new P(e,{type:"get",key:x,value:void 0,related:s}),g=T.getInstance(e,!1,r.namespace);return g?g.emit(m,d):d(m)}([],f.slice(0),l=>{let i=G(t)?l:l[0];return o?Oe(e,t,n,r)(i):n(i)})})}function We(e,t,n={}){return C.getInstance(e,!0,n.namespace).batch(t)}function B(e,t,n,r=s=>s,o={},f=!1){e=z(e);let s=[[t,n]];y(t)&&([,,r=i=>i,o={},f=!1]=arguments,s=Object.entries(t)),y(r)&&([f,o,r]=[typeof o=="boolean"?o:!1,r,i=>i]);let l=s.map(([i])=>i);return function i(u,c,x){if(!c.length)return x(u);let[d,m]=c.shift();function g(p,_=void 0){let O=ve=>(p.status=ve,i(u.concat(p),c,x));if(arguments.length>1)return O(p,_);let E=h(e,"accessorizedProps",!1),j=E&&E.get(p.key);return p.type==="defineProperty"?(j&&!j.restore()&&O(!1),Object.defineProperty(e,p.key,p.value),O(!0)):j&&j.intact()?O(j.setValue(p.value)):O(Reflect.set(e,p.key,p.value))}function a(p,_){if(o.diff&&m===_)return i(u,c,x);let O=new P(e,{type:f?"defineProperty":"set",key:d,value:m,isUpdate:p,oldValue:_,related:[...l],detail:o.detail}),E=T.getInstance(e,!1,o.namespace);return E?E.emit(O,g):g(O)}return H(e,d,p=>(!p||o.oldValue!==!0)&&!o.diff?a(p):N(e,d,_=>a(p,_),o),o)}([],s.slice(0),i=>{let u=C.getInstance(e,!1,o.namespace);return u&&u.emit(i),r(G(t)?i.map(c=>c.status):i[0]?.status)})}function se(e,t,n,r=f=>f,o={}){return B(e,t,n,r,o,!0)}function Ke(e,t,n=o=>o,r={}){return B(e,t,n,r,!0)}function ue(e,t,n=o=>o,r={}){e=z(e),y(n)&&([r,n]=[n,s=>s]);let o=I(t),f=[...o];return function s(l,i,u){if(!i.length)return u(l);let c=i.shift();function x(m,g=void 0){let a=O=>(m.status=O,s(l.concat(m),i,u));if(arguments.length>1)return a(m,g);let p=h(e,"accessorizedProps",!1),_=p&&p.get(m.key);return _&&!_.restore()&&a(!1),a(Reflect.deleteProperty(e,m.key))}function d(m){let g=new P(e,{type:"deleteProperty",key:c,oldValue:m,related:[...f],detail:r.detail}),a=T.getInstance(e,!1,r.namespace);return a?a.emit(g,x):x(g)}return r.oldValue===!1?d():N(e,c,d,r)}([],o.slice(0),s=>{let l=C.getInstance(e,!1,r.namespace);return l&&l.emit(s),n(G(t)?s.map(i=>i.status):s[0].status)})}function le(e,t,n=null,r=f=>f,o={}){return A(e,"construct",arguments.length>2?{argumentsList:t,newTarget:n}:{argumentsList:t},r,o)}function ce(e,t,n,r=f=>f,o={}){return A(e,"apply",{thisArgument:t,argumentsList:n},r,o)}function me(e,t,n=o=>o,r={}){return A(e,"setPrototypeOf",{proto:t},n,r)}function ae(e,t=r=>r,n={}){return A(e,"preventExtensions",{},t,n)}function Oe(e,t,n,r={}){let o;r.signal||(o=new AbortController,r={...r,signal:o.signal});let f=C.getInstance(e,!0,r.namespace);return function s(l,i=null){i?.remove();let c={signal:f.addRegistration(t,s,r).signal};return arguments.length&&n(l,c),o}}function A(e,t,n={},r=f=>f,o={}){e=z(e),y(r)&&([o,r]=[r,i=>i]);function f(i,u){return arguments.length>1?r(u):r(Reflect[t](e,...Object.values(n)))}let s=new P(e,{type:t,...n}),l=T.getInstance(e,!1,o.namespace);return l?l.emit(s,f):f(s)}function G(e){return e===1/0||Array.isArray(e)}function z(e,t=!0){if((!e||!v(e))&&t)throw new Error(`Object must be of type object or array! "${D(e)}" given.`);return e instanceof P&&(e=e.value),e&&W(e)}function He(e,t,n){return t===1/0?K(e,n):n(I(t))}var Ge={...pe,...ne},be=Ge;self.webqit||(self.webqit={});self.webqit.Observer=be;})();
2
2
  //# sourceMappingURL=main.js.map
package/dist/main.js.map CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../src/main.js", "../node_modules/@webqit/util/js/isObject.js", "../node_modules/@webqit/util/js/getType.js", "../node_modules/@webqit/util/js/internals.js", "../node_modules/@webqit/util/js/isArray.js", "../node_modules/@webqit/util/js/isTypeFunction.js", "../node_modules/@webqit/util/js/isClass.js", "../node_modules/@webqit/util/js/isNull.js", "../node_modules/@webqit/util/js/isUndefined.js", "../node_modules/@webqit/util/js/isTypeObject.js", "../node_modules/@webqit/util/js/isEmpty.js", "../node_modules/@webqit/util/js/isFunction.js", "../node_modules/@webqit/util/js/isString.js", "../node_modules/@webqit/util/js/isTypeArray.js", "../node_modules/@webqit/util/arr/from.js", "../src/core/Registration.js", "../src/core/ListenerRegistration.js", "../src/core/Registry.js", "../src/core/ListenerRegistry.js", "../src/core/TrapsRegistration.js", "../src/core/TrapsRegistry.js", "../src/core/Descriptor.js", "../src/actors.js", "../src/index.js", "../src/targets.browser.js"],
4
- "sourcesContent": ["\r\n/**\r\n * @imports\r\n */\r\nimport { _internals, _isObject, _isTypeObject, _isFunction, _getType } from '@webqit/util/js/index.js';\r\nimport { _from as _arrFrom } from '@webqit/util/arr/index.js';\r\nimport ListenerRegistry from './core/ListenerRegistry.js';\r\nimport TrapsRegistry from './core/TrapsRegistry.js';\r\nimport Descriptor from './core/Descriptor.js';\r\nimport { unproxy } from './actors.js';\r\n\r\n/* ---------------SPECIAL APIs--------------- */\r\n\r\n/**\r\n * Reduces a path array against handler.\r\n * \r\n * @param Array|Object\t target\r\n * @param Array\t path\r\n * @param Function\t receiver\r\n * @param Function\t final\r\n * @param Object\t params\r\n * \r\n * @example deep( object, [ segement1, segement2 ], observe, ( value, flags ) => {}, params );\r\n *\r\n * @return Any\r\n */\r\nexport function deep( target, path, receiver, final = x => x, params = {} ) {\r\n return ( function eat( target, path, _params ) {\r\n const segment = path[ _params.level ];\r\n // ---------------\r\n if ( _params.level < path.length - 1 ) { _params = { ..._params, preflight: true }; }\r\n else { _params = { ..._params, preflight: /*reset*/params.preflight }; }\r\n // ---------------\r\n return receiver( target, segment, ( result, ...args ) => {\r\n // -----------\r\n const paramsNext = ( flags = {} ) => ( { ..._params, ...flags, level: _params.level + 1, } );\r\n const addTrail = desc => {\r\n if ( !( desc instanceof Descriptor ) ) return;\r\n desc.path = [ desc.key ];\r\n if ( target instanceof Descriptor ) {\r\n desc.path = target.path.concat( desc.key );\r\n desc.context = target;\r\n }\r\n };\r\n // -----------\r\n if ( isPropsList( segment ) && Array.isArray( result ) ) {\r\n // -----------\r\n result.forEach( addTrail );\r\n if ( _params.level === path.length - 1 || ( !result.length && _params.midwayResults ) ) return final( result, ...args );\r\n return result.map( entry => eat( entry, path, paramsNext( ...args ) ) )\r\n // -----------\r\n }\r\n // -----------\r\n addTrail( result );\r\n const $isTypeObject = _isTypeObject( resolveObj( result, false ) );\r\n if ( _params.level === path.length - 1 || ( !$isTypeObject && _params.midwayResults ) ) return final( result, ...args );\r\n return $isTypeObject && eat( result, path, paramsNext( ...args ) );\r\n // -----------\r\n }, _params );\r\n } )( target, path.slice( 0 ), { ...params, level: 0 } );\r\n}\r\n\r\n/**\r\n * Adds an observer to a target's registry.\r\n *\r\n * @param Array|Object\t target\r\n * @param String|Object\t prop\r\n * @param Function\t receiver\r\n * @param Object\t\t params\r\n *\r\n * @return AbortController\r\n */\r\nexport function observe( target, prop, receiver, params = {} ) {\r\n // ---------------\r\n target = resolveObj( target );\r\n\tif ( _isFunction( arguments[ 1 ] ) ) {\r\n [ , receiver, params = {} ] = arguments;\r\n prop = Infinity;\r\n\t}\r\n\tif ( !_isFunction( receiver ) ) throw new Error( `Handler must be a function; \"${ _getType( receiver ) }\" given!` );\r\n // ---------------\r\n const emit = bind( target, prop, receiver, params );\r\n if ( params.preflight ) {\r\n params = { ...params, descripted: true };\r\n delete params.live;\r\n return get( target, prop, emit, params );\r\n }\r\n return emit();\r\n}\r\n\r\n/**\r\n * Adds an interceptor object to a target's registry.\r\n *\r\n * @param Array|Object\t target\r\n * @param Object\t traps\r\n * @param Object\t\t params\r\n *\r\n * @return AbortRegistry\r\n */\r\nexport function intercept( target, traps, params = {} ) {\r\n // ---------------\r\n target = resolveObj( target );\r\n if ( !_isObject( traps ) ) {\r\n [ /*target*/, /*type*/, /*handler*/, params = {} ] = arguments;\r\n traps = { [ arguments[ 1 ] ]: arguments[ 2 ] };\r\n }\r\n // ---------------\r\n return TrapsRegistry.getInstance( target, true, params.namespace ).addRegistration( { traps, params } );\r\n}\r\n\r\n/* ---------------QUERY APIs--------------- */\r\n\r\n/**\r\n * Performs a \"getOwnPropertyDescriptor\" operation.\r\n *\r\n * @param Array|Object\t target\r\n * @param String|Number\t prop\r\n * @param Function\t receiver\r\n * @param Object\t\t params\r\n *\r\n * @return Any\r\n */\r\nexport function getOwnPropertyDescriptor( target, prop, receiver = x => x, params = {} ) {\r\n return exec( target, 'getOwnPropertyDescriptor', { key: prop }, receiver, params );\r\n}\r\n\r\n/**\r\n * Performs a \"getOwnPropertyDescriptors\" operation.\r\n * @note this isn't part of the standard Reflect API.\r\n *\r\n * @param Array|Object\t target\r\n * @param String|Number\t prop\r\n * @param Function\t receiver\r\n * @param Object\t\t params\r\n *\r\n * @return Any\r\n */\r\nexport function getOwnPropertyDescriptors( target, prop, receiver = x => x, params = {} ) {\r\n return exec( target, 'getOwnPropertyDescriptors', { key: prop }, receiver, params );\r\n}\r\n\r\n/**\r\n * Performs a \"getPrototypeOf\" operation.\r\n *\r\n * @param Array|Object\t target\r\n * @param Function\t receiver\r\n * @param Object\t\t params\r\n *\r\n * @return Any\r\n */\r\nexport function getPrototypeOf( target, receiver = x => x, params = {} ) {\r\n return exec( target, 'getPrototypeOf', {}, receiver, params );\r\n}\r\n\r\n/**\r\n * Performs a \"isExtensible\" operation.\r\n *\r\n * @param Array|Object\t target\r\n * @param Function\t receiver\r\n * @param Object\t\t params\r\n *\r\n * @return Any\r\n */\r\nexport function isExtensible( target, receiver = x => x, params = {} ) {\r\n return exec( target, 'isExtensible', {}, receiver, params );\r\n}\r\n\r\n/**\r\n * Performs a \"ownKeys\" operation.\r\n *\r\n * @param Array|Object\t target\r\n * @param Function\t receiver\r\n * @param Object\t\t params\r\n *\r\n * @return Any\r\n */\r\nexport function ownKeys( target, receiver = x => x, params = {} ) {\r\n return exec( target, 'ownKeys', {}, receiver, params );\r\n}\r\n\r\n/**\r\n * Performs an operation of the given \"type\".\r\n *\r\n * @param Array|Object\t target\r\n * @param String|Number\t prop\r\n * @param Function\t receiver\r\n * @param Object\t\t params\r\n *\r\n * @return Any\r\n */\r\nexport function has( target, prop, receiver = x => x, params = {} ) {\r\n return exec( target, 'has', { key: prop }, receiver, params );\r\n}\r\n\r\n/**\r\n * Performs a get operation.\r\n *\r\n * @param Array|Object\t target\r\n * @param String|Number\t prop\r\n * @param Function\t receiver\r\n * @param Object\t params\r\n *\r\n * @return Any\r\n */\r\nexport function get( target, prop, receiver = x => x, params = {} ) {\r\n // ---------------\r\n let isLive;\r\n target = resolveObj( target );\r\n if ( _isObject( receiver ) ) { [ params, receiver ] = [ receiver, x => x ]; }\r\n else if ( params.live ) { isLive = true; }\r\n // ---------------\r\n return resolveProps( target, prop, props => {\r\n const related = [ ...props ];\r\n return ( function next( results, _props, _done ) {\r\n if ( !_props.length ) return _done( results );\r\n const prop = _props.shift();\r\n // ---------\r\n function defaultGet( descriptor, value = undefined ) {\r\n const _next = value => ( descriptor.value = value, next( results.concat( params.live || params.descripted ? descriptor : value ), _props, _done ) );\r\n if ( arguments.length > 1 ) return _next( value );\r\n const accessorizedProps = _internals( target, 'accessorizedProps', false );\r\n const accessorization = accessorizedProps && accessorizedProps.get( descriptor.key );\r\n if ( accessorization && accessorization.intact() ) {\r\n return _next( accessorization.getValue() );\r\n }\r\n return _next( Reflect.get( target, descriptor.key, ...( params.receiver ? [ params.receiver ] : [] ) ) );\r\n }\r\n // ---------\r\n const descriptor = new Descriptor( target, {\r\n type: 'get',\r\n key: prop,\r\n value: undefined,\r\n related,\r\n } );\r\n const listenerRegistry = TrapsRegistry.getInstance( target, false, params.namespace );\r\n if ( listenerRegistry ) {\r\n return listenerRegistry.emit( descriptor, defaultGet );\r\n }\r\n return defaultGet( descriptor );\r\n } )( [], props.slice( 0 ), results => {\r\n const result_s = isPropsList( prop/*original*/ ) ? results : results[ 0 ];\r\n if ( isLive ) {\r\n const emit = bind( target, prop, receiver, params );\r\n return emit( result_s );\r\n }\r\n return receiver( result_s );\r\n } );\r\n } );\r\n}\r\n\r\n/* ---------------MUTATION APIs--------------- */\r\n\r\n/**\r\n * Performs a batch operation.\r\n * \r\n * @param Object\t target\r\n * @param Function\t callback\r\n * @param Object\t params\r\n *\r\n * @return Void\r\n */\r\nexport function batch( target, callback, params = {} ) {\r\n return ListenerRegistry.getInstance( target, true, params.namespace ).batch( callback );\r\n}\r\n\r\n/**\r\n * Performs a set operation.\r\n * \r\n * @param Object\t target\r\n * @param String|Number\t prop\r\n * @param Any\t value\r\n * @param Function\t receiver\r\n * @param Object\t params\r\n * @param Bool\t def\r\n *\r\n * @return Any\r\n */\r\nexport function set( target, prop, value, receiver = x => x, params = {}, def = false ) {\r\n // ---------------\r\n target = resolveObj( target );\r\n let entries = [ [ prop, value ] ];\r\n if ( _isObject( prop ) ) {\r\n [ /*target*/, /*hash*/, receiver = x => x, params = {}, def = false ] = arguments;\r\n entries = Object.entries( prop );\r\n }\r\n if ( _isObject( receiver ) ) { [ def, params, receiver ] = [ typeof params === 'boolean' ? params : false, receiver, x => x ]; }\r\n // ---------------\r\n const related = entries.map( ( [ prop ] ) => prop );\r\n return ( function next( descriptors, entries, _done ) {\r\n if ( !entries.length ) return _done( descriptors );\r\n const [ prop, value ] = entries.shift();\r\n // ---------\r\n function defaultSet( descriptor, status = undefined ) {\r\n const _next = status => ( descriptor.status = status, next( descriptors.concat( descriptor ), entries, _done ) );\r\n if ( arguments.length > 1 ) return _next( descriptor, status );\r\n const accessorizedProps = _internals( target, 'accessorizedProps', false );\r\n const accessorization = accessorizedProps && accessorizedProps.get( descriptor.key );\r\n if ( descriptor.type === 'defineProperty' ) {\r\n if ( accessorization && !accessorization.restore() ) _next( false );\r\n Object.defineProperty( target, descriptor.key, descriptor.value );\r\n return _next( true );\r\n }\r\n if ( accessorization && accessorization.intact() ) {\r\n return _next( accessorization.setValue( descriptor.value ) );\r\n }\r\n return _next( Reflect.set( target, descriptor.key, descriptor.value ) );\r\n }\r\n // ---------\r\n function exec( isUpdate, oldValue ) {\r\n const descriptor = new Descriptor( target, {\r\n type: def ? 'defineProperty' : 'set',\r\n key: prop,\r\n value,\r\n isUpdate,\r\n oldValue,\r\n related: [ ...related ],\r\n detail: params.detail,\r\n } );\r\n const listenerRegistry = TrapsRegistry.getInstance( target, false, params.namespace );\r\n return listenerRegistry \r\n ? listenerRegistry.emit( descriptor, defaultSet ) \r\n : defaultSet( descriptor );\r\n }\r\n // ---------\r\n return has( target, prop, isUpdate => {\r\n if ( !isUpdate || params.oldValue !== true ) return exec( isUpdate );\r\n return get( target, prop, oldValue => exec( isUpdate, oldValue ), params );\r\n }, params );\r\n // ---------\r\n } )( [], entries.slice( 0 ), descriptors => {\r\n const listenerRegistry = ListenerRegistry.getInstance( target, false, params.namespace );\r\n if ( listenerRegistry ) listenerRegistry.emit( descriptors );\r\n return receiver(\r\n isPropsList( prop/*original*/ ) ? descriptors.map( opr => opr.status ) : descriptors[ 0 ].status\r\n );\r\n } );\r\n}\r\n\r\n/**\r\n * Performs a defineProperty operation.\r\n * \r\n * @param Object\t target\r\n * @param String|Number\t prop\r\n * @param Object\t descriptor\r\n * @param Function\t receiver\r\n * @param Object\t params\r\n *\r\n * @return Any\r\n */\r\nexport function defineProperty( target, prop, descriptor, receiver = x => x, params = {} ) {\r\n return set( target, prop, descriptor, receiver, params, true/*def*/ );\r\n}\r\n\r\n/**\r\n * Performs a defineProperties operation.\r\n * @note this isn't part of the standard Reflect API.\r\n * \r\n * @param Object\t target\r\n * @param Object\t descriptors\r\n * @param Function\t receiver\r\n * @param Object\t params\r\n *\r\n * @return Any\r\n */\r\nexport function defineProperties( target, descriptors, receiver = x => x, params = {} ) {\r\n return set( target, descriptors, receiver, params, true/*def*/ );\r\n}\r\n\r\n/**\r\n * Performs a delete operation.\r\n * \r\n * @param Object\t target\r\n * @param String|Number\t prop\r\n * @param Function\t receiver\r\n * @param Object\t params\r\n *\r\n * @return Any\r\n */\r\nexport function deleteProperty( target, prop, receiver = x => x, params = {} ) {\r\n // ---------------\r\n target = resolveObj( target );\r\n if ( _isObject( receiver ) ) { [ params, receiver ] = [ receiver, x => x ]; }\r\n // ---------------\r\n const props = _arrFrom( prop ), related = [ ...props ];\r\n return ( function next( descriptors, props, _done ) {\r\n if ( !props.length ) return _done( descriptors );\r\n const prop = props.shift();\r\n // ---------\r\n function defaultDel( descriptor, status = undefined ) {\r\n const _next = status => ( descriptor.status = status, next( descriptors.concat( descriptor ), props, _done ) );\r\n if ( arguments.length > 1 ) return _next( descriptor, status );\r\n const accessorizedProps = _internals( target, 'accessorizedProps', false );\r\n const accessorization = accessorizedProps && accessorizedProps.get( descriptor.key );\r\n if ( accessorization && !accessorization.restore() ) _next( false );\r\n return _next( Reflect.deleteProperty( target, descriptor.key ) );\r\n }\r\n // ---------\r\n function exec( oldValue ) {\r\n const descriptor = new Descriptor( target, {\r\n type: 'deleteProperty',\r\n key: prop,\r\n oldValue,\r\n related: [ ...related ],\r\n detail: params.detail,\r\n } );\r\n const listenerRegistry = TrapsRegistry.getInstance( target, false, params.namespace );\r\n return listenerRegistry \r\n ? listenerRegistry.emit( descriptor, defaultDel ) \r\n : defaultDel( descriptor );\r\n }\r\n // ---------\r\n if ( params.oldValue === false ) return exec();\r\n return get( target, prop, exec, params );\r\n // ---------\r\n } )( [], props.slice( 0 ), descriptors => {\r\n const listenerRegistry = ListenerRegistry.getInstance( target, false, params.namespace );\r\n if ( listenerRegistry ) listenerRegistry.emit( descriptors );\r\n return receiver(\r\n isPropsList( prop/*original*/ ) ? descriptors.map( opr => opr.status ) : descriptors[ 0 ].status\r\n );\r\n } );\r\n}\r\n\r\n/* ---------------EFFECT APIs--------------- */\r\n\r\n/**\r\n * Performs a \"construct\" operation.\r\n *\r\n * @param Array|Object\t target\r\n * @param Array\t\t\t argumentsList\r\n * @param Object\t\t newTarget\r\n * @param Function\t receiver\r\n * @param Object\t\t params\r\n *\r\n * @return Any\r\n */\r\nexport function construct( target, argumentsList, newTarget = null, receiver = x => x, params = {} ) {\r\n return exec( target, 'construct', arguments.length > 2 ? { argumentsList, newTarget } : { argumentsList }, receiver, params );\r\n}\r\n\r\n/**\r\n * Performs an \"apply\" operation.\r\n *\r\n * @param Array|Object\t target\r\n * @param Any\t thisArgument\r\n * @param Array\t argumentsList\r\n * @param Function\t receiver\r\n * @param Object\t\t params\r\n *\r\n * @return Any\r\n */\r\nexport function apply( target, thisArgument, argumentsList, receiver = x => x, params = {} ) {\r\n return exec( target, 'apply', { thisArgument, argumentsList }, receiver, params );\r\n}\r\n\r\n/**\r\n * Performs a \"setPrototypeOf\" operation.\r\n *\r\n * @param Array|Object\t target\r\n * @param Anyr\t proto\r\n * @param Function\t receiver\r\n * @param Object\t\t params\r\n *\r\n * @return Any\r\n */\r\nexport function setPrototypeOf( target, proto, receiver = x => x, params = {} ) {\r\n return exec( target, 'setPrototypeOf', { proto }, receiver, params );\r\n}\r\n\r\n/**\r\n * Performs a \"preventExtension\" operation.\r\n *\r\n * @param Array|Object\t target\r\n * @param Function\t receiver\r\n * @param Object\t\t params\r\n *\r\n * @return Any\r\n */\r\nexport function preventExtensions( target, receiver = x => x, params = {} ) {\r\n return exec( target, 'preventExtensions', {}, receiver, params );\r\n}\r\n\r\n/* ---------------HELPER APIs--------------- */\r\n\r\n/**\r\n * Adds an observer to a target's registry.\r\n *\r\n * @param Array|Object\t target\r\n * @param String|Object\t prop\r\n * @param Function\t receiver\r\n * @param Object\t\t params\r\n *\r\n * @return Function: AbortController\r\n */\r\nfunction bind( target, prop, receiver, params = {} ) {\r\n let controller;\r\n if ( !params.signal ) {\r\n controller = new AbortController;\r\n params = { ...params, signal: controller.signal };\r\n }\r\n const listenerRegistry = ListenerRegistry.getInstance( target, true, params.namespace );\r\n return function emit( descriptor_s, prevRegistration = null ) {\r\n prevRegistration?.remove();\r\n const registrationNext = listenerRegistry.addRegistration( prop, emit, params );\r\n const flags = { signal: registrationNext.signal, };\r\n if ( arguments.length ) {\r\n receiver( descriptor_s, flags );\r\n }\r\n return controller;\r\n };\r\n}\r\n\r\n/**\r\n * Performs an operation of the given \"type\".\r\n *\r\n * @param Array|Object\t target\r\n * @param String\t\t type\r\n * @param Object\t\t payload\r\n * @param Function\t receiver\r\n * @param Object\t\t params\r\n *\r\n * @return Any\r\n */\r\nfunction exec( target, type, payload = {}, receiver = x => x, params = {} ) {\r\n // ---------\r\n target = resolveObj( target );\r\n if ( _isObject( receiver ) ) { [ params, receiver ] = [ receiver, x => x ]; } \r\n // ---------\r\n function defaultExec( descriptor, result ) {\r\n if ( arguments.length > 1 ) return receiver( result );\r\n return receiver( Reflect[ type ]( target, ...Object.values( payload ) ) );\r\n }\r\n // ---------\r\n const descriptor = new Descriptor( target, { type, ...payload } );\r\n const listenerRegistry = TrapsRegistry.getInstance( target, false, params.namespace );\r\n if ( listenerRegistry ) {\r\n return listenerRegistry.emit( descriptor, defaultExec );\r\n }\r\n return defaultExec( descriptor );\r\n}\r\n\r\n// Asks if prop is a multi-result field\r\nfunction isPropsList( prop ) {\r\n return prop === Infinity || Array.isArray( prop );\r\n}\r\n\r\n// Resolves obj down to it's self\r\nfunction resolveObj( obj, assert = true ) {\r\n\tif ( ( !obj || !_isTypeObject( obj ) ) && assert ) throw new Error( `Object must be of type object or array! \"${ _getType( obj ) }\" given.` );\r\n if ( obj instanceof Descriptor ) {\r\n obj = obj.value;\r\n }\r\n\treturn obj && unproxy( obj );\r\n}\r\n\r\n// Resolves prop down to actual keys\r\nfunction resolveProps( obj, prop, receiver ) {\r\n if ( prop === Infinity ) return ownKeys( obj, receiver );\r\n return receiver( _arrFrom( prop ) );\r\n}\r\n", "\n/**\n * Tells if val is pure object.\n *\n * @param object\t \tval\n *\n * @return bool\n */\nexport default function(val) {\n\treturn !Array.isArray(val) && typeof val === 'object' && val;\n};\n", "\n/**\n * Returns the val's type.\n *\n * @param string \tval\n *\n * @return string\n */\nexport default function(val) {\n\treturn typeof val;\n};\n", "\n/**\n * Creates and/or returns an \"internals\" object for the given object.\n * \n * @param Any obj\n * @param String namespace\n * \n * @return Object\n */\nexport default function internals(obj, ...namespaces) {\n if (!globalThis.WebQitInternalsRegistry) {\n globalThis.WebQitInternalsRegistry = new Map;\n }\n var itnls = globalThis.WebQitInternalsRegistry.get(obj);\n if (!itnls) {\n itnls = new Map;\n if (namespaces[0] === false) {\n // FALSE means: Return orphan Map if not exists\n return itnls;\n }\n globalThis.WebQitInternalsRegistry.set(obj, itnls);\n }\n var _ns, _itnls;\n while ((_ns = namespaces.shift())) {\n if ((_itnls = itnls) && !(itnls = itnls.get(_ns))) {\n itnls = new Map;\n if (namespaces[0] === false) {\n // FALSE means: Return orphan Map if not exists\n return itnls;\n }\n _itnls.set(_ns, itnls);\n }\n }\n return itnls;\n}", "\n/**\n * Tells if val is of type \"array\".\n *\n * @param object\t \tval\n *\n * @return bool\n */\nexport default function(val) {\n\treturn Array.isArray(val);\n};\n", "\n/**\n * Tells if val is of type \"function\".\n * This holds true for both regular functions and classes.\n *\n * @param object\t \tval\n *\n * @return bool\n */\nexport default function(val) {\n\treturn typeof val === 'function';\n};\n", "\n/**\n * @imports\n */\nimport _isTypeFunction from './isTypeFunction.js';\n\n/**\n * Tells if val is of type \"class\".\n *\n * @param object \t\tval\n *\n * @return bool\n */\nexport default function(val) {\n\treturn _isTypeFunction(val) && /^class\\s?/.test(Function.prototype.toString.call(val));\n};\n", "\n/**\n * Tells if val is undefined or is null.\n *\n * @param string \tval\n *\n * @return bool\n */\nexport default function(val) {\n\treturn val === null || val === '';\n};\n", "\n/**\n * Tells if val is undefined or is of type \"undefined\".\n *\n * @param string \tval\n *\n * @return bool\n */\nexport default function(val) {\n\treturn arguments.length && (val === undefined || typeof val === 'undefined');\n};\n", "\n/**\n * @imports\n */\nimport _isTypeFunction from './isTypeFunction.js';\n\n/**\n * Tells if val is of type \"object\".\n * This holds true for anything object, including built-ins.\n *\n * @param object\t \tval\n *\n * @return bool\n */\nexport default function(val) {\n\treturn Array.isArray(val) || (typeof val === 'object' && val) || _isTypeFunction(val);\n};\n", "\n/**\n * @imports\n */\nimport _isNull from './isNull.js';\nimport _isUndefined from './isUndefined.js';\nimport _isTypeObject from './isTypeObject.js';\n\n/**\n * Tells if val is empty in its own type.\n * This holds true for NULLs, UNDEFINED, FALSE, 0,\n * objects without keys, empty arrays.\n *\n * @param string \tval\n *\n * @return bool\n */\nexport default function(val) {\n\treturn _isNull(val) || _isUndefined(val) || val === false || val === 0 \n\t\t|| (_isTypeObject(val) && !Object.keys(val).length);\n};\n", "\n/**\n * @imports\n */\nimport _isTypeFunction from './isTypeFunction.js';\n\n/**\n * Tells if val is of type \"function\".\n *\n * @param object \t\tval\n *\n * @return bool\n */\nexport default function(val) {\n\treturn _isTypeFunction(val) || (val && {}.toString.call(val) === '[object function]');\n};\n", "\n/**\n * Tells if val is of type \"string\".\n *\n * @param string \tval\n *\n * @return bool\n */\nexport default function(val) {\n\treturn val instanceof String || (typeof val === 'string' && val !== null);\n};\n", "\n/**\n * @imports\n */\nimport _isString from './isString.js';\nimport _isUndefined from './isUndefined.js';\n\n/**\n * Tells if val is \"array-like\".\n * This holds true for anything that has a length property.\n *\n * @param object\t \tval\n *\n * @return bool\n */\nexport default function(val) {\n\treturn !_isString(val) && !_isUndefined(val.length);\n};\n", "\n/**\n * @imports\n */\nimport _isArray from '../js/isArray.js';\nimport _isTypeArray from '../js/isTypeArray.js';\nimport _isEmpty from '../js/isEmpty.js';\nimport _isObject from '../js/isObject.js';\n\n/**\n * Casts an array-like object to an array.\n *\n * @param mixed \tval\n * @param bool\t \tcastObject\n *\n * @return array\n */\nexport default function(val, castObject = true) {\n\tif (_isArray(val)) {\n\t\treturn val;\n\t};\n\tif (!castObject && _isObject(val)) {\n\t\treturn [val];\n\t};\n\tif (val !== false && val !== 0 && _isEmpty(val)) {\n\t\treturn [];\n\t};\n\tif (_isTypeArray(val)) {\n\t\treturn Array.prototype.slice.call(val);\n\t};\n\tif (_isObject(val)) {\n\t\treturn Object.values(val);\n\t};\n\treturn [val];\n};\n", "\r\n/**\r\n * ---------------------------\r\n * The Registration class\r\n * ---------------------------\r\n */\r\n\r\nexport default class Registration {\r\n\t\r\n\t/**\r\n\t * Initializes the instance.\r\n\t *\r\n\t * @param Registry\t\t\tregistry\r\n\t * @param object\t\t\tdfn\r\n\t *\r\n\t * @return void\r\n\t */\r\n\tconstructor( registry, dfn ) {\r\n\t\tthis.registry = registry;\r\n\t\tObject.assign( this, { ...dfn, target: registry.target } );\r\n\t\tif ( this.params.signal ) {\r\n\t\t\tthis.params.signal.addEventListener( 'abort', () => this.remove() );\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Sets a \"disconnected\" flag on the Registration.\r\n\t *\r\n\t * @return void\r\n\t */\r\n\tremove() {\r\n\t\tthis.removed = true;\r\n\t\treturn this.registry.removeRegistration( this );\r\n\t}\r\n}", "\r\n/**\r\n * @imports\r\n */\r\nimport { _from as _arrFrom } from '@webqit/util/arr/index.js';\r\nimport Registration from './Registration.js';\r\n\r\n/**\r\n * ---------------------------\r\n * The ListenerRegistration class\r\n * ---------------------------\r\n */\r\n\r\nexport default class ListenerRegistration extends Registration {\r\n\t\r\n\t/**\r\n\t * @constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper( ...arguments );\r\n\t\tObject.defineProperty( this, 'abortController', { value: new AbortController } );\r\n\t\tObject.defineProperty( this, 'signal', { value: this.abortController.signal } );\r\n\t}\r\n\r\n\t/**\r\n\t * De-registers the instance.\r\n\t * \r\n\t * @return Void\r\n\t */\r\n\tremove() {\r\n\t\tthis.abortController.abort();\r\n\t\tsuper.remove();\r\n\t}\r\n\r\n\t/**\r\n\t * Calls the observer's handler function\r\n\t * on matching with the event's fields.\r\n\t *\r\n\t * @param Array\t\t\t \t\tevents\r\n\t *\r\n\t * @return Any\r\n\t */\r\n\tfire( events ) {\r\n\t\tlet matches = events, filter = this.filter;\r\n\t\tif ( filter !== Infinity && ( filter = _arrFrom( filter ) ) ) {\r\n\t\t\tmatches = events.filter( event => filter.includes( event.key ) );\r\n\t\t}\r\n\t\tif ( matches.length ) {\r\n\t\t\treturn this.filter === Infinity || Array.isArray( this.filter )\r\n\t\t\t\t? this.handler( matches, this )\r\n\t\t\t\t: this.handler( matches[ 0 ], this );\r\n\t\t}\r\n\t}\r\n}\r\n", "\r\n/**\r\n * @imports\r\n */\r\nimport { _isTypeObject, _getType, _internals } from '@webqit/util/js/index.js';\r\nimport { _from as _arrFrom, _intersect, _equals as _arrEquals } from '@webqit/util/arr/index.js';\r\n\r\n/**\r\n * ---------------------------\r\n * The Registry class\r\n * ---------------------------\r\n */\r\n\r\nexport default class Registry {\r\n\t\r\n\t/**\r\n\t * Initializes the instance.\r\n\t *\r\n\t * @param object\ttarget\r\n\t * \r\n\t * @return void\r\n\t */\r\n\tconstructor( target ) {\r\n\t\tthis.target = target;\r\n\t\tthis.entries = [];\r\n\t}\r\n\t\r\n\t/**\r\n\t * Adds an Registration instance\r\n\t * with optional tags.\r\n\t *\r\n\t * @param Registration\t\tregistration\r\n\t *\r\n\t * @return Registration\r\n\t */\r\n\taddRegistration( registration ) {\r\n\t\tthis.entries.push( registration );\r\n\t\treturn registration;\r\n\t}\r\n\t\r\n\t/**\r\n\t * Removes registrations by reference.\r\n\t *\r\n\t * @param Registration\t\tregistration\r\n\t *\r\n\t * @return void\r\n\t */\r\n\tremoveRegistration( registration ) {\r\n\t\tthis.entries = this.entries.filter( _entry => _entry !== registration );\r\n\t}\r\n\t\t\r\n\t/**\r\n\t * Returns a observer-specific object embedded on an element.\r\n\t *\r\n\t * @param string\t\ttype\r\n\t * @param array|object\ttarget\r\n\t * @param bool \tcreateIfNotExists\r\n\t * @param string \tnamespace\r\n\t *\r\n\t * @return Registry\r\n\t */\r\n\tstatic _getInstance( type, target, createIfNotExists = true, namespace = this.__namespace ) {\r\n\t\tif ( !_isTypeObject( target ) ) throw new Error( `Subject must be of type object; \"${ _getType( target ) }\" given!` );\r\n\t\tlet ImplementationClass = this;\r\n\t\tif ( namespace && globalThis.WebQitObserverNamespaceRegistry.has( type + '-' + namespace ) ) {\r\n\t\t\tImplementationClass = globalThis.WebQitObserverNamespaceRegistry.get( type + '-' + namespace );\r\n\t\t\ttype += '-' + namespace\r\n\t\t}\r\n\t\tif ( !_internals( target, 'observerApi' ).has( type ) && createIfNotExists ) {\r\n\t\t\t_internals( target, 'observerApi' ).set( type, new ImplementationClass( target ) );\r\n\t\t}\r\n\t\treturn _internals( target, 'observerApi' ).get( type );\r\n\t}\r\n\r\n\t/**\r\n\t * Extend a Fireable Class with a namespace.\r\n\t *\r\n\t * @param string\t\tnamespace\r\n\t * @param class \tImplementationClass\r\n\t *\r\n\t * @return void|class\r\n\t */\r\n\tstatic _namespace( type, namespace, ImplementationClass = null ) {\r\n\t\ttype += '-' + namespace;\r\n\t\tif ( arguments.length === 2 ) return globalThis.WebQitObserverNamespaceRegistry.get( type );\r\n\t\tif ( !( ImplementationClass.prototype instanceof this ) ) {\r\n\t\t\tthrow new Error( `The implementation of the namespace ${ this.name }.${ namespace } must be a subclass of ${ this.name }.` );\r\n\t\t}\r\n\t\tglobalThis.WebQitObserverNamespaceRegistry.set( type, ImplementationClass );\r\n\t\tImplementationClass.__namespace = namespace;\r\n\t}\r\n}\r\n\r\nif ( !globalThis.WebQitObserverNamespaceRegistry ) {\r\n\tglobalThis.WebQitObserverNamespaceRegistry = new Map;\r\n}\r\n", "\r\n/**\r\n * @imports\r\n */\r\nimport ListenerRegistration from './ListenerRegistration.js';\r\nimport Registry from './Registry.js';\r\n\r\n/**\r\n * ---------------------------\r\n * The ListenerRegistry class\r\n * ---------------------------\r\n */\r\n\r\nexport default class ListenerRegistry extends Registry {\r\n\r\n\tstatic getInstance( target, createIfNotExists = true, namespace = null ) {\r\n\t\treturn super._getInstance( 'listeners', ...arguments );\r\n\t}\r\n\r\n\tstatic namespace( namespace, ImplementationClass = null ) {\r\n\t\treturn super._namespace( 'listeners', ...arguments );\r\n\t}\r\n\r\n\t/**\r\n\t * @constructor\r\n\t */\r\n\tconstructor( target ) {\r\n\t\tsuper( target );\r\n\t\tthis.batches = [];\r\n\t}\r\n\t\r\n\t/**\r\n\t * @addRegistration\r\n\t */\r\n\taddRegistration( filter, handler, params ) {\r\n\t\treturn super.addRegistration( new ListenerRegistration( this, { filter, handler, params } ) );\r\n\t}\r\n\t\r\n\t/**\r\n\t * Fires all observers with the given evt (change).\r\n\t *\r\n\t * @param Arrayn events\r\n\t *\r\n\t * @return Void\r\n\t */\r\n\temit( events ) {\r\n\t\tif ( this.batches.length ) {\r\n\t\t\tthis.batches[ 0 ].events.push( ...events );\r\n\t\t\treturn\r\n\t\t}\r\n\t\tthis.entries.forEach( listener => listener.fire( events ) );\r\n\t}\r\n\r\n\t/**\r\n\t * Fires all observers with the given evt (change).\r\n\t *\r\n\t * @param Arrayn events\r\n\t *\r\n\t * @return Void\r\n\t */\r\n\tbatch( callback ) {\r\n\t\tthis.batches.unshift( { entries: [ ...this.entries ], events: [] } );\r\n\t\tconst returnValue = callback();\r\n\t\tconst batch = this.batches.shift();\r\n\t\tif ( batch.events.length ) {\r\n\t\t\tbatch.entries.forEach( listener => listener.fire( batch.events ) );\r\n\t\t}\r\n\t\treturn returnValue;\r\n\t}\r\n\r\n}", "\r\n/**\r\n * @imports\r\n */\r\nimport Registration from './Registration.js';\r\n\r\n/**\r\n * ---------------------------\r\n * The TrapsRegistration class\r\n * ---------------------------\r\n */\r\n\r\nexport default class TrapsRegistration extends Registration {\r\n\t\r\n\t/**\r\n\t * Calls the observer's handler function\r\n\t * on matching with the descriptor's fields.\r\n\t *\r\n\t * @param Descriptor\t\t\t \tdescriptor\r\n\t * @param function\t\t\t\t\tnext\r\n\t * @param mixed\t\t\t\t\t \trecieved\r\n\t *\r\n\t * @return void\r\n\t */\r\n\texec( descriptor, next, recieved ) {\r\n\t\tif ( this.running || !this.traps[ descriptor.type ] ) {\r\n\t\t\treturn next( ...Array.prototype.slice.call( arguments, 2 ) );\r\n\t\t}\r\n\t\tthis.running = true;\r\n\t\treturn this.traps[ descriptor.type ]( descriptor, recieved, ( ...args ) => {\r\n\t\t\tthis.running = false;\r\n\t\t\treturn next( ...args );\r\n\t\t} );\r\n\t}\r\n}", "\r\n/**\r\n * @imports\r\n */\r\nimport TrapsRegistration from './TrapsRegistration.js';\r\nimport Registry from './Registry.js';\r\n\r\n/**\r\n * ---------------------------\r\n * The TrapsRegistry class\r\n * ---------------------------\r\n */\r\n\r\nexport default class TrapsRegistry extends Registry {\r\n\r\n\tstatic getInstance( target, createIfNotExists = true, namespace = null ) {\r\n\t\treturn super._getInstance( 'traps', ...arguments );\r\n\t}\r\n\r\n\tstatic namespace( namespace, ImplementationClass = null ) {\r\n\t\treturn super._namespace( 'traps', ...arguments );\r\n\t}\r\n\t\r\n\t/**\r\n\t * @inheritdoc\r\n\t */\r\n\taddRegistration( dfn ) {\r\n\t\treturn super.addRegistration( new TrapsRegistration( this, dfn ) );\r\n\t}\r\n\r\n\t/**\r\n\t * Fires all interceptors with the given action.\r\n\t *\r\n\t * @param Descriptor\t\tdescriptor\r\n\t * @param function\t\t\tdefaultHandler\r\n\t *\r\n\t * @return mixed\r\n\t */\r\n\temit( descriptor, defaultHandler = null ) {\r\n\t\tconst $this = this;\r\n\t\treturn ( function next( index, ..._args ) {\r\n\t\t\tconst registration = $this.entries[ index ];\r\n\t\t\tif ( registration ) {\r\n\t\t\t\treturn registration.exec( descriptor, ( ...args ) => {\r\n\t\t\t\t\treturn next( index + 1, ...args );\r\n\t\t\t\t}/*next*/, ..._args );\r\n\t\t\t}\r\n\t\t\treturn defaultHandler ? defaultHandler( descriptor, ..._args ) : _args[ 0 ];\r\n\t\t} )( 0 );\r\n\t}\r\n}", "\r\n/**\r\n * ---------------------------\r\n * The Descriptor class\r\n * ---------------------------\r\n */\r\n\r\nexport default class Descriptor {\r\n\t\r\n\t/**\r\n\t * Initializes the instance.\r\n\t *\r\n\t * @param array|object\ttarget\r\n\t * @param object\t\tdfn\r\n\t *\r\n\t * @return void\r\n\t */\r\n\tconstructor( target, dfn ) {\r\n\t\tthis.target = target;\r\n\t\tif ( !( dfn.type ) ) throw new Error( 'Descriptor type must be given in definition!' );\r\n\t\tObject.assign( this, dfn );\r\n\t}\r\n}", "\r\n/**\r\n * @imports\r\n */\r\nimport { _from as _arrFrom } from '@webqit/util/arr/index.js';\r\nimport { _isClass, _isFunction, _isTypeObject, _getType, _internals } from '@webqit/util/js/index.js';\r\nimport { set, deleteProperty, has, get, ownKeys, defineProperty, getOwnPropertyDescriptor } from \"./main.js\";\r\nimport { apply, construct, getPrototypeOf, setPrototypeOf, isExtensible, preventExtensions } from \"./main.js\";\r\n\r\n/* ---------------ACCESSORIZE METHODS--------------- */\r\n\r\n/**\r\n * Accessorizes props.\r\n *\r\n * @param Array|Object\ttarget\r\n * @param String|Array\tprops\r\n * @param Object\t\tparams\r\n *\r\n * @return Array\r\n */\r\nexport function accessorize( target, props, params = {} ) {\r\n target = resolveTarget( target );\r\n const accessorizedProps = _internals( target, 'accessorizedProps' );\r\n // ---------\r\n function getDescriptorDeep( prop ) {\r\n let descriptor, proto = target;\r\n while ( !descriptor && ( proto = Object.getPrototypeOf( proto ) ) ) {\r\n descriptor = Object.getOwnPropertyDescriptor( proto, prop );\r\n }\r\n return descriptor \r\n ? { proto, descriptor } \r\n : { descriptor: { value: undefined } };\r\n }\r\n // ---------\r\n function accessorizeProp( prop ) {\r\n if ( accessorizedProps.has( prop ) ) return true;\r\n // ------------------\r\n // Current Descriptor Record\r\n const currentDescriptorRecord = getDescriptorDeep( prop );\r\n currentDescriptorRecord.getValue = function() {\r\n return 'get' in this.descriptor ? this.descriptor.get() : this.descriptor.value;\r\n };\r\n currentDescriptorRecord.setValue = function( value ) {\r\n return 'set' in this.descriptor ? this.descriptor.set( value ) : ( this.descriptor.value = value )\r\n };\r\n currentDescriptorRecord.intact = function() {\r\n const currentDescriptor = Object.getOwnPropertyDescriptor( target, prop );\r\n return currentDescriptor.get === accessorization.get \r\n && currentDescriptor.set === accessorization.set\r\n && accessorizedProps.get( prop ) === this;\r\n };\r\n currentDescriptorRecord.restore = function() {\r\n if ( !this.intact() ) return false;\r\n if ( this.proto !== target ) { delete target[ prop ]; }\r\n else { Object.defineProperty( target, prop, this.descriptor ); }\r\n accessorizedProps.delete( prop );\r\n return true;\r\n };\r\n accessorizedProps.set( prop, currentDescriptorRecord );\r\n // ------------------\r\n // enumerable, configurable\r\n const { enumerable = true, configurable = true } = currentDescriptorRecord.descriptor;\r\n const accessorization = { enumerable, configurable };\r\n // set, get\r\n if ( [ 'value', 'set' ].some( x => x in currentDescriptorRecord.descriptor ) ) {\r\n accessorization.set = function ( value ) { return set( this, prop, value, params ); };\r\n }\r\n if ( [ 'value', 'get' ].some( x => x in currentDescriptorRecord.descriptor ) ) {\r\n accessorization.get = function () { return get( this, prop, params ); };\r\n }\r\n try {\r\n Object.defineProperty( target, prop, accessorization );\r\n return true;\r\n } catch( e ) {\r\n accessorizedProps.delete( prop );\r\n return false;\r\n }\r\n }\r\n const _props = Array.isArray( props ) ? props : (\r\n props === undefined ? Object.keys( target ) : [ props ]\r\n );\r\n const statuses = _props.map( accessorizeProp );\r\n return props === undefined || Array.isArray( props ) \r\n ? statuses \r\n : statuses[ 0 ];\r\n}\r\n\r\n/**\r\n * Unaccessorizes previously accessorized props.\r\n *\r\n * @param Array|Object\ttarget\r\n * @param String|Array\tprops\r\n * @param Object\t\tparams\r\n *\r\n * @return Array\r\n */\r\nexport function unaccessorize( target, props, params = {} ) {\r\n target = resolveTarget( target );\r\n const accessorizedProps = _internals( target, 'accessorizedProps' );\r\n function unaccessorizeProp( prop ) {\r\n if ( !accessorizedProps.has( prop ) ) return true;\r\n return accessorizedProps.get( prop ).restore();\r\n }\r\n const _props = Array.isArray( props ) ? props : (\r\n props === undefined ? Object.keys( target ) : [ props ]\r\n );\r\n const statuses = _props.map( unaccessorizeProp );\r\n return props === undefined || Array.isArray( props ) \r\n ? statuses \r\n : statuses[ 0 ];\r\n}\r\n\r\n/* ---------------PROXY METHODS--------------- */\r\n\r\n/**\r\n * Returns an object as a proxy and binds all instance methods\r\n * to the proxy instead of the object itself.\r\n *\r\n * @param Array|Object\t\ttarget\r\n * @param Object\t\t params\r\n *\r\n * @return Proxy\r\n */\r\nexport function proxy( target, params = {} ) {\r\n target = resolveTarget( target );\r\n const proxy = new Proxy( target, {\r\n apply: ( target, thisArgument, argumentsList ) => apply( target, thisArgument, argumentsList, params ),\r\n construct: ( target, argumentsList, newTarget = null ) => construct( target, argumentsList, newTarget, params ),\r\n defineProperty: ( target, propertyKey, attributes ) => defineProperty( target, propertyKey, attributes, params ),\r\n deleteProperty: ( target, propertyKey ) => deleteProperty( target, propertyKey, params ),\r\n get: ( target, propertyKey, receiver = null ) => {\r\n const val = get( target, propertyKey, { ...params, receiver } );\r\n if ( params.proxyAutoBinding !== false && _isFunction( val ) && !_isClass( val )) {\r\n return val.bind( proxy );\r\n }\r\n return val;\r\n },\r\n getOwnPropertyDescriptor: ( target, propertyKey ) => getOwnPropertyDescriptor( target, propertyKey, params ),\r\n getPrototypeOf: target => getPrototypeOf( target, params ),\r\n has: ( target, propertyKey ) => has( target, propertyKey, params ),\r\n isExtensible: target => isExtensible( target, params ),\r\n ownKeys: target => ownKeys( target, params ),\r\n preventExtensions: target => preventExtensions( target, params ),\r\n set: ( target, propertyKey, value, receiver = null ) => set( target, propertyKey, value, { ...params, receiver } ),\r\n setPrototypeOf: ( target, prototype ) => setPrototypeOf( target, prototype, params ),\r\n });\r\n _internals( proxy ).set( proxy, target );\r\n\treturn proxy;\r\n}\r\n\r\n/**\r\n * Returns the original object earlier proxied by proxy().\r\n *\r\n * @param Proxy|Any\t\ttarget\r\n *\r\n * @return Any\r\n */\r\nexport function unproxy( target ) {\r\n // Proxy targets are mapped to their own instances internally\r\n return _internals( target, false ).get( target ) || target;\r\n}\r\n\r\n/* ---------------HELPERS--------------- */\r\n\r\n/** \r\n * Ensures target object is an object or array.\r\n *\r\n * @param Array|Object\ttarget\r\n *\r\n * @return Array|Object\r\n */\r\nfunction resolveTarget( target ) {\r\n\tif ( !target || !_isTypeObject( target ) ) throw new Error('Target must be of type object!');\r\n\treturn unproxy( target );\r\n}\r\n", "\r\n/**\r\n * @imports\r\n */\r\nimport * as main from './main.js';\r\nimport * as actors from './actors.js';\r\n\r\nconst Observer = { ...main, ...actors };\r\n\r\nexport default Observer;", "\r\n/**\r\n * @imports\r\n */\r\nimport Observer from './index.js';\r\n\r\n// As globals\r\nif ( !self.webqit ) { self.webqit = {}; }\r\nself.webqit.Observer = Observer;"],
5
- "mappings": "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",
6
- "names": ["main_exports", "__export", "apply", "batch", "construct", "deep", "defineProperties", "defineProperty", "deleteProperty", "get", "getOwnPropertyDescriptor", "getOwnPropertyDescriptors", "getPrototypeOf", "has", "intercept", "isExtensible", "observe", "ownKeys", "preventExtensions", "set", "setPrototypeOf", "isObject_default", "val", "getType_default", "val", "internals", "obj", "namespaces", "itnls", "_ns", "_itnls", "isArray_default", "val", "isTypeFunction_default", "val", "isClass_default", "val", "isTypeFunction_default", "isNull_default", "val", "isUndefined_default", "val", "isTypeObject_default", "val", "isTypeFunction_default", "isEmpty_default", "val", "isNull_default", "isUndefined_default", "isTypeObject_default", "isFunction_default", "val", "isTypeFunction_default", "isString_default", "val", "isTypeArray_default", "val", "isString_default", "isUndefined_default", "from_default", "val", "castObject", "isArray_default", "isObject_default", "isEmpty_default", "isTypeArray_default", "Registration", "registry", "dfn", "ListenerRegistration", "Registration", "events", "matches", "filter", "from_default", "event", "Registry", "target", "registration", "_entry", "type", "createIfNotExists", "namespace", "isTypeObject_default", "getType_default", "ImplementationClass", "internals", "ListenerRegistry", "Registry", "target", "createIfNotExists", "namespace", "ImplementationClass", "filter", "handler", "params", "ListenerRegistration", "events", "listener", "callback", "returnValue", "batch", "TrapsRegistration", "Registration", "descriptor", "next", "recieved", "args", "TrapsRegistry", "Registry", "target", "createIfNotExists", "namespace", "ImplementationClass", "dfn", "TrapsRegistration", "descriptor", "defaultHandler", "$this", "next", "index", "_args", "registration", "args", "Descriptor", "target", "dfn", "actors_exports", "__export", "accessorize", "proxy", "unaccessorize", "unproxy", "accessorize", "target", "props", "params", "resolveTarget", "accessorizedProps", "internals", "getDescriptorDeep", "prop", "descriptor", "proto", "accessorizeProp", "currentDescriptorRecord", "value", "currentDescriptor", "accessorization", "enumerable", "configurable", "x", "set", "get", "statuses", "unaccessorize", "unaccessorizeProp", "proxy", "thisArgument", "argumentsList", "apply", "newTarget", "construct", "propertyKey", "attributes", "defineProperty", "deleteProperty", "receiver", "val", "isFunction_default", "isClass_default", "getOwnPropertyDescriptor", "getPrototypeOf", "has", "isExtensible", "ownKeys", "preventExtensions", "prototype", "setPrototypeOf", "unproxy", "isTypeObject_default", "deep", "target", "path", "receiver", "final", "x", "params", "eat", "_params", "segment", "result", "args", "paramsNext", "flags", "addTrail", "desc", "Descriptor", "isPropsList", "entry", "$isTypeObject", "isTypeObject_default", "resolveObj", "observe", "prop", "isFunction_default", "getType_default", "emit", "bind", "get", "intercept", "traps", "isObject_default", "TrapsRegistry", "getOwnPropertyDescriptor", "exec", "getOwnPropertyDescriptors", "getPrototypeOf", "isExtensible", "ownKeys", "has", "isLive", "resolveProps", "props", "related", "next", "results", "_props", "_done", "defaultGet", "descriptor", "value", "_next", "accessorizedProps", "internals", "accessorization", "listenerRegistry", "result_s", "batch", "callback", "ListenerRegistry", "set", "def", "entries", "descriptors", "defaultSet", "status", "isUpdate", "oldValue", "opr", "defineProperty", "defineProperties", "deleteProperty", "from_default", "defaultDel", "construct", "argumentsList", "newTarget", "apply", "thisArgument", "setPrototypeOf", "proto", "preventExtensions", "controller", "descriptor_s", "prevRegistration", "type", "payload", "defaultExec", "obj", "assert", "unproxy", "Observer", "main_exports", "actors_exports", "src_default", "src_default"]
3
+ "sources": ["../src/main.js", "../node_modules/@webqit/util/js/isObject.js", "../node_modules/@webqit/util/js/getType.js", "../node_modules/@webqit/util/js/isArray.js", "../node_modules/@webqit/util/arr/intersect.js", "../node_modules/@webqit/util/js/internals.js", "../node_modules/@webqit/util/js/isTypeFunction.js", "../node_modules/@webqit/util/js/isClass.js", "../node_modules/@webqit/util/js/isNull.js", "../node_modules/@webqit/util/js/isUndefined.js", "../node_modules/@webqit/util/js/isTypeObject.js", "../node_modules/@webqit/util/js/isEmpty.js", "../node_modules/@webqit/util/js/isFunction.js", "../node_modules/@webqit/util/js/isString.js", "../node_modules/@webqit/util/js/isTypeArray.js", "../node_modules/@webqit/util/arr/from.js", "../src/core/Registration.js", "../src/core/ListenerRegistration.js", "../src/util.js", "../src/core/Registry.js", "../src/core/ListenerRegistry.js", "../src/core/TrapsRegistration.js", "../src/core/TrapsRegistry.js", "../src/core/Descriptor.js", "../src/actors.js", "../src/index.js", "../src/targets.browser.js"],
4
+ "sourcesContent": ["\r\n/**\r\n * @imports\r\n */\r\nimport { _isObject, _isTypeObject, _isFunction, _getType } from '@webqit/util/js/index.js';\r\nimport { _from as _arrFrom } from '@webqit/util/arr/index.js';\r\nimport ListenerRegistry from './core/ListenerRegistry.js';\r\nimport TrapsRegistry from './core/TrapsRegistry.js';\r\nimport Descriptor from './core/Descriptor.js';\r\nimport { unproxy } from './actors.js';\r\nimport { _ } from './util.js';\r\n\r\n/* ---------------SPECIAL APIs--------------- */\r\n\r\n/**\r\n * Reduces a path array against handler.\r\n * \r\n * @param Array|Object\t target\r\n * @param Array\t path\r\n * @param Function\t receiver\r\n * @param Function\t final\r\n * @param Object\t params\r\n * \r\n * @example deep( object, [ segement1, segement2 ], observe, ( value, flags ) => {}, params );\r\n *\r\n * @return Any\r\n */\r\nexport function deep( target, path, receiver, final = x => x, params = {} ) {\r\n return ( function eat( target, path, _params ) {\r\n const segment = path[ _params.level ];\r\n // ---------------\r\n if ( _params.level < path.length - 1 ) { _params = { ..._params, preflight: true }; }\r\n else { _params = { ..._params, preflight: /*reset*/params.preflight }; }\r\n // ---------------\r\n return receiver( target, segment, ( result, ...args ) => {\r\n // -----------\r\n const paramsNext = ( flags = {} ) => ( { ..._params, ...flags, level: _params.level + 1, } );\r\n const addTrail = desc => {\r\n if ( !( desc instanceof Descriptor ) ) return;\r\n desc.path = [ desc.key ];\r\n if ( target instanceof Descriptor ) {\r\n desc.path = target.path.concat( desc.key );\r\n desc.context = target;\r\n }\r\n };\r\n // -----------\r\n if ( isPropsList( segment ) && Array.isArray( result ) ) {\r\n // -----------\r\n result.forEach( addTrail );\r\n if ( _params.level === path.length - 1 || ( !result.length && _params.midwayResults ) ) return final( result, ...args );\r\n return result.map( entry => eat( entry, path, paramsNext( ...args ) ) )\r\n // -----------\r\n }\r\n // -----------\r\n addTrail( result );\r\n const $isTypeObject = _isTypeObject( resolveObj( result, false ) );\r\n if ( _params.level === path.length - 1 || ( !$isTypeObject && _params.midwayResults ) ) return final( result, ...args );\r\n return $isTypeObject && eat( result, path, paramsNext( ...args ) );\r\n // -----------\r\n }, _params );\r\n } )( target, path.slice( 0 ), { ...params, level: 0 } );\r\n}\r\n\r\n/**\r\n * Adds an observer to a target's registry.\r\n *\r\n * @param Array|Object\t target\r\n * @param String|Object\t prop\r\n * @param Function\t receiver\r\n * @param Object\t\t params\r\n *\r\n * @return AbortController\r\n */\r\nexport function observe( target, prop, receiver, params = {} ) {\r\n // ---------------\r\n target = resolveObj( target );\r\n\tif ( _isFunction( arguments[ 1 ] ) ) {\r\n [ , receiver, params = {} ] = arguments;\r\n prop = Infinity;\r\n\t}\r\n\tif ( !_isFunction( receiver ) ) throw new Error( `Handler must be a function; \"${ _getType( receiver ) }\" given!` );\r\n // ---------------\r\n const emit = bind( target, prop, receiver, params );\r\n if ( params.preflight ) {\r\n params = { ...params, descripted: true };\r\n delete params.live;\r\n return get( target, prop, emit, params );\r\n }\r\n return emit();\r\n}\r\n\r\n/**\r\n * Adds an interceptor object to a target's registry.\r\n *\r\n * @param Array|Object\t target\r\n * @param Object\t traps\r\n * @param Object\t\t params\r\n *\r\n * @return AbortRegistry\r\n */\r\nexport function intercept( target, traps, params = {} ) {\r\n // ---------------\r\n target = resolveObj( target );\r\n if ( !_isObject( traps ) ) {\r\n [ /*target*/, /*type*/, /*handler*/, params = {} ] = arguments;\r\n traps = { [ arguments[ 1 ] ]: arguments[ 2 ] };\r\n }\r\n // ---------------\r\n return TrapsRegistry.getInstance( target, true, params.namespace ).addRegistration( { traps, params } );\r\n}\r\n\r\n/* ---------------QUERY APIs--------------- */\r\n\r\n/**\r\n * Performs a \"getOwnPropertyDescriptor\" operation.\r\n *\r\n * @param Array|Object\t target\r\n * @param String|Number\t prop\r\n * @param Function\t receiver\r\n * @param Object\t\t params\r\n *\r\n * @return Any\r\n */\r\nexport function getOwnPropertyDescriptor( target, prop, receiver = x => x, params = {} ) {\r\n return exec( target, 'getOwnPropertyDescriptor', { key: prop }, receiver, params );\r\n}\r\n\r\n/**\r\n * Performs a \"getOwnPropertyDescriptors\" operation.\r\n * @note this isn't part of the standard Reflect API.\r\n *\r\n * @param Array|Object\t target\r\n * @param String|Number\t prop\r\n * @param Function\t receiver\r\n * @param Object\t\t params\r\n *\r\n * @return Any\r\n */\r\nexport function getOwnPropertyDescriptors( target, prop, receiver = x => x, params = {} ) {\r\n return exec( target, 'getOwnPropertyDescriptors', { key: prop }, receiver, params );\r\n}\r\n\r\n/**\r\n * Performs a \"getPrototypeOf\" operation.\r\n *\r\n * @param Array|Object\t target\r\n * @param Function\t receiver\r\n * @param Object\t\t params\r\n *\r\n * @return Any\r\n */\r\nexport function getPrototypeOf( target, receiver = x => x, params = {} ) {\r\n return exec( target, 'getPrototypeOf', {}, receiver, params );\r\n}\r\n\r\n/**\r\n * Performs a \"isExtensible\" operation.\r\n *\r\n * @param Array|Object\t target\r\n * @param Function\t receiver\r\n * @param Object\t\t params\r\n *\r\n * @return Any\r\n */\r\nexport function isExtensible( target, receiver = x => x, params = {} ) {\r\n return exec( target, 'isExtensible', {}, receiver, params );\r\n}\r\n\r\n/**\r\n * Performs a \"ownKeys\" operation.\r\n *\r\n * @param Array|Object\t target\r\n * @param Function\t receiver\r\n * @param Object\t\t params\r\n *\r\n * @return Any\r\n */\r\nexport function ownKeys( target, receiver = x => x, params = {} ) {\r\n return exec( target, 'ownKeys', {}, receiver, params );\r\n}\r\n\r\n/**\r\n * Performs an operation of the given \"type\".\r\n *\r\n * @param Array|Object\t target\r\n * @param String|Number\t prop\r\n * @param Function\t receiver\r\n * @param Object\t\t params\r\n *\r\n * @return Any\r\n */\r\nexport function has( target, prop, receiver = x => x, params = {} ) {\r\n return exec( target, 'has', { key: prop }, receiver, params );\r\n}\r\n\r\n/**\r\n * Performs a get operation.\r\n *\r\n * @param Array|Object\t target\r\n * @param String|Number\t prop\r\n * @param Function\t receiver\r\n * @param Object\t params\r\n *\r\n * @return Any\r\n */\r\nexport function get( target, prop, receiver = x => x, params = {} ) {\r\n // ---------------\r\n let isLive;\r\n target = resolveObj( target );\r\n if ( _isObject( receiver ) ) { [ params, receiver ] = [ receiver, x => x ]; }\r\n else if ( params.live ) { isLive = true; }\r\n // ---------------\r\n return resolveProps( target, prop, props => {\r\n const related = [ ...props ];\r\n return ( function next( results, _props, _done ) {\r\n if ( !_props.length ) return _done( results );\r\n const prop = _props.shift();\r\n // ---------\r\n function defaultGet( descriptor, value = undefined ) {\r\n const _next = value => ( descriptor.value = value, next( results.concat( params.live || params.descripted ? descriptor : value ), _props, _done ) );\r\n if ( arguments.length > 1 ) return _next( value );\r\n const accessorizedProps = _( target, 'accessorizedProps', false );\r\n const accessorization = accessorizedProps && accessorizedProps.get( descriptor.key );\r\n if ( accessorization && accessorization.intact() ) {\r\n return _next( accessorization.getValue() );\r\n }\r\n return _next( Reflect.get( target, descriptor.key, ...( params.receiver ? [ params.receiver ] : [] ) ) );\r\n }\r\n // ---------\r\n const descriptor = new Descriptor( target, {\r\n type: 'get',\r\n key: prop,\r\n value: undefined,\r\n related,\r\n } );\r\n const listenerRegistry = TrapsRegistry.getInstance( target, false, params.namespace );\r\n if ( listenerRegistry ) {\r\n return listenerRegistry.emit( descriptor, defaultGet );\r\n }\r\n return defaultGet( descriptor );\r\n } )( [], props.slice( 0 ), results => {\r\n const result_s = isPropsList( prop/*original*/ ) ? results : results[ 0 ];\r\n if ( isLive ) {\r\n const emit = bind( target, prop, receiver, params );\r\n return emit( result_s );\r\n }\r\n return receiver( result_s );\r\n } );\r\n } );\r\n}\r\n\r\n/* ---------------MUTATION APIs--------------- */\r\n\r\n/**\r\n * Performs a batch operation.\r\n * \r\n * @param Object\t target\r\n * @param Function\t callback\r\n * @param Object\t params\r\n *\r\n * @return Void\r\n */\r\nexport function batch( target, callback, params = {} ) {\r\n return ListenerRegistry.getInstance( target, true, params.namespace ).batch( callback );\r\n}\r\n\r\n/**\r\n * Performs a set operation.\r\n * \r\n * @param Object\t target\r\n * @param String|Number\t prop\r\n * @param Any\t value\r\n * @param Function\t receiver\r\n * @param Object\t params\r\n * @param Bool\t def\r\n *\r\n * @return Any\r\n */\r\nexport function set( target, prop, value, receiver = x => x, params = {}, def = false ) {\r\n // ---------------\r\n target = resolveObj( target );\r\n let entries = [ [ prop, value ] ];\r\n if ( _isObject( prop ) ) {\r\n [ /*target*/, /*hash*/, receiver = x => x, params = {}, def = false ] = arguments;\r\n entries = Object.entries( prop );\r\n }\r\n if ( _isObject( receiver ) ) { [ def, params, receiver ] = [ typeof params === 'boolean' ? params : false, receiver, x => x ]; }\r\n // ---------------\r\n const related = entries.map( ( [ prop ] ) => prop );\r\n return ( function next( descriptors, entries, _done ) {\r\n if ( !entries.length ) return _done( descriptors );\r\n const [ prop, value ] = entries.shift();\r\n // ---------\r\n function defaultSet( descriptor, status = undefined ) {\r\n const _next = status => ( descriptor.status = status, next( descriptors.concat( descriptor ), entries, _done ) );\r\n if ( arguments.length > 1 ) return _next( descriptor, status );\r\n const accessorizedProps = _( target, 'accessorizedProps', false );\r\n const accessorization = accessorizedProps && accessorizedProps.get( descriptor.key );\r\n if ( descriptor.type === 'defineProperty' ) {\r\n if ( accessorization && !accessorization.restore() ) _next( false );\r\n Object.defineProperty( target, descriptor.key, descriptor.value );\r\n return _next( true );\r\n }\r\n if ( accessorization && accessorization.intact() ) {\r\n return _next( accessorization.setValue( descriptor.value ) );\r\n }\r\n return _next( Reflect.set( target, descriptor.key, descriptor.value ) );\r\n }\r\n // ---------\r\n function exec( isUpdate, oldValue ) {\r\n if ( params.diff && value === oldValue ) return next( descriptors, entries, _done );\r\n const descriptor = new Descriptor( target, {\r\n type: def ? 'defineProperty' : 'set',\r\n key: prop,\r\n value,\r\n isUpdate,\r\n oldValue,\r\n related: [ ...related ],\r\n detail: params.detail,\r\n } );\r\n const listenerRegistry = TrapsRegistry.getInstance( target, false, params.namespace );\r\n return listenerRegistry \r\n ? listenerRegistry.emit( descriptor, defaultSet ) \r\n : defaultSet( descriptor );\r\n }\r\n // ---------\r\n return has( target, prop, exists => {\r\n if ( ( !exists || params.oldValue !== true ) && !params.diff ) return exec( exists );\r\n return get( target, prop, oldValue => exec( exists, oldValue ), params );\r\n }, params );\r\n // ---------\r\n } )( [], entries.slice( 0 ), descriptors => {\r\n const listenerRegistry = ListenerRegistry.getInstance( target, false, params.namespace );\r\n if ( listenerRegistry ) listenerRegistry.emit( descriptors );\r\n return receiver(\r\n isPropsList( prop/*original*/ ) ? descriptors.map( opr => opr.status ) : descriptors[ 0 ]?.status\r\n );\r\n } );\r\n}\r\n\r\n/**\r\n * Performs a defineProperty operation.\r\n * \r\n * @param Object\t target\r\n * @param String|Number\t prop\r\n * @param Object\t descriptor\r\n * @param Function\t receiver\r\n * @param Object\t params\r\n *\r\n * @return Any\r\n */\r\nexport function defineProperty( target, prop, descriptor, receiver = x => x, params = {} ) {\r\n return set( target, prop, descriptor, receiver, params, true/*def*/ );\r\n}\r\n\r\n/**\r\n * Performs a defineProperties operation.\r\n * @note this isn't part of the standard Reflect API.\r\n * \r\n * @param Object\t target\r\n * @param Object\t descriptors\r\n * @param Function\t receiver\r\n * @param Object\t params\r\n *\r\n * @return Any\r\n */\r\nexport function defineProperties( target, descriptors, receiver = x => x, params = {} ) {\r\n return set( target, descriptors, receiver, params, true/*def*/ );\r\n}\r\n\r\n/**\r\n * Performs a delete operation.\r\n * \r\n * @param Object\t target\r\n * @param String|Number\t prop\r\n * @param Function\t receiver\r\n * @param Object\t params\r\n *\r\n * @return Any\r\n */\r\nexport function deleteProperty( target, prop, receiver = x => x, params = {} ) {\r\n // ---------------\r\n target = resolveObj( target );\r\n if ( _isObject( receiver ) ) { [ params, receiver ] = [ receiver, x => x ]; }\r\n // ---------------\r\n const props = _arrFrom( prop ), related = [ ...props ];\r\n return ( function next( descriptors, props, _done ) {\r\n if ( !props.length ) return _done( descriptors );\r\n const prop = props.shift();\r\n // ---------\r\n function defaultDel( descriptor, status = undefined ) {\r\n const _next = status => ( descriptor.status = status, next( descriptors.concat( descriptor ), props, _done ) );\r\n if ( arguments.length > 1 ) return _next( descriptor, status );\r\n const accessorizedProps = _( target, 'accessorizedProps', false );\r\n const accessorization = accessorizedProps && accessorizedProps.get( descriptor.key );\r\n if ( accessorization && !accessorization.restore() ) _next( false );\r\n return _next( Reflect.deleteProperty( target, descriptor.key ) );\r\n }\r\n // ---------\r\n function exec( oldValue ) {\r\n const descriptor = new Descriptor( target, {\r\n type: 'deleteProperty',\r\n key: prop,\r\n oldValue,\r\n related: [ ...related ],\r\n detail: params.detail,\r\n } );\r\n const listenerRegistry = TrapsRegistry.getInstance( target, false, params.namespace );\r\n return listenerRegistry \r\n ? listenerRegistry.emit( descriptor, defaultDel ) \r\n : defaultDel( descriptor );\r\n }\r\n // ---------\r\n if ( params.oldValue === false ) return exec();\r\n return get( target, prop, exec, params );\r\n // ---------\r\n } )( [], props.slice( 0 ), descriptors => {\r\n const listenerRegistry = ListenerRegistry.getInstance( target, false, params.namespace );\r\n if ( listenerRegistry ) listenerRegistry.emit( descriptors );\r\n return receiver(\r\n isPropsList( prop/*original*/ ) ? descriptors.map( opr => opr.status ) : descriptors[ 0 ].status\r\n );\r\n } );\r\n}\r\n\r\n/* ---------------EFFECT APIs--------------- */\r\n\r\n/**\r\n * Performs a \"construct\" operation.\r\n *\r\n * @param Array|Object\t target\r\n * @param Array\t\t\t argumentsList\r\n * @param Object\t\t newTarget\r\n * @param Function\t receiver\r\n * @param Object\t\t params\r\n *\r\n * @return Any\r\n */\r\nexport function construct( target, argumentsList, newTarget = null, receiver = x => x, params = {} ) {\r\n return exec( target, 'construct', arguments.length > 2 ? { argumentsList, newTarget } : { argumentsList }, receiver, params );\r\n}\r\n\r\n/**\r\n * Performs an \"apply\" operation.\r\n *\r\n * @param Array|Object\t target\r\n * @param Any\t thisArgument\r\n * @param Array\t argumentsList\r\n * @param Function\t receiver\r\n * @param Object\t\t params\r\n *\r\n * @return Any\r\n */\r\nexport function apply( target, thisArgument, argumentsList, receiver = x => x, params = {} ) {\r\n return exec( target, 'apply', { thisArgument, argumentsList }, receiver, params );\r\n}\r\n\r\n/**\r\n * Performs a \"setPrototypeOf\" operation.\r\n *\r\n * @param Array|Object\t target\r\n * @param Anyr\t proto\r\n * @param Function\t receiver\r\n * @param Object\t\t params\r\n *\r\n * @return Any\r\n */\r\nexport function setPrototypeOf( target, proto, receiver = x => x, params = {} ) {\r\n return exec( target, 'setPrototypeOf', { proto }, receiver, params );\r\n}\r\n\r\n/**\r\n * Performs a \"preventExtension\" operation.\r\n *\r\n * @param Array|Object\t target\r\n * @param Function\t receiver\r\n * @param Object\t\t params\r\n *\r\n * @return Any\r\n */\r\nexport function preventExtensions( target, receiver = x => x, params = {} ) {\r\n return exec( target, 'preventExtensions', {}, receiver, params );\r\n}\r\n\r\n/* ---------------HELPER APIs--------------- */\r\n\r\n/**\r\n * Adds an observer to a target's registry.\r\n *\r\n * @param Array|Object\t target\r\n * @param String|Object\t prop\r\n * @param Function\t receiver\r\n * @param Object\t\t params\r\n *\r\n * @return Function: AbortController\r\n */\r\nfunction bind( target, prop, receiver, params = {} ) {\r\n let controller;\r\n if ( !params.signal ) {\r\n controller = new AbortController;\r\n params = { ...params, signal: controller.signal };\r\n }\r\n const listenerRegistry = ListenerRegistry.getInstance( target, true, params.namespace );\r\n return function emit( descriptor_s, prevRegistration = null ) {\r\n prevRegistration?.remove();\r\n const registrationNext = listenerRegistry.addRegistration( prop, emit, params );\r\n const flags = { signal: registrationNext.signal, };\r\n if ( arguments.length ) {\r\n receiver( descriptor_s, flags );\r\n }\r\n return controller;\r\n };\r\n}\r\n\r\n/**\r\n * Performs an operation of the given \"type\".\r\n *\r\n * @param Array|Object\t target\r\n * @param String\t\t type\r\n * @param Object\t\t payload\r\n * @param Function\t receiver\r\n * @param Object\t\t params\r\n *\r\n * @return Any\r\n */\r\nfunction exec( target, type, payload = {}, receiver = x => x, params = {} ) {\r\n // ---------\r\n target = resolveObj( target );\r\n if ( _isObject( receiver ) ) { [ params, receiver ] = [ receiver, x => x ]; } \r\n // ---------\r\n function defaultExec( descriptor, result ) {\r\n if ( arguments.length > 1 ) return receiver( result );\r\n return receiver( Reflect[ type ]( target, ...Object.values( payload ) ) );\r\n }\r\n // ---------\r\n const descriptor = new Descriptor( target, { type, ...payload } );\r\n const listenerRegistry = TrapsRegistry.getInstance( target, false, params.namespace );\r\n if ( listenerRegistry ) {\r\n return listenerRegistry.emit( descriptor, defaultExec );\r\n }\r\n return defaultExec( descriptor );\r\n}\r\n\r\n// Asks if prop is a multi-result field\r\nfunction isPropsList( prop ) {\r\n return prop === Infinity || Array.isArray( prop );\r\n}\r\n\r\n// Resolves obj down to it's self\r\nfunction resolveObj( obj, assert = true ) {\r\n\tif ( ( !obj || !_isTypeObject( obj ) ) && assert ) throw new Error( `Object must be of type object or array! \"${ _getType( obj ) }\" given.` );\r\n if ( obj instanceof Descriptor ) {\r\n obj = obj.value;\r\n }\r\n\treturn obj && unproxy( obj );\r\n}\r\n\r\n// Resolves prop down to actual keys\r\nfunction resolveProps( obj, prop, receiver ) {\r\n if ( prop === Infinity ) return ownKeys( obj, receiver );\r\n return receiver( _arrFrom( prop ) );\r\n}\r\n", "\r\n/**\r\n * Tells if val is pure object.\r\n *\r\n * @param object\t \tval\r\n *\r\n * @return bool\r\n */\r\nexport default function(val) {\r\n\treturn !Array.isArray(val) && typeof val === 'object' && val;\r\n};\r\n", "\r\n/**\r\n * Returns the val's type.\r\n *\r\n * @param string \tval\r\n *\r\n * @return string\r\n */\r\nexport default function(val) {\r\n\treturn typeof val;\r\n};\r\n", "\r\n/**\r\n * Tells if val is of type \"array\".\r\n *\r\n * @param object\t \tval\r\n *\r\n * @return bool\r\n */\r\nexport default function(val) {\r\n\treturn Array.isArray(val);\r\n};\r\n", "\r\n/**\r\n * @imports\r\n */\r\nimport _isArray from '../js/isArray.js';\r\n\r\n/**\r\n * Returns the intersection of two arrays;\r\n * optionally using a custom matching function.\r\n *\r\n * @param array \tarr\r\n * @param array\t \tarr2\r\n * @param function \tcallback\r\n *\r\n * @return array\r\n */\r\nexport default function(arr, arr2, callback = null) {\r\n\treturn !_isArray(arr2) ? [] : arr.filter(val1 => callback \r\n\t\t? arr2.filter(val2 => callback(val1, val2)).length \r\n\t\t: arr2.indexOf(val1) !== -1\r\n\t);\r\n};\r\n", "/**\r\n * @imports\r\n */\r\nimport _intersect from '../arr/intersect.js';\r\n\r\n/**\r\n * Creates and/or returns an \"internals\" object for the given object.\r\n * \r\n * @param Any obj\r\n * @param String namespace\r\n * \r\n * @return Object\r\n */\r\nexport default function internals(obj, ...namespaces) {\r\n if (!globalThis.webqit) { globalThis.webqit = {}; }\r\n if (!globalThis.webqit.refs) {\r\n Object.defineProperty(globalThis.webqit, 'refs', {value: new ObservableMap})\r\n }\r\n var itnls = globalThis.webqit.refs.get(obj);\r\n if (!itnls) {\r\n itnls = new ObservableMap;\r\n globalThis.webqit.refs.set(obj, itnls);\r\n }\r\n var _ns, _itnls;\r\n while ((_ns = namespaces.shift())) {\r\n if ((_itnls = itnls) && !(itnls = itnls.get(_ns))) {\r\n itnls = new ObservableMap;\r\n _itnls.set(_ns, itnls);\r\n }\r\n }\r\n return itnls;\r\n}\r\n\r\nclass ObservableMap extends Map {\r\n constructor( ...args ) {\r\n super( ...args );\r\n this.observers = new Set;\r\n }\r\n set( key, value ) {\r\n let returnValue = super.set( key, value );\r\n this.fire( 'set', key, value, key );\r\n return returnValue;\r\n }\r\n delete( key ) {\r\n let returnValue = super.delete( key );\r\n this.fire( 'delete', key );\r\n return returnValue;\r\n }\r\n has( key ) {\r\n this.fire( 'has', key );\r\n return super.has( key );\r\n }\r\n get( key ) {\r\n this.fire( 'get', key );\r\n return super.get( key );\r\n }\r\n keyNames() { return Array.from( super.keys() ); }\r\n observe( type, key, callback ) {\r\n const entry = { type, key, callback };\r\n this.observers.add( entry );\r\n return () => this.observers.delete( entry );\r\n }\r\n unobserve( type, key, callback ) {\r\n if ( Array.isArray( type ) || Array.isArray( key ) ) {\r\n throw new Error( `The \"type\" and \"key\" arguments can only be strings.` );\r\n }\r\n for ( let entry of this.observers ) {\r\n if ( !( _intersection( [ type, '*' ], entry.type ) && _intersection( [ key, '*' ], entry.key ) && entry.callback === callback ) ) continue;\r\n this.observers.delete( entry );\r\n }\r\n }\r\n fire( type, key, ...args ) {\r\n // IMPORTANT: Array.from() must be used so that new additions to this.observers\r\n // during the loop aren't picked up!\r\n for ( let entry of this.observers ) {\r\n if ( !( _intersection( [ type, '*' ], entry.type ) && _intersection( [ key, '*' ], entry.key ) ) ) continue;\r\n entry.callback( ...args );\r\n }\r\n }\r\n}\r\n\r\nconst _intersection = ( a, b ) => {\r\n if ( Array.isArray( b ) ) return _intersect( a, b ).length;\r\n return a.includes( b );\r\n}\r\n", "\r\n/**\r\n * Tells if val is of type \"function\".\r\n * This holds true for both regular functions and classes.\r\n *\r\n * @param object\t \tval\r\n *\r\n * @return bool\r\n */\r\nexport default function(val) {\r\n\treturn typeof val === 'function';\r\n};\r\n", "\r\n/**\r\n * @imports\r\n */\r\nimport _isTypeFunction from './isTypeFunction.js';\r\n\r\n/**\r\n * Tells if val is of type \"class\".\r\n *\r\n * @param object \t\tval\r\n *\r\n * @return bool\r\n */\r\nexport default function(val) {\r\n\treturn _isTypeFunction(val) && /^class\\s?/.test(Function.prototype.toString.call(val));\r\n};\r\n", "\r\n/**\r\n * Tells if val is undefined or is null.\r\n *\r\n * @param string \tval\r\n *\r\n * @return bool\r\n */\r\nexport default function(val) {\r\n\treturn val === null || val === '';\r\n};\r\n", "\r\n/**\r\n * Tells if val is undefined or is of type \"undefined\".\r\n *\r\n * @param string \tval\r\n *\r\n * @return bool\r\n */\r\nexport default function(val) {\r\n\treturn arguments.length && (val === undefined || typeof val === 'undefined');\r\n};\r\n", "\r\n/**\r\n * @imports\r\n */\r\nimport _isTypeFunction from './isTypeFunction.js';\r\n\r\n/**\r\n * Tells if val is of type \"object\".\r\n * This holds true for anything object, including built-ins.\r\n *\r\n * @param object\t \tval\r\n *\r\n * @return bool\r\n */\r\nexport default function(val) {\r\n\treturn Array.isArray(val) || (typeof val === 'object' && val) || _isTypeFunction(val);\r\n};\r\n", "\r\n/**\r\n * @imports\r\n */\r\nimport _isNull from './isNull.js';\r\nimport _isUndefined from './isUndefined.js';\r\nimport _isTypeObject from './isTypeObject.js';\r\n\r\n/**\r\n * Tells if val is empty in its own type.\r\n * This holds true for NULLs, UNDEFINED, FALSE, 0,\r\n * objects without keys, empty arrays.\r\n *\r\n * @param string \tval\r\n *\r\n * @return bool\r\n */\r\nexport default function(val) {\r\n\treturn _isNull(val) || _isUndefined(val) || val === false || val === 0 \r\n\t\t|| (_isTypeObject(val) && !Object.keys(val).length);\r\n};\r\n", "\r\n/**\r\n * @imports\r\n */\r\nimport _isTypeFunction from './isTypeFunction.js';\r\n\r\n/**\r\n * Tells if val is of type \"function\".\r\n *\r\n * @param object \t\tval\r\n *\r\n * @return bool\r\n */\r\nexport default function(val) {\r\n\treturn _isTypeFunction(val) || (val && {}.toString.call(val) === '[object function]');\r\n};\r\n", "\r\n/**\r\n * Tells if val is of type \"string\".\r\n *\r\n * @param string \tval\r\n *\r\n * @return bool\r\n */\r\nexport default function(val) {\r\n\treturn val instanceof String || (typeof val === 'string' && val !== null);\r\n};\r\n", "\r\n/**\r\n * @imports\r\n */\r\nimport _isString from './isString.js';\r\nimport _isUndefined from './isUndefined.js';\r\n\r\n/**\r\n * Tells if val is \"array-like\".\r\n * This holds true for anything that has a length property.\r\n *\r\n * @param object\t \tval\r\n *\r\n * @return bool\r\n */\r\nexport default function(val) {\r\n\treturn !_isString(val) && !_isUndefined(val.length);\r\n};\r\n", "\r\n/**\r\n * @imports\r\n */\r\nimport _isArray from '../js/isArray.js';\r\nimport _isTypeArray from '../js/isTypeArray.js';\r\nimport _isEmpty from '../js/isEmpty.js';\r\nimport _isObject from '../js/isObject.js';\r\n\r\n/**\r\n * Casts an array-like object to an array.\r\n *\r\n * @param mixed \tval\r\n * @param bool\t \tcastObject\r\n *\r\n * @return array\r\n */\r\nexport default function(val, castObject = true) {\r\n\tif (_isArray(val)) {\r\n\t\treturn val;\r\n\t};\r\n\tif (!castObject && _isObject(val)) {\r\n\t\treturn [val];\r\n\t};\r\n\tif (val !== false && val !== 0 && _isEmpty(val)) {\r\n\t\treturn [];\r\n\t};\r\n\tif (_isTypeArray(val)) {\r\n\t\treturn Array.prototype.slice.call(val);\r\n\t};\r\n\tif (_isObject(val)) {\r\n\t\treturn Object.values(val);\r\n\t};\r\n\treturn [val];\r\n};\r\n", "\r\n/**\r\n * ---------------------------\r\n * The Registration class\r\n * ---------------------------\r\n */\r\n\r\nexport default class Registration {\r\n\t\r\n\t/**\r\n\t * Initializes the instance.\r\n\t *\r\n\t * @param Registry\t\t\tregistry\r\n\t * @param object\t\t\tdfn\r\n\t *\r\n\t * @return void\r\n\t */\r\n\tconstructor( registry, dfn ) {\r\n\t\tthis.registry = registry;\r\n\t\tObject.assign( this, { ...dfn, target: registry.target } );\r\n\t\tif ( this.params.signal ) {\r\n\t\t\tthis.params.signal.addEventListener( 'abort', () => this.remove() );\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Sets a \"disconnected\" flag on the Registration.\r\n\t *\r\n\t * @return void\r\n\t */\r\n\tremove() {\r\n\t\tthis.removed = true;\r\n\t\treturn this.registry.removeRegistration( this );\r\n\t}\r\n}", "\r\n/**\r\n * @imports\r\n */\r\nimport { _from as _arrFrom } from '@webqit/util/arr/index.js';\r\nimport Registration from './Registration.js';\r\n\r\n/**\r\n * ---------------------------\r\n * The ListenerRegistration class\r\n * ---------------------------\r\n */\r\n\r\nexport default class ListenerRegistration extends Registration {\r\n\t\r\n\t/**\r\n\t * @constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper( ...arguments );\r\n\t\tObject.defineProperty( this, 'abortController', { value: new AbortController } );\r\n\t\tObject.defineProperty( this, 'signal', { value: this.abortController.signal } );\r\n\t}\r\n\r\n\t/**\r\n\t * De-registers the instance.\r\n\t * \r\n\t * @return Void\r\n\t */\r\n\tremove() {\r\n\t\tthis.abortController.abort();\r\n\t\tsuper.remove();\r\n\t}\r\n\r\n\t/**\r\n\t * Calls the observer's handler function\r\n\t * on matching with the event's fields.\r\n\t *\r\n\t * @param Array\t\t\t \t\tevents\r\n\t *\r\n\t * @return Any\r\n\t */\r\n\tfire( events ) {\r\n\t\tlet matches = events, filter = this.filter;\r\n\t\tif ( filter !== Infinity && ( filter = _arrFrom( filter ) ) ) {\r\n\t\t\tmatches = events.filter( event => filter.includes( event.key ) );\r\n\t\t}\r\n\t\tif ( matches.length ) {\r\n\t\t\treturn this.filter === Infinity || Array.isArray( this.filter )\r\n\t\t\t\t? this.handler( matches, this )\r\n\t\t\t\t: this.handler( matches[ 0 ], this );\r\n\t\t}\r\n\t}\r\n}\r\n", "\r\n/**\r\n * @imports\r\n */\r\nimport { _internals } from '@webqit/util/js/index.js';\r\n\r\nexport const _ = ( ...args ) => _internals( 'observer-api', ...args );", "\r\n/**\r\n * @imports\r\n */\r\nimport { _isTypeObject, _getType } from '@webqit/util/js/index.js';\r\nimport { _from as _arrFrom, _intersect, _equals as _arrEquals } from '@webqit/util/arr/index.js';\r\nimport { _ } from '../util.js';\r\n\r\n/**\r\n * ---------------------------\r\n * The Registry class\r\n * ---------------------------\r\n */\r\n\r\nexport default class Registry {\r\n\t\r\n\t/**\r\n\t * Initializes the instance.\r\n\t *\r\n\t * @param object\ttarget\r\n\t * \r\n\t * @return void\r\n\t */\r\n\tconstructor( target ) {\r\n\t\tthis.target = target;\r\n\t\tthis.entries = [];\r\n\t}\r\n\t\r\n\t/**\r\n\t * Adds an Registration instance\r\n\t * with optional tags.\r\n\t *\r\n\t * @param Registration\t\tregistration\r\n\t *\r\n\t * @return Registration\r\n\t */\r\n\taddRegistration( registration ) {\r\n\t\tthis.entries.push( registration );\r\n\t\treturn registration;\r\n\t}\r\n\t\r\n\t/**\r\n\t * Removes registrations by reference.\r\n\t *\r\n\t * @param Registration\t\tregistration\r\n\t *\r\n\t * @return void\r\n\t */\r\n\tremoveRegistration( registration ) {\r\n\t\tthis.entries = this.entries.filter( _entry => _entry !== registration );\r\n\t}\r\n\t\t\r\n\t/**\r\n\t * Returns a observer-specific object embedded on an element.\r\n\t *\r\n\t * @param string\t\ttype\r\n\t * @param array|object\ttarget\r\n\t * @param bool \tcreateIfNotExists\r\n\t * @param string \tnamespace\r\n\t *\r\n\t * @return Registry\r\n\t */\r\n\tstatic _getInstance( type, target, createIfNotExists = true, namespace = this.__namespace ) {\r\n\t\tif ( !_isTypeObject( target ) ) throw new Error( `Subject must be of type object; \"${ _getType( target ) }\" given!` );\r\n\t\tlet ImplementationClass = this;\r\n\t\tif ( namespace && _( 'namespaces' ).has( type + '-' + namespace ) ) {\r\n\t\t\tImplementationClass = _( 'namespaces' ).get( type + '-' + namespace );\r\n\t\t\ttype += '-' + namespace\r\n\t\t}\r\n\t\tif ( !_( target, 'registry' ).has( type ) && createIfNotExists ) {\r\n\t\t\t_( target, 'registry' ).set( type, new ImplementationClass( target ) );\r\n\t\t}\r\n\t\treturn _( target, 'registry' ).get( type );\r\n\t}\r\n\r\n\t/**\r\n\t * Extend a Fireable Class with a namespace.\r\n\t *\r\n\t * @param string\t\tnamespace\r\n\t * @param class \tImplementationClass\r\n\t *\r\n\t * @return void|class\r\n\t */\r\n\tstatic _namespace( type, namespace, ImplementationClass = null ) {\r\n\t\ttype += '-' + namespace;\r\n\t\tif ( arguments.length === 2 ) return _( 'namespaces' ).get( type );\r\n\t\tif ( !( ImplementationClass.prototype instanceof this ) ) {\r\n\t\t\tthrow new Error( `The implementation of the namespace ${ this.name }.${ namespace } must be a subclass of ${ this.name }.` );\r\n\t\t}\r\n\t\t_( 'namespaces' ).set( type, ImplementationClass );\r\n\t\tImplementationClass.__namespace = namespace;\r\n\t}\r\n}", "\r\n/**\r\n * @imports\r\n */\r\nimport ListenerRegistration from './ListenerRegistration.js';\r\nimport Registry from './Registry.js';\r\n\r\n/**\r\n * ---------------------------\r\n * The ListenerRegistry class\r\n * ---------------------------\r\n */\r\n\r\nexport default class ListenerRegistry extends Registry {\r\n\r\n\tstatic getInstance( target, createIfNotExists = true, namespace = null ) {\r\n\t\treturn super._getInstance( 'listeners', ...arguments );\r\n\t}\r\n\r\n\tstatic namespace( namespace, ImplementationClass = null ) {\r\n\t\treturn super._namespace( 'listeners', ...arguments );\r\n\t}\r\n\r\n\t/**\r\n\t * @constructor\r\n\t */\r\n\tconstructor( target ) {\r\n\t\tsuper( target );\r\n\t\tthis.batches = [];\r\n\t}\r\n\t\r\n\t/**\r\n\t * @addRegistration\r\n\t */\r\n\taddRegistration( filter, handler, params ) {\r\n\t\treturn super.addRegistration( new ListenerRegistration( this, { filter, handler, params } ) );\r\n\t}\r\n\t\r\n\t/**\r\n\t * Fires all observers with the given evt (change).\r\n\t *\r\n\t * @param Arrayn events\r\n\t *\r\n\t * @return Void\r\n\t */\r\n\temit( events ) {\r\n\t\tif ( this.batches.length ) {\r\n\t\t\tthis.batches[ 0 ].events.push( ...events );\r\n\t\t\treturn\r\n\t\t}\r\n\t\tthis.entries.forEach( listener => listener.fire( events ) );\r\n\t}\r\n\r\n\t/**\r\n\t * Fires all observers with the given evt (change).\r\n\t *\r\n\t * @param Arrayn events\r\n\t *\r\n\t * @return Void\r\n\t */\r\n\tbatch( callback ) {\r\n\t\tthis.batches.unshift( { entries: [ ...this.entries ], events: [] } );\r\n\t\tconst returnValue = callback();\r\n\t\tconst batch = this.batches.shift();\r\n\t\tif ( batch.events.length ) {\r\n\t\t\tbatch.entries.forEach( listener => listener.fire( batch.events ) );\r\n\t\t}\r\n\t\treturn returnValue;\r\n\t}\r\n\r\n}", "\r\n/**\r\n * @imports\r\n */\r\nimport Registration from './Registration.js';\r\n\r\n/**\r\n * ---------------------------\r\n * The TrapsRegistration class\r\n * ---------------------------\r\n */\r\n\r\nexport default class TrapsRegistration extends Registration {\r\n\t\r\n\t/**\r\n\t * Calls the observer's handler function\r\n\t * on matching with the descriptor's fields.\r\n\t *\r\n\t * @param Descriptor\t\t\t \tdescriptor\r\n\t * @param function\t\t\t\t\tnext\r\n\t * @param mixed\t\t\t\t\t \trecieved\r\n\t *\r\n\t * @return void\r\n\t */\r\n\texec( descriptor, next, recieved ) {\r\n\t\tif ( this.running || !this.traps[ descriptor.type ] ) {\r\n\t\t\treturn next( ...Array.prototype.slice.call( arguments, 2 ) );\r\n\t\t}\r\n\t\tthis.running = true;\r\n\t\treturn this.traps[ descriptor.type ]( descriptor, recieved, ( ...args ) => {\r\n\t\t\tthis.running = false;\r\n\t\t\treturn next( ...args );\r\n\t\t} );\r\n\t}\r\n}", "\r\n/**\r\n * @imports\r\n */\r\nimport TrapsRegistration from './TrapsRegistration.js';\r\nimport Registry from './Registry.js';\r\n\r\n/**\r\n * ---------------------------\r\n * The TrapsRegistry class\r\n * ---------------------------\r\n */\r\n\r\nexport default class TrapsRegistry extends Registry {\r\n\r\n\tstatic getInstance( target, createIfNotExists = true, namespace = null ) {\r\n\t\treturn super._getInstance( 'traps', ...arguments );\r\n\t}\r\n\r\n\tstatic namespace( namespace, ImplementationClass = null ) {\r\n\t\treturn super._namespace( 'traps', ...arguments );\r\n\t}\r\n\t\r\n\t/**\r\n\t * @inheritdoc\r\n\t */\r\n\taddRegistration( dfn ) {\r\n\t\treturn super.addRegistration( new TrapsRegistration( this, dfn ) );\r\n\t}\r\n\r\n\t/**\r\n\t * Fires all interceptors with the given action.\r\n\t *\r\n\t * @param Descriptor\t\tdescriptor\r\n\t * @param function\t\t\tdefaultHandler\r\n\t *\r\n\t * @return mixed\r\n\t */\r\n\temit( descriptor, defaultHandler = null ) {\r\n\t\tconst $this = this;\r\n\t\treturn ( function next( index, ..._args ) {\r\n\t\t\tconst registration = $this.entries[ index ];\r\n\t\t\tif ( registration ) {\r\n\t\t\t\treturn registration.exec( descriptor, ( ...args ) => {\r\n\t\t\t\t\treturn next( index + 1, ...args );\r\n\t\t\t\t}/*next*/, ..._args );\r\n\t\t\t}\r\n\t\t\treturn defaultHandler ? defaultHandler( descriptor, ..._args ) : _args[ 0 ];\r\n\t\t} )( 0 );\r\n\t}\r\n}", "\r\n/**\r\n * ---------------------------\r\n * The Descriptor class\r\n * ---------------------------\r\n */\r\n\r\nexport default class Descriptor {\r\n\t\r\n\t/**\r\n\t * Initializes the instance.\r\n\t *\r\n\t * @param array|object\ttarget\r\n\t * @param object\t\tdfn\r\n\t *\r\n\t * @return void\r\n\t */\r\n\tconstructor( target, dfn ) {\r\n\t\tthis.target = target;\r\n\t\tif ( !( dfn.type ) ) throw new Error( 'Descriptor type must be given in definition!' );\r\n\t\tObject.assign( this, dfn );\r\n\t}\r\n}", "\r\n/**\r\n * @imports\r\n */\r\nimport { _from as _arrFrom } from '@webqit/util/arr/index.js';\r\nimport { _isClass, _isFunction, _isTypeObject, _getType } from '@webqit/util/js/index.js';\r\nimport { set, deleteProperty, has, get, ownKeys, defineProperty, getOwnPropertyDescriptor } from \"./main.js\";\r\nimport { apply, construct, getPrototypeOf, setPrototypeOf, isExtensible, preventExtensions } from \"./main.js\";\r\nimport { _ } from './util.js';\r\n\r\n/* ---------------ACCESSORIZE METHODS--------------- */\r\n\r\n/**\r\n * Accessorizes props.\r\n *\r\n * @param Array|Object\ttarget\r\n * @param String|Array\tprops\r\n * @param Object\t\tparams\r\n *\r\n * @return Array\r\n */\r\nexport function accessorize( target, props, params = {} ) {\r\n target = resolveTarget( target );\r\n const accessorizedProps = _( target, 'accessorizedProps' );\r\n // ---------\r\n function getDescriptorDeep( prop ) {\r\n let descriptor, proto = target;\r\n while ( !descriptor && ( proto = Object.getPrototypeOf( proto ) ) ) {\r\n descriptor = Object.getOwnPropertyDescriptor( proto, prop );\r\n }\r\n return descriptor \r\n ? { proto, descriptor } \r\n : { descriptor: { value: undefined } };\r\n }\r\n // ---------\r\n function accessorizeProp( prop ) {\r\n if ( accessorizedProps.has( prop ) ) return true;\r\n // ------------------\r\n // Current Descriptor Record\r\n const currentDescriptorRecord = getDescriptorDeep( prop );\r\n currentDescriptorRecord.getValue = function() {\r\n return 'get' in this.descriptor ? this.descriptor.get() : this.descriptor.value;\r\n };\r\n currentDescriptorRecord.setValue = function( value ) {\r\n return 'set' in this.descriptor ? this.descriptor.set( value ) : ( this.descriptor.value = value )\r\n };\r\n currentDescriptorRecord.intact = function() {\r\n const currentDescriptor = Object.getOwnPropertyDescriptor( target, prop );\r\n return currentDescriptor.get === accessorization.get \r\n && currentDescriptor.set === accessorization.set\r\n && accessorizedProps.get( prop ) === this;\r\n };\r\n currentDescriptorRecord.restore = function() {\r\n if ( !this.intact() ) return false;\r\n if ( this.proto !== target ) { delete target[ prop ]; }\r\n else { Object.defineProperty( target, prop, this.descriptor ); }\r\n accessorizedProps.delete( prop );\r\n return true;\r\n };\r\n accessorizedProps.set( prop, currentDescriptorRecord );\r\n // ------------------\r\n // enumerable, configurable\r\n const { enumerable = true, configurable = true } = currentDescriptorRecord.descriptor;\r\n const accessorization = { enumerable, configurable };\r\n // set, get\r\n if ( [ 'value', 'set' ].some( x => x in currentDescriptorRecord.descriptor ) ) {\r\n accessorization.set = function ( value ) { return set( this, prop, value, params ); };\r\n }\r\n if ( [ 'value', 'get' ].some( x => x in currentDescriptorRecord.descriptor ) ) {\r\n accessorization.get = function () { return get( this, prop, params ); };\r\n }\r\n try {\r\n Object.defineProperty( target, prop, accessorization );\r\n return true;\r\n } catch( e ) {\r\n accessorizedProps.delete( prop );\r\n return false;\r\n }\r\n }\r\n const _props = Array.isArray( props ) ? props : (\r\n props === undefined ? Object.keys( target ) : [ props ]\r\n );\r\n const statuses = _props.map( accessorizeProp );\r\n return props === undefined || Array.isArray( props ) \r\n ? statuses \r\n : statuses[ 0 ];\r\n}\r\n\r\n/**\r\n * Unaccessorizes previously accessorized props.\r\n *\r\n * @param Array|Object\ttarget\r\n * @param String|Array\tprops\r\n * @param Object\t\tparams\r\n *\r\n * @return Array\r\n */\r\nexport function unaccessorize( target, props, params = {} ) {\r\n target = resolveTarget( target );\r\n const accessorizedProps = _( target, 'accessorizedProps' );\r\n function unaccessorizeProp( prop ) {\r\n if ( !accessorizedProps.has( prop ) ) return true;\r\n return accessorizedProps.get( prop ).restore();\r\n }\r\n const _props = Array.isArray( props ) ? props : (\r\n props === undefined ? Object.keys( target ) : [ props ]\r\n );\r\n const statuses = _props.map( unaccessorizeProp );\r\n return props === undefined || Array.isArray( props ) \r\n ? statuses \r\n : statuses[ 0 ];\r\n}\r\n\r\n/* ---------------PROXY METHODS--------------- */\r\n\r\n/**\r\n * Returns an object as a proxy and binds all instance methods\r\n * to the proxy instead of the object itself.\r\n *\r\n * @param Array|Object\t\ttarget\r\n * @param Object\t\t params\r\n *\r\n * @return Proxy\r\n */\r\nexport function proxy( target, params = {} ) {\r\n target = resolveTarget( target );\r\n const proxy = new Proxy( target, {\r\n apply: ( target, thisArgument, argumentsList ) => apply( target, thisArgument, argumentsList, params ),\r\n construct: ( target, argumentsList, newTarget = null ) => construct( target, argumentsList, newTarget, params ),\r\n defineProperty: ( target, propertyKey, attributes ) => defineProperty( target, propertyKey, attributes, params ),\r\n deleteProperty: ( target, propertyKey ) => deleteProperty( target, propertyKey, params ),\r\n get: ( target, propertyKey, receiver = null ) => {\r\n const val = get( target, propertyKey, { ...params, receiver } );\r\n if ( params.proxyAutoBinding !== false && _isFunction( val ) && !_isClass( val )) {\r\n return val.bind( proxy );\r\n }\r\n return val;\r\n },\r\n getOwnPropertyDescriptor: ( target, propertyKey ) => getOwnPropertyDescriptor( target, propertyKey, params ),\r\n getPrototypeOf: target => getPrototypeOf( target, params ),\r\n has: ( target, propertyKey ) => has( target, propertyKey, params ),\r\n isExtensible: target => isExtensible( target, params ),\r\n ownKeys: target => ownKeys( target, params ),\r\n preventExtensions: target => preventExtensions( target, params ),\r\n set: ( target, propertyKey, value, receiver = null ) => set( target, propertyKey, value, { ...params, receiver } ),\r\n setPrototypeOf: ( target, prototype ) => setPrototypeOf( target, prototype, params ),\r\n });\r\n _( proxy ).set( proxy, target );\r\n\treturn proxy;\r\n}\r\n\r\n/**\r\n * Returns the original object earlier proxied by proxy().\r\n *\r\n * @param Proxy|Any\t\ttarget\r\n *\r\n * @return Any\r\n */\r\nexport function unproxy( target ) {\r\n // Proxy targets are mapped to their own instances internally\r\n return _( target ).get( target ) || target;\r\n}\r\n\r\n/* ---------------HELPERS--------------- */\r\n\r\n/** \r\n * Ensures target object is an object or array.\r\n *\r\n * @param Array|Object\ttarget\r\n *\r\n * @return Array|Object\r\n */\r\nfunction resolveTarget( target ) {\r\n\tif ( !target || !_isTypeObject( target ) ) throw new Error('Target must be of type object!');\r\n\treturn unproxy( target );\r\n}\r\n", "\r\n/**\r\n * @imports\r\n */\r\nimport * as main from './main.js';\r\nimport * as actors from './actors.js';\r\n\r\nconst Observer = { ...main, ...actors };\r\n\r\nexport default Observer;", "\r\n/**\r\n * @imports\r\n */\r\nimport Observer from './index.js';\r\n\r\n// As globals\r\nif ( !self.webqit ) { self.webqit = {}; }\r\nself.webqit.Observer = Observer;"],
5
+ "mappings": "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",
6
+ "names": ["main_exports", "__export", "apply", "batch", "construct", "deep", "defineProperties", "defineProperty", "deleteProperty", "get", "getOwnPropertyDescriptor", "getOwnPropertyDescriptors", "getPrototypeOf", "has", "intercept", "isExtensible", "observe", "ownKeys", "preventExtensions", "set", "setPrototypeOf", "isObject_default", "val", "getType_default", "val", "isArray_default", "val", "intersect_default", "arr", "arr2", "callback", "isArray_default", "val1", "val2", "internals", "obj", "namespaces", "ObservableMap", "itnls", "_ns", "_itnls", "args", "key", "value", "returnValue", "type", "callback", "entry", "_intersection", "a", "b", "intersect_default", "isTypeFunction_default", "val", "isClass_default", "val", "isTypeFunction_default", "isNull_default", "val", "isUndefined_default", "val", "isTypeObject_default", "val", "isTypeFunction_default", "isEmpty_default", "val", "isNull_default", "isUndefined_default", "isTypeObject_default", "isFunction_default", "val", "isTypeFunction_default", "isString_default", "val", "isTypeArray_default", "val", "isString_default", "isUndefined_default", "from_default", "val", "castObject", "isArray_default", "isObject_default", "isEmpty_default", "isTypeArray_default", "Registration", "registry", "dfn", "ListenerRegistration", "Registration", "events", "matches", "filter", "from_default", "event", "_", "args", "internals", "Registry", "target", "registration", "_entry", "type", "createIfNotExists", "namespace", "isTypeObject_default", "getType_default", "ImplementationClass", "_", "ListenerRegistry", "Registry", "target", "createIfNotExists", "namespace", "ImplementationClass", "filter", "handler", "params", "ListenerRegistration", "events", "listener", "callback", "returnValue", "batch", "TrapsRegistration", "Registration", "descriptor", "next", "recieved", "args", "TrapsRegistry", "Registry", "target", "createIfNotExists", "namespace", "ImplementationClass", "dfn", "TrapsRegistration", "descriptor", "defaultHandler", "$this", "next", "index", "_args", "registration", "args", "Descriptor", "target", "dfn", "actors_exports", "__export", "accessorize", "proxy", "unaccessorize", "unproxy", "accessorize", "target", "props", "params", "resolveTarget", "accessorizedProps", "_", "getDescriptorDeep", "prop", "descriptor", "proto", "accessorizeProp", "currentDescriptorRecord", "value", "currentDescriptor", "accessorization", "enumerable", "configurable", "x", "set", "get", "statuses", "unaccessorize", "unaccessorizeProp", "proxy", "thisArgument", "argumentsList", "apply", "newTarget", "construct", "propertyKey", "attributes", "defineProperty", "deleteProperty", "receiver", "val", "isFunction_default", "isClass_default", "getOwnPropertyDescriptor", "getPrototypeOf", "has", "isExtensible", "ownKeys", "preventExtensions", "prototype", "setPrototypeOf", "unproxy", "isTypeObject_default", "deep", "target", "path", "receiver", "final", "x", "params", "eat", "_params", "segment", "result", "args", "paramsNext", "flags", "addTrail", "desc", "Descriptor", "isPropsList", "entry", "$isTypeObject", "isTypeObject_default", "resolveObj", "observe", "prop", "isFunction_default", "getType_default", "emit", "bind", "get", "intercept", "traps", "isObject_default", "TrapsRegistry", "getOwnPropertyDescriptor", "exec", "getOwnPropertyDescriptors", "getPrototypeOf", "isExtensible", "ownKeys", "has", "isLive", "resolveProps", "props", "related", "next", "results", "_props", "_done", "defaultGet", "descriptor", "value", "_next", "accessorizedProps", "_", "accessorization", "listenerRegistry", "result_s", "batch", "callback", "ListenerRegistry", "set", "def", "entries", "descriptors", "defaultSet", "status", "isUpdate", "oldValue", "exists", "opr", "defineProperty", "defineProperties", "deleteProperty", "from_default", "defaultDel", "construct", "argumentsList", "newTarget", "apply", "thisArgument", "setPrototypeOf", "proto", "preventExtensions", "controller", "descriptor_s", "prevRegistration", "type", "payload", "defaultExec", "obj", "assert", "unproxy", "Observer", "main_exports", "actors_exports", "src_default", "src_default"]
7
7
  }
package/package.json CHANGED
@@ -12,7 +12,7 @@
12
12
  "events"
13
13
  ],
14
14
  "homepage": "https://webqit.io/tooling/observer",
15
- "version": "2.0.4",
15
+ "version": "2.0.6",
16
16
  "license": "MIT",
17
17
  "repository": {
18
18
  "type": "git",
@@ -33,7 +33,7 @@
33
33
  "postpublish": "git push && git push --tags"
34
34
  },
35
35
  "dependencies": {
36
- "@webqit/util": "^0.8.7"
36
+ "@webqit/util": "^0.8.10"
37
37
  },
38
38
  "devDependencies": {
39
39
  "chai": "^4.3.4",
package/src/actors.js CHANGED
@@ -3,9 +3,10 @@
3
3
  * @imports
4
4
  */
5
5
  import { _from as _arrFrom } from '@webqit/util/arr/index.js';
6
- import { _isClass, _isFunction, _isTypeObject, _getType, _internals } from '@webqit/util/js/index.js';
6
+ import { _isClass, _isFunction, _isTypeObject, _getType } from '@webqit/util/js/index.js';
7
7
  import { set, deleteProperty, has, get, ownKeys, defineProperty, getOwnPropertyDescriptor } from "./main.js";
8
8
  import { apply, construct, getPrototypeOf, setPrototypeOf, isExtensible, preventExtensions } from "./main.js";
9
+ import { _ } from './util.js';
9
10
 
10
11
  /* ---------------ACCESSORIZE METHODS--------------- */
11
12
 
@@ -20,7 +21,7 @@ import { apply, construct, getPrototypeOf, setPrototypeOf, isExtensible, prevent
20
21
  */
21
22
  export function accessorize( target, props, params = {} ) {
22
23
  target = resolveTarget( target );
23
- const accessorizedProps = _internals( target, 'accessorizedProps' );
24
+ const accessorizedProps = _( target, 'accessorizedProps' );
24
25
  // ---------
25
26
  function getDescriptorDeep( prop ) {
26
27
  let descriptor, proto = target;
@@ -96,7 +97,7 @@ export function accessorize( target, props, params = {} ) {
96
97
  */
97
98
  export function unaccessorize( target, props, params = {} ) {
98
99
  target = resolveTarget( target );
99
- const accessorizedProps = _internals( target, 'accessorizedProps' );
100
+ const accessorizedProps = _( target, 'accessorizedProps' );
100
101
  function unaccessorizeProp( prop ) {
101
102
  if ( !accessorizedProps.has( prop ) ) return true;
102
103
  return accessorizedProps.get( prop ).restore();
@@ -144,7 +145,7 @@ export function proxy( target, params = {} ) {
144
145
  set: ( target, propertyKey, value, receiver = null ) => set( target, propertyKey, value, { ...params, receiver } ),
145
146
  setPrototypeOf: ( target, prototype ) => setPrototypeOf( target, prototype, params ),
146
147
  });
147
- _internals( proxy ).set( proxy, target );
148
+ _( proxy ).set( proxy, target );
148
149
  return proxy;
149
150
  }
150
151
 
@@ -157,7 +158,7 @@ export function proxy( target, params = {} ) {
157
158
  */
158
159
  export function unproxy( target ) {
159
160
  // Proxy targets are mapped to their own instances internally
160
- return _internals( target, false ).get( target ) || target;
161
+ return _( target ).get( target ) || target;
161
162
  }
162
163
 
163
164
  /* ---------------HELPERS--------------- */
@@ -2,8 +2,9 @@
2
2
  /**
3
3
  * @imports
4
4
  */
5
- import { _isTypeObject, _getType, _internals } from '@webqit/util/js/index.js';
5
+ import { _isTypeObject, _getType } from '@webqit/util/js/index.js';
6
6
  import { _from as _arrFrom, _intersect, _equals as _arrEquals } from '@webqit/util/arr/index.js';
7
+ import { _ } from '../util.js';
7
8
 
8
9
  /**
9
10
  * ---------------------------
@@ -62,14 +63,14 @@ export default class Registry {
62
63
  static _getInstance( type, target, createIfNotExists = true, namespace = this.__namespace ) {
63
64
  if ( !_isTypeObject( target ) ) throw new Error( `Subject must be of type object; "${ _getType( target ) }" given!` );
64
65
  let ImplementationClass = this;
65
- if ( namespace && globalThis.WebQitObserverNamespaceRegistry.has( type + '-' + namespace ) ) {
66
- ImplementationClass = globalThis.WebQitObserverNamespaceRegistry.get( type + '-' + namespace );
66
+ if ( namespace && _( 'namespaces' ).has( type + '-' + namespace ) ) {
67
+ ImplementationClass = _( 'namespaces' ).get( type + '-' + namespace );
67
68
  type += '-' + namespace
68
69
  }
69
- if ( !_internals( target, 'observerApi' ).has( type ) && createIfNotExists ) {
70
- _internals( target, 'observerApi' ).set( type, new ImplementationClass( target ) );
70
+ if ( !_( target, 'registry' ).has( type ) && createIfNotExists ) {
71
+ _( target, 'registry' ).set( type, new ImplementationClass( target ) );
71
72
  }
72
- return _internals( target, 'observerApi' ).get( type );
73
+ return _( target, 'registry' ).get( type );
73
74
  }
74
75
 
75
76
  /**
@@ -82,15 +83,11 @@ export default class Registry {
82
83
  */
83
84
  static _namespace( type, namespace, ImplementationClass = null ) {
84
85
  type += '-' + namespace;
85
- if ( arguments.length === 2 ) return globalThis.WebQitObserverNamespaceRegistry.get( type );
86
+ if ( arguments.length === 2 ) return _( 'namespaces' ).get( type );
86
87
  if ( !( ImplementationClass.prototype instanceof this ) ) {
87
88
  throw new Error( `The implementation of the namespace ${ this.name }.${ namespace } must be a subclass of ${ this.name }.` );
88
89
  }
89
- globalThis.WebQitObserverNamespaceRegistry.set( type, ImplementationClass );
90
+ _( 'namespaces' ).set( type, ImplementationClass );
90
91
  ImplementationClass.__namespace = namespace;
91
92
  }
92
- }
93
-
94
- if ( !globalThis.WebQitObserverNamespaceRegistry ) {
95
- globalThis.WebQitObserverNamespaceRegistry = new Map;
96
- }
93
+ }
package/src/main.js CHANGED
@@ -2,12 +2,13 @@
2
2
  /**
3
3
  * @imports
4
4
  */
5
- import { _internals, _isObject, _isTypeObject, _isFunction, _getType } from '@webqit/util/js/index.js';
5
+ import { _isObject, _isTypeObject, _isFunction, _getType } from '@webqit/util/js/index.js';
6
6
  import { _from as _arrFrom } from '@webqit/util/arr/index.js';
7
7
  import ListenerRegistry from './core/ListenerRegistry.js';
8
8
  import TrapsRegistry from './core/TrapsRegistry.js';
9
9
  import Descriptor from './core/Descriptor.js';
10
10
  import { unproxy } from './actors.js';
11
+ import { _ } from './util.js';
11
12
 
12
13
  /* ---------------SPECIAL APIs--------------- */
13
14
 
@@ -218,7 +219,7 @@ export function get( target, prop, receiver = x => x, params = {} ) {
218
219
  function defaultGet( descriptor, value = undefined ) {
219
220
  const _next = value => ( descriptor.value = value, next( results.concat( params.live || params.descripted ? descriptor : value ), _props, _done ) );
220
221
  if ( arguments.length > 1 ) return _next( value );
221
- const accessorizedProps = _internals( target, 'accessorizedProps', false );
222
+ const accessorizedProps = _( target, 'accessorizedProps', false );
222
223
  const accessorization = accessorizedProps && accessorizedProps.get( descriptor.key );
223
224
  if ( accessorization && accessorization.intact() ) {
224
225
  return _next( accessorization.getValue() );
@@ -293,7 +294,7 @@ export function set( target, prop, value, receiver = x => x, params = {}, def =
293
294
  function defaultSet( descriptor, status = undefined ) {
294
295
  const _next = status => ( descriptor.status = status, next( descriptors.concat( descriptor ), entries, _done ) );
295
296
  if ( arguments.length > 1 ) return _next( descriptor, status );
296
- const accessorizedProps = _internals( target, 'accessorizedProps', false );
297
+ const accessorizedProps = _( target, 'accessorizedProps', false );
297
298
  const accessorization = accessorizedProps && accessorizedProps.get( descriptor.key );
298
299
  if ( descriptor.type === 'defineProperty' ) {
299
300
  if ( accessorization && !accessorization.restore() ) _next( false );
@@ -307,6 +308,7 @@ export function set( target, prop, value, receiver = x => x, params = {}, def =
307
308
  }
308
309
  // ---------
309
310
  function exec( isUpdate, oldValue ) {
311
+ if ( params.diff && value === oldValue ) return next( descriptors, entries, _done );
310
312
  const descriptor = new Descriptor( target, {
311
313
  type: def ? 'defineProperty' : 'set',
312
314
  key: prop,
@@ -322,16 +324,16 @@ export function set( target, prop, value, receiver = x => x, params = {}, def =
322
324
  : defaultSet( descriptor );
323
325
  }
324
326
  // ---------
325
- return has( target, prop, isUpdate => {
326
- if ( !isUpdate || params.oldValue !== true ) return exec( isUpdate );
327
- return get( target, prop, oldValue => exec( isUpdate, oldValue ), params );
327
+ return has( target, prop, exists => {
328
+ if ( ( !exists || params.oldValue !== true ) && !params.diff ) return exec( exists );
329
+ return get( target, prop, oldValue => exec( exists, oldValue ), params );
328
330
  }, params );
329
331
  // ---------
330
332
  } )( [], entries.slice( 0 ), descriptors => {
331
333
  const listenerRegistry = ListenerRegistry.getInstance( target, false, params.namespace );
332
334
  if ( listenerRegistry ) listenerRegistry.emit( descriptors );
333
335
  return receiver(
334
- isPropsList( prop/*original*/ ) ? descriptors.map( opr => opr.status ) : descriptors[ 0 ].status
336
+ isPropsList( prop/*original*/ ) ? descriptors.map( opr => opr.status ) : descriptors[ 0 ]?.status
335
337
  );
336
338
  } );
337
339
  }
@@ -389,7 +391,7 @@ export function deleteProperty( target, prop, receiver = x => x, params = {} ) {
389
391
  function defaultDel( descriptor, status = undefined ) {
390
392
  const _next = status => ( descriptor.status = status, next( descriptors.concat( descriptor ), props, _done ) );
391
393
  if ( arguments.length > 1 ) return _next( descriptor, status );
392
- const accessorizedProps = _internals( target, 'accessorizedProps', false );
394
+ const accessorizedProps = _( target, 'accessorizedProps', false );
393
395
  const accessorization = accessorizedProps && accessorizedProps.get( descriptor.key );
394
396
  if ( accessorization && !accessorization.restore() ) _next( false );
395
397
  return _next( Reflect.deleteProperty( target, descriptor.key ) );
package/src/util.js ADDED
@@ -0,0 +1,7 @@
1
+
2
+ /**
3
+ * @imports
4
+ */
5
+ import { _internals } from '@webqit/util/js/index.js';
6
+
7
+ export const _ = ( ...args ) => _internals( 'observer-api', ...args );
@@ -13,15 +13,18 @@ describe( `Test: .observe() + .set()`, function() {
13
13
  describe( `Observe all changes.`, function() {
14
14
 
15
15
  it( `Should recieve an event of one change on setting one prop.`, function() {
16
- let obj = {}, _changes;
16
+ let obj = {}, _changes = [];
17
17
  // -----
18
18
  Observer.observe( obj, changes => {
19
- _changes = changes;
19
+ _changes.push( ...changes );
20
20
  } );
21
21
  // -----
22
22
  Observer.set( obj, {
23
23
  key1: 'value1',
24
24
  } );
25
+ Observer.set( obj, {
26
+ key1: 'value1',
27
+ }, { diff: true } );
25
28
  // -----
26
29
  expect( _changes ).to.be.an( 'array' ).with.length( 1 );
27
30
  } );