@prestizni-software/client-dem 0.7.4 → 0.7.6

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 (63) hide show
  1. package/AutoUpdateClientManagerClass.d.ts +141 -0
  2. package/{dist/AutoUpdateClientManagerClass.js → AutoUpdateClientManagerClass.js} +103 -12
  3. package/AutoUpdateClientManagerClass.js.map +1 -0
  4. package/AutoUpdateManagerClass.d.ts +102 -0
  5. package/{dist/AutoUpdateManagerClass.js → AutoUpdateManagerClass.js} +37 -0
  6. package/AutoUpdateManagerClass.js.map +1 -0
  7. package/{dist/AutoUpdatedClientObjectClass.d.ts → AutoUpdatedClientObjectClass.d.ts} +114 -0
  8. package/{dist/AutoUpdatedClientObjectClass.js → AutoUpdatedClientObjectClass.js} +108 -0
  9. package/AutoUpdatedClientObjectClass.js.map +1 -0
  10. package/{dist/CommonTypes.d.ts → CommonTypes.d.ts} +48 -9
  11. package/{dist/CommonTypes.js → CommonTypes.js} +52 -22
  12. package/CommonTypes.js.map +1 -0
  13. package/{dist/DEMErrors.d.ts → DEMErrors.d.ts} +22 -2
  14. package/{dist/DEMErrors.js → DEMErrors.js} +22 -2
  15. package/{dist/DEMErrors.js.map → DEMErrors.js.map} +1 -1
  16. package/package.json +20 -40
  17. package/{dist/sync → sync}/ClientStateReconciler.d.ts +20 -0
  18. package/{dist/sync → sync}/ClientStateReconciler.js +20 -0
  19. package/sync/ClientStateReconciler.js.map +1 -0
  20. package/{dist/sync → sync}/ServerChangeTracker.d.ts +46 -0
  21. package/{dist/sync → sync}/ServerChangeTracker.js +46 -0
  22. package/sync/ServerChangeTracker.js.map +1 -0
  23. package/sync/storage/IndexedDbStorageAdapter.d.ts +53 -0
  24. package/{dist/sync → sync}/storage/IndexedDbStorageAdapter.js +31 -0
  25. package/sync/storage/IndexedDbStorageAdapter.js.map +1 -0
  26. package/sync/storage/LocalStorageAdapter.d.ts +59 -0
  27. package/{dist/sync → sync}/storage/LocalStorageAdapter.js +32 -0
  28. package/sync/storage/LocalStorageAdapter.js.map +1 -0
  29. package/sync/storage/MemoryStorageAdapter.d.ts +34 -0
  30. package/sync/storage/MemoryStorageAdapter.js +45 -0
  31. package/sync/storage/MemoryStorageAdapter.js.map +1 -0
  32. package/version.d.ts +21 -0
  33. package/version.js +22 -0
  34. package/version.js.map +1 -0
  35. package/README.md +0 -18
  36. package/dist/AutoUpdateClientManagerClass.d.ts +0 -51
  37. package/dist/AutoUpdateClientManagerClass.js.map +0 -1
  38. package/dist/AutoUpdateManagerClass.d.ts +0 -37
  39. package/dist/AutoUpdateManagerClass.js.map +0 -1
  40. package/dist/AutoUpdatedClientObjectClass.js.map +0 -1
  41. package/dist/CommonTypes.js.map +0 -1
  42. package/dist/sync/ClientStateReconciler.js.map +0 -1
  43. package/dist/sync/ServerChangeTracker.js.map +0 -1
  44. package/dist/sync/storage/IndexedDbStorageAdapter.d.ts +0 -22
  45. package/dist/sync/storage/IndexedDbStorageAdapter.js.map +0 -1
  46. package/dist/sync/storage/LocalStorageAdapter.d.ts +0 -27
  47. package/dist/sync/storage/LocalStorageAdapter.js.map +0 -1
  48. package/dist/sync/storage/MemoryStorageAdapter.d.ts +0 -13
  49. package/dist/sync/storage/MemoryStorageAdapter.js +0 -25
  50. package/dist/sync/storage/MemoryStorageAdapter.js.map +0 -1
  51. package/dist/tsconfig.tsbuildinfo +0 -1
  52. /package/{dist/client.d.ts → client.d.ts} +0 -0
  53. /package/{dist/client.js → client.js} +0 -0
  54. /package/{dist/client.js.map → client.js.map} +0 -0
  55. /package/{dist/sync → sync}/index.d.ts +0 -0
  56. /package/{dist/sync → sync}/index.js +0 -0
  57. /package/{dist/sync → sync}/index.js.map +0 -0
  58. /package/{dist/sync → sync}/storage/IClientStorageAdapter.d.ts +0 -0
  59. /package/{dist/sync → sync}/storage/IClientStorageAdapter.js +0 -0
  60. /package/{dist/sync → sync}/storage/IClientStorageAdapter.js.map +0 -0
  61. /package/{dist/sync → sync}/types.d.ts +0 -0
  62. /package/{dist/sync → sync}/types.js +0 -0
  63. /package/{dist/sync → sync}/types.js.map +0 -0
