make this a proper esm module
This commit is contained in:
@@ -1,7 +1,8 @@
|
||||
const http = require('http')
|
||||
const number = require('lib0/number')
|
||||
|
||||
const CALLBACK_URL = process.env.CALLBACK_URL ? new URL(process.env.CALLBACK_URL) : null
|
||||
const CALLBACK_TIMEOUT = process.env.CALLBACK_TIMEOUT || 5000
|
||||
const CALLBACK_TIMEOUT = number.parseInt(process.env.CALLBACK_TIMEOUT || '5000')
|
||||
const CALLBACK_OBJECTS = process.env.CALLBACK_OBJECTS ? JSON.parse(process.env.CALLBACK_OBJECTS) : {}
|
||||
|
||||
exports.isCallbackSet = !!CALLBACK_URL
|
||||
@@ -9,7 +10,7 @@ exports.isCallbackSet = !!CALLBACK_URL
|
||||
/**
|
||||
* @param {Uint8Array} update
|
||||
* @param {any} origin
|
||||
* @param {WSSharedDoc} doc
|
||||
* @param {import('./utils.cjs').WSSharedDoc} doc
|
||||
*/
|
||||
exports.callbackHandler = (update, origin, doc) => {
|
||||
const room = doc.name
|
||||
@@ -25,7 +26,7 @@ exports.callbackHandler = (update, origin, doc) => {
|
||||
content: getContent(sharedObjectName, sharedObjectType, doc).toJSON()
|
||||
}
|
||||
})
|
||||
callbackRequest(CALLBACK_URL, CALLBACK_TIMEOUT, dataToSend)
|
||||
CALLBACK_URL && callbackRequest(CALLBACK_URL, CALLBACK_TIMEOUT, dataToSend)
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -62,7 +63,7 @@ const callbackRequest = (url, timeout, data) => {
|
||||
/**
|
||||
* @param {string} objName
|
||||
* @param {string} objType
|
||||
* @param {WSSharedDoc} doc
|
||||
* @param {import('./utils.cjs').WSSharedDoc} doc
|
||||
*/
|
||||
const getContent = (objName, objType, doc) => {
|
||||
switch (objType) {
|
||||
@@ -5,13 +5,14 @@
|
||||
*/
|
||||
const WebSocket = require('ws')
|
||||
const http = require('http')
|
||||
const number = require('lib0/number')
|
||||
const wss = new WebSocket.Server({ noServer: true })
|
||||
const setupWSConnection = require('./utils.js').setupWSConnection
|
||||
const setupWSConnection = require('./utils.cjs').setupWSConnection
|
||||
|
||||
const host = process.env.HOST || 'localhost'
|
||||
const port = process.env.PORT || 1234
|
||||
const port = number.parseInt(process.env.PORT || '1234')
|
||||
|
||||
const server = http.createServer((request, response) => {
|
||||
const server = http.createServer((_request, response) => {
|
||||
response.writeHead(200, { 'Content-Type': 'text/plain' })
|
||||
response.end('okay')
|
||||
})
|
||||
@@ -1,18 +1,18 @@
|
||||
const Y = require('yjs')
|
||||
const syncProtocol = require('y-protocols/dist/sync.cjs')
|
||||
const awarenessProtocol = require('y-protocols/dist/awareness.cjs')
|
||||
const syncProtocol = require('y-protocols/sync')
|
||||
const awarenessProtocol = require('y-protocols/awareness')
|
||||
|
||||
const encoding = require('lib0/dist/encoding.cjs')
|
||||
const decoding = require('lib0/dist/decoding.cjs')
|
||||
const map = require('lib0/dist/map.cjs')
|
||||
const encoding = require('lib0/encoding')
|
||||
const decoding = require('lib0/decoding')
|
||||
const map = require('lib0/map')
|
||||
|
||||
const debounce = require('lodash.debounce')
|
||||
|
||||
const callbackHandler = require('./callback.js').callbackHandler
|
||||
const isCallbackSet = require('./callback.js').isCallbackSet
|
||||
const callbackHandler = require('./callback.cjs').callbackHandler
|
||||
const isCallbackSet = require('./callback.cjs').isCallbackSet
|
||||
|
||||
const CALLBACK_DEBOUNCE_WAIT = parseInt(process.env.CALLBACK_DEBOUNCE_WAIT) || 2000
|
||||
const CALLBACK_DEBOUNCE_MAXWAIT = parseInt(process.env.CALLBACK_DEBOUNCE_MAXWAIT) || 10000
|
||||
const CALLBACK_DEBOUNCE_WAIT = parseInt(process.env.CALLBACK_DEBOUNCE_WAIT || '2000')
|
||||
const CALLBACK_DEBOUNCE_MAXWAIT = parseInt(process.env.CALLBACK_DEBOUNCE_MAXWAIT || '10000')
|
||||
|
||||
const wsReadyStateConnecting = 0
|
||||
const wsReadyStateOpen = 1
|
||||
@@ -73,10 +73,11 @@ const messageAwareness = 1
|
||||
|
||||
/**
|
||||
* @param {Uint8Array} update
|
||||
* @param {any} origin
|
||||
* @param {any} _origin
|
||||
* @param {WSSharedDoc} doc
|
||||
* @param {any} _tr
|
||||
*/
|
||||
const updateHandler = (update, origin, doc) => {
|
||||
const updateHandler = (update, _origin, doc, _tr) => {
|
||||
const encoder = encoding.createEncoder()
|
||||
encoding.writeVarUint(encoder, messageSync)
|
||||
syncProtocol.writeUpdate(encoder, update)
|
||||
@@ -124,7 +125,7 @@ class WSSharedDoc extends Y.Doc {
|
||||
})
|
||||
}
|
||||
this.awareness.on('update', awarenessChangeHandler)
|
||||
this.on('update', updateHandler)
|
||||
this.on('update', /** @type {any} */ (updateHandler))
|
||||
if (isCallbackSet) {
|
||||
this.on('update', debounce(
|
||||
callbackHandler,
|
||||
@@ -135,6 +136,8 @@ class WSSharedDoc extends Y.Doc {
|
||||
}
|
||||
}
|
||||
|
||||
exports.WSSharedDoc = WSSharedDoc
|
||||
|
||||
/**
|
||||
* Gets a Y.Doc by name, whether in memory or on disk
|
||||
*
|
||||
@@ -183,6 +186,7 @@ const messageListener = (conn, doc, message) => {
|
||||
}
|
||||
} catch (err) {
|
||||
console.error(err)
|
||||
// @ts-ignore
|
||||
doc.emit('error', [err])
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user