@prestizni-software/server-dem 0.2.57 → 0.2.59

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.
Files changed (34) hide show
  1. package/AutoUpdateManagerClass.ts +87 -0
  2. package/AutoUpdateServerManagerClass.ts +309 -0
  3. package/AutoUpdatedClientObjectClass.ts +673 -0
  4. package/AutoUpdatedServerObjectClass.ts +129 -0
  5. package/CHANGELOG.md +4 -0
  6. package/CommonTypes.ts +105 -0
  7. package/CommonTypes_server.ts +81 -0
  8. package/{AutoUpdateServerManagerClass.js → dist/AutoUpdateServerManagerClass.js} +9 -1
  9. package/dist/AutoUpdateServerManagerClass.js.map +1 -0
  10. package/{AutoUpdatedClientObjectClass.d.ts → dist/AutoUpdatedClientObjectClass.d.ts} +3 -3
  11. package/{AutoUpdatedClientObjectClass.js → dist/AutoUpdatedClientObjectClass.js} +5 -3
  12. package/dist/AutoUpdatedClientObjectClass.js.map +1 -0
  13. package/dist/tsconfig.tsbuildinfo +1 -0
  14. package/package.json +10 -6
  15. package/server.ts +13 -0
  16. package/tsconfig.json +113 -0
  17. package/AutoUpdateServerManagerClass.js.map +0 -1
  18. package/AutoUpdatedClientObjectClass.js.map +0 -1
  19. /package/{AutoUpdateManagerClass.d.ts → dist/AutoUpdateManagerClass.d.ts} +0 -0
  20. /package/{AutoUpdateManagerClass.js → dist/AutoUpdateManagerClass.js} +0 -0
  21. /package/{AutoUpdateManagerClass.js.map → dist/AutoUpdateManagerClass.js.map} +0 -0
  22. /package/{AutoUpdateServerManagerClass.d.ts → dist/AutoUpdateServerManagerClass.d.ts} +0 -0
  23. /package/{AutoUpdatedServerObjectClass.d.ts → dist/AutoUpdatedServerObjectClass.d.ts} +0 -0
  24. /package/{AutoUpdatedServerObjectClass.js → dist/AutoUpdatedServerObjectClass.js} +0 -0
  25. /package/{AutoUpdatedServerObjectClass.js.map → dist/AutoUpdatedServerObjectClass.js.map} +0 -0
  26. /package/{CommonTypes.d.ts → dist/CommonTypes.d.ts} +0 -0
  27. /package/{CommonTypes.js → dist/CommonTypes.js} +0 -0
  28. /package/{CommonTypes.js.map → dist/CommonTypes.js.map} +0 -0
  29. /package/{CommonTypes_server.d.ts → dist/CommonTypes_server.d.ts} +0 -0
  30. /package/{CommonTypes_server.js → dist/CommonTypes_server.js} +0 -0
  31. /package/{CommonTypes_server.js.map → dist/CommonTypes_server.js.map} +0 -0
  32. /package/{server.d.ts → dist/server.d.ts} +0 -0
  33. /package/{server.js → dist/server.js} +0 -0
  34. /package/{server.js.map → dist/server.js.map} +0 -0
