@vuer-ai/vuer-rtc 0.1.1 → 0.1.3
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/client/actions.d.ts.map +1 -1
- package/dist/client/actions.js +13 -8
- package/dist/client/actions.js.map +1 -1
- package/dist/client/types.d.ts +1 -0
- package/dist/client/types.d.ts.map +1 -1
- package/dist/state/ConflictResolver.d.ts +19 -7
- package/dist/state/ConflictResolver.d.ts.map +1 -1
- package/dist/state/ConflictResolver.js +38 -27
- package/dist/state/ConflictResolver.js.map +1 -1
- package/dist/state/index.d.ts +4 -3
- package/dist/state/index.d.ts.map +1 -1
- package/dist/state/index.js +4 -3
- package/dist/state/index.js.map +1 -1
- package/package.json +1 -1
- package/src/client/actions.ts +13 -8
- package/src/client/types.ts +1 -0
- package/src/state/ConflictResolver.ts +42 -32
- package/src/state/index.ts +4 -3
- package/src/state/Schema.ts +0 -236
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../../src/client/actions.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC1F,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAOtE;;GAEG;AACH,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,QAAQ,GAAG,WAAW,
|
|
1
|
+
{"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../../src/client/actions.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC1F,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAOtE;;GAEG;AACH,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,QAAQ,GAAG,WAAW,CAkB7F;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,YAAY,EAAE,EACvB,UAAU,EAAE,SAAS,EAAE,GACtB,UAAU,CA4BZ;AAED;;GAEG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE,EAAE,SAAS,GAAG,WAAW,CAqCrE;AAED;;GAEG;AACH,wBAAgB,WAAW,CACzB,KAAK,EAAE,WAAW,EAClB,YAAY,CAAC,EAAE,MAAM,GACpB;IAAE,KAAK,EAAE,WAAW,CAAC;IAAC,GAAG,EAAE,WAAW,GAAG,IAAI,CAAA;CAAE,CA6BjD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,WAAW,GAAG,WAAW,CAa3D;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,GAAG,WAAW,CAO1E;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,WAAW,GAAG,WAAW,CA8BjF;AAED;;GAEG;AACH,wBAAgB,IAAI,CAAC,KAAK,EAAE,WAAW,GAAG;IAAE,KAAK,EAAE,WAAW,CAAC;IAAC,GAAG,EAAE,WAAW,GAAG,IAAI,CAAA;CAAE,CAqDxF;AAED;;GAEG;AACH,wBAAgB,IAAI,CAAC,KAAK,EAAE,WAAW,GAAG;IAAE,KAAK,EAAE,WAAW,CAAC;IAAC,GAAG,EAAE,WAAW,GAAG,IAAI,CAAA;CAAE,CAyCxF;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,WAAW,GAAG,WAAW,CA2BvD;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,WAAW,GAAG,WAAW,EAAE,CAIpE;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAE9D;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAE1D;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,WAAW,EAAE,GACrB,WAAW,CAqCb"}
|
package/dist/client/actions.js
CHANGED
|
@@ -23,6 +23,7 @@ export function createInitialState(sessionId, initialSnapshot) {
|
|
|
23
23
|
const snapshot = initialSnapshot ?? {
|
|
24
24
|
graph: emptyGraph,
|
|
25
25
|
vectorClock: {},
|
|
26
|
+
lamportTime: 0,
|
|
26
27
|
journalIndex: 0,
|
|
27
28
|
};
|
|
28
29
|
return {
|
|
@@ -30,7 +31,7 @@ export function createInitialState(sessionId, initialSnapshot) {
|
|
|
30
31
|
journal: [],
|
|
31
32
|
edits: { ops: [], startGraph: null },
|
|
32
33
|
snapshot,
|
|
33
|
-
lamportTime: 0,
|
|
34
|
+
lamportTime: snapshot.lamportTime ?? 0,
|
|
34
35
|
vectorClock: clockManager.create(sessionId),
|
|
35
36
|
sessionId,
|
|
36
37
|
};
|
|
@@ -110,11 +111,12 @@ export function commitEdits(state, _description) {
|
|
|
110
111
|
return { state, msg: null };
|
|
111
112
|
}
|
|
112
113
|
const newClock = clockManager.increment(state.vectorClock, state.sessionId);
|
|
114
|
+
const newLamport = state.lamportTime + 1;
|
|
113
115
|
const msg = {
|
|
114
|
-
id:
|
|
116
|
+
id: `${state.sessionId}:${newLamport}`,
|
|
115
117
|
sessionId: state.sessionId,
|
|
116
118
|
clock: newClock,
|
|
117
|
-
lamportTime:
|
|
119
|
+
lamportTime: newLamport,
|
|
118
120
|
timestamp: Date.now(),
|
|
119
121
|
ops: [...state.edits.ops],
|
|
120
122
|
};
|
|
@@ -214,11 +216,12 @@ export function undo(state) {
|
|
|
214
216
|
}
|
|
215
217
|
// Create undo message
|
|
216
218
|
const newClock = clockManager.increment(currentState.vectorClock, currentState.sessionId);
|
|
219
|
+
const newLamport = currentState.lamportTime + 1;
|
|
217
220
|
const undoMsg = {
|
|
218
|
-
id:
|
|
221
|
+
id: `${currentState.sessionId}:${newLamport}`,
|
|
219
222
|
sessionId: currentState.sessionId,
|
|
220
223
|
clock: newClock,
|
|
221
|
-
lamportTime:
|
|
224
|
+
lamportTime: newLamport,
|
|
222
225
|
timestamp: Date.now(),
|
|
223
226
|
ops: [{ otype: 'meta.undo', key: '_meta', path: '_meta', targetMsgId }],
|
|
224
227
|
};
|
|
@@ -252,11 +255,12 @@ export function redo(state) {
|
|
|
252
255
|
return { state, msg: null };
|
|
253
256
|
// Create redo message
|
|
254
257
|
const newClock = clockManager.increment(state.vectorClock, state.sessionId);
|
|
258
|
+
const newLamport = state.lamportTime + 1;
|
|
255
259
|
const redoMsg = {
|
|
256
|
-
id:
|
|
260
|
+
id: `${state.sessionId}:${newLamport}`,
|
|
257
261
|
sessionId: state.sessionId,
|
|
258
262
|
clock: newClock,
|
|
259
|
-
lamportTime:
|
|
263
|
+
lamportTime: newLamport,
|
|
260
264
|
timestamp: Date.now(),
|
|
261
265
|
ops: [{ otype: 'meta.redo', key: '_meta', path: '_meta', targetMsgId: lastDeleted.msg.id }],
|
|
262
266
|
};
|
|
@@ -300,6 +304,7 @@ export function compact(state) {
|
|
|
300
304
|
draft.snapshot = {
|
|
301
305
|
graph: snapshotGraph,
|
|
302
306
|
vectorClock: draft.journal[lastAckedIdx].msg.clock,
|
|
307
|
+
lamportTime: draft.journal[lastAckedIdx].msg.lamportTime,
|
|
303
308
|
journalIndex: draft.snapshot.journalIndex + lastAckedIdx + 1,
|
|
304
309
|
};
|
|
305
310
|
// Remove compacted entries
|
|
@@ -344,7 +349,7 @@ export function getPendingCount(state) {
|
|
|
344
349
|
export function initFromServer(sessionId, snapshot, journal) {
|
|
345
350
|
let graph = snapshot.graph;
|
|
346
351
|
const journalEntries = [];
|
|
347
|
-
let maxLamport = 0;
|
|
352
|
+
let maxLamport = snapshot.lamportTime ?? 0;
|
|
348
353
|
let mergedClock = snapshot.vectorClock;
|
|
349
354
|
for (const msg of journal) {
|
|
350
355
|
// Process meta ops
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"actions.js","sourceRoot":"","sources":["../../src/client/actions.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"actions.js","sourceRoot":"","sources":["../../src/client/actions.ts"],"names":[],"mappings":"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"}
|
package/dist/client/types.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/client/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC1F,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAE3D;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,WAAW,CAAC;IACjB,GAAG,EAAE,OAAO,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,SAAS,EAAE,CAAC;IACjB,UAAU,EAAE,UAAU,GAAG,IAAI,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,UAAU,CAAC;IAClB,WAAW,EAAE,WAAW,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAE1B,KAAK,EAAE,UAAU,CAAC;IAGlB,OAAO,EAAE,YAAY,EAAE,CAAC;IAGxB,KAAK,EAAE,UAAU,CAAC;IAGlB,QAAQ,EAAE,QAAQ,CAAC;IAGnB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,WAAW,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,QAAQ,CAAC;IAC3B,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,WAAW,KAAK,IAAI,CAAC;IACpC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;CAC9C;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IAEzB,QAAQ,EAAE,MAAM,WAAW,CAAC;IAC5B,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,IAAI,KAAK,MAAM,IAAI,CAAC;IAGhD,IAAI,EAAE,CAAC,EAAE,EAAE,SAAS,KAAK,IAAI,CAAC;IAC9B,MAAM,EAAE,CAAC,WAAW,CAAC,EAAE,MAAM,KAAK,WAAW,GAAG,IAAI,CAAC;IAGrD,OAAO,EAAE,CAAC,GAAG,EAAE,WAAW,KAAK,IAAI,CAAC;IACpC,GAAG,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAG7B,IAAI,EAAE,MAAM;QAAE,GAAG,EAAE,WAAW,GAAG,IAAI,CAAA;KAAE,CAAC;IACxC,IAAI,EAAE,MAAM;QAAE,GAAG,EAAE,WAAW,GAAG,IAAI,CAAA;KAAE,CAAC;IAGxC,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/client/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC1F,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAE3D;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,WAAW,CAAC;IACjB,GAAG,EAAE,OAAO,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,SAAS,EAAE,CAAC;IACjB,UAAU,EAAE,UAAU,GAAG,IAAI,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,UAAU,CAAC;IAClB,WAAW,EAAE,WAAW,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAE1B,KAAK,EAAE,UAAU,CAAC;IAGlB,OAAO,EAAE,YAAY,EAAE,CAAC;IAGxB,KAAK,EAAE,UAAU,CAAC;IAGlB,QAAQ,EAAE,QAAQ,CAAC;IAGnB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,WAAW,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,QAAQ,CAAC;IAC3B,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,WAAW,KAAK,IAAI,CAAC;IACpC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;CAC9C;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IAEzB,QAAQ,EAAE,MAAM,WAAW,CAAC;IAC5B,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,IAAI,KAAK,MAAM,IAAI,CAAC;IAGhD,IAAI,EAAE,CAAC,EAAE,EAAE,SAAS,KAAK,IAAI,CAAC;IAC9B,MAAM,EAAE,CAAC,WAAW,CAAC,EAAE,MAAM,KAAK,WAAW,GAAG,IAAI,CAAC;IAGrD,OAAO,EAAE,CAAC,GAAG,EAAE,WAAW,KAAK,IAAI,CAAC;IACpC,GAAG,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAG7B,IAAI,EAAE,MAAM;QAAE,GAAG,EAAE,WAAW,GAAG,IAAI,CAAA;KAAE,CAAC;IACxC,IAAI,EAAE,MAAM;QAAE,GAAG,EAAE,WAAW,GAAG,IAAI,CAAA;KAAE,CAAC;IAGxC,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB"}
|
|
@@ -1,30 +1,42 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* ConflictResolver -
|
|
2
|
+
* ConflictResolver - Operation-based property conflict resolution
|
|
3
3
|
*
|
|
4
4
|
* Merges concurrent property updates based on:
|
|
5
|
-
* -
|
|
5
|
+
* - Operation type (otype) which encodes dtype.operation
|
|
6
6
|
* - DType merge functions
|
|
7
|
+
*
|
|
8
|
+
* Schema-less: dtype and operation are derived from otype.
|
|
7
9
|
*/
|
|
8
10
|
import { type ValueWithMeta } from './DType.js';
|
|
11
|
+
/**
|
|
12
|
+
* Parse otype string into dtype and operation
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* parseOtype('vector3.add') // { dtype: 'vector3', operation: 'add' }
|
|
16
|
+
* parseOtype('number.set') // { dtype: 'number', operation: 'set' }
|
|
17
|
+
*/
|
|
18
|
+
export declare function parseOtype(otype: string): {
|
|
19
|
+
dtype: string;
|
|
20
|
+
operation: string;
|
|
21
|
+
};
|
|
9
22
|
export declare class ConflictResolver {
|
|
10
23
|
/**
|
|
11
24
|
* Merge a single property from multiple concurrent updates
|
|
12
25
|
*
|
|
13
|
-
* @param
|
|
26
|
+
* @param otype - Operation type (e.g., 'vector3.add', 'number.set')
|
|
14
27
|
* @param values - Array of values with metadata
|
|
15
|
-
* @param operationHint - Optional operation override from UPDATE operation
|
|
16
28
|
* @returns Merged value
|
|
17
29
|
*/
|
|
18
|
-
mergeProperty<T = any>(
|
|
30
|
+
mergeProperty<T = any>(otype: string, values: ValueWithMeta<T>[]): T;
|
|
19
31
|
/**
|
|
20
32
|
* Merge multiple properties from concurrent updates
|
|
21
33
|
*
|
|
22
|
-
* @param updates - Array of property updates with metadata
|
|
34
|
+
* @param updates - Array of property updates with metadata
|
|
23
35
|
* @returns Merged properties
|
|
24
36
|
*/
|
|
25
37
|
mergeProperties(updates: Array<{
|
|
26
38
|
properties: Record<string, any>;
|
|
27
|
-
|
|
39
|
+
otypes: Record<string, string>;
|
|
28
40
|
lamportTime: number;
|
|
29
41
|
sessionId: string;
|
|
30
42
|
}>): Record<string, any>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConflictResolver.d.ts","sourceRoot":"","sources":["../../src/state/ConflictResolver.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"ConflictResolver.d.ts","sourceRoot":"","sources":["../../src/state/ConflictResolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAS,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAEvD;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAS9E;AAED,qBAAa,gBAAgB;IAC3B;;;;;;OAMG;IACH,aAAa,CAAC,CAAC,GAAG,GAAG,EACnB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,GACzB,CAAC;IAwBJ;;;;;OAKG;IACH,eAAe,CACb,OAAO,EAAE,KAAK,CAAC;QACb,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAChC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC/B,WAAW,EAAE,MAAM,CAAC;QACpB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC,GACD,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAmCtB;;OAEG;IACH,OAAO,CAAC,gBAAgB;CAkGzB"}
|
|
@@ -1,41 +1,50 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* ConflictResolver -
|
|
2
|
+
* ConflictResolver - Operation-based property conflict resolution
|
|
3
3
|
*
|
|
4
4
|
* Merges concurrent property updates based on:
|
|
5
|
-
* -
|
|
5
|
+
* - Operation type (otype) which encodes dtype.operation
|
|
6
6
|
* - DType merge functions
|
|
7
|
+
*
|
|
8
|
+
* Schema-less: dtype and operation are derived from otype.
|
|
7
9
|
*/
|
|
8
10
|
import { DType } from './DType.js';
|
|
9
|
-
|
|
11
|
+
/**
|
|
12
|
+
* Parse otype string into dtype and operation
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* parseOtype('vector3.add') // { dtype: 'vector3', operation: 'add' }
|
|
16
|
+
* parseOtype('number.set') // { dtype: 'number', operation: 'set' }
|
|
17
|
+
*/
|
|
18
|
+
export function parseOtype(otype) {
|
|
19
|
+
const dotIndex = otype.indexOf('.');
|
|
20
|
+
if (dotIndex === -1) {
|
|
21
|
+
return { dtype: otype, operation: 'set' };
|
|
22
|
+
}
|
|
23
|
+
return {
|
|
24
|
+
dtype: otype.slice(0, dotIndex),
|
|
25
|
+
operation: otype.slice(dotIndex + 1),
|
|
26
|
+
};
|
|
27
|
+
}
|
|
10
28
|
export class ConflictResolver {
|
|
11
29
|
/**
|
|
12
30
|
* Merge a single property from multiple concurrent updates
|
|
13
31
|
*
|
|
14
|
-
* @param
|
|
32
|
+
* @param otype - Operation type (e.g., 'vector3.add', 'number.set')
|
|
15
33
|
* @param values - Array of values with metadata
|
|
16
|
-
* @param operationHint - Optional operation override from UPDATE operation
|
|
17
34
|
* @returns Merged value
|
|
18
35
|
*/
|
|
19
|
-
mergeProperty(
|
|
36
|
+
mergeProperty(otype, values) {
|
|
20
37
|
if (values.length === 0) {
|
|
21
|
-
throw new Error(`Cannot merge empty values for
|
|
38
|
+
throw new Error(`Cannot merge empty values for otype: ${otype}`);
|
|
22
39
|
}
|
|
23
40
|
if (values.length === 1) {
|
|
24
41
|
return values[0].value;
|
|
25
42
|
}
|
|
26
|
-
|
|
27
|
-
const schema = getPropertySchema(propertyName);
|
|
28
|
-
// Immutable properties: return earliest value
|
|
29
|
-
if (isImmutable(propertyName)) {
|
|
30
|
-
const sorted = [...values].sort((a, b) => a.lamportTime - b.lamportTime);
|
|
31
|
-
return sorted[0].value;
|
|
32
|
-
}
|
|
33
|
-
// Use operation hint if provided, otherwise use schema
|
|
34
|
-
const operation = operationHint || schema.operation;
|
|
43
|
+
const { dtype, operation } = parseOtype(otype);
|
|
35
44
|
// Get merge function based on dtype and operation
|
|
36
|
-
const mergeFn = this.getMergeFunction(
|
|
45
|
+
const mergeFn = this.getMergeFunction(dtype, operation);
|
|
37
46
|
if (!mergeFn) {
|
|
38
|
-
console.warn(`No merge function for dtype=${
|
|
47
|
+
console.warn(`No merge function for dtype=${dtype} operation=${operation}, defaulting to LWW`);
|
|
39
48
|
return DType.string.set(values);
|
|
40
49
|
}
|
|
41
50
|
return mergeFn(values);
|
|
@@ -43,17 +52,15 @@ export class ConflictResolver {
|
|
|
43
52
|
/**
|
|
44
53
|
* Merge multiple properties from concurrent updates
|
|
45
54
|
*
|
|
46
|
-
* @param updates - Array of property updates with metadata
|
|
55
|
+
* @param updates - Array of property updates with metadata
|
|
47
56
|
* @returns Merged properties
|
|
48
57
|
*/
|
|
49
58
|
mergeProperties(updates) {
|
|
50
59
|
// Group values by property name
|
|
51
60
|
const valuesByProperty = new Map();
|
|
52
|
-
const
|
|
61
|
+
const otypeByProperty = new Map();
|
|
53
62
|
for (const update of updates) {
|
|
54
63
|
for (const [key, value] of Object.entries(update.properties)) {
|
|
55
|
-
if (key === 'operations')
|
|
56
|
-
continue; // Skip operations field
|
|
57
64
|
if (!valuesByProperty.has(key)) {
|
|
58
65
|
valuesByProperty.set(key, []);
|
|
59
66
|
}
|
|
@@ -62,17 +69,17 @@ export class ConflictResolver {
|
|
|
62
69
|
lamportTime: update.lamportTime,
|
|
63
70
|
sessionId: update.sessionId,
|
|
64
71
|
});
|
|
65
|
-
// Store
|
|
66
|
-
if (update.
|
|
67
|
-
|
|
72
|
+
// Store otype for this property
|
|
73
|
+
if (update.otypes?.[key]) {
|
|
74
|
+
otypeByProperty.set(key, update.otypes[key]);
|
|
68
75
|
}
|
|
69
76
|
}
|
|
70
77
|
}
|
|
71
78
|
// Merge each property
|
|
72
79
|
const result = {};
|
|
73
80
|
for (const [propertyName, values] of valuesByProperty.entries()) {
|
|
74
|
-
const
|
|
75
|
-
result[propertyName] = this.mergeProperty(
|
|
81
|
+
const otype = otypeByProperty.get(propertyName) || 'any.set';
|
|
82
|
+
result[propertyName] = this.mergeProperty(otype, values);
|
|
76
83
|
}
|
|
77
84
|
return result;
|
|
78
85
|
}
|
|
@@ -154,9 +161,13 @@ export class ConflictResolver {
|
|
|
154
161
|
case 'set':
|
|
155
162
|
return DType.object.set;
|
|
156
163
|
case 'lww-per-key':
|
|
164
|
+
case 'merge':
|
|
157
165
|
return DType.object.lwwPerKey;
|
|
158
166
|
}
|
|
159
167
|
break;
|
|
168
|
+
case 'ref':
|
|
169
|
+
// References use LWW semantics
|
|
170
|
+
return DType.string.set;
|
|
160
171
|
case 'any':
|
|
161
172
|
// Default to LWW for 'any' type
|
|
162
173
|
return DType.string.set;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConflictResolver.js","sourceRoot":"","sources":["../../src/state/ConflictResolver.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"ConflictResolver.js","sourceRoot":"","sources":["../../src/state/ConflictResolver.ts"],"names":[],"mappings":"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"}
|
package/dist/state/index.d.ts
CHANGED
|
@@ -2,10 +2,11 @@
|
|
|
2
2
|
* State module exports
|
|
3
3
|
*
|
|
4
4
|
* - VectorClock: Used by client for causal ordering
|
|
5
|
-
* - DType,
|
|
5
|
+
* - DType, ConflictResolver: Server-side conflict resolution for concurrent updates
|
|
6
|
+
*
|
|
7
|
+
* Schema-less design: dtype and operation are derived from otype (e.g., 'vector3.add').
|
|
6
8
|
*/
|
|
7
9
|
export { VectorClockManager, type VectorClock } from './VectorClock.js';
|
|
8
10
|
export { DType, type ValueWithMeta, type MergeFn } from './DType.js';
|
|
9
|
-
export {
|
|
10
|
-
export { ConflictResolver } from './ConflictResolver.js';
|
|
11
|
+
export { ConflictResolver, parseOtype } from './ConflictResolver.js';
|
|
11
12
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/state/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/state/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,kBAAkB,EAAE,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAGxE,OAAO,EAAE,KAAK,EAAE,KAAK,aAAa,EAAE,KAAK,OAAO,EAAE,MAAM,YAAY,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC"}
|
package/dist/state/index.js
CHANGED
|
@@ -2,12 +2,13 @@
|
|
|
2
2
|
* State module exports
|
|
3
3
|
*
|
|
4
4
|
* - VectorClock: Used by client for causal ordering
|
|
5
|
-
* - DType,
|
|
5
|
+
* - DType, ConflictResolver: Server-side conflict resolution for concurrent updates
|
|
6
|
+
*
|
|
7
|
+
* Schema-less design: dtype and operation are derived from otype (e.g., 'vector3.add').
|
|
6
8
|
*/
|
|
7
9
|
// Vector clock (used by client and server)
|
|
8
10
|
export { VectorClockManager } from './VectorClock.js';
|
|
9
11
|
// Server-side conflict resolution utilities
|
|
10
12
|
export { DType } from './DType.js';
|
|
11
|
-
export {
|
|
12
|
-
export { ConflictResolver } from './ConflictResolver.js';
|
|
13
|
+
export { ConflictResolver, parseOtype } from './ConflictResolver.js';
|
|
13
14
|
//# sourceMappingURL=index.js.map
|
package/dist/state/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/state/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/state/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,2CAA2C;AAC3C,OAAO,EAAE,kBAAkB,EAAoB,MAAM,kBAAkB,CAAC;AAExE,4CAA4C;AAC5C,OAAO,EAAE,KAAK,EAAoC,MAAM,YAAY,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC"}
|
package/package.json
CHANGED
package/src/client/actions.ts
CHANGED
|
@@ -29,6 +29,7 @@ export function createInitialState(sessionId: string, initialSnapshot?: Snapshot
|
|
|
29
29
|
const snapshot = initialSnapshot ?? {
|
|
30
30
|
graph: emptyGraph,
|
|
31
31
|
vectorClock: {},
|
|
32
|
+
lamportTime: 0,
|
|
32
33
|
journalIndex: 0,
|
|
33
34
|
};
|
|
34
35
|
|
|
@@ -37,7 +38,7 @@ export function createInitialState(sessionId: string, initialSnapshot?: Snapshot
|
|
|
37
38
|
journal: [],
|
|
38
39
|
edits: { ops: [], startGraph: null },
|
|
39
40
|
snapshot,
|
|
40
|
-
lamportTime: 0,
|
|
41
|
+
lamportTime: snapshot.lamportTime ?? 0,
|
|
41
42
|
vectorClock: clockManager.create(sessionId),
|
|
42
43
|
sessionId,
|
|
43
44
|
};
|
|
@@ -134,11 +135,12 @@ export function commitEdits(
|
|
|
134
135
|
}
|
|
135
136
|
|
|
136
137
|
const newClock = clockManager.increment(state.vectorClock, state.sessionId);
|
|
138
|
+
const newLamport = state.lamportTime + 1;
|
|
137
139
|
const msg: CRDTMessage = {
|
|
138
|
-
id:
|
|
140
|
+
id: `${state.sessionId}:${newLamport}`,
|
|
139
141
|
sessionId: state.sessionId,
|
|
140
142
|
clock: newClock,
|
|
141
|
-
lamportTime:
|
|
143
|
+
lamportTime: newLamport,
|
|
142
144
|
timestamp: Date.now(),
|
|
143
145
|
ops: [...state.edits.ops],
|
|
144
146
|
};
|
|
@@ -248,11 +250,12 @@ export function undo(state: ClientState): { state: ClientState; msg: CRDTMessage
|
|
|
248
250
|
|
|
249
251
|
// Create undo message
|
|
250
252
|
const newClock = clockManager.increment(currentState.vectorClock, currentState.sessionId);
|
|
253
|
+
const newLamport = currentState.lamportTime + 1;
|
|
251
254
|
const undoMsg: CRDTMessage = {
|
|
252
|
-
id:
|
|
255
|
+
id: `${currentState.sessionId}:${newLamport}`,
|
|
253
256
|
sessionId: currentState.sessionId,
|
|
254
257
|
clock: newClock,
|
|
255
|
-
lamportTime:
|
|
258
|
+
lamportTime: newLamport,
|
|
256
259
|
timestamp: Date.now(),
|
|
257
260
|
ops: [{ otype: 'meta.undo', key: '_meta', path: '_meta', targetMsgId }],
|
|
258
261
|
};
|
|
@@ -293,11 +296,12 @@ export function redo(state: ClientState): { state: ClientState; msg: CRDTMessage
|
|
|
293
296
|
|
|
294
297
|
// Create redo message
|
|
295
298
|
const newClock = clockManager.increment(state.vectorClock, state.sessionId);
|
|
299
|
+
const newLamport = state.lamportTime + 1;
|
|
296
300
|
const redoMsg: CRDTMessage = {
|
|
297
|
-
id:
|
|
301
|
+
id: `${state.sessionId}:${newLamport}`,
|
|
298
302
|
sessionId: state.sessionId,
|
|
299
303
|
clock: newClock,
|
|
300
|
-
lamportTime:
|
|
304
|
+
lamportTime: newLamport,
|
|
301
305
|
timestamp: Date.now(),
|
|
302
306
|
ops: [{ otype: 'meta.redo', key: '_meta', path: '_meta', targetMsgId: lastDeleted.msg.id }],
|
|
303
307
|
};
|
|
@@ -348,6 +352,7 @@ export function compact(state: ClientState): ClientState {
|
|
|
348
352
|
draft.snapshot = {
|
|
349
353
|
graph: snapshotGraph,
|
|
350
354
|
vectorClock: draft.journal[lastAckedIdx].msg.clock,
|
|
355
|
+
lamportTime: draft.journal[lastAckedIdx].msg.lamportTime,
|
|
351
356
|
journalIndex: draft.snapshot.journalIndex + lastAckedIdx + 1,
|
|
352
357
|
};
|
|
353
358
|
|
|
@@ -401,7 +406,7 @@ export function initFromServer(
|
|
|
401
406
|
): ClientState {
|
|
402
407
|
let graph = snapshot.graph;
|
|
403
408
|
const journalEntries: JournalEntry[] = [];
|
|
404
|
-
let maxLamport = 0;
|
|
409
|
+
let maxLamport = snapshot.lamportTime ?? 0;
|
|
405
410
|
let mergedClock: VectorClock = snapshot.vectorClock;
|
|
406
411
|
|
|
407
412
|
for (const msg of journal) {
|
package/src/client/types.ts
CHANGED
|
@@ -1,54 +1,61 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* ConflictResolver -
|
|
2
|
+
* ConflictResolver - Operation-based property conflict resolution
|
|
3
3
|
*
|
|
4
4
|
* Merges concurrent property updates based on:
|
|
5
|
-
* -
|
|
5
|
+
* - Operation type (otype) which encodes dtype.operation
|
|
6
6
|
* - DType merge functions
|
|
7
|
+
*
|
|
8
|
+
* Schema-less: dtype and operation are derived from otype.
|
|
7
9
|
*/
|
|
8
10
|
|
|
9
11
|
import { DType, type ValueWithMeta } from './DType.js';
|
|
10
|
-
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Parse otype string into dtype and operation
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* parseOtype('vector3.add') // { dtype: 'vector3', operation: 'add' }
|
|
18
|
+
* parseOtype('number.set') // { dtype: 'number', operation: 'set' }
|
|
19
|
+
*/
|
|
20
|
+
export function parseOtype(otype: string): { dtype: string; operation: string } {
|
|
21
|
+
const dotIndex = otype.indexOf('.');
|
|
22
|
+
if (dotIndex === -1) {
|
|
23
|
+
return { dtype: otype, operation: 'set' };
|
|
24
|
+
}
|
|
25
|
+
return {
|
|
26
|
+
dtype: otype.slice(0, dotIndex),
|
|
27
|
+
operation: otype.slice(dotIndex + 1),
|
|
28
|
+
};
|
|
29
|
+
}
|
|
11
30
|
|
|
12
31
|
export class ConflictResolver {
|
|
13
32
|
/**
|
|
14
33
|
* Merge a single property from multiple concurrent updates
|
|
15
34
|
*
|
|
16
|
-
* @param
|
|
35
|
+
* @param otype - Operation type (e.g., 'vector3.add', 'number.set')
|
|
17
36
|
* @param values - Array of values with metadata
|
|
18
|
-
* @param operationHint - Optional operation override from UPDATE operation
|
|
19
37
|
* @returns Merged value
|
|
20
38
|
*/
|
|
21
39
|
mergeProperty<T = any>(
|
|
22
|
-
|
|
23
|
-
values: ValueWithMeta<T>[]
|
|
24
|
-
operationHint?: string
|
|
40
|
+
otype: string,
|
|
41
|
+
values: ValueWithMeta<T>[]
|
|
25
42
|
): T {
|
|
26
43
|
if (values.length === 0) {
|
|
27
|
-
throw new Error(`Cannot merge empty values for
|
|
44
|
+
throw new Error(`Cannot merge empty values for otype: ${otype}`);
|
|
28
45
|
}
|
|
29
46
|
|
|
30
47
|
if (values.length === 1) {
|
|
31
48
|
return values[0].value;
|
|
32
49
|
}
|
|
33
50
|
|
|
34
|
-
|
|
35
|
-
const schema = getPropertySchema(propertyName);
|
|
36
|
-
|
|
37
|
-
// Immutable properties: return earliest value
|
|
38
|
-
if (isImmutable(propertyName)) {
|
|
39
|
-
const sorted = [...values].sort((a, b) => a.lamportTime - b.lamportTime);
|
|
40
|
-
return sorted[0].value;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
// Use operation hint if provided, otherwise use schema
|
|
44
|
-
const operation = operationHint || schema.operation;
|
|
51
|
+
const { dtype, operation } = parseOtype(otype);
|
|
45
52
|
|
|
46
53
|
// Get merge function based on dtype and operation
|
|
47
|
-
const mergeFn = this.getMergeFunction(
|
|
54
|
+
const mergeFn = this.getMergeFunction(dtype, operation);
|
|
48
55
|
|
|
49
56
|
if (!mergeFn) {
|
|
50
57
|
console.warn(
|
|
51
|
-
`No merge function for dtype=${
|
|
58
|
+
`No merge function for dtype=${dtype} operation=${operation}, defaulting to LWW`
|
|
52
59
|
);
|
|
53
60
|
return DType.string.set(values as any) as any;
|
|
54
61
|
}
|
|
@@ -59,25 +66,23 @@ export class ConflictResolver {
|
|
|
59
66
|
/**
|
|
60
67
|
* Merge multiple properties from concurrent updates
|
|
61
68
|
*
|
|
62
|
-
* @param updates - Array of property updates with metadata
|
|
69
|
+
* @param updates - Array of property updates with metadata
|
|
63
70
|
* @returns Merged properties
|
|
64
71
|
*/
|
|
65
72
|
mergeProperties(
|
|
66
73
|
updates: Array<{
|
|
67
74
|
properties: Record<string, any>;
|
|
68
|
-
|
|
75
|
+
otypes: Record<string, string>; // otype per property
|
|
69
76
|
lamportTime: number;
|
|
70
77
|
sessionId: string;
|
|
71
78
|
}>
|
|
72
79
|
): Record<string, any> {
|
|
73
80
|
// Group values by property name
|
|
74
81
|
const valuesByProperty = new Map<string, ValueWithMeta[]>();
|
|
75
|
-
const
|
|
82
|
+
const otypeByProperty = new Map<string, string>();
|
|
76
83
|
|
|
77
84
|
for (const update of updates) {
|
|
78
85
|
for (const [key, value] of Object.entries(update.properties)) {
|
|
79
|
-
if (key === 'operations') continue; // Skip operations field
|
|
80
|
-
|
|
81
86
|
if (!valuesByProperty.has(key)) {
|
|
82
87
|
valuesByProperty.set(key, []);
|
|
83
88
|
}
|
|
@@ -88,9 +93,9 @@ export class ConflictResolver {
|
|
|
88
93
|
sessionId: update.sessionId,
|
|
89
94
|
});
|
|
90
95
|
|
|
91
|
-
// Store
|
|
92
|
-
if (update.
|
|
93
|
-
|
|
96
|
+
// Store otype for this property
|
|
97
|
+
if (update.otypes?.[key]) {
|
|
98
|
+
otypeByProperty.set(key, update.otypes[key]);
|
|
94
99
|
}
|
|
95
100
|
}
|
|
96
101
|
}
|
|
@@ -99,8 +104,8 @@ export class ConflictResolver {
|
|
|
99
104
|
const result: Record<string, any> = {};
|
|
100
105
|
|
|
101
106
|
for (const [propertyName, values] of valuesByProperty.entries()) {
|
|
102
|
-
const
|
|
103
|
-
result[propertyName] = this.mergeProperty(
|
|
107
|
+
const otype = otypeByProperty.get(propertyName) || 'any.set';
|
|
108
|
+
result[propertyName] = this.mergeProperty(otype, values);
|
|
104
109
|
}
|
|
105
110
|
|
|
106
111
|
return result;
|
|
@@ -191,10 +196,15 @@ export class ConflictResolver {
|
|
|
191
196
|
case 'set':
|
|
192
197
|
return DType.object.set;
|
|
193
198
|
case 'lww-per-key':
|
|
199
|
+
case 'merge':
|
|
194
200
|
return DType.object.lwwPerKey;
|
|
195
201
|
}
|
|
196
202
|
break;
|
|
197
203
|
|
|
204
|
+
case 'ref':
|
|
205
|
+
// References use LWW semantics
|
|
206
|
+
return DType.string.set;
|
|
207
|
+
|
|
198
208
|
case 'any':
|
|
199
209
|
// Default to LWW for 'any' type
|
|
200
210
|
return DType.string.set as any;
|
package/src/state/index.ts
CHANGED
|
@@ -2,7 +2,9 @@
|
|
|
2
2
|
* State module exports
|
|
3
3
|
*
|
|
4
4
|
* - VectorClock: Used by client for causal ordering
|
|
5
|
-
* - DType,
|
|
5
|
+
* - DType, ConflictResolver: Server-side conflict resolution for concurrent updates
|
|
6
|
+
*
|
|
7
|
+
* Schema-less design: dtype and operation are derived from otype (e.g., 'vector3.add').
|
|
6
8
|
*/
|
|
7
9
|
|
|
8
10
|
// Vector clock (used by client and server)
|
|
@@ -10,5 +12,4 @@ export { VectorClockManager, type VectorClock } from './VectorClock.js';
|
|
|
10
12
|
|
|
11
13
|
// Server-side conflict resolution utilities
|
|
12
14
|
export { DType, type ValueWithMeta, type MergeFn } from './DType.js';
|
|
13
|
-
export {
|
|
14
|
-
export { ConflictResolver } from './ConflictResolver.js';
|
|
15
|
+
export { ConflictResolver, parseOtype } from './ConflictResolver.js';
|
package/src/state/Schema.ts
DELETED
|
@@ -1,236 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Schema - Property schema definitions
|
|
3
|
-
*
|
|
4
|
-
* Defines dtype and operation for each property,
|
|
5
|
-
* determining how concurrent updates are merged.
|
|
6
|
-
*
|
|
7
|
-
* Based on test-data/schema-example.ts
|
|
8
|
-
*/
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* Property Schema Definition
|
|
12
|
-
*/
|
|
13
|
-
export interface PropertySchema {
|
|
14
|
-
dtype:
|
|
15
|
-
| 'string'
|
|
16
|
-
| 'number'
|
|
17
|
-
| 'boolean'
|
|
18
|
-
| 'vector3'
|
|
19
|
-
| 'quaternion'
|
|
20
|
-
| 'color'
|
|
21
|
-
| 'array'
|
|
22
|
-
| 'object'
|
|
23
|
-
| 'any';
|
|
24
|
-
|
|
25
|
-
operation:
|
|
26
|
-
| 'set' // LWW
|
|
27
|
-
| 'add' // Additive
|
|
28
|
-
| 'multiply' // Multiplicative
|
|
29
|
-
| 'min' // Minimum
|
|
30
|
-
| 'max' // Maximum
|
|
31
|
-
| 'or' // Logical OR
|
|
32
|
-
| 'and' // Logical AND
|
|
33
|
-
| 'union' // Set union
|
|
34
|
-
| 'append' // Append (ordered)
|
|
35
|
-
| 'rga' // Replicated Growable Array
|
|
36
|
-
| 'lww-per-key' // LWW per object key
|
|
37
|
-
| 'lww-per-component' // LWW per component
|
|
38
|
-
| 'blend' // Blend/average
|
|
39
|
-
| 'immutable'; // Cannot change
|
|
40
|
-
|
|
41
|
-
default?: any;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
/**
|
|
45
|
-
* Scene Node Schema
|
|
46
|
-
*
|
|
47
|
-
* Defines merge behavior for all scene node properties.
|
|
48
|
-
*/
|
|
49
|
-
export const sceneNodeSchema: Record<string, PropertySchema> = {
|
|
50
|
-
// ========================================
|
|
51
|
-
// Identity (immutable)
|
|
52
|
-
// ========================================
|
|
53
|
-
id: {
|
|
54
|
-
dtype: 'string',
|
|
55
|
-
operation: 'immutable',
|
|
56
|
-
},
|
|
57
|
-
|
|
58
|
-
tag: {
|
|
59
|
-
dtype: 'string',
|
|
60
|
-
operation: 'immutable',
|
|
61
|
-
},
|
|
62
|
-
|
|
63
|
-
key: {
|
|
64
|
-
dtype: 'string',
|
|
65
|
-
operation: 'set',
|
|
66
|
-
default: '',
|
|
67
|
-
},
|
|
68
|
-
|
|
69
|
-
name: {
|
|
70
|
-
dtype: 'string',
|
|
71
|
-
operation: 'set',
|
|
72
|
-
default: '',
|
|
73
|
-
},
|
|
74
|
-
|
|
75
|
-
// ========================================
|
|
76
|
-
// Tree Structure
|
|
77
|
-
// ========================================
|
|
78
|
-
children: {
|
|
79
|
-
dtype: 'array',
|
|
80
|
-
operation: 'set', // Phase 2: Simple LWW
|
|
81
|
-
default: [],
|
|
82
|
-
},
|
|
83
|
-
|
|
84
|
-
// ========================================
|
|
85
|
-
// Transform (LWW)
|
|
86
|
-
// ========================================
|
|
87
|
-
'transform.position': {
|
|
88
|
-
dtype: 'vector3',
|
|
89
|
-
operation: 'set',
|
|
90
|
-
default: [0, 0, 0],
|
|
91
|
-
},
|
|
92
|
-
|
|
93
|
-
'transform.rotation': {
|
|
94
|
-
dtype: 'quaternion',
|
|
95
|
-
operation: 'set',
|
|
96
|
-
default: [0, 0, 0, 1],
|
|
97
|
-
},
|
|
98
|
-
|
|
99
|
-
'transform.scale': {
|
|
100
|
-
dtype: 'vector3',
|
|
101
|
-
operation: 'set',
|
|
102
|
-
default: [1, 1, 1],
|
|
103
|
-
},
|
|
104
|
-
|
|
105
|
-
// ========================================
|
|
106
|
-
// Common Properties (LWW)
|
|
107
|
-
// ========================================
|
|
108
|
-
visible: {
|
|
109
|
-
dtype: 'boolean',
|
|
110
|
-
operation: 'set',
|
|
111
|
-
default: true,
|
|
112
|
-
},
|
|
113
|
-
|
|
114
|
-
color: {
|
|
115
|
-
dtype: 'color',
|
|
116
|
-
operation: 'set',
|
|
117
|
-
default: '#ffffff',
|
|
118
|
-
},
|
|
119
|
-
|
|
120
|
-
opacity: {
|
|
121
|
-
dtype: 'number',
|
|
122
|
-
operation: 'set',
|
|
123
|
-
default: 1.0,
|
|
124
|
-
},
|
|
125
|
-
|
|
126
|
-
// ========================================
|
|
127
|
-
// Material Properties (LWW)
|
|
128
|
-
// ========================================
|
|
129
|
-
material: {
|
|
130
|
-
dtype: 'string',
|
|
131
|
-
operation: 'set',
|
|
132
|
-
default: '',
|
|
133
|
-
},
|
|
134
|
-
|
|
135
|
-
geometry: {
|
|
136
|
-
dtype: 'string',
|
|
137
|
-
operation: 'set',
|
|
138
|
-
default: '',
|
|
139
|
-
},
|
|
140
|
-
|
|
141
|
-
metalness: {
|
|
142
|
-
dtype: 'number',
|
|
143
|
-
operation: 'set',
|
|
144
|
-
default: 0,
|
|
145
|
-
},
|
|
146
|
-
|
|
147
|
-
roughness: {
|
|
148
|
-
dtype: 'number',
|
|
149
|
-
operation: 'set',
|
|
150
|
-
default: 1,
|
|
151
|
-
},
|
|
152
|
-
|
|
153
|
-
// ========================================
|
|
154
|
-
// Additive Properties
|
|
155
|
-
// ========================================
|
|
156
|
-
score: {
|
|
157
|
-
dtype: 'number',
|
|
158
|
-
operation: 'add',
|
|
159
|
-
default: 0,
|
|
160
|
-
},
|
|
161
|
-
|
|
162
|
-
damage: {
|
|
163
|
-
dtype: 'number',
|
|
164
|
-
operation: 'add',
|
|
165
|
-
default: 0,
|
|
166
|
-
},
|
|
167
|
-
|
|
168
|
-
// ========================================
|
|
169
|
-
// Collection Properties
|
|
170
|
-
// ========================================
|
|
171
|
-
tags: {
|
|
172
|
-
dtype: 'array',
|
|
173
|
-
operation: 'union',
|
|
174
|
-
default: [],
|
|
175
|
-
},
|
|
176
|
-
|
|
177
|
-
// ========================================
|
|
178
|
-
// Object Properties (LWW per key)
|
|
179
|
-
// ========================================
|
|
180
|
-
properties: {
|
|
181
|
-
dtype: 'object',
|
|
182
|
-
operation: 'lww-per-key',
|
|
183
|
-
default: {},
|
|
184
|
-
},
|
|
185
|
-
|
|
186
|
-
// ========================================
|
|
187
|
-
// CRDT Metadata
|
|
188
|
-
// ========================================
|
|
189
|
-
clock: {
|
|
190
|
-
dtype: 'object',
|
|
191
|
-
operation: 'lww-per-key',
|
|
192
|
-
default: {},
|
|
193
|
-
},
|
|
194
|
-
|
|
195
|
-
lamportTime: {
|
|
196
|
-
dtype: 'number',
|
|
197
|
-
operation: 'set',
|
|
198
|
-
default: 0,
|
|
199
|
-
},
|
|
200
|
-
|
|
201
|
-
createdAt: {
|
|
202
|
-
dtype: 'number',
|
|
203
|
-
operation: 'immutable',
|
|
204
|
-
},
|
|
205
|
-
|
|
206
|
-
updatedAt: {
|
|
207
|
-
dtype: 'number',
|
|
208
|
-
operation: 'set',
|
|
209
|
-
},
|
|
210
|
-
|
|
211
|
-
deletedAt: {
|
|
212
|
-
dtype: 'number',
|
|
213
|
-
operation: 'set',
|
|
214
|
-
},
|
|
215
|
-
};
|
|
216
|
-
|
|
217
|
-
/**
|
|
218
|
-
* Get schema for a property
|
|
219
|
-
* Returns default schema if not found
|
|
220
|
-
*/
|
|
221
|
-
export function getPropertySchema(propertyName: string): PropertySchema {
|
|
222
|
-
return (
|
|
223
|
-
sceneNodeSchema[propertyName] || {
|
|
224
|
-
dtype: 'any',
|
|
225
|
-
operation: 'set', // Default to LWW
|
|
226
|
-
}
|
|
227
|
-
);
|
|
228
|
-
}
|
|
229
|
-
|
|
230
|
-
/**
|
|
231
|
-
* Check if a property is immutable
|
|
232
|
-
*/
|
|
233
|
-
export function isImmutable(propertyName: string): boolean {
|
|
234
|
-
const schema = getPropertySchema(propertyName);
|
|
235
|
-
return schema.operation === 'immutable';
|
|
236
|
-
}
|