@prestizni-software/server-dem 0.6.1 → 0.6.4
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.
- package/dist/AutoUpdateManagerClass.js +18 -3
- package/dist/AutoUpdateManagerClass.js.map +1 -1
- package/dist/AutoUpdateServerManagerClass.d.ts +14 -1
- package/dist/AutoUpdateServerManagerClass.js +167 -74
- package/dist/AutoUpdateServerManagerClass.js.map +1 -1
- package/dist/AutoUpdatedClientObjectClass.d.ts +16 -5
- package/dist/AutoUpdatedClientObjectClass.js +230 -98
- package/dist/AutoUpdatedClientObjectClass.js.map +1 -1
- package/dist/AutoUpdatedServerObjectClass.d.ts +4 -0
- package/dist/AutoUpdatedServerObjectClass.js +104 -56
- package/dist/AutoUpdatedServerObjectClass.js.map +1 -1
- package/dist/CommonTypes.d.ts +74 -8
- package/dist/CommonTypes.js +159 -3
- package/dist/CommonTypes.js.map +1 -1
- package/dist/CommonTypes_server.d.ts +1 -0
- package/dist/CommonTypes_server.js +1 -1
- package/dist/CommonTypes_server.js.map +1 -1
- package/dist/server.d.ts +2 -0
- package/dist/server.js +2 -0
- package/dist/server.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +6 -2
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import _ from "lodash";
|
|
1
2
|
import { AutoUpdatedClientObject, getMetadataRecursive, processIsRefProperties, } from "./AutoUpdatedClientObjectClass.js";
|
|
2
3
|
import { EVENT_UPDATE, EVENT_DELETE, EVENT_INTERNAL_PRE_LOADED, } from "./CommonTypes.js";
|
|
3
4
|
import { ObjectId } from "mongodb";
|
|
@@ -5,6 +6,8 @@ export class AutoUpdatedServerObject extends AutoUpdatedClientObject {
|
|
|
5
6
|
isServer;
|
|
6
7
|
entry;
|
|
7
8
|
saveLock = Promise.resolve();
|
|
9
|
+
loadPromise = null;
|
|
10
|
+
_isUpdating = false;
|
|
8
11
|
constructor(classParam, socket, data, loggers, className, parentManager, emitter) {
|
|
9
12
|
if (!classParam ||
|
|
10
13
|
!socket ||
|
|
@@ -38,58 +41,78 @@ export class AutoUpdatedServerObject extends AutoUpdatedClientObject {
|
|
|
38
41
|
this.isServer = true;
|
|
39
42
|
this.entry = null;
|
|
40
43
|
this.parentManager = parentManager;
|
|
44
|
+
// Cache refProps statically on constructor
|
|
45
|
+
const classParamAny = classParam;
|
|
46
|
+
if (!classParamAny.__refPropsCache) {
|
|
47
|
+
classParamAny.__refPropsCache = this.properties.filter((prop) => getMetadataRecursive("isRef", this, prop));
|
|
48
|
+
}
|
|
41
49
|
// Convert reference IDs to ObjectIds on the server side
|
|
42
50
|
const dataRec = this.data;
|
|
43
|
-
for (const prop of
|
|
44
|
-
if (typeof prop !== "string")
|
|
51
|
+
for (const prop of classParamAny.__refPropsCache) {
|
|
52
|
+
if (typeof prop !== "string" || !dataRec[prop])
|
|
45
53
|
continue;
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
})
|
|
61
|
-
.filter((item) => item !== null);
|
|
62
|
-
}
|
|
63
|
-
else {
|
|
64
|
-
const idStr = dataRec[prop]._id
|
|
65
|
-
? dataRec[prop]._id.toString()
|
|
66
|
-
: dataRec[prop].toString();
|
|
67
|
-
if (idStr !== {}.toString() && ObjectId.isValid(idStr)) {
|
|
68
|
-
dataRec[prop] = new ObjectId(idStr);
|
|
69
|
-
}
|
|
70
|
-
}
|
|
54
|
+
try {
|
|
55
|
+
if (Array.isArray(dataRec[prop])) {
|
|
56
|
+
dataRec[prop] = dataRec[prop]
|
|
57
|
+
.map((item) => {
|
|
58
|
+
if (!item)
|
|
59
|
+
return null;
|
|
60
|
+
const idStr = item._id
|
|
61
|
+
? item._id.toString()
|
|
62
|
+
: item.toString();
|
|
63
|
+
if (idStr === {}.toString())
|
|
64
|
+
return null; // Avoid [object Object]
|
|
65
|
+
return ObjectId.isValid(idStr) ? new ObjectId(idStr) : item;
|
|
66
|
+
})
|
|
67
|
+
.filter((item) => item !== null);
|
|
71
68
|
}
|
|
72
|
-
|
|
73
|
-
|
|
69
|
+
else {
|
|
70
|
+
const idStr = dataRec[prop]._id
|
|
71
|
+
? dataRec[prop]._id.toString()
|
|
72
|
+
: dataRec[prop].toString();
|
|
73
|
+
if (idStr !== {}.toString() && ObjectId.isValid(idStr)) {
|
|
74
|
+
dataRec[prop] = new ObjectId(idStr);
|
|
75
|
+
}
|
|
74
76
|
}
|
|
75
77
|
}
|
|
78
|
+
catch (error) {
|
|
79
|
+
this.loggers.error(`Failed to set reference ${prop} to ${dataRec[prop]}: ${error.message}`);
|
|
80
|
+
}
|
|
76
81
|
}
|
|
77
82
|
}
|
|
78
|
-
async
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
...this.entry.toObject(),
|
|
83
|
+
async save() {
|
|
84
|
+
this.saveLock = (this.saveLock ?? Promise.resolve())
|
|
85
|
+
.catch(() => { })
|
|
86
|
+
.then(async () => {
|
|
87
|
+
if (this.entry && this.entry !== this) {
|
|
88
|
+
await this.entry.save();
|
|
89
|
+
}
|
|
90
|
+
else if (this.entry && typeof this.entry.$__save === "function") {
|
|
91
|
+
await this.entry.$__save();
|
|
92
|
+
}
|
|
89
93
|
});
|
|
90
|
-
this.
|
|
91
|
-
|
|
92
|
-
|
|
94
|
+
await this.saveLock;
|
|
95
|
+
}
|
|
96
|
+
async loadFromDB() {
|
|
97
|
+
if (this.loadPromise)
|
|
98
|
+
return this.loadPromise;
|
|
99
|
+
this.loadPromise = (async () => {
|
|
100
|
+
const _id = this.data._id;
|
|
101
|
+
if (!_id)
|
|
102
|
+
throw new Error("No id.");
|
|
103
|
+
// Use the model from the parent manager
|
|
104
|
+
this.entry = await this.parentManager.model.findById(_id);
|
|
105
|
+
if (!this.entry)
|
|
106
|
+
throw new Error(`Object not found in DB: ${this.className} with ID ${_id}`);
|
|
107
|
+
this.data = this.handleDataCleanup({
|
|
108
|
+
...this.data,
|
|
109
|
+
...this.entry.toObject(),
|
|
110
|
+
});
|
|
111
|
+
this.isLoading = false;
|
|
112
|
+
this.generateSettersAndGetters();
|
|
113
|
+
this.emitter.emit(EVENT_INTERNAL_PRE_LOADED + this.EmitterID);
|
|
114
|
+
})();
|
|
115
|
+
return this.loadPromise;
|
|
93
116
|
}
|
|
94
117
|
loadFromDocument(document) {
|
|
95
118
|
this.entry = document;
|
|
@@ -101,12 +124,18 @@ export class AutoUpdatedServerObject extends AutoUpdatedClientObject {
|
|
|
101
124
|
this.generateSettersAndGetters();
|
|
102
125
|
this.emitter.emit(EVENT_INTERNAL_PRE_LOADED + this.EmitterID);
|
|
103
126
|
}
|
|
127
|
+
/** Override extractedData to return shallow copy */
|
|
104
128
|
get extractedData() {
|
|
105
|
-
const dataToProcess = this.data;
|
|
129
|
+
const dataToProcess = _.cloneDeep(this.data);
|
|
106
130
|
const extracted = processIsRefProperties(dataToProcess, this, null, [], {}, this.loggers).newData;
|
|
107
131
|
return extracted;
|
|
108
132
|
}
|
|
109
133
|
async setValueInternal(key, value, silent = false, noUpdate = false) {
|
|
134
|
+
if (key === "__proto__" ||
|
|
135
|
+
key === "constructor" ||
|
|
136
|
+
key === "prototype") {
|
|
137
|
+
return { success: false, msg: `Invalid property key: ${key}` };
|
|
138
|
+
}
|
|
110
139
|
try {
|
|
111
140
|
const _id = this.data._id;
|
|
112
141
|
if (!_id)
|
|
@@ -114,13 +143,24 @@ export class AutoUpdatedServerObject extends AutoUpdatedClientObject {
|
|
|
114
143
|
this.entry ??= await this.parentManager.model.findById(_id);
|
|
115
144
|
if (!this.entry)
|
|
116
145
|
throw new Error("Object not found in DB.");
|
|
117
|
-
//
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
this.entry
|
|
121
|
-
|
|
146
|
+
// Check if property is part of properties or schema, regardless of current undefined value
|
|
147
|
+
const isPersisted = this.properties.includes(key) ||
|
|
148
|
+
this.entry[key] !== undefined ||
|
|
149
|
+
Boolean(this.entry.schema?.path?.(key));
|
|
150
|
+
if (isPersisted) {
|
|
151
|
+
this.saveLock = (this.saveLock ?? Promise.resolve())
|
|
122
152
|
.catch(() => { })
|
|
123
|
-
.then(() =>
|
|
153
|
+
.then(async () => {
|
|
154
|
+
if (typeof this.parentManager.model?.updateOne === "function") {
|
|
155
|
+
await this.parentManager.model.updateOne({ _id }, { $set: { [key]: value } });
|
|
156
|
+
}
|
|
157
|
+
else if (this.entry && typeof this.entry.save === "function") {
|
|
158
|
+
await this.entry.save();
|
|
159
|
+
}
|
|
160
|
+
if (this.entry) {
|
|
161
|
+
this.entry[key] = value;
|
|
162
|
+
}
|
|
163
|
+
});
|
|
124
164
|
await this.saveLock;
|
|
125
165
|
}
|
|
126
166
|
if (!silent) {
|
|
@@ -142,6 +182,8 @@ export class AutoUpdatedServerObject extends AutoUpdatedClientObject {
|
|
|
142
182
|
if (!once) {
|
|
143
183
|
return await this.parentManager.deleteObject(_id);
|
|
144
184
|
}
|
|
185
|
+
// Wait for any pending saves to complete before deleting
|
|
186
|
+
await (this.saveLock ?? Promise.resolve()).catch(() => { });
|
|
145
187
|
try {
|
|
146
188
|
this.entry ??= await this.parentManager.model.findById(_id);
|
|
147
189
|
if (this.entry) {
|
|
@@ -162,13 +204,19 @@ export class AutoUpdatedServerObject extends AutoUpdatedClientObject {
|
|
|
162
204
|
return { success: true, message: "Deleted" };
|
|
163
205
|
}
|
|
164
206
|
async onUpdate(noUpdate = false, key) {
|
|
165
|
-
if (noUpdate)
|
|
207
|
+
if (noUpdate || this._isUpdating)
|
|
166
208
|
return;
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
209
|
+
this._isUpdating = true;
|
|
210
|
+
try {
|
|
211
|
+
if (this.parentManager.options?.onUpdate) {
|
|
212
|
+
await this.parentManager.options.onUpdate(this, async (key, val) => {
|
|
213
|
+
// Bypass writeQueue chaining to prevent recursive deadlock while in onUpdate
|
|
214
|
+
return this.setValueQueueInternal(key, val, false, false, true);
|
|
215
|
+
}, key);
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
finally {
|
|
219
|
+
this._isUpdating = false;
|
|
172
220
|
}
|
|
173
221
|
}
|
|
174
222
|
async onDeletion() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AutoUpdatedServerObjectClass.js","sourceRoot":"","sources":["../AutoUpdatedServerObjectClass.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,mCAAmC,CAAC;AAE3C,OAAO,EAIL,YAAY,EACZ,YAAY,EAIZ,yBAAyB,GAG1B,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEnC,MAAM,OAAgB,uBAGpB,SAAQ,uBAA0B;IAGN,QAAQ,CAAU;IACpC,KAAK,CAAyB;IAEhC,QAAQ,GAAiB,OAAO,CAAC,OAAO,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"AutoUpdatedServerObjectClass.js","sourceRoot":"","sources":["../AutoUpdatedServerObjectClass.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,QAAQ,CAAC;AACvB,OAAO,EACL,uBAAuB,EACvB,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,mCAAmC,CAAC;AAE3C,OAAO,EAIL,YAAY,EACZ,YAAY,EAIZ,yBAAyB,GAG1B,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEnC,MAAM,OAAgB,uBAGpB,SAAQ,uBAA0B;IAGN,QAAQ,CAAU;IACpC,KAAK,CAAyB;IAEhC,QAAQ,GAAiB,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3C,WAAW,GAAyB,IAAI,CAAC;IACzC,WAAW,GAAY,KAAK,CAAC;IAYrC,YACE,UAA2B,EAC3B,MAAgB,EAChB,IAAgB,EAChB,OAAqB,EACrB,SAAkB,EAClB,aAA+C,EAC/C,OAAuB;QAEvB,IACE,CAAC,UAAU;YACX,CAAC,MAAM;YACP,CAAC,IAAI;YACL,CAAC,OAAO;YACR,CAAC,SAAS;YACV,CAAC,aAAa;YACd,CAAC,OAAO,EACR,CAAC;YACD,KAAK,EAAE,CAAC;YACR,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YACrB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;YAClB,IAAI,CAAC,aAAa,GAAG,aAGpB,CAAC;YACF,IACE,CAAC,UAAU;gBACX,CAAC,MAAM;gBACP,CAAC,IAAI;gBACL,CAAC,OAAO;gBACR,CAAC,SAAS;gBACV,CAAC,aAAa;gBACd,CAAC,OAAO,EACR,CAAC;gBACD,OAAO;YACT,CAAC;;gBACC,MAAM,IAAI,KAAK,CACb,iDAAiD,GAAG,SAAS,CAC9D,CAAC;QACN,CAAC;QAED,KAAK,CACH,UAAU,EACV,MAAwB,EACxB,IAAI,EACJ,OAAO,EACP,SAAS,EACT,aAEC,EACD;YACE,MAAM,EAAE,CAAC,EAA+B,EAAE,IAAY,EAAE,EAAE,GAAE,CAAC;YAC7D,MAAM,EAAE,CAAC,EAA+B,EAAE,EAAE,GAAE,CAAC;YAC/C,GAAG,EAAE,CAAC,EAA+B,EAAE,EAAE,GAAE,CAAC;YAC5C,QAAQ,EAAE,CAAC,EAAU,EAAE,EAAE,GAAE,CAAC;SAC7B,EACD,OAAO,EACP,IAAI,CACL,CAAC;QAEF,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QAEnC,2CAA2C;QAC3C,MAAM,aAAa,GAAG,UAAiB,CAAC;QACxC,IAAI,CAAC,aAAa,CAAC,eAAe,EAAE,CAAC;YACnC,aAAa,CAAC,eAAe,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAC9D,oBAAoB,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,CAC1C,CAAC;QACJ,CAAC;QAED,wDAAwD;QACxD,MAAM,OAAO,GAAG,IAAI,CAAC,IAA+B,CAAC;QACrD,KAAK,MAAM,IAAI,IAAI,aAAa,CAAC,eAAe,EAAE,CAAC;YACjD,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;gBAAE,SAAS;YACzD,IAAI,CAAC;gBACH,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;oBACjC,OAAO,CAAC,IAAI,CAAC,GAAI,OAAO,CAAC,IAAI,CAAW;yBACrC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;wBACZ,IAAI,CAAC,IAAI;4BAAE,OAAO,IAAI,CAAC;wBACvB,MAAM,KAAK,GAAI,IAAY,CAAC,GAAG;4BAC7B,CAAC,CAAE,IAAY,CAAC,GAAG,CAAC,QAAQ,EAAE;4BAC9B,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;wBACpB,IAAI,KAAK,KAAK,EAAE,CAAC,QAAQ,EAAE;4BAAE,OAAO,IAAI,CAAC,CAAC,wBAAwB;wBAClE,OAAO,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;oBAC9D,CAAC,CAAC;yBACD,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;gBACrC,CAAC;qBAAM,CAAC;oBACN,MAAM,KAAK,GAAI,OAAO,CAAC,IAAI,CAAS,CAAC,GAAG;wBACtC,CAAC,CAAE,OAAO,CAAC,IAAI,CAAS,CAAC,GAAG,CAAC,QAAQ,EAAE;wBACvC,CAAC,CAAE,OAAO,CAAC,IAAI,CAAS,CAAC,QAAQ,EAAE,CAAC;oBACtC,IAAI,KAAK,KAAK,EAAE,CAAC,QAAQ,EAAE,IAAI,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;wBACvD,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC;oBACtC,CAAC;gBACH,CAAC;YACH,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBACpB,IAAI,CAAC,OAAO,CAAC,KAAK,CAChB,2BAA2B,IAAI,OAAO,OAAO,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,OAAO,EAAE,CACxE,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,IAAI;QACf,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;aACjD,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC;aACf,IAAI,CAAC,KAAK,IAAI,EAAE;YACf,IAAI,IAAI,CAAC,KAAK,IAAK,IAAI,CAAC,KAAa,KAAK,IAAI,EAAE,CAAC;gBAC/C,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YAC1B,CAAC;iBAAM,IAAI,IAAI,CAAC,KAAK,IAAI,OAAQ,IAAI,CAAC,KAAa,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;gBAC3E,MAAO,IAAI,CAAC,KAAa,CAAC,OAAO,EAAE,CAAC;YACtC,CAAC;QACH,CAAC,CAAC,CAAC;QACL,MAAM,IAAI,CAAC,QAAQ,CAAC;IACtB,CAAC;IAEM,KAAK,CAAC,UAAU;QACrB,IAAI,IAAI,CAAC,WAAW;YAAE,OAAO,IAAI,CAAC,WAAW,CAAC;QAC9C,IAAI,CAAC,WAAW,GAAG,CAAC,KAAK,IAAI,EAAE;YAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;YAC1B,IAAI,CAAC,GAAG;gBAAE,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC;YAEpC,wCAAwC;YACxC,IAAI,CAAC,KAAK,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YAE1D,IAAI,CAAC,IAAI,CAAC,KAAK;gBACb,MAAM,IAAI,KAAK,CACb,2BAA2B,IAAI,CAAC,SAAS,YAAY,GAAG,EAAE,CAC3D,CAAC;YAEJ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC;gBACjC,GAAG,IAAI,CAAC,IAAI;gBACZ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;aACzB,CAAC,CAAC;YACH,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YACvB,IAAI,CAAC,yBAAyB,EAAE,CAAC;YACjC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;QAChE,CAAC,CAAC,EAAE,CAAC;QACL,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAEM,gBAAgB,CAAC,QAAyB;QAC/C,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC;QACtB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC;YACjC,GAAG,IAAI,CAAC,IAAI;YACZ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;SACzB,CAAC,CAAC;QACH,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,yBAAyB,EAAE,CAAC;QACjC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;IAChE,CAAC;IAED,oDAAoD;IACpD,IAAoB,aAAa;QAI/B,MAAM,aAAa,GAAG,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7C,MAAM,SAAS,GAAG,sBAAsB,CACtC,aAAoB,EACpB,IAAI,EACJ,IAAI,EACJ,EAAE,EACF,EAAE,EACF,IAAI,CAAC,OAAO,CACb,CAAC,OAAO,CAAC;QACV,OAAO,SAAgB,CAAC;IAC1B,CAAC;IAEkB,KAAK,CAAC,gBAAgB,CACvC,GAAW,EACX,KAAc,EACd,MAAM,GAAG,KAAK,EACd,QAAQ,GAAG,KAAK;QAEhB,IACE,GAAG,KAAK,WAAW;YACnB,GAAG,KAAK,aAAa;YACrB,GAAG,KAAK,WAAW,EACnB,CAAC;YACD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,yBAAyB,GAAG,EAAE,EAAE,CAAC;QACjE,CAAC;QAED,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;YAC1B,IAAI,CAAC,GAAG;gBACN,MAAM,IAAI,KAAK,CACb,wBAAwB,IAAI,CAAC,SAAS,iBAAiB,CACxD,CAAC;YAEJ,IAAI,CAAC,KAAK,KAAK,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YAC5D,IAAI,CAAC,IAAI,CAAC,KAAK;gBAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;YAE5D,2FAA2F;YAC3F,MAAM,WAAW,GACf,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC;gBAC5B,IAAI,CAAC,KAAa,CAAC,GAAG,CAAC,KAAK,SAAS;gBACtC,OAAO,CAAE,IAAI,CAAC,KAAK,CAAC,MAAc,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;YAEnD,IAAI,WAAW,EAAE,CAAC;gBAChB,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;qBACjD,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC;qBACf,IAAI,CAAC,KAAK,IAAI,EAAE;oBACf,IAAI,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,SAAS,KAAK,UAAU,EAAE,CAAC;wBAC9D,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,SAAS,CACtC,EAAE,GAAG,EAAE,EACP,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,EAAE,CAC3B,CAAC;oBACJ,CAAC;yBAAM,IAAI,IAAI,CAAC,KAAK,IAAI,OAAQ,IAAI,CAAC,KAAa,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;wBACxE,MAAO,IAAI,CAAC,KAAa,CAAC,IAAI,EAAE,CAAC;oBACnC,CAAC;oBACD,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;wBACd,IAAI,CAAC,KAAa,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;oBACnC,CAAC;gBACH,CAAC,CAAC,CAAC;gBACL,MAAM,IAAI,CAAC,QAAQ,CAAC;YACtB,CAAC;YAED,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;gBAC3C,MAAM,KAAK,GAAG,YAAY,GAAG,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC;gBAC5D,IAAI,CAAC,MAAc,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YAC3C,CAAC;YAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;QAC3C,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAClB,wBAAwB,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,YAAY,MAAM,KAAK,CAAC,OAAO,EAAE,CAC1G,CAAC;YACF,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,uBAAuB,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;QAC1E,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,OAAO,CAClB,IAAI,GAAG,KAAK;QAEZ,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;QAC1B,IAAI,CAAC,GAAG;YAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC;QAE5D,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,MAAM,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,GAAU,CAAC,CAAC;QAC3D,CAAC;QAED,yDAAyD;QACzD,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAE3D,IAAI,CAAC;YACH,IAAI,CAAC,KAAK,KAAK,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YAC5D,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBACf,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;gBACxB,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;YAC/B,CAAC;YACD,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,6BAA6B,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;QACvE,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAClB,yCAAyC,IAAI,CAAC,SAAS,MAAM,GAAG,CAAC,QAAQ,EAAE,KAAK,KAAK,CAAC,OAAO,EAAE,CAChG,CAAC;YACF,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,yBAAyB,GAAG,KAAK,CAAC,OAAO;aACnD,CAAC;QACJ,CAAC;QAEA,IAAI,CAAC,MAAc,CAAC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;QAEzE,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;QACtB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;IAC/C,CAAC;IAEkB,KAAK,CAAC,QAAQ,CAC/B,QAAQ,GAAY,KAAK,EACzB,GAAW;QAEX,IAAI,QAAQ,IAAI,IAAI,CAAC,WAAW;YAAE,OAAO;QACzC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC;YACH,IAAI,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC;gBACzC,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,QAAQ,CACvC,IAAoB,EACpB,KAAK,EAAE,GAAW,EAAE,GAAQ,EAAE,EAAE;oBAC9B,6EAA6E;oBAC7E,OAAQ,IAAY,CAAC,qBAAqB,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;gBAC3E,CAAC,EACD,GAAU,CACX,CAAC;YACJ,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QAC3B,CAAC;IACH,CAAC;IAEkB,KAAK,CAAC,UAAU;QACjC,IAAI,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,UAAU,EAAE,CAAC;YAC3C,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,UAAU,CAAC,IAAoB,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;CACF;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAG1C,UAA0B,EAC1B,SAAiB,EACjB,MAAe,EACf,IAAwB,EACxB,OAAoB,EACpB,aAA8C,EAC9C,OAAsB,EACtB,QAA0B;IAE1B,MAAM,GAAG,GAAG,IAAI,UAAU,CACxB,UAAU,EACV,MAAM,EACN,IAAI,EACJ,OAAO,EACP,SAAS,EACT,aAAa,EACb,OAAO,CACR,CAAC;IACF,IAAI,QAAQ,EAAE,CAAC;QACb,GAAG,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IACjC,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,CAAC,UAAU,EAAE,CAAC;IACzB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
|
package/dist/CommonTypes.d.ts
CHANGED
|
@@ -28,8 +28,8 @@ export interface IAutoUpdatedClientObjectBase {
|
|
|
28
28
|
}>;
|
|
29
29
|
isPreLoadedAsync(): Promise<boolean>;
|
|
30
30
|
contactChildren(): Promise<void>;
|
|
31
|
-
getValue(key: string):
|
|
32
|
-
setValue(key: string, val:
|
|
31
|
+
getValue(key: string): unknown;
|
|
32
|
+
setValue(key: string, val: unknown): Promise<{
|
|
33
33
|
success: boolean;
|
|
34
34
|
msg: string;
|
|
35
35
|
}>;
|
|
@@ -71,7 +71,7 @@ type OnlyStringForRefs<V> = V extends any ? V extends Array<infer U> ? OnlyStrin
|
|
|
71
71
|
export type DEMCache = {
|
|
72
72
|
references: Record<string, any>;
|
|
73
73
|
};
|
|
74
|
-
export type Pure<T extends object, Base = IAutoUpdatedClientObject<any>> = Omit<T, keyof Base | "parentManager" | "callbacks" | "classParam" | "className" | "properties" | "isLoaded" | "extractedData" | "getValue" | "setValue" | "loadFromDB" | "setValue_" | "destroyImmediate" | "loadError">;
|
|
74
|
+
export type Pure<T extends object, Base = IAutoUpdatedClientObject<any>> = Omit<T, keyof Base | "parentManager" | "callbacks" | "classParam" | "className" | "properties" | "isLoaded" | "extractedData" | "getValue" | "setValue" | "loadFromDB" | "setValue_" | "destroyImmediate" | "loadError" | "updateEventName" | "getRawId">;
|
|
75
75
|
export type IsData<T extends object> = {
|
|
76
76
|
[K in keyof Pure<T> as T[K] extends Function ? never : K]: AllowStringForRefs<T[K]>;
|
|
77
77
|
} & {
|
|
@@ -95,7 +95,7 @@ export type ServerResponse<T> = {
|
|
|
95
95
|
message: string;
|
|
96
96
|
success: false;
|
|
97
97
|
};
|
|
98
|
-
export type ServerUpdateRequest<T> = {
|
|
98
|
+
export type ServerUpdateRequest<T = unknown> = {
|
|
99
99
|
_id: MongoId;
|
|
100
100
|
key: string;
|
|
101
101
|
value: unknown;
|
|
@@ -128,12 +128,78 @@ export declare const EVENT_DELETE = "delete";
|
|
|
128
128
|
export declare const EVENT_NEW = "new";
|
|
129
129
|
export declare const EVENT_GET = "get";
|
|
130
130
|
export declare const EVENT_STARTUP = "startup";
|
|
131
|
-
export declare
|
|
132
|
-
|
|
131
|
+
export declare const EVENT_VERSION = "dem_version";
|
|
132
|
+
/**
|
|
133
|
+
* Current version of the DEM library.
|
|
134
|
+
*/
|
|
135
|
+
export declare const DEM_VERSION = "0.6.5";
|
|
136
|
+
/**
|
|
137
|
+
* DEM socket protocol version.
|
|
138
|
+
*/
|
|
139
|
+
export declare const DEM_PROTOCOL_VERSION = "1.0.0";
|
|
140
|
+
/**
|
|
141
|
+
* Configuration options for DEM client-server version verification.
|
|
142
|
+
*/
|
|
143
|
+
export interface DEMVersionOptions {
|
|
144
|
+
/**
|
|
145
|
+
* If true, requires exact or strict compatibility between client and server versions.
|
|
146
|
+
* In strict mode, minor or major mismatches reject the connection.
|
|
147
|
+
* Default: false (allows minor/patch differences, warning on differences).
|
|
148
|
+
*/
|
|
149
|
+
strictVersionMatch?: boolean;
|
|
150
|
+
/**
|
|
151
|
+
* Optional minimum server version required by the client.
|
|
152
|
+
* e.g., "0.6.0"
|
|
153
|
+
*/
|
|
154
|
+
minServerVersion?: string;
|
|
155
|
+
/**
|
|
156
|
+
* Optional custom validator callback.
|
|
157
|
+
* Return true for compatible, false or error message string if incompatible.
|
|
158
|
+
*/
|
|
159
|
+
validateVersion?: (clientVersion: string, serverVersion: string) => boolean | string;
|
|
160
|
+
/**
|
|
161
|
+
* Optional callback triggered when a version mismatch or notice is detected.
|
|
162
|
+
*/
|
|
163
|
+
onVersionMismatch?: (clientVersion: string, serverVersion: string, message: string) => void;
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Result of a DEM version verification check.
|
|
167
|
+
*/
|
|
168
|
+
export interface DEMVersionVerificationResult {
|
|
169
|
+
compatible: boolean;
|
|
170
|
+
clientVersion: string;
|
|
171
|
+
serverVersion: string;
|
|
172
|
+
status: "match" | "compatible_minor" | "compatible_patch" | "mismatch_major" | "mismatch_minor" | "below_min_version" | "custom_rejected" | "unknown";
|
|
173
|
+
message: string;
|
|
174
|
+
}
|
|
175
|
+
export interface ParsedSemVer {
|
|
176
|
+
major: number;
|
|
177
|
+
minor: number;
|
|
178
|
+
patch: number;
|
|
179
|
+
prerelease?: string;
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Parses a semantic version string (e.g. "0.6.5", "v1.2.3-alpha").
|
|
183
|
+
*/
|
|
184
|
+
export declare function parseSemVer(version: string): ParsedSemVer | null;
|
|
185
|
+
/**
|
|
186
|
+
* Compares two semantic version strings.
|
|
187
|
+
* Returns -1 if v1 < v2, 0 if v1 === v2, 1 if v1 > v2.
|
|
188
|
+
*/
|
|
189
|
+
export declare function compareSemVer(v1: string, v2: string): number;
|
|
190
|
+
/**
|
|
191
|
+
* Verifies compatibility between client and server DEM versions.
|
|
192
|
+
*/
|
|
193
|
+
export declare function verifyDEMVersion(clientVersion: string, serverVersion: string, options?: DEMVersionOptions): DEMVersionVerificationResult;
|
|
194
|
+
export declare function safeStringify(obj: unknown): string;
|
|
195
|
+
export declare class DEMGlobalCache {
|
|
133
196
|
objects: Record<string, {
|
|
134
197
|
className: string;
|
|
135
198
|
object: IAutoUpdatedClientObjectBase;
|
|
136
199
|
}>;
|
|
137
|
-
|
|
138
|
-
|
|
200
|
+
clear(): void;
|
|
201
|
+
get size(): number;
|
|
202
|
+
}
|
|
203
|
+
export type GlobalCache = DEMGlobalCache;
|
|
204
|
+
export declare const globalCache: DEMGlobalCache;
|
|
139
205
|
export {};
|
package/dist/CommonTypes.js
CHANGED
|
@@ -25,6 +25,155 @@ export const EVENT_DELETE = "delete";
|
|
|
25
25
|
export const EVENT_NEW = "new";
|
|
26
26
|
export const EVENT_GET = "get";
|
|
27
27
|
export const EVENT_STARTUP = "startup";
|
|
28
|
+
export const EVENT_VERSION = "dem_version";
|
|
29
|
+
/**
|
|
30
|
+
* Current version of the DEM library.
|
|
31
|
+
*/
|
|
32
|
+
export const DEM_VERSION = "0.6.5";
|
|
33
|
+
/**
|
|
34
|
+
* DEM socket protocol version.
|
|
35
|
+
*/
|
|
36
|
+
export const DEM_PROTOCOL_VERSION = "1.0.0";
|
|
37
|
+
/**
|
|
38
|
+
* Parses a semantic version string (e.g. "0.6.5", "v1.2.3-alpha").
|
|
39
|
+
*/
|
|
40
|
+
export function parseSemVer(version) {
|
|
41
|
+
if (!version || typeof version !== "string")
|
|
42
|
+
return null;
|
|
43
|
+
const cleaned = version.trim().replace(/^v/, "");
|
|
44
|
+
const match = cleaned.match(/^(\d+)\.(\d+)(?:\.(\d+))?(?:-([0-9A-Za-z.-]+))?/);
|
|
45
|
+
if (!match)
|
|
46
|
+
return null;
|
|
47
|
+
return {
|
|
48
|
+
major: parseInt(match[1], 10),
|
|
49
|
+
minor: parseInt(match[2], 10),
|
|
50
|
+
patch: match[3] !== undefined ? parseInt(match[3], 10) : 0,
|
|
51
|
+
prerelease: match[4] || undefined,
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Compares two semantic version strings.
|
|
56
|
+
* Returns -1 if v1 < v2, 0 if v1 === v2, 1 if v1 > v2.
|
|
57
|
+
*/
|
|
58
|
+
export function compareSemVer(v1, v2) {
|
|
59
|
+
const p1 = parseSemVer(v1);
|
|
60
|
+
const p2 = parseSemVer(v2);
|
|
61
|
+
if (!p1 && !p2)
|
|
62
|
+
return 0;
|
|
63
|
+
if (!p1)
|
|
64
|
+
return -1;
|
|
65
|
+
if (!p2)
|
|
66
|
+
return 1;
|
|
67
|
+
if (p1.major !== p2.major)
|
|
68
|
+
return p1.major > p2.major ? 1 : -1;
|
|
69
|
+
if (p1.minor !== p2.minor)
|
|
70
|
+
return p1.minor > p2.minor ? 1 : -1;
|
|
71
|
+
if (p1.patch !== p2.patch)
|
|
72
|
+
return p1.patch > p2.patch ? 1 : -1;
|
|
73
|
+
return 0;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Verifies compatibility between client and server DEM versions.
|
|
77
|
+
*/
|
|
78
|
+
export function verifyDEMVersion(clientVersion, serverVersion, options) {
|
|
79
|
+
const cParsed = parseSemVer(clientVersion);
|
|
80
|
+
const sParsed = parseSemVer(serverVersion);
|
|
81
|
+
if (options?.validateVersion) {
|
|
82
|
+
const customRes = options.validateVersion(clientVersion, serverVersion);
|
|
83
|
+
if (customRes === true) {
|
|
84
|
+
return {
|
|
85
|
+
compatible: true,
|
|
86
|
+
clientVersion,
|
|
87
|
+
serverVersion,
|
|
88
|
+
status: "match",
|
|
89
|
+
message: `Custom version validator accepted client ${clientVersion} and server ${serverVersion}.`,
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
const msg = typeof customRes === "string"
|
|
93
|
+
? customRes
|
|
94
|
+
: `Custom version validator rejected client ${clientVersion} with server ${serverVersion}.`;
|
|
95
|
+
return {
|
|
96
|
+
compatible: false,
|
|
97
|
+
clientVersion,
|
|
98
|
+
serverVersion,
|
|
99
|
+
status: "custom_rejected",
|
|
100
|
+
message: msg,
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
if (!cParsed || !sParsed) {
|
|
104
|
+
const isExact = clientVersion === serverVersion;
|
|
105
|
+
return {
|
|
106
|
+
compatible: isExact || !options?.strictVersionMatch,
|
|
107
|
+
clientVersion,
|
|
108
|
+
serverVersion,
|
|
109
|
+
status: isExact ? "match" : "unknown",
|
|
110
|
+
message: isExact
|
|
111
|
+
? `DEM versions match (${clientVersion}).`
|
|
112
|
+
: `Non-semver DEM versions encountered: client '${clientVersion}', server '${serverVersion}'.`,
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
// Check minimum server version requirement if specified
|
|
116
|
+
if (options?.minServerVersion) {
|
|
117
|
+
if (compareSemVer(serverVersion, options.minServerVersion) < 0) {
|
|
118
|
+
return {
|
|
119
|
+
compatible: false,
|
|
120
|
+
clientVersion,
|
|
121
|
+
serverVersion,
|
|
122
|
+
status: "below_min_version",
|
|
123
|
+
message: `Server DEM version ${serverVersion} is lower than required minimum ${options.minServerVersion}.`,
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
// Exact match
|
|
128
|
+
if (cParsed.major === sParsed.major &&
|
|
129
|
+
cParsed.minor === sParsed.minor &&
|
|
130
|
+
cParsed.patch === sParsed.patch) {
|
|
131
|
+
return {
|
|
132
|
+
compatible: true,
|
|
133
|
+
clientVersion,
|
|
134
|
+
serverVersion,
|
|
135
|
+
status: "match",
|
|
136
|
+
message: `DEM versions match (${clientVersion}).`,
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
// Major version mismatch (incompatible by SemVer rules)
|
|
140
|
+
if (cParsed.major !== sParsed.major) {
|
|
141
|
+
return {
|
|
142
|
+
compatible: false,
|
|
143
|
+
clientVersion,
|
|
144
|
+
serverVersion,
|
|
145
|
+
status: "mismatch_major",
|
|
146
|
+
message: `Incompatible major DEM version: Client is ${clientVersion}, Server is ${serverVersion}.`,
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
// Minor version difference
|
|
150
|
+
if (cParsed.minor !== sParsed.minor) {
|
|
151
|
+
if (options?.strictVersionMatch) {
|
|
152
|
+
return {
|
|
153
|
+
compatible: false,
|
|
154
|
+
clientVersion,
|
|
155
|
+
serverVersion,
|
|
156
|
+
status: "mismatch_minor",
|
|
157
|
+
message: `Strict version check failed: Client minor version (${clientVersion}) differs from Server (${serverVersion}).`,
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
return {
|
|
161
|
+
compatible: true,
|
|
162
|
+
clientVersion,
|
|
163
|
+
serverVersion,
|
|
164
|
+
status: "compatible_minor",
|
|
165
|
+
message: `DEM minor version notice: Client (${clientVersion}) differs from Server (${serverVersion}). Functionality is compatible.`,
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
// Patch version difference
|
|
169
|
+
return {
|
|
170
|
+
compatible: true,
|
|
171
|
+
clientVersion,
|
|
172
|
+
serverVersion,
|
|
173
|
+
status: "compatible_patch",
|
|
174
|
+
message: `DEM patch version notice: Client (${clientVersion}) and Server (${serverVersion}).`,
|
|
175
|
+
};
|
|
176
|
+
}
|
|
28
177
|
export function safeStringify(obj) {
|
|
29
178
|
try {
|
|
30
179
|
return JSON.stringify(obj);
|
|
@@ -33,7 +182,14 @@ export function safeStringify(obj) {
|
|
|
33
182
|
return "[Circular or non-serializable object]";
|
|
34
183
|
}
|
|
35
184
|
}
|
|
36
|
-
export
|
|
37
|
-
objects
|
|
38
|
-
|
|
185
|
+
export class DEMGlobalCache {
|
|
186
|
+
objects = {};
|
|
187
|
+
clear() {
|
|
188
|
+
this.objects = {};
|
|
189
|
+
}
|
|
190
|
+
get size() {
|
|
191
|
+
return Object.keys(this.objects).length;
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
export const globalCache = new DEMGlobalCache();
|
|
39
195
|
//# sourceMappingURL=CommonTypes.js.map
|
package/dist/CommonTypes.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CommonTypes.js","sourceRoot":"","sources":["../CommonTypes.ts"],"names":[],"mappings":"AAEA,OAAO,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"CommonTypes.js","sourceRoot":"","sources":["../CommonTypes.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./CommonTypes.js";
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
export * from "./CommonTypes.js";
|
|
2
2
|
//# sourceMappingURL=CommonTypes_server.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CommonTypes_server.js","sourceRoot":"","sources":["../CommonTypes_server.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"CommonTypes_server.js","sourceRoot":"","sources":["../CommonTypes_server.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC"}
|
package/dist/server.d.ts
CHANGED
|
@@ -2,3 +2,5 @@ export * as AutoUpdatedServerObjectClass from "./AutoUpdatedServerObjectClass.js
|
|
|
2
2
|
export * as AutoUpdatedClientObjectClass from "./AutoUpdatedClientObjectClass.js";
|
|
3
3
|
export * as AutoUpdateManagerClass from "./AutoUpdateManagerClass.js";
|
|
4
4
|
export * as AutoUpdateServerManagerClass from "./AutoUpdateServerManagerClass.js";
|
|
5
|
+
export * as CommonTypes from "./CommonTypes.js";
|
|
6
|
+
export * as CommonTypes_server from "./CommonTypes_server.js";
|
package/dist/server.js
CHANGED
|
@@ -2,4 +2,6 @@ export * as AutoUpdatedServerObjectClass from "./AutoUpdatedServerObjectClass.js
|
|
|
2
2
|
export * as AutoUpdatedClientObjectClass from "./AutoUpdatedClientObjectClass.js";
|
|
3
3
|
export * as AutoUpdateManagerClass from "./AutoUpdateManagerClass.js";
|
|
4
4
|
export * as AutoUpdateServerManagerClass from "./AutoUpdateServerManagerClass.js";
|
|
5
|
+
export * as CommonTypes from "./CommonTypes.js";
|
|
6
|
+
export * as CommonTypes_server from "./CommonTypes_server.js";
|
|
5
7
|
//# sourceMappingURL=server.js.map
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../server.ts"],"names":[],"mappings":"AAAA,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,mCAAmC,CAAC;AAClF,OAAO,KAAK,4BAA4B,MAAM,mCAAmC,CAAC;AAClF,OAAO,KAAK,sBAAsB,MAAM,6BAA6B,CAAC;AACtE,OAAO,KAAK,4BAA4B,MAAM,mCAAmC,CAAC;AAClF,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAC;AAChD,OAAO,KAAK,kBAAkB,MAAM,yBAAyB,CAAC"}
|