@prestizni-software/client-dem 0.5.8 → 0.5.11
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/dist/AutoUpdateClientManagerClass.d.ts +47 -26
- package/dist/AutoUpdateClientManagerClass.js +261 -158
- package/dist/AutoUpdateClientManagerClass.js.map +1 -1
- package/dist/AutoUpdateManagerClass.d.ts +33 -18
- package/dist/AutoUpdateManagerClass.js +15 -27
- package/dist/AutoUpdateManagerClass.js.map +1 -1
- package/dist/AutoUpdatedClientObjectClass.d.ts +33 -39
- package/dist/AutoUpdatedClientObjectClass.js +206 -309
- package/dist/AutoUpdatedClientObjectClass.js.map +1 -1
- package/dist/CommonTypes.d.ts +89 -36
- package/dist/CommonTypes.js +0 -2
- package/dist/CommonTypes.js.map +1 -1
- package/dist/client.d.ts +5 -1
- package/dist/client.js +5 -10
- package/dist/client.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
|
@@ -1,29 +1,50 @@
|
|
|
1
|
-
import { AutoUpdatedClientObject, DEMClientCallbacks } from "./AutoUpdatedClientObjectClass.js";
|
|
2
|
-
import { AutoUpdateManager } from "./AutoUpdateManagerClass.js";
|
|
3
|
-
import { Constructor, EventEmitter3, IsData, LoggersType, MongoId, InstanceOf, IDEMSocket } from "./CommonTypes.js";
|
|
4
1
|
import { Socket } from "socket.io-client";
|
|
5
|
-
|
|
6
|
-
|
|
2
|
+
import { AutoUpdateManager } from "./AutoUpdateManagerClass";
|
|
3
|
+
import { DEMClientCallbacks } from "./AutoUpdatedClientObjectClass";
|
|
4
|
+
import { Constructor, IsData, LoggersType, IAutoUpdatedClientObjectBase, MongoId, IAutoUpdateManager } from "./CommonTypes";
|
|
5
|
+
import { EventEmitter } from "eventemitter3";
|
|
6
|
+
export type WrappedInstances<T extends Record<string, Constructor<IAutoUpdatedClientObjectBase>>> = {
|
|
7
|
+
[K in keyof T]: AutoUpdateClientManager<InstanceType<T[K]>, WrappedInstances<T>>;
|
|
7
8
|
};
|
|
8
|
-
export
|
|
9
|
-
[K in keyof T]:
|
|
10
|
-
}
|
|
11
|
-
export declare
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
9
|
+
export declare function AUCManagerFactory<T extends Record<string, Constructor<IAutoUpdatedClientObjectBase>>>(defs: T, loggers: LoggersType, socket: Socket, doDebug?: boolean, emitter?: EventEmitter, callbacks?: Partial<{
|
|
10
|
+
[K in keyof T]: Partial<DEMClientCallbacks<any>>;
|
|
11
|
+
} & Partial<DEMClientCallbacks<IAutoUpdatedClientObjectBase>>>): Promise<WrappedInstances<T>>;
|
|
12
|
+
export declare class AutoUpdateClientManager<T extends IAutoUpdatedClientObjectBase, M extends Record<string, IAutoUpdateManager<any>> = Record<string, IAutoUpdateManager<any>>> extends AutoUpdateManager<T, M> {
|
|
13
|
+
protected objects_: {
|
|
14
|
+
[_id: string]: T;
|
|
15
|
+
};
|
|
16
|
+
readonly managers: M;
|
|
17
|
+
callbacks: DEMClientCallbacks<any>;
|
|
18
|
+
readonly socket: Socket;
|
|
19
|
+
totalObjects: number;
|
|
20
|
+
loadedObjects: number;
|
|
21
|
+
constructor(classParam: Constructor<T>, className: string, socket: Socket, loggers: LoggersType, managers: M, emitter: EventEmitter, callbacks: DEMClientCallbacks<any>);
|
|
22
|
+
private startSocketListeners;
|
|
23
|
+
loadFromServer(t?: {
|
|
24
|
+
s: number;
|
|
25
|
+
f: number;
|
|
26
|
+
}): Promise<void>;
|
|
27
|
+
private checkLoadability;
|
|
28
|
+
getObject(_id?: MongoId): (T & {
|
|
29
|
+
parentManager: IAutoUpdateManager<T> & {
|
|
30
|
+
cache: Cache;
|
|
31
|
+
managers: M;
|
|
32
|
+
};
|
|
33
|
+
}) | null | undefined;
|
|
34
|
+
get objects(): {
|
|
35
|
+
[_id: string]: T & {
|
|
36
|
+
parentManager: IAutoUpdateManager<T> & {
|
|
37
|
+
cache: Cache;
|
|
38
|
+
managers: M;
|
|
39
|
+
};
|
|
40
|
+
};
|
|
41
|
+
};
|
|
42
|
+
get objectsAsArray(): (T & {
|
|
43
|
+
parentManager: IAutoUpdateManager<T> & {
|
|
44
|
+
cache: Cache;
|
|
45
|
+
managers: M;
|
|
46
|
+
};
|
|
47
|
+
})[];
|
|
48
|
+
handleGetMissingObject(_id: MongoId): Promise<T>;
|
|
49
|
+
createObject(data: Partial<IsData<T>>): Promise<T>;
|
|
29
50
|
}
|
|
@@ -1,70 +1,247 @@
|
|
|
1
|
-
import { AutoUpdateManager } from "./AutoUpdateManagerClass
|
|
2
|
-
import {
|
|
1
|
+
import { AutoUpdateManager } from "./AutoUpdateManagerClass";
|
|
2
|
+
import { globalCache } from "./CommonTypes";
|
|
3
3
|
import { EventEmitter } from "eventemitter3";
|
|
4
|
-
export async function AUCManagerFactory(defs, loggers, socket, doDebug = false, emitter = new EventEmitter()) {
|
|
4
|
+
export async function AUCManagerFactory(defs, loggers, socket, doDebug = false, emitter = new EventEmitter(), callbacks = {}) {
|
|
5
|
+
const defaultCallbacks = {
|
|
6
|
+
new: callbacks.new ?? ((_x) => { }),
|
|
7
|
+
update: callbacks.update ?? ((_x, _y) => { }),
|
|
8
|
+
delete: callbacks.delete ?? ((_x) => { }),
|
|
9
|
+
progress: callbacks.progress ?? ((_x) => { }),
|
|
10
|
+
};
|
|
11
|
+
if (!doDebug) {
|
|
12
|
+
loggers.debug = (_) => { };
|
|
13
|
+
}
|
|
14
|
+
let wholeProgress = 0;
|
|
15
|
+
let numberOfManagers = Object.keys(defs).length || 1;
|
|
16
|
+
const progressUpdater = callbacks.progress ?? ((_x) => { });
|
|
17
|
+
const innerProgressUpdater = (fraction) => {
|
|
18
|
+
progressUpdater(wholeProgress + (numberOfManagers == 0 ? 1 : fraction / numberOfManagers));
|
|
19
|
+
if (fraction == 1)
|
|
20
|
+
wholeProgress += numberOfManagers == 0 ? 1 : fraction / numberOfManagers;
|
|
21
|
+
};
|
|
5
22
|
const managers = {};
|
|
23
|
+
const startStartTime = Date.now();
|
|
24
|
+
let startTime = Date.now();
|
|
6
25
|
for (const key in defs) {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
const individualStartup = Promise.all(Object.entries(managers).map(([key, manager]) => {
|
|
14
|
-
return new Promise((res) => {
|
|
15
|
-
if (!socket || typeof socket.emit !== "function")
|
|
16
|
-
return res();
|
|
17
|
-
socket.emit(EVENT_STARTUP + key, null, async (response) => {
|
|
18
|
-
if (response.success && response.data) {
|
|
19
|
-
const data = response.data.ids ||
|
|
20
|
-
(Array.isArray(response.data) ? response.data : []);
|
|
21
|
-
await manager.preLoad(data);
|
|
22
|
-
}
|
|
23
|
-
else if (!response.success) {
|
|
24
|
-
loggers?.error?.("Error starting up " + key + ": " + response.message);
|
|
25
|
-
}
|
|
26
|
-
res();
|
|
26
|
+
try {
|
|
27
|
+
const Model = defs[key];
|
|
28
|
+
const c = new AutoUpdateClientManager(Model, key, socket, loggers, managers, emitter, {
|
|
29
|
+
...defaultCallbacks,
|
|
30
|
+
...callbacks[key],
|
|
31
|
+
progress: innerProgressUpdater,
|
|
27
32
|
});
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
+
managers[key] = c;
|
|
34
|
+
}
|
|
35
|
+
catch (error) {
|
|
36
|
+
if (error instanceof Error && error.message.includes("Local type does not match server type for manager"))
|
|
37
|
+
throw error;
|
|
38
|
+
let message = `Creating manager for: ${key}`;
|
|
39
|
+
message += "\n Error creating manager: " + key;
|
|
40
|
+
message += "\n " + (error instanceof Error ? error.message : String(error));
|
|
41
|
+
loggers.error?.(message);
|
|
42
|
+
if (error instanceof Error && error.stack)
|
|
43
|
+
loggers.error?.(error.stack);
|
|
44
|
+
continue;
|
|
45
|
+
}
|
|
33
46
|
}
|
|
47
|
+
loggers.debug?.("Created all managers in " + (Date.now() - startTime) + "ms");
|
|
48
|
+
startTime = Date.now();
|
|
49
|
+
const loadPromises = Object.keys(defs).map(async (key) => {
|
|
50
|
+
let temp2 = { s: Date.now(), f: 0 };
|
|
51
|
+
try {
|
|
52
|
+
const manager = managers[key];
|
|
53
|
+
if (!manager) {
|
|
54
|
+
throw new Error(`Manager ${key} was not created due to previous error`);
|
|
55
|
+
}
|
|
56
|
+
await manager.loadFromServer(temp2);
|
|
57
|
+
loggers.debug?.("Loaded data from server for manager: " +
|
|
58
|
+
key +
|
|
59
|
+
" in " +
|
|
60
|
+
(temp2.f - temp2.s) +
|
|
61
|
+
"ms");
|
|
62
|
+
}
|
|
63
|
+
catch (error) {
|
|
64
|
+
if (error instanceof Error && error.message.includes("Local type does not match server type for manager"))
|
|
65
|
+
throw error;
|
|
66
|
+
let message = "Error loading data from server for manager: " + key;
|
|
67
|
+
message += "\n " + (error instanceof Error ? error.message : String(error));
|
|
68
|
+
message += "\n Failed in " + (temp2.f - temp2.s) + "ms";
|
|
69
|
+
loggers.error?.(message);
|
|
70
|
+
if (error instanceof Error && error.stack)
|
|
71
|
+
loggers.error?.(message + "\n" + error.stack);
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
await Promise.all(loadPromises);
|
|
75
|
+
loggers.debug?.("Loaded data from server for all managers in " +
|
|
76
|
+
(Date.now() - startTime) +
|
|
77
|
+
"ms");
|
|
78
|
+
loggers.info?.("Loaded all managers in " + (Date.now() - startStartTime) + "ms");
|
|
34
79
|
return managers;
|
|
35
80
|
}
|
|
36
81
|
export class AutoUpdateClientManager extends AutoUpdateManager {
|
|
37
82
|
objects_ = {};
|
|
83
|
+
managers;
|
|
38
84
|
callbacks;
|
|
85
|
+
socket;
|
|
86
|
+
totalObjects = 0;
|
|
87
|
+
loadedObjects = 0;
|
|
39
88
|
constructor(classParam, className, socket, loggers, managers, emitter, callbacks) {
|
|
40
89
|
super(classParam, className, socket, loggers, managers, emitter);
|
|
41
|
-
this.
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
delete: () => { },
|
|
45
|
-
progress: () => { },
|
|
46
|
-
};
|
|
90
|
+
this.socket = socket;
|
|
91
|
+
this.managers = managers;
|
|
92
|
+
this.callbacks = callbacks;
|
|
47
93
|
}
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
94
|
+
startSocketListeners() {
|
|
95
|
+
this.socket.on("new" + this.className, async (id) => {
|
|
96
|
+
this.loggers.debug("Applying new object from manager " + this.className + " - " + id);
|
|
97
|
+
try {
|
|
98
|
+
this.totalObjects += 1;
|
|
99
|
+
await this.handleGetMissingObject(id);
|
|
100
|
+
this.loadedObjects += 1;
|
|
101
|
+
}
|
|
102
|
+
catch (error) {
|
|
103
|
+
this.loggers.error("Error loading object " +
|
|
104
|
+
id +
|
|
105
|
+
" from manager " +
|
|
106
|
+
this.className +
|
|
107
|
+
" - " +
|
|
108
|
+
(error instanceof Error ? error.message : String(error)));
|
|
109
|
+
if (error instanceof Error && error.stack)
|
|
110
|
+
this.loggers.error(error.stack);
|
|
111
|
+
}
|
|
112
|
+
});
|
|
113
|
+
this.socket.on("delete" + this.className, async (id) => {
|
|
114
|
+
this.loggers.debug("Applying object deletion from manager " + this.className + " - " + id);
|
|
115
|
+
try {
|
|
116
|
+
this.totalObjects -= 1;
|
|
117
|
+
this.loadedObjects -= 1;
|
|
118
|
+
await this.deleteObject(id);
|
|
119
|
+
}
|
|
120
|
+
catch (error) {
|
|
121
|
+
this.loggers.error("Error applying object deletion from manager " +
|
|
122
|
+
this.className +
|
|
123
|
+
" - " +
|
|
124
|
+
id);
|
|
125
|
+
this.loggers.error(error instanceof Error ? error.message : String(error));
|
|
126
|
+
if (error instanceof Error && error.stack)
|
|
127
|
+
this.loggers.error(error.stack);
|
|
128
|
+
}
|
|
59
129
|
});
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
130
|
+
}
|
|
131
|
+
async loadFromServer(t) {
|
|
132
|
+
await new Promise((resolve, reject) => {
|
|
133
|
+
this.socket.emit("startup" + this.className, null, async (res) => {
|
|
134
|
+
if (!res.success) {
|
|
135
|
+
this.loggers.error("Error loading ids from server for manager");
|
|
136
|
+
this.loggers.error(res.message);
|
|
137
|
+
reject(new Error(res.message));
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
const data = res.data;
|
|
141
|
+
let extraProperties = [];
|
|
142
|
+
for (const property of this.properties) {
|
|
143
|
+
if (typeof property !== "string")
|
|
144
|
+
throw new Error("Only string keys allowed. Not this shit: " + String(property));
|
|
145
|
+
if (property === "_id")
|
|
146
|
+
continue;
|
|
147
|
+
if (data.properties.includes(property))
|
|
148
|
+
data.properties.splice(data.properties.indexOf(property), 1);
|
|
149
|
+
else
|
|
150
|
+
extraProperties.push(property);
|
|
151
|
+
}
|
|
152
|
+
let { allowedToLoad, errorMessage } = this.checkLoadability(extraProperties, data);
|
|
153
|
+
if (!allowedToLoad) {
|
|
154
|
+
this.loggers.error?.(errorMessage);
|
|
155
|
+
reject(new Error(errorMessage));
|
|
156
|
+
return;
|
|
157
|
+
}
|
|
158
|
+
this.loggers.debug("Loading manager DB " +
|
|
159
|
+
this.className +
|
|
160
|
+
" - [" +
|
|
161
|
+
data.ids.length +
|
|
162
|
+
"] entries");
|
|
163
|
+
if (this.loggers.debug && this.loggers.debug.toString().length > 15) {
|
|
164
|
+
this.loggers.debug(data.ids.join(", "));
|
|
165
|
+
}
|
|
166
|
+
this.totalObjects = data.ids.length;
|
|
167
|
+
for (const id of data.ids) {
|
|
168
|
+
try {
|
|
169
|
+
this.objects_[id] = new this.classParam(this.classParam, this.socket, id, this.loggers, this.className, this, this.callbacks, this.emitter);
|
|
170
|
+
globalCache.objects[id] = {
|
|
171
|
+
className: this.className,
|
|
172
|
+
object: this.objects_[id],
|
|
173
|
+
};
|
|
174
|
+
}
|
|
175
|
+
catch (error) {
|
|
176
|
+
this.loggers.error("Error loading object " +
|
|
177
|
+
id +
|
|
178
|
+
" from manager " +
|
|
179
|
+
this.className +
|
|
180
|
+
" - " +
|
|
181
|
+
(error instanceof Error ? error.message : String(error)));
|
|
182
|
+
if (error instanceof Error && error.stack)
|
|
183
|
+
this.loggers.error(error.stack);
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
const objectPromises = Object.keys(this.objects_).map(async (id) => {
|
|
187
|
+
const obj = this.objects_[id];
|
|
188
|
+
try {
|
|
189
|
+
await obj.isPreLoadedAsync();
|
|
190
|
+
await obj.loadMissingReferences();
|
|
191
|
+
this.loadedObjects += 1;
|
|
192
|
+
if (this.totalObjects < 100 || this.loadedObjects % Math.ceil(this.totalObjects / 100) === 0 || this.loadedObjects === this.totalObjects) {
|
|
193
|
+
this.callbacks.progress(this.loadedObjects / this.totalObjects);
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
catch (error) {
|
|
197
|
+
this.loggers.error("Error loading object " +
|
|
198
|
+
id +
|
|
199
|
+
" from manager " +
|
|
200
|
+
this.className +
|
|
201
|
+
" - " +
|
|
202
|
+
(error instanceof Error ? error.message : String(error)));
|
|
203
|
+
if (error instanceof Error && error.stack)
|
|
204
|
+
this.loggers.error(error.stack);
|
|
205
|
+
}
|
|
206
|
+
});
|
|
207
|
+
await Promise.all(objectPromises);
|
|
208
|
+
this.loggers.info("Loaded " + this.className + " - [" + Object.keys(this.objects_).length + "] entries");
|
|
209
|
+
this.startSocketListeners();
|
|
210
|
+
this.isLoaded_ = true;
|
|
211
|
+
resolve();
|
|
212
|
+
});
|
|
213
|
+
});
|
|
214
|
+
if (t)
|
|
215
|
+
t.f = Date.now();
|
|
216
|
+
}
|
|
217
|
+
checkLoadability(extraProperties, data) {
|
|
218
|
+
let allowedToLoad = true;
|
|
219
|
+
let errorMessage = "Local type does not match server type for manager " + this.className;
|
|
220
|
+
if (extraProperties.length > 0) {
|
|
221
|
+
allowedToLoad = false;
|
|
222
|
+
errorMessage +=
|
|
223
|
+
"\n\nLocal type has " +
|
|
224
|
+
(extraProperties.length > 1
|
|
225
|
+
? "these extra properties"
|
|
226
|
+
: "this extra property") +
|
|
227
|
+
":\n" +
|
|
228
|
+
extraProperties.join("\n");
|
|
229
|
+
}
|
|
230
|
+
const filteredProperties = data.properties.filter(p => p !== "_id");
|
|
231
|
+
if (filteredProperties.length > 0) {
|
|
232
|
+
allowedToLoad = false;
|
|
233
|
+
errorMessage +=
|
|
234
|
+
"\n\nLocal type is missing " +
|
|
235
|
+
(filteredProperties.length > 1 ? "these properties" : "this property") +
|
|
236
|
+
":\n" +
|
|
237
|
+
filteredProperties.join("\n");
|
|
238
|
+
}
|
|
239
|
+
return { allowedToLoad, errorMessage };
|
|
63
240
|
}
|
|
64
241
|
getObject(_id) {
|
|
65
|
-
if (_id
|
|
242
|
+
if (!_id)
|
|
66
243
|
return null;
|
|
67
|
-
return this.objects_[_id] || undefined;
|
|
244
|
+
return this.objects_[_id.toString()] || undefined;
|
|
68
245
|
}
|
|
69
246
|
get objects() {
|
|
70
247
|
return this.objects_;
|
|
@@ -73,121 +250,47 @@ export class AutoUpdateClientManager extends AutoUpdateManager {
|
|
|
73
250
|
return Object.values(this.objects_);
|
|
74
251
|
}
|
|
75
252
|
async handleGetMissingObject(_id) {
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
object: obj,
|
|
96
|
-
};
|
|
97
|
-
await obj.waitForPreloaded?.();
|
|
98
|
-
try {
|
|
99
|
-
await obj.resolveReferences();
|
|
100
|
-
}
|
|
101
|
-
catch (e) {
|
|
102
|
-
this.loggers.error(`Error resolving references for missing object ${objId}: ${e}`);
|
|
103
|
-
}
|
|
104
|
-
resolve(obj);
|
|
105
|
-
}
|
|
106
|
-
else {
|
|
107
|
-
reject(new Error(res.message || "Non existent or not accesable."));
|
|
108
|
-
}
|
|
109
|
-
});
|
|
110
|
-
});
|
|
253
|
+
const _idStr = _id.toString();
|
|
254
|
+
if (this.getObject(_idStr))
|
|
255
|
+
return this.getObject(_idStr);
|
|
256
|
+
if (!_idStr)
|
|
257
|
+
throw new Error("No id.");
|
|
258
|
+
if (!this.managers)
|
|
259
|
+
throw new Error(`No managers.`);
|
|
260
|
+
if (this.objects_[_idStr])
|
|
261
|
+
return this.objects_[_idStr];
|
|
262
|
+
const object = new this.classParam(this.classParam, this.socket, _idStr, this.loggers, this.className, this, this.callbacks, this.emitter);
|
|
263
|
+
await object.waitForPreloaded();
|
|
264
|
+
if (object.loadError)
|
|
265
|
+
throw new Error(object.loadError);
|
|
266
|
+
this.objects_[object._id.toString()] = object;
|
|
267
|
+
globalCache.objects[object._id.toString()] = { className: this.className, object: object };
|
|
268
|
+
await object.isPreLoadedAsync();
|
|
269
|
+
await object.loadMissingReferences();
|
|
270
|
+
this.callbacks.new(object);
|
|
271
|
+
return object;
|
|
111
272
|
}
|
|
112
273
|
async createObject(data) {
|
|
113
|
-
|
|
274
|
+
if (!this.managers)
|
|
275
|
+
throw new Error(`No managers.`);
|
|
276
|
+
this.loggers.debug("Creating new object from manager " + this.className);
|
|
114
277
|
try {
|
|
115
|
-
|
|
116
|
-
await
|
|
117
|
-
const id =
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
this.loggers.error(`Error resolving references for created object ${id}: ${e}`);
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
await this.callbacks.new(obj);
|
|
129
|
-
return obj;
|
|
278
|
+
const object = new this.classParam(this.classParam, this.socket, data, this.loggers, this.className, this, this.callbacks, this.emitter);
|
|
279
|
+
await object.waitForPreloaded();
|
|
280
|
+
const id = object._id.toString();
|
|
281
|
+
this.objects_[id] = object;
|
|
282
|
+
globalCache.objects[id] = { className: this.className, object: object };
|
|
283
|
+
await this.objects_[id].isPreLoadedAsync();
|
|
284
|
+
await this.objects_[id].loadMissingReferences();
|
|
285
|
+
await this.objects_[id].contactChildren();
|
|
286
|
+
this.callbacks.new(this.objects_[id]);
|
|
287
|
+
return this.objects_[id];
|
|
130
288
|
}
|
|
131
289
|
catch (error) {
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
this.loggers?.error?.("Error creating object: " + error.message);
|
|
290
|
+
this.loggers.error("Error creating new object from manager " + this.className);
|
|
291
|
+
this.loggers.error(error instanceof Error ? error.message : String(error));
|
|
135
292
|
throw error;
|
|
136
293
|
}
|
|
137
294
|
}
|
|
138
|
-
startSocketListeners() {
|
|
139
|
-
if (!this.socket || typeof this.socket.on !== "function")
|
|
140
|
-
return;
|
|
141
|
-
this.socket.on(EVENT_NEW + this.className, async (data) => {
|
|
142
|
-
const id = typeof data === "string" ? data : data._id?.toString();
|
|
143
|
-
if (!id)
|
|
144
|
-
return;
|
|
145
|
-
if (this.objects_[id])
|
|
146
|
-
return;
|
|
147
|
-
const objData = typeof data === "string" ? { _id: id } : data;
|
|
148
|
-
const obj = new this.classParam(this.classParam, this.socket, objData, this.loggers, this.className, this, this.callbacks, this.emitter);
|
|
149
|
-
this.objects_[id] = obj;
|
|
150
|
-
globalCache.objects[id] = { className: this.className, object: obj };
|
|
151
|
-
await obj.waitForPreloaded?.();
|
|
152
|
-
try {
|
|
153
|
-
await obj.resolveReferences();
|
|
154
|
-
}
|
|
155
|
-
catch (e) {
|
|
156
|
-
this.loggers.error(`Error resolving references for new object ${id}: ${e}`);
|
|
157
|
-
}
|
|
158
|
-
await this.callbacks.new(obj);
|
|
159
|
-
});
|
|
160
|
-
this.socket.on(EVENT_DELETE + this.className, async (idStr) => {
|
|
161
|
-
await this.deleteObject(idStr);
|
|
162
|
-
});
|
|
163
|
-
}
|
|
164
|
-
async deleteObject(_id) {
|
|
165
|
-
const idStr = typeof _id === "string" ? _id : _id.id.toString();
|
|
166
|
-
const obj = this.objects_[idStr];
|
|
167
|
-
if (obj) {
|
|
168
|
-
let res = {
|
|
169
|
-
success: true,
|
|
170
|
-
message: "Deleted",
|
|
171
|
-
};
|
|
172
|
-
if (typeof obj.destroy === "function") {
|
|
173
|
-
res = await obj.destroy(true);
|
|
174
|
-
}
|
|
175
|
-
if (res.success) {
|
|
176
|
-
delete this.objects_[idStr];
|
|
177
|
-
delete globalCache.objects[idStr];
|
|
178
|
-
await this.callbacks.delete(obj);
|
|
179
|
-
}
|
|
180
|
-
return res;
|
|
181
|
-
}
|
|
182
|
-
return { success: true, message: "Already gone" };
|
|
183
|
-
}
|
|
184
|
-
async loadFromServer() {
|
|
185
|
-
this.loggers?.error?.("loadFromServer property mismatch");
|
|
186
|
-
throw new Error("Property mismatch or not implemented");
|
|
187
|
-
}
|
|
188
|
-
async close() {
|
|
189
|
-
Object.values(this.objects_).forEach((obj) => obj.destroyImmediate());
|
|
190
|
-
this.objects_ = {};
|
|
191
|
-
}
|
|
192
295
|
}
|
|
193
296
|
//# sourceMappingURL=AutoUpdateClientManagerClass.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AutoUpdateClientManagerClass.js","sourceRoot":"","sources":["../AutoUpdateClientManagerClass.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AutoUpdateClientManagerClass.js","sourceRoot":"","sources":["../AutoUpdateClientManagerClass.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,20 +1,23 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { Constructor, EventEmitter3, LoggersType, Cache, IsData, MongoId, IDEMSocket } from "./CommonTypes.js";
|
|
1
|
+
import { IAutoUpdatedClientObjectBase, MongoId, IsData, IAutoUpdateManager, Constructor, EventEmitter3, LoggersType, DEMCache } from "./CommonTypes";
|
|
3
2
|
import "reflect-metadata";
|
|
4
|
-
export declare abstract class AutoUpdateManager<T extends
|
|
5
|
-
protected abstract objects_:
|
|
3
|
+
export declare abstract class AutoUpdateManager<T extends IAutoUpdatedClientObjectBase, M extends Record<string, IAutoUpdateManager<any>> = Record<string, IAutoUpdateManager<any>>> implements IAutoUpdateManager<T> {
|
|
4
|
+
protected abstract objects_: {
|
|
5
|
+
[_id: string]: T;
|
|
6
|
+
};
|
|
6
7
|
protected isLoaded_: boolean;
|
|
7
|
-
readonly socket:
|
|
8
|
+
readonly socket: unknown;
|
|
8
9
|
protected classParam: Constructor<T>;
|
|
9
10
|
protected properties: string[];
|
|
10
11
|
readonly className: string;
|
|
11
|
-
readonly cache:
|
|
12
|
+
readonly cache: DEMCache;
|
|
12
13
|
readonly managers: M;
|
|
13
14
|
protected preloaded: boolean;
|
|
14
|
-
protected waitingToResolveReferences:
|
|
15
|
+
protected waitingToResolveReferences: {
|
|
16
|
+
[_id: string]: string;
|
|
17
|
+
};
|
|
15
18
|
protected loggers: LoggersType;
|
|
16
19
|
protected emitter: EventEmitter3;
|
|
17
|
-
constructor(classParam: Constructor<T>, className: string, socket:
|
|
20
|
+
constructor(classParam: Constructor<T>, className: string, socket: unknown, loggers: LoggersType, managers: M, emitter: EventEmitter3);
|
|
18
21
|
get isLoaded(): boolean;
|
|
19
22
|
close(): void;
|
|
20
23
|
loadReferences(): Promise<void>;
|
|
@@ -23,14 +26,26 @@ export declare abstract class AutoUpdateManager<T extends AutoUpdatedClientObjec
|
|
|
23
26
|
message: string;
|
|
24
27
|
}>;
|
|
25
28
|
get objectIDs(): string[];
|
|
26
|
-
abstract handleGetMissingObject(_id:
|
|
27
|
-
abstract createObject(data:
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
abstract get objects():
|
|
35
|
-
|
|
29
|
+
abstract handleGetMissingObject(_id: MongoId): Promise<T>;
|
|
30
|
+
abstract createObject(data: Partial<IsData<T>>): Promise<T>;
|
|
31
|
+
abstract getObject(_id?: MongoId): (T & {
|
|
32
|
+
parentManager: IAutoUpdateManager<T> & {
|
|
33
|
+
cache: DEMCache;
|
|
34
|
+
managers: M;
|
|
35
|
+
};
|
|
36
|
+
}) | null | undefined;
|
|
37
|
+
abstract get objects(): {
|
|
38
|
+
[_id: string]: T & {
|
|
39
|
+
parentManager: IAutoUpdateManager<T> & {
|
|
40
|
+
cache: DEMCache;
|
|
41
|
+
managers: M;
|
|
42
|
+
};
|
|
43
|
+
};
|
|
44
|
+
};
|
|
45
|
+
abstract get objectsAsArray(): (T & {
|
|
46
|
+
parentManager: IAutoUpdateManager<T> & {
|
|
47
|
+
cache: DEMCache;
|
|
48
|
+
managers: M;
|
|
49
|
+
};
|
|
50
|
+
})[];
|
|
36
51
|
}
|