@prestizni-software/server-dem 0.2.57 → 0.2.59
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/AutoUpdateManagerClass.ts +87 -0
- package/AutoUpdateServerManagerClass.ts +309 -0
- package/AutoUpdatedClientObjectClass.ts +673 -0
- package/AutoUpdatedServerObjectClass.ts +129 -0
- package/CHANGELOG.md +4 -0
- package/CommonTypes.ts +105 -0
- package/CommonTypes_server.ts +81 -0
- package/{AutoUpdateServerManagerClass.js → dist/AutoUpdateServerManagerClass.js} +9 -1
- package/dist/AutoUpdateServerManagerClass.js.map +1 -0
- package/{AutoUpdatedClientObjectClass.d.ts → dist/AutoUpdatedClientObjectClass.d.ts} +3 -3
- package/{AutoUpdatedClientObjectClass.js → dist/AutoUpdatedClientObjectClass.js} +5 -3
- package/dist/AutoUpdatedClientObjectClass.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +10 -6
- package/server.ts +13 -0
- package/tsconfig.json +113 -0
- package/AutoUpdateServerManagerClass.js.map +0 -1
- package/AutoUpdatedClientObjectClass.js.map +0 -1
- /package/{AutoUpdateManagerClass.d.ts → dist/AutoUpdateManagerClass.d.ts} +0 -0
- /package/{AutoUpdateManagerClass.js → dist/AutoUpdateManagerClass.js} +0 -0
- /package/{AutoUpdateManagerClass.js.map → dist/AutoUpdateManagerClass.js.map} +0 -0
- /package/{AutoUpdateServerManagerClass.d.ts → dist/AutoUpdateServerManagerClass.d.ts} +0 -0
- /package/{AutoUpdatedServerObjectClass.d.ts → dist/AutoUpdatedServerObjectClass.d.ts} +0 -0
- /package/{AutoUpdatedServerObjectClass.js → dist/AutoUpdatedServerObjectClass.js} +0 -0
- /package/{AutoUpdatedServerObjectClass.js.map → dist/AutoUpdatedServerObjectClass.js.map} +0 -0
- /package/{CommonTypes.d.ts → dist/CommonTypes.d.ts} +0 -0
- /package/{CommonTypes.js → dist/CommonTypes.js} +0 -0
- /package/{CommonTypes.js.map → dist/CommonTypes.js.map} +0 -0
- /package/{CommonTypes_server.d.ts → dist/CommonTypes_server.d.ts} +0 -0
- /package/{CommonTypes_server.js → dist/CommonTypes_server.js} +0 -0
- /package/{CommonTypes_server.js.map → dist/CommonTypes_server.js.map} +0 -0
- /package/{server.d.ts → dist/server.d.ts} +0 -0
- /package/{server.js → dist/server.js} +0 -0
- /package/{server.js.map → dist/server.js.map} +0 -0
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import { IObjectWithTypegooseFunction } from "@typegoose/typegoose/lib/types.js";
|
|
2
|
+
import { Types, Document } from "mongoose";
|
|
3
|
+
import { AutoUpdatedClientObject } from "./AutoUpdatedClientObjectClass.js";
|
|
4
|
+
import { AutoUpdateServerManager } from "./AutoUpdateServerManagerClass.js";
|
|
5
|
+
import "reflect-metadata";
|
|
6
|
+
import { DefaultEventsMap, Server } from "socket.io";
|
|
7
|
+
import { Constructor, UnboxConstructor, LoggersType, EventEmitter3, AutoProps, IsData, ServerUpdateRequest, InstanceOf } from "./CommonTypes.js";
|
|
8
|
+
import { Paths, PathValueOf } from "./CommonTypes_server.js";
|
|
9
|
+
|
|
10
|
+
type SocketType = Server<DefaultEventsMap, DefaultEventsMap, DefaultEventsMap, any>;
|
|
11
|
+
|
|
12
|
+
export type AutoUpdated<T extends Constructor<any>> = AutoUpdatedServerObject<T> & UnboxConstructor<T>;
|
|
13
|
+
|
|
14
|
+
export async function createAutoUpdatedClass<C extends Constructor<any>>(
|
|
15
|
+
classParam: C,
|
|
16
|
+
socket: SocketType,
|
|
17
|
+
data: DocWithProps<InstanceType<C>>,
|
|
18
|
+
loggers: LoggersType,
|
|
19
|
+
autoClasser: AutoUpdateServerManager<any>,
|
|
20
|
+
emitter: EventEmitter3
|
|
21
|
+
): Promise<AutoProps<C> & AutoUpdated<InstanceType<C>> & InstanceType<C>> {
|
|
22
|
+
const instance = new (class extends AutoUpdatedServerObject<
|
|
23
|
+
InstanceType<C>
|
|
24
|
+
> {})(
|
|
25
|
+
socket,
|
|
26
|
+
data,
|
|
27
|
+
loggers,
|
|
28
|
+
Reflect.getMetadata(
|
|
29
|
+
"props",
|
|
30
|
+
classParam.prototype
|
|
31
|
+
) as (keyof InstanceType<C>)[],
|
|
32
|
+
classParam.name,
|
|
33
|
+
classParam,
|
|
34
|
+
autoClasser,
|
|
35
|
+
emitter
|
|
36
|
+
);
|
|
37
|
+
await instance.isLoadedAsync();
|
|
38
|
+
await instance.checkAutoStatusChange();
|
|
39
|
+
return instance as AutoProps<C> & AutoUpdated<InstanceType<C>> & InstanceType<C>;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
// ---------------------- Class ----------------------
|
|
43
|
+
export abstract class AutoUpdatedServerObject<
|
|
44
|
+
T extends Constructor<any>
|
|
45
|
+
> extends AutoUpdatedClientObject<T> {
|
|
46
|
+
protected readonly isServer: boolean = true;
|
|
47
|
+
private readonly entry: DocWithProps<T>;
|
|
48
|
+
protected override autoClasser: AutoUpdateServerManager<any>;
|
|
49
|
+
|
|
50
|
+
constructor(
|
|
51
|
+
socket: SocketType,
|
|
52
|
+
data: DocWithProps<T>,
|
|
53
|
+
loggers: {
|
|
54
|
+
info: (...args: any[]) => void;
|
|
55
|
+
debug: (...args: any[]) => void;
|
|
56
|
+
error: (...args: any[]) => void;
|
|
57
|
+
warn?: (...args: any[]) => void;
|
|
58
|
+
},
|
|
59
|
+
properties: (keyof T)[],
|
|
60
|
+
className: string,
|
|
61
|
+
classProp: Constructor<T>,
|
|
62
|
+
autoClasser: AutoUpdateServerManager<any>,
|
|
63
|
+
emitter: EventEmitter3
|
|
64
|
+
) {
|
|
65
|
+
super(
|
|
66
|
+
socket as any,
|
|
67
|
+
data.toObject(),
|
|
68
|
+
loggers,
|
|
69
|
+
properties,
|
|
70
|
+
className,
|
|
71
|
+
classProp,
|
|
72
|
+
autoClasser,
|
|
73
|
+
emitter
|
|
74
|
+
);
|
|
75
|
+
this.autoClasser = autoClasser;
|
|
76
|
+
this.entry = data;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
public setValue_<K extends Paths<InstanceOf<T>>>(
|
|
80
|
+
key: K,
|
|
81
|
+
val: PathValueOf<T, K>
|
|
82
|
+
): Promise<{ success: boolean; msg: string }> {
|
|
83
|
+
return this.setValue__(key, val);
|
|
84
|
+
}
|
|
85
|
+
protected handleNewObject(_data: IsData<T>) {
|
|
86
|
+
throw new Error("Cannot create new objects like this.");
|
|
87
|
+
}
|
|
88
|
+
protected async setValueInternal(key: string, value: any): Promise<{ success: boolean, message: string }> {
|
|
89
|
+
try {
|
|
90
|
+
await (
|
|
91
|
+
this.autoClasser.classers[this.className] as AutoUpdateServerManager<any>
|
|
92
|
+
).model.updateOne({ _id: this.data._id }, { $set: { [key]: value } });
|
|
93
|
+
|
|
94
|
+
const update: ServerUpdateRequest<T> = this.makeUpdate(key, value);
|
|
95
|
+
this.socket.emit("update" + this.className + this.data._id, update);
|
|
96
|
+
|
|
97
|
+
return {
|
|
98
|
+
success: true,
|
|
99
|
+
message: "Updated",
|
|
100
|
+
};
|
|
101
|
+
} catch (error) {
|
|
102
|
+
this.loggers.error("Error saving object:", error);
|
|
103
|
+
return {
|
|
104
|
+
success: false,
|
|
105
|
+
message: "Error saving object: " + (error as Error).message,
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
public async destroy(): Promise<void> {
|
|
111
|
+
this.socket.emit("delete" + this.className, this.data._id);
|
|
112
|
+
await this.entry.deleteOne({ _id: this.data._id });
|
|
113
|
+
this.wipeSelf();
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
public override async checkAutoStatusChange() {
|
|
117
|
+
const neededStatus = await this.autoClasser.options?.autoStatusDefinitions?.definition(this) as any;
|
|
118
|
+
const statusPath = this.autoClasser.options?.autoStatusDefinitions?.statusProperty as any
|
|
119
|
+
if(!neededStatus || !statusPath) return;
|
|
120
|
+
const currentStatus = this.getValue(this.autoClasser.options?.autoStatusDefinitions?.statusProperty as any)
|
|
121
|
+
if (neededStatus === currentStatus) return;
|
|
122
|
+
this.setValue(statusPath, neededStatus);
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
export type DocWithProps<T> = Document &
|
|
128
|
+
Omit<T & { _id: Types.ObjectId; __v: number }, "typegooseName"> &
|
|
129
|
+
IObjectWithTypegooseFunction;
|
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,10 @@
|
|
|
2
2
|
|
|
3
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
4
|
|
|
5
|
+
### [0.2.59](https://github.com/Prestizni-Software/server-dem/compare/v0.2.58...v0.2.59) (2025-11-21)
|
|
6
|
+
|
|
7
|
+
### [0.2.58](https://github.com/Prestizni-Software/server-dem/compare/v0.2.57...v0.2.58) (2025-11-21)
|
|
8
|
+
|
|
5
9
|
### [0.2.57](https://github.com/Prestizni-Software/server-dem/compare/v0.2.56...v0.2.57) (2025-11-20)
|
|
6
10
|
|
|
7
11
|
### [0.2.56](https://github.com/Prestizni-Software/server-dem/compare/v0.2.55...v0.2.56) (2025-11-18)
|
package/CommonTypes.ts
ADDED
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import EventEmitter from "eventemitter3";
|
|
2
|
+
import { ObjectId } from "bson";
|
|
3
|
+
import "reflect-metadata";
|
|
4
|
+
|
|
5
|
+
type RefType = string | ObjectId;
|
|
6
|
+
export type EventEmitter3 = EventEmitter;
|
|
7
|
+
// ---------------------- Core ----------------------
|
|
8
|
+
export type AutoProps<T> = {
|
|
9
|
+
readonly [K in keyof T]: T[K];
|
|
10
|
+
};
|
|
11
|
+
export type InstanceOf<T> = T extends Constructor<infer I> ? I : T;
|
|
12
|
+
|
|
13
|
+
export type Constructor<T> = new (...args: any[]) => T;
|
|
14
|
+
export type UnboxConstructor<T> = T extends new (...args: any[]) => infer I
|
|
15
|
+
? I
|
|
16
|
+
: T;
|
|
17
|
+
|
|
18
|
+
export type LoggersType = {
|
|
19
|
+
info: (...args: any[]) => void;
|
|
20
|
+
debug: (...args: any[]) => void;
|
|
21
|
+
error: (...args: any[]) => void;
|
|
22
|
+
warn?: (...args: any[]) => void;
|
|
23
|
+
};
|
|
24
|
+
export type LoggersTypeInternal = LoggersType & {
|
|
25
|
+
warn: (...args: any[]) => void;
|
|
26
|
+
};
|
|
27
|
+
export type IsData<T> = T extends { _id: any } ? T : never;
|
|
28
|
+
export type ServerResponse<T> =
|
|
29
|
+
| {
|
|
30
|
+
data: T; // in this case, the applied patch
|
|
31
|
+
message: string;
|
|
32
|
+
success: true;
|
|
33
|
+
}
|
|
34
|
+
| {
|
|
35
|
+
data?: null;
|
|
36
|
+
message: string;
|
|
37
|
+
success: false;
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
export type ServerUpdateResponse<T> = {
|
|
41
|
+
data: Partial<IsData<T>>;
|
|
42
|
+
message: string;
|
|
43
|
+
success: true;
|
|
44
|
+
updateId: string;
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
export type ServerUpdateRequest<T> = {
|
|
48
|
+
_id: RefType;
|
|
49
|
+
key: string;
|
|
50
|
+
value: any;
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
export function classProp(target: any, propertyKey: string) {
|
|
54
|
+
const props = Reflect.getMetadata("props", target) || [];
|
|
55
|
+
props.push(propertyKey);
|
|
56
|
+
Reflect.defineMetadata("props", props, target);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
export function classRef(where: string) {
|
|
60
|
+
return function (target: any, propertyKey: string) {
|
|
61
|
+
Reflect.defineMetadata("isRef", where, target, propertyKey);
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
export type Pretty<T> = { [K in keyof T]: T[K] };// ---------------------- Paths ----------------------
|
|
65
|
+
export type Prev = [never, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
|
|
66
|
+
export type StripPrototypePrefix<P extends string> = P extends "prototype" ? never : P extends `prototype.${infer Rest}` ? Rest : P;
|
|
67
|
+
export type Recurseable<T> = T extends object ? T extends Array<any> | Function ? never : T : never;
|
|
68
|
+
export type Join<K extends string, P extends string> = `${K}.${P}`;
|
|
69
|
+
export type OnlyClassKeys<T> = {
|
|
70
|
+
[K in keyof T]: K;
|
|
71
|
+
}[keyof T] &
|
|
72
|
+
string;
|
|
73
|
+
export type Split<S extends string> = S extends `${infer L}.${infer R}` ? [L, ...Split<R>] : [S];
|
|
74
|
+
export type NonOptional<T> = Exclude<T, null | undefined>;
|
|
75
|
+
// ---------------------- Paths ----------------------
|
|
76
|
+
|
|
77
|
+
export type Paths<
|
|
78
|
+
T,
|
|
79
|
+
Depth extends number = 5,
|
|
80
|
+
OriginalDepth extends number = Depth
|
|
81
|
+
> = Depth extends never ? never : {
|
|
82
|
+
[K in OnlyClassKeys<NonOptional<T>>]: K extends "_id" ? StripPrototypePrefix<`${K}`> : StripPrototypePrefix<
|
|
83
|
+
PathsHelper<K, NonOptional<T>[K], Depth, OriginalDepth>
|
|
84
|
+
>;
|
|
85
|
+
}[OnlyClassKeys<NonOptional<T>>];
|
|
86
|
+
|
|
87
|
+
export type PathsHelper<
|
|
88
|
+
K extends string,
|
|
89
|
+
V,
|
|
90
|
+
Depth extends number,
|
|
91
|
+
OriginalDepth extends number
|
|
92
|
+
> = Recurseable<V> extends never ? `${K}` : `${K}` | Join<K, Paths<V, Prev[Depth], OriginalDepth>>;
|
|
93
|
+
// ---------------------- PathValueOf ----------------------
|
|
94
|
+
export type PathValue<
|
|
95
|
+
T,
|
|
96
|
+
Parts extends string[],
|
|
97
|
+
Depth extends number = 5
|
|
98
|
+
> = Depth extends 0 ? never : T extends unknown ? Parts extends [infer K, ...infer Rest] ? K extends string ? K extends keyof T ? Rest extends string[] ? Rest["length"] extends 0 ? T[K] : PathValue<T[K], Rest, Prev[Depth]> : never : never : never : T : never;
|
|
99
|
+
|
|
100
|
+
export type PathValueOf<
|
|
101
|
+
T,
|
|
102
|
+
P extends string,
|
|
103
|
+
Depth extends number = 6
|
|
104
|
+
> = PathValue<InstanceOf<T>, Split<P>, Depth>;
|
|
105
|
+
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { Ref } from "@typegoose/typegoose";
|
|
2
|
+
import {
|
|
3
|
+
InstanceOf,
|
|
4
|
+
Join,
|
|
5
|
+
OnlyClassKeys,
|
|
6
|
+
Prev,
|
|
7
|
+
Recurseable,
|
|
8
|
+
Split,
|
|
9
|
+
StripPrototypePrefix,
|
|
10
|
+
} from "./CommonTypes";
|
|
11
|
+
|
|
12
|
+
// ---------------------- DeRef ----------------------
|
|
13
|
+
export type NonOptional<T> = Exclude<T, null | undefined>;
|
|
14
|
+
|
|
15
|
+
export type DeRef<T> = {
|
|
16
|
+
[K in keyof T]: T[K] extends Ref<infer U>
|
|
17
|
+
? U
|
|
18
|
+
: T[K] extends Ref<infer U> | null | undefined
|
|
19
|
+
? U
|
|
20
|
+
: T[K];
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
export type RefToId<T> = {
|
|
24
|
+
[K in keyof T]: T[K] extends Ref<infer U> ? U | string : T[K];
|
|
25
|
+
};
|
|
26
|
+
// ---------------------- Paths ----------------------
|
|
27
|
+
export type Paths<
|
|
28
|
+
T,
|
|
29
|
+
Depth extends number = 5,
|
|
30
|
+
OriginalDepth extends number = Depth
|
|
31
|
+
> = Depth extends never
|
|
32
|
+
? never
|
|
33
|
+
: {
|
|
34
|
+
[K in OnlyClassKeys<DeRef<NonOptional<T>>>]: K extends "_id"
|
|
35
|
+
? StripPrototypePrefix<`${K}`>
|
|
36
|
+
: StripPrototypePrefix<
|
|
37
|
+
PathsHelper<K, DeRef<NonOptional<T>>[K], Depth, OriginalDepth>
|
|
38
|
+
>;
|
|
39
|
+
}[OnlyClassKeys<DeRef<NonOptional<T>>>];
|
|
40
|
+
|
|
41
|
+
type PathsHelper<
|
|
42
|
+
K extends string,
|
|
43
|
+
V,
|
|
44
|
+
Depth extends number,
|
|
45
|
+
OriginalDepth extends number
|
|
46
|
+
> = Recurseable<V> extends never
|
|
47
|
+
? `${K}`
|
|
48
|
+
: `${K}` | Join<K, Paths<DeRef<NonOptional<V>>, Prev[Depth], OriginalDepth>>;
|
|
49
|
+
|
|
50
|
+
// ---------------------- PathValueOf ----------------------
|
|
51
|
+
export type ResolveRef<T> = T extends Ref<infer U> ? U : T;
|
|
52
|
+
|
|
53
|
+
export type PathValue<
|
|
54
|
+
T,
|
|
55
|
+
Parts extends string[],
|
|
56
|
+
Depth extends number = 5
|
|
57
|
+
> = Depth extends 0
|
|
58
|
+
? never
|
|
59
|
+
: // Distribute over unions in T
|
|
60
|
+
T extends unknown
|
|
61
|
+
? Parts extends [infer K, ...infer Rest]
|
|
62
|
+
? K extends string
|
|
63
|
+
? K extends keyof T
|
|
64
|
+
? Rest extends string[]
|
|
65
|
+
? // unwrap at every step; recursion will also distribute
|
|
66
|
+
ResolveRef<
|
|
67
|
+
Rest["length"] extends 0
|
|
68
|
+
? T[K]
|
|
69
|
+
: PathValue<ResolveRef<T[K]>, Rest, Prev[Depth]>
|
|
70
|
+
>
|
|
71
|
+
: never
|
|
72
|
+
: never
|
|
73
|
+
: never
|
|
74
|
+
: ResolveRef<T>
|
|
75
|
+
: never;
|
|
76
|
+
|
|
77
|
+
export type PathValueOf<
|
|
78
|
+
T,
|
|
79
|
+
P extends string,
|
|
80
|
+
Depth extends number = 6
|
|
81
|
+
> = PathValue<InstanceOf<T>, Split<P>, Depth>;
|
|
@@ -19,11 +19,19 @@ export async function AUSManagerFactory(defs, loggers, socket, emitter = new Eve
|
|
|
19
19
|
const c = new AutoUpdateServerManager(def.class, loggers, socket, getModelForClass(def.class), classers, emitter, def.options);
|
|
20
20
|
i++;
|
|
21
21
|
classers[key] = c;
|
|
22
|
-
await c.loadDB();
|
|
23
22
|
}
|
|
24
23
|
catch (error) {
|
|
25
24
|
loggers.error("Error creating manager: " + key);
|
|
26
25
|
loggers.error(error);
|
|
26
|
+
continue;
|
|
27
|
+
}
|
|
28
|
+
loggers.debug("Loading DB for manager: " + key);
|
|
29
|
+
try {
|
|
30
|
+
classers[key].loadDB();
|
|
31
|
+
}
|
|
32
|
+
catch (error) {
|
|
33
|
+
loggers.error("Error loading DB for manager: " + key);
|
|
34
|
+
loggers.error(error);
|
|
27
35
|
}
|
|
28
36
|
}
|
|
29
37
|
socket.on("connection", async (socket) => {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AutoUpdateServerManagerClass.js","sourceRoot":"","sources":["../AutoUpdateServerManagerClass.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import "reflect-metadata";
|
|
2
2
|
import { Constructor, EventEmitter3, InstanceOf, IsData, LoggersType, LoggersTypeInternal, Paths, PathValueOf } from "./CommonTypes.js";
|
|
3
3
|
import { AutoUpdateManager } from "./AutoUpdateManagerClass.js";
|
|
4
|
-
import { AutoUpdateClientManager } from "./AutoUpdateClientManagerClass.js";
|
|
5
4
|
import { Socket } from "socket.io-client";
|
|
6
5
|
type SocketType = Socket<any, any>;
|
|
7
6
|
export type AutoUpdated<T extends Constructor<any>> = AutoUpdatedClientObject<T> & InstanceOf<T>;
|
|
8
|
-
export declare function createAutoUpdatedClass<C extends Constructor<any>>(classParam: C, socket: SocketType, data: IsData<InstanceType<C>> | string, loggers: LoggersType, autoClassers:
|
|
7
|
+
export declare function createAutoUpdatedClass<C extends Constructor<any>>(classParam: C, socket: SocketType, data: IsData<InstanceType<C>> | string, loggers: LoggersType, autoClassers: AutoUpdateManager<any>, emitter: EventEmitter3, token: string): Promise<AutoUpdated<C>>;
|
|
9
8
|
export declare abstract class AutoUpdatedClientObject<T extends Constructor<any>> {
|
|
10
9
|
protected readonly socket: SocketType;
|
|
11
10
|
protected data: IsData<T>;
|
|
@@ -19,8 +18,9 @@ export declare abstract class AutoUpdatedClientObject<T extends Constructor<any>
|
|
|
19
18
|
protected isLoadingReferences: boolean;
|
|
20
19
|
readonly classProp: Constructor<T>;
|
|
21
20
|
private readonly EmitterID;
|
|
21
|
+
private readonly token;
|
|
22
22
|
private readonly loadShit;
|
|
23
|
-
constructor(socket: SocketType, data: string | IsData<T>, loggers: LoggersType, properties: (keyof T)[], className: string, classProperty: Constructor<T>, autoClasser: AutoUpdateManager<any>, emitter: EventEmitter3);
|
|
23
|
+
constructor(socket: SocketType, data: string | IsData<T>, loggers: LoggersType, properties: (keyof T)[], className: string, classProperty: Constructor<T>, autoClasser: AutoUpdateManager<any>, emitter: EventEmitter3, token?: string);
|
|
24
24
|
protected handleNewObject(data: IsData<T>): void;
|
|
25
25
|
get extractedData(): {
|
|
26
26
|
[K in keyof InstanceType<T>]: InstanceOf<InstanceType<T>>[K];
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import "reflect-metadata";
|
|
2
2
|
import { ObjectId } from "bson";
|
|
3
|
-
export async function createAutoUpdatedClass(classParam, socket, data, loggers, autoClassers, emitter) {
|
|
3
|
+
export async function createAutoUpdatedClass(classParam, socket, data, loggers, autoClassers, emitter, token) {
|
|
4
4
|
if (typeof data !== "string") {
|
|
5
5
|
checkForMissingRefs(data, [], classParam, autoClassers);
|
|
6
6
|
processIsRefProperties(data, classParam.prototype, undefined, [], loggers);
|
|
7
7
|
}
|
|
8
8
|
const props = Reflect.getMetadata("props", classParam.prototype);
|
|
9
9
|
const instance = new (class extends AutoUpdatedClientObject {
|
|
10
|
-
})(socket, data, loggers, props, classParam.name, classParam, autoClassers, emitter);
|
|
10
|
+
})(socket, data, loggers, props, classParam.name, classParam, autoClassers, emitter, token);
|
|
11
11
|
await instance.isLoadedAsync();
|
|
12
12
|
return instance;
|
|
13
13
|
}
|
|
@@ -30,6 +30,7 @@ export class AutoUpdatedClientObject {
|
|
|
30
30
|
isLoadingReferences = false;
|
|
31
31
|
classProp;
|
|
32
32
|
EmitterID = new ObjectId().toHexString();
|
|
33
|
+
token;
|
|
33
34
|
loadShit = async () => {
|
|
34
35
|
if (this.isLoaded()) {
|
|
35
36
|
try {
|
|
@@ -51,7 +52,8 @@ export class AutoUpdatedClientObject {
|
|
|
51
52
|
this.isLoadingReferences = false;
|
|
52
53
|
});
|
|
53
54
|
};
|
|
54
|
-
constructor(socket, data, loggers, properties, className, classProperty, autoClasser, emitter) {
|
|
55
|
+
constructor(socket, data, loggers, properties, className, classProperty, autoClasser, emitter, token = "") {
|
|
56
|
+
this.token = token;
|
|
55
57
|
this.emitter = emitter;
|
|
56
58
|
this.classProp = classProperty;
|
|
57
59
|
this.isLoadingReferences = true;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AutoUpdatedClientObjectClass.js","sourceRoot":"","sources":["../AutoUpdatedClientObjectClass.ts"],"names":[],"mappings":"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"}
|