@prestizni-software/server-dem 0.5.14 → 0.5.16
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/AutoUpdateManagerClass.d.ts +12 -11
- package/dist/AutoUpdateManagerClass.js +8 -13
- package/dist/AutoUpdateManagerClass.js.map +1 -1
- package/dist/AutoUpdateServerManagerClass.d.ts +36 -28
- package/dist/AutoUpdateServerManagerClass.js +69 -131
- package/dist/AutoUpdateServerManagerClass.js.map +1 -1
- package/dist/AutoUpdatedClientObjectClass.d.ts +33 -31
- package/dist/AutoUpdatedClientObjectClass.js +45 -83
- package/dist/AutoUpdatedClientObjectClass.js.map +1 -1
- package/dist/AutoUpdatedServerObjectClass.d.ts +17 -11
- package/dist/AutoUpdatedServerObjectClass.js +98 -101
- package/dist/AutoUpdatedServerObjectClass.js.map +1 -1
- package/dist/CommonTypes.d.ts +32 -77
- package/dist/CommonTypes.js.map +1 -1
- package/dist/CommonTypes_server.d.ts +3 -3
- package/dist/server.d.ts +6 -5
- package/dist/server.js +6 -5
- package/dist/server.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
|
@@ -1,34 +1,35 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { AutoUpdatedClientObject } from "./AutoUpdatedClientObjectClass";
|
|
2
|
+
import { Constructor, EventEmitter3, LoggersType, Cache } from "./CommonTypes";
|
|
2
3
|
import "reflect-metadata";
|
|
3
|
-
export declare abstract class AutoUpdateManager<T extends
|
|
4
|
+
export declare abstract class AutoUpdateManager<T extends AutoUpdatedClientObject<any>> {
|
|
4
5
|
protected abstract objects_: {
|
|
5
6
|
[_id: string]: T;
|
|
6
7
|
};
|
|
7
8
|
protected isLoaded_: boolean;
|
|
8
|
-
readonly socket:
|
|
9
|
+
readonly socket: any;
|
|
9
10
|
protected classParam: Constructor<T>;
|
|
10
|
-
protected properties:
|
|
11
|
+
protected properties: (keyof any)[];
|
|
11
12
|
readonly className: string;
|
|
12
|
-
readonly cache:
|
|
13
|
-
readonly managers:
|
|
13
|
+
readonly cache: Cache<any>;
|
|
14
|
+
readonly managers: Record<string, AutoUpdateManager<AutoUpdatedClientObject<any>>>;
|
|
14
15
|
protected preloaded: boolean;
|
|
15
16
|
protected waitingToResolveReferences: {
|
|
16
17
|
[_id: string]: string;
|
|
17
18
|
};
|
|
18
19
|
protected loggers: LoggersType;
|
|
19
20
|
protected emitter: EventEmitter3;
|
|
20
|
-
constructor(classParam: Constructor<T>, className: string, socket:
|
|
21
|
+
constructor(classParam: Constructor<T>, className: string, socket: any, loggers: LoggersType, managers: Record<string, AutoUpdateManager<AutoUpdatedClientObject<any>>>, emitter: EventEmitter3);
|
|
21
22
|
get isLoaded(): boolean;
|
|
22
23
|
close(): void;
|
|
23
24
|
loadReferences(): Promise<void>;
|
|
24
|
-
deleteObject(_id:
|
|
25
|
+
deleteObject(_id: string): Promise<{
|
|
25
26
|
success: boolean;
|
|
26
27
|
message: string;
|
|
27
28
|
}>;
|
|
28
29
|
get objectIDs(): string[];
|
|
29
|
-
abstract handleGetMissingObject(_id:
|
|
30
|
-
abstract createObject(data: Omit<
|
|
31
|
-
abstract getObject(_id?:
|
|
30
|
+
abstract handleGetMissingObject(_id: string): Promise<T>;
|
|
31
|
+
abstract createObject(data: Omit<any, "_id">): Promise<T>;
|
|
32
|
+
abstract getObject(_id?: string): T | null | undefined;
|
|
32
33
|
abstract get objects(): {
|
|
33
34
|
[_id: string]: T;
|
|
34
35
|
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { globalCache, } from "./CommonTypes
|
|
1
|
+
import { globalCache, } from "./CommonTypes";
|
|
2
2
|
import "reflect-metadata";
|
|
3
3
|
export class AutoUpdateManager {
|
|
4
4
|
isLoaded_ = false;
|
|
@@ -20,16 +20,13 @@ export class AutoUpdateManager {
|
|
|
20
20
|
};
|
|
21
21
|
emitter;
|
|
22
22
|
constructor(classParam, className, socket, loggers, managers, emitter) {
|
|
23
|
-
console.log("DEBUG: AutoUpdateManager constructor, className=" +
|
|
24
|
-
className +
|
|
25
|
-
", socket keys=" +
|
|
26
|
-
Object.keys(socket || {}).join(","));
|
|
23
|
+
console.log("DEBUG: AutoUpdateManager constructor, className=" + className + ", socket keys=" + Object.keys(socket || {}).join(","));
|
|
27
24
|
this.className = className;
|
|
28
25
|
this.managers = managers;
|
|
29
26
|
this.emitter = emitter;
|
|
30
27
|
this.socket = socket;
|
|
31
28
|
this.classParam = classParam;
|
|
32
|
-
this.properties = Reflect.getMetadata("props", classParam.prototype)
|
|
29
|
+
this.properties = Reflect.getMetadata("props", classParam.prototype);
|
|
33
30
|
this.loggers.debug = (s) => loggers.debug?.("[DEM - " + className + " MANAGER] " + s);
|
|
34
31
|
this.loggers.info = (s) => loggers.info?.("[DEM - " + className + " MANAGER] " + s);
|
|
35
32
|
this.loggers.error = (s) => loggers.error?.("[DEM - " + className + " MANAGER] " + s);
|
|
@@ -43,8 +40,7 @@ export class AutoUpdateManager {
|
|
|
43
40
|
delete this.objects_[id];
|
|
44
41
|
delete globalCache.objects[id];
|
|
45
42
|
}
|
|
46
|
-
this.socket.disconnect?.() ??
|
|
47
|
-
this.socket.disconnectSockets?.(true);
|
|
43
|
+
this.socket.disconnect?.() ?? this.socket.disconnectSockets?.(true);
|
|
48
44
|
this.loggers.info("Goodbye, see you next time!");
|
|
49
45
|
}
|
|
50
46
|
async loadReferences() {
|
|
@@ -54,14 +50,13 @@ export class AutoUpdateManager {
|
|
|
54
50
|
this.isLoaded_ = true;
|
|
55
51
|
}
|
|
56
52
|
async deleteObject(_id) {
|
|
57
|
-
const
|
|
58
|
-
const o = this.objects_[_idStr];
|
|
53
|
+
const o = this.objects_[_id];
|
|
59
54
|
const res = await o?.destroy(true);
|
|
60
55
|
if (res?.success) {
|
|
61
|
-
delete this.objects_[
|
|
62
|
-
delete globalCache.objects[
|
|
56
|
+
delete this.objects_[_id];
|
|
57
|
+
delete globalCache.objects[_id];
|
|
63
58
|
}
|
|
64
|
-
o?.callbacks?.delete?.(this);
|
|
59
|
+
await o?.callbacks?.delete?.(this);
|
|
65
60
|
return res ?? { success: true, message: "Already gone" };
|
|
66
61
|
}
|
|
67
62
|
get objectIDs() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AutoUpdateManagerClass.js","sourceRoot":"","sources":["../AutoUpdateManagerClass.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"AutoUpdateManagerClass.js","sourceRoot":"","sources":["../AutoUpdateManagerClass.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,31 +1,37 @@
|
|
|
1
1
|
import { Server, Socket } from "socket.io";
|
|
2
|
-
import { AutoUpdateManager } from "./AutoUpdateManagerClass
|
|
3
|
-
import {
|
|
2
|
+
import { AutoUpdateManager } from "./AutoUpdateManagerClass";
|
|
3
|
+
import { AutoUpdatedServerObject } from "./AutoUpdatedServerObjectClass";
|
|
4
|
+
import { Constructor, EventEmitter3, IsData, LoggersType, Pure } from "./CommonTypes";
|
|
4
5
|
import { BeAnObject, ReturnModelType } from "@typegoose/typegoose/lib/types";
|
|
5
|
-
|
|
6
|
+
import { Paths, PathValueOf } from "./CommonTypes_server";
|
|
7
|
+
export type WrappedInstances<T extends Record<string, AutoUpdatedServerObject<any>>> = {
|
|
6
8
|
[K in keyof T]: AutoUpdateServerManager<T[K]>;
|
|
7
9
|
};
|
|
8
|
-
export type AUSDefinitions<T extends Record<string,
|
|
10
|
+
export type AUSDefinitions<T extends Record<string, AutoUpdatedServerObject<any>>> = {
|
|
9
11
|
[K in keyof T]: ServerManagerDefinition<T[K], T>;
|
|
10
12
|
};
|
|
11
|
-
export type EventMiddlewareFunction<T extends Record<string,
|
|
12
|
-
|
|
13
|
-
|
|
13
|
+
export type EventMiddlewareFunction<T extends Record<string, AutoUpdatedServerObject<any>>, C extends AutoUpdatedServerObject<any>> = (event: DEMEvent<C>, managers: {
|
|
14
|
+
[K in keyof T]: AutoUpdateServerManager<T[K]>;
|
|
15
|
+
}, socket: Socket) => Promise<void>;
|
|
16
|
+
export type StartupMiddlewareFunction<T extends Record<string, AutoUpdatedServerObject<any>>, C extends AutoUpdatedServerObject<any>> = (ids: C[], managers: {
|
|
17
|
+
[K in keyof T]: AutoUpdateServerManager<T[K]>;
|
|
18
|
+
}, socket: Socket) => Promise<C[]>;
|
|
19
|
+
export type AccessMiddleware<T extends Record<string, AutoUpdatedServerObject<any>>, C extends AutoUpdatedServerObject<any>> = {
|
|
14
20
|
eventMiddleware?: EventMiddlewareFunction<T, C>;
|
|
15
21
|
startupMiddleware?: StartupMiddlewareFunction<T, C>;
|
|
16
22
|
};
|
|
17
|
-
export type AUSOption<C extends
|
|
23
|
+
export type AUSOption<C extends AutoUpdatedServerObject<any>, T extends Record<string, AutoUpdatedServerObject<any>>> = {
|
|
18
24
|
accessDefinitions?: AccessMiddleware<T, C>;
|
|
19
|
-
onUpdate?: (obj: C, set: (key:
|
|
25
|
+
onUpdate?: (obj: C, set: <K extends Paths<C, AutoUpdatedServerObject<C>>>(key: K, val: PathValueOf<C, K>) => Promise<{
|
|
20
26
|
success: boolean;
|
|
21
27
|
msg: string;
|
|
22
28
|
}>) => Promise<void>;
|
|
23
29
|
};
|
|
24
|
-
export type ServerManagerDefinition<C extends
|
|
30
|
+
export type ServerManagerDefinition<C extends AutoUpdatedServerObject<any>, T extends Record<string, AutoUpdatedServerObject<any>>> = {
|
|
25
31
|
class: Constructor<C>;
|
|
26
32
|
options?: AUSOption<C, T>;
|
|
27
33
|
};
|
|
28
|
-
export type BaseManagers = Record<string,
|
|
34
|
+
export type BaseManagers = Record<string, AutoUpdateServerManager<AutoUpdatedServerObject<any>>>;
|
|
29
35
|
export declare enum DEMEventTypes {
|
|
30
36
|
"new" = "new",
|
|
31
37
|
"update" = "update",
|
|
@@ -33,46 +39,48 @@ export declare enum DEMEventTypes {
|
|
|
33
39
|
"get" = "get",
|
|
34
40
|
"startup" = "startup"
|
|
35
41
|
}
|
|
36
|
-
export type DEMEvent<C extends
|
|
42
|
+
export type DEMEvent<C extends AutoUpdatedServerObject<any>> = {
|
|
37
43
|
type: DEMEventTypes.delete | DEMEventTypes.get;
|
|
38
|
-
manager:
|
|
44
|
+
manager: AutoUpdateServerManager<C>;
|
|
39
45
|
object: C;
|
|
40
46
|
data: never;
|
|
41
47
|
} | {
|
|
42
48
|
type: DEMEventTypes.update;
|
|
43
|
-
manager:
|
|
49
|
+
manager: AutoUpdateServerManager<C>;
|
|
44
50
|
object: C;
|
|
45
51
|
data: {
|
|
46
52
|
_id: string;
|
|
47
|
-
key:
|
|
48
|
-
value:
|
|
53
|
+
key: Paths<C, AutoUpdatedServerObject<C>>;
|
|
54
|
+
value: any;
|
|
49
55
|
};
|
|
50
56
|
} | {
|
|
51
57
|
type: DEMEventTypes.startup;
|
|
52
|
-
manager:
|
|
58
|
+
manager: AutoUpdateServerManager<C>;
|
|
53
59
|
object: never;
|
|
54
60
|
data: never;
|
|
55
61
|
} | {
|
|
56
62
|
type: DEMEventTypes.new;
|
|
57
|
-
manager:
|
|
63
|
+
manager: AutoUpdateServerManager<C>;
|
|
58
64
|
object: never;
|
|
59
|
-
data:
|
|
65
|
+
data: IsData<C>;
|
|
60
66
|
};
|
|
61
|
-
export declare function AUSManagerFactory<T extends Record<string,
|
|
62
|
-
|
|
63
|
-
|
|
67
|
+
export declare function AUSManagerFactory<T extends Record<string, AutoUpdatedServerObject<any>>>(defs: AUSDefinitions<T>, loggers: LoggersType, socket: Server, disableDEMDebugMessages?: boolean, emitter?: EventEmitter3, models?: any): Promise<{
|
|
68
|
+
[K in keyof T]: AutoUpdateServerManager<T[K]>;
|
|
69
|
+
}>;
|
|
70
|
+
export declare class AutoUpdateServerManager<T extends AutoUpdatedServerObject<any>> extends AutoUpdateManager<T> {
|
|
71
|
+
readonly model: ReturnModelType<Constructor<T>, BeAnObject>;
|
|
64
72
|
private readonly clientSockets;
|
|
65
|
-
readonly options?: AUSOption<T,
|
|
73
|
+
readonly options?: AUSOption<T, any>;
|
|
66
74
|
protected objects_: {
|
|
67
75
|
[_id: string]: T;
|
|
68
76
|
};
|
|
69
|
-
readonly managers:
|
|
70
|
-
constructor(classParam: Constructor<T>, className: string, socket: Server, loggers: LoggersType, model: ReturnModelType<
|
|
77
|
+
readonly managers: Record<string, AutoUpdateServerManager<AutoUpdatedServerObject<any>>>;
|
|
78
|
+
constructor(classParam: Constructor<T>, className: string, socket: Server, loggers: LoggersType, model: ReturnModelType<Constructor<T>, BeAnObject>, managers: Record<string, AutoUpdateServerManager<AutoUpdatedServerObject<any>>>, emitter: EventEmitter3, options?: AUSOption<T, any>);
|
|
71
79
|
preLoad(): Promise<void>;
|
|
72
80
|
registerSocket(socket: Socket): void;
|
|
73
|
-
getObject(_id
|
|
81
|
+
getObject(_id: string): T | null | undefined;
|
|
74
82
|
get objects(): Record<string, T>;
|
|
75
83
|
get objectsAsArray(): T[];
|
|
76
|
-
handleGetMissingObject(_id:
|
|
77
|
-
createObject(data: Omit<IsData<T
|
|
84
|
+
handleGetMissingObject(_id: string): Promise<T>;
|
|
85
|
+
createObject(data: Omit<IsData<Pure<T, AutoUpdatedServerObject<any>>>, "_id">): Promise<T>;
|
|
78
86
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { AutoUpdateManager } from "./AutoUpdateManagerClass
|
|
2
|
-
import { createAutoUpdatedClass
|
|
3
|
-
import { globalCache, EVENT_NEW, EVENT_UPDATE, EVENT_DELETE, EVENT_GET, EVENT_STARTUP
|
|
1
|
+
import { AutoUpdateManager } from "./AutoUpdateManagerClass";
|
|
2
|
+
import { createAutoUpdatedClass } from "./AutoUpdatedServerObjectClass";
|
|
3
|
+
import { globalCache, EVENT_NEW, EVENT_UPDATE, EVENT_DELETE, EVENT_GET, EVENT_STARTUP } from "./CommonTypes";
|
|
4
4
|
import { EventEmitter } from "eventemitter3";
|
|
5
5
|
import * as machineId from "node-machine-id";
|
|
6
6
|
import { getModelForClass } from "@typegoose/typegoose";
|
|
@@ -12,7 +12,7 @@ export var DEMEventTypes;
|
|
|
12
12
|
DEMEventTypes["get"] = "get";
|
|
13
13
|
DEMEventTypes["startup"] = "startup";
|
|
14
14
|
})(DEMEventTypes || (DEMEventTypes = {}));
|
|
15
|
-
function setupSocketMiddleware(socket_server, loggers, managers,
|
|
15
|
+
function setupSocketMiddleware(socket_server, loggers, managers, models) {
|
|
16
16
|
socket_server.use(async (socket, next) => {
|
|
17
17
|
socket.use((async (event, nextEvent) => {
|
|
18
18
|
if (event.length !== 3 ||
|
|
@@ -38,66 +38,41 @@ function setupSocketMiddleware(socket_server, loggers, managers, _models) {
|
|
|
38
38
|
}
|
|
39
39
|
try {
|
|
40
40
|
const e = event[0];
|
|
41
|
-
let demEvent;
|
|
41
|
+
let demEvent = {};
|
|
42
42
|
const id = e.slice(-24);
|
|
43
43
|
switch (true) {
|
|
44
44
|
case e.startsWith(EVENT_NEW):
|
|
45
|
-
demEvent =
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
data: event[1],
|
|
49
|
-
object: undefined,
|
|
50
|
-
};
|
|
45
|
+
demEvent.type = DEMEventTypes.new;
|
|
46
|
+
demEvent.manager = managers[e.replace(EVENT_NEW, "")];
|
|
47
|
+
demEvent.data = event[1];
|
|
51
48
|
break;
|
|
52
49
|
case e.startsWith(EVENT_UPDATE):
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
manager: manager,
|
|
58
|
-
object: manager.getObject(id),
|
|
59
|
-
data: event[1],
|
|
60
|
-
};
|
|
61
|
-
}
|
|
50
|
+
demEvent.type = DEMEventTypes.update;
|
|
51
|
+
demEvent.manager = managers[e.replace(EVENT_UPDATE, "").replace(id, "")];
|
|
52
|
+
demEvent.object = demEvent.manager.getObject(id);
|
|
53
|
+
demEvent.data = event[1];
|
|
62
54
|
break;
|
|
63
55
|
case e.startsWith(EVENT_DELETE):
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
data: undefined,
|
|
72
|
-
});
|
|
73
|
-
return;
|
|
74
|
-
}
|
|
75
|
-
demEvent = {
|
|
76
|
-
type: DEMEventTypes.delete,
|
|
77
|
-
manager: manager,
|
|
78
|
-
object: obj,
|
|
56
|
+
demEvent.type = DEMEventTypes.delete;
|
|
57
|
+
demEvent.manager = managers[e.replace(EVENT_DELETE, "")];
|
|
58
|
+
demEvent.object = demEvent.manager.getObject(event[1]);
|
|
59
|
+
if (!demEvent.object) {
|
|
60
|
+
event[2]({
|
|
61
|
+
success: true,
|
|
62
|
+
message: "Object already deleted",
|
|
79
63
|
data: undefined,
|
|
80
|
-
};
|
|
64
|
+
});
|
|
65
|
+
return;
|
|
81
66
|
}
|
|
82
67
|
break;
|
|
83
68
|
case e.startsWith(EVENT_GET):
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
type: DEMEventTypes.get,
|
|
88
|
-
manager: manager,
|
|
89
|
-
object: manager.getObject(id),
|
|
90
|
-
data: undefined,
|
|
91
|
-
};
|
|
92
|
-
}
|
|
69
|
+
demEvent.type = DEMEventTypes.get;
|
|
70
|
+
demEvent.manager = managers[e.replace(EVENT_GET, "").replace(id, "")];
|
|
71
|
+
demEvent.object = demEvent.manager.getObject(id);
|
|
93
72
|
break;
|
|
94
73
|
case e.startsWith(EVENT_STARTUP):
|
|
95
|
-
demEvent =
|
|
96
|
-
|
|
97
|
-
manager: managers[e.replace(EVENT_STARTUP, "")],
|
|
98
|
-
object: undefined,
|
|
99
|
-
data: undefined,
|
|
100
|
-
};
|
|
74
|
+
demEvent.type = DEMEventTypes.startup;
|
|
75
|
+
demEvent.manager = managers[e.replace(EVENT_STARTUP, "")];
|
|
101
76
|
break;
|
|
102
77
|
default:
|
|
103
78
|
throw new Error("Unknown event: " +
|
|
@@ -120,14 +95,14 @@ function setupSocketMiddleware(socket_server, loggers, managers, _models) {
|
|
|
120
95
|
"'\nTo the event: '" +
|
|
121
96
|
event[0] +
|
|
122
97
|
"'\nFor: '" +
|
|
123
|
-
|
|
98
|
+
error.message +
|
|
124
99
|
"'");
|
|
125
100
|
event[2]({
|
|
126
101
|
success: false,
|
|
127
102
|
message: "You were denied access to this event '" +
|
|
128
103
|
event[0] +
|
|
129
104
|
"' by the server.\n" +
|
|
130
|
-
|
|
105
|
+
error.message,
|
|
131
106
|
});
|
|
132
107
|
}
|
|
133
108
|
}
|
|
@@ -135,18 +110,18 @@ function setupSocketMiddleware(socket_server, loggers, managers, _models) {
|
|
|
135
110
|
loggers.error?.("Error with event: " +
|
|
136
111
|
event[0] +
|
|
137
112
|
"\nError: " +
|
|
138
|
-
|
|
113
|
+
error.message);
|
|
139
114
|
return;
|
|
140
115
|
}
|
|
141
116
|
}));
|
|
142
117
|
next();
|
|
143
118
|
});
|
|
144
119
|
}
|
|
145
|
-
export async function AUSManagerFactory(defs, loggers, socket,
|
|
120
|
+
export async function AUSManagerFactory(defs, loggers, socket, disableDEMDebugMessages = false, emitter = new EventEmitter(), models) {
|
|
146
121
|
readyLoggers(loggers);
|
|
147
|
-
if (
|
|
122
|
+
/* if (disableDEMDebugMessages) {
|
|
148
123
|
loggers.debug = (_) => { };
|
|
149
|
-
}
|
|
124
|
+
} */
|
|
150
125
|
socket.use((socket, next) => {
|
|
151
126
|
socket.onAny((event) => {
|
|
152
127
|
loggers.debug?.("Recieved event: " + event + " from client: " + socket.id);
|
|
@@ -164,9 +139,8 @@ export async function AUSManagerFactory(defs, loggers, socket, doDebug = true, e
|
|
|
164
139
|
}
|
|
165
140
|
catch (error) {
|
|
166
141
|
loggers.error?.("Error creating manager: " + key);
|
|
167
|
-
loggers.error?.(error
|
|
168
|
-
|
|
169
|
-
loggers.error?.(error.stack);
|
|
142
|
+
loggers.error?.(error.message);
|
|
143
|
+
loggers.error?.(error.stack);
|
|
170
144
|
continue;
|
|
171
145
|
}
|
|
172
146
|
loggers.debug?.("Loading DB for manager: " + key);
|
|
@@ -175,9 +149,8 @@ export async function AUSManagerFactory(defs, loggers, socket, doDebug = true, e
|
|
|
175
149
|
}
|
|
176
150
|
catch (error) {
|
|
177
151
|
loggers.error?.("Error loading DB for manager: " + key);
|
|
178
|
-
loggers.error?.(error
|
|
179
|
-
|
|
180
|
-
loggers.error?.(error.stack);
|
|
152
|
+
loggers.error?.(error.message);
|
|
153
|
+
loggers.error?.(error.stack);
|
|
181
154
|
}
|
|
182
155
|
}
|
|
183
156
|
for (const manager of Object.values(managers)) {
|
|
@@ -188,9 +161,8 @@ export async function AUSManagerFactory(defs, loggers, socket, doDebug = true, e
|
|
|
188
161
|
loggers.error?.("Error loading DB for manager: " +
|
|
189
162
|
manager.className +
|
|
190
163
|
" (loadReferences)");
|
|
191
|
-
loggers.error?.(error
|
|
192
|
-
|
|
193
|
-
loggers.error?.(error.stack);
|
|
164
|
+
loggers.error?.(error.message);
|
|
165
|
+
loggers.error?.(error.stack);
|
|
194
166
|
}
|
|
195
167
|
}
|
|
196
168
|
socket.on("connection", async (socket) => {
|
|
@@ -207,9 +179,8 @@ export async function AUSManagerFactory(defs, loggers, socket, doDebug = true, e
|
|
|
207
179
|
}
|
|
208
180
|
catch (error) {
|
|
209
181
|
loggers.error?.("Error setting up socket middleware");
|
|
210
|
-
loggers.error?.(error
|
|
211
|
-
|
|
212
|
-
loggers.error?.(error.stack);
|
|
182
|
+
loggers.error?.(error.message);
|
|
183
|
+
loggers.error?.(error.stack);
|
|
213
184
|
}
|
|
214
185
|
return managers;
|
|
215
186
|
}
|
|
@@ -268,12 +239,11 @@ export class AutoUpdateServerManager extends AutoUpdateManager {
|
|
|
268
239
|
this.loggers.error("Error sending startup data for manager " +
|
|
269
240
|
this.className +
|
|
270
241
|
": " +
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
this.loggers.error(error.stack);
|
|
242
|
+
error.message);
|
|
243
|
+
this.loggers.error(error.stack);
|
|
274
244
|
ack({
|
|
275
245
|
success: false,
|
|
276
|
-
message: error
|
|
246
|
+
message: error.message,
|
|
277
247
|
});
|
|
278
248
|
}
|
|
279
249
|
});
|
|
@@ -293,13 +263,9 @@ export class AutoUpdateServerManager extends AutoUpdateManager {
|
|
|
293
263
|
" - " +
|
|
294
264
|
id +
|
|
295
265
|
": " +
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
ack({
|
|
300
|
-
success: false,
|
|
301
|
-
message: error instanceof Error ? error.message : String(error),
|
|
302
|
-
});
|
|
266
|
+
error.message);
|
|
267
|
+
this.loggers.error(error.stack);
|
|
268
|
+
ack({ success: false, message: error.message });
|
|
303
269
|
}
|
|
304
270
|
});
|
|
305
271
|
socket.on(EVENT_NEW + this.className, async (data, ack) => {
|
|
@@ -316,13 +282,9 @@ export class AutoUpdateServerManager extends AutoUpdateManager {
|
|
|
316
282
|
this.loggers.error("Error creating new object creation in manager " +
|
|
317
283
|
this.className +
|
|
318
284
|
" - " +
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
ack({
|
|
323
|
-
success: false,
|
|
324
|
-
message: error instanceof Error ? error.message : String(error),
|
|
325
|
-
});
|
|
285
|
+
error.message);
|
|
286
|
+
this.loggers.error(error.stack);
|
|
287
|
+
ack({ success: false, message: error.message });
|
|
326
288
|
}
|
|
327
289
|
});
|
|
328
290
|
socket.on(EVENT_UPDATE + this.className, async () => { });
|
|
@@ -352,10 +314,7 @@ export class AutoUpdateServerManager extends AutoUpdateManager {
|
|
|
352
314
|
}
|
|
353
315
|
catch (error) {
|
|
354
316
|
this.loggers.warn("Failed to update object in manager " + this.className);
|
|
355
|
-
ack({
|
|
356
|
-
success: false,
|
|
357
|
-
message: error instanceof Error ? error.message : String(error),
|
|
358
|
-
});
|
|
317
|
+
ack({ success: false, message: error.message });
|
|
359
318
|
}
|
|
360
319
|
}
|
|
361
320
|
else if (event.startsWith(EVENT_GET + this.className) &&
|
|
@@ -363,8 +322,6 @@ export class AutoUpdateServerManager extends AutoUpdateManager {
|
|
|
363
322
|
try {
|
|
364
323
|
const id = event.replace(EVENT_GET + this.className, "");
|
|
365
324
|
let obj = this.objects_[id];
|
|
366
|
-
if (!obj)
|
|
367
|
-
throw new Error(`Object not found: ${id}`);
|
|
368
325
|
ack({
|
|
369
326
|
data: obj.extractedData,
|
|
370
327
|
success: true,
|
|
@@ -375,13 +332,9 @@ export class AutoUpdateServerManager extends AutoUpdateManager {
|
|
|
375
332
|
this.loggers.error("Error sending startup data for manager " +
|
|
376
333
|
this.className +
|
|
377
334
|
": " +
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
ack({
|
|
382
|
-
success: false,
|
|
383
|
-
message: error instanceof Error ? error.message : String(error),
|
|
384
|
-
});
|
|
335
|
+
error.message);
|
|
336
|
+
this.loggers.error(error.stack);
|
|
337
|
+
ack({ success: false, message: error.message });
|
|
385
338
|
}
|
|
386
339
|
}
|
|
387
340
|
});
|
|
@@ -392,7 +345,7 @@ export class AutoUpdateServerManager extends AutoUpdateManager {
|
|
|
392
345
|
getObject(_id) {
|
|
393
346
|
if (!_id)
|
|
394
347
|
return null;
|
|
395
|
-
return this.objects_[_id
|
|
348
|
+
return this.objects_[_id] || undefined;
|
|
396
349
|
}
|
|
397
350
|
get objects() {
|
|
398
351
|
return this.objects_;
|
|
@@ -401,21 +354,17 @@ export class AutoUpdateServerManager extends AutoUpdateManager {
|
|
|
401
354
|
return Object.values(this.objects_);
|
|
402
355
|
}
|
|
403
356
|
async handleGetMissingObject(_id) {
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
const document = await this.model.findById(_idStr);
|
|
357
|
+
if (this.getObject(_id))
|
|
358
|
+
return this.getObject(_id);
|
|
359
|
+
const document = await this.model.findById(_id);
|
|
408
360
|
if (!document)
|
|
409
|
-
throw new Error(`No document with id ${
|
|
361
|
+
throw new Error(`No document with id ${_id} in DB.`);
|
|
410
362
|
if (!this.managers)
|
|
411
363
|
throw new Error(`No managers.`);
|
|
412
364
|
const object = await createAutoUpdatedClass(this.classParam, this.className, this.socket, document, this.loggers, this, this.emitter);
|
|
413
365
|
await object.waitForPreloaded();
|
|
414
|
-
this.objects_[object._id
|
|
415
|
-
globalCache.objects[object._id
|
|
416
|
-
className: this.className,
|
|
417
|
-
object: object,
|
|
418
|
-
};
|
|
366
|
+
this.objects_[object._id] = object;
|
|
367
|
+
globalCache.objects[object._id] = { className: this.className, object: object };
|
|
419
368
|
await object.isPreLoadedAsync();
|
|
420
369
|
await object.loadMissingReferences();
|
|
421
370
|
await object.contactChildren();
|
|
@@ -425,38 +374,27 @@ export class AutoUpdateServerManager extends AutoUpdateManager {
|
|
|
425
374
|
if (!this.managers)
|
|
426
375
|
throw new Error(`No managers.`);
|
|
427
376
|
this.loggers.debug("Creating new object from manager " + this.className);
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
delete dataRec._id;
|
|
431
|
-
const doc = await this.model.create(dataRec);
|
|
432
|
-
const id = doc._id.toString();
|
|
433
|
-
const object = await createAutoUpdatedClass(this.classParam, this.className, this.socket, id, this.loggers, this, this.emitter, doc);
|
|
377
|
+
delete data._id;
|
|
378
|
+
const object = await createAutoUpdatedClass(this.classParam, this.className, this.socket, data, this.loggers, this, this.emitter);
|
|
434
379
|
await object.waitForPreloaded();
|
|
435
|
-
this.objects_[
|
|
436
|
-
globalCache.objects[
|
|
437
|
-
className: this.className,
|
|
438
|
-
object: object,
|
|
439
|
-
};
|
|
380
|
+
this.objects_[object._id] = object;
|
|
381
|
+
globalCache.objects[object._id] = { className: this.className, object: object };
|
|
440
382
|
await object.isPreLoadedAsync();
|
|
441
383
|
await object.loadMissingReferences();
|
|
442
384
|
await object.onUpdate();
|
|
443
385
|
await object.contactChildren();
|
|
444
386
|
for (const socket of this.clientSockets) {
|
|
445
387
|
try {
|
|
446
|
-
const theTruth = this.options?.accessDefinitions?.startupMiddleware
|
|
447
|
-
? await this.options.accessDefinitions.startupMiddleware([object], this.managers, socket)
|
|
448
|
-
: [object];
|
|
388
|
+
const theTruth = (await this.options?.accessDefinitions?.startupMiddleware?.([object], this.managers, socket)) ?? ["gay"];
|
|
449
389
|
if (theTruth.length > 0) {
|
|
450
390
|
this.loggers.debug("Emitting new object " + object._id);
|
|
451
|
-
socket.emit("new" + this.className, object._id
|
|
391
|
+
socket.emit("new" + this.className, object._id);
|
|
452
392
|
}
|
|
453
393
|
}
|
|
454
394
|
catch (error) {
|
|
455
|
-
this.loggers.error("Error when emitting new object to client: " +
|
|
456
|
-
|
|
457
|
-
this.loggers.error(error
|
|
458
|
-
if (error instanceof Error && error.stack)
|
|
459
|
-
this.loggers.error(error.stack);
|
|
395
|
+
this.loggers.error("Error when emitting new object to client: " + error.name);
|
|
396
|
+
this.loggers.error(error.message);
|
|
397
|
+
this.loggers.error(error.stack);
|
|
460
398
|
}
|
|
461
399
|
}
|
|
462
400
|
return object;
|