diff --git a/.circleci/config.yml b/.circleci/config.yml index 4a4418c8924..360ec3c7f9e 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -96,8 +96,8 @@ jobs: - checkout - install_js - run: - name: Check Typescript types - command: pnpm check-types + name: Tests TypeScript definitions + command: pnpm typescript environment: NODE_OPTIONS: --max-old-space-size=3584 test_static: diff --git a/docs/data/toolpad/core/components/sign-in-page/ThemeSignInPage.js b/docs/data/toolpad/core/components/sign-in-page/ThemeSignInPage.js index 38d573b4453..97cc952e0bd 100644 --- a/docs/data/toolpad/core/components/sign-in-page/ThemeSignInPage.js +++ b/docs/data/toolpad/core/components/sign-in-page/ThemeSignInPage.js @@ -2,6 +2,7 @@ import * as React from 'react'; import { AppProvider } from '@toolpad/core/AppProvider'; import { SignInPage } from '@toolpad/core/SignInPage'; import { createTheme } from '@mui/material/styles'; + import { useColorSchemeShim } from 'docs/src/modules/components/ThemeContext'; import { getDesignTokens, inputsCustomizations } from './customTheme'; diff --git a/docs/data/toolpad/core/components/sign-in-page/ThemeSignInPage.tsx b/docs/data/toolpad/core/components/sign-in-page/ThemeSignInPage.tsx index d9ce9dc1702..d6affa646f5 100644 --- a/docs/data/toolpad/core/components/sign-in-page/ThemeSignInPage.tsx +++ b/docs/data/toolpad/core/components/sign-in-page/ThemeSignInPage.tsx @@ -6,6 +6,7 @@ import { type AuthResponse, } from '@toolpad/core/SignInPage'; import { createTheme } from '@mui/material/styles'; +// @ts-ignore import { useColorSchemeShim } from 'docs/src/modules/components/ThemeContext'; import { getDesignTokens, inputsCustomizations } from './customTheme'; diff --git a/docs/data/toolpad/core/components/sign-in-page/auth.js b/docs/data/toolpad/core/components/sign-in-page/auth.js deleted file mode 100644 index c1aed67f7dd..00000000000 --- a/docs/data/toolpad/core/components/sign-in-page/auth.js +++ /dev/null @@ -1,38 +0,0 @@ -/* eslint-disable import/no-unresolved */ -import NextAuth from 'next-auth'; -import GitHub from 'next-auth/providers/github'; - -const providers = [ - GitHub({ - clientId: process.env.GITHUB_CLIENT_ID, - clientSecret: process.env.GITHUB_CLIENT_SECRET, - }), -]; - -export const providerMap = providers.map((provider) => { - if (typeof provider === 'function') { - const providerData = provider(); - return { id: providerData.id, name: providerData.name }; - } - return { id: provider.id, name: provider.name }; -}); - -export const { handlers, auth, signIn, signOut } = NextAuth({ - providers, - secret: process.env.AUTH_SECRET, - pages: { - signIn: '/auth/signin', - }, - callbacks: { - authorized({ auth: session, request: { nextUrl } }) { - const isLoggedIn = !!session?.user; - const isPublicPage = nextUrl.pathname.startsWith('/public'); - - if (isPublicPage || isLoggedIn) { - return true; - } - - return false; // Redirect unauthenticated users to login page - }, - }, -}); diff --git a/docs/data/toolpad/core/components/sign-in-page/auth.ts b/docs/data/toolpad/core/components/sign-in-page/auth.ts deleted file mode 100644 index 849d32e4f23..00000000000 --- a/docs/data/toolpad/core/components/sign-in-page/auth.ts +++ /dev/null @@ -1,39 +0,0 @@ -/* eslint-disable import/no-unresolved */ -import NextAuth from 'next-auth'; -import GitHub from 'next-auth/providers/github'; -import type { Provider } from 'next-auth/providers'; - -const providers: Provider[] = [ - GitHub({ - clientId: process.env.GITHUB_CLIENT_ID, - clientSecret: process.env.GITHUB_CLIENT_SECRET, - }), -]; - -export const providerMap = providers.map((provider) => { - if (typeof provider === 'function') { - const providerData = provider(); - return { id: providerData.id, name: providerData.name }; - } - return { id: provider.id, name: provider.name }; -}); - -export const { handlers, auth, signIn, signOut } = NextAuth({ - providers, - secret: process.env.AUTH_SECRET, - pages: { - signIn: '/auth/signin', - }, - callbacks: { - authorized({ auth: session, request: { nextUrl } }) { - const isLoggedIn = !!session?.user; - const isPublicPage = nextUrl.pathname.startsWith('/public'); - - if (isPublicPage || isLoggedIn) { - return true; - } - - return false; // Redirect unauthenticated users to login page - }, - }, -}); diff --git a/docs/next.config.mjs b/docs/next.config.mjs index 6bfe68716e2..95a6807ea37 100644 --- a/docs/next.config.mjs +++ b/docs/next.config.mjs @@ -8,10 +8,10 @@ const currentDirectory = url.fileURLToPath(new URL('.', import.meta.url)); const require = createRequire(import.meta.url); +// @ts-ignore const withDocsInfra = require('@mui/monorepo/docs/nextConfigDocsInfra'); -const pkg = require('../package.json'); -const { findPages } = require('./src/modules/utils/find'); +const { findPages } = require('./src/modules/utils/find.js'); const WORKSPACE_ROOT = path.resolve(currentDirectory, '../'); const MONOREPO_PATH = path.resolve(currentDirectory, '../node_modules/@mui/monorepo'); @@ -44,6 +44,7 @@ export default withDocsInfra({ TOOLPAD_CORE_VERSION: toolpadCorePkg.version, TOOLPAD_STUDIO_VERSION: toolpadStudioPkg.version, }, + // @ts-ignore webpack: (config, options) => { return { ...config, @@ -126,11 +127,14 @@ export default withDocsInfra({ const pages = findPages(); const map = {}; + // @ts-ignore function traverse(pages2, userLanguage) { const prefix = userLanguage === 'en' ? '' : `/${userLanguage}`; + // @ts-ignore pages2.forEach((page) => { if (!page.children) { + // @ts-ignore map[`${prefix}${page.pathname.replace(/^\/api-docs\/(.*)/, '/api/$1')}`] = { page: page.pathname, query: { diff --git a/docs/src/components/landing/ToolpadAuthDemo.tsx b/docs/src/components/landing/ToolpadAuthDemo.tsx index 69d4c9e78a6..50047dffd97 100644 --- a/docs/src/components/landing/ToolpadAuthDemo.tsx +++ b/docs/src/components/landing/ToolpadAuthDemo.tsx @@ -1,6 +1,7 @@ import * as React from 'react'; import Paper from '@mui/material/Paper'; import { HighlightedCode } from '@mui/docs/HighlightedCode'; +// @ts-ignore import DemoSandbox from 'docs/src/modules/components/DemoSandbox'; import { AppProvider } from '@toolpad/core/AppProvider'; import { SignInPage, type AuthProvider } from '@toolpad/core/SignInPage'; @@ -16,9 +17,9 @@ const providers = [ { id: 'facebook', name: 'Facebook' }, ]; -const signIn = async (provider) => { - try { - await signIn(provider.id); +const signIn = async (provider) => { + try { + await signIn(provider.id); } catch (error) { // Handle errors } @@ -28,7 +29,7 @@ export default function OAuthSignInPage() { return ( - + ); } diff --git a/docs/src/components/landing/ToolpadDashboardLayout.tsx b/docs/src/components/landing/ToolpadDashboardLayout.tsx index 17059508cfd..b86724b522b 100644 --- a/docs/src/components/landing/ToolpadDashboardLayout.tsx +++ b/docs/src/components/landing/ToolpadDashboardLayout.tsx @@ -1,7 +1,6 @@ import * as React from 'react'; import Paper from '@mui/material/Paper'; import { HighlightedCode } from '@mui/docs/HighlightedCode'; - import DashboardIcon from '@mui/icons-material/Dashboard'; import ShoppingCartIcon from '@mui/icons-material/ShoppingCart'; import BarChartIcon from '@mui/icons-material/BarChart'; @@ -10,6 +9,7 @@ import LayersIcon from '@mui/icons-material/Layers'; import { AppProvider, type Navigation, type Router } from '@toolpad/core/AppProvider'; import { DashboardLayout } from '@toolpad/core/DashboardLayout'; import { PageContainer } from '@toolpad/core/PageContainer'; +// @ts-ignore import DemoSandbox from 'docs/src/modules/components/DemoSandbox'; import Grid from '@mui/material/Grid2'; import { styled } from '@mui/material/styles'; diff --git a/docs/src/components/landing/ToolpadPageContainerDemo.tsx b/docs/src/components/landing/ToolpadPageContainerDemo.tsx index e13e45035af..ee9fd38c956 100644 --- a/docs/src/components/landing/ToolpadPageContainerDemo.tsx +++ b/docs/src/components/landing/ToolpadPageContainerDemo.tsx @@ -1,6 +1,7 @@ import * as React from 'react'; import Frame from 'docs/src/components/action/Frame'; import Paper from '@mui/material/Paper'; +// @ts-ignore import DemoSandbox from 'docs/src/modules/components/DemoSandbox'; import { HighlightedCode } from '@mui/docs/HighlightedCode'; import { AppProvider } from '@toolpad/core/AppProvider'; diff --git a/docs/src/modules/components/Examples/FeaturedExamples.tsx b/docs/src/modules/components/Examples/FeaturedExamples.tsx index c935d807b9d..264658cb125 100644 --- a/docs/src/modules/components/Examples/FeaturedExamples.tsx +++ b/docs/src/modules/components/Examples/FeaturedExamples.tsx @@ -15,6 +15,7 @@ import Visibility from '@mui/icons-material/Visibility'; import CodeRoundedIcon from '@mui/icons-material/CodeRounded'; import OpenInNewRoundedIcon from '@mui/icons-material/OpenInNewRounded'; import { useTheme } from '@mui/material/styles'; +// @ts-ignore import { sxChip } from 'docs/src/modules/components/AppNavDrawerItem'; import type { Example } from './types'; diff --git a/docs/src/modules/components/SchemaReference.tsx b/docs/src/modules/components/SchemaReference.tsx index f8aa3d78179..42cade337a1 100644 --- a/docs/src/modules/components/SchemaReference.tsx +++ b/docs/src/modules/components/SchemaReference.tsx @@ -441,16 +441,6 @@ function JsonSchemaNameValueDisplay({ ); } -interface HeadingProps { - hash: string; - level: 'h2' | 'h3'; - title: string; -} - -function Heading({ hash, level: Level, title }: HeadingProps) { - return ; -} - interface JsonSchemaDisplayProps { name: string; hash: string; @@ -461,7 +451,7 @@ interface JsonSchemaDisplayProps { function JsonSchemaDisplay({ name, hash, schema, idPrefix = '' }: JsonSchemaDisplayProps) { return ( - + {schema.description} @@ -525,7 +515,7 @@ export default function SchemaReference(props: SchemaReferenceProps) { {toc.map((tocNode) => { return ( - + {tocNode.introduction} {tocNode.children.map((tocItemNode) => { invariant(typeof tocItemNode.content !== 'boolean', 'Invalid top level schema'); diff --git a/docs/src/modules/utils/babel-plugin-jsx-preview.js b/docs/src/modules/utils/babel-plugin-jsx-preview.js index 046190140e0..5d6e37977e9 100644 --- a/docs/src/modules/utils/babel-plugin-jsx-preview.js +++ b/docs/src/modules/utils/babel-plugin-jsx-preview.js @@ -1,4 +1,3 @@ -// @ts-check const fs = require('fs'); const pluginName = 'babel-plugin-jsx-preview'; diff --git a/docs/tsconfig.json b/docs/tsconfig.json index e4db4377baf..fd4b0c984a7 100644 --- a/docs/tsconfig.json +++ b/docs/tsconfig.json @@ -1,19 +1,17 @@ { "extends": "../tsconfig.json", "compilerOptions": { - "moduleResolution": "bundler", "allowJs": true, "isolatedModules": true, /* files are emitted by babel */ "noEmit": true, + "noUnusedLocals": true, "resolveJsonModule": true, "skipLibCheck": true, "esModuleInterop": true, - "types": ["react", "node"], "incremental": true, - "noImplicitAny": true, - "jsx": "preserve" + "moduleResolution": "bundler" }, - "include": ["docs-env.d.ts", "pages/**/*", "src/**/*", "data/**/*", "next.config.mjs"], - "exclude": ["docs/.next", "docs/export"] + "include": ["next-env.d.ts", "next.config.mjs", "docs-env.d.ts", "src", "pages/**/*.ts*", "data"], + "exclude": ["docs/.next", "docs/export", "node_modules"] } diff --git a/package.json b/package.json index 62302572d3e..dc2541ef06b 100644 --- a/package.json +++ b/package.json @@ -33,7 +33,8 @@ "test:browser": "FORCE_COLOR=1 pnpm run -r test:browser", "test:argos": "node ./scripts/pushArgos.mjs", "test": "lerna run test --stream", - "check-types": "lerna run --concurrency 1 check-types", + "typescript": "lerna run --concurrency 1 --no-bail typescript", + "typescript:ci": "lerna run --concurrency 2 --no-bail typescript", "toolpad-studio": "node --enable-source-maps packages/toolpad-studio/cli.mjs", "jsonSchemas": "tsx ./scripts/docs/generateJsonSchemas.ts", "monorepo:update": "tsx ./scripts/updateMonorepo.ts", diff --git a/packages/create-toolpad-app/package.json b/packages/create-toolpad-app/package.json index 0f0c043744d..0415343fd21 100644 --- a/packages/create-toolpad-app/package.json +++ b/packages/create-toolpad-app/package.json @@ -23,7 +23,7 @@ "scripts": { "build": "tsup", "dev": "tsup --watch", - "check-types": "tsc --noEmit", + "typescript": "tsc --noEmit", "test": "vitest run" }, "engines": { diff --git a/packages/toolpad-core/package.json b/packages/toolpad-core/package.json index 604d8a528ec..aa6673ac353 100644 --- a/packages/toolpad-core/package.json +++ b/packages/toolpad-core/package.json @@ -47,7 +47,7 @@ "build:types": "tsc -b tsconfig.build.json", "predev": "pnpm clean", "dev": "mkdir -p build && concurrently \"pnpm build:stable --watch\" \"pnpm build:types --watch --preserveWatchOutput\" \"pnpm build:copy-files\"", - "check-types": "pnpm build:types && tsc --noEmit", + "typescript": "pnpm build:types && tsc --noEmit", "test": "vitest run --coverage", "test:dev": "vitest", "test:browser": "vitest run --browser.enabled", diff --git a/packages/toolpad-studio-components/package.json b/packages/toolpad-studio-components/package.json index 8aa80ac3d2e..d6f028a787f 100644 --- a/packages/toolpad-studio-components/package.json +++ b/packages/toolpad-studio-components/package.json @@ -34,7 +34,7 @@ "scripts": { "build": "tsup", "dev": "tsup --watch", - "check-types": "tsup && tsc --noEmit", + "typescript": "tsup && tsc --noEmit", "build:types": "tsc --declaration --emitDeclarationOnly" }, "bugs": { diff --git a/packages/toolpad-studio-runtime/package.json b/packages/toolpad-studio-runtime/package.json index 41c4878473b..5d48d4e14a6 100644 --- a/packages/toolpad-studio-runtime/package.json +++ b/packages/toolpad-studio-runtime/package.json @@ -37,7 +37,7 @@ "scripts": { "build": "tsup", "dev": "tsup --watch", - "check-types": "tsup && tsc --noEmit" + "typescript": "tsup && tsc --noEmit" }, "bugs": { "url": "https://github.com/mui/toolpad/issues" diff --git a/packages/toolpad-studio/package.json b/packages/toolpad-studio/package.json index 9eedcceef10..1113965226f 100644 --- a/packages/toolpad-studio/package.json +++ b/packages/toolpad-studio/package.json @@ -13,7 +13,7 @@ "fix": "prettier --write .", "build:cli": "tsup", "dev:cli": "tsup --watch", - "check-types": "tsup && tsc --noEmit", + "typescript": "tsup && tsc --noEmit", "test": "vitest run" }, "keywords": [ diff --git a/packages/toolpad-utils/package.json b/packages/toolpad-utils/package.json index ece090915c8..39b57e95fd5 100644 --- a/packages/toolpad-utils/package.json +++ b/packages/toolpad-utils/package.json @@ -45,7 +45,7 @@ "scripts": { "build": "tsup", "dev": "tsup --watch", - "check-types": "tsup && tsc --noEmit", + "typescript": "tsup && tsc --noEmit", "test": "vitest run --coverage" }, "bugs": {