@webqit/observer 2.1.1 → 2.1.3

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 CHANGED
@@ -6,55 +6,34 @@
6
6
 
7
7
  <!-- /BADGES -->
8
8
 
9
- A web-native object observability API!
10
-
11
- Observe and intercept operations on any type of JavaScript objects and arrays, using a notably lightweight and predictable utility-first reactivity API!
12
-
13
- ## Motivation
9
+ **[Motivation](#motivation) • [Overview](#an-overview) [Polyfill](#the-polyfill) • [Design Discussion](#design-discussion) • [Getting Involved](#getting-involved) • [License](#license)**
14
10
 
11
+ Observe and intercept operations on arbitrary JavaScript objects and arrays using a utility-first, general-purpose reactivity API! This API re-explores the unique design of the [`Object.observe()`](https://web.dev/es7-observe/) API and extends it with the best of JavaScript's other [reflection](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect) and interception APIs - *Proxies*, *accessors* - to support any kind of reactive programming model!
15
12
 
13
+ Observer API is an upcoming proposal!
16
14
 
17
- ## Table of Contents
18
-
19
- + [Motivation](#motivation)
20
- + [Download Options](#download-options)
21
- + [An Overview](#an-overview)
22
- + [Method: `Observer.observe()`](#method-observerobserve)
23
- + [Concept: *Observers*](#concept-observers)
24
- + [Concept: *Mutations*](#concept-mutations)
25
- + [Concept: *Batch Mutations*](#concept-batch-mutations)
26
- + [Concept: *Custom Details*](#concept-custom-details)
27
- + [Concept: *Diffing*](#concept-diffing)
28
- + [Method: `Observer.intercept()`](#method-observerintercept)
29
- + [Concept: *Traps*](#concept-traps)
30
- + [Issues](#issues)
31
- + [License](#license)
32
-
33
- ## Download Options
15
+ ## Motivation
34
16
 
35
- **_Use as an npm package:_**
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 the *object identity trade-off* problem of the first and the *property compromisal* problem of the second, there is also the "scalability" issue inherent to the techniques and much "inflexibility" in the programming model they enable:
36
18
 
37
- ```bash
38
- npm i @webqit/observer
39
- ```
19
+ + **Scalability**: objects have to be created a certain way, or be purpose-built for the specific technique, to participate in the reactivity system; objects *you don't own* have to be altered in some way - where that's even possible - to be onboarded into the reactivity system. Scalability is inhibited as we must fulfill the **implementation criteria** for as many objects as will be needed in the design - clamped to the finite number of objects that can be made to work this way!
40
20
 
41
- ```js
42
- // Import
43
- import Observer from '@webqit/observer';;
44
- ```
21
+ + **Programming model**: proxy traps and object accessors only lend themselves to being wired to *one* underlying listenining logic in the entire program. Objects are effectively open to multiple interactions on the outside but "locked" to one observer on the inside, enabling just a "many to one" communication model. This does not correctly reflect the most common usecases where the idea is to have any number of listeners per event, to enable a "many to many" model! It takes yet a non-trivial amount of effort to go from the default model to the one desired.
45
22
 
46
- **_Use as a script:_**
23
+ Interestingly, we at one time had an *object observability* primitive that checked all the boxes and touched the very pain points we have today: the [`Object.observe()`](https://web.dev/es7-observe/) API. So, how about an equivalent API that brings all of the good thinking from `Object.observe()` together with the idea of *Proxies*, *accessors*, and JavaScript's other [*reflection* API](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect) in one design, delivered as one utility for all things *reactivity*? This is the idea with the new **Observer API**!
47
24
 
48
- ```html
49
- <script src="https://unpkg.com/@webqit/observer/dist/main.js"></script>
50
- ```
25
+ ## An Overview
51
26
 
52
- ```js
53
- // Obtain the APIs
54
- const Observer = window.webqit.Observer;
55
- ```
27
+ The Observer API comes as a set of utility functions.
56
28
 
57
- ## An Overview
29
+ + [Method: `Observer.observe()`](#method-observerobserve)
30
+ + [Concept](#concept)
31
+ + [Concept: *Mutation APIs*](#concept-mutation-apis)
32
+ + [Concept: *Batch Mutations*](#concept-batch-mutations)
33
+ + [Concept: *Custom Details*](#concept-custom-details)
34
+ + [Concept: *Diffing*](#concept-diffing)
35
+ + [Method: `Observer.intercept()`](#method-observerintercept)
36
+ + [Concept](#concept-1)
58
37
 
59
38
  > **Note**
60
39
  > <br>This is documentation for `Observer@2.x`. (Looking for [`Observer@1.x`](https://github.com/webqit/observer/tree/v1.7.6)?)
@@ -73,7 +52,7 @@ Observer.observe( obj, callback[, options = {} ]);
73
52
  Observer.observe( obj, props, callback[, options = {} ]);
74
53
  ```
75
54
 
76
- #### Concept: *Observers*
55
+ #### Concept
77
56
 
78
57
  Observe arbitrary objects and arrays:
79
58
 
@@ -109,7 +88,7 @@ function handleChanges( mutations ) {
109
88
  abortController.abort();
110
89
  ```
111
90
 
112
- ...or by using an [Abort Signal](https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal) instance:
91
+ ...or you can provide your own [Abort Signal](https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal) instance:
113
92
 
114
93
  ```js
115
94
  // Providing an AbortSignal
@@ -124,7 +103,7 @@ Observer.observe( obj, mutations => {
124
103
  abortController.abort();
125
104
  ```
126
105
 
127
- #### Concept: *Mutations*
106
+ #### Concept: *Mutation APIs*
128
107
 
129
108
  Programmatically mutate properties of an object using the *[Reflect](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect#static_methods)-like* set of operators; each operation will be reported by observers:
130
109
 
@@ -144,7 +123,7 @@ Observer.deleteProperty( arr, 0 ); // Array [ <1 empty slot> ]
144
123
  *Beware non-reactive operations*:
145
124
 
146
125
  ```js
147
- // Literal object accessors
126
+ // Literal object operators
148
127
  delete obj.prop0;
149
128
  obj.prop3 = 'value3';
150
129
  ```
@@ -158,7 +137,7 @@ arr.pop();
158
137
  **-->** Enable reactivity on *specific* properties with literal *object accessors* - using the `Observer.accessorize()` method:
159
138
 
160
139
  ```js
161
- // Accessorize all (existing) properties
140
+ // Accessorize all current enumerable properties
162
141
  Observer.accessorize( obj );
163
142
  // Accessorize specific properties (existing or new)
164
143
  Observer.accessorize( obj, [ 'prop0', 'prop1', 'prop2' ] );
@@ -170,7 +149,7 @@ obj.prop2 = 'value2';
170
149
  ```
171
150
 
172
151
  ```js
173
- // Accessorize all (existing) indexes
152
+ // Accessorize all current indexes
174
153
  Observer.accessorize( arr );
175
154
  // Accessorize specific indexes (existing or new)
176
155
  Observer.accessorize( arr, [ 0, 1, 2 ] );
@@ -180,7 +159,7 @@ arr[ 0 ] = 'item0';
180
159
  arr[ 1 ] = 'item1';
181
160
  arr[ 2 ] = 'item2';
182
161
 
183
- // Bonus reactivity: array methods that re-index existing items
162
+ // Bonus reactivity with array methods that re-index existing items
184
163
  arr.unshift( 'new-item0' );
185
164
  arr.shift();
186
165
  ```
@@ -203,28 +182,28 @@ arr.pop();
203
182
 
204
183
  ```js
205
184
  // Obtain a reactive Proxy for an object
206
- const _obj = Observer.proxy( obj );
185
+ const $obj = Observer.proxy( obj );
207
186
 
208
187
  // Make reactive operations
209
- _obj.prop1 = 'value1';
210
- _obj.prop4 = 'value4';
211
- _obj.prop8 = 'value8';
188
+ $obj.prop1 = 'value1';
189
+ $obj.prop4 = 'value4';
190
+ $obj.prop8 = 'value8';
212
191
 
213
192
  // With the delete operator
214
- delete _obj.prop0;
193
+ delete $obj.prop0;
215
194
  ```
216
195
 
217
196
  ```js
218
197
  // Obtain a reactive Proxy for an array
219
- const _arr = Observer.proxy( arr );
198
+ const $arr = Observer.proxy( arr );
220
199
 
221
200
  // Make reactive operations
222
- _arr[ 0 ] = 'item0';
223
- _arr[ 1 ] = 'item1';
224
- _arr[ 2 ] = 'item2';
201
+ $arr[ 0 ] = 'item0';
202
+ $arr[ 1 ] = 'item1';
203
+ $arr[ 2 ] = 'item2';
225
204
 
226
205
  // With an instance method
227
- _arr.push( 'item3' );
206
+ $arr.push( 'item3' );
228
207
  ```
229
208
 
230
209
  *And no problem if you end up nesting the approaches.*
@@ -234,24 +213,24 @@ _arr.push( 'item3' );
234
213
  Observer.accessorize( obj, [ 'prop0', 'prop1', 'prop2', ] );
235
214
  obj.prop1 = 'value1';
236
215
 
237
- // 'value1'-->_obj-->obj
238
- let _obj = Observer.proxy( obj );
239
- _obj.prop1 = 'value1';
216
+ // 'value1'-->$obj-->obj
217
+ let $obj = Observer.proxy( obj );
218
+ $obj.prop1 = 'value1';
240
219
 
241
- // 'value1'-->set()-->_obj-->obj
242
- Observer.set( _obj, 'prop1', 'value1' );
220
+ // 'value1'-->set()-->$obj-->obj
221
+ Observer.set( $obj, 'prop1', 'value1' );
243
222
  ```
244
223
 
245
- **-->** "Restore" accessorized properties to their normal state by using the `unaccessorize()` method:
224
+ **-->** "Restore" accessorized properties to their normal state by calling the `unaccessorize()` method:
246
225
 
247
226
  ```js
248
227
  Observer.unaccessorize( obj, [ 'prop1', 'prop6', 'prop10' ] );
249
228
  ```
250
229
 
251
- **-->** "Reproduce" original objects from Proxies obtained via `Observer.proxy()` by using the `unproxy()` method:
230
+ **-->** "Reproduce" original objects from Proxies obtained via `Observer.proxy()` by calling the `unproxy()` method:
252
231
 
253
232
  ```js
254
- obj = Observer.unproxy( _obj );
233
+ obj = Observer.unproxy( $obj );
255
234
  ```
256
235
 
257
236
  #### Concept: *Batch Mutations*
@@ -357,7 +336,7 @@ Observer.intercept( obj, prop, handler[, options = {} ]);
357
336
  Observer.intercept( obj, traps[, options = {} ]);
358
337
  ```
359
338
 
360
- #### Concept: *Traps*
339
+ #### Concept
361
340
 
362
341
  Extend standard operations on an object - `Observer.set()`, `Observer.deleteProperty()`, etc - with custom traps using the [`Observer.intercept()`](https://webqit.io/tooling/observer/docs/api/reactions/intercept) method!
363
342
 
@@ -409,16 +388,44 @@ Observer.intercept( obj, {
409
388
  } );
410
389
  ```
411
390
 
412
- ## The End?
391
+ ## The Polyfill
392
+
393
+ **_Use as an npm package:_**
394
+
395
+ ```bash
396
+ npm i @webqit/observer
397
+ ```
398
+
399
+ ```js
400
+ // Import
401
+ import Observer from '@webqit/observer';;
402
+ ```
403
+
404
+ **_Use as a script:_**
405
+
406
+ ```html
407
+ <script src="https://unpkg.com/@webqit/observer/dist/main.js"></script>
408
+ ```
409
+
410
+ > 4.54 KB min+compressed | 12.85 KB min
411
+
412
+ ```js
413
+ // Obtain the APIs
414
+ const Observer = window.webqit.Observer;
415
+ ```
416
+
417
+ ## Design Discussion
413
418
 
414
- Certainly not! But this rundown should be a good start. Next:
419
+ *[TODO]*
415
420
 
416
- + Visit the [download](https://webqit.io/tooling/observer/docs/getting-started/download) page to obtain the Observer API.
417
- + Explore the [API Reference](https://webqit.io/tooling/observer/docs/api).
421
+ ## Getting Involved
418
422
 
419
- ## Issues
423
+ All forms of contributions are welcome at this time. For example, implementation details are all up for discussion. And here are specific links:
420
424
 
421
- To report bugs or request features, please submit an [issue](https://github.com/webqit/observer/issues).
425
+ + [Project](https://github.com/webqit/observer)
426
+ + [Documentation](https://github.com/webqit/observer/wiki)
427
+ + [Discusions](https://github.com/webqit/observer/discussions)
428
+ + [Issues](https://github.com/webqit/observer/issues)
422
429
 
423
430
  ## License
424
431
 
package/dist/main.js CHANGED
@@ -1,2 +1,2 @@
1
- (()=>{var Ae=Object.defineProperty;var ye=(e,t)=>{for(var n in t)Ae(e,n,{get:t[n],enumerable:!0})};var he={};ye(he,{apply:()=>ae,batch:()=>ce,construct:()=>me,deep:()=>We,defineProperties:()=>Ge,defineProperty:()=>le,deleteProperties:()=>Je,deleteProperty:()=>Q,get:()=>C,getOwnPropertyDescriptor:()=>fe,getOwnPropertyDescriptors:()=>He,getPrototypeOf:()=>se,has:()=>J,intercept:()=>Ke,isExtensible:()=>ue,observe:()=>ke,ownKeys:()=>G,preventExtensions:()=>de,set:()=>B,setPrototypeOf:()=>pe});function _(e){return!Array.isArray(e)&&typeof e=="object"&&e}function D(e){return typeof e}function w(e){return Array.isArray(e)}function Y(e,t,n=null){return w(t)?e.filter(r=>n?t.filter(o=>n(r,o)).length:t.indexOf(r)!==-1):[]}function W(e,...t){if(globalThis.webqit||(globalThis.webqit={}),globalThis.webqit.refs||Object.defineProperty(globalThis.webqit,"refs",{value:new L}),!arguments.length)return globalThis.webqit.refs;let n=globalThis.webqit.refs.get(e);n||(n=new L,globalThis.webqit.refs.set(e,n));let r,o;for(;r=t.shift();)(o=n)&&!(n=n.get(r))&&(n=new L,o.set(r,n));return n}var L=class extends Map{constructor(...t){super(...t),this.observers=new Set}set(t,n){let r=super.set(t,n);return this.fire("set",t,n,t),r}delete(t){let n=super.delete(t);return this.fire("delete",t),n}has(t){return this.fire("has",t),super.has(t)}get(t){return this.fire("get",t),super.get(t)}keyNames(){return Array.from(super.keys())}observe(t,n,r){let o={type:t,key:n,callback:r};return this.observers.add(o),()=>this.observers.delete(o)}unobserve(t,n,r){if(Array.isArray(t)||Array.isArray(n))throw new Error('The "type" and "key" arguments can only be strings.');for(let o of this.observers)V([t,"*"],o.type)&&V([n,"*"],o.key)&&o.callback===r&&this.observers.delete(o)}fire(t,n,...r){for(let o of this.observers)V([t,"*"],o.type)&&V([n,"*"],o.key)&&o.callback(...r)}},V=(e,t)=>Array.isArray(t)?Y(e,t).length:e.includes(t);function F(e){return typeof e=="function"}function Z(e){return F(e)&&/^class\s?/.test(Function.prototype.toString.call(e))}function $(e){return e===null||e===""}function R(e){return arguments.length&&(e===void 0||typeof e>"u")}function b(e){return Array.isArray(e)||typeof e=="object"&&e||F(e)}function ee(e){return $(e)||R(e)||e===!1||e===0||b(e)&&!Object.keys(e).length}function P(e){return F(e)||e&&{}.toString.call(e)==="[object function]"}function k(e){return e instanceof String||typeof e=="string"&&e!==null}function te(e){return!k(e)&&!R(e.length)}function I(e,t=!0){return w(e)?e:!t&&_(e)?[e]:e!==!1&&e!==0&&ee(e)?[]:te(e)?Array.prototype.slice.call(e):_(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 U=class extends N{constructor(){super(...arguments),Object.defineProperty(this,"abortController",{value:new AbortController}),Object.defineProperty(this,"signal",{value:this.abortController.signal})}remove(){this.abortController.abort(),super.remove()}fire(t){if(this.handler.firing)return;let n=t,r=this.filter;if(r!==1/0&&(r=I(r))&&(n=t.filter(o=>r.includes(o.key))),this.params.diff&&(n=n.filter(o=>o.type!=="set"||o.value!==o.oldValue)),n.length){this.handler.firing=!0;let o=this.filter===1/0||Array.isArray(this.filter)?this.handler(n,this):this.handler(n[0],this);return this.handler.firing=!1,o}}};var y=(...e)=>W("observer-api",...e),K=(e,t)=>e instanceof Promise?e.then(t):t(e);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 q=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 U(this,{filter:t,handler:n,params:r}))}emit(t){if(this.batches.length){this.batches[0].events.push(...t);return}this.entries.forEach(n=>n.fire(t))}batch(t){this.batches.unshift({entries:[...this.entries],events:[]});let n=t();return K(n,r=>{let o=this.batches.shift();return o.events.length&&o.entries.forEach(f=>f.fire(o.events)),r})}};var M=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 T=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 M(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 ie={};ye(ie,{accessorize:()=>Ue,proxy:()=>Ve,unaccessorize:()=>Me,unproxy:()=>H});function Ue(e,t,n={}){e=oe(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===p.get&&d?.set===p.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,p={enumerable:m,configurable:!0};("value"in u.descriptor||u.descriptor.set)&&(p.set=function(d){return B(this,i,d,n)}),("value"in u.descriptor||u.descriptor.get)&&(p.get=function(){return C(this,i,n)});try{return Object.defineProperty(e,i,p),!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 Me(e,t,n={}){e=oe(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 Ve(e,t={}){e=oe(e);let n=new Proxy(e,{apply:(r,o,f)=>ae(r,o,f,t),construct:(r,o,f=null)=>me(r,o,f,t),defineProperty:(r,o,f)=>le(r,o,f,t),deleteProperty:(r,o)=>Q(r,o,t),get:(r,o,f=null)=>{let s=C(r,o,{...t,receiver:f});return t.proxyAutoBinding!==!1&&P(s)&&!Z(s)?function(...c){let i=this||n;return ce(i,()=>s.call(i,...c))}:s},getOwnPropertyDescriptor:(r,o)=>fe(r,o,t),getPrototypeOf:r=>se(r,t),has:(r,o)=>J(r,o,t),isExtensible:r=>ue(r,t),ownKeys:r=>G(r,t),preventExtensions:r=>de(r,t),set:(r,o,f,s=null)=>B(r,o,f,{...t,receiver:s}),setPrototypeOf:(r,o)=>pe(r,o,t)});return y(n).set(n,e),n}function H(e){return y(e).get(e)||e}function oe(e){if(!e||!b(e))throw new Error("Target must be of type object!");return H(e)}function We(e,t,n,r=f=>f,o={}){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,(p,...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})))},O=l=>{let a=S(l,!1);return K(a,x=>{l instanceof v?l.value=x:l=x;let g=d[0]||{};return f(l,c,{...i,...g,level:i.level+1})})};return X(u)&&Array.isArray(p)?(p.forEach(h),m?r(p,...d):p.map(O)):(h(p),m?r(p,...d):O(p))},i)}(e,t.slice(0),{...o,level:0})}function ke(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(r={...r,descripted:!0},delete r.live,!b(e))return r.probe&&C(e,t,n,r);let o=ve(e,t,n,r);return r.probe?C(e,t,o,r):o()}function Ke(e,t,n={}){return e=S(e),_(t)||([,,,n={}]=arguments,t={[arguments[1]]:arguments[2]}),T.getInstance(e,!0,n.namespace).addRegistration({traps:t,params:n})}function fe(e,t,n=o=>o,r={}){return A(e,"getOwnPropertyDescriptor",{key:t},n,r)}function He(e,t,n=o=>o,r={}){return A(e,"getOwnPropertyDescriptors",{key:t},n,r)}function se(e,t=r=>r,n={}){return A(e,"getPrototypeOf",{},t,n)}function ue(e,t=r=>r,n={}){return A(e,"isExtensible",{},t,n)}function G(e,t=r=>r,n={}){return A(e,"ownKeys",{},t,n)}function J(e,t,n=o=>o,r={}){return A(e,"has",{key:t},n,r)}function C(e,t,n=o=>o,r={}){let o;return e=S(e,!r.level),_(n)?[r,n]=[n,f=>f]:r.live&&(o=!0),Qe(e,t,f=>{let s=[...f];return function c(i,u,m){if(!u.length)return m(i);let p=u.shift();function d(l,a=void 0){let x=j=>(l.value=j,c(i.concat(r.live||r.descripted?l:j),u,m));if(arguments.length>1)return x(a);let g=y(e,"accessorizedProps",!1),E=g&&g.get(l.key+"");return E&&E.intact()?x(E.getValue()):x(Reflect.get(e,l.key,...r.receiver?[r.receiver]:[]))}let h=new v(e,{type:"get",key:p,value:void 0,related:s});if(!b(e))return c(i.concat(r.live||r.descripted?h:void 0),u,m);let O=T.getInstance(e,!1,r.namespace);return O?O.emit(h,d):d(h)}([],f.slice(0),c=>{let i=X(t)?c:c[0];return o&&b(e)?ve(e,t,n,r)(i):n(i)})})}function ce(e,t,n={}){return e=S(e),q.getInstance(e,!0,n.namespace).batch(t)}function B(e,t,n,r=s=>s,o={},f=!1){e=S(e);let s=[[t,n]];_(t)&&([,,r=i=>i,o={},f=!1]=arguments,s=Object.entries(t)),_(r)&&([f,o,r]=[typeof o=="boolean"?o:!1,r,i=>i]);let c=s.map(([i])=>i);return function i(u,m,p){if(!m.length)return p(u);let[d,h]=m.shift();function O(a,x=void 0){let g=Pe=>(a.status=Pe,i(u.concat(a),m,p));if(arguments.length>1)return g(a,x);let E=y(e,"accessorizedProps",!1),j=E&&E.get(a.key+"");return a.type==="defineProperty"?(j&&!j.restore()&&g(!1),Object.defineProperty(e,a.key,a.value),g(!0)):j&&j.intact()?g(j.setValue(a.value)):g(Reflect.set(e,a.key,a.value))}function l(a,x){if(o.diff&&h===x)return i(u,m,p);let g=new v(e,{type:f?"defineProperty":"set",key:d,value:h,isUpdate:a,oldValue:x,related:[...c],detail:o.detail}),E=T.getInstance(e,!1,o.namespace);return E?E.emit(g,O):O(g)}return J(e,d,a=>a?C(e,d,x=>l(a,x),o):l(a),o)}([],s.slice(0),i=>{let u=q.getInstance(e,!1,o.namespace);return u&&u.emit(i),r(X(t)?i.map(m=>m.status):i[0]?.status)})}function le(e,t,n,r=f=>f,o={}){return B(e,t,n,r,o,!0)}function Ge(e,t,n=o=>o,r={}){return B(e,t,n,r,!0)}function Q(e,t,n=o=>o,r={}){e=S(e),_(n)&&([r,n]=[n,s=>s]);let o=I(t),f=[...o];return function s(c,i,u){if(!i.length)return u(c);let m=i.shift();function p(h,O=void 0){let l=g=>(h.status=g,s(c.concat(h),i,u));if(arguments.length>1)return l(h,O);let a=y(e,"accessorizedProps",!1),x=a&&a.get(h.key+"");return x&&!x.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=T.getInstance(e,!1,r.namespace);return l?l.emit(O,p):p(O)}return C(e,m,d,r)}([],o.slice(0),s=>{let c=q.getInstance(e,!1,r.namespace);return c&&c.emit(s),n(X(t)?s.map(i=>i.status):s[0].status)})}function Je(e,t,n=o=>o,r={}){return Q(...arguments)}function me(e,t,n=null,r=f=>f,o={}){return A(e,"construct",arguments.length>2?{argumentsList:t,newTarget:n}:{argumentsList:t},r,o)}function ae(e,t,n,r=f=>f,o={}){return A(e,"apply",{thisArgument:t,argumentsList:n},r,o)}function pe(e,t,n=o=>o,r={}){return A(e,"setPrototypeOf",{proto:t},n,r)}function de(e,t=r=>r,n={}){return A(e,"preventExtensions",{},t,n)}function ve(e,t,n,r={}){let o;r.signal||(o=new AbortController,r={...r,signal:o.signal});let f=q.getInstance(e,!0,r.namespace);return function s(c,i=null){i?.remove();let m={signal:f.addRegistration(t,s,r).signal};return arguments.length&&n(c,m),o}}function A(e,t,n={},r=f=>f,o={}){e=S(e),_(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=T.getInstance(e,!1,o.namespace);return c?c.emit(s,f):f(s)}function X(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&&H(e)}function Qe(e,t,n){return t===1/0?G(e,n):n(I(t))}var Xe={...he,...ie},we=Xe;self.webqit||(self.webqit={});self.webqit.Observer=we;})();
1
+ (()=>{var Ae=Object.defineProperty;var ye=(e,t)=>{for(var n in t)Ae(e,n,{get:t[n],enumerable:!0})};var he={};ye(he,{apply:()=>ae,batch:()=>ce,construct:()=>me,deep:()=>We,defineProperties:()=>Ge,defineProperty:()=>le,deleteProperties:()=>Je,deleteProperty:()=>Q,get:()=>C,getOwnPropertyDescriptor:()=>fe,getOwnPropertyDescriptors:()=>He,getPrototypeOf:()=>se,has:()=>J,intercept:()=>Ke,isExtensible:()=>ue,observe:()=>ke,ownKeys:()=>G,preventExtensions:()=>de,set:()=>B,setPrototypeOf:()=>pe});function _(e){return!Array.isArray(e)&&typeof e=="object"&&e}function D(e){return typeof e}function w(e){return Array.isArray(e)}function Y(e,t,n=null){return w(t)?e.filter(r=>n?t.filter(o=>n(r,o)).length:t.indexOf(r)!==-1):[]}function W(e,...t){if(globalThis.webqit||(globalThis.webqit={}),globalThis.webqit.refs||Object.defineProperty(globalThis.webqit,"refs",{value:new L}),!arguments.length)return globalThis.webqit.refs;let n=globalThis.webqit.refs.get(e);n||(n=new L,globalThis.webqit.refs.set(e,n));let r,o;for(;r=t.shift();)(o=n)&&!(n=n.get(r))&&(n=new L,o.set(r,n));return n}var L=class extends Map{constructor(...t){super(...t),this.observers=new Set}set(t,n){let r=super.set(t,n);return this.fire("set",t,n,t),r}delete(t){let n=super.delete(t);return this.fire("delete",t),n}has(t){return this.fire("has",t),super.has(t)}get(t){return this.fire("get",t),super.get(t)}keyNames(){return Array.from(super.keys())}observe(t,n,r){let o={type:t,key:n,callback:r};return this.observers.add(o),()=>this.observers.delete(o)}unobserve(t,n,r){if(Array.isArray(t)||Array.isArray(n))throw new Error('The "type" and "key" arguments can only be strings.');for(let o of this.observers)V([t,"*"],o.type)&&V([n,"*"],o.key)&&o.callback===r&&this.observers.delete(o)}fire(t,n,...r){for(let o of this.observers)V([t,"*"],o.type)&&V([n,"*"],o.key)&&o.callback(...r)}},V=(e,t)=>Array.isArray(t)?Y(e,t).length:e.includes(t);function F(e){return typeof e=="function"}function Z(e){return F(e)&&/^class\s?/.test(Function.prototype.toString.call(e))}function $(e){return e===null||e===""}function R(e){return arguments.length&&(e===void 0||typeof e>"u")}function b(e){return Array.isArray(e)||typeof e=="object"&&e||F(e)}function ee(e){return $(e)||R(e)||e===!1||e===0||b(e)&&!Object.keys(e).length}function P(e){return F(e)||e&&{}.toString.call(e)==="[object function]"}function k(e){return e instanceof String||typeof e=="string"&&e!==null}function te(e){return!k(e)&&!R(e.length)}function I(e,t=!0){return w(e)?e:!t&&_(e)?[e]:e!==!1&&e!==0&&ee(e)?[]:te(e)?Array.prototype.slice.call(e):_(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 U=class extends N{constructor(){super(...arguments),Object.defineProperty(this,"abortController",{value:new AbortController}),Object.defineProperty(this,"signal",{value:this.abortController.signal})}remove(){this.abortController.abort(),super.remove()}fire(t){if(this.handler.firing)return;let n=t,r=this.filter;if(r!==1/0&&(r=I(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){this.handler.firing=!0;let o=this.filter===1/0||Array.isArray(this.filter)?this.handler(n,this):this.handler(n[0],this);return this.handler.firing=!1,o}}};var y=(...e)=>W("observer-api",...e),K=(e,t)=>e instanceof Promise?e.then(t):t(e);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 q=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 U(this,{filter:t,handler:n,params:r}))}emit(t){if(this.batches.length){this.batches[0].events.push(...t);return}this.entries.forEach(n=>n.fire(t))}batch(t){this.batches.unshift({entries:[...this.entries],events:[]});let n=t();return K(n,r=>{let o=this.batches.shift();return o.events.length&&o.entries.forEach(f=>f.fire(o.events)),r})}};var M=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 T=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 M(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 ie={};ye(ie,{accessorize:()=>Ue,proxy:()=>Ve,unaccessorize:()=>Me,unproxy:()=>H});function Ue(e,t,n={}){e=oe(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===p.get&&d?.set===p.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,p={enumerable:m,configurable:!0};("value"in u.descriptor||u.descriptor.set)&&(p.set=function(d){return B(this,i,d,n)}),("value"in u.descriptor||u.descriptor.get)&&(p.get=function(){return C(this,i,n)});try{return Object.defineProperty(e,i,p),!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 Me(e,t,n={}){e=oe(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 Ve(e,t={}){e=oe(e);let n=new Proxy(e,{apply:(r,o,f)=>ae(r,o,f,t),construct:(r,o,f=null)=>me(r,o,f,t),defineProperty:(r,o,f)=>le(r,o,f,t),deleteProperty:(r,o)=>Q(r,o,t),get:(r,o,f=null)=>{let s=C(r,o,{...t,receiver:f});return t.proxyAutoBinding!==!1&&P(s)&&!Z(s)?function(...c){let i=this||n;return ce(i,()=>s.call(i,...c))}:s},getOwnPropertyDescriptor:(r,o)=>fe(r,o,t),getPrototypeOf:r=>se(r,t),has:(r,o)=>J(r,o,t),isExtensible:r=>ue(r,t),ownKeys:r=>G(r,t),preventExtensions:r=>de(r,t),set:(r,o,f,s=null)=>B(r,o,f,{...t,receiver:s}),setPrototypeOf:(r,o)=>pe(r,o,t)});return y(n).set(n,e),n}function H(e){return y(e).get(e)||e}function oe(e){if(!e||!b(e))throw new Error("Target must be of type object!");return H(e)}function We(e,t,n,r=f=>f,o={}){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,(p,...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})))},O=l=>{let a=S(l,!1);return K(a,x=>{l instanceof v?l.value=x:l=x;let g=d[0]||{};return f(l,c,{...i,...g,level:i.level+1})})};return X(u)&&Array.isArray(p)?(p.forEach(h),m?r(p,...d):p.map(O)):(h(p),m?r(p,...d):O(p))},i)}(e,t.slice(0),{...o,level:0})}function ke(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(r={...r,descripted:!0},delete r.live,!b(e))return r.probe&&C(e,t,n,r);let o=ve(e,t,n,r);return r.probe?C(e,t,o,r):o()}function Ke(e,t,n={}){return e=S(e),_(t)||([,,,n={}]=arguments,t={[arguments[1]]:arguments[2]}),T.getInstance(e,!0,n.namespace).addRegistration({traps:t,params:n})}function fe(e,t,n=o=>o,r={}){return A(e,"getOwnPropertyDescriptor",{key:t},n,r)}function He(e,t,n=o=>o,r={}){return A(e,"getOwnPropertyDescriptors",{key:t},n,r)}function se(e,t=r=>r,n={}){return A(e,"getPrototypeOf",{},t,n)}function ue(e,t=r=>r,n={}){return A(e,"isExtensible",{},t,n)}function G(e,t=r=>r,n={}){return A(e,"ownKeys",{},t,n)}function J(e,t,n=o=>o,r={}){return A(e,"has",{key:t},n,r)}function C(e,t,n=o=>o,r={}){let o;return e=S(e,!r.level),_(n)?[r,n]=[n,f=>f]:r.live&&(o=!0),Qe(e,t,f=>{let s=[...f];return function c(i,u,m){if(!u.length)return m(i);let p=u.shift();function d(l,a=void 0){let x=j=>(l.value=j,c(i.concat(r.live||r.descripted?l:j),u,m));if(arguments.length>1)return x(a);let g=y(e,"accessorizedProps",!1),E=g&&g.get(l.key+"");return E&&E.intact()?x(E.getValue()):x(Reflect.get(e,l.key,...r.receiver?[r.receiver]:[]))}let h=new v(e,{type:"get",key:p,value:void 0,related:s});if(!b(e))return c(i.concat(r.live||r.descripted?h:void 0),u,m);let O=T.getInstance(e,!1,r.namespace);return O?O.emit(h,d):d(h)}([],f.slice(0),c=>{let i=X(t)?c:c[0];return o&&b(e)?ve(e,t,n,r)(i):n(i)})})}function ce(e,t,n={}){return e=S(e),q.getInstance(e,!0,n.namespace).batch(t)}function B(e,t,n,r=s=>s,o={},f=!1){e=S(e);let s=[[t,n]];_(t)&&([,,r=i=>i,o={},f=!1]=arguments,s=Object.entries(t)),_(r)&&([f,o,r]=[typeof o=="boolean"?o:!1,r,i=>i]);let c=s.map(([i])=>i);return function i(u,m,p){if(!m.length)return p(u);let[d,h]=m.shift();function O(a,x=void 0){let g=Pe=>(a.status=Pe,i(u.concat(a),m,p));if(arguments.length>1)return g(a,x);let E=y(e,"accessorizedProps",!1),j=E&&E.get(a.key+"");return a.type==="defineProperty"?(j&&!j.restore()&&g(!1),Object.defineProperty(e,a.key,a.value),g(!0)):j&&j.intact()?g(j.setValue(a.value)):g(Reflect.set(e,a.key,a.value))}function l(a,x){if(o.diff&&h===x)return i(u,m,p);let g=new v(e,{type:f?"defineProperty":"set",key:d,value:h,isUpdate:a,oldValue:x,related:[...c],detail:o.detail}),E=T.getInstance(e,!1,o.namespace);return E?E.emit(g,O):O(g)}return J(e,d,a=>a?C(e,d,x=>l(a,x),o):l(a),o)}([],s.slice(0),i=>{let u=q.getInstance(e,!1,o.namespace);return u&&u.emit(i),r(X(t)?i.map(m=>m.status):i[0]?.status)})}function le(e,t,n,r=f=>f,o={}){return B(e,t,n,r,o,!0)}function Ge(e,t,n=o=>o,r={}){return B(e,t,n,r,!0)}function Q(e,t,n=o=>o,r={}){e=S(e),_(n)&&([r,n]=[n,s=>s]);let o=I(t,!1),f=[...o];return function s(c,i,u){if(!i.length)return u(c);let m=i.shift();function p(h,O=void 0){let l=g=>(h.status=g,s(c.concat(h),i,u));if(arguments.length>1)return l(h,O);let a=y(e,"accessorizedProps",!1),x=a&&a.get(h.key+"");return x&&!x.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=T.getInstance(e,!1,r.namespace);return l?l.emit(O,p):p(O)}return C(e,m,d,r)}([],o.slice(0),s=>{let c=q.getInstance(e,!1,r.namespace);return c&&c.emit(s),n(X(t)?s.map(i=>i.status):s[0].status)})}function Je(e,t,n=o=>o,r={}){return Q(...arguments)}function me(e,t,n=null,r=f=>f,o={}){return A(e,"construct",arguments.length>2?{argumentsList:t,newTarget:n}:{argumentsList:t},r,o)}function ae(e,t,n,r=f=>f,o={}){return A(e,"apply",{thisArgument:t,argumentsList:n},r,o)}function pe(e,t,n=o=>o,r={}){return A(e,"setPrototypeOf",{proto:t},n,r)}function de(e,t=r=>r,n={}){return A(e,"preventExtensions",{},t,n)}function ve(e,t,n,r={}){let o;r.signal||(o=new AbortController,r={...r,signal:o.signal});let f=q.getInstance(e,!0,r.namespace);return function s(c,i=null){i?.remove();let m={signal:f.addRegistration(t,s,r).signal};return arguments.length&&n(c,m),o}}function A(e,t,n={},r=f=>f,o={}){e=S(e),_(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=T.getInstance(e,!1,o.namespace);return c?c.emit(s,f):f(s)}function X(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&&H(e)}function Qe(e,t,n){return t===1/0?G(e,n):n(I(t,!1))}var Xe={...he,...ie},we=Xe;self.webqit||(self.webqit={});self.webqit.Observer=we;})();
2
2
  //# sourceMappingURL=main.js.map
package/dist/main.js.map CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
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/isClass.js", "../node_modules/@webqit/util/js/isNull.js", "../node_modules/@webqit/util/js/isUndefined.js", "../node_modules/@webqit/util/js/isTypeObject.js", "../node_modules/@webqit/util/js/isEmpty.js", "../node_modules/@webqit/util/js/isFunction.js", "../node_modules/@webqit/util/js/isString.js", "../node_modules/@webqit/util/js/isTypeArray.js", "../node_modules/@webqit/util/arr/from.js", "../src/core/Registration.js", "../src/core/ListenerRegistration.js", "../src/util.js", "../src/core/Registry.js", "../src/core/ListenerRegistry.js", "../src/core/TrapsRegistration.js", "../src/core/TrapsRegistry.js", "../src/core/Descriptor.js", "../src/actors.js", "../src/index.js", "../src/targets.browser.js"],
4
- "sourcesContent": ["\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 * 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 deep( object, [ segement1, segement2 ], observe, ( value, flags ) => {}, params );\n *\n * @return Any\n */\nexport function deep( target, path, receiver, final = x => x, params = {} ) {\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 } );\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 // ---------------\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 // ---------------\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 // ---------\n function defaultGet( descriptor, value = undefined ) {\n const _next = value => ( descriptor.value = value, next( results.concat( params.live || params.descripted ? descriptor : value ), _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.concat( 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 } );\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 ), 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 receiver( descriptor_s, flags );\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 ) {\n if ( prop === Infinity ) return ownKeys( obj, receiver );\n return receiver( _arrFrom( prop ) );\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 { _from as _arrFrom } from '@webqit/util/arr/index.js';\nimport Registration from './Registration.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\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.handler.firing ) return;\n\t\tlet matches = events, filter = this.filter;\n\t\tif ( filter !== Infinity && ( filter = _arrFrom( filter ) ) ) {\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\tthis.handler.firing = true;\n\t\t\tconst ret = this.filter === Infinity || Array.isArray( this.filter )\n\t\t\t\t? this.handler( matches, this )\n\t\t\t\t: this.handler( matches[ 0 ], this );\n\t\t\tthis.handler.firing = false;\n\t\t\treturn ret;\n\t\t}\n\t}\n}\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 { _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, handler, params ) {\n\t\treturn super.addRegistration( new ListenerRegistration( this, { filter, handler, 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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",
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 * 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 deep( object, [ segement1, segement2 ], observe, ( value, flags ) => {}, params );\n *\n * @return Any\n */\nexport function deep( target, path, receiver, final = x => x, params = {} ) {\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 } );\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 // ---------------\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 // ---------------\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 // ---------\n function defaultGet( descriptor, value = undefined ) {\n const _next = value => ( descriptor.value = value, next( results.concat( params.live || params.descripted ? descriptor : value ), _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.concat( 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 } );\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 receiver( descriptor_s, flags );\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 ) {\n if ( prop === Infinity ) return ownKeys( obj, receiver );\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 { _from as _arrFrom } from '@webqit/util/arr/index.js';\nimport Registration from './Registration.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\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.handler.firing ) 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\tthis.handler.firing = true;\n\t\t\tconst ret = this.filter === Infinity || Array.isArray( this.filter )\n\t\t\t\t? this.handler( matches, this )\n\t\t\t\t: this.handler( matches[ 0 ], this );\n\t\t\tthis.handler.firing = false;\n\t\t\treturn ret;\n\t\t}\n\t}\n}\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 { _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, handler, params ) {\n\t\treturn super.addRegistration( new ListenerRegistration( this, { filter, handler, 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
6
  "names": ["main_exports", "__export", "apply", "batch", "construct", "deep", "defineProperties", "defineProperty", "deleteProperties", "deleteProperty", "get", "getOwnPropertyDescriptor", "getOwnPropertyDescriptors", "getPrototypeOf", "has", "intercept", "isExtensible", "observe", "ownKeys", "preventExtensions", "set", "setPrototypeOf", "isObject_default", "val", "getType_default", "val", "isArray_default", "val", "intersect_default", "arr", "arr2", "callback", "isArray_default", "val1", "val2", "internals", "obj", "namespaces", "ObservableMap", "itnls", "_ns", "_itnls", "args", "key", "value", "returnValue", "type", "callback", "entry", "_intersection", "a", "b", "intersect_default", "isTypeFunction_default", "val", "isClass_default", "val", "isTypeFunction_default", "isNull_default", "val", "isUndefined_default", "val", "isTypeObject_default", "val", "isTypeFunction_default", "isEmpty_default", "val", "isNull_default", "isUndefined_default", "isTypeObject_default", "isFunction_default", "val", "isTypeFunction_default", "isString_default", "val", "isTypeArray_default", "val", "isString_default", "isUndefined_default", "from_default", "val", "castObject", "isArray_default", "isObject_default", "isEmpty_default", "isTypeArray_default", "Registration", "registry", "dfn", "ListenerRegistration", "Registration", "events", "matches", "filter", "from_default", "event", "ret", "_", "args", "internals", "_await", "value", "callback", "Registry", "target", "registration", "_entry", "type", "createIfNotExists", "namespace", "isTypeObject_default", "getType_default", "ImplementationClass", "_", "ListenerRegistry", "Registry", "target", "createIfNotExists", "namespace", "ImplementationClass", "filter", "handler", "params", "ListenerRegistration", "events", "listener", "callback", "returnValue", "_await", "batch", "TrapsRegistration", "Registration", "descriptor", "next", "recieved", "args", "TrapsRegistry", "Registry", "target", "createIfNotExists", "namespace", "ImplementationClass", "dfn", "TrapsRegistration", "descriptor", "defaultHandler", "$this", "next", "index", "_args", "registration", "args", "Descriptor", "target", "dfn", "actors_exports", "__export", "accessorize", "proxy", "unaccessorize", "unproxy", "accessorize", "target", "props", "params", "resolveTarget", "accessorizedProps", "_", "getDescriptorDeep", "prop", "descriptor", "proto", "accessorizeProp", "currentDescriptorRecord", "value", "currentDescriptor", "accessorization", "enumerable", "set", "get", "statuses", "unaccessorize", "unaccessorizeProp", "proxy", "thisArgument", "argumentsList", "apply", "newTarget", "construct", "propertyKey", "attributes", "defineProperty", "deleteProperty", "receiver", "val", "isFunction_default", "isClass_default", "args", "_this", "batch", "getOwnPropertyDescriptor", "getPrototypeOf", "has", "isExtensible", "ownKeys", "preventExtensions", "prototype", "setPrototypeOf", "unproxy", "isTypeObject_default", "deep", "target", "path", "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", "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", "descriptor_s", "prevRegistration", "type", "payload", "defaultExec", "obj", "assert", "unproxy", "Observer", "main_exports", "actors_exports", "src_default", "src_default"]
7
7
  }
package/package.json CHANGED
@@ -12,7 +12,7 @@
12
12
  "events"
13
13
  ],
14
14
  "homepage": "https://webqit.io/tooling/observer",
15
- "version": "2.1.1",
15
+ "version": "2.1.3",
16
16
  "license": "MIT",
17
17
  "repository": {
18
18
  "type": "git",
@@ -43,7 +43,7 @@ export default class ListenerRegistration extends Registration {
43
43
  fire( events ) {
44
44
  if ( this.handler.firing ) return;
45
45
  let matches = events, filter = this.filter;
46
- if ( filter !== Infinity && ( filter = _arrFrom( filter ) ) ) {
46
+ if ( filter !== Infinity && ( filter = _arrFrom( filter, false ) ) ) {
47
47
  matches = events.filter( event => filter.includes( event.key ) );
48
48
  }
49
49
  if ( this.params.diff ) {
package/src/main.js CHANGED
@@ -400,7 +400,7 @@ export function deleteProperty( target, prop, receiver = x => x, params = {} ) {
400
400
  target = resolveObj( target );
401
401
  if ( _isObject( receiver ) ) { [ params, receiver ] = [ receiver, x => x ]; }
402
402
  // ---------------
403
- const props = _arrFrom( prop ), related = [ ...props ];
403
+ const props = _arrFrom( prop, false ), related = [ ...props ];
404
404
  return ( function next( descriptors, props, _done ) {
405
405
  if ( !props.length ) return _done( descriptors );
406
406
  const prop = props.shift();
@@ -581,5 +581,5 @@ function resolveObj( obj, assert = true ) {
581
581
  // Resolves prop down to actual keys
582
582
  function resolveProps( obj, prop, receiver ) {
583
583
  if ( prop === Infinity ) return ownKeys( obj, receiver );
584
- return receiver( _arrFrom( prop ) );
584
+ return receiver( _arrFrom( prop, false ) );
585
585
  }