insite-subscriptions-client 2.0.0 → 2.0.2

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.
Files changed (35) hide show
  1. package/dist/Subscription.d.ts +18 -0
  2. package/dist/Subscription.d.ts.map +1 -0
  3. package/dist/SubscriptionArray.d.ts +73 -0
  4. package/dist/SubscriptionArray.d.ts.map +1 -0
  5. package/dist/SubscriptionGroup/SubscriptionGroup.d.ts +37 -0
  6. package/dist/SubscriptionGroup/SubscriptionGroup.d.ts.map +1 -0
  7. package/dist/SubscriptionGroup/SubscriptionGroupItem.d.ts +31 -0
  8. package/dist/SubscriptionGroup/SubscriptionGroupItem.d.ts.map +1 -0
  9. package/dist/SubscriptionGroup/common.d.ts +12 -0
  10. package/dist/SubscriptionGroup/common.d.ts.map +1 -0
  11. package/dist/SubscriptionGroup/index.d.ts +3 -0
  12. package/dist/SubscriptionGroup/index.d.ts.map +1 -0
  13. package/dist/SubscriptionGroup/types.d.ts +41 -0
  14. package/dist/SubscriptionGroup/types.d.ts.map +1 -0
  15. package/dist/SubscriptionMap.d.ts +102 -0
  16. package/dist/SubscriptionMap.d.ts.map +1 -0
  17. package/dist/SubscriptionObject.d.ts +47 -0
  18. package/dist/SubscriptionObject.d.ts.map +1 -0
  19. package/{src/index.ts → dist/index.d.ts} +2 -14
  20. package/dist/index.d.ts.map +1 -0
  21. package/dist/index.js +2 -0
  22. package/dist/index.js.map +7 -0
  23. package/dist/symbols.d.ts +13 -0
  24. package/dist/symbols.d.ts.map +1 -0
  25. package/package.json +2 -2
  26. package/src/Subscription.ts +0 -101
  27. package/src/SubscriptionArray.ts +0 -275
  28. package/src/SubscriptionGroup/SubscriptionGroup.ts +0 -319
  29. package/src/SubscriptionGroup/SubscriptionGroupItem.ts +0 -391
  30. package/src/SubscriptionGroup/common.ts +0 -13
  31. package/src/SubscriptionGroup/index.ts +0 -8
  32. package/src/SubscriptionGroup/types.ts +0 -121
  33. package/src/SubscriptionMap.ts +0 -455
  34. package/src/SubscriptionObject.ts +0 -168
  35. package/src/symbols.ts +0 -12
