topsyde-utils 1.0.111 → 1.0.113

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.
@@ -0,0 +1,3 @@
1
+ export * from './rxjs';
2
+ export * from './useRxjs';
3
+ export { default as RxjsInstance } from './rxjs';
@@ -0,0 +1,6 @@
1
+ // This file is auto-generated by scripts/generate-indexes.ts
2
+ // Do not edit this file directly
3
+ export * from './rxjs';
4
+ export * from './useRxjs';
5
+ export { default as RxjsInstance } from './rxjs';
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/client/rxjs/index.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,iCAAiC;AAEjC,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC;AAC1B,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,QAAQ,CAAC"}
@@ -0,0 +1,34 @@
1
+ import { Subject, Subscription } from "rxjs";
2
+ import { Singleton } from "../..";
3
+ declare enum E_SUBJET_TYPE {
4
+ SUBJECT = "subject",
5
+ ASYNC_SUBJECT = "asyncSubject",
6
+ BEHAVIOR_SUBJECT = "behaviorSubject",
7
+ REPLAY_SUBJECT = "replaySubject"
8
+ }
9
+ export type I_RxjsPayload<T> = {
10
+ cta: string;
11
+ data: T;
12
+ source?: string;
13
+ };
14
+ export type RxjsNamespaces<T extends string> = T;
15
+ export default class Rxjs<T extends string> extends Singleton {
16
+ namespaces: Map<string, RxjsInstance>;
17
+ create(namespace: string, subjectType?: E_SUBJET_TYPE): void;
18
+ registerNamespaces(): void;
19
+ next<U>(namespace: RxjsNamespaces<T>, rxjsPayload: I_RxjsPayload<U>): void;
20
+ subscribe(namespace: RxjsNamespaces<T>, listener: (payload: I_RxjsPayload<T>) => any): Subscription;
21
+ clear(namespace: RxjsNamespaces<T>): void;
22
+ }
23
+ export declare class RxjsInstance {
24
+ subscriptions: Subscription;
25
+ subject: Subject<any>;
26
+ constructor(subjectType: E_SUBJET_TYPE);
27
+ next(data: any): void;
28
+ asObservable(): import("rxjs").Observable<any>;
29
+ clear(): void;
30
+ set add(subscription: Subscription);
31
+ subscribe<U>(callback: (payload: I_RxjsPayload<U>) => void): Subscription;
32
+ unsubscribe(): void;
33
+ }
34
+ export {};
@@ -0,0 +1,114 @@
1
+ import { AsyncSubject, BehaviorSubject, ReplaySubject, Subject, Subscription } from "rxjs";
2
+ import { Lib } from "../../utils";
3
+ import { Singleton } from "../..";
4
+ var E_SUBJET_TYPE;
5
+ (function (E_SUBJET_TYPE) {
6
+ E_SUBJET_TYPE["SUBJECT"] = "subject";
7
+ E_SUBJET_TYPE["ASYNC_SUBJECT"] = "asyncSubject";
8
+ E_SUBJET_TYPE["BEHAVIOR_SUBJECT"] = "behaviorSubject";
9
+ E_SUBJET_TYPE["REPLAY_SUBJECT"] = "replaySubject";
10
+ })(E_SUBJET_TYPE || (E_SUBJET_TYPE = {}));
11
+ export default class Rxjs extends Singleton {
12
+ constructor() {
13
+ super(...arguments);
14
+ this.namespaces = new Map();
15
+ }
16
+ create(namespace, subjectType = E_SUBJET_TYPE.SUBJECT) {
17
+ if (!this.namespaces.has(namespace)) {
18
+ this.namespaces.set(namespace, new RxjsInstance(subjectType));
19
+ }
20
+ }
21
+ registerNamespaces() {
22
+ // register every rxjs namespace as needed
23
+ this.create("system", E_SUBJET_TYPE.BEHAVIOR_SUBJECT);
24
+ this.create("amplitude");
25
+ this.create("modal");
26
+ this.create("utils");
27
+ this.create("toast");
28
+ this.create("selectBox");
29
+ this.create("table");
30
+ this.create("integrations", E_SUBJET_TYPE.BEHAVIOR_SUBJECT);
31
+ this.create("cell", E_SUBJET_TYPE.BEHAVIOR_SUBJECT);
32
+ this.create("appcenter", E_SUBJET_TYPE.BEHAVIOR_SUBJECT);
33
+ this.create("customerCard");
34
+ this.create("statham");
35
+ this.create("pusher");
36
+ this.create("search");
37
+ this.create("views");
38
+ this.create("component_state", E_SUBJET_TYPE.REPLAY_SUBJECT);
39
+ this.create("marketplace");
40
+ }
41
+ next(namespace, rxjsPayload) {
42
+ this.namespaces.get(namespace)?.next(rxjsPayload);
43
+ }
44
+ subscribe(namespace, listener) {
45
+ const instance = this.namespaces.get(namespace);
46
+ if (!instance) {
47
+ throw new Error(`Namespace ${namespace} not found`);
48
+ }
49
+ return instance.subscribe((payload) => listener(payload));
50
+ }
51
+ clear(namespace) {
52
+ this.namespaces.get(namespace)?.clear();
53
+ }
54
+ }
55
+ export class RxjsInstance {
56
+ constructor(subjectType) {
57
+ this.subscriptions = new Subscription();
58
+ switch (subjectType) {
59
+ case E_SUBJET_TYPE.SUBJECT:
60
+ this.subject = new Subject();
61
+ break;
62
+ case E_SUBJET_TYPE.ASYNC_SUBJECT:
63
+ this.subject = new AsyncSubject();
64
+ break;
65
+ case E_SUBJET_TYPE.BEHAVIOR_SUBJECT:
66
+ this.subject = new BehaviorSubject(null);
67
+ break;
68
+ case E_SUBJET_TYPE.REPLAY_SUBJECT:
69
+ this.subject = new ReplaySubject();
70
+ break;
71
+ default:
72
+ this.subject = new Subject();
73
+ }
74
+ }
75
+ next(data) {
76
+ this.subject.next(data);
77
+ }
78
+ asObservable() {
79
+ return this.subject.asObservable();
80
+ }
81
+ clear() {
82
+ if (this.subject instanceof ReplaySubject) {
83
+ // Get the current subscribers
84
+ const currentSubscribers = this.subject._subscribers;
85
+ // Create a new ReplaySubject with same buffer config
86
+ const bufferSize = this.subject._bufferSize;
87
+ const windowTime = this.subject._windowTime;
88
+ const newSubject = new ReplaySubject(bufferSize, windowTime);
89
+ // Transfer subscribers to new subject
90
+ newSubject.subscribe(currentSubscribers);
91
+ // Replace the old subject
92
+ this.subject = newSubject;
93
+ }
94
+ }
95
+ set add(subscription) {
96
+ this.subscriptions.add(subscription);
97
+ }
98
+ subscribe(callback) {
99
+ if (typeof callback !== "function") {
100
+ throw "Failed to subscribe. Please provide a callback function";
101
+ }
102
+ const subscriber = this.asObservable().subscribe((payload) => {
103
+ if (Lib.IsNumpty(payload) || !payload.hasOwnProperty("cta"))
104
+ return;
105
+ callback(payload);
106
+ });
107
+ this.subscriptions.add(subscriber);
108
+ return subscriber;
109
+ }
110
+ unsubscribe() {
111
+ this.subscriptions.unsubscribe();
112
+ }
113
+ }
114
+ //# sourceMappingURL=rxjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rxjs.js","sourceRoot":"","sources":["../../../src/client/rxjs/rxjs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { RxjsNamespaces, I_RxjsPayload } from "./rxjs";
2
+ type NamespaceActions = Record<string, Function>;
3
+ type MultiNamespaceActions<T extends string> = Partial<Record<RxjsNamespaces<T>, NamespaceActions>>;
4
+ export declare const useRxjs: <T extends string>(_namespace: RxjsNamespaces<T> | RxjsNamespaces<T>[], actions?: NamespaceActions | MultiNamespaceActions<T>, options?: {
5
+ static_instance: boolean;
6
+ }) => {
7
+ $next: {
8
+ (namespace: RxjsNamespaces<T>, payload: I_RxjsPayload<any>): void;
9
+ (cta: string, data: any): void;
10
+ };
11
+ $clear: (namespace: RxjsNamespaces<T>) => void;
12
+ $subscribe: <U>(actions: NamespaceActions | MultiNamespaceActions<T>) => void;
13
+ $unsubscribe: () => void;
14
+ $mount: () => void;
15
+ $unmount: () => void;
16
+ };
17
+ export {};
@@ -0,0 +1,82 @@
1
+ import { onBeforeUnmount, onMounted, ref } from "vue";
2
+ import Rxjs from "./rxjs";
3
+ import { Guards, Lib } from "../../utils";
4
+ export const useRxjs = (_namespace, actions, options) => {
5
+ const subs = ref(new Map());
6
+ const _actions = ref(actions);
7
+ function _getAction(cta, ns) {
8
+ if (Guards.IsArray(_namespace))
9
+ return _actions.value?.[ns]?.[cta];
10
+ return _actions.value?.[cta];
11
+ }
12
+ function $next(firstParam, secondParam) {
13
+ if (typeof firstParam !== "string" && secondParam && typeof secondParam === "object" && "cta" in secondParam && "data" in secondParam) {
14
+ const ns = firstParam;
15
+ const payload = secondParam;
16
+ Rxjs.GetInstance().next(ns, payload);
17
+ return;
18
+ }
19
+ const cta = firstParam;
20
+ const data = secondParam;
21
+ const namespaces = Guards.IsArray(_namespace) ? _namespace : [_namespace];
22
+ namespaces.forEach((ns) => {
23
+ Rxjs.GetInstance().next(ns, { cta, data });
24
+ });
25
+ }
26
+ function $clear(namespace) {
27
+ Rxjs.GetInstance().clear(namespace);
28
+ }
29
+ function $subscribe(actions) {
30
+ _actions.value = actions;
31
+ $unsubscribe(); // Clear existing subscriptions
32
+ const namespaces = Guards.IsArray(_namespace) ? _namespace : [_namespace];
33
+ namespaces.forEach((ns) => {
34
+ if (!Rxjs.GetInstance().namespaces.has(ns)) {
35
+ Lib.Warn(`Rxjs namespace ${ns} does not exist`);
36
+ return;
37
+ }
38
+ if (subs.value.has(ns))
39
+ return;
40
+ const instance = Rxjs.GetInstance().namespaces.get(ns);
41
+ if (!instance) {
42
+ Lib.Warn(`Rxjs namespace ${ns} does not exist`);
43
+ return;
44
+ }
45
+ subs.value.set(ns, instance.subscribe(({ cta, data }) => {
46
+ const action = _getAction(cta, ns) || (() => { });
47
+ action(data);
48
+ }));
49
+ });
50
+ }
51
+ function $unsubscribe() {
52
+ subs.value.forEach((sub) => sub.unsubscribe());
53
+ subs.value.clear();
54
+ }
55
+ function $mount() {
56
+ if (subs.value.size > 0 || !actions)
57
+ return;
58
+ $subscribe(actions);
59
+ }
60
+ function $unmount() {
61
+ $unsubscribe();
62
+ }
63
+ if (!options?.static_instance) {
64
+ onMounted(() => {
65
+ $mount();
66
+ });
67
+ }
68
+ if (!options?.static_instance) {
69
+ onBeforeUnmount(() => {
70
+ $unmount();
71
+ });
72
+ }
73
+ return {
74
+ $next,
75
+ $clear,
76
+ $subscribe,
77
+ $unsubscribe,
78
+ $mount,
79
+ $unmount,
80
+ };
81
+ };
82
+ //# sourceMappingURL=useRxjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useRxjs.js","sourceRoot":"","sources":["../../../src/client/rxjs/useRxjs.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -6,6 +6,8 @@ export * from "./consts";
6
6
  export * from "./types";
