Skip to content

Commit c3d14cf

Browse files
committedMar 20, 2024
make this a proper esm module
1 parent 89fb1e3 commit c3d14cf

File tree

6 files changed

+55
-37
lines changed

6 files changed

+55
-37
lines changed
 

‎bin/callback.js ‎bin/callback.cjs

+5-4
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,16 @@
11
const http = require('http')
2+
const number = require('lib0/number')
23

34
const CALLBACK_URL = process.env.CALLBACK_URL ? new URL(process.env.CALLBACK_URL) : null
4-
const CALLBACK_TIMEOUT = process.env.CALLBACK_TIMEOUT || 5000
5+
const CALLBACK_TIMEOUT = number.parseInt(process.env.CALLBACK_TIMEOUT || '5000')
56
const CALLBACK_OBJECTS = process.env.CALLBACK_OBJECTS ? JSON.parse(process.env.CALLBACK_OBJECTS) : {}
67

78
exports.isCallbackSet = !!CALLBACK_URL
89

910
/**
1011
* @param {Uint8Array} update
1112
* @param {any} origin
12-
* @param {WSSharedDoc} doc
13+
* @param {import('./utils.cjs').WSSharedDoc} doc
1314
*/
1415
exports.callbackHandler = (update, origin, doc) => {
1516
const room = doc.name
@@ -25,7 +26,7 @@ exports.callbackHandler = (update, origin, doc) => {
2526
content: getContent(sharedObjectName, sharedObjectType, doc).toJSON()
2627
}
2728
})
28-
callbackRequest(CALLBACK_URL, CALLBACK_TIMEOUT, dataToSend)
29+
CALLBACK_URL && callbackRequest(CALLBACK_URL, CALLBACK_TIMEOUT, dataToSend)
2930
}
3031

