insite-subscriptions-client 2.0.4 → 2.0.7

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.
@@ -31,17 +31,15 @@ declare global {
31
31
  var __insite_subscription_map_sort_function: ((a: Item, b: Item) => -1 | 0 | 1) | undefined;
32
32
  }
33
33
  export declare class SubscriptionMap<I extends Item = Item> extends Map<string, I> {
34
+ #private;
34
35
  constructor(updates?: Updates<I>, onUpdate?: UpdateHandler<I>);
35
36
  handleUpdate: UpdateHandler<I> | undefined;
36
- private updates;
37
37
  sortList: null | SortList;
38
38
  sortCompareFunction: ((a: I, b: I) => number) | null;
39
- private fieldsToSort;
40
39
  sorted: I[];
41
40
  sort(): void;
42
41
  [getHandleUpdateSymbol](): UpdateHandler<I> | undefined;
43
42
  [setHandleUpdateSymbol](handleUpdate: UpdateHandler<I>): UpdateHandler<I>;
44
- private TheItem;
45
43
  set Item(TheItem: {
46
44
  new (map: SubscriptionMap<I>, updates: GenericItem): I;
47
45
  });
@@ -86,9 +84,9 @@ export declare class SubscriptionMapWithSubscription<I extends Item = Item> exte
86
84
  static getSubscriptionSymbol: symbol;
87
85
  }
88
86
  export declare class SubscriptionMapItem {
87
+ #private;
89
88
  constructor(map: SubscriptionMap, updates: GenericItem);
90
89
  _id: string;
91
- private map;
92
90
  update(updates: GenericItem): void;
93
91
  delete(): void;
94
92
  }