@@ -0,0 +1,129 @@
1
+ import { IObjectWithTypegooseFunction } from "@typegoose/typegoose/lib/types.js";
2
+ import { Types, Document } from "mongoose";
3
+ import { AutoUpdatedClientObject } from "./AutoUpdatedClientObjectClass.js";
4
+ import { AutoUpdateServerManager } from "./AutoUpdateServerManagerClass.js";
5
+ import "reflect-metadata";
6
+ import { DefaultEventsMap, Server } from "socket.io";
7
+ import { Constructor, UnboxConstructor, LoggersType, EventEmitter3, AutoProps, IsData, ServerUpdateRequest, InstanceOf } from "./CommonTypes.js";
8
+ import { Paths, PathValueOf } from "./CommonTypes_server.js";
9
+
10
+ type SocketType = Server<DefaultEventsMap, DefaultEventsMap, DefaultEventsMap, any>;
11
+
12
+ export type AutoUpdated<T extends Constructor<any>> = AutoUpdatedServerObject<T> & UnboxConstructor<T>;
13
+
14
+ export async function createAutoUpdatedClass<C extends Constructor<any>>(
15
+ classParam: C,
16
+ socket: SocketType,
17
+ data: DocWithProps<InstanceType<C>>,
18
+ loggers: LoggersType,
19
+ autoClasser: AutoUpdateServerManager<any>,
20
+ emitter: EventEmitter3
21
+ ): Promise<AutoProps<C> & AutoUpdated<InstanceType<C>> & InstanceType<C>> {
22
+ const instance = new (class extends AutoUpdatedServerObject<
23
+ InstanceType<C>
24
+ > {})(
25
+ socket,
26
+ data,
27
+ loggers,
28
+ Reflect.getMetadata(
29
+ "props",
30
+ classParam.prototype
31
+ ) as (keyof InstanceType<C>)[],
32
+ classParam.name,
33
+ classParam,
34
+ autoClasser,
35
+ emitter
36
+ );
37
+ await instance.isLoadedAsync();
38
+ await instance.checkAutoStatusChange();
39
+ return instance as AutoProps<C> & AutoUpdated<InstanceType<C>> & InstanceType<C>;
40
+ }
41
+
42
+ // ---------------------- Class ----------------------
43
+ export abstract class AutoUpdatedServerObject<
44
+ T extends Constructor<any>
45
+ > extends AutoUpdatedClientObject<T> {
46
+ protected readonly isServer: boolean = true;
47
+ private readonly entry: DocWithProps<T>;
48
+ protected override autoClasser: AutoUpdateServerManager<any>;
49
+
50
+ constructor(
51
+ socket: SocketType,
52
+ data: DocWithProps<T>,
53
+ loggers: {
54
+ info: (...args: any[]) => void;
55
+ debug: (...args: any[]) => void;
56
+ error: (...args: any[]) => void;
57
+ warn?: (...args: any[]) => void;
58
+ },
59
+ properties: (keyof T)[],
60
+ className: string,
61
+ classProp: Constructor<T>,
62
+ autoClasser: AutoUpdateServerManager<any>,
63
+ emitter: EventEmitter3
64
+ ) {
65
+ super(
66
+ socket as any,
67
+ data.toObject(),
68
+ loggers,
69
+ properties,
70
+ className,
71
+ classProp,
72
+ autoClasser,
73
+ emitter
74
+ );
75
+ this.autoClasser = autoClasser;
76
+ this.entry = data;
77
+ }
78
+
79
+ public setValue_<K extends Paths<InstanceOf<T>>>(
80
+ key: K,
81
+ val: PathValueOf<T, K>
82
+ ): Promise<{ success: boolean; msg: string }> {
83
+ return this.setValue__(key, val);
84
+ }
85
+ protected handleNewObject(_data: IsData<T>) {
86
+ throw new Error("Cannot create new objects like this.");
87
+ }
88
+ protected async setValueInternal(key: string, value: any): Promise<{ success: boolean, message: string }> {
89
+ try {
90
+ await (
91
+ this.autoClasser.classers[this.className] as AutoUpdateServerManager<any>
92
+ ).model.updateOne({ _id: this.data._id }, { $set: { [key]: value } });
93
+
94
+ const update: ServerUpdateRequest<T> = this.makeUpdate(key, value);
95
+ this.socket.emit("update" + this.className + this.data._id, update);
96
+
97
+ return {
98
+ success: true,
99
+ message: "Updated",
100
+ };
101
+ } catch (error) {
102
+ this.loggers.error("Error saving object:", error);
103
+ return {
104
+ success: false,
105
+ message: "Error saving object: " + (error as Error).message,
106
+ };
107
+ }
108
+ }
109
+
110
+ public async destroy(): Promise<void> {
111
+ this.socket.emit("delete" + this.className, this.data._id);
112
+ await this.entry.deleteOne({ _id: this.data._id });
113
+ this.wipeSelf();
114
+ }
115
+
116
+ public override async checkAutoStatusChange() {
117
+ const neededStatus = await this.autoClasser.options?.autoStatusDefinitions?.definition(this) as any;
118
+ const statusPath = this.autoClasser.options?.autoStatusDefinitions?.statusProperty as any
119
+ if(!neededStatus || !statusPath) return;
120
+ const currentStatus = this.getValue(this.autoClasser.options?.autoStatusDefinitions?.statusProperty as any)
121
+ if (neededStatus === currentStatus) return;
122
+ this.setValue(statusPath, neededStatus);
123
+ }
124
+
125
+ }
126
+
127
+ export type DocWithProps<T> = Document &
128
+ Omit<T & { _id: Types.ObjectId; __v: number }, "typegooseName"> &
129
+ IObjectWithTypegooseFunction;
package/CHANGELOG.md CHANGED
@@ -2,6 +2,10 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
4
4
 
