@webqit/observer 2.1.16 → 2.1.18
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/README.md +1 -1
- package/dist/main.js +1 -1
- package/dist/main.js.map +4 -4
- package/package.json +1 -1
- package/src/actors.js +47 -17
- package/src/core/ListenerRegistration.js +2 -1
- package/src/core/ListenerRegistry.js +16 -2
- package/src/main.js +31 -22
- package/src/util.js +2 -0
package/README.md
CHANGED
|
@@ -16,7 +16,7 @@ Observer API is an upcoming proposal!
|
|
|
16
16
|
|
|
17
17
|
Tracking mutations on JavaScript objects has historically relied on "object wrapping" techniques with [ES6 Proxies](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy), and on "property mangling" techniques with [getters and setters](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty). Besides how the first poses an *object identity* problem and the second, an *interoperability* problem, there is also much inflexibility in the programming model that each enables!
|
|
18
18
|
|
|
19
|
-
This is discussed extensively in [the introductory blog post](https://dev.to/oxharris
|
|
19
|
+
This is discussed extensively in [the introductory blog post](https://dev.to/oxharris/re-exploring-reactivity-and-introducing-the-observer-api-and-reflex-functions-4h70)
|
|
20
20
|
|
|
21
21
|
We find a design precedent to object observability in the [`Object.observe()`](https://web.dev/es7-observe/) API, which at one time checked all the boxes and touched the very pain points we have today! The idea with the new **Observer API** is to re-explore that unique design with a more wholistic approach that considers the broader subject of Reactive Programming in JavaScript!
|
|
22
22
|
|
package/dist/main.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
(()=>{var je=Object.defineProperty;var xe=(e,t)=>{for(var n in t)je(e,n,{get:t[n],enumerable:!0})};var ge={};xe(ge,{apply:()=>pe,batch:()=>le,construct:()=>ae,defineProperties:()=>Qe,defineProperty:()=>me,deleteProperties:()=>Xe,deleteProperty:()=>X,get:()=>j,getOwnPropertyDescriptor:()=>se,getOwnPropertyDescriptors:()=>Je,getPrototypeOf:()=>ue,has:()=>Q,intercept:()=>Ge,isExtensible:()=>ce,observe:()=>Pe,ownKeys:()=>J,path:()=>He,preventExtensions:()=>he,reduce:()=>ye,set:()=>L,setPrototypeOf:()=>de});function x(e){return!Array.isArray(e)&&typeof e=="object"&&e}function D(e){return typeof e}function w(e){return Array.isArray(e)}function Z(e,t,n=null){return w(t)?e.filter(r=>n?t.filter(o=>n(r,o)).length:t.indexOf(r)!==-1):[]}function K(e,...t){if(globalThis.webqit||(globalThis.webqit={}),globalThis.webqit.refs||Object.defineProperty(globalThis.webqit,"refs",{value:new U}),!arguments.length)return globalThis.webqit.refs;let n=globalThis.webqit.refs.get(e);n||(n=new U,globalThis.webqit.refs.set(e,n));let r,o;for(;r=t.shift();)(o=n)&&!(n=n.get(r))&&(n=new U,o.set(r,n));return n}var U=class extends Map{constructor(...t){super(...t),this.observers=new Set}set(t,n){let r=super.set(t,n);return this.fire("set",t,n,t),r}delete(t){let n=super.delete(t);return this.fire("delete",t),n}has(t){return this.fire("has",t),super.has(t)}get(t){return this.fire("get",t),super.get(t)}keyNames(){return Array.from(super.keys())}observe(t,n,r){let o={type:t,key:n,callback:r};return this.observers.add(o),()=>this.observers.delete(o)}unobserve(t,n,r){if(Array.isArray(t)||Array.isArray(n))throw new Error('The "type" and "key" arguments can only be strings.');for(let o of this.observers)W([t,"*"],o.type)&&W([n,"*"],o.key)&&o.callback===r&&this.observers.delete(o)}fire(t,n,...r){for(let o of this.observers)W([t,"*"],o.type)&&W([n,"*"],o.key)&&o.callback(...r)}},W=(e,t)=>Array.isArray(t)?Z(e,t).length:e.includes(t);function R(e){return typeof e=="function"}function $(e){return R(e)&&/^class\s?/.test(Function.prototype.toString.call(e))}function ee(e){return e===null||e===""}function F(e){return arguments.length&&(e===void 0||typeof e>"u")}function b(e){return Array.isArray(e)||typeof e=="object"&&e||R(e)}function te(e){return ee(e)||F(e)||e===!1||e===0||b(e)&&!Object.keys(e).length}function P(e){return R(e)||e&&{}.toString.call(e)==="[object function]"}function H(e){return e instanceof String||typeof e=="string"&&e!==null}function re(e){return!H(e)&&!F(e.length)}function q(e,t=!0){return w(e)?e:!t&&x(e)?[e]:e!==!1&&e!==0&&te(e)?[]:re(e)?Array.prototype.slice.call(e):x(e)?Object.values(e):[e]}var N=class{constructor(t,n){this.registry=t,Object.assign(this,{...n,target:t.target}),this.params.signal&&this.params.signal.addEventListener("abort",()=>this.remove())}remove(){return this.removed=!0,this.registry.removeRegistration(this)}};var y=(...e)=>K("observer-api",...e),B=(e,t)=>e instanceof Promise?e.then(t):t(e);var M=class extends N{constructor(){super(...arguments),this.emit.currentRegistration=this,Object.defineProperty(this,"abortController",{value:new AbortController}),Object.defineProperty(this,"signal",{value:this.abortController.signal})}remove(){this.abortController.abort(),super.remove()}fire(t){if(this.emit.recursionTarget&&!["inject","force-async","force-sync"].includes(this.params.recursions))return;let n=t,r=this.filter;if(r!==1/0&&(r=q(r,!1))&&(n=t.filter(o=>r.includes(o.key))),this.params.diff&&(n=n.filter(o=>o.type!=="set"||o.value!==o.oldValue)),n.length){if(this.emit.recursionTarget&&this.params.recursions!=="force-sync"){this.emit.recursionTarget.push(...n);return}this.emit.recursionTarget=this.params.recursions==="inject"?n:[];let o=this.filter===1/0||Array.isArray(this.filter)?this.emit(n,this):this.emit(n[0],this);return B(o,f=>{let s=this.emit.recursionTarget;return delete this.emit.recursionTarget,this.params.recursions==="force-async"&&s.length?this.emit.currentRegistration.fire(s):f})}}};var z=class{constructor(t){this.target=t,this.entries=[]}addRegistration(t){return this.entries.push(t),t}removeRegistration(t){this.entries=this.entries.filter(n=>n!==t)}static _getInstance(t,n,r=!0,o=this.__namespace){if(!b(n))throw new Error(`Subject must be of type object; "${D(n)}" given!`);let f=this;return o&&y("namespaces").has(t+"-"+o)&&(f=y("namespaces").get(t+"-"+o),t+="-"+o),!y(n,"registry").has(t)&&r&&y(n,"registry").set(t,new f(n)),y(n,"registry").get(t)}static _namespace(t,n,r=null){if(t+="-"+n,arguments.length===2)return y("namespaces").get(t);if(!(r.prototype instanceof this))throw new Error(`The implementation of the namespace ${this.name}.${n} must be a subclass of ${this.name}.`);y("namespaces").set(t,r),r.__namespace=n}};var C=class extends z{static getInstance(t,n=!0,r=null){return super._getInstance("listeners",...arguments)}static namespace(t,n=null){return super._namespace("listeners",...arguments)}constructor(t){super(t),this.batches=[]}addRegistration(t,n,r){return super.addRegistration(new M(this,{filter:t,emit:n,params:r}))}emit(t){if(this.batches.length){this.batches[0].events.push(...t);return}this.entries.forEach(n=>n.fire(t))}batch(t){this.batches.unshift({entries:[...this.entries],events:[]});let n=t();return B(n,r=>{let o=this.batches.shift();return o.events.length&&o.entries.forEach(f=>f.fire(o.events)),r})}};var V=class extends N{exec(t,n,r){return this.running||!this.traps[t.type]?n(...Array.prototype.slice.call(arguments,2)):(this.running=!0,this.traps[t.type](t,r,(...o)=>(this.running=!1,n(...o))))}};var E=class extends z{static getInstance(t,n=!0,r=null){return super._getInstance("traps",...arguments)}static namespace(t,n=null){return super._namespace("traps",...arguments)}addRegistration(t){return super.addRegistration(new V(this,t))}emit(t,n=null){let r=this;return function o(f,...s){let c=r.entries[f];return c?c.exec(t,(...i)=>o(f+1,...i),...s):n?n(t,...s):s[0]}(0)}};var v=class{constructor(t,n){if(this.target=t,!n.type)throw new Error("Descriptor type must be given in definition!");Object.assign(this,n)}};var fe={};xe(fe,{accessorize:()=>ke,proxy:()=>Ke,unaccessorize:()=>We,unproxy:()=>G});function ke(e,t,n={}){e=ie(e);let r=y(e,"accessorizedProps");function o(i){let u,m=e;do u=Object.getOwnPropertyDescriptor(m,i);while(!u&&(m=Object.getPrototypeOf(m)));return u?{proto:m,descriptor:u}:{descriptor:{value:void 0,configurable:!0,enumerable:!0,writable:!0}}}function f(i){if(r.has(i+""))return!0;let u=o(i);u.getValue=function(){return this.descriptor.get?this.descriptor.get():this.descriptor.value},u.setValue=function(d){return this.dirty=!0,this.descriptor.set?this.descriptor.set(d)!==!1:(this.descriptor.value=d,!0)},u.intact=function(){let d=Object.getOwnPropertyDescriptor(e,i);return d?.get===a.get&&d?.set===a.set&&r.get(i+"")===this},u.restore=function(){return this.intact()?(this.proto&&this.proto!==e||!this.proto&&!this.dirty?delete e[i]:Object.defineProperty(e,i,this.descriptor),r.delete(i+""),!0):!1},r.set(i+"",u);let{enumerable:m=!0}=u.descriptor,a={enumerable:m,configurable:!0};("value"in u.descriptor||u.descriptor.set)&&(a.set=function(d){return L(this,i,d,n)}),("value"in u.descriptor||u.descriptor.get)&&(a.get=function(){return j(this,i,n)});try{return Object.defineProperty(e,i,a),!0}catch{return r.delete(i+""),!1}}let c=(Array.isArray(t)?t:t===void 0?Object.keys(e):[t]).map(f);return t===void 0||Array.isArray(t)?c:c[0]}function We(e,t,n={}){e=ie(e);let r=y(e,"accessorizedProps");function o(c){return r.has(c+"")?r.get(c+"").restore():!0}let s=(Array.isArray(t)?t:t===void 0?Object.keys(e):[t]).map(o);return t===void 0||Array.isArray(t)?s:s[0]}function Ke(e,t={}){e=ie(e);let n=new Proxy(e,{apply:(r,o,f)=>pe(r,o,f,t),construct:(r,o,f=null)=>ae(r,o,f,t),defineProperty:(r,o,f)=>me(r,o,f,t),deleteProperty:(r,o)=>X(r,o,t),get:(r,o,f=null)=>{let s=j(r,o,{...t,receiver:f});return t.proxyAutoBinding!==!1&&P(s)&&!$(s)?function(...c){let i=this||n;return le(i,()=>s.call(i,...c))}:s},getOwnPropertyDescriptor:(r,o)=>se(r,o,t),getPrototypeOf:r=>ue(r,t),has:(r,o)=>Q(r,o,t),isExtensible:r=>ce(r,t),ownKeys:r=>J(r,t),preventExtensions:r=>he(r,t),set:(r,o,f,s=null)=>L(r,o,f,{...t,receiver:s}),setPrototypeOf:(r,o)=>de(r,o,t)});return y(n).set(n,e),n}function G(e){return y(e).get(e)||e}function ie(e){if(!e||!b(e))throw new Error("Target must be of type object!");return G(e)}var k=class extends Array{};function He(...e){return new k(...e)}function ye(e,t,n,r=f=>f,o={}){if(t.length)return function f(s,c,i){let u=c[i.level],m=i.level===c.length-1;return s instanceof v&&s.type!=="get"?i={...i,probe:"always"}:i.probe!=="always"&&(i={...i,probe:!m}),n(s,u,(a,...d)=>{let h=l=>{l instanceof v&&(l.path=[l.key],s instanceof v&&(l.path=s.path.concat(l.key),Object.defineProperty(l,"context",{get:()=>s,configurable:!0})))},O=l=>{let p=S(l,!1);return B(p,g=>{l instanceof v?l.value=g:l=g;let _=d[0]||{};return f(l,c,{...i,..._,level:i.level+1})})};return Y(u)&&Array.isArray(a)?(a.forEach(h),m?r(a,...d):a.map(O)):(h(a),m?r(a,...d):O(a))},i)}(e,t.slice(0),{...o,level:0})}function Pe(e,t,n,r={}){if(e=S(e,!r.level),P(arguments[1])&&([,n,r={}]=arguments,t=1/0),!P(n))throw new Error(`Handler must be a function; "${D(n)}" given!`);if(t instanceof k)return ye(e,t,Pe,n,r);if(r={...r,descripted:!0},delete r.live,!b(e))return r.probe&&j(e,t,n,r);let o=Ae(e,t,n,r);return r.probe?j(e,t,o,r):o()}function Ge(e,t,n={}){return e=S(e),x(t)||([,,,n={}]=arguments,t={[arguments[1]]:arguments[2]}),E.getInstance(e,!0,n.namespace).addRegistration({traps:t,params:n})}function se(e,t,n=o=>o,r={}){return A(e,"getOwnPropertyDescriptor",{key:t},n,r)}function Je(e,t,n=o=>o,r={}){return A(e,"getOwnPropertyDescriptors",{key:t},n,r)}function ue(e,t=r=>r,n={}){return A(e,"getPrototypeOf",{},t,n)}function ce(e,t=r=>r,n={}){return A(e,"isExtensible",{},t,n)}function J(e,t=r=>r,n={}){return A(e,"ownKeys",{},t,n)}function Q(e,t,n=o=>o,r={}){return A(e,"has",{key:t},n,r)}function j(e,t,n=o=>o,r={}){let o;return e=S(e,!r.level),x(n)?[r,n]=[n,f=>f]:r.live&&(o=!0),t instanceof k?ye(e,t,j,n,r):Ye(e,t,f=>{let s=[...f];return function c(i,u,m){if(!u.length)return m(i);let a=u.shift();if(!["string","number","symbol"].includes(typeof a))throw new Error(`Property name/key ${a} invalid.`);function d(l,p=void 0){let g=I=>(l.value=I,c([...i,r.live||r.descripted?l:I],u,m));if(arguments.length>1)return g(p);let _=y(e,"accessorizedProps",!1),T=_&&_.get(l.key+"");return T&&T.intact()?g(T.getValue()):g(Reflect.get(e,l.key,...r.receiver?[r.receiver]:[]))}let h=new v(e,{type:"get",key:a,value:void 0,related:s});if(!b(e))return c([...i,r.live||r.descripted?h:void 0],u,m);let O=E.getInstance(e,!1,r.namespace);return O?O.emit(h,d):d(h)}([],f.slice(0),c=>{let i=Y(t)?c:c[0];return o&&b(e)?Ae(e,t,n,r)(i):n(i)})},r)}function le(e,t,n={}){return e=S(e),C.getInstance(e,!0,n.namespace).batch(t)}function L(e,t,n,r=s=>s,o={},f=!1){e=S(e);let s=[[t,n]];x(t)&&([,,r=i=>i,o={},f=!1]=arguments,s=Object.entries(t)),x(r)&&([f,o,r]=[typeof o=="boolean"?o:!1,r,i=>i]);let c=s.map(([i])=>i);return function i(u,m,a){if(!m.length)return a(u);let[d,h]=m.shift();function O(p,g=void 0){let _=Ee=>(p.status=Ee,i(u.concat(p),m,a));if(arguments.length>1)return _(p,g);let T=y(e,"accessorizedProps",!1),I=T&&T.get(p.key+"");return p.type==="defineProperty"?(I&&!I.restore()&&_(!1),Object.defineProperty(e,p.key,p.value),_(!0)):I&&I.intact()?_(I.setValue(p.value)):_(Reflect.set(e,p.key,p.value))}function l(p,g){if(o.diff&&h===g)return i(u,m,a);let _=new v(e,{type:f?"defineProperty":"set",key:d,value:h,isUpdate:p,oldValue:g,related:[...c],detail:o.detail}),T=E.getInstance(e,!1,o.namespace);return T?T.emit(_,O):O(_)}return Q(e,d,p=>p?j(e,d,g=>l(p,g),o):l(p),o)}([],s.slice(0),i=>{let u=C.getInstance(e,!1,o.namespace);return u&&u.emit(i),r(Y(t)?i.map(m=>m.status):i[0]?.status)})}function me(e,t,n,r=f=>f,o={}){return L(e,t,n,r,o,!0)}function Qe(e,t,n=o=>o,r={}){return L(e,t,n,r,!0)}function X(e,t,n=o=>o,r={}){e=S(e),x(n)&&([r,n]=[n,s=>s]);let o=q(t,!1),f=[...o];return function s(c,i,u){if(!i.length)return u(c);let m=i.shift();function a(h,O=void 0){let l=_=>(h.status=_,s(c.concat(h),i,u));if(arguments.length>1)return l(h,O);let p=y(e,"accessorizedProps",!1),g=p&&p.get(h.key+"");return g&&!g.restore()&&l(!1),l(Reflect.deleteProperty(e,h.key))}function d(h){let O=new v(e,{type:"deleteProperty",key:m,oldValue:h,related:[...f],detail:r.detail}),l=E.getInstance(e,!1,r.namespace);return l?l.emit(O,a):a(O)}return j(e,m,d,r)}([],o.slice(0),s=>{let c=C.getInstance(e,!1,r.namespace);return c&&c.emit(s),n(Y(t)?s.map(i=>i.status):s[0].status)})}function Xe(e,t,n=o=>o,r={}){return X(...arguments)}function ae(e,t,n=null,r=f=>f,o={}){return A(e,"construct",arguments.length>2?{argumentsList:t,newTarget:n}:{argumentsList:t},r,o)}function pe(e,t,n,r=f=>f,o={}){return A(e,"apply",{thisArgument:t,argumentsList:n},r,o)}function de(e,t,n=o=>o,r={}){return A(e,"setPrototypeOf",{proto:t},n,r)}function he(e,t=r=>r,n={}){return A(e,"preventExtensions",{},t,n)}function Ae(e,t,n,r={}){let o;r.signal||(o=new AbortController,r={...r,signal:o.signal});let f=C.getInstance(e,!0,r.namespace);return function s(c,i=null){i?.remove();let m={signal:f.addRegistration(t,s,r).signal};if(arguments.length){let a=n(c,m);if(arguments.length>1)return a}return o}}function A(e,t,n={},r=f=>f,o={}){e=S(e),x(r)&&([o,r]=[r,i=>i]);function f(i,u){return arguments.length>1?r(u):r(Reflect[t](e,...Object.values(n)))}let s=new v(e,{type:t,...n}),c=E.getInstance(e,!1,o.namespace);return c?c.emit(s,f):f(s)}function Y(e){return e===1/0||Array.isArray(e)}function S(e,t=!0){if((!e||!b(e))&&t)throw new Error(`Object must be of type object or array! "${D(e)}" given.`);return e instanceof v&&(e=e.value),e&&G(e)}function Ye(e,t,n,r={}){return t===1/0?r.level&&!b(e)?n([]):J(e,n,r):n(q(t,!1))}var Ze={...ge,...fe},Te=Ze;self.webqit||(self.webqit={});self.webqit.Observer=Te;})();
|
|
1
|
+
(()=>{var Re=Object.defineProperty;var _e=(t,e)=>{for(var n in e)Re(t,n,{get:e[n],enumerable:!0})};var xe={};_e(xe,{apply:()=>Q,batch:()=>me,construct:()=>he,defineProperties:()=>Qe,defineProperty:()=>pe,deleteProperties:()=>Xe,deleteProperty:()=>ee,get:()=>R,getOwnPropertyDescriptor:()=>ce,getOwnPropertyDescriptors:()=>Je,getPrototypeOf:()=>le,has:()=>Z,intercept:()=>Ge,isExtensible:()=>ae,observe:()=>Te,ownKeys:()=>Y,path:()=>Ke,preventExtensions:()=>ye,reduce:()=>ge,set:()=>B,setPrototypeOf:()=>de});function x(t){return!Array.isArray(t)&&typeof t=="object"&&t}function N(t){return typeof t}function A(t){return Array.isArray(t)}function re(t,e,n=null){return A(e)?t.filter(r=>n?e.filter(o=>n(r,o)).length:e.indexOf(r)!==-1):[]}function H(t,...e){if(globalThis.webqit||(globalThis.webqit={}),globalThis.webqit.refs||Object.defineProperty(globalThis.webqit,"refs",{value:new U}),!arguments.length)return globalThis.webqit.refs;let n=globalThis.webqit.refs.get(t);n||(n=new U,globalThis.webqit.refs.set(t,n));let r,o;for(;r=e.shift();)(o=n)&&!(n=n.get(r))&&(n=new U,o.set(r,n));return n}var U=class extends Map{constructor(...e){super(...e),this.observers=new Set}set(e,n){let r=super.set(e,n);return this.fire("set",e,n,e),r}delete(e){let n=super.delete(e);return this.fire("delete",e),n}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,n,r){let o={type:e,key:n,callback:r};return this.observers.add(o),()=>this.observers.delete(o)}unobserve(e,n,r){if(Array.isArray(e)||Array.isArray(n))throw new Error('The "type" and "key" arguments can only be strings.');for(let o of this.observers)W([e,"*"],o.type)&&W([n,"*"],o.key)&&o.callback===r&&this.observers.delete(o)}fire(e,n,...r){for(let o of this.observers)W([e,"*"],o.type)&&W([n,"*"],o.key)&&o.callback(...r)}},W=(t,e)=>Array.isArray(e)?re(t,e).length:t.includes(e);function z(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 _(t){return Array.isArray(t)||typeof t=="object"&&t||z(t)}function oe(t){return ne(t)||S(t)||t===!1||t===0||_(t)&&!Object.keys(t).length}function j(t){return z(t)||t&&{}.toString.call(t)==="[object function]"}function K(t){return t instanceof String||typeof t=="string"&&t!==null}function ie(t){return!K(t)&&!S(t.length)}function q(t,e=!0){return A(t)?t:!e&&x(t)?[t]:t!==!1&&t!==0&&oe(t)?[]:ie(t)?Array.prototype.slice.call(t):x(t)?Object.values(t):[t]}var h=(...t)=>H("observer-api",...t),L=(t,e)=>t instanceof Promise?t.then(e):e(t),G={};var F=class{constructor(e,n){this.registry=e,Object.assign(this,{...n,target:e.target}),this.params.signal&&this.params.signal.addEventListener("abort",()=>this.remove())}remove(){return this.removed=!0,this.registry.removeRegistration(this)}};var M=class extends F{constructor(){super(...arguments),this.emit.currentRegistration=this,Object.defineProperty(this,"abortController",{value:new AbortController}),Object.defineProperty(this,"signal",{value:this.abortController.signal}),G.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 n=e,r=this.filter;if(r!==1/0&&(r=q(r,!1))&&(n=e.filter(o=>r.includes(o.key))),this.params.diff&&(n=n.filter(o=>o.type!=="set"||o.value!==o.oldValue)),n.length){if(this.emit.recursionTarget&&this.params.recursions!=="force-sync"){this.emit.recursionTarget.push(...n);return}this.emit.recursionTarget=this.params.recursions==="inject"?n:[];let o=this.filter===1/0||Array.isArray(this.filter)?this.emit(n,this):this.emit(n[0],this);return L(o,c=>{let u=this.emit.recursionTarget;return delete this.emit.recursionTarget,this.params.recursions==="force-async"&&u.length?this.emit.currentRegistration.fire(u):c})}}};var V=class{constructor(e){this.target=e,this.entries=[]}addRegistration(e){return this.entries.push(e),e}removeRegistration(e){this.entries=this.entries.filter(n=>n!==e)}static _getInstance(e,n,r=!0,o=this.__namespace){if(!_(n))throw new Error(`Subject must be of type object; "${N(n)}" given!`);let c=this;return o&&h("namespaces").has(e+"-"+o)&&(c=h("namespaces").get(e+"-"+o),e+="-"+o),!h(n,"registry").has(e)&&r&&h(n,"registry").set(e,new c(n)),h(n,"registry").get(e)}static _namespace(e,n,r=null){if(e+="-"+n,arguments.length===2)return h("namespaces").get(e);if(!(r.prototype instanceof this))throw new Error(`The implementation of the namespace ${this.name}.${n} must be a subclass of ${this.name}.`);h("namespaces").set(e,r),r.__namespace=n}};var b=class{constructor(e,n){if(this.target=e,!n.type)throw new Error("Descriptor type must be given in definition!");Object.assign(this,n)}};var C=class extends V{static getInstance(e,n=!0,r=null){return super._getInstance("listeners",...arguments)}static namespace(e,n=null){return super._namespace("listeners",...arguments)}constructor(e){super(e),this.batches=[]}addRegistration(e,n,r){return super.addRegistration(new M(this,{filter:e,emit:n,params:r}))}emit(e,n=!1){if(this.batches.length){this.batches[0].events.push(...e);return}let r;this.entries.forEach(o=>{if(n&&!o.params.propertyDescriptors){r=r||e.map(c=>{let{target:u,value:f,oldValue:i,type:s,...l}=c;return f=f.get?f.get():f.value,i=i?.get?i.get():i?.value,new b(u,{type:"set",value:f,oldValue:i,...l})}),o.fire(r);return}o.fire(e)})}batch(e){this.batches.unshift({entries:[...this.entries],events:[]});let n=e();return L(n,r=>{let o=this.batches.shift();return o.events.length&&o.entries.forEach(c=>c.fire(o.events)),r})}};var $=class extends F{exec(e,n,r){return this.running||!this.traps[e.type]?n(...Array.prototype.slice.call(arguments,2)):(this.running=!0,this.traps[e.type](e,r,(...o)=>(this.running=!1,n(...o))))}};var I=class extends V{static getInstance(e,n=!0,r=null){return super._getInstance("traps",...arguments)}static namespace(e,n=null){return super._namespace("traps",...arguments)}addRegistration(e){return super.addRegistration(new $(this,e))}emit(e,n=null){let r=this;return function o(c,...u){let f=r.entries[c];return f?f.exec(e,(...i)=>o(c+1,...i),...u):n?n(e,...u):u[0]}(0)}};var ue={};_e(ue,{accessorize:()=>We,proxy:()=>Ae,unaccessorize:()=>He,unproxy:()=>X});function We(t,e,n={}){t=J(t);let r=h(t,"accessorizedProps");function o(i){let s,l=t;do s=Object.getOwnPropertyDescriptor(l,i);while(!s&&(l=Object.getPrototypeOf(l)));return s?{proto:l,descriptor:s}:{descriptor:{value:void 0,configurable:!0,enumerable:!0,writable:!0}}}function c(i){if(r.has(i+""))return!0;let s=o(i);s.getValue=function(m=!1){return m?this.descriptor:this.descriptor.get?this.descriptor.get():this.descriptor.value},s.setValue=function(m,y=!1){if(this.dirty=!0,y){this.descriptor=m;return}return this.descriptor.set?this.descriptor.set(m)!==!1:(this.descriptor.value=m,!0)},s.intact=function(){let m=Object.getOwnPropertyDescriptor(t,i);return m?.get===a.get&&m?.set===a.set&&r.get(i+"")===this},s.restore=function(){return this.intact()?(this.proto&&this.proto!==t||!this.proto&&!this.dirty?delete t[i]:Object.defineProperty(t,i,this.descriptor),r.delete(i+""),!0):!1},r.set(i+"",s);let{enumerable:l=!0}=s.descriptor,a={enumerable:l,configurable:!0};("value"in s.descriptor||s.descriptor.set)&&(a.set=function(m){return B(this,i,m,n)}),("value"in s.descriptor||s.descriptor.get)&&(a.get=function(){return R(this,i,n)});try{return Object.defineProperty(t,i,a),!0}catch{return r.delete(i+""),!1}}let f=(Array.isArray(e)?e:e===void 0?Object.keys(t):[e]).map(c);return e===void 0||Array.isArray(e)?f:f[0]}function He(t,e,n={}){t=J(t);let r=h(t,"accessorizedProps");function o(f){return r.has(f+"")?r.get(f+"").restore():!0}let u=(Array.isArray(e)?e:e===void 0?Object.keys(t):[e]).map(o);return e===void 0||Array.isArray(e)?u:u[0]}function Ae(t,e={},n=void 0){let r=J(t);if(typeof e.membrane=="boolean")throw new Error("The params.membrane parameter cannot be of type boolean.");if(e.membrane&&h(r,"membraneRef").has(e.membrane))return h(r,"membraneRef").get(e.membrane);let o={apply(f,i,s){if(Array.isArray(i)){let l=J(i);return h(l).set("$length",l.length),me(l,()=>Q(f,i,s))}return Q(f,i,s)},construct:(f,i,s=null)=>he(f,i,s,e),defineProperty:(f,i,s)=>pe(f,i,s,e),deleteProperty:(f,i)=>ee(f,i,e),get:(f,i,s=null)=>{let l={...e,receiver:s};Array.isArray(f)&&i==="length"&&h(f).has("$length")&&(l.forceValue=h(f).get("$length"));let a=R(f,i,l);return Array.isArray(f)&&typeof a=="function"?Ae(a,{...e,membrane:s}):a},getOwnPropertyDescriptor:(f,i)=>ce(f,i,e),getPrototypeOf:f=>le(f,e),has:(f,i)=>Z(f,i,e),isExtensible:f=>ae(f,e),ownKeys:f=>Y(f,e),preventExtensions:f=>ye(f,e),set:(f,i,s,l=null)=>{let a={...e,receiver:l};return Array.isArray(f)&&i==="length"&&(a.forceOldValue=h(f).get("$length"),h(f).set("$length",s)),B(f,i,s,a)},setPrototypeOf:(f,i)=>de(f,i,e)},c=n?.(o)||o,u=new Proxy(r,c);return e.membrane&&h(r,"membraneRef").set(e.membrane,u),h(u).set(u,r),u}function X(t){return h(t).get(t)||t}function J(t){if(!t||!_(t))throw new Error("Target must be of type object!");return X(t)}var k=class extends Array{};function Ke(...t){return new k(...t)}function ge(t,e,n,r=c=>c,o={}){if(e.length)return function c(u,f,i){let s=f[i.level],l=i.level===f.length-1;return u instanceof b&&u.type!=="get"?i={...i,probe:"always"}:i.probe!=="always"&&(i={...i,probe:!l}),n(u,s,(a,...m)=>{let y=p=>{p instanceof b&&(p.path=[p.key],u instanceof b&&(p.path=u.path.concat(p.key),Object.defineProperty(p,"context",{get:()=>u,configurable:!0})))},O=p=>{let w=D(p,!1);return L(w,d=>{p instanceof b?p.value=d:p=d;let g=m[0]||{};return c(p,f,{...i,...g,level:i.level+1})})};return te(s)&&Array.isArray(a)?(a.forEach(y),l?r(a,...m):a.map(O)):(y(a),l?r(a,...m):O(a))},i)}(t,e.slice(0),{...o,level:0})}function Te(t,e,n,r={}){if(t=D(t,!r.level),j(arguments[1])&&([,n,r={}]=arguments,e=1/0),!j(n))throw new Error(`Handler must be a function; "${N(n)}" given!`);if(e instanceof k)return ge(t,e,Te,n,r);if(r={...r,descripted:!0},delete r.live,!_(t))return r.probe&&R(t,e,n,r);let o=Ee(t,e,n,r);return r.probe?R(t,e,o,r):o()}function Ge(t,e,n={}){return t=D(t),x(e)||([,,,n={}]=arguments,e={[arguments[1]]:arguments[2]}),I.getInstance(t,!0,n.namespace).addRegistration({traps:e,params:n})}function ce(t,e,n=o=>o,r={}){return T(t,"getOwnPropertyDescriptor",{key:e},n,r)}function Je(t,e,n=o=>o,r={}){return T(t,"getOwnPropertyDescriptors",{key:e},n,r)}function le(t,e=r=>r,n={}){return T(t,"getPrototypeOf",{},e,n)}function ae(t,e=r=>r,n={}){return T(t,"isExtensible",{},e,n)}function Y(t,e=r=>r,n={}){return T(t,"ownKeys",{},e,n)}function Z(t,e,n=o=>o,r={}){return T(t,"has",{key:e},n,r)}function R(t,e,n=o=>o,r={}){let o,c=D(t,!r.level);return x(n)?[r,n]=[n,u=>u]:r.live&&(o=!0),e instanceof k?ge(c,e,R,n,r):Ye(c,e,u=>{let f=[...u];return function i(s,l,a){if(!l.length)return a(s);let m=l.shift();if(!["string","number","symbol"].includes(typeof m))throw new Error(`Property name/key ${m} invalid.`);function y(w,d=void 0){let g=P=>(w.value=P,i([...s,r.live||r.descripted?w:P],l,a));if(arguments.length>1)return g(d);let v=h(c,"accessorizedProps",!1),E=v&&v.get(w.key+"");if(E&&E.intact())return g(E.getValue(r.propertyDescriptor));if(r.propertyDescriptor){let P=Object.getOwnPropertyDescriptor(c,w.key);return"forceValue"in r&&"value"in P&&(P.value=r.forceValue),g(P)}return"forceValue"in r?g(r.forceValue):g(Reflect.get(c,w.key,...r.receiver?[r.receiver]:[]))}let O=new b(c,{type:"get",key:m,value:void 0,related:f});if(!_(c))return i([...s,r.live||r.descripted?O:void 0],l,a);let p=I.getInstance(c,!1,r.namespace);return p?p.emit(O,y):y(O)}([],u.slice(0),i=>{let s=te(e)?i:i[0];return o&&_(c)?Ee(c,e,n,r)(s):n(s)})},r)}function me(t,e,n={}){return t=D(t),C.getInstance(t,!0,n.namespace).batch(e)}function B(t,e,n,r=u=>u,o={},c=!1){let u=D(t),f=[[e,n]];x(e)&&([,,r=s=>s,o={},c=!1]=arguments,f=Object.entries(e)),x(r)&&([c,o,r]=[typeof o=="boolean"?o:!1,r,s=>s]);let i=f.map(([s])=>s);return function s(l,a,m){if(!a.length)return m(l);let[y,O]=a.shift();function p(d,g=void 0){let v=Ie=>(d.status=Ie,s(l.concat(d),a,m));if(arguments.length>1)return v(d,g);let E=h(u,"accessorizedProps",!1),P=E&&E.get(d.key+"");return d.type==="defineProperty"?(P&&!P.restore()&&v(!1),Object.defineProperty(u,d.key,d.value),v(!0)):P&&P.intact()?v(P.setValue(d.value)):v(Reflect.set(u,d.key,d.value))}function w(d,g){if(o.diff&&O===g)return s(l,a,m);let v=new b(u,{type:c?"defineProperty":"set",key:y,value:O,isUpdate:d,oldValue:g,related:[...i],detail:o.detail}),E=I.getInstance(u,!1,o.namespace);return E?E.emit(v,p):p(v)}return Z(u,y,d=>{if(!d)return w(d);let g={...o,propertyDescriptor:c};return"forceOldValue"in o&&(g.forceValue=o.forceOldValue),R(u,y,v=>w(d,v),g)},o)}([],f.slice(0),s=>{let l=C.getInstance(u,!1,o.namespace);return l&&l.emit(s,c),r(te(e)?s.map(a=>a.status):s[0]?.status)})}function pe(t,e,n,r=c=>c,o={}){return B(t,e,n,r,o,!0)}function Qe(t,e,n=o=>o,r={}){return B(t,e,n,r,!0)}function ee(t,e,n=o=>o,r={}){t=D(t),x(n)&&([r,n]=[n,u=>u]);let o=q(e,!1),c=[...o];return function u(f,i,s){if(!i.length)return s(f);let l=i.shift();function a(y,O=void 0){let p=g=>(y.status=g,u(f.concat(y),i,s));if(arguments.length>1)return p(y,O);let w=h(t,"accessorizedProps",!1),d=w&&w.get(y.key+"");return d&&!d.restore()&&p(!1),p(Reflect.deleteProperty(t,y.key))}function m(y){let O=new b(t,{type:"deleteProperty",key:l,oldValue:y,related:[...c],detail:r.detail}),p=I.getInstance(t,!1,r.namespace);return p?p.emit(O,a):a(O)}return R(t,l,m,r)}([],o.slice(0),u=>{let f=C.getInstance(t,!1,r.namespace);return f&&f.emit(u),n(te(e)?u.map(i=>i.status):u[0].status)})}function Xe(t,e,n=o=>o,r={}){return ee(...arguments)}function he(t,e,n=null,r=c=>c,o={}){return T(t,"construct",arguments.length>2?{argumentsList:e,newTarget:n}:{argumentsList:e},r,o)}function Q(t,e,n,r=c=>c,o={}){return T(t,"apply",{thisArgument:e,argumentsList:n},r,o)}function de(t,e,n=o=>o,r={}){return T(t,"setPrototypeOf",{proto:e},n,r)}function ye(t,e=r=>r,n={}){return T(t,"preventExtensions",{},e,n)}function Ee(t,e,n,r={}){let o;r.signal||(o=new AbortController,r={...r,signal:o.signal},G.setMaxListeners?.(0,o.signal));let c=C.getInstance(t,!0,r.namespace);return function u(f,i=null){i?.remove();let l={signal:c.addRegistration(e,u,r).signal};if(arguments.length){let a=n(f,l);if(arguments.length>1)return a}return o}}function T(t,e,n={},r=c=>c,o={}){t=D(t),x(r)&&([o,r]=[r,i=>i]);function c(i,s){return arguments.length>1?r(s):r(Reflect[e](t,...Object.values(n)))}let u=new b(t,{type:e,...n}),f=I.getInstance(t,!1,o.namespace);return f?f.emit(u,c):c(u)}function te(t){return t===1/0||Array.isArray(t)}function D(t,e=!0){if((!t||!_(t))&&e)throw new Error(`Object must be of type object or array! "${N(t)}" given.`);return t instanceof b&&(t=t.value),t&&X(t)}function Ye(t,e,n,r={}){return e===1/0?r.level&&!_(t)?n([]):Y(t,n,r):n(q(e,!1))}var Ze={...xe,...ue},je=Ze;self.webqit||(self.webqit={});self.webqit.Observer=je;})();
|
|
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/
|
|
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 ListenerRegistry from './core/ListenerRegistry.js';\nimport TrapsRegistry from './core/TrapsRegistry.js';\nimport Descriptor from './core/Descriptor.js';\nimport { unproxy } from './actors.js';\nimport { _, _await } from './util.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.type !== '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*/, /*type*/, /*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 target = 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( target, prop, get, receiver, params );\n // ---------------\n return resolveProps( target, 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 const accessorizedProps = _( target, 'accessorizedProps', false );\n const accessorization = accessorizedProps && accessorizedProps.get( descriptor.key + '' );\n if ( accessorization && accessorization.intact() ) {\n return _next( accessorization.getValue() );\n }\n return _next( Reflect.get( target, descriptor.key, ...( params.receiver ? [ params.receiver ] : [] ) ) );\n }\n // ---------\n const descriptor = new Descriptor( target, {\n type: 'get',\n key: prop,\n value: undefined,\n related,\n } );\n if ( !_isTypeObject( target ) ) return next( [ ...results, params.live || params.descripted ? descriptor : undefined ], _props, _done );\n const listenerRegistry = TrapsRegistry.getInstance( target, false, params.namespace );\n if ( listenerRegistry ) {\n return listenerRegistry.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( target ) ) {\n const emit = bind( target, 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 );\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 target = 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 : false, 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 = _( target, 'accessorizedProps', false );\n const accessorization = accessorizedProps && accessorizedProps.get( descriptor.key + '' );\n if ( descriptor.type === 'defineProperty' ) {\n if ( accessorization && !accessorization.restore() ) _next( false );\n Object.defineProperty( target, 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( target, 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( target, {\n type: def ? 'defineProperty' : 'set',\n key: prop,\n value,\n isUpdate,\n oldValue,\n related: [ ...related ],\n detail: params.detail,\n } );\n const listenerRegistry = TrapsRegistry.getInstance( target, false, params.namespace );\n return listenerRegistry \n ? listenerRegistry.emit( descriptor, defaultSet ) \n : defaultSet( descriptor );\n }\n // ---------\n return has( target, prop, exists => {\n if ( !exists ) return exec( exists );\n return get( target, prop, oldValue => exec( exists, oldValue ), params );\n }, params );\n // ---------\n } )( [], entries.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 * 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: 'deleteProperty',\n key: prop,\n oldValue,\n related: [ ...related ],\n detail: params.detail,\n } );\n const listenerRegistry = TrapsRegistry.getInstance( target, false, params.namespace );\n return listenerRegistry \n ? listenerRegistry.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 return exec( target, 'apply', { thisArgument, argumentsList }, receiver, params );\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 let controller;\n if ( !params.signal ) {\n controller = new AbortController;\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 type\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, type, 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[ type ]( target, ...Object.values( payload ) ) );\n }\n // ---------\n const descriptor = new Descriptor( target, { type, ...payload } );\n const listenerRegistry = TrapsRegistry.getInstance( target, false, params.namespace );\n if ( listenerRegistry ) {\n return listenerRegistry.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 * @imports\r\n */\r\nimport _isTypeFunction from './isTypeFunction.js';\r\n\r\n/**\r\n * Tells if val is of type \"class\".\r\n *\r\n * @param object \t\tval\r\n *\r\n * @return bool\r\n */\r\nexport default function(val) {\r\n\treturn _isTypeFunction(val) && /^class\\s?/.test(Function.prototype.toString.call(val));\r\n};\r\n", "\r\n/**\r\n * Tells if val is undefined or is null.\r\n *\r\n * @param string \tval\r\n *\r\n * @return bool\r\n */\r\nexport default function(val) {\r\n\treturn val === null || val === '';\r\n};\r\n", "\r\n/**\r\n * Tells if val is undefined or is of type \"undefined\".\r\n *\r\n * @param string \tval\r\n *\r\n * @return bool\r\n */\r\nexport default function(val) {\r\n\treturn arguments.length && (val === undefined || typeof val === 'undefined');\r\n};\r\n", "\r\n/**\r\n * @imports\r\n */\r\nimport _isTypeFunction from './isTypeFunction.js';\r\n\r\n/**\r\n * Tells if val is of type \"object\".\r\n * This holds true for anything object, including built-ins.\r\n *\r\n * @param object\t \tval\r\n *\r\n * @return bool\r\n */\r\nexport default function(val) {\r\n\treturn Array.isArray(val) || (typeof val === 'object' && val) || _isTypeFunction(val);\r\n};\r\n", "\r\n/**\r\n * @imports\r\n */\r\nimport _isNull from './isNull.js';\r\nimport _isUndefined from './isUndefined.js';\r\nimport _isTypeObject from './isTypeObject.js';\r\n\r\n/**\r\n * Tells if val is empty in its own type.\r\n * This holds true for NULLs, UNDEFINED, FALSE, 0,\r\n * objects without keys, empty arrays.\r\n *\r\n * @param string \tval\r\n *\r\n * @return bool\r\n */\r\nexport default function(val) {\r\n\treturn _isNull(val) || _isUndefined(val) || val === false || val === 0 \r\n\t\t|| (_isTypeObject(val) && !Object.keys(val).length);\r\n};\r\n", "\r\n/**\r\n * @imports\r\n */\r\nimport _isTypeFunction from './isTypeFunction.js';\r\n\r\n/**\r\n * Tells if val is of type \"function\".\r\n *\r\n * @param object \t\tval\r\n *\r\n * @return bool\r\n */\r\nexport default function(val) {\r\n\treturn _isTypeFunction(val) || (val && {}.toString.call(val) === '[object function]');\r\n};\r\n", "\r\n/**\r\n * Tells if val is of type \"string\".\r\n *\r\n * @param string \tval\r\n *\r\n * @return bool\r\n */\r\nexport default function(val) {\r\n\treturn val instanceof String || (typeof val === 'string' && val !== null);\r\n};\r\n", "\r\n/**\r\n * @imports\r\n */\r\nimport _isString from './isString.js';\r\nimport _isUndefined from './isUndefined.js';\r\n\r\n/**\r\n * Tells if val is \"array-like\".\r\n * This holds true for anything that has a length property.\r\n *\r\n * @param object\t \tval\r\n *\r\n * @return bool\r\n */\r\nexport default function(val) {\r\n\treturn !_isString(val) && !_isUndefined(val.length);\r\n};\r\n", "\r\n/**\r\n * @imports\r\n */\r\nimport _isArray from '../js/isArray.js';\r\nimport _isTypeArray from '../js/isTypeArray.js';\r\nimport _isEmpty from '../js/isEmpty.js';\r\nimport _isObject from '../js/isObject.js';\r\n\r\n/**\r\n * Casts an array-like object to an array.\r\n *\r\n * @param mixed \tval\r\n * @param bool\t \tcastObject\r\n *\r\n * @return array\r\n */\r\nexport default function(val, castObject = true) {\r\n\tif (_isArray(val)) {\r\n\t\treturn val;\r\n\t};\r\n\tif (!castObject && _isObject(val)) {\r\n\t\treturn [val];\r\n\t};\r\n\tif (val !== false && val !== 0 && _isEmpty(val)) {\r\n\t\treturn [];\r\n\t};\r\n\tif (_isTypeArray(val)) {\r\n\t\treturn Array.prototype.slice.call(val);\r\n\t};\r\n\tif (_isObject(val)) {\r\n\t\treturn Object.values(val);\r\n\t};\r\n\treturn [val];\r\n};\r\n", "\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 { _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", "\n/**\n * @imports\n */\nimport { _from as _arrFrom } from '@webqit/util/arr/index.js';\nimport Registration from './Registration.js';\nimport { _await } 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}\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 ) {\n\t\t\tif ( this.emit.recursionTarget && this.params.recursions !== 'force-sync' ) {\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\tconst $ret = this.filter === Infinity || Array.isArray( this.filter )\n\t\t\t\t? this.emit( matches, this )\n\t\t\t\t: this.emit( matches[ 0 ], this );\n\t\t\t// NOTEL: on calling emit(), this registration has expired and a new one active!!!\n\t\t\treturn _await( $ret, ret => {\n\t\t\t\tconst recursions = this.emit.recursionTarget;\n\t\t\t\tdelete this.emit.recursionTarget;\n\t\t\t\tif ( this.params.recursions === 'force-async' ) {\n\t\t\t\t\tif ( recursions.length ) return this.emit.currentRegistration.fire( recursions );\n\t\t\t\t}\n\t\t\t\treturn ret;\n\t\t\t} );\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 * @imports\n */\nimport ListenerRegistration from './ListenerRegistration.js';\nimport Registry from './Registry.js';\nimport { _await } from '../util.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 ) {\n\t\tif ( this.batches.length ) {\n\t\t\tthis.batches[ 0 ].events.push( ...events );\n\t\t\treturn\n\t\t}\n\t\tthis.entries.forEach( listener => listener.fire( events ) );\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 ) {\n\t\tthis.batches.unshift( { entries: [ ...this.entries ], events: [] } );\n\t\tconst returnValue = callback();\n\t\treturn _await( returnValue, returnValue => {\n\t\t\tconst batch = this.batches.shift();\n\t\t\tif ( batch.events.length ) {\n\t\t\t\tbatch.entries.forEach( listener => listener.fire( batch.events ) );\n\t\t\t}\n\t\t\treturn returnValue;\n\t\t} )\n\t}\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.type ] ) {\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.type ]( 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 * ---------------------------\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.type ) ) throw new Error( 'Descriptor type must be given in definition!' );\n\t\tObject.assign( this, dfn );\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() {\n return this.descriptor.get ? this.descriptor.get() : this.descriptor.value;\n };\n currentDescriptorRecord.setValue = function( value ) {\n this.dirty = true;\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( 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 *\n * @return Proxy\n */\nexport function proxy( target, params = {} ) {\n target = resolveTarget( target );\n const proxy = new Proxy( target, {\n apply: ( target, thisArgument, argumentsList ) => apply( target, thisArgument, argumentsList, 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 val = get( target, propertyKey, { ...params, receiver } );\n if ( params.proxyAutoBinding !== false && _isFunction( val ) && !_isClass( val )) {\n return function( ...args ) {\n const _this = this || proxy;\n return batch( _this, () => val.call( _this, ...args ) );\n }\n }\n return val;\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 _( proxy ).set( proxy, target );\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", "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", "
|
|
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, other as otherUtil } 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.type !== '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*/, /*type*/, /*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 const accessorizedProps = _( originalTarget, 'accessorizedProps', false );\n const accessorization = accessorizedProps && accessorizedProps.get( descriptor.key + '' );\n if ( accessorization && accessorization.intact() ) {\n return _next( accessorization.getValue( params.propertyDescriptor ) );\n }\n if ( params.propertyDescriptor ) {\n const desc = Object.getOwnPropertyDescriptor( originalTarget, descriptor.key );\n if ( 'forceValue' in params && 'value' in desc ) { desc.value = params.forceValue; }\n return _next( desc );\n }\n if ( 'forceValue' in params ) { return _next( params.forceValue ); }\n return _next( Reflect.get( originalTarget, descriptor.key, ...( params.receiver ? [ params.receiver ] : [] ) ) );\n }\n // ---------\n const descriptor = new Descriptor( originalTarget, {\n type: 'get',\n key: prop,\n value: undefined,\n related,\n } );\n if ( !_isTypeObject( originalTarget ) ) return next( [ ...results, params.live || params.descripted ? descriptor : undefined ], _props, _done );\n const listenerRegistry = TrapsRegistry.getInstance( originalTarget, false, params.namespace );\n if ( listenerRegistry ) {\n return listenerRegistry.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 );\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 : false, 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.type === '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 ? 'defineProperty' : 'set',\n key: prop,\n value,\n isUpdate,\n oldValue,\n related: [ ...related ],\n detail: params.detail,\n } );\n const listenerRegistry = TrapsRegistry.getInstance( originalTarget, false, params.namespace );\n return listenerRegistry \n ? listenerRegistry.emit( descriptor, defaultSet ) \n : defaultSet( descriptor );\n }\n // ---------\n return has( originalTarget, prop, exists => {\n if ( !exists ) return exec( exists );\n const $params = { ...params, propertyDescriptor: def };\n if ( 'forceOldValue' in params ) { $params.forceValue = params.forceOldValue; }\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, 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: 'deleteProperty',\n key: prop,\n oldValue,\n related: [ ...related ],\n detail: params.detail,\n } );\n const listenerRegistry = TrapsRegistry.getInstance( target, false, params.namespace );\n return listenerRegistry \n ? listenerRegistry.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 return exec( target, 'apply', { thisArgument, argumentsList }, receiver, params );\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 let controller;\n if ( !params.signal ) {\n controller = new AbortController;\n params = { ...params, signal: controller.signal };\n otherUtil.setMaxListeners?.( 0, 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 type\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, type, 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[ type ]( target, ...Object.values( payload ) ) );\n }\n // ---------\n const descriptor = new Descriptor( target, { type, ...payload } );\n const listenerRegistry = TrapsRegistry.getInstance( target, false, params.namespace );\n if ( listenerRegistry ) {\n return listenerRegistry.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 other = {};\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, other as otherUtil } 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\totherUtil.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 ) {\n\t\t\tif ( this.emit.recursionTarget && this.params.recursions !== 'force-sync' ) {\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\tconst $ret = this.filter === Infinity || Array.isArray( this.filter )\n\t\t\t\t? this.emit( matches, this )\n\t\t\t\t: this.emit( matches[ 0 ], this );\n\t\t\t// NOTEL: on calling emit(), this registration has expired and a new one active!!!\n\t\t\treturn _await( $ret, ret => {\n\t\t\t\tconst recursions = this.emit.recursionTarget;\n\t\t\t\tdelete this.emit.recursionTarget;\n\t\t\t\tif ( this.params.recursions === 'force-async' ) {\n\t\t\t\t\tif ( recursions.length ) return this.emit.currentRegistration.fire( recursions );\n\t\t\t\t}\n\t\t\t\treturn ret;\n\t\t\t} );\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.type ) ) throw new Error( 'Descriptor type 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, isPropertyDescriptors = false ) {\n\t\tif ( this.batches.length ) {\n\t\t\tthis.batches[ 0 ].events.push( ...events );\n\t\t\treturn\n\t\t}\n\t\tlet eventsWithValues;\n\t\tthis.entries.forEach( listener => {\n\t\t\tif ( isPropertyDescriptors && !listener.params.propertyDescriptors ) {\n\t\t\t\teventsWithValues = eventsWithValues || events.map( e => {\n\t\t\t\t\tlet { target, value, oldValue, type, ...details } = e;\n\t\t\t\t\tvalue = value.get ? value.get() : value.value;\n\t\t\t\t\toldValue = oldValue?.get ? oldValue.get() : oldValue?.value;\n\t\t\t\t\treturn new Descriptor( target, { type: 'set', value, oldValue, ...details } );\n\t\t\t\t} );\n\t\t\t\tlistener.fire( eventsWithValues );\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tlistener.fire( events );\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 ) {\n\t\tthis.batches.unshift( { entries: [ ...this.entries ], events: [] } );\n\t\tconst returnValue = callback();\n\t\treturn _await( returnValue, returnValue => {\n\t\t\tconst batch = this.batches.shift();\n\t\t\tif ( batch.events.length ) {\n\t\t\t\tbatch.entries.forEach( listener => listener.fire( batch.events ) );\n\t\t\t}\n\t\t\treturn returnValue;\n\t\t} )\n\t}\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.type ] ) {\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.type ]( 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( propertyDescriptor = false ) {\n if ( propertyDescriptor ) return this.descriptor;\n return this.descriptor.get ? this.descriptor.get() : this.descriptor.value;\n };\n currentDescriptorRecord.setValue = function( value, propertyDescriptor = false ) {\n this.dirty = true;\n if ( propertyDescriptor ) { 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( 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 ) {\n if ( Array.isArray( thisArgument ) ) {\n // Manually manage the length property\n const originalThis = resolveTarget( thisArgument );\n _( originalThis ).set( '$length', originalThis.length );\n // And array methods have their operations batched\n return batch( originalThis, () => apply( target, thisArgument, argumentsList ) );\n }\n return apply( target, thisArgument, argumentsList );\n },\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 if ( Array.isArray( target ) && propertyKey === 'length' && _( target ).has( '$length' ) ) {\n $params.forceValue = _( target ).get( '$length' );\n }\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, 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 ) => {\n const $params = { ...params, receiver };\n if ( Array.isArray( target ) && propertyKey === 'length' ) {\n $params.forceOldValue = _( target ).get( '$length' );\n _( target ).set( '$length', value );\n }\n return set( target, propertyKey, value, $params );\n },\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", "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", "other", "Registration", "registry", "dfn", "ListenerRegistration", "Registration", "other", "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", "isPropertyDescriptors", "eventsWithValues", "listener", "e", "value", "oldValue", "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", "propertyDescriptor", "value", "currentDescriptor", "accessorization", "enumerable", "set", "get", "statuses", "unaccessorize", "unaccessorizeProp", "proxy", "extendCallback", "originalTarget", "traps", "thisArgument", "argumentsList", "originalThis", "batch", "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", "listenerRegistry", "result_s", "batch", "callback", "ListenerRegistry", "set", "def", "entries", "descriptors", "defaultSet", "status", "isUpdate", "oldValue", "exists", "opr", "defineProperty", "defineProperties", "deleteProperty", "from_default", "defaultDel", "deleteProperties", "construct", "argumentsList", "newTarget", "apply", "thisArgument", "setPrototypeOf", "proto", "preventExtensions", "controller", "other", "descriptor_s", "prevRegistration", "handlerReturnValue", "type", "payload", "defaultExec", "obj", "assert", "unproxy", "Observer", "main_exports", "actors_exports", "src_default", "src_default"]
|
|
7
7
|
}
|
package/package.json
CHANGED
package/src/actors.js
CHANGED
|
@@ -38,11 +38,13 @@ export function accessorize( target, props, params = {} ) {
|
|
|
38
38
|
// ------------------
|
|
39
39
|
// Current Descriptor Record
|
|
40
40
|
const currentDescriptorRecord = getDescriptorDeep( prop );
|
|
41
|
-
currentDescriptorRecord.getValue = function() {
|
|
41
|
+
currentDescriptorRecord.getValue = function( propertyDescriptor = false ) {
|
|
42
|
+
if ( propertyDescriptor ) return this.descriptor;
|
|
42
43
|
return this.descriptor.get ? this.descriptor.get() : this.descriptor.value;
|
|
43
44
|
};
|
|
44
|
-
currentDescriptorRecord.setValue = function( value ) {
|
|
45
|
+
currentDescriptorRecord.setValue = function( value, propertyDescriptor = false ) {
|
|
45
46
|
this.dirty = true;
|
|
47
|
+
if ( propertyDescriptor ) { this.descriptor = value; return; }
|
|
46
48
|
return this.descriptor.set ? this.descriptor.set( value ) !== false : ( this.descriptor.value = value, true );
|
|
47
49
|
};
|
|
48
50
|
currentDescriptorRecord.intact = function() {
|
|
@@ -120,25 +122,41 @@ export function unaccessorize( target, props, params = {} ) {
|
|
|
120
122
|
*
|
|
121
123
|
* @param Array|Object target
|
|
122
124
|
* @param Object params
|
|
125
|
+
* @param Function extendCallback
|
|
123
126
|
*
|
|
124
127
|
* @return Proxy
|
|
125
128
|
*/
|
|
126
|
-
export function proxy( target, params = {} ) {
|
|
127
|
-
|
|
128
|
-
const
|
|
129
|
-
|
|
129
|
+
export function proxy( target, params = {}, extendCallback = undefined ) {
|
|
130
|
+
// Resolve target
|
|
131
|
+
const originalTarget = resolveTarget( target );
|
|
132
|
+
// Return same proxy instance?
|
|
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 ); }
|
|
135
|
+
const traps = {
|
|
136
|
+
apply( target, thisArgument, argumentsList ) {
|
|
137
|
+
if ( Array.isArray( thisArgument ) ) {
|
|
138
|
+
// Manually manage the length property
|
|
139
|
+
const originalThis = resolveTarget( thisArgument );
|
|
140
|
+
_( originalThis ).set( '$length', originalThis.length );
|
|
141
|
+
// And array methods have their operations batched
|
|
142
|
+
return batch( originalThis, () => apply( target, thisArgument, argumentsList ) );
|
|
143
|
+
}
|
|
144
|
+
return apply( target, thisArgument, argumentsList );
|
|
145
|
+
},
|
|
130
146
|
construct: ( target, argumentsList, newTarget = null ) => construct( target, argumentsList, newTarget, params ),
|
|
131
147
|
defineProperty: ( target, propertyKey, attributes ) => defineProperty( target, propertyKey, attributes, params ),
|
|
132
148
|
deleteProperty: ( target, propertyKey ) => deleteProperty( target, propertyKey, params ),
|
|
133
149
|
get: ( target, propertyKey, receiver = null ) => {
|
|
134
|
-
const
|
|
135
|
-
if (
|
|
136
|
-
|
|
137
|
-
const _this = this || proxy;
|
|
138
|
-
return batch( _this, () => val.call( _this, ...args ) );
|
|
139
|
-
}
|
|
150
|
+
const $params = { ...params, receiver };
|
|
151
|
+
if ( Array.isArray( target ) && propertyKey === 'length' && _( target ).has( '$length' ) ) {
|
|
152
|
+
$params.forceValue = _( target ).get( '$length' );
|
|
140
153
|
}
|
|
141
|
-
|
|
154
|
+
const returnValue = get( target, propertyKey, $params );
|
|
155
|
+
if ( Array.isArray( target ) && typeof returnValue === 'function' ) {
|
|
156
|
+
// Return a proxy, but in terms of a membrane.
|
|
157
|
+
return proxy( returnValue, { ...params, membrane: receiver/* the instance obj that will be the thisArgument at apply(). Much like function.bind() */ } );
|
|
158
|
+
}
|
|
159
|
+
return returnValue;
|
|
142
160
|
},
|
|
143
161
|
getOwnPropertyDescriptor: ( target, propertyKey ) => getOwnPropertyDescriptor( target, propertyKey, params ),
|
|
144
162
|
getPrototypeOf: target => getPrototypeOf( target, params ),
|
|
@@ -146,11 +164,23 @@ export function proxy( target, params = {} ) {
|
|
|
146
164
|
isExtensible: target => isExtensible( target, params ),
|
|
147
165
|
ownKeys: target => ownKeys( target, params ),
|
|
148
166
|
preventExtensions: target => preventExtensions( target, params ),
|
|
149
|
-
set: ( target, propertyKey, value, receiver = null ) =>
|
|
167
|
+
set: ( target, propertyKey, value, receiver = null ) => {
|
|
168
|
+
const $params = { ...params, receiver };
|
|
169
|
+
if ( Array.isArray( target ) && propertyKey === 'length' ) {
|
|
170
|
+
$params.forceOldValue = _( target ).get( '$length' );
|
|
171
|
+
_( target ).set( '$length', value );
|
|
172
|
+
}
|
|
173
|
+
return set( target, propertyKey, value, $params );
|
|
174
|
+
},
|
|
150
175
|
setPrototypeOf: ( target, prototype ) => setPrototypeOf( target, prototype, params ),
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
|
|
176
|
+
};
|
|
177
|
+
// Extend...
|
|
178
|
+
const $traps = extendCallback?.( traps ) || traps;
|
|
179
|
+
// Create proxy
|
|
180
|
+
const $proxy = new Proxy( originalTarget, $traps );
|
|
181
|
+
if ( params.membrane ) { _( originalTarget, 'membraneRef' ).set( params.membrane, $proxy ); }
|
|
182
|
+
_( $proxy ).set( $proxy, originalTarget );
|
|
183
|
+
return $proxy;
|
|
154
184
|
}
|
|
155
185
|
|
|
156
186
|
/**
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import { _from as _arrFrom } from '@webqit/util/arr/index.js';
|
|
6
6
|
import Registration from './Registration.js';
|
|
7
|
-
import { _await } from '../util.js';
|
|
7
|
+
import { _await, other as otherUtil } from '../util.js';
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
10
|
* ---------------------------
|
|
@@ -22,6 +22,7 @@ export default class ListenerRegistration extends Registration {
|
|
|
22
22
|
this.emit.currentRegistration = this;
|
|
23
23
|
Object.defineProperty( this, 'abortController', { value: new AbortController } );
|
|
24
24
|
Object.defineProperty( this, 'signal', { value: this.abortController.signal } );
|
|
25
|
+
otherUtil.setMaxListeners?.( 0, this.signal );
|
|
25
26
|
}
|
|
26
27
|
|
|
27
28
|
/**
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
import ListenerRegistration from './ListenerRegistration.js';
|
|
6
6
|
import Registry from './Registry.js';
|
|
7
7
|
import { _await } from '../util.js';
|
|
8
|
+
import Descriptor from './Descriptor.js';
|
|
8
9
|
|
|
9
10
|
/**
|
|
10
11
|
* ---------------------------
|
|
@@ -44,12 +45,25 @@ export default class ListenerRegistry extends Registry {
|
|
|
44
45
|
*
|
|
45
46
|
* @return Void
|
|
46
47
|
*/
|
|
47
|
-
emit( events ) {
|
|
48
|
+
emit( events, isPropertyDescriptors = false ) {
|
|
48
49
|
if ( this.batches.length ) {
|
|
49
50
|
this.batches[ 0 ].events.push( ...events );
|
|
50
51
|
return
|
|
51
52
|
}
|
|
52
|
-
|
|
53
|
+
let eventsWithValues;
|
|
54
|
+
this.entries.forEach( listener => {
|
|
55
|
+
if ( isPropertyDescriptors && !listener.params.propertyDescriptors ) {
|
|
56
|
+
eventsWithValues = eventsWithValues || events.map( e => {
|
|
57
|
+
let { target, value, oldValue, type, ...details } = e;
|
|
58
|
+
value = value.get ? value.get() : value.value;
|
|
59
|
+
oldValue = oldValue?.get ? oldValue.get() : oldValue?.value;
|
|
60
|
+
return new Descriptor( target, { type: 'set', value, oldValue, ...details } );
|
|
61
|
+
} );
|
|
62
|
+
listener.fire( eventsWithValues );
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
listener.fire( events );
|
|
66
|
+
} );
|
|
53
67
|
}
|
|
54
68
|
|
|
55
69
|
/**
|
package/src/main.js
CHANGED
|
@@ -4,11 +4,11 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import { _isObject, _isTypeObject, _isFunction, _getType } from '@webqit/util/js/index.js';
|
|
6
6
|
import { _from as _arrFrom } from '@webqit/util/arr/index.js';
|
|
7
|
+
import { _, _await, other as otherUtil } from './util.js';
|
|
7
8
|
import ListenerRegistry from './core/ListenerRegistry.js';
|
|
8
9
|
import TrapsRegistry from './core/TrapsRegistry.js';
|
|
9
10
|
import Descriptor from './core/Descriptor.js';
|
|
10
11
|
import { unproxy } from './actors.js';
|
|
11
|
-
import { _, _await } from './util.js';
|
|
12
12
|
|
|
13
13
|
/* ---------------SPECIAL APIs--------------- */
|
|
14
14
|
|
|
@@ -235,12 +235,12 @@ export function has( target, prop, receiver = x => x, params = {} ) {
|
|
|
235
235
|
export function get( target, prop, receiver = x => x, params = {} ) {
|
|
236
236
|
// ---------------
|
|
237
237
|
let isLive;
|
|
238
|
-
|
|
238
|
+
const originalTarget = resolveObj( target, !params.level );
|
|
239
239
|
if ( _isObject( receiver ) ) { [ params, receiver ] = [ receiver, x => x ]; }
|
|
240
240
|
else if ( params.live ) { isLive = true; }
|
|
241
|
-
if ( prop instanceof Path ) return reduce(
|
|
241
|
+
if ( prop instanceof Path ) return reduce( originalTarget, prop, get, receiver, params );
|
|
242
242
|
// ---------------
|
|
243
|
-
return resolveProps(
|
|
243
|
+
return resolveProps( originalTarget, prop, props => {
|
|
244
244
|
const related = [ ...props ];
|
|
245
245
|
return ( function next( results, _props, _done ) {
|
|
246
246
|
if ( !_props.length ) return _done( results );
|
|
@@ -252,30 +252,36 @@ export function get( target, prop, receiver = x => x, params = {} ) {
|
|
|
252
252
|
function defaultGet( descriptor, value = undefined ) {
|
|
253
253
|
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
254
|
if ( arguments.length > 1 ) return _next( value );
|
|
255
|
-
const accessorizedProps = _(
|
|
255
|
+
const accessorizedProps = _( originalTarget, 'accessorizedProps', false );
|
|
256
256
|
const accessorization = accessorizedProps && accessorizedProps.get( descriptor.key + '' );
|
|
257
257
|
if ( accessorization && accessorization.intact() ) {
|
|
258
|
-
return _next( accessorization.getValue() );
|
|
258
|
+
return _next( accessorization.getValue( params.propertyDescriptor ) );
|
|
259
|
+
}
|
|
260
|
+
if ( params.propertyDescriptor ) {
|
|
261
|
+
const desc = Object.getOwnPropertyDescriptor( originalTarget, descriptor.key );
|
|
262
|
+
if ( 'forceValue' in params && 'value' in desc ) { desc.value = params.forceValue; }
|
|
263
|
+
return _next( desc );
|
|
259
264
|
}
|
|
260
|
-
|
|
265
|
+
if ( 'forceValue' in params ) { return _next( params.forceValue ); }
|
|
266
|
+
return _next( Reflect.get( originalTarget, descriptor.key, ...( params.receiver ? [ params.receiver ] : [] ) ) );
|
|
261
267
|
}
|
|
262
268
|
// ---------
|
|
263
|
-
const descriptor = new Descriptor(
|
|
269
|
+
const descriptor = new Descriptor( originalTarget, {
|
|
264
270
|
type: 'get',
|
|
265
271
|
key: prop,
|
|
266
272
|
value: undefined,
|
|
267
273
|
related,
|
|
268
274
|
} );
|
|
269
|
-
if ( !_isTypeObject(
|
|
270
|
-
const listenerRegistry = TrapsRegistry.getInstance(
|
|
275
|
+
if ( !_isTypeObject( originalTarget ) ) return next( [ ...results, params.live || params.descripted ? descriptor : undefined ], _props, _done );
|
|
276
|
+
const listenerRegistry = TrapsRegistry.getInstance( originalTarget, false, params.namespace );
|
|
271
277
|
if ( listenerRegistry ) {
|
|
272
278
|
return listenerRegistry.emit( descriptor, defaultGet );
|
|
273
279
|
}
|
|
274
280
|
return defaultGet( descriptor );
|
|
275
281
|
} )( [], props.slice( 0 ), results => {
|
|
276
282
|
const result_s = isPropsList( prop/*original*/ ) ? results : results[ 0 ];
|
|
277
|
-
if ( isLive && _isTypeObject(
|
|
278
|
-
const emit = bind(
|
|
283
|
+
if ( isLive && _isTypeObject( originalTarget ) ) {
|
|
284
|
+
const emit = bind( originalTarget, prop, receiver, params );
|
|
279
285
|
return emit( result_s );
|
|
280
286
|
}
|
|
281
287
|
return receiver( result_s );
|
|
@@ -313,7 +319,7 @@ export function batch( target, callback, params = {} ) {
|
|
|
313
319
|
*/
|
|
314
320
|
export function set( target, prop, value, receiver = x => x, params = {}, def = false ) {
|
|
315
321
|
// ---------------
|
|
316
|
-
|
|
322
|
+
const originalTarget = resolveObj( target );
|
|
317
323
|
let entries = [ [ prop, value ] ];
|
|
318
324
|
if ( _isObject( prop ) ) {
|
|
319
325
|
[ /*target*/, /*hash*/, receiver = x => x, params = {}, def = false ] = arguments;
|
|
@@ -329,22 +335,22 @@ export function set( target, prop, value, receiver = x => x, params = {}, def =
|
|
|
329
335
|
function defaultSet( descriptor, status = undefined ) {
|
|
330
336
|
const _next = status => ( descriptor.status = status, next( descriptors.concat( descriptor ), entries, _done ) );
|
|
331
337
|
if ( arguments.length > 1 ) return _next( descriptor, status );
|
|
332
|
-
const accessorizedProps = _(
|
|
338
|
+
const accessorizedProps = _( originalTarget, 'accessorizedProps', false );
|
|
333
339
|
const accessorization = accessorizedProps && accessorizedProps.get( descriptor.key + '' );
|
|
334
340
|
if ( descriptor.type === 'defineProperty' ) {
|
|
335
341
|
if ( accessorization && !accessorization.restore() ) _next( false );
|
|
336
|
-
Object.defineProperty(
|
|
342
|
+
Object.defineProperty( originalTarget, descriptor.key, descriptor.value );
|
|
337
343
|
return _next( true );
|
|
338
344
|
}
|
|
339
345
|
if ( accessorization && accessorization.intact() ) {
|
|
340
346
|
return _next( accessorization.setValue( descriptor.value ) );
|
|
341
347
|
}
|
|
342
|
-
return _next( Reflect.set(
|
|
348
|
+
return _next( Reflect.set( originalTarget, descriptor.key, descriptor.value ) );
|
|
343
349
|
}
|
|
344
350
|
// ---------
|
|
345
351
|
function exec( isUpdate, oldValue ) {
|
|
346
352
|
if ( params.diff && value === oldValue ) return next( descriptors, entries, _done );
|
|
347
|
-
const descriptor = new Descriptor(
|
|
353
|
+
const descriptor = new Descriptor( originalTarget, {
|
|
348
354
|
type: def ? 'defineProperty' : 'set',
|
|
349
355
|
key: prop,
|
|
350
356
|
value,
|
|
@@ -353,20 +359,22 @@ export function set( target, prop, value, receiver = x => x, params = {}, def =
|
|
|
353
359
|
related: [ ...related ],
|
|
354
360
|
detail: params.detail,
|
|
355
361
|
} );
|
|
356
|
-
const listenerRegistry = TrapsRegistry.getInstance(
|
|
362
|
+
const listenerRegistry = TrapsRegistry.getInstance( originalTarget, false, params.namespace );
|
|
357
363
|
return listenerRegistry
|
|
358
364
|
? listenerRegistry.emit( descriptor, defaultSet )
|
|
359
365
|
: defaultSet( descriptor );
|
|
360
366
|
}
|
|
361
367
|
// ---------
|
|
362
|
-
return has(
|
|
368
|
+
return has( originalTarget, prop, exists => {
|
|
363
369
|
if ( !exists ) return exec( exists );
|
|
364
|
-
|
|
370
|
+
const $params = { ...params, propertyDescriptor: def };
|
|
371
|
+
if ( 'forceOldValue' in params ) { $params.forceValue = params.forceOldValue; }
|
|
372
|
+
return get( originalTarget, prop, oldValue => exec( exists, oldValue ), $params );
|
|
365
373
|
}, params );
|
|
366
374
|
// ---------
|
|
367
375
|
} )( [], entries.slice( 0 ), descriptors => {
|
|
368
|
-
const listenerRegistry = ListenerRegistry.getInstance(
|
|
369
|
-
if ( listenerRegistry ) listenerRegistry.emit( descriptors );
|
|
376
|
+
const listenerRegistry = ListenerRegistry.getInstance( originalTarget, false, params.namespace );
|
|
377
|
+
if ( listenerRegistry ) listenerRegistry.emit( descriptors, def );
|
|
370
378
|
return receiver(
|
|
371
379
|
isPropsList( prop/*original*/ ) ? descriptors.map( opr => opr.status ) : descriptors[ 0 ]?.status
|
|
372
380
|
);
|
|
@@ -540,6 +548,7 @@ function bind( target, prop, receiver, params = {} ) {
|
|
|
540
548
|
if ( !params.signal ) {
|
|
541
549
|
controller = new AbortController;
|
|
542
550
|
params = { ...params, signal: controller.signal };
|
|
551
|
+
otherUtil.setMaxListeners?.( 0, controller.signal );
|
|
543
552
|
}
|
|
544
553
|
const listenerRegistry = ListenerRegistry.getInstance( target, true, params.namespace );
|
|
545
554
|
return function emit( descriptor_s, prevRegistration = null ) {
|
package/src/util.js
CHANGED
|
@@ -7,3 +7,5 @@ import { _internals } from '@webqit/util/js/index.js';
|
|
|
7
7
|
export const _ = ( ...args ) => _internals( 'observer-api', ...args );
|
|
8
8
|
|
|
9
9
|
export const _await = ( value, callback ) => value instanceof Promise ? value.then( callback ) : callback( value );
|
|
10
|
+
|
|
11
|
+
export const other = {};
|