init: the first public commit for AFFiNE

This commit is contained in:
DarkSky
2022-07-22 15:49:21 +08:00
commit e3e3741393
1451 changed files with 108124 additions and 0 deletions
+82
View File
@@ -0,0 +1,82 @@
import * as encoding from 'lib0/encoding';
import * as decoding from 'lib0/decoding';
import * as authProtocol from 'y-protocols/auth';
import * as awarenessProtocol from 'y-protocols/awareness';
import * as syncProtocol from 'y-protocols/sync';
import { WebsocketProvider } from './provider';
const permissionDeniedHandler = (provider: WebsocketProvider, reason: string) =>
console.warn(`Permission denied to access ${provider.url}.\n${reason}`);
export enum Message {
sync = 0,
queryAwareness,
awareness,
auth,
}
export type MessageCallback = (
encoder: encoding.Encoder,
decoder: decoding.Decoder,
provider: WebsocketProvider,
emitSynced: boolean,
messageType: number
) => void;
export const handler: Record<Message, MessageCallback> = {
[Message.sync]: (encoder, decoder, provider, emitSynced, messageType) => {
encoding.writeVarUint(encoder, Message.sync);
const syncMessageType = syncProtocol.readSyncMessage(
decoder,
encoder,
provider.doc,
provider
);
if (
emitSynced &&
syncMessageType === syncProtocol.messageYjsSyncStep2 &&
!provider.synced
) {
provider.synced = true;
}
},
[Message.queryAwareness]: (
encoder,
decoder,
provider,
emitSynced,
messageType
) => {
encoding.writeVarUint(encoder, Message.queryAwareness);
encoding.writeVarUint8Array(
encoder,
awarenessProtocol.encodeAwarenessUpdate(
provider.awareness,
Array.from(provider.awareness.getStates().keys())
)
);
},
[Message.awareness]: (
encoder,
decoder,
provider,
emitSynced,
messageType
) => {
awarenessProtocol.applyAwarenessUpdate(
provider.awareness,
decoding.readVarUint8Array(decoder),
provider
);
},
[Message.auth]: (encoder, decoder, provider, emitSynced, messageType) => {
authProtocol.readAuthMessage(
decoder,
provider.doc,
permissionDeniedHandler
);
},
};