@webqit/observer 3.4.0 → 3.5.1

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 Ie=Object.defineProperty;var be=(t,e)=>{for(var r in e)Ie(t,r,{get:e[r],enumerable:!0})};var xe={};be(xe,{apply:()=>pe,batch:()=>_e,construct:()=>me,defineProperties:()=>Xe,defineProperty:()=>K,deleteProperties:()=>Ye,deleteProperty:()=>H,get:()=>M,getOwnPropertyDescriptor:()=>Z,getOwnPropertyDescriptors:()=>Je,getPrototypeOf:()=>le,has:()=>ee,intercept:()=>Ge,isExtensible:()=>ae,map:()=>Qe,observe:()=>ge,ownKeys:()=>W,path:()=>He,preventExtensions:()=>de,reduce:()=>ye,set:()=>F,setPrototypeOf:()=>he});function b(t){return!Array.isArray(t)&&typeof t=="object"&&t}function z(t){return typeof t}function P(t){return Array.isArray(t)}function re(t,e,r=null){return P(e)?t.filter(n=>r?e.filter(o=>r(n,o)).length:e.indexOf(n)!==-1):[]}function Q(t,...e){if(globalThis.webqit||(globalThis.webqit={}),globalThis.webqit.refs||Object.defineProperty(globalThis.webqit,"refs",{value:new B}),!arguments.length)return globalThis.webqit.refs;let r=globalThis.webqit.refs.get(t);r||(r=new B,globalThis.webqit.refs.set(t,r));let n,o;for(;n=e.shift();)(o=r)&&!(r=r.get(n))&&(r=new B,o.set(n,r));return r}var B=class extends Map{constructor(...e){super(...e),this.observers=new Set}set(e,r){let n=super.set(e,r);return this.fire("set",e,r,e),n}delete(e){let r=super.delete(e);return this.fire("delete",e),r}has(e){return this.fire("has",e),super.has(e)}get(e){return this.fire("get",e),super.get(e)}keyNames(){return Array.from(super.keys())}observe(e,r,n){let o={type:e,key:r,callback:n};return this.observers.add(o),()=>this.observers.delete(o)}unobserve(e,r,n){if(Array.isArray(e)||Array.isArray(r))throw new Error('The "type" and "key" arguments can only be strings.');for(let o of this.observers)J([e,"*"],o.type)&&J([r,"*"],o.key)&&o.callback===n&&this.observers.delete(o)}fire(e,r,...n){for(let o of this.observers)J([e,"*"],o.type)&&J([r,"*"],o.key)&&o.callback(...n)}},J=(t,e)=>Array.isArray(e)?re(t,e).length:t.includes(e);function L(t){return typeof t=="function"}function ne(t){return t===null||t===""}function S(t){return arguments.length&&(t===void 0||typeof t>"u")}function w(t){return Array.isArray(t)||typeof t=="object"&&t||L(t)}function oe(t){return ne(t)||S(t)||t===!1||t===0||w(t)&&!Object.keys(t).length}function D(t){return L(t)||t&&{}.toString.call(t)==="[object function]"}function X(t){return t instanceof String||typeof t=="string"&&t!==null}function ie(t){return!X(t)&&!S(t.length)}function R(t,e=!0){return P(t)?t:!e&&b(t)?[t]:t!==!1&&t!==0&&oe(t)?[]:ie(t)?Array.prototype.slice.call(t):b(t)?Object.values(t):[t]}var g=(...t)=>Q("observer-api",...t),V=(t,e)=>t instanceof Promise?t.then(e):e(t),Y={};var q=class{constructor(e,r){this.registry=e,Object.assign(this,{...r,target:e.target}),this.params.signal&&this.params.signal.addEventListener("abort",()=>this.remove())}remove(){return this.removed=!0,this.registry.removeRegistration(this)}};var $=class extends q{constructor(){super(...arguments),this.emit.currentRegistration=this,Object.defineProperty(this,"abortController",{value:new AbortController}),Object.defineProperty(this,"signal",{value:this.abortController.signal}),Y.setMaxListeners?.(0,this.signal)}remove(){this.abortController.abort(),super.remove()}fire(e){if(this.emit.recursionTarget&&!["inject","force-async","force-sync"].includes(this.params.recursions))return;let r=e,n=this.filter;if(n!==1/0&&(n=R(n,!1))&&(r=e.filter(i=>n.includes(i.key))),this.params.diff&&(r=r.filter(i=>i.type!=="set"||i.value!==i.oldValue)),!r.length)return;if(["inject","defer"].includes(this.params.recursions)){if(this.emit.recursionTarget){this.emit.recursionTarget.push(...r);return}this.emit.recursionTarget=this.params.recursions==="inject"?r:[]}let o=this.filter===1/0||Array.isArray(this.filter)?this.emit(r,this):this.emit(r[0],this);return V(o,i=>{let l=this.emit.recursionTarget;return delete this.emit.recursionTarget,this.params.recursions==="defer"&&l?.length?this.emit.currentRegistration.fire(l):i})}};var C=class{constructor(e){this.target=e,this.entries=[]}addRegistration(e){return this.entries.push(e),e}removeRegistration(e){this.entries=this.entries.filter(r=>r!==e)}static _getInstance(e,r,n=!0,o=this.__namespace){if(!w(r))throw new Error(`Subject must be of type object; "${z(r)}" given!`);let i=this;return o&&g("namespaces").has(e+"-"+o)&&(i=g("namespaces").get(e+"-"+o),e+="-"+o),!g(r,"registry").has(e)&&n&&g(r,"registry").set(e,new i(r)),g(r,"registry").get(e)}static _namespace(e,r,n=null){if(e+="-"+r,arguments.length===2)return g("namespaces").get(e);if(!(n.prototype instanceof this))throw new Error(`The implementation of the namespace ${this.name}.${r} must be a subclass of ${this.name}.`);g("namespaces").set(e,n),n.__namespace=r}};var O=class{constructor(e,r){if(this.target=e,!r.operation)throw new Error("Descriptor operation must be given in definition!");Object.assign(this,r)}};var I=class extends C{static getInstance(e,r=!0,n=null){return super._getInstance("listeners",...arguments)}static namespace(e,r=null){return super._namespace("listeners",...arguments)}constructor(e){super(e),this.batches=[]}addRegistration(e,r,n){return super.addRegistration(new $(this,{filter:e,emit:r,params:n}))}emit(e,{eventsArePropertyDescriptors:r=!1,eventIsArrayMethodDescriptor:n=!1}={}){if(this.batches.length){this.batches[0].snapshots.push({events:[...e],arrayMethodName:this.batches[0].params.arrayMethodName,eventsArePropertyDescriptors:r,eventIsArrayMethodDescriptor:n});return}this.$emit(this.entries,[{events:e,eventsArePropertyDescriptors:r,eventIsArrayMethodDescriptor:n}])}$emit(e,r){let n=0,o=0,i=0;for(let u of e)n+=1,u.params.withPropertyDescriptors&&(o+=1),u.params.withArrayMethodDescriptors&&(i+=1);let l=[],c=[],f=[],s=[];for(let u of r){let a=u.arrayMethodName,p=u.eventsArePropertyDescriptors,h=u.eventIsArrayMethodDescriptor;for(let _ of u.events)if(a&&(_.arrayMethodName=a),o&&((!a||h)&&i&&l.push(_),h||i!==n&&c.push(_)),o!==n){let m=_;if(p){let{target:x,type:d,...y}=_;m=new O(x,{type:"set",...y}),Object.defineProperty(m,"value","get"in y.value?{get:()=>y.value.get()}:{value:y.value.value}),y.oldValue&&Object.defineProperty(m,"oldValue","get"in y.oldValue?{get:()=>y.oldValue.get()}:{value:y.oldValue.value})}(!a||h)&&i&&f.push(m),h||i!==n&&s.push(m)}}for(let u of e)u.params.withPropertyDescriptors?u.params.withArrayMethodDescriptors?u.fire(l):u.fire(c):u.params.withArrayMethodDescriptors?u.fire(f):u.fire(s)}batch(e,r={}){this.batches.unshift({entries:[...this.entries],snapshots:[],params:r});let n=e();return V(n,o=>{let i=this.batches.shift();return i.snapshots.length&&this.$emit(i.entries,i.snapshots),o})}};var U=class extends q{exec(e,r,n){return this.running||!this.traps[e.operation]?r(...Array.prototype.slice.call(arguments,2)):(this.running=!0,this.traps[e.operation](e,n,(...o)=>(this.running=!1,r(...o))))}};var N=class extends C{static getInstance(e,r=!0,n=null){return super._getInstance("traps",...arguments)}static namespace(e,r=null){return super._namespace("traps",...arguments)}addRegistration(e){return super.addRegistration(new U(this,e))}emit(e,r=null){let n=this;return function o(i,...l){let c=n.entries[i];return c?c.exec(e,(...f)=>o(i+1,...f),...l):r?r(e,...l):l[0]}(0)}};var ce={};be(ce,{accessorize:()=>We,proxy:()=>Te,unaccessorize:()=>Ke,unproxy:()=>k});function We(t,e,r={}){t=ue(t);let n=g(t,"accessorizedProps");function o(f){let s,u=t;do s=Object.getOwnPropertyDescriptor(u,f);while(!s&&(u=Object.getPrototypeOf(u)));return s?{proto:u,descriptor:s}:{descriptor:{value:void 0,configurable:!0,enumerable:!0,writable:!0}}}function i(f){if(n.has(f+""))return!0;let s=o(f);s.getValue=function(p=!1){return p?this.descriptor:this.descriptor.get?this.descriptor.get():this.descriptor.value},s.setValue=function(p,h=!1){if(this.dirty=!0,h){this.descriptor=p;return}return this.descriptor.set?this.descriptor.set(p)!==!1:(this.descriptor.value=p,!0)},s.intact=function(){let p=Object.getOwnPropertyDescriptor(t,f);return p?.get===a.get&&p?.set===a.set&&n.get(f+"")===this},s.restore=function(){return this.intact()?(this.proto&&this.proto!==t||!this.proto&&!this.dirty?delete t[f]:Object.defineProperty(t,f,this.descriptor),n.delete(f+""),!0):!1},n.set(isNaN(f)?f:parseInt(f),s);let{enumerable:u=!0}=s.descriptor,a={enumerable:u,configurable:!0};("value"in s.descriptor||s.descriptor.set)&&(a.set=function(p){return F(this,f,p,r)}),("value"in s.descriptor||s.descriptor.get)&&(a.get=function(){return M(this,f,r)});try{return Object.defineProperty(t,f,a),!0}catch{return n.delete(f+""),!1}}let c=(Array.isArray(e)?e:e===void 0?Object.keys(t):[e]).map(i);return e===void 0||Array.isArray(e)?c:c[0]}function Ke(t,e,r={}){t=ue(t);let n=g(t,"accessorizedProps");function o(c){return n.has(c+"")?n.get(c+"").restore():!0}let l=(Array.isArray(e)?e:e===void 0?Object.keys(t):[e]).map(o);return e===void 0||Array.isArray(e)?l:l[0]}function Te(t,e={},r=void 0){let n=ue(t);if(typeof e.membrane=="boolean")throw new Error("The params.membrane parameter cannot be of type boolean.");if(e.membrane&&g(n,"membraneRef").has(e.membrane))return g(n,"membraneRef").get(e.membrane);let o={apply:(c,f,s)=>pe(c,f,s,void 0,e),construct:(c,f,s=null)=>me(c,f,s,e),defineProperty:(c,f,s)=>K(c,f,s,e),deleteProperty:(c,f)=>H(c,f,e),get:(c,f,s=null)=>{let u={...e,receiver:s},a=M(c,f,u);return Array.isArray(c)&&typeof a=="function"?Te(a,{...e,arrayMethodName:f,membrane:s}):a},getOwnPropertyDescriptor:(c,f)=>Z(c,f,e),getPrototypeOf:c=>le(c,e),has:(c,f)=>ee(c,f,e),isExtensible:c=>ae(c,e),ownKeys:c=>W(c,e),preventExtensions:c=>de(c,e),set:(c,f,s,u=null)=>F(c,f,s,{...e,receiver:u}),setPrototypeOf:(c,f)=>he(c,f,e)},i=r?.(o)||o,l=new Proxy(n,i);return e.membrane&&g(n,"membraneRef").set(e.membrane,l),g(l).set(l,n),l}function k(t){return g(t).get(t)||t}function ue(t){if(!t||!w(t))throw new Error("Target must be of type object!");return k(t)}var G=class extends Array{};function He(...t){return new G(...t)}function ye(t,e,r,n=i=>i,o={}){if(e.length)return function i(l,c,f){let s=c[f.level],u=f.level===c.length-1;return l instanceof O&&l.operation!=="get"?f={...f,probe:"always"}:f.probe!=="always"&&(f={...f,probe:!u}),r(l,s,(a,...p)=>{let h=m=>{m instanceof O&&(m.path=[m.key],l instanceof O&&(m.path=l.path.concat(m.key),Object.defineProperty(m,"context",{get:()=>l,configurable:!0})))},_=m=>{let x=E(m,!1);return V(x,d=>{m instanceof O?m.value=d:m=d;let y=p[0]||{};return i(m,c,{...f,...y,level:f.level+1})})};return te(s)&&Array.isArray(a)?(a.forEach(h),u?n(a,...p):a.map(_)):(h(a),u?n(a,...p):_(a))},f)}(t,e.slice(0),{...o,level:0})}function ge(t,e,r,n={}){if(t=E(t,!n.level),D(arguments[1])&&([,r,n={}]=arguments,e=1/0),!D(r))throw new Error(`Handler must be a function; "${z(r)}" given!`);if(e instanceof G)return ye(t,e,ge,r,n);if(n={...n,descripted:!0},delete n.live,!w(t))return n.probe&&M(t,e,r,n);let o=Ee(t,e,r,n);return n.probe?M(t,e,o,n):o()}function Ge(t,e,r={}){return t=E(t),b(e)||([,,,r={}]=arguments,e={[arguments[1]]:arguments[2]}),N.getInstance(t,!0,r.namespace).addRegistration({traps:e,params:r})}function Z(t,e,r=o=>o,n={}){return A(t,"getOwnPropertyDescriptor",{key:e},r,n)}function Je(t,e,r=o=>o,n={}){return A(t,"getOwnPropertyDescriptors",{key:e},r,n)}function le(t,e=n=>n,r={}){return A(t,"getPrototypeOf",{},e,r)}function ae(t,e=n=>n,r={}){return A(t,"isExtensible",{},e,r)}function W(t,e=n=>n,r={}){return A(t,"ownKeys",{},e,r)}function ee(t,e,r=o=>o,n={}){return A(t,"has",{key:e},r,n)}function M(t,e,r=o=>o,n={}){let o,i=E(t,!n.level);return b(r)?[n,r]=[r,l=>l]:n.live&&(o=!0),e instanceof G?ye(i,e,M,r,n):Ze(i,e,l=>{let c=[...l];return function f(s,u,a){if(!u.length)return a(s);let p=u.shift();if(!["string","number","symbol"].includes(typeof p))throw new Error(`Property name/key ${p} invalid.`);function h(x,d=void 0){let y=T=>(x.value=T,f([...s,n.live||n.descripted?x:T],u,a));if(arguments.length>1)return y(d);if(!w(i))return y(i?.[x.key]);let v=g(i,"accessorizedProps",!1),j=v&&v.get(x.key);if(j&&j.intact())return y(j.getValue(n.withPropertyDescriptors));if(n.withPropertyDescriptors){let T=Object.getOwnPropertyDescriptor(i,x.key);return y(T)}return y(Reflect.get(i,x.key))}let _=new O(i,{type:"get",key:p,value:void 0,operation:"get",related:c});if(!w(i))return h(_);let m=N.getInstance(i,!1,n.namespace);return m?m.emit(_,h):h(_)}([],l.slice(0),f=>{let s=te(e)?f:f[0];return o&&w(i)?Ee(i,e,r,n)(s):r(s)})},n)}function _e(t,e,r={}){return t=E(t),I.getInstance(t,!0,r.namespace).batch(e,r)}function Qe(t,e,r={}){e=E(e),t=E(t);let n=(r.only||[]).slice(0),o=(r.except||[]).slice(0),i=W(r.spread?[...t]:t).map(s=>isNaN(s)?s:parseInt(s)),l=n.length?n.filter(s=>i.includes(s)):i.filter(s=>!o.includes(s)),c=s=>!Array.isArray(e)||isNaN(s)?s:s-o.filter(u=>u<s).length,f=s=>{let u=Z(t,s,r);"value"in u&&u.writable&&u.enumerable&&u.configurable?F(e,c(s),u.value,r):(u.enumerable||r.onlyEnumerable===!1)&&K(e,s,{...u,configurable:!0},r)};return _e(e,()=>{l.forEach(f)}),ge(t,s=>{s.filter(u=>n.length?n.includes(u.key):!o.includes(u.key)).forEach(u=>{if(u.operation==="deleteProperty")return H(e,c(u.key),r);if(u.operation==="defineProperty"){(u.value.enumerable||r.onlyEnumerable===!1)&&K(e,c(u.key),{...u.value,configurable:!0},r);return}f(u.key)})},{...r,withPropertyDescriptors:!0})}function F(t,e,r,n=l=>l,o={},i=!1){let l=E(t),c=[[e,r]];b(e)&&([,,n=s=>s,o={},i=!1]=arguments,c=Object.entries(e)),b(n)&&([i,o,n]=[typeof o=="boolean"?o:i,n,s=>s]);let f=c.map(([s])=>s);return function s(u,a,p){if(!a.length)return p(u);let[h,_]=a.shift();function m(d,y=void 0){let v=De=>(d.status=De,s(u.concat(d),a,p));if(arguments.length>1)return v(d,y);let j=g(l,"accessorizedProps",!1),T=j&&j.get(d.key);return d.operation==="defineProperty"?(T&&!T.restore()&&v(!1),Object.defineProperty(l,d.key,d.value),v(!0)):T&&T.intact()?v(T.setValue(d.value)):v(Reflect.set(l,d.key,d.value))}function x(d,y){if(o.diff&&_===y)return s(u,a,p);let v=new O(l,{type:i?"def":"set",key:h,value:_,isUpdate:d,oldValue:y,related:[...f],operation:i?"defineProperty":"set",detail:o.detail}),j=N.getInstance(l,!1,o.namespace);return j?j.emit(v,m):m(v)}return ee(l,h,d=>{if(!d)return x(d);if(h==="length"&&Array.isArray(l)&&g(l).has("$length"))return x(!0,g(l).get("$length"));let y={...o,withPropertyDescriptors:i};return M(l,h,v=>x(d,v),y)},o)}([],c.slice(0),s=>{let u=I.getInstance(l,!1,o.namespace);return u&&u.emit(s,{eventsArePropertyDescriptors:!!i}),n(te(e)?s.map(a=>a.status):s[0]?.status)})}function K(t,e,r,n=i=>i,o={}){return F(t,e,r,n,o,!0)}function Xe(t,e,r=o=>o,n={}){return F(t,e,r,n,!0)}function H(t,e,r=o=>o,n={}){t=E(t),b(r)&&([n,r]=[r,l=>l]);let o=R(e,!1),i=[...o];return function l(c,f,s){if(!f.length)return s(c);let u=f.shift();function a(h,_=void 0){let m=y=>(h.status=y,l(c.concat(h),f,s));if(arguments.length>1)return m(h,_);let x=g(t,"accessorizedProps",!1),d=x&&x.get(h.key);return d&&!d.restore()&&m(!1),m(Reflect.deleteProperty(t,h.key))}function p(h){let _=new O(t,{type:"delete",key:u,oldValue:h,related:[...i],operation:"deleteProperty",detail:n.detail}),m=N.getInstance(t,!1,n.namespace);return m?m.emit(_,a):a(_)}return M(t,u,p,n)}([],o.slice(0),l=>{let c=I.getInstance(t,!1,n.namespace);return c&&c.emit(l),r(te(e)?l.map(f=>f.status):l[0].status)})}function Ye(t,e,r=o=>o,n={}){return H(...arguments)}function me(t,e,r=null,n=i=>i,o={}){return A(t,"construct",arguments.length>2?{argumentsList:e,newTarget:r}:{argumentsList:e},n,o)}function pe(t,e,r,n=i=>i,o={}){let i=k(e),l;if(Array.isArray(e)){if(o.arrayMethodName){let c=new O(i,{operation:o.arrayMethodName,argumentsList:r});I.getInstance(i,!1,o.namespace)?.emit([c],{eventIsArrayMethodDescriptor:!0})}g(i).set("$length",i.length),l=_e(i,()=>A(t,"apply",{thisArgument:e,argumentsList:r},n,o),o),g(i).delete("$length")}else l=A(t,"apply",{thisArgument:i,argumentsList:r},n,o);return l}function he(t,e,r=o=>o,n={}){return A(t,"setPrototypeOf",{proto:e},r,n)}function de(t,e=n=>n,r={}){return A(t,"preventExtensions",{},e,r)}function Ee(t,e,r,n={}){let o=new AbortController;Y.setMaxListeners?.(0,o.signal),n.signal&&n.signal.addEventListener("abort",()=>o.abort()),n={...n,signal:o.signal};let i=I.getInstance(t,!0,n.namespace);return function l(c,f=null){f?.remove();let u={signal:i.addRegistration(e,l,n).signal};if(arguments.length){let a=r(c,u);if(arguments.length>1)return a}return o}}function A(t,e,r={},n=i=>i,o={}){t=E(t),b(n)&&([o,n]=[n,f=>f]);function i(f,s){return arguments.length>1?n(s):n((Reflect[e]||Object[e])(t,...Object.values(r)))}let l=new O(t,{operation:e,...r}),c=N.getInstance(t,!1,o.namespace);return c?c.emit(l,i):i(l)}function te(t){return t===1/0||Array.isArray(t)}function E(t,e=!0){if((!t||!w(t))&&e)throw new Error(`Object must be of type object or array! "${z(t)}" given.`);return t instanceof O&&(t=t.value),t&&k(t)}function Ze(t,e,r,n={}){return e===1/0?n.level&&!w(t)?r([]):W(t,r,n):r(R(e,!1))}var et={...xe,...ce},je=et;self.webqit||(self.webqit={});self.webqit.Observer=je;})();
1
+ (()=>{var De=Object.defineProperty;var xe=(t,e)=>{for(var r in e)De(t,r,{get:e[r],enumerable:!0})};var _e={};xe(_e,{any:()=>Je,apply:()=>me,batch:()=>ge,construct:()=>ae,defineProperties:()=>Qe,defineProperty:()=>K,deleteProperties:()=>et,deleteProperty:()=>W,get:()=>M,getOwnPropertyDescriptor:()=>Q,getOwnPropertyDescriptors:()=>Ye,getPrototypeOf:()=>ue,has:()=>ee,intercept:()=>Xe,isExtensible:()=>ce,map:()=>Ze,observe:()=>ye,ownKeys:()=>le,path:()=>Ge,preventExtensions:()=>he,reduce:()=>de,set:()=>F,setPrototypeOf:()=>pe,subtree:()=>He});function v(t){return!Array.isArray(t)&&typeof t=="object"&&t}function z(t){return typeof t}function E(t){return Array.isArray(t)}function L(t){return typeof t=="function"}function te(t){return t===null||t===""}function R(t){return arguments.length&&(t===void 0||typeof t>"u")}function O(t){return Array.isArray(t)||typeof t=="object"&&t||L(t)}function re(t){return te(t)||R(t)||t===!1||t===0||O(t)&&!Object.keys(t).length}function I(t){return L(t)||t&&{}.toString.call(t)==="[object function]"}function J(t){return t instanceof String||typeof t=="string"&&t!==null}function ne(t){return!J(t)&&!R(t.length)}function Y(t,...e){if(!t||!["object","function"].includes(typeof t))throw new Error("Argument #1 must be of type object");let r=t[Symbol.for("wq")];if(r||(r=new X,Object.defineProperty(t,Symbol.for("wq"),{value:r,enumerable:!1,configurable:!1,writable:!1})),!e.length)return r;let n,o;for(;n=e.shift();)(o=r)&&!(r=r.get(n))&&(r=new X,o.set(n,r));return r}var X=class extends Map{};function S(t,e=!0){return E(t)?t:!e&&v(t)?[t]:t!==!1&&t!==0&&re(t)?[]:ne(t)?Array.prototype.slice.call(t):v(t)?Object.values(t):[t]}var g=(t,...e)=>Y(t,"observerAPI",...e),V=(t,e)=>t instanceof Promise?t.then(e):e(t),Z={};var C=class{constructor(e,r){this.registry=e,Object.assign(this,{...r,target:e.target}),this.params.signal&&this.params.signal.addEventListener("abort",()=>this.remove())}remove(){return this.removed=!0,this.registry.removeRegistration(this)}};var B=class extends C{constructor(){super(...arguments),this.emit.currentRegistration=this,Object.defineProperty(this,"abortController",{value:new AbortController}),Object.defineProperty(this,"signal",{value:this.abortController.signal}),Z.setMaxListeners?.(0,this.signal)}remove(){this.abortController.abort(),super.remove()}fire(e){if(this.emit.recursionTarget&&!["inject","force-async","force-sync"].includes(this.params.recursions))return;let r=e,n=this.filter;if(n!==1/0&&(n=S(n,!1))&&(r=e.filter(s=>n.includes(s.key))),this.params.diff&&(r=r.filter(s=>s.type!=="set"||s.value!==s.oldValue)),!r.length)return;if(["inject","defer"].includes(this.params.recursions)){if(this.emit.recursionTarget){this.emit.recursionTarget.push(...r);return}this.emit.recursionTarget=this.params.recursions==="inject"?r:[]}let o=this.filter===1/0||Array.isArray(this.filter)?this.emit(r,this):this.emit(r[0],this);return V(o,s=>{let l=this.emit.recursionTarget;return delete this.emit.recursionTarget,this.params.recursions==="defer"&&l?.length?this.emit.currentRegistration.fire(l):s})}};var A=class{constructor(e){this.target=e,this.entries=[]}addRegistration(e){return this.entries.push(e),e}removeRegistration(e){this.entries=this.entries.filter(r=>r!==e)}static _getInstance(e,r,n=!0,o=this.__namespace){if(!O(r))throw new Error(`Subject must be of type object; "${z(r)}" given!`);let s=this;return o&&g(A,"namespaces").has(e+"-"+o)&&(s=g(A,"namespaces").get(e+"-"+o),e+="-"+o),!g(r,"registry").has(e)&&n&&g(r,"registry").set(e,new s(r)),g(r,"registry").get(e)}static _namespace(e,r,n=null){if(e+="-"+r,arguments.length===2)return g(A,"namespaces").get(e);if(!(n.prototype instanceof this))throw new Error(`The implementation of the namespace ${this.name}.${r} must be a subclass of ${this.name}.`);g(A,"namespaces").set(e,n),n.__namespace=r}};var w=class{constructor(e,r){if(this.target=e,!r.operation)throw new Error("Descriptor operation must be given in definition!");Object.assign(this,r)}};var q=class extends A{static getInstance(e,r=!0,n=null){return super._getInstance("listeners",...arguments)}static namespace(e,r=null){return super._namespace("listeners",...arguments)}constructor(e){super(e),this.batches=[]}addRegistration(e,r,n){return super.addRegistration(new B(this,{filter:e,emit:r,params:n}))}emit(e,{eventsArePropertyDescriptors:r=!1,eventIsArrayMethodDescriptor:n=!1}={}){if(this.batches.length){let o=this.batches[0].params.arrayMethodName;this.batches[0].snapshots.push({events:[...e],arrayMethodName:o,eventsArePropertyDescriptors:r,eventIsArrayMethodDescriptor:n});return}this.$emit(this.entries,[{events:e,eventsArePropertyDescriptors:r,eventIsArrayMethodDescriptor:n}])}$emit(e,r){let n=0,o=0,s=0;for(let c of e)n+=1,c.params.withPropertyDescriptors&&(o+=1),c.params.withArrayMethodDescriptors&&(s+=1);let l=[],f=[],u=[],i=[];for(let c of r){let p=c.arrayMethodName,h=c.eventsArePropertyDescriptors,x=c.eventIsArrayMethodDescriptor;for(let a of c.events)if(p&&(a.operation=p),o&&(s&&l.push(a),x||s!==n&&f.push(a)),o!==n){let b=a;if(h){let{target:_,type:y,...d}=a;b=new w(_,{type:"set",...d}),Object.defineProperty(b,"value","get"in d.value?{get:()=>d.value.get()}:{value:d.value.value}),d.oldValue&&Object.defineProperty(b,"oldValue","get"in d.oldValue?{get:()=>d.oldValue.get()}:{value:d.oldValue.value})}s&&u.push(b),x||s!==n&&i.push(b)}}for(let c of e)c.params.withPropertyDescriptors?c.params.withArrayMethodDescriptors?l.length&&c.fire(l):f.length&&c.fire(f):c.params.withArrayMethodDescriptors?u.length&&c.fire(u):i.length&&c.fire(i)}batch(e,r={}){this.batches.unshift({entries:[...this.entries],snapshots:[],params:r});let n=e();return V(n,o=>{let s=this.batches.shift();return s.snapshots.length&&this.$emit(s.entries,s.snapshots),o})}};var $=class extends C{exec(e,r,n){return this.running||!this.traps[e.operation]?r(...Array.prototype.slice.call(arguments,2)):(this.running=!0,this.traps[e.operation](e,n,(...o)=>(this.running=!1,r(...o))))}};var N=class extends A{static getInstance(e,r=!0,n=null){return super._getInstance("traps",...arguments)}static namespace(e,r=null){return super._namespace("traps",...arguments)}addRegistration(e){return super.addRegistration(new $(this,e))}emit(e,r=null){let n=this;return function o(s,...l){let f=n.entries[s];return f?f.exec(e,(...u)=>o(s+1,...u),...l):r?r(e,...l):l[0]}(0)}};var fe={};xe(fe,{accessorize:()=>Ke,proxy:()=>Ae,unaccessorize:()=>We,unproxy:()=>U});function Ke(t,e,r={}){t=se(t);let n=g(t,"accessorizedProps");function o(u){let i,c=t;do i=Object.getOwnPropertyDescriptor(c,u);while(!i&&(c=Object.getPrototypeOf(c)));return i?{proto:c,descriptor:i}:{descriptor:{value:void 0,configurable:!0,enumerable:!0,writable:!0}}}function s(u){if(n.has(u+""))return!0;let i=o(u);i.getValue=function(h=!1){return h?this.descriptor:this.descriptor.get?this.descriptor.get():this.descriptor.value},i.setValue=function(h,x=!1){if(this.dirty=!0,x){this.descriptor=h;return}return this.descriptor.set?this.descriptor.set(h)!==!1:(this.descriptor.value=h,!0)},i.intact=function(){let h=Object.getOwnPropertyDescriptor(t,u);return h?.get===p.get&&h?.set===p.set&&n.get(u+"")===this},i.restore=function(){return this.intact()?(this.proto&&this.proto!==t||!this.proto&&!this.dirty?delete t[u]:Object.defineProperty(t,u,this.descriptor),n.delete(u+""),!0):!1},n.set(isNaN(u)?u:parseInt(u),i);let{enumerable:c=!0}=i.descriptor,p={enumerable:c,configurable:!0};("value"in i.descriptor||i.descriptor.set)&&(p.set=function(h){return F(this,u,h,r)}),("value"in i.descriptor||i.descriptor.get)&&(p.get=function(){return M(this,u,r)});try{return Object.defineProperty(t,u,p),!0}catch{return n.delete(u+""),!1}}let f=(Array.isArray(e)?e:e===void 0?Object.keys(t):[e]).map(s);return e===void 0||Array.isArray(e)?f:f[0]}function We(t,e,r={}){t=se(t);let n=g(t,"accessorizedProps");function o(f){return n.has(f+"")?n.get(f+"").restore():!0}let l=(Array.isArray(e)?e:e===void 0?Object.keys(t):[e]).map(o);return e===void 0||Array.isArray(e)?l:l[0]}function Ae(t,e={},r=void 0){let n=se(t);if(typeof e.membrane=="boolean")throw new Error("The params.membrane parameter cannot be of type boolean.");if(e.membrane&&g(n,"membraneRef").has(e.membrane))return g(n,"membraneRef").get(e.membrane);let o={apply:(f,u,i)=>me(f,u,i,void 0,e),construct:(f,u,i=null)=>ae(f,u,i,e),defineProperty:(f,u,i)=>K(f,u,i,e),deleteProperty:(f,u)=>W(f,u,e),get:(f,u,i=null)=>{let c={...e,receiver:i},p=M(f,u,c);return Array.isArray(f)&&typeof p=="function"?Ae(p,{...e,arrayMethodName:u,membrane:i}):p},getOwnPropertyDescriptor:(f,u)=>Q(f,u,e),getPrototypeOf:f=>ue(f,e),has:(f,u)=>ee(f,u,e),isExtensible:f=>ce(f,e),ownKeys:f=>le(f,e),preventExtensions:f=>he(f,e),set:(f,u,i,c=null)=>F(f,u,i,{...e,receiver:c}),setPrototypeOf:(f,u)=>pe(f,u,e)},s=r?.(o)||o,l=new Proxy(n,s);return e.membrane&&g(n,"membraneRef").set(e.membrane,l),g(l).set(l,n),l}function U(t){return g(t).get(t)||t}function se(t){if(!t||!O(t))throw new Error("Target must be of type object!");return U(t)}var G=class extends Array{};function Ge(...t){return new G(...t)}var k=class extends Array{};function He(){return new k}function Je(){return 1/0}function de(t,e,r,n=s=>s,o={}){let s=e instanceof k;if(!(!s&&!e?.length))return function l(f,u,i,c){let p=c||u[i.level]instanceof k,h=p?1/0:u[i.level],x=p?!1:i.level===u.length-1;return f instanceof w&&f.operation!=="get"?i={...i,probe:"always"}:i.probe!=="always"&&(i={...i,probe:!x}),r(f,h,(a,...b)=>{let _=m=>{m instanceof w&&(m.path="key"in m?[m.key]:[],f instanceof w&&(m.path="key"in m?f.path.concat(m.key):f.path.slice(0),Object.defineProperty(m,"context",{get:()=>f,configurable:!0})))},y=b[0]||{},d=m=>{if(m instanceof w&&"argumentsList"in m)return;let T=D(m,!1);return V(T,P=>(m instanceof w?m.value=P:m=P,l(m,u,{...i,...y,keyInParent:m.key,level:i.level+1},p)))};if(H(h)&&Array.isArray(a)){if(a.forEach(_),x)return n(a,...b);p&&a[0]instanceof w&&(a[0].operation!=="get"||o.asGet)&&n(a,...b);for(let m of a)d(m);return}return _(a),x?n(a,...b):d(a)},i)}(t,e.slice(0),{...o,level:0},s)}function ye(t,e,r,n={}){let o=D(t,!n.level);if(I(arguments[1])&&([,r,n={}]=arguments,e=1/0),!I(r))throw new Error(`Handler must be a function; "${z(r)}" given!`);if(e instanceof G||e instanceof k)return de(o,e,ye,r,n);if(n={...n,descripted:!0},delete n.live,!O(o))return n.probe&&M(o,e,r,n)||void 0;let s=Te(o,e,r,n);return n.probe?M(o,e,s,n):s()}function Xe(t,e,r={}){let n=D(t);return v(e)||([,,,r={}]=arguments,e={[arguments[1]]:arguments[2]}),N.getInstance(n,!0,r.namespace).addRegistration({traps:e,params:r})}function Q(t,e,r=o=>o,n={}){return j(t,"getOwnPropertyDescriptor",{key:e},r,n)}function Ye(t,e,r=o=>o,n={}){return j(t,"getOwnPropertyDescriptors",{key:e},r,n)}function ue(t,e=n=>n,r={}){return j(t,"getPrototypeOf",{},e,r)}function ce(t,e=n=>n,r={}){return j(t,"isExtensible",{},e,r)}function le(t,e=n=>n,r={}){return j(t,"ownKeys",{},e,r)}function ee(t,e,r=o=>o,n={}){return j(t,"has",{key:e},r,n)}function M(t,e,r=o=>o,n={}){let o,s=D(t,!n.level);return v(r)?[n,r]=[r,l=>l]:n.live&&(o=!0),e instanceof G||e instanceof k?de(s,e,M,r,{...n,asGet:!0}):tt(s,e,l=>{let f=[...l];return function u(i,c,p){if(!c.length)return p(i);let h=c.shift();if(!["string","number","symbol"].includes(typeof h))throw new Error(`Property name/key ${h} invalid.`);function x(_,y=void 0){let d=P=>(_.value=P,u([...i,n.live||n.descripted?_:P],c,p));if(arguments.length>1)return d(y);if(!O(s))return d(s?.[_.key]);let m=g(s,"accessorizedProps",!1),T=m&&m.get(_.key);if(T&&T.intact())return d(T.getValue(n.withPropertyDescriptors));if(n.withPropertyDescriptors){let P=Object.getOwnPropertyDescriptor(s,_.key);return d(P)}return d(Reflect.get(s,_.key))}let a=new w(s,{type:"get",key:h,value:void 0,operation:"get",related:f});if(!O(s))return x(a);let b=N.getInstance(s,!1,n.namespace);return b?b.emit(a,x):x(a)}([],l.slice(0),u=>{let i=H(e)?u:u[0];return o&&O(s)?Te(s,e,r,n,t.key)(i):r(i)})},n)}function ge(t,e,r={}){let n=D(t);return q.getInstance(n,!0,r.namespace).batch(e,r)}function Ze(t,e,r={}){e=D(e),t=D(t);let n=(r.only||[]).slice(0),o=(r.except||[]).slice(0),s=Object.keys(r.spread?[...t]:t).map(i=>isNaN(i)?i:parseInt(i)),l=n.length?n.filter(i=>s.includes(i)):s.filter(i=>!o.includes(i)),f=i=>!Array.isArray(e)||isNaN(i)?i:i-o.filter(c=>c<i).length,u=i=>{let c=Q(t,i,r);"value"in c&&c.writable&&c.enumerable&&c.configurable?F(e,f(i),c.value,r):(c.enumerable||r.onlyEnumerable===!1)&&K(e,i,{...c,configurable:!0},r)};return ge(e,()=>{l.forEach(u)}),ye(t,i=>{i.filter(c=>n.length?n.includes(c.key):!o.includes(c.key)).forEach(c=>{if(c.type==="delete")return W(e,f(c.key),r);if(c.type==="def"){(c.value.enumerable||r.onlyEnumerable===!1)&&K(e,f(c.key),{...c.value,configurable:!0},r);return}u(c.key)})},{...r,withPropertyDescriptors:!0})}function F(t,e,r,n=l=>l,o={},s=!1){let l=D(t),f=[[e,r]];v(e)&&([,,n=i=>i,o={},s=!1]=arguments,f=Object.entries(e)),v(n)&&([s,o,n]=[typeof o=="boolean"?o:s,n,i=>i]);let u=f.map(([i])=>i);return function i(c,p,h){if(!p.length)return h(c);let[x,a]=p.shift();function b(y,d=void 0){let m=je=>(y.status=je,i(c.concat(y),p,h));if(arguments.length>1)return m(y,d);let T=g(l,"accessorizedProps",!1),P=T&&T.get(y.key);return y.type==="def"?(P&&!P.restore()&&m(!1),Object.defineProperty(l,y.key,y.value),m(!0)):P&&P.intact()?m(P.setValue(y.value)):m(Reflect.set(l,y.key,y.value))}function _(y,d){if(o.diff&&a===d)return i(c,p,h);let m=new w(l,{type:s?"def":"set",key:x,value:a,isUpdate:y,oldValue:d,related:[...u],operation:s?"defineProperty":"set",detail:o.detail}),T=N.getInstance(l,!1,o.namespace);return T?T.emit(m,b):b(m)}return ee(l,x,y=>{if(!y)return _(y);if(x==="length"&&Array.isArray(l)&&g(l).has("$length"))return _(!0,g(l).get("$length"));let d={...o,withPropertyDescriptors:s};return M(l,x,m=>_(y,m),d)},o)}([],f.slice(0),i=>{let c=q.getInstance(l,!1,o.namespace);return c&&c.emit(i,{eventsArePropertyDescriptors:!!s}),n(H(e)?i.map(p=>p.status):i[0]?.status)})}function K(t,e,r,n=s=>s,o={}){return F(t,e,r,n,o,!0)}function Qe(t,e,r=o=>o,n={}){return F(t,e,r,n,!0)}function W(t,e,r=o=>o,n={}){let o=D(t);v(r)&&([n,r]=[r,f=>f]);let s=S(e,!1),l=[...s];return function f(u,i,c){if(!i.length)return c(u);let p=i.shift();function h(a,b=void 0){let _=m=>(a.status=m,f(u.concat(a),i,c));if(arguments.length>1)return _(a,b);let y=g(o,"accessorizedProps",!1),d=y&&y.get(a.key);return d&&!d.restore()&&_(!1),_(Reflect.deleteProperty(o,a.key))}function x(a){let b=new w(o,{type:"delete",key:p,oldValue:a,related:[...l],operation:"deleteProperty",detail:n.detail}),_=N.getInstance(o,!1,n.namespace);return _?_.emit(b,h):h(b)}return M(o,p,x,n)}([],s.slice(0),f=>{let u=q.getInstance(o,!1,n.namespace);return u&&u.emit(f),r(H(e)?f.map(i=>i.status):f[0].status)})}function et(t,e,r=o=>o,n={}){return W(...arguments)}function ae(t,e,r=null,n=s=>s,o={}){return j(t,"construct",arguments.length>2?{argumentsList:e,newTarget:r}:{argumentsList:e},n,o)}function me(t,e,r,n=s=>s,o={}){let s=U(e),l;if(Array.isArray(e)){if(o.arrayMethodName){let f=new w(s,{operation:o.arrayMethodName,argumentsList:r});q.getInstance(s,!1,o.namespace)?.emit([f],{eventIsArrayMethodDescriptor:!0})}g(s).set("$length",s.length),l=ge(s,()=>j(t,"apply",{thisArgument:e,argumentsList:r},n,o),o),g(s).delete("$length")}else l=j(t,"apply",{thisArgument:s,argumentsList:r},n,o);return l}function pe(t,e,r=o=>o,n={}){return j(t,"setPrototypeOf",{proto:e},r,n)}function he(t,e=n=>n,r={}){return j(t,"preventExtensions",{},e,r)}function Te(t,e,r,n={}){let o=new AbortController;Z.setMaxListeners?.(0,o.signal),n.signal&&n.signal.addEventListener("abort",()=>o.abort());let s={...n,signal:o.signal},l=q.getInstance(t,!0,s.namespace),f=new Map;return function u(i=[],c=null){let p,h,x;if(H(e)){if(c){x=!0,h=c;for(let a of i)f.get(a.key)?.remove(),f.delete(a.key)}else h=l.addRegistration(e,u,s);p={signal:h.signal,childRegistrations:f}}else c?.remove(),h=l.addRegistration(e,u,s),p={signal:h.signal};if(s.childRegistrations&&s.keyInParent&&s.childRegistrations.set(s.keyInParent,h),arguments.length){let a=r(i,p);if(arguments.length>1)return a}return o}}function j(t,e,r={},n=s=>s,o={}){t=D(t),v(n)&&([o,n]=[n,u=>u]);function s(u,i){return arguments.length>1?n(i):n((Reflect[e]||Object[e])(t,...Object.values(r)))}let l=new w(t,{operation:e,...r}),f=N.getInstance(t,!1,o.namespace);return f?f.emit(l,s):s(l)}function H(t){return t===1/0||Array.isArray(t)}function D(t,e=!0,r=!0){if((!t||!O(t))&&e)throw new Error(`Object must be of type object or array! "${z(t)}" given.`);return t instanceof w&&(t.type==="def"&&r?t=typeof t.value.get=="function"?t.value.get():t.value.value:t=t.value),t&&U(t)}function tt(t,e,r,n={}){return e===1/0?n.level&&!O(t)?r([]):r(Object.keys(t)):r(S(e,!1))}var rt={..._e,...fe},Ee=rt;self.webqit||(self.webqit={});self.webqit.Observer=Ee;})();
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/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/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/util.js", "../src/core/Registration.js", "../src/core/ListenerRegistration.js", "../src/core/Registry.js", "../src/core/Descriptor.js", "../src/core/ListenerRegistry.js", "../src/core/TrapsRegistration.js", "../src/core/TrapsRegistry.js", "../src/actors.js", "../src/index.js", "../src/targets.browser.js"],
4
- "sourcesContent": ["\n/**\n * @imports\n */\nimport { _isObject, _isTypeObject, _isFunction, _getType } from '@webqit/util/js/index.js';\nimport { _from as _arrFrom } from '@webqit/util/arr/index.js';\nimport { _, _await, env } from './util.js';\nimport ListenerRegistry from './core/ListenerRegistry.js';\nimport TrapsRegistry from './core/TrapsRegistry.js';\nimport Descriptor from './core/Descriptor.js';\nimport { unproxy } from './actors.js';\n\n/* ---------------SPECIAL APIs--------------- */\n\n/**\n * Creates a Path array instance from arguments.\n * \n * @param Array\t ...segments\n *\n * @return Path\n */\nclass Path extends Array {}\nexport function path( ...segments ) {\n return new Path( ...segments );\n}\n\n/**\n * Reduces a path array against handler.\n * \n * @param Array|Object\t target\n * @param Array\t path\n * @param Function\t receiver\n * @param Function\t final\n * @param Object\t params\n * \n * @example reduce( object, [ segement1, segement2 ], observe, ( value, flags ) => {}, params );\n *\n * @return Any\n */\nexport function reduce( target, path, receiver, final = x => x, params = {} ) {\n if ( !path.length ) return;\n return ( function eat( target, path, $params ) {\n const segment = path[ $params.level ];\n const isLastSegment = $params.level === path.length - 1;\n if ( target instanceof Descriptor && target.operation !== 'get' ) {\n // Always probe event-generated trees\n $params = { ...$params, probe: 'always' };\n } else if ( $params.probe !== 'always' ) {\n // Probe until (before) last segment\n $params = { ...$params, probe: !isLastSegment };\n }\n // ---------------\n return receiver( target, segment, ( result, ...args ) => {\n // -----------\n const addTrail = desc => {\n if ( !( desc instanceof Descriptor ) ) return;\n desc.path = [ desc.key ];\n if ( target instanceof Descriptor ) {\n desc.path = target.path.concat( desc.key );\n Object.defineProperty( desc, 'context', { get: () => target, configurable: true } );\n }\n };\n const advance = result => {\n const $value = resolveObj( result/* a Descriptor who's value could be proxied */, false );\n return _await( $value/* could be a promise */, $value => {\n if ( result instanceof Descriptor ) {\n result.value = $value; // Update to (fulfilled), unproxied, value\n } else {\n result = $value;\n }\n const flags = args[ 0 ] || {};\n return eat( result, path, { ...$params, ...flags, level: $params.level + 1, } );\n } );\n };\n // -----------\n if ( isPropsList( segment ) && Array.isArray( result ) ) {\n result.forEach( addTrail );\n if ( isLastSegment ) return final( result, ...args );\n return result.map( advance );\n }\n // -----------\n addTrail( result );\n if ( isLastSegment ) return final( result, ...args );\n return advance( result );\n // -----------\n }, $params );\n } )( target, path.slice( 0 ), { ...params, level: 0 } );\n}\n\n/**\n * Adds an observer to a target's registry.\n *\n * @param Array|Object\t target\n * @param String|Object\t prop\n * @param Function\t receiver\n * @param Object\t\t params\n *\n * @return AbortController\n */\nexport function observe( target, prop, receiver, params = {} ) {\n // ---------------\n target = resolveObj( target, !params.level );\n\tif ( _isFunction( arguments[ 1 ] ) ) {\n [ , receiver, params = {} ] = arguments;\n prop = Infinity;\n\t}\n\tif ( !_isFunction( receiver ) ) throw new Error( `Handler must be a function; \"${ _getType( receiver ) }\" given!` );\n if ( prop instanceof Path ) return reduce( target, prop, observe, receiver, params );\n // ---------------\n params = { ...params, descripted: true };\n delete params.live;\n if ( !_isTypeObject( target ) ) return params.probe && get( target, prop, receiver, params );\n // ---------------\n const emit = bind( target, prop, receiver, params );\n if ( params.probe ) {\n return get( target, prop, emit, params );\n }\n return emit();\n}\n\n/**\n * Adds an interceptor object to a target's registry.\n *\n * @param Array|Object\t target\n * @param Object\t traps\n * @param Object\t\t params\n *\n * @return AbortRegistry\n */\nexport function intercept( target, traps, params = {} ) {\n // ---------------\n target = resolveObj( target );\n if ( !_isObject( traps ) ) {\n [ /*target*/, /*operation*/, /*handler*/, params = {} ] = arguments;\n traps = { [ arguments[ 1 ] ]: arguments[ 2 ] };\n }\n // ---------------\n return TrapsRegistry.getInstance( target, true, params.namespace ).addRegistration( { traps, params } );\n}\n\n/* ---------------QUERY APIs--------------- */\n\n/**\n * Performs a \"getOwnPropertyDescriptor\" operation.\n *\n * @param Array|Object\t target\n * @param String|Number\t prop\n * @param Function\t receiver\n * @param Object\t\t params\n *\n * @return Any\n */\nexport function getOwnPropertyDescriptor( target, prop, receiver = x => x, params = {} ) {\n return exec( target, 'getOwnPropertyDescriptor', { key: prop }, receiver, params );\n}\n\n/**\n * Performs a \"getOwnPropertyDescriptors\" operation.\n * @note this isn't part of the standard Reflect API.\n *\n * @param Array|Object\t target\n * @param String|Number\t prop\n * @param Function\t receiver\n * @param Object\t\t params\n *\n * @return Any\n */\nexport function getOwnPropertyDescriptors( target, prop, receiver = x => x, params = {} ) {\n return exec( target, 'getOwnPropertyDescriptors', { key: prop }, receiver, params );\n}\n\n/**\n * Performs a \"getPrototypeOf\" operation.\n *\n * @param Array|Object\t target\n * @param Function\t receiver\n * @param Object\t\t params\n *\n * @return Any\n */\nexport function getPrototypeOf( target, receiver = x => x, params = {} ) {\n return exec( target, 'getPrototypeOf', {}, receiver, params );\n}\n\n/**\n * Performs a \"isExtensible\" operation.\n *\n * @param Array|Object\t target\n * @param Function\t receiver\n * @param Object\t\t params\n *\n * @return Any\n */\nexport function isExtensible( target, receiver = x => x, params = {} ) {\n return exec( target, 'isExtensible', {}, receiver, params );\n}\n\n/**\n * Performs a \"ownKeys\" operation.\n *\n * @param Array|Object\t target\n * @param Function\t receiver\n * @param Object\t\t params\n *\n * @return Any\n */\nexport function ownKeys( target, receiver = x => x, params = {} ) {\n return exec( target, 'ownKeys', {}, receiver, params );\n}\n\n/**\n * Performs an operation of the given \"type\".\n *\n * @param Array|Object\t target\n * @param String|Number\t prop\n * @param Function\t receiver\n * @param Object\t\t params\n *\n * @return Any\n */\nexport function has( target, prop, receiver = x => x, params = {} ) {\n return exec( target, 'has', { key: prop }, receiver, params );\n}\n\n/**\n * Performs a get operation.\n *\n * @param Array|Object\t target\n * @param String|Number\t prop\n * @param Function\t receiver\n * @param Object\t params\n *\n * @return Any\n */\nexport function get( target, prop, receiver = x => x, params = {} ) {\n // ---------------\n let isLive;\n const originalTarget = resolveObj( target, !params.level );\n if ( _isObject( receiver ) ) { [ params, receiver ] = [ receiver, x => x ]; }\n else if ( params.live ) { isLive = true; }\n if ( prop instanceof Path ) return reduce( originalTarget, prop, get, receiver, params );\n // ---------------\n return resolveProps( originalTarget, prop, props => {\n const related = [ ...props ];\n return ( function next( results, _props, _done ) {\n if ( !_props.length ) return _done( results );\n const prop = _props.shift();\n if ( ![ 'string', 'number', 'symbol' ].includes( typeof prop ) ) {\n throw new Error( `Property name/key ${ prop } invalid.` );\n }\n // ---------\n function defaultGet( descriptor, value = undefined ) {\n const _next = value => ( descriptor.value = value, next( [ ...results, params.live || params.descripted ? descriptor : value ]/** not using concat() as value may be an array */, _props, _done ) );\n if ( arguments.length > 1 ) return _next( value );\n if ( !_isTypeObject( originalTarget ) ) return _next( originalTarget?.[ descriptor.key ] );\n const accessorizedProps = _( originalTarget, 'accessorizedProps', false );\n const accessorization = accessorizedProps && accessorizedProps.get( descriptor.key );\n if ( accessorization && accessorization.intact() ) {\n return _next( accessorization.getValue( params.withPropertyDescriptors ) );\n }\n if ( params.withPropertyDescriptors ) {\n const desc = Object.getOwnPropertyDescriptor( originalTarget, descriptor.key );\n return _next( desc );\n }\n return _next( Reflect.get( originalTarget, descriptor.key/*, ...( params.receiver ? [ params.receiver ] : [] )*//*Throws Illegal invocation error ffor DOM nodes, e.g.*/ ) );\n }\n // ---------\n const descriptor = new Descriptor( originalTarget, {\n type: 'get',\n key: prop,\n value: undefined,\n operation: 'get',\n related,\n } );\n if ( !_isTypeObject( originalTarget ) ) return defaultGet( descriptor );\n const trapsRegistry = TrapsRegistry.getInstance( originalTarget, false, params.namespace );\n if ( trapsRegistry ) {\n return trapsRegistry.emit( descriptor, defaultGet );\n }\n return defaultGet( descriptor );\n } )( [], props.slice( 0 ), results => {\n const result_s = isPropsList( prop/*original*/ ) ? results : results[ 0 ];\n if ( isLive && _isTypeObject( originalTarget ) ) {\n const emit = bind( originalTarget, prop, receiver, params );\n return emit( result_s );\n }\n return receiver( result_s );\n } );\n }, params );\n}\n\n/* ---------------MUTATION APIs--------------- */\n\n/**\n * Performs a batch operation.\n * \n * @param Object\t target\n * @param Function\t callback\n * @param Object\t params\n *\n * @return Void\n */\nexport function batch( target, callback, params = {} ) {\n target = resolveObj( target );\n return ListenerRegistry.getInstance( target, true, params.namespace ).batch( callback, params );\n}\n\n/**\n * Performs a mirror operation.\n * \n * @param Object\t source\n * @param Object\t target\n * @param Object\t params\n *\n * @return Void\n */\nexport function map( source, target, params = {} ) {\n target = resolveObj( target );\n source = resolveObj( source );\n const only = ( params.only || [] ).slice( 0 ), except = ( params.except || [] ).slice( 0 );\n const sourceKeys = ownKeys( params.spread ? [ ...source ] : source ).map( k => !isNaN( k ) ? parseInt( k ) : k );\n const filteredKeys = only.length ? only.filter( k => sourceKeys.includes( k ) ) : sourceKeys.filter( k => !except.includes( k ) );\n const resolveKey = k => { \n if ( !Array.isArray( target ) || isNaN( k ) ) return k;\n return k - except.filter( i => i < k ).length;\n };\n const doSet = key => {\n const descriptor = getOwnPropertyDescriptor( source, key, params );\n if ( ( 'value' in descriptor ) && descriptor.writable && descriptor.enumerable && descriptor.configurable ) {\n set( target, resolveKey( key ), descriptor.value, params );\n } else if ( descriptor.enumerable || params.onlyEnumerable === false ) { defineProperty( target, key, { ...descriptor, configurable: true }, params ); }\n };\n batch( target, () => {\n filteredKeys.forEach( doSet );\n } );\n return observe( source, mutations => {\n //batch( target, () => {\n mutations.filter( m => only.length ? only.includes( m.key ) : !except.includes( m.key ) ).forEach( m => {\n if ( m.operation === 'deleteProperty' ) return deleteProperty( target, resolveKey( m.key ), params );\n if ( m.operation === 'defineProperty' ) {\n if ( m.value.enumerable || params.onlyEnumerable === false ) {\n defineProperty( target, resolveKey( m.key ), { ...m.value, configurable: true }, params );\n }\n return;\n }\n doSet( m.key );\n } );\n //}, params );\n }, { ...params, withPropertyDescriptors: true } );\n}\n\n/**\n * Performs a set operation.\n * \n * @param Object\t target\n * @param String|Number\t prop\n * @param Any\t value\n * @param Function\t receiver\n * @param Object\t params\n * @param Bool\t def\n *\n * @return Any\n */\nexport function set( target, prop, value, receiver = x => x, params = {}, def = false ) {\n // ---------------\n const originalTarget = resolveObj( target );\n let entries = [ [ prop, value ] ];\n if ( _isObject( prop ) ) {\n [ /*target*/, /*hash*/, receiver = x => x, params = {}, def = false ] = arguments;\n entries = Object.entries( prop );\n }\n if ( _isObject( receiver ) ) { [ def, params, receiver ] = [ typeof params === 'boolean' ? params : def, receiver, x => x ]; }\n // ---------------\n const related = entries.map( ( [ prop ] ) => prop );\n return ( function next( descriptors, entries, _done ) {\n if ( !entries.length ) return _done( descriptors );\n const [ prop, value ] = entries.shift();\n // ---------\n function defaultSet( descriptor, status = undefined ) {\n const _next = status => ( descriptor.status = status, next( descriptors.concat( descriptor ), entries, _done ) );\n if ( arguments.length > 1 ) return _next( descriptor, status );\n const accessorizedProps = _( originalTarget, 'accessorizedProps', false );\n const accessorization = accessorizedProps && accessorizedProps.get( descriptor.key );\n if ( descriptor.operation === 'defineProperty' ) {\n if ( accessorization && !accessorization.restore() ) _next( false );\n Object.defineProperty( originalTarget, descriptor.key, descriptor.value );\n return _next( true );\n }\n if ( accessorization && accessorization.intact() ) {\n return _next( accessorization.setValue( descriptor.value ) );\n }\n return _next( Reflect.set( originalTarget, descriptor.key, descriptor.value ) );\n }\n // ---------\n function exec( isUpdate, oldValue ) {\n if ( params.diff && value === oldValue ) return next( descriptors, entries, _done );\n const descriptor = new Descriptor( originalTarget, {\n type: def ? 'def' : 'set',\n key: prop,\n value,\n isUpdate,\n oldValue,\n related: [ ...related ],\n operation: def ? 'defineProperty' : 'set',\n detail: params.detail,\n } );\n const trapsRegistry = TrapsRegistry.getInstance( originalTarget, false, params.namespace );\n return trapsRegistry \n ? trapsRegistry.emit( descriptor, defaultSet ) \n : defaultSet( descriptor );\n }\n // ---------\n return has( originalTarget, prop, exists => {\n if ( !exists ) return exec( exists );\n if ( prop === 'length' && Array.isArray( originalTarget ) && _( originalTarget ).has( '$length' ) ) {\n return exec( true, _( originalTarget ).get( '$length' ) );\n }\n const $params = { ...params, withPropertyDescriptors: def };\n return get( originalTarget, prop, oldValue => exec( exists, oldValue ), $params );\n }, params );\n // ---------\n } )( [], entries.slice( 0 ), descriptors => {\n const listenerRegistry = ListenerRegistry.getInstance( originalTarget, false, params.namespace );\n if ( listenerRegistry ) listenerRegistry.emit( descriptors, { eventsArePropertyDescriptors: !!def } );\n return receiver(\n isPropsList( prop/*original*/ ) ? descriptors.map( opr => opr.status ) : descriptors[ 0 ]?.status\n );\n } );\n}\n\n/**\n * Performs a defineProperty operation.\n * \n * @param Object\t target\n * @param String|Number\t prop\n * @param Object\t descriptor\n * @param Function\t receiver\n * @param Object\t params\n *\n * @return Any\n */\nexport function defineProperty( target, prop, descriptor, receiver = x => x, params = {} ) {\n return set( target, prop, descriptor, receiver, params, true/*def*/ );\n}\n\n/**\n * Performs a defineProperties operation.\n * @note this isn't part of the standard Reflect API.\n * \n * @param Object\t target\n * @param Object\t descriptors\n * @param Function\t receiver\n * @param Object\t params\n *\n * @return Any\n */\nexport function defineProperties( target, descriptors, receiver = x => x, params = {} ) {\n return set( target, descriptors, receiver, params, true/*def*/ );\n}\n\n/**\n * Performs a delete operation.\n * \n * @param Object\t target\n * @param String|Number\t prop\n * @param Function\t receiver\n * @param Object\t params\n *\n * @return Any\n */\nexport function deleteProperty( target, prop, receiver = x => x, params = {} ) {\n // ---------------\n target = resolveObj( target );\n if ( _isObject( receiver ) ) { [ params, receiver ] = [ receiver, x => x ]; }\n // ---------------\n const props = _arrFrom( prop, false ), related = [ ...props ];\n return ( function next( descriptors, props, _done ) {\n if ( !props.length ) return _done( descriptors );\n const prop = props.shift();\n // ---------\n function defaultDel( descriptor, status = undefined ) {\n const _next = status => ( descriptor.status = status, next( descriptors.concat( descriptor ), props, _done ) );\n if ( arguments.length > 1 ) return _next( descriptor, status );\n const accessorizedProps = _( target, 'accessorizedProps', false );\n const accessorization = accessorizedProps && accessorizedProps.get( descriptor.key );\n if ( accessorization && !accessorization.restore() ) _next( false );\n return _next( Reflect.deleteProperty( target, descriptor.key ) );\n }\n // ---------\n function exec( oldValue ) {\n const descriptor = new Descriptor( target, {\n type: 'delete',\n key: prop,\n oldValue,\n related: [ ...related ],\n operation: 'deleteProperty',\n detail: params.detail,\n } );\n const trapsRegistry = TrapsRegistry.getInstance( target, false, params.namespace );\n return trapsRegistry \n ? trapsRegistry.emit( descriptor, defaultDel ) \n : defaultDel( descriptor );\n }\n // ---------\n return get( target, prop, exec, params );\n // ---------\n } )( [], props.slice( 0 ), descriptors => {\n const listenerRegistry = ListenerRegistry.getInstance( target, false, params.namespace );\n if ( listenerRegistry ) listenerRegistry.emit( descriptors );\n return receiver(\n isPropsList( prop/*original*/ ) ? descriptors.map( opr => opr.status ) : descriptors[ 0 ].status\n );\n } );\n}\n\n/**\n * @alias deleteProperty()\n */\nexport function deleteProperties( target, props, receiver = x => x, params = {} ) {\n return deleteProperty( ...arguments );\n}\n\n/* ---------------EFFECT APIs--------------- */\n\n/**\n * Performs a \"construct\" operation.\n *\n * @param Array|Object\t target\n * @param Array\t\t\t argumentsList\n * @param Object\t\t newTarget\n * @param Function\t receiver\n * @param Object\t\t params\n *\n * @return Any\n */\nexport function construct( target, argumentsList, newTarget = null, receiver = x => x, params = {} ) {\n return exec( target, 'construct', arguments.length > 2 ? { argumentsList, newTarget } : { argumentsList }, receiver, params );\n}\n\n/**\n * Performs an \"apply\" operation.\n *\n * @param Array|Object\t target\n * @param Any\t thisArgument\n * @param Array\t argumentsList\n * @param Function\t receiver\n * @param Object\t\t params\n *\n * @return Any\n */\nexport function apply( target, thisArgument, argumentsList, receiver = x => x, params = {} ) {\n const originalThis = unproxy( thisArgument );\n let returnValue;\n if ( Array.isArray( thisArgument ) ) {\n if ( params.arrayMethodName ) {\n const descriptor = new Descriptor( originalThis, {\n operation: params.arrayMethodName,\n argumentsList\n } );\n const listenerRegistry = ListenerRegistry.getInstance( originalThis, false, params.namespace );\n listenerRegistry?.emit( [ descriptor ], { eventIsArrayMethodDescriptor: true } );\n }\n _( originalThis ).set( '$length', originalThis.length );\n returnValue = batch(\n originalThis,\n () => exec( target, 'apply', { thisArgument/*proxy wrappers allowed; in fact is why it works*/, argumentsList }, receiver, params ),\n params\n );\n _( originalThis ).delete( '$length' );\n } else {\n returnValue = exec( target, 'apply', { thisArgument: originalThis, argumentsList }, receiver, params );\n }\n return returnValue;\n}\n\n/**\n * Performs a \"setPrototypeOf\" operation.\n *\n * @param Array|Object\t target\n * @param Anyr\t proto\n * @param Function\t receiver\n * @param Object\t\t params\n *\n * @return Any\n */\nexport function setPrototypeOf( target, proto, receiver = x => x, params = {} ) {\n return exec( target, 'setPrototypeOf', { proto }, receiver, params );\n}\n\n/**\n * Performs a \"preventExtension\" operation.\n *\n * @param Array|Object\t target\n * @param Function\t receiver\n * @param Object\t\t params\n *\n * @return Any\n */\nexport function preventExtensions( target, receiver = x => x, params = {} ) {\n return exec( target, 'preventExtensions', {}, receiver, params );\n}\n\n/* ---------------HELPER APIs--------------- */\n\n/**\n * Adds an observer to a target's registry.\n *\n * @param Array|Object\t target\n * @param String|Object\t prop\n * @param Function\t receiver\n * @param Object\t\t params\n *\n * @return Function: AbortController\n */\nfunction bind( target, prop, receiver, params = {} ) {\n const controller = new AbortController;\n env.setMaxListeners?.( 0, controller.signal );\n if ( params.signal ) { params.signal.addEventListener( 'abort', () => controller.abort() ); }\n params = { ...params, signal: controller.signal };\n \n const listenerRegistry = ListenerRegistry.getInstance( target, true, params.namespace );\n return function emit( descriptor_s, prevRegistration = null ) {\n prevRegistration?.remove();\n const registrationNext = listenerRegistry.addRegistration( prop, emit, params );\n const flags = { signal: registrationNext.signal, };\n if ( arguments.length ) {\n const handlerReturnValue = receiver( descriptor_s, flags );\n if ( arguments.length > 1 ) return handlerReturnValue;\n }\n return controller;\n };\n}\n\n/**\n * Performs an operation of the given \"type\".\n *\n * @param Array|Object\t target\n * @param String\t\t operation\n * @param Object\t\t payload\n * @param Function\t receiver\n * @param Object\t\t params\n *\n * @return Any\n */\nfunction exec( target, operation, payload = {}, receiver = x => x, params = {} ) {\n // ---------\n target = resolveObj( target );\n if ( _isObject( receiver ) ) { [ params, receiver ] = [ receiver, x => x ]; } \n // ---------\n function defaultExec( descriptor, result ) {\n if ( arguments.length > 1 ) return receiver( result );\n return receiver( ( Reflect[ operation ] || Object[ operation ] )( target, ...Object.values( payload ) ) );\n }\n // ---------\n const descriptor = new Descriptor( target, { operation, ...payload } );\n const trapsRegistry = TrapsRegistry.getInstance( target, false, params.namespace );\n if ( trapsRegistry ) {\n return trapsRegistry.emit( descriptor, defaultExec );\n }\n return defaultExec( descriptor );\n}\n\n// Asks if prop is a multi-result field\nfunction isPropsList( prop ) {\n return prop === Infinity || Array.isArray( prop );\n}\n\n// Resolves obj down to it's self\nfunction resolveObj( obj, assert = true ) {\n\tif ( ( !obj || !_isTypeObject( obj ) ) && assert ) throw new Error( `Object must be of type object or array! \"${ _getType( obj ) }\" given.` );\n if ( obj instanceof Descriptor ) {\n obj = obj.value;\n }\n\treturn obj && unproxy( obj );\n}\n\n// Resolves prop down to actual keys\nfunction resolveProps( obj, prop, receiver, params = {} ) {\n if ( prop === Infinity ) {\n if ( params.level && !_isTypeObject( obj ) ) return receiver( [] );\n return ownKeys( obj, receiver, params );\n }\n return receiver( _arrFrom( prop, false ) );\n}\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 if (!arguments.length) return globalThis.webqit.refs;\r\n let 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 let _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 * 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", "\n/**\n * @imports\n */\nimport { _internals } from '@webqit/util/js/index.js';\n\nexport const _ = ( ...args ) => _internals( 'observer-api', ...args );\n\nexport const _await = ( value, callback ) => value instanceof Promise ? value.then( callback ) : callback( value );\n\nexport const env = {};\n", "\n/**\n * ---------------------------\n * The Registration class\n * ---------------------------\n */\n\nexport default class Registration {\n\t\n\t/**\n\t * Initializes the instance.\n\t *\n\t * @param Registry\t\t\tregistry\n\t * @param object\t\t\tdfn\n\t *\n\t * @return void\n\t */\n\tconstructor( registry, dfn ) {\n\t\tthis.registry = registry;\n\t\tObject.assign( this, { ...dfn, target: registry.target } );\n\t\tif ( this.params.signal ) {\n\t\t\tthis.params.signal.addEventListener( 'abort', () => this.remove() );\n\t\t}\n\t}\n\n\t/**\n\t * Sets a \"disconnected\" flag on the Registration.\n\t *\n\t * @return void\n\t */\n\tremove() {\n\t\tthis.removed = true;\n\t\treturn this.registry.removeRegistration( this );\n\t}\n}", "\n/**\n * @imports\n */\nimport { _from as _arrFrom } from '@webqit/util/arr/index.js';\nimport Registration from './Registration.js';\nimport { _await, env } from '../util.js';\n\n/**\n * ---------------------------\n * The ListenerRegistration class\n * ---------------------------\n */\n\nexport default class ListenerRegistration extends Registration {\n\t\n\t/**\n\t * @constructor\n\t */\n\tconstructor() {\n\t\tsuper( ...arguments );\n\t\tthis.emit.currentRegistration = this;\n\t\tObject.defineProperty( this, 'abortController', { value: new AbortController } );\n\t\tObject.defineProperty( this, 'signal', { value: this.abortController.signal } );\n\t\tenv.setMaxListeners?.( 0, this.signal );\n\t}\n\n\t/**\n\t * De-registers the instance.\n\t * \n\t * @return Void\n\t */\n\tremove() {\n\t\tthis.abortController.abort();\n\t\tsuper.remove();\n\t}\n\n\t/**\n\t * Calls the observer's handler function\n\t * on matching with the event's fields.\n\t *\n\t * @param Array\t\t\t \t\tevents\n\t *\n\t * @return Any\n\t */\n\tfire( events ) {\n\t\tif ( this.emit.recursionTarget && ![ 'inject', 'force-async', 'force-sync' ].includes( this.params.recursions ) ) return;\n\t\tlet matches = events, filter = this.filter;\n\t\tif ( filter !== Infinity && ( filter = _arrFrom( filter, false ) ) ) {\n\t\t\tmatches = events.filter( event => filter.includes( event.key ) );\n\t\t}\n\t\tif ( this.params.diff ) {\n\t\t\tmatches = matches.filter( event => event.type !== 'set' || event.value !== event.oldValue );\n\t\t}\n\t\tif ( !matches.length ) return;\n\t\tif ( [ 'inject', 'defer' ].includes( this.params.recursions ) ) {\n\t\t\tif ( this.emit.recursionTarget ) {\n\t\t\t\tthis.emit.recursionTarget.push( ...matches );\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.emit.recursionTarget = this.params.recursions === 'inject' ? matches : [];\n\t\t}\n\t\tconst $ret = this.filter === Infinity || Array.isArray( this.filter )\n\t\t\t? this.emit( matches, this )\n\t\t\t: this.emit( matches[ 0 ], this );\n\t\t// NOTEL: on calling emit(), this registration has expired and a new one active!!!\n\t\treturn _await( $ret, ret => {\n\t\t\tconst recursions = this.emit.recursionTarget;\n\t\t\tdelete this.emit.recursionTarget;\n\t\t\tif ( this.params.recursions === 'defer' ) {\n\t\t\t\tif ( recursions?.length ) return this.emit.currentRegistration.fire( recursions );\n\t\t\t}\n\t\t\treturn ret;\n\t\t} );\n\t}\n}\n", "\n/**\n * @imports\n */\nimport { _isTypeObject, _getType } from '@webqit/util/js/index.js';\nimport { _from as _arrFrom, _intersect, _equals as _arrEquals } from '@webqit/util/arr/index.js';\nimport { _ } from '../util.js';\n\n/**\n * ---------------------------\n * The Registry class\n * ---------------------------\n */\n\nexport default class Registry {\n\t\n\t/**\n\t * Initializes the instance.\n\t *\n\t * @param object\ttarget\n\t * \n\t * @return void\n\t */\n\tconstructor( target ) {\n\t\tthis.target = target;\n\t\tthis.entries = [];\n\t}\n\t\n\t/**\n\t * Adds an Registration instance\n\t * with optional tags.\n\t *\n\t * @param Registration\t\tregistration\n\t *\n\t * @return Registration\n\t */\n\taddRegistration( registration ) {\n\t\tthis.entries.push( registration );\n\t\treturn registration;\n\t}\n\t\n\t/**\n\t * Removes registrations by reference.\n\t *\n\t * @param Registration\t\tregistration\n\t *\n\t * @return void\n\t */\n\tremoveRegistration( registration ) {\n\t\tthis.entries = this.entries.filter( _entry => _entry !== registration );\n\t}\n\t\t\n\t/**\n\t * Returns a observer-specific object embedded on an element.\n\t *\n\t * @param string\t\ttype\n\t * @param array|object\ttarget\n\t * @param bool \tcreateIfNotExists\n\t * @param string \tnamespace\n\t *\n\t * @return Registry\n\t */\n\tstatic _getInstance( type, target, createIfNotExists = true, namespace = this.__namespace ) {\n\t\tif ( !_isTypeObject( target ) ) throw new Error( `Subject must be of type object; \"${ _getType( target ) }\" given!` );\n\t\tlet ImplementationClass = this;\n\t\tif ( namespace && _( 'namespaces' ).has( type + '-' + namespace ) ) {\n\t\t\tImplementationClass = _( 'namespaces' ).get( type + '-' + namespace );\n\t\t\ttype += '-' + namespace\n\t\t}\n\t\tif ( !_( target, 'registry' ).has( type ) && createIfNotExists ) {\n\t\t\t_( target, 'registry' ).set( type, new ImplementationClass( target ) );\n\t\t}\n\t\treturn _( target, 'registry' ).get( type );\n\t}\n\n\t/**\n\t * Extend a Fireable Class with a namespace.\n\t *\n\t * @param string\t\tnamespace\n\t * @param class \tImplementationClass\n\t *\n\t * @return void|class\n\t */\n\tstatic _namespace( type, namespace, ImplementationClass = null ) {\n\t\ttype += '-' + namespace;\n\t\tif ( arguments.length === 2 ) return _( 'namespaces' ).get( type );\n\t\tif ( !( ImplementationClass.prototype instanceof this ) ) {\n\t\t\tthrow new Error( `The implementation of the namespace ${ this.name }.${ namespace } must be a subclass of ${ this.name }.` );\n\t\t}\n\t\t_( 'namespaces' ).set( type, ImplementationClass );\n\t\tImplementationClass.__namespace = namespace;\n\t}\n}", "\n/**\n * ---------------------------\n * The Descriptor class\n * ---------------------------\n */\n\nexport default class Descriptor {\n\t\n\t/**\n\t * Initializes the instance.\n\t *\n\t * @param array|object\ttarget\n\t * @param object\t\tdfn\n\t *\n\t * @return void\n\t */\n\tconstructor( target, dfn ) {\n\t\tthis.target = target;\n\t\tif ( !( dfn.operation ) ) throw new Error( 'Descriptor operation must be given in definition!' );\n\t\tObject.assign( this, dfn );\n\t}\n}", "\n/**\n * @imports\n */\nimport ListenerRegistration from './ListenerRegistration.js';\nimport Registry from './Registry.js';\nimport { _await } from '../util.js';\nimport Descriptor from './Descriptor.js';\n\n/**\n * ---------------------------\n * The ListenerRegistry class\n * ---------------------------\n */\n\nexport default class ListenerRegistry extends Registry {\n\n\tstatic getInstance( target, createIfNotExists = true, namespace = null ) {\n\t\treturn super._getInstance( 'listeners', ...arguments );\n\t}\n\n\tstatic namespace( namespace, ImplementationClass = null ) {\n\t\treturn super._namespace( 'listeners', ...arguments );\n\t}\n\n\t/**\n\t * @constructor\n\t */\n\tconstructor( target ) {\n\t\tsuper( target );\n\t\tthis.batches = [];\n\t}\n\t\n\t/**\n\t * @addRegistration\n\t */\n\taddRegistration( filter, emit, params ) {\n\t\treturn super.addRegistration( new ListenerRegistration( this, { filter, emit, params } ) );\n\t}\n\t\n\t/**\n\t * Fires all observers with the given evt (change).\n\t *\n\t * @param Arrayn events\n\t *\n\t * @return Void\n\t */\n\temit( events, { eventsArePropertyDescriptors = false, eventIsArrayMethodDescriptor = false } = {} ) {\n\t\tif ( this.batches.length ) {\n\t\t\tthis.batches[ 0 ].snapshots.push( {\n\t\t\t\tevents: [ ...events ],\n\t\t\t\tarrayMethodName: this.batches[ 0 ].params.arrayMethodName, // Typically from child events firing from array method operations\n\t\t\t\teventsArePropertyDescriptors, // Typically from defineProperty() operations\n\t\t\t\teventIsArrayMethodDescriptor // Typically from array method operations\n\t\t\t} );\n\t\t\treturn\n\t\t}\n\t\tthis.$emit( this.entries, [ {\n\t\t\tevents, \n\t\t\teventsArePropertyDescriptors, // Typically from defineProperty() operations\n\t\t\teventIsArrayMethodDescriptor // Typically from array method operations\n\t\t} ] );\n\t}\n\n\t$emit( listeners, snapshots ) {\n\t\t// Analyse listener modes\n\t\tlet listenersLength = 0,\n\t\tlistenersAskingEventsWithPropertyDescriptors = 0,\n\t\tlistenersAskingArrayMethodDescriptors = 0;\n\t\tfor ( const listener of listeners ) {\n\t\t\tlistenersLength += 1;\n\t\t\tif ( listener.params.withPropertyDescriptors ) {\n\t\t\t\tlistenersAskingEventsWithPropertyDescriptors += 1;\n\t\t\t}\n\t\t\tif ( listener.params.withArrayMethodDescriptors ) {\n\t\t\t\tlistenersAskingArrayMethodDescriptors += 1;\n\t\t\t}\n\t\t}\n\t\t// Sort events\n\t\tconst events_with_PropertyDescriptors_with_ArrayMethodDescriptors = [], events_with_PropertyDescriptors_without_ArrayMethodDescriptors = [];\n\t\tconst events_without_PropertyDescriptors_with_ArrayMethodDescriptors = [], events_without_PropertyDescriptors_without_ArrayMethodDescriptors = [];\n\t\tfor ( const snapshot of snapshots ) {\n\t\t\tconst arrayMethodName = snapshot.arrayMethodName;\n\t\t\tconst eventsArePropertyDescriptors = snapshot.eventsArePropertyDescriptors;\n\t\t\tconst eventIsArrayMethodDescriptor = snapshot.eventIsArrayMethodDescriptor;\n\t\t\tfor ( const event of snapshot.events ) {\n\t\t\t\tif ( arrayMethodName ) {\n\t\t\t\t\tevent.arrayMethodName = arrayMethodName;\n\t\t\t\t}\n\t\t\t\t// Some opting in to PropertyDescriptors\n\t\t\t\tif ( listenersAskingEventsWithPropertyDescriptors ) {\n\t\t\t\t\tif ( !arrayMethodName || eventIsArrayMethodDescriptor ) {\n\t\t\t\t\t\tlistenersAskingArrayMethodDescriptors && // Some opting in to ArrayMethodDescriptors\n\t\t\t\t\t\tevents_with_PropertyDescriptors_with_ArrayMethodDescriptors.push( event );\n\t\t\t\t\t}\n\t\t\t\t\tif ( !eventIsArrayMethodDescriptor ) {\n\t\t\t\t\t\tlistenersAskingArrayMethodDescriptors !== listenersLength && // Some opting out of ArrayMethodDescriptors\n\t\t\t\t\t\tevents_with_PropertyDescriptors_without_ArrayMethodDescriptors.push( event );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// Some opting out of PropertyDescriptors\n\t\t\t\tif ( listenersAskingEventsWithPropertyDescriptors !== listenersLength ) {\n\t\t\t\t\tlet $event = event;\n\t\t\t\t\tif ( eventsArePropertyDescriptors ) {\n\t\t\t\t\t\tconst { target, type, ...details } = event;\n\t\t\t\t\t\t$event = new Descriptor( target, { type: 'set', ...details } );\n\t\t\t\t\t\tObject.defineProperty( $event, 'value', 'get' in details.value ? { get: () => details.value.get() } : { value: details.value.value } )\n\t\t\t\t\t\tif ( details.oldValue ) {\n\t\t\t\t\t\t\tObject.defineProperty( $event, 'oldValue', 'get' in details.oldValue ? { get: () => details.oldValue.get() } : { value: details.oldValue.value } )\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( !arrayMethodName || eventIsArrayMethodDescriptor/*Although eedless as is typically mutually exclusive to eventsArePropertyDescriptors*/ ) {\n\t\t\t\t\t\tlistenersAskingArrayMethodDescriptors && // Some opting in to ArrayMethodDescriptors\n\t\t\t\t\t\tevents_without_PropertyDescriptors_with_ArrayMethodDescriptors.push( $event );\n\t\t\t\t\t}\n\t\t\t\t\tif ( !eventIsArrayMethodDescriptor ) { // Although eedless as is typically already implied by eventsArePropertyDescriptors\n\t\t\t\t\t\tlistenersAskingArrayMethodDescriptors !== listenersLength && // Some opting out of ArrayMethodDescriptors\n\t\t\t\t\t\tevents_without_PropertyDescriptors_without_ArrayMethodDescriptors.push( $event );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t// Dispatch\n\t\tfor ( const listener of listeners ) {\n\t\t\tif ( listener.params.withPropertyDescriptors ) {\n\t\t\t\tif ( listener.params.withArrayMethodDescriptors ) {\n\t\t\t\t\tlistener.fire( events_with_PropertyDescriptors_with_ArrayMethodDescriptors );\n\t\t\t\t} else {\n\t\t\t\t\tlistener.fire( events_with_PropertyDescriptors_without_ArrayMethodDescriptors );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ( listener.params.withArrayMethodDescriptors ) {\n\t\t\t\t\tlistener.fire( events_without_PropertyDescriptors_with_ArrayMethodDescriptors );\n\t\t\t\t} else {\n\t\t\t\t\tlistener.fire( events_without_PropertyDescriptors_without_ArrayMethodDescriptors );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Fires all observers with the given evt (change).\n\t *\n\t * @param Arrayn events\n\t *\n\t * @return Void\n\t */\n\tbatch( callback, params = {} ) {\n\t\tthis.batches.unshift( { entries: [ ...this.entries ], snapshots: [], params } );\n\t\tconst returnValue = callback();\n\t\treturn _await( returnValue, returnValue => {\n\t\t\tconst batch = this.batches.shift();\n\t\t\tif ( !batch.snapshots.length ) return returnValue;\n\t\t\tthis.$emit( batch.entries, batch.snapshots );\n\t\t\treturn returnValue;\n\t\t} );\n\t}\n\n}\n", "\n/**\n * @imports\n */\nimport Registration from './Registration.js';\n\n/**\n * ---------------------------\n * The TrapsRegistration class\n * ---------------------------\n */\n\nexport default class TrapsRegistration extends Registration {\n\t\n\t/**\n\t * Calls the observer's handler function\n\t * on matching with the descriptor's fields.\n\t *\n\t * @param Descriptor\t\t\t \tdescriptor\n\t * @param function\t\t\t\t\tnext\n\t * @param mixed\t\t\t\t\t \trecieved\n\t *\n\t * @return void\n\t */\n\texec( descriptor, next, recieved ) {\n\t\tif ( this.running || !this.traps[ descriptor.operation ] ) {\n\t\t\treturn next( ...Array.prototype.slice.call( arguments, 2 ) );\n\t\t}\n\t\tthis.running = true;\n\t\treturn this.traps[ descriptor.operation ]( descriptor, recieved, ( ...args ) => {\n\t\t\tthis.running = false;\n\t\t\treturn next( ...args );\n\t\t} );\n\t}\n}", "\n/**\n * @imports\n */\nimport TrapsRegistration from './TrapsRegistration.js';\nimport Registry from './Registry.js';\n\n/**\n * ---------------------------\n * The TrapsRegistry class\n * ---------------------------\n */\n\nexport default class TrapsRegistry extends Registry {\n\n\tstatic getInstance( target, createIfNotExists = true, namespace = null ) {\n\t\treturn super._getInstance( 'traps', ...arguments );\n\t}\n\n\tstatic namespace( namespace, ImplementationClass = null ) {\n\t\treturn super._namespace( 'traps', ...arguments );\n\t}\n\t\n\t/**\n\t * @inheritdoc\n\t */\n\taddRegistration( dfn ) {\n\t\treturn super.addRegistration( new TrapsRegistration( this, dfn ) );\n\t}\n\n\t/**\n\t * Fires all interceptors with the given action.\n\t *\n\t * @param Descriptor\t\tdescriptor\n\t * @param function\t\t\tdefaultHandler\n\t *\n\t * @return mixed\n\t */\n\temit( descriptor, defaultHandler = null ) {\n\t\tconst $this = this;\n\t\treturn ( function next( index, ..._args ) {\n\t\t\tconst registration = $this.entries[ index ];\n\t\t\tif ( registration ) {\n\t\t\t\treturn registration.exec( descriptor, ( ...args ) => {\n\t\t\t\t\treturn next( index + 1, ...args );\n\t\t\t\t}/*next*/, ..._args );\n\t\t\t}\n\t\t\treturn defaultHandler ? defaultHandler( descriptor, ..._args ) : _args[ 0 ];\n\t\t} )( 0 );\n\t}\n}", "\n/**\n * @imports\n */\nimport { _from as _arrFrom } from '@webqit/util/arr/index.js';\nimport { _isClass, _isFunction, _isTypeObject, _getType } from '@webqit/util/js/index.js';\nimport { set, deleteProperty, has, get, ownKeys, defineProperty, getOwnPropertyDescriptor } from \"./main.js\";\nimport { batch, apply, construct, getPrototypeOf, setPrototypeOf, isExtensible, preventExtensions } from \"./main.js\";\nimport { _ } from './util.js';\n\n/* ---------------ACCESSORIZE METHODS--------------- */\n\n/**\n * Accessorizes props.\n *\n * @param Array|Object\ttarget\n * @param String|Array\tprops\n * @param Object\t\tparams\n *\n * @return Array\n */\nexport function accessorize( target, props, params = {} ) {\n target = resolveTarget( target );\n const accessorizedProps = _( target, 'accessorizedProps' );\n // ---------\n function getDescriptorDeep( prop ) {\n let descriptor, proto = target;\n do {\n descriptor = Object.getOwnPropertyDescriptor( proto, prop );\n } while ( !descriptor && ( proto = Object.getPrototypeOf( proto ) ) );\n return descriptor \n ? { proto, descriptor } \n : { descriptor: { value: undefined, configurable: true, enumerable: true, writable: true } };\n }\n // ---------\n function accessorizeProp( prop ) {\n if ( accessorizedProps.has( prop + '' ) ) return true;\n // ------------------\n // Current Descriptor Record\n const currentDescriptorRecord = getDescriptorDeep( prop );\n currentDescriptorRecord.getValue = function( withPropertyDescriptors = false ) {\n if ( withPropertyDescriptors ) return this.descriptor;\n return this.descriptor.get ? this.descriptor.get() : this.descriptor.value;\n };\n currentDescriptorRecord.setValue = function( value, withPropertyDescriptors = false ) {\n this.dirty = true;\n if ( withPropertyDescriptors ) { this.descriptor = value; return; }\n return this.descriptor.set ? this.descriptor.set( value ) !== false : ( this.descriptor.value = value, true );\n };\n currentDescriptorRecord.intact = function() {\n const currentDescriptor = Object.getOwnPropertyDescriptor( target, prop );\n return currentDescriptor?.get === accessorization.get \n && currentDescriptor?.set === accessorization.set\n && accessorizedProps.get( prop + '' ) === this;\n };\n currentDescriptorRecord.restore = function() {\n if ( !this.intact() ) return false;\n if ( ( this.proto && this.proto !== target ) || ( !this.proto && !this.dirty ) ) { delete target[ prop ]; }\n else { Object.defineProperty( target, prop, this.descriptor ); }\n accessorizedProps.delete( prop + '' );\n return true;\n };\n accessorizedProps.set( !isNaN( prop ) ? parseInt( prop ) : prop, currentDescriptorRecord );\n // ------------------\n // enumerable, configurable\n const { enumerable = true } = currentDescriptorRecord.descriptor;\n const accessorization = { enumerable, configurable: true };\n // set, get\n if ( ( 'value' in currentDescriptorRecord.descriptor ) || currentDescriptorRecord.descriptor.set ) {\n accessorization.set = function ( value ) { return set( this, prop, value, params ); };\n }\n if ( ( 'value' in currentDescriptorRecord.descriptor ) || currentDescriptorRecord.descriptor.get ) {\n accessorization.get = function () { return get( this, prop, params ); };\n }\n try {\n Object.defineProperty( target, prop, accessorization );\n return true;\n } catch( e ) {\n accessorizedProps.delete( prop + '' );\n return false;\n }\n }\n const _props = Array.isArray( props ) ? props : (\n props === undefined ? Object.keys( target ) : [ props ]\n );\n const statuses = _props.map( accessorizeProp );\n return props === undefined || Array.isArray( props ) \n ? statuses \n : statuses[ 0 ];\n}\n\n/**\n * Unaccessorizes previously accessorized props.\n *\n * @param Array|Object\ttarget\n * @param String|Array\tprops\n * @param Object\t\tparams\n *\n * @return Array\n */\nexport function unaccessorize( target, props, params = {} ) {\n target = resolveTarget( target );\n const accessorizedProps = _( target, 'accessorizedProps' );\n function unaccessorizeProp( prop ) {\n if ( !accessorizedProps.has( prop + '' ) ) return true;\n return accessorizedProps.get( prop + '' ).restore();\n }\n const _props = Array.isArray( props ) ? props : (\n props === undefined ? Object.keys( target ) : [ props ]\n );\n const statuses = _props.map( unaccessorizeProp );\n return props === undefined || Array.isArray( props ) \n ? statuses \n : statuses[ 0 ];\n}\n\n/* ---------------PROXY METHODS--------------- */\n\n/**\n * Returns an object as a proxy and binds all instance methods\n * to the proxy instead of the object itself.\n *\n * @param Array|Object\t\ttarget\n * @param Object\t\t params\n * @param Function\t\t extendCallback\n *\n * @return Proxy\n */\nexport function proxy( target, params = {}, extendCallback = undefined ) {\n // Resolve target\n const originalTarget = resolveTarget( target );\n // Return same proxy instance?\n if ( typeof params.membrane === 'boolean' ) throw new Error( `The params.membrane parameter cannot be of type boolean.` );\n if ( params.membrane && _( originalTarget, 'membraneRef' ).has( params.membrane ) ) { return _( originalTarget, 'membraneRef' ).get( params.membrane ); }\n const traps = {\n apply: ( target, thisArgument, argumentsList ) => apply( target, thisArgument, argumentsList, undefined, params ),\n construct: ( target, argumentsList, newTarget = null ) => construct( target, argumentsList, newTarget, params ),\n defineProperty: ( target, propertyKey, attributes ) => defineProperty( target, propertyKey, attributes, params ),\n deleteProperty: ( target, propertyKey ) => deleteProperty( target, propertyKey, params ),\n get: ( target, propertyKey, receiver = null ) => {\n const $params = { ...params, receiver };\n const returnValue = get( target, propertyKey, $params );\n if ( Array.isArray( target ) && typeof returnValue === 'function' ) {\n // Return a proxy, but in terms of a membrane. \n return proxy( returnValue, { ...params, arrayMethodName: propertyKey, membrane: receiver/* the instance obj that will be the thisArgument at apply(). Much like function.bind() */ } );\n }\n return returnValue;\n },\n getOwnPropertyDescriptor: ( target, propertyKey ) => getOwnPropertyDescriptor( target, propertyKey, params ),\n getPrototypeOf: target => getPrototypeOf( target, params ),\n has: ( target, propertyKey ) => has( target, propertyKey, params ),\n isExtensible: target => isExtensible( target, params ),\n ownKeys: target => ownKeys( target, params ),\n preventExtensions: target => preventExtensions( target, params ),\n set: ( target, propertyKey, value, receiver = null ) => set( target, propertyKey, value, { ...params, receiver } ),\n setPrototypeOf: ( target, prototype ) => setPrototypeOf( target, prototype, params ),\n };\n // Extend...\n const $traps = extendCallback?.( traps ) || traps;\n // Create proxy\n const $proxy = new Proxy( originalTarget, $traps );\n if ( params.membrane ) { _( originalTarget, 'membraneRef' ).set( params.membrane, $proxy ); }\n _( $proxy ).set( $proxy, originalTarget );\n\treturn $proxy;\n}\n\n/**\n * Returns the original object earlier proxied by proxy().\n *\n * @param Proxy|Any\t\ttarget\n *\n * @return Any\n */\nexport function unproxy( target ) {\n // Proxy targets are mapped to their own instances internally\n return _( target ).get( target ) || target;\n}\n\n/* ---------------HELPERS--------------- */\n\n/** \n * Ensures target object is an object or array.\n *\n * @param Array|Object\ttarget\n *\n * @return Array|Object\n */\nfunction resolveTarget( target ) {\n\tif ( !target || !_isTypeObject( target ) ) throw new Error('Target must be of type object!');\n\treturn unproxy( target );\n}\n", "\n/**\n * @imports\n */\nimport * as main from './main.js';\nimport * as actors from './actors.js';\n\nconst Observer = { ...main, ...actors };\n\nexport default Observer;", "\n/**\n * @imports\n */\nimport Observer from './index.js';\n\n// As globals\nif ( !self.webqit ) { self.webqit = {}; }\nself.webqit.Observer = Observer;"],
5
- "mappings": "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",
6
- "names": ["main_exports", "__export", "apply", "batch", "construct", "defineProperties", "defineProperty", "deleteProperties", "deleteProperty", "get", "getOwnPropertyDescriptor", "getOwnPropertyDescriptors", "getPrototypeOf", "has", "intercept", "isExtensible", "map", "observe", "ownKeys", "path", "preventExtensions", "reduce", "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", "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", "_", "args", "internals", "_await", "value", "callback", "env", "Registration", "registry", "dfn", "ListenerRegistration", "Registration", "env", "events", "matches", "filter", "from_default", "event", "$ret", "_await", "ret", "recursions", "Registry", "target", "registration", "_entry", "type", "createIfNotExists", "namespace", "isTypeObject_default", "getType_default", "ImplementationClass", "_", "Descriptor", "target", "dfn", "ListenerRegistry", "Registry", "target", "createIfNotExists", "namespace", "ImplementationClass", "filter", "emit", "params", "ListenerRegistration", "events", "eventsArePropertyDescriptors", "eventIsArrayMethodDescriptor", "listeners", "snapshots", "listenersLength", "listenersAskingEventsWithPropertyDescriptors", "listenersAskingArrayMethodDescriptors", "listener", "events_with_PropertyDescriptors_with_ArrayMethodDescriptors", "events_with_PropertyDescriptors_without_ArrayMethodDescriptors", "events_without_PropertyDescriptors_with_ArrayMethodDescriptors", "events_without_PropertyDescriptors_without_ArrayMethodDescriptors", "snapshot", "arrayMethodName", "event", "$event", "type", "details", "Descriptor", "callback", "returnValue", "_await", "batch", "TrapsRegistration", "Registration", "descriptor", "next", "recieved", "args", "TrapsRegistry", "Registry", "target", "createIfNotExists", "namespace", "ImplementationClass", "dfn", "TrapsRegistration", "descriptor", "defaultHandler", "$this", "next", "index", "_args", "registration", "args", "actors_exports", "__export", "accessorize", "proxy", "unaccessorize", "unproxy", "accessorize", "target", "props", "params", "resolveTarget", "accessorizedProps", "_", "getDescriptorDeep", "prop", "descriptor", "proto", "accessorizeProp", "currentDescriptorRecord", "withPropertyDescriptors", "value", "currentDescriptor", "accessorization", "enumerable", "set", "get", "statuses", "unaccessorize", "unaccessorizeProp", "proxy", "extendCallback", "originalTarget", "traps", "thisArgument", "argumentsList", "apply", "newTarget", "construct", "propertyKey", "attributes", "defineProperty", "deleteProperty", "receiver", "$params", "returnValue", "getOwnPropertyDescriptor", "getPrototypeOf", "has", "isExtensible", "ownKeys", "preventExtensions", "prototype", "setPrototypeOf", "$traps", "$proxy", "unproxy", "isTypeObject_default", "Path", "path", "segments", "reduce", "target", "receiver", "final", "x", "params", "eat", "$params", "segment", "isLastSegment", "Descriptor", "result", "args", "addTrail", "desc", "advance", "$value", "resolveObj", "_await", "flags", "isPropsList", "observe", "prop", "isFunction_default", "getType_default", "isTypeObject_default", "get", "emit", "bind", "intercept", "traps", "isObject_default", "TrapsRegistry", "getOwnPropertyDescriptor", "exec", "getOwnPropertyDescriptors", "getPrototypeOf", "isExtensible", "ownKeys", "has", "isLive", "originalTarget", "resolveProps", "props", "related", "next", "results", "_props", "_done", "defaultGet", "descriptor", "value", "_next", "accessorizedProps", "_", "accessorization", "trapsRegistry", "result_s", "batch", "callback", "ListenerRegistry", "map", "source", "only", "except", "sourceKeys", "k", "filteredKeys", "resolveKey", "i", "doSet", "key", "set", "defineProperty", "mutations", "m", "deleteProperty", "def", "entries", "descriptors", "defaultSet", "status", "isUpdate", "oldValue", "exists", "listenerRegistry", "opr", "defineProperties", "from_default", "defaultDel", "deleteProperties", "construct", "argumentsList", "newTarget", "apply", "thisArgument", "originalThis", "unproxy", "returnValue", "setPrototypeOf", "proto", "preventExtensions", "controller", "env", "descriptor_s", "prevRegistration", "handlerReturnValue", "operation", "payload", "defaultExec", "obj", "assert", "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/js/isTypeFunction.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/js/wq.js", "../node_modules/@webqit/util/arr/from.js", "../src/util.js", "../src/core/Registration.js", "../src/core/ListenerRegistration.js", "../src/core/Registry.js", "../src/core/Descriptor.js", "../src/core/ListenerRegistry.js", "../src/core/TrapsRegistration.js", "../src/core/TrapsRegistry.js", "../src/actors.js", "../src/index.js", "../src/targets.browser.js"],
4
+ "sourcesContent": ["import { _isObject, _isTypeObject, _isFunction, _getType } from '@webqit/util/js/index.js';\nimport { _from as _arrFrom } from '@webqit/util/arr/index.js';\nimport { _wq, _await, env } from './util.js';\nimport ListenerRegistry from './core/ListenerRegistry.js';\nimport TrapsRegistry from './core/TrapsRegistry.js';\nimport Descriptor from './core/Descriptor.js';\nimport { unproxy } from './actors.js';\n\n/* ---------------SPECIAL APIs--------------- */\n\n/**\n * Creates a Path array instance from arguments.\n * \n * @param Array\t ...segments\n *\n * @return Path\n */\nclass Path extends Array {}\nexport function path( ...segments ) {\n return new Path( ...segments );\n}\n\n/**\n * Creates a \"Subtree\" directive.\n * \n * @return Subtree\n */\nclass Subtree extends Array {}\nexport function subtree() {\n return new Subtree;\n}\n\n/**\n * Creates an \"Infinity\" directive.\n * \n * @return Infinity\n */\nexport function any() {\n return Infinity;\n}\n\n/**\n * Reduces a path array against handler.\n * \n * @param Array|Object\t target\n * @param Array\t path\n * @param Function\t receiver\n * @param Function\t final\n * @param Object\t params\n * \n * @example reduce( object, [ segement1, segement2 ], observe, ( value, flags ) => {}, params );\n *\n * @return Any\n */\nexport function reduce( target, path, receiver, final = x => x, params = {} ) {\n const _isSubtree = path instanceof Subtree;\n if ( !_isSubtree && !path?.length ) return;\n return ( function eat( target, path, $params, $isSubtree ) {\n const isSubtree = $isSubtree || path[ $params.level ] instanceof Subtree;\n const segment = isSubtree ? Infinity : path[ $params.level ];\n const isLastSegment = isSubtree ? false : $params.level === path.length - 1;\n if ( target instanceof Descriptor && target.operation !== 'get' ) {\n // Always probe event-generated trees\n $params = { ...$params, probe: 'always' };\n } else if ( $params.probe !== 'always' ) {\n // Probe until (before) last segment\n $params = { ...$params, probe: !isLastSegment };\n }\n // ---------------\n return receiver( target, segment, ( result, ...args ) => {\n // -----------\n const addTrail = ( desc ) => {\n if ( !( desc instanceof Descriptor ) ) return;\n desc.path = 'key' in desc ? [ desc.key ] : [];\n if ( target instanceof Descriptor ) {\n desc.path = 'key' in desc ? target.path.concat( desc.key ) : target.path.slice( 0 );\n Object.defineProperty( desc, 'context', { get: () => target, configurable: true } );\n }\n };\n const flags = args[ 0 ] || {};\n const advance = ( result ) => {\n if ( result instanceof Descriptor && 'argumentsList' in result ) {\n return;\n }\n const $value = resolveObj( result/* a Descriptor who's value could be proxied */, false );\n return _await( $value/* could be a promise */, $value => {\n if ( result instanceof Descriptor ) {\n result.value = $value; // Update to (fulfilled), unproxied, value\n } else {\n result = $value;\n }\n return eat( result, path, { ...$params, ...flags, keyInParent: result.key, level: $params.level + 1, }, isSubtree );\n } );\n };\n // -----------\n if ( isPropsList( segment ) && Array.isArray( result ) ) {\n result.forEach( addTrail );\n if ( isLastSegment ) {\n return final( result, ...args );\n }\n if ( isSubtree && result[ 0 ] instanceof Descriptor && ( result[ 0 ].operation !== 'get' || params.asGet ) ) {\n final( result, ...args );\n }\n for ( const entry of result ) {\n advance( entry );\n }\n return;\n }\n // -----------\n addTrail( result );\n if ( isLastSegment ) {\n return final( result, ...args );\n }\n return advance( result );\n // -----------\n }, $params );\n } )( target, path.slice( 0 ), { ...params, level: 0 }, _isSubtree );\n}\n\n/**\n * Adds an observer to a target's registry.\n *\n * @param Array|Object\t target\n * @param String|Object\t prop\n * @param Function\t receiver\n * @param Object\t\t params\n *\n * @return AbortController\n */\nexport function observe( target, prop, receiver, params = {} ) {\n // ---------------\n const originalTarget = resolveObj( target, !params.level );\n\tif ( _isFunction( arguments[ 1 ] ) ) {\n [ , receiver, params = {} ] = arguments;\n prop = Infinity;\n\t}\n\tif ( !_isFunction( receiver ) ) throw new Error( `Handler must be a function; \"${ _getType( receiver ) }\" given!` );\n if ( prop instanceof Path || prop instanceof Subtree ) return reduce( originalTarget, prop, observe, receiver, params );\n // ---------------\n params = { ...params, descripted: true };\n delete params.live;\n if ( !_isTypeObject( originalTarget ) ) return params.probe && get( originalTarget, prop, receiver, params ) || undefined;\n // ---------------\n const emit = bind( originalTarget, prop, receiver, params );\n if ( params.probe ) {\n return get( originalTarget, prop, emit, params );\n }\n return emit();\n}\n\n/**\n * Adds an interceptor object to a target's registry.\n *\n * @param Array|Object\t target\n * @param Object\t traps\n * @param Object\t\t params\n *\n * @return AbortRegistry\n */\nexport function intercept( target, traps, params = {} ) {\n // ---------------\n const originalTarget = resolveObj( target );\n if ( !_isObject( traps ) ) {\n [ /*target*/, /*operation*/, /*handler*/, params = {} ] = arguments;\n traps = { [ arguments[ 1 ] ]: arguments[ 2 ] };\n }\n // ---------------\n return TrapsRegistry.getInstance( originalTarget, true, params.namespace ).addRegistration( { traps, params } );\n}\n\n/* ---------------QUERY APIs--------------- */\n\n/**\n * Performs a \"getOwnPropertyDescriptor\" operation.\n *\n * @param Array|Object\t target\n * @param String|Number\t prop\n * @param Function\t receiver\n * @param Object\t\t params\n *\n * @return Any\n */\nexport function getOwnPropertyDescriptor( target, prop, receiver = x => x, params = {} ) {\n return exec( target, 'getOwnPropertyDescriptor', { key: prop }, receiver, params );\n}\n\n/**\n * Performs a \"getOwnPropertyDescriptors\" operation.\n * @note this isn't part of the standard Reflect API.\n *\n * @param Array|Object\t target\n * @param String|Number\t prop\n * @param Function\t receiver\n * @param Object\t\t params\n *\n * @return Any\n */\nexport function getOwnPropertyDescriptors( target, prop, receiver = x => x, params = {} ) {\n return exec( target, 'getOwnPropertyDescriptors', { key: prop }, receiver, params );\n}\n\n/**\n * Performs a \"getPrototypeOf\" operation.\n *\n * @param Array|Object\t target\n * @param Function\t receiver\n * @param Object\t\t params\n *\n * @return Any\n */\nexport function getPrototypeOf( target, receiver = x => x, params = {} ) {\n return exec( target, 'getPrototypeOf', {}, receiver, params );\n}\n\n/**\n * Performs a \"isExtensible\" operation.\n *\n * @param Array|Object\t target\n * @param Function\t receiver\n * @param Object\t\t params\n *\n * @return Any\n */\nexport function isExtensible( target, receiver = x => x, params = {} ) {\n return exec( target, 'isExtensible', {}, receiver, params );\n}\n\n/**\n * Performs a \"ownKeys\" operation.\n *\n * @param Array|Object\t target\n * @param Function\t receiver\n * @param Object\t\t params\n *\n * @return Any\n */\nexport function ownKeys( target, receiver = x => x, params = {} ) {\n return exec( target, 'ownKeys', {}, receiver, params );\n}\n\n/**\n * Performs an operation of the given \"type\".\n *\n * @param Array|Object\t target\n * @param String|Number\t prop\n * @param Function\t receiver\n * @param Object\t\t params\n *\n * @return Any\n */\nexport function has( target, prop, receiver = x => x, params = {} ) {\n return exec( target, 'has', { key: prop }, receiver, params );\n}\n\n/**\n * Performs a get operation.\n *\n * @param Array|Object\t target\n * @param String|Number\t prop\n * @param Function\t receiver\n * @param Object\t params\n *\n * @return Any\n */\nexport function get( target, prop, receiver = x => x, params = {} ) {\n // ---------------\n let isLive;\n const originalTarget = resolveObj( target, !params.level );\n if ( _isObject( receiver ) ) {\n [ params, receiver ] = [ receiver, x => x ];\n } else if ( params.live ) { isLive = true; }\n if ( prop instanceof Path || prop instanceof Subtree ) return reduce( originalTarget, prop, get, receiver, { ...params, asGet: true } );\n // ---------------\n return resolveProps( originalTarget, prop, props => {\n const related = [ ...props ];\n return ( function next( results, _props, _done ) {\n if ( !_props.length ) return _done( results );\n const prop = _props.shift();\n if ( ![ 'string', 'number', 'symbol' ].includes( typeof prop ) ) {\n throw new Error( `Property name/key ${ prop } invalid.` );\n }\n // ---------\n function defaultGet( descriptor, value = undefined ) {\n const _next = value => ( descriptor.value = value, next( [ ...results, params.live || params.descripted ? descriptor : value ]/** not using concat() as value may be an array */, _props, _done ) );\n if ( arguments.length > 1 ) return _next( value );\n if ( !_isTypeObject( originalTarget ) ) return _next( originalTarget?.[ descriptor.key ] );\n const accessorizedProps = _wq( originalTarget, 'accessorizedProps', false );\n const accessorization = accessorizedProps && accessorizedProps.get( descriptor.key );\n if ( accessorization && accessorization.intact() ) {\n return _next( accessorization.getValue( params.withPropertyDescriptors ) );\n }\n if ( params.withPropertyDescriptors ) {\n const desc = Object.getOwnPropertyDescriptor( originalTarget, descriptor.key );\n return _next( desc );\n }\n return _next( Reflect.get( originalTarget, descriptor.key/*, ...( params.receiver ? [ params.receiver ] : [] )*//*Throws Illegal invocation error ffor DOM nodes, e.g.*/ ) );\n }\n // ---------\n const descriptor = new Descriptor( originalTarget, {\n type: 'get',\n key: prop,\n value: undefined,\n operation: 'get',\n related,\n } );\n if ( !_isTypeObject( originalTarget ) ) return defaultGet( descriptor );\n const trapsRegistry = TrapsRegistry.getInstance( originalTarget, false, params.namespace );\n if ( trapsRegistry ) {\n return trapsRegistry.emit( descriptor, defaultGet );\n }\n return defaultGet( descriptor );\n } )( [], props.slice( 0 ), results => {\n const result_s = isPropsList( prop/*original*/ ) ? results : results[ 0 ];\n if ( isLive && _isTypeObject( originalTarget ) ) {\n const emit = bind( originalTarget, prop, receiver, params, target.key );\n return emit( result_s );\n }\n return receiver( result_s );\n } );\n }, params );\n}\n\n/* ---------------MUTATION APIs--------------- */\n\n/**\n * Performs a batch operation.\n * \n * @param Object\t target\n * @param Function\t callback\n * @param Object\t params\n *\n * @return Void\n */\nexport function batch( target, callback, params = {} ) {\n const originalTarget = resolveObj( target );\n return ListenerRegistry.getInstance( originalTarget, true, params.namespace ).batch( callback, params );\n}\n\n/**\n * Performs a mirror operation.\n * \n * @param Object\t source\n * @param Object\t target\n * @param Object\t params\n *\n * @return Void\n */\nexport function map( source, target, params = {} ) {\n target = resolveObj( target );\n source = resolveObj( source );\n const only = ( params.only || [] ).slice( 0 ), except = ( params.except || [] ).slice( 0 );\n const sourceKeys = Object.keys( params.spread ? [ ...source ] : source ).map( k => !isNaN( k ) ? parseInt( k ) : k );\n const filteredKeys = only.length ? only.filter( k => sourceKeys.includes( k ) ) : sourceKeys.filter( k => !except.includes( k ) );\n const resolveKey = k => { \n if ( !Array.isArray( target ) || isNaN( k ) ) return k;\n return k - except.filter( i => i < k ).length;\n };\n const doSet = key => {\n const descriptor = getOwnPropertyDescriptor( source, key, params );\n if ( ( 'value' in descriptor ) && descriptor.writable && descriptor.enumerable && descriptor.configurable ) {\n set( target, resolveKey( key ), descriptor.value, params );\n } else if ( descriptor.enumerable || params.onlyEnumerable === false ) { defineProperty( target, key, { ...descriptor, configurable: true }, params ); }\n };\n batch( target, () => {\n filteredKeys.forEach( doSet );\n } );\n return observe( source, mutations => {\n //batch( target, () => {\n mutations.filter( m => only.length ? only.includes( m.key ) : !except.includes( m.key ) ).forEach( m => {\n if ( m.type === 'delete' ) return deleteProperty( target, resolveKey( m.key ), params );\n if ( m.type === 'def' ) {\n if ( m.value.enumerable || params.onlyEnumerable === false ) {\n defineProperty( target, resolveKey( m.key ), { ...m.value, configurable: true }, params );\n }\n return;\n }\n doSet( m.key );\n } );\n //}, params );\n }, { ...params, withPropertyDescriptors: true } );\n}\n\n/**\n * Performs a set operation.\n * \n * @param Object\t target\n * @param String|Number\t prop\n * @param Any\t value\n * @param Function\t receiver\n * @param Object\t params\n * @param Bool\t def\n *\n * @return Any\n */\nexport function set( target, prop, value, receiver = x => x, params = {}, def = false ) {\n // ---------------\n const originalTarget = resolveObj( target );\n let entries = [ [ prop, value ] ];\n if ( _isObject( prop ) ) {\n [ /*target*/, /*hash*/, receiver = x => x, params = {}, def = false ] = arguments;\n entries = Object.entries( prop );\n }\n if ( _isObject( receiver ) ) { [ def, params, receiver ] = [ typeof params === 'boolean' ? params : def, receiver, x => x ]; }\n // ---------------\n const related = entries.map( ( [ prop ] ) => prop );\n return ( function next( descriptors, entries, _done ) {\n if ( !entries.length ) return _done( descriptors );\n const [ prop, value ] = entries.shift();\n // ---------\n function defaultSet( descriptor, status = undefined ) {\n const _next = status => ( descriptor.status = status, next( descriptors.concat( descriptor ), entries, _done ) );\n if ( arguments.length > 1 ) return _next( descriptor, status );\n const accessorizedProps = _wq( originalTarget, 'accessorizedProps', false );\n const accessorization = accessorizedProps && accessorizedProps.get( descriptor.key );\n if ( descriptor.type === 'def' ) {\n if ( accessorization && !accessorization.restore() ) _next( false );\n Object.defineProperty( originalTarget, descriptor.key, descriptor.value );\n return _next( true );\n }\n if ( accessorization && accessorization.intact() ) {\n return _next( accessorization.setValue( descriptor.value ) );\n }\n return _next( Reflect.set( originalTarget, descriptor.key, descriptor.value ) );\n }\n // ---------\n function exec( isUpdate, oldValue ) {\n if ( params.diff && value === oldValue ) return next( descriptors, entries, _done );\n const descriptor = new Descriptor( originalTarget, {\n type: def ? 'def' : 'set',\n key: prop,\n value,\n isUpdate,\n oldValue,\n related: [ ...related ],\n operation: def ? 'defineProperty' : 'set',\n detail: params.detail,\n } );\n const trapsRegistry = TrapsRegistry.getInstance( originalTarget, false, params.namespace );\n return trapsRegistry \n ? trapsRegistry.emit( descriptor, defaultSet ) \n : defaultSet( descriptor );\n }\n // ---------\n return has( originalTarget, prop, exists => {\n if ( !exists ) return exec( exists );\n if ( prop === 'length' && Array.isArray( originalTarget ) && _wq( originalTarget ).has( '$length' ) ) {\n return exec( true, _wq( originalTarget ).get( '$length' ) );\n }\n const $params = { ...params, withPropertyDescriptors: def };\n return get( originalTarget, prop, oldValue => exec( exists, oldValue ), $params );\n }, params );\n // ---------\n } )( [], entries.slice( 0 ), descriptors => {\n const listenerRegistry = ListenerRegistry.getInstance( originalTarget, false, params.namespace );\n if ( listenerRegistry ) listenerRegistry.emit( descriptors, { eventsArePropertyDescriptors: !!def } );\n return receiver(\n isPropsList( prop/*original*/ ) ? descriptors.map( opr => opr.status ) : descriptors[ 0 ]?.status\n );\n } );\n}\n\n/**\n * Performs a defineProperty operation.\n * \n * @param Object\t target\n * @param String|Number\t prop\n * @param Object\t descriptor\n * @param Function\t receiver\n * @param Object\t params\n *\n * @return Any\n */\nexport function defineProperty( target, prop, descriptor, receiver = x => x, params = {} ) {\n return set( target, prop, descriptor, receiver, params, true/*def*/ );\n}\n\n/**\n * Performs a defineProperties operation.\n * @note this isn't part of the standard Reflect API.\n * \n * @param Object\t target\n * @param Object\t descriptors\n * @param Function\t receiver\n * @param Object\t params\n *\n * @return Any\n */\nexport function defineProperties( target, descriptors, receiver = x => x, params = {} ) {\n return set( target, descriptors, receiver, params, true/*def*/ );\n}\n\n/**\n * Performs a delete operation.\n * \n * @param Object\t target\n * @param String|Number\t prop\n * @param Function\t receiver\n * @param Object\t params\n *\n * @return Any\n */\nexport function deleteProperty( target, prop, receiver = x => x, params = {} ) {\n // ---------------\n const originalTarget = resolveObj( target );\n if ( _isObject( receiver ) ) { [ params, receiver ] = [ receiver, x => x ]; }\n // ---------------\n const props = _arrFrom( prop, false ), related = [ ...props ];\n return ( function next( descriptors, props, _done ) {\n if ( !props.length ) return _done( descriptors );\n const prop = props.shift();\n // ---------\n function defaultDel( descriptor, status = undefined ) {\n const _next = status => ( descriptor.status = status, next( descriptors.concat( descriptor ), props, _done ) );\n if ( arguments.length > 1 ) return _next( descriptor, status );\n const accessorizedProps = _wq( originalTarget, 'accessorizedProps', false );\n const accessorization = accessorizedProps && accessorizedProps.get( descriptor.key );\n if ( accessorization && !accessorization.restore() ) _next( false );\n return _next( Reflect.deleteProperty( originalTarget, descriptor.key ) );\n }\n // ---------\n function exec( oldValue ) {\n const descriptor = new Descriptor( originalTarget, {\n type: 'delete',\n key: prop,\n oldValue,\n related: [ ...related ],\n operation: 'deleteProperty',\n detail: params.detail,\n } );\n const trapsRegistry = TrapsRegistry.getInstance( originalTarget, false, params.namespace );\n return trapsRegistry \n ? trapsRegistry.emit( descriptor, defaultDel ) \n : defaultDel( descriptor );\n }\n // ---------\n return get( originalTarget, prop, exec, params );\n // ---------\n } )( [], props.slice( 0 ), descriptors => {\n const listenerRegistry = ListenerRegistry.getInstance( originalTarget, false, params.namespace );\n if ( listenerRegistry ) listenerRegistry.emit( descriptors );\n return receiver(\n isPropsList( prop/*original*/ ) ? descriptors.map( opr => opr.status ) : descriptors[ 0 ].status\n );\n } );\n}\n\n/**\n * @alias deleteProperty()\n */\nexport function deleteProperties( target, props, receiver = x => x, params = {} ) {\n return deleteProperty( ...arguments );\n}\n\n/* ---------------EFFECT APIs--------------- */\n\n/**\n * Performs a \"construct\" operation.\n *\n * @param Array|Object\t target\n * @param Array\t\t\t argumentsList\n * @param Object\t\t newTarget\n * @param Function\t receiver\n * @param Object\t\t params\n *\n * @return Any\n */\nexport function construct( target, argumentsList, newTarget = null, receiver = x => x, params = {} ) {\n return exec( target, 'construct', arguments.length > 2 ? { argumentsList, newTarget } : { argumentsList }, receiver, params );\n}\n\n/**\n * Performs an \"apply\" operation.\n *\n * @param Array|Object\t target\n * @param Any\t thisArgument\n * @param Array\t argumentsList\n * @param Function\t receiver\n * @param Object\t\t params\n *\n * @return Any\n */\nexport function apply( target, thisArgument, argumentsList, receiver = x => x, params = {} ) {\n const originalThis = unproxy( thisArgument );\n let returnValue;\n if ( Array.isArray( thisArgument ) ) {\n if ( params.arrayMethodName ) {\n const descriptor = new Descriptor( originalThis, {\n operation: params.arrayMethodName,\n argumentsList\n } );\n const listenerRegistry = ListenerRegistry.getInstance( originalThis, false, params.namespace );\n listenerRegistry?.emit( [ descriptor ], { eventIsArrayMethodDescriptor: true } );\n }\n _wq( originalThis ).set( '$length', originalThis.length );\n returnValue = batch(\n originalThis,\n () => exec( target, 'apply', { thisArgument/*proxy wrappers allowed; in fact is why it works*/, argumentsList }, receiver, params ),\n params\n );\n _wq( originalThis ).delete( '$length' );\n } else {\n returnValue = exec( target, 'apply', { thisArgument: originalThis, argumentsList }, receiver, params );\n }\n return returnValue;\n}\n\n/**\n * Performs a \"setPrototypeOf\" operation.\n *\n * @param Array|Object\t target\n * @param Anyr\t proto\n * @param Function\t receiver\n * @param Object\t\t params\n *\n * @return Any\n */\nexport function setPrototypeOf( target, proto, receiver = x => x, params = {} ) {\n return exec( target, 'setPrototypeOf', { proto }, receiver, params );\n}\n\n/**\n * Performs a \"preventExtension\" operation.\n *\n * @param Array|Object\t target\n * @param Function\t receiver\n * @param Object\t\t params\n *\n * @return Any\n */\nexport function preventExtensions( target, receiver = x => x, params = {} ) {\n return exec( target, 'preventExtensions', {}, receiver, params );\n}\n\n/* ---------------HELPER APIs--------------- */\n\n/**\n * Adds an observer to a target's registry.\n *\n * @param Array|Object\t target\n * @param String|Object\t prop\n * @param Function\t receiver\n * @param Object\t\t params\n *\n * @return Function: AbortController\n */\nfunction bind( target, prop, receiver, params = {} ) {\n const controller = new AbortController;\n env.setMaxListeners?.( 0, controller.signal );\n if ( params.signal ) { params.signal.addEventListener( 'abort', () => controller.abort() ); }\n const $params = { ...params, signal: controller.signal };\n const listenerRegistry = ListenerRegistry.getInstance( target, true, $params.namespace );\n const childRegistrations = new Map;\n return function emit( descriptor_s = [], prevRegistration = null ) {\n let flags, registrationNext, isExisting;\n if ( isPropsList( prop ) ) {\n if ( prevRegistration ) {\n isExisting = true;\n registrationNext = prevRegistration;\n for ( const descriptor of descriptor_s ) {\n childRegistrations.get( descriptor.key )?.remove();\n childRegistrations.delete( descriptor.key );\n }\n } else {\n registrationNext = listenerRegistry.addRegistration( prop, emit, $params );\n }\n flags = { signal: registrationNext.signal, childRegistrations };\n } else {\n prevRegistration?.remove();\n registrationNext = listenerRegistry.addRegistration( prop, emit, $params );\n flags = { signal: registrationNext.signal };\n }\n // ------------------\n if ( $params.childRegistrations && $params.keyInParent ) {\n $params.childRegistrations.set( $params.keyInParent, registrationNext );\n }\n // ------------------\n if ( arguments.length ) {\n const handlerReturnValue = receiver( descriptor_s, flags );\n if ( arguments.length > 1 ) return handlerReturnValue;\n }\n return controller;\n };\n}\n\n/**\n * Performs an operation of the given \"type\".\n *\n * @param Array|Object\t target\n * @param String\t\t operation\n * @param Object\t\t payload\n * @param Function\t receiver\n * @param Object\t\t params\n *\n * @return Any\n */\nfunction exec( target, operation, payload = {}, receiver = x => x, params = {} ) {\n // ---------\n target = resolveObj( target );\n if ( _isObject( receiver ) ) { [ params, receiver ] = [ receiver, x => x ]; } \n // ---------\n function defaultExec( descriptor, result ) {\n if ( arguments.length > 1 ) return receiver( result );\n return receiver( ( Reflect[ operation ] || Object[ operation ] )( target, ...Object.values( payload ) ) );\n }\n // ---------\n const descriptor = new Descriptor( target, { operation, ...payload } );\n const trapsRegistry = TrapsRegistry.getInstance( target, false, params.namespace );\n if ( trapsRegistry ) {\n return trapsRegistry.emit( descriptor, defaultExec );\n }\n return defaultExec( descriptor );\n}\n\n// Asks if prop is a multi-result field\nfunction isPropsList( prop ) {\n return prop === Infinity || Array.isArray( prop );\n}\n\n// Resolves obj down to it's self\nfunction resolveObj( obj, assert = true, probePropertyDescriptors = true ) {\n\tif ( ( !obj || !_isTypeObject( obj ) ) && assert ) throw new Error( `Object must be of type object or array! \"${ _getType( obj ) }\" given.` );\n if ( obj instanceof Descriptor ) {\n if ( obj.type === 'def' && probePropertyDescriptors ) {\n obj = typeof obj.value.get === 'function' ? obj.value.get() : obj.value.value;\n } else {\n obj = obj.value;\n }\n }\n\treturn obj && unproxy( obj );\n}\n\n// Resolves prop down to actual keys\nfunction resolveProps( obj, prop, receiver, params = {} ) {\n if ( prop === Infinity ) {\n if ( params.level && !_isTypeObject( obj ) ) return receiver( [] );\n return receiver( Object.keys( obj ) );\n }\n return receiver( _arrFrom( prop, false ) );\n}\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 * 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 * 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", "export default function wq(obj, ...namespaces) {\n if (!obj || !['object', 'function'].includes(typeof obj)) {\n throw new Error(`Argument #1 must be of type object`);\n }\n let wq = obj[Symbol.for('wq')];\n if (!wq) {\n wq = new WQInternals;\n Object.defineProperty(obj, Symbol.for('wq'), {\n value: wq,\n // Defaults, but to be explicit...\n enumerable: false,\n configurable: false,\n writable: false\n });\n }\n if (!namespaces.length) {\n return wq;\n }\n let _ns, _wq;\n while ((_ns = namespaces.shift())) {\n if ((_wq = wq) && !(wq = wq.get(_ns))) {\n wq = new WQInternals;\n _wq.set(_ns, wq);\n }\n }\n return wq;\n}\n\nclass WQInternals extends Map {}", "\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", "\n/**\n * @imports\n */\nimport { _wq as __wq } from '@webqit/util/js/index.js';\n\nexport const _wq = ( target, ...args ) => __wq( target, 'observerAPI', ...args );\n\nexport const _await = ( value, callback ) => value instanceof Promise ? value.then( callback ) : callback( value );\n\nexport const env = {};\n", "\n/**\n * ---------------------------\n * The Registration class\n * ---------------------------\n */\n\nexport default class Registration {\n\t\n\t/**\n\t * Initializes the instance.\n\t *\n\t * @param Registry\t\t\tregistry\n\t * @param object\t\t\tdfn\n\t *\n\t * @return void\n\t */\n\tconstructor( registry, dfn ) {\n\t\tthis.registry = registry;\n\t\tObject.assign( this, { ...dfn, target: registry.target } );\n\t\tif ( this.params.signal ) {\n\t\t\tthis.params.signal.addEventListener( 'abort', () => this.remove() );\n\t\t}\n\t}\n\n\t/**\n\t * Sets a \"disconnected\" flag on the Registration.\n\t *\n\t * @return void\n\t */\n\tremove() {\n\t\tthis.removed = true;\n\t\treturn this.registry.removeRegistration( this );\n\t}\n}", "\n/**\n * @imports\n */\nimport { _from as _arrFrom } from '@webqit/util/arr/index.js';\nimport Registration from './Registration.js';\nimport { _await, env } from '../util.js';\n\n/**\n * ---------------------------\n * The ListenerRegistration class\n * ---------------------------\n */\n\nexport default class ListenerRegistration extends Registration {\n\t\n\t/**\n\t * @constructor\n\t */\n\tconstructor() {\n\t\tsuper( ...arguments );\n\t\tthis.emit.currentRegistration = this;\n\t\tObject.defineProperty( this, 'abortController', { value: new AbortController } );\n\t\tObject.defineProperty( this, 'signal', { value: this.abortController.signal } );\n\t\tenv.setMaxListeners?.( 0, this.signal );\n\t}\n\n\t/**\n\t * De-registers the instance.\n\t * \n\t * @return Void\n\t */\n\tremove() {\n\t\tthis.abortController.abort();\n\t\tsuper.remove();\n\t}\n\n\t/**\n\t * Calls the observer's handler function\n\t * on matching with the event's fields.\n\t *\n\t * @param Array\t\t\t \t\tevents\n\t *\n\t * @return Any\n\t */\n\tfire( events ) {\n\t\tif ( this.emit.recursionTarget && ![ 'inject', 'force-async', 'force-sync' ].includes( this.params.recursions ) ) return;\n\t\tlet matches = events, filter = this.filter;\n\t\tif ( filter !== Infinity && ( filter = _arrFrom( filter, false ) ) ) {\n\t\t\tmatches = events.filter( event => filter.includes( event.key ) );\n\t\t}\n\t\tif ( this.params.diff ) {\n\t\t\tmatches = matches.filter( event => event.type !== 'set' || event.value !== event.oldValue );\n\t\t}\n\t\tif ( !matches.length ) return;\n\t\tif ( [ 'inject', 'defer' ].includes( this.params.recursions ) ) {\n\t\t\tif ( this.emit.recursionTarget ) {\n\t\t\t\tthis.emit.recursionTarget.push( ...matches );\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.emit.recursionTarget = this.params.recursions === 'inject' ? matches : [];\n\t\t}\n\t\tconst $ret = this.filter === Infinity || Array.isArray( this.filter )\n\t\t\t? this.emit( matches, this )\n\t\t\t: this.emit( matches[ 0 ], this );\n\t\t// NOTEL: on calling emit(), this registration has expired and a new one active!!!\n\t\treturn _await( $ret, ret => {\n\t\t\tconst recursions = this.emit.recursionTarget;\n\t\t\tdelete this.emit.recursionTarget;\n\t\t\tif ( this.params.recursions === 'defer' ) {\n\t\t\t\tif ( recursions?.length ) return this.emit.currentRegistration.fire( recursions );\n\t\t\t}\n\t\t\treturn ret;\n\t\t} );\n\t}\n}\n", "\n/**\n * @imports\n */\nimport { _isTypeObject, _getType } from '@webqit/util/js/index.js';\nimport { _from as _arrFrom, _intersect, _equals as _arrEquals } from '@webqit/util/arr/index.js';\nimport { _wq } from '../util.js';\n\n/**\n * ---------------------------\n * The Registry class\n * ---------------------------\n */\n\nexport default class Registry {\n\t\n\t/**\n\t * Initializes the instance.\n\t *\n\t * @param object\ttarget\n\t * \n\t * @return void\n\t */\n\tconstructor( target ) {\n\t\tthis.target = target;\n\t\tthis.entries = [];\n\t}\n\t\n\t/**\n\t * Adds an Registration instance\n\t * with optional tags.\n\t *\n\t * @param Registration\t\tregistration\n\t *\n\t * @return Registration\n\t */\n\taddRegistration( registration ) {\n\t\tthis.entries.push( registration );\n\t\treturn registration;\n\t}\n\t\n\t/**\n\t * Removes registrations by reference.\n\t *\n\t * @param Registration\t\tregistration\n\t *\n\t * @return void\n\t */\n\tremoveRegistration( registration ) {\n\t\tthis.entries = this.entries.filter( _entry => _entry !== registration );\n\t}\n\t\t\n\t/**\n\t * Returns a observer-specific object embedded on an element.\n\t *\n\t * @param string\t\ttype\n\t * @param array|object\ttarget\n\t * @param bool \tcreateIfNotExists\n\t * @param string \tnamespace\n\t *\n\t * @return Registry\n\t */\n\tstatic _getInstance( type, target, createIfNotExists = true, namespace = this.__namespace ) {\n\t\tif ( !_isTypeObject( target ) ) throw new Error( `Subject must be of type object; \"${ _getType( target ) }\" given!` );\n\t\tlet ImplementationClass = this;\n\t\tif ( namespace && _wq( Registry, 'namespaces' ).has( type + '-' + namespace ) ) {\n\t\t\tImplementationClass = _wq( Registry, 'namespaces' ).get( type + '-' + namespace );\n\t\t\ttype += '-' + namespace\n\t\t}\n\t\tif ( !_wq( target, 'registry' ).has( type ) && createIfNotExists ) {\n\t\t\t_wq( target, 'registry' ).set( type, new ImplementationClass( target ) );\n\t\t}\n\t\treturn _wq( target, 'registry' ).get( type );\n\t}\n\n\t/**\n\t * Extend a Fireable Class with a namespace.\n\t *\n\t * @param string\t\tnamespace\n\t * @param class \tImplementationClass\n\t *\n\t * @return void|class\n\t */\n\tstatic _namespace( type, namespace, ImplementationClass = null ) {\n\t\ttype += '-' + namespace;\n\t\tif ( arguments.length === 2 ) return _wq( Registry, 'namespaces' ).get( type );\n\t\tif ( !( ImplementationClass.prototype instanceof this ) ) {\n\t\t\tthrow new Error( `The implementation of the namespace ${ this.name }.${ namespace } must be a subclass of ${ this.name }.` );\n\t\t}\n\t\t_wq( Registry, 'namespaces' ).set( type, ImplementationClass );\n\t\tImplementationClass.__namespace = namespace;\n\t}\n}", "\n/**\n * ---------------------------\n * The Descriptor class\n * ---------------------------\n */\n\nexport default class Descriptor {\n\t\n\t/**\n\t * Initializes the instance.\n\t *\n\t * @param array|object\ttarget\n\t * @param object\t\tdfn\n\t *\n\t * @return void\n\t */\n\tconstructor( target, dfn ) {\n\t\tthis.target = target;\n\t\tif ( !( dfn.operation ) ) throw new Error( 'Descriptor operation must be given in definition!' );\n\t\tObject.assign( this, dfn );\n\t}\n}", "\n/**\n * @imports\n */\nimport ListenerRegistration from './ListenerRegistration.js';\nimport Registry from './Registry.js';\nimport { _await } from '../util.js';\nimport Descriptor from './Descriptor.js';\n\n/**\n * ---------------------------\n * The ListenerRegistry class\n * ---------------------------\n */\n\nexport default class ListenerRegistry extends Registry {\n\n\tstatic getInstance( target, createIfNotExists = true, namespace = null ) {\n\t\treturn super._getInstance( 'listeners', ...arguments );\n\t}\n\n\tstatic namespace( namespace, ImplementationClass = null ) {\n\t\treturn super._namespace( 'listeners', ...arguments );\n\t}\n\n\t/**\n\t * @constructor\n\t */\n\tconstructor( target ) {\n\t\tsuper( target );\n\t\tthis.batches = [];\n\t}\n\t\n\t/**\n\t * @addRegistration\n\t */\n\taddRegistration( filter, emit, params ) {\n\t\treturn super.addRegistration( new ListenerRegistration( this, { filter, emit, params } ) );\n\t}\n\t\n\t/**\n\t * Fires all observers with the given evt (change).\n\t *\n\t * @param Arrayn events\n\t *\n\t * @return Void\n\t */\n\temit( events, { eventsArePropertyDescriptors = false, eventIsArrayMethodDescriptor = false } = {} ) {\n\t\tif ( this.batches.length ) {\n\t\t\tconst arrayMethodName = this.batches[ 0 ].params.arrayMethodName;\n\t\t\tthis.batches[ 0 ].snapshots.push( {\n\t\t\t\tevents: [ ...events ],\n\t\t\t\tarrayMethodName, // Typically from array operations\n\t\t\t\teventsArePropertyDescriptors, // Typically from defineProperty() operations\n\t\t\t\teventIsArrayMethodDescriptor // Typically from array method operations\n\t\t\t} );\n\t\t\treturn\n\t\t}\n\t\tthis.$emit( this.entries, [ {\n\t\t\tevents, \n\t\t\teventsArePropertyDescriptors, // Typically from defineProperty() operations\n\t\t\teventIsArrayMethodDescriptor // Typically from array method operations\n\t\t} ] );\n\t}\n\n\t$emit( listeners, snapshots ) {\n\t\t// Analyse listener modes\n\t\tlet listenersLength = 0,\n\t\tlistenersAskingEventsWithPropertyDescriptors = 0,\n\t\tlistenersAskingArrayMethodDescriptors = 0;\n\t\tfor ( const listener of listeners ) {\n\t\t\tlistenersLength += 1;\n\t\t\tif ( listener.params.withPropertyDescriptors ) {\n\t\t\t\tlistenersAskingEventsWithPropertyDescriptors += 1;\n\t\t\t}\n\t\t\tif ( listener.params.withArrayMethodDescriptors ) {\n\t\t\t\tlistenersAskingArrayMethodDescriptors += 1;\n\t\t\t}\n\t\t}\n\t\t// Sort events\n\t\tconst events_with_PropertyDescriptors_with_ArrayMethodDescriptors = [], events_with_PropertyDescriptors_without_ArrayMethodDescriptors = [];\n\t\tconst events_without_PropertyDescriptors_with_ArrayMethodDescriptors = [], events_without_PropertyDescriptors_without_ArrayMethodDescriptors = [];\n\t\tfor ( const snapshot of snapshots ) {\n\t\t\tconst arrayMethodName = snapshot.arrayMethodName;\n\t\t\tconst eventsArePropertyDescriptors = snapshot.eventsArePropertyDescriptors;\n\t\t\tconst eventIsArrayMethodDescriptor = snapshot.eventIsArrayMethodDescriptor;\n\t\t\tfor ( const event of snapshot.events ) {\n\t\t\t\tif ( arrayMethodName ) {\n\t\t\t\t\tevent.operation = arrayMethodName;\n\t\t\t\t}\n\t\t\t\t// Some opting in to PropertyDescriptors\n\t\t\t\tif ( listenersAskingEventsWithPropertyDescriptors ) {\n\t\t\t\t\t//if ( !arrayMethodName ) { }\n\t\t\t\t\tlistenersAskingArrayMethodDescriptors && // Some opting in to ArrayMethodDescriptors\n\t\t\t\t\tevents_with_PropertyDescriptors_with_ArrayMethodDescriptors.push( event );\n\t\t\t\t\tif ( !eventIsArrayMethodDescriptor ) {\n\t\t\t\t\t\tlistenersAskingArrayMethodDescriptors !== listenersLength && // Some opting out of ArrayMethodDescriptors\n\t\t\t\t\t\tevents_with_PropertyDescriptors_without_ArrayMethodDescriptors.push( event );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// Some opting out of PropertyDescriptors\n\t\t\t\tif ( listenersAskingEventsWithPropertyDescriptors !== listenersLength ) {\n\t\t\t\t\tlet $event = event;\n\t\t\t\t\tif ( eventsArePropertyDescriptors ) {\n\t\t\t\t\t\tconst { target, type, ...details } = event;\n\t\t\t\t\t\t$event = new Descriptor( target, { type: 'set', ...details } );\n\t\t\t\t\t\tObject.defineProperty( $event, 'value', 'get' in details.value ? { get: () => details.value.get() } : { value: details.value.value } )\n\t\t\t\t\t\tif ( details.oldValue ) {\n\t\t\t\t\t\t\tObject.defineProperty( $event, 'oldValue', 'get' in details.oldValue ? { get: () => details.oldValue.get() } : { value: details.oldValue.value } )\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t//if ( !arrayMethodName/*Although eedless as is typically mutually exclusive to eventsArePropertyDescriptors*/ ) { }\n\t\t\t\t\tlistenersAskingArrayMethodDescriptors && // Some opting in to ArrayMethodDescriptors\n\t\t\t\t\tevents_without_PropertyDescriptors_with_ArrayMethodDescriptors.push( $event );\n\t\t\t\t\tif ( !eventIsArrayMethodDescriptor ) { // Although eedless as is typically already implied by eventsArePropertyDescriptors\n\t\t\t\t\t\tlistenersAskingArrayMethodDescriptors !== listenersLength && // Some opting out of ArrayMethodDescriptors\n\t\t\t\t\t\tevents_without_PropertyDescriptors_without_ArrayMethodDescriptors.push( $event );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t// Dispatch\n\t\tfor ( const listener of listeners ) {\n\t\t\tif ( listener.params.withPropertyDescriptors ) {\n\t\t\t\tif ( listener.params.withArrayMethodDescriptors ) {\n\t\t\t\t\tevents_with_PropertyDescriptors_with_ArrayMethodDescriptors.length &&\n\t\t\t\t\tlistener.fire( events_with_PropertyDescriptors_with_ArrayMethodDescriptors );\n\t\t\t\t} else {\n\t\t\t\t\tevents_with_PropertyDescriptors_without_ArrayMethodDescriptors.length &&\n\t\t\t\t\tlistener.fire( events_with_PropertyDescriptors_without_ArrayMethodDescriptors );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ( listener.params.withArrayMethodDescriptors ) {\n\t\t\t\t\tevents_without_PropertyDescriptors_with_ArrayMethodDescriptors.length &&\n\t\t\t\t\tlistener.fire( events_without_PropertyDescriptors_with_ArrayMethodDescriptors );\n\t\t\t\t} else {\n\t\t\t\t\tevents_without_PropertyDescriptors_without_ArrayMethodDescriptors.length &&\n\t\t\t\t\tlistener.fire( events_without_PropertyDescriptors_without_ArrayMethodDescriptors );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Fires all observers with the given evt (change).\n\t *\n\t * @param Arrayn events\n\t *\n\t * @return Void\n\t */\n\tbatch( callback, params = {} ) {\n\t\tthis.batches.unshift( { entries: [ ...this.entries ], snapshots: [], params } );\n\t\tconst returnValue = callback();\n\t\treturn _await( returnValue, returnValue => {\n\t\t\tconst batch = this.batches.shift();\n\t\t\tif ( !batch.snapshots.length ) return returnValue;\n\t\t\tthis.$emit( batch.entries, batch.snapshots );\n\t\t\treturn returnValue;\n\t\t} );\n\t}\n\n}\n", "\n/**\n * @imports\n */\nimport Registration from './Registration.js';\n\n/**\n * ---------------------------\n * The TrapsRegistration class\n * ---------------------------\n */\n\nexport default class TrapsRegistration extends Registration {\n\t\n\t/**\n\t * Calls the observer's handler function\n\t * on matching with the descriptor's fields.\n\t *\n\t * @param Descriptor\t\t\t \tdescriptor\n\t * @param function\t\t\t\t\tnext\n\t * @param mixed\t\t\t\t\t \trecieved\n\t *\n\t * @return void\n\t */\n\texec( descriptor, next, recieved ) {\n\t\tif ( this.running || !this.traps[ descriptor.operation ] ) {\n\t\t\treturn next( ...Array.prototype.slice.call( arguments, 2 ) );\n\t\t}\n\t\tthis.running = true;\n\t\treturn this.traps[ descriptor.operation ]( descriptor, recieved, ( ...args ) => {\n\t\t\tthis.running = false;\n\t\t\treturn next( ...args );\n\t\t} );\n\t}\n}", "\n/**\n * @imports\n */\nimport TrapsRegistration from './TrapsRegistration.js';\nimport Registry from './Registry.js';\n\n/**\n * ---------------------------\n * The TrapsRegistry class\n * ---------------------------\n */\n\nexport default class TrapsRegistry extends Registry {\n\n\tstatic getInstance( target, createIfNotExists = true, namespace = null ) {\n\t\treturn super._getInstance( 'traps', ...arguments );\n\t}\n\n\tstatic namespace( namespace, ImplementationClass = null ) {\n\t\treturn super._namespace( 'traps', ...arguments );\n\t}\n\t\n\t/**\n\t * @inheritdoc\n\t */\n\taddRegistration( dfn ) {\n\t\treturn super.addRegistration( new TrapsRegistration( this, dfn ) );\n\t}\n\n\t/**\n\t * Fires all interceptors with the given action.\n\t *\n\t * @param Descriptor\t\tdescriptor\n\t * @param function\t\t\tdefaultHandler\n\t *\n\t * @return mixed\n\t */\n\temit( descriptor, defaultHandler = null ) {\n\t\tconst $this = this;\n\t\treturn ( function next( index, ..._args ) {\n\t\t\tconst registration = $this.entries[ index ];\n\t\t\tif ( registration ) {\n\t\t\t\treturn registration.exec( descriptor, ( ...args ) => {\n\t\t\t\t\treturn next( index + 1, ...args );\n\t\t\t\t}/*next*/, ..._args );\n\t\t\t}\n\t\t\treturn defaultHandler ? defaultHandler( descriptor, ..._args ) : _args[ 0 ];\n\t\t} )( 0 );\n\t}\n}", "\n/**\n * @imports\n */\nimport { _from as _arrFrom } from '@webqit/util/arr/index.js';\nimport { _isClass, _isFunction, _isTypeObject, _getType } from '@webqit/util/js/index.js';\nimport { set, deleteProperty, has, get, ownKeys, defineProperty, getOwnPropertyDescriptor } from \"./main.js\";\nimport { batch, apply, construct, getPrototypeOf, setPrototypeOf, isExtensible, preventExtensions } from \"./main.js\";\nimport { _wq } from './util.js';\n\n/* ---------------ACCESSORIZE METHODS--------------- */\n\n/**\n * Accessorizes props.\n *\n * @param Array|Object\ttarget\n * @param String|Array\tprops\n * @param Object\t\tparams\n *\n * @return Array\n */\nexport function accessorize( target, props, params = {} ) {\n target = resolveTarget( target );\n const accessorizedProps = _wq( target, 'accessorizedProps' );\n // ---------\n function getDescriptorDeep( prop ) {\n let descriptor, proto = target;\n do {\n descriptor = Object.getOwnPropertyDescriptor( proto, prop );\n } while ( !descriptor && ( proto = Object.getPrototypeOf( proto ) ) );\n return descriptor \n ? { proto, descriptor } \n : { descriptor: { value: undefined, configurable: true, enumerable: true, writable: true } };\n }\n // ---------\n function accessorizeProp( prop ) {\n if ( accessorizedProps.has( prop + '' ) ) return true;\n // ------------------\n // Current Descriptor Record\n const currentDescriptorRecord = getDescriptorDeep( prop );\n currentDescriptorRecord.getValue = function( withPropertyDescriptors = false ) {\n if ( withPropertyDescriptors ) return this.descriptor;\n return this.descriptor.get ? this.descriptor.get() : this.descriptor.value;\n };\n currentDescriptorRecord.setValue = function( value, withPropertyDescriptors = false ) {\n this.dirty = true;\n if ( withPropertyDescriptors ) { this.descriptor = value; return; }\n return this.descriptor.set ? this.descriptor.set( value ) !== false : ( this.descriptor.value = value, true );\n };\n currentDescriptorRecord.intact = function() {\n const currentDescriptor = Object.getOwnPropertyDescriptor( target, prop );\n return currentDescriptor?.get === accessorization.get \n && currentDescriptor?.set === accessorization.set\n && accessorizedProps.get( prop + '' ) === this;\n };\n currentDescriptorRecord.restore = function() {\n if ( !this.intact() ) return false;\n if ( ( this.proto && this.proto !== target ) || ( !this.proto && !this.dirty ) ) { delete target[ prop ]; }\n else { Object.defineProperty( target, prop, this.descriptor ); }\n accessorizedProps.delete( prop + '' );\n return true;\n };\n accessorizedProps.set( !isNaN( prop ) ? parseInt( prop ) : prop, currentDescriptorRecord );\n // ------------------\n // enumerable, configurable\n const { enumerable = true } = currentDescriptorRecord.descriptor;\n const accessorization = { enumerable, configurable: true };\n // set, get\n if ( ( 'value' in currentDescriptorRecord.descriptor ) || currentDescriptorRecord.descriptor.set ) {\n accessorization.set = function ( value ) { return set( this, prop, value, params ); };\n }\n if ( ( 'value' in currentDescriptorRecord.descriptor ) || currentDescriptorRecord.descriptor.get ) {\n accessorization.get = function () { return get( this, prop, params ); };\n }\n try {\n Object.defineProperty( target, prop, accessorization );\n return true;\n } catch( e ) {\n accessorizedProps.delete( prop + '' );\n return false;\n }\n }\n const _props = Array.isArray( props ) ? props : (\n props === undefined ? Object.keys( target ) : [ props ]\n );\n const statuses = _props.map( accessorizeProp );\n return props === undefined || Array.isArray( props ) \n ? statuses \n : statuses[ 0 ];\n}\n\n/**\n * Unaccessorizes previously accessorized props.\n *\n * @param Array|Object\ttarget\n * @param String|Array\tprops\n * @param Object\t\tparams\n *\n * @return Array\n */\nexport function unaccessorize( target, props, params = {} ) {\n target = resolveTarget( target );\n const accessorizedProps = _wq( target, 'accessorizedProps' );\n function unaccessorizeProp( prop ) {\n if ( !accessorizedProps.has( prop + '' ) ) return true;\n return accessorizedProps.get( prop + '' ).restore();\n }\n const _props = Array.isArray( props ) ? props : (\n props === undefined ? Object.keys( target ) : [ props ]\n );\n const statuses = _props.map( unaccessorizeProp );\n return props === undefined || Array.isArray( props ) \n ? statuses \n : statuses[ 0 ];\n}\n\n/* ---------------PROXY METHODS--------------- */\n\n/**\n * Returns an object as a proxy and binds all instance methods\n * to the proxy instead of the object itself.\n *\n * @param Array|Object\t\ttarget\n * @param Object\t\t params\n * @param Function\t\t extendCallback\n *\n * @return Proxy\n */\nexport function proxy( target, params = {}, extendCallback = undefined ) {\n // Resolve target\n const originalTarget = resolveTarget( target );\n // Return same proxy instance?\n if ( typeof params.membrane === 'boolean' ) throw new Error( `The params.membrane parameter cannot be of type boolean.` );\n if ( params.membrane && _wq( originalTarget, 'membraneRef' ).has( params.membrane ) ) { return _wq( originalTarget, 'membraneRef' ).get( params.membrane ); }\n const traps = {\n apply: ( target, thisArgument, argumentsList ) => apply( target, thisArgument, argumentsList, undefined, params ),\n construct: ( target, argumentsList, newTarget = null ) => construct( target, argumentsList, newTarget, params ),\n defineProperty: ( target, propertyKey, attributes ) => defineProperty( target, propertyKey, attributes, params ),\n deleteProperty: ( target, propertyKey ) => deleteProperty( target, propertyKey, params ),\n get: ( target, propertyKey, receiver = null ) => {\n const $params = { ...params, receiver };\n const returnValue = get( target, propertyKey, $params );\n if ( Array.isArray( target ) && typeof returnValue === 'function' ) {\n // Return a proxy, but in terms of a membrane. \n return proxy( returnValue, { ...params, arrayMethodName: propertyKey, membrane: receiver/* the instance obj that will be the thisArgument at apply(). Much like function.bind() */ } );\n }\n return returnValue;\n },\n getOwnPropertyDescriptor: ( target, propertyKey ) => getOwnPropertyDescriptor( target, propertyKey, params ),\n getPrototypeOf: target => getPrototypeOf( target, params ),\n has: ( target, propertyKey ) => has( target, propertyKey, params ),\n isExtensible: target => isExtensible( target, params ),\n ownKeys: target => ownKeys( target, params ),\n preventExtensions: target => preventExtensions( target, params ),\n set: ( target, propertyKey, value, receiver = null ) => set( target, propertyKey, value, { ...params, receiver } ),\n setPrototypeOf: ( target, prototype ) => setPrototypeOf( target, prototype, params ),\n };\n // Extend...\n const $traps = extendCallback?.( traps ) || traps;\n // Create proxy\n const $proxy = new Proxy( originalTarget, $traps );\n if ( params.membrane ) { _wq( originalTarget, 'membraneRef' ).set( params.membrane, $proxy ); }\n _wq( $proxy ).set( $proxy, originalTarget );\n\treturn $proxy;\n}\n\n/**\n * Returns the original object earlier proxied by proxy().\n *\n * @param Proxy|Any\t\ttarget\n *\n * @return Any\n */\nexport function unproxy( target ) {\n // Proxy targets are mapped to their own instances internally\n return _wq( target ).get( target ) || target;\n}\n\n/* ---------------HELPERS--------------- */\n\n/** \n * Ensures target object is an object or array.\n *\n * @param Array|Object\ttarget\n *\n * @return Array|Object\n */\nfunction resolveTarget( target ) {\n\tif ( !target || !_isTypeObject( target ) ) throw new Error('Target must be of type object!');\n\treturn unproxy( target );\n}\n", "\n/**\n * @imports\n */\nimport * as main from './main.js';\nimport * as actors from './actors.js';\n\nconst Observer = { ...main, ...actors };\n\nexport default Observer;", "\n/**\n * @imports\n */\nimport Observer from './index.js';\n\n// As globals\nif ( !self.webqit ) { self.webqit = {}; }\nself.webqit.Observer = Observer;"],
5
+ "mappings": "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",
6
+ "names": ["main_exports", "__export", "any", "apply", "batch", "construct", "defineProperties", "defineProperty", "deleteProperties", "deleteProperty", "get", "getOwnPropertyDescriptor", "getOwnPropertyDescriptors", "getPrototypeOf", "has", "intercept", "isExtensible", "map", "observe", "ownKeys", "path", "preventExtensions", "reduce", "set", "setPrototypeOf", "subtree", "isObject_default", "val", "getType_default", "val", "isArray_default", "val", "isTypeFunction_default", "val", "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", "wq", "obj", "namespaces", "WQInternals", "_ns", "_wq", "from_default", "val", "castObject", "isArray_default", "isObject_default", "isEmpty_default", "isTypeArray_default", "_wq", "target", "args", "wq", "_await", "value", "callback", "env", "Registration", "registry", "dfn", "ListenerRegistration", "Registration", "env", "events", "matches", "filter", "from_default", "event", "$ret", "_await", "ret", "recursions", "Registry", "target", "registration", "_entry", "type", "createIfNotExists", "namespace", "isTypeObject_default", "getType_default", "ImplementationClass", "_wq", "Descriptor", "target", "dfn", "ListenerRegistry", "Registry", "target", "createIfNotExists", "namespace", "ImplementationClass", "filter", "emit", "params", "ListenerRegistration", "events", "eventsArePropertyDescriptors", "eventIsArrayMethodDescriptor", "arrayMethodName", "listeners", "snapshots", "listenersLength", "listenersAskingEventsWithPropertyDescriptors", "listenersAskingArrayMethodDescriptors", "listener", "events_with_PropertyDescriptors_with_ArrayMethodDescriptors", "events_with_PropertyDescriptors_without_ArrayMethodDescriptors", "events_without_PropertyDescriptors_with_ArrayMethodDescriptors", "events_without_PropertyDescriptors_without_ArrayMethodDescriptors", "snapshot", "event", "$event", "type", "details", "Descriptor", "callback", "returnValue", "_await", "batch", "TrapsRegistration", "Registration", "descriptor", "next", "recieved", "args", "TrapsRegistry", "Registry", "target", "createIfNotExists", "namespace", "ImplementationClass", "dfn", "TrapsRegistration", "descriptor", "defaultHandler", "$this", "next", "index", "_args", "registration", "args", "actors_exports", "__export", "accessorize", "proxy", "unaccessorize", "unproxy", "accessorize", "target", "props", "params", "resolveTarget", "accessorizedProps", "_wq", "getDescriptorDeep", "prop", "descriptor", "proto", "accessorizeProp", "currentDescriptorRecord", "withPropertyDescriptors", "value", "currentDescriptor", "accessorization", "enumerable", "set", "get", "statuses", "unaccessorize", "unaccessorizeProp", "proxy", "extendCallback", "originalTarget", "traps", "thisArgument", "argumentsList", "apply", "newTarget", "construct", "propertyKey", "attributes", "defineProperty", "deleteProperty", "receiver", "$params", "returnValue", "getOwnPropertyDescriptor", "getPrototypeOf", "has", "isExtensible", "ownKeys", "preventExtensions", "prototype", "setPrototypeOf", "$traps", "$proxy", "unproxy", "isTypeObject_default", "Path", "path", "segments", "Subtree", "subtree", "any", "reduce", "target", "receiver", "final", "x", "params", "_isSubtree", "eat", "$params", "$isSubtree", "isSubtree", "segment", "isLastSegment", "Descriptor", "result", "args", "addTrail", "desc", "flags", "advance", "$value", "resolveObj", "_await", "isPropsList", "entry", "observe", "prop", "originalTarget", "isFunction_default", "getType_default", "isTypeObject_default", "get", "emit", "bind", "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", "_wq", "accessorization", "trapsRegistry", "result_s", "batch", "callback", "ListenerRegistry", "map", "source", "only", "except", "sourceKeys", "k", "filteredKeys", "resolveKey", "i", "doSet", "key", "set", "defineProperty", "mutations", "m", "deleteProperty", "def", "entries", "descriptors", "defaultSet", "status", "isUpdate", "oldValue", "exists", "listenerRegistry", "opr", "defineProperties", "from_default", "defaultDel", "deleteProperties", "construct", "argumentsList", "newTarget", "apply", "thisArgument", "originalThis", "unproxy", "returnValue", "setPrototypeOf", "proto", "preventExtensions", "controller", "env", "childRegistrations", "descriptor_s", "prevRegistration", "registrationNext", "isExisting", "handlerReturnValue", "operation", "payload", "defaultExec", "obj", "assert", "probePropertyDescriptors", "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": "3.4.0",
15
+ "version": "3.5.1",
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.11"
36
+ "@webqit/util": "^0.8.16"
37
37
  },