7
7
  export * from "./throwable";
8
8
  export * from "./enums";
9
+ export * from "./client/rxjs/rxjs";
10
+ export * from "./client/rxjs/useRxjs";
9
11
  export * from "./server/controller";
10
12
  export * from "./server/service";
11
13
  export * from "./server/bun/router/controller-discovery";
@@ -17,6 +19,7 @@ export * from "./server/bun/websocket/Client";
17
19
  export * from "./server/bun/websocket/Websocket";
18
20
  export * from "./server/bun/websocket/websocket.enums";
19
21
  export * from "./server/bun/websocket/websocket.types";
22
+ export * from "./server/bun/websocket/Message";
20
23
  export * from "./server/bun/websocket/Channel";
21
24
  export * from "./utils/Guards";
22
25
  export * from "./utils/Lib";
@@ -25,12 +28,14 @@ export { default as Singleton } from "./singleton";
25
28
  export { default as Initializable } from "./initializable";
26
29
  export { default as Application } from "./application";
27
30
  export { default as Throwable } from "./throwable";
31
+ export { default as RxjsInstance } from "./client/rxjs/rxjs";
28
32
  export { default as Controller } from "./server/controller";
29
33
  export { default as Service } from "./server/service";
30
34
  export { default as Router } from "./server/bun/router/router";
