summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHiDeoo2024-05-03 11:45:29 +0200
committerGitHub2024-05-03 11:45:29 +0200
commit95ace6d51c7bf631863b06ee46bbc9b6dff6828a (patch)
treef4e439da6310644e1c5384b36d957f455bfff1b0
parentdcdc25ae8019eb44d9d45c37e57a7a4c394acaa2 (diff)
downloadIT.starlight-95ace6d51c7bf631863b06ee46bbc9b6dff6828a.tar.gz
IT.starlight-95ace6d51c7bf631863b06ee46bbc9b6dff6828a.tar.bz2
IT.starlight-95ace6d51c7bf631863b06ee46bbc9b6dff6828a.zip
Add type checking job to the CI workflow (#1827)
Co-authored-by: Chris Swithinbank <swithinbank@gmail.com>
-rw-r--r--.github/workflows/ci.yml17
-rw-r--r--package.json4
-rw-r--r--packages/starlight/__tests__/basics/route-data.test.ts1
-rw-r--r--packages/starlight/__tests__/basics/starlight-page-route-data-extend.test.ts2
-rw-r--r--packages/starlight/__tests__/edit-url/edit-url.test.ts1
-rw-r--r--packages/starlight/__tests__/i18n-non-root-single-locale/routing.test.ts1
-rw-r--r--packages/starlight/utils/createPathFormatter.ts1
-rw-r--r--packages/starlight/utils/user-config.ts2
-rw-r--r--packages/tailwind/vitest.config.ts12
-rw-r--r--pnpm-lock.yaml38
-rw-r--r--tsconfig.typecheck.json4
11 files changed, 61 insertions, 22 deletions
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index beb12cf4..5b7a5b94 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -44,6 +44,23 @@ jobs:
- name: Test packages
run: pnpm -r test:e2e
+ type-check:
+ name: Run type checks
+ runs-on: ubuntu-20.04
+ steps:
+ - uses: actions/checkout@v4
+ - uses: pnpm/action-setup@v3
+ - uses: actions/setup-node@v4
+ with:
+ node-version: ${{ env.NODE_VERSION }}
+ cache: 'pnpm'
+ - run: pnpm i
+ - name: Generate docs types
+ working-directory: docs
+ run: pnpm astro sync
+ - name: Type check packages
+ run: pnpm typecheck
+
pa11y:
name: Check for accessibility issues
runs-on: ubuntu-20.04
diff --git a/package.json b/package.json
index 8e0fd9e6..b730b6c7 100644
--- a/package.json
+++ b/package.json
@@ -7,7 +7,8 @@
"build:examples": "pnpm --no-bail --workspace-concurrency 1 --filter '@example/*' build",
"size": "size-limit",
"version": "pnpm changeset version && pnpm i --no-frozen-lockfile",
- "format": "prettier -w --cache --plugin prettier-plugin-astro ."
+ "format": "prettier -w --cache --plugin prettier-plugin-astro .",
+ "typecheck": "tsc -p tsconfig.typecheck.json"
},
"license": "MIT",
"devDependencies": {
@@ -17,6 +18,7 @@
"astro": "^4.3.5",
"prettier": "^3.0.0",
"prettier-plugin-astro": "^0.13.0",
+ "typescript": "^5.4.5",
"size-limit": "^8.2.4"
},
"packageManager": "pnpm@8.7.4",
diff --git a/packages/starlight/__tests__/basics/route-data.test.ts b/packages/starlight/__tests__/basics/route-data.test.ts
index eacd5334..d59ce013 100644
--- a/packages/starlight/__tests__/basics/route-data.test.ts
+++ b/packages/starlight/__tests__/basics/route-data.test.ts
@@ -7,6 +7,7 @@ vi.mock('astro:content', async () =>
docs: [
['index.mdx', { title: 'Home Page' }],
['getting-started.mdx', { title: 'Splash', template: 'splash' }],
+ // @ts-expect-error — Using a slug not present in Starlight docs site
['showcase.mdx', { title: 'ToC Disabled', tableOfContents: false }],
['environmental-impact.md', { title: 'Explicit update date', lastUpdated: new Date() }],
],
diff --git a/packages/starlight/__tests__/basics/starlight-page-route-data-extend.test.ts b/packages/starlight/__tests__/basics/starlight-page-route-data-extend.test.ts
index 3ab5b8f5..23438c7a 100644
--- a/packages/starlight/__tests__/basics/starlight-page-route-data-extend.test.ts
+++ b/packages/starlight/__tests__/basics/starlight-page-route-data-extend.test.ts
@@ -1,4 +1,4 @@
-import { assert, expect, test, vi } from 'vitest';
+import { expect, test, vi } from 'vitest';
import {
generateStarlightPageRouteData,
type StarlightPageProps,
diff --git a/packages/starlight/__tests__/edit-url/edit-url.test.ts b/packages/starlight/__tests__/edit-url/edit-url.test.ts
index 25ab98aa..c77aa93d 100644
--- a/packages/starlight/__tests__/edit-url/edit-url.test.ts
+++ b/packages/starlight/__tests__/edit-url/edit-url.test.ts
@@ -8,6 +8,7 @@ vi.mock('astro:content', async () =>
['index.mdx', { title: 'Home Page' }],
['getting-started.mdx', { title: 'Getting Started' }],
[
+ // @ts-expect-error — Using a slug not present in Starlight docs site
'showcase.mdx',
{ title: 'Custom edit link', editUrl: 'https://example.com/custom-edit?link' },
],
diff --git a/packages/starlight/__tests__/i18n-non-root-single-locale/routing.test.ts b/packages/starlight/__tests__/i18n-non-root-single-locale/routing.test.ts
index 2caef2f5..11058ec0 100644
--- a/packages/starlight/__tests__/i18n-non-root-single-locale/routing.test.ts
+++ b/packages/starlight/__tests__/i18n-non-root-single-locale/routing.test.ts
@@ -5,6 +5,7 @@ vi.mock('astro:content', async () =>
(await import('../test-utils')).mockedAstroContent({
docs: [
['fr/index.mdx', { title: 'Accueil' }],
+ // @ts-expect-error — Using a slug not present in Starlight docs site
['en/index.mdx', { title: 'Home page' }],
],
})
diff --git a/packages/starlight/utils/createPathFormatter.ts b/packages/starlight/utils/createPathFormatter.ts
index af363186..f4db6f7a 100644
--- a/packages/starlight/utils/createPathFormatter.ts
+++ b/packages/starlight/utils/createPathFormatter.ts
@@ -34,6 +34,7 @@ function formatPath(
href: string,
{ format = 'directory', trailingSlash = 'ignore' }: FormatPathOptions
) {
+ // @ts-expect-error — TODO: add support for `preserve` (https://github.com/withastro/starlight/issues/1781)
const formatStrategy = formatStrategies[format];
const trailingSlashStrategy = trailingSlashStrategies[trailingSlash];
diff --git a/packages/starlight/utils/user-config.ts b/packages/starlight/utils/user-config.ts
index 31f00077..efd6193e 100644
--- a/packages/starlight/utils/user-config.ts
+++ b/packages/starlight/utils/user-config.ts
@@ -256,7 +256,7 @@ export const StarlightConfigSchema = UserConfigSchema.strict().transform(
const defaultLocaleConfig = {
label: 'English',
lang: 'en',
- dir: 'ltr',
+ dir: 'ltr' as const,
locale: undefined,
...locales?.root,
};
diff --git a/packages/tailwind/vitest.config.ts b/packages/tailwind/vitest.config.ts
index b29e52cd..f32a3d0b 100644
--- a/packages/tailwind/vitest.config.ts
+++ b/packages/tailwind/vitest.config.ts
@@ -4,11 +4,13 @@ export default defineConfig({
test: {
coverage: {
reportsDirectory: './__coverage__',
- thresholdAutoUpdate: true,
- lines: 100,
- functions: 100,
- branches: 100,
- statements: 100,
+ thresholds: {
+ autoUpdate: true,
+ lines: 94,
+ functions: 100,
+ branches: 85,
+ statements: 94,
+ },
},
},
});
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 1094b3f4..032db9c1 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -19,7 +19,7 @@ importers:
version: 8.2.4(size-limit@8.2.4)
astro:
specifier: ^4.3.5
- version: 4.3.5(@types/node@18.16.19)
+ version: 4.3.5(@types/node@18.16.19)(typescript@5.4.5)
prettier:
specifier: ^3.0.0
version: 3.0.0
@@ -29,6 +29,9 @@ importers:
size-limit:
specifier: ^8.2.4
version: 8.2.4
+ typescript:
+ specifier: ^5.4.5
+ version: 5.4.5
docs:
dependencies:
@@ -46,7 +49,7 @@ importers:
version: 2.0.0
astro:
specifier: ^4.3.5
- version: 4.3.5(@types/node@18.16.19)
+ version: 4.3.5(@types/node@18.16.19)(typescript@5.4.5)
culori:
specifier: ^3.2.0
version: 3.2.0
@@ -71,7 +74,7 @@ importers:
version: link:../../packages/starlight
astro:
specifier: ^4.3.5
- version: 4.3.5(@types/node@18.16.19)
+ version: 4.3.5(@types/node@18.16.19)(typescript@5.4.5)
sharp:
specifier: ^0.32.5
version: 0.32.6
@@ -89,7 +92,7 @@ importers:
version: 5.1.0(astro@4.3.5)(tailwindcss@3.4.1)
astro:
specifier: ^4.3.5
- version: 4.3.5(@types/node@18.16.19)
+ version: 4.3.5(@types/node@18.16.19)(typescript@5.4.5)
sharp:
specifier: ^0.32.5
version: 0.32.6
@@ -196,7 +199,7 @@ importers:
version: 1.3.1(vitest@1.3.1)
astro:
specifier: ^4.3.5
- version: 4.3.5(@types/node@18.16.19)
+ version: 4.3.5(@types/node@18.16.19)(typescript@5.4.5)
vitest:
specifier: ^1.3.1
version: 1.3.1(@types/node@18.16.19)
@@ -208,7 +211,7 @@ importers:
version: link:../../..
astro:
specifier: ^4.3.5
- version: 4.3.5(@types/node@18.16.19)
+ version: 4.3.5(@types/node@18.16.19)(typescript@5.4.5)
packages/tailwind:
dependencies:
@@ -385,7 +388,7 @@ packages:
peerDependencies:
astro: ^2.0.0 || ^3.0.0-beta || ^4.0.0-beta
dependencies:
- astro: 4.3.5(@types/node@18.16.19)
+ astro: 4.3.5(@types/node@18.16.19)(typescript@5.4.5)
lite-youtube-embed: 0.2.0
dev: false
@@ -428,7 +431,7 @@ packages:
'@astrojs/markdown-remark': 4.2.1
'@mdx-js/mdx': 3.0.0
acorn: 8.11.3
- astro: 4.3.5(@types/node@18.16.19)
+ astro: 4.3.5(@types/node@18.16.19)(typescript@5.4.5)
es-module-lexer: 1.4.1
estree-util-visit: 2.0.0
github-slugger: 2.0.0
@@ -464,7 +467,7 @@ packages:
astro: ^3.0.0 || ^4.0.0
tailwindcss: ^3.0.24
dependencies:
- astro: 4.3.5(@types/node@18.16.19)
+ astro: 4.3.5(@types/node@18.16.19)(typescript@5.4.5)
autoprefixer: 10.4.15(postcss@8.4.33)
postcss: 8.4.33
postcss-load-config: 4.0.2(postcss@8.4.33)
@@ -1856,11 +1859,11 @@ packages:
peerDependencies:
astro: ^4.0.0-beta || ^3.3.0
dependencies:
- astro: 4.3.5(@types/node@18.16.19)
+ astro: 4.3.5(@types/node@18.16.19)(typescript@5.4.5)
rehype-expressive-code: 0.35.2
dev: false
- /astro@4.3.5(@types/node@18.16.19):
+ /astro@4.3.5(@types/node@18.16.19)(typescript@5.4.5):
resolution: {integrity: sha512-7jPffNlcmDO94NlkWe/hUWta/pIjlx1LVD/DZb/fyjT1Jv+7mGhKZBIjkDfeVpequW70mep8cAS5RM7Pxa0Gdg==}
engines: {node: '>=18.14.1', npm: '>=6.14.0'}
hasBin: true
@@ -1921,7 +1924,7 @@ packages:
shikiji: 0.9.19
string-width: 7.0.0
strip-ansi: 7.1.0
- tsconfck: 3.0.0
+ tsconfck: 3.0.0(typescript@5.4.5)
unist-util-visit: 5.0.0
vfile: 6.0.1
vite: 5.0.12(@types/node@18.16.19)
@@ -6013,7 +6016,7 @@ packages:
astro: '>=4.0.0'
dependencies:
'@astrojs/starlight': link:packages/starlight
- astro: 4.3.5(@types/node@18.16.19)
+ astro: 4.3.5(@types/node@18.16.19)(typescript@5.4.5)
github-slugger: 2.0.0
hast-util-from-html: 2.0.1
hast-util-has-property: 3.0.0
@@ -6394,7 +6397,7 @@ packages:
resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==}
dev: false
- /tsconfck@3.0.0:
+ /tsconfck@3.0.0(typescript@5.4.5):
resolution: {integrity: sha512-w3wnsIrJNi7avf4Zb0VjOoodoO0woEqGgZGQm+LHH9przdUI+XDKsWAXwxHA1DaRTjeuZNcregSzr7RaA8zG9A==}
engines: {node: ^18 || >=20}
hasBin: true
@@ -6403,6 +6406,8 @@ packages:
peerDependenciesMeta:
typescript:
optional: true
+ dependencies:
+ typescript: 5.4.5
/tslib@2.5.0:
resolution: {integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==}
@@ -6470,6 +6475,11 @@ packages:
is-typed-array: 1.1.10
dev: true
+ /typescript@5.4.5:
+ resolution: {integrity: sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==}
+ engines: {node: '>=14.17'}
+ hasBin: true
+
/ufo@1.3.2:
resolution: {integrity: sha512-o+ORpgGwaYQXgqGDwd+hkS4PuZ3QnmqMMxRuajK/a38L6fTpcE5GPIfrf+L/KemFzfUpeUQc1rRS1iDBozvnFA==}
dev: true
diff --git a/tsconfig.typecheck.json b/tsconfig.typecheck.json
new file mode 100644
index 00000000..1327de77
--- /dev/null
+++ b/tsconfig.typecheck.json
@@ -0,0 +1,4 @@
+{
+ "extends": "./tsconfig.json",
+ "exclude": ["**/dist/**", "**/__coverage__/**", "packages/starlight/components.ts"]
+}