diff --git a/examples/server.ts b/examples/server.ts index 14e11de..6b84194 100644 --- a/examples/server.ts +++ b/examples/server.ts @@ -6,19 +6,19 @@ // tslint:disable:no-console import * as http from 'http' -import { +import type { AddressInfo, } from 'net' import { IoServer, log, -} from '../src/mod' +} from '../src/mod.js' async function main (): Promise { const httpServer = http.createServer() - const port = process.env.PORT || 8080 // process.env.PORT is set by Heroku/Cloud9 + const port = process.env['PORT'] || 8080 // process.env.PORT is set by Heroku/Cloud9 httpServer.listen(port, () => { const address = httpServer.address() as AddressInfo diff --git a/package.json b/package.json index 39e9c80..6a3d392 100644 --- a/package.json +++ b/package.json @@ -9,24 +9,22 @@ "test": "tests" }, "dependencies": { - "brolog": "^1.8.3", - "is-port-reachable": "3.1", + "brolog": "^1.14.2", + "is-port-reachable": "^3.1", "json-rpc-peer": "^0.17.0", - "moment": "^2.24.0", + "moment": "^2.29.1", "p-timeout": "^4.0.0", "request-ip": "^2.1.3", - "ws": "^7.2.3" + "ws": "^8.4.2" }, "devDependencies": { - "@chatie/eslint-config": "^0.12.1", + "@chatie/eslint-config": "^1.0.4", "@chatie/git-scripts": "^0.6.2", "@chatie/semver": "^0.4.7", - "@chatie/tsconfig": "^0.14.1", - "@types/request-ip": "0.0.35", - "@types/ws": "^7.2.2", - "pkg-jq": "^0.2.4", - "shx": "^0.3.2", - "tstest": "^0.4.10" + "@chatie/tsconfig": "^4.6.2", + "@types/request-ip": "0.0.37", + "@types/ws": "^8.2.2", + "tstest": "^1.0.1" }, "scripts": { "clean": "shx rm -fr dist/*", @@ -39,7 +37,7 @@ "lint:ts": "tsc --noEmit", "test": "npm run lint && npm run test:unit", "test:pack": "bash -x scripts/npm-pack-testing.sh", - "test:unit": "blue-tape -r ts-node/register \"src/**/*.spec.ts\" \"src/*.spec.ts\" \"tests/*.spec.ts\" \"tests/**/*.spec.ts\"" + "test:unit": "tap -r ts-node/register \"src/**/*.spec.ts\" \"src/*.spec.ts\" \"tests/*.spec.ts\" \"tests/**/*.spec.ts\"" }, "repository": { "type": "git", diff --git a/src/config.ts b/src/config.ts index a9310d5..bd4a709 100644 --- a/src/config.ts +++ b/src/config.ts @@ -7,4 +7,4 @@ export { /** * VERSION */ -export { VERSION } from './version' +export { VERSION } from './version.js' diff --git a/src/io-peer/json-rpc-peer.d.ts b/src/io-peer/json-rpc-peer.d.ts index 18f9205..19d0971 100644 --- a/src/io-peer/json-rpc-peer.d.ts +++ b/src/io-peer/json-rpc-peer.d.ts @@ -11,7 +11,7 @@ declare module 'json-rpc-peer' { export * from 'json-rpc-protocol' declare module 'json-rpc-peer' { - export class Peer extends EventEmitter implements NodeJS.WritableStream { + export class Peer extends EventEmitter implements NodeJS.ReadableStream { constructor(onmessage?: (message: JsonRpcPayload, data: any) => Promise) diff --git a/src/mod.ts b/src/mod.ts index 7352ad3..ee88020 100644 --- a/src/mod.ts +++ b/src/mod.ts @@ -1,11 +1,11 @@ export { VERSION, log, -} from './config' +} from './config.js' export { IoServer, -} from './server/io-server' +} from './server/io-server.js' // export { // IoClient, diff --git a/src/server/io-auth.ts b/src/server/io-auth.ts index ccfff6a..fbcb244 100644 --- a/src/server/io-auth.ts +++ b/src/server/io-auth.ts @@ -7,9 +7,9 @@ * https://github.com/chatie/io * */ -import http from 'http' +import type http from 'http' -import { log } from '../config' +import { log } from '../config.js' export class IoAuth { @@ -53,7 +53,7 @@ export class IoAuth { */ const matches = url.match(/token\/(.+)$/i) if (matches) { - return matches[1] + return matches[1] || null } return null @@ -71,7 +71,7 @@ export class IoAuth { return null } - const scheme = parts[0] + const scheme = parts[0]! const headerToken = parts[1] if (!/Token/i.test(scheme) || !headerToken) { diff --git a/src/server/io-manager.ts b/src/server/io-manager.ts index 598e42a..03bd579 100644 --- a/src/server/io-manager.ts +++ b/src/server/io-manager.ts @@ -14,12 +14,12 @@ import isPortReachable from 'is-port-reachable' // import { Listag } from 'listag' import pTimeout from 'p-timeout' -import { log } from '../config' +import { log } from '../config.js' import { IoSocket, SocketMetadata, -} from './io-socket' +} from './io-socket.js' export type ServerEventName = 'sys' @@ -78,7 +78,7 @@ export class IoManager { , metadata.token , metadata.protocol , metadata.version - , metadata.id + , metadata.id, ) log.info('IoManager', '◉ register() token online: %s', metadata.token) @@ -347,7 +347,7 @@ export class IoManager { } // console.info('metadata', metadata) - const { host, jsonRpc } = metaList[0] + const { host, jsonRpc } = metaList[0]! let port = 8788 try { diff --git a/src/server/io-server.spec.ts b/src/server/io-server.spec.ts index 6268f1a..9a077ad 100755 --- a/src/server/io-server.spec.ts +++ b/src/server/io-server.spec.ts @@ -1,13 +1,13 @@ #!/usr/bin/env ts-node -import test from 'blue-tape' +import { test } from 'tstest' // import sinon from 'sinon' import http from 'http' import { IoServer, -} from './io-server' +} from './io-server.js' test('IoServer smoking test', async t => { const httpServer = http.createServer() diff --git a/src/server/io-server.ts b/src/server/io-server.ts index a354c4e..9b4534c 100644 --- a/src/server/io-server.ts +++ b/src/server/io-server.ts @@ -17,27 +17,22 @@ * */ -// tslint:disable:arrow-parens -// tslint:disable:max-line-length -// tslint:disable:member-ordering -// tslint:disable:unified-signatures - -import http from 'http' +import type http from 'http' import { log, VERSION, -} from '../config' +} from '../config.js' import { IoAuth, -} from './io-auth' +} from './io-auth.js' import { IoManager, -} from './io-manager' +} from './io-manager.js' import { IoSocket, -} from './io-socket' +} from './io-socket.js' export interface IoServerOptions { httpServer : http.Server, diff --git a/src/server/io-socket.ts b/src/server/io-socket.ts index a0d51d3..ecfef0a 100644 --- a/src/server/io-socket.ts +++ b/src/server/io-socket.ts @@ -7,14 +7,14 @@ * https://github.com/chatie/io * */ -import http from 'http' +import type http from 'http' import WebSocket from 'ws' import { getClientIp } from 'request-ip' import Peer from 'json-rpc-peer' -import { log } from '../config' +import { log } from '../config.js' export type IoProtocol = 'io' | 'web' @@ -53,7 +53,7 @@ export class IoSocket /* implements WebSocketInterface */ { public static metadata ( socket : WebSocket, - newMetadata? : SocketMetadata + newMetadata? : SocketMetadata, ): void | SocketMetadata { const existingMetadata = this.socketMetadataDict.get(socket) @@ -209,7 +209,7 @@ export class IoSocket /* implements WebSocketInterface */ { secure : boolean, req : http.IncomingMessage, }, - done: (res: boolean, code?: number, message?: string) => void + done: (res: boolean, code?: number, message?: string) => void, ): Promise { // log.verbose('IoSocket', 'verifyClient(info: {%s}, done: %s)', // Object.keys(info).join(', '), diff --git a/src/version.spec.ts b/src/version.spec.ts index 3cded46..acd0c22 100755 --- a/src/version.spec.ts +++ b/src/version.spec.ts @@ -1,13 +1,13 @@ #!/usr/bin/env ts-node -import test from 'blue-tape' +import { test } from 'tstest' import { GIT_COMMIT_HASH, VERSION, -} from './version' +} from './version.js' -test('Make sure the VERSION is fresh in source code', async (t) => { +test('Make sure the VERSION is fresh in source code', async t => { t.equal(VERSION, '0.0.0', 'version should be 0.0.0 in source code, only updated before publish to NPM') t.equal(GIT_COMMIT_HASH, '', 'git commit hash should be empty') })