31
35
  export { default as Router_Internal } from "./server/bun/router/router.internal";
32
36
  export { default as Client } from "./server/bun/websocket/Client";
33
37
  export { default as Websocket } from "./server/bun/websocket/Websocket";
38
+ export { default as Message } from "./server/bun/websocket/Message";
34
39
  export { default as Channel } from "./server/bun/websocket/Channel";
35
40
  export { default as Guards } from "./utils/Guards";
36
41
  export { default as Lib } from "./utils/Lib";
@@ -41,8 +46,9 @@ export { RESPONSE_INIT, RESPONSE_METHOD_OPTIONS } from "./application";
41
46
  export { DEFAULT_FALSE_RESPONSE, LOG_COLORS, LOG_ICONS } from "./consts";
42
47
  export { ClassConstructor, NonNullableType, ObjectKeys, KVObj, I_ApplicationResponse } from "./types";
43
48
  export { E_IS, E_ENVIRONMENTS } from "./enums";
49
+ export { I_RxjsPayload, RxjsNamespaces } from "./client/rxjs/rxjs";
44
50
  export { ControllerResponse, ControllerAction, ControllerMap, ControllerOptions } from "./server/controller";
45
51
  export { Routes } from "./server/bun/router/routes";
46
52
  export { WebsocketConstructorOptions, I_WebsocketConstructor } from "./server/bun/websocket/Websocket";
47
53
  export { E_WebsocketMessageType, E_WebsocketMessagePriority } from "./server/bun/websocket/websocket.enums";
