remove all async-functions - making it compatible with node 6

This commit is contained in:
Kevin Jahns 2017-08-01 16:15:36 +02:00
parent fed77d532f
commit 65e8c29b33
4 changed files with 37 additions and 33 deletions

View File

@ -4,8 +4,8 @@
<!-- quill does not include dist files! We are using the hosted version instead --> <!-- quill does not include dist files! We are using the hosted version instead -->
<!--link rel="stylesheet" href="../bower_components/quill/dist/quill.snow.css" /--> <!--link rel="stylesheet" href="../bower_components/quill/dist/quill.snow.css" /-->
<link href="https://cdn.quilljs.com/1.0.4/quill.snow.css" rel="stylesheet"> <link href="https://cdn.quilljs.com/1.0.4/quill.snow.css" rel="stylesheet">
<link href="//cdnjs.cloudflare.com/ajax/libs/KaTeX/0.5.1/katex.min.css" rel="stylesheet"> <link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.5.1/katex.min.css" rel="stylesheet">
<link href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.2.0/styles/monokai-sublime.min.css" rel="stylesheet"> <link href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.2.0/styles/monokai-sublime.min.css" rel="stylesheet">
<style> <style>
#quill-container { #quill-container {
border: 1px solid gray; border: 1px solid gray;
@ -19,13 +19,17 @@
</div> </div>
</div> </div>
<script src="//cdnjs.cloudflare.com/ajax/libs/KaTeX/0.5.1/katex.min.js" type="text/javascript"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.5.1/katex.min.js" type="text/javascript"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.2.0/highlight.min.js" type="text/javascript"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.2.0/highlight.min.js" type="text/javascript"></script>
<script src="https://cdn.quilljs.com/1.0.4/quill.js"></script> <script src="https://cdn.quilljs.com/1.0.4/quill.js"></script>
<!-- quill does not include dist files! We are using the hosted version instead (see above) <!-- quill does not include dist files! We are using the hosted version instead (see above)
<script src="../bower_components/quill/dist/quill.js"></script> <script src="../bower_components/quill/dist/quill.js"></script>
--> -->
<script src="../bower_components/yjs/y.js"></script> <script src="../../y.js"></script>
<script src="../../../y-array/y-array.js"></script>
<script src="../../../y-richtext/dist/y-richtext.js"></script>
<script src="../../../y-memory/y-memory.js"></script>
<script src="../../../y-websockets-client/y-websockets-client.js"></script>
<script src="./index.js"></script> <script src="./index.js"></script>
</body> </body>
</html> </html>

View File

