@prestizni-software/server-dem 0.10.3 → 0.11.1

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/CommonTypes.d.ts CHANGED
@@ -88,8 +88,8 @@ type IsAUCOBase<T> = T extends {
88
88
  className: string;
89
89
  _id: any;
90
90
  } ? true : false;
91
- 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;
92
- 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 ? {
91
+ type AllowStringForRefs<V> = NonNullable<V> extends ReadonlyArray<infer U> ? IsAUCOBase<NonNullable<U>> extends true ? (U | string | ObjectIdLike)[] : U[] : IsAUCOBase<NonNullable<V>> extends true ? V | string | ObjectIdLike : V;
92
+ type OnlyStringForRefs<V> = V extends any ? V extends ReadonlyArray<infer U> ? OnlyStringForRefs<U>[] : V extends IAutoUpdatedClientObjectBase ? string : V extends Date ? V : V extends ObjectId | ObjectIdLike ? string : V extends object ? {
93
93
  [K in keyof V as V[K] extends Function ? never : K]: K extends "_id" ? string : OnlyStringForRefs<V[K]>;
94
94
  } : V : never;
95
95
  export type DEMCache = {
@@ -117,11 +117,17 @@ export type ServerResponse<T> = {
117
117
  code?: DEMErrorCode;
118
118
  success: true;
119
119
  related?: Record<string, any[]>;
120
+ updatedArray?: unknown[];
121
+ newRevision?: number;
122
+ newHash?: string;
120
123
  } | {
121
124
  message: string;
122
125
  code?: DEMErrorCode;
123
126
  details?: unknown;
124
127
  success: false;
128
+ updatedArray?: unknown[];
129
+ newRevision?: number;
130
+ newHash?: string;
125
131
  };
126
132
  /**
127
133
  * Lightweight entity descriptor providing human-readable identification before hydration.
@@ -296,6 +302,194 @@ export declare class DEMGlobalCache {
296
302
  }
297
303
  export type GlobalCache = DEMGlobalCache;
298
304
  export declare const globalCache: DEMGlobalCache;
305
+ /**
306
+ * Permitted operation types for DEMArray asynchronous mutations.
307
+ */
308
+ export type DEMArrayMutationOp = "push" | "pop" | "shift" | "unshift" | "splice" | "set" | "reverse" | "sort" | "clear";
309
+ /**
310
+ * Socket payload structure for an array mutation request.
311
+ */
312
+ export type DEMArrayMutationParams = Omit<DEMArrayMutationRequest, "key">;
313
+ export interface DEMArrayMutationRequest {
314
+ /**
315
+ * The specific mutation operator to execute.
316
+ */
317
+ op: DEMArrayMutationOp;
318
+ /**
319
+ * Target property key holding the array.
320
+ */
321
+ key: string;
322
+ /**
323
+ * Optional items to insert or append (primitive values, entity instances, or string IDs).
324
+ */
325
+ items?: unknown[];
326
+ /**
327
+ * Optional anchor entity identifier for positional mutations (splice/set).
328
+ */
329
+ targetId?: string;
330
+ /**
331
+ * Optional list of anchor identifiers for multi-item splices.
332
+ */
333
+ targetIds?: string[];
334
+ /**
335
+ * Optional zero-based target offset.
336
+ */
337
+ index?: number;
338
+ /**
339
+ * Optional count of elements to delete.
340
+ */
341
+ deleteCount?: number;
342
+ /**
343
+ * Monotonic revision counter of the client state prior to mutation.
344
+ */
345
+ baseRevision?: number;
346
+ /**
347
+ * Content hash of the array prior to mutation for concurrency verification.
348
+ */
349
+ baseHash?: string;
350
+ /**
351
+ * Synchronized client timestamp when mutation was initiated.
352
+ */
353
+ clientTimestamp?: number;
354
+ }
355
+ /**
356
+ * Server acknowledgment payload returned for an array mutation request.
357
+ */
358
+ export interface DEMArrayMutationResponse {
359
+ /**
360
+ * Whether the mutation succeeded and was persisted.
361
+ */
362
+ success: boolean;
363
+ /**
364
+ * Optional error code on failure.
365
+ */
366
+ code?: DEMErrorCode;
367
+ /**
368
+ * Optional descriptive message.
369
+ */
370
+ message?: string;
371
+ /**
372
+ * The authoritative updated array state resolved and persisted by the server.
373
+ */
374
+ updatedArray?: unknown[];
375
+ /**
376
+ * Incremented monotonic revision counter after applying the mutation.
377
+ */
378
+ newRevision?: number;
379
+ /**
380
+ * Content hash of the updated array.
381
+ */
382
+ newHash?: string;
383
+ }
384
+ /**
385
+ * Reactive array wrapper for DEM entity array properties.
386
+ * Exposes synchronous ReadonlyArray queries and asynchronous mutation Promises.
387
+ */
388
+ export interface DEMArray<T> extends ReadonlyArray<T> {
389
+ /**
390
+ * Appends elements asynchronously and awaits server persistence.
391
+ *
392
+ * @param items - Elements to append (entity instances, string IDs, or primitive values).
393
+ * @returns Promise resolving to the new length of the array.
394
+ * @throws {DEMError} Throws on network failure, validation rejection, or database error.
395
+ */
396
+ push(...items: (T | string | ObjectId)[]): Promise<number>;
397
+ /**
398
+ * Removes the last element asynchronously and awaits server persistence.
399
+ *
400
+ * @returns Promise resolving to the removed element, or undefined if empty.
401
+ * @throws {DEMError} Throws on server rejection.
402
+ */
403
+ pop(): Promise<T | undefined>;
404
+ /**
405
+ * Removes the first element asynchronously and awaits server persistence.
406
+ *
407
+ * @returns Promise resolving to the removed element, or undefined if empty.
408
+ * @throws {DEMError} Throws on server rejection.
409
+ */
410
+ shift(): Promise<T | undefined>;
411
+ /**
412
+ * Inserts elements at the start asynchronously and awaits server persistence.
413
+ *
414
+ * @param items - Elements to prepend.
415
+ * @returns Promise resolving to the new length of the array.
416
+ * @throws {DEMError} Throws on server rejection.
417
+ */
418
+ unshift(...items: (T | string | ObjectId)[]): Promise<number>;
419
+ /**
420
+ * Removes and/or inserts elements at an index asynchronously and awaits server persistence.
421
+ * Anchors mutations to target element identifiers to eliminate positional drift under concurrency.
422
+ *
423
+ * @param start - Zero-based index at which to start changing the array.
424
+ * @param deleteCount - Number of elements to remove.
425
+ * @param items - Elements to insert.
426
+ * @returns Promise resolving to an array containing the removed elements.
427
+ * @throws {DEMError} Throws on server rejection.
428
+ */
429
+ splice(start: number, deleteCount?: number, ...items: (T | string | ObjectId)[]): Promise<T[]>;
430
+ /**
431
+ * Replaces an element at a specific index asynchronously and awaits server persistence.
432
+ *
433
+ * @param index - Target index to replace.
434
+ * @param item - New value or entity to assign.
435
+ * @returns Promise resolving to the assigned item.
436
+ * @throws {DEMError} Throws on server rejection.
437
+ */
438
+ set(index: number, item: T | string | ObjectId): Promise<T>;
439
+ /**
440
+ * Reverses array elements in place asynchronously and awaits server persistence.
441
+ *
442
+ * @returns Promise resolving to this DEMArray.
443
+ * @throws {DEMError} Throws on server rejection.
444
+ */
445
+ reverse(): Promise<this>;
446
+ /**
447
+ * Sorts array elements in place asynchronously and awaits server persistence.
448
+ *
449
+ * @param compareFn - Optional comparison function determining order.
450
+ * @returns Promise resolving to this DEMArray.
451
+ * @throws {DEMError} Throws on server rejection.
452
+ */
453
+ sort(compareFn?: (a: T, b: T) => number): Promise<this>;
454
+ /**
455
+ * Synchronous fill is prohibited on reactive DEMArray.
456
+ * Declared for Array structural type compatibility.
457
+ *
458
+ * @param value - Value to fill array with.
459
+ * @param start - Start index.
460
+ * @param end - End index.
461
+ * @returns This DEMArray.
462
+ * @throws {DEMError} Throws CANNOT_SET_REF_DIRECTLY when invoked synchronously.
463
+ */
464
+ fill(value: T, start?: number, end?: number): this;
465
+ /**
466
+ * Synchronous copyWithin is prohibited on reactive DEMArray.
467
+ * Declared for Array structural type compatibility.
468
+ *
469
+ * @param target - Target start index.
470
+ * @param start - Source start index.
471
+ * @param end - Source end index.
472
+ * @returns This DEMArray.
473
+ * @throws {DEMError} Throws CANNOT_SET_REF_DIRECTLY when invoked synchronously.
474
+ */
475
+ copyWithin(target: number, start: number, end?: number): this;
476
+ /**
477
+ * Clears all elements from the array asynchronously and awaits server persistence.
478
+ *
479
+ * @returns Promise resolving once the array is cleared.
480
+ * @throws {DEMError} Throws on server rejection.
481
+ */
482
+ clear(): Promise<void>;
483
+ /**
484
+ * Hydrates all referenced entities in the array up to designated reference depth.
485
+ *
486
+ * @param options - Hydration options containing graph depth.
487
+ * @returns Promise resolving to this DEMArray once all entities are hydrated.
488
+ */
489
+ ensureLoaded(options?: {
490
+ depth?: number;
491
+ }): Promise<this>;
492
+ }
299
493
  export * from "./sync/types.js";
300
494
  export * from "./sync/storage/IClientStorageAdapter.js";
301
495
  export * from "./sync/storage/MemoryStorageAdapter.js";
@@ -1 +1 @@
1
- {"version":3,"file":"CommonTypes.js","sourceRoot":"","sources":["../CommonTypes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CommonTypes.js","sourceRoot":"","sources":["../CommonTypes.ts"],"names":[],"mappings":"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"}
package/DEMErrors.d.ts CHANGED
@@ -37,6 +37,9 @@ export declare enum DEMErrorCode {
37
37
  STORAGE_NOT_SUPPORTED = "DEM_ERR_STORAGE_NOT_SUPPORTED",
38
38
  STORAGE_OPERATION_FAILED = "DEM_ERR_STORAGE_OPERATION_FAILED",
39
39
  DELTA_SYNC_FAILED = "DEM_ERR_DELTA_SYNC_FAILED",
40
+ ARRAY_MUTATION_FAILED = "DEM_ERR_ARRAY_MUTATION_FAILED",
41
+ CONCURRENT_MODIFICATION = "DEM_ERR_CONCURRENT_MODIFICATION",
42
+ INDEX_OUT_OF_BOUNDS = "DEM_ERR_INDEX_OUT_OF_BOUNDS",
40
43
  INTERNAL_ERROR = "DEM_ERR_INTERNAL_ERROR"
41
44
  }
42
45
  /**
package/DEMErrors.js CHANGED
@@ -45,6 +45,10 @@ export var DEMErrorCode;
45
45
  DEMErrorCode["STORAGE_NOT_SUPPORTED"] = "DEM_ERR_STORAGE_NOT_SUPPORTED";
46
46
  DEMErrorCode["STORAGE_OPERATION_FAILED"] = "DEM_ERR_STORAGE_OPERATION_FAILED";
47
47
  DEMErrorCode["DELTA_SYNC_FAILED"] = "DEM_ERR_DELTA_SYNC_FAILED";
48
+ // Array and mutation errors
49
+ DEMErrorCode["ARRAY_MUTATION_FAILED"] = "DEM_ERR_ARRAY_MUTATION_FAILED";
50
+ DEMErrorCode["CONCURRENT_MODIFICATION"] = "DEM_ERR_CONCURRENT_MODIFICATION";
51
+ DEMErrorCode["INDEX_OUT_OF_BOUNDS"] = "DEM_ERR_INDEX_OUT_OF_BOUNDS";
48
52
  // General internal error
49
53
  DEMErrorCode["INTERNAL_ERROR"] = "DEM_ERR_INTERNAL_ERROR";
50
54
  })(DEMErrorCode || (DEMErrorCode = {}));
@@ -87,6 +91,9 @@ export const DEM_ERROR_DESCRIPTIONS = {
87
91
  [DEMErrorCode.STORAGE_NOT_SUPPORTED]: "Storage adapter is not supported in this runtime environment.",
88
92
  [DEMErrorCode.STORAGE_OPERATION_FAILED]: "Storage read or write operation failed.",
89
93
  [DEMErrorCode.DELTA_SYNC_FAILED]: "Delta synchronization reconciliation failed.",
94
+ [DEMErrorCode.ARRAY_MUTATION_FAILED]: "Array mutation operation failed.",
95
+ [DEMErrorCode.CONCURRENT_MODIFICATION]: "Concurrent modification conflict detected.",
96
+ [DEMErrorCode.INDEX_OUT_OF_BOUNDS]: "Specified array index is out of bounds.",
90
97
  [DEMErrorCode.INTERNAL_ERROR]: "Internal DEM library error occurred.",
91
98
  };
92
99
  /**
package/DEMErrors.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"DEMErrors.js","sourceRoot":"","sources":["../DEMErrors.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAN,IAAY,YAoDX;AApDD,WAAY,YAAY;IACtB,iCAAiC;IACjC,6DAA6C,CAAA;IAC7C,mEAAmD,CAAA;IACnD,yDAAyC,CAAA;IACzC,6DAA6C,CAAA;IAE7C,+BAA+B;IAC/B,6EAA6D,CAAA;IAC7D,yDAAyC,CAAA;IACzC,yEAAyD,CAAA;IACzD,iEAAiD,CAAA;IACjD,yDAAyC,CAAA;IACzC,6DAA6C,CAAA;IAE7C,iCAAiC;IACjC,6DAA6C,CAAA;IAC7C,iDAAiC,CAAA;IACjC,6DAA6C,CAAA;IAC7C,mEAAmD,CAAA;IACnD,uDAAuC,CAAA;IACvC,uDAAuC,CAAA;IACvC,uDAAuC,CAAA;IACvC,2DAA2C,CAAA;IAC3C,iEAAiD,CAAA;IACjD,2EAA2D,CAAA;IAE3D,8BAA8B;IAC9B,6DAA6C,CAAA;IAC7C,iEAAiD,CAAA;IACjD,qEAAqD,CAAA;IACrD,qEAAqD,CAAA;IACrD,+DAA+C,CAAA;IAC/C,mFAAmE,CAAA;IACnE,2DAA2C,CAAA;IAE3C,6BAA6B;IAC7B,uDAAuC,CAAA;IACvC,qDAAqC,CAAA;IAErC,4BAA4B;IAC5B,qEAAqD,CAAA;IACrD,yDAAyC,CAAA;IACzC,2CAA2B,CAAA;IAE3B,0BAA0B;IAC1B,uEAAuD,CAAA;IACvD,6EAA6D,CAAA;IAC7D,+DAA+C,CAAA;IAE/C,yBAAyB;IACzB,yDAAyC,CAAA;AAC3C,CAAC,EApDW,YAAY,KAAZ,YAAY,QAoDvB;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAiC;IAClE,CAAC,YAAY,CAAC,gBAAgB,CAAC,EAC7B,0EAA0E;IAC5E,CAAC,YAAY,CAAC,mBAAmB,CAAC,EAChC,6CAA6C;IAC/C,CAAC,YAAY,CAAC,cAAc,CAAC,EAC3B,qCAAqC;IACvC,CAAC,YAAY,CAAC,gBAAgB,CAAC,EAC7B,yCAAyC;IAC3C,CAAC,YAAY,CAAC,wBAAwB,CAAC,EACrC,sCAAsC;IACxC,CAAC,YAAY,CAAC,cAAc,CAAC,EAC3B,2CAA2C;IAC7C,CAAC,YAAY,CAAC,sBAAsB,CAAC,EACnC,4CAA4C;IAC9C,CAAC,YAAY,CAAC,kBAAkB,CAAC,EAC/B,6BAA6B;IAC/B,CAAC,YAAY,CAAC,cAAc,CAAC,EAC3B,oDAAoD;IACtD,CAAC,YAAY,CAAC,gBAAgB,CAAC,EAC7B,0DAA0D;IAC5D,CAAC,YAAY,CAAC,gBAAgB,CAAC,EAC7B,iCAAiC;IACnC,CAAC,YAAY,CAAC,UAAU,CAAC,EACvB,0CAA0C;IAC5C,CAAC,YAAY,CAAC,gBAAgB,CAAC,EAC7B,+BAA+B;IACjC,CAAC,YAAY,CAAC,mBAAmB,CAAC,EAChC,mDAAmD;IACrD,CAAC,YAAY,CAAC,aAAa,CAAC,EAC1B,qDAAqD;IACvD,CAAC,YAAY,CAAC,aAAa,CAAC,EAC1B,kDAAkD;IACpD,CAAC,YAAY,CAAC,aAAa,CAAC,EAC1B,oCAAoC;IACtC,CAAC,YAAY,CAAC,eAAe,CAAC,EAC5B,0CAA0C;IAC5C,CAAC,YAAY,CAAC,kBAAkB,CAAC,EAC/B,8CAA8C;IAChD,CAAC,YAAY,CAAC,uBAAuB,CAAC,EACpC,6DAA6D;IAC/D,CAAC,YAAY,CAAC,gBAAgB,CAAC,EAC7B,wDAAwD;IAC1D,CAAC,YAAY,CAAC,kBAAkB,CAAC,EAC/B,+CAA+C;IACjD,CAAC,YAAY,CAAC,oBAAoB,CAAC,EACjC,6BAA6B;IAC/B,CAAC,YAAY,CAAC,oBAAoB,CAAC,EACjC,yBAAyB;IAC3B,CAAC,YAAY,CAAC,iBAAiB,CAAC,EAC9B,yBAAyB;IAC3B,CAAC,YAAY,CAAC,2BAA2B,CAAC,EACxC,sCAAsC;IACxC,CAAC,YAAY,CAAC,eAAe,CAAC,EAC5B,2CAA2C;IAC7C,CAAC,YAAY,CAAC,aAAa,CAAC,EAC1B,4CAA4C;IAC9C,CAAC,YAAY,CAAC,YAAY,CAAC,EACzB,0BAA0B;IAC5B,CAAC,YAAY,CAAC,oBAAoB,CAAC,EACjC,gCAAgC;IAClC,CAAC,YAAY,CAAC,cAAc,CAAC,EAC3B,wCAAwC;IAC1C,CAAC,YAAY,CAAC,OAAO,CAAC,EACpB,sBAAsB;IACxB,CAAC,YAAY,CAAC,qBAAqB,CAAC,EAClC,+DAA+D;IACjE,CAAC,YAAY,CAAC,wBAAwB,CAAC,EACrC,yCAAyC;IAC3C,CAAC,YAAY,CAAC,iBAAiB,CAAC,EAC9B,8CAA8C;IAChD,CAAC,YAAY,CAAC,cAAc,CAAC,EAC3B,sCAAsC;CACzC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CAAC,IAAkB;IACvD,OAAO,sBAAsB,CAAC,IAAI,CAAC,IAAI,gBAAgB,CAAC;AAC1D,CAAC;AAED;;;GAGG;AACH,MAAM,OAAO,QAAS,SAAQ,KAAK;IACjB,IAAI,CAAe;IACnB,OAAO,CAAW;IAClB,SAAS,CAAS;IAElC;;;;;;OAMG;IACH,YAAY,IAAkB,EAAE,OAAe,EAAE,OAAiB;QAChE,KAAK,CAAC,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC,CAAC;QAC9B,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC5B,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;IAClD,CAAC;IAED;;;;OAIG;IACI,MAAM;QACX,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,SAAS,EAAE,IAAI,CAAC,SAAS;SAC1B,CAAC;IACJ,CAAC;CACF;AAED;;;;;;GAMG;AACH,MAAM,UAAU,UAAU,CACxB,GAAY,EACZ,cAA4B,YAAY,CAAC,cAAc;IAEvD,IAAI,GAAG,YAAY,QAAQ,EAAE,CAAC;QAC5B,OAAO,GAAG,CAAC;IACb,CAAC;IACD,IAAI,GAAG,YAAY,KAAK,EAAE,CAAC;QACzB,OAAO,IAAI,QAAQ,CAAC,WAAW,EAAE,GAAG,CAAC,OAAO,EAAE,EAAE,aAAa,EAAE,GAAG,EAAE,CAAC,CAAC;IACxE,CAAC;IACD,OAAO,IAAI,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AAChD,CAAC"}
1
+ {"version":3,"file":"DEMErrors.js","sourceRoot":"","sources":["../DEMErrors.ts"],"names":[],"mappings":"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"}
package/README.md CHANGED
@@ -45,6 +45,14 @@ DEM isolates responsibilities into two distinct packages:
45
45
  - Resolves entity relations through `@populatedRef` decorators.
46
46
  - Supports self-contained snapshot entities using raw `@classProp` attributes.
47
47
 
48
+ ### 5. Reactive DEMArray Wrappers (v0.11.0+)
49
+ - Wraps primitive and relational arrays in `DEMArray<T>`.
50
+ - Provides synchronous queries (`length`, `map`, `filter`, `find`, `includes`, `slice`).
51
+ - Intercepts mutations (`push`, `pop`, `shift`, `unshift`, `splice`, `set`, `reverse`, `sort`, `clear`) returning Promises.
52
+ - Executes mutations pessimistically after server confirmation.
53
+ - Uses element-anchored operations (`targetId`) to eliminate index-drift under concurrent writes.
54
+ - Synchronizes client and server clocks using Cristian's algorithm during handshake.
55
+
48
56
  ---
49
57
 
50
58
  ## Packages
@@ -153,6 +161,7 @@ await task.setValue("completed", true);
153
161
  Detailed architectural guides exist in the `docs/` directory:
154
162
  - [Object Loading Process](docs/LOADING_PROCESS.md)
155
163
  - [ADR 0001: Smart Lazy Loading & Static Snapshots](docs/adr/0001-smart-lazy-loading-and-static-snapshots.md)
164
+ - [ADR 0002: DEMArray Reactive Mutation Architecture](docs/adr/0002-demarray-reactive-mutation-architecture.md)
156
165
  - [Delta Synchronization Architecture](docs/DELTA_SYNC_ARCHITECTURE.md)
157
166
  - [Delta Synchronization User Guide](docs/DELTA_SYNC.md)
158
167
  - [Database States and Error Handling](docs/ERRORS_AND_DB_STATE.md)
package/jest.config.js CHANGED
@@ -1,15 +1,13 @@
1
1
  const config = {
2
- globals: {
3
- "ts-jest": {
4
- useESM: true
5
- }
2
+ transform: {
3
+ '\\.[jt]s?$': ['ts-jest', { useESM: true, tsconfig: { allowJs: true } }],
6
4
  },
7
- transform: { '\\.[jt]s?$': ['ts-jest', { tsconfig: { allowJs: true } }] },
8
5
  preset: 'ts-jest/presets/default-esm',
9
6
  roots: ["tests/"],
10
7
  modulePathIgnorePatterns: [
11
8
  "node_modules/"
12
- ], moduleNameMapper: {
9
+ ],
10
+ moduleNameMapper: {
13
11
  '^(\\.{1,2}/.*)\\.[jt]s$': '$1',
14
12
  },
15
13
  };
@@ -1 +1 @@
1
- {"version":3,"file":"jest.config.js","sourceRoot":"","sources":["../jest.config.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,GAAyB;IACjC,OAAO,EAAE;QACL,SAAS,EAAE;YACP,MAAM,EAAE,IAAI;SACf;KACJ;IACD,SAAS,EAAE,EAAE,YAAY,EAAE,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE;IACzE,MAAM,EAAE,6BAA6B;IACrC,KAAK,EAAE,CAAC,QAAQ,CAAC;IACjB,wBAAwB,EAAE;QACtB,eAAe;KAClB,EAAE,gBAAgB,EAAE;QACrB,yBAAyB,EAAE,IAAI;KAChC;CACF,CAAC;AAEF,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"jest.config.js","sourceRoot":"","sources":["../jest.config.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,GAAyB;IACjC,SAAS,EAAE;QACP,YAAY,EAAE,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC;KAC3E;IACD,MAAM,EAAE,6BAA6B;IACrC,KAAK,EAAE,CAAC,QAAQ,CAAC;IACjB,wBAAwB,EAAE;QACtB,eAAe;KAClB;IACD,gBAAgB,EAAE;QACd,yBAAyB,EAAE,IAAI;KAClC;CACJ,CAAC;AAEF,eAAe,MAAM,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@prestizni-software/server-dem",
3
- "version": "0.10.3",
3
+ "version": "0.11.1",
4
4
  "description": "Real-time server synchronization library for DEM",
5
5
  "type": "module",
6
6
  "main": "./server.js",
@@ -10,14 +10,14 @@
10
10
  "registry": "https://registry.npmjs.org/"
11
11
  },
12
12
  "dependencies": {
13
- "@typegoose/typegoose": "^13.3.0",
14
- "bson": "^7.2.0",
13
+ "@typegoose/typegoose": "^13.5.0",
14
+ "bson": "^7.3.3",
15
15
  "eventemitter3": "^5.0.4",
16
- "lodash": "^4.17.23",
16
+ "lodash": "^4.18.1",
17
17
  "node-machine-id": "^1.1.12",
18
18
  "reflect-metadata": "^0.2.2",
19
- "socket.io": "^4.8.3",
20
- "socket.io-client": "^4.8.3",
19
+ "socket.io": "^4.8.4",
20
+ "socket.io-client": "^4.8.4",
21
21
  "string-similarity-js": "^2.1.4"
22
22
  }
23
23
  }
package/version.d.ts CHANGED
@@ -1,20 +1,20 @@
1
1
  /**
2
2
  * Current version of @prestizni-software/client-dem.
3
3
  */
4
- export declare const DEM_CLIENT_VERSION = "0.10.3";
4
+ export declare const DEM_CLIENT_VERSION = "0.11.1";
5
5
  /**
6
6
  * Current version of @prestizni-software/server-dem.
7
7
  */
8
- export declare const DEM_SERVER_VERSION = "0.10.3";
8
+ export declare const DEM_SERVER_VERSION = "0.11.1";
9
9
  /**
10
10
  * Lowest client version that the server is compatible with.
11
11
  * Server patches do not increment this value unless breaking compatibility.
12
12
  */
13
- export declare const DEM_MIN_COMPATIBLE_CLIENT_VERSION = "0.10.0";
13
+ export declare const DEM_MIN_COMPATIBLE_CLIENT_VERSION = "0.11.0";
14
14
  /**
15
15
  * Global DEM version constant indicating minimum compatible client version.
16
16
  */
17
- export declare const DEM_VERSION = "0.10.0";
17
+ export declare const DEM_VERSION = "0.11.0";
18
18
  /**
19
19
  * Socket protocol version for DEM communications.
20
20
  */
package/version.js CHANGED
@@ -1,16 +1,16 @@
1
1
  /**
2
2
  * Current version of @prestizni-software/client-dem.
3
3
  */
4
- export const DEM_CLIENT_VERSION = "0.10.3";
4
+ export const DEM_CLIENT_VERSION = "0.11.1";
5
5
  /**
6
6
  * Current version of @prestizni-software/server-dem.
7
7
  */
8
- export const DEM_SERVER_VERSION = "0.10.3";
8
+ export const DEM_SERVER_VERSION = "0.11.1";
9
9
  /**
10
10
  * Lowest client version that the server is compatible with.
11
11
  * Server patches do not increment this value unless breaking compatibility.
12
12
  */
13
- export const DEM_MIN_COMPATIBLE_CLIENT_VERSION = "0.10.0";
13
+ export const DEM_MIN_COMPATIBLE_CLIENT_VERSION = "0.11.0";
14
14
  /**
15
15
  * Global DEM version constant indicating minimum compatible client version.
16
16
  */