@prestizni-software/server-dem 0.5.15 → 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,8 +1,19 @@
1
- import { AutoUpdatedClientObject, getMetadataRecursive, processIsRefProperties } from "./AutoUpdatedClientObjectClass.js";
2
- import { EVENT_UPDATE, EVENT_DELETE, EVENT_INTERNAL_PRE_LOADED } from "./CommonTypes.js";
1
+ import { AutoUpdatedClientObject, getMetadataRecursive } from "./AutoUpdatedClientObjectClass";
2
+ import "reflect-metadata";
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
+ }
4
15
  export class AutoUpdatedServerObject extends AutoUpdatedClientObject {
5
- isServer;
16
+ isServer = true;
6
17
  entry;
7
18
  constructor(classParam, socket, data, loggers, className, parentManager, emitter) {
8
19
  if (!classParam ||
@@ -12,10 +23,6 @@ export class AutoUpdatedServerObject extends AutoUpdatedClientObject {
12
23
  !className ||
13
24
  !parentManager ||
14
25
  !emitter) {
15
- super();
16
- this.isServer = true;
17
- this.entry = null;
18
- this.parentManager = parentManager;
19
26
  if (!classParam &&
20
27
  !socket &&
21
28
  !data &&
@@ -23,139 +30,129 @@ export class AutoUpdatedServerObject extends AutoUpdatedClientObject {
23
30
  !className &&
24
31
  !parentManager &&
25
32
  !emitter) {
33
+ super();
34
+ this.entry = undefined;
26
35
  return;
27
36
  }
28
37
  else
29
- throw new Error("Missing arguments for AutoUpdatedServerObject: " + className);
38
+ throw new Error("Missing arguments???");
30
39
  }
31
40
  super(classParam, socket, data, loggers, className, parentManager, {
32
- update: (_x, _key) => { },
33
- delete: (_x) => { },
34
- new: (_x) => { },
35
- progress: (_x) => { },
41
+ update: (x) => { },
42
+ delete: (x) => { },
43
+ new: (x) => { },
44
+ progress: (x) => { },
36
45
  }, 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;
42
46
  for (const prop of this.properties) {
43
47
  if (typeof prop !== "string")
44
48
  continue;
45
49
  const isRef = getMetadataRecursive("isRef", this, prop);
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
- }
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());
68
56
  }
69
57
  }
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();
58
+ this.parentManager = parentManager;
59
+ this.entry = null;
84
60
  }
85
61
  async loadFromDocument(document) {
86
62
  this.entry = document;
87
63
  this.data = { ...this.data, ...this.entry.toObject() };
88
- this.isLoading = false;
64
+ if (!this.data._id && this.entry._id) {
65
+ this.data._id = this.entry._id;
66
+ }
89
67
  this.generateSettersAndGetters();
90
- this.emitter.emit(EVENT_INTERNAL_PRE_LOADED + this.EmitterID);
91
68
  }
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;
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.");
96
95
  }
97
- async setValueInternal(key, value, silent = false, noUpdate = false) {
96
+ async setValueInternal(key, value, _silent = false) {
98
97
  try {
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();
98
+ if (!this.data?._id) {
99
+ throw new Error(`Cannot update object ${this.className} - missing _id. Data: ${JSON.stringify(this.data)}`);
108
100
  }
101
+ const manager = this.parentManager.managers[this.className];
102
+ await manager.model.updateOne({ _id: this.data._id }, { $set: { [key]: value } });
109
103
  const update = this.makeUpdate(key, value);
110
- const event = EVENT_UPDATE + this.className + _id.toString();
104
+ const event = EVENT_UPDATE + this.className + this.data._id.toString();
111
105
  this.socket.emit(event, update);
112
- return { success: true, msg: "Success" };
106
+ return {
107
+ success: true,
108
+ msg: "Updated",
109
+ };
113
110
  }
114
111
  catch (error) {
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 };
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
+ };
117
118
  }
118
119
  }
119
120
  async destroy(once = false) {
120
- const _id = this.data._id;
121
- if (!_id)
122
- return { success: false, message: "Missing _id" };
123
121
  if (!once) {
124
- return await this.parentManager.deleteObject(_id);
122
+ return await this.parentManager.deleteObject(this.data._id);
125
123
  }
126
124
  try {
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);
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.");
132
128
  }
133
129
  catch (error) {
134
- this.loggers.error?.(`Error deleting object from database - ${this.className} - ${_id.toString()}: ${error.message}`);
135
- return { success: false, message: "Deletion unsuccessful: " + error.message };
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
+ };
136
140
  }
137
- this.socket.emit(EVENT_DELETE + this.className, _id.toString());
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);
138
144
  await this.wipeSelf();
139
- return { success: true, message: "Deleted" };
145
+ return {
146
+ success: true,
147
+ message: "Deleted",
148
+ };
140
149
  }
141
150
  async onUpdate(noUpdate = false) {
142
151
  if (noUpdate)
143
152
  return;
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();
153
+ await this.parentManager.options?.onUpdate?.(this, (a, b) => {
154
+ return this.setValue__(a, b, false, true, true);
155
+ });
158
156
  }
159
- return obj;
160
157
  }