@ -8,7 +8,8 @@ Y({
}, },
connector: { connector: {
name: 'websockets-client', name: 'websockets-client',
room: 'richtext-example-quill-1.0-test' room: 'richtext-example-quill-1.0-test',
url: 'http://localhost:1234'
}, },
sourceDir: '/bower_components', sourceDir: '/bower_components',
share: { share: {

View File

@ -220,7 +220,7 @@ export default function extendConnector (Y/* :any */) {
/* /*
You received a raw message, and you know that it is intended for Yjs. Then call this function. You received a raw message, and you know that it is intended for Yjs. Then call this function.
*/ */
async receiveMessage (sender, buffer) { receiveMessage (sender, buffer) {
if (!(buffer instanceof ArrayBuffer || buffer instanceof Uint8Array)) { if (!(buffer instanceof ArrayBuffer || buffer instanceof Uint8Array)) {
throw new Error('Expected Message to be an ArrayBuffer or Uint8Array!') throw new Error('Expected Message to be an ArrayBuffer or Uint8Array!')
} }
@ -244,31 +244,29 @@ export default function extendConnector (Y/* :any */) {
if (messageType === 'sync step 1' || messageType === 'sync step 2') { if (messageType === 'sync step 1' || messageType === 'sync step 2') {
let auth = decoder.readVarUint() let auth = decoder.readVarUint()
if (senderConn.auth == null) { if (senderConn.auth == null) {
senderConn.processAfterAuth.push([sender, buffer])
// check auth // check auth
let authPermissions = await this.checkAuth(auth, this.y, sender) return this.checkAuth(auth, this.y, sender).then(authPermissions => {
senderConn.auth = authPermissions senderConn.auth = authPermissions
this.y.emit('userAuthenticated', { this.y.emit('userAuthenticated', {
user: senderConn.uid, user: senderConn.uid,
auth: authPermissions auth: authPermissions
}) })
senderConn.syncStep2.promise.then(() => { return senderConn.syncStep2.promise
}).then(() => {
if (senderConn.processAfterAuth == null) { if (senderConn.processAfterAuth == null) {
return return Promise.resolve()
}
for (let i = 0; i < senderConn.processAfterAuth.length; i++) {
let m = senderConn.processAfterAuth[i]
this.receiveMessage(m[0], m[1])
} }
let messages = senderConn.processAfterAuth
senderConn.processAfterAuth = null senderConn.processAfterAuth = null
return Promise.all(messages.map(m =>
this.receiveMessage(m[0], m[1])
))
}) })
} }
} }
if (senderConn.auth == null) {
senderConn.processAfterAuth.push([sender, buffer])
return
}
if (messageType === 'sync step 1' && (senderConn.auth === 'write' || senderConn.auth === 'read')) { if (messageType === 'sync step 1' && (senderConn.auth === 'write' || senderConn.auth === 'read')) {
// cannot wait for sync step 1 to finish, because we may wait for sync step 2 in sync step 1 (->lock) // cannot wait for sync step 1 to finish, because we may wait for sync step 2 in sync step 1 (->lock)
computeMessageSyncStep1(decoder, encoder, this, senderConn, sender) computeMessageSyncStep1(decoder, encoder, this, senderConn, sender)
@ -278,7 +276,7 @@ export default function extendConnector (Y/* :any */) {
} else if (messageType === 'update' && senderConn.auth === 'write') { } else if (messageType === 'update' && senderConn.auth === 'write') {
return computeMessageUpdate(decoder, encoder, this, senderConn, sender) return computeMessageUpdate(decoder, encoder, this, senderConn, sender)
} else { } else {
console.error('Unable to receive message') Promise.reject('Unable to receive message')
} }
} }
_setSyncedWith (user) { _setSyncedWith (user) {

View File

@ -26,14 +26,14 @@ export function formatYjsMessageType (buffer) {
return decoder.readVarString() return decoder.readVarString()
} }
export async function logMessageUpdate (decoder, strBuilder) { export function logMessageUpdate (decoder, strBuilder) {
let len = decoder.readUint32() let len = decoder.readUint32()
for (let i = 0; i < len; i++) { for (let i = 0; i < len; i++) {
strBuilder.push(JSON.stringify(Y.Struct.binaryDecodeOperation(decoder)) + '\n') strBuilder.push(JSON.stringify(Y.Struct.binaryDecodeOperation(decoder)) + '\n')
} }
} }
export async function computeMessageUpdate (decoder, encoder, conn) { export function computeMessageUpdate (decoder, encoder, conn) {
if (conn.y.db.forwardAppliedOperations) { if (conn.y.db.forwardAppliedOperations) {
let messagePosition = decoder.pos let messagePosition = decoder.pos
let len = decoder.readUint32() let len = decoder.readUint32()
@ -78,7 +78,7 @@ export function logMessageSyncStep1 (decoder, strBuilder) {
logSS(decoder, strBuilder) logSS(decoder, strBuilder)
} }
export async function computeMessageSyncStep1 (decoder, encoder, conn, senderConn, sender) { export function computeMessageSyncStep1 (decoder, encoder, conn, senderConn, sender) {
let protocolVersion = decoder.readVarUint() let protocolVersion = decoder.readVarUint()
let preferUntransformed = decoder.readUint8() === 1 let preferUntransformed = decoder.readUint8() === 1
@ -112,7 +112,7 @@ export async function computeMessageSyncStep1 (decoder, encoder, conn, senderCon
if (conn.role === 'slave') { if (conn.role === 'slave') {
sendSyncStep1(conn, sender) sendSyncStep1(conn, sender)
} }
await conn.y.db.whenTransactionsFinished() return conn.y.db.whenTransactionsFinished()
} }
export function logSS (decoder, strBuilder) { export function logSS (decoder, strBuilder) {
@ -161,7 +161,7 @@ export function logMessageSyncStep2 (decoder, strBuilder) {
logDS(decoder, strBuilder) logDS(decoder, strBuilder)
} }
export async function computeMessageSyncStep2 (decoder, encoder, conn, senderConn, sender) { export function computeMessageSyncStep2 (decoder, encoder, conn, senderConn, sender) {
var db = conn.y.db var db = conn.y.db
let defer = senderConn.syncStep2 let defer = senderConn.syncStep2
@ -178,7 +178,8 @@ export async function computeMessageSyncStep2 (decoder, encoder, conn, senderCon
db.requestTransaction(function * () { db.requestTransaction(function * () {
yield * this.applyDeleteSet(decoder) yield * this.applyDeleteSet(decoder)
}) })
await db.whenTransactionsFinished() return db.whenTransactionsFinished().then(() => {
conn._setSyncedWith(sender) conn._setSyncedWith(sender)
defer.resolve() defer.resolve()
})
} }