meridian-sdk 1.2.1 → 1.3.0
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/CHANGELOG.md +10 -0
- package/dist/agents.d.ts +143 -8
- package/dist/agents.d.ts.map +1 -1
- package/dist/agents.js +141 -14
- package/dist/agents.js.map +1 -1
- package/dist/client.d.ts +7 -2
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +4 -4
- package/dist/client.js.map +1 -1
- package/dist/conflict/types.d.ts +54 -0
- package/dist/conflict/types.d.ts.map +1 -0
- package/dist/conflict/types.js +9 -0
- package/dist/conflict/types.js.map +1 -0
- package/dist/crdt/rga.d.ts +20 -4
- package/dist/crdt/rga.d.ts.map +1 -1
- package/dist/crdt/rga.js +42 -6
- package/dist/crdt/rga.js.map +1 -1
- package/dist/crdt/tree.d.ts +45 -0
- package/dist/crdt/tree.d.ts.map +1 -1
- package/dist/crdt/tree.js +135 -10
- package/dist/crdt/tree.js.map +1 -1
- package/dist/index.d.ts +10 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -3
- package/dist/index.js.map +1 -1
- package/dist/schema.d.ts +63 -3
- package/dist/schema.d.ts.map +1 -1
- package/dist/schema.js +18 -1
- package/dist/schema.js.map +1 -1
- package/dist/sync/delta.d.ts +24 -0
- package/dist/sync/delta.d.ts.map +1 -1
- package/dist/sync/delta.js +1 -1
- package/dist/sync/delta.js.map +1 -1
- package/dist/undo/UndoManager.d.ts +74 -0
- package/dist/undo/UndoManager.d.ts.map +1 -0
- package/dist/undo/UndoManager.js +318 -0
- package/dist/undo/UndoManager.js.map +1 -0
- package/dist/undo/types.d.ts +63 -0
- package/dist/undo/types.d.ts.map +1 -0
- package/dist/undo/types.js +9 -0
- package/dist/undo/types.js.map +1 -0
- package/dist/utils/fractional.d.ts +78 -0
- package/dist/utils/fractional.d.ts.map +1 -0
- package/dist/utils/fractional.js +159 -0
- package/dist/utils/fractional.js.map +1 -0
- package/dist/validation/index.d.ts +107 -0
- package/dist/validation/index.d.ts.map +1 -0
- package/dist/validation/index.js +123 -0
- package/dist/validation/index.js.map +1 -0
- package/package.json +1 -1
- package/src/agents.ts +224 -15
- package/src/client.ts +5 -4
- package/src/conflict/types.ts +60 -0
- package/src/crdt/rga.ts +46 -7
- package/src/crdt/tree.ts +164 -0
- package/src/index.ts +28 -1
- package/src/schema.ts +24 -1
- package/src/sync/delta.ts +15 -2
- package/src/undo/UndoManager.ts +369 -0
- package/src/undo/types.ts +74 -0
- package/src/utils/fractional.ts +166 -0
- package/src/validation/index.ts +137 -0
- package/test/conflict.test.ts +242 -0
- package/test/fractional.test.ts +127 -0
- package/test/undo.test.ts +272 -0
- package/test/validation.test.ts +137 -0
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Conflict events emitted by TreeHandle when the server delta reveals a
|
|
3
|
+
* resolution that differs from what the local client expected.
|
|
4
|
+
*
|
|
5
|
+
* These are purely informational — the CRDT has already converged. Use them
|
|
6
|
+
* for audit logs, "track changes" UIs, or debugging concurrent edit scenarios.
|
|
7
|
+
*/
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/conflict/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
|
package/dist/crdt/rga.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Stream } from "effect";
|
|
2
2
|
import type { WsTransport } from "../transport/websocket.js";
|
|
3
3
|
import type { RGADelta } from "../sync/delta.js";
|
|
4
|
+
import { type CrdtValidator } from "../validation/index.js";
|
|
4
5
|
/**
|
|
5
6
|
* Low-level handle for an RGA (Replicated Growable Array) CRDT — collaborative text editing.
|
|
6
7
|
*
|
|
@@ -14,12 +15,16 @@ export declare class RGAHandle {
|
|
|
14
15
|
private readonly crdtId;
|
|
15
16
|
private readonly clientId;
|
|
16
17
|
private readonly transport;
|
|
18
|
+
private readonly validator;
|
|
17
19
|
private readonly listeners;
|
|
18
20
|
constructor(opts: {
|
|
19
21
|
crdtId: string;
|
|
20
22
|
clientId: number;
|
|
21
23
|
transport: WsTransport;
|
|
24
|
+
validator?: CrdtValidator;
|
|
22
25
|
});
|
|
26
|
+
/** The CRDT key this handle is bound to. */
|
|
27
|
+
get id(): string;
|
|
23
28
|
/** Returns the current text content. */
|
|
24
29
|
value(): string;
|
|
25
30
|
/**
|
|
@@ -32,13 +37,24 @@ export declare class RGAHandle {
|
|
|
32
37
|
stream(): Stream.Stream<string, never, never>;
|
|
33
38
|
/**
|
|
34
39
|
* Inserts `text` at visible position `pos` (0 = before all characters).
|
|
35
|
-
* Characters are inserted one by one
|
|
40
|
+
* Characters are inserted one by one using RGA Insert ops.
|
|
36
41
|
*
|
|
37
|
-
* @param pos
|
|
38
|
-
* @param text
|
|
42
|
+
* @param pos - Visible character position (0-indexed).
|
|
43
|
+
* @param text - String to insert.
|
|
39
44
|
* @param ttlMs - Optional TTL for the op.
|
|
45
|
+
* @returns The HLC strings ("wall_ms:logical:node_id") of the inserted nodes,
|
|
46
|
+
* in insertion order. Used by UndoManager to record undo entries.
|
|
40
47
|
*/
|
|
41
|
-
insert(pos: number, text: string, ttlMs?: number):
|
|
48
|
+
insert(pos: number, text: string, ttlMs?: number): string[];
|
|
49
|
+
/**
|
|
50
|
+
* Deletes the RGA node with the given HLC string ID directly.
|
|
51
|
+
* Used by UndoManager to undo an insert by its exact node identity,
|
|
52
|
+
* regardless of the current visible position.
|
|
53
|
+
*
|
|
54
|
+
* @param hlcString - HLC string "wall_ms:logical:node_id" returned by insert().
|
|
55
|
+
* @param ttlMs - Optional TTL.
|
|
56
|
+
*/
|
|
57
|
+
deleteById(hlcString: string, ttlMs?: number): void;
|
|
42
58
|
/**
|
|
43
59
|
* Deletes `length` visible characters starting at visible position `pos`.
|
|
44
60
|
*
|
package/dist/crdt/rga.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rga.d.ts","sourceRoot":"","sources":["../../src/crdt/rga.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,MAAM,EAAE,MAAM,QAAQ,CAAC;AAE/C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"rga.d.ts","sourceRoot":"","sources":["../../src/crdt/rga.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,MAAM,EAAE,MAAM,QAAQ,CAAC;AAE/C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,KAAK,aAAa,EAAgB,MAAM,wBAAwB,CAAC;AAE1E;;;;;;;GAOG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,IAAI,CAAM;IAClB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAc;IACxC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA4B;IACtD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAsC;gBAEpD,IAAI,EAAE;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,WAAW,CAAC;QACvB,SAAS,CAAC,EAAE,aAAa,CAAC;KAC3B;IAOD,4CAA4C;IAC5C,IAAI,EAAE,IAAI,MAAM,CAAwB;IAExC,wCAAwC;IACxC,KAAK,IAAI,MAAM;IAIf;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,MAAM,IAAI;IAKvD,oEAAoE;IACpE,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC;IAO7C;;;;;;;;;OASG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE;IAmC3D;;;;;;;OAOG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI;IAiBnD;;;;;;OAMG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI;IA2BzD,4FAA4F;IAC5F,UAAU,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;IAMjC,OAAO,CAAC,IAAI;CAGb"}
|
package/dist/crdt/rga.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Chunk, Effect, Stream } from "effect";
|
|
2
2
|
import { encode } from "../codec.js";
|
|
3
|
+
import { runValidator } from "../validation/index.js";
|
|
3
4
|
/**
|
|
4
5
|
* Low-level handle for an RGA (Replicated Growable Array) CRDT — collaborative text editing.
|
|
5
6
|
*
|
|
@@ -13,12 +14,16 @@ export class RGAHandle {
|
|
|
13
14
|
crdtId;
|
|
14
15
|
clientId;
|
|
15
16
|
transport;
|
|
17
|
+
validator;
|
|
16
18
|
listeners = new Set();
|
|
17
19
|
constructor(opts) {
|
|
18
20
|
this.crdtId = opts.crdtId;
|
|
19
21
|
this.clientId = opts.clientId;
|
|
20
22
|
this.transport = opts.transport;
|
|
23
|
+
this.validator = opts.validator;
|
|
21
24
|
}
|
|
25
|
+
/** The CRDT key this handle is bound to. */
|
|
26
|
+
get id() { return this.crdtId; }
|
|
22
27
|
/** Returns the current text content. */
|
|
23
28
|
value() {
|
|
24
29
|
return this.text;
|
|
@@ -41,27 +46,33 @@ export class RGAHandle {
|
|
|
41
46
|
}
|
|
42
47
|
/**
|
|
43
48
|
* Inserts `text` at visible position `pos` (0 = before all characters).
|
|
44
|
-
* Characters are inserted one by one
|
|
49
|
+
* Characters are inserted one by one using RGA Insert ops.
|
|
45
50
|
*
|
|
46
|
-
* @param pos
|
|
47
|
-
* @param text
|
|
51
|
+
* @param pos - Visible character position (0-indexed).
|
|
52
|
+
* @param text - String to insert.
|
|
48
53
|
* @param ttlMs - Optional TTL for the op.
|
|
54
|
+
* @returns The HLC strings ("wall_ms:logical:node_id") of the inserted nodes,
|
|
55
|
+
* in insertion order. Used by UndoManager to record undo entries.
|
|
49
56
|
*/
|
|
50
57
|
insert(pos, text, ttlMs) {
|
|
51
58
|
if (text.length === 0)
|
|
52
|
-
return;
|
|
59
|
+
return [];
|
|
60
|
+
runValidator(this.validator, text);
|
|
53
61
|
// Optimistic local update.
|
|
54
62
|
this.text = this.text.slice(0, pos) + text + this.text.slice(pos);
|
|
55
63
|
this.emit();
|
|
56
64
|
// Send each character as a separate RGA Insert op. The server reorders
|
|
57
65
|
// them using their HLC IDs — sending individually preserves per-char identity.
|
|
58
66
|
const wallMs = Date.now();
|
|
67
|
+
const nodeIds = [];
|
|
59
68
|
for (let i = 0; i < text.length; i++) {
|
|
69
|
+
const id = { wall_ms: wallMs, logical: i, node_id: this.clientId };
|
|
70
|
+
nodeIds.push(`${wallMs}:${i}:${this.clientId}`);
|
|
60
71
|
const op = encode({
|
|
61
72
|
RGA: {
|
|
62
73
|
Insert: {
|
|
63
|
-
id
|
|
64
|
-
origin_id:
|
|
74
|
+
id,
|
|
75
|
+
origin_id: null, // server resolves via WAL
|
|
65
76
|
content: text[i],
|
|
66
77
|
},
|
|
67
78
|
},
|
|
@@ -74,6 +85,31 @@ export class RGAHandle {
|
|
|
74
85
|
},
|
|
75
86
|
});
|
|
76
87
|
}
|
|
88
|
+
return nodeIds;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Deletes the RGA node with the given HLC string ID directly.
|
|
92
|
+
* Used by UndoManager to undo an insert by its exact node identity,
|
|
93
|
+
* regardless of the current visible position.
|
|
94
|
+
*
|
|
95
|
+
* @param hlcString - HLC string "wall_ms:logical:node_id" returned by insert().
|
|
96
|
+
* @param ttlMs - Optional TTL.
|
|
97
|
+
*/
|
|
98
|
+
deleteById(hlcString, ttlMs) {
|
|
99
|
+
const parts = hlcString.split(":");
|
|
100
|
+
const id = {
|
|
101
|
+
wall_ms: Number(parts[0]),
|
|
102
|
+
logical: Number(parts[1]),
|
|
103
|
+
node_id: Number(parts[2]),
|
|
104
|
+
};
|
|
105
|
+
const op = encode({ RGA: { Delete: { id } } });
|
|
106
|
+
this.transport.send({
|
|
107
|
+
Op: {
|
|
108
|
+
crdt_id: this.crdtId,
|
|
109
|
+
op_bytes: op,
|
|
110
|
+
...(ttlMs !== undefined && { ttl_ms: ttlMs }),
|
|
111
|
+
},
|
|
112
|
+
});
|
|
77
113
|
}
|
|
78
114
|
/**
|
|
79
115
|
* Deletes `length` visible characters starting at visible position `pos`.
|
package/dist/crdt/rga.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rga.js","sourceRoot":"","sources":["../../src/crdt/rga.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"rga.js","sourceRoot":"","sources":["../../src/crdt/rga.ts"],"names":[],"mappings":"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"}
|
package/dist/crdt/tree.d.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { Stream } from "effect";
|
|
2
2
|
import type { WsTransport } from "../transport/websocket.js";
|
|
3
3
|
import type { TreeDelta, TreeNodeValue } from "../sync/delta.js";
|
|
4
|
+
import type { ConflictEvent } from "../conflict/types.js";
|
|
5
|
+
import { type CrdtValidator } from "../validation/index.js";
|
|
4
6
|
/**
|
|
5
7
|
* Low-level handle for a TreeCRDT — a convergent hierarchical tree.
|
|
6
8
|
*
|
|
@@ -11,18 +13,33 @@ import type { TreeDelta, TreeNodeValue } from "../sync/delta.js";
|
|
|
11
13
|
* Node IDs are returned by `addNode()` as opaque strings of the form
|
|
12
14
|
* "wall_ms:logical:node_id" matching the Rust HLC serialization.
|
|
13
15
|
*/
|
|
16
|
+
export interface TreeNodeMeta {
|
|
17
|
+
parentId: string | null;
|
|
18
|
+
position: string;
|
|
19
|
+
/** HLC string "wall_ms:logical:node_id" of the last UpdateNode op on this node. */
|
|
20
|
+
updatedAt: string;
|
|
21
|
+
value: string;
|
|
22
|
+
}
|
|
14
23
|
export declare class TreeHandle {
|
|
15
24
|
private roots;
|
|
16
25
|
private readonly crdtId;
|
|
17
26
|
private readonly clientId;
|
|
18
27
|
private readonly transport;
|
|
28
|
+
private readonly validator;
|
|
19
29
|
private readonly listeners;
|
|
30
|
+
private readonly conflictListeners;
|
|
31
|
+
private readonly conflictHistory;
|
|
20
32
|
private opCounter;
|
|
33
|
+
/** Tracks parent, position, updatedAt, and value per node for undo support. */
|
|
34
|
+
private readonly nodeMetaMap;
|
|
21
35
|
constructor(opts: {
|
|
22
36
|
crdtId: string;
|
|
23
37
|
clientId: number;
|
|
24
38
|
transport: WsTransport;
|
|
39
|
+
validator?: CrdtValidator;
|
|
25
40
|
});
|
|
41
|
+
/** The CRDT key this handle is bound to. */
|
|
42
|
+
get id(): string;
|
|
26
43
|
/** Returns the current tree value. */
|
|
27
44
|
value(): {
|
|
28
45
|
roots: TreeNodeValue[];
|
|
@@ -74,8 +91,36 @@ export declare class TreeHandle {
|
|
|
74
91
|
* @param ttlMs - Optional TTL.
|
|
75
92
|
*/
|
|
76
93
|
deleteNode(nodeId: string, ttlMs?: number): void;
|
|
94
|
+
/**
|
|
95
|
+
* Returns the last-known metadata for a node (parent, position, value, updatedAt).
|
|
96
|
+
* Used by UndoManager to capture pre-op state before mutations.
|
|
97
|
+
*/
|
|
98
|
+
getNodeMeta(nodeId: string): TreeNodeMeta | undefined;
|
|
99
|
+
/**
|
|
100
|
+
* Registers a listener called whenever a conflict is detected in an incoming delta.
|
|
101
|
+
* Conflicts include concurrent move resolutions, LWW overwrites, and discarded moves.
|
|
102
|
+
*
|
|
103
|
+
* @returns An unsubscribe function.
|
|
104
|
+
*/
|
|
105
|
+
onConflict(listener: (event: ConflictEvent) => void): () => void;
|
|
106
|
+
/**
|
|
107
|
+
* Returns the last up-to-200 conflict events in chronological order.
|
|
108
|
+
* Useful for rendering an audit log or "track changes" UI.
|
|
109
|
+
*/
|
|
110
|
+
conflictLog(): readonly ConflictEvent[];
|
|
77
111
|
/** Apply a delta received from the server. Replaces local state with authoritative tree. */
|
|
78
112
|
applyDelta(delta: TreeDelta): void;
|
|
113
|
+
/** Emit a conflict event to all listeners and append to history. */
|
|
114
|
+
private emitConflict;
|
|
115
|
+
/**
|
|
116
|
+
* Walks the incoming delta tree and compares each node's server-authoritative
|
|
117
|
+
* parent/position/value against what the local client last recorded.
|
|
118
|
+
* Also processes discarded_moves from the server to emit move_discarded events.
|
|
119
|
+
* Emits conflict events for discrepancies caused by concurrent op resolution.
|
|
120
|
+
*/
|
|
121
|
+
private detectConflicts;
|
|
122
|
+
/** Rebuilds nodeMetaMap from a full tree snapshot (called on each server delta). */
|
|
123
|
+
private rebuildMetaMap;
|
|
79
124
|
private emit;
|
|
80
125
|
/** Parse an HLC string "wall_ms:logical:node_id" back to a Rust-compatible object. */
|
|
81
126
|
private parseHlc;
|
package/dist/crdt/tree.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tree.d.ts","sourceRoot":"","sources":["../../src/crdt/tree.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,MAAM,EAAE,MAAM,QAAQ,CAAC;AAE/C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"tree.d.ts","sourceRoot":"","sources":["../../src/crdt/tree.ts"],"names":[],"mappings":"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"}
|
package/dist/crdt/tree.js
CHANGED
|
@@ -1,27 +1,28 @@
|
|
|
1
1
|
import { Chunk, Effect, Stream } from "effect";
|
|
2
2
|
import { encode } from "../codec.js";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
* Obtained via `MeridianClient.tree()`. Supports add, move, update, and delete
|
|
7
|
-
* operations on tree nodes. Concurrent moves use Kleppmann et al. (2021)
|
|
8
|
-
* move semantics — cycles are prevented, all replicas converge.
|
|
9
|
-
*
|
|
10
|
-
* Node IDs are returned by `addNode()` as opaque strings of the form
|
|
11
|
-
* "wall_ms:logical:node_id" matching the Rust HLC serialization.
|
|
12
|
-
*/
|
|
3
|
+
import { runValidator } from "../validation/index.js";
|
|
4
|
+
/** Maximum number of conflict events retained in the in-memory log. */
|
|
5
|
+
const CONFLICT_LOG_CAP = 200;
|
|
13
6
|
export class TreeHandle {
|
|
14
7
|
roots = [];
|
|
15
8
|
crdtId;
|
|
16
9
|
clientId;
|
|
17
10
|
transport;
|
|
11
|
+
validator;
|
|
18
12
|
listeners = new Set();
|
|
13
|
+
conflictListeners = new Set();
|
|
14
|
+
conflictHistory = [];
|
|
19
15
|
opCounter = 0;
|
|
16
|
+
/** Tracks parent, position, updatedAt, and value per node for undo support. */
|
|
17
|
+
nodeMetaMap = new Map();
|
|
20
18
|
constructor(opts) {
|
|
21
19
|
this.crdtId = opts.crdtId;
|
|
22
20
|
this.clientId = opts.clientId;
|
|
23
21
|
this.transport = opts.transport;
|
|
22
|
+
this.validator = opts.validator;
|
|
24
23
|
}
|
|
24
|
+
/** The CRDT key this handle is bound to. */
|
|
25
|
+
get id() { return this.crdtId; }
|
|
25
26
|
/** Returns the current tree value. */
|
|
26
27
|
value() {
|
|
27
28
|
return { roots: this.roots };
|
|
@@ -52,10 +53,18 @@ export class TreeHandle {
|
|
|
52
53
|
* @returns The new node's ID as a string.
|
|
53
54
|
*/
|
|
54
55
|
addNode(parentId, position, value, ttlMs) {
|
|
56
|
+
runValidator(this.validator, value);
|
|
55
57
|
const wallMs = Date.now();
|
|
56
58
|
const logical = this.opCounter++;
|
|
57
59
|
const id = { wall_ms: wallMs, logical, node_id: this.clientId };
|
|
58
60
|
const idStr = `${wallMs}:${logical}:${this.clientId}`;
|
|
61
|
+
// Optimistic meta update — allows UndoManager to read state immediately.
|
|
62
|
+
this.nodeMetaMap.set(idStr, {
|
|
63
|
+
parentId,
|
|
64
|
+
position,
|
|
65
|
+
updatedAt: idStr,
|
|
66
|
+
value,
|
|
67
|
+
});
|
|
59
68
|
const op = encode({
|
|
60
69
|
Tree: {
|
|
61
70
|
AddNode: {
|
|
@@ -87,6 +96,11 @@ export class TreeHandle {
|
|
|
87
96
|
const wallMs = Date.now();
|
|
88
97
|
const logical = this.opCounter++;
|
|
89
98
|
const opId = { wall_ms: wallMs, logical, node_id: this.clientId };
|
|
99
|
+
// Optimistic meta update.
|
|
100
|
+
const existing = this.nodeMetaMap.get(nodeId);
|
|
101
|
+
if (existing !== undefined) {
|
|
102
|
+
this.nodeMetaMap.set(nodeId, { ...existing, parentId: newParentId, position: newPosition });
|
|
103
|
+
}
|
|
90
104
|
const op = encode({
|
|
91
105
|
Tree: {
|
|
92
106
|
MoveNode: {
|
|
@@ -113,9 +127,16 @@ export class TreeHandle {
|
|
|
113
127
|
* @param ttlMs - Optional TTL.
|
|
114
128
|
*/
|
|
115
129
|
updateNode(nodeId, value, ttlMs) {
|
|
130
|
+
runValidator(this.validator, value);
|
|
116
131
|
const wallMs = Date.now();
|
|
117
132
|
const logical = this.opCounter++;
|
|
118
133
|
const updatedAt = { wall_ms: wallMs, logical, node_id: this.clientId };
|
|
134
|
+
const updatedAtStr = `${wallMs}:${logical}:${this.clientId}`;
|
|
135
|
+
// Optimistic meta update.
|
|
136
|
+
const existing = this.nodeMetaMap.get(nodeId);
|
|
137
|
+
if (existing !== undefined) {
|
|
138
|
+
this.nodeMetaMap.set(nodeId, { ...existing, value, updatedAt: updatedAtStr });
|
|
139
|
+
}
|
|
119
140
|
const op = encode({
|
|
120
141
|
Tree: {
|
|
121
142
|
UpdateNode: {
|
|
@@ -156,11 +177,115 @@ export class TreeHandle {
|
|
|
156
177
|
},
|
|
157
178
|
});
|
|
158
179
|
}
|
|
180
|
+
/**
|
|
181
|
+
* Returns the last-known metadata for a node (parent, position, value, updatedAt).
|
|
182
|
+
* Used by UndoManager to capture pre-op state before mutations.
|
|
183
|
+
*/
|
|
184
|
+
getNodeMeta(nodeId) {
|
|
185
|
+
return this.nodeMetaMap.get(nodeId);
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Registers a listener called whenever a conflict is detected in an incoming delta.
|
|
189
|
+
* Conflicts include concurrent move resolutions, LWW overwrites, and discarded moves.
|
|
190
|
+
*
|
|
191
|
+
* @returns An unsubscribe function.
|
|
192
|
+
*/
|
|
193
|
+
onConflict(listener) {
|
|
194
|
+
this.conflictListeners.add(listener);
|
|
195
|
+
return () => { this.conflictListeners.delete(listener); };
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Returns the last up-to-200 conflict events in chronological order.
|
|
199
|
+
* Useful for rendering an audit log or "track changes" UI.
|
|
200
|
+
*/
|
|
201
|
+
conflictLog() {
|
|
202
|
+
return this.conflictHistory;
|
|
203
|
+
}
|
|
159
204
|
/** Apply a delta received from the server. Replaces local state with authoritative tree. */
|
|
160
205
|
applyDelta(delta) {
|
|
206
|
+
this.detectConflicts(delta.roots, null, delta.discarded_moves ?? []);
|
|
161
207
|
this.roots = delta.roots;
|
|
208
|
+
this.rebuildMetaMap(delta.roots, null);
|
|
162
209
|
this.emit();
|
|
163
210
|
}
|
|
211
|
+
/** Emit a conflict event to all listeners and append to history. */
|
|
212
|
+
emitConflict(event) {
|
|
213
|
+
if (this.conflictHistory.length >= CONFLICT_LOG_CAP) {
|
|
214
|
+
this.conflictHistory.shift();
|
|
215
|
+
}
|
|
216
|
+
this.conflictHistory.push(event);
|
|
217
|
+
for (const listener of this.conflictListeners)
|
|
218
|
+
listener(event);
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* Walks the incoming delta tree and compares each node's server-authoritative
|
|
222
|
+
* parent/position/value against what the local client last recorded.
|
|
223
|
+
* Also processes discarded_moves from the server to emit move_discarded events.
|
|
224
|
+
* Emits conflict events for discrepancies caused by concurrent op resolution.
|
|
225
|
+
*/
|
|
226
|
+
detectConflicts(nodes, serverParentId, discardedMoves) {
|
|
227
|
+
const now = Date.now();
|
|
228
|
+
// Emit move_discarded events for server-rejected cycle moves.
|
|
229
|
+
for (const dm of discardedMoves) {
|
|
230
|
+
const hlcToStr = (hlc) => `${hlc.wall_ms}:${hlc.logical}:${hlc.node_id}`;
|
|
231
|
+
const event = {
|
|
232
|
+
kind: "move_discarded",
|
|
233
|
+
nodeId: hlcToStr(dm.node_id),
|
|
234
|
+
attemptedParentId: dm.attempted_parent_id !== null ? hlcToStr(dm.attempted_parent_id) : null,
|
|
235
|
+
attemptedPosition: dm.attempted_position,
|
|
236
|
+
actualParentId: dm.actual_parent_id !== null ? hlcToStr(dm.actual_parent_id) : null,
|
|
237
|
+
actualPosition: dm.actual_position,
|
|
238
|
+
at: now,
|
|
239
|
+
};
|
|
240
|
+
this.emitConflict(event);
|
|
241
|
+
}
|
|
242
|
+
for (const node of nodes) {
|
|
243
|
+
const local = this.nodeMetaMap.get(node.id);
|
|
244
|
+
if (local !== undefined) {
|
|
245
|
+
// Detect move reordering: server placed the node somewhere different
|
|
246
|
+
// from what the local optimistic update recorded.
|
|
247
|
+
if (local.parentId !== serverParentId || local.position !== node.position) {
|
|
248
|
+
const event = {
|
|
249
|
+
kind: "move_reordered",
|
|
250
|
+
nodeId: node.id,
|
|
251
|
+
localParentId: local.parentId,
|
|
252
|
+
localPosition: local.position,
|
|
253
|
+
serverParentId,
|
|
254
|
+
serverPosition: node.position,
|
|
255
|
+
at: now,
|
|
256
|
+
};
|
|
257
|
+
this.emitConflict(event);
|
|
258
|
+
}
|
|
259
|
+
// Detect LWW overwrite: server has a different value than local recorded.
|
|
260
|
+
if (local.value !== node.value) {
|
|
261
|
+
const event = {
|
|
262
|
+
kind: "lww_overwrite",
|
|
263
|
+
nodeId: node.id,
|
|
264
|
+
discardedValue: local.value,
|
|
265
|
+
winnerValue: node.value,
|
|
266
|
+
at: now,
|
|
267
|
+
};
|
|
268
|
+
this.emitConflict(event);
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
// Recurse into children — serverParentId for children is this node's id.
|
|
272
|
+
// discardedMoves are top-level only (already processed above).
|
|
273
|
+
this.detectConflicts(node.children, node.id, []);
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
/** Rebuilds nodeMetaMap from a full tree snapshot (called on each server delta). */
|
|
277
|
+
rebuildMetaMap(nodes, parentId) {
|
|
278
|
+
for (const node of nodes) {
|
|
279
|
+
const existing = this.nodeMetaMap.get(node.id);
|
|
280
|
+
this.nodeMetaMap.set(node.id, {
|
|
281
|
+
parentId,
|
|
282
|
+
position: node.position,
|
|
283
|
+
updatedAt: existing?.updatedAt ?? node.id,
|
|
284
|
+
value: node.value,
|
|
285
|
+
});
|
|
286
|
+
this.rebuildMetaMap(node.children, node.id);
|
|
287
|
+
}
|
|
288
|
+
}
|
|
164
289
|
emit() {
|
|
165
290
|
const v = { roots: this.roots };
|
|
166
291
|
for (const listener of this.listeners)
|
package/dist/crdt/tree.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tree.js","sourceRoot":"","sources":["../../src/crdt/tree.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"tree.js","sourceRoot":"","sources":["../../src/crdt/tree.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -19,10 +19,17 @@ export { WsTransport } from "./transport/websocket.js";
|
|
|
19
19
|
export type { WsTransportConfig, WsState } from "./transport/websocket.js";
|
|
20
20
|
export { parseToken, parseAndValidateToken, checkTokenExpiry, tokenTtlMs } from "./auth/token.js";
|
|
21
21
|
export { CodecError, TokenParseError, TokenExpiredError, HttpError, NetworkError, TransportError, } from "./errors.js";
|
|
22
|
-
export { TokenClaims, Permissions, VectorClock, ClientMsg, ServerMsg, GCounterValue, PNCounterValue, ORSetValue, LwwValue, PresenceValue, CrdtGetResponse, CrdtOpResponse, ErrorResponse, } from "./schema.js";
|
|
22
|
+
export { TokenClaims, Permissions, PermissionsV1, PermissionsV2, PermEntry, VectorClock, ClientMsg, ServerMsg, GCounterValue, PNCounterValue, ORSetValue, LwwValue, PresenceValue, CrdtGetResponse, CrdtOpResponse, ErrorResponse, } from "./schema.js";
|
|
23
23
|
export type { TimestampMs, ClientId } from "./schema.js";
|
|
24
|
-
export {
|
|
25
|
-
export type {
|
|
24
|
+
export { UndoManager } from "./undo/UndoManager.js";
|
|
25
|
+
export type { UndoEntry, UndoBatch, RgaInsertEntry, TreeAddEntry, TreeDeleteEntry, TreeMoveEntry, TreeUpdateEntry } from "./undo/types.js";
|
|
26
|
+
export { fi, between, before, after, start, end, spread } from "./utils/fractional.js";
|
|
27
|
+
export { CrdtValidationError, zodValidator, fnValidator } from "./validation/index.js";
|
|
28
|
+
export type { CrdtValidator } from "./validation/index.js";
|
|
29
|
+
export type { ConflictEvent, MoveDiscardedEvent, MoveReorderedEvent, LwwOverwriteEvent } from "./conflict/types.js";
|
|
30
|
+
export type { DiscardedMove } from "./sync/delta.js";
|
|
31
|
+
export { getMeridianTools, toOpenAITools, toGeminiTools, executeMeridianTool, executeOpenAITool, executeGeminiTool, } from "./agents.js";
|
|
32
|
+
export type { Tool, OpenAITool, GeminiFunctionDeclaration, GeminiTool, ToolUseBlock, OpenAIToolCall, GeminiFunctionCall, MeridianAgentConfig, } from "./agents.js";
|
|
26
33
|
export { MeridianService, MeridianLive } from "./layer.js";
|
|
27
34
|
export { encode, decode, encodeClientMsg, decodeServerMsg, encodeVectorClock, decodeVectorClock, } from "./codec.js";
|
|
28
35
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,YAAY,EACV,oBAAoB,EACpB,cAAc,EACd,UAAU,EACV,iBAAiB,EACjB,qBAAqB,EACrB,sBAAsB,EACtB,kBAAkB,EAClB,wBAAwB,EACxB,qBAAqB,EACrB,oBAAoB,EACpB,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,YAAY,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,YAAY,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAGhE,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,YAAY,EAAE,gBAAgB,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3F,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,YAAY,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAG3E,OAAO,EAAE,UAAU,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAGlG,OAAO,EACL,UAAU,EACV,eAAe,EACf,iBAAiB,EACjB,SAAS,EACT,YAAY,EACZ,cAAc,GACf,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,WAAW,EACX,WAAW,EACX,WAAW,EACX,SAAS,EACT,SAAS,EACT,aAAa,EACb,cAAc,EACd,UAAU,EACV,QAAQ,EACR,aAAa,EACb,eAAe,EACf,cAAc,EACd,aAAa,GACd,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAGzD,OAAO,EACL,gBAAgB,EAChB,mBAAmB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -18,9 +18,15 @@ export { parseToken, parseAndValidateToken, checkTokenExpiry, tokenTtlMs } from
|
|
|
18
18
|
// Errors (all Data.TaggedError — matchable with Effect.catchTag)
|
|
19
19
|
export { CodecError, TokenParseError, TokenExpiredError, HttpError, NetworkError, TransportError, } from "./errors.js";
|
|
20
20
|
// Schema (Effect Schema — use for runtime validation / advanced use)
|
|
21
|
-
export { TokenClaims, Permissions, VectorClock, ClientMsg, ServerMsg, GCounterValue, PNCounterValue, ORSetValue, LwwValue, PresenceValue, CrdtGetResponse, CrdtOpResponse, ErrorResponse, } from "./schema.js";
|
|
22
|
-
//
|
|
23
|
-
export {
|
|
21
|
+
export { TokenClaims, Permissions, PermissionsV1, PermissionsV2, PermEntry, VectorClock, ClientMsg, ServerMsg, GCounterValue, PNCounterValue, ORSetValue, LwwValue, PresenceValue, CrdtGetResponse, CrdtOpResponse, ErrorResponse, } from "./schema.js";
|
|
22
|
+
// Undo/redo
|
|
23
|
+
export { UndoManager } from "./undo/UndoManager.js";
|
|
24
|
+
// Fractional indexing — position helpers for TreeCRDT
|
|
25
|
+
export { fi, between, before, after, start, end, spread } from "./utils/fractional.js";
|
|
26
|
+
// Validation — runtime validators for CRDT string values
|
|
27
|
+
export { CrdtValidationError, zodValidator, fnValidator } from "./validation/index.js";
|
|
28
|
+
// AI Agents — provider-agnostic tool use helpers (Anthropic, OpenAI, Gemini)
|
|
29
|
+
export { getMeridianTools, toOpenAITools, toGeminiTools, executeMeridianTool, executeOpenAITool, executeGeminiTool, } from "./agents.js";
|
|
24
30
|
// Effect Layer — dependency injection
|
|
25
31
|
export { MeridianService, MeridianLive } from "./layer.js";
|
|
26
32
|
// Codec (for advanced use / testing)
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,qBAAqB;AAErB,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAgB7C,eAAe;AACf,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAG5C,YAAY;AACZ,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAGvD,OAAO;AACP,OAAO,EAAE,UAAU,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElG,iEAAiE;AACjE,OAAO,EACL,UAAU,EACV,eAAe,EACf,iBAAiB,EACjB,SAAS,EACT,YAAY,EACZ,cAAc,GACf,MAAM,aAAa,CAAC;AAErB,qEAAqE;AACrE,OAAO,EACL,WAAW,EACX,WAAW,EACX,WAAW,EACX,SAAS,EACT,SAAS,EACT,aAAa,EACb,cAAc,EACd,UAAU,EACV,QAAQ,EACR,aAAa,EACb,eAAe,EACf,cAAc,EACd,aAAa,GACd,MAAM,aAAa,CAAC;AAGrB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,qBAAqB;AAErB,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAgB7C,eAAe;AACf,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAG5C,YAAY;AACZ,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAGvD,OAAO;AACP,OAAO,EAAE,UAAU,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElG,iEAAiE;AACjE,OAAO,EACL,UAAU,EACV,eAAe,EACf,iBAAiB,EACjB,SAAS,EACT,YAAY,EACZ,cAAc,GACf,MAAM,aAAa,CAAC;AAErB,qEAAqE;AACrE,OAAO,EACL,WAAW,EACX,WAAW,EACX,aAAa,EACb,aAAa,EACb,SAAS,EACT,WAAW,EACX,SAAS,EACT,SAAS,EACT,aAAa,EACb,cAAc,EACd,UAAU,EACV,QAAQ,EACR,aAAa,EACb,eAAe,EACf,cAAc,EACd,aAAa,GACd,MAAM,aAAa,CAAC;AAGrB,YAAY;AACZ,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAGpD,sDAAsD;AACtD,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAEvF,yDAAyD;AACzD,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAOvF,6EAA6E;AAC7E,OAAO,EACL,gBAAgB,EAChB,aAAa,EACb,aAAa,EACb,mBAAmB,EACnB,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,aAAa,CAAC;AAYrB,sCAAsC;AACtC,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE3D,qCAAqC;AACrC,OAAO,EACL,MAAM,EACN,MAAM,EACN,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,YAAY,CAAC"}
|