From 2111ff857796defbfe05b1fd1a2080d4ce010193 Mon Sep 17 00:00:00 2001 From: Le Vivilet Date: Mon, 5 May 2025 23:53:36 +0200 Subject: [PATCH] feature: use native promise.withResolvers function --- package-lock.json | 2 ++ package.json | 5 ++++- src/index.js | 27 ++------------------------- test/WebSocketServer.test.js | 2 +- tsconfig.json | 23 +++++++++++++++++++++++ 5 files changed, 32 insertions(+), 27 deletions(-) create mode 100644 tsconfig.json diff --git a/package-lock.json b/package-lock.json index 6e3d5dc..c22e963 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,7 +12,9 @@ "ws": "^8.18.2" }, "devDependencies": { + "@jest/globals": "^29.7.0", "@types/jest": "^29.5.14", + "@types/node": "^22.15.8", "@types/ws": "^8.18.1", "execa": "^9.5.2", "jest": "^29.7.0", diff --git a/package.json b/package.json index 32d0c3c..07031d5 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,8 @@ "scripts": { "build": "oode scripts/build.js", "test": "node --unhandled-rejections=warn --experimental-vm-modules ./node_modules/jest/bin/jest.js --detectOpenHandles --forceExit", - "test:watch": "node --unhandled-rejections=warn --experimental-vm-modules ./node_modules/jest/bin/jest.js --watch" + "test:watch": "node --unhandled-rejections=warn --experimental-vm-modules ./node_modules/jest/bin/jest.js --watch", + "type-check": "tsc -b" }, "keywords": [ "lvce-editor", @@ -19,7 +20,9 @@ "ws": "^8.18.2" }, "devDependencies": { + "@jest/globals": "^29.7.0", "@types/jest": "^29.5.14", + "@types/node": "^22.15.8", "@types/ws": "^8.18.1", "execa": "^9.5.2", "jest": "^29.7.0", diff --git a/src/index.js b/src/index.js index 86a9562..c53501e 100644 --- a/src/index.js +++ b/src/index.js @@ -14,31 +14,8 @@ const webSocketServer = new WebSocketServer({ // perMessageDeflate: true }) -const withResolvers = () => { - /** - * @type {any} - */ - let _resolve - /** - * @type {any} - */ - let _reject - const promise = new Promise((resolve, reject) => { - _resolve = resolve - _reject = reject - }) - return { - resolve: _resolve, - reject: _reject, - promise, - } -} - export const handleUpgrade = (request, socket) => { - const { promise, resolve } = withResolvers() - const upgradeCallback = (ws) => { - resolve(ws) - } - webSocketServer.handleUpgrade(request, socket, Buffer.alloc(0), upgradeCallback) + const { promise, resolve } = Promise.withResolvers() + webSocketServer.handleUpgrade(request, socket, Buffer.alloc(0), resolve) return promise } diff --git a/test/WebSocketServer.test.js b/test/WebSocketServer.test.js index dd994da..a7e69a6 100644 --- a/test/WebSocketServer.test.js +++ b/test/WebSocketServer.test.js @@ -1,4 +1,4 @@ -import { jest } from '@jest/globals' +import { expect, jest, test } from '@jest/globals' jest.unstable_mockModule('ws', () => { return { diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..884be39 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,23 @@ +{ + "compilerOptions": { + "lib": ["esnext"], + "target": "esnext", + "checkJs": true, + "module": "NodeNext", + "types": ["node"], + "moduleResolution": "nodenext", + "isolatedModules": true, + "noImplicitAny": false, + "skipLibCheck": true, + "rootDir": ".", + "noEmit": true, + "allowSyntheticDefaultImports": true, + "assumeChangesOnlyAffectDirectDependencies": true, + "strict": true, + "useUnknownInCatchVariables": false, + "allowImportingTsExtensions": true, + "forceConsistentCasingInFileNames": true, + "noUnusedLocals": true + }, + "include": ["src", "test"] +}