@prestizni-software/client-dem 0.4.113 → 0.4.116

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