From b6db0daf897fd3c419be6a440214f595b4a5a452 Mon Sep 17 00:00:00 2001 From: Jacob Bandes-Storch Date: Thu, 6 Apr 2023 13:00:03 -0700 Subject: [PATCH] Bump typescript to 5.0.3 (#5636) **User-Facing Changes** None **Description** - Bumps typescript to 5.0 - Removes some type hacks now that the builtin lib has better OffscreenCanvas types (see https://github.com/microsoft/TypeScript-DOM-lib-generator/issues/1480) --- package.json | 4 +- .../comlink-transfer-handlers/package.json | 2 +- packages/hooks/package.json | 2 +- packages/log/package.json | 2 +- packages/mcap-support/package.json | 2 +- packages/studio-base/package.json | 2 +- .../src/components/Chart/index.tsx | 4 +- .../src/components/CreateEventDialog.tsx | 2 +- .../Image/components/ImageCanvas.worker.ts | 9 +- .../panels/Image/lib/HitmapRenderContext.ts | 5 +- .../src/panels/Image/lib/renderImage.ts | 13 +- .../nodeTransformerWorker/generateRosLib.ts | 7 - .../studio-base/src/theme/muiComponents.ts | 12 +- packages/studio-base/src/util/Rpc.ts | 4 +- packages/studio-base/webpack.ts | 6 +- packages/studio/package.json | 2 +- packages/typescript-transformers/package.json | 2 +- .../src/createTssReactNameTransformer.ts | 2 +- yarn.lock | 139 +++++------------- 19 files changed, 72 insertions(+), 149 deletions(-) diff --git a/package.json b/package.json index 50a6683811..8ee4d4dca5 100644 --- a/package.json +++ b/package.json @@ -88,7 +88,7 @@ "@types/jest": "29.4.0", "@types/license-checker": "^25.0.3", "@types/semver": "^7.3.13", - "@typescript-eslint/eslint-plugin": "5.56.0", + "@typescript-eslint/eslint-plugin": "5.57.0", "@typescript-eslint/parser": "5.57.0", "babel-plugin-transform-import-meta": "2.2.0", "cross-env": "7.0.3", @@ -117,7 +117,7 @@ "ts-node": "10.9.1", "ts-prune": "0.10.3", "tslib": "2.5.0", - "typescript": "4.9.5", + "typescript": "5.0.3", "typescript-plugin-css-modules": "4.2.3", "webpack": "5.76.2", "webpack-cli": "5.0.1", diff --git a/packages/comlink-transfer-handlers/package.json b/packages/comlink-transfer-handlers/package.json index e649dd2eef..d22a8b2002 100644 --- a/packages/comlink-transfer-handlers/package.json +++ b/packages/comlink-transfer-handlers/package.json @@ -21,6 +21,6 @@ }, "devDependencies": { "comlink": "4.4.1", - "typescript": "4.9.5" + "typescript": "5.0.3" } } diff --git a/packages/hooks/package.json b/packages/hooks/package.json index c1ef4a6428..f9ac1a89fa 100644 --- a/packages/hooks/package.json +++ b/packages/hooks/package.json @@ -21,7 +21,7 @@ }, "devDependencies": { "@testing-library/react-hooks": "8.0.1", - "typescript": "4.9.5" + "typescript": "5.0.3" }, "dependencies": { "@foxglove/log": "workspace:*", diff --git a/packages/log/package.json b/packages/log/package.json index ffed9ab932..11f24e528d 100644 --- a/packages/log/package.json +++ b/packages/log/package.json @@ -20,6 +20,6 @@ "prepack": "tsc -b" }, "devDependencies": { - "typescript": "4.9.5" + "typescript": "5.0.3" } } diff --git a/packages/mcap-support/package.json b/packages/mcap-support/package.json index 68313ba130..1161ec4fce 100644 --- a/packages/mcap-support/package.json +++ b/packages/mcap-support/package.json @@ -22,7 +22,7 @@ }, "devDependencies": { "@types/protobufjs": "workspace:*", - "typescript": "4.9.5" + "typescript": "5.0.3" }, "dependencies": { "@foxglove/message-definition": "0.2.0", diff --git a/packages/studio-base/package.json b/packages/studio-base/package.json index b82cb90fe1..b02de4c7f9 100644 --- a/packages/studio-base/package.json +++ b/packages/studio-base/package.json @@ -174,7 +174,7 @@ "ts-key-enum": "2.0.12", "ts-loader": "9.4.2", "tss-react": "4.8.2", - "typescript": "4.9.5", + "typescript": "5.0.3", "url-search-params": "1.1.0", "use-debounce": "9.0.3", "use-immer": "0.8.1", diff --git a/packages/studio-base/src/components/Chart/index.tsx b/packages/studio-base/src/components/Chart/index.tsx index ab48d244e6..7483bd60ba 100644 --- a/packages/studio-base/src/components/Chart/index.tsx +++ b/packages/studio-base/src/components/Chart/index.tsx @@ -88,7 +88,7 @@ function rpcMouseEvent(event: React.MouseEvent) { type RpcSend = ( topic: string, payload?: Record, - transferables?: (Transferable | OffscreenCanvas)[], + transferables?: Transferable[], ) => Promise; // Chart component renders data using workers with chartjs offscreen canvas @@ -137,7 +137,7 @@ function Chart(props: Props): JSX.Element { const sendWrapper = async ( topic: string, payload?: Record, - transferables?: (Transferable | OffscreenCanvas)[], + transferables?: Transferable[], ) => { return await rpc.send(topic, { id, ...payload }, transferables); }; diff --git a/packages/studio-base/src/components/CreateEventDialog.tsx b/packages/studio-base/src/components/CreateEventDialog.tsx index 9192f88444..6698ec6303 100644 --- a/packages/studio-base/src/components/CreateEventDialog.tsx +++ b/packages/studio-base/src/components/CreateEventDialog.tsx @@ -252,7 +252,7 @@ export function CreateEventDialog(props: { onClose: () => void }): JSX.Element { Metadata
{event.metadataEntries.map(({ key, value }, index) => { - const hasDuplicate = ((key.length > 0 && countedMetadata[key]) ?? 0) > 1; + const hasDuplicate = ((key.length > 0 ? countedMetadata[key] : undefined) ?? 0) > 1; return (
{ const createTimeInterfaceDeclaration = (name: string) => { return ts.factory.createInterfaceDeclaration( - undefined /* decorators */, modifiers /* modifiers */, name /* name */, undefined /* typeParameters */, @@ -51,8 +50,6 @@ const createTimeInterfaceDeclaration = (name: string) => { // Since rosbagjs treats json as a primitive, we have to shim it in. const jsonInterfaceDeclaration = ts.factory.createInterfaceDeclaration( - undefined, - /* decorators */ modifiers, /* modifiers */ "json", @@ -134,7 +131,6 @@ export const generateTypeDefs = (datatypes: RosDatatypes): InterfaceDeclarations }); interfaceDeclarations[datatype] = ts.factory.createInterfaceDeclaration( - undefined /* decorators */, [ts.factory.createModifier(ts.SyntaxKind.ExportKeyword)] /* modifiers */, formatInterfaceName(datatype) /* name */, undefined /* typeParameters */, @@ -155,7 +151,6 @@ const generateRosLib = ({ datatypes: RosDatatypes; }): string => { let TopicsToMessageDefinition = ts.factory.createInterfaceDeclaration( - undefined, modifiers, "TopicsToMessageDefinition", undefined, @@ -164,8 +159,6 @@ const generateRosLib = ({ ); const typedMessage = ts.factory.createInterfaceDeclaration( - undefined, - /* decorators */ modifiers, /* modifiers */ "Input", diff --git a/packages/studio-base/src/theme/muiComponents.ts b/packages/studio-base/src/theme/muiComponents.ts index ddd78a6fcf..48980b91eb 100644 --- a/packages/studio-base/src/theme/muiComponents.ts +++ b/packages/studio-base/src/theme/muiComponents.ts @@ -2,7 +2,15 @@ // License, v2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at http://mozilla.org/MPL/2.0/ -import { alpha, Fade, Theme, dividerClasses, listClasses, listItemClasses } from "@mui/material"; +import { + alpha, + CSSInterpolation, + Fade, + Theme, + dividerClasses, + listClasses, + listItemClasses, +} from "@mui/material"; import { CSSProperties } from "react"; import tinycolor from "tinycolor2"; @@ -15,7 +23,7 @@ type MuiLabComponents = { MuiToggleButton?: { styleOverrides?: { root?: CSSProperties; - label?: CSSProperties; + label?: CSSInterpolation; }; }; MuiToggleButtonGroup?: { diff --git a/packages/studio-base/src/util/Rpc.ts b/packages/studio-base/src/util/Rpc.ts index 502b46c677..e48a5292fc 100644 --- a/packages/studio-base/src/util/Rpc.ts +++ b/packages/studio-base/src/util/Rpc.ts @@ -15,7 +15,7 @@ // instances of web-workers and shared-workers respectively, as well as avaiable on // 'global' within them. export interface Channel { - postMessage(data: unknown, transfer?: (Transferable | OffscreenCanvas)[]): void; + postMessage(data: unknown, transfer?: Transferable[]): void; onmessage?: ((ev: MessageEvent) => unknown) | null; // eslint-disable-line no-restricted-syntax terminate: () => void; } @@ -154,7 +154,7 @@ export default class Rpc { public async send( topic: string, data?: TData, - transfer?: (Transferable | OffscreenCanvas)[], + transfer?: Transferable[], ): Promise { const id = this._messageId++; const message = { topic, id, data }; diff --git a/packages/studio-base/webpack.ts b/packages/studio-base/webpack.ts index 61877eb511..525f69345f 100644 --- a/packages/studio-base/webpack.ts +++ b/packages/studio-base/webpack.ts @@ -181,7 +181,7 @@ export function makeConfig( options: { multiple: [ { - search: "etwModule = require(etwModulePath);", + search: /etwModule\s*=\s*require\(etwModulePath\);/, replace: "throw new Error('[Foxglove] This module is not supported in the browser.');", }, @@ -200,6 +200,10 @@ export function makeConfig( replace: "throw new Error('[Foxglove] This module is not supported in the browser.');", }, + { + search: `return { module: require(modulePath), modulePath, error: void 0 };`, + replace: `throw new Error('[Foxglove] This module is not supported in the browser.');`, + }, { search: `getModuleResolver=function(e){let t;try{t=require(e)}`, replace: diff --git a/packages/studio/package.json b/packages/studio/package.json index 0b6d0a3540..80f39dbc90 100644 --- a/packages/studio/package.json +++ b/packages/studio/package.json @@ -19,6 +19,6 @@ "prepack": "tsc -b tsconfig.json" }, "devDependencies": { - "typescript": "4.9.5" + "typescript": "5.0.3" } } diff --git a/packages/typescript-transformers/package.json b/packages/typescript-transformers/package.json index df715260e0..033acc9ac5 100644 --- a/packages/typescript-transformers/package.json +++ b/packages/typescript-transformers/package.json @@ -20,6 +20,6 @@ "prepack": "tsc -b" }, "dependencies": { - "typescript": "4.9.5" + "typescript": "5.0.3" } } diff --git a/packages/typescript-transformers/src/createTssReactNameTransformer.ts b/packages/typescript-transformers/src/createTssReactNameTransformer.ts index 7e029b23ce..53b3e47dc8 100644 --- a/packages/typescript-transformers/src/createTssReactNameTransformer.ts +++ b/packages/typescript-transformers/src/createTssReactNameTransformer.ts @@ -48,6 +48,6 @@ export function createTssReactNameTransformer( } return ts.visitEachChild(node, visitor, context); }; - return ts.visitNode(sourceFile, visitor); + return ts.visitNode(sourceFile, visitor, ts.isSourceFile); }; } diff --git a/yarn.lock b/yarn.lock index 11c8411bbb..179b96ff7d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2127,7 +2127,7 @@ __metadata: resolution: "@foxglove/comlink-transfer-handlers@workspace:packages/comlink-transfer-handlers" dependencies: comlink: 4.4.1 - typescript: 4.9.5 + typescript: 5.0.3 languageName: unknown linkType: soft @@ -2191,7 +2191,7 @@ __metadata: "@foxglove/log": "workspace:*" "@testing-library/react-hooks": 8.0.1 shallowequal: 1.1.0 - typescript: 4.9.5 + typescript: 5.0.3 peerDependencies: react: ^17.0.2 languageName: unknown @@ -2210,7 +2210,7 @@ __metadata: version: 0.0.0-use.local resolution: "@foxglove/log@workspace:packages/log" dependencies: - typescript: 4.9.5 + typescript: 5.0.3 languageName: unknown linkType: soft @@ -2232,7 +2232,7 @@ __metadata: flatbuffers: 23.3.3 flatbuffers_reflection: 0.0.3 protobufjs: 7.2.2 - typescript: 4.9.5 + typescript: 5.0.3 languageName: unknown linkType: soft @@ -2571,7 +2571,7 @@ __metadata: ts-key-enum: 2.0.12 ts-loader: 9.4.2 tss-react: 4.8.2 - typescript: 4.9.5 + typescript: 5.0.3 url-search-params: 1.1.0 use-debounce: 9.0.3 use-immer: 0.8.1 @@ -2660,7 +2660,7 @@ __metadata: version: 0.0.0-use.local resolution: "@foxglove/studio@workspace:packages/studio" dependencies: - typescript: 4.9.5 + typescript: 5.0.3 languageName: unknown linkType: soft @@ -2686,7 +2686,7 @@ __metadata: version: 0.0.0-use.local resolution: "@foxglove/typescript-transformers@workspace:packages/typescript-transformers" dependencies: - typescript: 4.9.5 + typescript: 5.0.3 languageName: unknown linkType: soft @@ -6223,14 +6223,14 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/eslint-plugin@npm:5.56.0": - version: 5.56.0 - resolution: "@typescript-eslint/eslint-plugin@npm:5.56.0" +"@typescript-eslint/eslint-plugin@npm:5.57.0": + version: 5.57.0 + resolution: "@typescript-eslint/eslint-plugin@npm:5.57.0" dependencies: "@eslint-community/regexpp": ^4.4.0 - "@typescript-eslint/scope-manager": 5.56.0 - "@typescript-eslint/type-utils": 5.56.0 - "@typescript-eslint/utils": 5.56.0 + "@typescript-eslint/scope-manager": 5.57.0 + "@typescript-eslint/type-utils": 5.57.0 + "@typescript-eslint/utils": 5.57.0 debug: ^4.3.4 grapheme-splitter: ^1.0.4 ignore: ^5.2.0 @@ -6243,7 +6243,7 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 2eed4a4ed8279950ad553252e8623e947ffdee39b0d677a13f6e4e2d863ea1cbc5d683ff189e55d0de6fd5a25afd72d3c3a9ab7ae417d5405a21ead907e1b154 + checksum: be13aa74ee6f15f0ae67781c625d9dcf3ce8a3feca2b125eef0cfee850b7f9f0cec23fc56a729ef25926298fe3ea51603ebeee2b93fc9b73fce1410638707177 languageName: node linkType: hard @@ -6264,16 +6264,6 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/scope-manager@npm:5.56.0": - version: 5.56.0 - resolution: "@typescript-eslint/scope-manager@npm:5.56.0" - dependencies: - "@typescript-eslint/types": 5.56.0 - "@typescript-eslint/visitor-keys": 5.56.0 - checksum: bacac255ee52148cee6622be2811c0d7e25419058b89f1a11f4c1303faef4535a0a1237549f9556ec1d7a297c640ce4357183a1a8465d72e1393b7d8fb43874b - languageName: node - linkType: hard - "@typescript-eslint/scope-manager@npm:5.57.0": version: 5.57.0 resolution: "@typescript-eslint/scope-manager@npm:5.57.0" @@ -6284,12 +6274,12 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/type-utils@npm:5.56.0": - version: 5.56.0 - resolution: "@typescript-eslint/type-utils@npm:5.56.0" +"@typescript-eslint/type-utils@npm:5.57.0": + version: 5.57.0 + resolution: "@typescript-eslint/type-utils@npm:5.57.0" dependencies: - "@typescript-eslint/typescript-estree": 5.56.0 - "@typescript-eslint/utils": 5.56.0 + "@typescript-eslint/typescript-estree": 5.57.0 + "@typescript-eslint/utils": 5.57.0 debug: ^4.3.4 tsutils: ^3.21.0 peerDependencies: @@ -6297,14 +6287,7 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 3dd1fcfadad18790b900a3d90f6617904adb6b0e2bd1e1edb6ebf239e1399865ca9098647405385feb4252d8b2b4577883e6fd3ef8d00bdd521d6070972d486b - languageName: node - linkType: hard - -"@typescript-eslint/types@npm:5.56.0": - version: 5.56.0 - resolution: "@typescript-eslint/types@npm:5.56.0" - checksum: 82ca11553bbb1bbfcaf7e7760b03c0d898940238dc002552c21af3e58f7d482c64c3c6cf0666521aff2a1e7b4b58bb6e4d9a00b1e4998a16b5039f5d288d003a + checksum: 649d000edabfe4e567b8a384d0012c56396e40ce2123a78857d4b8da6bf2288627dc355745bd7d4a2877d4cc8a26e1d1dbfc422e6382ac3d3ab431b92eb5b852 languageName: node linkType: hard @@ -6315,24 +6298,6 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:5.56.0": - version: 5.56.0 - resolution: "@typescript-eslint/typescript-estree@npm:5.56.0" - dependencies: - "@typescript-eslint/types": 5.56.0 - "@typescript-eslint/visitor-keys": 5.56.0 - debug: ^4.3.4 - globby: ^11.1.0 - is-glob: ^4.0.3 - semver: ^7.3.7 - tsutils: ^3.21.0 - peerDependenciesMeta: - typescript: - optional: true - checksum: ec3e85201786aa9adddba7cb834a9f330a7f55c729ee9ccf847dbdc2f7437b760f3774152ccad6d0aa48d13fd78df766c880e3a7ca42e01a20aba0e1a1ed61c5 - languageName: node - linkType: hard - "@typescript-eslint/typescript-estree@npm:5.57.0": version: 5.57.0 resolution: "@typescript-eslint/typescript-estree@npm:5.57.0" @@ -6351,31 +6316,21 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/utils@npm:5.56.0, @typescript-eslint/utils@npm:^5, @typescript-eslint/utils@npm:^5.10.0": - version: 5.56.0 - resolution: "@typescript-eslint/utils@npm:5.56.0" +"@typescript-eslint/utils@npm:5.57.0, @typescript-eslint/utils@npm:^5, @typescript-eslint/utils@npm:^5.10.0": + version: 5.57.0 + resolution: "@typescript-eslint/utils@npm:5.57.0" dependencies: "@eslint-community/eslint-utils": ^4.2.0 "@types/json-schema": ^7.0.9 "@types/semver": ^7.3.12 - "@typescript-eslint/scope-manager": 5.56.0 - "@typescript-eslint/types": 5.56.0 - "@typescript-eslint/typescript-estree": 5.56.0 + "@typescript-eslint/scope-manager": 5.57.0 + "@typescript-eslint/types": 5.57.0 + "@typescript-eslint/typescript-estree": 5.57.0 eslint-scope: ^5.1.1 semver: ^7.3.7 peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - checksum: 413e8d4bf7023ee5ba4f695b62e796a1f94930bb92fe5aa0cee58f63b9837116c23f618825a9c671f610e50f5630188b6059b4ed6b05a2a3336f01d8e977becb - languageName: node - linkType: hard - -"@typescript-eslint/visitor-keys@npm:5.56.0": - version: 5.56.0 - resolution: "@typescript-eslint/visitor-keys@npm:5.56.0" - dependencies: - "@typescript-eslint/types": 5.56.0 - eslint-visitor-keys: ^3.3.0 - checksum: 568fda40134e153d7befb59b55698f7919ba780d2d3431d8745feabf2e0fbb8aa7a02173b3c467dd20a0f6594e5248a1f82bb25d6c37827716d77452e86cad29 + checksum: 461258e1194d24c5e642c65ba1afd612712fa8e617ac85cfbbe3dde2557fe4abadedbce19a6954ae0cccbfb92b8a09f38d65a3eedca0394861a5d1c4c893c5ed languageName: node linkType: hard @@ -12555,7 +12510,7 @@ __metadata: "@types/jest": 29.4.0 "@types/license-checker": ^25.0.3 "@types/semver": ^7.3.13 - "@typescript-eslint/eslint-plugin": 5.56.0 + "@typescript-eslint/eslint-plugin": 5.57.0 "@typescript-eslint/parser": 5.57.0 babel-plugin-transform-import-meta: 2.2.0 cross-env: 7.0.3 @@ -12584,7 +12539,7 @@ __metadata: ts-node: 10.9.1 ts-prune: 0.10.3 tslib: 2.5.0 - typescript: 4.9.5 + typescript: 5.0.3 typescript-plugin-css-modules: 4.2.3 webpack: 5.76.2 webpack-cli: 5.0.1 @@ -23236,43 +23191,23 @@ __metadata: languageName: node linkType: hard -"typescript@npm:4.9.5": - version: 4.9.5 - resolution: "typescript@npm:4.9.5" - bin: - tsc: bin/tsc - tsserver: bin/tsserver - checksum: ee000bc26848147ad423b581bd250075662a354d84f0e06eb76d3b892328d8d4440b7487b5a83e851b12b255f55d71835b008a66cbf8f255a11e4400159237db - languageName: node - linkType: hard - -"typescript@npm:^4 || ^5": - version: 5.0.2 - resolution: "typescript@npm:5.0.2" - bin: - tsc: bin/tsc - tsserver: bin/tsserver - checksum: bef1dcd166acfc6934b2ec4d72f93edb8961a5fab36b8dd2aaf6f4f4cd5c0210f2e0850aef4724f3b4913d5aef203a94a28ded731b370880c8bcff7e4ff91fc1 - languageName: node - linkType: hard - -"typescript@patch:typescript@4.9.5#~builtin": - version: 4.9.5 - resolution: "typescript@patch:typescript@npm%3A4.9.5#~builtin::version=4.9.5&hash=ad5954" +"typescript@npm:5.0.3, typescript@npm:^4 || ^5": + version: 5.0.3 + resolution: "typescript@npm:5.0.3" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: 8f6260acc86b56bfdda6004bc53f32ea548f543e8baef7071c8e34d29d292f3e375c8416556c8de10b24deef6933cd1c16a8233dc84a3dd43a13a13265d0faab + checksum: 3cce0576d218cb4277ff8b6adfef1a706e9114a98b4261a38ad658a7642f1b274a8396394f6cbff8c0ba852996d7ed2e233e9b8431d5d55ac7c2f6fea645af02 languageName: node linkType: hard -"typescript@patch:typescript@^4 || ^5#~builtin": - version: 5.0.2 - resolution: "typescript@patch:typescript@npm%3A5.0.2#~builtin::version=5.0.2&hash=ad5954" +"typescript@patch:typescript@5.0.3#~builtin, typescript@patch:typescript@^4 || ^5#~builtin": + version: 5.0.3 + resolution: "typescript@patch:typescript@npm%3A5.0.3#~builtin::version=5.0.3&hash=ad5954" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: bdbf3d0aac0d6cf010fbe0536753dc19f278eb4aba88140dcd25487dfe1c56ca8b33abc0dcd42078790a939b08ebc4046f3e9bb961d77d3d2c3cfa9829da4d53 + checksum: 9ec0a8eed38d46cc2c8794555b7674e413604c56c159f71b8ff21ce7f17334a44127a68724cb2ef8221ff3b19369f8f05654e8a5266621d7d962aeed889bd630 languageName: node linkType: hard