38
38
  "devDependencies": {
39
39
  "chai": "^4.3.4",
package/src/actors.js CHANGED
@@ -6,7 +6,7 @@ import { _from as _arrFrom } from '@webqit/util/arr/index.js';
6
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 { batch, apply, construct, getPrototypeOf, setPrototypeOf, isExtensible, preventExtensions } from "./main.js";
9
- import { _ } from './util.js';
9
+ import { _wq } from './util.js';
10
10
 
11
11
  /* ---------------ACCESSORIZE METHODS--------------- */
12
12
 
@@ -21,7 +21,7 @@ import { _ } from './util.js';
21
21
  */
22
22
  export function accessorize( target, props, params = {} ) {
23
23
  target = resolveTarget( target );
24
- const accessorizedProps = _( target, 'accessorizedProps' );
24
+ const accessorizedProps = _wq( target, 'accessorizedProps' );
25
25
  // ---------
26
26
  function getDescriptorDeep( prop ) {
27
27
  let descriptor, proto = target;
@@ -100,7 +100,7 @@ export function accessorize( target, props, params = {} ) {
100
100
  */
101
101
  export function unaccessorize( target, props, params = {} ) {
102
102
  target = resolveTarget( target );
103
- const accessorizedProps = _( target, 'accessorizedProps' );
103
+ const accessorizedProps = _wq( target, 'accessorizedProps' );
104
104
  function unaccessorizeProp( prop ) {
105
105
  if ( !accessorizedProps.has( prop + '' ) ) return true;
106
106
  return accessorizedProps.get( prop + '' ).restore();
@@ -131,7 +131,7 @@ export function proxy( target, params = {}, extendCallback = undefined ) {
131
131
  const originalTarget = resolveTarget( target );
132
132
  // Return same proxy instance?
133
133
  if ( typeof params.membrane === 'boolean' ) throw new Error( `The params.membrane parameter cannot be of type boolean.` );
134
- if ( params.membrane && _( originalTarget, 'membraneRef' ).has( params.membrane ) ) { return _( originalTarget, 'membraneRef' ).get( params.membrane ); }
134
+ if ( params.membrane && _wq( originalTarget, 'membraneRef' ).has( params.membrane ) ) { return _wq( originalTarget, 'membraneRef' ).get( params.membrane ); }
135
135
  const traps = {
136
136
  apply: ( target, thisArgument, argumentsList ) => apply( target, thisArgument, argumentsList, undefined, params ),
137
137
  construct: ( target, argumentsList, newTarget = null ) => construct( target, argumentsList, newTarget, params ),
@@ -159,8 +159,8 @@ export function proxy( target, params = {}, extendCallback = undefined ) {
159
159
  const $traps = extendCallback?.( traps ) || traps;
160
160
  // Create proxy
161
161
  const $proxy = new Proxy( originalTarget, $traps );
162
- if ( params.membrane ) { _( originalTarget, 'membraneRef' ).set( params.membrane, $proxy ); }
163
- _( $proxy ).set( $proxy, originalTarget );
162
+ if ( params.membrane ) { _wq( originalTarget, 'membraneRef' ).set( params.membrane, $proxy ); }
163
+ _wq( $proxy ).set( $proxy, originalTarget );
164
164
  return $proxy;
165
165
  }
166
166
 
@@ -173,7 +173,7 @@ export function proxy( target, params = {}, extendCallback = undefined ) {
173
173
  */
174
174
  export function unproxy( target ) {
175
175
  // Proxy targets are mapped to their own instances internally
176
- return _( target ).get( target ) || target;
176
+ return _wq( target ).get( target ) || target;
177
177
  }
178
178
 
179
179
  /* ---------------HELPERS--------------- */
@@ -47,9 +47,10 @@ export default class ListenerRegistry extends Registry {
47
47
  */
48
48
  emit( events, { eventsArePropertyDescriptors = false, eventIsArrayMethodDescriptor = false } = {} ) {
49
49
  if ( this.batches.length ) {
50
+ const arrayMethodName = this.batches[ 0 ].params.arrayMethodName;
50
51
  this.batches[ 0 ].snapshots.push( {
51
52
  events: [ ...events ],
52
- arrayMethodName: this.batches[ 0 ].params.arrayMethodName, // Typically from child events firing from array method operations
53
+ arrayMethodName, // Typically from array operations
53
54
  eventsArePropertyDescriptors, // Typically from defineProperty() operations
54
55
  eventIsArrayMethodDescriptor // Typically from array method operations
55
56
  } );
@@ -85,14 +86,13 @@ export default class ListenerRegistry extends Registry {
85
86
  const eventIsArrayMethodDescriptor = snapshot.eventIsArrayMethodDescriptor;
86
87
  for ( const event of snapshot.events ) {
87
88
  if ( arrayMethodName ) {
88
- event.arrayMethodName = arrayMethodName;
89
+ event.operation = arrayMethodName;
89
90
  }
90
91
  // Some opting in to PropertyDescriptors
91
92
  if ( listenersAskingEventsWithPropertyDescriptors ) {
92
- if ( !arrayMethodName || eventIsArrayMethodDescriptor ) {
93
- listenersAskingArrayMethodDescriptors && // Some opting in to ArrayMethodDescriptors
94
- events_with_PropertyDescriptors_with_ArrayMethodDescriptors.push( event );
95
- }
93
+ //if ( !arrayMethodName ) { }
94
+ listenersAskingArrayMethodDescriptors && // Some opting in to ArrayMethodDescriptors
95
+ events_with_PropertyDescriptors_with_ArrayMethodDescriptors.push( event );
96
96
  if ( !eventIsArrayMethodDescriptor ) {
97
97
  listenersAskingArrayMethodDescriptors !== listenersLength && // Some opting out of ArrayMethodDescriptors
98
98
  events_with_PropertyDescriptors_without_ArrayMethodDescriptors.push( event );
@@ -109,10 +109,9 @@ export default class ListenerRegistry extends Registry {
109
109
  Object.defineProperty( $event, 'oldValue', 'get' in details.oldValue ? { get: () => details.oldValue.get() } : { value: details.oldValue.value } )
110
110
  }
111
111
  }
112
- if ( !arrayMethodName || eventIsArrayMethodDescriptor/*Although eedless as is typically mutually exclusive to eventsArePropertyDescriptors*/ ) {
113
- listenersAskingArrayMethodDescriptors && // Some opting in to ArrayMethodDescriptors
114
- events_without_PropertyDescriptors_with_ArrayMethodDescriptors.push( $event );
115
- }
112
+ //if ( !arrayMethodName/*Although eedless as is typically mutually exclusive to eventsArePropertyDescriptors*/ ) { }
113
+ listenersAskingArrayMethodDescriptors && // Some opting in to ArrayMethodDescriptors
114
+ events_without_PropertyDescriptors_with_ArrayMethodDescriptors.push( $event );
116
115
  if ( !eventIsArrayMethodDescriptor ) { // Although eedless as is typically already implied by eventsArePropertyDescriptors
117
116
  listenersAskingArrayMethodDescriptors !== listenersLength && // Some opting out of ArrayMethodDescriptors
118
117
  events_without_PropertyDescriptors_without_ArrayMethodDescriptors.push( $event );
@@ -124,14 +123,18 @@ export default class ListenerRegistry extends Registry {
124
123
  for ( const listener of listeners ) {
125
124
  if ( listener.params.withPropertyDescriptors ) {
126
125
  if ( listener.params.withArrayMethodDescriptors ) {
126
+ events_with_PropertyDescriptors_with_ArrayMethodDescriptors.length &&
127
127
  listener.fire( events_with_PropertyDescriptors_with_ArrayMethodDescriptors );
128
128
  } else {
129
+ events_with_PropertyDescriptors_without_ArrayMethodDescriptors.length &&
129
130
  listener.fire( events_with_PropertyDescriptors_without_ArrayMethodDescriptors );
130
131
  }
131
132
  } else {
132
133
  if ( listener.params.withArrayMethodDescriptors ) {
134
+ events_without_PropertyDescriptors_with_ArrayMethodDescriptors.length &&
133
135
  listener.fire( events_without_PropertyDescriptors_with_ArrayMethodDescriptors );
134
136
  } else {
137
+ events_without_PropertyDescriptors_without_ArrayMethodDescriptors.length &&
135
138
  listener.fire( events_without_PropertyDescriptors_without_ArrayMethodDescriptors );
136
139
  }
137
140
  }
@@ -4,7 +4,7 @@
4
4
  */
5
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
+ import { _wq } from '../util.js';
8
8
 
9
9
  /**
10
10
  * ---------------------------
@@ -63,14 +63,14 @@ export default class Registry {
63
63
  static _getInstance( type, target, createIfNotExists = true, namespace = this.__namespace ) {
64
64
  if ( !_isTypeObject( target ) ) throw new Error( `Subject must be of type object; "${ _getType( target ) }" given!` );
65
65
  let ImplementationClass = this;
66
- if ( namespace && _( 'namespaces' ).has( type + '-' + namespace ) ) {
67
- ImplementationClass = _( 'namespaces' ).get( type + '-' + namespace );
66
+ if ( namespace && _wq( Registry, 'namespaces' ).has( type + '-' + namespace ) ) {
67
+ ImplementationClass = _wq( Registry, 'namespaces' ).get( type + '-' + namespace );
68
68
  type += '-' + namespace
69
69
  }
70
- if ( !_( target, 'registry' ).has( type ) && createIfNotExists ) {
71
- _( target, 'registry' ).set( type, new ImplementationClass( target ) );
70
+ if ( !_wq( target, 'registry' ).has( type ) && createIfNotExists ) {
71
+ _wq( target, 'registry' ).set( type, new ImplementationClass( target ) );
72
72
  }
73
- return _( target, 'registry' ).get( type );
73
+ return _wq( target, 'registry' ).get( type );
74
74
  }
75
75
 
76
76
  /**
@@ -83,11 +83,11 @@ export default class Registry {
83
83
  */
84
84
  static _namespace( type, namespace, ImplementationClass = null ) {
85
85
  type += '-' + namespace;
86
- if ( arguments.length === 2 ) return _( 'namespaces' ).get( type );
86
+ if ( arguments.length === 2 ) return _wq( Registry, 'namespaces' ).get( type );
87
87
  if ( !( ImplementationClass.prototype instanceof this ) ) {
88
88
  throw new Error( `The implementation of the namespace ${ this.name }.${ namespace } must be a subclass of ${ this.name }.` );
89
89
  }
90
- _( 'namespaces' ).set( type, ImplementationClass );
90
+ _wq( Registry, 'namespaces' ).set( type, ImplementationClass );
91
91
  ImplementationClass.__namespace = namespace;
92
92
  }
93
93
  }
package/src/main.js CHANGED
@@ -1,10 +1,6 @@
1
-
2
- /**
3
- * @imports
4
- */
5
1
  import { _isObject, _isTypeObject, _isFunction, _getType } from '@webqit/util/js/index.js';
6
2
  import { _from as _arrFrom } from '@webqit/util/arr/index.js';
7
- import { _, _await, env } from './util.js';
3
+ import { _wq, _await, env } from './util.js';
8
4
  import ListenerRegistry from './core/ListenerRegistry.js';
9
5
  import TrapsRegistry from './core/TrapsRegistry.js';
10
6
  import Descriptor from './core/Descriptor.js';
@@ -24,6 +20,25 @@ export function path( ...segments ) {
24
20
  return new Path( ...segments );
25
21
  }
26
22
 
23
+ /**
24
+ * Creates a "Subtree" directive.
25
+ *
26
+ * @return Subtree
27
+ */
28
+ class Subtree extends Array {}
29
+ export function subtree() {
30
+ return new Subtree;
31
+ }
32
+
33
+ /**
34
+ * Creates an "Infinity" directive.
35
+ *
36
+ * @return Infinity
37
+ */
38
+ export function any() {
39
+ return Infinity;
40
+ }
41
+
27
42
  /**
28
43
  * Reduces a path array against handler.
29
44
  *
@@ -38,10 +53,12 @@ export function path( ...segments ) {
38
53
  * @return Any
39
54
  */
40
55
  export function reduce( target, path, receiver, final = x => x, params = {} ) {
41
- if ( !path.length ) return;
42
- return ( function eat( target, path, $params ) {
43
- const segment = path[ $params.level ];
44
- const isLastSegment = $params.level === path.length - 1;
56
+ const _isSubtree = path instanceof Subtree;
57
+ if ( !_isSubtree && !path?.length ) return;
58
+ return ( function eat( target, path, $params, $isSubtree ) {
59
+ const isSubtree = $isSubtree || path[ $params.level ] instanceof Subtree;
60
+ const segment = isSubtree ? Infinity : path[ $params.level ];
61
+ const isLastSegment = isSubtree ? false : $params.level === path.length - 1;
45
62
  if ( target instanceof Descriptor && target.operation !== 'get' ) {
46
63
  // Always probe event-generated trees
47
64
  $params = { ...$params, probe: 'always' };
@@ -52,15 +69,19 @@ export function reduce( target, path, receiver, final = x => x, params = {} ) {
52
69
  // ---------------
53
70
  return receiver( target, segment, ( result, ...args ) => {
54
71
  // -----------
55
- const addTrail = desc => {
72
+ const addTrail = ( desc ) => {
56
73
  if ( !( desc instanceof Descriptor ) ) return;
57
- desc.path = [ desc.key ];
74
+ desc.path = 'key' in desc ? [ desc.key ] : [];
58
75
  if ( target instanceof Descriptor ) {
59
- desc.path = target.path.concat( desc.key );
76
+ desc.path = 'key' in desc ? target.path.concat( desc.key ) : target.path.slice( 0 );
60
77
  Object.defineProperty( desc, 'context', { get: () => target, configurable: true } );
61
78
  }
62
79
  };
63
- const advance = result => {
80
+ const flags = args[ 0 ] || {};
81
+ const advance = ( result ) => {
82
+ if ( result instanceof Descriptor && 'argumentsList' in result ) {
83
+ return;
84
+ }
64
85
  const $value = resolveObj( result/* a Descriptor who's value could be proxied */, false );
65
86
  return _await( $value/* could be a promise */, $value => {
66
87
  if ( result instanceof Descriptor ) {
@@ -68,23 +89,32 @@ export function reduce( target, path, receiver, final = x => x, params = {} ) {
68
89
  } else {
69
90
  result = $value;
70
91
  }
71
- const flags = args[ 0 ] || {};
72
- return eat( result, path, { ...$params, ...flags, level: $params.level + 1, } );
92
+ return eat( result, path, { ...$params, ...flags, keyInParent: result.key, level: $params.level + 1, }, isSubtree );
73
93
  } );
74
94
  };
75
95
  // -----------
76
96
  if ( isPropsList( segment ) && Array.isArray( result ) ) {
77
97
  result.forEach( addTrail );
78
- if ( isLastSegment ) return final( result, ...args );
79
- return result.map( advance );
98
+ if ( isLastSegment ) {
99
+ return final( result, ...args );
100
+ }
101
+ if ( isSubtree && result[ 0 ] instanceof Descriptor && ( result[ 0 ].operation !== 'get' || params.asGet ) ) {
102
+ final( result, ...args );
103
+ }
104
+ for ( const entry of result ) {
105
+ advance( entry );
106
+ }
107
+ return;
80
108
  }
81
109
  // -----------
82
110
  addTrail( result );
83
- if ( isLastSegment ) return final( result, ...args );
111
+ if ( isLastSegment ) {
112
+ return final( result, ...args );
113
+ }
84
114
  return advance( result );
85
115
  // -----------
86
116
  }, $params );
87
- } )( target, path.slice( 0 ), { ...params, level: 0 } );
117
+ } )( target, path.slice( 0 ), { ...params, level: 0 }, _isSubtree );
88
118
  }
89
119
 
90
120
  /**
@@ -99,21 +129,21 @@ export function reduce( target, path, receiver, final = x => x, params = {} ) {
99
129
  */
100
130
  export function observe( target, prop, receiver, params = {} ) {
101
131
  // ---------------
102
- target = resolveObj( target, !params.level );
132
+ const originalTarget = resolveObj( target, !params.level );
103
133
  if ( _isFunction( arguments[ 1 ] ) ) {
104
134
  [ , receiver, params = {} ] = arguments;
105
135
  prop = Infinity;
106
136
  }
107
137
  if ( !_isFunction( receiver ) ) throw new Error( `Handler must be a function; "${ _getType( receiver ) }" given!` );
108
- if ( prop instanceof Path ) return reduce( target, prop, observe, receiver, params );
138
+ if ( prop instanceof Path || prop instanceof Subtree ) return reduce( originalTarget, prop, observe, receiver, params );
109
139
  // ---------------
110
140
  params = { ...params, descripted: true };
111
141
  delete params.live;
112
- if ( !_isTypeObject( target ) ) return params.probe && get( target, prop, receiver, params );
142
+ if ( !_isTypeObject( originalTarget ) ) return params.probe && get( originalTarget, prop, receiver, params ) || undefined;
113
143
  // ---------------
114
- const emit = bind( target, prop, receiver, params );
144
+ const emit = bind( originalTarget, prop, receiver, params );
115
145
  if ( params.probe ) {
116
- return get( target, prop, emit, params );
146
+ return get( originalTarget, prop, emit, params );
117
147
  }
118
148
  return emit();
119
149
  }
@@ -129,13 +159,13 @@ export function observe( target, prop, receiver, params = {} ) {
129
159
  */
130
160
  export function intercept( target, traps, params = {} ) {
131
161
  // ---------------
132
- target = resolveObj( target );
162
+ const originalTarget = resolveObj( target );
133
163
  if ( !_isObject( traps ) ) {
134
164
  [ /*target*/, /*operation*/, /*handler*/, params = {} ] = arguments;
135
165
  traps = { [ arguments[ 1 ] ]: arguments[ 2 ] };
136
166
  }
137
167
  // ---------------
138
- return TrapsRegistry.getInstance( target, true, params.namespace ).addRegistration( { traps, params } );
168
+ return TrapsRegistry.getInstance( originalTarget, true, params.namespace ).addRegistration( { traps, params } );
139
169
  }
140
170
 
141
171
  /* ---------------QUERY APIs--------------- */
@@ -236,9 +266,10 @@ export function get( target, prop, receiver = x => x, params = {} ) {
236
266
  // ---------------
237
267
  let isLive;
238
268
  const originalTarget = resolveObj( target, !params.level );
239
- if ( _isObject( receiver ) ) { [ params, receiver ] = [ receiver, x => x ]; }
240
- else if ( params.live ) { isLive = true; }
241
- if ( prop instanceof Path ) return reduce( originalTarget, prop, get, receiver, params );
269
+ if ( _isObject( receiver ) ) {
270
+ [ params, receiver ] = [ receiver, x => x ];
271
+ } else if ( params.live ) { isLive = true; }
272
+ if ( prop instanceof Path || prop instanceof Subtree ) return reduce( originalTarget, prop, get, receiver, { ...params, asGet: true } );
242
273
  // ---------------
243
274
  return resolveProps( originalTarget, prop, props => {
244
275
  const related = [ ...props ];
@@ -253,7 +284,7 @@ export function get( target, prop, receiver = x => x, params = {} ) {
253
284
  const _next = value => ( descriptor.value = value, next( [ ...results, params.live || params.descripted ? descriptor : value ]/** not using concat() as value may be an array */, _props, _done ) );
254
285
  if ( arguments.length > 1 ) return _next( value );
255
286
  if ( !_isTypeObject( originalTarget ) ) return _next( originalTarget?.[ descriptor.key ] );
256
- const accessorizedProps = _( originalTarget, 'accessorizedProps', false );
287
+ const accessorizedProps = _wq( originalTarget, 'accessorizedProps', false );
257
288
  const accessorization = accessorizedProps && accessorizedProps.get( descriptor.key );
258
289
  if ( accessorization && accessorization.intact() ) {
259
290
  return _next( accessorization.getValue( params.withPropertyDescriptors ) );
@@ -281,7 +312,7 @@ export function get( target, prop, receiver = x => x, params = {} ) {
281
312
  } )( [], props.slice( 0 ), results => {
282
313
  const result_s = isPropsList( prop/*original*/ ) ? results : results[ 0 ];
283
314
  if ( isLive && _isTypeObject( originalTarget ) ) {
284
- const emit = bind( originalTarget, prop, receiver, params );
315
+ const emit = bind( originalTarget, prop, receiver, params, target.key );
285
316
  return emit( result_s );
286
317
  }
287
318
  return receiver( result_s );
@@ -301,8 +332,8 @@ export function get( target, prop, receiver = x => x, params = {} ) {
301
332
  * @return Void
302
333
  */
303
334
  export function batch( target, callback, params = {} ) {
304
- target = resolveObj( target );
305
- return ListenerRegistry.getInstance( target, true, params.namespace ).batch( callback, params );
335
+ const originalTarget = resolveObj( target );
336
+ return ListenerRegistry.getInstance( originalTarget, true, params.namespace ).batch( callback, params );
306
337
  }
307
338
 
308
339
  /**
@@ -318,7 +349,7 @@ export function map( source, target, params = {} ) {
318
349
  target = resolveObj( target );
319
350
  source = resolveObj( source );
320
351
  const only = ( params.only || [] ).slice( 0 ), except = ( params.except || [] ).slice( 0 );
321
- const sourceKeys = ownKeys( params.spread ? [ ...source ] : source ).map( k => !isNaN( k ) ? parseInt( k ) : k );
352
+ const sourceKeys = Object.keys( params.spread ? [ ...source ] : source ).map( k => !isNaN( k ) ? parseInt( k ) : k );
322
353
  const filteredKeys = only.length ? only.filter( k => sourceKeys.includes( k ) ) : sourceKeys.filter( k => !except.includes( k ) );
323
354
  const resolveKey = k => {
324
355
  if ( !Array.isArray( target ) || isNaN( k ) ) return k;
@@ -336,8 +367,8 @@ export function map( source, target, params = {} ) {
336
367
  return observe( source, mutations => {
337
368
  //batch( target, () => {
338
369
  mutations.filter( m => only.length ? only.includes( m.key ) : !except.includes( m.key ) ).forEach( m => {
339
- if ( m.operation === 'deleteProperty' ) return deleteProperty( target, resolveKey( m.key ), params );
340
- if ( m.operation === 'defineProperty' ) {
370
+ if ( m.type === 'delete' ) return deleteProperty( target, resolveKey( m.key ), params );
371
+ if ( m.type === 'def' ) {
341
372
  if ( m.value.enumerable || params.onlyEnumerable === false ) {
342
373
  defineProperty( target, resolveKey( m.key ), { ...m.value, configurable: true }, params );
343
374
  }
@@ -379,9 +410,9 @@ export function set( target, prop, value, receiver = x => x, params = {}, def =
379
410
  function defaultSet( descriptor, status = undefined ) {
380
411
  const _next = status => ( descriptor.status = status, next( descriptors.concat( descriptor ), entries, _done ) );
381
412
  if ( arguments.length > 1 ) return _next( descriptor, status );
382
- const accessorizedProps = _( originalTarget, 'accessorizedProps', false );
413
+ const accessorizedProps = _wq( originalTarget, 'accessorizedProps', false );
383
414
  const accessorization = accessorizedProps && accessorizedProps.get( descriptor.key );
384
- if ( descriptor.operation === 'defineProperty' ) {
415
+ if ( descriptor.type === 'def' ) {
385
416
  if ( accessorization && !accessorization.restore() ) _next( false );
386
417
  Object.defineProperty( originalTarget, descriptor.key, descriptor.value );
387
418
  return _next( true );
@@ -412,8 +443,8 @@ export function set( target, prop, value, receiver = x => x, params = {}, def =
412
443
  // ---------
413
444
  return has( originalTarget, prop, exists => {
414
445
  if ( !exists ) return exec( exists );
415
- if ( prop === 'length' && Array.isArray( originalTarget ) && _( originalTarget ).has( '$length' ) ) {
416
- return exec( true, _( originalTarget ).get( '$length' ) );
446
+ if ( prop === 'length' && Array.isArray( originalTarget ) && _wq( originalTarget ).has( '$length' ) ) {
447
+ return exec( true, _wq( originalTarget ).get( '$length' ) );
417
448
  }
418
449
  const $params = { ...params, withPropertyDescriptors: def };
419
450
  return get( originalTarget, prop, oldValue => exec( exists, oldValue ), $params );
@@ -470,7 +501,7 @@ export function defineProperties( target, descriptors, receiver = x => x, params
470
501
  */
471
502
  export function deleteProperty( target, prop, receiver = x => x, params = {} ) {
472
503
  // ---------------
473
- target = resolveObj( target );
504
+ const originalTarget = resolveObj( target );
474
505
  if ( _isObject( receiver ) ) { [ params, receiver ] = [ receiver, x => x ]; }
475
506
  // ---------------
476
507
  const props = _arrFrom( prop, false ), related = [ ...props ];
@@ -481,14 +512,14 @@ export function deleteProperty( target, prop, receiver = x => x, params = {} ) {
481
512
  function defaultDel( descriptor, status = undefined ) {
482
513
  const _next = status => ( descriptor.status = status, next( descriptors.concat( descriptor ), props, _done ) );
483
514
  if ( arguments.length > 1 ) return _next( descriptor, status );
484
- const accessorizedProps = _( target, 'accessorizedProps', false );
515
+ const accessorizedProps = _wq( originalTarget, 'accessorizedProps', false );
485
516
  const accessorization = accessorizedProps && accessorizedProps.get( descriptor.key );
486
517
  if ( accessorization && !accessorization.restore() ) _next( false );
487
- return _next( Reflect.deleteProperty( target, descriptor.key ) );
518
+ return _next( Reflect.deleteProperty( originalTarget, descriptor.key ) );
488
519
  }
489
520
  // ---------
490
521
  function exec( oldValue ) {
491
- const descriptor = new Descriptor( target, {
522
+ const descriptor = new Descriptor( originalTarget, {
492
523
  type: 'delete',
493
524
  key: prop,
494
525
  oldValue,
@@ -496,16 +527,16 @@ export function deleteProperty( target, prop, receiver = x => x, params = {} ) {
496
527
  operation: 'deleteProperty',
497
528
  detail: params.detail,
498
529
  } );
499
- const trapsRegistry = TrapsRegistry.getInstance( target, false, params.namespace );
530
+ const trapsRegistry = TrapsRegistry.getInstance( originalTarget, false, params.namespace );
500
531
  return trapsRegistry
501
532
  ? trapsRegistry.emit( descriptor, defaultDel )
502
533
  : defaultDel( descriptor );
503
534
  }
504
535
  // ---------
505
- return get( target, prop, exec, params );
536
+ return get( originalTarget, prop, exec, params );
506
537
  // ---------
507
538
  } )( [], props.slice( 0 ), descriptors => {
508
- const listenerRegistry = ListenerRegistry.getInstance( target, false, params.namespace );
539
+ const listenerRegistry = ListenerRegistry.getInstance( originalTarget, false, params.namespace );
509
540
  if ( listenerRegistry ) listenerRegistry.emit( descriptors );
510
541
  return receiver(
511
542
  isPropsList( prop/*original*/ ) ? descriptors.map( opr => opr.status ) : descriptors[ 0 ].status
@@ -560,13 +591,13 @@ export function apply( target, thisArgument, argumentsList, receiver = x => x, p
560
591
  const listenerRegistry = ListenerRegistry.getInstance( originalThis, false, params.namespace );
561
592
  listenerRegistry?.emit( [ descriptor ], { eventIsArrayMethodDescriptor: true } );
562
593
  }
563
- _( originalThis ).set( '$length', originalThis.length );
594
+ _wq( originalThis ).set( '$length', originalThis.length );
564
595
  returnValue = batch(
565
596
  originalThis,
566
597
  () => exec( target, 'apply', { thisArgument/*proxy wrappers allowed; in fact is why it works*/, argumentsList }, receiver, params ),
567
598
  params
568
599
  );
569
- _( originalThis ).delete( '$length' );
600
+ _wq( originalThis ).delete( '$length' );
570
601
  } else {
571
602
  returnValue = exec( target, 'apply', { thisArgument: originalThis, argumentsList }, receiver, params );
572
603
  }
@@ -616,13 +647,33 @@ function bind( target, prop, receiver, params = {} ) {
616
647
  const controller = new AbortController;
617
648
  env.setMaxListeners?.( 0, controller.signal );
618
649
  if ( params.signal ) { params.signal.addEventListener( 'abort', () => controller.abort() ); }
619
- params = { ...params, signal: controller.signal };
620
-
621
- const listenerRegistry = ListenerRegistry.getInstance( target, true, params.namespace );
622
- return function emit( descriptor_s, prevRegistration = null ) {
623
- prevRegistration?.remove();
624
- const registrationNext = listenerRegistry.addRegistration( prop, emit, params );
625
- const flags = { signal: registrationNext.signal, };
650
+ const $params = { ...params, signal: controller.signal };
651
+ const listenerRegistry = ListenerRegistry.getInstance( target, true, $params.namespace );
652
+ const childRegistrations = new Map;
653
+ return function emit( descriptor_s = [], prevRegistration = null ) {
654
+ let flags, registrationNext, isExisting;
655
+ if ( isPropsList( prop ) ) {
656
+ if ( prevRegistration ) {
657
+ isExisting = true;
658
+ registrationNext = prevRegistration;
659
+ for ( const descriptor of descriptor_s ) {
660
+ childRegistrations.get( descriptor.key )?.remove();
661
+ childRegistrations.delete( descriptor.key );
662
+ }
663
+ } else {
664
+ registrationNext = listenerRegistry.addRegistration( prop, emit, $params );
665
+ }
666
+ flags = { signal: registrationNext.signal, childRegistrations };
667
+ } else {
668
+ prevRegistration?.remove();
669
+ registrationNext = listenerRegistry.addRegistration( prop, emit, $params );
670
+ flags = { signal: registrationNext.signal };
671
+ }
672
+ // ------------------
673
+ if ( $params.childRegistrations && $params.keyInParent ) {
674
+ $params.childRegistrations.set( $params.keyInParent, registrationNext );
675
+ }
676
+ // ------------------
626
677
  if ( arguments.length ) {
627
678
  const handlerReturnValue = receiver( descriptor_s, flags );
628
679
  if ( arguments.length > 1 ) return handlerReturnValue;
@@ -666,10 +717,14 @@ function isPropsList( prop ) {
666
717
  }
667
718
 
668
719
  // Resolves obj down to it's self
669
- function resolveObj( obj, assert = true ) {
720
+ function resolveObj( obj, assert = true, probePropertyDescriptors = true ) {
670
721
  if ( ( !obj || !_isTypeObject( obj ) ) && assert ) throw new Error( `Object must be of type object or array! "${ _getType( obj ) }" given.` );
671
722
  if ( obj instanceof Descriptor ) {
672
- obj = obj.value;
723
+ if ( obj.type === 'def' && probePropertyDescriptors ) {
724
+ obj = typeof obj.value.get === 'function' ? obj.value.get() : obj.value.value;
725
+ } else {
726
+ obj = obj.value;
727
+ }
673
728
  }
674
729
  return obj && unproxy( obj );
675
730
  }
@@ -678,7 +733,7 @@ function resolveObj( obj, assert = true ) {
678
733
  function resolveProps( obj, prop, receiver, params = {} ) {
679
734
  if ( prop === Infinity ) {
680
735
  if ( params.level && !_isTypeObject( obj ) ) return receiver( [] );
681
- return ownKeys( obj, receiver, params );
736
+ return receiver( Object.keys( obj ) );
682
737
  }
683
738
  return receiver( _arrFrom( prop, false ) );
684
739
  }
package/src/util.js CHANGED
@@ -2,9 +2,9 @@
2
2
  /**
3
3
  * @imports
4
4
  */
5
- import { _internals } from '@webqit/util/js/index.js';
5
+ import { _wq as __wq } from '@webqit/util/js/index.js';
6
6
 
7
- export const _ = ( ...args ) => _internals( 'observer-api', ...args );
7
+ export const _wq = ( target, ...args ) => __wq( target, 'observerAPI', ...args );
8
8
 
9
9
  export const _await = ( value, callback ) => value instanceof Promise ? value.then( callback ) : callback( value );
10
10
 
@@ -262,8 +262,8 @@ describe( `Test: .observe() + .set()`, function() {
262
262
  it( `Observe wildcard paths.`, function() {
263
263
  let obj = {}, _changes = [];
264
264
  // -----
265
- Observer.reduce( obj, [ 'key1', Infinity ], Observer.observe, change => {
266
- _changes.push( change );
265
+ Observer.reduce( obj, [ 'key1', Infinity ], Observer.observe, changes => {
266
+ _changes.push( changes );
267
267
  }, { preflight: true } );
268
268
  // -----
269
269
  Observer.set( obj, {