insite-subscriptions-client 2.0.3 → 2.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,7 +1,7 @@
1
1
  import { Subscription } from "./Subscription";
2
2
  import { clearSymbol, getAsInitialUpdatedSymbol, getAsUpdatesSymbol, getHandleUpdateSymbol, getSubscriptionSymbol, renewSymbol, setHandleUpdateSymbol, subscribeSymbol, unsubscribeSymbol, updateSymbol } from "./symbols";
3
3
  type Item = unknown;
4
- type Updated<I extends Item = Item> = {
4
+ export type Updated<I extends Item = Item> = {
5
5
  deleted: I[];
6
6
  added: I[];
7
7
  } & I[];
@@ -14,14 +14,14 @@ export type Updates<I extends Item = Item> = ([
14
14
  ] | [
15
15
  "i",
16
16
  items: I[],
17
- sort?: -1 | 1
17
+ sort?: -1 | 0 | 1
18
18
  ] | null)[] | null;
19
- type UpdateHandler<I extends Item = Item> = (array: SubscriptionArray<I>, updated: Updated<I>, updates: Updates<I>) => void;
19
+ export type UpdateHandler<I extends Item = Item> = (array: SubscriptionArray<I>, updated: Updated<I>, updates: Updates<I>) => void;
20
20
  declare const ascSort: (a: any, b: any) => 0 | 1 | -1;
21
21
  declare const descSort: (a: any, b: any) => 0 | 1 | -1;
22
22
  export declare class SubscriptionArray<I extends Item = Item> extends Array<I> {
23
23
  constructor(updates?: Updates<I>, onUpdate?: UpdateHandler<I>);
24
- sorted: Item[];
24
+ sorted: I[];
25
25
  handleUpdate: UpdateHandler<I> | undefined;
26
26
  sortDirection: -1 | 0 | 1;
27
27
  sortCompareFunction: null | typeof ascSort | typeof descSort;
@@ -29,16 +29,10 @@ export declare class SubscriptionArray<I extends Item = Item> extends Array<I> {
29
29
  [setHandleUpdateSymbol](handleUpdate: UpdateHandler<I>): UpdateHandler<I>;
30
30
  update(updates: Updates<I>): this;
31
31
  [updateSymbol]: (updates: Updates<I>) => this;
32
- getAsUpdates(): (string | 0 | 1 | -1 | this[number][])[][] | null;
33
- [getAsUpdatesSymbol]: () => (string | 0 | 1 | -1 | this[number][])[][] | null;
34
- getAsInitialUpdated(): unknown[] & {
35
- added: unknown[];
36
- deleted: never[];
37
- };
38
- [getAsInitialUpdatedSymbol]: () => unknown[] & {
39
- added: unknown[];
40
- deleted: never[];
41
- };
32
+ getAsUpdates(): Updates<I>;
33
+ [getAsUpdatesSymbol]: () => Updates<I>;
34
+ getAsInitialUpdated(): Updated<I>;
35
+ [getAsInitialUpdatedSymbol]: () => Updated<I>;
42
36
  clear(): void;
43
37
  [clearSymbol]: () => void;
44
38
  valueOf(): this;
@@ -69,5 +63,5 @@ export declare class SubscriptionArrayWithSubscription<I extends Item = Item> ex
69
63
  static renewSymbol: symbol;
70
64
  static getSubscriptionSymbol: symbol;
71
65
  }
72
- export { Updated as SubscriptionArrayUpdated };
66
+ export {};
73
67
  //# sourceMappingURL=SubscriptionArray.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SubscriptionArray.d.ts","sourceRoot":"","sources":["../src/SubscriptionArray.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SubscriptionArray.d.ts","sourceRoot":"","sources":["../src/SubscriptionArray.ts"],"names":[],"mappings":"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"}
@@ -24,13 +24,13 @@ export declare class SubscriptionGroup<DS extends UnparsedDefinition[] = any[]>
24
24
  attach(definitions: DS, shouldReload?: boolean, immediately?: boolean): Promise<SubscriptionGroupItem<SubscriptionType, Definition<SubscriptionType>>[]>;
25
25
  detach(names: string[], shouldUpdate?: boolean): void;
26
26
  redefine(definitions: DS): Promise<(SubscriptionGroupItem<SubscriptionType, Definition<SubscriptionType>> | SubscriptionGroupItem<SubscriptionType, Definition<SubscriptionType>>[])[]>;
27
- subscribe(): (void | undefined)[];
27
+ subscribe(): (void | null)[];
28
28
  unsubscribe(): (void | undefined)[];
29
29
  loaded(): StatefulPromise<SubscriptionGroup<any[]>>;
30
30
  inited(): StatefulPromise<SubscriptionGroup<any[]>>;
31
31
  unloaded(): StatefulPromise<SubscriptionGroup<any[]>>;
32
32
  valueOf(): DS extends any ? any[] & Record<string, any> : ParseValues<DS>;
33
- [Symbol.iterator](): IterableIterator<any>;
33
+ [Symbol.iterator](): ArrayIterator<any>;
34
34
  static debounceLimit: number;
35
35
  }
36
36
  export { Options as SubscriptionGroupOptions, Target as SubscriptionGroupTarget };
@@ -22,7 +22,7 @@ export declare class SubscriptionGroupItem<T extends SubscriptionType = Subscrip
22
22
  loaded(): StatefulPromise<SubscriptionGroupItem<T, D>>;
23
23
  inited(): StatefulPromise<SubscriptionGroupItem<T, D>>;
24
24
  unloaded(): StatefulPromise<SubscriptionGroupItem<T, D>>;
25
- subscribe(): void | undefined;
25
+ subscribe(): void | null;
26
26
  unsubscribe(): void | undefined;
27
27
  renew(publicationName: Definition<T>["publicationName"], params: Definition<T>["params"]): void | undefined;
28
28
  valueOf(): SubscriptionValue<T> | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"SubscriptionGroupItem.d.ts","sourceRoot":"","sources":["../../src/SubscriptionGroup/SubscriptionGroupItem.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,eAAe,CAAC;AACzC,OAAO,EAAuB,eAAe,EAAE,MAAM,WAAW,CAAC;AAWjE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,KAAK,EACX,UAAU,EAGV,gBAAgB,EAChB,mBAAmB,EAEnB,iBAAiB,EACjB,MAAM,SAAS,CAAC;AAajB,qBAAa,qBAAqB,CAAC,CAAC,SAAS,gBAAgB,GAAG,gBAAgB,EAAE,CAAC,SAAS,UAAU,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAE,SAAQ,YAAY;;gBAClI,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,iBAAiB;IASnD,IAAI,SAAC;IACL,KAAK,CAAC,EAAE,iBAAiB,CAAC;IAC1B,KAAK,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC;IAC7B,IAAI,EAAG,QAAQ,GAAG,CAAC,CAAC;IACpB,eAAe,EAAG,UAAU,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC;IACnD,MAAM,EAAG,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IACjC,MAAM,EAAG,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IACjC,YAAY,EAAG,UAAU,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;IAC7C,WAAW,EAAG,UAAU,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;IAE3C,UAAU,EAAG,CAAC,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;IAExD,QAAQ,UAAS;IACjB,QAAQ,UAAS;IAMjB,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,KAAK,GAAE,iBAAiB,GAAG,SAAsB;IAyKnF,MAAM;IA8GN,MAAM;IAIN,MAAM;IAIN,QAAQ;IAIR,SAAS;IAIT,WAAW;IAIX,KAAK,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;IAIxF,OAAO;IAKP,MAAM,CAAC,aAAa,SAAK;CAmBzB"}
1
+ {"version":3,"file":"SubscriptionGroupItem.d.ts","sourceRoot":"","sources":["../../src/SubscriptionGroup/SubscriptionGroupItem.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,eAAe,CAAC;AACzC,OAAO,EAAuB,eAAe,EAAE,MAAM,WAAW,CAAC;AA6BjE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,KAAK,EACX,UAAU,EAGV,gBAAgB,EAChB,mBAAmB,EAEnB,iBAAiB,EACjB,MAAM,SAAS,CAAC;AAajB,qBAAa,qBAAqB,CAAC,CAAC,SAAS,gBAAgB,GAAG,gBAAgB,EAAE,CAAC,SAAS,UAAU,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAE,SAAQ,YAAY;;gBAClI,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,iBAAiB;IASnD,IAAI,SAAC;IACL,KAAK,CAAC,EAAE,iBAAiB,CAAC;IAC1B,KAAK,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC;IAC7B,IAAI,EAAG,QAAQ,GAAG,CAAC,CAAC;IACpB,eAAe,EAAG,UAAU,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC;IACnD,MAAM,EAAG,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IACjC,MAAM,EAAG,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IACjC,YAAY,EAAG,UAAU,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;IAC7C,WAAW,EAAG,UAAU,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;IAE3C,UAAU,EAAG,CAAC,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;IAExD,QAAQ,UAAS;IACjB,QAAQ,UAAS;IAMjB,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,KAAK,GAAE,iBAAiB,GAAG,SAAsB;IAyKnF,MAAM;IA8GN,MAAM;IAIN,MAAM;IAIN,QAAQ;IAIR,SAAS;IA4BT,WAAW;IAIX,KAAK,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;IAIxF,OAAO;IAKP,MAAM,CAAC,aAAa,SAAK;CAmBzB"}
@@ -1,5 +1,5 @@
1
- import type { SubscriptionArrayUpdated, Updates as SubscriptionArrayUpdates, SubscriptionArrayWithSubscription } from "../SubscriptionArray";
2
- import type { SubscriptionMapUpdated, Updates as SubscriptionMapUpdates, SubscriptionMapWithSubscription } from "../SubscriptionMap";
1
+ import type { Updated as SubscriptionArrayUpdated, Updates as SubscriptionArrayUpdates, SubscriptionArrayWithSubscription } from "../SubscriptionArray";
2
+ import type { Updated as SubscriptionMapUpdated, Updates as SubscriptionMapUpdates, SubscriptionMapWithSubscription } from "../SubscriptionMap";
3
3
  import type { Updated as SubscriptionObjectUpdated, Updates as SubscriptionObjectUpdates, SubscriptionObjectWithSubscription } from "../SubscriptionObject";
4
4
  import type { SubscriptionGroup } from "./SubscriptionGroup";
5
5
  export type SubscriptionType = "array" | "map" | "object";
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/SubscriptionGroup/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/SubscriptionGroup/types.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@ type GenericItem = {
4
4
  _id: string;
5
5
  } & Record<string, any>;
6
6
  type Item = GenericItem | SubscriptionMapItem;
7
- type Updated<I extends Item = Item> = {
7
+ export type Updated<I extends Item = Item> = {
8
8
  deleted: string[];
9
9
  added: I[];
10
10
  } & I[];
@@ -18,7 +18,7 @@ export type Updates<I extends Item = Item> = ([
18
18
  ] | [
19
19
  "i",
20
20
  items: I[],
21
- sortList?: SortList
21
+ sortList?: null | SortList
22
22
  ] | [
23
23
  "u",
24
24
  itemUpdates: {
@@ -26,22 +26,20 @@ export type Updates<I extends Item = Item> = ([
26
26
  } & Partial<I>,
27
27
  isAtomicOrUpdatedFields: string[] | true
28
28
  ] | null)[] | null;
29
- type UpdateHandler<I extends Item = Item> = (map: SubscriptionMap<I>, updated: Updated<I>, updates: Updates<I>) => void;
29
+ export type UpdateHandler<I extends Item = Item> = (map: SubscriptionMap<I>, updated: Updated<I>, updates: Updates<I>) => void;
30
30
  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
  });
@@ -50,16 +48,10 @@ export declare class SubscriptionMap<I extends Item = Item> extends Map<string,
50
48
  };
51
49
  update(updates: Updates<I>): this;
52
50
  [updateSymbol]: (updates: Updates<I>) => this;
53
- getAsUpdates(): (string | any[] | SortList | null)[][] | null;
54
- [getAsUpdatesSymbol]: () => (string | any[] | SortList | null)[][] | null;
55
- getAsInitialUpdated(): I[] & {
56
- added: I[];
57
- deleted: never[];
58
- };
59
- [getAsInitialUpdatedSymbol]: () => I[] & {
60
- added: I[];
61
- deleted: never[];
62
- };
51
+ getAsUpdates(): Updates<I>;
52
+ [getAsUpdatesSymbol]: () => Updates<I>;
53
+ getAsInitialUpdated(): Updated<I>;
54
+ [getAsInitialUpdatedSymbol]: () => Updated<I>;
63
55
  clear(): void;
64
56
  [clearSymbol]: () => void;
65
57
  valueOf(): I[];
@@ -92,11 +84,11 @@ export declare class SubscriptionMapWithSubscription<I extends Item = Item> exte
92
84
  static getSubscriptionSymbol: symbol;
93
85
  }
94
86
  export declare class SubscriptionMapItem {
87
+ #private;
95
88
  constructor(map: SubscriptionMap, updates: GenericItem);
96
89
  _id: string;
97
- private map;
98
90
  update(updates: GenericItem): void;
99
91
  delete(): void;
100
92
  }
101
- export { Updated as SubscriptionMapUpdated };
93
+ export {};
102
94
  //# sourceMappingURL=SubscriptionMap.d.ts.map
@@ -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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"}
@@ -4,7 +4,7 @@ declare const handleUpdateSymbol: unique symbol;
4
4
  declare const updatesSymbol: unique symbol;
5
5
  export type Updated = Record<string, unknown>;
6
6
  export type Updates = null | Record<string, unknown>;
7
- type UpdateHandler = (object: SubscriptionObject, updated: Updated, updates: Updates) => void;
7
+ export type UpdateHandler = (object: SubscriptionObject, updated: Updated, updates: Updates) => void;
8
8
  export declare class SubscriptionObject {
9
9
  constructor(updates?: Updates, onUpdate?: UpdateHandler);
10
10
  [handleUpdateSymbol]?: UpdateHandler;
@@ -12,10 +12,8 @@ export declare class SubscriptionObject {
12
12
  [getHandleUpdateSymbol](): UpdateHandler | undefined;
13
13
  [setHandleUpdateSymbol](handleUpdate: UpdateHandler): UpdateHandler;
14
14
  [updateSymbol](updates: Updates): this;
15
- [getAsUpdatesSymbol](): {
16
- [x: string]: unknown;
17
- } | null;
18
- [getAsInitialUpdatedSymbol](): this | null;
15
+ [getAsUpdatesSymbol](): Updates;
16
+ [getAsInitialUpdatedSymbol](): Updated;
19
17
  [clearSymbol](): void;
20
18
  valueOf(): this | null;
21
19
  get [Symbol.toStringTag](): string;
@@ -29,10 +27,8 @@ export declare class SubscriptionObject {
29
27
  static WithSubscription: typeof SubscriptionObjectWithSubscription;
30
28
  }
31
29
  export declare class SubscriptionObjectWithSubscription extends SubscriptionObject {
30
+ #private;
32
31
  constructor(publicationName: string, params: unknown[], onUpdate: UpdateHandler, immediately?: boolean);
33
- private publicationName;
34
- private params;
35
- private subscription;
36
32
  [subscribeSymbol](): void;
37
33
  [unsubscribeSymbol](): void;
38
34
  [renewSymbol](publicationName?: string, params?: unknown[]): void;
@@ -43,5 +39,5 @@ export declare class SubscriptionObjectWithSubscription extends SubscriptionObje
43
39
  static renewSymbol: symbol;
44
40
  static getSubscriptionSymbol: symbol;
45
41
  }
46
- export { Updated as SubscriptionObjectUpdated };
42
+ export {};
47
43
  //# sourceMappingURL=SubscriptionObject.d.ts.map
@@ -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,KAAK,aAAa,GAAG,CAAC,MAAM,EAAE,kBAAkB,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;AAG9F,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;;;IAIpB,CAAC,yBAAyB,CAAC;IAI3B,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;AAID,OAAO,EAAE,OAAO,IAAI,yBAAyB,EAAE,CAAC"}
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.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  export * from "./Subscription.js";
2
- export { SubscriptionArray, SubscriptionArrayUpdated, SubscriptionArrayWithSubscription } from "./SubscriptionArray";
2
+ export { SubscriptionArray, SubscriptionArrayWithSubscription, Updated as SubscriptionArrayUpdated } from "./SubscriptionArray";
3
3
  export * from "./SubscriptionGroup";
4
- export { SubscriptionMap, SubscriptionMapUpdated, SubscriptionMapWithSubscription } from "./SubscriptionMap";
5
- export { SubscriptionObject, SubscriptionObjectUpdated, SubscriptionObjectWithSubscription } from "./SubscriptionObject";
4
+ export { SubscriptionMap, SubscriptionMapWithSubscription, Updated as SubscriptionMapUpdated } from "./SubscriptionMap";
5
+ export { SubscriptionObject, SubscriptionObjectWithSubscription, Updated as SubscriptionObjectUpdated } from "./SubscriptionObject";
6
6
  export { clearSymbol, getAsInitialUpdatedSymbol, getAsUpdatesSymbol, getHandleSubscriptionSymbol, getHandleUpdateSymbol, getSubscriptionSymbol, renewSymbol, setHandleSubscriptionSymbol, setHandleUpdateSymbol, subscribeSymbol, unsubscribeSymbol, updateSymbol } from "./symbols";
7
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,iCAAiC,EAAE,MAAM,qBAAqB,CAAC;AACrH,cAAc,qBAAqB,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,+BAA+B,EAAE,MAAM,mBAAmB,CAAC;AAC7G,OAAO,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,kCAAkC,EAAE,MAAM,sBAAsB,CAAC;AACzH,OAAO,EACN,WAAW,EACX,yBAAyB,EACzB,kBAAkB,EAClB,2BAA2B,EAC3B,qBAAqB,EACrB,qBAAqB,EACrB,WAAW,EACX,2BAA2B,EAC3B,qBAAqB,EACrB,eAAe,EACf,iBAAiB,EACjB,YAAY,EACZ,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,iBAAiB,EAAE,iCAAiC,EAAE,OAAO,IAAI,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAChI,cAAc,qBAAqB,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,+BAA+B,EAAE,OAAO,IAAI,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AACxH,OAAO,EAAE,kBAAkB,EAAE,kCAAkC,EAAE,OAAO,IAAI,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AACpI,OAAO,EACN,WAAW,EACX,yBAAyB,EACzB,kBAAkB,EAClB,2BAA2B,EAC3B,qBAAqB,EACrB,qBAAqB,EACrB,WAAW,EACX,2BAA2B,EAC3B,qBAAqB,EACrB,eAAe,EACf,iBAAiB,EACjB,YAAY,EACZ,MAAM,WAAW,CAAC"}
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- var Ot=Object.defineProperty;var ut=r=>{throw TypeError(r)};var Gt=(r,s,t)=>s in r?Ot(r,s,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[s]=t;var i=(r,s,t)=>Gt(r,typeof s!="symbol"?s+"":s,t),st=(r,s,t)=>s.has(r)||ut("Cannot "+t);var p=(r,s,t)=>(st(r,s,"read from private field"),t?t.call(r):s.get(r)),v=(r,s,t)=>s.has(r)?ut("Cannot add the same private member more than once"):s instanceof WeakSet?s.add(r):s.set(r,t),m=(r,s,t,e)=>(st(r,s,"write to private field"),e?e.call(r,t):s.set(r,t),t),b=(r,s,t)=>(st(r,s,"access private method"),t);var dt,q,_,E=class{constructor(s,t,e=[],n,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",()=>{_.sendMessage("s-s",this.type,this.publicationName,this.i,this.args,this.immediately),this.immediately=!0});if(!_)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=n,this.immediately=o&&!window.__initials,q.set(this.i,this),_.on("open",this.start),_.isOpen&&this.start(),window.__initials?(this.isActive=!0,this.handler(window.__initials.splice(0,1)[0])):this.isActive=!1}cancel(){q.delete(this.i),_.off("open",this.start),_.sendMessage("s-u",this.i)}static bindTo(s){_=s,dt=0,q=new Map,_.on("message:s-c",(t,e)=>{let n=q.get(t);n&&(n.isActive=!0,n.handler(e))}),_.on("close",()=>{for(let t of q.values())t.isActive=!1}),_.on("server-change",()=>{for(let t of q.values())t.handler(null)})}};import{removeOne as jt}from"@nesvet/n";var x=Symbol("update"),O=Symbol("getHandleUpdate"),f=Symbol("setHandleUpdate"),G=Symbol("getAsUpdates"),k=Symbol("getAsInitialUpdated"),L=Symbol("clear"),S=Symbol("subscribe"),y=Symbol("unsubscribe"),D=Symbol("renew"),P=Symbol("getSubscription"),kt=Symbol("getHandleSubscription"),Pt=Symbol("setHandleSubscription");var Bt=(r,s)=>r>s?1:r<s?-1:0,Ft=(r,s)=>r>s?-1:r<s?1:0,lt,ht,ct,mt,H=class extends Array{constructor(t,e){super();i(this,"sorted",[]);i(this,"handleUpdate");i(this,"sortDirection",0);i(this,"sortCompareFunction",null);i(this,mt,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)}[O](){return this.handleUpdate}[f](t){return this.handleUpdate=t}update(t){let e=Object.assign([],{deleted:[],added:[]});if(t){let n=!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,n=!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&&(n=!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()}n&&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[(mt=x,ct=G,ht=k,lt=L,Symbol.toStringTag)](){return"SubscriptionArray"}};i(H,"updateSymbol",x),i(H,"getHandleUpdateSymbol",O),i(H,"setHandleUpdateSymbol",f),i(H,"getAsUpdatesSymbol",G),i(H,"getAsInitialUpdatedSymbol",k),i(H,"clearSymbol",L),i(H,"WithSubscription");var j=class extends H{constructor(t,e,n,o=!0){super(null,n);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[S](){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[D](){return this.renew}[P](){return this.subscription}get[Symbol.toStringTag](){return"SubscriptionArrayWithSubscription"}};i(j,"subscribeSymbol",S),i(j,"unsubscribeSymbol",y),i(j,"renewSymbol",D),i(j,"getSubscriptionSymbol",P);H.WithSubscription=j;import $t from"eventemitter3";import{debounce as Vt,StatefulPromise as Z}from"@nesvet/n";var g={};import Ct from"eventemitter3";import{debounce as Wt,removeOne as It,StatefulPromise as Y}from"@nesvet/n";import{removeOne as Nt}from"@nesvet/n";function Mt(r){let s=document.createElement("script");s.textContent=`window.__insite_subscription_map_sort_function = function sort(a, b) { return ${Object.entries(r).map(([e,n])=>n>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 bt,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,bt,this.clear);e&&(this.handleUpdate=e),t&&this.update(t)}sort(){this.sortCompareFunction&&this.sorted.sort(this.sortCompareFunction)}[O](){return this.handleUpdate}[f](t){return this.handleUpdate=t}set Item(t){if(this.TheItem=t,this.size)for(let[e,n]of this)this.set(e,new t(this,n))}get Item(){return this.TheItem}update(t){let e=Object.assign([],{added:[],deleted:[]});if(t){let n=!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=Mt(l),this.fieldsToSort=[...new Set(Object.keys(l).map(c=>c.replace(/\..+/,"")))],n=!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 _t in Lt)delete T[_t];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&&!n&&(!d||d.some(w=>this.fieldsToSort.includes(w)))&&(n=!0)}else l=o?new o(this,a):{...a},this.set(l._id,l),this.sorted.push(l),this.sortList&&(n=!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),Nt(this.sorted,l),e.deleted.push(a));break}default:this.clear()}n&&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=G,ft=k,bt=L,Symbol.toStringTag)](){return"SubscriptionMap"}};i(U,"updateSymbol",x),i(U,"getHandleUpdateSymbol",O),i(U,"setHandleUpdateSymbol",f),i(U,"getAsUpdatesSymbol",G),i(U,"getAsInitialUpdatedSymbol",k),i(U,"clearSymbol",L),i(U,"WithSubscription"),i(U,"Item");var B=class extends U{constructor(t,e,n,o=!0){super(null,n);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[S](){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[D](){return this.renew}[P](){return this.subscription}get[Symbol.toStringTag](){return"SubscriptionMapWithSubscription"}};i(B,"subscribeSymbol",S),i(B,"unsubscribeSymbol",y),i(B,"renewSymbol",D),i(B,"getSubscriptionSymbol",P);U.WithSubscription=B;var nt=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=nt;var X=Symbol("handleUpdate"),R=Symbol("updates"),gt,Ut,A=class{constructor(s,t){i(this,Ut);i(this,gt,null);t&&(this[X]=t),s&&this[x](s)}[(Ut=X,gt=R,O)](){return this[X]}[f](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[L]();return this[X]?.(this,this,this[R]),this}[G](){return this[R]&&{...this[R]}}[k](){return this.valueOf()}[L](){for(let s in this)delete this[s];this[R]=null}valueOf(){return this[R]&&this}get[Symbol.toStringTag](){return"SubscriptionObject"}};i(A,"updateSymbol",x),i(A,"getHandleUpdateSymbol",O),i(A,"setHandleUpdateSymbol",f),i(A,"getAsUpdatesSymbol",G),i(A,"getAsInitialUpdatedSymbol",k),i(A,"clearSymbol",L),i(A,"WithSubscription");var F=class extends A{constructor(t,e,n,o=!0){super(null,n);i(this,"publicationName");i(this,"params");i(this,"subscription",null);this.publicationName=t,this.params=e,o&&this[S]()}[S](){this.subscription||(this.subscription=new E("object",this.publicationName,this.params,t=>this[x](t)))}[y](){this.subscription&&(this.subscription.cancel(),this.subscription=null)}[D](t,e){this.subscription&&(this[y](),t&&(Array.isArray(t)?e=t:this.publicationName=t),e&&(this.params=e),this[S]())}[P](){return this.subscription}get[Symbol.toStringTag](){return"SubscriptionObjectWithSubscription"}};i(F,"subscribeSymbol",S),i(F,"unsubscribeSymbol",y),i(F,"renewSymbol",D),i(F,"getSubscriptionSymbol",P);A.WithSubscription=F;function vt(r){return Array.isArray(r)}var N,z,M,I,rt,Tt,V,K,wt,xt,ot,et=class et extends Ct{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,N);v(this,z);v(this,M);v(this,V,null);v(this,K,(t,e,n)=>{if(n)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 m(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:n,type:o="object",publicationName:u,params:h,handle:a,onBeforeInit:l,debounce:c=et.debounceLimit,preventBind:d}=t;if(this.group){if((!n||this.value===n)&&this.type===o&&this.publicationName===u&&JSON.stringify(this.params)===JSON.stringify(h)&&this.handle===a&&this.onBeforeInit===l)return b(this,I,rt).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,n?this.value=n:(this.publicationName=u??this.name,this.params=h??[]),b(this,I,rt).call(this,{debounceLimit:c,preventBind:d}),b(this,I,Tt).call(this,e),null}detach(){this.group&&(this.value?.[y](),this.isLoaded=!1,b(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,N)}inited(){return p(this,z)}unloaded(){return p(this,M)}subscribe(){return this.value?.[S]()}unsubscribe(){return this.value?.[y]()}renew(t,e){return this.value?.[D](t,e)}valueOf(){return this.value}};N=new WeakMap,z=new WeakMap,M=new WeakMap,I=new WeakSet,rt=function({debounceLimit:t,preventBind:e}){let n=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=Wt(()=>{let a=!this.group;a&&(this.group=u),n(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=n;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,N)||p(this,N).isFulfilled)&&m(this,N,new Y),(!p(this,z)||p(this,z).isFulfilled)&&m(this,z,new Y),(!p(this,M)||p(this,M).isFulfilled)&&m(this,M,new Y),this.type){case"array":{let e=p(this,K);this.value?this.value[f](e):this.value=new j(this.publicationName,this.params,e,!1);break}case"map":{let e=p(this,K);this.value?this.value[f](e):this.value=new B(this.publicationName,this.params,e,!1);break}default:{let e=p(this,K);this.value?this.value[f](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)}m(this,V,null),this.emit("load",this.value),p(this,N).resolve(this),p(this,M).isFulfilled&&m(this,M,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,M).resolve(this),p(this,N).isFulfilled&&m(this,N,new Y)},i(et,"debounceLimit",4),g.itemLoad=t=>{var e;return b(e=t,I,wt).call(e)},g.itemInit=t=>{var e;return b(e=t,I,xt).call(e)},g.itemUnload=t=>{var e;return b(e=t,I,ot).call(e)};var tt=et;function Et(r){return Array.isArray(r)}function Dt(r){if(Et(r)){let s=r.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 r.type??(r.type="object"),r}var C,Q,W,J,$,at,At,pt,it=class it extends $t{constructor(t,{target:e,debounce:n=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,C);v(this,Q);v(this,W);v(this,J,null);this.applyOptions({target:e,debounceLimit:n}),m(this,Q,new Z),this.attach(t,!1,o)}applyOptions({target:t,debounceLimit:e}){if(this.target!==t){if(this.target)for(let n of this.items)n.isLoaded&&!n.preventBind&&delete this.target[n.name];if(this.target=t,this.target)for(let n of this.items)n.isLoaded&&!n.preventBind&&(this.target[n.name]=n.value)}if(p(this,J)!==e)if(m(this,J,e),typeof p(this,J)=="number"){let n=Vt(()=>this.emit("update",this.values),p(this,J));this.emitUpdate=()=>n()}else this.emitUpdate=()=>this.emit("update",this.values)}attach(t,e=this.isLoaded,n=!0){return e&&(this.isLoaded=!1),(!p(this,C)||p(this,C).isFulfilled)&&m(this,C,new Z),(!p(this,W)||p(this,W).isFulfilled)&&m(this,W,new Z),Promise.all(t.map(o=>new tt(Dt(o),this)).map(o=>(n&&o.subscribe(),o.loaded())))}detach(t,e=!0){for(let n of t)this.items[n]?.detach();e&&(b(this,$,pt).call(this),b(this,$,at).call(this))}redefine(t){let e=new Map(this.items.map(u=>[u.name,u])),n=[],o=[];for(let u of t)u=Dt(u),e.delete(u.name)?n.push(u):o.push(u);return this.isLoaded=!1,this.detach([...e.keys()],!1),Promise.all([...n.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,C)}inited(){return p(this,Q)}unloaded(){return p(this,W)}valueOf(){return this.values}[Symbol.iterator](){return this.values[Symbol.iterator]()}};C=new WeakMap,Q=new WeakMap,W=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,C).resolve(this),p(this,W).isFulfilled&&m(this,W,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,W).resolve(this),p(this,C).isFulfilled&&m(this,C,new Z)}},i(it,"debounceLimit",8),g.groupLoad=t=>{var e;return b(e=t,$,at).call(e)},g.groupInit=t=>{var e;return b(e=t,$,At).call(e)},g.groupUnload=t=>{var e;return b(e=t,$,pt).call(e)};var Ht=it;export{E as Subscription,H as SubscriptionArray,j as SubscriptionArrayWithSubscription,Ht as SubscriptionGroup,U as SubscriptionMap,B as SubscriptionMapWithSubscription,A as SubscriptionObject,F as SubscriptionObjectWithSubscription,L as clearSymbol,k as getAsInitialUpdatedSymbol,G as getAsUpdatesSymbol,kt as getHandleSubscriptionSymbol,O as getHandleUpdateSymbol,P as getSubscriptionSymbol,D as renewSymbol,Pt as setHandleSubscriptionSymbol,f as setHandleUpdateSymbol,S 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,G,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",()=>{G.sendMessage("s-s",this.type,this.publicationName,this.i,this.args,this.immediately),this.immediately=!0});if(!G)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),G.on("open",this.start),G.isOpen&&this.start(),window.__initials?(this.isActive=!0,this.handler(window.__initials.splice(0,1)[0])):this.isActive=!1}cancel(){et.delete(this.i),G.off("open",this.start),G.sendMessage("s-u",this.i)}static bindTo(s){G=s,wt=0,et=new Map,G.on("message:s-c",(t,e)=>{let r=et.get(t);r&&(r.isActive=!0,r.handler(e))}),G.on("close",()=>{for(let t of et.values())t.isActive=!1}),G.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 Dt(o){return[...new Set(o)]}var A=Symbol("update"),D=Symbol("getHandleUpdate"),U=Symbol("setHandleUpdate"),O=Symbol("getAsUpdates"),H=Symbol("getAsInitialUpdated"),L=Symbol("clear"),y=Symbol("subscribe"),I=Symbol("unsubscribe"),j=Symbol("renew"),k=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,Ot,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,Ot,this.clear);e&&(this.handleUpdate=e),Array.isArray(t)&&this.update(t)}[D](){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=O,Ht=H,Ot=L,Symbol.toStringTag)](){return"SubscriptionArray"}};i(P,"updateSymbol",A),i(P,"getHandleUpdateSymbol",D),i(P,"setHandleUpdateSymbol",U),i(P,"getAsUpdatesSymbol",O),i(P,"getAsInitialUpdatedSymbol",H),i(P,"clearSymbol",L),i(P,"WithSubscription");var M=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}[k](){return this.subscription}get[Symbol.toStringTag](){return"SubscriptionArrayWithSubscription"}};i(M,"subscribeSymbol",y),i(M,"unsubscribeSymbol",I),i(M,"renewSymbol",j),i(M,"getSubscriptionSymbol",k);P.WithSubscription=M;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,Gt,kt,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,kt,this.update);i(this,Gt,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)}[D](){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,Dt(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[(kt=A,Gt=O,Lt=H,_t=L,Symbol.toStringTag)](){return"SubscriptionMap"}};st=new WeakMap,Y=new WeakMap,rt=new WeakMap,i(T,"updateSymbol",A),i(T,"getHandleUpdateSymbol",D),i(T,"setHandleUpdateSymbol",U),i(T,"getAsUpdatesSymbol",O),i(T,"getAsInitialUpdatedSymbol",H),i(T,"clearSymbol",L),i(T,"WithSubscription"),i(T,"Item");var $=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}[k](){return this.subscription}get[Symbol.toStringTag](){return"SubscriptionMapWithSubscription"}};i($,"subscribeSymbol",y),i($,"unsubscribeSymbol",I),i($,"renewSymbol",j),i($,"getSubscriptionSymbol",k);T.WithSubscription=$;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"),Mt,$t,_=class{constructor(s,t){i(this,$t);i(this,Mt,null);t&&(this[ht]=t),s&&this[A](s)}[($t=ht,Mt=z,D)](){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}[O](){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",D),i(_,"setHandleUpdateSymbol",U),i(_,"getAsUpdatesSymbol",O),i(_,"getAsInitialUpdatedSymbol",H),i(_,"clearSymbol",L),i(_,"WithSubscription");var ot,nt,B,F=class extends _{constructor(t,e,r,n=!0){super(null,r);f(this,ot);f(this,nt);f(this,B,null);c(this,ot,t),c(this,nt,e),n&&this[y]()}[y](){a(this,B)||c(this,B,new q("object",a(this,ot),a(this,nt),t=>this[A](t)))}[I](){a(this,B)&&(a(this,B).cancel(),c(this,B,null))}[j](t,e){a(this,B)&&(this[I](),t&&(Array.isArray(t)?e=t:c(this,ot,t)),e&&c(this,nt,e),this[y]())}[k](){return a(this,B)}get[Symbol.toStringTag](){return"SubscriptionObjectWithSubscription"}};ot=new WeakMap,nt=new WeakMap,B=new WeakMap,i(F,"subscribeSymbol",y),i(F,"unsubscribeSymbol",I),i(F,"renewSymbol",j),i(F,"getSubscriptionSymbol",k);_.WithSubscription=F;function Bt(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[D]();if(t){let e=this.value[H](),r=this.value[O]();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(Bt(u))if(Bt(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 M(this.publicationName,this.params,e,!1);break}case"map":{let e=a(this,at);this.value?this.value[U](e):this.value=new $(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,M as SubscriptionArrayWithSubscription,Rt as SubscriptionGroup,T as SubscriptionMap,$ as SubscriptionMapWithSubscription,_ as SubscriptionObject,F as SubscriptionObjectWithSubscription,L as clearSymbol,H as getAsInitialUpdatedSymbol,O as getAsUpdatesSymbol,zt as getHandleSubscriptionSymbol,D as getHandleUpdateSymbol,k 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\ntype 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 | 1 ] |\n\t\tnull\n\t)[] |\n\tnull;\n\ntype 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: Item[] = [];\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() {\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() {\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\nexport { Updated as SubscriptionArrayUpdated };\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 { type SubscriptionArrayUpdated, SubscriptionArrayWithSubscription } from \"../SubscriptionArray\";\nimport { type SubscriptionMapUpdated, SubscriptionMapWithSubscription } from \"../SubscriptionMap\";\nimport { type Updated as SubscriptionObjectUpdated, SubscriptionObjectWithSubscription } from \"../SubscriptionObject\";\nimport {\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\treturn this.value?.[subscribeSymbol]();\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\ntype 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?: SortList ] |\n\t\t[ \"u\"/* update */, itemUpdates: { _id: string } & Partial<I>, isAtomicOrUpdatedFields: string[] | true ] |\n\t\tnull\n\t)[] |\n\tnull;\n\ntype 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\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\tprivate updates = new Map();\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();\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);\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() {\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() {\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\nexport { Updated as SubscriptionMapUpdated };\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>;\ntype 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]() {\n\t\treturn this[updatesSymbol] && { ...this[updatesSymbol] };\n\t}\n\t\n\t[getAsInitialUpdatedSymbol]() {\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\nexport { Updated as SubscriptionObjectUpdated };\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", "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<Item>(array: Item[], item: Item): 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<Item>(array: Item[]): Item[] {\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.3",
3
+ "version": "2.0.6",
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.26",
8
+ "packageManager": "bun@1.1.36",
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.18"
30
30
  },
31
31
  "devDependencies": {
32
- "@nesvet/conveyer": "^2.2.4",
33
- "@nesvet/eslint-config": "^2.0.25",
34
- "typescript": "^5.5.4"
32
+ "@nesvet/conveyer": "^2.2.5",
33
+ "@nesvet/eslint-config": "^2.0.34",
34
+ "typescript": "^5.7.2"
35
35
  }
36
36
  }