@@ -1 +1 @@
1
- {"version":3,"file":"SubscriptionMap.d.ts","sourceRoot":"","sources":["../src/SubscriptionMap.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SubscriptionMap.d.ts","sourceRoot":"","sources":["../src/SubscriptionMap.ts"],"names":[],"mappings":"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"}
@@ -27,10 +27,8 @@ export declare class SubscriptionObject {
27
27
  static WithSubscription: typeof SubscriptionObjectWithSubscription;
28
28
  }
29
29
  export declare class SubscriptionObjectWithSubscription extends SubscriptionObject {
30
+ #private;
30
31
  constructor(publicationName: string, params: unknown[], onUpdate: UpdateHandler, immediately?: boolean);
31
- private publicationName;
32
- private params;
33
- private subscription;
34
32
  [subscribeSymbol](): void;
35
33
  [unsubscribeSymbol](): void;
36
34
  [renewSymbol](publicationName?: string, params?: unknown[]): void;
@@ -1 +1 @@
1
- {"version":3,"file":"SubscriptionObject.d.ts","sourceRoot":"","sources":["../src/SubscriptionObject.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EACN,WAAW,EACX,yBAAyB,EACzB,kBAAkB,EAClB,qBAAqB,EACrB,qBAAqB,EACrB,WAAW,EACX,qBAAqB,EACrB,eAAe,EACf,iBAAiB,EACjB,YAAY,EACZ,MAAM,WAAW,CAAC;AAGnB,QAAA,MAAM,kBAAkB,eAAyB,CAAC;AAClD,QAAA,MAAM,aAAa,eAAoB,CAAC;AAExC,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAC9C,MAAM,MAAM,OAAO,GAAG,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACrD,MAAM,MAAM,aAAa,GAAG,CAAC,MAAM,EAAE,kBAAkB,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;AAGrG,qBAAa,kBAAkB;gBAClB,OAAO,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,aAAa;IASvD,CAAC,kBAAkB,CAAC,CAAC,EAAE,aAAa,CAAC;IAErC,CAAC,aAAa,CAAC,EAAE,OAAO,CAAQ;IAEhC,CAAC,qBAAqB,CAAC;IAIvB,CAAC,qBAAqB,CAAC,CAAC,YAAY,EAAE,aAAa;IAInD,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE,OAAO;IAe/B,CAAC,kBAAkB,CAAC,IAAI,OAAO;IAI/B,CAAC,yBAAyB,CAAC,IAAI,OAAO;IAItC,CAAC,WAAW,CAAC;IAQb,OAAO;IAIP,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,WAEvB;IAED,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IAGvB,MAAM,CAAC,YAAY,SAAgB;IACnC,MAAM,CAAC,qBAAqB,SAAyB;IACrD,MAAM,CAAC,qBAAqB,SAAyB;IACrD,MAAM,CAAC,kBAAkB,SAAsB;IAC/C,MAAM,CAAC,yBAAyB,SAA6B;IAC7D,MAAM,CAAC,WAAW,SAAe;IACjC,MAAM,CAAC,gBAAgB,EAAE,OAAO,kCAAkC,CAAC;CAEnE;AAGD,qBAAa,kCAAmC,SAAQ,kBAAkB;gBAC7D,eAAe,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,aAAa,EAAE,WAAW,UAAO;IAWnG,OAAO,CAAC,eAAe,CAAC;IACxB,OAAO,CAAC,MAAM,CAAC;IACf,OAAO,CAAC,YAAY,CAA6B;IAEjD,CAAC,eAAe,CAAC;IAOjB,CAAC,iBAAiB,CAAC;IASnB,CAAC,WAAW,CAAC,CAAC,eAAe,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE;IAmB1D,CAAC,qBAAqB,CAAC;IAIvB,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,WAEvB;IAGD,MAAM,CAAC,eAAe,SAAmB;IACzC,MAAM,CAAC,iBAAiB,SAAqB;IAC7C,MAAM,CAAC,WAAW,SAAe;IACjC,MAAM,CAAC,qBAAqB,SAAyB;CAErD"}
1
+ {"version":3,"file":"SubscriptionObject.d.ts","sourceRoot":"","sources":["../src/SubscriptionObject.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EACN,WAAW,EACX,yBAAyB,EACzB,kBAAkB,EAClB,qBAAqB,EACrB,qBAAqB,EACrB,WAAW,EACX,qBAAqB,EACrB,eAAe,EACf,iBAAiB,EACjB,YAAY,EACZ,MAAM,WAAW,CAAC;AAGnB,QAAA,MAAM,kBAAkB,eAAyB,CAAC;AAClD,QAAA,MAAM,aAAa,eAAoB,CAAC;AAExC,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAC9C,MAAM,MAAM,OAAO,GAAG,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACrD,MAAM,MAAM,aAAa,GAAG,CAAC,MAAM,EAAE,kBAAkB,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;AAGrG,qBAAa,kBAAkB;gBAClB,OAAO,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,aAAa;IASvD,CAAC,kBAAkB,CAAC,CAAC,EAAE,aAAa,CAAC;IAErC,CAAC,aAAa,CAAC,EAAE,OAAO,CAAQ;IAEhC,CAAC,qBAAqB,CAAC;IAIvB,CAAC,qBAAqB,CAAC,CAAC,YAAY,EAAE,aAAa;IAInD,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE,OAAO;IAe/B,CAAC,kBAAkB,CAAC,IAAI,OAAO;IAI/B,CAAC,yBAAyB,CAAC,IAAI,OAAO;IAItC,CAAC,WAAW,CAAC;IAQb,OAAO;IAIP,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,WAEvB;IAED,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IAGvB,MAAM,CAAC,YAAY,SAAgB;IACnC,MAAM,CAAC,qBAAqB,SAAyB;IACrD,MAAM,CAAC,qBAAqB,SAAyB;IACrD,MAAM,CAAC,kBAAkB,SAAsB;IAC/C,MAAM,CAAC,yBAAyB,SAA6B;IAC7D,MAAM,CAAC,WAAW,SAAe;IACjC,MAAM,CAAC,gBAAgB,EAAE,OAAO,kCAAkC,CAAC;CAEnE;AAGD,qBAAa,kCAAmC,SAAQ,kBAAkB;;gBAC7D,eAAe,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,aAAa,EAAE,WAAW,UAAO;IAenG,CAAC,eAAe,CAAC;IAOjB,CAAC,iBAAiB,CAAC;IASnB,CAAC,WAAW,CAAC,CAAC,eAAe,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE;IAmB1D,CAAC,qBAAqB,CAAC;IAIvB,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,WAEvB;IAGD,MAAM,CAAC,eAAe,SAAmB;IACzC,MAAM,CAAC,iBAAiB,SAAqB;IAC7C,MAAM,CAAC,WAAW,SAAe;IACjC,MAAM,CAAC,qBAAqB,SAAyB;CAErD"}
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- var _t=Object.defineProperty;var ut=n=>{throw TypeError(n)};var Gt=(n,s,t)=>s in n?_t(n,s,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[s]=t;var i=(n,s,t)=>Gt(n,typeof s!="symbol"?s+"":s,t),st=(n,s,t)=>s.has(n)||ut("Cannot "+t);var p=(n,s,t)=>(st(n,s,"read from private field"),t?t.call(n):s.get(n)),v=(n,s,t)=>s.has(n)?ut("Cannot add the same private member more than once"):s instanceof WeakSet?s.add(n):s.set(n,t),b=(n,s,t,e)=>(st(n,s,"write to private field"),e?e.call(n,t):s.set(n,t),t),f=(n,s,t)=>(st(n,s,"access private method"),t);var dt,q,k,E=class{constructor(s,t,e=[],r,o=!0){i(this,"i");i(this,"type");i(this,"publicationName");i(this,"args");i(this,"handler");i(this,"immediately");i(this,"isActive");i(this,"start",()=>{k.sendMessage("s-s",this.type,this.publicationName,this.i,this.args,this.immediately),this.immediately=!0});if(!k)throw new Error("Subscription is not binded to WS. Do Subscription.bindTo(ws) first");this.i=dt++,this.type=s,this.publicationName=t,this.args=e,this.handler=r,this.immediately=o&&!window.__initials,q.set(this.i,this),k.on("open",this.start),k.isOpen&&this.start(),window.__initials?(this.isActive=!0,this.handler(window.__initials.splice(0,1)[0])):this.isActive=!1}cancel(){q.delete(this.i),k.off("open",this.start),k.sendMessage("s-u",this.i)}static bindTo(s){k=s,dt=0,q=new Map,k.on("message:s-c",(t,e)=>{let r=q.get(t);r&&(r.isActive=!0,r.handler(e))}),k.on("close",()=>{for(let t of q.values())t.isActive=!1}),k.on("server-change",()=>{for(let t of q.values())t.handler(null)})}};import{removeOne as jt}from"@nesvet/n";var x=Symbol("update"),D=Symbol("getHandleUpdate"),S=Symbol("setHandleUpdate"),H=Symbol("getAsUpdates"),A=Symbol("getAsInitialUpdated"),G=Symbol("clear"),m=Symbol("subscribe"),y=Symbol("unsubscribe"),L=Symbol("renew"),P=Symbol("getSubscription"),kt=Symbol("getHandleSubscription"),Pt=Symbol("setHandleSubscription");var Bt=(n,s)=>n>s?1:n<s?-1:0,Ft=(n,s)=>n>s?-1:n<s?1:0,lt,ht,ct,bt,O=class extends Array{constructor(t,e){super();i(this,"sorted",[]);i(this,"handleUpdate");i(this,"sortDirection",0);i(this,"sortCompareFunction",null);i(this,bt,this.update);i(this,ct,this.getAsUpdates);i(this,ht,this.getAsInitialUpdated);i(this,lt,this.clear);e&&(this.handleUpdate=e),Array.isArray(t)&&this.update(t)}[D](){return this.handleUpdate}[S](t){return this.handleUpdate=t}update(t){let e=Object.assign([],{deleted:[],added:[]});if(t){let r=!1;for(let o of t)switch(o?.[0]){case"i":{let[,u,h]=o;h?(this.sortDirection=h,this.sortCompareFunction=h>0?Bt:Ft,r=!0):(this.sortDirection=0,this.sortCompareFunction=null),this.length=0;for(let a of u)this.push(a),e.push(a),e.added.push(a);break}case"a":{let[,u]=o;this.includes(u)||(this.push(u),this.sortDirection&&(r=!0),e.push(u),e.added.push(u));break}case"d":{let[,u]=o;jt(this,u)&&e.deleted.push(u);break}default:this.clear()}r&&this.sortCompareFunction&&this.sort(this.sortCompareFunction)}else this.clear();return this.handleUpdate?.(this,e,t?.[0]?t:null),this}getAsUpdates(){return this.length||this.sortDirection?[["i",[...this],this.sortDirection]]:null}getAsInitialUpdated(){return Object.assign([...this.sorted],{added:[...this.sorted],deleted:[]})}clear(){this.length=0,this.sortDirection=0,this.sortCompareFunction=null}valueOf(){return this}get[(bt=x,ct=H,ht=A,lt=G,Symbol.toStringTag)](){return"SubscriptionArray"}};i(O,"updateSymbol",x),i(O,"getHandleUpdateSymbol",D),i(O,"setHandleUpdateSymbol",S),i(O,"getAsUpdatesSymbol",H),i(O,"getAsInitialUpdatedSymbol",A),i(O,"clearSymbol",G),i(O,"WithSubscription");var j=class extends O{constructor(t,e,r,o=!0){super(null,r);i(this,"publicationName");i(this,"params");i(this,"subscription",null);this.publicationName=t,this.params=e,o&&this.subscribe()}subscribe(){this.subscription||(this.subscription=new E("array",this.publicationName,this.params,t=>this.update(t)))}get[m](){return this.subscribe}unsubscribe(){this.subscription&&(this.subscription.cancel(),this.subscription=null)}get[y](){return this.unsubscribe}renew(t,e){this.subscription&&(this.unsubscribe(),t&&(Array.isArray(t)?e=t:this.publicationName=t),e&&(this.params=e),this.subscribe())}get[L](){return this.renew}[P](){return this.subscription}get[Symbol.toStringTag](){return"SubscriptionArrayWithSubscription"}};i(j,"subscribeSymbol",m),i(j,"unsubscribeSymbol",y),i(j,"renewSymbol",L),i(j,"getSubscriptionSymbol",P);O.WithSubscription=j;import $t from"eventemitter3";import{debounce as Vt,StatefulPromise as Z}from"@nesvet/n";var g={};import Wt from"eventemitter3";import{debounce as Ct,removeOne as It,StatefulPromise as Y}from"@nesvet/n";import{removeOne as Mt}from"@nesvet/n";function Nt(n){let s=document.createElement("script");s.textContent=`window.__insite_subscription_map_sort_function = function sort(a, b) { return ${Object.entries(n).map(([e,r])=>r>0?`a.${e} > b.${e} ? 1 : a.${e} < b.${e} ? -1 :`:`a.${e} < b.${e} ? 1 : a.${e} > b.${e} ? -1 :`).concat("0").join(" ")};}`,document.head.append(s);let t=window.__insite_subscription_map_sort_function;return s.remove(),delete window.__insite_subscription_map_sort_function,t}var mt,ft,St,yt,U=class extends Map{constructor(t,e){super();i(this,"handleUpdate");i(this,"updates",new Map);i(this,"sortList",null);i(this,"sortCompareFunction",null);i(this,"fieldsToSort",[]);i(this,"sorted",[]);i(this,"TheItem");i(this,yt,this.update);i(this,St,this.getAsUpdates);i(this,ft,this.getAsInitialUpdated);i(this,mt,this.clear);e&&(this.handleUpdate=e),t&&this.update(t)}sort(){this.sortCompareFunction&&this.sorted.sort(this.sortCompareFunction)}[D](){return this.handleUpdate}[S](t){return this.handleUpdate=t}set Item(t){if(this.TheItem=t,this.size)for(let[e,r]of this)this.set(e,new t(this,r))}get Item(){return this.TheItem}update(t){let e=Object.assign([],{added:[],deleted:[]});if(t){let r=!1,o=this.TheItem,u=this.updates;for(let h of t)switch(h?.[0]){case"i":{let[,a,l]=h;if(l?(this.sortList=l,this.sortCompareFunction=Nt(l),this.fieldsToSort=[...new Set(Object.keys(l).map(c=>c.replace(/\..+/,"")))],r=!0):(this.sortList=null,this.sortCompareFunction=null,this.fieldsToSort=[]),this.size){let c=new Map;for(let d of a)c.set(d._id,d);for(let[d,T]of this){let w=c.get(d);if(w){let Lt=u.get(d);if(o)T.update(w);else{for(let Ot in Lt)delete T[Ot];Object.assign(T,w)}u.set(d,w),e.push(T),c.delete(d)}else o?T.delete():this.delete(d),u.delete(d),e.deleted.push(d)}for(let[d,T]of c){let w=o?new o(this,T):{...T};this.set(d,w),u.set(d,T),e.push(w),e.added.push(w)}this.sortList&&(this.sorted=a.map(d=>this.get(d._id)))}else for(let c of a){let d=o?new o(this,c):{...c};this.set(d._id,d),this.sorted.push(d),u.set(d._id,c),e.push(d),e.added.push(d)}break}case"c":case"u":{let[,a]=h,l=this.get(a._id);if(l){let c=h[2]===!0,d=c?Object.keys(a):h[2],T=u.get(l._id);if(o)l.update(a);else{if(!c)for(let w in T)delete l[w];Object.assign(l,a)}c&&(a=Object.assign(T,a)),this.sortList&&!r&&(!d||d.some(w=>this.fieldsToSort.includes(w)))&&(r=!0)}else l=o?new o(this,a):{...a},this.set(l._id,l),this.sorted.push(l),this.sortList&&(r=!0),e.added.push(l);u.set(l._id,a),e.push(l);break}case"d":{let[,a]=h,l=this.get(a);l&&(o?l.delete():this.delete(a),u.delete(a),Mt(this.sorted,l),e.deleted.push(a));break}default:this.clear()}r&&this.sort()}else this.clear();return this.handleUpdate?.(this,e,t?.[0]?t:null),this}getAsUpdates(){return this.size||this.sortList?[["i",[...this.updates.values()],this.sortList]]:null}getAsInitialUpdated(){return Object.assign([...this.sorted],{added:[...this.sorted],deleted:[]})}clear(){super.clear(),this.updates.clear(),this.sorted=[],this.sortList=null,this.sortCompareFunction=null,this.fieldsToSort=[]}valueOf(){return this.sorted}get[(yt=x,St=H,ft=A,mt=G,Symbol.toStringTag)](){return"SubscriptionMap"}};i(U,"updateSymbol",x),i(U,"getHandleUpdateSymbol",D),i(U,"setHandleUpdateSymbol",S),i(U,"getAsUpdatesSymbol",H),i(U,"getAsInitialUpdatedSymbol",A),i(U,"clearSymbol",G),i(U,"WithSubscription"),i(U,"Item");var B=class extends U{constructor(t,e,r,o=!0){super(null,r);i(this,"publicationName");i(this,"params");i(this,"subscription",null);this.publicationName=t,this.params=e,o&&this.subscribe()}subscribe(){this.subscription||(this.subscription=new E("map",this.publicationName,this.params,t=>this.update(t)))}get[m](){return this.subscribe}unsubscribe(){this.subscription&&(this.subscription.cancel(),this.subscription=null)}get[y](){return this.unsubscribe}renew(t,e){this.subscription&&(this.unsubscribe(),t&&(Array.isArray(t)?e=t:this.publicationName=t),e&&(this.params=e),this.subscribe())}get[L](){return this.renew}[P](){return this.subscription}get[Symbol.toStringTag](){return"SubscriptionMapWithSubscription"}};i(B,"subscribeSymbol",m),i(B,"unsubscribeSymbol",y),i(B,"renewSymbol",L),i(B,"getSubscriptionSymbol",P);U.WithSubscription=B;var rt=class{constructor(s,t){i(this,"_id");i(this,"map");this.map=s,this.update(t)}update(s){Object.assign(this,s)}delete(){this.map.delete(this._id)}};U.Item=rt;var X=Symbol("handleUpdate"),R=Symbol("updates"),gt,Ut,_=class{constructor(s,t){i(this,Ut);i(this,gt,null);t&&(this[X]=t),s&&this[x](s)}[(Ut=X,gt=R,D)](){return this[X]}[S](s){return this[X]=s}[x](s){if(s){for(let t in this[R])delete this[t];for(let t in s)this[t]=s[t];this[R]=s}else this[G]();return this[X]?.(this,this,this[R]),this}[H](){return this[R]&&{...this[R]}}[A](){return this.valueOf()}[G](){for(let s in this)delete this[s];this[R]=null}valueOf(){return this[R]&&this}get[Symbol.toStringTag](){return"SubscriptionObject"}};i(_,"updateSymbol",x),i(_,"getHandleUpdateSymbol",D),i(_,"setHandleUpdateSymbol",S),i(_,"getAsUpdatesSymbol",H),i(_,"getAsInitialUpdatedSymbol",A),i(_,"clearSymbol",G),i(_,"WithSubscription");var F=class extends _{constructor(t,e,r,o=!0){super(null,r);i(this,"publicationName");i(this,"params");i(this,"subscription",null);this.publicationName=t,this.params=e,o&&this[m]()}[m](){this.subscription||(this.subscription=new E("object",this.publicationName,this.params,t=>this[x](t)))}[y](){this.subscription&&(this.subscription.cancel(),this.subscription=null)}[L](t,e){this.subscription&&(this[y](),t&&(Array.isArray(t)?e=t:this.publicationName=t),e&&(this.params=e),this[m]())}[P](){return this.subscription}get[Symbol.toStringTag](){return"SubscriptionObjectWithSubscription"}};i(F,"subscribeSymbol",m),i(F,"unsubscribeSymbol",y),i(F,"renewSymbol",L),i(F,"getSubscriptionSymbol",P);_.WithSubscription=F;function vt(n){return Array.isArray(n)}var M,z,N,I,nt,Tt,V,K,wt,xt,ot,et=class et extends Wt{constructor(t,e){super();v(this,I);i(this,"name");i(this,"group");i(this,"value");i(this,"type");i(this,"publicationName");i(this,"params");i(this,"handle");i(this,"onBeforeInit");i(this,"preventBind");i(this,"emitUpdate");i(this,"isLoaded",!1);i(this,"isInited",!1);v(this,M);v(this,z);v(this,N);v(this,V,null);v(this,K,(t,e,r)=>{if(r)if(this.group.isLoaded){if(this.handle)switch(this.type){case"array":this.handle.call(this.group,e,this.group);break;case"map":this.handle.call(this.group,e,this.group);break;default:this.handle.call(this.group,e,this.group)}this.emitUpdate(e)}else b(this,V,e),this.isLoaded=!0,g.groupLoad(this.group);else this.isLoaded&&(this.isLoaded=!1,g.groupUnload(this.group));this.isInited||(this.isInited=!0,g.groupInit(this.group))});this.name=t.name,this.define(t,e)}define(t,e=this.group){if(!e)throw new Error("group is undefined");let{value:r,type:o="object",publicationName:u,params:h,handle:a,onBeforeInit:l,debounce:c=et.debounceLimit,preventBind:d}=t;if(this.group){if((!r||this.value===r)&&this.type===o&&this.publicationName===u&&JSON.stringify(this.params)===JSON.stringify(h)&&this.handle===a&&this.onBeforeInit===l)return f(this,I,nt).call(this,{debounceLimit:c,preventBind:d});this.detach(),delete this.value,delete this.publicationName,delete this.params}return this.type=o,this.handle=a,this.onBeforeInit=l,r?this.value=r:(this.publicationName=u??this.name,this.params=h??[]),f(this,I,nt).call(this,{debounceLimit:c,preventBind:d}),f(this,I,Tt).call(this,e),null}detach(){this.group&&(this.value?.[y](),this.isLoaded=!1,f(this,I,ot).call(this),delete this.group.values[this.name],It(this.group.values,this.value),delete this.group.items[this.name],It(this.group.items,this),delete this.group)}loaded(){return p(this,M)}inited(){return p(this,z)}unloaded(){return p(this,N)}subscribe(){if(this.value){if(this.value[m])return this.value[m]();{let t=this.value[D]();if(t){let e=this.value[A](),r=this.value[H]();switch(this.type){case"array":return t(this.value,e,r);case"map":return t(this.value,e,r);default:return t(this.value,e,r)}}}}return null}unsubscribe(){return this.value?.[y]?.()}renew(t,e){return this.value?.[L]?.(t,e)}valueOf(){return this.value}};M=new WeakMap,z=new WeakMap,N=new WeakMap,I=new WeakSet,nt=function({debounceLimit:t,preventBind:e}){let r=o=>{this.emit("update",this.value,o),this.group?.emit(`update.${this.name}`,this.value,o),this.group?.emitUpdate()};if(typeof t=="number"){let o,u,h=Ct(()=>{let a=!this.group;a&&(this.group=u),r(o),a&&delete this.group,o=void 0},t);this.emitUpdate=a=>{if(a!==void 0)if(vt(a))if(vt(o))for(let l of a)o.push(l);else o=Object.assign([...a],{added:[...a.added],deleted:[...a.deleted]});else typeof a=="object"?o?Object.assign(o,a):o={...a}:o=a;return u=this.group,h()}}else this.emitUpdate=r;this.preventBind===void 0?delete this.preventBind:this.preventBind=e},Tt=function(t){if(!this.group){switch(this.group=t,this.group.items.push(this),this.group.items[this.name]=this,(!p(this,M)||p(this,M).isFulfilled)&&b(this,M,new Y),(!p(this,z)||p(this,z).isFulfilled)&&b(this,z,new Y),(!p(this,N)||p(this,N).isFulfilled)&&b(this,N,new Y),this.type){case"array":{let e=p(this,K);this.value?this.value[S](e):this.value=new j(this.publicationName,this.params,e,!1);break}case"map":{let e=p(this,K);this.value?this.value[S](e):this.value=new B(this.publicationName,this.params,e,!1);break}default:{let e=p(this,K);this.value?this.value[S](e):this.value=new F(this.publicationName,this.params,e,!1)}}if(this.group.values.push(this.value),this.group.values[this.name]=this.value,this.onBeforeInit)switch(this.type){case"array":this.onBeforeInit.call(this.group,this.value);break;case"map":this.onBeforeInit.call(this.group,this.value);break;default:this.onBeforeInit.call(this.group,this.value)}}},V=new WeakMap,K=new WeakMap,wt=function(){if(p(this,V)){if(this.handle)switch(this.type){case"array":this.handle.call(this.group,p(this,V),this.group);break;case"map":this.handle.call(this.group,p(this,V),this.group);break;default:this.handle.call(this.group,p(this,V),this.group)}b(this,V,null),this.emit("load",this.value),p(this,M).resolve(this),p(this,N).isFulfilled&&b(this,N,new Y)}},xt=function(){this.emit("init",this.value),p(this,z).resolve(this)},ot=function(){if(this.handle)switch(this.type){case"array":this.handle.call(this.group,null,this.group);break;case"map":this.handle.call(this.group,null,this.group);break;default:this.handle.call(this.group,null,this.group)}this.emit("unload",this.value),p(this,N).resolve(this),p(this,M).isFulfilled&&b(this,M,new Y)},i(et,"debounceLimit",4),g.itemLoad=t=>{var e;return f(e=t,I,wt).call(e)},g.itemInit=t=>{var e;return f(e=t,I,xt).call(e)},g.itemUnload=t=>{var e;return f(e=t,I,ot).call(e)};var tt=et;function Et(n){return Array.isArray(n)}function Dt(n){if(Et(n)){let s=n.slice(),t={};if(t.name=s.shift(),typeof s[0]=="object"&&!Array.isArray(s[0])){if(t.value=s.shift(),t.type=t.value.toString().match(/Subscription(Object|Array|Map)/)?.[1].toLowerCase(),!t.type)throw new Error("Unknown value type")}else typeof s[0]=="string"&&(t.type=s.shift()),typeof s[0]=="string"&&(t.publicationName=s.shift()),Array.isArray(s[0])&&(t.params=s.shift());return typeof s[0]=="function"&&(t.handle=s.shift()),typeof s[0]=="function"&&(t.onBeforeInit=s.shift()),typeof s[0]=="number"&&(t.debounce=s.shift()),typeof s[0]=="boolean"&&(t.preventBind=s.shift()),t}return n.type??(n.type="object"),n}var W,Q,C,J,$,at,At,pt,it=class it extends $t{constructor(t,{target:e,debounce:r=it.debounceLimit,immediately:o}={}){super();v(this,$);i(this,"target");i(this,"emitUpdate");i(this,"items",[]);i(this,"values",[]);i(this,"isLoaded",!1);i(this,"isInited",!1);v(this,W);v(this,Q);v(this,C);v(this,J,null);this.applyOptions({target:e,debounceLimit:r}),b(this,Q,new Z),this.attach(t,!1,o)}applyOptions({target:t,debounceLimit:e}){if(this.target!==t){if(this.target)for(let r of this.items)r.isLoaded&&!r.preventBind&&delete this.target[r.name];if(this.target=t,this.target)for(let r of this.items)r.isLoaded&&!r.preventBind&&(this.target[r.name]=r.value)}if(p(this,J)!==e)if(b(this,J,e),typeof p(this,J)=="number"){let r=Vt(()=>this.emit("update",this.values),p(this,J));this.emitUpdate=()=>r()}else this.emitUpdate=()=>this.emit("update",this.values)}attach(t,e=this.isLoaded,r=!0){return e&&(this.isLoaded=!1),(!p(this,W)||p(this,W).isFulfilled)&&b(this,W,new Z),(!p(this,C)||p(this,C).isFulfilled)&&b(this,C,new Z),Promise.all(t.map(o=>new tt(Dt(o),this)).map(o=>(r&&o.subscribe(),o.loaded())))}detach(t,e=!0){for(let r of t)this.items[r]?.detach();e&&(f(this,$,pt).call(this),f(this,$,at).call(this))}redefine(t){let e=new Map(this.items.map(u=>[u.name,u])),r=[],o=[];for(let u of t)u=Dt(u),e.delete(u.name)?r.push(u):o.push(u);return this.isLoaded=!1,this.detach([...e.keys()],!1),Promise.all([...r.map(u=>{let h=this.items[u.name];return h.define(u),h.subscribe(),h.loaded()}),...o.length?[this.attach(o,!1)]:[]])}subscribe(){return this.items.map(t=>t.subscribe())}unsubscribe(){return this.items.map(t=>t.unsubscribe())}loaded(){return p(this,W)}inited(){return p(this,Q)}unloaded(){return p(this,C)}valueOf(){return this.values}[Symbol.iterator](){return this.values[Symbol.iterator]()}};W=new WeakMap,Q=new WeakMap,C=new WeakMap,J=new WeakMap,$=new WeakSet,at=function(){if(!this.isLoaded&&this.items.every(t=>t.isLoaded)){if(this.target)for(let t of this.items)t.preventBind||(this.target[t.name]=t.value);this.isLoaded=!0;for(let t of this.items)g.itemLoad(t);if(this.emit("load",this.values),this.isInited)if(this.items.length)for(let t of this.items)t.emitUpdate();else this.emitUpdate();p(this,W).resolve(this),p(this,C).isFulfilled&&b(this,C,new Z)}},At=function(){if(!this.isInited&&this.items.every(t=>t.isInited)){if(this.isInited=!0,this.isLoaded)if(this.items.length)for(let t of this.items)t.emitUpdate();else this.emitUpdate();for(let t of this.items)g.itemInit(t);this.emit("init",this.values),p(this,Q).resolve(this)}},pt=function(){if(this.isLoaded&&this.items.every(t=>!t.isLoaded)){if(this.target)for(let t of this.items)t.preventBind||delete this.target[t.name];this.isLoaded=!1;for(let t of this.items)g.itemUnload(t);if(this.emit("unload",this.values),this.items.length)for(let t of this.items)t.emitUpdate();else this.emitUpdate();p(this,C).resolve(this),p(this,W).isFulfilled&&b(this,W,new Z)}},i(it,"debounceLimit",8),g.groupLoad=t=>{var e;return f(e=t,$,at).call(e)},g.groupInit=t=>{var e;return f(e=t,$,At).call(e)},g.groupUnload=t=>{var e;return f(e=t,$,pt).call(e)};var Ht=it;export{E as Subscription,O as SubscriptionArray,j as SubscriptionArrayWithSubscription,Ht as SubscriptionGroup,U as SubscriptionMap,B as SubscriptionMapWithSubscription,_ as SubscriptionObject,F as SubscriptionObjectWithSubscription,G as clearSymbol,A as getAsInitialUpdatedSymbol,H as getAsUpdatesSymbol,kt as getHandleSubscriptionSymbol,D as getHandleUpdateSymbol,P as getSubscriptionSymbol,L as renewSymbol,Pt as setHandleSubscriptionSymbol,S as setHandleUpdateSymbol,m as subscribeSymbol,y as unsubscribeSymbol,x as updateSymbol};
1
+ var Jt=Object.defineProperty;var Tt=o=>{throw TypeError(o)};var qt=(o,s,t)=>s in o?Jt(o,s,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[s]=t;var i=(o,s,t)=>qt(o,typeof s!="symbol"?s+"":s,t),yt=(o,s,t)=>s.has(o)||Tt("Cannot "+t);var a=(o,s,t)=>(yt(o,s,"read from private field"),t?t.call(o):s.get(o)),f=(o,s,t)=>s.has(o)?Tt("Cannot add the same private member more than once"):s instanceof WeakSet?s.add(o):s.set(o,t),c=(o,s,t,e)=>(yt(o,s,"write to private field"),e?e.call(o,t):s.set(o,t),t),g=(o,s,t)=>(yt(o,s,"access private method"),t);var wt,et,k,q=class{constructor(s,t,e=[],r,n=!0){i(this,"i");i(this,"type");i(this,"publicationName");i(this,"args");i(this,"handler");i(this,"immediately");i(this,"isActive");i(this,"start",()=>{k.sendMessage("s-s",this.type,this.publicationName,this.i,this.args,this.immediately),this.immediately=!0});if(!k)throw new Error("Subscription is not binded to WS. Do Subscription.bindTo(ws) first");this.i=wt++,this.type=s,this.publicationName=t,this.args=e,this.handler=r,this.immediately=n&&!window.__initials,et.set(this.i,this),k.on("open",this.start),k.isOpen&&this.start(),window.__initials?(this.isActive=!0,this.handler(window.__initials.splice(0,1)[0])):this.isActive=!1}cancel(){et.delete(this.i),k.off("open",this.start),k.sendMessage("s-u",this.i)}static bindTo(s){k=s,wt=0,et=new Map,k.on("message:s-c",(t,e)=>{let r=et.get(t);r&&(r.isActive=!0,r.handler(e))}),k.on("close",()=>{for(let t of et.values())t.isActive=!1}),k.on("server-change",()=>{for(let t of et.values())t.handler(null)})}};function it(){}function lt(o,s=0,t={}){let{leading:e=!1,trailing:r=!0}=t,{maxWait:n=1/0}=t,p,h,u,d,b,l,m,S,ft=async()=>{let tt=Date.now();tt>=u?(p=void 0,u=void 0,clearTimeout(h),typeof m=="function"&&await m(),V.resolve(S),V.promise.isResolved=!0,l=e):(clearTimeout(p),p=setTimeout(ft,u-tt))},ut=Number.isFinite(n)?()=>{m===X&&(m=!1),X(),h=setTimeout(ut,n)}:null;async function X(){return S=await o.apply(d,b)}e&&typeof e=="boolean"&&(e=X),l=e,r&&typeof r=="boolean"&&(r=X),m=r;let V=Object.assign(function(...tt){return b=tt,d=this,u=Date.now()+s,m=r,V.promise.isResolved&&(V.promise=Object.assign(new Promise(Vt=>{V.resolve=Vt,typeof l=="function"&&(l(),l=!1,m===X&&(m=!1)),p||(p=setTimeout(ft,s),ut&&(h=setTimeout(ut,n)))}),{isResolved:!1})),V.promise},{callback:o,promise:Object.assign(Promise.resolve(),{isResolved:!0}),resolve:it,run:X,clear:async tt=>{clearTimeout(p),p=void 0,clearTimeout(h),V.promise.isResolved=!0,V.resolve(tt?await X():S)}});return V}lt.noop=Object.assign(()=>{},{callback:it,promise:Object.assign(Promise.resolve(),{isResolved:!0}),resolve:it,run:it,clear:it});function At(o,s,t,e,r=!0){return Array.isArray(o)&&(o=o.length),typeof e!="string"&&(r=e??!0,e=t),(r?`${o}\xA0`:"")+At.raw(o,s,t,e)}At.raw=(o,s,t,e=t)=>{o=Math.abs(o);let r=o%10,n=o%100;return r===1&&n!==11?s:r>=2&&r<=4&&!(n>=12&&n<=15)?t:e};function Q(o,s){let t=o.indexOf(s);return t>-1?(o.splice(t,1),!0):!1}var dt=new WeakMap,x=class extends Promise{constructor(t){let e,r;super((n,p)=>{e=n,r=p});i(this,"isPending",!0);i(this,"isFulfilled",!1);i(this,"isRejected",!1);i(this,"state","pending");i(this,"result");i(this,"resolve",t=>{if(this.isPending){this.isPending=!1,this.isFulfilled=!0,this.state="fulfilled",this.result=t;let e=dt.get(this);e&&(e.resolve.call(this,t),dt.delete(this))}});i(this,"reject",t=>{if(this.isPending){this.isPending=!1,this.isRejected=!0,this.state="rejected",this.result=t;let e=dt.get(this);e&&(e.reject.call(this,t),dt.delete(this))}});dt.set(this,{resolve:e,reject:r}),t?.(this.resolve,this.reject)}};function Ot(o){return[...new Set(o)]}var A=Symbol("update"),O=Symbol("getHandleUpdate"),U=Symbol("setHandleUpdate"),D=Symbol("getAsUpdates"),H=Symbol("getAsInitialUpdated"),L=Symbol("clear"),y=Symbol("subscribe"),I=Symbol("unsubscribe"),j=Symbol("renew"),G=Symbol("getSubscription"),zt=Symbol("getHandleSubscription"),Kt=Symbol("setHandleSubscription");var Xt=(o,s)=>o>s?1:o<s?-1:0,Qt=(o,s)=>o>s?-1:o<s?1:0,Dt,Ht,jt,Pt,P=class extends Array{constructor(t,e){super();i(this,"sorted",[]);i(this,"handleUpdate");i(this,"sortDirection",0);i(this,"sortCompareFunction",null);i(this,Pt,this.update);i(this,jt,this.getAsUpdates);i(this,Ht,this.getAsInitialUpdated);i(this,Dt,this.clear);e&&(this.handleUpdate=e),Array.isArray(t)&&this.update(t)}[O](){return this.handleUpdate}[U](t){return this.handleUpdate=t}update(t){let e=Object.assign([],{deleted:[],added:[]});if(t){let r=!1;for(let n of t)switch(n?.[0]){case"i":{let[,p,h]=n;h?(this.sortDirection=h,this.sortCompareFunction=h>0?Xt:Qt,r=!0):(this.sortDirection=0,this.sortCompareFunction=null),this.length=0;for(let u of p)this.push(u),e.push(u),e.added.push(u);break}case"a":{let[,p]=n;this.includes(p)||(this.push(p),this.sortDirection&&(r=!0),e.push(p),e.added.push(p));break}case"d":{let[,p]=n;Q(this,p)&&e.deleted.push(p);break}default:this.clear()}r&&this.sortCompareFunction&&this.sort(this.sortCompareFunction)}else this.clear();return this.handleUpdate?.(this,e,t?.[0]?t:null),this}getAsUpdates(){return this.length||this.sortDirection?[["i",[...this],this.sortDirection]]:null}getAsInitialUpdated(){return Object.assign([...this.sorted],{added:[...this.sorted],deleted:[]})}clear(){this.length=0,this.sortDirection=0,this.sortCompareFunction=null}valueOf(){return this}get[(Pt=A,jt=D,Ht=H,Dt=L,Symbol.toStringTag)](){return"SubscriptionArray"}};i(P,"updateSymbol",A),i(P,"getHandleUpdateSymbol",O),i(P,"setHandleUpdateSymbol",U),i(P,"getAsUpdatesSymbol",D),i(P,"getAsInitialUpdatedSymbol",H),i(P,"clearSymbol",L),i(P,"WithSubscription");var B=class extends P{constructor(t,e,r,n=!0){super(null,r);i(this,"publicationName");i(this,"params");i(this,"subscription",null);this.publicationName=t,this.params=e,n&&this.subscribe()}subscribe(){this.subscription||(this.subscription=new q("array",this.publicationName,this.params,t=>this.update(t)))}get[y](){return this.subscribe}unsubscribe(){this.subscription&&(this.subscription.cancel(),this.subscription=null)}get[I](){return this.unsubscribe}renew(t,e){this.subscription&&(this.unsubscribe(),t&&(Array.isArray(t)?e=t:this.publicationName=t),e&&(this.params=e),this.subscribe())}get[j](){return this.renew}[G](){return this.subscription}get[Symbol.toStringTag](){return"SubscriptionArrayWithSubscription"}};i(B,"subscribeSymbol",y),i(B,"unsubscribeSymbol",I),i(B,"renewSymbol",j),i(B,"getSubscriptionSymbol",G);P.WithSubscription=B;import te from"eventemitter3";var v={};import Zt from"eventemitter3";function Yt(o){let s=document.createElement("script");s.textContent=`window.__insite_subscription_map_sort_function = function sort(a, b) { return ${Object.entries(o).map(([e,r])=>r>0?`a.${e} > b.${e} ? 1 : a.${e} < b.${e} ? -1 :`:`a.${e} < b.${e} ? 1 : a.${e} > b.${e} ? -1 :`).concat("0").join(" ")};}`,document.head.append(s);let t=window.__insite_subscription_map_sort_function;return s.remove(),delete window.__insite_subscription_map_sort_function,t}var _t,Lt,kt,Gt,st,Y,rt,T=class extends Map{constructor(t,e){super();i(this,"handleUpdate");f(this,st,new Map);i(this,"sortList",null);i(this,"sortCompareFunction",null);f(this,Y,[]);i(this,"sorted",[]);f(this,rt);i(this,Gt,this.update);i(this,kt,this.getAsUpdates);i(this,Lt,this.getAsInitialUpdated);i(this,_t,this.clear);e&&(this.handleUpdate=e),t&&this.update(t)}sort(){this.sortCompareFunction&&this.sorted.sort(this.sortCompareFunction)}[O](){return this.handleUpdate}[U](t){return this.handleUpdate=t}set Item(t){if(c(this,rt,t),this.size)for(let[e,r]of this)this.set(e,new t(this,r))}get Item(){return a(this,rt)}update(t){let e=Object.assign([],{added:[],deleted:[]});if(t){let r=!1,n=a(this,rt),p=a(this,st);for(let h of t)switch(h?.[0]){case"i":{let[,u,d]=h;if(d?(this.sortList=d,this.sortCompareFunction=Yt(d),c(this,Y,Ot(Object.keys(d).map(b=>b.replace(/\..+/,"")))),r=!0):(this.sortList=null,this.sortCompareFunction=null,c(this,Y,[])),this.size){let b=new Map;for(let l of u)b.set(l._id,l);for(let[l,m]of this){let S=b.get(l);if(S){let ft=p.get(l);if(n)m.update(S);else{for(let ut in ft)delete m[ut];Object.assign(m,S)}p.set(l,S),e.push(m),b.delete(l)}else n?m.delete():this.delete(l),p.delete(l),e.deleted.push(l)}for(let[l,m]of b){let S=n?new n(this,m):{...m};this.set(l,S),p.set(l,m),e.push(S),e.added.push(S)}this.sortList&&(this.sorted=u.map(l=>this.get(l._id)))}else for(let b of u){let l=n?new n(this,b):{...b};this.set(l._id,l),this.sorted.push(l),p.set(l._id,b),e.push(l),e.added.push(l)}break}case"c":case"u":{let[,u]=h,d=this.get(u._id);if(d){let b=h[2]===!0,l=b?Object.keys(u):h[2],m=p.get(d._id);if(n)d.update(u);else{if(!b)for(let S in m)delete d[S];Object.assign(d,u)}b&&(u=Object.assign(m,u)),this.sortList&&!r&&(!l||l.some(S=>a(this,Y).includes(S)))&&(r=!0)}else d=n?new n(this,u):{...u},this.set(d._id,d),this.sorted.push(d),this.sortList&&(r=!0),e.added.push(d);p.set(d._id,u),e.push(d);break}case"d":{let[,u]=h,d=this.get(u);d&&(n?d.delete():this.delete(u),p.delete(u),Q(this.sorted,d),e.deleted.push(u));break}default:this.clear()}r&&this.sort()}else this.clear();return this.handleUpdate?.(this,e,t?.[0]?t:null),this}getAsUpdates(){return this.size||this.sortList?[["i",[...a(this,st).values()],this.sortList]]:null}getAsInitialUpdated(){return Object.assign([...this.sorted],{added:[...this.sorted],deleted:[]})}clear(){super.clear(),a(this,st).clear(),this.sorted=[],this.sortList=null,this.sortCompareFunction=null,c(this,Y,[])}valueOf(){return this.sorted}get[(Gt=A,kt=D,Lt=H,_t=L,Symbol.toStringTag)](){return"SubscriptionMap"}};st=new WeakMap,Y=new WeakMap,rt=new WeakMap,i(T,"updateSymbol",A),i(T,"getHandleUpdateSymbol",O),i(T,"setHandleUpdateSymbol",U),i(T,"getAsUpdatesSymbol",D),i(T,"getAsInitialUpdatedSymbol",H),i(T,"clearSymbol",L),i(T,"WithSubscription"),i(T,"Item");var M=class extends T{constructor(t,e,r,n=!0){super(null,r);i(this,"publicationName");i(this,"params");i(this,"subscription",null);this.publicationName=t,this.params=e,n&&this.subscribe()}subscribe(){this.subscription||(this.subscription=new q("map",this.publicationName,this.params,t=>this.update(t)))}get[y](){return this.subscribe}unsubscribe(){this.subscription&&(this.subscription.cancel(),this.subscription=null)}get[I](){return this.unsubscribe}renew(t,e){this.subscription&&(this.unsubscribe(),t&&(Array.isArray(t)?e=t:this.publicationName=t),e&&(this.params=e),this.subscribe())}get[j](){return this.renew}[G](){return this.subscription}get[Symbol.toStringTag](){return"SubscriptionMapWithSubscription"}};i(M,"subscribeSymbol",y),i(M,"unsubscribeSymbol",I),i(M,"renewSymbol",j),i(M,"getSubscriptionSymbol",G);T.WithSubscription=M;var ct,gt=class{constructor(s,t){i(this,"_id");f(this,ct);c(this,ct,s),this.update(t)}update(s){Object.assign(this,s)}delete(){a(this,ct).delete(this._id)}};ct=new WeakMap;T.Item=gt;var ht=Symbol("handleUpdate"),z=Symbol("updates"),Bt,Mt,_=class{constructor(s,t){i(this,Mt);i(this,Bt,null);t&&(this[ht]=t),s&&this[A](s)}[(Mt=ht,Bt=z,O)](){return this[ht]}[U](s){return this[ht]=s}[A](s){if(s){for(let t in this[z])delete this[t];for(let t in s)this[t]=s[t];this[z]=s}else this[L]();return this[ht]?.(this,this,this[z]),this}[D](){return this[z]&&{...this[z]}}[H](){return this.valueOf()}[L](){for(let s in this)delete this[s];this[z]=null}valueOf(){return this[z]&&this}get[Symbol.toStringTag](){return"SubscriptionObject"}};i(_,"updateSymbol",A),i(_,"getHandleUpdateSymbol",O),i(_,"setHandleUpdateSymbol",U),i(_,"getAsUpdatesSymbol",D),i(_,"getAsInitialUpdatedSymbol",H),i(_,"clearSymbol",L),i(_,"WithSubscription");var ot,nt,$,F=class extends _{constructor(t,e,r,n=!0){super(null,r);f(this,ot);f(this,nt);f(this,$,null);c(this,ot,t),c(this,nt,e),n&&this[y]()}[y](){a(this,$)||c(this,$,new q("object",a(this,ot),a(this,nt),t=>this[A](t)))}[I](){a(this,$)&&(a(this,$).cancel(),c(this,$,null))}[j](t,e){a(this,$)&&(this[I](),t&&(Array.isArray(t)?e=t:c(this,ot,t)),e&&c(this,nt,e),this[y]())}[G](){return a(this,$)}get[Symbol.toStringTag](){return"SubscriptionObjectWithSubscription"}};ot=new WeakMap,nt=new WeakMap,$=new WeakMap,i(F,"subscribeSymbol",y),i(F,"unsubscribeSymbol",I),i(F,"renewSymbol",j),i(F,"getSubscriptionSymbol",G);_.WithSubscription=F;function $t(o){return Array.isArray(o)}var W,K,N,w,xt,Ft,J,at,Wt,Nt,Ut,bt=class bt extends Zt{constructor(t,e){super();f(this,w);i(this,"name");i(this,"group");i(this,"value");i(this,"type");i(this,"publicationName");i(this,"params");i(this,"handle");i(this,"onBeforeInit");i(this,"preventBind");i(this,"emitUpdate");i(this,"isLoaded",!1);i(this,"isInited",!1);f(this,W);f(this,K);f(this,N);f(this,J,null);f(this,at,(t,e,r)=>{if(r)if(this.group.isLoaded){if(this.handle)switch(this.type){case"array":this.handle.call(this.group,e,this.group);break;case"map":this.handle.call(this.group,e,this.group);break;default:this.handle.call(this.group,e,this.group)}this.emitUpdate(e)}else c(this,J,e),this.isLoaded=!0,v.groupLoad(this.group);else this.isLoaded&&(this.isLoaded=!1,v.groupUnload(this.group));this.isInited||(this.isInited=!0,v.groupInit(this.group))});this.name=t.name,this.define(t,e)}define(t,e=this.group){if(!e)throw new Error("group is undefined");let{value:r,type:n="object",publicationName:p,params:h,handle:u,onBeforeInit:d,debounce:b=bt.debounceLimit,preventBind:l}=t;if(this.group){if((!r||this.value===r)&&this.type===n&&this.publicationName===p&&JSON.stringify(this.params)===JSON.stringify(h)&&this.handle===u&&this.onBeforeInit===d)return g(this,w,xt).call(this,{debounceLimit:b,preventBind:l});this.detach(),delete this.value,delete this.publicationName,delete this.params}return this.type=n,this.handle=u,this.onBeforeInit=d,r?this.value=r:(this.publicationName=p??this.name,this.params=h??[]),g(this,w,xt).call(this,{debounceLimit:b,preventBind:l}),g(this,w,Ft).call(this,e),null}detach(){this.group&&(this.value?.[I](),this.isLoaded=!1,g(this,w,Ut).call(this),delete this.group.values[this.name],Q(this.group.values,this.value),delete this.group.items[this.name],Q(this.group.items,this),delete this.group)}loaded(){return a(this,W)}inited(){return a(this,K)}unloaded(){return a(this,N)}subscribe(){if(this.value){if(this.value[y])return this.value[y]();{let t=this.value[O]();if(t){let e=this.value[H](),r=this.value[D]();switch(this.type){case"array":return t(this.value,e,r);case"map":return t(this.value,e,r);default:return t(this.value,e,r)}}}}return null}unsubscribe(){return this.value?.[I]?.()}renew(t,e){return this.value?.[j]?.(t,e)}valueOf(){return this.value}};W=new WeakMap,K=new WeakMap,N=new WeakMap,w=new WeakSet,xt=function({debounceLimit:t,preventBind:e}){let r=n=>{this.emit("update",this.value,n),this.group?.emit(`update.${this.name}`,this.value,n),this.group?.emitUpdate()};if(typeof t=="number"){let n,p,h=lt(()=>{let u=!this.group;u&&(this.group=p),r(n),u&&delete this.group,n=void 0},t);this.emitUpdate=u=>{if(u!==void 0)if($t(u))if($t(n))for(let d of u)n.push(d);else n=Object.assign([...u],{added:[...u.added],deleted:[...u.deleted]});else typeof u=="object"?n?Object.assign(n,u):n={...u}:n=u;return p=this.group,h()}}else this.emitUpdate=r;this.preventBind===void 0?delete this.preventBind:this.preventBind=e},Ft=function(t){if(!this.group){switch(this.group=t,this.group.items.push(this),this.group.items[this.name]=this,(!a(this,W)||a(this,W).isFulfilled)&&c(this,W,new x),(!a(this,K)||a(this,K).isFulfilled)&&c(this,K,new x),(!a(this,N)||a(this,N).isFulfilled)&&c(this,N,new x),this.type){case"array":{let e=a(this,at);this.value?this.value[U](e):this.value=new B(this.publicationName,this.params,e,!1);break}case"map":{let e=a(this,at);this.value?this.value[U](e):this.value=new M(this.publicationName,this.params,e,!1);break}default:{let e=a(this,at);this.value?this.value[U](e):this.value=new F(this.publicationName,this.params,e,!1)}}if(this.group.values.push(this.value),this.group.values[this.name]=this.value,this.onBeforeInit)switch(this.type){case"array":this.onBeforeInit.call(this.group,this.value);break;case"map":this.onBeforeInit.call(this.group,this.value);break;default:this.onBeforeInit.call(this.group,this.value)}}},J=new WeakMap,at=new WeakMap,Wt=function(){if(a(this,J)){if(this.handle)switch(this.type){case"array":this.handle.call(this.group,a(this,J),this.group);break;case"map":this.handle.call(this.group,a(this,J),this.group);break;default:this.handle.call(this.group,a(this,J),this.group)}c(this,J,null),this.emit("load",this.value),a(this,W).resolve(this),a(this,N).isFulfilled&&c(this,N,new x)}},Nt=function(){this.emit("init",this.value),a(this,K).resolve(this)},Ut=function(){if(this.handle)switch(this.type){case"array":this.handle.call(this.group,null,this.group);break;case"map":this.handle.call(this.group,null,this.group);break;default:this.handle.call(this.group,null,this.group)}this.emit("unload",this.value),a(this,N).resolve(this),a(this,W).isFulfilled&&c(this,W,new x)},i(bt,"debounceLimit",4),v.itemLoad=t=>{var e;return g(e=t,w,Wt).call(e)},v.itemInit=t=>{var e;return g(e=t,w,Nt).call(e)},v.itemUnload=t=>{var e;return g(e=t,w,Ut).call(e)};var mt=bt;function ee(o){return Array.isArray(o)}function Et(o){if(ee(o)){let s=o.slice(),t={};if(t.name=s.shift(),typeof s[0]=="object"&&!Array.isArray(s[0])){if(t.value=s.shift(),t.type=t.value.toString().match(/Subscription(Object|Array|Map)/)?.[1].toLowerCase(),!t.type)throw new Error("Unknown value type")}else typeof s[0]=="string"&&(t.type=s.shift()),typeof s[0]=="string"&&(t.publicationName=s.shift()),Array.isArray(s[0])&&(t.params=s.shift());return typeof s[0]=="function"&&(t.handle=s.shift()),typeof s[0]=="function"&&(t.onBeforeInit=s.shift()),typeof s[0]=="number"&&(t.debounce=s.shift()),typeof s[0]=="boolean"&&(t.preventBind=s.shift()),t}return o.type??(o.type="object"),o}var E,pt,R,Z,C,It,Ct,vt,St=class St extends te{constructor(t,{target:e,debounce:r=St.debounceLimit,immediately:n}={}){super();f(this,C);i(this,"target");i(this,"emitUpdate");i(this,"items",[]);i(this,"values",[]);i(this,"isLoaded",!1);i(this,"isInited",!1);f(this,E);f(this,pt);f(this,R);f(this,Z,null);this.applyOptions({target:e,debounceLimit:r}),c(this,pt,new x),this.attach(t,!1,n)}applyOptions({target:t,debounceLimit:e}){if(this.target!==t){if(this.target)for(let r of this.items)r.isLoaded&&!r.preventBind&&delete this.target[r.name];if(this.target=t,this.target)for(let r of this.items)r.isLoaded&&!r.preventBind&&(this.target[r.name]=r.value)}if(a(this,Z)!==e)if(c(this,Z,e),typeof a(this,Z)=="number"){let r=lt(()=>this.emit("update",this.values),a(this,Z));this.emitUpdate=()=>r()}else this.emitUpdate=()=>this.emit("update",this.values)}attach(t,e=this.isLoaded,r=!0){return e&&(this.isLoaded=!1),(!a(this,E)||a(this,E).isFulfilled)&&c(this,E,new x),(!a(this,R)||a(this,R).isFulfilled)&&c(this,R,new x),Promise.all(t.map(n=>new mt(Et(n),this)).map(n=>(r&&n.subscribe(),n.loaded())))}detach(t,e=!0){for(let r of t)this.items[r]?.detach();e&&(g(this,C,vt).call(this),g(this,C,It).call(this))}redefine(t){let e=new Map(this.items.map(p=>[p.name,p])),r=[],n=[];for(let p of t)p=Et(p),e.delete(p.name)?r.push(p):n.push(p);return this.isLoaded=!1,this.detach([...e.keys()],!1),Promise.all([...r.map(p=>{let h=this.items[p.name];return h.define(p),h.subscribe(),h.loaded()}),...n.length?[this.attach(n,!1)]:[]])}subscribe(){return this.items.map(t=>t.subscribe())}unsubscribe(){return this.items.map(t=>t.unsubscribe())}loaded(){return a(this,E)}inited(){return a(this,pt)}unloaded(){return a(this,R)}valueOf(){return this.values}[Symbol.iterator](){return this.values[Symbol.iterator]()}};E=new WeakMap,pt=new WeakMap,R=new WeakMap,Z=new WeakMap,C=new WeakSet,It=function(){if(!this.isLoaded&&this.items.every(t=>t.isLoaded)){if(this.target)for(let t of this.items)t.preventBind||(this.target[t.name]=t.value);this.isLoaded=!0;for(let t of this.items)v.itemLoad(t);if(this.emit("load",this.values),this.isInited)if(this.items.length)for(let t of this.items)t.emitUpdate();else this.emitUpdate();a(this,E).resolve(this),a(this,R).isFulfilled&&c(this,R,new x)}},Ct=function(){if(!this.isInited&&this.items.every(t=>t.isInited)){if(this.isInited=!0,this.isLoaded)if(this.items.length)for(let t of this.items)t.emitUpdate();else this.emitUpdate();for(let t of this.items)v.itemInit(t);this.emit("init",this.values),a(this,pt).resolve(this)}},vt=function(){if(this.isLoaded&&this.items.every(t=>!t.isLoaded)){if(this.target)for(let t of this.items)t.preventBind||delete this.target[t.name];this.isLoaded=!1;for(let t of this.items)v.itemUnload(t);if(this.emit("unload",this.values),this.items.length)for(let t of this.items)t.emitUpdate();else this.emitUpdate();a(this,R).resolve(this),a(this,E).isFulfilled&&c(this,E,new x)}},i(St,"debounceLimit",8),v.groupLoad=t=>{var e;return g(e=t,C,It).call(e)},v.groupInit=t=>{var e;return g(e=t,C,Ct).call(e)},v.groupUnload=t=>{var e;return g(e=t,C,vt).call(e)};var Rt=St;export{q as Subscription,P as SubscriptionArray,B as SubscriptionArrayWithSubscription,Rt as SubscriptionGroup,T as SubscriptionMap,M as SubscriptionMapWithSubscription,_ as SubscriptionObject,F as SubscriptionObjectWithSubscription,L as clearSymbol,H as getAsInitialUpdatedSymbol,D as getAsUpdatesSymbol,zt as getHandleSubscriptionSymbol,O as getHandleUpdateSymbol,G as getSubscriptionSymbol,j as renewSymbol,Kt as setHandleSubscriptionSymbol,U as setHandleUpdateSymbol,y as subscribeSymbol,I as unsubscribeSymbol,A as updateSymbol};
2
2
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../src/Subscription.ts", "../src/SubscriptionArray.ts", "../src/symbols.ts", "../src/SubscriptionGroup/SubscriptionGroup.ts", "../src/SubscriptionGroup/common.ts", "../src/SubscriptionGroup/SubscriptionGroupItem.ts", "../src/SubscriptionMap.ts", "../src/SubscriptionObject.ts"],
4
- "sourcesContent": ["import type { InSiteWebSocket } from \"insite-ws/client\";\n\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\n\ndeclare global {\n\tvar __initials: undefined | unknown[];// eslint-disable-line no-var\n}\n\n\nlet i: number;\nlet subscriptions: Map<number, Subscription>;\nlet ws: InSiteWebSocket;\n\n\nexport class Subscription {\n\tconstructor(type: \"array\" | \"map\" | \"object\", publicationName: string, args: unknown[] = [], handler: (updates: any) => void, immediately = true) {\n\t\t\n\t\tif (!ws)\n\t\t\tthrow new Error(\"Subscription is not binded to WS. Do Subscription.bindTo(ws) first\");\n\t\t\n\t\tthis.i = i++;\n\t\tthis.type = type;\n\t\tthis.publicationName = publicationName;\n\t\tthis.args = args;\n\t\tthis.handler = handler;\n\t\tthis.immediately = immediately && !window.__initials;\n\t\t\n\t\tsubscriptions.set(this.i, this);\n\t\t\n\t\tws.on(\"open\", this.start);\n\t\t\n\t\tif (ws.isOpen)\n\t\t\tthis.start();\n\t\t\n\t\tif (window.__initials) {\n\t\t\tthis.isActive = true;\n\t\t\tthis.handler(window.__initials.splice(0, 1)[0]);\n\t\t} else\n\t\t\tthis.isActive = false;\n\t\t\n\t}\n\t\n\ti;\n\ttype;\n\tpublicationName;\n\targs;\n\thandler;\n\timmediately;\n\tisActive;\n\t\n\tstart = () => {\n\t\t\n\t\tws.sendMessage(\"s-s\"/* subscription subscribe */, this.type, this.publicationName, this.i, this.args, this.immediately);\n\t\t\n\t\tthis.immediately = true;\n\t\t\n\t};\n\t\n\tcancel() {\n\t\t\n\t\tsubscriptions.delete(this.i);\n\t\t\n\t\tws.off(\"open\", this.start);\n\t\t\n\t\tws.sendMessage(\"s-u\"/* subscription unsubscribe */, this.i);\n\t\t\n\t}\n\t\n\t\n\tstatic bindTo(_ws: InSiteWebSocket) {\n\t\tws = _ws;\n\t\t\n\t\ti = 0;\n\t\t\n\t\tsubscriptions = new Map();\n\t\t\n\t\tws.on(\"message:s-c\"/* subscription changed */, (si: number, updates: any) => {\n\t\t\tconst subscription = subscriptions.get(si);\n\t\t\tif (subscription) {\n\t\t\t\tsubscription.isActive = true;\n\t\t\t\tsubscription.handler(updates);\n\t\t\t}\n\t\t\t\n\t\t});\n\t\t\n\t\tws.on(\"close\", () => {\n\t\t\t\n\t\t\tfor (const subscription of subscriptions.values())\n\t\t\t\tsubscription.isActive = false;\n\t\t\t\n\t\t});\n\t\t\n\t\tws.on(\"server-change\", () => {\n\t\t\t\n\t\t\tfor (const subscription of subscriptions.values())\n\t\t\t\tsubscription.handler(null);\n\t\t\t\n\t\t});\n\t\t\n\t}\n\t\n}\n", "import { removeOne } from \"@nesvet/n\";\nimport { Subscription } from \"./Subscription\";\nimport {\n\tclearSymbol,\n\tgetAsInitialUpdatedSymbol,\n\tgetAsUpdatesSymbol,\n\tgetHandleUpdateSymbol,\n\tgetSubscriptionSymbol,\n\trenewSymbol,\n\tsetHandleUpdateSymbol,\n\tsubscribeSymbol,\n\tunsubscribeSymbol,\n\tupdateSymbol\n} from \"./symbols\";\n\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\n\ntype Item = unknown;\n\nexport type Updated<I extends Item = Item> = {\n\tdeleted: I[];\n\tadded: I[];\n} & I[];\n\nexport type Updates<I extends Item = Item> =\n\t(\n\t\t[ \"a\"/* add */, newItem: I ] |\n\t\t[ \"d\"/* delete */, itemToDelete: I ] |\n\t\t[ \"i\"/* initial */, items: I[], sort?: -1 | 0 | 1 ] |\n\t\tnull\n\t)[] |\n\tnull;\n\nexport type UpdateHandler<I extends Item = Item> = (array: SubscriptionArray<I>, updated: Updated<I>, updates: Updates<I>) => void;\n\nconst ascSort = (a: any, b: any) => a > b ? 1 : a < b ? -1 : 0;\nconst descSort = (a: any, b: any) => a > b ? -1 : a < b ? 1 : 0;\n\n\nexport class SubscriptionArray<I extends Item = Item> extends Array<I> {\n\tconstructor(updates?: Updates<I>, onUpdate?: UpdateHandler<I>) {\n\t\tsuper();\n\t\t\n\t\tif (onUpdate)\n\t\t\tthis.handleUpdate = onUpdate;\n\t\t\n\t\tif (Array.isArray(updates))\n\t\t\tthis.update(updates);\n\t\t\n\t}\n\t\n\tsorted: I[] = [];\n\t\n\thandleUpdate;\n\t\n\tsortDirection: -1 | 0 | 1 = 0;\n\t\n\tsortCompareFunction: null | typeof ascSort | typeof descSort = null;\n\t\n\t[getHandleUpdateSymbol]() {\n\t\treturn this.handleUpdate;\n\t}\n\t\n\t[setHandleUpdateSymbol](handleUpdate: UpdateHandler<I>) {\n\t\treturn (this.handleUpdate = handleUpdate);\n\t}\n\t\n\tupdate(updates: Updates<I>) {\n\t\t\n\t\tconst updated: Updated<I> = Object.assign([], {\n\t\t\tdeleted: [],\n\t\t\tadded: []\n\t\t});\n\t\t\n\t\tif (updates) {\n\t\t\tlet shouldSort = false;\n\t\t\t\n\t\t\tfor (const update of updates)\n\t\t\t\tswitch (update?.[0]) {\n\t\t\t\t\tcase \"i\"/* initial */: {\n\t\t\t\t\t\tconst [ , array, sort ] = update;\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (sort) {\n\t\t\t\t\t\t\tthis.sortDirection = sort;\n\t\t\t\t\t\t\tthis.sortCompareFunction = sort > 0 ? ascSort : descSort;\n\t\t\t\t\t\t\tshouldSort = true;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis.sortDirection = 0;\n\t\t\t\t\t\t\tthis.sortCompareFunction = null;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tthis.length = 0;\n\t\t\t\t\t\t\n\t\t\t\t\t\tfor (const newItem of array) {\n\t\t\t\t\t\t\tthis.push(newItem);\n\t\t\t\t\t\t\tupdated.push(newItem);\n\t\t\t\t\t\t\tupdated.added.push(newItem);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tcase \"a\"/* add */: {\n\t\t\t\t\t\tconst [ , newItem ] = update;\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (!this.includes(newItem)) {\n\t\t\t\t\t\t\tthis.push(newItem);\n\t\t\t\t\t\t\tif (this.sortDirection)\n\t\t\t\t\t\t\t\tshouldSort = true;\n\t\t\t\t\t\t\tupdated.push(newItem);\n\t\t\t\t\t\t\tupdated.added.push(newItem);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tcase \"d\"/* delete */: {\n\t\t\t\t\t\tconst [ , itemToDelete ] = update;\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (removeOne(this, itemToDelete))\n\t\t\t\t\t\t\tupdated.deleted.push(itemToDelete);\n\t\t\t\t\t\t\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tthis.clear();\n\t\t\t\t}\n\t\t\t\n\t\t\tif (shouldSort && this.sortCompareFunction)\n\t\t\t\tthis.sort(this.sortCompareFunction);\n\t\t\t\n\t\t} else\n\t\t\tthis.clear();\n\t\t\n\t\tthis.handleUpdate?.(this, updated, updates?.[0] ? updates : null);\n\t\t\n\t\treturn this;\n\t}\n\t\n\t[updateSymbol] = this.update;\n\t\n\tgetAsUpdates(): Updates<I> {\n\t\treturn (\n\t\t\t(this.length || this.sortDirection) ?\n\t\t\t\t[ [ \"i\"/* initial */, [ ...this ], this.sortDirection ] ] :\n\t\t\t\tnull\n\t\t);\n\t}\n\t\n\t[getAsUpdatesSymbol] = this.getAsUpdates;\n\t\n\tgetAsInitialUpdated(): Updated<I> {\n\t\treturn Object.assign([ ...this.sorted ], {\n\t\t\tadded: [ ...this.sorted ],\n\t\t\tdeleted: []\n\t\t});\n\t}\n\t\n\t[getAsInitialUpdatedSymbol] = this.getAsInitialUpdated;\n\t\n\tclear() {\n\t\t\n\t\tthis.length = 0;\n\t\tthis.sortDirection = 0;\n\t\tthis.sortCompareFunction = null;\n\t\t\n\t}\n\t\n\t[clearSymbol] = this.clear;\n\t\n\tvalueOf() {\n\t\treturn this;\n\t}\n\t\n\tget [Symbol.toStringTag]() {\n\t\treturn \"SubscriptionArray\";\n\t}\n\t\n\t\n\tstatic updateSymbol = updateSymbol;\n\tstatic getHandleUpdateSymbol = getHandleUpdateSymbol;\n\tstatic setHandleUpdateSymbol = setHandleUpdateSymbol;\n\tstatic getAsUpdatesSymbol = getAsUpdatesSymbol;\n\tstatic getAsInitialUpdatedSymbol = getAsInitialUpdatedSymbol;\n\tstatic clearSymbol = clearSymbol;\n\tstatic WithSubscription: typeof SubscriptionArrayWithSubscription;\n\t\n}\n\n\nexport class SubscriptionArrayWithSubscription<I extends Item = Item> extends SubscriptionArray<I> {\n\tconstructor(publicationName: string, params: unknown[], onUpdate: UpdateHandler<I>, immediately = true) {\n\t\tsuper(null, onUpdate);\n\t\t\n\t\tthis.publicationName = publicationName;\n\t\tthis.params = params;\n\t\t\n\t\tif (immediately)\n\t\t\tthis.subscribe();\n\t\t\n\t}\n\t\n\tpublicationName;\n\tparams;\n\tsubscription: null | Subscription = null;\n\t\n\tsubscribe() {\n\t\t\n\t\tif (!this.subscription)\n\t\t\tthis.subscription = new Subscription(\"array\", this.publicationName, this.params, updates => this.update(updates as Updates<I>));\n\t\t\n\t}\n\t\n\tget [subscribeSymbol]() {\n\t\treturn this.subscribe;\n\t}\n\t\n\tunsubscribe() {\n\t\t\n\t\tif (this.subscription) {\n\t\t\tthis.subscription.cancel();\n\t\t\tthis.subscription = null;\n\t\t}\n\t\t\n\t}\n\t\n\tget [unsubscribeSymbol]() {\n\t\treturn this.unsubscribe;\n\t}\n\t\n\trenew(publicationName?: string, params?: unknown[]) {\n\t\t\n\t\tif (this.subscription) {\n\t\t\tthis.unsubscribe();\n\t\t\t\n\t\t\tif (publicationName)\n\t\t\t\tif (Array.isArray(publicationName))\n\t\t\t\t\tparams = publicationName;\n\t\t\t\telse\n\t\t\t\t\tthis.publicationName = publicationName;\n\t\t\t\n\t\t\tif (params)\n\t\t\t\tthis.params = params;\n\t\t\t\n\t\t\tthis.subscribe();\n\t\t}\n\t\t\n\t}\n\t\n\tget [renewSymbol]() {\n\t\treturn this.renew;\n\t}\n\t\n\t[getSubscriptionSymbol]() {\n\t\treturn this.subscription;\n\t}\n\t\n\tget [Symbol.toStringTag]() {\n\t\treturn \"SubscriptionArrayWithSubscription\";\n\t}\n\t\n\t\n\tstatic subscribeSymbol = subscribeSymbol;\n\tstatic unsubscribeSymbol = unsubscribeSymbol;\n\tstatic renewSymbol = renewSymbol;\n\tstatic getSubscriptionSymbol = getSubscriptionSymbol;\n\t\n}\n\nSubscriptionArray.WithSubscription = SubscriptionArrayWithSubscription;\n", "export const updateSymbol = Symbol(\"update\");\nexport const getHandleUpdateSymbol = Symbol(\"getHandleUpdate\");\nexport const setHandleUpdateSymbol = Symbol(\"setHandleUpdate\");\nexport const getAsUpdatesSymbol = Symbol(\"getAsUpdates\");\nexport const getAsInitialUpdatedSymbol = Symbol(\"getAsInitialUpdated\");\nexport const clearSymbol = Symbol(\"clear\");\nexport const subscribeSymbol = Symbol(\"subscribe\");\nexport const unsubscribeSymbol = Symbol(\"unsubscribe\");\nexport const renewSymbol = Symbol(\"renew\");\nexport const getSubscriptionSymbol = Symbol(\"getSubscription\");\nexport const getHandleSubscriptionSymbol = Symbol(\"getHandleSubscription\");\nexport const setHandleSubscriptionSymbol = Symbol(\"setHandleSubscription\");\n", "import EventEmitter from \"eventemitter3\";\nimport { debounce, StatefulPromise } from \"@nesvet/n\";\nimport { privates } from \"./common\";\nimport { SubscriptionGroupItem } from \"./SubscriptionGroupItem\";\nimport {\n\tDefinition,\n\tParseValues,\n\tSubscriptionHandle,\n\tSubscriptionOnBeforeInit,\n\tSubscriptionType,\n\tTupleDefinition,\n\tUnparsedDefinition\n} from \"./types\";\n\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\n\nfunction isTupleDefinition<T extends SubscriptionType>(definition: UnparsedDefinition<T>): definition is TupleDefinition {\n\treturn Array.isArray(definition);\n}\n\ntype Target = any;\n\ntype Options = {\n\ttarget?: Target;\n\tdebounce?: number;\n\timmediately?: boolean;\n};\n\n\nfunction parseDefinition<T extends SubscriptionType>(definition: UnparsedDefinition<T>) {\n\tif (isTupleDefinition(definition)) {\n\t\tconst args = definition.slice();\n\t\t\n\t\tconst parsed: Partial<Definition<T>> = {};\n\t\t\n\t\tparsed.name = args.shift() as Definition<T>[\"name\"];\n\t\tif (typeof args[0] == \"object\" && !Array.isArray(args[0])) {\n\t\t\tparsed.value = args.shift() as Definition<T>[\"value\"];\n\t\t\tparsed.type = parsed.value!.toString().match(/Subscription(Object|Array|Map)/)?.[1].toLowerCase() as Definition<T>[\"type\"];\n\t\t\tif (!parsed.type)\n\t\t\t\tthrow new Error(\"Unknown value type\");\n\t\t} else {\n\t\t\tif (typeof args[0] == \"string\")\n\t\t\t\tparsed.type = args.shift() as Definition<T>[\"type\"];\n\t\t\tif (typeof args[0] == \"string\")\n\t\t\t\tparsed.publicationName = args.shift() as Definition<T>[\"publicationName\"];\n\t\t\tif (Array.isArray(args[0]))\n\t\t\t\tparsed.params = args.shift() as Definition<T>[\"params\"];\n\t\t}\n\t\t\n\t\tif (typeof args[0] == \"function\")\n\t\t\tparsed.handle = args.shift() as SubscriptionHandle<T>;\n\t\tif (typeof args[0] == \"function\")\n\t\t\tparsed.onBeforeInit = args.shift() as SubscriptionOnBeforeInit<T>;\n\t\tif (typeof args[0] == \"number\")\n\t\t\tparsed.debounce = args.shift() as Definition<T>[\"debounce\"];\n\t\tif (typeof args[0] == \"boolean\")\n\t\t\tparsed.preventBind = args.shift() as Definition<T>[\"preventBind\"];\n\t\t\n\t\treturn parsed as Definition<T>;\n\t}\n\t\n\tdefinition.type ??= \"object\" as T;\n\t\n\treturn definition;\n}\n\nexport class SubscriptionGroup<DS extends UnparsedDefinition[] = any[]> extends EventEmitter {\n\tconstructor(\n\t\tdefinitions: DS,\n\t\t{\n\t\t\ttarget,\n\t\t\tdebounce: debounceLimit = SubscriptionGroup.debounceLimit,\n\t\t\timmediately\n\t\t}: Options = {}\n\t) {\n\t\tsuper();\n\t\t\n\t\tthis.applyOptions({ target, debounceLimit });\n\t\t\n\t\tthis.#initPromise = new StatefulPromise();\n\t\t\n\t\tthis.attach(definitions, false, immediately);\n\t\t\n\t}\n\t\n\ttarget?: Target;\n\temitUpdate!: () => void;\n\t\n\titems = [] as unknown as Record<string, SubscriptionGroupItem> & SubscriptionGroupItem[];\n\tvalues = [] as DS extends any ? (any[] & Record<string, any>) : ParseValues<DS>;\n\t\n\tisLoaded = false;\n\tisInited = false;\n\t\n\t#loadPromise!: StatefulPromise<SubscriptionGroup>;\n\t#initPromise: StatefulPromise<SubscriptionGroup>;\n\t#unloadPromise!: StatefulPromise<SubscriptionGroup>;\n\t\n\t#debounceLimit?: null | number = null;\n\t\n\tapplyOptions({ target, debounceLimit }: { target?: Target; debounceLimit?: number }) {\n\t\t\n\t\tif (this.target !== target) {\n\t\t\tif (this.target)\n\t\t\t\tfor (const item of this.items)\n\t\t\t\t\tif (item.isLoaded && !item.preventBind)\n\t\t\t\t\t\tdelete this.target[item.name];\n\t\t\t\n\t\t\tthis.target = target;\n\t\t\t\n\t\t\tif (this.target)\n\t\t\t\tfor (const item of this.items)\n\t\t\t\t\tif (item.isLoaded && !item.preventBind)\n\t\t\t\t\t\tthis.target[item.name] = item.value;\n\t\t}\n\t\t\n\t\tif (this.#debounceLimit !== debounceLimit) {\n\t\t\tthis.#debounceLimit = debounceLimit;\n\t\t\tif (typeof this.#debounceLimit == \"number\") {\n\t\t\t\tconst emitUpdateDebounced = debounce(() => this.emit(\"update\", this.values), this.#debounceLimit);\n\t\t\t\tthis.emitUpdate = () => emitUpdateDebounced();\n\t\t\t} else\n\t\t\t\tthis.emitUpdate = () => this.emit(\"update\", this.values);\n\t\t}\n\t\t\n\t}\n\t\n\tattach(definitions: DS, shouldReload = this.isLoaded, immediately = true) {\n\t\tif (shouldReload)\n\t\t\tthis.isLoaded = false;\n\t\t\n\t\tif (!this.#loadPromise || this.#loadPromise.isFulfilled)\n\t\t\tthis.#loadPromise = new StatefulPromise();\n\t\t\n\t\tif (!this.#unloadPromise || this.#unloadPromise.isFulfilled)\n\t\t\tthis.#unloadPromise = new StatefulPromise();\n\t\t\n\t\treturn Promise.all(definitions.map(definition =>\n\t\t\tnew SubscriptionGroupItem(parseDefinition(definition), this)\n\t\t).map(item => {\n\t\t\t\n\t\t\tif (immediately)\n\t\t\t\titem.subscribe();\n\t\t\t\n\t\t\treturn item.loaded();\n\t\t}));\n\t}\n\t\n\tdetach(names: string[], shouldUpdate = true) {\n\t\t\n\t\tfor (const name of names)\n\t\t\tthis.items[name]?.detach();\n\t\t\n\t\tif (shouldUpdate) {\n\t\t\tthis.#unload();\n\t\t\tthis.#load();\n\t\t}\n\t\t\n\t}\n\t\n\tredefine(definitions: DS) {\n\t\t\n\t\tconst itemsToDetach = new Map(this.items.map(item => [ item.name, item ]));\n\t\tconst definitionsToRedefine = [];\n\t\tconst definitionsToAttach = [] as unknown as DS;\n\t\t\n\t\tfor (let definition of definitions) {\n\t\t\tdefinition = parseDefinition(definition);\n\t\t\tif (itemsToDetach.delete(definition.name))\n\t\t\t\tdefinitionsToRedefine.push(definition);\n\t\t\telse\n\t\t\t\tdefinitionsToAttach.push(definition);\n\t\t}\n\t\t\n\t\tthis.isLoaded = false;\n\t\t\n\t\tthis.detach([ ...itemsToDetach.keys() ], false);\n\t\t\n\t\treturn Promise.all([\n\t\t\t...definitionsToRedefine.map(definition => {\n\t\t\t\tconst item = this.items[definition.name];\n\t\t\t\titem.define(definition);\n\t\t\t\t\n\t\t\t\titem.subscribe();\n\t\t\t\t\n\t\t\t\treturn item.loaded();\n\t\t\t}),\n\t\t\t...definitionsToAttach.length ? [ this.attach(definitionsToAttach, false) ] : []\n\t\t]);\n\t}\n\t\n\tsubscribe() {\n\t\treturn this.items.map(item => item.subscribe());\n\t}\n\t\n\tunsubscribe() {\n\t\treturn this.items.map(item => item.unsubscribe());\n\t}\n\t\n\t#load() {\n\t\t\n\t\tif (!this.isLoaded && this.items.every(item => item.isLoaded)) {\n\t\t\tif (this.target)\n\t\t\t\tfor (const item of this.items)\n\t\t\t\t\tif (!item.preventBind)\n\t\t\t\t\t\tthis.target[item.name] = item.value;\n\t\t\t\n\t\t\tthis.isLoaded = true;\n\t\t\t\n\t\t\tfor (const item of this.items)\n\t\t\t\tprivates.itemLoad!(item);\n\t\t\t\n\t\t\tthis.emit(\"load\", this.values);\n\t\t\t\n\t\t\tif (this.isInited)\n\t\t\t\tif (this.items.length)\n\t\t\t\t\tfor (const item of this.items)\n\t\t\t\t\t\titem.emitUpdate();\n\t\t\t\telse\n\t\t\t\t\tthis.emitUpdate();\n\t\t\t\n\t\t\t\n\t\t\tthis.#loadPromise.resolve(this);\n\t\t\t\n\t\t\tif (this.#unloadPromise.isFulfilled)\n\t\t\t\tthis.#unloadPromise = new StatefulPromise();\n\t\t}\n\t\t\n\t}\n\t\n\t#init() {\n\t\t\n\t\tif (!this.isInited && this.items.every(item => item.isInited)) {\n\t\t\tthis.isInited = true;\n\t\t\t\n\t\t\tif (this.isLoaded)\n\t\t\t\tif (this.items.length)\n\t\t\t\t\tfor (const item of this.items)\n\t\t\t\t\t\titem.emitUpdate();\n\t\t\t\telse\n\t\t\t\t\tthis.emitUpdate();\n\t\t\t\n\t\t\t\n\t\t\tfor (const item of this.items)\n\t\t\t\tprivates.itemInit!(item);\n\t\t\t\n\t\t\tthis.emit(\"init\", this.values);\n\t\t\t\n\t\t\tthis.#initPromise.resolve(this);\n\t\t}\n\t\t\n\t}\n\t\n\t#unload() {\n\t\t\n\t\tif (this.isLoaded && this.items.every(item => !item.isLoaded)) {\n\t\t\tif (this.target)\n\t\t\t\tfor (const item of this.items)\n\t\t\t\t\tif (!item.preventBind)\n\t\t\t\t\t\tdelete this.target[item.name];\n\t\t\t\n\t\t\tthis.isLoaded = false;\n\t\t\t\n\t\t\tfor (const item of this.items)\n\t\t\t\tprivates.itemUnload!(item);\n\t\t\t\n\t\t\tthis.emit(\"unload\", this.values);\n\t\t\t\n\t\t\tif (this.items.length)\n\t\t\t\tfor (const item of this.items)\n\t\t\t\t\titem.emitUpdate();\n\t\t\telse\n\t\t\t\tthis.emitUpdate();\n\t\t\t\n\t\t\tthis.#unloadPromise.resolve(this);\n\t\t\t\n\t\t\tif (this.#loadPromise.isFulfilled)\n\t\t\t\tthis.#loadPromise = new StatefulPromise();\n\t\t}\n\t\t\n\t}\n\t\n\tloaded() {\n\t\treturn this.#loadPromise;\n\t}\n\t\n\tinited() {\n\t\treturn this.#initPromise;\n\t}\n\t\n\tunloaded() {\n\t\treturn this.#unloadPromise;\n\t}\n\t\n\tvalueOf() {\n\t\treturn this.values;\n\t}\n\t\n\t[Symbol.iterator]() {\n\t\treturn this.values[Symbol.iterator]();\n\t}\n\t\n\t\n\tstatic debounceLimit = 8;\n\t\n\tstatic {\n\t\t\n\t\tprivates.groupLoad = (group: SubscriptionGroup) => group.#load();\n\t\tprivates.groupInit = (group: SubscriptionGroup) => group.#init();\n\t\tprivates.groupUnload = (group: SubscriptionGroup) => group.#unload();\n\t\t\n\t}\n\t\n}\n\nexport { Options as SubscriptionGroupOptions, Target as SubscriptionGroupTarget };\n", "import type { SubscriptionGroup } from \"./SubscriptionGroup\";\nimport type { SubscriptionGroupItem } from \"./SubscriptionGroupItem\";\nimport type { SubscriptionType } from \"./types\";\n\n\nexport const privates: {\n\tgroupLoad?: (group: SubscriptionGroup) => void;\n\tgroupInit?: (group: SubscriptionGroup) => void;\n\tgroupUnload?: (group: SubscriptionGroup) => void;\n\titemLoad?: <T extends SubscriptionType>(item: SubscriptionGroupItem<T>) => void;\n\titemInit?: <T extends SubscriptionType>(item: SubscriptionGroupItem<T>) => void;\n\titemUnload?: <T extends SubscriptionType>(item: SubscriptionGroupItem<T>) => void;\n} = {};\n", "import EventEmitter from \"eventemitter3\";\nimport { debounce, removeOne, StatefulPromise } from \"@nesvet/n\";\nimport {\n\ttype Updated as SubscriptionArrayUpdated,\n\ttype UpdateHandler as SubscriptionArrayUpdateHandler,\n\ttype Updates as SubscriptionArrayUpdates,\n\tSubscriptionArrayWithSubscription\n} from \"../SubscriptionArray\";\nimport {\n\ttype Updated as SubscriptionMapUpdated,\n\ttype UpdateHandler as SubscriptionMapUpdateHandler,\n\ttype Updates as SubscriptionMapUpdates,\n\tSubscriptionMapWithSubscription\n} from \"../SubscriptionMap\";\nimport {\n\ttype Updated as SubscriptionObjectUpdated,\n\ttype UpdateHandler as SubscriptionObjectUpdateHandler,\n\ttype Updates as SubscriptionObjectUpdates,\n\tSubscriptionObjectWithSubscription\n} from \"../SubscriptionObject\";\nimport {\n\tgetAsInitialUpdatedSymbol,\n\tgetAsUpdatesSymbol,\n\tgetHandleUpdateSymbol,\n\trenewSymbol,\n\tsetHandleUpdateSymbol,\n\tsubscribeSymbol,\n\tunsubscribeSymbol\n} from \"../symbols\";\nimport { privates } from \"./common\";\nimport type { SubscriptionGroup } from \"./SubscriptionGroup\";\nimport type {\n\tDefinition,\n\tSubscriptionHandle,\n\tSubscriptionOnBeforeInit,\n\tSubscriptionType,\n\tSubscriptionUpdated,\n\tSubscriptionUpdates,\n\tSubscriptionValue\n} from \"./types\";\n\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\n\ntype HandleSubscription<T> = (_: any, updated: SubscriptionUpdated<T>, updates: SubscriptionUpdates<T>) => void;\n\nfunction isUpdatedMapOrArray(updated: SubscriptionUpdated<SubscriptionType>): updated is SubscriptionArrayUpdated | SubscriptionMapUpdated {\n\treturn Array.isArray(updated);\n}\n\n\nexport class SubscriptionGroupItem<T extends SubscriptionType = SubscriptionType, D extends Definition<T> = Definition<T>> extends EventEmitter {\n\tconstructor(definition: D, group: SubscriptionGroup) {\n\t\tsuper();\n\t\t\n\t\tthis.name = definition.name;\n\t\t\n\t\tthis.define(definition, group);\n\t\t\n\t}\n\t\n\tname;\n\tgroup?: SubscriptionGroup;\n\tvalue?: SubscriptionValue<T>;\n\ttype!: \"object\" | T;\n\tpublicationName!: Definition<T>[\"publicationName\"];\n\tparams!: Definition<T>[\"params\"];\n\thandle!: Definition<T>[\"handle\"];\n\tonBeforeInit!: Definition<T>[\"onBeforeInit\"];\n\tpreventBind!: Definition<T>[\"preventBind\"];\n\t\n\temitUpdate!: (updated?: SubscriptionUpdated<T>) => void;\n\t\n\tisLoaded = false;\n\tisInited = false;\n\t\n\t#loadPromise!: StatefulPromise<SubscriptionGroupItem<T, D>>;\n\t#initPromise!: StatefulPromise<SubscriptionGroupItem<T, D>>;\n\t#unloadPromise!: StatefulPromise<SubscriptionGroupItem<T, D>>;\n\t\n\tdefine(definition: Definition<T>, group: SubscriptionGroup | undefined = this.group) {\n\t\tif (!group)\n\t\t\tthrow new Error(\"group is undefined\");\n\t\t\n\t\tconst {\n\t\t\tvalue,\n\t\t\ttype = \"object\",\n\t\t\tpublicationName,\n\t\t\tparams,\n\t\t\thandle,\n\t\t\tonBeforeInit,\n\t\t\tdebounce: debounceLimit = SubscriptionGroupItem.debounceLimit,\n\t\t\tpreventBind\n\t\t} = definition;\n\t\t\n\t\tif (this.group) {\n\t\t\tif (\n\t\t\t\t(!value || this.value === value) &&\n\t\t\t\tthis.type === type &&\n\t\t\t\tthis.publicationName === publicationName &&\n\t\t\t\tJSON.stringify(this.params) === JSON.stringify(params) &&\n\t\t\t\tthis.handle === handle &&\n\t\t\t\tthis.onBeforeInit === onBeforeInit\n\t\t\t)\n\t\t\t\treturn this.#applyOptions({ debounceLimit, preventBind });\n\t\t\t\n\t\t\tthis.detach();\n\t\t\tdelete this.value;\n\t\t\tdelete this.publicationName;\n\t\t\tdelete this.params;\n\t\t}\n\t\t\n\t\tthis.type = type;\n\t\tthis.handle = handle;\n\t\tthis.onBeforeInit = onBeforeInit;\n\t\tif (value)\n\t\t\tthis.value = value;\n\t\telse {\n\t\t\tthis.publicationName = publicationName ?? this.name;\n\t\t\tthis.params = params ?? [];\n\t\t}\n\t\t\n\t\tthis.#applyOptions({ debounceLimit, preventBind });\n\t\t\n\t\tthis.#attachTo(group);\n\t\t\n\t\treturn null;\n\t}\n\t\n\t#applyOptions({ debounceLimit, preventBind }: { debounceLimit?: number; preventBind?: boolean }) {\n\t\t\n\t\tconst emitUpdate: typeof this.emitUpdate = updated => {\n\t\t\tthis.emit(\"update\", this.value, updated);\n\t\t\tthis.group?.emit(`update.${this.name}`, this.value, updated);\n\t\t\tthis.group?.emitUpdate();\n\t\t\t\n\t\t};\n\t\t\n\t\tif (typeof debounceLimit == \"number\") {\n\t\t\tlet debouncedUpdated: SubscriptionUpdated<T> | undefined;\n\t\t\tlet group: SubscriptionGroup;\n\t\t\t\n\t\t\tconst emitUpdateDebounced = debounce(() => {\n\t\t\t\t\n\t\t\t\tconst isDetached = !this.group;\n\t\t\t\t\n\t\t\t\tif (isDetached)\n\t\t\t\t\tthis.group = group;\n\t\t\t\t\n\t\t\t\temitUpdate(debouncedUpdated!);\n\t\t\t\t\n\t\t\t\tif (isDetached)\n\t\t\t\t\tdelete this.group;\n\t\t\t\t\n\t\t\t\tdebouncedUpdated = undefined;\n\t\t\t\t\n\t\t\t}, debounceLimit);\n\t\t\t\n\t\t\tthis.emitUpdate = updated => {\n\t\t\t\tif (updated !== undefined)\n\t\t\t\t\tif (isUpdatedMapOrArray(updated))\n\t\t\t\t\t\tif (isUpdatedMapOrArray(debouncedUpdated!))\n\t\t\t\t\t\t\tfor (const item of updated)\n\t\t\t\t\t\t\t\tdebouncedUpdated.push(item as any);\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\tdebouncedUpdated = Object.assign([ ...updated ], {\n\t\t\t\t\t\t\t\tadded: [ ...updated.added ],\n\t\t\t\t\t\t\t\tdeleted: [ ...updated.deleted ]\n\t\t\t\t\t\t\t}) as SubscriptionUpdated<T>;\n\t\t\t\t\telse if (typeof updated == \"object\")\n\t\t\t\t\t\tif (debouncedUpdated)\n\t\t\t\t\t\t\tObject.assign(debouncedUpdated, updated);\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\tdebouncedUpdated = { ...updated };\n\t\t\t\t\telse\n\t\t\t\t\t\tdebouncedUpdated = updated;\n\t\t\t\t\n\t\t\t\tgroup = this.group!;\n\t\t\t\t\n\t\t\t\treturn emitUpdateDebounced();\n\t\t\t};\n\t\t} else\n\t\t\tthis.emitUpdate = emitUpdate;\n\t\t\n\t\tif (this.preventBind === undefined)\n\t\t\tdelete this.preventBind;\n\t\telse\n\t\t\tthis.preventBind = preventBind;\n\t\t\n\t}\n\t\n\t#attachTo(group: SubscriptionGroup) {\n\t\tif (!this.group) {\n\t\t\tthis.group = group;\n\t\t\t\n\t\t\tthis.group.items.push(this);\n\t\t\tthis.group.items[this.name] = this;\n\t\t\t\n\t\t\tif (!this.#loadPromise || this.#loadPromise.isFulfilled)\n\t\t\t\tthis.#loadPromise = new StatefulPromise();\n\t\t\t\n\t\t\tif (!this.#initPromise || this.#initPromise.isFulfilled)\n\t\t\t\tthis.#initPromise = new StatefulPromise();\n\t\t\t\n\t\t\tif (!this.#unloadPromise || this.#unloadPromise.isFulfilled)\n\t\t\t\tthis.#unloadPromise = new StatefulPromise();\n\t\t\t\n\t\t\tswitch (this.type) {\n\t\t\t\tcase \"array\": {\n\t\t\t\t\tconst handleSubscription = this.#handleSubscription as HandleSubscription<\"array\">;\n\t\t\t\t\tif (this.value)\n\t\t\t\t\t\t(this.value as SubscriptionArrayWithSubscription)[setHandleUpdateSymbol](handleSubscription);\n\t\t\t\t\telse\n\t\t\t\t\t\tthis.value = new SubscriptionArrayWithSubscription(this.publicationName!, this.params!, handleSubscription, false) as SubscriptionValue<T>;\n\t\t\t\t\tbreak;\n\t\t\t\t} case \"map\": {\n\t\t\t\t\tconst handleSubscription = this.#handleSubscription as HandleSubscription<\"map\">;\n\t\t\t\t\tif (this.value)\n\t\t\t\t\t\t(this.value as SubscriptionMapWithSubscription)[setHandleUpdateSymbol](handleSubscription);\n\t\t\t\t\telse\n\t\t\t\t\t\tthis.value = new SubscriptionMapWithSubscription(this.publicationName!, this.params!, handleSubscription, false) as SubscriptionValue<T>;\n\t\t\t\t\tbreak;\n\t\t\t\t} default: {\n\t\t\t\t\tconst handleSubscription = this.#handleSubscription as HandleSubscription<\"object\">;\n\t\t\t\t\tif (this.value)\n\t\t\t\t\t\t(this.value as SubscriptionObjectWithSubscription)[setHandleUpdateSymbol](handleSubscription);\n\t\t\t\t\telse\n\t\t\t\t\t\tthis.value = new SubscriptionObjectWithSubscription(this.publicationName!, this.params!, handleSubscription, false) as SubscriptionValue<T>;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tthis.group.values.push(this.value);\n\t\t\tthis.group.values[this.name] = this.value;\n\t\t\t\n\t\t\tif (this.onBeforeInit)\n\t\t\t\tswitch (this.type) {\n\t\t\t\t\tcase \"array\":\n\t\t\t\t\t\t(this.onBeforeInit as SubscriptionOnBeforeInit<\"array\">).call(this.group, this.value as SubscriptionArrayWithSubscription);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"map\":\n\t\t\t\t\t\t(this.onBeforeInit as SubscriptionOnBeforeInit<\"map\">).call(this.group, this.value as SubscriptionMapWithSubscription);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\t(this.onBeforeInit as SubscriptionOnBeforeInit<\"object\">).call(this.group, this.value as SubscriptionObjectWithSubscription);\n\t\t\t\t}\n\t\t}\n\t\t\n\t}\n\t\n\tdetach() {\n\t\t\n\t\tif (this.group) {\n\t\t\tthis.value?.[unsubscribeSymbol]();\n\t\t\t\n\t\t\tthis.isLoaded = false;\n\t\t\tthis.#unload();\n\t\t\t\n\t\t\tdelete this.group.values[this.name];\n\t\t\tremoveOne(this.group.values, this.value);\n\t\t\tdelete this.group.items[this.name];\n\t\t\tremoveOne(this.group.items, this);\n\t\t\t\n\t\t\tdelete this.group;\n\t\t}\n\t\t\n\t}\n\t\n\t#loadUpdated: null | SubscriptionUpdated<T> = null;\n\t\n\t#handleSubscription: HandleSubscription<T> = (_, updated, updates) => {\n\t\tif (updates)\n\t\t\tif (this.group!.isLoaded) {\n\t\t\t\tif (this.handle)\n\t\t\t\t\tswitch (this.type) {\n\t\t\t\t\t\tcase \"array\":\n\t\t\t\t\t\t\t(this.handle as SubscriptionHandle<\"array\">).call(this.group!, updated as SubscriptionArrayUpdated, this.group!);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"map\":\n\t\t\t\t\t\t\t(this.handle as SubscriptionHandle<\"map\">).call(this.group!, updated as SubscriptionMapUpdated, this.group!);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t(this.handle as SubscriptionHandle<\"object\">).call(this.group!, updated as SubscriptionObjectUpdated, this.group!);\n\t\t\t\t\t}\n\t\t\t\tthis.emitUpdate(updated);\n\t\t\t} else {\n\t\t\t\tthis.#loadUpdated = updated;\n\t\t\t\tthis.isLoaded = true;\n\t\t\t\tprivates.groupLoad!(this.group!);\n\t\t\t}\n\t\telse if (this.isLoaded) {\n\t\t\tthis.isLoaded = false;\n\t\t\tprivates.groupUnload!(this.group!);\n\t\t}\n\t\t\n\t\tif (!this.isInited) {\n\t\t\tthis.isInited = true;\n\t\t\tprivates.groupInit!(this.group!);\n\t\t}\n\t\t\n\t};\n\t\n\t#load() {\n\t\t\n\t\tif (this.#loadUpdated) {\n\t\t\tif (this.handle)\n\t\t\t\tswitch (this.type) {\n\t\t\t\t\tcase \"array\":\n\t\t\t\t\t\t(this.handle as SubscriptionHandle<\"array\">).call(this.group!, this.#loadUpdated as SubscriptionArrayUpdated, this.group!);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"map\":\n\t\t\t\t\t\t(this.handle as SubscriptionHandle<\"map\">).call(this.group!, this.#loadUpdated as SubscriptionMapUpdated, this.group!);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\t(this.handle as SubscriptionHandle<\"object\">).call(this.group!, this.#loadUpdated as SubscriptionObjectUpdated, this.group!);\n\t\t\t\t}\n\t\t\t\n\t\t\tthis.#loadUpdated = null;\n\t\t\t\n\t\t\tthis.emit(\"load\", this.value);\n\t\t\t\n\t\t\tthis.#loadPromise.resolve(this);\n\t\t\t\n\t\t\tif (this.#unloadPromise.isFulfilled)\n\t\t\t\tthis.#unloadPromise = new StatefulPromise();\n\t\t}\n\t\t\n\t}\n\t\n\t#init() {\n\t\t\n\t\tthis.emit(\"init\", this.value);\n\t\t\n\t\tthis.#initPromise.resolve(this);\n\t\t\n\t}\n\t\n\t#unload() {\n\t\t\n\t\tif (this.handle)\n\t\t\tswitch (this.type) {\n\t\t\t\tcase \"array\":\n\t\t\t\t\t(this.handle as SubscriptionHandle<\"array\">).call(this.group!, null, this.group!);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"map\":\n\t\t\t\t\t(this.handle as SubscriptionHandle<\"map\">).call(this.group!, null, this.group!);\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\t(this.handle as SubscriptionHandle<\"object\">).call(this.group!, null, this.group!);\n\t\t\t}\n\t\t\n\t\tthis.emit(\"unload\", this.value);\n\t\t\n\t\tthis.#unloadPromise.resolve(this);\n\t\t\n\t\tif (this.#loadPromise.isFulfilled)\n\t\t\tthis.#loadPromise = new StatefulPromise();\n\t\t\n\t}\n\t\n\tloaded() {\n\t\treturn this.#loadPromise;\n\t}\n\t\n\tinited() {\n\t\treturn this.#initPromise;\n\t}\n\t\n\tunloaded() {\n\t\treturn this.#unloadPromise;\n\t}\n\t\n\tsubscribe() {\n\t\t\n\t\tif (this.value)\n\t\t\tif (this.value[subscribeSymbol])\n\t\t\t\treturn this.value[subscribeSymbol]();\n\t\t\telse {\n\t\t\t\tconst handleUpdate = this.value[getHandleUpdateSymbol]();\n\t\t\t\t\n\t\t\t\tif (handleUpdate) {\n\t\t\t\t\tconst initialUpdated = this.value[getAsInitialUpdatedSymbol]();\n\t\t\t\t\tconst updates = this.value[getAsUpdatesSymbol]();\n\t\t\t\t\t\n\t\t\t\t\tswitch (this.type) {\n\t\t\t\t\t\tcase \"array\":\n\t\t\t\t\t\t\treturn (handleUpdate as SubscriptionArrayUpdateHandler)(this.value as SubscriptionArrayWithSubscription, initialUpdated as SubscriptionArrayUpdated, updates as SubscriptionArrayUpdates);\n\t\t\t\t\t\t\n\t\t\t\t\t\tcase \"map\":\n\t\t\t\t\t\t\treturn (handleUpdate as SubscriptionMapUpdateHandler)(this.value as SubscriptionMapWithSubscription, initialUpdated as SubscriptionMapUpdated, updates as SubscriptionMapUpdates);\n\t\t\t\t\t\t\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\treturn (handleUpdate as SubscriptionObjectUpdateHandler)(this.value as SubscriptionObjectWithSubscription, initialUpdated as SubscriptionObjectUpdated, updates as SubscriptionObjectUpdates);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\n\t\treturn null;\n\t}\n\t\n\tunsubscribe() {\n\t\treturn this.value?.[unsubscribeSymbol]?.();\n\t}\n\t\n\trenew(publicationName: Definition<T>[\"publicationName\"], params: Definition<T>[\"params\"]) {\n\t\treturn this.value?.[renewSymbol]?.(publicationName, params);\n\t}\n\t\n\tvalueOf() {\n\t\treturn this.value;\n\t}\n\t\n\t\n\tstatic debounceLimit = 4;\n\t\n\tstatic {\n\t\t\n\t\tprivates.itemLoad = <\n\t\t\tDP extends Definition<TP>,\n\t\t\tTP extends SubscriptionType\n\t\t>(item: SubscriptionGroupItem<TP, DP>) => item.#load();\n\t\tprivates.itemInit = <\n\t\t\tDP extends Definition<TP>,\n\t\t\tTP extends SubscriptionType\n\t\t>(item: SubscriptionGroupItem<TP, DP>) => item.#init();\n\t\tprivates.itemUnload = <\n\t\t\tDP extends Definition<TP>,\n\t\t\tTP extends SubscriptionType\n\t\t>(item: SubscriptionGroupItem<TP, DP>) => item.#unload();\n\t\t\n\t}\n\t\n}\n", "import { removeOne } from \"@nesvet/n\";\nimport { Subscription } from \"./Subscription\";\nimport {\n\tclearSymbol,\n\tgetAsInitialUpdatedSymbol,\n\tgetAsUpdatesSymbol,\n\tgetHandleUpdateSymbol,\n\tgetSubscriptionSymbol,\n\trenewSymbol,\n\tsetHandleUpdateSymbol,\n\tsubscribeSymbol,\n\tunsubscribeSymbol,\n\tupdateSymbol\n} from \"./symbols\";\n\n\ntype GenericItem = { _id: string } & Record<string, any>;// eslint-disable-line @typescript-eslint/no-explicit-any\n\ntype Item = GenericItem | SubscriptionMapItem;\n\nexport type Updated<I extends Item = Item> = {\n\tdeleted: string[];\n\tadded: I[];\n} & I[];\n\ntype SortList = Record<string, -1 | 1>;\n\nexport type Updates<I extends Item = Item> =\n\t(\n\t\t[ \"c\"/* create */, item: I ] |\n\t\t[ \"d\"/* delete */, _id: string ] |\n\t\t[ \"i\"/* initial */, items: I[], sortList?: null | SortList ] |\n\t\t[ \"u\"/* update */, itemUpdates: { _id: string } & Partial<I>, isAtomicOrUpdatedFields: string[] | true ] |\n\t\tnull\n\t)[] |\n\tnull;\n\nexport type UpdateHandler<I extends Item = Item> = (map: SubscriptionMap<I>, updated: Updated<I>, updates: Updates<I>) => void;\n\ndeclare global {\n\tvar __insite_subscription_map_sort_function: ((a: Item, b: Item) => -1 | 0 | 1) | undefined;// eslint-disable-line no-var, camelcase\n}\n\nfunction createSortFunction(sortList: SortList) {\n\t\n\tconst tempScript = document.createElement(\"script\");\n\t\n\ttempScript.textContent = `window.__insite_subscription_map_sort_function = function sort(a, b) { return ${\n\t\tObject.entries(sortList)\n\t\t\t.map(([ key, value ]) => value > 0 ? `a.${key} > b.${key} ? 1 : a.${key} < b.${key} ? -1 :` : `a.${key} < b.${key} ? 1 : a.${key} > b.${key} ? -1 :`)\n\t\t\t.concat(\"0\")\n\t\t\t.join(\" \")\n\t};}`;\n\t\n\tdocument.head.append(tempScript);\n\t\n\tconst sortFunction = window.__insite_subscription_map_sort_function!;\n\t\n\ttempScript.remove();\n\tdelete window.__insite_subscription_map_sort_function;\n\t\n\treturn sortFunction;\n}\n\n// function createSortFunction(sortList: SortList) {\n// return new Function(// eslint-disable-line no-new-func\n// \t\t\"a\"/* Item */,\n// \t\t\"b\"/* Item */,\n// \t\t`return ${\n// \t\t\tObject.entries(sortList)\n// \t\t\t\t.map(([ key, value ]) => value > 0 ? `a.${key} > b.${key} ? 1 : a.${key} < b.${key} ? -1 :` : `a.${key} < b.${key} ? 1 : a.${key} > b.${key} ? -1 :`)\n// \t\t\t\t.concat(\"0\")\n// \t\t\t\t.join(\" \")\n// \t\t}`\n// \t) as (a: Item, b: Item) => -1 | 0 | 1;\n// }\n\n\nexport class SubscriptionMap<I extends Item = Item> extends Map<string, I> {\n\tconstructor(updates?: Updates<I>, onUpdate?: UpdateHandler<I>) {\n\t\tsuper();\n\t\t\n\t\tif (onUpdate)\n\t\t\tthis.handleUpdate = onUpdate;\n\t\t\n\t\tif (updates)\n\t\t\tthis.update(updates);\n\t\t\n\t}\n\t\n\thandleUpdate;\n\t\n\t// private updates = new Map<string, { _id: string } & Partial<I>>();\n\tprivate updates = new Map<string, I>();\n\t\n\tsortList: null | SortList = null;\n\t\n\tsortCompareFunction: ((a: I, b: I) => number) | null = null;\n\t\n\tprivate fieldsToSort: string[] = [];\n\t\n\tsorted: I[] = [];\n\t\n\tsort() {\n\t\t\n\t\tif (this.sortCompareFunction)\n\t\t\tthis.sorted.sort(this.sortCompareFunction);\n\t\t\n\t}\n\t\n\t[getHandleUpdateSymbol]() {\n\t\treturn this.handleUpdate;\n\t}\n\t\n\t[setHandleUpdateSymbol](handleUpdate: UpdateHandler<I>) {\n\t\treturn (this.handleUpdate = handleUpdate);\n\t}\n\t\n\tprivate TheItem!: { new (map: SubscriptionMap<I>, updates: GenericItem): I };\n\t\n\tset Item(TheItem: { new (map: SubscriptionMap<I>, updates: GenericItem): I }) {\n\t\tthis.TheItem = TheItem;\n\t\t\n\t\tif (this.size)\n\t\t\tfor (const [ _id, item ] of this)\n\t\t\t\tthis.set(_id, new TheItem(this, item));\n\t\t\n\t}\n\t\n\tget Item() {\n\t\treturn this.TheItem;\n\t}\n\t\n\tupdate(updates: Updates<I>) {\n\t\t\n\t\tconst updated: Updated<I> = Object.assign([], {\n\t\t\tadded: [],\n\t\t\tdeleted: []\n\t\t});\n\t\t\n\t\tif (updates) {\n\t\t\tlet shouldSort = false;\n\t\t\t\n\t\t\tconst TheItem = this.TheItem;// eslint-disable-line prefer-destructuring\n\t\t\tconst prevUpdates = this.updates;\n\t\t\t\n\t\t\tfor (const update of updates)\n\t\t\t\tswitch (update?.[0]) {\n\t\t\t\t\tcase \"i\"/* initial */: {\n\t\t\t\t\t\tconst [ , array, sortList ] = update;\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (sortList) {\n\t\t\t\t\t\t\tthis.sortList = sortList;\n\t\t\t\t\t\t\tthis.sortCompareFunction = createSortFunction(sortList);\n\t\t\t\t\t\t\tthis.fieldsToSort = [ ...new Set(Object.keys(sortList).map(key => key.replace(/\\..+/, \"\"))) ];\n\t\t\t\t\t\t\tshouldSort = true;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis.sortList = null;\n\t\t\t\t\t\t\tthis.sortCompareFunction = null;\n\t\t\t\t\t\t\tthis.fieldsToSort = [];\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (this.size) {\n\t\t\t\t\t\t\tconst updatesMap = new Map<string, I>();\n\t\t\t\t\t\t\tfor (const itemUpdates of array)\n\t\t\t\t\t\t\t\tupdatesMap.set(itemUpdates._id, itemUpdates);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tfor (const [ _id, item ] of this) {\n\t\t\t\t\t\t\t\tconst itemUpdates = updatesMap.get(_id);\n\t\t\t\t\t\t\t\tif (itemUpdates) {\n\t\t\t\t\t\t\t\t\tconst prevItemUpdates = prevUpdates.get(_id);\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\tif (TheItem)\n\t\t\t\t\t\t\t\t\t\titem.update(itemUpdates);\n\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\tfor (const key in prevItemUpdates)// eslint-disable-line guard-for-in\n\t\t\t\t\t\t\t\t\t\t\tdelete item[key as keyof typeof item];\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\tObject.assign(item, itemUpdates);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\tprevUpdates.set(_id, itemUpdates);\n\t\t\t\t\t\t\t\t\tupdated.push(item);\n\t\t\t\t\t\t\t\t\tupdatesMap.delete(_id);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tif (TheItem)\n\t\t\t\t\t\t\t\t\t\titem.delete();\n\t\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t\t\tthis.delete(_id);\n\t\t\t\t\t\t\t\t\tprevUpdates.delete(_id);\n\t\t\t\t\t\t\t\t\tupdated.deleted.push(_id);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tfor (const [ _id, itemUpdates ] of updatesMap) {\n\t\t\t\t\t\t\t\tconst item = TheItem ? new TheItem(this, itemUpdates) : { ...itemUpdates };\n\t\t\t\t\t\t\t\tthis.set(_id, item);\n\t\t\t\t\t\t\t\tprevUpdates.set(_id, itemUpdates);\n\t\t\t\t\t\t\t\tupdated.push(item);\n\t\t\t\t\t\t\t\tupdated.added.push(item);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif (this.sortList)\n\t\t\t\t\t\t\t\tthis.sorted = array.map(newItem => this.get(newItem._id)!);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t} else\n\t\t\t\t\t\t\tfor (const itemUpdates of array) {\n\t\t\t\t\t\t\t\tconst item = (TheItem ? new TheItem(this, itemUpdates) : { ...itemUpdates }) as I;\n\t\t\t\t\t\t\t\tthis.set(item._id, item);\n\t\t\t\t\t\t\t\tthis.sorted.push(item);\n\t\t\t\t\t\t\t\tprevUpdates.set(item._id, itemUpdates);\n\t\t\t\t\t\t\t\tupdated.push(item);\n\t\t\t\t\t\t\t\tupdated.added.push(item);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tcase \"c\"/* create */:\n\t\t\t\t\tcase \"u\"/* update */: {\n\t\t\t\t\t\tlet [ , itemUpdates ] = update;\n\t\t\t\t\t\tlet item = this.get(itemUpdates._id);\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (item) {\n\t\t\t\t\t\t\tconst isAtomic = update[2] === true;\n\t\t\t\t\t\t\tconst updatedFields = isAtomic ? Object.keys(itemUpdates) : update[2] as string[];\n\t\t\t\t\t\t\tconst prevItemUpdates = prevUpdates.get(item._id)!;\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif (TheItem)\n\t\t\t\t\t\t\t\titem.update(itemUpdates);\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tif (!isAtomic)\n\t\t\t\t\t\t\t\t\tfor (const key in prevItemUpdates)// eslint-disable-line guard-for-in\n\t\t\t\t\t\t\t\t\t\tdelete item[key as keyof typeof item];\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tObject.assign(item, itemUpdates);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif (isAtomic)\n\t\t\t\t\t\t\t\titemUpdates = Object.assign(prevItemUpdates, itemUpdates);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif (this.sortList && !shouldSort && (!updatedFields || updatedFields.some(fieldName => this.fieldsToSort.includes(fieldName))))\n\t\t\t\t\t\t\t\tshouldSort = true;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\titem = (TheItem ? new TheItem(this, itemUpdates) : { ...itemUpdates }) as I;\n\t\t\t\t\t\t\tthis.set(item._id, item);\n\t\t\t\t\t\t\tthis.sorted.push(item);\n\t\t\t\t\t\t\tif (this.sortList)\n\t\t\t\t\t\t\t\tshouldSort = true;\n\t\t\t\t\t\t\tupdated.added.push(item);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tprevUpdates.set(item._id, itemUpdates as I);\n\t\t\t\t\t\tupdated.push(item);\n\t\t\t\t\t\t\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tcase \"d\"/* delete */: {\n\t\t\t\t\t\tconst [ , _id ] = update;\n\t\t\t\t\t\tconst itemToDelete = this.get(_id);\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (itemToDelete) {\n\t\t\t\t\t\t\tif (TheItem)\n\t\t\t\t\t\t\t\titemToDelete.delete();\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\tthis.delete(_id);\n\t\t\t\t\t\t\tprevUpdates.delete(_id);\n\t\t\t\t\t\t\tremoveOne(this.sorted, itemToDelete);\n\t\t\t\t\t\t\tupdated.deleted.push(_id);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tthis.clear();\n\t\t\t\t}\n\t\t\t\n\t\t\tif (shouldSort)\n\t\t\t\tthis.sort();\n\t\t\t\n\t\t} else\n\t\t\tthis.clear();\n\t\t\n\t\tthis.handleUpdate?.(this, updated, updates?.[0] ? updates : null);\n\t\t\n\t\treturn this;\n\t}\n\t\n\t[updateSymbol] = this.update;\n\t\n\tgetAsUpdates(): Updates<I> {\n\t\treturn (\n\t\t\t(this.size || this.sortList) ?\n\t\t\t\t[ [ \"i\"/* initial */, [ ...this.updates.values() ], this.sortList ] ] :\n\t\t\t\tnull\n\t\t);\n\t}\n\t\n\t[getAsUpdatesSymbol] = this.getAsUpdates;\n\t\n\tgetAsInitialUpdated(): Updated<I> {\n\t\treturn Object.assign([ ...this.sorted ], {\n\t\t\tadded: [ ...this.sorted ],\n\t\t\tdeleted: []\n\t\t});\n\t}\n\t\n\t[getAsInitialUpdatedSymbol] = this.getAsInitialUpdated;\n\t\n\tclear() {\n\t\t\n\t\tsuper.clear();\n\t\tthis.updates.clear();\n\t\tthis.sorted = [];\n\t\tthis.sortList = null;\n\t\tthis.sortCompareFunction = null;\n\t\tthis.fieldsToSort = [];\n\t\t\n\t}\n\t\n\t[clearSymbol] = this.clear;\n\t\n\tvalueOf() {\n\t\treturn this.sorted;\n\t}\n\t\n\tget [Symbol.toStringTag]() {\n\t\treturn \"SubscriptionMap\";\n\t}\n\t\n\t\n\tstatic updateSymbol = updateSymbol;\n\tstatic getHandleUpdateSymbol = getHandleUpdateSymbol;\n\tstatic setHandleUpdateSymbol = setHandleUpdateSymbol;\n\tstatic getAsUpdatesSymbol = getAsUpdatesSymbol;\n\tstatic getAsInitialUpdatedSymbol = getAsInitialUpdatedSymbol;\n\tstatic clearSymbol = clearSymbol;\n\tstatic WithSubscription: typeof SubscriptionMapWithSubscription;\n\tstatic Item: typeof SubscriptionMapItem;\n\t\n}\n\n\nexport class SubscriptionMapWithSubscription<I extends Item = Item> extends SubscriptionMap<I> {\n\tconstructor(publicationName: string, params: unknown[], onUpdate: UpdateHandler<I>, immediately = true) {\n\t\tsuper(null, onUpdate);\n\t\t\n\t\tthis.publicationName = publicationName;\n\t\tthis.params = params;\n\t\t\n\t\tif (immediately)\n\t\t\tthis.subscribe();\n\t\t\n\t}\n\t\n\tpublicationName;\n\tparams;\n\t\n\tsubscription: null | Subscription = null;\n\t\n\tsubscribe() {\n\t\t\n\t\tif (!this.subscription)\n\t\t\tthis.subscription = new Subscription(\"map\", this.publicationName, this.params, updates => this.update(updates as Updates<I>));\n\t\t\n\t}\n\t\n\tget [subscribeSymbol]() {\n\t\treturn this.subscribe;\n\t}\n\t\n\tunsubscribe() {\n\t\t\n\t\tif (this.subscription) {\n\t\t\tthis.subscription.cancel();\n\t\t\tthis.subscription = null;\n\t\t}\n\t\t\n\t}\n\t\n\tget [unsubscribeSymbol]() {\n\t\treturn this.unsubscribe;\n\t}\n\t\n\trenew(publicationName?: string, params?: unknown[]) {\n\t\t\n\t\tif (this.subscription) {\n\t\t\tthis.unsubscribe();\n\t\t\t\n\t\t\tif (publicationName)\n\t\t\t\tif (Array.isArray(publicationName))\n\t\t\t\t\tparams = publicationName;\n\t\t\t\telse\n\t\t\t\t\tthis.publicationName = publicationName;\n\t\t\t\n\t\t\tif (params)\n\t\t\t\tthis.params = params;\n\t\t\t\n\t\t\tthis.subscribe();\n\t\t}\n\t\t\n\t}\n\t\n\tget [renewSymbol]() {\n\t\treturn this.renew;\n\t}\n\t\n\t[getSubscriptionSymbol]() {\n\t\treturn this.subscription;\n\t}\n\t\n\tget [Symbol.toStringTag]() {\n\t\treturn \"SubscriptionMapWithSubscription\";\n\t}\n\t\n\t\n\tstatic subscribeSymbol = subscribeSymbol;\n\tstatic unsubscribeSymbol = unsubscribeSymbol;\n\tstatic renewSymbol = renewSymbol;\n\tstatic getSubscriptionSymbol = getSubscriptionSymbol;\n\t\n}\n\nSubscriptionMap.WithSubscription = SubscriptionMapWithSubscription;\n\n\nexport class SubscriptionMapItem {\n\tconstructor(map: SubscriptionMap, updates: GenericItem) {\n\t\tthis.map = map;\n\t\t\n\t\tthis.update(updates);\n\t\t\n\t}\n\t\n\t_id!: string;\n\t\n\tprivate map;\n\t\n\tupdate(updates: GenericItem) {\n\t\tObject.assign(this, updates);\n\t\t\n\t}\n\t\n\tdelete() {\n\t\t\n\t\tthis.map.delete(this._id);\n\t\t\n\t}\n\t\n}\n\nSubscriptionMap.Item = SubscriptionMapItem;\n", "import { Subscription } from \"./Subscription\";\nimport {\n\tclearSymbol,\n\tgetAsInitialUpdatedSymbol,\n\tgetAsUpdatesSymbol,\n\tgetHandleUpdateSymbol,\n\tgetSubscriptionSymbol,\n\trenewSymbol,\n\tsetHandleUpdateSymbol,\n\tsubscribeSymbol,\n\tunsubscribeSymbol,\n\tupdateSymbol\n} from \"./symbols\";\n\n\nconst handleUpdateSymbol = Symbol(\"handleUpdate\");\nconst updatesSymbol = Symbol(\"updates\");\n\nexport type Updated = Record<string, unknown>;\nexport type Updates = null | Record<string, unknown>;\nexport type UpdateHandler = (object: SubscriptionObject, updated: Updated, updates: Updates) => void;\n\n\nexport class SubscriptionObject {\n\tconstructor(updates?: Updates, onUpdate?: UpdateHandler) {\n\t\tif (onUpdate)\n\t\t\tthis[handleUpdateSymbol] = onUpdate;\n\t\t\n\t\tif (updates)\n\t\t\tthis[updateSymbol](updates);\n\t\t\n\t}\n\t\n\t[handleUpdateSymbol]?: UpdateHandler;\n\t\n\t[updatesSymbol]: Updates = null;\n\t\n\t[getHandleUpdateSymbol]() {\n\t\treturn this[handleUpdateSymbol];\n\t}\n\t\n\t[setHandleUpdateSymbol](handleUpdate: UpdateHandler) {\n\t\treturn (this[handleUpdateSymbol] = handleUpdate);\n\t}\n\t\n\t[updateSymbol](updates: Updates) {\n\t\tif (updates) {\n\t\t\tfor (const key in this[updatesSymbol])// eslint-disable-line guard-for-in\n\t\t\t\tdelete this[key];\n\t\t\tfor (const key in updates)// eslint-disable-line guard-for-in\n\t\t\t\tthis[key] = updates[key];\n\t\t\tthis[updatesSymbol] = updates;\n\t\t} else\n\t\t\tthis[clearSymbol]();\n\t\t\n\t\tthis[handleUpdateSymbol]?.(this, this, this[updatesSymbol]);\n\t\t\n\t\treturn this;\n\t}\n\t\n\t[getAsUpdatesSymbol](): Updates {\n\t\treturn this[updatesSymbol] && { ...this[updatesSymbol] };\n\t}\n\t\n\t[getAsInitialUpdatedSymbol](): Updated {\n\t\treturn this.valueOf()!;\n\t}\n\t\n\t[clearSymbol]() {\n\t\t\n\t\tfor (const key in this)// eslint-disable-line guard-for-in\n\t\t\tdelete this[key];\n\t\tthis[updatesSymbol] = null;\n\t\t\n\t}\n\t\n\tvalueOf() {\n\t\treturn this[updatesSymbol] && this;\n\t}\n\t\n\tget [Symbol.toStringTag]() {\n\t\treturn \"SubscriptionObject\";\n\t}\n\t\n\t[key: string]: unknown;\n\t\n\t\n\tstatic updateSymbol = updateSymbol;\n\tstatic getHandleUpdateSymbol = getHandleUpdateSymbol;\n\tstatic setHandleUpdateSymbol = setHandleUpdateSymbol;\n\tstatic getAsUpdatesSymbol = getAsUpdatesSymbol;\n\tstatic getAsInitialUpdatedSymbol = getAsInitialUpdatedSymbol;\n\tstatic clearSymbol = clearSymbol;\n\tstatic WithSubscription: typeof SubscriptionObjectWithSubscription;\n\t\n}\n\n\nexport class SubscriptionObjectWithSubscription extends SubscriptionObject {\n\tconstructor(publicationName: string, params: unknown[], onUpdate: UpdateHandler, immediately = true) {\n\t\tsuper(null, onUpdate);\n\t\t\n\t\tthis.publicationName = publicationName;\n\t\tthis.params = params;\n\t\t\n\t\tif (immediately)\n\t\t\tthis[subscribeSymbol]();\n\t\t\n\t}\n\t\n\tprivate publicationName;\n\tprivate params;\n\tprivate subscription: null | Subscription = null;\n\t\n\t[subscribeSymbol]() {\n\t\t\n\t\tif (!this.subscription)\n\t\t\tthis.subscription = new Subscription(\"object\", this.publicationName, this.params, updates => this[updateSymbol](updates as Updates));\n\t\t\n\t}\n\t\n\t[unsubscribeSymbol]() {\n\t\t\n\t\tif (this.subscription) {\n\t\t\tthis.subscription.cancel();\n\t\t\tthis.subscription = null;\n\t\t}\n\t\t\n\t}\n\t\n\t[renewSymbol](publicationName?: string, params?: unknown[]) {\n\t\t\n\t\tif (this.subscription) {\n\t\t\tthis[unsubscribeSymbol]();\n\t\t\t\n\t\t\tif (publicationName)\n\t\t\t\tif (Array.isArray(publicationName))\n\t\t\t\t\tparams = publicationName;\n\t\t\t\telse\n\t\t\t\t\tthis.publicationName = publicationName;\n\t\t\t\n\t\t\tif (params)\n\t\t\t\tthis.params = params;\n\t\t\t\n\t\t\tthis[subscribeSymbol]();\n\t\t}\n\t\t\n\t}\n\t\n\t[getSubscriptionSymbol]() {\n\t\treturn this.subscription;\n\t}\n\t\n\tget [Symbol.toStringTag]() {\n\t\treturn \"SubscriptionObjectWithSubscription\";\n\t}\n\t\n\t\n\tstatic subscribeSymbol = subscribeSymbol;\n\tstatic unsubscribeSymbol = unsubscribeSymbol;\n\tstatic renewSymbol = renewSymbol;\n\tstatic getSubscriptionSymbol = getSubscriptionSymbol;\n\t\n}\n\nSubscriptionObject.WithSubscription = SubscriptionObjectWithSubscription;\n"],
5
- "mappings": "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",
6
- "names": ["i", "subscriptions", "ws", "Subscription", "type", "publicationName", "args", "handler", "immediately", "__publicField", "_ws", "si", "updates", "subscription", "removeOne", "updateSymbol", "getHandleUpdateSymbol", "setHandleUpdateSymbol", "getAsUpdatesSymbol", "getAsInitialUpdatedSymbol", "clearSymbol", "subscribeSymbol", "unsubscribeSymbol", "renewSymbol", "getSubscriptionSymbol", "getHandleSubscriptionSymbol", "setHandleSubscriptionSymbol", "ascSort", "a", "b", "descSort", "_a", "_b", "_c", "_d", "SubscriptionArray", "updates", "onUpdate", "__publicField", "getHandleUpdateSymbol", "setHandleUpdateSymbol", "handleUpdate", "updated", "shouldSort", "update", "array", "sort", "newItem", "itemToDelete", "removeOne", "updateSymbol", "getAsUpdatesSymbol", "getAsInitialUpdatedSymbol", "clearSymbol", "SubscriptionArrayWithSubscription", "publicationName", "params", "immediately", "Subscription", "subscribeSymbol", "unsubscribeSymbol", "renewSymbol", "getSubscriptionSymbol", "EventEmitter", "debounce", "StatefulPromise", "privates", "EventEmitter", "debounce", "removeOne", "StatefulPromise", "removeOne", "createSortFunction", "sortList", "tempScript", "key", "value", "sortFunction", "_a", "_b", "_c", "_d", "SubscriptionMap", "updates", "onUpdate", "__publicField", "getHandleUpdateSymbol", "setHandleUpdateSymbol", "handleUpdate", "TheItem", "_id", "item", "updated", "shouldSort", "prevUpdates", "update", "array", "updatesMap", "itemUpdates", "prevItemUpdates", "newItem", "isAtomic", "updatedFields", "fieldName", "itemToDelete", "removeOne", "updateSymbol", "getAsUpdatesSymbol", "getAsInitialUpdatedSymbol", "clearSymbol", "SubscriptionMapWithSubscription", "publicationName", "params", "immediately", "Subscription", "subscribeSymbol", "unsubscribeSymbol", "renewSymbol", "getSubscriptionSymbol", "SubscriptionMapItem", "map", "handleUpdateSymbol", "updatesSymbol", "_a", "_b", "SubscriptionObject", "updates", "onUpdate", "__publicField", "updateSymbol", "getHandleUpdateSymbol", "setHandleUpdateSymbol", "handleUpdate", "key", "clearSymbol", "getAsUpdatesSymbol", "getAsInitialUpdatedSymbol", "SubscriptionObjectWithSubscription", "publicationName", "params", "immediately", "subscribeSymbol", "Subscription", "unsubscribeSymbol", "renewSymbol", "getSubscriptionSymbol", "isUpdatedMapOrArray", "updated", "_loadPromise", "_initPromise", "_unloadPromise", "_SubscriptionGroupItem_instances", "applyOptions_fn", "attachTo_fn", "_loadUpdated", "_handleSubscription", "load_fn", "init_fn", "unload_fn", "_SubscriptionGroupItem", "EventEmitter", "definition", "group", "__privateAdd", "__publicField", "_", "updates", "__privateSet", "privates", "value", "type", "publicationName", "params", "handle", "onBeforeInit", "debounceLimit", "preventBind", "__privateMethod", "unsubscribeSymbol", "removeOne", "__privateGet", "subscribeSymbol", "handleUpdate", "getHandleUpdateSymbol", "initialUpdated", "getAsInitialUpdatedSymbol", "getAsUpdatesSymbol", "renewSymbol", "emitUpdate", "debouncedUpdated", "emitUpdateDebounced", "debounce", "isDetached", "item", "StatefulPromise", "handleSubscription", "setHandleUpdateSymbol", "SubscriptionArrayWithSubscription", "SubscriptionMapWithSubscription", "SubscriptionObjectWithSubscription", "_a", "SubscriptionGroupItem", "isTupleDefinition", "definition", "parseDefinition", "args", "parsed", "_loadPromise", "_initPromise", "_unloadPromise", "_debounceLimit", "_SubscriptionGroup_instances", "load_fn", "init_fn", "unload_fn", "_SubscriptionGroup", "EventEmitter", "definitions", "target", "debounceLimit", "immediately", "__privateAdd", "__publicField", "__privateSet", "StatefulPromise", "item", "__privateGet", "emitUpdateDebounced", "debounce", "shouldReload", "SubscriptionGroupItem", "names", "shouldUpdate", "name", "__privateMethod", "itemsToDetach", "definitionsToRedefine", "definitionsToAttach", "privates", "group", "_a", "SubscriptionGroup"]
3
+ "sources": ["../src/Subscription.ts", "../../../../@nesvet/npm/n/src/noop.ts", "../../../../@nesvet/npm/n/src/debounce.ts", "../../../../@nesvet/npm/n/src/howmuch.ts", "../../../../@nesvet/npm/n/src/removeOne.ts", "../../../../@nesvet/npm/n/src/StatefulPromise.ts", "../../../../@nesvet/npm/n/src/unique.ts", "../src/symbols.ts", "../src/SubscriptionArray.ts", "../src/SubscriptionGroup/SubscriptionGroup.ts", "../src/SubscriptionGroup/common.ts", "../src/SubscriptionGroup/SubscriptionGroupItem.ts", "../src/SubscriptionMap.ts", "../src/SubscriptionObject.ts"],
4
+ "sourcesContent": ["import type { InSiteWebSocket } from \"insite-ws/client\";\n\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\n\ndeclare global {\n\tvar __initials: undefined | unknown[];// eslint-disable-line no-var\n}\n\n\nlet i: number;\nlet subscriptions: Map<number, Subscription>;\nlet ws: InSiteWebSocket;\n\n\nexport class Subscription {\n\tconstructor(type: \"array\" | \"map\" | \"object\", publicationName: string, args: unknown[] = [], handler: (updates: any) => void, immediately = true) {\n\t\t\n\t\tif (!ws)\n\t\t\tthrow new Error(\"Subscription is not binded to WS. Do Subscription.bindTo(ws) first\");\n\t\t\n\t\tthis.i = i++;\n\t\tthis.type = type;\n\t\tthis.publicationName = publicationName;\n\t\tthis.args = args;\n\t\tthis.handler = handler;\n\t\tthis.immediately = immediately && !window.__initials;\n\t\t\n\t\tsubscriptions.set(this.i, this);\n\t\t\n\t\tws.on(\"open\", this.start);\n\t\t\n\t\tif (ws.isOpen)\n\t\t\tthis.start();\n\t\t\n\t\tif (window.__initials) {\n\t\t\tthis.isActive = true;\n\t\t\tthis.handler(window.__initials.splice(0, 1)[0]);\n\t\t} else\n\t\t\tthis.isActive = false;\n\t\t\n\t}\n\t\n\ti;\n\ttype;\n\tpublicationName;\n\targs;\n\thandler;\n\timmediately;\n\tisActive;\n\t\n\tstart = () => {\n\t\t\n\t\tws.sendMessage(\"s-s\"/* subscription subscribe */, this.type, this.publicationName, this.i, this.args, this.immediately);\n\t\t\n\t\tthis.immediately = true;\n\t\t\n\t};\n\t\n\tcancel() {\n\t\t\n\t\tsubscriptions.delete(this.i);\n\t\t\n\t\tws.off(\"open\", this.start);\n\t\t\n\t\tws.sendMessage(\"s-u\"/* subscription unsubscribe */, this.i);\n\t\t\n\t}\n\t\n\t\n\tstatic bindTo(_ws: InSiteWebSocket) {\n\t\tws = _ws;\n\t\t\n\t\ti = 0;\n\t\t\n\t\tsubscriptions = new Map();\n\t\t\n\t\tws.on(\"message:s-c\"/* subscription changed */, (si: number, updates: any) => {\n\t\t\tconst subscription = subscriptions.get(si);\n\t\t\tif (subscription) {\n\t\t\t\tsubscription.isActive = true;\n\t\t\t\tsubscription.handler(updates);\n\t\t\t}\n\t\t\t\n\t\t});\n\t\t\n\t\tws.on(\"close\", () => {\n\t\t\t\n\t\t\tfor (const subscription of subscriptions.values())\n\t\t\t\tsubscription.isActive = false;\n\t\t\t\n\t\t});\n\t\t\n\t\tws.on(\"server-change\", () => {\n\t\t\t\n\t\t\tfor (const subscription of subscriptions.values())\n\t\t\t\tsubscription.handler(null);\n\t\t\t\n\t\t});\n\t\t\n\t}\n\t\n}\n", "export function noop() { /**/ }\n", "import { noop } from \"./noop.js\";\n\n\ntype Callback<Result> = (...args: unknown[]) => Result;\ntype FunctionOrBoolean = (() => unknown) | boolean;\ntype Options = { leading?: FunctionOrBoolean; maxWait?: number; trailing?: FunctionOrBoolean };\ntype NumberOrUndefined = number | undefined;\n\ntype DebouncedFunction<Result> = {\n\t(this: unknown, ..._args: unknown[]): Promise<Result>;\n};\n\nexport type Debounced<Result> = {\n\tcallback: Callback<Result>;\n\tpromise: {\n\t\tisResolved: boolean;\n\t} & Promise<unknown>;\n\tresolve: (value: Result) => void;\n\trun(): Promise<Result>;\n\tclear(shouldRun?: boolean): Promise<void>;\n} & DebouncedFunction<Result>;\n\n\nexport function debounce<Result>(callback: Callback<Result>, limit = 0, options: Options = {}) {\n\tlet { leading = false, trailing = true } = options;\n\tconst { maxWait = Infinity } = options;\n\t\n\tlet timeout: NumberOrUndefined;\n\tlet maxWaitTimeout: NumberOrUndefined;\n\tlet end: NumberOrUndefined;\n\tlet context: unknown;\n\tlet args: unknown[];\n\tlet initial: FunctionOrBoolean;\n\tlet final: FunctionOrBoolean;\n\tlet result: Result;\n\t\n\tconst expired = async () => {\n\t\t\n\t\tconst n = Date.now();\n\t\t\n\t\tif (n >= end!) {\n\t\t\ttimeout = undefined;\n\t\t\tend = undefined;\n\t\t\tclearTimeout(maxWaitTimeout);\n\t\t\tif (typeof final == \"function\")\n\t\t\t\tawait final();\n\t\t\tdebounced.resolve(result);\n\t\t\tdebounced.promise.isResolved = true;\n\t\t\tinitial = leading;\n\t\t} else {\n\t\t\tclearTimeout(timeout);\n\t\t\ttimeout = setTimeout(expired, end! - n);\n\t\t}\n\t\t\n\t};\n\t\n\tconst maxWaitExpired = Number.isFinite(maxWait) ? () => {\n\t\t\n\t\tif (final === run)\n\t\t\tfinal = false;\n\t\trun();\n\t\tmaxWaitTimeout = setTimeout(maxWaitExpired as TimerHandler, maxWait);\n\t\t\n\t} : null;\n\t\n\tasync function run() {\n\t\treturn (result = await callback.apply(context, args));\n\t}\n\t\n\tif (leading && typeof leading == \"boolean\")\n\t\tleading = run;\n\tinitial = leading;\n\t\n\tif (trailing && typeof trailing == \"boolean\")\n\t\ttrailing = run;\n\tfinal = trailing;\n\t\n\tconst debounced: Debounced<Result> = Object.assign(function (..._args) {\n\t\targs = _args;\n\t\tcontext = this;// eslint-disable-line no-invalid-this\n\t\t\n\t\tend = Date.now() + limit;\n\t\tfinal = trailing;\n\t\t\n\t\tif (debounced.promise.isResolved)\n\t\t\tdebounced.promise = Object.assign(new Promise(resolve => {\n\t\t\t\tdebounced.resolve = resolve;\n\t\t\t\t\n\t\t\t\tif (typeof initial == \"function\") {\n\t\t\t\t\tinitial();\n\t\t\t\t\tinitial = false;\n\t\t\t\t\tif (final === run)\n\t\t\t\t\t\tfinal = false;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (!timeout) {\n\t\t\t\t\ttimeout = setTimeout(expired, limit);\n\t\t\t\t\tif (maxWaitExpired)\n\t\t\t\t\t\tmaxWaitTimeout = setTimeout(maxWaitExpired, maxWait);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t}), {\n\t\t\t\tisResolved: false\n\t\t\t});\n\t\t\n\t\treturn debounced.promise;\n\t} as DebouncedFunction<Result>, {\n\t\tcallback,\n\t\tpromise: Object.assign(Promise.resolve(), {\n\t\t\tisResolved: true\n\t\t}),\n\t\tresolve: noop,\n\t\trun,\n\t\tclear: async (shouldRun?: boolean) => {\n\t\t\t\n\t\t\tclearTimeout(timeout);\n\t\t\ttimeout = undefined;\n\t\t\t\n\t\t\tclearTimeout(maxWaitTimeout);\n\t\t\t\n\t\t\tdebounced.promise.isResolved = true;\n\t\t\tdebounced.resolve(shouldRun ? await run() : result);\n\t\t\t\n\t\t}\n\t});\n\t\n\treturn debounced;\n}\n\n\ndebounce.noop = Object.assign(() => { /**/ }, {\n\tcallback: noop,\n\tpromise: Object.assign(Promise.resolve(), {\n\t\tisResolved: true\n\t}),\n\tresolve: noop,\n\trun: noop,\n\tclear: noop\n}) as unknown as Debounced<void>;\n\n\nexport function throttle<Result>(callback: Callback<Result>, limit?: number, options?: Options) {\n\treturn debounce(callback, limit, {\n\t\tmaxWait: limit,\n\t\tleading: true,\n\t\ttrailing: true,\n\t\t...options\n\t});\n}\n", "export function howmuch(number: [] | number, one: string, two: string, five: boolean | string, shouldPrintNumber = true) {\n\tif (Array.isArray(number))\n\t\tnumber = number.length;\n\t\n\tif (typeof five != \"string\") {\n\t\tshouldPrintNumber = five ?? true;\n\t\tfive = two;\n\t}\n\t\n\t\n\treturn (shouldPrintNumber ? `${number}\u00A0` : \"\") + howmuch.raw(number, one, two, five);\n}\n\nhowmuch.raw = (number: number, one: string, two: string, five = two) => {\n\tnumber = Math.abs(number);\n\tconst u = number % 10;\n\tconst d = number % 100;\n\t\n\treturn (\n\t\t(u === 1 && d !== 11) ?\n\t\t\tone :\n\t\t\t((u >= 2 && u <= 4) && !(d >= 12 && d <= 15)) ?\n\t\t\t\ttwo :\n\t\t\t\tfive\n\t);\n};\n", "export function removeOne<T>(array: T[], item: T): boolean {\n\tconst i = array.indexOf(item);\n\tif (i > -1) {\n\t\tarray.splice(i, 1);\n\t\t\n\t\treturn true;\n\t}\n\t\n\treturn false;\n}\n", "/* eslint-disable @typescript-eslint/no-explicit-any */\n\ntype Value<T> = PromiseLike<T> | T;\ntype Resolve<T> = (value: Value<T>) => void;\ntype Reject = (reason?: any) => void;\n\nconst nativesMap = new WeakMap<StatefulPromise<any>, { resolve: Resolve<any>; reject: Reject }>();\n\n\nexport class StatefulPromise<T> extends Promise<T> {\n\tconstructor(executor?: (resolve: Resolve<T>, reject: Reject) => void) {\n\t\t\n\t\tlet nativeResolve: Resolve<T>;\n\t\tlet nativeReject: Reject;\n\t\t\n\t\tsuper((resolve, reject) => {\n\t\t\tnativeResolve = resolve;\n\t\t\tnativeReject = reject;\n\t\t\t\n\t\t});\n\t\t\n\t\tnativesMap.set(this, { resolve: nativeResolve!, reject: nativeReject! });\n\t\t\n\t\texecutor?.(this.resolve, this.reject);\n\t\t\n\t}\n\t\n\tisPending = true;\n\tisFulfilled = false;\n\tisRejected = false;\n\t\n\tstate: \"fulfilled\" | \"pending\" | \"rejected\" = \"pending\";\n\t\n\tresult?: any;\n\t\n\tresolve = (value: Value<T>) => {\n\t\t\n\t\tif (this.isPending) {\n\t\t\tthis.isPending = false;\n\t\t\tthis.isFulfilled = true;\n\t\t\tthis.state = \"fulfilled\";\n\t\t\tthis.result = value;\n\t\t\t\n\t\t\tconst native = nativesMap.get(this);\n\t\t\t\n\t\t\tif (native) {\n\t\t\t\tnative.resolve.call(this, value);\n\t\t\t\tnativesMap.delete(this);\n\t\t\t}\n\t\t}\n\t\t\n\t};\n\t\n\treject = (reason?: any) => {\n\t\t\n\t\tif (this.isPending) {\n\t\t\tthis.isPending = false;\n\t\t\tthis.isRejected = true;\n\t\t\tthis.state = \"rejected\";\n\t\t\tthis.result = reason;\n\t\t\t\n\t\t\tconst native = nativesMap.get(this);\n\t\t\t\n\t\t\tif (native) {\n\t\t\t\tnative.reject.call(this, reason);\n\t\t\t\tnativesMap.delete(this);\n\t\t\t}\n\t\t}\n\t\t\n\t};\n\t\n}\n", "export function unique<T>(array: T[]): T[] {\n\treturn [ ...new Set(array) ];\n}\n", "export const updateSymbol = Symbol(\"update\");\nexport const getHandleUpdateSymbol = Symbol(\"getHandleUpdate\");\nexport const setHandleUpdateSymbol = Symbol(\"setHandleUpdate\");\nexport const getAsUpdatesSymbol = Symbol(\"getAsUpdates\");\nexport const getAsInitialUpdatedSymbol = Symbol(\"getAsInitialUpdated\");\nexport const clearSymbol = Symbol(\"clear\");\nexport const subscribeSymbol = Symbol(\"subscribe\");\nexport const unsubscribeSymbol = Symbol(\"unsubscribe\");\nexport const renewSymbol = Symbol(\"renew\");\nexport const getSubscriptionSymbol = Symbol(\"getSubscription\");\nexport const getHandleSubscriptionSymbol = Symbol(\"getHandleSubscription\");\nexport const setHandleSubscriptionSymbol = Symbol(\"setHandleSubscription\");\n", "import { removeOne } from \"@nesvet/n\";\nimport { Subscription } from \"./Subscription\";\nimport {\n\tclearSymbol,\n\tgetAsInitialUpdatedSymbol,\n\tgetAsUpdatesSymbol,\n\tgetHandleUpdateSymbol,\n\tgetSubscriptionSymbol,\n\trenewSymbol,\n\tsetHandleUpdateSymbol,\n\tsubscribeSymbol,\n\tunsubscribeSymbol,\n\tupdateSymbol\n} from \"./symbols\";\n\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\n\ntype Item = unknown;\n\nexport type Updated<I extends Item = Item> = {\n\tdeleted: I[];\n\tadded: I[];\n} & I[];\n\nexport type Updates<I extends Item = Item> =\n\t(\n\t\t[ \"a\"/* add */, newItem: I ] |\n\t\t[ \"d\"/* delete */, itemToDelete: I ] |\n\t\t[ \"i\"/* initial */, items: I[], sort?: -1 | 0 | 1 ] |\n\t\tnull\n\t)[] |\n\tnull;\n\nexport type UpdateHandler<I extends Item = Item> = (array: SubscriptionArray<I>, updated: Updated<I>, updates: Updates<I>) => void;\n\nconst ascSort = (a: any, b: any) => a > b ? 1 : a < b ? -1 : 0;\nconst descSort = (a: any, b: any) => a > b ? -1 : a < b ? 1 : 0;\n\n\nexport class SubscriptionArray<I extends Item = Item> extends Array<I> {\n\tconstructor(updates?: Updates<I>, onUpdate?: UpdateHandler<I>) {\n\t\tsuper();\n\t\t\n\t\tif (onUpdate)\n\t\t\tthis.handleUpdate = onUpdate;\n\t\t\n\t\tif (Array.isArray(updates))\n\t\t\tthis.update(updates);\n\t\t\n\t}\n\t\n\tsorted: I[] = [];\n\t\n\thandleUpdate;\n\t\n\tsortDirection: -1 | 0 | 1 = 0;\n\t\n\tsortCompareFunction: null | typeof ascSort | typeof descSort = null;\n\t\n\t[getHandleUpdateSymbol]() {\n\t\treturn this.handleUpdate;\n\t}\n\t\n\t[setHandleUpdateSymbol](handleUpdate: UpdateHandler<I>) {\n\t\treturn (this.handleUpdate = handleUpdate);\n\t}\n\t\n\tupdate(updates: Updates<I>) {\n\t\t\n\t\tconst updated: Updated<I> = Object.assign([], {\n\t\t\tdeleted: [],\n\t\t\tadded: []\n\t\t});\n\t\t\n\t\tif (updates) {\n\t\t\tlet shouldSort = false;\n\t\t\t\n\t\t\tfor (const update of updates)\n\t\t\t\tswitch (update?.[0]) {\n\t\t\t\t\tcase \"i\"/* initial */: {\n\t\t\t\t\t\tconst [ , array, sort ] = update;\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (sort) {\n\t\t\t\t\t\t\tthis.sortDirection = sort;\n\t\t\t\t\t\t\tthis.sortCompareFunction = sort > 0 ? ascSort : descSort;\n\t\t\t\t\t\t\tshouldSort = true;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis.sortDirection = 0;\n\t\t\t\t\t\t\tthis.sortCompareFunction = null;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tthis.length = 0;\n\t\t\t\t\t\t\n\t\t\t\t\t\tfor (const newItem of array) {\n\t\t\t\t\t\t\tthis.push(newItem);\n\t\t\t\t\t\t\tupdated.push(newItem);\n\t\t\t\t\t\t\tupdated.added.push(newItem);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tcase \"a\"/* add */: {\n\t\t\t\t\t\tconst [ , newItem ] = update;\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (!this.includes(newItem)) {\n\t\t\t\t\t\t\tthis.push(newItem);\n\t\t\t\t\t\t\tif (this.sortDirection)\n\t\t\t\t\t\t\t\tshouldSort = true;\n\t\t\t\t\t\t\tupdated.push(newItem);\n\t\t\t\t\t\t\tupdated.added.push(newItem);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tcase \"d\"/* delete */: {\n\t\t\t\t\t\tconst [ , itemToDelete ] = update;\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (removeOne(this, itemToDelete))\n\t\t\t\t\t\t\tupdated.deleted.push(itemToDelete);\n\t\t\t\t\t\t\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tthis.clear();\n\t\t\t\t}\n\t\t\t\n\t\t\tif (shouldSort && this.sortCompareFunction)\n\t\t\t\tthis.sort(this.sortCompareFunction);\n\t\t\t\n\t\t} else\n\t\t\tthis.clear();\n\t\t\n\t\tthis.handleUpdate?.(this, updated, updates?.[0] ? updates : null);\n\t\t\n\t\treturn this;\n\t}\n\t\n\t[updateSymbol] = this.update;\n\t\n\tgetAsUpdates(): Updates<I> {\n\t\treturn (\n\t\t\t(this.length || this.sortDirection) ?\n\t\t\t\t[ [ \"i\"/* initial */, [ ...this ], this.sortDirection ] ] :\n\t\t\t\tnull\n\t\t);\n\t}\n\t\n\t[getAsUpdatesSymbol] = this.getAsUpdates;\n\t\n\tgetAsInitialUpdated(): Updated<I> {\n\t\treturn Object.assign([ ...this.sorted ], {\n\t\t\tadded: [ ...this.sorted ],\n\t\t\tdeleted: []\n\t\t});\n\t}\n\t\n\t[getAsInitialUpdatedSymbol] = this.getAsInitialUpdated;\n\t\n\tclear() {\n\t\t\n\t\tthis.length = 0;\n\t\tthis.sortDirection = 0;\n\t\tthis.sortCompareFunction = null;\n\t\t\n\t}\n\t\n\t[clearSymbol] = this.clear;\n\t\n\tvalueOf() {\n\t\treturn this;\n\t}\n\t\n\tget [Symbol.toStringTag]() {\n\t\treturn \"SubscriptionArray\";\n\t}\n\t\n\t\n\tstatic updateSymbol = updateSymbol;\n\tstatic getHandleUpdateSymbol = getHandleUpdateSymbol;\n\tstatic setHandleUpdateSymbol = setHandleUpdateSymbol;\n\tstatic getAsUpdatesSymbol = getAsUpdatesSymbol;\n\tstatic getAsInitialUpdatedSymbol = getAsInitialUpdatedSymbol;\n\tstatic clearSymbol = clearSymbol;\n\tstatic WithSubscription: typeof SubscriptionArrayWithSubscription;\n\t\n}\n\n\nexport class SubscriptionArrayWithSubscription<I extends Item = Item> extends SubscriptionArray<I> {\n\tconstructor(publicationName: string, params: unknown[], onUpdate: UpdateHandler<I>, immediately = true) {\n\t\tsuper(null, onUpdate);\n\t\t\n\t\tthis.publicationName = publicationName;\n\t\tthis.params = params;\n\t\t\n\t\tif (immediately)\n\t\t\tthis.subscribe();\n\t\t\n\t}\n\t\n\tpublicationName;\n\tparams;\n\tsubscription: null | Subscription = null;\n\t\n\tsubscribe() {\n\t\t\n\t\tif (!this.subscription)\n\t\t\tthis.subscription = new Subscription(\"array\", this.publicationName, this.params, updates => this.update(updates as Updates<I>));\n\t\t\n\t}\n\t\n\tget [subscribeSymbol]() {\n\t\treturn this.subscribe;\n\t}\n\t\n\tunsubscribe() {\n\t\t\n\t\tif (this.subscription) {\n\t\t\tthis.subscription.cancel();\n\t\t\tthis.subscription = null;\n\t\t}\n\t\t\n\t}\n\t\n\tget [unsubscribeSymbol]() {\n\t\treturn this.unsubscribe;\n\t}\n\t\n\trenew(publicationName?: string, params?: unknown[]) {\n\t\t\n\t\tif (this.subscription) {\n\t\t\tthis.unsubscribe();\n\t\t\t\n\t\t\tif (publicationName)\n\t\t\t\tif (Array.isArray(publicationName))\n\t\t\t\t\tparams = publicationName;\n\t\t\t\telse\n\t\t\t\t\tthis.publicationName = publicationName;\n\t\t\t\n\t\t\tif (params)\n\t\t\t\tthis.params = params;\n\t\t\t\n\t\t\tthis.subscribe();\n\t\t}\n\t\t\n\t}\n\t\n\tget [renewSymbol]() {\n\t\treturn this.renew;\n\t}\n\t\n\t[getSubscriptionSymbol]() {\n\t\treturn this.subscription;\n\t}\n\t\n\tget [Symbol.toStringTag]() {\n\t\treturn \"SubscriptionArrayWithSubscription\";\n\t}\n\t\n\t\n\tstatic subscribeSymbol = subscribeSymbol;\n\tstatic unsubscribeSymbol = unsubscribeSymbol;\n\tstatic renewSymbol = renewSymbol;\n\tstatic getSubscriptionSymbol = getSubscriptionSymbol;\n\t\n}\n\nSubscriptionArray.WithSubscription = SubscriptionArrayWithSubscription;\n", "import EventEmitter from \"eventemitter3\";\nimport { debounce, StatefulPromise } from \"@nesvet/n\";\nimport { privates } from \"./common\";\nimport { SubscriptionGroupItem } from \"./SubscriptionGroupItem\";\nimport {\n\tDefinition,\n\tParseValues,\n\tSubscriptionHandle,\n\tSubscriptionOnBeforeInit,\n\tSubscriptionType,\n\tTupleDefinition,\n\tUnparsedDefinition\n} from \"./types\";\n\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\n\nfunction isTupleDefinition<T extends SubscriptionType>(definition: UnparsedDefinition<T>): definition is TupleDefinition {\n\treturn Array.isArray(definition);\n}\n\ntype Target = any;\n\ntype Options = {\n\ttarget?: Target;\n\tdebounce?: number;\n\timmediately?: boolean;\n};\n\n\nfunction parseDefinition<T extends SubscriptionType>(definition: UnparsedDefinition<T>) {\n\tif (isTupleDefinition(definition)) {\n\t\tconst args = definition.slice();\n\t\t\n\t\tconst parsed: Partial<Definition<T>> = {};\n\t\t\n\t\tparsed.name = args.shift() as Definition<T>[\"name\"];\n\t\tif (typeof args[0] == \"object\" && !Array.isArray(args[0])) {\n\t\t\tparsed.value = args.shift() as Definition<T>[\"value\"];\n\t\t\tparsed.type = parsed.value!.toString().match(/Subscription(Object|Array|Map)/)?.[1].toLowerCase() as Definition<T>[\"type\"];\n\t\t\tif (!parsed.type)\n\t\t\t\tthrow new Error(\"Unknown value type\");\n\t\t} else {\n\t\t\tif (typeof args[0] == \"string\")\n\t\t\t\tparsed.type = args.shift() as Definition<T>[\"type\"];\n\t\t\tif (typeof args[0] == \"string\")\n\t\t\t\tparsed.publicationName = args.shift() as Definition<T>[\"publicationName\"];\n\t\t\tif (Array.isArray(args[0]))\n\t\t\t\tparsed.params = args.shift() as Definition<T>[\"params\"];\n\t\t}\n\t\t\n\t\tif (typeof args[0] == \"function\")\n\t\t\tparsed.handle = args.shift() as SubscriptionHandle<T>;\n\t\tif (typeof args[0] == \"function\")\n\t\t\tparsed.onBeforeInit = args.shift() as SubscriptionOnBeforeInit<T>;\n\t\tif (typeof args[0] == \"number\")\n\t\t\tparsed.debounce = args.shift() as Definition<T>[\"debounce\"];\n\t\tif (typeof args[0] == \"boolean\")\n\t\t\tparsed.preventBind = args.shift() as Definition<T>[\"preventBind\"];\n\t\t\n\t\treturn parsed as Definition<T>;\n\t}\n\t\n\tdefinition.type ??= \"object\" as T;\n\t\n\treturn definition;\n}\n\nexport class SubscriptionGroup<DS extends UnparsedDefinition[] = any[]> extends EventEmitter {\n\tconstructor(\n\t\tdefinitions: DS,\n\t\t{\n\t\t\ttarget,\n\t\t\tdebounce: debounceLimit = SubscriptionGroup.debounceLimit,\n\t\t\timmediately\n\t\t}: Options = {}\n\t) {\n\t\tsuper();\n\t\t\n\t\tthis.applyOptions({ target, debounceLimit });\n\t\t\n\t\tthis.#initPromise = new StatefulPromise();\n\t\t\n\t\tthis.attach(definitions, false, immediately);\n\t\t\n\t}\n\t\n\ttarget?: Target;\n\temitUpdate!: () => void;\n\t\n\titems = [] as unknown as Record<string, SubscriptionGroupItem> & SubscriptionGroupItem[];\n\tvalues = [] as DS extends any ? (any[] & Record<string, any>) : ParseValues<DS>;\n\t\n\tisLoaded = false;\n\tisInited = false;\n\t\n\t#loadPromise!: StatefulPromise<SubscriptionGroup>;\n\t#initPromise: StatefulPromise<SubscriptionGroup>;\n\t#unloadPromise!: StatefulPromise<SubscriptionGroup>;\n\t\n\t#debounceLimit?: null | number = null;\n\t\n\tapplyOptions({ target, debounceLimit }: { target?: Target; debounceLimit?: number }) {\n\t\t\n\t\tif (this.target !== target) {\n\t\t\tif (this.target)\n\t\t\t\tfor (const item of this.items)\n\t\t\t\t\tif (item.isLoaded && !item.preventBind)\n\t\t\t\t\t\tdelete this.target[item.name];\n\t\t\t\n\t\t\tthis.target = target;\n\t\t\t\n\t\t\tif (this.target)\n\t\t\t\tfor (const item of this.items)\n\t\t\t\t\tif (item.isLoaded && !item.preventBind)\n\t\t\t\t\t\tthis.target[item.name] = item.value;\n\t\t}\n\t\t\n\t\tif (this.#debounceLimit !== debounceLimit) {\n\t\t\tthis.#debounceLimit = debounceLimit;\n\t\t\tif (typeof this.#debounceLimit == \"number\") {\n\t\t\t\tconst emitUpdateDebounced = debounce(() => this.emit(\"update\", this.values), this.#debounceLimit);\n\t\t\t\tthis.emitUpdate = () => emitUpdateDebounced();\n\t\t\t} else\n\t\t\t\tthis.emitUpdate = () => this.emit(\"update\", this.values);\n\t\t}\n\t\t\n\t}\n\t\n\tattach(definitions: DS, shouldReload = this.isLoaded, immediately = true) {\n\t\tif (shouldReload)\n\t\t\tthis.isLoaded = false;\n\t\t\n\t\tif (!this.#loadPromise || this.#loadPromise.isFulfilled)\n\t\t\tthis.#loadPromise = new StatefulPromise();\n\t\t\n\t\tif (!this.#unloadPromise || this.#unloadPromise.isFulfilled)\n\t\t\tthis.#unloadPromise = new StatefulPromise();\n\t\t\n\t\treturn Promise.all(definitions.map(definition =>\n\t\t\tnew SubscriptionGroupItem(parseDefinition(definition), this)\n\t\t).map(item => {\n\t\t\t\n\t\t\tif (immediately)\n\t\t\t\titem.subscribe();\n\t\t\t\n\t\t\treturn item.loaded();\n\t\t}));\n\t}\n\t\n\tdetach(names: string[], shouldUpdate = true) {\n\t\t\n\t\tfor (const name of names)\n\t\t\tthis.items[name]?.detach();\n\t\t\n\t\tif (shouldUpdate) {\n\t\t\tthis.#unload();\n\t\t\tthis.#load();\n\t\t}\n\t\t\n\t}\n\t\n\tredefine(definitions: DS) {\n\t\t\n\t\tconst itemsToDetach = new Map(this.items.map(item => [ item.name, item ]));\n\t\tconst definitionsToRedefine = [];\n\t\tconst definitionsToAttach = [] as unknown as DS;\n\t\t\n\t\tfor (let definition of definitions) {\n\t\t\tdefinition = parseDefinition(definition);\n\t\t\tif (itemsToDetach.delete(definition.name))\n\t\t\t\tdefinitionsToRedefine.push(definition);\n\t\t\telse\n\t\t\t\tdefinitionsToAttach.push(definition);\n\t\t}\n\t\t\n\t\tthis.isLoaded = false;\n\t\t\n\t\tthis.detach([ ...itemsToDetach.keys() ], false);\n\t\t\n\t\treturn Promise.all([\n\t\t\t...definitionsToRedefine.map(definition => {\n\t\t\t\tconst item = this.items[definition.name];\n\t\t\t\titem.define(definition);\n\t\t\t\t\n\t\t\t\titem.subscribe();\n\t\t\t\t\n\t\t\t\treturn item.loaded();\n\t\t\t}),\n\t\t\t...definitionsToAttach.length ? [ this.attach(definitionsToAttach, false) ] : []\n\t\t]);\n\t}\n\t\n\tsubscribe() {\n\t\treturn this.items.map(item => item.subscribe());\n\t}\n\t\n\tunsubscribe() {\n\t\treturn this.items.map(item => item.unsubscribe());\n\t}\n\t\n\t#load() {\n\t\t\n\t\tif (!this.isLoaded && this.items.every(item => item.isLoaded)) {\n\t\t\tif (this.target)\n\t\t\t\tfor (const item of this.items)\n\t\t\t\t\tif (!item.preventBind)\n\t\t\t\t\t\tthis.target[item.name] = item.value;\n\t\t\t\n\t\t\tthis.isLoaded = true;\n\t\t\t\n\t\t\tfor (const item of this.items)\n\t\t\t\tprivates.itemLoad!(item);\n\t\t\t\n\t\t\tthis.emit(\"load\", this.values);\n\t\t\t\n\t\t\tif (this.isInited)\n\t\t\t\tif (this.items.length)\n\t\t\t\t\tfor (const item of this.items)\n\t\t\t\t\t\titem.emitUpdate();\n\t\t\t\telse\n\t\t\t\t\tthis.emitUpdate();\n\t\t\t\n\t\t\t\n\t\t\tthis.#loadPromise.resolve(this);\n\t\t\t\n\t\t\tif (this.#unloadPromise.isFulfilled)\n\t\t\t\tthis.#unloadPromise = new StatefulPromise();\n\t\t}\n\t\t\n\t}\n\t\n\t#init() {\n\t\t\n\t\tif (!this.isInited && this.items.every(item => item.isInited)) {\n\t\t\tthis.isInited = true;\n\t\t\t\n\t\t\tif (this.isLoaded)\n\t\t\t\tif (this.items.length)\n\t\t\t\t\tfor (const item of this.items)\n\t\t\t\t\t\titem.emitUpdate();\n\t\t\t\telse\n\t\t\t\t\tthis.emitUpdate();\n\t\t\t\n\t\t\t\n\t\t\tfor (const item of this.items)\n\t\t\t\tprivates.itemInit!(item);\n\t\t\t\n\t\t\tthis.emit(\"init\", this.values);\n\t\t\t\n\t\t\tthis.#initPromise.resolve(this);\n\t\t}\n\t\t\n\t}\n\t\n\t#unload() {\n\t\t\n\t\tif (this.isLoaded && this.items.every(item => !item.isLoaded)) {\n\t\t\tif (this.target)\n\t\t\t\tfor (const item of this.items)\n\t\t\t\t\tif (!item.preventBind)\n\t\t\t\t\t\tdelete this.target[item.name];\n\t\t\t\n\t\t\tthis.isLoaded = false;\n\t\t\t\n\t\t\tfor (const item of this.items)\n\t\t\t\tprivates.itemUnload!(item);\n\t\t\t\n\t\t\tthis.emit(\"unload\", this.values);\n\t\t\t\n\t\t\tif (this.items.length)\n\t\t\t\tfor (const item of this.items)\n\t\t\t\t\titem.emitUpdate();\n\t\t\telse\n\t\t\t\tthis.emitUpdate();\n\t\t\t\n\t\t\tthis.#unloadPromise.resolve(this);\n\t\t\t\n\t\t\tif (this.#loadPromise.isFulfilled)\n\t\t\t\tthis.#loadPromise = new StatefulPromise();\n\t\t}\n\t\t\n\t}\n\t\n\tloaded() {\n\t\treturn this.#loadPromise;\n\t}\n\t\n\tinited() {\n\t\treturn this.#initPromise;\n\t}\n\t\n\tunloaded() {\n\t\treturn this.#unloadPromise;\n\t}\n\t\n\tvalueOf() {\n\t\treturn this.values;\n\t}\n\t\n\t[Symbol.iterator]() {\n\t\treturn this.values[Symbol.iterator]();\n\t}\n\t\n\t\n\tstatic debounceLimit = 8;\n\t\n\tstatic {\n\t\t\n\t\tprivates.groupLoad = (group: SubscriptionGroup) => group.#load();\n\t\tprivates.groupInit = (group: SubscriptionGroup) => group.#init();\n\t\tprivates.groupUnload = (group: SubscriptionGroup) => group.#unload();\n\t\t\n\t}\n\t\n}\n\nexport { Options as SubscriptionGroupOptions, Target as SubscriptionGroupTarget };\n", "import type { SubscriptionGroup } from \"./SubscriptionGroup\";\nimport type { SubscriptionGroupItem } from \"./SubscriptionGroupItem\";\nimport type { SubscriptionType } from \"./types\";\n\n\nexport const privates: {\n\tgroupLoad?: (group: SubscriptionGroup) => void;\n\tgroupInit?: (group: SubscriptionGroup) => void;\n\tgroupUnload?: (group: SubscriptionGroup) => void;\n\titemLoad?: <T extends SubscriptionType>(item: SubscriptionGroupItem<T>) => void;\n\titemInit?: <T extends SubscriptionType>(item: SubscriptionGroupItem<T>) => void;\n\titemUnload?: <T extends SubscriptionType>(item: SubscriptionGroupItem<T>) => void;\n} = {};\n", "import EventEmitter from \"eventemitter3\";\nimport { debounce, removeOne, StatefulPromise } from \"@nesvet/n\";\nimport {\n\ttype Updated as SubscriptionArrayUpdated,\n\ttype UpdateHandler as SubscriptionArrayUpdateHandler,\n\ttype Updates as SubscriptionArrayUpdates,\n\tSubscriptionArrayWithSubscription\n} from \"../SubscriptionArray\";\nimport {\n\ttype Updated as SubscriptionMapUpdated,\n\ttype UpdateHandler as SubscriptionMapUpdateHandler,\n\ttype Updates as SubscriptionMapUpdates,\n\tSubscriptionMapWithSubscription\n} from \"../SubscriptionMap\";\nimport {\n\ttype Updated as SubscriptionObjectUpdated,\n\ttype UpdateHandler as SubscriptionObjectUpdateHandler,\n\ttype Updates as SubscriptionObjectUpdates,\n\tSubscriptionObjectWithSubscription\n} from \"../SubscriptionObject\";\nimport {\n\tgetAsInitialUpdatedSymbol,\n\tgetAsUpdatesSymbol,\n\tgetHandleUpdateSymbol,\n\trenewSymbol,\n\tsetHandleUpdateSymbol,\n\tsubscribeSymbol,\n\tunsubscribeSymbol\n} from \"../symbols\";\nimport { privates } from \"./common\";\nimport type { SubscriptionGroup } from \"./SubscriptionGroup\";\nimport type {\n\tDefinition,\n\tSubscriptionHandle,\n\tSubscriptionOnBeforeInit,\n\tSubscriptionType,\n\tSubscriptionUpdated,\n\tSubscriptionUpdates,\n\tSubscriptionValue\n} from \"./types\";\n\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\n\ntype HandleSubscription<T> = (_: any, updated: SubscriptionUpdated<T>, updates: SubscriptionUpdates<T>) => void;\n\nfunction isUpdatedMapOrArray(updated: SubscriptionUpdated<SubscriptionType>): updated is SubscriptionArrayUpdated | SubscriptionMapUpdated {\n\treturn Array.isArray(updated);\n}\n\n\nexport class SubscriptionGroupItem<T extends SubscriptionType = SubscriptionType, D extends Definition<T> = Definition<T>> extends EventEmitter {\n\tconstructor(definition: D, group: SubscriptionGroup) {\n\t\tsuper();\n\t\t\n\t\tthis.name = definition.name;\n\t\t\n\t\tthis.define(definition, group);\n\t\t\n\t}\n\t\n\tname;\n\tgroup?: SubscriptionGroup;\n\tvalue?: SubscriptionValue<T>;\n\ttype!: \"object\" | T;\n\tpublicationName!: Definition<T>[\"publicationName\"];\n\tparams!: Definition<T>[\"params\"];\n\thandle!: Definition<T>[\"handle\"];\n\tonBeforeInit!: Definition<T>[\"onBeforeInit\"];\n\tpreventBind!: Definition<T>[\"preventBind\"];\n\t\n\temitUpdate!: (updated?: SubscriptionUpdated<T>) => void;\n\t\n\tisLoaded = false;\n\tisInited = false;\n\t\n\t#loadPromise!: StatefulPromise<SubscriptionGroupItem<T, D>>;\n\t#initPromise!: StatefulPromise<SubscriptionGroupItem<T, D>>;\n\t#unloadPromise!: StatefulPromise<SubscriptionGroupItem<T, D>>;\n\t\n\tdefine(definition: Definition<T>, group: SubscriptionGroup | undefined = this.group) {\n\t\tif (!group)\n\t\t\tthrow new Error(\"group is undefined\");\n\t\t\n\t\tconst {\n\t\t\tvalue,\n\t\t\ttype = \"object\",\n\t\t\tpublicationName,\n\t\t\tparams,\n\t\t\thandle,\n\t\t\tonBeforeInit,\n\t\t\tdebounce: debounceLimit = SubscriptionGroupItem.debounceLimit,\n\t\t\tpreventBind\n\t\t} = definition;\n\t\t\n\t\tif (this.group) {\n\t\t\tif (\n\t\t\t\t(!value || this.value === value) &&\n\t\t\t\tthis.type === type &&\n\t\t\t\tthis.publicationName === publicationName &&\n\t\t\t\tJSON.stringify(this.params) === JSON.stringify(params) &&\n\t\t\t\tthis.handle === handle &&\n\t\t\t\tthis.onBeforeInit === onBeforeInit\n\t\t\t)\n\t\t\t\treturn this.#applyOptions({ debounceLimit, preventBind });\n\t\t\t\n\t\t\tthis.detach();\n\t\t\tdelete this.value;\n\t\t\tdelete this.publicationName;\n\t\t\tdelete this.params;\n\t\t}\n\t\t\n\t\tthis.type = type;\n\t\tthis.handle = handle;\n\t\tthis.onBeforeInit = onBeforeInit;\n\t\tif (value)\n\t\t\tthis.value = value;\n\t\telse {\n\t\t\tthis.publicationName = publicationName ?? this.name;\n\t\t\tthis.params = params ?? [];\n\t\t}\n\t\t\n\t\tthis.#applyOptions({ debounceLimit, preventBind });\n\t\t\n\t\tthis.#attachTo(group);\n\t\t\n\t\treturn null;\n\t}\n\t\n\t#applyOptions({ debounceLimit, preventBind }: { debounceLimit?: number; preventBind?: boolean }) {\n\t\t\n\t\tconst emitUpdate: typeof this.emitUpdate = updated => {\n\t\t\tthis.emit(\"update\", this.value, updated);\n\t\t\tthis.group?.emit(`update.${this.name}`, this.value, updated);\n\t\t\tthis.group?.emitUpdate();\n\t\t\t\n\t\t};\n\t\t\n\t\tif (typeof debounceLimit == \"number\") {\n\t\t\tlet debouncedUpdated: SubscriptionUpdated<T> | undefined;\n\t\t\tlet group: SubscriptionGroup;\n\t\t\t\n\t\t\tconst emitUpdateDebounced = debounce(() => {\n\t\t\t\t\n\t\t\t\tconst isDetached = !this.group;\n\t\t\t\t\n\t\t\t\tif (isDetached)\n\t\t\t\t\tthis.group = group;\n\t\t\t\t\n\t\t\t\temitUpdate(debouncedUpdated!);\n\t\t\t\t\n\t\t\t\tif (isDetached)\n\t\t\t\t\tdelete this.group;\n\t\t\t\t\n\t\t\t\tdebouncedUpdated = undefined;\n\t\t\t\t\n\t\t\t}, debounceLimit);\n\t\t\t\n\t\t\tthis.emitUpdate = updated => {\n\t\t\t\tif (updated !== undefined)\n\t\t\t\t\tif (isUpdatedMapOrArray(updated))\n\t\t\t\t\t\tif (isUpdatedMapOrArray(debouncedUpdated!))\n\t\t\t\t\t\t\tfor (const item of updated)\n\t\t\t\t\t\t\t\tdebouncedUpdated.push(item as any);\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\tdebouncedUpdated = Object.assign([ ...updated ], {\n\t\t\t\t\t\t\t\tadded: [ ...updated.added ],\n\t\t\t\t\t\t\t\tdeleted: [ ...updated.deleted ]\n\t\t\t\t\t\t\t}) as SubscriptionUpdated<T>;\n\t\t\t\t\telse if (typeof updated == \"object\")\n\t\t\t\t\t\tif (debouncedUpdated)\n\t\t\t\t\t\t\tObject.assign(debouncedUpdated, updated);\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\tdebouncedUpdated = { ...updated };\n\t\t\t\t\telse\n\t\t\t\t\t\tdebouncedUpdated = updated;\n\t\t\t\t\n\t\t\t\tgroup = this.group!;\n\t\t\t\t\n\t\t\t\treturn emitUpdateDebounced();\n\t\t\t};\n\t\t} else\n\t\t\tthis.emitUpdate = emitUpdate;\n\t\t\n\t\tif (this.preventBind === undefined)\n\t\t\tdelete this.preventBind;\n\t\telse\n\t\t\tthis.preventBind = preventBind;\n\t\t\n\t}\n\t\n\t#attachTo(group: SubscriptionGroup) {\n\t\tif (!this.group) {\n\t\t\tthis.group = group;\n\t\t\t\n\t\t\tthis.group.items.push(this as SubscriptionGroupItem<any>);\n\t\t\tthis.group.items[this.name] = this as SubscriptionGroupItem<any>;\n\t\t\t\n\t\t\tif (!this.#loadPromise || this.#loadPromise.isFulfilled)\n\t\t\t\tthis.#loadPromise = new StatefulPromise();\n\t\t\t\n\t\t\tif (!this.#initPromise || this.#initPromise.isFulfilled)\n\t\t\t\tthis.#initPromise = new StatefulPromise();\n\t\t\t\n\t\t\tif (!this.#unloadPromise || this.#unloadPromise.isFulfilled)\n\t\t\t\tthis.#unloadPromise = new StatefulPromise();\n\t\t\t\n\t\t\tswitch (this.type) {\n\t\t\t\tcase \"array\": {\n\t\t\t\t\tconst handleSubscription = this.#handleSubscription as HandleSubscription<\"array\">;\n\t\t\t\t\tif (this.value)\n\t\t\t\t\t\t(this.value as SubscriptionArrayWithSubscription)[setHandleUpdateSymbol](handleSubscription);\n\t\t\t\t\telse\n\t\t\t\t\t\tthis.value = new SubscriptionArrayWithSubscription(this.publicationName!, this.params!, handleSubscription, false) as SubscriptionValue<T>;\n\t\t\t\t\tbreak;\n\t\t\t\t} case \"map\": {\n\t\t\t\t\tconst handleSubscription = this.#handleSubscription as HandleSubscription<\"map\">;\n\t\t\t\t\tif (this.value)\n\t\t\t\t\t\t(this.value as SubscriptionMapWithSubscription)[setHandleUpdateSymbol](handleSubscription);\n\t\t\t\t\telse\n\t\t\t\t\t\tthis.value = new SubscriptionMapWithSubscription(this.publicationName!, this.params!, handleSubscription, false) as SubscriptionValue<T>;\n\t\t\t\t\tbreak;\n\t\t\t\t} default: {\n\t\t\t\t\tconst handleSubscription = this.#handleSubscription as HandleSubscription<\"object\">;\n\t\t\t\t\tif (this.value)\n\t\t\t\t\t\t(this.value as SubscriptionObjectWithSubscription)[setHandleUpdateSymbol](handleSubscription);\n\t\t\t\t\telse\n\t\t\t\t\t\tthis.value = new SubscriptionObjectWithSubscription(this.publicationName!, this.params!, handleSubscription, false) as SubscriptionValue<T>;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tthis.group.values.push(this.value);\n\t\t\tthis.group.values[this.name] = this.value;\n\t\t\t\n\t\t\tif (this.onBeforeInit)\n\t\t\t\tswitch (this.type) {\n\t\t\t\t\tcase \"array\":\n\t\t\t\t\t\t(this.onBeforeInit as SubscriptionOnBeforeInit<\"array\">).call(this.group, this.value as SubscriptionArrayWithSubscription);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"map\":\n\t\t\t\t\t\t(this.onBeforeInit as SubscriptionOnBeforeInit<\"map\">).call(this.group, this.value as SubscriptionMapWithSubscription);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\t(this.onBeforeInit as SubscriptionOnBeforeInit<\"object\">).call(this.group, this.value as SubscriptionObjectWithSubscription);\n\t\t\t\t}\n\t\t}\n\t\t\n\t}\n\t\n\tdetach() {\n\t\t\n\t\tif (this.group) {\n\t\t\tthis.value?.[unsubscribeSymbol]();\n\t\t\t\n\t\t\tthis.isLoaded = false;\n\t\t\tthis.#unload();\n\t\t\t\n\t\t\tdelete this.group.values[this.name];\n\t\t\tremoveOne(this.group.values, this.value);\n\t\t\tdelete this.group.items[this.name];\n\t\t\tremoveOne(this.group.items, this as SubscriptionGroupItem<any>);\n\t\t\t\n\t\t\tdelete this.group;\n\t\t}\n\t\t\n\t}\n\t\n\t#loadUpdated: null | SubscriptionUpdated<T> = null;\n\t\n\t#handleSubscription: HandleSubscription<T> = (_, updated, updates) => {\n\t\tif (updates)\n\t\t\tif (this.group!.isLoaded) {\n\t\t\t\tif (this.handle)\n\t\t\t\t\tswitch (this.type) {\n\t\t\t\t\t\tcase \"array\":\n\t\t\t\t\t\t\t(this.handle as SubscriptionHandle<\"array\">).call(this.group!, updated as SubscriptionArrayUpdated, this.group!);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"map\":\n\t\t\t\t\t\t\t(this.handle as SubscriptionHandle<\"map\">).call(this.group!, updated as SubscriptionMapUpdated, this.group!);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t(this.handle as SubscriptionHandle<\"object\">).call(this.group!, updated as SubscriptionObjectUpdated, this.group!);\n\t\t\t\t\t}\n\t\t\t\tthis.emitUpdate(updated);\n\t\t\t} else {\n\t\t\t\tthis.#loadUpdated = updated;\n\t\t\t\tthis.isLoaded = true;\n\t\t\t\tprivates.groupLoad!(this.group!);\n\t\t\t}\n\t\telse if (this.isLoaded) {\n\t\t\tthis.isLoaded = false;\n\t\t\tprivates.groupUnload!(this.group!);\n\t\t}\n\t\t\n\t\tif (!this.isInited) {\n\t\t\tthis.isInited = true;\n\t\t\tprivates.groupInit!(this.group!);\n\t\t}\n\t\t\n\t};\n\t\n\t#load() {\n\t\t\n\t\tif (this.#loadUpdated) {\n\t\t\tif (this.handle)\n\t\t\t\tswitch (this.type) {\n\t\t\t\t\tcase \"array\":\n\t\t\t\t\t\t(this.handle as SubscriptionHandle<\"array\">).call(this.group!, this.#loadUpdated as SubscriptionArrayUpdated, this.group!);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"map\":\n\t\t\t\t\t\t(this.handle as SubscriptionHandle<\"map\">).call(this.group!, this.#loadUpdated as SubscriptionMapUpdated, this.group!);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\t(this.handle as SubscriptionHandle<\"object\">).call(this.group!, this.#loadUpdated as SubscriptionObjectUpdated, this.group!);\n\t\t\t\t}\n\t\t\t\n\t\t\tthis.#loadUpdated = null;\n\t\t\t\n\t\t\tthis.emit(\"load\", this.value);\n\t\t\t\n\t\t\tthis.#loadPromise.resolve(this);\n\t\t\t\n\t\t\tif (this.#unloadPromise.isFulfilled)\n\t\t\t\tthis.#unloadPromise = new StatefulPromise();\n\t\t}\n\t\t\n\t}\n\t\n\t#init() {\n\t\t\n\t\tthis.emit(\"init\", this.value);\n\t\t\n\t\tthis.#initPromise.resolve(this);\n\t\t\n\t}\n\t\n\t#unload() {\n\t\t\n\t\tif (this.handle)\n\t\t\tswitch (this.type) {\n\t\t\t\tcase \"array\":\n\t\t\t\t\t(this.handle as SubscriptionHandle<\"array\">).call(this.group!, null, this.group!);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"map\":\n\t\t\t\t\t(this.handle as SubscriptionHandle<\"map\">).call(this.group!, null, this.group!);\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\t(this.handle as SubscriptionHandle<\"object\">).call(this.group!, null, this.group!);\n\t\t\t}\n\t\t\n\t\tthis.emit(\"unload\", this.value);\n\t\t\n\t\tthis.#unloadPromise.resolve(this);\n\t\t\n\t\tif (this.#loadPromise.isFulfilled)\n\t\t\tthis.#loadPromise = new StatefulPromise();\n\t\t\n\t}\n\t\n\tloaded() {\n\t\treturn this.#loadPromise;\n\t}\n\t\n\tinited() {\n\t\treturn this.#initPromise;\n\t}\n\t\n\tunloaded() {\n\t\treturn this.#unloadPromise;\n\t}\n\t\n\tsubscribe() {\n\t\t\n\t\tif (this.value)\n\t\t\tif (this.value[subscribeSymbol])\n\t\t\t\treturn this.value[subscribeSymbol]();\n\t\t\telse {\n\t\t\t\tconst handleUpdate = this.value[getHandleUpdateSymbol]();\n\t\t\t\t\n\t\t\t\tif (handleUpdate) {\n\t\t\t\t\tconst initialUpdated = this.value[getAsInitialUpdatedSymbol]();\n\t\t\t\t\tconst updates = this.value[getAsUpdatesSymbol]();\n\t\t\t\t\t\n\t\t\t\t\tswitch (this.type) {\n\t\t\t\t\t\tcase \"array\":\n\t\t\t\t\t\t\treturn (handleUpdate as SubscriptionArrayUpdateHandler)(this.value as SubscriptionArrayWithSubscription, initialUpdated as SubscriptionArrayUpdated, updates as SubscriptionArrayUpdates);\n\t\t\t\t\t\t\n\t\t\t\t\t\tcase \"map\":\n\t\t\t\t\t\t\treturn (handleUpdate as SubscriptionMapUpdateHandler)(this.value as SubscriptionMapWithSubscription, initialUpdated as SubscriptionMapUpdated, updates as SubscriptionMapUpdates);\n\t\t\t\t\t\t\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\treturn (handleUpdate as SubscriptionObjectUpdateHandler)(this.value as SubscriptionObjectWithSubscription, initialUpdated as SubscriptionObjectUpdated, updates as SubscriptionObjectUpdates);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\n\t\treturn null;\n\t}\n\t\n\tunsubscribe() {\n\t\treturn this.value?.[unsubscribeSymbol]?.();\n\t}\n\t\n\trenew(publicationName: Definition<T>[\"publicationName\"], params: Definition<T>[\"params\"]) {\n\t\treturn this.value?.[renewSymbol]?.(publicationName, params);\n\t}\n\t\n\tvalueOf() {\n\t\treturn this.value;\n\t}\n\t\n\t\n\tstatic debounceLimit = 4;\n\t\n\tstatic {\n\t\t\n\t\tprivates.itemLoad = <\n\t\t\tDP extends Definition<TP>,\n\t\t\tTP extends SubscriptionType\n\t\t>(item: SubscriptionGroupItem<TP, DP>) => item.#load();\n\t\tprivates.itemInit = <\n\t\t\tDP extends Definition<TP>,\n\t\t\tTP extends SubscriptionType\n\t\t>(item: SubscriptionGroupItem<TP, DP>) => item.#init();\n\t\tprivates.itemUnload = <\n\t\t\tDP extends Definition<TP>,\n\t\t\tTP extends SubscriptionType\n\t\t>(item: SubscriptionGroupItem<TP, DP>) => item.#unload();\n\t\t\n\t}\n\t\n}\n", "import { removeOne, unique } from \"@nesvet/n\";\nimport { Subscription } from \"./Subscription\";\nimport {\n\tclearSymbol,\n\tgetAsInitialUpdatedSymbol,\n\tgetAsUpdatesSymbol,\n\tgetHandleUpdateSymbol,\n\tgetSubscriptionSymbol,\n\trenewSymbol,\n\tsetHandleUpdateSymbol,\n\tsubscribeSymbol,\n\tunsubscribeSymbol,\n\tupdateSymbol\n} from \"./symbols\";\n\n\ntype GenericItem = { _id: string } & Record<string, any>;// eslint-disable-line @typescript-eslint/no-explicit-any\n\ntype Item = GenericItem | SubscriptionMapItem;\n\nexport type Updated<I extends Item = Item> = {\n\tdeleted: string[];\n\tadded: I[];\n} & I[];\n\ntype SortList = Record<string, -1 | 1>;\n\nexport type Updates<I extends Item = Item> =\n\t(\n\t\t[ \"c\"/* create */, item: I ] |\n\t\t[ \"d\"/* delete */, _id: string ] |\n\t\t[ \"i\"/* initial */, items: I[], sortList?: null | SortList ] |\n\t\t[ \"u\"/* update */, itemUpdates: { _id: string } & Partial<I>, isAtomicOrUpdatedFields: string[] | true ] |\n\t\tnull\n\t)[] |\n\tnull;\n\nexport type UpdateHandler<I extends Item = Item> = (map: SubscriptionMap<I>, updated: Updated<I>, updates: Updates<I>) => void;\n\ndeclare global {\n\tvar __insite_subscription_map_sort_function: ((a: Item, b: Item) => -1 | 0 | 1) | undefined;// eslint-disable-line no-var, camelcase\n}\n\nfunction createSortFunction(sortList: SortList) {\n\t\n\tconst tempScript = document.createElement(\"script\");\n\t\n\ttempScript.textContent = `window.__insite_subscription_map_sort_function = function sort(a, b) { return ${\n\t\tObject.entries(sortList)\n\t\t\t.map(([ key, value ]) => value > 0 ? `a.${key} > b.${key} ? 1 : a.${key} < b.${key} ? -1 :` : `a.${key} < b.${key} ? 1 : a.${key} > b.${key} ? -1 :`)\n\t\t\t.concat(\"0\")\n\t\t\t.join(\" \")\n\t};}`;\n\t\n\tdocument.head.append(tempScript);\n\t\n\tconst sortFunction = window.__insite_subscription_map_sort_function!;\n\t\n\ttempScript.remove();\n\tdelete window.__insite_subscription_map_sort_function;\n\t\n\treturn sortFunction;\n}\n\n// function createSortFunction(sortList: SortList) {\n// return new Function(// eslint-disable-line no-new-func\n// \t\t\"a\"/* Item */,\n// \t\t\"b\"/* Item */,\n// \t\t`return ${\n// \t\t\tObject.entries(sortList)\n// \t\t\t\t.map(([ key, value ]) => value > 0 ? `a.${key} > b.${key} ? 1 : a.${key} < b.${key} ? -1 :` : `a.${key} < b.${key} ? 1 : a.${key} > b.${key} ? -1 :`)\n// \t\t\t\t.concat(\"0\")\n// \t\t\t\t.join(\" \")\n// \t\t}`\n// \t) as (a: Item, b: Item) => -1 | 0 | 1;\n// }\n\n\nexport class SubscriptionMap<I extends Item = Item> extends Map<string, I> {\n\tconstructor(updates?: Updates<I>, onUpdate?: UpdateHandler<I>) {\n\t\tsuper();\n\t\t\n\t\tif (onUpdate)\n\t\t\tthis.handleUpdate = onUpdate;\n\t\t\n\t\tif (updates)\n\t\t\tthis.update(updates);\n\t\t\n\t}\n\t\n\thandleUpdate;\n\t\n\t#updates = new Map<string, I>();\n\t\n\tsortList: null | SortList = null;\n\t\n\tsortCompareFunction: ((a: I, b: I) => number) | null = null;\n\t\n\t#fieldsToSort: string[] = [];\n\t\n\tsorted: I[] = [];\n\t\n\tsort() {\n\t\t\n\t\tif (this.sortCompareFunction)\n\t\t\tthis.sorted.sort(this.sortCompareFunction);\n\t\t\n\t}\n\t\n\t[getHandleUpdateSymbol]() {\n\t\treturn this.handleUpdate;\n\t}\n\t\n\t[setHandleUpdateSymbol](handleUpdate: UpdateHandler<I>) {\n\t\treturn (this.handleUpdate = handleUpdate);\n\t}\n\t\n\t#Item!: { new (map: SubscriptionMap<I>, updates: GenericItem): I };\n\t\n\tset Item(TheItem: { new (map: SubscriptionMap<I>, updates: GenericItem): I }) {\n\t\tthis.#Item = TheItem;\n\t\t\n\t\tif (this.size)\n\t\t\tfor (const [ _id, item ] of this)\n\t\t\t\tthis.set(_id, new TheItem(this, item));\n\t\t\n\t}\n\t\n\tget Item() {\n\t\treturn this.#Item;\n\t}\n\t\n\tupdate(updates: Updates<I>) {\n\t\t\n\t\tconst updated: Updated<I> = Object.assign([], {\n\t\t\tadded: [],\n\t\t\tdeleted: []\n\t\t});\n\t\t\n\t\tif (updates) {\n\t\t\tlet shouldSort = false;\n\t\t\t\n\t\t\tconst TheItem = this.#Item;\n\t\t\tconst prevUpdates = this.#updates;\n\t\t\t\n\t\t\tfor (const update of updates)\n\t\t\t\tswitch (update?.[0]) {\n\t\t\t\t\tcase \"i\"/* initial */: {\n\t\t\t\t\t\tconst [ , array, sortList ] = update;\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (sortList) {\n\t\t\t\t\t\t\tthis.sortList = sortList;\n\t\t\t\t\t\t\tthis.sortCompareFunction = createSortFunction(sortList);\n\t\t\t\t\t\t\tthis.#fieldsToSort = unique(Object.keys(sortList).map(key => key.replace(/\\..+/, \"\")));\n\t\t\t\t\t\t\tshouldSort = true;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis.sortList = null;\n\t\t\t\t\t\t\tthis.sortCompareFunction = null;\n\t\t\t\t\t\t\tthis.#fieldsToSort = [];\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (this.size) {\n\t\t\t\t\t\t\tconst updatesMap = new Map<string, I>();\n\t\t\t\t\t\t\tfor (const itemUpdates of array)\n\t\t\t\t\t\t\t\tupdatesMap.set(itemUpdates._id, itemUpdates);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tfor (const [ _id, item ] of this) {\n\t\t\t\t\t\t\t\tconst itemUpdates = updatesMap.get(_id);\n\t\t\t\t\t\t\t\tif (itemUpdates) {\n\t\t\t\t\t\t\t\t\tconst prevItemUpdates = prevUpdates.get(_id);\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\tif (TheItem)\n\t\t\t\t\t\t\t\t\t\titem.update(itemUpdates);\n\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\tfor (const key in prevItemUpdates)// eslint-disable-line guard-for-in\n\t\t\t\t\t\t\t\t\t\t\tdelete item[key as keyof typeof item];\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\tObject.assign(item, itemUpdates);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\tprevUpdates.set(_id, itemUpdates);\n\t\t\t\t\t\t\t\t\tupdated.push(item);\n\t\t\t\t\t\t\t\t\tupdatesMap.delete(_id);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tif (TheItem)\n\t\t\t\t\t\t\t\t\t\titem.delete();\n\t\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t\t\tthis.delete(_id);\n\t\t\t\t\t\t\t\t\tprevUpdates.delete(_id);\n\t\t\t\t\t\t\t\t\tupdated.deleted.push(_id);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tfor (const [ _id, itemUpdates ] of updatesMap) {\n\t\t\t\t\t\t\t\tconst item = TheItem ? new TheItem(this, itemUpdates) : { ...itemUpdates };\n\t\t\t\t\t\t\t\tthis.set(_id, item);\n\t\t\t\t\t\t\t\tprevUpdates.set(_id, itemUpdates);\n\t\t\t\t\t\t\t\tupdated.push(item);\n\t\t\t\t\t\t\t\tupdated.added.push(item);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif (this.sortList)\n\t\t\t\t\t\t\t\tthis.sorted = array.map(newItem => this.get(newItem._id)!);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t} else\n\t\t\t\t\t\t\tfor (const itemUpdates of array) {\n\t\t\t\t\t\t\t\tconst item = (TheItem ? new TheItem(this, itemUpdates) : { ...itemUpdates }) as I;\n\t\t\t\t\t\t\t\tthis.set(item._id, item);\n\t\t\t\t\t\t\t\tthis.sorted.push(item);\n\t\t\t\t\t\t\t\tprevUpdates.set(item._id, itemUpdates);\n\t\t\t\t\t\t\t\tupdated.push(item);\n\t\t\t\t\t\t\t\tupdated.added.push(item);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tcase \"c\"/* create */:\n\t\t\t\t\tcase \"u\"/* update */: {\n\t\t\t\t\t\tlet [ , itemUpdates ] = update;\n\t\t\t\t\t\tlet item = this.get(itemUpdates._id);\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (item) {\n\t\t\t\t\t\t\tconst isAtomic = update[2] === true;\n\t\t\t\t\t\t\tconst updatedFields = isAtomic ? Object.keys(itemUpdates) : update[2] as string[];\n\t\t\t\t\t\t\tconst prevItemUpdates = prevUpdates.get(item._id)!;\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif (TheItem)\n\t\t\t\t\t\t\t\titem.update(itemUpdates);\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tif (!isAtomic)\n\t\t\t\t\t\t\t\t\tfor (const key in prevItemUpdates)// eslint-disable-line guard-for-in\n\t\t\t\t\t\t\t\t\t\tdelete item[key as keyof typeof item];\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tObject.assign(item, itemUpdates);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif (isAtomic)\n\t\t\t\t\t\t\t\titemUpdates = Object.assign(prevItemUpdates, itemUpdates);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif (this.sortList && !shouldSort && (!updatedFields || updatedFields.some(fieldName => this.#fieldsToSort.includes(fieldName))))\n\t\t\t\t\t\t\t\tshouldSort = true;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\titem = (TheItem ? new TheItem(this, itemUpdates) : { ...itemUpdates }) as I;\n\t\t\t\t\t\t\tthis.set(item._id, item);\n\t\t\t\t\t\t\tthis.sorted.push(item);\n\t\t\t\t\t\t\tif (this.sortList)\n\t\t\t\t\t\t\t\tshouldSort = true;\n\t\t\t\t\t\t\tupdated.added.push(item);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tprevUpdates.set(item._id, itemUpdates as I);\n\t\t\t\t\t\tupdated.push(item);\n\t\t\t\t\t\t\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tcase \"d\"/* delete */: {\n\t\t\t\t\t\tconst [ , _id ] = update;\n\t\t\t\t\t\tconst itemToDelete = this.get(_id);\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (itemToDelete) {\n\t\t\t\t\t\t\tif (TheItem)\n\t\t\t\t\t\t\t\titemToDelete.delete();\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\tthis.delete(_id);\n\t\t\t\t\t\t\tprevUpdates.delete(_id);\n\t\t\t\t\t\t\tremoveOne(this.sorted, itemToDelete);\n\t\t\t\t\t\t\tupdated.deleted.push(_id);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tthis.clear();\n\t\t\t\t}\n\t\t\t\n\t\t\tif (shouldSort)\n\t\t\t\tthis.sort();\n\t\t\t\n\t\t} else\n\t\t\tthis.clear();\n\t\t\n\t\tthis.handleUpdate?.(this, updated, updates?.[0] ? updates : null);\n\t\t\n\t\treturn this;\n\t}\n\t\n\t[updateSymbol] = this.update;\n\t\n\tgetAsUpdates(): Updates<I> {\n\t\treturn (\n\t\t\t(this.size || this.sortList) ?\n\t\t\t\t[ [ \"i\"/* initial */, [ ...this.#updates.values() ], this.sortList ] ] :\n\t\t\t\tnull\n\t\t);\n\t}\n\t\n\t[getAsUpdatesSymbol] = this.getAsUpdates;\n\t\n\tgetAsInitialUpdated(): Updated<I> {\n\t\treturn Object.assign([ ...this.sorted ], {\n\t\t\tadded: [ ...this.sorted ],\n\t\t\tdeleted: []\n\t\t});\n\t}\n\t\n\t[getAsInitialUpdatedSymbol] = this.getAsInitialUpdated;\n\t\n\tclear() {\n\t\t\n\t\tsuper.clear();\n\t\tthis.#updates.clear();\n\t\tthis.sorted = [];\n\t\tthis.sortList = null;\n\t\tthis.sortCompareFunction = null;\n\t\tthis.#fieldsToSort = [];\n\t\t\n\t}\n\t\n\t[clearSymbol] = this.clear;\n\t\n\tvalueOf() {\n\t\treturn this.sorted;\n\t}\n\t\n\tget [Symbol.toStringTag]() {\n\t\treturn \"SubscriptionMap\";\n\t}\n\t\n\t\n\tstatic updateSymbol = updateSymbol;\n\tstatic getHandleUpdateSymbol = getHandleUpdateSymbol;\n\tstatic setHandleUpdateSymbol = setHandleUpdateSymbol;\n\tstatic getAsUpdatesSymbol = getAsUpdatesSymbol;\n\tstatic getAsInitialUpdatedSymbol = getAsInitialUpdatedSymbol;\n\tstatic clearSymbol = clearSymbol;\n\tstatic WithSubscription: typeof SubscriptionMapWithSubscription;\n\tstatic Item: typeof SubscriptionMapItem;\n\t\n}\n\n\nexport class SubscriptionMapWithSubscription<I extends Item = Item> extends SubscriptionMap<I> {\n\tconstructor(publicationName: string, params: unknown[], onUpdate: UpdateHandler<I>, immediately = true) {\n\t\tsuper(null, onUpdate);\n\t\t\n\t\tthis.publicationName = publicationName;\n\t\tthis.params = params;\n\t\t\n\t\tif (immediately)\n\t\t\tthis.subscribe();\n\t\t\n\t}\n\t\n\tpublicationName;\n\tparams;\n\t\n\tsubscription: null | Subscription = null;\n\t\n\tsubscribe() {\n\t\t\n\t\tif (!this.subscription)\n\t\t\tthis.subscription = new Subscription(\"map\", this.publicationName, this.params, updates => this.update(updates as Updates<I>));\n\t\t\n\t}\n\t\n\tget [subscribeSymbol]() {\n\t\treturn this.subscribe;\n\t}\n\t\n\tunsubscribe() {\n\t\t\n\t\tif (this.subscription) {\n\t\t\tthis.subscription.cancel();\n\t\t\tthis.subscription = null;\n\t\t}\n\t\t\n\t}\n\t\n\tget [unsubscribeSymbol]() {\n\t\treturn this.unsubscribe;\n\t}\n\t\n\trenew(publicationName?: string, params?: unknown[]) {\n\t\t\n\t\tif (this.subscription) {\n\t\t\tthis.unsubscribe();\n\t\t\t\n\t\t\tif (publicationName)\n\t\t\t\tif (Array.isArray(publicationName))\n\t\t\t\t\tparams = publicationName;\n\t\t\t\telse\n\t\t\t\t\tthis.publicationName = publicationName;\n\t\t\t\n\t\t\tif (params)\n\t\t\t\tthis.params = params;\n\t\t\t\n\t\t\tthis.subscribe();\n\t\t}\n\t\t\n\t}\n\t\n\tget [renewSymbol]() {\n\t\treturn this.renew;\n\t}\n\t\n\t[getSubscriptionSymbol]() {\n\t\treturn this.subscription;\n\t}\n\t\n\tget [Symbol.toStringTag]() {\n\t\treturn \"SubscriptionMapWithSubscription\";\n\t}\n\t\n\t\n\tstatic subscribeSymbol = subscribeSymbol;\n\tstatic unsubscribeSymbol = unsubscribeSymbol;\n\tstatic renewSymbol = renewSymbol;\n\tstatic getSubscriptionSymbol = getSubscriptionSymbol;\n\t\n}\n\nSubscriptionMap.WithSubscription = SubscriptionMapWithSubscription;\n\n\nexport class SubscriptionMapItem {\n\tconstructor(map: SubscriptionMap, updates: GenericItem) {\n\t\tthis.#map = map;\n\t\t\n\t\tthis.update(updates);\n\t\t\n\t}\n\t\n\t_id!: string;\n\t\n\t#map;\n\t\n\tupdate(updates: GenericItem) {\n\t\tObject.assign(this, updates);\n\t\t\n\t}\n\t\n\tdelete() {\n\t\t\n\t\tthis.#map.delete(this._id);\n\t\t\n\t}\n\t\n}\n\nSubscriptionMap.Item = SubscriptionMapItem;\n", "import { Subscription } from \"./Subscription\";\nimport {\n\tclearSymbol,\n\tgetAsInitialUpdatedSymbol,\n\tgetAsUpdatesSymbol,\n\tgetHandleUpdateSymbol,\n\tgetSubscriptionSymbol,\n\trenewSymbol,\n\tsetHandleUpdateSymbol,\n\tsubscribeSymbol,\n\tunsubscribeSymbol,\n\tupdateSymbol\n} from \"./symbols\";\n\n\nconst handleUpdateSymbol = Symbol(\"handleUpdate\");\nconst updatesSymbol = Symbol(\"updates\");\n\nexport type Updated = Record<string, unknown>;\nexport type Updates = null | Record<string, unknown>;\nexport type UpdateHandler = (object: SubscriptionObject, updated: Updated, updates: Updates) => void;\n\n\nexport class SubscriptionObject {\n\tconstructor(updates?: Updates, onUpdate?: UpdateHandler) {\n\t\tif (onUpdate)\n\t\t\tthis[handleUpdateSymbol] = onUpdate;\n\t\t\n\t\tif (updates)\n\t\t\tthis[updateSymbol](updates);\n\t\t\n\t}\n\t\n\t[handleUpdateSymbol]?: UpdateHandler;\n\t\n\t[updatesSymbol]: Updates = null;\n\t\n\t[getHandleUpdateSymbol]() {\n\t\treturn this[handleUpdateSymbol];\n\t}\n\t\n\t[setHandleUpdateSymbol](handleUpdate: UpdateHandler) {\n\t\treturn (this[handleUpdateSymbol] = handleUpdate);\n\t}\n\t\n\t[updateSymbol](updates: Updates) {\n\t\tif (updates) {\n\t\t\tfor (const key in this[updatesSymbol])// eslint-disable-line guard-for-in\n\t\t\t\tdelete this[key];\n\t\t\tfor (const key in updates)// eslint-disable-line guard-for-in\n\t\t\t\tthis[key] = updates[key];\n\t\t\tthis[updatesSymbol] = updates;\n\t\t} else\n\t\t\tthis[clearSymbol]();\n\t\t\n\t\tthis[handleUpdateSymbol]?.(this, this, this[updatesSymbol]);\n\t\t\n\t\treturn this;\n\t}\n\t\n\t[getAsUpdatesSymbol](): Updates {\n\t\treturn this[updatesSymbol] && { ...this[updatesSymbol] };\n\t}\n\t\n\t[getAsInitialUpdatedSymbol](): Updated {\n\t\treturn this.valueOf()!;\n\t}\n\t\n\t[clearSymbol]() {\n\t\t\n\t\tfor (const key in this)// eslint-disable-line guard-for-in\n\t\t\tdelete this[key];\n\t\tthis[updatesSymbol] = null;\n\t\t\n\t}\n\t\n\tvalueOf() {\n\t\treturn this[updatesSymbol] && this;\n\t}\n\t\n\tget [Symbol.toStringTag]() {\n\t\treturn \"SubscriptionObject\";\n\t}\n\t\n\t[key: string]: unknown;\n\t\n\t\n\tstatic updateSymbol = updateSymbol;\n\tstatic getHandleUpdateSymbol = getHandleUpdateSymbol;\n\tstatic setHandleUpdateSymbol = setHandleUpdateSymbol;\n\tstatic getAsUpdatesSymbol = getAsUpdatesSymbol;\n\tstatic getAsInitialUpdatedSymbol = getAsInitialUpdatedSymbol;\n\tstatic clearSymbol = clearSymbol;\n\tstatic WithSubscription: typeof SubscriptionObjectWithSubscription;\n\t\n}\n\n\nexport class SubscriptionObjectWithSubscription extends SubscriptionObject {\n\tconstructor(publicationName: string, params: unknown[], onUpdate: UpdateHandler, immediately = true) {\n\t\tsuper(null, onUpdate);\n\t\t\n\t\tthis.#publicationName = publicationName;\n\t\tthis.#params = params;\n\t\t\n\t\tif (immediately)\n\t\t\tthis[subscribeSymbol]();\n\t\t\n\t}\n\t\n\t#publicationName;\n\t#params;\n\t#subscription: null | Subscription = null;\n\t\n\t[subscribeSymbol]() {\n\t\t\n\t\tif (!this.#subscription)\n\t\t\tthis.#subscription = new Subscription(\"object\", this.#publicationName, this.#params, updates => this[updateSymbol](updates as Updates));\n\t\t\n\t}\n\t\n\t[unsubscribeSymbol]() {\n\t\t\n\t\tif (this.#subscription) {\n\t\t\tthis.#subscription.cancel();\n\t\t\tthis.#subscription = null;\n\t\t}\n\t\t\n\t}\n\t\n\t[renewSymbol](publicationName?: string, params?: unknown[]) {\n\t\t\n\t\tif (this.#subscription) {\n\t\t\tthis[unsubscribeSymbol]();\n\t\t\t\n\t\t\tif (publicationName)\n\t\t\t\tif (Array.isArray(publicationName))\n\t\t\t\t\tparams = publicationName;\n\t\t\t\telse\n\t\t\t\t\tthis.#publicationName = publicationName;\n\t\t\t\n\t\t\tif (params)\n\t\t\t\tthis.#params = params;\n\t\t\t\n\t\t\tthis[subscribeSymbol]();\n\t\t}\n\t\t\n\t}\n\t\n\t[getSubscriptionSymbol]() {\n\t\treturn this.#subscription;\n\t}\n\t\n\tget [Symbol.toStringTag]() {\n\t\treturn \"SubscriptionObjectWithSubscription\";\n\t}\n\t\n\t\n\tstatic subscribeSymbol = subscribeSymbol;\n\tstatic unsubscribeSymbol = unsubscribeSymbol;\n\tstatic renewSymbol = renewSymbol;\n\tstatic getSubscriptionSymbol = getSubscriptionSymbol;\n\t\n}\n\nSubscriptionObject.WithSubscription = SubscriptionObjectWithSubscription;\n"],
5
+ "mappings": "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",
6
+ "names": ["i", "subscriptions", "ws", "Subscription", "type", "publicationName", "args", "handler", "immediately", "__publicField", "_ws", "si", "updates", "subscription", "noop", "debounce", "callback", "limit", "options", "leading", "trailing", "maxWait", "timeout", "maxWaitTimeout", "end", "context", "args", "initial", "final", "result", "expired", "n", "debounced", "maxWaitExpired", "run", "_args", "resolve", "noop", "shouldRun", "howmuch", "number", "one", "two", "five", "shouldPrintNumber", "u", "d", "removeOne", "array", "item", "i", "nativesMap", "StatefulPromise", "executor", "nativeResolve", "nativeReject", "resolve", "reject", "__publicField", "value", "native", "reason", "unique", "array", "updateSymbol", "getHandleUpdateSymbol", "setHandleUpdateSymbol", "getAsUpdatesSymbol", "getAsInitialUpdatedSymbol", "clearSymbol", "subscribeSymbol", "unsubscribeSymbol", "renewSymbol", "getSubscriptionSymbol", "getHandleSubscriptionSymbol", "setHandleSubscriptionSymbol", "ascSort", "a", "b", "descSort", "_a", "_b", "_c", "_d", "SubscriptionArray", "updates", "onUpdate", "__publicField", "getHandleUpdateSymbol", "setHandleUpdateSymbol", "handleUpdate", "updated", "shouldSort", "update", "array", "sort", "newItem", "itemToDelete", "removeOne", "updateSymbol", "getAsUpdatesSymbol", "getAsInitialUpdatedSymbol", "clearSymbol", "SubscriptionArrayWithSubscription", "publicationName", "params", "immediately", "Subscription", "subscribeSymbol", "unsubscribeSymbol", "renewSymbol", "getSubscriptionSymbol", "EventEmitter", "privates", "EventEmitter", "createSortFunction", "sortList", "tempScript", "key", "value", "sortFunction", "_a", "_b", "_c", "_d", "_updates", "_fieldsToSort", "_Item", "SubscriptionMap", "updates", "onUpdate", "__publicField", "__privateAdd", "getHandleUpdateSymbol", "setHandleUpdateSymbol", "handleUpdate", "TheItem", "__privateSet", "_id", "item", "__privateGet", "updated", "shouldSort", "prevUpdates", "update", "array", "unique", "updatesMap", "itemUpdates", "prevItemUpdates", "newItem", "isAtomic", "updatedFields", "fieldName", "itemToDelete", "removeOne", "updateSymbol", "getAsUpdatesSymbol", "getAsInitialUpdatedSymbol", "clearSymbol", "SubscriptionMapWithSubscription", "publicationName", "params", "immediately", "Subscription", "subscribeSymbol", "unsubscribeSymbol", "renewSymbol", "getSubscriptionSymbol", "_map", "SubscriptionMapItem", "map", "handleUpdateSymbol", "updatesSymbol", "_a", "_b", "SubscriptionObject", "updates", "onUpdate", "__publicField", "updateSymbol", "getHandleUpdateSymbol", "setHandleUpdateSymbol", "handleUpdate", "key", "clearSymbol", "getAsUpdatesSymbol", "getAsInitialUpdatedSymbol", "_publicationName", "_params", "_subscription", "SubscriptionObjectWithSubscription", "publicationName", "params", "immediately", "__privateAdd", "__privateSet", "subscribeSymbol", "__privateGet", "Subscription", "unsubscribeSymbol", "renewSymbol", "getSubscriptionSymbol", "isUpdatedMapOrArray", "updated", "_loadPromise", "_initPromise", "_unloadPromise", "_SubscriptionGroupItem_instances", "applyOptions_fn", "attachTo_fn", "_loadUpdated", "_handleSubscription", "load_fn", "init_fn", "unload_fn", "_SubscriptionGroupItem", "EventEmitter", "definition", "group", "__privateAdd", "__publicField", "_", "updates", "__privateSet", "privates", "value", "type", "publicationName", "params", "handle", "onBeforeInit", "debounceLimit", "preventBind", "__privateMethod", "unsubscribeSymbol", "removeOne", "__privateGet", "subscribeSymbol", "handleUpdate", "getHandleUpdateSymbol", "initialUpdated", "getAsInitialUpdatedSymbol", "getAsUpdatesSymbol", "renewSymbol", "emitUpdate", "debouncedUpdated", "emitUpdateDebounced", "debounce", "isDetached", "item", "StatefulPromise", "handleSubscription", "setHandleUpdateSymbol", "SubscriptionArrayWithSubscription", "SubscriptionMapWithSubscription", "SubscriptionObjectWithSubscription", "_a", "SubscriptionGroupItem", "isTupleDefinition", "definition", "parseDefinition", "args", "parsed", "_loadPromise", "_initPromise", "_unloadPromise", "_debounceLimit", "_SubscriptionGroup_instances", "load_fn", "init_fn", "unload_fn", "_SubscriptionGroup", "EventEmitter", "definitions", "target", "debounceLimit", "immediately", "__privateAdd", "__publicField", "__privateSet", "StatefulPromise", "item", "__privateGet", "emitUpdateDebounced", "debounce", "shouldReload", "SubscriptionGroupItem", "names", "shouldUpdate", "name", "__privateMethod", "itemsToDetach", "definitionsToRedefine", "definitionsToAttach", "privates", "group", "_a", "SubscriptionGroup"]
7
7
  }
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "insite-subscriptions-client",
3
- "version": "2.0.4",
3
+ "version": "2.0.7",
4
4
  "description": "inSite subscriptions client side",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
7
7
  "module": "./dist/index.js",
8
- "packageManager": "bun@1.1.33",
8
+ "packageManager": "bun@1.2.2",
9
9
  "scripts": {
10
10
  "test": "echo \"Error: no test specified\" && exit 1",
11
11
  "build": "bun .conveyer.js",
@@ -26,11 +26,11 @@
26
26
  "dependencies": {
27
27
  "@nesvet/n": "^1.1.7",
28
28
  "eventemitter3": "^5.0.1",
29
- "insite-ws": "^2.0.17"
29
+ "insite-ws": "^2.0.20"
30
30
  },
31
31
  "devDependencies": {
32
32
  "@nesvet/conveyer": "^2.2.5",
33
33
  "@nesvet/eslint-config": "^2.0.34",
34
- "typescript": "^5.6.3"
34
+ "typescript": "^5.7.3"
35
35
  }
36
36
  }
package/bun.lockb DELETED
Binary file