5
+ ### [0.2.59](https://github.com/Prestizni-Software/server-dem/compare/v0.2.58...v0.2.59) (2025-11-21)
6
+
7
+ ### [0.2.58](https://github.com/Prestizni-Software/server-dem/compare/v0.2.57...v0.2.58) (2025-11-21)
8
+
5
9
  ### [0.2.57](https://github.com/Prestizni-Software/server-dem/compare/v0.2.56...v0.2.57) (2025-11-20)
6
10
 
7
11
  ### [0.2.56](https://github.com/Prestizni-Software/server-dem/compare/v0.2.55...v0.2.56) (2025-11-18)
package/CommonTypes.ts ADDED
@@ -0,0 +1,105 @@
1
+ import EventEmitter from "eventemitter3";
2
+ import { ObjectId } from "bson";
3
+ import "reflect-metadata";
4
+
5
+ type RefType = string | ObjectId;
6
+ export type EventEmitter3 = EventEmitter;
7
+ // ---------------------- Core ----------------------
8
+ export type AutoProps<T> = {
9
+ readonly [K in keyof T]: T[K];
10
+ };
11
+ export type InstanceOf<T> = T extends Constructor<infer I> ? I : T;
12
+
13
+ export type Constructor<T> = new (...args: any[]) => T;
14
+ export type UnboxConstructor<T> = T extends new (...args: any[]) => infer I
15
+ ? I
16
+ : T;
17
+
18
+ export type LoggersType = {
19
+ info: (...args: any[]) => void;
20
+ debug: (...args: any[]) => void;
21
+ error: (...args: any[]) => void;
22
+ warn?: (...args: any[]) => void;
23
+ };
24
+ export type LoggersTypeInternal = LoggersType & {
25
+ warn: (...args: any[]) => void;
26
+ };
27
+ export type IsData<T> = T extends { _id: any } ? T : never;
28
+ export type ServerResponse<T> =
29
+ | {
30
+ data: T; // in this case, the applied patch
31
+ message: string;
32
+ success: true;
33
+ }
34
+ | {
35
+ data?: null;
36
+ message: string;
37
+ success: false;
38
+ };
39
+
40
+ export type ServerUpdateResponse<T> = {
41
+ data: Partial<IsData<T>>;
42
+ message: string;
43
+ success: true;
44
+ updateId: string;
45
+ };
46
+
47
+ export type ServerUpdateRequest<T> = {
48
+ _id: RefType;
49
+ key: string;
50
+ value: any;
51
+ };
52
+
53
+ export function classProp(target: any, propertyKey: string) {
54
+ const props = Reflect.getMetadata("props", target) || [];
55
+ props.push(propertyKey);
56
+ Reflect.defineMetadata("props", props, target);
57
+ }
58
+
59
+ export function classRef(where: string) {
60
+ return function (target: any, propertyKey: string) {
61
+ Reflect.defineMetadata("isRef", where, target, propertyKey);
62
+ };
63
+ }
64
+ export type Pretty<T> = { [K in keyof T]: T[K] };// ---------------------- Paths ----------------------
65
+ export type Prev = [never, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
66
+ export type StripPrototypePrefix<P extends string> = P extends "prototype" ? never : P extends `prototype.${infer Rest}` ? Rest : P;
67
+ export type Recurseable<T> = T extends object ? T extends Array<any> | Function ? never : T : never;
68
+ export type Join<K extends string, P extends string> = `${K}.${P}`;
69
+ export type OnlyClassKeys<T> = {
70
+ [K in keyof T]: K;
71
+ }[keyof T] &
72
+ string;
73
+ export type Split<S extends string> = S extends `${infer L}.${infer R}` ? [L, ...Split<R>] : [S];
74
+ export type NonOptional<T> = Exclude<T, null | undefined>;
75
+ // ---------------------- Paths ----------------------
76
+
77
+ export type Paths<
78
+ T,
79
+ Depth extends number = 5,
80
+ OriginalDepth extends number = Depth
81
+ > = Depth extends never ? never : {
82
+ [K in OnlyClassKeys<NonOptional<T>>]: K extends "_id" ? StripPrototypePrefix<`${K}`> : StripPrototypePrefix<
83
+ PathsHelper<K, NonOptional<T>[K], Depth, OriginalDepth>
84
+ >;
85
+ }[OnlyClassKeys<NonOptional<T>>];
86
+
87
+ export type PathsHelper<
88
+ K extends string,
89
+ V,
90
+ Depth extends number,
91
+ OriginalDepth extends number
92
+ > = Recurseable<V> extends never ? `${K}` : `${K}` | Join<K, Paths<V, Prev[Depth], OriginalDepth>>;
93
+ // ---------------------- PathValueOf ----------------------
94
+ export type PathValue<
95
+ T,
96
+ Parts extends string[],
97
+ Depth extends number = 5
98
+ > = Depth extends 0 ? never : T extends unknown ? Parts extends [infer K, ...infer Rest] ? K extends string ? K extends keyof T ? Rest extends string[] ? Rest["length"] extends 0 ? T[K] : PathValue<T[K], Rest, Prev[Depth]> : never : never : never : T : never;
99
+
100
+ export type PathValueOf<
101
+ T,
102
+ P extends string,
103
+ Depth extends number = 6
104
+ > = PathValue<InstanceOf<T>, Split<P>, Depth>;
105
+
@@ -0,0 +1,81 @@
1
+ import { Ref } from "@typegoose/typegoose";
2
+ import {
3
+ InstanceOf,
4
+ Join,
5
+ OnlyClassKeys,
6
+ Prev,
7
+ Recurseable,
8
+ Split,
9
+ StripPrototypePrefix,
10
+ } from "./CommonTypes";
11
+
12
+ // ---------------------- DeRef ----------------------
13
+ export type NonOptional<T> = Exclude<T, null | undefined>;
14
+
15
+ export type DeRef<T> = {
16
+ [K in keyof T]: T[K] extends Ref<infer U>
17
+ ? U
18
+ : T[K] extends Ref<infer U> | null | undefined
19
+ ? U
20
+ : T[K];
21
+ };
22
+
23
+ export type RefToId<T> = {
24
+ [K in keyof T]: T[K] extends Ref<infer U> ? U | string : T[K];
25
+ };
26
+ // ---------------------- Paths ----------------------
27
+ export type Paths<
28
+ T,
29
+ Depth extends number = 5,
30
+ OriginalDepth extends number = Depth
31
+ > = Depth extends never
32
+ ? never
33
+ : {
34
+ [K in OnlyClassKeys<DeRef<NonOptional<T>>>]: K extends "_id"
35
+ ? StripPrototypePrefix<`${K}`>
36
+ : StripPrototypePrefix<
37
+ PathsHelper<K, DeRef<NonOptional<T>>[K], Depth, OriginalDepth>
38
+ >;
39
+ }[OnlyClassKeys<DeRef<NonOptional<T>>>];
40
+
41
+ type PathsHelper<
42
+ K extends string,
43
+ V,
44
+ Depth extends number,
45
+ OriginalDepth extends number
46
+ > = Recurseable<V> extends never
47
+ ? `${K}`
48
+ : `${K}` | Join<K, Paths<DeRef<NonOptional<V>>, Prev[Depth], OriginalDepth>>;
49
+
50
+ // ---------------------- PathValueOf ----------------------
51
+ export type ResolveRef<T> = T extends Ref<infer U> ? U : T;
52
+
53
+ export type PathValue<
54
+ T,
55
+ Parts extends string[],
56
+ Depth extends number = 5
57
+ > = Depth extends 0
58
+ ? never
59
+ : // Distribute over unions in T
60
+ T extends unknown
61
+ ? Parts extends [infer K, ...infer Rest]
62
+ ? K extends string
63
+ ? K extends keyof T
64
+ ? Rest extends string[]
65
+ ? // unwrap at every step; recursion will also distribute
66
+ ResolveRef<
67
+ Rest["length"] extends 0
68
+ ? T[K]
69
+ : PathValue<ResolveRef<T[K]>, Rest, Prev[Depth]>
70
+ >
71
+ : never
72
+ : never
73
+ : never
74
+ : ResolveRef<T>
75
+ : never;
76
+
77
+ export type PathValueOf<
78
+ T,
79
+ P extends string,
80
+ Depth extends number = 6
81
+ > = PathValue<InstanceOf<T>, Split<P>, Depth>;
@@ -19,11 +19,19 @@ export async function AUSManagerFactory(defs, loggers, socket, emitter = new Eve
19
19
  const c = new AutoUpdateServerManager(def.class, loggers, socket, getModelForClass(def.class), classers, emitter, def.options);
20
20
  i++;
21
21
  classers[key] = c;
22
- await c.loadDB();
23
22
  }
24
23
  catch (error) {
25
24
  loggers.error("Error creating manager: " + key);
26
25
  loggers.error(error);
26
+ continue;
27
+ }
28
+ loggers.debug("Loading DB for manager: " + key);
29
+ try {
30
+ classers[key].loadDB();
31
+ }
32
+ catch (error) {
33
+ loggers.error("Error loading DB for manager: " + key);
34
+ loggers.error(error);
27
35
  }
28
36
  }