3132
/**
@@ -62,7 +63,7 @@ const callbackRequest = (url, timeout, data) => {
6263
/**
6364
* @param {string} objName
6465
* @param {string} objType
65-
* @param {WSSharedDoc} doc
66+
* @param {import('./utils.cjs').WSSharedDoc} doc
6667
*/
6768
const getContent = (objName, objType, doc) => {
6869
switch (objType) {

‎bin/server.js ‎bin/server.cjs

+4-3
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,14 @@
55
*/
66
const WebSocket = require('ws')
77
const http = require('http')
8+
const number = require('lib0/number')
89
const wss = new WebSocket.Server({ noServer: true })
9-
const setupWSConnection = require('./utils.js').setupWSConnection
10+
const setupWSConnection = require('./utils.cjs').setupWSConnection
1011

1112
const host = process.env.HOST || 'localhost'
12-
const port = process.env.PORT || 1234
13+
const port = number.parseInt(process.env.PORT || '1234')
1314

14-
const server = http.createServer((request, response) => {
15+
const server = http.createServer((_request, response) => {
1516
response.writeHead(200, { 'Content-Type': 'text/plain' })
1617
response.end('okay')
1718
})

‎bin/utils.js ‎bin/utils.cjs

+16-12
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
11
const Y = require('yjs')
2-
const syncProtocol = require('y-protocols/dist/sync.cjs')
3-
const awarenessProtocol = require('y-protocols/dist/awareness.cjs')
2+
const syncProtocol = require('y-protocols/sync')
3+
const awarenessProtocol = require('y-protocols/awareness')
44

5-
const encoding = require('lib0/dist/encoding.cjs')
6-
const decoding = require('lib0/dist/decoding.cjs')
7-
const map = require('lib0/dist/map.cjs')
5+
const encoding = require('lib0/encoding')
6+
const decoding = require('lib0/decoding')
7+
const map = require('lib0/map')
88

99
const debounce = require('lodash.debounce')
1010

11-
const callbackHandler = require('./callback.js').callbackHandler
12-
const isCallbackSet = require('./callback.js').isCallbackSet
11+
const callbackHandler = require('./callback.cjs').callbackHandler
12+
const isCallbackSet = require('./callback.cjs').isCallbackSet
1313

14-
const CALLBACK_DEBOUNCE_WAIT = parseInt(process.env.CALLBACK_DEBOUNCE_WAIT) || 2000
15-
const CALLBACK_DEBOUNCE_MAXWAIT = parseInt(process.env.CALLBACK_DEBOUNCE_MAXWAIT) || 10000
14+
const CALLBACK_DEBOUNCE_WAIT = parseInt(process.env.CALLBACK_DEBOUNCE_WAIT || '2000')
15+
const CALLBACK_DEBOUNCE_MAXWAIT = parseInt(process.env.CALLBACK_DEBOUNCE_MAXWAIT || '10000')
1616

1717
const wsReadyStateConnecting = 0
1818
const wsReadyStateOpen = 1
@@ -73,10 +73,11 @@ const messageAwareness = 1
7373

7474
/**
7575
* @param {Uint8Array} update
76-
* @param {any} origin
76+
* @param {any} _origin
7777
* @param {WSSharedDoc} doc
78+
* @param {any} _tr
7879
*/
79-
const updateHandler = (update, origin, doc) => {
80+
const updateHandler = (update, _origin, doc, _tr) => {
8081
const encoder = encoding.createEncoder()
8182
encoding.writeVarUint(encoder, messageSync)
8283
syncProtocol.writeUpdate(encoder, update)
@@ -124,7 +125,7 @@ class WSSharedDoc extends Y.Doc {
124125
})
125126
}
126127
this.awareness.on('update', awarenessChangeHandler)
127-
this.on('update', updateHandler)
128+
this.on('update', /** @type {any} */ (updateHandler))
128129
if (isCallbackSet) {
129130
this.on('update', debounce(
130131
callbackHandler,
@@ -135,6 +136,8 @@ class WSSharedDoc extends Y.Doc {
135136
}
136137
}
137138

139+
exports.WSSharedDoc = WSSharedDoc
140+
138141
/**
139142
* Gets a Y.Doc by name, whether in memory or on disk
140143
*
@@ -183,6 +186,7 @@ const messageListener = (conn, doc, message) => {
183186
}
184187
} catch (err) {
185188
console.error(err)
189+
// @ts-ignore
186190
doc.emit('error', [err])
187191
}
188192
}

‎package-lock.json

+21-11
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎package.json

+8-6
Original file line numberDiff line numberDiff line change
@@ -5,21 +5,22 @@
55
"main": "./dist/y-websocket.cjs",
66
"module": "./src/y-websocket.js",
77
"types": "./dist/src/y-websocket.d.ts",
8+
"type": "module",
89
"sideEffects": false,
910
"funding": {
1011
"type": "GitHub Sponsors ❤",
1112
"url": "https://github.com/sponsors/dmonad"
1213
},
1314
"scripts": {
14-
"start": "node ./bin/server.js",
15+
"start": "node ./bin/server.cjs",
1516
"dist": "rm -rf dist && rollup -c && tsc",
1617
"lint": "standard && tsc",
1718
"test": "npm run lint",
1819
"preversion": "npm run lint && npm run dist && test -e dist/src/y-websocket.d.ts && test -e dist/y-websocket.cjs"
1920
},
2021
"bin": {
21-
"y-websocket-server": "./bin/server.js",
22-
"y-websocket": "./bin/server.js"
22+
"y-websocket-server": "./bin/server.cjs",
23+
"y-websocket": "./bin/server.cjs"
2324
},
2425
"files": [
2526
"dist/*",
@@ -28,13 +29,14 @@
2829
],
2930
"exports": {
3031
"./package.json": "./package.json",
31-
"./bin/utils": "./bin/utils.js",
32-
"./bin/callback": "./bin/callback.js",
32+
"./bin/utils": "./bin/utils.cjs",
33+
"./bin/callback": "./bin/callback.cjs",
3334
".": {
3435
"module": "./src/y-websocket.js",
3536
"import": "./src/y-websocket.js",
3637
"require": "./dist/y-websocket.cjs",
37-
"types": "./dist/src/y-websocket.d.ts"
38+
"types": "./dist/src/y-websocket.d.ts",
39+
"default": "./dist/y-websocket.js"
3840
}
3941
},
4042
"repository": {

‎tsconfig.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -58,5 +58,5 @@
5858
// "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */
5959
// "maxNodeModuleJsDepth": 5
6060
},
61-
"include": ["./src/y-websocket.js"]
61+
"include": ["./src/y-websocket.js", "./bin/**/*"]
6262
}

0 commit comments

Comments
 (0)
Please sign in to comment.