161
158
  //# 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,58 +1,15 @@
1
1
  import { EventEmitter } from "eventemitter3";
2
2
  import { ObjectId, ObjectIdLike } from "bson";
3
3
  import "reflect-metadata";
4
- export type MongoId = string | ObjectId;
4
+ import { AutoUpdatedClientObject } from "./AutoUpdatedClientObjectClass";
5
+ import { AutoUpdateManager } from "./AutoUpdateManagerClass";
6
+ type RefType = string | ObjectId;
7
+ export type MongoId = RefType;
5
8
  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
- }
53
9
  export type AutoProps<T> = {
54
10
  readonly [K in keyof T]: T[K];
55
11
  };
12
+ export type InstanceOf<T> = T extends Constructor<infer I> ? I : T;
56
13
  export type Constructor<T> = new (...args: any[]) => T;
57
14
  export type UnboxConstructor<T> = T extends new (...args: any[]) => infer I ? I : T;
58
15
  export type LoggersType = {
@@ -61,29 +18,26 @@ export type LoggersType = {
61
18
  error: (s: string) => void;
62
19
  warn: (s: string) => void;
63
20
  };
64
- type IsAUCOBase<T> = T extends {
21
+ type IsAUCO<T> = T extends {
65
22
  className: string;
66
- _id: any;
67
23
  } ? true : false;
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>;
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
+ };
74
30
  };
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]>;
31
+ export type IsData<T> = {
32
+ [K in keyof T]: AllowStringForRefs<T[K]>;
78
33
  } & {
79
- _id: MongoId;
34
+ _id: any;
80
35
  };
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;
36
+ export type ExtractedData<T, Base = AutoUpdatedClientObject<T>> = {
37
+ [K in keyof FixPure<T, Base>]: OnlyStringForRefs<T[K]>;
85
38
  };
86
- export type SocketEvent = [string, unknown, (res: ServerResponse<unknown>) => void];
39
+ type FixPure<T, Base> = Omit<T, keyof Omit<Base, "_id">>;
40
+ export type SocketEvent = [string, any, (res: ServerResponse<any>) => void];
87
41
  export type ServerResponse<T> = {
88
42
  data: T;
89
43
  message?: string;
@@ -93,32 +47,33 @@ export type ServerResponse<T> = {
93
47
  success: false;
94
48
  };
95
49
  export type ServerUpdateRequest<T> = {
96
- _id: MongoId;
50
+ _id: RefType;
97
51
  key: string;
98
- value: unknown;
52
+ value: any;
99
53
  };
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;
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;
103
57
  export type Pretty<T> = {
104
58
  [K in keyof T]: T[K];
105
59
  };
106
60
  export type StripPrototypePrefix<P extends string> = P extends "prototype" ? never : P extends `prototype.${infer Rest}` ? Rest : P;
107
- export type Recurseable<T> = T extends object ? T extends Array<unknown> | Function ? never : T : never;
61
+ export type Recurseable<T> = T extends object ? T extends Array<any> | Function ? never : T : never;
108
62
  export type OnlyClassKeys<T> = {
109
63
  [K in keyof T]: K;
110
64
  }[keyof T] & string;
111
65
  export type Split<S extends string> = S extends `${infer L}.${infer R}` ? [L, ...Split<R>] : [S];
112
66
  export type NonOptional<T> = Exclude<T, null | undefined>;
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;
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;
115
69
  export type OnlyAddedKeys<Sub, Parent> = Pick<Sub, Exclude<keyof Sub, keyof Omit<Parent, "_id">>>;
116
70
  export type Prev = [never, 0, 1, 2, 3];
117
71
  export type Join<K, P> = K extends string | number ? P extends string | number ? `${K}${"" extends P ? "" : "."}${P}` : never : never;
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;
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;
120
74
  }[keyof OnlyAddedKeys<NonNullable<T>, Base> & string] : never;
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;
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>;
122
77
  export declare const EVENT_INTERNAL_PRE_LOADED = "pre-loaded";
123
78
  export declare const EVENT_UPDATE = "update";
124
79
  export declare const EVENT_DELETE = "delete";
@@ -128,7 +83,7 @@ export declare const EVENT_STARTUP = "startup";
128
83
  export type GlobalCache = {
129
84
  objects: Record<string, {
130
85
  className: string;
131
- object: IAutoUpdatedClientObjectBase;
86
+ object: AutoUpdatedClientObject<any>;
132
87
  }>;
133
88
  };
134
89
  export declare const globalCache: GlobalCache;
@@ -1 +1 @@
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
+ {"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,9 +1,9 @@
1
- import { Join, OnlyAddedKeys, Prev } from "./CommonTypes.js";
1
+ import { Join, OnlyAddedKeys, Prev } from "./CommonTypes";
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<unknown> | 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<any> | 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 unknown ? K extends keyof NonNullable<T> ? NonNullable<T>[K] : never : never;
7
+ type SafeGet<T, K extends string> = T extends any ? 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,5 +1,6 @@
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";
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, };
package/dist/server.js CHANGED
@@ -1,6 +1,7 @@
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";
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, };
6
7
  //# sourceMappingURL=server.js.map
@@ -1 +1 @@
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"}
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"}