29
37
  socket.on("connection", async (socket) => {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AutoUpdateServerManagerClass.js","sourceRoot":"","sources":["../AutoUpdateServerManagerClass.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,10 @@
1
1
  import "reflect-metadata";
2
2
  import { Constructor, EventEmitter3, InstanceOf, IsData, LoggersType, LoggersTypeInternal, Paths, PathValueOf } from "./CommonTypes.js";
3
3
  import { AutoUpdateManager } from "./AutoUpdateManagerClass.js";
4
- import { AutoUpdateClientManager } from "./AutoUpdateClientManagerClass.js";
5
4
  import { Socket } from "socket.io-client";
6
5
  type SocketType = Socket<any, any>;
7
6
  export type AutoUpdated<T extends Constructor<any>> = AutoUpdatedClientObject<T> & InstanceOf<T>;
8
- export declare function createAutoUpdatedClass<C extends Constructor<any>>(classParam: C, socket: SocketType, data: IsData<InstanceType<C>> | string, loggers: LoggersType, autoClassers: AutoUpdateClientManager<any>, emitter: EventEmitter3): Promise<AutoUpdated<C>>;
7
+ export declare function createAutoUpdatedClass<C extends Constructor<any>>(classParam: C, socket: SocketType, data: IsData<InstanceType<C>> | string, loggers: LoggersType, autoClassers: AutoUpdateManager<any>, emitter: EventEmitter3, token: string): Promise<AutoUpdated<C>>;
9
8
  export declare abstract class AutoUpdatedClientObject<T extends Constructor<any>> {
10
9
  protected readonly socket: SocketType;
11
10
  protected data: IsData<T>;
@@ -19,8 +18,9 @@ export declare abstract class AutoUpdatedClientObject<T extends Constructor<any>
19
18
  protected isLoadingReferences: boolean;
20
19
  readonly classProp: Constructor<T>;
21
20
  private readonly EmitterID;
21
+ private readonly token;
22
22
  private readonly loadShit;
23
- constructor(socket: SocketType, data: string | IsData<T>, loggers: LoggersType, properties: (keyof T)[], className: string, classProperty: Constructor<T>, autoClasser: AutoUpdateManager<any>, emitter: EventEmitter3);
23
+ constructor(socket: SocketType, data: string | IsData<T>, loggers: LoggersType, properties: (keyof T)[], className: string, classProperty: Constructor<T>, autoClasser: AutoUpdateManager<any>, emitter: EventEmitter3, token?: string);
24
24
  protected handleNewObject(data: IsData<T>): void;
25
25
  get extractedData(): {
26
26
  [K in keyof InstanceType<T>]: InstanceOf<InstanceType<T>>[K];
@@ -1,13 +1,13 @@
1
1
  import "reflect-metadata";
2
2
  import { ObjectId } from "bson";
3
- export async function createAutoUpdatedClass(classParam, socket, data, loggers, autoClassers, emitter) {
3
+ export async function createAutoUpdatedClass(classParam, socket, data, loggers, autoClassers, emitter, token) {
4
4
  if (typeof data !== "string") {
5
5
  checkForMissingRefs(data, [], classParam, autoClassers);
6
6
  processIsRefProperties(data, classParam.prototype, undefined, [], loggers);
7
7
  }
8
8
  const props = Reflect.getMetadata("props", classParam.prototype);
9
9
  const instance = new (class extends AutoUpdatedClientObject {
10
- })(socket, data, loggers, props, classParam.name, classParam, autoClassers, emitter);
10
+ })(socket, data, loggers, props, classParam.name, classParam, autoClassers, emitter, token);
11
11
  await instance.isLoadedAsync();
12
12
  return instance;
13
13
  }
@@ -30,6 +30,7 @@ export class AutoUpdatedClientObject {
30
30
  isLoadingReferences = false;
31
31
  classProp;
32
32
  EmitterID = new ObjectId().toHexString();
33
+ token;
33
34
  loadShit = async () => {
34
35
  if (this.isLoaded()) {
35
36
  try {
@@ -51,7 +52,8 @@ export class AutoUpdatedClientObject {
51
52
  this.isLoadingReferences = false;
52
53
  });
53
54
  };
54
- constructor(socket, data, loggers, properties, className, classProperty, autoClasser, emitter) {
55
+ constructor(socket, data, loggers, properties, className, classProperty, autoClasser, emitter, token = "") {
56
+ this.token = token;
55
57
  this.emitter = emitter;
56
58
  this.classProp = classProperty;
57
59
  this.isLoadingReferences = true;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AutoUpdatedClientObjectClass.js","sourceRoot":"","sources":["../AutoUpdatedClientObjectClass.ts"],"names":[],"mappings":"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"}