@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.
@@ -1,34 +1,35 @@
1
- import { IAutoUpdatedClientObjectBase, MongoId, IsData, IAutoUpdateManager, Constructor, EventEmitter3, LoggersType, DEMCache } from "./CommonTypes.js";
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 IAutoUpdatedClientObjectBase, M extends Record<string, IAutoUpdateManager<any>> = Record<string, IAutoUpdateManager<any>>> implements IAutoUpdateManager<T> {
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: unknown;
9
+ readonly socket: any;
9
10
  protected classParam: Constructor<T>;
10
- protected properties: string[];
11
+ protected properties: (keyof any)[];
11
12
  readonly className: string;
12
- readonly cache: DEMCache;
13
- readonly managers: M;
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: unknown, loggers: LoggersType, managers: M, emitter: EventEmitter3);
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: MongoId): Promise<{
25
+ deleteObject(_id: string): Promise<{
25
26
  success: boolean;
26
27
  message: string;
27
28
  }>;
28
29
  get objectIDs(): string[];
29
- abstract handleGetMissingObject(_id: MongoId): Promise<T>;
30
- abstract createObject(data: Omit<IsData<T>, "_id">): Promise<T>;
31
- abstract getObject(_id?: MongoId): T | null | undefined;
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.js";
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 _idStr = _id.toString();
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_[_idStr];
62
- delete globalCache.objects[_idStr];
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":"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"}
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.js";
3
- import { Constructor, IsData, LoggersType, IAutoUpdatedClientObject, EventEmitter3, MongoId, IAutoUpdateManager } from "./CommonTypes.js";
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
- export type WrappedInstances<T extends Record<string, IAutoUpdatedClientObject<any>>> = {
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, IAutoUpdatedClientObject<any>>> = {
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, IAutoUpdatedClientObject<any>>, C extends IAutoUpdatedClientObject<any>> = (event: DEMEvent<C>, managers: WrappedInstances<T>, socket: Socket) => Promise<void>;
12
- export type StartupMiddlewareFunction<T extends Record<string, IAutoUpdatedClientObject<any>>, C extends IAutoUpdatedClientObject<any>> = (ids: C[], managers: WrappedInstances<T>, socket: Socket) => Promise<C[]>;
13
- export type AccessMiddleware<T extends Record<string, IAutoUpdatedClientObject<any>>, C extends IAutoUpdatedClientObject<any>> = {
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 IAutoUpdatedClientObject<any>, T extends Record<string, IAutoUpdatedClientObject<any>>> = {
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: string, val: any) => Promise<{
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 IAutoUpdatedClientObject<any>, T extends Record<string, IAutoUpdatedClientObject<any>>> = {
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, IAutoUpdateManager<any>>;
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 IAutoUpdatedClientObject<any>> = {
42
+ export type DEMEvent<C extends AutoUpdatedServerObject<any>> = {
37
43
  type: DEMEventTypes.delete | DEMEventTypes.get;
38
- manager: IAutoUpdateManager<C>;
44
+ manager: AutoUpdateServerManager<C>;
39
45
  object: C;
40
46
  data: never;
41
47
  } | {
42
48
  type: DEMEventTypes.update;
43
- manager: IAutoUpdateManager<C>;
49
+ manager: AutoUpdateServerManager<C>;
44
50
  object: C;
45
51
  data: {
46
52
  _id: string;
47
- key: string;
48
- value: unknown;
53
+ key: Paths<C, AutoUpdatedServerObject<C>>;
54
+ value: any;
49
55
  };
50
56
  } | {
51
57
  type: DEMEventTypes.startup;
52
- manager: IAutoUpdateManager<C>;
58
+ manager: AutoUpdateServerManager<C>;
53
59
  object: never;
54
60
  data: never;
55
61
  } | {
56
62
  type: DEMEventTypes.new;
57
- manager: IAutoUpdateManager<C>;
63
+ manager: AutoUpdateServerManager<C>;
58
64
  object: never;
59
- data: Omit<IsData<C>, "_id">;
65
+ data: IsData<C>;
60
66
  };
61
- export declare function AUSManagerFactory<T extends Record<string, IAutoUpdatedClientObject<any>>>(defs: AUSDefinitions<T>, loggers: LoggersType, socket: Server, doDebug?: boolean, emitter?: EventEmitter3, models?: unknown): Promise<WrappedInstances<T>>;
62
- export declare class AutoUpdateServerManager<T extends IAutoUpdatedClientObject<T>, M extends Record<string, IAutoUpdateManager<any>> = any> extends AutoUpdateManager<T, M> {
63
- readonly model: ReturnModelType<any, BeAnObject>;
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, Record<string, IAutoUpdatedClientObject<any>>>;
73
+ readonly options?: AUSOption<T, any>;
66
74
  protected objects_: {
67
75
  [_id: string]: T;
68
76
  };
69
- readonly managers: M;
70
- constructor(classParam: Constructor<T>, className: string, socket: Server, loggers: LoggersType, model: ReturnModelType<any, BeAnObject>, managers: M, emitter: EventEmitter3, options?: AUSOption<T, Record<string, IAutoUpdatedClientObject<any>>>);
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?: MongoId): T | null | undefined;
81
+ getObject(_id: string): T | null | undefined;
74
82
  get objects(): Record<string, T>;
75
83
  get objectsAsArray(): T[];
76
- handleGetMissingObject(_id: MongoId): Promise<T>;
77
- createObject(data: Omit<IsData<T>, "_id">): Promise<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.js";
2
- import { createAutoUpdatedClass, } from "./AutoUpdatedServerObjectClass.js";
3
- import { globalCache, EVENT_NEW, EVENT_UPDATE, EVENT_DELETE, EVENT_GET, EVENT_STARTUP, } from "./CommonTypes.js";
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, _models) {
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
- type: DEMEventTypes.new,
47
- manager: managers[e.replace(EVENT_NEW, "")],
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
- const manager = managers[e.replace(EVENT_UPDATE, "").replace(id, "")];
55
- demEvent = {
56
- type: DEMEventTypes.update,
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
- const manager = managers[e.replace(EVENT_DELETE, "")];
66
- const obj = manager.getObject(event[1]);
67
- if (!obj) {
68
- event[2]({
69
- success: true,
70
- message: "Object already deleted",
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
- const manager = managers[e.replace(EVENT_GET, "").replace(id, "")];
86
- demEvent = {
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
- type: DEMEventTypes.startup,
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
- (error instanceof Error ? error.message : String(error)) +
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
- (error instanceof Error ? error.message : String(error)),
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
- (error instanceof Error ? error.message : String(error)));
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, doDebug = true, emitter = new EventEmitter(), models) {
120
+ export async function AUSManagerFactory(defs, loggers, socket, disableDEMDebugMessages = false, emitter = new EventEmitter(), models) {
146
121
  readyLoggers(loggers);
147
- if (!doDebug) {
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 instanceof Error ? error.message : String(error));
168
- if (error instanceof Error && error.stack)
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 instanceof Error ? error.message : String(error));
179
- if (error instanceof Error && error.stack)
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 instanceof Error ? error.message : String(error));
192
- if (error instanceof Error && error.stack)
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 instanceof Error ? error.message : String(error));
211
- if (error instanceof Error && error.stack)
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
- (error instanceof Error ? error.message : String(error)));
272
- if (error instanceof Error && error.stack)
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 instanceof Error ? error.message : String(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
- (error instanceof Error ? error.message : String(error)));
297
- if (error instanceof Error && error.stack)
298
- this.loggers.error(error.stack);
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
- (error instanceof Error ? error.message : String(error)));
320
- if (error instanceof Error && error.stack)
321
- this.loggers.error(error.stack);
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
- (error instanceof Error ? error.message : String(error)));
379
- if (error instanceof Error && error.stack)
380
- this.loggers.error(error.stack);
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.toString()] || undefined;
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
- const _idStr = _id.toString();
405
- if (this.getObject(_idStr))
406
- return this.getObject(_idStr);
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 ${_idStr} in DB.`);
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.toString()] = object;
415
- globalCache.objects[object._id.toString()] = {
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
- const dataRec = { ...data };
429
- if (dataRec._id === "" || dataRec._id === null)
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_[id] = object;
436
- globalCache.objects[id] = {
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.toString());
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
- (error instanceof Error ? error.name : "Error"));
457
- this.loggers.error(error instanceof Error ? error.message : String(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;