@@ -0,0 +1,18 @@
1
+ import type { InSiteWebSocket } from "insite-ws/client";
2
+ declare global {
3
+ var __initials: undefined | unknown[];
4
+ }
5
+ export declare class Subscription {
6
+ constructor(type: "array" | "map" | "object", publicationName: string, args: unknown[] | undefined, handler: (updates: unknown) => void, immediately?: boolean);
7
+ i: number;
8
+ type: "object" | "array" | "map";
9
+ publicationName: string;
10
+ args: unknown[];
11
+ handler: (updates: unknown) => void;
12
+ immediately: boolean;
13
+ isActive: boolean;
14
+ start: () => void;
15
+ cancel(): void;
16
+ static bindTo(_ws: InSiteWebSocket): void;
17
+ }
18
+ //# sourceMappingURL=Subscription.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Subscription.d.ts","sourceRoot":"","sources":["../src/Subscription.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAGxD,OAAO,CAAC,MAAM,CAAC;IACd,IAAI,UAAU,EAAE,SAAS,GAAG,OAAO,EAAE,CAAC;CACtC;AAQD,qBAAa,YAAY;gBACZ,IAAI,EAAE,OAAO,GAAG,KAAK,GAAG,QAAQ,EAAE,eAAe,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,YAAK,EAAE,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,EAAE,WAAW,UAAO;IA2BpJ,CAAC,SAAC;IACF,IAAI,6BAAC;IACL,eAAe,SAAC;IAChB,IAAI,YAAC;IACL,OAAO,YA/ByG,OAAO,KAAK,IAAI,CA+BxH;IACR,WAAW,UAAC;IACZ,QAAQ,UAAC;IAET,KAAK,aAMH;IAEF,MAAM;IAWN,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,eAAe;CAgClC"}
@@ -0,0 +1,73 @@
1
+ import { Subscription } from "./Subscription";
2
+ import { clearSymbol, getAsInitialUpdatedSymbol, getAsUpdatesSymbol, getHandleUpdateSymbol, getSubscriptionSymbol, renewSymbol, setHandleUpdateSymbol, subscribeSymbol, unsubscribeSymbol, updateSymbol } from "./symbols";
3
+ type Item = unknown;
4
+ type Updated<I extends Item = Item> = {
5
+ deleted: I[];
6
+ added: I[];
7
+ } & I[];
8
+ export type Updates<I extends Item = Item> = ([
9
+ "a",
10
+ newItem: I
11
+ ] | [
12
+ "d",
13
+ itemToDelete: I
14
+ ] | [
15
+ "i",
16
+ items: I[],
17
+ sort?: -1 | 1
18
+ ] | null)[] | null;
19
+ type UpdateHandler<I extends Item = Item> = (array: SubscriptionArray<I>, updated: Updated<I>, updates: Updates<I>) => void;
20
+ declare const ascSort: (a: any, b: any) => 0 | 1 | -1;
21
+ declare const descSort: (a: any, b: any) => 0 | 1 | -1;
22
+ export declare class SubscriptionArray<I extends Item = Item> extends Array<I> {
23
+ constructor(updates?: Updates<I>, onUpdate?: UpdateHandler<I>);
24
+ sorted: Item[];
25
+ handleUpdate: UpdateHandler<I> | undefined;
26
+ sortDirection: -1 | 0 | 1;
27
+ sortCompareFunction: null | typeof ascSort | typeof descSort;
28
+ [getHandleUpdateSymbol](): UpdateHandler<I> | undefined;
29
+ [setHandleUpdateSymbol](handleUpdate: UpdateHandler<I>): UpdateHandler<I>;
30
+ update(updates: Updates<I>): this;
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
+ };
42
+ clear(): void;
43
+ [clearSymbol]: () => void;
44
+ valueOf(): this;
45
+ get [Symbol.toStringTag](): string;
46
+ static updateSymbol: symbol;
47
+ static getHandleUpdateSymbol: symbol;
48
+ static setHandleUpdateSymbol: symbol;
49
+ static getAsUpdatesSymbol: symbol;
50
+ static getAsInitialUpdatedSymbol: symbol;
51
+ static clearSymbol: symbol;
52
+ static WithSubscription: typeof SubscriptionArrayWithSubscription;
53
+ }
54
+ export declare class SubscriptionArrayWithSubscription<I extends Item = Item> extends SubscriptionArray<I> {
55
+ constructor(publicationName: string, params: unknown[], onUpdate: UpdateHandler<I>, immediately?: boolean);
56
+ publicationName: string;
57
+ params: unknown[];
58
+ subscription: null | Subscription;
59
+ subscribe(): void;
60
+ get [subscribeSymbol](): () => void;
61
+ unsubscribe(): void;
62
+ get [unsubscribeSymbol](): () => void;
63
+ renew(publicationName?: string, params?: unknown[]): void;
64
+ get [renewSymbol](): (publicationName?: string, params?: unknown[]) => void;
65
+ [getSubscriptionSymbol](): Subscription | null;
66
+ get [Symbol.toStringTag](): string;
67
+ static subscribeSymbol: symbol;
68
+ static unsubscribeSymbol: symbol;
69
+ static renewSymbol: symbol;
70
+ static getSubscriptionSymbol: symbol;
71
+ }
72
+ export { Updated as SubscriptionArrayUpdated };
73
+ //# sourceMappingURL=SubscriptionArray.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SubscriptionArray.d.ts","sourceRoot":"","sources":["../src/SubscriptionArray.ts"],"names":[],"mappings":"AACA,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;AAMnB,KAAK,IAAI,GAAG,OAAO,CAAC;AAEpB,KAAK,OAAO,CAAC,CAAC,SAAS,IAAI,GAAG,IAAI,IAAI;IACrC,OAAO,EAAE,CAAC,EAAE,CAAC;IACb,KAAK,EAAE,CAAC,EAAE,CAAC;CACX,GAAG,CAAC,EAAE,CAAC;AAER,MAAM,MAAM,OAAO,CAAC,CAAC,SAAS,IAAI,GAAG,IAAI,IACxC,CACC;IAAE,GAAG;IAAW,OAAO,EAAE,CAAC;CAAE,GAC5B;IAAE,GAAG;IAAc,YAAY,EAAE,CAAC;CAAE,GACpC;IAAE,GAAG;IAAe,KAAK,EAAE,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC;CAAE,GAC/C,IAAI,CACJ,EAAE,GACH,IAAI,CAAC;AAEN,KAAK,aAAa,CAAC,CAAC,SAAS,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;AAE5H,QAAA,MAAM,OAAO,MAAO,GAAG,KAAK,GAAG,eAA+B,CAAC;AAC/D,QAAA,MAAM,QAAQ,MAAO,GAAG,KAAK,GAAG,eAA+B,CAAC;AAGhE,qBAAa,iBAAiB,CAAC,CAAC,SAAS,IAAI,GAAG,IAAI,CAAE,SAAQ,KAAK,CAAC,CAAC,CAAC;gBACzD,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC;IAW7D,MAAM,EAAE,IAAI,EAAE,CAAM;IAEpB,YAAY,+BAAC;IAEb,aAAa,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAK;IAE9B,mBAAmB,EAAE,IAAI,GAAG,OAAO,OAAO,GAAG,OAAO,QAAQ,CAAQ;IAEpE,CAAC,qBAAqB,CAAC;IAIvB,CAAC,qBAAqB,CAAC,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC,CAAC;IAItD,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IAyE1B,CAAC,YAAY,CAAC,YAzEE,OAAO,CAAC,CAAC,CAAC,UAyEG;IAE7B,YAAY;IAQZ,CAAC,kBAAkB,CAAC,0DAAqB;IAEzC,mBAAmB;;;;IAOnB,CAAC,yBAAyB,CAAC;;;MAA4B;IAEvD,KAAK;IAQL,CAAC,WAAW,CAAC,aAAc;IAE3B,OAAO;IAIP,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,WAEvB;IAGD,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,iCAAiC,CAAC;CAElE;AAGD,qBAAa,iCAAiC,CAAC,CAAC,SAAS,IAAI,GAAG,IAAI,CAAE,SAAQ,iBAAiB,CAAC,CAAC,CAAC;gBACrF,eAAe,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,WAAW,UAAO;IAWtG,eAAe,SAAC;IAChB,MAAM,YAAC;IACP,YAAY,EAAE,IAAI,GAAG,YAAY,CAAQ;IAEzC,SAAS;IAOT,IAAI,CAAC,eAAe,CAAC,eAEpB;IAED,WAAW;IASX,IAAI,CAAC,iBAAiB,CAAC,eAEtB;IAED,KAAK,CAAC,eAAe,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE;IAmBlD,IAAI,CAAC,WAAW,CAAC,uBAnBO,MAAM,WAAW,OAAO,EAAE,UAqBjD;IAED,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,wBAAwB,EAAE,CAAC"}
@@ -0,0 +1,37 @@
1
+ import EventEmitter from "eventemitter3";
2
+ import { StatefulPromise } from "@nesvet/n";
3
+ import { SubscriptionGroupItem } from "./SubscriptionGroupItem";
4
+ import { Definition, ParseValues, SubscriptionType, UnparsedDefinition } from "./types";
5
+ type Target = any;
6
+ type Options = {
7
+ target?: Target;
8
+ debounce?: number;
9
+ immediately?: boolean;
10
+ };
11
+ export declare class SubscriptionGroup<DS extends UnparsedDefinition[] = any[]> extends EventEmitter {
12
+ #private;
13
+ constructor(definitions: DS, { target, debounce: debounceLimit, immediately }?: Options);
14
+ target?: Target;
15
+ emitUpdate: () => void;
16
+ items: Record<string, SubscriptionGroupItem> & SubscriptionGroupItem[];
17
+ values: DS extends any ? (any[] & Record<string, any>) : ParseValues<DS>;
18
+ isLoaded: boolean;
19
+ isInited: boolean;
20
+ applyOptions({ target, debounceLimit }: {
21
+ target?: Target;
22
+ debounceLimit?: number;
23
+ }): void;
24
+ attach(definitions: DS, shouldReload?: boolean, immediately?: boolean): Promise<SubscriptionGroupItem<SubscriptionType, Definition<SubscriptionType>>[]>;
25
+ detach(names: string[], shouldUpdate?: boolean): void;
26
+ redefine(definitions: DS): Promise<(SubscriptionGroupItem<SubscriptionType, Definition<SubscriptionType>> | SubscriptionGroupItem<SubscriptionType, Definition<SubscriptionType>>[])[]>;
27
+ subscribe(): (void | undefined)[];
28
+ unsubscribe(): (void | undefined)[];
29
+ loaded(): StatefulPromise<SubscriptionGroup<any[]>>;
30
+ inited(): StatefulPromise<SubscriptionGroup<any[]>>;
31
+ unloaded(): StatefulPromise<SubscriptionGroup<any[]>>;
32
+ valueOf(): DS extends any ? any[] & Record<string, any> : ParseValues<DS>;
33
+ [Symbol.iterator](): IterableIterator<any>;
34
+ static debounceLimit: number;
35
+ }
36
+ export { Options as SubscriptionGroupOptions, Target as SubscriptionGroupTarget };
37
+ //# sourceMappingURL=SubscriptionGroup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SubscriptionGroup.d.ts","sourceRoot":"","sources":["../../src/SubscriptionGroup/SubscriptionGroup.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,eAAe,CAAC;AACzC,OAAO,EAAY,eAAe,EAAE,MAAM,WAAW,CAAC;AAEtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EACN,UAAU,EACV,WAAW,EAGX,gBAAgB,EAEhB,kBAAkB,EAClB,MAAM,SAAS,CAAC;AAUjB,KAAK,MAAM,GAAG,GAAG,CAAC;AAElB,KAAK,OAAO,GAAG;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AAyCF,qBAAa,iBAAiB,CAAC,EAAE,SAAS,kBAAkB,EAAE,GAAG,GAAG,EAAE,CAAE,SAAQ,YAAY;;gBAE1F,WAAW,EAAE,EAAE,EACf,EACC,MAAM,EACN,QAAQ,EAAE,aAA+C,EACzD,WAAW,EACX,GAAE,OAAY;IAYhB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,EAAG,MAAM,IAAI,CAAC;IAExB,KAAK,EAAoB,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,GAAG,qBAAqB,EAAE,CAAC;IACzF,MAAM,EAAS,EAAE,SAAS,GAAG,GAAG,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;IAEhF,QAAQ,UAAS;IACjB,QAAQ,UAAS;IAQjB,YAAY,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE;IA2BnF,MAAM,CAAC,WAAW,EAAE,EAAE,EAAE,YAAY,UAAgB,EAAE,WAAW,UAAO;IAqBxE,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,YAAY,UAAO;IAY3C,QAAQ,CAAC,WAAW,EAAE,EAAE;IA+BxB,SAAS;IAIT,WAAW;IAuFX,MAAM;IAIN,MAAM;IAIN,QAAQ;IAIR,OAAO;IAIP,CAAC,MAAM,CAAC,QAAQ,CAAC;IAKjB,MAAM,CAAC,aAAa,SAAK;CAUzB;AAED,OAAO,EAAE,OAAO,IAAI,wBAAwB,EAAE,MAAM,IAAI,uBAAuB,EAAE,CAAC"}
@@ -0,0 +1,31 @@
1
+ import EventEmitter from "eventemitter3";
2
+ import { StatefulPromise } from "@nesvet/n";
3
+ import type { SubscriptionGroup } from "./SubscriptionGroup";
4
+ import type { Definition, SubscriptionType, SubscriptionUpdated, SubscriptionValue } from "./types";
5
+ export declare class SubscriptionGroupItem<T extends SubscriptionType = SubscriptionType, D extends Definition<T> = Definition<T>> extends EventEmitter {
6
+ #private;
7
+ constructor(definition: D, group: SubscriptionGroup);
8
+ name: string;
9
+ group?: SubscriptionGroup;
10
+ value?: SubscriptionValue<T>;
11
+ type: "object" | T;
12
+ publicationName: Definition<T>["publicationName"];
13
+ params: Definition<T>["params"];
14
+ handle: Definition<T>["handle"];
15
+ onBeforeInit: Definition<T>["onBeforeInit"];
16
+ preventBind: Definition<T>["preventBind"];
17
+ emitUpdate: (updated?: SubscriptionUpdated<T>) => void;
18
+ isLoaded: boolean;
19
+ isInited: boolean;
20
+ define(definition: Definition<T>, group?: SubscriptionGroup | undefined): void | null;
21
+ detach(): void;
22
+ loaded(): StatefulPromise<SubscriptionGroupItem<T, D>>;
23
+ inited(): StatefulPromise<SubscriptionGroupItem<T, D>>;
24
+ unloaded(): StatefulPromise<SubscriptionGroupItem<T, D>>;
25
+ subscribe(): void | undefined;
26
+ unsubscribe(): void | undefined;
27
+ renew(publicationName: Definition<T>["publicationName"], params: Definition<T>["params"]): void | undefined;
28
+ valueOf(): SubscriptionValue<T> | undefined;
29
+ static debounceLimit: number;
30
+ }
31
+ //# sourceMappingURL=SubscriptionGroupItem.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,12 @@
1
+ import type { SubscriptionGroup } from "./SubscriptionGroup";
2
+ import type { SubscriptionGroupItem } from "./SubscriptionGroupItem";
3
+ import type { SubscriptionType } from "./types";
4
+ export declare const privates: {
5
+ groupLoad?: (group: SubscriptionGroup) => void;
6
+ groupInit?: (group: SubscriptionGroup) => void;
7
+ groupUnload?: (group: SubscriptionGroup) => void;
8
+ itemLoad?: <T extends SubscriptionType>(item: SubscriptionGroupItem<T>) => void;
9
+ itemInit?: <T extends SubscriptionType>(item: SubscriptionGroupItem<T>) => void;
10
+ itemUnload?: <T extends SubscriptionType>(item: SubscriptionGroupItem<T>) => void;
11
+ };
12
+ //# sourceMappingURL=common.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/SubscriptionGroup/common.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AACrE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAGhD,eAAO,MAAM,QAAQ,EAAE;IACtB,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC/C,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC/C,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;IACjD,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,gBAAgB,EAAE,IAAI,EAAE,qBAAqB,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;IAChF,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,gBAAgB,EAAE,IAAI,EAAE,qBAAqB,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;IAChF,UAAU,CAAC,EAAE,CAAC,CAAC,SAAS,gBAAgB,EAAE,IAAI,EAAE,qBAAqB,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;CAC7E,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from "./SubscriptionGroup";
2
+ export { Definition as SubscriptionGroupDefinition, ParseValues as ParseSubscriptionGroupValues, SubscriptionHandle as SubscriptionGroupSubscriptionHandle, SubscriptionType as SubscriptionGroupSubscriptionType, UnparsedDefinition as SubscriptionGroupUnparsedDefinition } from "./types";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/SubscriptionGroup/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,OAAO,EACN,UAAU,IAAI,2BAA2B,EACzC,WAAW,IAAI,4BAA4B,EAC3C,kBAAkB,IAAI,mCAAmC,EACzD,gBAAgB,IAAI,iCAAiC,EACrD,kBAAkB,IAAI,mCAAmC,EACzD,MAAM,SAAS,CAAC"}
@@ -0,0 +1,41 @@
1
+ import type { SubscriptionArrayUpdated, Updates as SubscriptionArrayUpdates, SubscriptionArrayWithSubscription } from "../SubscriptionArray";
2
+ import type { SubscriptionMapUpdated, Updates as SubscriptionMapUpdates, SubscriptionMapWithSubscription } from "../SubscriptionMap";
3
+ import type { Updated as SubscriptionObjectUpdated, Updates as SubscriptionObjectUpdates, SubscriptionObjectWithSubscription } from "../SubscriptionObject";
4
+ import type { SubscriptionGroup } from "./SubscriptionGroup";
5
+ export type SubscriptionType = "array" | "map" | "object";
6
+ export type SubscriptionUpdated<T> = T extends "array" ? SubscriptionArrayUpdated<any> : T extends "map" ? SubscriptionMapUpdated<any> : T extends "object" ? SubscriptionObjectUpdated : never;
7
+ export type SubscriptionValue<T> = T extends "array" ? SubscriptionArrayWithSubscription<any> : T extends "map" ? SubscriptionMapWithSubscription<any> : T extends "object" ? SubscriptionObjectWithSubscription : never;
8
+ export type SubscriptionHandle<T> = T extends "array" ? (updated: null | SubscriptionArrayUpdated<any>, group: SubscriptionGroup) => void : T extends "map" ? (updated: null | SubscriptionMapUpdated<any>, group: SubscriptionGroup) => void : T extends "object" ? (updated: null | SubscriptionObjectUpdated, group: SubscriptionGroup) => void : never;
9
+ export type SubscriptionOnBeforeInit<T> = T extends "array" ? (value: SubscriptionArrayWithSubscription<any>) => void : T extends "map" ? (value: SubscriptionMapWithSubscription<any>) => void : T extends "object" ? (value: SubscriptionObjectWithSubscription) => void : never;
10
+ export type SubscriptionUpdates<T> = T extends "array" ? SubscriptionArrayUpdates : T extends "map" ? SubscriptionMapUpdates : T extends "object" ? SubscriptionObjectUpdates : never;
11
+ export type Definition<T extends SubscriptionType = SubscriptionType> = {
12
+ name: string;
13
+ value?: SubscriptionValue<T>;
14
+ type?: T;
15
+ publicationName?: string;
16
+ params?: unknown[];
17
+ handle?: (...args: any[]) => void;
18
+ onBeforeInit?: (...args: any[]) => void;
19
+ debounce?: number;
20
+ preventBind?: boolean;
21
+ };
22
+ export type TupleDefinition = unknown[];
23
+ export type UnparsedDefinition<T extends SubscriptionType = SubscriptionType> = Definition<T> | TupleDefinition;
24
+ type ResolveObjectValue<T> = T extends {
25
+ value: infer V;
26
+ } ? V : T extends {
27
+ type: "array";
28
+ } ? SubscriptionArrayWithSubscription<any> : T extends {
29
+ type: "map";
30
+ } ? SubscriptionMapWithSubscription<any> : T extends {
31
+ type: "object";
32
+ } ? SubscriptionObjectWithSubscription : SubscriptionObjectWithSubscription;
33
+ type ResolveArrayValue<T extends any[]> = T[1] extends object ? T[1] : T[1] extends "array" ? SubscriptionArrayWithSubscription<any> : T[1] extends "map" ? SubscriptionMapWithSubscription<any> : T[1] extends "object" ? SubscriptionObjectWithSubscription : SubscriptionObjectWithSubscription;
34
+ type ResolveValue<U> = U extends object ? ResolveObjectValue<U> : U extends any[] ? ResolveArrayValue<U> : never;
35
+ export type ParseValues<T extends Array<any[] | object>> = {
36
+ [K in keyof T as T[K] extends {
37
+ name: infer N;
38
+ } ? N extends string ? N : never : T[K] extends [infer F, any] ? F extends string ? F : never : never]: ResolveValue<T[K]>;
39
+ } & T extends Array<infer U> ? ResolveValue<U>[] : never;
40
+ export {};
41
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/SubscriptionGroup/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,102 @@
1
+ import { Subscription } from "./Subscription";
2
+ import { clearSymbol, getAsInitialUpdatedSymbol, getAsUpdatesSymbol, getHandleUpdateSymbol, getSubscriptionSymbol, renewSymbol, setHandleUpdateSymbol, subscribeSymbol, unsubscribeSymbol, updateSymbol } from "./symbols";
3
+ type GenericItem = {
4
+ _id: string;
5
+ } & Record<string, any>;
6
+ type Item = GenericItem | SubscriptionMapItem;
7
+ type Updated<I extends Item = Item> = {
8
+ deleted: string[];
9
+ added: I[];
10
+ } & I[];
11
+ type SortList = Record<string, -1 | 1>;
12
+ export type Updates<I extends Item = Item> = ([
13
+ "c",
14
+ item: I
15
+ ] | [
16
+ "d",
17
+ _id: string
18
+ ] | [
19
+ "i",
20
+ items: I[],
21
+ sortList?: SortList
22
+ ] | [
23
+ "u",
24
+ itemUpdates: {
25
+ _id: string;
26
+ } & Partial<I>,
27
+ isAtomicOrUpdatedFields: string[] | true
28
+ ] | null)[] | null;
29
+ type UpdateHandler<I extends Item = Item> = (map: SubscriptionMap<I>, updated: Updated<I>, updates: Updates<I>) => void;
30
+ declare global {
31
+ var __insite_subscription_map_sort_function: ((a: Item, b: Item) => -1 | 0 | 1) | undefined;
32
+ }
33
+ export declare class SubscriptionMap<I extends Item = Item> extends Map<string, I> {
34
+ constructor(updates?: Updates<I>, onUpdate?: UpdateHandler<I>);
35
+ handleUpdate: UpdateHandler<I> | undefined;
36
+ private updates;
37
+ sortList: null | SortList;
38
+ sortCompareFunction: ((a: I, b: I) => number) | null;
39
+ private fieldsToSort;
40
+ sorted: I[];
41
+ sort(): void;
42
+ [getHandleUpdateSymbol](): UpdateHandler<I> | undefined;
43
+ [setHandleUpdateSymbol](handleUpdate: UpdateHandler<I>): UpdateHandler<I>;
44
+ private TheItem;
45
+ set Item(TheItem: {
46
+ new (map: SubscriptionMap<I>, updates: GenericItem): I;
47
+ });
48
+ get Item(): {
49
+ new (map: SubscriptionMap<I>, updates: GenericItem): I;
50
+ };
51
+ update(updates: Updates<I>): this;
52
+ [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
+ };
63
+ clear(): void;
64
+ [clearSymbol]: () => void;
65
+ valueOf(): I[];
66
+ get [Symbol.toStringTag](): string;
67
+ static updateSymbol: symbol;
68
+ static getHandleUpdateSymbol: symbol;
69
+ static setHandleUpdateSymbol: symbol;
70
+ static getAsUpdatesSymbol: symbol;
71
+ static getAsInitialUpdatedSymbol: symbol;
72
+ static clearSymbol: symbol;
73
+ static WithSubscription: typeof SubscriptionMapWithSubscription;
74
+ static Item: typeof SubscriptionMapItem;
75
+ }
76
+ export declare class SubscriptionMapWithSubscription<I extends Item = Item> extends SubscriptionMap<I> {
77
+ constructor(publicationName: string, params: unknown[], onUpdate: UpdateHandler<I>, immediately?: boolean);
78
+ publicationName: string;
79
+ params: unknown[];
80
+ subscription: null | Subscription;
81
+ subscribe(): void;
82
+ get [subscribeSymbol](): () => void;
83
+ unsubscribe(): void;
84
+ get [unsubscribeSymbol](): () => void;
85
+ renew(publicationName?: string, params?: unknown[]): void;
86
+ get [renewSymbol](): (publicationName?: string, params?: unknown[]) => void;
87
+ [getSubscriptionSymbol](): Subscription | null;
88
+ get [Symbol.toStringTag](): string;
89
+ static subscribeSymbol: symbol;
90
+ static unsubscribeSymbol: symbol;
91
+ static renewSymbol: symbol;
92
+ static getSubscriptionSymbol: symbol;
93
+ }
94
+ export declare class SubscriptionMapItem {
95
+ constructor(map: SubscriptionMap, updates: GenericItem);
96
+ _id: string;
97
+ private map;
98
+ update(updates: GenericItem): void;
99
+ delete(): void;
100
+ }
101
+ export { Updated as SubscriptionMapUpdated };
102
+ //# sourceMappingURL=SubscriptionMap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SubscriptionMap.d.ts","sourceRoot":"","sources":["../src/SubscriptionMap.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ import { Subscription } from "./Subscription";
2
+ import { clearSymbol, getAsInitialUpdatedSymbol, getAsUpdatesSymbol, getHandleUpdateSymbol, getSubscriptionSymbol, renewSymbol, setHandleUpdateSymbol, subscribeSymbol, unsubscribeSymbol, updateSymbol } from "./symbols";
3
+ declare const handleUpdateSymbol: unique symbol;
4
+ declare const updatesSymbol: unique symbol;
5
+ export type Updated = Record<string, unknown>;
6
+ export type Updates = null | Record<string, unknown>;
7
+ type UpdateHandler = (object: SubscriptionObject, updated: Updated, updates: Updates) => void;
8
+ export declare class SubscriptionObject {
9
+ constructor(updates?: Updates, onUpdate?: UpdateHandler);
10
+ [handleUpdateSymbol]?: UpdateHandler;
11
+ [updatesSymbol]: Updates;
12
+ [getHandleUpdateSymbol](): UpdateHandler | undefined;
13
+ [setHandleUpdateSymbol](handleUpdate: UpdateHandler): UpdateHandler;
14
+ [updateSymbol](updates: Updates): this;
15
+ [getAsUpdatesSymbol](): {
16
+ [x: string]: unknown;
17
+ } | null;
18
+ [getAsInitialUpdatedSymbol](): this | null;
19
+ [clearSymbol](): void;
20
+ valueOf(): this | null;
21
+ get [Symbol.toStringTag](): string;
22
+ [key: string]: unknown;
23
+ static updateSymbol: symbol;
24
+ static getHandleUpdateSymbol: symbol;
25
+ static setHandleUpdateSymbol: symbol;
26
+ static getAsUpdatesSymbol: symbol;
27
+ static getAsInitialUpdatedSymbol: symbol;
28
+ static clearSymbol: symbol;
29
+ static WithSubscription: typeof SubscriptionObjectWithSubscription;
30
+ }
31
+ export declare class SubscriptionObjectWithSubscription extends SubscriptionObject {
32
+ constructor(publicationName: string, params: unknown[], onUpdate: UpdateHandler, immediately?: boolean);
33
+ private publicationName;
34
+ private params;
35
+ private subscription;
36
+ [subscribeSymbol](): void;
37
+ [unsubscribeSymbol](): void;
38
+ [renewSymbol](publicationName?: string, params?: unknown[]): void;
39
+ [getSubscriptionSymbol](): Subscription | null;
40
+ get [Symbol.toStringTag](): string;
41
+ static subscribeSymbol: symbol;
42
+ static unsubscribeSymbol: symbol;
43
+ static renewSymbol: symbol;
44
+ static getSubscriptionSymbol: symbol;
45
+ }
46
+ export { Updated as SubscriptionObjectUpdated };
47
+ //# sourceMappingURL=SubscriptionObject.d.ts.map
@@ -0,0 +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"}
@@ -3,17 +3,5 @@ export { SubscriptionArray, SubscriptionArrayUpdated, SubscriptionArrayWithSubsc
3
3
  export * from "./SubscriptionGroup";
4
4
  export { SubscriptionMap, SubscriptionMapUpdated, SubscriptionMapWithSubscription } from "./SubscriptionMap";
5
5
  export { SubscriptionObject, SubscriptionObjectUpdated, SubscriptionObjectWithSubscription } from "./SubscriptionObject";
6
- export {
7
- clearSymbol,
8
- getAsInitialUpdatedSymbol,
9
- getAsUpdatesSymbol,
10
- getHandleSubscriptionSymbol,
11
- getHandleUpdateSymbol,
12
- getSubscriptionSymbol,
13
- renewSymbol,
14
- setHandleSubscriptionSymbol,
15
- setHandleUpdateSymbol,
16
- subscribeSymbol,
17
- unsubscribeSymbol,
18
- updateSymbol
19
- } from "./symbols";
6
+ export { clearSymbol, getAsInitialUpdatedSymbol, getAsUpdatesSymbol, getHandleSubscriptionSymbol, getHandleUpdateSymbol, getSubscriptionSymbol, renewSymbol, setHandleSubscriptionSymbol, setHandleUpdateSymbol, subscribeSymbol, unsubscribeSymbol, updateSymbol } from "./symbols";
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +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"}
package/dist/index.js ADDED
@@ -0,0 +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};
2
+ //# sourceMappingURL=index.js.map