@allternit/ix 0.1.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/README.md +320 -0
- package/dist/adapters/json-render.d.ts +211 -0
- package/dist/adapters/json-render.d.ts.bak +211 -0
- package/dist/adapters/json-render.d.ts.map +1 -0
- package/dist/adapters/json-render.js +576 -0
- package/dist/adapters/json-render.js.bak +576 -0
- package/dist/adapters/json-render.js.map +1 -0
- package/dist/catalog/registry.d.ts +65 -0
- package/dist/catalog/registry.d.ts.bak +65 -0
- package/dist/catalog/registry.d.ts.map +1 -0
- package/dist/catalog/registry.js +388 -0
- package/dist/catalog/registry.js.bak +388 -0
- package/dist/catalog/registry.js.map +1 -0
- package/dist/collab/capsule-registry.d.ts +114 -0
- package/dist/collab/capsule-registry.d.ts.bak +114 -0
- package/dist/collab/capsule-registry.d.ts.map +1 -0
- package/dist/collab/capsule-registry.js +271 -0
- package/dist/collab/capsule-registry.js.bak +271 -0
- package/dist/collab/capsule-registry.js.map +1 -0
- package/dist/collab/index.d.ts +21 -0
- package/dist/collab/index.d.ts.bak +21 -0
- package/dist/collab/index.d.ts.map +1 -0
- package/dist/collab/index.js +32 -0
- package/dist/collab/index.js.bak +32 -0
- package/dist/collab/index.js.map +1 -0
- package/dist/collab/visual-editor.d.ts +199 -0
- package/dist/collab/visual-editor.d.ts.bak +199 -0
- package/dist/collab/visual-editor.d.ts.map +1 -0
- package/dist/collab/visual-editor.js +259 -0
- package/dist/collab/visual-editor.js.bak +259 -0
- package/dist/collab/visual-editor.js.map +1 -0
- package/dist/collab/yjs-adapter.d.ts +95 -0
- package/dist/collab/yjs-adapter.d.ts.bak +95 -0
- package/dist/collab/yjs-adapter.d.ts.map +1 -0
- package/dist/collab/yjs-adapter.js +282 -0
- package/dist/collab/yjs-adapter.js.bak +282 -0
- package/dist/collab/yjs-adapter.js.map +1 -0
- package/dist/collab/yjs-client.d.ts +101 -0
- package/dist/collab/yjs-client.d.ts.bak +101 -0
- package/dist/collab/yjs-client.d.ts.map +1 -0
- package/dist/collab/yjs-client.js +193 -0
- package/dist/collab/yjs-client.js.bak +193 -0
- package/dist/collab/yjs-client.js.map +1 -0
- package/dist/collab/yjs-protocols.d.ts +128 -0
- package/dist/collab/yjs-protocols.d.ts.bak +128 -0
- package/dist/collab/yjs-protocols.d.ts.map +1 -0
- package/dist/collab/yjs-protocols.js +245 -0
- package/dist/collab/yjs-protocols.js.bak +245 -0
- package/dist/collab/yjs-protocols.js.map +1 -0
- package/dist/collab/yjs-types.d.ts +201 -0
- package/dist/collab/yjs-types.d.ts.bak +201 -0
- package/dist/collab/yjs-types.d.ts.map +1 -0
- package/dist/collab/yjs-types.js +45 -0
- package/dist/collab/yjs-types.js.bak +45 -0
- package/dist/collab/yjs-types.js.map +1 -0
- package/dist/index.d.ts +38 -0
- package/dist/index.d.ts.bak +38 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +48 -0
- package/dist/index.js.bak +48 -0
- package/dist/index.js.map +1 -0
- package/dist/pipeline/llm-to-ix.d.ts +249 -0
- package/dist/pipeline/llm-to-ix.d.ts.bak +249 -0
- package/dist/pipeline/llm-to-ix.d.ts.map +1 -0
- package/dist/pipeline/llm-to-ix.js +992 -0
- package/dist/pipeline/llm-to-ix.js.bak +992 -0
- package/dist/pipeline/llm-to-ix.js.map +1 -0
- package/dist/react/index.d.ts +18 -0
- package/dist/react/index.d.ts.bak +18 -0
- package/dist/react/index.d.ts.map +1 -0
- package/dist/react/index.js +18 -0
- package/dist/react/index.js.bak +18 -0
- package/dist/react/index.js.map +1 -0
- package/dist/react/renderer.d.ts +47 -0
- package/dist/react/renderer.d.ts.bak +47 -0
- package/dist/react/renderer.d.ts.map +1 -0
- package/dist/react/renderer.js +420 -0
- package/dist/react/renderer.js.bak +420 -0
- package/dist/react/renderer.js.map +1 -0
- package/dist/renderer/renderer.d.ts +55 -0
- package/dist/renderer/renderer.d.ts.bak +55 -0
- package/dist/renderer/renderer.d.ts.map +1 -0
- package/dist/renderer/renderer.js +232 -0
- package/dist/renderer/renderer.js.bak +232 -0
- package/dist/renderer/renderer.js.map +1 -0
- package/dist/runtime/capsule-runtime.d.ts +227 -0
- package/dist/runtime/capsule-runtime.d.ts.bak +227 -0
- package/dist/runtime/capsule-runtime.d.ts.map +1 -0
- package/dist/runtime/capsule-runtime.js +563 -0
- package/dist/runtime/capsule-runtime.js.bak +563 -0
- package/dist/runtime/capsule-runtime.js.map +1 -0
- package/dist/runtime/policy-gates.d.ts +116 -0
- package/dist/runtime/policy-gates.d.ts.bak +116 -0
- package/dist/runtime/policy-gates.d.ts.map +1 -0
- package/dist/runtime/policy-gates.js +317 -0
- package/dist/runtime/policy-gates.js.bak +317 -0
- package/dist/runtime/policy-gates.js.map +1 -0
- package/dist/schema/ui-ir.d.ts +26 -0
- package/dist/schema/ui-ir.d.ts.bak +26 -0
- package/dist/schema/ui-ir.d.ts.map +1 -0
- package/dist/schema/ui-ir.js +51 -0
- package/dist/schema/ui-ir.js.bak +51 -0
- package/dist/schema/ui-ir.js.map +1 -0
- package/dist/sdk/api.d.ts +101 -0
- package/dist/sdk/api.d.ts.bak +101 -0
- package/dist/sdk/api.d.ts.map +1 -0
- package/dist/sdk/api.js +177 -0
- package/dist/sdk/api.js.bak +177 -0
- package/dist/sdk/api.js.map +1 -0
- package/dist/sdk/index.d.ts +9 -0
- package/dist/sdk/index.d.ts.bak +9 -0
- package/dist/sdk/index.d.ts.map +1 -0
- package/dist/sdk/index.js +10 -0
- package/dist/sdk/index.js.bak +10 -0
- package/dist/sdk/index.js.map +1 -0
- package/dist/sdk/react.d.ts +63 -0
- package/dist/sdk/react.d.ts.bak +63 -0
- package/dist/sdk/react.d.ts.map +1 -0
- package/dist/sdk/react.js +161 -0
- package/dist/sdk/react.js.bak +161 -0
- package/dist/sdk/react.js.map +1 -0
- package/dist/state/index.d.ts +8 -0
- package/dist/state/index.d.ts.bak +8 -0
- package/dist/state/index.d.ts.map +1 -0
- package/dist/state/index.js +8 -0
- package/dist/state/index.js.bak +8 -0
- package/dist/state/index.js.map +1 -0
- package/dist/state/patch.d.ts +73 -0
- package/dist/state/patch.d.ts.bak +73 -0
- package/dist/state/patch.d.ts.map +1 -0
- package/dist/state/patch.js +437 -0
- package/dist/state/patch.js.bak +437 -0
- package/dist/state/patch.js.map +1 -0
- package/dist/state/store.d.ts +50 -0
- package/dist/state/store.d.ts.bak +50 -0
- package/dist/state/store.d.ts.map +1 -0
- package/dist/state/store.js +246 -0
- package/dist/state/store.js.bak +246 -0
- package/dist/state/store.js.map +1 -0
- package/dist/svelte/index.d.ts +15 -0
- package/dist/svelte/index.d.ts.bak +15 -0
- package/dist/svelte/index.d.ts.map +1 -0
- package/dist/svelte/index.js +15 -0
- package/dist/svelte/index.js.bak +15 -0
- package/dist/svelte/index.js.map +1 -0
- package/dist/svelte/renderer.d.ts +35 -0
- package/dist/svelte/renderer.d.ts.bak +35 -0
- package/dist/svelte/renderer.d.ts.map +1 -0
- package/dist/svelte/renderer.js +317 -0
- package/dist/svelte/renderer.js.bak +317 -0
- package/dist/svelte/renderer.js.map +1 -0
- package/dist/types/index.d.ts +349 -0
- package/dist/types/index.d.ts.bak +349 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +152 -0
- package/dist/types/index.js.bak +152 -0
- package/dist/types/index.js.map +1 -0
- package/dist/vue/index.d.ts +18 -0
- package/dist/vue/index.d.ts.bak +18 -0
- package/dist/vue/index.d.ts.map +1 -0
- package/dist/vue/index.js +18 -0
- package/dist/vue/index.js.bak +18 -0
- package/dist/vue/index.js.map +1 -0
- package/dist/vue/renderer.d.ts +46 -0
- package/dist/vue/renderer.d.ts.bak +46 -0
- package/dist/vue/renderer.d.ts.map +1 -0
- package/dist/vue/renderer.js +302 -0
- package/dist/vue/renderer.js.bak +302 -0
- package/dist/vue/renderer.js.map +1 -0
- package/package.json +72 -0
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* YJS Protocols - GAP-67, 68
|
|
3
|
+
*
|
|
4
|
+
* Broadcast and Sync protocols for YJS
|
|
5
|
+
*/
|
|
6
|
+
import * as Y from 'yjs';
|
|
7
|
+
import { Awareness } from 'y-protocols/awareness';
|
|
8
|
+
import { encoding, decoding } from 'lib0';
|
|
9
|
+
import { AwarenessChanges, UserState, SyncState } from './yjs-types';
|
|
10
|
+
/**
|
|
11
|
+
* Broadcast Protocol - GAP-67
|
|
12
|
+
*
|
|
13
|
+
* Broadcast changes to all peers via WebRTC
|
|
14
|
+
*/
|
|
15
|
+
export declare class BroadcastProtocol {
|
|
16
|
+
private doc;
|
|
17
|
+
private provider;
|
|
18
|
+
private isSyncing;
|
|
19
|
+
constructor(doc: Y.Doc, provider: any);
|
|
20
|
+
/**
|
|
21
|
+
* Broadcast update to all peers
|
|
22
|
+
*/
|
|
23
|
+
broadcastUpdate(update: Uint8Array): void;
|
|
24
|
+
/**
|
|
25
|
+
* Handle incoming message
|
|
26
|
+
*/
|
|
27
|
+
handleMessage(message: Uint8Array, from: number): void;
|
|
28
|
+
private handleSyncMessage;
|
|
29
|
+
private handleAwarenessMessage;
|
|
30
|
+
/**
|
|
31
|
+
* Get sync state
|
|
32
|
+
*/
|
|
33
|
+
getSyncState(): SyncState;
|
|
34
|
+
/**
|
|
35
|
+
* Force sync with all peers
|
|
36
|
+
*/
|
|
37
|
+
forceSync(): void;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Sync Protocol - GAP-67
|
|
41
|
+
*
|
|
42
|
+
* Handle document synchronization
|
|
43
|
+
*/
|
|
44
|
+
export declare class SyncProtocol {
|
|
45
|
+
private doc;
|
|
46
|
+
private syncState;
|
|
47
|
+
constructor(doc: Y.Doc);
|
|
48
|
+
/**
|
|
49
|
+
* Sync document with remote
|
|
50
|
+
*/
|
|
51
|
+
syncDocument(remoteDoc: Y.Doc): void;
|
|
52
|
+
/**
|
|
53
|
+
* Create sync message
|
|
54
|
+
*/
|
|
55
|
+
createSyncMessage(): Uint8Array;
|
|
56
|
+
/**
|
|
57
|
+
* Handle sync step 1
|
|
58
|
+
*/
|
|
59
|
+
handleSyncStep1(encoder: encoding.Encoder, decoder: decoding.Decoder): void;
|
|
60
|
+
/**
|
|
61
|
+
* Handle sync step 2
|
|
62
|
+
*/
|
|
63
|
+
handleSyncStep2(decoder: decoding.Decoder): void;
|
|
64
|
+
/**
|
|
65
|
+
* Handle update
|
|
66
|
+
*/
|
|
67
|
+
handleUpdate(decoder: decoding.Decoder): void;
|
|
68
|
+
/**
|
|
69
|
+
* Get sync status for a peer
|
|
70
|
+
*/
|
|
71
|
+
getPeerSyncStatus(peerId: number): any;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Awareness Manager - GAP-68
|
|
75
|
+
*
|
|
76
|
+
* Manage user awareness and presence
|
|
77
|
+
*/
|
|
78
|
+
export declare class AwarenessManager {
|
|
79
|
+
private awareness;
|
|
80
|
+
private onChangeCallbacks;
|
|
81
|
+
constructor(doc: Y.Doc);
|
|
82
|
+
private setupListeners;
|
|
83
|
+
/**
|
|
84
|
+
* Set local user state
|
|
85
|
+
*/
|
|
86
|
+
setLocalState(state: UserState): void;
|
|
87
|
+
/**
|
|
88
|
+
* Set local state field
|
|
89
|
+
*/
|
|
90
|
+
setLocalStateField<T>(key: string, value: T): void;
|
|
91
|
+
/**
|
|
92
|
+
* Get all participant states
|
|
93
|
+
*/
|
|
94
|
+
getStates(): Map<number, UserState>;
|
|
95
|
+
/**
|
|
96
|
+
* Get local state
|
|
97
|
+
*/
|
|
98
|
+
getLocalState(): UserState | null;
|
|
99
|
+
/**
|
|
100
|
+
* Get state for specific client
|
|
101
|
+
*/
|
|
102
|
+
getState(clientId: number): UserState | null;
|
|
103
|
+
/**
|
|
104
|
+
* Listen for changes
|
|
105
|
+
*/
|
|
106
|
+
onChange(callback: (changes: AwarenessChanges) => void): () => void;
|
|
107
|
+
/**
|
|
108
|
+
* Get all connected clients
|
|
109
|
+
*/
|
|
110
|
+
getConnectedClients(): number[];
|
|
111
|
+
/**
|
|
112
|
+
* Remove client state
|
|
113
|
+
*/
|
|
114
|
+
removeLocalState(): void;
|
|
115
|
+
/**
|
|
116
|
+
* Get awareness instance
|
|
117
|
+
*/
|
|
118
|
+
getAwareness(): Awareness;
|
|
119
|
+
/**
|
|
120
|
+
* Destroy awareness manager
|
|
121
|
+
*/
|
|
122
|
+
destroy(): void;
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Create awareness manager
|
|
126
|
+
*/
|
|
127
|
+
export declare function createAwarenessManager(doc: Y.Doc): AwarenessManager;
|
|
128
|
+
//# sourceMappingURL=yjs-protocols.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"yjs-protocols.d.ts","sourceRoot":"","sources":["../../src/collab/yjs-protocols.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AAEH,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AACzB,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAGlD,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAE1C,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAErE;;;;GAIG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,GAAG,CAAQ;IACnB,OAAO,CAAC,QAAQ,CAAM;IACtB,OAAO,CAAC,SAAS,CAAkB;gBAEvB,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG;IAKrC;;OAEG;IACH,eAAe,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;IAkBzC;;OAEG;IACH,aAAa,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAgBtD,OAAO,CAAC,iBAAiB;IAgBzB,OAAO,CAAC,sBAAsB;IAU9B;;OAEG;IACH,YAAY,IAAI,SAAS;IASzB;;OAEG;IACH,SAAS,IAAI,IAAI;CAQlB;AAED;;;;GAIG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,GAAG,CAAQ;IACnB,OAAO,CAAC,SAAS,CAA+B;gBAEpC,GAAG,EAAE,CAAC,CAAC,GAAG;IAItB;;OAEG;IACH,YAAY,CAAC,SAAS,EAAE,CAAC,CAAC,GAAG,GAAG,IAAI;IAcpC;;OAEG;IACH,iBAAiB,IAAI,UAAU;IAM/B;;OAEG;IACH,eAAe,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,GAAG,IAAI;IAI3E;;OAEG;IACH,eAAe,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,GAAG,IAAI;IAIhD;;OAEG;IACH,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,GAAG,IAAI;IAI7C;;OAEG;IACH,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG;CAGvC;AAED;;;;GAIG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,iBAAiB,CAAuD;gBAEpE,GAAG,EAAE,CAAC,CAAC,GAAG;IAKtB,OAAO,CAAC,cAAc;IAMtB;;OAEG;IACH,aAAa,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAIrC;;OAEG;IACH,kBAAkB,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAQlD;;OAEG;IACH,SAAS,IAAI,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC;IAInC;;OAEG;IACH,aAAa,IAAI,SAAS,GAAG,IAAI;IAIjC;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAI5C;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,gBAAgB,KAAK,IAAI,GAAG,MAAM,IAAI;IAKnE;;OAEG;IACH,mBAAmB,IAAI,MAAM,EAAE;IAI/B;;OAEG;IACH,gBAAgB,IAAI,IAAI;IAIxB;;OAEG;IACH,YAAY,IAAI,SAAS;IAIzB;;OAEG;IACH,OAAO,IAAI,IAAI;CAIhB;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,GAAG,gBAAgB,CAEnE"}
|
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
// OWNER: T2-A5
|
|
2
|
+
/**
|
|
3
|
+
* YJS Protocols - GAP-67, 68
|
|
4
|
+
*
|
|
5
|
+
* Broadcast and Sync protocols for YJS
|
|
6
|
+
*/
|
|
7
|
+
import * as Y from 'yjs';
|
|
8
|
+
import { Awareness } from 'y-protocols/awareness';
|
|
9
|
+
import * as syncProtocol from 'y-protocols/sync';
|
|
10
|
+
import * as awarenessProtocol from 'y-protocols/awareness';
|
|
11
|
+
import { encoding, decoding } from 'lib0';
|
|
12
|
+
/**
|
|
13
|
+
* Broadcast Protocol - GAP-67
|
|
14
|
+
*
|
|
15
|
+
* Broadcast changes to all peers via WebRTC
|
|
16
|
+
*/
|
|
17
|
+
export class BroadcastProtocol {
|
|
18
|
+
doc;
|
|
19
|
+
provider;
|
|
20
|
+
isSyncing = false;
|
|
21
|
+
constructor(doc, provider) {
|
|
22
|
+
this.doc = doc;
|
|
23
|
+
this.provider = provider;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Broadcast update to all peers
|
|
27
|
+
*/
|
|
28
|
+
broadcastUpdate(update) {
|
|
29
|
+
if (!this.provider)
|
|
30
|
+
return;
|
|
31
|
+
try {
|
|
32
|
+
// 1. Encode update
|
|
33
|
+
const message = syncProtocol.createUpdateMessage(update);
|
|
34
|
+
// 2. Send via WebRTC provider
|
|
35
|
+
this.provider.broadcastMessage(message);
|
|
36
|
+
// 3. Handle sync state
|
|
37
|
+
this.isSyncing = false;
|
|
38
|
+
}
|
|
39
|
+
catch (error) {
|
|
40
|
+
console.error('Failed to broadcast update:', error);
|
|
41
|
+
this.isSyncing = false;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Handle incoming message
|
|
46
|
+
*/
|
|
47
|
+
handleMessage(message, from) {
|
|
48
|
+
const decoder = decoding.createDecoder(message);
|
|
49
|
+
const messageType = decoding.readVarUint(decoder);
|
|
50
|
+
switch (messageType) {
|
|
51
|
+
case syncProtocol.messageYjsSyncStep1:
|
|
52
|
+
case syncProtocol.messageYjsSyncStep2:
|
|
53
|
+
case syncProtocol.messageYjsUpdate:
|
|
54
|
+
this.handleSyncMessage(decoder, from);
|
|
55
|
+
break;
|
|
56
|
+
case awarenessProtocol.messageAwareness:
|
|
57
|
+
this.handleAwarenessMessage(decoder, from);
|
|
58
|
+
break;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
handleSyncMessage(decoder, from) {
|
|
62
|
+
this.isSyncing = true;
|
|
63
|
+
try {
|
|
64
|
+
syncProtocol.readSyncMessage(decoder, encoding.createEncoder(), this.doc, null, from);
|
|
65
|
+
}
|
|
66
|
+
finally {
|
|
67
|
+
this.isSyncing = false;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
handleAwarenessMessage(decoder, from) {
|
|
71
|
+
if (this.provider.awareness) {
|
|
72
|
+
awarenessProtocol.applyAwarenessUpdate(this.provider.awareness, decoding.readVarUint8Array(decoder), from);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Get sync state
|
|
77
|
+
*/
|
|
78
|
+
getSyncState() {
|
|
79
|
+
return {
|
|
80
|
+
isSyncing: this.isSyncing,
|
|
81
|
+
progress: this.isSyncing ? 50 : 100,
|
|
82
|
+
lastSync: new Date(),
|
|
83
|
+
errors: [],
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Force sync with all peers
|
|
88
|
+
*/
|
|
89
|
+
forceSync() {
|
|
90
|
+
if (!this.provider)
|
|
91
|
+
return;
|
|
92
|
+
// Request sync step 1 from all peers
|
|
93
|
+
const encoder = encoding.createEncoder();
|
|
94
|
+
syncProtocol.writeSyncStep1(encoder, this.doc);
|
|
95
|
+
this.provider.broadcastMessage(encoding.toUint8Array(encoder));
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Sync Protocol - GAP-67
|
|
100
|
+
*
|
|
101
|
+
* Handle document synchronization
|
|
102
|
+
*/
|
|
103
|
+
export class SyncProtocol {
|
|
104
|
+
doc;
|
|
105
|
+
syncState = new Map();
|
|
106
|
+
constructor(doc) {
|
|
107
|
+
this.doc = doc;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Sync document with remote
|
|
111
|
+
*/
|
|
112
|
+
syncDocument(remoteDoc) {
|
|
113
|
+
// 1. Create sync state vector
|
|
114
|
+
const stateVector = Y.encodeStateVector(this.doc);
|
|
115
|
+
// 2. Exchange with remote
|
|
116
|
+
const remoteStateVector = Y.encodeStateVector(remoteDoc);
|
|
117
|
+
// 3. Apply missing updates
|
|
118
|
+
const missingUpdates = Y.encodeStateAsUpdate(this.doc, remoteStateVector);
|
|
119
|
+
const remoteUpdates = Y.encodeStateAsUpdate(remoteDoc, stateVector);
|
|
120
|
+
Y.applyUpdate(this.doc, remoteUpdates);
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Create sync message
|
|
124
|
+
*/
|
|
125
|
+
createSyncMessage() {
|
|
126
|
+
const encoder = encoding.createEncoder();
|
|
127
|
+
syncProtocol.writeSyncStep1(encoder, this.doc);
|
|
128
|
+
return encoding.toUint8Array(encoder);
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Handle sync step 1
|
|
132
|
+
*/
|
|
133
|
+
handleSyncStep1(encoder, decoder) {
|
|
134
|
+
syncProtocol.readSyncStep1(decoder, encoder, this.doc);
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Handle sync step 2
|
|
138
|
+
*/
|
|
139
|
+
handleSyncStep2(decoder) {
|
|
140
|
+
syncProtocol.readSyncStep2(decoder, this.doc, null);
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Handle update
|
|
144
|
+
*/
|
|
145
|
+
handleUpdate(decoder) {
|
|
146
|
+
syncProtocol.readUpdate(decoder, this.doc, null);
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Get sync status for a peer
|
|
150
|
+
*/
|
|
151
|
+
getPeerSyncStatus(peerId) {
|
|
152
|
+
return this.syncState.get(peerId) || { synced: false };
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Awareness Manager - GAP-68
|
|
157
|
+
*
|
|
158
|
+
* Manage user awareness and presence
|
|
159
|
+
*/
|
|
160
|
+
export class AwarenessManager {
|
|
161
|
+
awareness;
|
|
162
|
+
onChangeCallbacks = new Set();
|
|
163
|
+
constructor(doc) {
|
|
164
|
+
this.awareness = new Awareness(doc);
|
|
165
|
+
this.setupListeners();
|
|
166
|
+
}
|
|
167
|
+
setupListeners() {
|
|
168
|
+
this.awareness.on('change', (changes) => {
|
|
169
|
+
this.onChangeCallbacks.forEach(cb => cb(changes));
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Set local user state
|
|
174
|
+
*/
|
|
175
|
+
setLocalState(state) {
|
|
176
|
+
this.awareness.setLocalStateField('user', state);
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Set local state field
|
|
180
|
+
*/
|
|
181
|
+
setLocalStateField(key, value) {
|
|
182
|
+
const currentState = this.awareness.getLocalState() || {};
|
|
183
|
+
this.awareness.setLocalState({
|
|
184
|
+
...currentState,
|
|
185
|
+
[key]: value,
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Get all participant states
|
|
190
|
+
*/
|
|
191
|
+
getStates() {
|
|
192
|
+
return this.awareness.getStates();
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Get local state
|
|
196
|
+
*/
|
|
197
|
+
getLocalState() {
|
|
198
|
+
return this.awareness.getLocalState()?.user || null;
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Get state for specific client
|
|
202
|
+
*/
|
|
203
|
+
getState(clientId) {
|
|
204
|
+
return this.awareness.getStates().get(clientId) || null;
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Listen for changes
|
|
208
|
+
*/
|
|
209
|
+
onChange(callback) {
|
|
210
|
+
this.onChangeCallbacks.add(callback);
|
|
211
|
+
return () => this.onChangeCallbacks.delete(callback);
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Get all connected clients
|
|
215
|
+
*/
|
|
216
|
+
getConnectedClients() {
|
|
217
|
+
return Array.from(this.awareness.getStates().keys());
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* Remove client state
|
|
221
|
+
*/
|
|
222
|
+
removeLocalState() {
|
|
223
|
+
this.awareness.setLocalState(null);
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* Get awareness instance
|
|
227
|
+
*/
|
|
228
|
+
getAwareness() {
|
|
229
|
+
return this.awareness;
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* Destroy awareness manager
|
|
233
|
+
*/
|
|
234
|
+
destroy() {
|
|
235
|
+
this.awareness.destroy();
|
|
236
|
+
this.onChangeCallbacks.clear();
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* Create awareness manager
|
|
241
|
+
*/
|
|
242
|
+
export function createAwarenessManager(doc) {
|
|
243
|
+
return new AwarenessManager(doc);
|
|
244
|
+
}
|
|
245
|
+
//# sourceMappingURL=yjs-protocols.js.map
|
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
// OWNER: T2-A5
|
|
2
|
+
/**
|
|
3
|
+
* YJS Protocols - GAP-67, 68
|
|
4
|
+
*
|
|
5
|
+
* Broadcast and Sync protocols for YJS
|
|
6
|
+
*/
|
|
7
|
+
import * as Y from 'yjs';
|
|
8
|
+
import { Awareness } from 'y-protocols/awareness';
|
|
9
|
+
import * as syncProtocol from 'y-protocols/sync';
|
|
10
|
+
import * as awarenessProtocol from 'y-protocols/awareness';
|
|
11
|
+
import { encoding, decoding } from 'lib0';
|
|
12
|
+
/**
|
|
13
|
+
* Broadcast Protocol - GAP-67
|
|
14
|
+
*
|
|
15
|
+
* Broadcast changes to all peers via WebRTC
|
|
16
|
+
*/
|
|
17
|
+
export class BroadcastProtocol {
|
|
18
|
+
doc;
|
|
19
|
+
provider;
|
|
20
|
+
isSyncing = false;
|
|
21
|
+
constructor(doc, provider) {
|
|
22
|
+
this.doc = doc;
|
|
23
|
+
this.provider = provider;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Broadcast update to all peers
|
|
27
|
+
*/
|
|
28
|
+
broadcastUpdate(update) {
|
|
29
|
+
if (!this.provider)
|
|
30
|
+
return;
|
|
31
|
+
try {
|
|
32
|
+
// 1. Encode update
|
|
33
|
+
const message = syncProtocol.createUpdateMessage(update);
|
|
34
|
+
// 2. Send via WebRTC provider
|
|
35
|
+
this.provider.broadcastMessage(message);
|
|
36
|
+
// 3. Handle sync state
|
|
37
|
+
this.isSyncing = false;
|
|
38
|
+
}
|
|
39
|
+
catch (error) {
|
|
40
|
+
console.error('Failed to broadcast update:', error);
|
|
41
|
+
this.isSyncing = false;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Handle incoming message
|
|
46
|
+
*/
|
|
47
|
+
handleMessage(message, from) {
|
|
48
|
+
const decoder = decoding.createDecoder(message);
|
|
49
|
+
const messageType = decoding.readVarUint(decoder);
|
|
50
|
+
switch (messageType) {
|
|
51
|
+
case syncProtocol.messageYjsSyncStep1:
|
|
52
|
+
case syncProtocol.messageYjsSyncStep2:
|
|
53
|
+
case syncProtocol.messageYjsUpdate:
|
|
54
|
+
this.handleSyncMessage(decoder, from);
|
|
55
|
+
break;
|
|
56
|
+
case awarenessProtocol.messageAwareness:
|
|
57
|
+
this.handleAwarenessMessage(decoder, from);
|
|
58
|
+
break;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
handleSyncMessage(decoder, from) {
|
|
62
|
+
this.isSyncing = true;
|
|
63
|
+
try {
|
|
64
|
+
syncProtocol.readSyncMessage(decoder, encoding.createEncoder(), this.doc, null, from);
|
|
65
|
+
}
|
|
66
|
+
finally {
|
|
67
|
+
this.isSyncing = false;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
handleAwarenessMessage(decoder, from) {
|
|
71
|
+
if (this.provider.awareness) {
|
|
72
|
+
awarenessProtocol.applyAwarenessUpdate(this.provider.awareness, decoding.readVarUint8Array(decoder), from);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Get sync state
|
|
77
|
+
*/
|
|
78
|
+
getSyncState() {
|
|
79
|
+
return {
|
|
80
|
+
isSyncing: this.isSyncing,
|
|
81
|
+
progress: this.isSyncing ? 50 : 100,
|
|
82
|
+
lastSync: new Date(),
|
|
83
|
+
errors: [],
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Force sync with all peers
|
|
88
|
+
*/
|
|
89
|
+
forceSync() {
|
|
90
|
+
if (!this.provider)
|
|
91
|
+
return;
|
|
92
|
+
// Request sync step 1 from all peers
|
|
93
|
+
const encoder = encoding.createEncoder();
|
|
94
|
+
syncProtocol.writeSyncStep1(encoder, this.doc);
|
|
95
|
+
this.provider.broadcastMessage(encoding.toUint8Array(encoder));
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Sync Protocol - GAP-67
|
|
100
|
+
*
|
|
101
|
+
* Handle document synchronization
|
|
102
|
+
*/
|
|
103
|
+
export class SyncProtocol {
|
|
104
|
+
doc;
|
|
105
|
+
syncState = new Map();
|
|
106
|
+
constructor(doc) {
|
|
107
|
+
this.doc = doc;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Sync document with remote
|
|
111
|
+
*/
|
|
112
|
+
syncDocument(remoteDoc) {
|
|
113
|
+
// 1. Create sync state vector
|
|
114
|
+
const stateVector = Y.encodeStateVector(this.doc);
|
|
115
|
+
// 2. Exchange with remote
|
|
116
|
+
const remoteStateVector = Y.encodeStateVector(remoteDoc);
|
|
117
|
+
// 3. Apply missing updates
|
|
118
|
+
const missingUpdates = Y.encodeStateAsUpdate(this.doc, remoteStateVector);
|
|
119
|
+
const remoteUpdates = Y.encodeStateAsUpdate(remoteDoc, stateVector);
|
|
120
|
+
Y.applyUpdate(this.doc, remoteUpdates);
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Create sync message
|
|
124
|
+
*/
|
|
125
|
+
createSyncMessage() {
|
|
126
|
+
const encoder = encoding.createEncoder();
|
|
127
|
+
syncProtocol.writeSyncStep1(encoder, this.doc);
|
|
128
|
+
return encoding.toUint8Array(encoder);
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Handle sync step 1
|
|
132
|
+
*/
|
|
133
|
+
handleSyncStep1(encoder, decoder) {
|
|
134
|
+
syncProtocol.readSyncStep1(decoder, encoder, this.doc);
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Handle sync step 2
|
|
138
|
+
*/
|
|
139
|
+
handleSyncStep2(decoder) {
|
|
140
|
+
syncProtocol.readSyncStep2(decoder, this.doc, null);
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Handle update
|
|
144
|
+
*/
|
|
145
|
+
handleUpdate(decoder) {
|
|
146
|
+
syncProtocol.readUpdate(decoder, this.doc, null);
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Get sync status for a peer
|
|
150
|
+
*/
|
|
151
|
+
getPeerSyncStatus(peerId) {
|
|
152
|
+
return this.syncState.get(peerId) || { synced: false };
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Awareness Manager - GAP-68
|
|
157
|
+
*
|
|
158
|
+
* Manage user awareness and presence
|
|
159
|
+
*/
|
|
160
|
+
export class AwarenessManager {
|
|
161
|
+
awareness;
|
|
162
|
+
onChangeCallbacks = new Set();
|
|
163
|
+
constructor(doc) {
|
|
164
|
+
this.awareness = new Awareness(doc);
|
|
165
|
+
this.setupListeners();
|
|
166
|
+
}
|
|
167
|
+
setupListeners() {
|
|
168
|
+
this.awareness.on('change', (changes) => {
|
|
169
|
+
this.onChangeCallbacks.forEach(cb => cb(changes));
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Set local user state
|
|
174
|
+
*/
|
|
175
|
+
setLocalState(state) {
|
|
176
|
+
this.awareness.setLocalStateField('user', state);
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Set local state field
|
|
180
|
+
*/
|
|
181
|
+
setLocalStateField(key, value) {
|
|
182
|
+
const currentState = this.awareness.getLocalState() || {};
|
|
183
|
+
this.awareness.setLocalState({
|
|
184
|
+
...currentState,
|
|
185
|
+
[key]: value,
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Get all participant states
|
|
190
|
+
*/
|
|
191
|
+
getStates() {
|
|
192
|
+
return this.awareness.getStates();
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Get local state
|
|
196
|
+
*/
|
|
197
|
+
getLocalState() {
|
|
198
|
+
return this.awareness.getLocalState()?.user || null;
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Get state for specific client
|
|
202
|
+
*/
|
|
203
|
+
getState(clientId) {
|
|
204
|
+
return this.awareness.getStates().get(clientId) || null;
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Listen for changes
|
|
208
|
+
*/
|
|
209
|
+
onChange(callback) {
|
|
210
|
+
this.onChangeCallbacks.add(callback);
|
|
211
|
+
return () => this.onChangeCallbacks.delete(callback);
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Get all connected clients
|
|
215
|
+
*/
|
|
216
|
+
getConnectedClients() {
|
|
217
|
+
return Array.from(this.awareness.getStates().keys());
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* Remove client state
|
|
221
|
+
*/
|
|
222
|
+
removeLocalState() {
|
|
223
|
+
this.awareness.setLocalState(null);
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* Get awareness instance
|
|
227
|
+
*/
|
|
228
|
+
getAwareness() {
|
|
229
|
+
return this.awareness;
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* Destroy awareness manager
|
|
233
|
+
*/
|
|
234
|
+
destroy() {
|
|
235
|
+
this.awareness.destroy();
|
|
236
|
+
this.onChangeCallbacks.clear();
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* Create awareness manager
|
|
241
|
+
*/
|
|
242
|
+
export function createAwarenessManager(doc) {
|
|
243
|
+
return new AwarenessManager(doc);
|
|
244
|
+
}
|
|
245
|
+
//# sourceMappingURL=yjs-protocols.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"yjs-protocols.js","sourceRoot":"","sources":["../../src/collab/yjs-protocols.ts"],"names":[],"mappings":"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"}
|