Upgrade typescript
Client: nodejs
Patch: Cameron Martin
Typescript was on a really old version, and upgrading this is necessary for future changes. Upgrading this required upgrading `@types/node` and `commander`, since the old versions of these are not compatible with the newer version of typescript.
This closes #3084
diff --git a/LANGUAGES.md b/LANGUAGES.md
index 05e2947..eca3dfb 100644
--- a/LANGUAGES.md
+++ b/LANGUAGES.md
@@ -252,7 +252,7 @@
<td align=left><a href="https://github.com/apache/thrift/blob/master/lib/nodets/README.md">node.ts</a></td>
<!-- Since -----------------><td>0.12.0</td>
<!-- Build Systems ---------><td><img src="/doc/images/cgrn.png" alt="Yes"/></td><td><img src="/doc/images/cred.png" alt=""/></td>
-<!-- Language Levels -------><td>3.1.6</td><td></td>
+<!-- Language Levels -------><td>5.7.2</td><td></td>
<!-- Field types -----------><td><img src="/doc/images/cred.png" alt=""/></td>
<!-- Low-Level Transports --><td><img src="/doc/images/cred.png" alt=""/></td><td><img src="/doc/images/cred.png" alt=""/></td><td><img src="/doc/images/cred.png" alt=""/></td><td><img src="/doc/images/cred.png" alt=""/></td><td><img src="/doc/images/cgrn.png" alt="Yes"/></td><td><img src="/doc/images/cgrn.png" alt="Yes"/></td>
<!-- Transport Wrappers ----><td><img src="/doc/images/cred.png" alt=""/></td><td><img src="/doc/images/cred.png" alt=""/></td><td><img src="/doc/images/cred.png" alt=""/></td><td><img src="/doc/images/cred.png" alt=""/></td>
diff --git a/lib/nodejs/test/client.js b/lib/nodejs/test/client.js
index 1d137ff..617039b 100644
--- a/lib/nodejs/test/client.js
+++ b/lib/nodejs/test/client.js
@@ -29,7 +29,7 @@
require("./test_driver").ThriftTestDriverPromise;
const SecondService = require(`./${helpers.genPath}/SecondService`);
-const program = require("commander");
+const { program } = require("commander");
program
.option(
@@ -49,7 +49,7 @@
.option("--ssl", "use SSL transport")
.option("--callback", "test with callback style functions")
.option(
- "-t, --type <type>",
+ "--type <type>",
"Select server type (http|multiplex|tcp|websocket)",
"tcp",
)
@@ -57,26 +57,27 @@
.option("--es5", "Use es5 code")
.parse(process.argv);
-const host = program.host;
-const port = program.port;
-const domainSocket = program.domainSocket;
-const ssl = program.ssl;
-let type = program.type;
+const opts = program.opts();
+const host = opts.host;
+const port = opts.port;
+const domainSocket = opts.domainSocket;
+const ssl = opts.ssl;
+let type = opts.type;
/* for compatibility with cross test invocation for http transport testing */
-if (program.transport === "http") {
- program.transport = "buffered";
+if (opts.transport === "http") {
+ opts.transport = "buffered";
type = "http";
}
-if (program.transport === "websocket") {
- program.transport = "buffered";
+if (opts.transport === "websocket") {
+ opts.transport = "buffered";
type = "websocket";
}
const options = {
- transport: helpers.transports[program.transport],
- protocol: helpers.protocols[program.protocol],
+ transport: helpers.transports[opts.transport],
+ protocol: helpers.protocols[opts.protocol],
};
if (type === "http" || type === "websocket") {
@@ -101,10 +102,8 @@
let connection;
let client;
-const testDriver = program.callback
- ? ThriftTestDriver
- : ThriftTestDriverPromise;
-if (helpers.ecmaMode === "es6" && program.callback) {
+const testDriver = opts.callback ? ThriftTestDriver : ThriftTestDriverPromise;
+if (helpers.ecmaMode === "es6" && opts.callback) {
console.log("ES6 does not support callback style");
process.exit(0);
}
diff --git a/lib/nodejs/test/episodic-code-generation-test/client.js b/lib/nodejs/test/episodic-code-generation-test/client.js
index 631bfe7..cf014c2 100644
--- a/lib/nodejs/test/episodic-code-generation-test/client.js
+++ b/lib/nodejs/test/episodic-code-generation-test/client.js
@@ -22,7 +22,7 @@
const assert = require("assert");
const test = require("tape");
const thrift = require("thrift");
-const program = require("commander");
+const { program } = require("commander");
program
.option("--host <host>", "Set the thrift server host to connect", "localhost")
@@ -32,8 +32,9 @@
const Service = require("./gen-2/second-episode/gen-nodejs/Service");
const Types = require("types-package/first-episode/Types_types");
-const host = program.host;
-const port = program.port;
+const opts = program.opts();
+const host = opts.host;
+const port = opts.port;
const options = {
transport: thrift.TBufferedTransport,
diff --git a/lib/nodejs/test/episodic-code-generation-test/server.js b/lib/nodejs/test/episodic-code-generation-test/server.js
index feca380..2b9a96d 100644
--- a/lib/nodejs/test/episodic-code-generation-test/server.js
+++ b/lib/nodejs/test/episodic-code-generation-test/server.js
@@ -20,7 +20,7 @@
*/
const thrift = require("../../lib/thrift");
-const program = require("commander");
+const { program } = require("commander");
program
.option("--port <port>", "Set the thrift server port", 9090)
@@ -29,7 +29,8 @@
const Service = require("./gen-2/second-episode/gen-nodejs/Service");
const Types = require("types-package/first-episode/Types_types");
-const port = program.port;
+const opts = program.opts();
+const port = opts.port;
const options = {
transport: thrift.TBufferedTransport,
diff --git a/lib/nodejs/test/server.js b/lib/nodejs/test/server.js
index c8e7808..b56bea7 100644
--- a/lib/nodejs/test/server.js
+++ b/lib/nodejs/test/server.js
@@ -22,7 +22,7 @@
const fs = require("fs");
const path = require("path");
const thrift = require("../lib/thrift");
-const program = require("commander");
+const { program } = require("commander");
const helpers = require("./helpers");
program
@@ -40,7 +40,7 @@
.option("--port <port>", "Set thrift server port", 9090)
.option("--domain-socket <path>", "Set thift server unix domain socket")
.option(
- "-t, --type <type>",
+ "--type <type>",
"Select server type (http|multiplex|tcp|websocket)",
"tcp",
)
@@ -53,22 +53,23 @@
const SecondService = require(`./${helpers.genPath}/SecondService`);
const { ThriftTestHandler } = require("./test_handler");
-const port = program.port;
-const domainSocket = program.domainSocket;
-const ssl = program.ssl;
+const opts = program.opts();
+const port = opts.port;
+const domainSocket = opts.domainSocket;
+const ssl = opts.ssl;
-let type = program.type;
-if (program.transport === "http") {
- program.transport = "buffered";
+let type = opts.type;
+if (opts.transport === "http") {
+ opts.transport = "buffered";
type = "http";
-} else if (program.transport === "websocket") {
- program.transport = "buffered";
+} else if (opts.transport === "websocket") {
+ opts.transport = "buffered";
type = "websocket";
}
let options = {
- transport: helpers.transports[program.transport],
- protocol: helpers.protocols[program.protocol],
+ transport: helpers.transports[opts.transport],
+ protocol: helpers.protocols[opts.protocol],
};
if (type === "http" || type === "websocket") {
diff --git a/lib/nodets/test/client.ts b/lib/nodets/test/client.ts
index a95567f..c2666bc 100644
--- a/lib/nodets/test/client.ts
+++ b/lib/nodets/test/client.ts
@@ -25,17 +25,18 @@
import ThriftTestDriver = test_driver.ThriftTestDriver;
import ThriftTestDriverPromise = test_driver.ThriftTestDriverPromise;
-// var program = require("commander");
-import * as program from "commander";
+import { program } from "commander";
program
- .option("--port <port>", "Set thrift server port number to connect", 9090)
+ .option("--port <port>", "Set thrift server port number to connect", Number.parseInt, 9090)
.option("--promise", "test with promise style functions")
.option("--protocol", "Set thrift protocol (binary) [protocol]")
.parse(process.argv);
-var port: number = program.port;
-var promise = program.promise;
+
+var opts = program.opts();
+var port: number = opts.port;
+var promise = opts.promise;
var options = {
transport: Thrift.TBufferedTransport,
diff --git a/lib/nodets/test/server.ts b/lib/nodets/test/server.ts
index 79457ce..5911384 100644
--- a/lib/nodets/test/server.ts
+++ b/lib/nodets/test/server.ts
@@ -1,15 +1,17 @@
import thrift = require("thrift");
-var program = require("commander");
-import ThriftTest = require("./gen-nodejs/ThriftTest");
-import test_handler = require("./test_handler");
+import { program } from 'commander';
+import ThriftTest = require('./gen-nodejs/ThriftTest');
+import test_handler = require('./test_handler');
+
program
- .option("--port <port>", "Set thrift server port", 9090)
- .option("--promise", "test with promise style functions")
- .option("--protocol", '"Set thrift protocol (binary) [protocol]"')
+ .option('--port <port>', 'Set thrift server port', Number.parseInt, 9090)
+ .option('--promise', 'test with promise style functions')
+ .option('--protocol', '"Set thrift protocol (binary) [protocol]"')
.parse(process.argv);
-var port: number = program.port;
+var opts = program.opts();
+var port: number = opts.port;
var options: thrift.ServerOptions = {
transport: thrift.TBufferedTransport,
@@ -17,12 +19,8 @@
};
var server: thrift.Server;
-if (program.promise) {
- server = thrift.createServer(
- ThriftTest.Processor,
- new test_handler.AsyncThriftTestHandler(),
- options,
- );
+if (opts.promise) {
+ server = thrift.createServer(ThriftTest.Processor, new test_handler.AsyncThriftTestHandler(), options);
} else {
server = thrift.createServer(
ThriftTest.Processor,
diff --git a/lib/ts/package-lock.json b/lib/ts/package-lock.json
index 244d91d..9740000 100644
--- a/lib/ts/package-lock.json
+++ b/lib/ts/package-lock.json
@@ -31,7 +31,7 @@
"jslint": "^0.12.0",
"node-int64": "^0.4.0",
"phantom": "^6.0.3",
- "typescript": "^3.2.4"
+ "typescript": "^5.7.2"
}
},
"node_modules/@babel/parser": {
@@ -85,10 +85,13 @@
"integrity": "sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA=="
},
"node_modules/@types/node": {
- "version": "10.12.18",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-10.12.18.tgz",
- "integrity": "sha512-fh+pAqt4xRzPfqA6eh3Z2y6fyZavRIumvjhaCL753+TVkGKGhpPeyrJG2JftD0T9q4GF00KjefsQ+PQNDdWQaQ==",
- "dev": true
+ "version": "22.10.5",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.5.tgz",
+ "integrity": "sha512-F8Q+SeGimwOo86fiovQh8qiXfFEh2/ocYv7tU5pJ3EXMSSxk1Joj5wefpFK2fHTf/N6HKGSxIDBT9f3gCxXPkQ==",
+ "dev": true,
+ "dependencies": {
+ "undici-types": "~6.20.0"
+ }
},
"node_modules/@types/node-int64": {
"version": "0.4.29",
@@ -4631,16 +4634,16 @@
"dev": true
},
"node_modules/typescript": {
- "version": "3.2.4",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.2.4.tgz",
- "integrity": "sha512-0RNDbSdEokBeEAkgNbxJ+BLwSManFy9TeXz8uW+48j/xhEXv1ePME60olyzw2XzUqUBNAYFeJadIqAgNqIACwg==",
+ "version": "5.7.3",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz",
+ "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==",
"dev": true,
"bin": {
"tsc": "bin/tsc",
"tsserver": "bin/tsserver"
},
"engines": {
- "node": ">=4.2.0"
+ "node": ">=14.17"
}
},
"node_modules/uc.micro": {
@@ -4729,6 +4732,12 @@
"node": "*"
}
},
+ "node_modules/undici-types": {
+ "version": "6.20.0",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz",
+ "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==",
+ "dev": true
+ },
"node_modules/uri-js": {
"version": "4.2.2",
"resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
diff --git a/lib/ts/package.json b/lib/ts/package.json
index 13aefaa..17988c6 100644
--- a/lib/ts/package.json
+++ b/lib/ts/package.json
@@ -27,7 +27,7 @@
"jslint": "^0.12.0",
"node-int64": "^0.4.0",
"phantom": "^6.0.3",
- "typescript": "^3.2.4"
+ "typescript": "^5.7.2"
},
"dependencies": {
"bufferutil": "^4.0.1",
diff --git a/package-lock.json b/package-lock.json
index 9b7db5c..701dd07 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -17,11 +17,11 @@
},
"devDependencies": {
"@eslint/js": "^9.18.0",
- "@types/node": "^10.12.6",
+ "@types/node": "^22.10.5",
"@types/node-int64": "^0.4.29",
"@types/q": "^1.5.1",
"buffer-equals": "^1.0.4",
- "commander": "^2.14.1",
+ "commander": "^13.0.0",
"connect": "^3.6.6",
"eslint": "^9.18.0",
"eslint-config-prettier": "^10.0.1",
@@ -33,7 +33,7 @@
"nyc": "^15.0.0",
"prettier": "^3.4.2",
"tape": "^4.9.0",
- "typescript": "^3.1.6",
+ "typescript": "^5.7.2",
"utf-8-validate": "^5.0.0"
},
"engines": {
@@ -718,15 +718,18 @@
"dev": true
},
"node_modules/@types/node": {
- "version": "10.12.6",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-10.12.6.tgz",
- "integrity": "sha512-+ZWB5Ec1iki99xQFzBlivlKxSZQ+fuUKBott8StBOnLN4dWbRHlgdg1XknpW6g0tweniN5DcOqA64CJyOUPSAw==",
- "dev": true
+ "version": "22.10.5",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.5.tgz",
+ "integrity": "sha512-F8Q+SeGimwOo86fiovQh8qiXfFEh2/ocYv7tU5pJ3EXMSSxk1Joj5wefpFK2fHTf/N6HKGSxIDBT9f3gCxXPkQ==",
+ "dev": true,
+ "dependencies": {
+ "undici-types": "~6.20.0"
+ }
},
"node_modules/@types/node-int64": {
- "version": "0.4.29",
- "resolved": "https://registry.npmjs.org/@types/node-int64/-/node-int64-0.4.29.tgz",
- "integrity": "sha512-rHXvenLTj/CcsmNAebaBOhxQ2MqEGl3yXZZcZ21XYR+gzGTTcpOy2N4IxpvTCz48loyQNatHvfn6GhIbbZ1R3Q==",
+ "version": "0.4.32",
+ "resolved": "https://registry.npmjs.org/@types/node-int64/-/node-int64-0.4.32.tgz",
+ "integrity": "sha512-xf/JsSlnXQ+mzvc0IpXemcrO4BrCfpgNpMco+GLcXkFk01k/gW9lGJu+Vof0ZSvHK6DsHJDPSbjFPs36QkWXqw==",
"dev": true,
"dependencies": {
"@types/node": "*"
@@ -1073,10 +1076,13 @@
}
},
"node_modules/commander": {
- "version": "2.19.0",
- "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz",
- "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==",
- "dev": true
+ "version": "13.0.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-13.0.0.tgz",
+ "integrity": "sha512-oPYleIY8wmTVzkvQq10AEok6YcTC4sRUBl8F9gVuwchGVUCTbl/vhLTaQqutuuySYOsu8YTgV+OxKc/8Yvx+mQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=18"
+ }
},
"node_modules/commondir": {
"version": "1.0.1",
@@ -3568,16 +3574,16 @@
}
},
"node_modules/typescript": {
- "version": "3.1.6",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.1.6.tgz",
- "integrity": "sha512-tDMYfVtvpb96msS1lDX9MEdHrW4yOuZ4Kdc4Him9oU796XldPYF/t2+uKoX0BBa0hXXwDlqYQbXY5Rzjzc5hBA==",
+ "version": "5.7.2",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz",
+ "integrity": "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==",
"dev": true,
"bin": {
"tsc": "bin/tsc",
"tsserver": "bin/tsserver"
},
"engines": {
- "node": ">=4.2.0"
+ "node": ">=14.17"
}
},
"node_modules/uc.micro": {
@@ -3592,6 +3598,12 @@
"integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==",
"dev": true
},
+ "node_modules/undici-types": {
+ "version": "6.20.0",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz",
+ "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==",
+ "dev": true
+ },
"node_modules/unpipe": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
diff --git a/package.json b/package.json
index 6ed792d..c86c155 100644
--- a/package.json
+++ b/package.json
@@ -44,11 +44,11 @@
},
"devDependencies": {
"@eslint/js": "^9.18.0",
- "@types/node": "^10.12.6",
+ "@types/node": "^22.10.5",
"@types/node-int64": "^0.4.29",
"@types/q": "^1.5.1",
"buffer-equals": "^1.0.4",
- "commander": "^2.14.1",
+ "commander": "^13.0.0",
"connect": "^3.6.6",
"eslint": "^9.18.0",
"eslint-config-prettier": "^10.0.1",
@@ -60,7 +60,7 @@
"nyc": "^15.0.0",
"prettier": "^3.4.2",
"tape": "^4.9.0",
- "typescript": "^3.1.6",
+ "typescript": "^5.7.2",
"utf-8-validate": "^5.0.0"
},
"scripts": {