From 8f7fa39e2627a31d87e734f69b64be689ac8afc0 Mon Sep 17 00:00:00 2001 From: David Qing Date: Mon, 16 Feb 2026 16:21:48 -0800 Subject: [PATCH 1/2] Upgrade Typescript --- package-lock.json | 67 ++++++++++++++++--- package.json | 4 +- .../src/test/spec/client.spec.ts | 2 +- tsconfig.base.json | 1 + 4 files changed, 63 insertions(+), 11 deletions(-) diff --git a/package-lock.json b/package-lock.json index da8da61..c97e697 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,7 +10,7 @@ "license": "Apache-2.0", "devDependencies": { "@types/jest": "28.1.7", - "@types/node": "16.11.7", + "@types/node": "22.19.11", "@typescript-eslint/eslint-plugin": "4.11.0", "@typescript-eslint/parser": "4.11.0", "@xarc/module-dev": "4.1.0", @@ -24,7 +24,7 @@ "ts-jest": "^28.0.8", "ts-node": "10.9.1", "ts-node-dev": "2.0.0", - "typescript": "4.7.4" + "typescript": "5.9.3" } }, "node_modules/@ampproject/remapping": { @@ -3039,7 +3039,19 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "16.11.7", + "version": "22.19.11", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.19.11.tgz", + "integrity": "sha512-BH7YwL6rA93ReqeQS1c4bsPpcfOmJasG+Fkr6Y59q83f9M1WcBRHR2vM+P9eOisYRcN3ujQoiZY8uk5W+1WL8w==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~6.21.0" + } + }, + "node_modules/@types/node/node_modules/undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", "dev": true, "license": "MIT" }, @@ -7326,6 +7338,20 @@ "node": "^14.15.0 || >=16.0.0" } }, + "node_modules/lerna/node_modules/typescript": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, "node_modules/leven": { "version": "3.1.0", "dev": true, @@ -10539,7 +10565,9 @@ } }, "node_modules/typescript": { - "version": "4.7.4", + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "dev": true, "license": "Apache-2.0", "bin": { @@ -10547,7 +10575,7 @@ "tsserver": "bin/tsserver" }, "engines": { - "node": ">=4.2.0" + "node": ">=14.17" } }, "node_modules/uglify-js": { @@ -13275,8 +13303,21 @@ "dev": true }, "@types/node": { - "version": "16.11.7", - "dev": true + "version": "22.19.11", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.19.11.tgz", + "integrity": "sha512-BH7YwL6rA93ReqeQS1c4bsPpcfOmJasG+Fkr6Y59q83f9M1WcBRHR2vM+P9eOisYRcN3ujQoiZY8uk5W+1WL8w==", + "dev": true, + "requires": { + "undici-types": "~6.21.0" + }, + "dependencies": { + "undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "dev": true + } + } }, "@types/normalize-package-data": { "version": "2.4.1", @@ -16102,6 +16143,14 @@ "npmlog": "^6.0.2", "nx": ">=14.6.1 < 16", "typescript": "^3 || ^4" + }, + "dependencies": { + "typescript": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "dev": true + } } }, "leven": { @@ -18200,7 +18249,9 @@ } }, "typescript": { - "version": "4.7.4", + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "dev": true }, "uglify-js": { diff --git a/package.json b/package.json index 3a6c841..47b9615 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,7 @@ "private": true, "devDependencies": { "@types/jest": "28.1.7", - "@types/node": "16.11.7", + "@types/node": "22.19.11", "@typescript-eslint/eslint-plugin": "4.11.0", "@typescript-eslint/parser": "4.11.0", "@xarc/module-dev": "4.1.0", @@ -32,6 +32,6 @@ "ts-jest": "^28.0.8", "ts-node": "10.9.1", "ts-node-dev": "2.0.0", - "typescript": "4.7.4" + "typescript": "5.9.3" } } diff --git a/packages/memcache-client/src/test/spec/client.spec.ts b/packages/memcache-client/src/test/spec/client.spec.ts index a554b44..a2ef116 100644 --- a/packages/memcache-client/src/test/spec/client.spec.ts +++ b/packages/memcache-client/src/test/spec/client.spec.ts @@ -227,7 +227,7 @@ describe("memcache client", function () { it("should set value with custom lifetime", () => { const x = new MemcacheClient({ server }); let testOptions: Partial = {}; - x._callbackSend = (data: unknown, key: string, options: Partial | undefined): Promise => { + x._callbackSend = (data: unknown, key: string, options?: Partial): Promise => { testOptions = options || {}; return Promise.resolve(); }; diff --git a/tsconfig.base.json b/tsconfig.base.json index 2f9173a..4dd0be0 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -21,6 +21,7 @@ "plugins": [], "pretty": true, "resolveJsonModule": true, + "skipLibCheck": true, "sourceMap": true, "strictFunctionTypes": true, "strict": true, From 608041ac2d3199fb1912d07c5d698a70bf92de72 Mon Sep 17 00:00:00 2001 From: David Qing Date: Mon, 16 Feb 2026 16:33:48 -0800 Subject: [PATCH 2/2] cast an error away --- packages/memcache-client/src/lib/client.ts | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/packages/memcache-client/src/lib/client.ts b/packages/memcache-client/src/lib/client.ts index 462edac..7750298 100644 --- a/packages/memcache-client/src/lib/client.ts +++ b/packages/memcache-client/src/lib/client.ts @@ -456,13 +456,17 @@ export class MemcacheClient extends EventEmitter { value, (options as Partial)?.compress === true ); - const bytes = Buffer.byteLength(packed.data); + const packedBuf = Buffer.isBuffer(packed.data) + ? packed.data + : Buffer.from(packed.data); + const bytes = packedBuf.byteLength; + // TODO(dqing) fix type error; seems to be due to tsgo socket?.write( Buffer.concat([ Buffer.from(`${cmd} ${key} ${packed.flag} ${lifetime} ${bytes}${casUniq}${noreply}\r\n`), - Buffer.isBuffer(packed.data) ? packed.data : Buffer.from(packed.data), + packedBuf, Buffer.from("\r\n"), - ]) + ] as unknown as Uint8Array[]) as unknown as Uint8Array ); };