Skip to content

Commit 643a9ef

Browse files
chore(site): Add type checking (#7441)
1 parent 52d2bc9 commit 643a9ef

File tree

16 files changed

+137
-35
lines changed

16 files changed

+137
-35
lines changed

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ site/e2e/test-results/*
2929
site/e2e/states/*.json
3030
site/playwright-report/*
3131
site/.swc
32+
site/dist/
3233

3334
# Make target for updating golden files (any dir).
3435
.gen-golden

.prettierignore

+1
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ site/e2e/test-results/*
3232
site/e2e/states/*.json
3333
site/playwright-report/*
3434
site/.swc
35+
site/dist/
3536

3637
# Make target for updating golden files (any dir).
3738
.gen-golden

site/.eslintignore

+1
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ e2e/test-results/*
3232
e2e/states/*.json
3333
playwright-report/*
3434
.swc
35+
dist/
3536

3637
# Make target for updating golden files (any dir).
3738
.gen-golden

site/.prettierignore

+1
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ e2e/test-results/*
3232
e2e/states/*.json
3333
playwright-report/*
3434
.swc
35+
dist/
3536

3637
# Make target for updating golden files (any dir).
3738
.gen-golden

site/package.json

+4-3
Original file line numberDiff line numberDiff line change
@@ -68,15 +68,15 @@
6868
"react": "18.2.0",
6969
"react-chartjs-2": "4.3.1",
7070
"react-color": "2.19.3",
71-
"react-confetti": "^6.1.0",
71+
"react-confetti": "6.1.0",
7272
"react-dom": "18.2.0",
7373
"react-headless-tabs": "6.0.3",
7474
"react-helmet-async": "1.3.0",
7575
"react-i18next": "12.1.1",
7676
"react-markdown": "8.0.3",
7777
"react-router-dom": "6.4.1",
7878
"react-syntax-highlighter": "15.5.0",
79-
"react-use": "^17.4.0",
79+
"react-use": "17.4.0",
8080
"react-virtualized-auto-sizer": "1.0.7",
8181
"react-window": "1.8.8",
8282
"remark-gfm": "3.0.1",
@@ -145,7 +145,8 @@
145145
"semver": "7.3.7",
146146
"storybook": "7.0.4",
147147
"storybook-react-context": "0.6.0",
148-
"typescript": "4.8.2"
148+
"typescript": "4.8.2",
149+
"vite-plugin-checker": "0.6.0"
149150
},
150151
"browserslist": [
151152
"chrome 66",

site/src/__mocks__/monaco-editor.ts

+2
Original file line numberDiff line numberDiff line change
@@ -16,3 +16,5 @@ const monaco = {
1616
}
1717

1818
module.exports = monaco
19+
20+
export {}

site/src/components/Tooltips/HelpTooltip/HelpTooltip.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ import { Stack } from "../../Stack/Stack"
1717
type Icon = typeof HelpIcon
1818

1919
type Size = "small" | "medium"
20-
interface HelpTooltipProps {
20+
export interface HelpTooltipProps {
2121
// Useful to test on storybook
2222
open?: boolean
2323
size?: Size

site/src/pages/DeploySettingsPage/LicensesSettingsPage/AddNewLicensePageView.tsx

+1-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import Button from "@material-ui/core/Button"
22
import TextField from "@material-ui/core/TextField"
33
import { makeStyles } from "@material-ui/core/styles"
4-
import { ApiErrorResponse } from "api/errors"
54
import { AlertBanner } from "components/AlertBanner/AlertBanner"
65
import { Fieldset } from "components/DeploySettingsLayout/Fieldset"
76
import { Header } from "components/DeploySettingsLayout/Header"
@@ -15,7 +14,7 @@ import { Link as RouterLink } from "react-router-dom"
1514
type AddNewLicenseProps = {
1615
onSaveLicenseKey: (license: string) => void
1716
isSavingLicense: boolean
18-
savingLicenseError?: ApiErrorResponse
17+
savingLicenseError?: unknown
1918
}
2019

2120
export const AddNewLicensePageView: FC<AddNewLicenseProps> = ({

site/src/pages/TemplatePage/TemplateSummaryPage/TemplateSummaryPageView.stories.tsx

-3
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ Example.args = {
2626
activeVersion: MockTemplateVersion,
2727
data: {
2828
resources: [MockWorkspaceResource, MockWorkspaceResource2],
29-
versions: [MockTemplateVersion],
3029
daus: MockTemplateDAUResponse,
3130
},
3231
}
@@ -37,7 +36,6 @@ NoIcon.args = {
3736
activeVersion: MockTemplateVersion,
3837
data: {
3938
resources: [MockWorkspaceResource, MockWorkspaceResource2],
40-
versions: [MockTemplateVersion],
4139
daus: MockTemplateDAUResponse,
4240
},
4341
}
@@ -61,7 +59,6 @@ SmallViewport.args = {
6159
},
6260
data: {
6361
resources: [MockWorkspaceResource, MockWorkspaceResource2],
64-
versions: [MockTemplateVersion],
6562
daus: MockTemplateDAUResponse,
6663
},
6764
}

site/src/pages/TemplateSettingsPage/TemplateGeneralSettingsPage/TemplateSettingsPage.test.tsx

+10-2
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,20 @@ import i18next from "i18next"
1414

1515
const { t } = i18next
1616

17-
const validFormValues = {
17+
type FormValues = Required<
18+
Omit<UpdateTemplateMeta, "default_ttl_ms" | "max_ttl_ms">
19+
>
20+
21+
const validFormValues: FormValues = {
1822
name: "Name",
1923
display_name: "A display name",
2024
description: "A description",
2125
icon: "vscode.png",
2226
allow_user_cancel_workspace_jobs: false,
27+
allow_user_autostart: false,
28+
allow_user_autostop: false,
29+
failure_ttl_ms: 0,
30+
inactivity_ttl_ms: 0,
2331
}
2432

2533
const renderTemplateSettingsPage = async () => {
@@ -36,7 +44,7 @@ const fillAndSubmitForm = async ({
3644
description,
3745
icon,
3846
allow_user_cancel_workspace_jobs,
39-
}: Required<Omit<UpdateTemplateMeta, "default_ttl_ms" | "max_ttl_ms">>) => {
47+
}: FormValues) => {
4048
const label = t("nameLabel", { ns: "templateSettingsPage" })
4149
const nameField = await screen.findByLabelText(label)
4250
await userEvent.clear(nameField)

site/src/pages/TemplateSettingsPage/TemplateSettingsLayout.tsx

+9-8
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,16 @@ import { checkAuthorization, getTemplateByName } from "api/api"
1111
import { useQuery } from "@tanstack/react-query"
1212
import { useOrganizationId } from "hooks/useOrganizationId"
1313

14-
const templatePermissions = (templateId: string) => ({
15-
canUpdateTemplate: {
16-
object: {
17-
resource_type: "template",
18-
resource_id: templateId,
14+
const templatePermissions = (templateId: string) =>
15+
({
16+
canUpdateTemplate: {
17+
object: {
18+
resource_type: "template",
19+
resource_id: templateId,
20+
},
21+
action: "update",
1922
},
20-
action: "update",
21-
},
22-
})
23+
} as const)
2324

2425
const fetchTemplateSettings = async (orgId: string, name: string) => {
2526
const template = await getTemplateByName(orgId, name)

site/src/pages/TemplateVersionPage/TemplateVersionPageView.stories.tsx

-1
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,6 @@ const defaultArgs: TemplateVersionPageViewProps = {
4141
tab,
4242
templateName: MockTemplate.name,
4343
versionName: MockTemplateVersion.name,
44-
canEdit: true,
4544
context: {
4645
templateName: MockTemplate.name,
4746
orgId: MockOrganization.id,

site/src/xServices/createWorkspace/createWorkspaceXService.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -258,7 +258,7 @@ export const createWorkspaceMachine =
258258
},
259259
action: "create",
260260
},
261-
}
261+
} as const
262262

263263
return checkAuthorization({
264264
checks: permissionsToCheck,

site/src/xServices/workspaceSchedule/workspaceScheduleXService.ts

+10-9
Original file line numberDiff line numberDiff line change
@@ -29,16 +29,17 @@ export const checks = {
2929
updateWorkspace: "updateWorkspace",
3030
} as const
3131

32-
const permissionsToCheck = (workspace: TypesGen.Workspace) => ({
33-
[checks.updateWorkspace]: {
34-
object: {
35-
resource_type: "workspace",
36-
resource_id: workspace.id,
37-
owner_id: workspace.owner_id,
32+
const permissionsToCheck = (workspace: TypesGen.Workspace) =>
33+
({
34+
[checks.updateWorkspace]: {
35+
object: {
36+
resource_type: "workspace",
37+
resource_id: workspace.id,
38+
owner_id: workspace.owner_id,
39+
},
40+
action: "update",
3841
},
39-
action: "update",
40-
},
41-
})
42+
} as const)
4243

4344
export type WorkspaceScheduleEvent =
4445
| {

site/vite.config.ts

+7-1
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,14 @@ import react from "@vitejs/plugin-react"
22
import path from "path"
33
import { defineConfig, PluginOption } from "vite"
44
import { visualizer } from "rollup-plugin-visualizer"
5+
import checker from "vite-plugin-checker"
56

6-
const plugins: PluginOption[] = [react()]
7+
const plugins: PluginOption[] = [
8+
react(),
9+
checker({
10+
typescript: true,
11+
}),
12+
]
713

814
if (process.env.STATS !== undefined) {
915
plugins.push(

site/yarn.lock

+88-4
Original file line numberDiff line numberDiff line change
@@ -4011,7 +4011,7 @@ ansi-align@^3.0.0:
40114011
dependencies:
40124012
string-width "^4.1.0"
40134013

4014-
ansi-escapes@^4.2.1:
4014+
ansi-escapes@^4.2.1, ansi-escapes@^4.3.0:
40154015
version "4.3.2"
40164016
resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e"
40174017
integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==
@@ -4644,7 +4644,7 @@ chartjs-adapter-date-fns@3.0.0:
46444644
resolved "https://registry.yarnpkg.com/chartjs-adapter-date-fns/-/chartjs-adapter-date-fns-3.0.0.tgz#c25f63c7f317c1f96f9a7c44bd45eeedb8a478e5"
46454645
integrity sha512-Rs3iEB3Q5pJ973J93OBTpnP7qoGwvq3nUnoMdtxO+9aoJof7UFcRbWcIDteXuYd1fgAvct/32T9qaLyLuZVwCg==
46464646

4647-
chokidar@^3.4.2, chokidar@^3.5.3:
4647+
chokidar@^3.4.2, chokidar@^3.5.1, chokidar@^3.5.3:
46484648
version "3.5.3"
46494649
resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd"
46504650
integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==
@@ -8347,6 +8347,11 @@ lodash.merge@^4.6.2:
83478347
resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a"
83488348
integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==
83498349

8350+
lodash.pick@^4.4.0:
8351+
version "4.4.0"
8352+
resolved "https://registry.yarnpkg.com/lodash.pick/-/lodash.pick-4.4.0.tgz#52f05610fff9ded422611441ed1fc123a03001b3"
8353+
integrity sha512-hXt6Ul/5yWjfklSGvLQl8vM//l3FtyHZeuelpzK6mm99pNvN9yTDruNZPEJZD1oWrqo+izBmB7oUfWgcCX7s4Q==
8354+
83508355
lodash.reduce@^4.6.0:
83518356
version "4.6.0"
83528357
resolved "https://registry.yarnpkg.com/lodash.reduce/-/lodash.reduce-4.6.0.tgz#f1ab6b839299ad48f784abbf476596f03b914d3b"
@@ -10009,7 +10014,7 @@ react-colorful@^5.1.2:
1000910014
resolved "https://registry.yarnpkg.com/react-colorful/-/react-colorful-5.6.1.tgz#7dc2aed2d7c72fac89694e834d179e32f3da563b"
1001010015
integrity sha512-1exovf0uGTGyq5mXQT0zgQ80uvj2PCwvF8zY1RN9/vbJVSjSo3fsB/4L3ObbF7u70NduSiK4xu4Y6q1MHoUGEw==
1001110016

10012-
react-confetti@^6.1.0:
10017+
react-confetti@6.1.0:
1001310018
version "6.1.0"
1001410019
resolved "https://registry.yarnpkg.com/react-confetti/-/react-confetti-6.1.0.tgz#03dc4340d955acd10b174dbf301f374a06e29ce6"
1001510020
integrity sha512-7Ypx4vz0+g8ECVxr88W9zhcQpbeujJAVqL14ZnXJ3I23mOI9/oBVTQ3dkJhUmB0D6XOtCZEM6N0Gm9PMngkORw==
@@ -10187,7 +10192,7 @@ react-universal-interface@^0.6.2:
1018710192
resolved "https://registry.yarnpkg.com/react-universal-interface/-/react-universal-interface-0.6.2.tgz#5e8d438a01729a4dbbcbeeceb0b86be146fe2b3b"
1018810193
integrity sha512-dg8yXdcQmvgR13RIlZbTRQOoUrDciFVoSBZILwjE2LFISxZZ8loVJKAkuzswl5js8BHda79bIb2b84ehU8IjXw==
1018910194

10190-
react-use@^17.4.0:
10195+
react-use@17.4.0:
1019110196
version "17.4.0"
1019210197
resolved "https://registry.yarnpkg.com/react-use/-/react-use-17.4.0.tgz#cefef258b0a6c534a5c8021c2528ac6e1a4cdc6d"
1019310198
integrity sha512-TgbNTCA33Wl7xzIJegn1HndB4qTS9u03QUwyNycUnXaweZkE4Kq2SB+Yoxx8qbshkZGYBDvUXbXWRUmQDcZZ/Q==
@@ -10709,6 +10714,13 @@ semver@^7.0.0, semver@^7.1.2, semver@^7.3.5, semver@^7.3.7:
1070910714
dependencies:
1071010715
lru-cache "^6.0.0"
1071110716

10717+
semver@^7.3.4, semver@^7.5.0:
10718+
version "7.5.0"
10719+
resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.0.tgz#ed8c5dc8efb6c629c88b23d41dc9bf40c1d96cd0"
10720+
integrity sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==
10721+
dependencies:
10722+
lru-cache "^6.0.0"
10723+
1071210724
semver@~7.0.0:
1071310725
version "7.0.0"
1071410726
resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e"
@@ -11368,6 +11380,11 @@ tiny-glob@^0.2.9:
1136811380
globalyzer "0.1.0"
1136911381
globrex "^0.1.2"
1137011382

11383+
tiny-invariant@^1.1.0:
11384+
version "1.3.1"
11385+
resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.3.1.tgz#8560808c916ef02ecfd55e66090df23a4b7aa642"
11386+
integrity sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==
11387+
1137111388
tiny-warning@^1.0.2:
1137211389
version "1.0.3"
1137311390
resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754"
@@ -11894,6 +11911,29 @@ vfile@^5.0.0:
1189411911
unist-util-stringify-position "^3.0.0"
1189511912
vfile-message "^3.0.0"
1189611913

11914+
vite-plugin-checker@0.6.0:
11915+
version "0.6.0"
11916+
resolved "https://registry.yarnpkg.com/vite-plugin-checker/-/vite-plugin-checker-0.6.0.tgz#f8d09c5f6af427787c657249f7ac775d63cff7e8"
11917+
integrity sha512-DWZ9Hv2TkpjviPxAelNUt4Q3IhSGrx7xrwdM64NI+Q4dt8PaMWJJh4qGNtSrfEuiuIzWWo00Ksvh5It4Y3L9xQ==
11918+
dependencies:
11919+
"@babel/code-frame" "^7.12.13"
11920+
ansi-escapes "^4.3.0"
11921+
chalk "^4.1.1"
11922+
chokidar "^3.5.1"
11923+
commander "^8.0.0"
11924+
fast-glob "^3.2.7"
11925+
fs-extra "^11.1.0"
11926+
lodash.debounce "^4.0.8"
11927+
lodash.pick "^4.4.0"
11928+
npm-run-path "^4.0.1"
11929+
semver "^7.5.0"
11930+
strip-ansi "^6.0.0"
11931+
tiny-invariant "^1.1.0"
11932+
vscode-languageclient "^7.0.0"
11933+
vscode-languageserver "^7.0.0"
11934+
vscode-languageserver-textdocument "^1.0.1"
11935+
vscode-uri "^3.0.2"
11936+
1189711937
vite@4.3.0:
1189811938
version "4.3.0"
1189911939
resolved "https://registry.yarnpkg.com/vite/-/vite-4.3.0.tgz#1fb9432e1980cf254e1ae1b7b8981fd262c6aa49"
@@ -11910,6 +11950,50 @@ void-elements@3.1.0:
1191011950
resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-3.1.0.tgz#614f7fbf8d801f0bb5f0661f5b2f5785750e4f09"
1191111951
integrity sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==
1191211952

11953+
vscode-jsonrpc@6.0.0:
11954+
version "6.0.0"
11955+
resolved "https://registry.yarnpkg.com/vscode-jsonrpc/-/vscode-jsonrpc-6.0.0.tgz#108bdb09b4400705176b957ceca9e0880e9b6d4e"
11956+
integrity sha512-wnJA4BnEjOSyFMvjZdpiOwhSq9uDoK8e/kpRJDTaMYzwlkrhG1fwDIZI94CLsLzlCK5cIbMMtFlJlfR57Lavmg==
11957+
11958+
vscode-languageclient@^7.0.0:
11959+
version "7.0.0"
11960+
resolved "https://registry.yarnpkg.com/vscode-languageclient/-/vscode-languageclient-7.0.0.tgz#b505c22c21ffcf96e167799757fca07a6bad0fb2"
11961+
integrity sha512-P9AXdAPlsCgslpP9pRxYPqkNYV7Xq8300/aZDpO35j1fJm/ncize8iGswzYlcvFw5DQUx4eVk+KvfXdL0rehNg==
11962+
dependencies:
11963+
minimatch "^3.0.4"
11964+
semver "^7.3.4"
11965+
vscode-languageserver-protocol "3.16.0"
11966+
11967+
vscode-languageserver-protocol@3.16.0:
11968+
version "3.16.0"
11969+
resolved "https://registry.yarnpkg.com/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.16.0.tgz#34135b61a9091db972188a07d337406a3cdbe821"
11970+
integrity sha512-sdeUoAawceQdgIfTI+sdcwkiK2KU+2cbEYA0agzM2uqaUy2UpnnGHtWTHVEtS0ES4zHU0eMFRGN+oQgDxlD66A==
11971+
dependencies:
11972+
vscode-jsonrpc "6.0.0"
11973+
vscode-languageserver-types "3.16.0"
11974+
11975+
vscode-languageserver-textdocument@^1.0.1:
11976+
version "1.0.8"
11977+
resolved "https://registry.yarnpkg.com/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.8.tgz#9eae94509cbd945ea44bca8dcfe4bb0c15bb3ac0"
11978+
integrity sha512-1bonkGqQs5/fxGT5UchTgjGVnfysL0O8v1AYMBjqTbWQTFn721zaPGDYFkOKtfDgFiSgXM3KwaG3FMGfW4Ed9Q==
11979+
11980+
vscode-languageserver-types@3.16.0:
11981+
version "3.16.0"
11982+
resolved "https://registry.yarnpkg.com/vscode-languageserver-types/-/vscode-languageserver-types-3.16.0.tgz#ecf393fc121ec6974b2da3efb3155644c514e247"
11983+
integrity sha512-k8luDIWJWyenLc5ToFQQMaSrqCHiLwyKPHKPQZ5zz21vM+vIVUSvsRpcbiECH4WR88K2XZqc4ScRcZ7nk/jbeA==
11984+
11985+
vscode-languageserver@^7.0.0:
11986+
version "7.0.0"
11987+
resolved "https://registry.yarnpkg.com/vscode-languageserver/-/vscode-languageserver-7.0.0.tgz#49b068c87cfcca93a356969d20f5d9bdd501c6b0"
11988+
integrity sha512-60HTx5ID+fLRcgdHfmz0LDZAXYEV68fzwG0JWwEPBode9NuMYTIxuYXPg4ngO8i8+Ou0lM7y6GzaYWbiDL0drw==
11989+
dependencies:
11990+
vscode-languageserver-protocol "3.16.0"
11991+
11992+
vscode-uri@^3.0.2:
11993+
version "3.0.7"
11994+
resolved "https://registry.yarnpkg.com/vscode-uri/-/vscode-uri-3.0.7.tgz#6d19fef387ee6b46c479e5fb00870e15e58c1eb8"
11995+
integrity sha512-eOpPHogvorZRobNqJGhapa0JdwaxpjVvyBp0QIUMRMSf8ZAlqOdEquKuRmw9Qwu0qXtJIWqFtMkmvJjUZmMjVA==
11996+
1191311997
w3c-xmlserializer@^4.0.0:
1191411998
version "4.0.0"
1191511999
resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz#aebdc84920d806222936e3cdce408e32488a3073"

0 commit comments

Comments
 (0)