@@ -1,4 +1,10 @@
1
1
  import "reflect-metadata";
2
+ /**
3
+ * Property decorator that registers a property into the class reflection metadata.
4
+ *
5
+ * @param target - Prototype of the target class.
6
+ * @param propertyKey - Property name to register.
7
+ */
2
8
  export function classProp(target, propertyKey) {
3
9
  const props = Reflect.getOwnMetadata("props", target) || [];
4
10
  if (props.includes(propertyKey))
@@ -6,6 +12,12 @@ export function classProp(target, propertyKey) {
6
12
  const newProps = [...props, propertyKey];
7
13
  Reflect.defineMetadata("props", newProps, target);
8
14
  }
15
+ /**
16
+ * Property decorator for populated references pointing to another managed entity class.
17
+ *
18
+ * @param where - The target managed class name this property references.
19
+ * @returns Property decorator function.
20
+ */
9
21
  export function populatedRef(where) {
10
22
  return function (target, propertyKey) {
11
23
  classProp(target, propertyKey);
@@ -13,6 +25,11 @@ export function populatedRef(where) {
13
25
  Reflect.defineMetadata("refsTo", where, target, propertyKey);
14
26
  };
15
27
  }
28
+ /**
29
+ * Property decorator marking a property as an unresolved reference pointer.
30
+ *
31
+ * @returns Property decorator function.
32
+ */
16
33
  export function classRef() {
17
34
  return function (target, propertyKey) {
18
35
  classProp(target, propertyKey);
@@ -26,16 +43,12 @@ export const EVENT_NEW = "new";
26
43
  export const EVENT_GET = "get";
27
44
  export const EVENT_STARTUP = "startup";
28
45
  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";
46
+ export * from "./version.js";
37
47
  /**
38
48
  * Parses a semantic version string (e.g. "0.6.5", "v1.2.3-alpha").
49
+ *
50
+ * @param version - Semantic version string to parse.
51
+ * @returns ParsedSemVer object containing major, minor, patch, and prerelease fields, or null if invalid.
39
52
  */
40
53
  export function parseSemVer(version) {
41
54
  if (!version || typeof version !== "string")
@@ -53,7 +66,10 @@ export function parseSemVer(version) {
53
66
  }
54
67
  /**
55
68
  * Compares two semantic version strings.
56
- * Returns -1 if v1 < v2, 0 if v1 === v2, 1 if v1 > v2.
69
+ *
70
+ * @param v1 - First version string.
71
+ * @param v2 - Second version string.
72
+ * @returns -1 if v1 < v2, 0 if v1 === v2, 1 if v1 > v2.
57
73
  */
58
74
  export function compareSemVer(v1, v2) {
59
75
  const p1 = parseSemVer(v1);
@@ -74,6 +90,12 @@ export function compareSemVer(v1, v2) {
74
90
  }
75
91
  /**
76
92
  * Verifies compatibility between client and server DEM versions.
93
+ * Evaluates SemVer rules, custom validators, and minimum required versions.
94
+ *
95
+ * @param clientVersion - DEM version of the client.
96
+ * @param serverVersion - DEM version of the server.
97
+ * @param options - Optional verification rules and callbacks.
98
+ * @returns Object describing compatibility result and status code.
77
99
  */
78
100
  export function verifyDEMVersion(clientVersion, serverVersion, options) {
79
101
  const cParsed = parseSemVer(clientVersion);
@@ -148,21 +170,12 @@ export function verifyDEMVersion(clientVersion, serverVersion, options) {
148
170
  }
149
171
  // Minor version difference
150
172
  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
173
  return {
161
- compatible: true,
174
+ compatible: false,
162
175
  clientVersion,
163
176
  serverVersion,
164
- status: "compatible_minor",
165
- message: `DEM minor version notice: Client (${clientVersion}) differs from Server (${serverVersion}). Functionality is compatible.`,
177
+ status: "mismatch_minor",
178
+ message: `Incompatible minor DEM version: Client is ${clientVersion}, Server is ${serverVersion}. Minor versions must match.`,
166
179
  };
167
180
  }
168
181
  // Patch version difference
@@ -171,9 +184,15 @@ export function verifyDEMVersion(clientVersion, serverVersion, options) {
171
184
  clientVersion,
172
185
  serverVersion,
173
186
  status: "compatible_patch",
174
- message: `DEM patch version notice: Client (${clientVersion}) and Server (${serverVersion}).`,
187
+ message: `DEM patch version compatible: Client (${clientVersion}) and Server (${serverVersion}).`,
175
188
  };
176
189
  }
190
+ /**
191
+ * Safely stringifies a value to JSON, catching circular reference errors.
192
+ *
193
+ * @param obj - The value to stringify.
194
+ * @returns JSON string or fallback warning message.
195
+ */
177
196
  export function safeStringify(obj) {
178
197
  try {
179
198
  return JSON.stringify(obj);
@@ -182,11 +201,22 @@ export function safeStringify(obj) {
182
201
  return "[Circular or non-serializable object]";
183
202
  }
184
203
  }
204
+ /**
205
+ * Global cache storing object references across managers.
206
+ */
185
207
  export class DEMGlobalCache {
186
208
  objects = {};
209
+ /**
210
+ * Clears all objects in the cache.
211
+ */
187
212
  clear() {
188
213
  this.objects = {};
189
214
  }
215
+ /**
216
+ * Retrieves the number of stored objects.
217
+ *
218
+ * @returns Total count of cached objects.
219
+ */
190
220
  get size() {
191
221
  return Object.keys(this.objects).length;
192
222
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CommonTypes.js","sourceRoot":"","sources":["../CommonTypes.ts"],"names":[],"mappings":"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"}
@@ -44,17 +44,33 @@ export declare enum DEMErrorCode {
44
44
  */
45
45
  export declare const DEM_ERROR_DESCRIPTIONS: Record<DEMErrorCode, string>;
46
46
  /**
47
- * Returns human-readable description for given error code.
47
+ * Returns the human-readable description for a given error code.
48
+ *
49
+ * @param code - The DEM error code enum value.
50
+ * @returns Standard descriptive message corresponding to the error code.
48
51
  */
49
52
  export declare function getDEMErrorDescription(code: DEMErrorCode): string;
50
53
  /**
51
54
  * Standard typed Error class for DEM.
55
+ * Enforces structured error codes and optional diagnostic payloads.
52
56
  */
53
57
  export declare class DEMError extends Error {
54
58
  readonly code: DEMErrorCode;
55
59
  readonly details?: unknown;
56
60
  readonly timestamp: number;
61
+ /**
62
+ * Constructs a new DEMError instance.
63
+ *
64
+ * @param code - The typed error code.
65
+ * @param message - Descriptive error message.
66
+ * @param details - Optional arbitrary diagnostic data.
67
+ */
57
68
  constructor(code: DEMErrorCode, message: string, details?: unknown);
69
+ /**
70
+ * Serializes the error instance to a JSON-compatible object.
71
+ *
72
+ * @returns Plain object representation of the DEMError.
73
+ */
58
74
  toJSON(): {
59
75
  name: string;
60
76
  code: DEMErrorCode;
@@ -64,6 +80,10 @@ export declare class DEMError extends Error {
64
80
  };
65
81
  }
66
82
  /**
67
- * Converts unknown error into DEMError instance.
83
+ * Converts an unknown caught error or object into a typed DEMError instance.
84
+ *
85
+ * @param err - The caught error or value.
86
+ * @param defaultCode - Fallback error code when the source is not a DEMError.
87
+ * @returns Standard DEMError instance.
68
88
  */
69
89
  export declare function toDEMError(err: unknown, defaultCode?: DEMErrorCode): DEMError;
@@ -90,18 +90,29 @@ export const DEM_ERROR_DESCRIPTIONS = {
90
90
  [DEMErrorCode.INTERNAL_ERROR]: "Internal DEM library error occurred.",
91
91
  };
92
92
  /**
93
- * Returns human-readable description for given error code.
93
+ * Returns the human-readable description for a given error code.
94
+ *
95
+ * @param code - The DEM error code enum value.
96
+ * @returns Standard descriptive message corresponding to the error code.
94
97
  */
95
98
  export function getDEMErrorDescription(code) {
96
99
  return DEM_ERROR_DESCRIPTIONS[code] || "Unknown error.";
97
100
  }
98
101
  /**
99
102
  * Standard typed Error class for DEM.
103
+ * Enforces structured error codes and optional diagnostic payloads.
100
104
  */
101
105
  export class DEMError extends Error {
102
106
  code;
103
107
  details;
104
108
  timestamp;
109
+ /**
110
+ * Constructs a new DEMError instance.
111
+ *
112
+ * @param code - The typed error code.
113
+ * @param message - Descriptive error message.
114
+ * @param details - Optional arbitrary diagnostic data.
115
+ */
105
116
  constructor(code, message, details) {
106
117
  super(`[${code}] ${message}`);
107
118
  this.name = "DEMError";
@@ -110,6 +121,11 @@ export class DEMError extends Error {
110
121
  this.timestamp = Date.now();
111
122
  Object.setPrototypeOf(this, DEMError.prototype);
112
123
  }
124
+ /**
125
+ * Serializes the error instance to a JSON-compatible object.
126
+ *
127
+ * @returns Plain object representation of the DEMError.
128
+ */
113
129
  toJSON() {
114
130
  return {
115
131
  name: this.name,
@@ -121,7 +137,11 @@ export class DEMError extends Error {
121
137
  }
122
138
  }
123
139
  /**
124
- * Converts unknown error into DEMError instance.
140
+ * Converts an unknown caught error or object into a typed DEMError instance.
141
+ *
142
+ * @param err - The caught error or value.
143
+ * @param defaultCode - Fallback error code when the source is not a DEMError.
144
+ * @returns Standard DEMError instance.
125
145
  */
126
146
  export function toDEMError(err, defaultCode = DEMErrorCode.INTERNAL_ERROR) {
127
147
  if (err instanceof DEMError) {
@@ -1 +1 @@
1
- {"version":3,"file":"DEMErrors.js","sourceRoot":"","sources":["../DEMErrors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DEMErrors.js","sourceRoot":"","sources":["../DEMErrors.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,40 +1,20 @@
1
- {
2
- "name": "@prestizni-software/client-dem",
3
- "version": "0.7.4",
4
- "description": "An solution for when making http requests is not a good solution",
5
- "keywords": [
6
- "websockets"
7
- ],
8
- "license": "ISC",
9
- "author": "xx0055",
10
- "type": "module",
11
- "main": "./dist/client.js",
12
- "module": "./dist/client.mjs",
13
- "types": "./dist/client.d.ts",
14
- "files": [
15
- "dist"
16
- ],
17
- "publishConfig": {
18
- "access": "public",
19
- "registry": "https://registry.npmjs.org/"
20
- },
21
- "scripts": {
22
- "build": "npx tsc",
23
- "release": "git pull && npm i && npm run build && npx standard-version && git push --follow-tags && npm publish --access public",
24
- "release:patch": "git pull && npm i && npm run build && npx standard-version --release-as patch && git push --follow-tags && npm publish --access public",
25
- "release:minor": "git pull && npm i && npm run build && npx standard-version --release-as minor && git push --follow-tags && npm publish --access public",
26
- "release:major": "git pull && npm i && npm run build && npx standard-version --release-as major && git push --follow-tags && npm publish --access public"
27
- },
28
- "dependencies": {
29
- "bson": "^7.2.0",
30
- "eventemitter3": "^5.0.4",
31
- "lodash": "^4.17.23",
32
- "reflect-metadata": "^0.2.2",
33
- "socket.io-client": "^4.8.3",
34
- "string-similarity-js": "^2.1.4"
35
- },
36
- "devDependencies": {
37
- "@types/lodash": "^4.17.24",
38
- "@types/node": "^25.3.0"
39
- }
40
- }
1
+ {
2
+ "name": "@prestizni-software/client-dem",
3
+ "version": "0.7.6",
4
+ "description": "Real-time client synchronization library for DEM",
5
+ "type": "module",
6
+ "main": "./client.js",
7
+ "types": "./client.d.ts",
8
+ "publishConfig": {
9
+ "access": "public",
10
+ "registry": "https://registry.npmjs.org/"
11
+ },
12
+ "dependencies": {
13
+ "bson": "^7.2.0",
14
+ "eventemitter3": "^5.0.4",
15
+ "lodash": "^4.17.23",
16
+ "reflect-metadata": "^0.2.2",
17
+ "socket.io-client": "^4.8.3",
18
+ "string-similarity-js": "^2.1.4"
19
+ }
20
+ }
@@ -23,6 +23,10 @@ export interface ReconcilableClientManager<T extends IAutoUpdatedClientObjectBas
23
23
  export declare class ClientStateReconciler {
24
24
  /**
25
25
  * Restores client manager objects in-memory from a persistent storage adapter.
26
+ *
27
+ * @param manager - Reconcilable client manager instance.
28
+ * @param storageAdapter - Storage adapter implementing IClientStorageAdapter.
29
+ * @returns Object indicating restoration success, stored revision, and restored entity count.
26
30
  */
27
31
  static restoreFromStorage<T extends IAutoUpdatedClientObjectBase>(manager: ReconcilableClientManager<T>, storageAdapter: IClientStorageAdapter): Promise<{
28
32
  restored: boolean;
@@ -31,11 +35,27 @@ export declare class ClientStateReconciler {
31
35
  }>;
32
36
  /**
33
37
  * Persists current manager in-memory state to storage adapter.
38
+ *
39
+ * @param manager - Reconcilable client manager instance.
40
+ * @param revision - Monotonic revision number to record with the snapshot.
41
+ * @param storageAdapter - Storage adapter to receive the persisted state.
34
42
  */
35
43
  static persistToStorage<T extends IAutoUpdatedClientObjectBase>(manager: ReconcilableClientManager<T>, revision: number, storageAdapter: IClientStorageAdapter): Promise<void>;
36
44
  /**
37
45
  * Applies a delta changes payload to the in-memory client manager.
46
+ * Handles creates, updates, and deletes with callback dispatch and local state persistence.
47
+ *
48
+ * @param manager - Reconcilable client manager instance.
49
+ * @param payload - Delta sync payload containing status, revision, and changes array.
50
+ * @param storageAdapter - Optional storage adapter to persist reconciled state.
38
51
  */
39
52
  static applyDelta<T extends IAutoUpdatedClientObjectBase>(manager: ReconcilableClientManager<T>, payload: DeltaSyncPayload<any>, storageAdapter?: IClientStorageAdapter): Promise<void>;
53
+ /**
54
+ * Patches changed fields onto an existing client object instance and triggers update callback.
55
+ *
56
+ * @param targetObj - Target client object to patch.
57
+ * @param patchData - Key-value map of properties to apply.
58
+ * @param callbacks - Optional manager callbacks interface.
59
+ */
40
60
  private static patchObjectProperties;
41
61
  }
@@ -2,6 +2,10 @@ import { globalCache } from "../CommonTypes.js";
2
2
  export class ClientStateReconciler {
3
3
  /**
4
4
  * Restores client manager objects in-memory from a persistent storage adapter.
5
+ *
6
+ * @param manager - Reconcilable client manager instance.
7
+ * @param storageAdapter - Storage adapter implementing IClientStorageAdapter.
8
+ * @returns Object indicating restoration success, stored revision, and restored entity count.
5
9
  */
6
10
  static async restoreFromStorage(manager, storageAdapter) {
7
11
  try {
@@ -50,6 +54,10 @@ export class ClientStateReconciler {
50
54
  }
51
55
  /**
52
56
  * Persists current manager in-memory state to storage adapter.
57
+ *
58
+ * @param manager - Reconcilable client manager instance.
59
+ * @param revision - Monotonic revision number to record with the snapshot.
60
+ * @param storageAdapter - Storage adapter to receive the persisted state.
53
61
  */
54
62
  static async persistToStorage(manager, revision, storageAdapter) {
55
63
  try {
@@ -77,6 +85,11 @@ export class ClientStateReconciler {
77
85
  }
78
86
  /**
79
87
  * Applies a delta changes payload to the in-memory client manager.
88
+ * Handles creates, updates, and deletes with callback dispatch and local state persistence.
89
+ *
90
+ * @param manager - Reconcilable client manager instance.
91
+ * @param payload - Delta sync payload containing status, revision, and changes array.
92
+ * @param storageAdapter - Optional storage adapter to persist reconciled state.
80
93
  */
81
94
  static async applyDelta(manager, payload, storageAdapter) {
82
95
  const changes = payload.changes ?? [];
@@ -141,6 +154,13 @@ export class ClientStateReconciler {
141
154
  await this.persistToStorage(manager, payload.revision, storageAdapter);
142
155
  }
143
156
  }
157
+ /**
158
+ * Patches changed fields onto an existing client object instance and triggers update callback.
159
+ *
160
+ * @param targetObj - Target client object to patch.
161
+ * @param patchData - Key-value map of properties to apply.
162
+ * @param callbacks - Optional manager callbacks interface.
163
+ */
144
164
  static async patchObjectProperties(targetObj, patchData, callbacks) {
145
165
  for (const key of Object.keys(patchData)) {
146
166
  if (key === "_id")
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClientStateReconciler.js","sourceRoot":"","sources":["../../sync/ClientStateReconciler.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,9 @@
1
1
  import { ChangeEntry, ChangeLogOptions, ChangeType, PruneMode } from "./types.js";
2
2
  /**
3
3
  * Calculates a fast approximation of the memory/JSON byte footprint of a JavaScript object/value.
4
+ *
5
+ * @param obj - The value or object to estimate.
6
+ * @returns Estimated size in bytes.
4
7
  */
5
8
  export declare function estimateObjectSizeBytes(obj: unknown): number;
6
9
  export declare class ServerChangeTracker<T = unknown> {
@@ -13,27 +16,70 @@ export declare class ServerChangeTracker<T = unknown> {
13
16
  maxSizeBytes?: number;
14
17
  maxEntries?: number;
15
18
  pruneMode: PruneMode;
19
+ /**
20
+ * Initializes a new ServerChangeTracker instance.
21
+ *
22
+ * @param className - Managed entity class name.
23
+ * @param options - Pruning options such as maxAgeMs, maxSizeBytes, maxEntries, and pruneMode.
24
+ */
16
25
  constructor(className: string, options?: ChangeLogOptions);
17
26
  /**
18
27
  * Dynamically updates limits (MB size, TTL age, entries, pruneMode) mid-run and triggers pruning.
28
+ *
29
+ * @param options - Partial set of options to overwrite.
19
30
  */
20
31
  updateOptions(options: Partial<ChangeLogOptions>): void;
32
+ /**
33
+ * Retrieves the current monotonic revision number.
34
+ *
35
+ * @returns Latest revision counter.
36
+ */
21
37
  getCurrentRevision(): number;
38
+ /**
39
+ * Retrieves the lowest revision number retained in the mutation log.
40
+ *
41
+ * @returns Oldest retained revision number.
42
+ */
22
43
  getLowestRetainedRevision(): number;
44
+ /**
45
+ * Retrieves the estimated total memory usage of all retained entries in bytes.
46
+ *
47
+ * @returns Total bytes consumed by retained entries.
48
+ */
23
49
  getEstimatedSizeBytes(): number;
50
+ /**
51
+ * Retrieves the total count of currently retained change entries.
52
+ *
53
+ * @returns Number of retained mutation entries.
54
+ */
24
55
  getEntryCount(): number;
25
56
  /**
26
57
  * Records a mutation and assigns a new monotonic revision number.
58
+ *
59
+ * @param type - Mutation type ('create', 'update', or 'delete').
60
+ * @param id - String identifier of mutated entity.
61
+ * @param data - Optional mutated property payload.
62
+ * @returns Assigned monotonic revision number.
27
63
  */
28
64
  recordChange(type: ChangeType, id: string, data?: Partial<T>): number;
29
65
  /**
30
66
  * Records a mutation with an explicit timestamp (useful for testing or replay).
67
+ *
68
+ * @param type - Mutation type ('create', 'update', or 'delete').
69
+ * @param id - String identifier of mutated entity.
70
+ * @param data - Optional mutated property payload.
71
+ * @param timestamp - Explicit Unix timestamp in milliseconds.
72
+ * @returns Assigned monotonic revision number.
31
73
  */
32
74
  recordChangeWithTimestamp(type: ChangeType, id: string, data: Partial<T> | undefined, timestamp: number): number;
33
75
  /**
34
76
  * Retrieves all mutations occurring strictly after `clientRevision`.
35
77
  * If `clientRevision` is older than the lowest retained revision in history,
36
78
  * returns `isExpired: true` indicating a full sync is necessary.
79
+ *
80
+ * @param clientRevision - The last revision known by the client.
81
+ * @param allowedIds - Optional Set of allowed IDs for permission filtering.
82
+ * @returns Object containing isExpired flag and array of change entries.
37
83
  */
38
84
  getChangesSince(clientRevision: number, allowedIds?: Set<string>): {
39
85
  isExpired: boolean;
@@ -1,5 +1,8 @@
1
1
  /**
2
2
  * Calculates a fast approximation of the memory/JSON byte footprint of a JavaScript object/value.
3
+ *
4
+ * @param obj - The value or object to estimate.
5
+ * @returns Estimated size in bytes.
3
6
  */
4
7
  export function estimateObjectSizeBytes(obj) {
5
8
  if (obj === null || obj === undefined)
@@ -39,6 +42,12 @@ export class ServerChangeTracker {
39
42
  maxSizeBytes;
40
43
  maxEntries;
41
44
  pruneMode;
45
+ /**
46
+ * Initializes a new ServerChangeTracker instance.
47
+ *
48
+ * @param className - Managed entity class name.
49
+ * @param options - Pruning options such as maxAgeMs, maxSizeBytes, maxEntries, and pruneMode.
50
+ */
42
51
  constructor(className, options) {
43
52
  this.className = className;
44
53
  this.maxAgeMs = options?.maxAgeMs;
@@ -48,6 +57,8 @@ export class ServerChangeTracker {
48
57
  }
49
58
  /**
50
59
  * Dynamically updates limits (MB size, TTL age, entries, pruneMode) mid-run and triggers pruning.
60
+ *
61
+ * @param options - Partial set of options to overwrite.
51
62
  */
52
63
  updateOptions(options) {
53
64
  if (options.maxAgeMs !== undefined)
@@ -60,26 +71,57 @@ export class ServerChangeTracker {
60
71
  this.pruneMode = options.pruneMode;
61
72
  this.prune();
62
73
  }
74
+ /**
75
+ * Retrieves the current monotonic revision number.
76
+ *
77
+ * @returns Latest revision counter.
78
+ */
63
79
  getCurrentRevision() {
64
80
  return this.currentRevision;
65
81
  }
82
+ /**
83
+ * Retrieves the lowest revision number retained in the mutation log.
84
+ *
85
+ * @returns Oldest retained revision number.
86
+ */
66
87
  getLowestRetainedRevision() {
67
88
  return this.lowestRetainedRevision;
68
89
  }
90
+ /**
91
+ * Retrieves the estimated total memory usage of all retained entries in bytes.
92
+ *
93
+ * @returns Total bytes consumed by retained entries.
94
+ */
69
95
  getEstimatedSizeBytes() {
70
96
  return this.totalEstimatedBytes;
71
97
  }
98
+ /**
99
+ * Retrieves the total count of currently retained change entries.
100
+ *
101
+ * @returns Number of retained mutation entries.
102
+ */
72
103
  getEntryCount() {
73
104
  return this.entries.length;
74
105
  }
75
106
  /**
76
107
  * Records a mutation and assigns a new monotonic revision number.
108
+ *
109
+ * @param type - Mutation type ('create', 'update', or 'delete').
110
+ * @param id - String identifier of mutated entity.
111
+ * @param data - Optional mutated property payload.
112
+ * @returns Assigned monotonic revision number.
77
113
  */
78
114
  recordChange(type, id, data) {
79
115
  return this.recordChangeWithTimestamp(type, id, data, Date.now());
80
116
  }
81
117
  /**
82
118
  * Records a mutation with an explicit timestamp (useful for testing or replay).
119
+ *
120
+ * @param type - Mutation type ('create', 'update', or 'delete').
121
+ * @param id - String identifier of mutated entity.
122
+ * @param data - Optional mutated property payload.
123
+ * @param timestamp - Explicit Unix timestamp in milliseconds.
124
+ * @returns Assigned monotonic revision number.
83
125
  */
84
126
  recordChangeWithTimestamp(type, id, data, timestamp) {
85
127
  this.currentRevision += 1;
@@ -104,6 +146,10 @@ export class ServerChangeTracker {
104
146
  * Retrieves all mutations occurring strictly after `clientRevision`.
105
147
  * If `clientRevision` is older than the lowest retained revision in history,
106
148
  * returns `isExpired: true` indicating a full sync is necessary.
149
+ *
150
+ * @param clientRevision - The last revision known by the client.
151
+ * @param allowedIds - Optional Set of allowed IDs for permission filtering.
152
+ * @returns Object containing isExpired flag and array of change entries.
107
153
  */
108
154
  getChangesSince(clientRevision, allowedIds) {
109
155
  if (clientRevision >= this.currentRevision) {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ServerChangeTracker.js","sourceRoot":"","sources":["../../sync/ServerChangeTracker.ts"],"names":[],"mappings":"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"}