@prestizni-software/server-dem 0.5.16 → 0.5.17

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,24 +1,17 @@
1
- import { AutoUpdatedClientObject } from "./AutoUpdatedClientObjectClass";
2
- import { AutoUpdateServerManager } from "./AutoUpdateServerManagerClass";
3
- import "reflect-metadata";
4
- import { Constructor, LoggersType, EventEmitter3, IsData, PathValueOf } from "./CommonTypes";
5
- import { Paths } from "./CommonTypes_server";
1
+ import { AutoUpdatedClientObject } from "./AutoUpdatedClientObjectClass.js";
2
+ import { AutoUpdateServerManager } from "./AutoUpdateServerManagerClass.js";
3
+ import { Constructor, IsData, LoggersType, EventEmitter3, IAutoUpdatedClientObject, IAutoUpdatedServerObject, ExtractedData } from "./CommonTypes.js";
6
4
  import { DocumentType } from "@typegoose/typegoose";
7
- export declare function createAutoUpdatedClass<C extends AutoUpdatedServerObject<C>>(classParam: Constructor<C>, className: string, socket: any, data: IsData<C>, loggers: LoggersType, parentManager: AutoUpdateServerManager<any>, emitter: EventEmitter3, document?: DocumentType<C>): Promise<C>;
8
- export declare abstract class AutoUpdatedServerObject<T extends AutoUpdatedServerObject<T>> extends AutoUpdatedClientObject<T> {
5
+ export declare abstract class AutoUpdatedServerObject<T extends IAutoUpdatedClientObject<T>> extends AutoUpdatedClientObject<T> implements IAutoUpdatedServerObject<T> {
9
6
  protected readonly isServer: boolean;
10
- protected entry: DocumentType<T>;
11
- parentManager: AutoUpdateServerManager<any>;
7
+ protected entry: DocumentType<T> | null;
8
+ parentManager: AutoUpdateServerManager<T, any>;
12
9
  constructor();
13
- constructor(classParam: Constructor<T>, socket: any, data: IsData<T>, loggers: LoggersType, className: string, parentManager: AutoUpdateServerManager<any>, emitter: EventEmitter3);
14
- loadFromDocument(document: DocumentType<T>): Promise<void>;
10
+ constructor(classParam: Constructor<T>, socket: unknown, data: IsData<T>, loggers: LoggersType, className: string, parentManager: AutoUpdateServerManager<T, any>, emitter: EventEmitter3);
15
11
  loadFromDB(): Promise<void>;
16
- setValue_<K extends Paths<T, AutoUpdatedServerObject<T>>>(key: K, val: PathValueOf<IsData<T>, K>): Promise<{
17
- success: boolean;
18
- msg: string;
19
- }>;
20
- protected handleNewObject(_data: any): void;
21
- protected setValueInternal(key: any, value: any, _silent?: boolean): Promise<{
12
+ loadFromDocument(document: DocumentType<T>): Promise<void>;
13
+ get extractedData(): ExtractedData<T, IAutoUpdatedClientObject<any>>;
14
+ protected setValueInternal(key: string, value: unknown, silent?: boolean, noUpdate?: boolean): Promise<{
22
15
  success: boolean;
23
16
  msg: string;
24
17
  }>;
@@ -28,3 +21,4 @@ export declare abstract class AutoUpdatedServerObject<T extends AutoUpdatedServe
28
21
  }>;
29
22
  onUpdate(noUpdate?: boolean): Promise<void>;
30
23
  }
24
+ export declare function createAutoUpdatedClass<T extends IAutoUpdatedClientObject<T>>(classParam: Constructor<T>, className: string, socket: unknown, data: string | IsData<T>, loggers: LoggersType, parentManager: AutoUpdateServerManager<T, any>, emitter: EventEmitter3, document?: DocumentType<T>): Promise<IAutoUpdatedServerObject<T>>;
@@ -1,19 +1,8 @@
1
- import { AutoUpdatedClientObject, getMetadataRecursive } from "./AutoUpdatedClientObjectClass";
2
- import "reflect-metadata";
1
+ import { AutoUpdatedClientObject, getMetadataRecursive, processIsRefProperties } from "./AutoUpdatedClientObjectClass.js";
2
+ import { EVENT_UPDATE, EVENT_DELETE, EVENT_INTERNAL_PRE_LOADED } from "./CommonTypes.js";
3
3
  import { ObjectId } from "mongodb";
4
- import { EVENT_DELETE, EVENT_UPDATE, } from "./CommonTypes";
5
- export async function createAutoUpdatedClass(classParam, className, socket, data, loggers, parentManager, emitter, document) {
6
- const instance = new classParam(classParam, socket, data, loggers, className, parentManager, emitter);
7
- if (document) {
8
- await instance.loadFromDocument(document);
9
- }
10
- else {
11
- await instance.loadFromDB();
12
- }
13
- return instance;
14
- }
15
4
  export class AutoUpdatedServerObject extends AutoUpdatedClientObject {
16
- isServer = true;
5
+ isServer;
17
6
  entry;
18
7
  constructor(classParam, socket, data, loggers, className, parentManager, emitter) {
19
8
  if (!classParam ||
@@ -23,6 +12,10 @@ export class AutoUpdatedServerObject extends AutoUpdatedClientObject {
23
12
  !className ||
24
13
  !parentManager ||
25
14
  !emitter) {
15
+ super();
16
+ this.isServer = true;
17
+ this.entry = null;
18
+ this.parentManager = parentManager;
26
19
  if (!classParam &&
27
20
  !socket &&
28
21
  !data &&
@@ -30,129 +23,139 @@ export class AutoUpdatedServerObject extends AutoUpdatedClientObject {
30
23
  !className &&
31
24
  !parentManager &&
32
25
  !emitter) {
33
- super();
34
- this.entry = undefined;
35
26
  return;
36
27
  }
37
28
  else
38
- throw new Error("Missing arguments???");
29
+ throw new Error("Missing arguments for AutoUpdatedServerObject: " + className);
39
30
  }
40
31
  super(classParam, socket, data, loggers, className, parentManager, {
41
- update: (x) => { },
42
- delete: (x) => { },
43
- new: (x) => { },
44
- progress: (x) => { },
32
+ update: (_x, _key) => { },
33
+ delete: (_x) => { },
34
+ new: (_x) => { },
35
+ progress: (_x) => { },
45
36
  }, emitter, true);
37
+ this.isServer = true;
38
+ this.entry = null;
39
+ this.parentManager = parentManager;
40
+ // Convert reference IDs to ObjectIds on the server side
41
+ const dataRec = this.data;
46
42
  for (const prop of this.properties) {
47
43
  if (typeof prop !== "string")
48
44
  continue;
49
45
  const isRef = getMetadataRecursive("isRef", this, prop);
50
- if (isRef && this.data[prop]) {
51
- this.data[prop] = Array.isArray(this.data[prop])
52
- ? this.data[prop]
53
- .map((item) => item ? new ObjectId(item.toString()) : null)
54
- .filter(Boolean)
55
- : new ObjectId(this.data[prop].toString());
46
+ if (isRef && dataRec[prop]) {
47
+ try {
48
+ if (Array.isArray(dataRec[prop])) {
49
+ dataRec[prop] = dataRec[prop]
50
+ .map((item) => {
51
+ if (!item)
52
+ return null;
53
+ const idStr = item._id ? item._id.toString() : item.toString();
54
+ return ObjectId.isValid(idStr) ? new ObjectId(idStr) : item;
55
+ })
56
+ .filter((item) => item !== null);
57
+ }
58
+ else {
59
+ const idStr = dataRec[prop]._id ? dataRec[prop]._id.toString() : dataRec[prop].toString();
60
+ if (ObjectId.isValid(idStr)) {
61
+ dataRec[prop] = new ObjectId(idStr);
62
+ }
63
+ }
64
+ }
65
+ catch (error) {
66
+ this.loggers.error(`Failed to set reference ${prop} to ${dataRec[prop]}: ${error.message}`);
67
+ }
56
68
  }
57
69
  }
58
- this.parentManager = parentManager;
59
- this.entry = null;
70
+ }
71
+ async loadFromDB() {
72
+ const _id = this.data._id;
73
+ if (!_id)
74
+ throw new Error("No id.");
75
+ // Use the model from the parent manager
76
+ this.entry = await this.parentManager.model.findById(_id);
77
+ if (!this.entry)
78
+ throw new Error(`Object not found in DB: ${this.className} with ID ${_id}`);
79
+ this.data = { ...this.data, ...this.entry.toObject() };
80
+ this.isLoading = false;
81
+ this.generateSettersAndGetters();
82
+ this.emitter.emit(EVENT_INTERNAL_PRE_LOADED + this.EmitterID);
83
+ await this.onUpdate();
60
84
  }
61
85
  async loadFromDocument(document) {
62
86
  this.entry = document;
63
87
  this.data = { ...this.data, ...this.entry.toObject() };
64
- if (!this.data._id && this.entry._id) {
65
- this.data._id = this.entry._id;
66
- }
88
+ this.isLoading = false;
67
89
  this.generateSettersAndGetters();
90
+ this.emitter.emit(EVENT_INTERNAL_PRE_LOADED + this.EmitterID);
68
91
  }
69
- async loadFromDB() {
70
- try {
71
- const manager = this.parentManager.managers[this.className];
72
- this.entry = (await manager.model.findOne({
73
- _id: this.data._id,
74
- }));
75
- if (!this.entry) {
76
- this.entry = (await manager.model.create(this.data));
77
- }
78
- this.data = { ...this.data, ...this.entry.toObject() };
79
- if (!this.data._id && this.entry._id) {
80
- this.data._id = this.entry._id;
81
- }
82
- this.generateSettersAndGetters();
83
- }
84
- catch (error) {
85
- this.loggers.error("Error loading object from database: " + error.message);
86
- this.loggers.error(error.stack);
87
- throw error;
88
- }
89
- }
90
- async setValue_(key, val) {
91
- return await this.setValue__(key, val);
92
- }
93
- handleNewObject(_data) {
94
- throw new Error("Cannot create new objects like this.");
92
+ get extractedData() {
93
+ const dataToProcess = this.entry ? this.entry.toObject() : this.data;
94
+ const extracted = processIsRefProperties(dataToProcess, this, null, [], {}, this.loggers).newData;
95
+ return extracted;
95
96
  }
96
- async setValueInternal(key, value, _silent = false) {
97
+ async setValueInternal(key, value, silent = false, noUpdate = false) {
97
98
  try {
98
- if (!this.data?._id) {
99
- throw new Error(`Cannot update object ${this.className} - missing _id. Data: ${JSON.stringify(this.data)}`);
99
+ const _id = this.data._id;
100
+ if (!_id)
101
+ throw new Error(`Cannot update object ${this.className} - missing _id.`);
102
+ this.entry ??= await this.parentManager.model.findById(_id);
103
+ if (!this.entry)
104
+ throw new Error("Object not found in DB.");
105
+ if (!silent && !noUpdate) {
106
+ this.entry[key] = value;
107
+ await this.entry.save();
100
108
  }
101
- const manager = this.parentManager.managers[this.className];
102
- await manager.model.updateOne({ _id: this.data._id }, { $set: { [key]: value } });
103
109
  const update = this.makeUpdate(key, value);
104
- const event = EVENT_UPDATE + this.className + this.data._id.toString();
110
+ const event = EVENT_UPDATE + this.className + _id.toString();
105
111
  this.socket.emit(event, update);
106
- return {
107
- success: true,
108
- msg: "Updated",
109
- };
112
+ return { success: true, msg: "Success" };
110
113
  }
111
114
  catch (error) {
112
- this.loggers.error(`Error saving object [${this.className}: ${this.data?._id ?? "not loaded"}]: ` + error.message);
113
- this.loggers.error(error.stack);
114
- return {
115
- success: false,
116
- msg: "Error saving object: " + error.message,
117
- };
115
+ this.loggers.error?.(`Error saving object [${this.className}: ${this.data._id?.toString() ?? "not loaded"}]: ${error.message}`);
116
+ return { success: false, msg: "Error saving object: " + error.message };
118
117
  }
119
118
  }
120
119
  async destroy(once = false) {
120
+ const _id = this.data._id;
121
+ if (!_id)
122
+ return { success: false, message: "Missing _id" };
121
123
  if (!once) {
122
- return await this.parentManager.deleteObject(this.data._id);
124
+ return await this.parentManager.deleteObject(_id);
123
125
  }
124
126
  try {
125
- const res = await this.entry.deleteOne({ _id: this.data._id });
126
- this.loggers.debug("Deleted object from server " + this.className);
127
- this.loggers.debug(res.deletedCount + " deleted.");
127
+ this.entry ??= await this.parentManager.model.findById(_id);
128
+ if (this.entry) {
129
+ await this.entry.deleteOne();
130
+ }
131
+ this.loggers.debug?.("Deleted object from server " + this.className);
128
132
  }
129
133
  catch (error) {
130
- this.loggers.error("Error deleting object from database - " +
131
- this.className +
132
- " - " +
133
- this.data._id);
134
- this.loggers.error(error.message);
135
- this.loggers.error(error.stack);
136
- return {
137
- success: false,
138
- message: "Deletion uncussessful: " + error.message,
139
- };
134
+ this.loggers.error?.(`Error deleting object from database - ${this.className} - ${_id.toString()}: ${error.message}`);
135
+ return { success: false, message: "Deletion unsuccessful: " + error.message };
140
136
  }
141
- this.socket.emit(EVENT_DELETE + this.className, this.data._id);
142
- this.socket.removeAllListeners(EVENT_UPDATE + this.className + this.data._id.toString());
143
- this.socket.removeAllListeners(EVENT_DELETE + this.className);
137
+ this.socket.emit(EVENT_DELETE + this.className, _id.toString());
144
138
  await this.wipeSelf();
145
- return {
146
- success: true,
147
- message: "Deleted",
148
- };
139
+ return { success: true, message: "Deleted" };
149
140
  }
150
141
  async onUpdate(noUpdate = false) {
151
142
  if (noUpdate)
152
143
  return;
153
- await this.parentManager.options?.onUpdate?.(this, (a, b) => {
154
- return this.setValue__(a, b, false, true, true);
155
- });
144
+ if (this.parentManager.options?.onUpdate) {
145
+ await this.parentManager.options.onUpdate(this, async (key, val) => {
146
+ return this.setValue(key, val);
147
+ });
148
+ }
149
+ }
150
+ }
151
+ export async function createAutoUpdatedClass(classParam, className, socket, data, loggers, parentManager, emitter, document) {
152
+ const obj = new classParam(classParam, socket, data, loggers, className, parentManager, emitter);
153
+ if (document) {
154
+ await obj.loadFromDocument(document);
155
+ }
156
+ else {
157
+ await obj.loadFromDB();
156
158
  }
159
+ return obj;
157
160
  }
158
161
  //# sourceMappingURL=AutoUpdatedServerObjectClass.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AutoUpdatedServerObjectClass.js","sourceRoot":"","sources":["../AutoUpdatedServerObjectClass.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AutoUpdatedServerObjectClass.js","sourceRoot":"","sources":["../AutoUpdatedServerObjectClass.ts"],"names":[],"mappings":"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"}
@@ -1,15 +1,58 @@
1
1
  import { EventEmitter } from "eventemitter3";
2
2
  import { ObjectId, ObjectIdLike } from "bson";
3
3
  import "reflect-metadata";
4
- import { AutoUpdatedClientObject } from "./AutoUpdatedClientObjectClass";
5
- import { AutoUpdateManager } from "./AutoUpdateManagerClass";
6
- type RefType = string | ObjectId;
7
- export type MongoId = RefType;
4
+ export type MongoId = string | ObjectId;
8
5
  export type EventEmitter3 = EventEmitter;
6
+ export interface IAutoUpdateManager<T extends IAutoUpdatedClientObjectBase> {
7
+ readonly className: string;
8
+ readonly cache: DEMCache;
9
+ readonly managers: Record<string, IAutoUpdateManager<IAutoUpdatedClientObjectBase>>;
10
+ getObject(_id?: MongoId): T | null | undefined;
11
+ deleteObject(_id: MongoId): Promise<{
12
+ success: boolean;
13
+ message: string;
14
+ }>;
15
+ readonly objectsAsArray: T[];
16
+ readonly isLoaded: boolean;
17
+ }
18
+ export interface IAutoUpdatedClientObjectBase {
19
+ readonly _id: MongoId;
20
+ readonly properties: string[];
21
+ readonly className: string;
22
+ readonly isLoaded: boolean;
23
+ loadMissingReferences(): Promise<void>;
24
+ waitForPreloaded(): Promise<void>;
25
+ destroy(once?: boolean): Promise<{
26
+ success: boolean;
27
+ message: string;
28
+ }>;
29
+ isPreLoadedAsync(): Promise<boolean>;
30
+ contactChildren(): Promise<void>;
31
+ onUpdate(): Promise<void>;
32
+ getValue(key: string): any;
33
+ setValue(key: string, val: any): Promise<{
34
+ success: boolean;
35
+ msg: string;
36
+ }>;
37
+ readonly parentManager: IAutoUpdateManager<IAutoUpdatedClientObjectBase>;
38
+ readonly callbacks: any;
39
+ readonly classParam: any;
40
+ }
41
+ export interface IAutoUpdatedClientObject<T extends object = any> extends IAutoUpdatedClientObjectBase {
42
+ readonly extractedData: ExtractedData<T, IAutoUpdatedClientObject<any>>;
43
+ getValue<K extends Paths<T, IAutoUpdatedClientObject<any>>>(key: K): PathValueOf<T, K>;
44
+ setValue<K extends Paths<T, IAutoUpdatedClientObject<any>>>(key: K, val: PathValueOf<IsData<T>, K>): Promise<{
45
+ success: boolean;
46
+ msg: string;
47
+ }>;
48
+ }
49
+ export interface IAutoUpdatedServerObject<T extends object = any> extends IAutoUpdatedClientObject<T> {
50
+ loadFromDB(): Promise<void>;
51
+ loadFromDocument(document: unknown): Promise<void>;
52
+ }
9
53
  export type AutoProps<T> = {
10
54
  readonly [K in keyof T]: T[K];
11
55
  };
12
- export type InstanceOf<T> = T extends Constructor<infer I> ? I : T;
13
56
  export type Constructor<T> = new (...args: any[]) => T;
14
57
  export type UnboxConstructor<T> = T extends new (...args: any[]) => infer I ? I : T;
15
58
  export type LoggersType = {
@@ -18,26 +61,29 @@ export type LoggersType = {
18
61
  error: (s: string) => void;
19
62
  warn: (s: string) => void;
20
63
  };
21
- type IsAUCO<T> = T extends {
64
+ type IsAUCOBase<T> = T extends {
22
65
  className: string;
66
+ _id: any;
23
67
  } ? true : false;
24
- type AllowStringForRefs<V> = NonNullable<V> extends Array<infer U> ? IsAUCO<NonNullable<U>> extends true ? (U | string | ObjectIdLike)[] : V : IsAUCO<NonNullable<V>> extends true ? V | string | ObjectIdLike : V;
25
- type OnlyStringForRefs<V> = NonNullable<V> extends Array<infer U> ? IsAUCO<NonNullable<U>> extends true ? string[] : V : IsAUCO<NonNullable<V>> extends true ? string : V;
26
- export type Cache<T> = {
27
- references: {
28
- [K in keyof T]?: AutoUpdateManager<AutoUpdatedClientObject<any>>;
29
- };
68
+ type AllowStringForRefs<V> = NonNullable<V> extends Array<infer U> ? IsAUCOBase<NonNullable<U>> extends true ? (U | string | ObjectIdLike)[] : V : IsAUCOBase<NonNullable<V>> extends true ? V | string | ObjectIdLike : V;
69
+ type OnlyStringForRefs<V> = V extends any ? (V extends Array<infer U> ? OnlyStringForRefs<U>[] : V extends IAutoUpdatedClientObjectBase ? string : V extends Date ? V : V extends ObjectId | ObjectIdLike ? string : V extends object ? {
70
+ [K in keyof V as V[K] extends Function ? never : K]: K extends "_id" ? string : OnlyStringForRefs<V[K]>;
71
+ } : V) : never;
72
+ export type DEMCache = {
73
+ references: Record<string, any>;
30
74
  };
31
- export type IsData<T> = {
32
- [K in keyof T]: AllowStringForRefs<T[K]>;
75
+ export type Pure<T extends object, Base = IAutoUpdatedClientObject<any>> = Omit<T, keyof Base | "parentManager" | "callbacks" | "classParam" | "className" | "properties" | "isLoaded" | "extractedData" | "getValue" | "setValue" | "loadFromDB" | "setValue_">;
76
+ export type IsData<T extends object> = {
77
+ [K in keyof Pure<T> as T[K] extends Function ? never : K]: AllowStringForRefs<T[K]>;
33
78
  } & {
34
- _id: any;
79
+ _id: MongoId;
35
80
  };
36
- export type ExtractedData<T, Base = AutoUpdatedClientObject<T>> = {
37
- [K in keyof FixPure<T, Base>]: OnlyStringForRefs<T[K]>;
81
+ export type ExtractedData<T extends object, Base = IAutoUpdatedClientObject<any>> = {
82
+ [K in keyof IsData<T> as K extends "_id" ? never : K]: OnlyStringForRefs<IsData<T>[K]>;
83
+ } & {
84
+ _id: string;
38
85
  };
39
- type FixPure<T, Base> = Omit<T, keyof Omit<Base, "_id">>;
40
- export type SocketEvent = [string, any, (res: ServerResponse<any>) => void];
86
+ export type SocketEvent = [string, unknown, (res: ServerResponse<unknown>) => void];
41
87
  export type ServerResponse<T> = {
42
88
  data: T;
43
89
  message?: string;
@@ -47,33 +93,32 @@ export type ServerResponse<T> = {
47
93
  success: false;
48
94
  };
49
95
  export type ServerUpdateRequest<T> = {
50
- _id: RefType;
96
+ _id: MongoId;
51
97
  key: string;
52
- value: any;
98
+ value: unknown;
53
99
  };
54
- export declare function classProp(target: any, propertyKey: string): void;
55
- export declare function populatedRef(where: string): (target: any, propertyKey: string) => void;
56
- export declare function classRef(): (target: any, propertyKey: string) => void;
100
+ export declare function classProp(target: object, propertyKey: string): void;
101
+ export declare function populatedRef(where: string): (target: object, propertyKey: string) => void;
102
+ export declare function classRef(): (target: object, propertyKey: string) => void;
57
103
  export type Pretty<T> = {
58
104
  [K in keyof T]: T[K];
59
105
  };
60
106
  export type StripPrototypePrefix<P extends string> = P extends "prototype" ? never : P extends `prototype.${infer Rest}` ? Rest : P;
61
- export type Recurseable<T> = T extends object ? T extends Array<any> | Function ? never : T : never;
107
+ export type Recurseable<T> = T extends object ? T extends Array<unknown> | Function ? never : T : never;
62
108
  export type OnlyClassKeys<T> = {
63
109
  [K in keyof T]: K;
64
110
  }[keyof T] & string;
65
111
  export type Split<S extends string> = S extends `${infer L}.${infer R}` ? [L, ...Split<R>] : [S];
66
112
  export type NonOptional<T> = Exclude<T, null | undefined>;
67
- export type DeAutoUpdate<T> = T extends AutoUpdatedClientObject<infer U> ? U : T;
68
- export type RecursiveDeAutoUpdate<T extends AutoUpdatedClientObject<any>> = T extends AutoUpdatedClientObject<infer U> ? U extends object ? DeAutoUpdate<U> : U : T;
113
+ export type DeAutoUpdate<T> = T extends IAutoUpdatedClientObject<any> ? unknown : T;
114
+ export type RecursiveDeAutoUpdate<T extends IAutoUpdatedClientObject<any>> = T extends IAutoUpdatedClientObject<any> ? unknown : T;
69
115
  export type OnlyAddedKeys<Sub, Parent> = Pick<Sub, Exclude<keyof Sub, keyof Omit<Parent, "_id">>>;
70
116
  export type Prev = [never, 0, 1, 2, 3];
71
117
  export type Join<K, P> = K extends string | number ? P extends string | number ? `${K}${"" extends P ? "" : "."}${P}` : never : never;
72
- export type Paths<T, Base, D extends number = 3> = [D] extends [never] ? never : NonNullable<T> extends object ? {
73
- [K in keyof OnlyAddedKeys<NonNullable<T>, Base> & string]-?: NonNullable<NonNullable<T>[K]> extends Function ? never : NonNullable<NonNullable<T>[K]> extends Array<any> | Date | ObjectId ? K : NonNullable<NonNullable<T>[K]> extends object ? K | Join<K, Paths<NonNullable<NonNullable<T>[K]>, Base, Prev[D]>> : K;
118
+ export type Paths<T, Base, D extends number = 3> = 0 extends (1 & T) ? string : [D] extends [never] ? never : NonNullable<T> extends object ? {
119
+ [K in keyof OnlyAddedKeys<NonNullable<T>, Base> & string]-?: NonNullable<NonNullable<T>[K]> extends Function ? never : NonNullable<NonNullable<T>[K]> extends Array<unknown> | Date | ObjectId ? K : NonNullable<NonNullable<T>[K]> extends object ? K | Join<K, Paths<NonNullable<NonNullable<T>[K]>, Base, Prev[D]>> : K;
74
120
  }[keyof OnlyAddedKeys<NonNullable<T>, Base> & string] : never;
75
- export type PathValueOf<T, P extends string> = P extends `${infer K}.${infer Rest}` ? K extends keyof NonNullable<T> ? PathValueOf<NonNullable<NonNullable<T>[K]>, Rest> : never : P extends keyof NonNullable<T> ? NonNullable<T>[P] : never;
76
- export type Pure<T, Base = AutoUpdatedClientObject<T>> = FixPure<T, Base>;
121
+ export type PathValueOf<T, P extends string> = 0 extends (1 & T) ? any : P extends `${infer K}.${infer Rest}` ? K extends keyof NonNullable<T> ? PathValueOf<NonNullable<NonNullable<T>[K]>, Rest> : never : P extends keyof NonNullable<T> ? NonNullable<T>[P] : never;
77
122
  export declare const EVENT_INTERNAL_PRE_LOADED = "pre-loaded";
78
123
  export declare const EVENT_UPDATE = "update";
79
124
  export declare const EVENT_DELETE = "delete";
@@ -83,7 +128,7 @@ export declare const EVENT_STARTUP = "startup";
83
128
  export type GlobalCache = {
84
129
  objects: Record<string, {
85
130
  className: string;
86
- object: AutoUpdatedClientObject<any>;
131
+ object: IAutoUpdatedClientObjectBase;
87
132
  }>;
88
133
  };
89
134
  export declare const globalCache: GlobalCache;
@@ -1 +1 @@
1
- {"version":3,"file":"CommonTypes.js","sourceRoot":"","sources":["../CommonTypes.ts"],"names":[],"mappings":"AAEA,OAAO,kBAAkB,CAAC;AAoE1B,MAAM,UAAU,SAAS,CAAC,MAAW,EAAE,WAAmB;IACtD,MAAM,KAAK,GAAG,OAAO,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;IAC5D,MAAM,QAAQ,GAAG,CAAC,GAAG,KAAK,EAAE,WAAW,CAAC,CAAC;IACzC,OAAO,CAAC,cAAc,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAAa;IACtC,OAAO,UAAU,MAAW,EAAE,WAAmB;QAC7C,QAAQ,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QAChC,OAAO,CAAC,cAAc,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IACjE,CAAC,CAAC;AACN,CAAC;AAED,MAAM,UAAU,QAAQ;IACpB,OAAO,UAAU,MAAW,EAAE,WAAmB;QAC7C,OAAO,CAAC,cAAc,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IAC/D,CAAC,CAAC;AACN,CAAC;AAoCD,MAAM,CAAC,MAAM,yBAAyB,GAAG,YAAY,CAAC;AACtD,MAAM,CAAC,MAAM,YAAY,GAAG,QAAQ,CAAC;AACrC,MAAM,CAAC,MAAM,YAAY,GAAG,QAAQ,CAAC;AACrC,MAAM,CAAC,MAAM,SAAS,GAAG,KAAK,CAAC;AAC/B,MAAM,CAAC,MAAM,SAAS,GAAG,KAAK,CAAC;AAC/B,MAAM,CAAC,MAAM,aAAa,GAAG,SAAS,CAAC;AASvC,MAAM,CAAC,MAAM,WAAW,GAAgB;IACpC,OAAO,EAAE,EAAE;CACd,CAAC"}
1
+ {"version":3,"file":"CommonTypes.js","sourceRoot":"","sources":["../CommonTypes.ts"],"names":[],"mappings":"AAEA,OAAO,kBAAkB,CAAC;AA4G1B,MAAM,UAAU,SAAS,CAAC,MAAc,EAAE,WAAmB;IACzD,MAAM,KAAK,GAAI,OAAO,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,CAAc,IAAI,EAAE,CAAC;IAC1E,MAAM,QAAQ,GAAG,CAAC,GAAG,KAAK,EAAE,WAAW,CAAC,CAAC;IACzC,OAAO,CAAC,cAAc,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAAa;IACtC,OAAO,UAAU,MAAc,EAAE,WAAmB;QAChD,QAAQ,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QAChC,OAAO,CAAC,cAAc,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IACjE,CAAC,CAAC;AACN,CAAC;AAED,MAAM,UAAU,QAAQ;IACpB,OAAO,UAAU,MAAc,EAAE,WAAmB;QAChD,OAAO,CAAC,cAAc,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IAC/D,CAAC,CAAC;AACN,CAAC;AAkCD,MAAM,CAAC,MAAM,yBAAyB,GAAG,YAAY,CAAC;AACtD,MAAM,CAAC,MAAM,YAAY,GAAG,QAAQ,CAAC;AACrC,MAAM,CAAC,MAAM,YAAY,GAAG,QAAQ,CAAC;AACrC,MAAM,CAAC,MAAM,SAAS,GAAG,KAAK,CAAC;AAC/B,MAAM,CAAC,MAAM,SAAS,GAAG,KAAK,CAAC;AAC/B,MAAM,CAAC,MAAM,aAAa,GAAG,SAAS,CAAC;AASvC,MAAM,CAAC,MAAM,WAAW,GAAgB;IACpC,OAAO,EAAE,EAAE;CACd,CAAC"}
@@ -1,9 +1,9 @@
1
- import { Join, OnlyAddedKeys, Prev } from "./CommonTypes";
1
+ import { Join, OnlyAddedKeys, Prev } from "./CommonTypes.js";
2
2
  import { ObjectId, Types } from "mongoose";
3
3
  export type NonOptional<T> = Exclude<T, null | undefined>;
4
4
  export type Paths<T, Base, D extends number = 3> = [D] extends [never] ? never : NonNullable<T> extends object ? {
5
- [K in keyof OnlyAddedKeys<NonNullable<T>, Base> & string]-?: NonNullable<NonNullable<T>[K]> extends Function ? never : NonNullable<NonNullable<T>[K]> extends Array<any> | Date | ObjectId | Types.ObjectId ? K : NonNullable<NonNullable<T>[K]> extends object ? K | Join<K, Paths<NonNullable<NonNullable<T>[K]>, Base, Prev[D]>> : K;
5
+ [K in keyof OnlyAddedKeys<NonNullable<T>, Base> & string]-?: NonNullable<NonNullable<T>[K]> extends Function ? never : NonNullable<NonNullable<T>[K]> extends Array<unknown> | Date | ObjectId | Types.ObjectId ? K : NonNullable<NonNullable<T>[K]> extends object ? K | Join<K, Paths<NonNullable<NonNullable<T>[K]>, Base, Prev[D]>> : K;
6
6
  }[keyof OnlyAddedKeys<NonNullable<T>, Base> & string] : never;
7
- type SafeGet<T, K extends string> = T extends any ? K extends keyof NonNullable<T> ? NonNullable<T>[K] : never : never;
7
+ type SafeGet<T, K extends string> = T extends unknown ? K extends keyof NonNullable<T> ? NonNullable<T>[K] : never : never;
8
8
  export type PathValueOf<T, P extends string> = P extends `${infer K}.${infer Rest}` ? PathValueOf<SafeGet<T, K>, Rest> : SafeGet<T, P>;
9
9
  export {};
package/dist/server.d.ts CHANGED
@@ -1,6 +1,5 @@
1
- import * as AutoUpdateServerManagerClass from "./AutoUpdateServerManagerClass";
2
- import * as AutoUpdateManagerClass from "./AutoUpdateManagerClass";
3
- import * as AutoUpdatedClientObjectClass from "./AutoUpdatedClientObjectClass";
4
- import * as AutoUpdatedServerObjectClass from "./AutoUpdatedServerObjectClass";
5
- import * as CommonTypes from "./CommonTypes_server";
6
- export { AutoUpdateServerManagerClass, AutoUpdateManagerClass, AutoUpdatedClientObjectClass, AutoUpdatedServerObjectClass, CommonTypes, };
1
+ export * as CommonTypes from "./CommonTypes_server.js";
2
+ export * as AutoUpdatedServerObjectClass from "./AutoUpdatedServerObjectClass.js";
3
+ export * as AutoUpdatedClientObjectClass from "./AutoUpdatedClientObjectClass.js";
4
+ export * as AutoUpdateManagerClass from "./AutoUpdateManagerClass.js";
5
+ export * as AutoUpdateServerManagerClass from "./AutoUpdateServerManagerClass.js";
package/dist/server.js CHANGED
@@ -1,7 +1,6 @@
1
- import * as AutoUpdateServerManagerClass from "./AutoUpdateServerManagerClass";
2
- import * as AutoUpdateManagerClass from "./AutoUpdateManagerClass";
3
- import * as AutoUpdatedClientObjectClass from "./AutoUpdatedClientObjectClass";
4
- import * as AutoUpdatedServerObjectClass from "./AutoUpdatedServerObjectClass";
5
- import * as CommonTypes from "./CommonTypes_server";
6
- export { AutoUpdateServerManagerClass, AutoUpdateManagerClass, AutoUpdatedClientObjectClass, AutoUpdatedServerObjectClass, CommonTypes, };
1
+ export * as CommonTypes from "./CommonTypes_server.js";
2
+ export * as AutoUpdatedServerObjectClass from "./AutoUpdatedServerObjectClass.js";
3
+ export * as AutoUpdatedClientObjectClass from "./AutoUpdatedClientObjectClass.js";
4
+ export * as AutoUpdateManagerClass from "./AutoUpdateManagerClass.js";
5
+ export * as AutoUpdateServerManagerClass from "./AutoUpdateServerManagerClass.js";
7
6
  //# sourceMappingURL=server.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,4BAA4B,MAAM,gCAAgC,CAAC;AAC/E,OAAO,KAAK,sBAAsB,MAAM,0BAA0B,CAAC;AACnE,OAAO,KAAK,4BAA4B,MAAM,gCAAgC,CAAC;AAC/E,OAAO,KAAK,4BAA4B,MAAM,gCAAgC,CAAC;AAC/E,OAAO,KAAK,WAAW,MAAM,sBAAsB,CAAC;AAEpD,OAAO,EACL,4BAA4B,EAC5B,sBAAsB,EACtB,4BAA4B,EAC5B,4BAA4B,EAC5B,WAAW,GACZ,CAAC"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,WAAW,MAAM,yBAAyB,CAAC;AACvD,OAAO,KAAK,4BAA4B,MAAM,mCAAmC,CAAC;AAClF,OAAO,KAAK,4BAA4B,MAAM,mCAAmC,CAAC;AAClF,OAAO,KAAK,sBAAsB,MAAM,6BAA6B,CAAC;AACtE,OAAO,KAAK,4BAA4B,MAAM,mCAAmC,CAAC"}