48
- export { WebsocketMessage, WebsocketChannel, WebsocketClients, WebsocketStructuredMessage, WebsocketEntityId, WebsocketEntityName, WebsocketEntityData, I_WebsocketEntity, I_WebsocketClient, I_WebsocketChannelEntity, BroadcastOptions, I_WebsocketChannel, I_WebsocketInterface, } from "./server/bun/websocket/websocket.types";
54
+ export { BunWebsocketMessage, WebsocketChannel, WebsocketClients, WebsocketMessageOptions, WebsocketMessage, WebsocketStructuredMessage, WebsocketEntityId, WebsocketEntityName, WebsocketEntityData, I_WebsocketEntity, I_WebsocketClient, I_WebsocketChannelEntity, BroadcastOptions, I_WebsocketChannel, I_WebsocketInterface, } from "./server/bun/websocket/websocket.types";
package/dist/index.js CHANGED
@@ -9,6 +9,8 @@ export * from "./consts";
9
9
  export * from "./types";
10
10
  export * from "./throwable";
11
11
  export * from "./enums";
12
+ export * from "./client/rxjs/rxjs";
13
+ export * from "./client/rxjs/useRxjs";
12
14
  export * from "./server/controller";
13
15
  export * from "./server/service";
14
16
  export * from "./server/bun/router/controller-discovery";
@@ -20,6 +22,7 @@ export * from "./server/bun/websocket/Client";
20
22
  export * from "./server/bun/websocket/Websocket";
21
23
  export * from "./server/bun/websocket/websocket.enums";
22
24
  export * from "./server/bun/websocket/websocket.types";
25
+ export * from "./server/bun/websocket/Message";
23
26
  export * from "./server/bun/websocket/Channel";
24
27
  export * from "./utils/Guards";
25
28
  export * from "./utils/Lib";
@@ -29,12 +32,14 @@ export { default as Singleton } from "./singleton";
29
32
  export { default as Initializable } from "./initializable";
30
33
  export { default as Application } from "./application";
31
34
  export { default as Throwable } from "./throwable";
35
+ export { default as RxjsInstance } from "./client/rxjs/rxjs";
32
36
  export { default as Controller } from "./server/controller";
33
37
  export { default as Service } from "./server/service";
34
38
  export { default as Router } from "./server/bun/router/router";
35
39
  export { default as Router_Internal } from "./server/bun/router/router.internal";
36
40
  export { default as Client } from "./server/bun/websocket/Client";
37
41
  export { default as Websocket } from "./server/bun/websocket/Websocket";
42
+ export { default as Message } from "./server/bun/websocket/Message";
38
43
  export { default as Channel } from "./server/bun/websocket/Channel";
39
44
  export { default as Guards } from "./utils/Guards";
40
45
  export { default as Lib } from "./utils/Lib";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,iCAAiC;AAEjC,qBAAqB;AACrB,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,0CAA0C,CAAC;AACzD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qCAAqC,CAAC;AACpD,cAAc,yCAAyC,CAAC;AACxD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,kCAAkC,CAAC;AACjD,cAAc,wCAAwC,CAAC;AACvD,cAAc,wCAAwC,CAAC;AACvD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAEhC,yBAAyB;AACzB,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,qCAAqC,CAAC;AACjF,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,OAAO,IAAI,GAAG,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAErD,sDAAsD;AACtD,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEtE,OAAO,EAAE,aAAa,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AACvE,OAAO,EAAE,sBAAsB,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAEzE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAI/C,OAAO,EAAE,sBAAsB,EAAE,0BAA0B,EAAE,MAAM,wCAAwC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,iCAAiC;AAEjC,qBAAqB;AACrB,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,0CAA0C,CAAC;AACzD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qCAAqC,CAAC;AACpD,cAAc,yCAAyC,CAAC;AACxD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,kCAAkC,CAAC;AACjD,cAAc,wCAAwC,CAAC;AACvD,cAAc,wCAAwC,CAAC;AACvD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAEhC,yBAAyB;AACzB,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,qCAAqC,CAAC;AACjF,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,OAAO,IAAI,GAAG,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAErD,sDAAsD;AACtD,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEtE,OAAO,EAAE,aAAa,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AACvE,OAAO,EAAE,sBAAsB,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAEzE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAK/C,OAAO,EAAE,sBAAsB,EAAE,0BAA0B,EAAE,MAAM,wCAAwC,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import Websocket from "./Websocket";
