make this a proper esm module
This commit is contained in:
parent
89fb1e38ee
commit
c3d14cf07d
@ -1,7 +1,8 @@
|
|||||||
const http = require('http')
|
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_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) : {}
|
const CALLBACK_OBJECTS = process.env.CALLBACK_OBJECTS ? JSON.parse(process.env.CALLBACK_OBJECTS) : {}
|
||||||
|
|
||||||
exports.isCallbackSet = !!CALLBACK_URL
|
exports.isCallbackSet = !!CALLBACK_URL
|
||||||
@ -9,7 +10,7 @@ exports.isCallbackSet = !!CALLBACK_URL
|
|||||||
/**
|
/**
|
||||||
* @param {Uint8Array} update
|
* @param {Uint8Array} update
|
||||||
* @param {any} origin
|
* @param {any} origin
|
||||||
* @param {WSSharedDoc} doc
|
* @param {import('./utils.cjs').WSSharedDoc} doc
|
||||||
*/
|
*/
|
||||||
exports.callbackHandler = (update, origin, doc) => {
|
exports.callbackHandler = (update, origin, doc) => {
|
||||||
const room = doc.name
|
const room = doc.name
|
||||||
@ -25,7 +26,7 @@ exports.callbackHandler = (update, origin, doc) => {
|
|||||||
content: getContent(sharedObjectName, sharedObjectType, doc).toJSON()
|
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} objName
|
||||||
* @param {string} objType
|
* @param {string} objType
|
||||||
* @param {WSSharedDoc} doc
|
* @param {import('./utils.cjs').WSSharedDoc} doc
|
||||||
*/
|
*/
|
||||||
const getContent = (objName, objType, doc) => {
|
const getContent = (objName, objType, doc) => {
|
||||||
switch (objType) {
|
switch (objType) {
|
||||||
@ -5,13 +5,14 @@
|
|||||||
*/
|
*/
|
||||||
const WebSocket = require('ws')
|
const WebSocket = require('ws')
|
||||||
const http = require('http')
|
const http = require('http')
|
||||||
|
const number = require('lib0/number')
|
||||||
const wss = new WebSocket.Server({ noServer: true })
|
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 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.writeHead(200, { 'Content-Type': 'text/plain' })
|
||||||
response.end('okay')
|
response.end('okay')
|
||||||
})
|
})
|
||||||
@ -1,18 +1,18 @@
|
|||||||
const Y = require('yjs')
|
const Y = require('yjs')
|
||||||
const syncProtocol = require('y-protocols/dist/sync.cjs')
|
const syncProtocol = require('y-protocols/sync')
|
||||||
const awarenessProtocol = require('y-protocols/dist/awareness.cjs')
|
const awarenessProtocol = require('y-protocols/awareness')
|
||||||
|
|
||||||
const encoding = require('lib0/dist/encoding.cjs')
|
const encoding = require('lib0/encoding')
|
||||||
const decoding = require('lib0/dist/decoding.cjs')
|
const decoding = require('lib0/decoding')
|
||||||
const map = require('lib0/dist/map.cjs')
|
const map = require('lib0/map')
|
||||||
|
|
||||||
const debounce = require('lodash.debounce')
|
const debounce = require('lodash.debounce')
|
||||||
|
|
||||||
const callbackHandler = require('./callback.js').callbackHandler
|
const callbackHandler = require('./callback.cjs').callbackHandler
|
||||||
const isCallbackSet = require('./callback.js').isCallbackSet
|
const isCallbackSet = require('./callback.cjs').isCallbackSet
|
||||||
|
|
||||||
const CALLBACK_DEBOUNCE_WAIT = parseInt(process.env.CALLBACK_DEBOUNCE_WAIT) || 2000
|
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_MAXWAIT = parseInt(process.env.CALLBACK_DEBOUNCE_MAXWAIT || '10000')
|
||||||
|
|
||||||
const wsReadyStateConnecting = 0
|
const wsReadyStateConnecting = 0
|
||||||
const wsReadyStateOpen = 1
|
const wsReadyStateOpen = 1
|
||||||
@ -73,10 +73,11 @@ const messageAwareness = 1
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {Uint8Array} update
|
* @param {Uint8Array} update
|
||||||
* @param {any} origin
|
* @param {any} _origin
|
||||||
* @param {WSSharedDoc} doc
|
* @param {WSSharedDoc} doc
|
||||||
|
* @param {any} _tr
|
||||||
*/
|
*/
|
||||||
const updateHandler = (update, origin, doc) => {
|
const updateHandler = (update, _origin, doc, _tr) => {
|
||||||
const encoder = encoding.createEncoder()
|
const encoder = encoding.createEncoder()
|
||||||
encoding.writeVarUint(encoder, messageSync)
|
encoding.writeVarUint(encoder, messageSync)
|
||||||
syncProtocol.writeUpdate(encoder, update)
|
syncProtocol.writeUpdate(encoder, update)
|
||||||
@ -124,7 +125,7 @@ class WSSharedDoc extends Y.Doc {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
this.awareness.on('update', awarenessChangeHandler)
|
this.awareness.on('update', awarenessChangeHandler)
|
||||||
this.on('update', updateHandler)
|
this.on('update', /** @type {any} */ (updateHandler))
|
||||||
if (isCallbackSet) {
|
if (isCallbackSet) {
|
||||||
this.on('update', debounce(
|
this.on('update', debounce(
|
||||||
callbackHandler,
|
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
|
* Gets a Y.Doc by name, whether in memory or on disk
|
||||||
*
|
*
|
||||||
@ -183,6 +186,7 @@ const messageListener = (conn, doc, message) => {
|
|||||||
}
|
}
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.error(err)
|
console.error(err)
|
||||||
|
// @ts-ignore
|
||||||
doc.emit('error', [err])
|
doc.emit('error', [err])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
32
package-lock.json
generated
32
package-lock.json
generated
@ -14,8 +14,8 @@
|
|||||||
"y-protocols": "^1.0.5"
|
"y-protocols": "^1.0.5"
|
||||||
},
|
},
|
||||||
"bin": {
|
"bin": {
|
||||||
"y-websocket": "bin/server.js",
|
"y-websocket": "bin/server.cjs",
|
||||||
"y-websocket-server": "bin/server.js"
|
"y-websocket-server": "bin/server.cjs"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/node": "^18.15.0",
|
"@types/node": "^18.15.0",
|
||||||
@ -24,6 +24,10 @@
|
|||||||
"typescript": "^4.9.5",
|
"typescript": "^4.9.5",
|
||||||
"yjs": "^13.5.0"
|
"yjs": "^13.5.0"
|
||||||
},
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=16.0.0",
|
||||||
|
"npm": ">=8.0.0"
|
||||||
|
},
|
||||||
"funding": {
|
"funding": {
|
||||||
"type": "GitHub Sponsors ❤",
|
"type": "GitHub Sponsors ❤",
|
||||||
"url": "https://github.com/sponsors/dmonad"
|
"url": "https://github.com/sponsors/dmonad"
|
||||||
@ -1915,17 +1919,19 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/lib0": {
|
"node_modules/lib0": {
|
||||||
"version": "0.2.66",
|
"version": "0.2.93",
|
||||||
"resolved": "https://registry.npmjs.org/lib0/-/lib0-0.2.66.tgz",
|
"resolved": "https://registry.npmjs.org/lib0/-/lib0-0.2.93.tgz",
|
||||||
"integrity": "sha512-h63Jt0nmFGmE4aXMPHUuRBpDgkdr1gfeVn+epJJ8m6+gPK0AozP6akJ8rp9IqBP8RC/peLi+pwaOx/qpgAvqgA==",
|
"integrity": "sha512-M5IKsiFJYulS+8Eal8f+zAqf5ckm1vffW0fFDxfgxJ+uiVopvDdd3PxJmz0GsVi3YNO7QCFSq0nAsiDmNhLj9Q==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"isomorphic.js": "^0.2.4"
|
"isomorphic.js": "^0.2.4"
|
||||||
},
|
},
|
||||||
"bin": {
|
"bin": {
|
||||||
"0gentesthtml": "bin/gentesthtml.js"
|
"0ecdsa-generate-keypair": "bin/0ecdsa-generate-keypair.js",
|
||||||
|
"0gentesthtml": "bin/gentesthtml.js",
|
||||||
|
"0serve": "bin/0serve.js"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=14"
|
"node": ">=16"
|
||||||
},
|
},
|
||||||
"funding": {
|
"funding": {
|
||||||
"type": "GitHub Sponsors ❤",
|
"type": "GitHub Sponsors ❤",
|
||||||
@ -3152,12 +3158,16 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/yjs": {
|
"node_modules/yjs": {
|
||||||
"version": "13.5.50",
|
"version": "13.6.14",
|
||||||
"resolved": "https://registry.npmjs.org/yjs/-/yjs-13.5.50.tgz",
|
"resolved": "https://registry.npmjs.org/yjs/-/yjs-13.6.14.tgz",
|
||||||
"integrity": "sha512-Q2KVNfovwjtJV4Yxz+HaFYT6vTYBaFagOSpTL3jbPc7Sbv/My68fLTfPlYy9FmNO87pV8dMBd5XuVar+9WsAWg==",
|
"integrity": "sha512-D+7KcUr0j+vBCUSKXXEWfA+bG4UQBviAwP3gYBhkstkgwy5+8diOPMx0iqLIOxNo/HxaREUimZRxqHGAHCL2BQ==",
|
||||||
"devOptional": true,
|
"devOptional": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"lib0": "^0.2.49"
|
"lib0": "^0.2.86"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=16.0.0",
|
||||||
|
"npm": ">=8.0.0"
|
||||||
},
|
},
|
||||||
"funding": {
|
"funding": {
|
||||||
"type": "GitHub Sponsors ❤",
|
"type": "GitHub Sponsors ❤",
|
||||||
|
|||||||
14
package.json
14
package.json
@ -5,21 +5,22 @@
|
|||||||
"main": "./dist/y-websocket.cjs",
|
"main": "./dist/y-websocket.cjs",
|
||||||
"module": "./src/y-websocket.js",
|
"module": "./src/y-websocket.js",
|
||||||
"types": "./dist/src/y-websocket.d.ts",
|
"types": "./dist/src/y-websocket.d.ts",
|
||||||
|
"type": "module",
|
||||||
"sideEffects": false,
|
"sideEffects": false,
|
||||||
"funding": {
|
"funding": {
|
||||||
"type": "GitHub Sponsors ❤",
|
"type": "GitHub Sponsors ❤",
|
||||||
"url": "https://github.com/sponsors/dmonad"
|
"url": "https://github.com/sponsors/dmonad"
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"start": "node ./bin/server.js",
|
"start": "node ./bin/server.cjs",
|
||||||
"dist": "rm -rf dist && rollup -c && tsc",
|
"dist": "rm -rf dist && rollup -c && tsc",
|
||||||
"lint": "standard && tsc",
|
"lint": "standard && tsc",
|
||||||
"test": "npm run lint",
|
"test": "npm run lint",
|
||||||
"preversion": "npm run lint && npm run dist && test -e dist/src/y-websocket.d.ts && test -e dist/y-websocket.cjs"
|
"preversion": "npm run lint && npm run dist && test -e dist/src/y-websocket.d.ts && test -e dist/y-websocket.cjs"
|
||||||
},
|
},
|
||||||
"bin": {
|
"bin": {
|
||||||
"y-websocket-server": "./bin/server.js",
|
"y-websocket-server": "./bin/server.cjs",
|
||||||
"y-websocket": "./bin/server.js"
|
"y-websocket": "./bin/server.cjs"
|
||||||
},
|
},
|
||||||
"files": [
|
"files": [
|
||||||
"dist/*",
|
"dist/*",
|
||||||
@ -28,13 +29,14 @@
|
|||||||
],
|
],
|
||||||
"exports": {
|
"exports": {
|
||||||
"./package.json": "./package.json",
|
"./package.json": "./package.json",
|
||||||
"./bin/utils": "./bin/utils.js",
|
"./bin/utils": "./bin/utils.cjs",
|
||||||
"./bin/callback": "./bin/callback.js",
|
"./bin/callback": "./bin/callback.cjs",
|
||||||
".": {
|
".": {
|
||||||
"module": "./src/y-websocket.js",
|
"module": "./src/y-websocket.js",
|
||||||
"import": "./src/y-websocket.js",
|
"import": "./src/y-websocket.js",
|
||||||
"require": "./dist/y-websocket.cjs",
|
"require": "./dist/y-websocket.cjs",
|
||||||
"types": "./dist/src/y-websocket.d.ts"
|
"types": "./dist/src/y-websocket.d.ts",
|
||||||
|
"default": "./dist/y-websocket.js"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"repository": {
|
"repository": {
|
||||||
|
|||||||
@ -58,5 +58,5 @@
|
|||||||
// "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */
|
// "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */
|
||||||
// "maxNodeModuleJsDepth": 5
|
// "maxNodeModuleJsDepth": 5
|
||||||
},
|
},
|
||||||
"include": ["./src/y-websocket.js"]
|
"include": ["./src/y-websocket.js", "./bin/**/*"]
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user