@prestizni-software/client-dem 0.2.25 → 0.2.26

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/.gitignore ADDED
@@ -0,0 +1,142 @@
1
+ # Logs
2
+ logs
3
+ *.log
4
+ npm-debug.log*
5
+ yarn-debug.log*
6
+ yarn-error.log*
7
+ lerna-debug.log*
8
+
9
+ # Diagnostic reports (https://nodejs.org/api/report.html)
10
+ report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
11
+
12
+ # Runtime data
13
+ pids
14
+ *.pid
15
+ *.seed
16
+ *.pid.lock
17
+
18
+ # Directory for instrumented libs generated by jscoverage/JSCover
19
+ lib-cov
20
+
21
+ # Coverage directory used by tools like istanbul
22
+ coverage
23
+ *.lcov
24
+
25
+ # nyc test coverage
26
+ .nyc_output
27
+
28
+ # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
29
+ .grunt
30
+
31
+ # Bower dependency directory (https://bower.io/)
32
+ bower_components
33
+
34
+ # node-waf configuration
35
+ .lock-wscript
36
+
37
+ # Compiled binary addons (https://nodejs.org/api/addons.html)
38
+ build/Release
39
+
40
+ # Dependency directories
41
+ node_modules/
42
+ jspm_packages/
43
+
44
+ # Snowpack dependency directory (https://snowpack.dev/)
45
+ web_modules/
46
+
47
+ # TypeScript cache
48
+ *.tsbuildinfo
49
+
50
+ # Optional npm cache directory
51
+ .npm
52
+
53
+ # Optional eslint cache
54
+ .eslintcache
55
+
56
+ # Optional stylelint cache
57
+ .stylelintcache
58
+
59
+ # Optional REPL history
60
+ .node_repl_history
61
+
62
+ # Output of 'npm pack'
63
+ *.tgz
64
+
65
+ # Yarn Integrity file
66
+ .yarn-integrity
67
+
68
+ # dotenv environment variable files
69
+ .env
70
+ .env.*
71
+ !.env.example
72
+
73
+ # parcel-bundler cache (https://parceljs.org/)
74
+ .cache
75
+ .parcel-cache
76
+
77
+ # Next.js build output
78
+ .next
79
+ out
80
+
81
+ # Nuxt.js build / generate output
82
+ .nuxt
83
+ .output
84
+
85
+ # Gatsby files
86
+ .cache/
87
+ # Comment in the public line in if your project uses Gatsby and not Next.js
88
+ # https://nextjs.org/blog/next-9-1#public-directory-support
89
+ # public
90
+
91
+ # vuepress build output
92
+ .vuepress/dist
93
+
94
+ # vuepress v2.x temp and cache directory
95
+ .temp
96
+ .cache
97
+
98
+ # Sveltekit cache directory
99
+ .svelte-kit/
100
+
101
+ # vitepress build output
102
+ **/.vitepress/dist
103
+
104
+ # vitepress cache directory
105
+ **/.vitepress/cache
106
+
107
+ # Docusaurus cache and generated files
108
+ .docusaurus
109
+
110
+ # Serverless directories
111
+ .serverless/
112
+
113
+ # FuseBox cache
114
+ .fusebox/
115
+
116
+ # DynamoDB Local files
117
+ .dynamodb/
118
+
119
+ # Firebase cache directory
120
+ .firebase/
121
+
122
+ # TernJS port file
123
+ .tern-port
124
+
125
+ server/
126
+ client/
127
+ # Stores VSCode versions used for testing VSCode extensions
128
+ .vscode-test
129
+
130
+ # yarn v3
131
+ .pnp.*
132
+ .yarn/*
133
+ !.yarn/patches
134
+ !.yarn/plugins
135
+ !.yarn/releases
136
+ !.yarn/sdks
137
+ !.yarn/versions
138
+
139
+ # Vite files
140
+ vite.config.js.timestamp-*
141
+ vite.config.ts.timestamp-*
142
+ .vite/
@@ -0,0 +1,12 @@
1
+ import { Socket } from "socket.io-client";
2
+ import { AutoUpdateManager } from "./AutoUpdateManagerClass.js";
3
+ import { Constructor, IsData, LoggersType } from "./CommonTypes.js";
4
+ export type WrappedInstances<T extends Record<string, Constructor<any>>> = {
5
+ [K in keyof T]: AutoUpdateClientManager<T[K]>;
6
+ };
7
+ export declare function AUCManagerFactory<T extends Record<string, Constructor<any>>>(defs: T, loggers: LoggersType, socket: Socket): Promise<WrappedInstances<T>>;
8
+ export declare class AutoUpdateClientManager<T extends Constructor<any>> extends AutoUpdateManager<T> {
9
+ constructor(classParam: T, loggers: LoggersType, socket: Socket, classers: Record<string, AutoUpdateManager<any>>, emitter: EventTarget);
10
+ protected handleGetMissingObject(_id: string): Promise<import("./AutoUpdatedClientObjectClass.js").AutoUpdated<T>>;
11
+ createObject(data: Omit<IsData<InstanceType<T>>, "_id">): Promise<import("./AutoUpdatedClientObjectClass.js").AutoUpdated<T>>;
12
+ }
@@ -0,0 +1,46 @@
1
+ import { AutoUpdateManager } from "./AutoUpdateManagerClass.js";
2
+ import { createAutoUpdatedClass } from "./AutoUpdatedClientObjectClass.js";
3
+ // ---------------------- Factory ----------------------
4
+ export async function AUCManagerFactory(defs, loggers, socket) {
5
+ const classers = {};
6
+ const emitter = new EventTarget();
7
+ for (const key in defs) {
8
+ const Model = defs[key];
9
+ const c = new AutoUpdateClientManager(Model, loggers, socket, classers, emitter);
10
+ classers[key] = c;
11
+ await c.isLoadedAsync();
12
+ }
13
+ return classers;
14
+ }
15
+ export class AutoUpdateClientManager extends AutoUpdateManager {
16
+ constructor(classParam, loggers, socket, classers, emitter) {
17
+ super(classParam, socket, loggers, classers, emitter);
18
+ socket.emit("startup" + classParam.name, async (data) => {
19
+ for (const id of data) {
20
+ this.classes[id] = await this.handleGetMissingObject(id);
21
+ this.classesAsArray.push(this.classes[id]);
22
+ }
23
+ emitter.dispatchEvent(new Event("ManagerLoaded" + this.classParam.name + this.className));
24
+ });
25
+ socket.on("new" + classParam.name, async (id) => {
26
+ this.classes[id] = await this.handleGetMissingObject(id);
27
+ this.classesAsArray.push(this.classes[id]);
28
+ });
29
+ socket.on("delete" + classParam.name, (id) => {
30
+ this.deleteObject(id);
31
+ });
32
+ }
33
+ async handleGetMissingObject(_id) {
34
+ if (!this.classers)
35
+ throw new Error(`No classers.`);
36
+ return await createAutoUpdatedClass(this.classParam, this.socket, _id, this.loggers, this, this.emitter);
37
+ }
38
+ async createObject(data) {
39
+ if (!this.classers)
40
+ throw new Error(`No classers.`);
41
+ const object = await createAutoUpdatedClass(this.classParam, this.socket, data, this.loggers, this, this.emitter);
42
+ this.classes[object._id] = object;
43
+ return object;
44
+ }
45
+ }
46
+ //# sourceMappingURL=AutoUpdateClientManagerClass.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AutoUpdateClientManagerClass.js","sourceRoot":"","sources":["../AutoUpdateClientManagerClass.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAK3E,wDAAwD;AACxD,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAErC,IAAO,EAAE,OAAoB,EAAE,MAAc;IAC7C,MAAM,QAAQ,GAAG,EAAyB,CAAC;IAC3C,MAAM,OAAO,GAAI,IAAI,WAAW,EAAE,CAAC;IACnC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;QACxB,MAAM,CAAC,GAAG,IAAI,uBAAuB,CACnC,KAAK,EACL,OAAO,EACP,MAAM,EACN,QAAe,EACf,OAAO,CACR,CAAC;QACF,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAClB,MAAM,CAAC,CAAC,aAAa,EAAE,CAAC;IAC1B,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,OAAO,uBAEX,SAAQ,iBAAoB;IAC5B,YACE,UAAa,EACb,OAAoB,EACpB,MAAc,EACd,QAAgD,EAChD,OAAoB;QAEpB,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;QACtD,MAAM,CAAC,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,IAAc,EAAE,EAAE;YAChE,KAAK,MAAM,EAAE,IAAI,IAAI,EAAE,CAAC;gBACtB,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC;gBACzD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;YAC7C,CAAC;YACD,OAAO,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,eAAe,GAAC,IAAI,CAAC,UAAU,CAAC,IAAI,GAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;QACxF,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,EAAE,CAAC,KAAK,GAAG,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,EAAU,EAAE,EAAE;YACtD,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC;YACzD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,EAAE,CAAC,QAAQ,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC,EAAU,EAAE,EAAE;YACnD,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;QACxB,CAAC,CAAC,CAAC;IACL,CAAC;IAES,KAAK,CAAC,sBAAsB,CAAC,GAAW;QAChD,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;QACpD,OAAO,MAAM,sBAAsB,CACjC,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,MAAM,EACX,GAAG,EACH,IAAI,CAAC,OAAO,EACZ,IAAI,EACJ,IAAI,CAAC,OAAO,CACb,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,YAAY,CAAC,IAA0C;QAClE,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;QACpD,MAAM,MAAM,GAAG,MAAM,sBAAsB,CACzC,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,MAAM,EACX,IAAW,EACX,IAAI,CAAC,OAAO,EACZ,IAAI,EACJ,IAAI,CAAC,OAAO,CACb,CAAC;QACF,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAU,CAAC,GAAG,MAAM,CAAC;QACzC,OAAO,MAAM,CAAC;IAChB,CAAC;CACF"}
@@ -0,0 +1,28 @@
1
+ import { AutoUpdated } from "./AutoUpdatedClientObjectClass.js";
2
+ import { Constructor, IsData, LoggersType, SocketType } from "./CommonTypes.js";
3
+ import "reflect-metadata";
4
+ export declare abstract class AutoUpdateManager<T extends Constructor<any>> {
5
+ protected classes: {
6
+ [_id: string]: AutoUpdated<T>;
7
+ };
8
+ socket: SocketType;
9
+ protected classParam: T;
10
+ protected properties: (keyof T)[];
11
+ readonly classers: Record<string, AutoUpdateManager<any>>;
12
+ protected loggers: LoggersType;
13
+ protected classesAsArray: AutoUpdated<T>[];
14
+ protected emitter: EventTarget;
15
+ private isLoaded;
16
+ constructor(classParam: T, socket: SocketType, loggers: LoggersType, classers: Record<string, AutoUpdateManager<any>>, emitter: EventTarget);
17
+ getObject(_id: string): AutoUpdated<T> | null;
18
+ isLoadedAsync(): Promise<boolean>;
19
+ deleteObject(_id: string): Promise<void>;
20
+ get objectIDs(): string[];
21
+ get objects(): {
22
+ [_id: string]: AutoUpdated<T> | string;
23
+ };
24
+ get objectsAsArray(): AutoUpdated<T>[];
25
+ get className(): string;
26
+ protected abstract handleGetMissingObject(_id: string): Promise<AutoUpdated<T>>;
27
+ abstract createObject(data: IsData<InstanceType<T>>): Promise<AutoUpdated<T>>;
28
+ }
@@ -0,0 +1,56 @@
1
+ import "reflect-metadata";
2
+ export class AutoUpdateManager {
3
+ classes = {};
4
+ socket;
5
+ classParam;
6
+ properties;
7
+ classers;
8
+ loggers = {
9
+ info: () => { },
10
+ debug: () => { },
11
+ error: () => { },
12
+ warn: () => { },
13
+ };
14
+ classesAsArray = [];
15
+ emitter;
16
+ isLoaded = false;
17
+ constructor(classParam, socket, loggers, classers, emitter) {
18
+ this.emitter = emitter;
19
+ this.classers = classers;
20
+ this.socket = socket;
21
+ this.classParam = classParam;
22
+ this.properties = Reflect.getMetadata("props", Object.getPrototypeOf(classParam));
23
+ loggers.warn = loggers.warn ?? loggers.info;
24
+ this.loggers = loggers;
25
+ }
26
+ getObject(_id) {
27
+ return this.classes[_id];
28
+ }
29
+ async isLoadedAsync() {
30
+ if (this.isLoaded)
31
+ return this.isLoaded;
32
+ await new Promise((resolve) => this.emitter.addEventListener("ManagerLoaded" + this.classParam.name + this.className, resolve));
33
+ this.isLoaded = true;
34
+ return this.isLoaded;
35
+ }
36
+ async deleteObject(_id) {
37
+ if (typeof this.classes[_id] === "string")
38
+ this.classes[_id] = await this.handleGetMissingObject(this.classes[_id]);
39
+ (this.classes[_id]).destroy();
40
+ this.classesAsArray.splice(this.classesAsArray.indexOf(this.classes[_id]), 1);
41
+ delete this.classes[_id];
42
+ }
43
+ get objectIDs() {
44
+ return Object.keys(this.classes);
45
+ }
46
+ get objects() {
47
+ return this.classes;
48
+ }
49
+ get objectsAsArray() {
50
+ return this.classesAsArray;
51
+ }
52
+ get className() {
53
+ return this.classParam.name;
54
+ }
55
+ }
56
+ //# sourceMappingURL=AutoUpdateManagerClass.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AutoUpdateManagerClass.js","sourceRoot":"","sources":["../AutoUpdateManagerClass.ts"],"names":[],"mappings":"AAEA,OAAO,kBAAkB,CAAC;AAE1B,MAAM,OAAgB,iBAAiB;IAC3B,OAAO,GAAsC,EAAE,CAAC;IACnD,MAAM,CAAa;IAChB,UAAU,CAAI;IACd,UAAU,CAAc;IAClB,QAAQ,CAAyC;IACvD,OAAO,GAAgB;QAC/B,IAAI,EAAE,GAAG,EAAE,GAAE,CAAC;QACd,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC;QACf,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC;QACf,IAAI,EAAE,GAAG,EAAE,GAAE,CAAC;KACf,CAAC;IACQ,cAAc,GAAqB,EAAE,CAAC;IACtC,OAAO,CAAc;IACvB,QAAQ,GAAG,KAAK,CAAC;IACzB,YACE,UAAa,EACb,MAAkB,EAClB,OAAoB,EACpB,QAAgD,EAChD,OAAoB;QAEpB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,WAAW,CACnC,OAAO,EACP,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,CAClC,CAAC;QACF,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;QAC5C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAGM,SAAS,CACd,GAAW;QAEX,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAEM,KAAK,CAAC,aAAa;QACxB,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO,IAAI,CAAC,QAAQ,CAAC;QACxC,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,eAAe,GAAC,IAAI,CAAC,UAAU,CAAC,IAAI,GAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;QAC5H,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAEM,KAAK,CAAC,YAAY,CAAC,GAAW;QACnC,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,QAAQ;YACvC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;QAC3E,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;QAC9B,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9E,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAED,IAAW,SAAS;QAClB,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACnC,CAAC;IAED,IAAW,OAAO;QAChB,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,IAAW,cAAc;QACvB,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAED,IAAW,SAAS;QAClB,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;IAC9B,CAAC;CAQF"}
@@ -0,0 +1,47 @@
1
+ import "reflect-metadata";
2
+ import { Constructor, DeRef, InstanceOf, IsData, LoggersType, LoggersTypeInternal, Paths, PathValueOf, RefToId, SocketType } from "./CommonTypes.js";
3
+ import { AutoUpdateManager } from "./AutoUpdateManagerClass.js";
4
+ import { AutoUpdateClientManager } from "./AutoUpdateClientManagerClass.js";
5
+ export type AutoUpdated<T extends Constructor<any>> = AutoUpdatedClientObject<T> & DeRef<InstanceOf<T>>;
6
+ export declare function createAutoUpdatedClass<C extends Constructor<any>>(classParam: C, socket: SocketType, data: RefToId<IsData<InstanceType<C>>> | string, loggers: LoggersType, autoClassers: AutoUpdateClientManager<any>, emitter: EventTarget): Promise<AutoUpdated<C>>;
7
+ export declare abstract class AutoUpdatedClientObject<T extends Constructor<any>> {
8
+ protected readonly socket: SocketType;
9
+ protected data: IsData<T>;
10
+ protected readonly isServer: boolean;
11
+ protected readonly loggers: LoggersTypeInternal;
12
+ protected isLoading: boolean;
13
+ protected readonly emitter: EventTarget;
14
+ protected readonly properties: (keyof T)[];
15
+ protected readonly className: string;
16
+ protected autoClasser: AutoUpdateManager<any>;
17
+ protected isLoadingReferences: boolean;
18
+ readonly classProp: Constructor<T>;
19
+ private readonly EmitterID;
20
+ private readonly loadShit;
21
+ constructor(socket: SocketType, data: string | RefToId<IsData<T>>, loggers: LoggersType, properties: (keyof T)[], className: string, classProperty: Constructor<T>, autoClasser: AutoUpdateManager<any>, emitter: EventTarget);
22
+ protected handleNewObject(data: IsData<T>): void;
23
+ get extractedData(): {
24
+ [K in keyof InstanceType<T>]: InstanceOf<InstanceType<T>>[K];
25
+ };
26
+ isLoaded(): boolean;
27
+ isLoadedAsync(): Promise<boolean>;
28
+ private openSockets;
29
+ private handleUpdateRequest;
30
+ private generateSettersAndGetters;
31
+ protected findReference(id: string): AutoUpdated<any> | undefined;
32
+ setValue<K extends Paths<InstanceOf<T>>>(key: K, val: PathValueOf<T, K>): Promise<boolean>;
33
+ getValue(key: Paths<T>): any;
34
+ protected setValueInternal(key: string, value: any): Promise<boolean>;
35
+ protected makeUpdate(key: string, value: any): any;
36
+ protected checkAutoStatusChange(): Promise<void>;
37
+ protected resolveReference(id: string): AutoUpdatedClientObject<any> | null;
38
+ private loadForceReferences;
39
+ private handleLoadOnForced;
40
+ destroy(): Promise<void>;
41
+ protected wipeSelf(): void;
42
+ }
43
+ export declare function processIsRefProperties(instance: any, target: any, prefix?: string | null, allProps?: string[], newData?: any, loggers?: LoggersType): {
44
+ allProps: string[];
45
+ newData: any;
46
+ };
47
+ export declare function getMetadataRecursive(metaKey: string, proto: any, prop: string): any;
@@ -0,0 +1,384 @@
1
+ import "reflect-metadata";
2
+ import { ObjectId } from "bson";
3
+ export async function createAutoUpdatedClass(classParam, socket, data, loggers, autoClassers, emitter) {
4
+ if (typeof data !== "string")
5
+ processIsRefProperties(data, classParam.prototype, undefined, [], loggers);
6
+ const props = Reflect.getMetadata("props", classParam.prototype);
7
+ const instance = new (class extends AutoUpdatedClientObject {
8
+ })(socket, data, loggers, props, classParam.name, classParam, autoClassers, emitter);
9
+ await instance.isLoadedAsync();
10
+ return instance;
11
+ }
12
+ export class AutoUpdatedClientObject {
13
+ socket;
14
+ //protected updates: string[] = [];
15
+ data;
16
+ isServer = false;
17
+ loggers = {
18
+ info: () => { },
19
+ debug: () => { },
20
+ error: () => { },
21
+ warn: () => { },
22
+ };
23
+ isLoading = false;
24
+ emitter;
25
+ properties;
26
+ className;
27
+ autoClasser;
28
+ isLoadingReferences = false;
29
+ classProp;
30
+ EmitterID = new ObjectId().toHexString();
31
+ loadShit = async () => {
32
+ if (this.isLoaded()) {
33
+ try {
34
+ await this.loadForceReferences();
35
+ }
36
+ catch (error) {
37
+ this.loggers.error(error);
38
+ }
39
+ this.isLoadingReferences = false;
40
+ return;
41
+ }
42
+ this.emitter.addEventListener("loaded" + this.EmitterID, async () => {
43
+ try {
44
+ await this.loadForceReferences();
45
+ }
46
+ catch (error) {
47
+ this.loggers.error(error);
48
+ }
49
+ this.isLoadingReferences = false;
50
+ });
51
+ };
52
+ constructor(socket, data, loggers, properties, className, classProperty, autoClasser, emitter) {
53
+ this.emitter = emitter;
54
+ this.classProp = classProperty;
55
+ this.isLoadingReferences = true;
56
+ this.isLoading = true;
57
+ this.autoClasser = autoClasser;
58
+ this.className = className;
59
+ this.properties = properties;
60
+ this.loggers.debug = loggers.debug;
61
+ this.loggers.info = loggers.info;
62
+ this.loggers.error = loggers.error;
63
+ this.loggers.warn = loggers.warn ?? loggers.info;
64
+ this.socket = socket;
65
+ if (typeof data === "string") {
66
+ if (data === "")
67
+ throw new Error("Cannot create a new AutoUpdatedClientClass with an empty string for ID.");
68
+ this.socket.emit("get" + this.className + data, null, (res) => {
69
+ if (!res.success) {
70
+ this.isLoading = false;
71
+ this.loggers.error("Could not load data from server:", res.message);
72
+ this.emitter.dispatchEvent(new Event("loaded" + this.EmitterID));
73
+ return;
74
+ }
75
+ checkForMissingRefs(res.data, properties, classProperty, autoClasser);
76
+ this.data = res.data;
77
+ this.isLoading = false;
78
+ this.emitter.dispatchEvent(new Event("loaded" + this.EmitterID));
79
+ });
80
+ this.data = { _id: data };
81
+ }
82
+ else {
83
+ this.isLoading = true;
84
+ checkForMissingRefs(data, properties, classProperty, autoClasser);
85
+ this.data = data;
86
+ if (this.data._id === "")
87
+ this.handleNewObject(data);
88
+ else {
89
+ this.isLoading = false;
90
+ }
91
+ ;
92
+ }
93
+ if (!this.isServer)
94
+ this.openSockets();
95
+ this.generateSettersAndGetters();
96
+ }
97
+ handleNewObject(data) {
98
+ this.isLoading = true;
99
+ if (!this.className)
100
+ throw new Error("Cannot create a new AutoUpdatedClientClass without a class name.");
101
+ this.socket.emit("new" + this.className, data, (res) => {
102
+ if (!res.success) {
103
+ this.isLoading = false;
104
+ this.loggers.error("Could not create data on server:", res.message);
105
+ this.emitter.dispatchEvent(new Event("loaded" + this.EmitterID));
106
+ return;
107
+ }
108
+ checkForMissingRefs(res.data, this.properties, this.classProp, this.autoClasser);
109
+ this.data = res.data;
110
+ this.isLoading = false;
111
+ this.emitter.dispatchEvent(new Event("loaded" + this.EmitterID));
112
+ });
113
+ }
114
+ get extractedData() {
115
+ const extracted = Object.fromEntries(Object.entries(processIsRefProperties(this.data, this.classProp.prototype).newData).filter(([k, v]) => typeof v !== "function"));
116
+ return structuredClone(extracted);
117
+ }
118
+ isLoaded() {
119
+ return !this.isLoading;
120
+ }
121
+ async isLoadedAsync() {
122
+ await this.loadShit();
123
+ return this.isLoading
124
+ ? new Promise((resolve) => {
125
+ this.emitter.addEventListener("loaded" + this.EmitterID, () => {
126
+ resolve(this.isLoading === false);
127
+ });
128
+ })
129
+ : true;
130
+ }
131
+ openSockets() {
132
+ this.loggers.debug(`[${this.data._id}] Opening socket listeners`);
133
+ this.socket.on("update" + this.className + this.data._id, async (update) => {
134
+ await this.handleUpdateRequest(update);
135
+ });
136
+ }
137
+ // Example server-side handler
138
+ async handleUpdateRequest(update) {
139
+ try {
140
+ const path = update.key.split(".");
141
+ let dataRef = this.data;
142
+ for (let i = 0; i < path.length - 1; i++) {
143
+ if (!dataRef[path[i]])
144
+ dataRef[path[i]] = {};
145
+ dataRef = dataRef[path[i]];
146
+ }
147
+ dataRef[path.at(-1)] = update.value;
148
+ this.loggers.debug(`[${this.data._id}] Applied patch ${update.key} set to ${update.value}`);
149
+ // Return success with the applied patch
150
+ return { success: true, data: undefined, message: "" };
151
+ }
152
+ catch (error) {
153
+ this.loggers.error(`[${this.data._id}] Error applying patch:`, error);
154
+ return {
155
+ success: false,
156
+ message: "Error applying update: " + error.message,
157
+ };
158
+ }
159
+ }
160
+ generateSettersAndGetters() {
161
+ for (const key of this.properties) {
162
+ if (typeof key !== "string")
163
+ return;
164
+ const k = key;
165
+ const isRef = getMetadataRecursive("isRef", this.classProp.prototype, key);
166
+ Object.defineProperty(this, key, {
167
+ get: () => {
168
+ if (isRef)
169
+ return typeof this.data[k] === "string"
170
+ ? this.findReference(this.data[k])
171
+ : this.data[k];
172
+ else
173
+ return this.data[k];
174
+ },
175
+ set: () => {
176
+ throw new Error(`Cannot set ${key} this way, use "setValue" function.`);
177
+ },
178
+ enumerable: true,
179
+ configurable: true,
180
+ });
181
+ }
182
+ }
183
+ findReference(id) {
184
+ for (const classer of Object.values(this.autoClasser.classers)) {
185
+ const result = classer.getObject(id);
186
+ if (result)
187
+ return result;
188
+ }
189
+ }
190
+ async setValue(key, val) {
191
+ let value = val;
192
+ this.loggers.debug(`[${this.data._id}] Setting ${key} to ${value}`);
193
+ try {
194
+ if (value instanceof AutoUpdatedClientObject)
195
+ value = value.extractedData._id;
196
+ const path = key.split(".");
197
+ let obj = this.data;
198
+ let lastClass = this;
199
+ let lastPath = key;
200
+ for (let i = 0; i < path.length - 1; i++) {
201
+ if (typeof obj[path[i]] !== "object" ||
202
+ obj[path[i]] instanceof ObjectId) {
203
+ let temp = this.resolveReference(obj[path[i]].toString());
204
+ if (!temp) {
205
+ return false;
206
+ }
207
+ lastClass = temp;
208
+ lastPath = path.slice(i + 1).join(".");
209
+ return await lastClass.setValue(lastPath, value);
210
+ }
211
+ else
212
+ obj = obj[path[i]];
213
+ }
214
+ if (lastClass !== this || lastPath !== key)
215
+ throw new Error("???");
216
+ const success = await this.setValueInternal(lastPath, value);
217
+ if (!success) {
218
+ return false;
219
+ }
220
+ const pathArr = lastPath.split(".");
221
+ if (pathArr.length === 1) {
222
+ this.data[key] = value;
223
+ await this.checkAutoStatusChange();
224
+ return true;
225
+ }
226
+ const pathMinusLast = pathArr.splice(0, 1);
227
+ let ref = this;
228
+ for (const p of pathMinusLast) {
229
+ ref = ref[p];
230
+ }
231
+ ref[pathArr.at(-1)] = value;
232
+ await this.checkAutoStatusChange();
233
+ return true;
234
+ }
235
+ catch (error) {
236
+ this.loggers.error(error);
237
+ return false;
238
+ }
239
+ }
240
+ getValue(key) {
241
+ let value;
242
+ for (const part of key.split(".")) {
243
+ if (value)
244
+ value = value[part];
245
+ else
246
+ value = this.data[part];
247
+ }
248
+ return value;
249
+ }
250
+ async setValueInternal(key, value) {
251
+ const update = this.makeUpdate(key, value);
252
+ const promise = new Promise((resolve) => {
253
+ try {
254
+ this.socket.emit("update" + this.className + this.data._id, update, (res) => {
255
+ resolve(res.success);
256
+ });
257
+ }
258
+ catch (error) {
259
+ this.loggers.error("Error sending update:", error);
260
+ resolve(false);
261
+ }
262
+ });
263
+ return promise;
264
+ }
265
+ makeUpdate(key, value) {
266
+ const id = this.data._id.toString();
267
+ return { _id: id, key, value };
268
+ }
269
+ async checkAutoStatusChange() {
270
+ return;
271
+ }
272
+ // return a properly typed AutoUpdatedClientClass (or null)
273
+ // inside AutoUpdatedClientClass
274
+ resolveReference(id) {
275
+ if (!this.autoClasser)
276
+ throw new Error("No autoClasser");
277
+ for (const autoClasser of Object.values(this.autoClasser.classers)) {
278
+ const data = autoClasser.getObject(id);
279
+ if (data)
280
+ return data;
281
+ }
282
+ return null;
283
+ }
284
+ async loadForceReferences(obj = this.data, proto = this.classProp.prototype) {
285
+ const props = Reflect.getMetadata("props", proto) || [];
286
+ for (const key of props) {
287
+ const isRef = Reflect.getMetadata("isRef", proto, key);
288
+ if (isRef) {
289
+ await this.handleLoadOnForced(obj, key);
290
+ }
291
+ // If the property itself is a nested object, check deeper
292
+ if (obj[key] && typeof obj[key] === "object") {
293
+ const nestedProto = Object.getPrototypeOf(obj[key]);
294
+ if (nestedProto) {
295
+ await this.loadForceReferences(obj[key], nestedProto);
296
+ }
297
+ }
298
+ }
299
+ }
300
+ async handleLoadOnForced(obj, key) {
301
+ if (!this.autoClasser)
302
+ throw new Error("No autoClassers");
303
+ const refId = obj[key];
304
+ if (refId) {
305
+ for (const classer of Object.values(this.autoClasser.classers)) {
306
+ const result = classer.getObject(refId);
307
+ if (result) {
308
+ obj[key] = result;
309
+ // Recursively load refs inside the resolved object
310
+ if (typeof result.loadForceReferences === "function") {
311
+ await result.loadForceReferences();
312
+ }
313
+ break;
314
+ }
315
+ }
316
+ }
317
+ }
318
+ async destroy() {
319
+ this.socket.emit("delete" + this.className, this.data._id);
320
+ this.wipeSelf();
321
+ }
322
+ wipeSelf() {
323
+ for (const key of Object.keys(this.data)) {
324
+ delete this.data[key];
325
+ }
326
+ this.loggers.info(`[${this.data._id}] ${this.className} object wiped`);
327
+ }
328
+ }
329
+ export function processIsRefProperties(instance, target, prefix = null, allProps = [], newData = {}, loggers) {
330
+ const props = Reflect.getMetadata("props", target) || [];
331
+ for (const prop of props) {
332
+ const path = prefix ? `${prefix}.${prop}` : prop;
333
+ allProps.push(path);
334
+ newData[prop] = instance[prop];
335
+ if (Reflect.getMetadata("isRef", target, prop)) {
336
+ (loggers ?? console).debug("Changing isRef:", path);
337
+ newData[prop] =
338
+ typeof instance[prop] === "string"
339
+ ? instance[prop]
340
+ : instance[prop]?._id;
341
+ }
342
+ const type = Reflect.getMetadata("design:type", target, prop);
343
+ if (type?.prototype) {
344
+ const nestedProps = Reflect.getMetadata("props", type.prototype);
345
+ if (nestedProps && instance[prop]) {
346
+ newData[prop] = processIsRefProperties(instance[prop], type.prototype, path, allProps, undefined, loggers).newData;
347
+ }
348
+ }
349
+ }
350
+ return { allProps, newData };
351
+ }
352
+ export function getMetadataRecursive(metaKey, proto, prop) {
353
+ while (proto) {
354
+ const meta = Reflect.getMetadata(metaKey, proto, prop);
355
+ if (meta !== undefined)
356
+ return meta;
357
+ proto = Object.getPrototypeOf(proto);
358
+ }
359
+ return undefined;
360
+ }
361
+ function checkForMissingRefs(data, props, classParam, autoClassers) {
362
+ if (typeof data !== "string") {
363
+ const entryKeys = Object.keys(data);
364
+ for (const prop of props) {
365
+ if (!entryKeys.includes(prop.toString()) &&
366
+ getMetadataRecursive("isRef", classParam.prototype, prop.toString())) {
367
+ findMissingObjectReference(data, prop, autoClassers.classers);
368
+ }
369
+ }
370
+ }
371
+ }
372
+ function findMissingObjectReference(data, prop, autoClassers) {
373
+ for (const ac of Object.values(autoClassers)) {
374
+ for (const obj of ac.objectsAsArray) {
375
+ const found = Object.values(obj.extractedData).find((value) => Array.isArray(value) ? value.includes(data._id) : value === data._id);
376
+ if (found) {
377
+ data[prop] = obj._id;
378
+ return;
379
+ }
380
+ }
381
+ }
382
+ console.log("a");
383
+ }
384
+ //# sourceMappingURL=AutoUpdatedClientObjectClass.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AutoUpdatedClientObjectClass.js","sourceRoot":"","sources":["../AutoUpdatedClientObjectClass.ts"],"names":[],"mappings":"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"}
package/CHANGELOG.md ADDED
@@ -0,0 +1,63 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
4
+
5
+ ### [0.2.26](https://github.com/Prestizni-Software/client-dem/compare/v0.2.25...v0.2.26) (2025-11-11)
6
+
7
+ ### [0.2.25](https://github.com/Prestizni-Software/client-dem/compare/v0.2.24...v0.2.25) (2025-11-11)
8
+
9
+ ### [0.2.24](https://github.com/Prestizni-Software/client-dem/compare/v0.2.23...v0.2.24) (2025-11-11)
10
+
11
+ ### [0.2.23](https://github.com/Prestizni-Software/client-dem/compare/v0.2.22...v0.2.23) (2025-11-11)
12
+
13
+ ### [0.2.22](https://github.com/Prestizni-Software/client-dem/compare/v0.2.21...v0.2.22) (2025-11-10)
14
+
15
+ ### [0.2.21](https://github.com/Prestizni-Software/client-dem/compare/v0.2.20...v0.2.21) (2025-11-10)
16
+
17
+ ### [0.2.20](https://github.com/Prestizni-Software/client-dem/compare/v0.2.19...v0.2.20) (2025-11-10)
18
+
19
+ ### [0.2.19](https://github.com/Prestizni-Software/client-dem/compare/v0.2.18...v0.2.19) (2025-11-10)
20
+
21
+ ### [0.2.18](https://github.com/Prestizni-Software/client-dem/compare/v0.2.17...v0.2.18) (2025-11-10)
22
+
23
+ ### [0.2.17](https://github.com/Prestizni-Software/client-dem/compare/v0.2.16...v0.2.17) (2025-11-10)
24
+
25
+ ### [0.2.16](https://github.com/Prestizni-Software/client-dem/compare/v0.2.15...v0.2.16) (2025-11-10)
26
+
27
+ ### [0.2.15](https://github.com/Prestizni-Software/client-dem/compare/v0.2.14...v0.2.15) (2025-11-10)
28
+
29
+ ### [0.2.14](https://github.com/Prestizni-Software/client-dem/compare/v0.2.13...v0.2.14) (2025-11-06)
30
+
31
+ ### [0.2.13](https://github.com/Prestizni-Software/client-dem/compare/v0.2.12...v0.2.13) (2025-11-06)
32
+
33
+ ### [0.2.12](https://github.com/Prestizni-Software/client-dem/compare/v0.2.11...v0.2.12) (2025-11-06)
34
+
35
+ ### [0.2.11](https://github.com/Prestizni-Software/client-dem/compare/v0.2.10...v0.2.11) (2025-11-06)
36
+
37
+ ### [0.2.10](https://github.com/Prestizni-Software/client-dem/compare/v0.2.9...v0.2.10) (2025-11-06)
38
+
39
+ ### [0.2.9](https://github.com/Prestizni-Software/client-dem/compare/v0.2.8...v0.2.9) (2025-11-06)
40
+
41
+ ### [0.2.8](https://github.com/Prestizni-Software/client-dem/compare/v0.2.7...v0.2.8) (2025-11-06)
42
+
43
+ ### [0.2.7](https://github.com/Prestizni-Software/client-dem/compare/v0.2.6...v0.2.7) (2025-11-06)
44
+
45
+ ### [0.2.6](https://github.com/Prestizni-Software/client-dem/compare/v0.2.5...v0.2.6) (2025-11-06)
46
+
47
+ ### [0.2.5](https://github.com/Prestizni-Software/client-dem/compare/v0.2.4...v0.2.5) (2025-11-06)
48
+
49
+ ### [0.2.4](https://github.com/Prestizni-Software/client-dem/compare/v0.2.3...v0.2.4) (2025-11-06)
50
+
51
+ ### [0.2.3](https://github.com/Prestizni-Software/client-dem/compare/v0.2.2...v0.2.3) (2025-11-04)
52
+
53
+ ### [0.2.2](https://github.com/Prestizni-Software/client-dem/compare/v0.2.1...v0.2.2) (2025-11-04)
54
+
55
+ ### [0.2.1](https://github.com/Prestizni-Software/client-dem/compare/v0.1.27...v0.2.1) (2025-11-04)
56
+
57
+ ### [0.1.27](https://github.com/Prestizni-Software/client-dem/compare/v0.1.26...v0.1.27) (2025-11-04)
58
+
59
+ ### 0.1.26 (2025-11-04)
60
+
61
+ # Changelog
62
+
63
+ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
@@ -0,0 +1,78 @@
1
+ import { DefaultEventsMap, Server } from "socket.io";
2
+ import { Socket as SocketClient } from "socket.io-client";
3
+ import { ObjectId } from "bson";
4
+ import { AutoUpdated } from "./AutoUpdatedClientObjectClass.js";
5
+ import "reflect-metadata";
6
+ export type Ref<T> = string | (T extends Constructor<any> ? AutoUpdated<T> : (T & {
7
+ _id: string;
8
+ }));
9
+ export type LoggersTypeInternal = LoggersType & {
10
+ warn: (...args: any[]) => void;
11
+ };
12
+ export type LoggersType = {
13
+ info: (...args: any[]) => void;
14
+ debug: (...args: any[]) => void;
15
+ error: (...args: any[]) => void;
16
+ warn?: (...args: any[]) => void;
17
+ };
18
+ export type SocketType = SocketClient<DefaultEventsMap, DefaultEventsMap> | Server<DefaultEventsMap, DefaultEventsMap, DefaultEventsMap, any>;
19
+ export type IsData<T> = T extends {
20
+ _id: string | ObjectId;
21
+ } ? T : never;
22
+ export type ServerResponse<T> = {
23
+ data: T;
24
+ message: string;
25
+ success: true;
26
+ } | {
27
+ data?: null;
28
+ message: string;
29
+ success: false;
30
+ };
31
+ export type ServerUpdateResponse<T> = {
32
+ data: Partial<IsData<T>>;
33
+ message: string;
34
+ success: true;
35
+ updateId: string;
36
+ };
37
+ export type ServerUpdateRequest<T> = {
38
+ _id: string;
39
+ key: string;
40
+ value: any;
41
+ };
42
+ export declare function classProp(target: any, propertyKey: string): void;
43
+ export declare function classRef(target: any, propertyKey: string): void;
44
+ export type AutoProps<T> = {
45
+ readonly [K in keyof T]: T[K];
46
+ };
47
+ export type Constructor<T> = new (...args: any[]) => T;
48
+ export type UnboxConstructor<T> = T extends new (...args: any[]) => infer I ? I : T;
49
+ export type NonOptional<T> = Exclude<T, null | undefined>;
50
+ export type DeRef<T> = {
51
+ [K in keyof T]: T[K] extends Ref<infer U> ? NonOptional<U> : T[K] extends Ref<infer U> | null | undefined ? NonOptional<U> : NonOptional<T[K]>;
52
+ };
53
+ export type RefToId<T> = {
54
+ [K in keyof T]: T[K] extends Ref<infer U> ? string : T[K];
55
+ };
56
+ export type InstanceOf<T> = T extends Constructor<infer I> ? I : T;
57
+ export type NeededTypeAtPath<C extends Constructor<any>, T> = {
58
+ [P in Paths<C>]: PathValueOf<C, P> extends T ? P : never;
59
+ }[Paths<C>];
60
+ type Prev = [never, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
61
+ type StripPrototypePrefix<P extends string> = P extends "prototype" ? never : P extends `prototype.${infer Rest}` ? Rest : P;
62
+ type ResolveRef<T> = T extends Ref<infer U> ? U : T;
63
+ type Recurseable<T> = T extends object ? T extends Array<any> | Function ? never : T : never;
64
+ type Join<K extends string, P extends string> = `${K}.${P}`;
65
+ type OnlyClassKeys<T> = {
66
+ [K in keyof T]: K;
67
+ }[keyof T] & string;
68
+ export type Paths<T, Depth extends number = 5, OriginalDepth extends number = Depth> = Depth extends never ? never : {
69
+ [K in OnlyClassKeys<DeRef<NonOptional<T>>>]: K extends "_id" ? StripPrototypePrefix<`${K}`> : StripPrototypePrefix<PathsHelper<K, DeRef<NonOptional<T>>[K], Depth, OriginalDepth>>;
70
+ }[OnlyClassKeys<DeRef<NonOptional<T>>>];
71
+ type PathsHelper<K extends string, V, Depth extends number, OriginalDepth extends number> = Recurseable<V> extends never ? `${K}` : `${K}` | Join<K, Paths<DeRef<NonOptional<V>>, Prev[Depth], OriginalDepth>>;
72
+ type Split<S extends string> = S extends `${infer L}.${infer R}` ? [L, ...Split<R>] : [S];
73
+ type PathValue<T, Parts extends readonly string[], Depth extends number = 5> = Depth extends 0 ? any : Parts extends [infer K, ...infer Rest] ? K extends keyof T ? Rest extends readonly string[] ? Rest["length"] extends 0 ? ResolveRef<T[K]> : PathValue<ResolveRef<T[K]>, Rest, Prev[Depth]> : never : never : T;
74
+ export type PathValueOf<T, P extends string, Depth extends number = 5> = PathValue<DeRef<InstanceOf<T>>, Split<P>, Depth>;
75
+ export type Pretty<T> = {
76
+ [K in keyof T]: T[K];
77
+ };
78
+ export {};
package/CommonTypes.js ADDED
@@ -0,0 +1,10 @@
1
+ import "reflect-metadata";
2
+ export function classProp(target, propertyKey) {
3
+ const props = Reflect.getMetadata("props", target) || [];
4
+ props.push(propertyKey);
5
+ Reflect.defineMetadata("props", props, target);
6
+ }
7
+ export function classRef(target, propertyKey) {
8
+ Reflect.defineMetadata("isRef", true, target, propertyKey);
9
+ }
10
+ //# sourceMappingURL=CommonTypes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CommonTypes.js","sourceRoot":"","sources":["../CommonTypes.ts"],"names":[],"mappings":"AAIA,OAAO,kBAAkB,CAAC;AAyC1B,MAAM,UAAU,SAAS,CAAC,MAAW,EAAE,WAAmB;IACxD,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;IACzD,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACxB,OAAO,CAAC,cAAc,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,MAAW,EAAE,WAAmB;IACvD,OAAO,CAAC,cAAc,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;AAC7D,CAAC"}
package/client.d.ts ADDED
@@ -0,0 +1 @@
1
+ export {};
package/client.js ADDED
@@ -0,0 +1,11 @@
1
+ import * as AutoUpdateClientManagerClass from "./AutoUpdateClientManagerClass.js";
2
+ import * as AutoUpdateManagerClass from "./AutoUpdateManagerClass.js";
3
+ import * as AutoUpdatedClientObjectClass from "./AutoUpdatedClientObjectClass.js";
4
+ import * as CommonTypes from "./CommonTypes.js";
5
+ module.exports = {
6
+ AutoUpdateClientManagerClass,
7
+ AutoUpdateManagerClass,
8
+ AutoUpdatedClientObjectClass,
9
+ CommonTypes,
10
+ };
11
+ //# sourceMappingURL=client.js.map
package/client.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,4BAA4B,MAAM,mCAAmC,CAAC;AAClF,OAAO,KAAK,sBAAsB,MAAM,6BAA6B,CAAC;AACtE,OAAO,KAAK,4BAA4B,MAAM,mCAAmC,CAAC;AAClF,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAC;AAEhD,MAAM,CAAC,OAAO,GAAG;IACf,4BAA4B;IAC5B,sBAAsB;IACtB,4BAA4B;IAC5B,WAAW;CACZ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@prestizni-software/client-dem",
3
- "version": "0.2.25",
3
+ "version": "0.2.26",
4
4
  "description": "An solution for when making http requests is not a good solution",
5
5
  "keywords": [
6
6
  "websockets"
@@ -12,7 +12,7 @@
12
12
  "module": "./client.mjs",
13
13
  "types": "./client.d.ts",
14
14
  "files": [
15
- "./"
15
+ "*"
16
16
  ],
17
17
  "publishConfig": {
18
18
  "access": "public",