2
- import type { BroadcastOptions, I_WebsocketChannel, I_WebsocketClient, I_WebsocketEntity, WebsocketChannel, WebsocketStructuredMessage } from "./websocket.types";
2
+ import type { BroadcastOptions, I_WebsocketChannel, I_WebsocketClient, I_WebsocketEntity, WebsocketChannel, WebsocketMessage } from "./websocket.types";
3
3
  export default class Channel<T extends Websocket = Websocket> implements I_WebsocketChannel<T> {
4
4
  createdAt: Date;
5
5
  id: string;
@@ -9,8 +9,9 @@ export default class Channel<T extends Websocket = Websocket> implements I_Webso
9
9
  metadata: Record<string, string>;
10
10
  ws: T;
11
11
  private messageTemplate;
12
+ private message;
12
13
  constructor(id: string, name: string, ws: T, limit?: number, members?: Map<string, I_WebsocketClient>, metadata?: Record<string, string>);
13
- broadcast(message: WebsocketStructuredMessage, options?: BroadcastOptions): void;
14
+ broadcast(message: WebsocketMessage, options?: BroadcastOptions): void;
14
15
  private getFilteredMetadata;
15
16
  hasMember(client: I_WebsocketEntity | string): boolean;
16
17
  addMember(client: I_WebsocketClient): false | I_WebsocketClient;
@@ -1,4 +1,5 @@
1
- import { Guards, Lib } from "../../../utils";
1
+ import { Lib } from "../../../utils";
2
+ import Message from "./Message";
2
3
  export default class Channel {
3
4
  constructor(id, name, ws, limit, members, metadata) {
4
5
  this.createdAt = new Date();
@@ -8,6 +9,7 @@ export default class Channel {
8
9
  this.members = members ?? new Map();
9
10
  this.metadata = metadata ?? {};
10
11
  this.ws = ws;
12
+ this.message = new Message();
11
13
  this.messageTemplate = {
12
14
  type: "",
13
15
  content: {},
@@ -16,85 +18,18 @@ export default class Channel {
16
18
  };
17
19
  }
18
20
  broadcast(message, options) {
19
- // Clone the template (faster than creating new objects)
20
- const output = Object.assign({}, this.messageTemplate);
21
- const debug = options?.debug ?? false;
22
- // Set the dynamic properties in a single pass
23
- output.type = message.type;
24
- output.channel = this.id;
25
- // Process message content based on type
26
- if (typeof message.content === "string") {
27
- output.content = { message: message.content };
28
- }
29
- else if (typeof message.content === "object" && message.content !== null) {
30
- output.content = { ...message.content };
31
- }
32
- else {
33
- output.content = {};
34
- }
35
- if (debug)
36
- console.log("Channel- Options: ", options);
37
- // Process options in a single pass if provided
21
+ const output = this.message.create(message, { ...options, channel: this.id });
38
22
  if (options) {
39
- // Add data if provided
40
- if (options.data !== undefined) {
41
- if (typeof options.data === "object" && options.data !== null && !Array.isArray(options.data)) {
42
- // Merge object data with content
43
- Object.assign(output.content, options.data);
44
- }
45
- else {
46
- // Set as data property for other types
47
- output.content.data = options.data;
48
- }
49
- }
50
- if (debug)
51
- console.log("Channel- Client data: ", options.client, Guards.IsObject(options.client), Guards.IsString(options.client?.id, true));
52
- // Add client information if provided
53
- if (options.client && Guards.IsObject(options.client) && Guards.IsString(options.client.id, true)) {
54
- output.client = {
55
- id: options.client.id,
56
- name: options.client.name,
57
- };
58
- }
59
- if (debug)
60
- console.log("Channel- Client: ", output.client);
61
23
  // Include channel metadata if requested
62
24
  if (options.includeMetadata) {
63
25
  output.metadata = options.includeMetadata === true ? this.getMetadata() : this.getFilteredMetadata(options.includeMetadata);
64
26
  }
65
- // Add timestamp if requested (default: true)
66
- if (options.includeTimestamp !== false) {
67
- output.timestamp = new Date().toISOString();
68
- }
69
- else {
70
- // Remove timestamp if explicitly disabled
71
- delete output.timestamp;
72
- }
73
- // Add priority if specified
74
- if (options.priority !== undefined) {
75
- output.priority = options.priority;
76
- }
77
- // Add expiration if specified
78
- if (options.expiresAt !== undefined) {
79
- output.expiresAt = options.expiresAt;
80
- }
81
- // Add any custom fields to the root of the message
82
- if (options.customFields) {
83
- Object.assign(output, options.customFields);
84
- }
85
- // Apply custom transformation if provided
86
- if (options.transform) {
87
- const transformed = options.transform(output);
88
- // Publish the transformed output
89
- this.ws.server.publish(this.id, JSON.stringify(transformed));
90
- return;
91
- }
92
27
  // Handle excluded clients if needed
93
28
  if (options.excludeClients && options.excludeClients.length > 0) {
94
29
  // For large channels with many excluded clients, it might be more efficient
95
30
  // to send directly to each client instead of using channel publish
96
31
  if (this.members.size > 10 && options.excludeClients.length > this.members.size / 3) {
97
- const serializedMessage = JSON.stringify(output);
32
+ const serializedMessage = this.message.serialize(output);
98
33
  for (const [clientId, client] of this.members) {
99
34
  if (!options.excludeClients.includes(clientId)) {
100
35
  client.ws.send(serializedMessage);
@@ -104,14 +39,8 @@ export default class Channel {
104
39
  }
105
40
  }
106
41
  }
107
- else {
108
- // Default timestamp behavior when no options provided
109
- output.timestamp = new Date().toISOString();
110
- }
111
42
  // Publish to the channel
112
- if (debug)
113
- console.log("Channel- Output: ", output);
114
- this.ws.server.publish(this.id, JSON.stringify(output));
43
+ this.ws.server.publish(this.id, this.message.serialize(output));
115
44
  }
116
45
  // Helper method for filtered metadata
117
46
  getFilteredMetadata(keys) {
@@ -1 +1 @@
1
- {"version":3,"file":"Channel.js","sourceRoot":"","sources":["../../../../src/server/bun/websocket/Channel.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Channel.js","sourceRoot":"","sources":["../../../../src/server/bun/websocket/Channel.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { WebsocketStructuredMessage, WebsocketMessage, WebsocketMessageOptions } from "./websocket.types";
2
+ export default class Message {
3
+ private messageTemplate;
4
+ constructor();
5
+ create(message: WebsocketMessage, options?: WebsocketMessageOptions): any;
6
+ serialize(message: WebsocketStructuredMessage): string;
7
+ }
@@ -0,0 +1,80 @@
1
+ import Guards from "../../../utils/Guards";
2
+ export default class Message {
3
+ constructor() {
4
+ this.messageTemplate = { type: "", content: {}, channel: "", timestamp: "", client: undefined };
5
+ }
6
+ create(message, options) {
7
+ // Clone the template (faster than creating new objects)
8
+ const output = Object.assign({}, this.messageTemplate);
9
+ // Set the dynamic properties in a single pass
10
+ output.type = message.type;
11
+ output.channel = message.channel || options?.channel || "";
12
+ // Process message content based on type
13
+ if (typeof message.content === "string") {
14
+ output.content = { message: message.content };
15
+ }
16
+ else if (typeof message.content === "object" && message.content !== null) {
17
+ output.content = { ...message.content };
18
+ }
19
+ else {
20
+ output.content = {};
21
+ }
22
+ // Process options in a single pass if provided
23
+ if (options) {
24
+ // Add data if provided
25
+ if (options.data !== undefined) {
26
+ if (typeof options.data === "object" && options.data !== null && !Array.isArray(options.data)) {
27
+ // Merge object data with content
28
+ Object.assign(output.content, options.data);
29
+ }
30
+ else {
31
+ // Set as data property for other types
32
+ output.content.data = options.data;
33
+ }
34
+ }
35
+ // Add client information if provided
36
+ if (options.client && Guards.IsObject(options.client) && Guards.IsString(options.client.id, true)) {
37
+ output.client = {
38
+ id: options.client.id,
39
+ name: options.client.name,
40
+ };
41
+ }
42
+ // Include channel metadata if requested
43
+ if (options.includeMetadata !== false)
44
+ output.metadata = options.metadata;
45
+ // Add timestamp if requested (default: true)
46
+ if (options.includeTimestamp !== false) {
47
+ output.timestamp = new Date().toISOString();
48
+ }
49
+ else {
50
+ // Remove timestamp if explicitly disabled
51
+ delete output.timestamp;
52
+ }
53
+ // Add priority if specified
54
+ if (options.priority !== undefined) {
55
+ output.priority = options.priority;
56
+ }
57
+ // Add expiration if specified
58
+ if (options.expiresAt !== undefined) {
59
+ output.expiresAt = options.expiresAt;
60
+ }
61
+ // Add any custom fields to the root of the message
62
+ if (options.customFields) {
63
+ Object.assign(output, options.customFields);
64
+ }
65
+ // Apply custom transformation if provided
66
+ if (options.transform) {
67
+ const transformed = options.transform(output);
68
+ return transformed;
69
+ }
70
+ }
71
+ else {
72
+ output.timestamp = new Date().toISOString();
73
+ }
74
+ return output;
75
+ }
76
+ serialize(message) {
77
+ return JSON.stringify(message);
78
+ }
79
+ }
80
+ //# sourceMappingURL=Message.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Message.js","sourceRoot":"","sources":["../../../../src/server/bun/websocket/Message.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@ import { Server, ServerWebSocket, WebSocketHandler } from "bun";
2
2
  import Singleton from "../../../singleton";
3
3
  import Channel from "./Channel";
4
4
  import Client from "./Client";
5
- import type { I_WebsocketChannel, I_WebsocketClient, I_WebsocketEntity, I_WebsocketInterface, WebsocketChannel, WebsocketEntityData, WebsocketMessage, WebsocketStructuredMessage } from "./websocket.types";
5
+ import type { I_WebsocketChannel, I_WebsocketClient, I_WebsocketEntity, I_WebsocketInterface, WebsocketChannel, WebsocketEntityData, BunWebsocketMessage, WebsocketStructuredMessage } from "./websocket.types";
6
6
  export type WebsocketConstructorOptions = {
7
7
  debug?: boolean;
8
8
  };
@@ -34,7 +34,7 @@ export default class Websocket extends Singleton {
34
34
  private clientDisconnected;
35
35
  private handleHeartbeat;
36
36
  protected createClient(entity: I_WebsocketEntity): I_WebsocketClient;
37
- static Heartbeat(ws: ServerWebSocket<WebsocketEntityData>, message: WebsocketMessage): boolean;
37
+ static Heartbeat(ws: ServerWebSocket<WebsocketEntityData>, message: BunWebsocketMessage): boolean;
38
38
  static Server(): Server;
39
39
  static Broadcast(channel: string, message: WebsocketStructuredMessage, ...args: any[]): void;
40
40
  static BraodcastAll(message: WebsocketStructuredMessage, ...args: any[]): void;
@@ -47,4 +47,5 @@ export default class Websocket extends Singleton {
47
47
  static GetClientCount(): number;
48
48
  static GetChannelCount(): number;
49
49
  static CreateClient(entity: I_WebsocketEntity): I_WebsocketClient;
50
+ static GenerateMessage(): WebsocketStructuredMessage;
50
51
  }
@@ -155,5 +155,12 @@ export default class Websocket extends Singleton {
155
155
  const ws = this.GetInstance();
156
156
  return ws.createClient(entity);
157
157
  }
158
+ static GenerateMessage() {
159
+ const msg = {
160
+ type: "",
161
+ content: {}
162
+ };
163
+ return msg;
164
+ }
158
165
  }
159
166
  //# sourceMappingURL=Websocket.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Websocket.js","sourceRoot":"","sources":["../../../../src/server/bun/websocket/Websocket.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Websocket.js","sourceRoot":"","sources":["../../../../src/server/bun/websocket/Websocket.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,9 @@ export * from './Client';
3
3
  export * from './Websocket';
4
4
  export * from './websocket.enums';
5
5
  export * from './websocket.types';
6
+ export * from './Message';
6
7
  export * from './Channel';
7
8
  export { default as Client } from './Client';
8
9
  export { default as Websocket } from './Websocket';
10
+ export { default as Message } from './Message';
9
11
  export { default as Channel } from './Channel';
@@ -5,8 +5,10 @@ export * from './Client';
5
5
  export * from './Websocket';
6
6
  export * from './websocket.enums';
7
7
  export * from './websocket.types';
8
+ export * from './Message';
8
9
  export * from './Channel';
9
10
  export { default as Client } from './Client';
10
11
  export { default as Websocket } from './Websocket';
12
+ export { default as Message } from './Message';
11
13
  export { default as Channel } from './Channel';
12
14
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/server/bun/websocket/index.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,iCAAiC;AAEjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,WAAW,CAAC;AAC1B,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/server/bun/websocket/index.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,iCAAiC;AAEjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,WAAW,CAAC"}
@@ -1,72 +1,10 @@
1
1
  import { ServerWebSocket, WebSocketHandler } from "bun";
2
2
  import Channel from "./Channel";
3
3
  import Websocket from "./Websocket";
4
- export type WebsocketMessage = string | Buffer<ArrayBufferLike>;
4
+ export type BunWebsocketMessage = string | Buffer<ArrayBufferLike>;
5
5
  export type WebsocketChannel<T extends I_WebsocketChannel = Channel> = Map<string, T>;
6
6
  export type WebsocketClients = Map<string, I_WebsocketClient>;
7
- export type WebsocketStructuredMessage<T extends Record<string, any> = Record<string, any>> = {
8
- /**
9
- * Message type identifier used for client-side routing
10
- */
11
- type: string;
12
- /**
13
- * Message content - can be any data structure
14
- * If a string is provided, it will be wrapped in {message: string}
15
- */
16
- content: T;
17
- /**
18
- * Optional channel identifier
19
- * If not provided, the channel ID will be added automatically during broadcast
20
- */
21
- channel?: string;
22
- /**
23
- * Optional metadata key-value pairs
24
- * Can be used to add additional context to the message
25
- */
26
- metadata?: Record<string, string>;
27
- /**
28
- * Optional timestamp
29
- * If not provided, it will be added automatically during broadcast
30
- */
31
- timestamp?: string;
32
- /**
33
- * Optional sender information
34
- * Can be used to identify the source of the message
35
- */
36
- client?: {
37
- id: string;
38
- name?: string;
39
- [key: string]: any;
40
- };
41
- /**
42
- * Any additional custom fields
43
- */
44
- [key: string]: any;
45
- };
46
- export type WebsocketEntityId = string;
47
- export type WebsocketEntityName = string;
48
- export type WebsocketEntityData = {
49
- id: WebsocketEntityId;
50
- name: WebsocketEntityName;
51
- };
52
- export interface I_WebsocketEntity extends WebsocketEntityData {
53
- ws: ServerWebSocket<WebsocketEntityData>;
54
- }
55
- export interface I_WebsocketClient extends I_WebsocketEntity {
56
- channels: WebsocketChannel<I_WebsocketChannel>;
57
- send(message: WebsocketStructuredMessage): any;
58
- subscribe(channel: string): any;
59
- joinChannel(channel: I_WebsocketChannel, send?: boolean): void;
60
- leaveChannel(channel: I_WebsocketChannel, send?: boolean): void;
61
- joinChannels(channels: I_WebsocketChannel[], send?: boolean): void;
62
- leaveChannels(channels?: I_WebsocketChannel[], send?: boolean): void;
63
- unsubscribe(channel: string): any;
64
- whoami(): WebsocketEntityData;
65
- }
66
- export interface I_WebsocketChannelEntity<T extends Websocket = Websocket> extends WebsocketEntityData {
67
- ws: T;
68
- }
69
- export type BroadcastOptions = {
7
+ export type WebsocketMessageOptions = {
70
8
  /**
71
9
  * Additional data to include in the message content
72
10
  * If an object is provided, it will be merged with the content
@@ -91,6 +29,11 @@ export type BroadcastOptions = {
91
29
  * Useful for sending messages to all clients except the sender
92
30
  */
93
31
  excludeClients?: string[];
32
+ /**
33
+ * Channel to include in the message
34
+ * Defaults to the channel of the message
35
+ */
36
+ channel?: string;
94
37
  /**
95
38
  * Whether to include timestamp in the message
96
39
  * Defaults to true
@@ -116,6 +59,56 @@ export type BroadcastOptions = {
116
59
  * Can be used by clients to ignore outdated messages
117
60
  */
118
61
  expiresAt?: number;
62
+ /**
63
+ * Metadata to include in the message
64
+ * If an array of strings, only the specified keys will be included
65
+ */
66
+ metadata?: boolean | string[] | Record<string, string>;
67
+ };
68
+ export type WebsocketMessage<T extends Record<string, any> = Record<string, any>> = {
69
+ /**
70
+ * Message type identifier used for client-side routing
71
+ */
72
+ type: string;
73
+ /**
74
+ * Message content - can be any data structure
75
+ * If a string is provided, it will be wrapped in {message: string}
76
+ */
77
+ content: T;
78
+ /**
79
+ * Channel ID
80
+ */
81
+ channel?: string;
82
+ /**
83
+ * Any additional custom fields
84
+ */
85
+ [key: string]: any;
86
+ };
87
+ export type WebsocketStructuredMessage<T extends Record<string, any> = Record<string, any>> = WebsocketMessage<T> & WebsocketMessageOptions;
88
+ export type WebsocketEntityId = string;
89
+ export type WebsocketEntityName = string;
90
+ export type WebsocketEntityData = {
91
+ id: WebsocketEntityId;
92
+ name: WebsocketEntityName;
93
+ };
94
+ export interface I_WebsocketEntity extends WebsocketEntityData {
95
+ ws: ServerWebSocket<WebsocketEntityData>;
96
+ }
97
+ export interface I_WebsocketClient extends I_WebsocketEntity {
98
+ channels: WebsocketChannel<I_WebsocketChannel>;
99
+ send(message: WebsocketStructuredMessage): any;
100
+ subscribe(channel: string): any;
101
+ joinChannel(channel: I_WebsocketChannel, send?: boolean): void;
102
+ leaveChannel(channel: I_WebsocketChannel, send?: boolean): void;
103
+ joinChannels(channels: I_WebsocketChannel[], send?: boolean): void;
104
+ leaveChannels(channels?: I_WebsocketChannel[], send?: boolean): void;
105
+ unsubscribe(channel: string): any;
106
+ whoami(): WebsocketEntityData;
107
+ }
108
+ export interface I_WebsocketChannelEntity<T extends Websocket = Websocket> extends WebsocketEntityData {
109
+ ws: T;
110
+ }
111
+ export type BroadcastOptions = WebsocketMessageOptions & {
119
112
  debug?: boolean;
120
113
  };
121
114
  export interface I_WebsocketChannel<T extends Websocket = Websocket> extends I_WebsocketChannelEntity<T> {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "topsyde-utils",
3
- "version": "1.0.111",
3
+ "version": "1.0.113",
4
4
  "description": "A bundle of TypeScript utility classes and functions",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -28,6 +28,10 @@
28
28
  "types": "./dist/index.d.ts",
29
29
  "default": "./dist/index.js"
30
30
  },
31
+ "./client/rxjs": {
32
+ "types": "./dist/client/rxjs/index.d.ts",
33
+ "default": "./dist/client/rxjs/index.js"
34
+ },
31
35
  "./server/bun/router": {
32
36
  "types": "./dist/server/bun/router/index.d.ts",
33
37
  "default": "./dist/server/bun/router/index.js"
@@ -43,6 +47,9 @@
43
47
  },
44
48
  "typesVersions": {
45
49
  "*": {
50
+ "client/rxjs": [
51
+ "./dist/client/rxjs/index.d.ts"
52
+ ],
46
53
  "server/bun/router": [
47
54
  "./dist/server/bun/router/index.d.ts"
48
55
  ],
@@ -83,5 +90,9 @@
83
90
  },
84
91
  "engines": {
85
92
  "node": ">=14.0.0"
93
+ },
94
+ "dependencies": {
95
+ "rxjs": "^7.8.2",
96
+ "vue": "^3.5.13"
86
97
  }
87
98
  }