From f81f65114415fcd183fdbff52cb2541338fae4e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dudak?= Date: Tue, 22 Nov 2022 15:20:58 +0100 Subject: [PATCH 01/19] Move API builder scripts to a separate directory --- .../ApiBuilders/ComponentApiBuilder.ts | 2 +- docs/scripts/{ => apiDocsBuilder}/buildApi.ts | 4 ++-- docs/scripts/{ => apiDocsBuilder}/buildApiUtils.test.ts | 0 docs/scripts/{ => apiDocsBuilder}/buildApiUtils.ts | 0 docs/scripts/tsconfig.json | 7 ++++++- package.json | 2 +- 6 files changed, 10 insertions(+), 5 deletions(-) rename docs/scripts/{ => apiDocsBuilder}/ApiBuilders/ComponentApiBuilder.ts (99%) rename docs/scripts/{ => apiDocsBuilder}/buildApi.ts (98%) rename docs/scripts/{ => apiDocsBuilder}/buildApiUtils.test.ts (100%) rename docs/scripts/{ => apiDocsBuilder}/buildApiUtils.ts (100%) diff --git a/docs/scripts/ApiBuilders/ComponentApiBuilder.ts b/docs/scripts/apiDocsBuilder/ApiBuilders/ComponentApiBuilder.ts similarity index 99% rename from docs/scripts/ApiBuilders/ComponentApiBuilder.ts rename to docs/scripts/apiDocsBuilder/ApiBuilders/ComponentApiBuilder.ts index a4917ea6b9e38d..192803332c2e2b 100644 --- a/docs/scripts/ApiBuilders/ComponentApiBuilder.ts +++ b/docs/scripts/apiDocsBuilder/ApiBuilders/ComponentApiBuilder.ts @@ -24,7 +24,7 @@ import createDescribeableProp, { import generatePropDescription from 'docs/src/modules/utils/generatePropDescription'; import parseStyles, { Styles } from 'docs/src/modules/utils/parseStyles'; import * as ttp from 'typescript-to-proptypes'; -import { getUnstyledFilename } from '../helpers'; +import { getUnstyledFilename } from '../../helpers'; import { ComponentInfo } from '../buildApiUtils'; const DEFAULT_PRETTIER_CONFIG_PATH = path.join(process.cwd(), 'prettier.config.js'); diff --git a/docs/scripts/buildApi.ts b/docs/scripts/apiDocsBuilder/buildApi.ts similarity index 98% rename from docs/scripts/buildApi.ts rename to docs/scripts/apiDocsBuilder/buildApi.ts index 1ad496137ee54f..ccbbd5cf636656 100644 --- a/docs/scripts/buildApi.ts +++ b/docs/scripts/apiDocsBuilder/buildApi.ts @@ -11,11 +11,11 @@ import { getBaseComponentInfo, getSystemComponentInfo, extractApiPage, -} from 'docs/scripts/buildApiUtils'; +} from './buildApiUtils'; import generateComponentApi, { writePrettifiedFile, ReactApi, -} from 'docs/scripts/ApiBuilders/ComponentApiBuilder'; +} from './ApiBuilders/ComponentApiBuilder'; const apiDocsTranslationsDirectory = path.resolve('docs', 'translations', 'api-docs'); diff --git a/docs/scripts/buildApiUtils.test.ts b/docs/scripts/apiDocsBuilder/buildApiUtils.test.ts similarity index 100% rename from docs/scripts/buildApiUtils.test.ts rename to docs/scripts/apiDocsBuilder/buildApiUtils.test.ts diff --git a/docs/scripts/buildApiUtils.ts b/docs/scripts/apiDocsBuilder/buildApiUtils.ts similarity index 100% rename from docs/scripts/buildApiUtils.ts rename to docs/scripts/apiDocsBuilder/buildApiUtils.ts diff --git a/docs/scripts/tsconfig.json b/docs/scripts/tsconfig.json index 642093a4d30cab..39dd3b005072eb 100644 --- a/docs/scripts/tsconfig.json +++ b/docs/scripts/tsconfig.json @@ -1,6 +1,11 @@ { "extends": "../../tsconfig.json", - "include": ["../types/react-docgen.d.ts", "buildApi.ts", "i18n.js", "ApiBuilders/**/*"], + "include": [ + "../types/react-docgen.d.ts", + "apiDocsBuilder/buildApi.ts", + "apiDocsBuilder/ApiBuilders/**/*", + "i18n.js" + ], "compilerOptions": { "allowJs": true, "isolatedModules": true, diff --git a/package.json b/package.json index a635bfb7af1dcc..0171001b65bdc1 100644 --- a/package.json +++ b/package.json @@ -14,7 +14,7 @@ "release:publish:dry-run": "lerna publish from-package --dist-tag latest --contents build --registry=\"http://localhost:4873/\"", "release:tag": "node scripts/releaseTag.mjs", "docs:api": "rimraf ./docs/pages/**/api-docs ./docs/pages/**/api && yarn docs:api:build", - "docs:api:build": "cross-env BABEL_ENV=development __NEXT_EXPORT_TRAILING_SLASH=true babel-node --extensions \".tsx,.ts,.js\" ./docs/scripts/buildApi.ts", + "docs:api:build": "cross-env BABEL_ENV=development __NEXT_EXPORT_TRAILING_SLASH=true babel-node --extensions \".tsx,.ts,.js\" ./docs/scripts/apiDocsBuilder/buildApi.ts", "docs:build": "yarn workspace docs build", "docs:build-sw": "yarn workspace docs build-sw", "docs:build-color-preview": "babel-node scripts/buildColorTypes", From 6d2d3f06ac4a34f0d7b122ba25882404e1826b83 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dudak?= Date: Tue, 22 Nov 2022 23:34:45 +0100 Subject: [PATCH 02/19] Move API docs generation scripts to a single directory --- docs/config.js | 6 ++ .../ApiBuilders/ComponentApiBuilder.ts | 19 +++-- docs/scripts/apiDocsBuilder/buildApi.ts | 2 +- docs/scripts/apiDocsBuilder/buildApiUtils.ts | 6 +- .../utils/createDescribeableProp.ts | 0 .../utils/defaultPropsHandler.js | 0 .../apiDocsBuilder/utils/escapeCell.ts | 4 + .../apiDocsBuilder/utils/findComponents.ts | 32 ++++++++ .../apiDocsBuilder/utils/findPagesMarkdown.ts | 48 ++++++++++++ .../utils/generatePropDescription.ts | 4 +- .../utils/generatePropTypeDescription.ts | 2 +- .../apiDocsBuilder}/utils/parseStyles.ts | 0 .../apiDocsBuilder}/utils/parseTest.ts | 2 +- .../apiDocsBuilder}/utils/replaceUrl.test.js | 0 .../apiDocsBuilder}/utils/replaceUrl.ts | 0 docs/scripts/tsconfig.json | 7 +- docs/src/modules/constants.js | 5 +- docs/src/modules/utils/find.js | 76 ------------------- docs/src/modules/utils/helpers.ts | 5 -- docs/tsconfig.json | 9 ++- 20 files changed, 118 insertions(+), 109 deletions(-) create mode 100644 docs/config.js rename docs/{src/modules => scripts/apiDocsBuilder}/utils/createDescribeableProp.ts (100%) rename docs/{src/modules => scripts/apiDocsBuilder}/utils/defaultPropsHandler.js (100%) create mode 100644 docs/scripts/apiDocsBuilder/utils/escapeCell.ts create mode 100644 docs/scripts/apiDocsBuilder/utils/findComponents.ts create mode 100644 docs/scripts/apiDocsBuilder/utils/findPagesMarkdown.ts rename docs/{src/modules => scripts/apiDocsBuilder}/utils/generatePropDescription.ts (97%) rename docs/{src/modules => scripts/apiDocsBuilder}/utils/generatePropTypeDescription.ts (98%) rename docs/{src/modules => scripts/apiDocsBuilder}/utils/parseStyles.ts (100%) rename docs/{src/modules => scripts/apiDocsBuilder}/utils/parseTest.ts (98%) rename docs/{src/modules => scripts/apiDocsBuilder}/utils/replaceUrl.test.js (100%) rename docs/{src/modules => scripts/apiDocsBuilder}/utils/replaceUrl.ts (100%) diff --git a/docs/config.js b/docs/config.js new file mode 100644 index 00000000000000..4718083cf6aec2 --- /dev/null +++ b/docs/config.js @@ -0,0 +1,6 @@ +module.exports = { + /** + * Valid languages to server-side render in production + */ + LANGUAGES: ['en', 'zh', 'pt'], +}; diff --git a/docs/scripts/apiDocsBuilder/ApiBuilders/ComponentApiBuilder.ts b/docs/scripts/apiDocsBuilder/ApiBuilders/ComponentApiBuilder.ts index 192803332c2e2b..448780ba0bae87 100644 --- a/docs/scripts/apiDocsBuilder/ApiBuilders/ComponentApiBuilder.ts +++ b/docs/scripts/apiDocsBuilder/ApiBuilders/ComponentApiBuilder.ts @@ -11,19 +11,18 @@ import remarkVisit from 'unist-util-visit'; import { Link } from 'mdast'; import { defaultHandlers, parse as docgenParse, ReactDocgenApi } from 'react-docgen'; import { unstable_generateUtilityClass as generateUtilityClass } from '@mui/utils'; -import muiDefaultPropsHandler from 'docs/src/modules/utils/defaultPropsHandler'; -import { LANGUAGES } from 'docs/src/modules/constants'; -import parseTest from 'docs/src/modules/utils/parseTest'; -import generatePropTypeDescription, { - getChained, -} from 'docs/src/modules/utils/generatePropTypeDescription'; import { renderInline as renderMarkdownInline } from '@mui/markdown'; +import * as ttp from 'typescript-to-proptypes'; + +import muiDefaultPropsHandler from '../utils/defaultPropsHandler'; +import { LANGUAGES } from '../../../config'; +import parseTest from '../utils/parseTest'; +import generatePropTypeDescription, { getChained } from '../utils/generatePropTypeDescription'; import createDescribeableProp, { DescribeablePropDescriptor, -} from 'docs/src/modules/utils/createDescribeableProp'; -import generatePropDescription from 'docs/src/modules/utils/generatePropDescription'; -import parseStyles, { Styles } from 'docs/src/modules/utils/parseStyles'; -import * as ttp from 'typescript-to-proptypes'; +} from '../utils/createDescribeableProp'; +import generatePropDescription from '../utils/generatePropDescription'; +import parseStyles, { Styles } from '../utils/parseStyles'; import { getUnstyledFilename } from '../../helpers'; import { ComponentInfo } from '../buildApiUtils'; diff --git a/docs/scripts/apiDocsBuilder/buildApi.ts b/docs/scripts/apiDocsBuilder/buildApi.ts index ccbbd5cf636656..9bbf34ba27263a 100644 --- a/docs/scripts/apiDocsBuilder/buildApi.ts +++ b/docs/scripts/apiDocsBuilder/buildApi.ts @@ -4,7 +4,7 @@ import path from 'path'; import kebabCase from 'lodash/kebabCase'; import * as yargs from 'yargs'; import * as ttp from 'typescript-to-proptypes'; -import { findComponents } from 'docs/src/modules/utils/find'; +import findComponents from './utils/findComponents'; import { ComponentInfo, getMaterialComponentInfo, diff --git a/docs/scripts/apiDocsBuilder/buildApiUtils.ts b/docs/scripts/apiDocsBuilder/buildApiUtils.ts index 9817589bb47fb6..ca23d54be11b94 100644 --- a/docs/scripts/apiDocsBuilder/buildApiUtils.ts +++ b/docs/scripts/apiDocsBuilder/buildApiUtils.ts @@ -2,9 +2,9 @@ import fs from 'fs'; import path from 'path'; import kebabCase from 'lodash/kebabCase'; import { getHeaders, getTitle } from '@mui/markdown'; -import { findPagesMarkdownNew } from 'docs/src/modules/utils/find'; -import { getLineFeed } from 'docs/scripts/helpers'; -import { replaceComponentLinks } from 'docs/src/modules/utils/replaceUrl'; +import { replaceComponentLinks } from './utils/replaceUrl'; +import findPagesMarkdownNew from './utils/findPagesMarkdown'; +import { getLineFeed } from '../helpers'; const systemComponents = fs .readdirSync(path.resolve('packages', 'mui-system', 'src')) diff --git a/docs/src/modules/utils/createDescribeableProp.ts b/docs/scripts/apiDocsBuilder/utils/createDescribeableProp.ts similarity index 100% rename from docs/src/modules/utils/createDescribeableProp.ts rename to docs/scripts/apiDocsBuilder/utils/createDescribeableProp.ts diff --git a/docs/src/modules/utils/defaultPropsHandler.js b/docs/scripts/apiDocsBuilder/utils/defaultPropsHandler.js similarity index 100% rename from docs/src/modules/utils/defaultPropsHandler.js rename to docs/scripts/apiDocsBuilder/utils/defaultPropsHandler.js diff --git a/docs/scripts/apiDocsBuilder/utils/escapeCell.ts b/docs/scripts/apiDocsBuilder/utils/escapeCell.ts new file mode 100644 index 00000000000000..336895a52bc2c8 --- /dev/null +++ b/docs/scripts/apiDocsBuilder/utils/escapeCell.ts @@ -0,0 +1,4 @@ +export default function escapeCell(value: string): string { + // As the pipe is use for the table structure + return value.replace(/} components + */ +export default function findComponents(directory: string, components: { filename: string }[] = []) { + const items = fs.readdirSync(directory); + + items.forEach((item) => { + const itemPath = path.resolve(directory, item); + + if (fs.statSync(itemPath).isDirectory()) { + findComponents(itemPath, components); + return; + } + + if (!componentRegex.test(item)) { + return; + } + + components.push({ + filename: itemPath, + }); + }); + + return components; +} diff --git a/docs/scripts/apiDocsBuilder/utils/findPagesMarkdown.ts b/docs/scripts/apiDocsBuilder/utils/findPagesMarkdown.ts new file mode 100644 index 00000000000000..cc733e6e2c2d40 --- /dev/null +++ b/docs/scripts/apiDocsBuilder/utils/findPagesMarkdown.ts @@ -0,0 +1,48 @@ +import fs from 'fs'; +import path from 'path'; + +interface MarkdownPage { + filename: string; + pathname: string; +} + +/** + * Returns the markdowns of the documentation in a flat array. + */ +export default function findPagesMarkdownNew( + directory: string = path.resolve(__dirname, '../../../data'), + pagesMarkdown: MarkdownPage[] = [], +) { + const items = fs.readdirSync(directory); + + items.forEach((item) => { + const itemPath = path.resolve(directory, item); + + if (fs.statSync(itemPath).isDirectory()) { + findPagesMarkdownNew(itemPath, pagesMarkdown); + return; + } + + if (!/\.md$/.test(item) || /-(zh|pt)\.md/.test(item)) { + // neglect translation markdown + return; + } + + let pathname = itemPath + .replace(new RegExp(`\\${path.sep}`, 'g'), '/') + .replace(/^.*\/data/, '') + .replace('.md', ''); + + // Remove the last pathname segment. + pathname = pathname.split('/').slice(0, 4).join('/'); + + pagesMarkdown.push({ + // Relative location in the path (URL) system. + pathname, + // Relative location in the file system. + filename: itemPath, + }); + }); + + return pagesMarkdown; +} diff --git a/docs/src/modules/utils/generatePropDescription.ts b/docs/scripts/apiDocsBuilder/utils/generatePropDescription.ts similarity index 97% rename from docs/src/modules/utils/generatePropDescription.ts rename to docs/scripts/apiDocsBuilder/utils/generatePropDescription.ts index 4b41e15deb5d9f..3fd2b93fd24a44 100644 --- a/docs/src/modules/utils/generatePropDescription.ts +++ b/docs/scripts/apiDocsBuilder/utils/generatePropDescription.ts @@ -4,9 +4,9 @@ import { PropTypeDescriptor } from 'react-docgen'; import { isElementTypeAcceptingRefProp, isElementAcceptingRefProp, -} from 'docs/src/modules/utils/generatePropTypeDescription'; +} from './generatePropTypeDescription'; import { DescribeablePropDescriptor } from './createDescribeableProp'; -import { escapeCell } from './helpers'; +import escapeCell from './escapeCell'; function resolveType(type: NonNullable): string { if (type.type === 'AllLiteral') { diff --git a/docs/src/modules/utils/generatePropTypeDescription.ts b/docs/scripts/apiDocsBuilder/utils/generatePropTypeDescription.ts similarity index 98% rename from docs/src/modules/utils/generatePropTypeDescription.ts rename to docs/scripts/apiDocsBuilder/utils/generatePropTypeDescription.ts index 8b42bca1c57a03..66fdf8335e078a 100644 --- a/docs/src/modules/utils/generatePropTypeDescription.ts +++ b/docs/scripts/apiDocsBuilder/utils/generatePropTypeDescription.ts @@ -1,6 +1,6 @@ import * as recast from 'recast'; import { parse as docgenParse, PropTypeDescriptor } from 'react-docgen'; -import { escapeCell } from './helpers'; +import escapeCell from './escapeCell'; function getDeprecatedInfo(type: PropTypeDescriptor) { const marker = /deprecatedPropType\((\r*\n)*\s*PropTypes\./g; diff --git a/docs/src/modules/utils/parseStyles.ts b/docs/scripts/apiDocsBuilder/utils/parseStyles.ts similarity index 100% rename from docs/src/modules/utils/parseStyles.ts rename to docs/scripts/apiDocsBuilder/utils/parseStyles.ts diff --git a/docs/src/modules/utils/parseTest.ts b/docs/scripts/apiDocsBuilder/utils/parseTest.ts similarity index 98% rename from docs/src/modules/utils/parseTest.ts rename to docs/scripts/apiDocsBuilder/utils/parseTest.ts index ce88c0a05f3767..496a9114a8e53b 100644 --- a/docs/src/modules/utils/parseTest.ts +++ b/docs/scripts/apiDocsBuilder/utils/parseTest.ts @@ -2,7 +2,7 @@ import * as babel from '@babel/core'; import { readFile, existsSync } from 'fs-extra'; import * as path from 'path'; -const workspaceRoot = path.join(__dirname, '../../../../'); +const workspaceRoot = path.join(__dirname, '../../../'); const babelConfigPath = path.join(workspaceRoot, 'babel.config.js'); function withExtension(filepath: string, extension: string) { diff --git a/docs/src/modules/utils/replaceUrl.test.js b/docs/scripts/apiDocsBuilder/utils/replaceUrl.test.js similarity index 100% rename from docs/src/modules/utils/replaceUrl.test.js rename to docs/scripts/apiDocsBuilder/utils/replaceUrl.test.js diff --git a/docs/src/modules/utils/replaceUrl.ts b/docs/scripts/apiDocsBuilder/utils/replaceUrl.ts similarity index 100% rename from docs/src/modules/utils/replaceUrl.ts rename to docs/scripts/apiDocsBuilder/utils/replaceUrl.ts diff --git a/docs/scripts/tsconfig.json b/docs/scripts/tsconfig.json index 39dd3b005072eb..b6be86730fb14d 100644 --- a/docs/scripts/tsconfig.json +++ b/docs/scripts/tsconfig.json @@ -1,11 +1,6 @@ { "extends": "../../tsconfig.json", - "include": [ - "../types/react-docgen.d.ts", - "apiDocsBuilder/buildApi.ts", - "apiDocsBuilder/ApiBuilders/**/*", - "i18n.js" - ], + "include": ["../types/react-docgen.d.ts", "apiDocsBuilder/**/*", "i18n.js"], "compilerOptions": { "allowJs": true, "isolatedModules": true, diff --git a/docs/src/modules/constants.js b/docs/src/modules/constants.js index c0bedb732e16d6..2519fa7d891594 100644 --- a/docs/src/modules/constants.js +++ b/docs/src/modules/constants.js @@ -1,11 +1,10 @@ +const { LANGUAGES } = require('../../config'); + const CODE_VARIANTS = { JS: 'JS', TS: 'TS', }; -// Valid languages to server-side render in production -const LANGUAGES = ['en', 'zh', 'pt']; - // Server side rendered languages const LANGUAGES_SSR = ['en', 'zh', 'pt']; diff --git a/docs/src/modules/utils/find.js b/docs/src/modules/utils/find.js index 952852e4bba698..1c9ca0a1dff28c 100644 --- a/docs/src/modules/utils/find.js +++ b/docs/src/modules/utils/find.js @@ -1,80 +1,6 @@ const fs = require('fs'); const path = require('path'); -/** - * Returns the markdowns of the documentation in a flat array. - * @param {string} [directory] - * @param {Array<{ filename: string, pathname: string }>} [pagesMarkdown] - * @returns {Array<{ filename: string, pathname: string }>} - */ -function findPagesMarkdownNew( - directory = path.resolve(__dirname, '../../../data'), - pagesMarkdown = [], -) { - const items = fs.readdirSync(directory); - - items.forEach((item) => { - const itemPath = path.resolve(directory, item); - - if (fs.statSync(itemPath).isDirectory()) { - findPagesMarkdownNew(itemPath, pagesMarkdown); - return; - } - - if (!/\.md$/.test(item) || /-(zh|pt)\.md/.test(item)) { - // neglect translation markdown - return; - } - - let pathname = itemPath - .replace(new RegExp(`\\${path.sep}`, 'g'), '/') - .replace(/^.*\/data/, '') - .replace('.md', ''); - - // Remove the last pathname segment. - pathname = pathname.split('/').slice(0, 4).join('/'); - - pagesMarkdown.push({ - // Relative location in the path (URL) system. - pathname, - // Relative location in the file system. - filename: itemPath, - }); - }); - - return pagesMarkdown; -} - -const componentRegex = /^(Unstable_)?([A-Z][a-z]+)+\.(js|tsx)/; - -/** - * Returns the component source in a flat array. - * @param {string} directory - * @param {Array<{ filename: string }>} components - */ -function findComponents(directory, components = []) { - const items = fs.readdirSync(directory); - - items.forEach((item) => { - const itemPath = path.resolve(directory, item); - - if (fs.statSync(itemPath).isDirectory()) { - findComponents(itemPath, components); - return; - } - - if (!componentRegex.test(item)) { - return; - } - - components.push({ - filename: itemPath, - }); - }); - - return components; -} - const pageRegex = /(\.js|\.tsx)$/; const blackList = ['/.eslintrc', '/_document', '/_app']; @@ -157,6 +83,4 @@ function findPages( module.exports = { findPages, - findPagesMarkdownNew, - findComponents, }; diff --git a/docs/src/modules/utils/helpers.ts b/docs/src/modules/utils/helpers.ts index e4c53e2746e9a4..d1d61e9851a363 100644 --- a/docs/src/modules/utils/helpers.ts +++ b/docs/src/modules/utils/helpers.ts @@ -106,8 +106,3 @@ export function pathnameToLanguage(pathname: string): { canonicalPathname, }; } - -export function escapeCell(value: string): string { - // As the pipe is use for the table structure - return value.replace(/ Date: Wed, 23 Nov 2022 11:33:10 +0100 Subject: [PATCH 03/19] [core] Move API docs generator to an internal package --- .../ApiBuilders/ComponentApiBuilder.ts | 3 +- .../apiDocsBuilder/buildApi.ts | 2 +- .../apiDocsBuilder/buildApiUtils.test.ts | 0 .../apiDocsBuilder/buildApiUtils.ts | 3 +- docs/packages/apiDocsBuilder/package.json | 28 +++++++ docs/packages/apiDocsBuilder/tsconfig.json | 22 ++++++ .../utils/createDescribeableProp.ts | 0 .../utils/defaultPropsHandler.ts} | 73 +++++++------------ .../apiDocsBuilder/utils/escapeCell.ts | 0 .../apiDocsBuilder/utils/findComponents.ts | 0 .../apiDocsBuilder/utils/findPagesMarkdown.ts | 0 .../utils/generatePropDescription.ts | 0 .../utils/generatePropTypeDescription.ts | 0 .../apiDocsBuilder/utils/parseStyles.ts | 0 .../apiDocsBuilder/utils/parseTest.ts | 0 .../apiDocsBuilder/utils/replaceUrl.test.js | 0 .../apiDocsBuilder/utils/replaceUrl.ts | 0 .../docsUtilities/index.ts} | 19 ++--- docs/packages/docsUtilities/package.json | 6 ++ docs/tsconfig.json | 9 +-- package.json | 2 +- packages/typescript-to-proptypes/package.json | 2 + scripts/generateProptypes.ts | 6 +- yarn.lock | 69 +++++++++++++----- 24 files changed, 152 insertions(+), 92 deletions(-) rename docs/{scripts => packages}/apiDocsBuilder/ApiBuilders/ComponentApiBuilder.ts (99%) rename docs/{scripts => packages}/apiDocsBuilder/buildApi.ts (99%) rename docs/{scripts => packages}/apiDocsBuilder/buildApiUtils.test.ts (100%) rename docs/{scripts => packages}/apiDocsBuilder/buildApiUtils.ts (99%) create mode 100644 docs/packages/apiDocsBuilder/package.json create mode 100644 docs/packages/apiDocsBuilder/tsconfig.json rename docs/{scripts => packages}/apiDocsBuilder/utils/createDescribeableProp.ts (100%) rename docs/{scripts/apiDocsBuilder/utils/defaultPropsHandler.js => packages/apiDocsBuilder/utils/defaultPropsHandler.ts} (76%) rename docs/{scripts => packages}/apiDocsBuilder/utils/escapeCell.ts (100%) rename docs/{scripts => packages}/apiDocsBuilder/utils/findComponents.ts (100%) rename docs/{scripts => packages}/apiDocsBuilder/utils/findPagesMarkdown.ts (100%) rename docs/{scripts => packages}/apiDocsBuilder/utils/generatePropDescription.ts (100%) rename docs/{scripts => packages}/apiDocsBuilder/utils/generatePropTypeDescription.ts (100%) rename docs/{scripts => packages}/apiDocsBuilder/utils/parseStyles.ts (100%) rename docs/{scripts => packages}/apiDocsBuilder/utils/parseTest.ts (100%) rename docs/{scripts => packages}/apiDocsBuilder/utils/replaceUrl.test.js (100%) rename docs/{scripts => packages}/apiDocsBuilder/utils/replaceUrl.ts (100%) rename docs/{scripts/helpers.js => packages/docsUtilities/index.ts} (82%) create mode 100644 docs/packages/docsUtilities/package.json diff --git a/docs/scripts/apiDocsBuilder/ApiBuilders/ComponentApiBuilder.ts b/docs/packages/apiDocsBuilder/ApiBuilders/ComponentApiBuilder.ts similarity index 99% rename from docs/scripts/apiDocsBuilder/ApiBuilders/ComponentApiBuilder.ts rename to docs/packages/apiDocsBuilder/ApiBuilders/ComponentApiBuilder.ts index 448780ba0bae87..5976ed560a3342 100644 --- a/docs/scripts/apiDocsBuilder/ApiBuilders/ComponentApiBuilder.ts +++ b/docs/packages/apiDocsBuilder/ApiBuilders/ComponentApiBuilder.ts @@ -11,7 +11,9 @@ import remarkVisit from 'unist-util-visit'; import { Link } from 'mdast'; import { defaultHandlers, parse as docgenParse, ReactDocgenApi } from 'react-docgen'; import { unstable_generateUtilityClass as generateUtilityClass } from '@mui/utils'; +// @ts-ignore import { renderInline as renderMarkdownInline } from '@mui/markdown'; +import { getUnstyledFilename } from '@mui-internal/docs-utilities'; import * as ttp from 'typescript-to-proptypes'; import muiDefaultPropsHandler from '../utils/defaultPropsHandler'; @@ -23,7 +25,6 @@ import createDescribeableProp, { } from '../utils/createDescribeableProp'; import generatePropDescription from '../utils/generatePropDescription'; import parseStyles, { Styles } from '../utils/parseStyles'; -import { getUnstyledFilename } from '../../helpers'; import { ComponentInfo } from '../buildApiUtils'; const DEFAULT_PRETTIER_CONFIG_PATH = path.join(process.cwd(), 'prettier.config.js'); diff --git a/docs/scripts/apiDocsBuilder/buildApi.ts b/docs/packages/apiDocsBuilder/buildApi.ts similarity index 99% rename from docs/scripts/apiDocsBuilder/buildApi.ts rename to docs/packages/apiDocsBuilder/buildApi.ts index 9bbf34ba27263a..5037ed5349c1c3 100644 --- a/docs/scripts/apiDocsBuilder/buildApi.ts +++ b/docs/packages/apiDocsBuilder/buildApi.ts @@ -66,7 +66,7 @@ const getAllFiles = (dirPath: string, arrayOfFiles: string[] = []) => { function findApiPages(relativeFolder: string) { let pages: Array<{ pathname: string }> = []; - let filePaths = []; + let filePaths: string[] = []; try { filePaths = getAllFiles(path.join(process.cwd(), relativeFolder)); } catch (error) { diff --git a/docs/scripts/apiDocsBuilder/buildApiUtils.test.ts b/docs/packages/apiDocsBuilder/buildApiUtils.test.ts similarity index 100% rename from docs/scripts/apiDocsBuilder/buildApiUtils.test.ts rename to docs/packages/apiDocsBuilder/buildApiUtils.test.ts diff --git a/docs/scripts/apiDocsBuilder/buildApiUtils.ts b/docs/packages/apiDocsBuilder/buildApiUtils.ts similarity index 99% rename from docs/scripts/apiDocsBuilder/buildApiUtils.ts rename to docs/packages/apiDocsBuilder/buildApiUtils.ts index ca23d54be11b94..3ae6752e2deac1 100644 --- a/docs/scripts/apiDocsBuilder/buildApiUtils.ts +++ b/docs/packages/apiDocsBuilder/buildApiUtils.ts @@ -1,10 +1,11 @@ import fs from 'fs'; import path from 'path'; import kebabCase from 'lodash/kebabCase'; +// @ts-ignore import { getHeaders, getTitle } from '@mui/markdown'; +import { getLineFeed } from '@mui-internal/docs-utilities'; import { replaceComponentLinks } from './utils/replaceUrl'; import findPagesMarkdownNew from './utils/findPagesMarkdown'; -import { getLineFeed } from '../helpers'; const systemComponents = fs .readdirSync(path.resolve('packages', 'mui-system', 'src')) diff --git a/docs/packages/apiDocsBuilder/package.json b/docs/packages/apiDocsBuilder/package.json new file mode 100644 index 00000000000000..5d8e65ed2a4f92 --- /dev/null +++ b/docs/packages/apiDocsBuilder/package.json @@ -0,0 +1,28 @@ +{ + "name": "@mui-internal/api-docs-builder", + "version": "1.0.0", + "private": "true", + "main": "./buildApi.ts", + "scripts": { + "typescript": "tsc -p tsconfig.json" + }, + "dependencies": { + "@babel/core": "^7.20.2", + "@mui-internal/docs-utilities": "*", + "@mui/markdown": "*", + "ast-types": "^0.14.2", + "doctrine": "^3.0.0", + "lodash": "^4.17.21", + "react-docgen": "^5.4.3", + "recast": "^0.21.5", + "typescript-to-proptypes": "*", + "yargs": "^17.6.2" + }, + "devDependencies": { + "@types/mocha": "^10.0.0", + "@types/node": "^18.11.9", + "chai": "^4.3.7", + "sinon": "^14.0.2", + "typescript": "^4.9.3" + } +} diff --git a/docs/packages/apiDocsBuilder/tsconfig.json b/docs/packages/apiDocsBuilder/tsconfig.json new file mode 100644 index 00000000000000..419ec12e07af13 --- /dev/null +++ b/docs/packages/apiDocsBuilder/tsconfig.json @@ -0,0 +1,22 @@ +{ + "compilerOptions": { + "allowJs": true, + "isolatedModules": true, + "noEmit": true, + "noUnusedLocals": true, + "resolveJsonModule": true, + "skipLibCheck": true, + "esModuleInterop": true, + "types": ["node", "mocha"], + "target": "ES2020", + "module": "CommonJS", + "moduleResolution": "node", + "strict": true, + "baseUrl": "./", + "paths": { + "react-docgen": ["../../types/react-docgen.d.ts"] + } + }, + "include": ["./**/*.ts", "./**/*.js"], + "exclude": ["node_modules"] +} diff --git a/docs/scripts/apiDocsBuilder/utils/createDescribeableProp.ts b/docs/packages/apiDocsBuilder/utils/createDescribeableProp.ts similarity index 100% rename from docs/scripts/apiDocsBuilder/utils/createDescribeableProp.ts rename to docs/packages/apiDocsBuilder/utils/createDescribeableProp.ts diff --git a/docs/scripts/apiDocsBuilder/utils/defaultPropsHandler.js b/docs/packages/apiDocsBuilder/utils/defaultPropsHandler.ts similarity index 76% rename from docs/scripts/apiDocsBuilder/utils/defaultPropsHandler.js rename to docs/packages/apiDocsBuilder/utils/defaultPropsHandler.ts index 44367191af71ee..0b4ee83e45ca3d 100644 --- a/docs/scripts/apiDocsBuilder/utils/defaultPropsHandler.js +++ b/docs/packages/apiDocsBuilder/utils/defaultPropsHandler.ts @@ -1,7 +1,6 @@ -// @ts-check -const astTypes = require('ast-types'); -const { parse: parseDoctrine } = require('doctrine'); -const { utils: docgenUtils } = require('react-docgen'); +import astTypes from 'ast-types'; +import { parse as parseDoctrine, Annotation } from 'doctrine'; +import { utils as docgenUtils, NodePath, Documentation, Importer, Handler } from 'react-docgen'; const { getPropertyName, isReactForwardRefCall, printValue, resolveToValue } = docgenUtils; @@ -15,22 +14,18 @@ const { namedTypes: types } = astTypes; * @param {import('react-docgen').Importer} importer * @returns {{ value: string; computed: boolean } | null} */ -function getDefaultValue(propertyPath, importer) { +function getDefaultValue(propertyPath: NodePath, importer: Importer) { if (!types.AssignmentPattern.check(propertyPath.get('value').node)) { return null; } - /** - * @type import('react-docgen').NodePath - */ - let path = propertyPath.get('value', 'right'); + + let path: NodePath = propertyPath.get('value', 'right'); let node = path.node; - /** - * @type {string|undefined} - */ - let defaultValue; + let defaultValue: string | undefined; if (types.Literal.check(path.node)) { - // @ts-expect-error TODO upstream fix + // TODO: fix the type error + // @ts-ignore defaultValue = node.raw; } else { if (types.AssignmentPattern.check(path.node)) { @@ -68,11 +63,7 @@ function getDefaultValue(propertyPath, importer) { return null; } -/** - * @param {import('doctrine').Annotation} jsdoc - * @return {{ value: string } | undefined} - */ -function getJsdocDefaultValue(jsdoc) { +function getJsdocDefaultValue(jsdoc: Annotation): { value: string } | undefined { const defaultTag = jsdoc.tags.find((tag) => tag.title === 'default'); if (defaultTag === undefined) { return undefined; @@ -86,25 +77,26 @@ function getJsdocDefaultValue(jsdoc) { * @param {import('react-docgen').Importer} importer * @returns {void} */ -function getDefaultValuesFromProps(properties, documentation, importer) { +function getDefaultValuesFromProps( + properties: NodePath, + documentation: Documentation, + importer: Importer, +) { const { props: documentedProps } = documentation.toObject(); - /** - * @type Record - */ - const implementedProps = {}; + const implementedProps: Record = {}; properties .filter( /** * @param {import('react-docgen').NodePath} propertyPath */ - (propertyPath) => types.Property.check(propertyPath.node), + (propertyPath: NodePath) => types.Property.check(propertyPath.node), undefined, ) .forEach( /** * @param {import('react-docgen').NodePath} propertyPath */ - (propertyPath) => { + (propertyPath: NodePath) => { const propName = getPropertyName(propertyPath); if (propName) { implementedProps[propName] = propertyPath; @@ -142,12 +134,7 @@ function getDefaultValuesFromProps(properties, documentation, importer) { }); } -/** - * @param {import('react-docgen').NodePath} componentDefinition - * @param {import('react-docgen').Importer} importer - * @returns import('react-docgen').NodePath - */ -function getRenderBody(componentDefinition, importer) { +function getRenderBody(componentDefinition: NodePath, importer: Importer): NodePath { const value = resolveToValue(componentDefinition, importer); if (isReactForwardRefCall(value, importer)) { return value.get('arguments', 0, 'body', 'body'); @@ -155,22 +142,15 @@ function getRenderBody(componentDefinition, importer) { return value.get('body', 'body'); } -/** - * @param {import('react-docgen').NodePath} functionBody - * @returns import('react-docgen').NodePath | undefined - */ -function getPropsPath(functionBody) { - /** - * @type import('react-docgen').NodePath | undefined - */ - let propsPath; +function getPropsPath(functionBody: NodePath): NodePath | undefined { + let propsPath: NodePath | undefined; // visitVariableDeclarator, can't use visit body.node since it looses scope information functionBody .filter( /** * @param {import('react-docgen').NodePath} path */ - (path) => { + (path: NodePath) => { return types.VariableDeclaration.check(path.node); }, undefined, @@ -179,7 +159,7 @@ function getPropsPath(functionBody) { /** * @param {import('react-docgen').NodePath} path */ - (path) => { + (path: NodePath) => { const declaratorPath = path.get('declarations', 0); // find `const {} = props` // but not `const ownerState = props` @@ -195,10 +175,7 @@ function getPropsPath(functionBody) { return propsPath; } -/** - * @type {import('react-docgen').Handler} - */ -const defaultPropsHandler = (documentation, componentDefinition, importer) => { +const defaultPropsHandler: Handler = (documentation, componentDefinition, importer) => { const renderBody = getRenderBody(componentDefinition, importer); const props = getPropsPath(renderBody); if (props !== undefined) { @@ -206,4 +183,4 @@ const defaultPropsHandler = (documentation, componentDefinition, importer) => { } }; -module.exports = defaultPropsHandler; +export default defaultPropsHandler; diff --git a/docs/scripts/apiDocsBuilder/utils/escapeCell.ts b/docs/packages/apiDocsBuilder/utils/escapeCell.ts similarity index 100% rename from docs/scripts/apiDocsBuilder/utils/escapeCell.ts rename to docs/packages/apiDocsBuilder/utils/escapeCell.ts diff --git a/docs/scripts/apiDocsBuilder/utils/findComponents.ts b/docs/packages/apiDocsBuilder/utils/findComponents.ts similarity index 100% rename from docs/scripts/apiDocsBuilder/utils/findComponents.ts rename to docs/packages/apiDocsBuilder/utils/findComponents.ts diff --git a/docs/scripts/apiDocsBuilder/utils/findPagesMarkdown.ts b/docs/packages/apiDocsBuilder/utils/findPagesMarkdown.ts similarity index 100% rename from docs/scripts/apiDocsBuilder/utils/findPagesMarkdown.ts rename to docs/packages/apiDocsBuilder/utils/findPagesMarkdown.ts diff --git a/docs/scripts/apiDocsBuilder/utils/generatePropDescription.ts b/docs/packages/apiDocsBuilder/utils/generatePropDescription.ts similarity index 100% rename from docs/scripts/apiDocsBuilder/utils/generatePropDescription.ts rename to docs/packages/apiDocsBuilder/utils/generatePropDescription.ts diff --git a/docs/scripts/apiDocsBuilder/utils/generatePropTypeDescription.ts b/docs/packages/apiDocsBuilder/utils/generatePropTypeDescription.ts similarity index 100% rename from docs/scripts/apiDocsBuilder/utils/generatePropTypeDescription.ts rename to docs/packages/apiDocsBuilder/utils/generatePropTypeDescription.ts diff --git a/docs/scripts/apiDocsBuilder/utils/parseStyles.ts b/docs/packages/apiDocsBuilder/utils/parseStyles.ts similarity index 100% rename from docs/scripts/apiDocsBuilder/utils/parseStyles.ts rename to docs/packages/apiDocsBuilder/utils/parseStyles.ts diff --git a/docs/scripts/apiDocsBuilder/utils/parseTest.ts b/docs/packages/apiDocsBuilder/utils/parseTest.ts similarity index 100% rename from docs/scripts/apiDocsBuilder/utils/parseTest.ts rename to docs/packages/apiDocsBuilder/utils/parseTest.ts diff --git a/docs/scripts/apiDocsBuilder/utils/replaceUrl.test.js b/docs/packages/apiDocsBuilder/utils/replaceUrl.test.js similarity index 100% rename from docs/scripts/apiDocsBuilder/utils/replaceUrl.test.js rename to docs/packages/apiDocsBuilder/utils/replaceUrl.test.js diff --git a/docs/scripts/apiDocsBuilder/utils/replaceUrl.ts b/docs/packages/apiDocsBuilder/utils/replaceUrl.ts similarity index 100% rename from docs/scripts/apiDocsBuilder/utils/replaceUrl.ts rename to docs/packages/apiDocsBuilder/utils/replaceUrl.ts diff --git a/docs/scripts/helpers.js b/docs/packages/docsUtilities/index.ts similarity index 82% rename from docs/scripts/helpers.js rename to docs/packages/docsUtilities/index.ts index 27b95d16c6e41c..229af73a20c5e4 100644 --- a/docs/scripts/helpers.js +++ b/docs/packages/docsUtilities/index.ts @@ -1,18 +1,18 @@ -const os = require('os'); +import { EOL } from 'os'; /** * @param {string} source */ -function getLineFeed(source) { +function getLineFeed(source: string) { const match = source.match(/\r?\n/); - return match === null ? os.EOL : match[0]; + return match === null ? EOL : match[0]; } const fixBabelIssuesRegExp = /(?<=(\/>)|,)(\r?\n){2}/g; /** * @param {string} source */ -function fixBabelGeneratorIssues(source) { +function fixBabelGeneratorIssues(source: string) { return source.replace(fixBabelIssuesRegExp, '\n'); } @@ -20,7 +20,7 @@ function fixBabelGeneratorIssues(source) { * @param {string} source * @param {string} target */ -function fixLineEndings(source, target) { +function fixLineEndings(source: string, target: string) { return target.replace(/\r?\n/g, getLineFeed(source)); } @@ -28,7 +28,7 @@ function fixLineEndings(source, target) { * Converts styled or regular component d.ts file to unstyled d.ts * @param {string} filename - the file of the styled or regular mui component */ -function getUnstyledFilename(filename, definitionFile = false) { +function getUnstyledFilename(filename: string, definitionFile = false) { if (filename.indexOf('Unstyled') > -1) { return filename; } @@ -73,9 +73,4 @@ function getUnstyledFilename(filename, definitionFile = false) { return definitionFile ? `${unstyledFile}.d.ts` : `${unstyledFile}.js`; } -module.exports = { - getLineFeed, - fixBabelGeneratorIssues, - fixLineEndings, - getUnstyledFilename, -}; +export { getLineFeed, fixBabelGeneratorIssues, fixLineEndings, getUnstyledFilename }; diff --git a/docs/packages/docsUtilities/package.json b/docs/packages/docsUtilities/package.json new file mode 100644 index 00000000000000..e2ed73b95ecda2 --- /dev/null +++ b/docs/packages/docsUtilities/package.json @@ -0,0 +1,6 @@ +{ + "name": "@mui-internal/docs-utilities", + "version": "1.0.0", + "private": "true", + "main": "index.ts" +} diff --git a/docs/tsconfig.json b/docs/tsconfig.json index acd7c4910faaad..b3282c841557ef 100644 --- a/docs/tsconfig.json +++ b/docs/tsconfig.json @@ -1,13 +1,6 @@ { "extends": "../tsconfig.json", - "include": [ - "next-env.d.ts", - "types", - "src", - "pages", - "data", - "scripts/apiDocsBuilder/utils/generatePropDescription.ts" - ], + "include": ["next-env.d.ts", "types", "src", "pages", "data"], "compilerOptions": { "allowJs": true, "isolatedModules": true, diff --git a/package.json b/package.json index 0171001b65bdc1..9da2e252cae112 100644 --- a/package.json +++ b/package.json @@ -14,7 +14,7 @@ "release:publish:dry-run": "lerna publish from-package --dist-tag latest --contents build --registry=\"http://localhost:4873/\"", "release:tag": "node scripts/releaseTag.mjs", "docs:api": "rimraf ./docs/pages/**/api-docs ./docs/pages/**/api && yarn docs:api:build", - "docs:api:build": "cross-env BABEL_ENV=development __NEXT_EXPORT_TRAILING_SLASH=true babel-node --extensions \".tsx,.ts,.js\" ./docs/scripts/apiDocsBuilder/buildApi.ts", + "docs:api:build": "ts-node ./docs/packages/apiDocsBuilder/buildApi.ts", "docs:build": "yarn workspace docs build", "docs:build-sw": "yarn workspace docs build-sw", "docs:build-color-preview": "babel-node scripts/buildColorTypes", diff --git a/packages/typescript-to-proptypes/package.json b/packages/typescript-to-proptypes/package.json index 7b030b910c22a1..70ccb3db07fb45 100644 --- a/packages/typescript-to-proptypes/package.json +++ b/packages/typescript-to-proptypes/package.json @@ -8,6 +8,8 @@ "url": "https://github.com/mui/material-ui.git", "directory": "packages/typescript-to-proptypes" }, + "type": "module", + "main": "src/index.ts", "author": "merceyz ", "license": "MIT", "keywords": [ diff --git a/scripts/generateProptypes.ts b/scripts/generateProptypes.ts index 5a67fc82178292..3f06821d90d4f6 100644 --- a/scripts/generateProptypes.ts +++ b/scripts/generateProptypes.ts @@ -10,7 +10,7 @@ import { fixBabelGeneratorIssues, fixLineEndings, getUnstyledFilename, -} from '../docs/scripts/helpers'; +} from '@mui-internal/docs-utilities'; const useExternalPropsFromInputBase = [ 'autoComplete', @@ -356,7 +356,7 @@ async function run(argv: HandlerArgv) { const sourceFile = tsFile.includes('.d.ts') ? tsFile.replace('.d.ts', '.js') : tsFile; try { await generateProptypes(program, sourceFile, tsFile); - } catch (error) { + } catch (error: any) { error.message = `${tsFile}: ${error.message}`; throw error; } @@ -377,7 +377,7 @@ async function run(argv: HandlerArgv) { } yargs - .command({ + .command({ command: '$0', describe: 'Generates Component.propTypes from TypeScript declarations', builder: (command) => { diff --git a/yarn.lock b/yarn.lock index 8d9ef0af506d1e..c4a3cb6147f347 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3130,7 +3130,21 @@ dependencies: type-detect "4.0.8" -"@sinonjs/fake-timers@>=5", "@sinonjs/fake-timers@^9.1.2": +"@sinonjs/commons@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-2.0.0.tgz#fd4ca5b063554307e8327b4564bd56d3b73924a3" + integrity sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg== + dependencies: + type-detect "4.0.8" + +"@sinonjs/fake-timers@^7.0.4": + version "7.1.2" + resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-7.1.2.tgz#2524eae70c4910edccf99b2f4e6efc5894aff7b5" + integrity sha512-iQADsW4LBMISqZ6Ci1dupJL9pprqwcVFTcOsEmQOEhW+KLCVn/Y4Jrvg2k19fIHCp+iFprriYPTdRcQR8NbUPg== + dependencies: + "@sinonjs/commons" "^1.7.0" + +"@sinonjs/fake-timers@^9.1.2": version "9.1.2" resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-9.1.2.tgz#4eaab737fab77332ab132d396a3c0d364bd0ea8c" integrity sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw== @@ -3146,6 +3160,15 @@ lodash.get "^4.4.2" type-detect "^4.0.8" +"@sinonjs/samsam@^7.0.1": + version "7.0.1" + resolved "https://registry.yarnpkg.com/@sinonjs/samsam/-/samsam-7.0.1.tgz#5b5fa31c554636f78308439d220986b9523fc51f" + integrity sha512-zsAk2Jkiq89mhZovB2LLOdTCxJF4hqqTToGP0ASWlhp4I1hqOjcfmZGafXntCN7MDC6yySH0mFHrYtHceOeLmw== + dependencies: + "@sinonjs/commons" "^2.0.0" + lodash.get "^4.4.2" + type-detect "^4.0.8" + "@sinonjs/text-encoding@^0.7.1": version "0.7.2" resolved "https://registry.yarnpkg.com/@sinonjs/text-encoding/-/text-encoding-0.7.2.tgz#5981a8db18b56ba38ef0efb7d995b12aa7b51918" @@ -3691,7 +3714,7 @@ resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-10.0.0.tgz#3d9018c575f0e3f7386c1de80ee66cc21fbb7a52" integrity sha512-rADY+HtTOA52l9VZWtgQfn4p+UDVM2eDVkMZT1I6syp0YKxW2F9v+0pbRZLsvskhQv/vMb6ZfCay81GHbz5SHg== -"@types/node@*", "@types/node@>=10.0.0": +"@types/node@*", "@types/node@>=10.0.0", "@types/node@^18.11.9": version "18.11.9" resolved "https://registry.yarnpkg.com/@types/node/-/node-18.11.9.tgz#02d013de7058cea16d36168ef2fc653464cfbad4" integrity sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg== @@ -5439,14 +5462,14 @@ chai-dom@^1.11.0: resolved "https://registry.yarnpkg.com/chai-dom/-/chai-dom-1.11.0.tgz#aa3af405b3d9b0470d185b17081ed23ca5fdaeb4" integrity sha512-ZzGlEfk1UhHH5+N0t9bDqstOxPEXmn3EyXvtsok5rfXVDOFDJbHVy12rED6ZwkJAUDs2w7/Da4Hlq2LB63kltg== -chai@^4.3.6: - version "4.3.6" - resolved "https://registry.yarnpkg.com/chai/-/chai-4.3.6.tgz#ffe4ba2d9fa9d6680cc0b370adae709ec9011e9c" - integrity sha512-bbcp3YfHCUzMOvKqsztczerVgBKSsEijCySNlHHbX3VG1nskvqjz5Rfso1gGwD6w6oOV3eI60pKuMOV5MV7p3Q== +chai@^4.3.6, chai@^4.3.7: + version "4.3.7" + resolved "https://registry.yarnpkg.com/chai/-/chai-4.3.7.tgz#ec63f6df01829088e8bf55fca839bcd464a8ec51" + integrity sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A== dependencies: assertion-error "^1.1.0" check-error "^1.0.2" - deep-eql "^3.0.1" + deep-eql "^4.1.2" get-func-name "^2.0.0" loupe "^2.3.1" pathval "^1.1.1" @@ -6682,10 +6705,10 @@ dedent@^0.7.0: resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" integrity sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA== -deep-eql@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-3.0.1.tgz#dfc9404400ad1c8fe023e7da1df1c147c4b444df" - integrity sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw== +deep-eql@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-4.1.2.tgz#270ceb902f87724077e6f6449aed81463f42fc1c" + integrity sha512-gT18+YW4CcW/DBNTwAmqTtkJh7f9qqScu2qFVlx7kCoeY9tlBu9cUcr7+I+Z/noG8INehS3xQgLpTtd/QUTn4w== dependencies: type-detect "^4.0.0" @@ -11578,13 +11601,13 @@ nice-try@^1.0.4: resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== -nise@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/nise/-/nise-5.1.1.tgz#ac4237e0d785ecfcb83e20f389185975da5c31f3" - integrity sha512-yr5kW2THW1AkxVmCnKEh4nbYkJdB3I7LUkiUgOvEkOp414mc2UMaHMA7pjq1nYowhdoJZGwEKGaQVbxfpWj10A== +nise@^5.1.1, nise@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/nise/-/nise-5.1.2.tgz#a7b8909c216b3491fd4fc0b124efb69f3939b449" + integrity sha512-+gQjFi8v+tkfCuSCxfURHLhRhniE/+IaYbIphxAN2JRR9SHKhY8hgXpaXiYfHdw+gcGe4buxgbprBQFab9FkhA== dependencies: - "@sinonjs/commons" "^1.8.3" - "@sinonjs/fake-timers" ">=5" + "@sinonjs/commons" "^2.0.0" + "@sinonjs/fake-timers" "^7.0.4" "@sinonjs/text-encoding" "^0.7.1" just-extend "^4.0.2" path-to-regexp "^1.7.0" @@ -14417,6 +14440,18 @@ sinon@^13.0.2: nise "^5.1.1" supports-color "^7.2.0" +sinon@^14.0.2: + version "14.0.2" + resolved "https://registry.yarnpkg.com/sinon/-/sinon-14.0.2.tgz#585a81a3c7b22cf950762ac4e7c28eb8b151c46f" + integrity sha512-PDpV0ZI3ZCS3pEqx0vpNp6kzPhHrLx72wA0G+ZLaaJjLIYeE0n8INlgaohKuGy7hP0as5tbUd23QWu5U233t+w== + dependencies: + "@sinonjs/commons" "^2.0.0" + "@sinonjs/fake-timers" "^9.1.2" + "@sinonjs/samsam" "^7.0.1" + diff "^5.0.0" + nise "^5.1.2" + supports-color "^7.2.0" + sirv@^1.0.7: version "1.0.19" resolved "https://registry.yarnpkg.com/sirv/-/sirv-1.0.19.tgz#1d73979b38c7fe91fcba49c85280daa9c2363b49" From 3b56d51b7863791c354a89388c44f1943fdc41bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dudak?= Date: Thu, 24 Nov 2022 10:52:24 +0100 Subject: [PATCH 04/19] Fix errors in defaultPropsHandler --- docs/packages/apiDocsBuilder/utils/defaultPropsHandler.ts | 4 +--- packages/typescript-to-proptypes/package.json | 1 - 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/docs/packages/apiDocsBuilder/utils/defaultPropsHandler.ts b/docs/packages/apiDocsBuilder/utils/defaultPropsHandler.ts index 0b4ee83e45ca3d..96107935db9f4d 100644 --- a/docs/packages/apiDocsBuilder/utils/defaultPropsHandler.ts +++ b/docs/packages/apiDocsBuilder/utils/defaultPropsHandler.ts @@ -1,4 +1,4 @@ -import astTypes from 'ast-types'; +import { namedTypes as types } from 'ast-types'; import { parse as parseDoctrine, Annotation } from 'doctrine'; import { utils as docgenUtils, NodePath, Documentation, Importer, Handler } from 'react-docgen'; @@ -7,8 +7,6 @@ const { getPropertyName, isReactForwardRefCall, printValue, resolveToValue } = d // based on https://github.com/reactjs/react-docgen/blob/735f39ef784312f4c0e740d4bfb812f0a7acd3d5/src/handlers/defaultPropsHandler.js#L1-L112 // adjusted for material-ui getThemedProps -const { namedTypes: types } = astTypes; - /** * @param {import('react-docgen').NodePath} propertyPath * @param {import('react-docgen').Importer} importer diff --git a/packages/typescript-to-proptypes/package.json b/packages/typescript-to-proptypes/package.json index 70ccb3db07fb45..e38f5ca0926a4e 100644 --- a/packages/typescript-to-proptypes/package.json +++ b/packages/typescript-to-proptypes/package.json @@ -8,7 +8,6 @@ "url": "https://github.com/mui/material-ui.git", "directory": "packages/typescript-to-proptypes" }, - "type": "module", "main": "src/index.ts", "author": "merceyz ", "license": "MIT", From 01718f73b75118056b98c03ccb9b728d7a226bdd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dudak?= Date: Fri, 25 Nov 2022 10:59:52 +0100 Subject: [PATCH 05/19] Fix imports in formattedTSDemos --- docs/scripts/formattedTSDemos.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/scripts/formattedTSDemos.js b/docs/scripts/formattedTSDemos.js index 988782873999f0..cdce47d9fa36b1 100644 --- a/docs/scripts/formattedTSDemos.js +++ b/docs/scripts/formattedTSDemos.js @@ -17,7 +17,7 @@ const babel = require('@babel/core'); const prettier = require('prettier'); const typescriptToProptypes = require('typescript-to-proptypes'); const yargs = require('yargs'); -const { fixBabelGeneratorIssues, fixLineEndings } = require('./helpers'); +const { fixBabelGeneratorIssues, fixLineEndings } = require('@mui-internal/docs-utilities'); const tsConfig = typescriptToProptypes.loadConfig(path.resolve(__dirname, '../tsconfig.json')); From a97a5c85abcee7df526b2ee82abbcb8315479564 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dudak?= Date: Fri, 25 Nov 2022 11:34:27 +0100 Subject: [PATCH 06/19] Update themeProvider test to work with the new version of chai --- packages/mui-system/src/ThemeProvider/ThemeProvider.test.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/mui-system/src/ThemeProvider/ThemeProvider.test.js b/packages/mui-system/src/ThemeProvider/ThemeProvider.test.js index dbf974f6e35542..4572c1d001b4e6 100644 --- a/packages/mui-system/src/ThemeProvider/ThemeProvider.test.js +++ b/packages/mui-system/src/ThemeProvider/ThemeProvider.test.js @@ -22,7 +22,8 @@ describe('ThemeProvider', () => { , ); - expect(theme).to.deep.equal({ foo: 'foo' }); + + expect(theme).to.include({ foo: 'foo' }); }); it('should provide the theme to the styled engine theme context', () => { @@ -39,6 +40,6 @@ describe('ThemeProvider', () => { , ); - expect(theme).to.deep.equal({ foo: 'foo' }); + expect(theme).to.include({ foo: 'foo' }); }); }); From 94a5ee854b6b1577bf4303c0af14493495e3d971 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dudak?= Date: Tue, 29 Nov 2022 13:20:44 +0100 Subject: [PATCH 07/19] Add missing peer dependency --- package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/package.json b/package.json index 9da2e252cae112..d3580309451ceb 100644 --- a/package.json +++ b/package.json @@ -100,6 +100,7 @@ "@types/jsdom": "^20.0.1", "@types/lodash": "^4.14.190", "@types/mocha": "^10.0.0", + "@types/node": "^18.11.9", "@types/prettier": "^2.7.1", "@types/react": "^18.0.25", "@types/react-is": "^17.0.3", From be8ad9f6be2dbecb815c346f1ad3053f2097d5ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dudak?= Date: Tue, 29 Nov 2022 13:44:30 +0100 Subject: [PATCH 08/19] Rename directories to kebab case --- .../ApiBuilders/ComponentApiBuilder.ts | 0 docs/packages/{apiDocsBuilder => api-docs-builder}/buildApi.ts | 0 .../{apiDocsBuilder => api-docs-builder}/buildApiUtils.test.ts | 0 .../{apiDocsBuilder => api-docs-builder}/buildApiUtils.ts | 0 docs/packages/{apiDocsBuilder => api-docs-builder}/package.json | 0 .../packages/{apiDocsBuilder => api-docs-builder}/tsconfig.json | 0 .../utils/createDescribeableProp.ts | 0 .../utils/defaultPropsHandler.ts | 0 .../{apiDocsBuilder => api-docs-builder}/utils/escapeCell.ts | 0 .../utils/findComponents.ts | 0 .../utils/findPagesMarkdown.ts | 0 .../utils/generatePropDescription.ts | 0 .../utils/generatePropTypeDescription.ts | 0 .../{apiDocsBuilder => api-docs-builder}/utils/parseStyles.ts | 0 .../{apiDocsBuilder => api-docs-builder}/utils/parseTest.ts | 0 .../utils/replaceUrl.test.js | 0 .../{apiDocsBuilder => api-docs-builder}/utils/replaceUrl.ts | 0 docs/packages/{docsUtilities => docs-utilities}/index.ts | 0 docs/packages/{docsUtilities => docs-utilities}/package.json | 0 docs/scripts/tsconfig.json | 2 +- package.json | 2 +- 21 files changed, 2 insertions(+), 2 deletions(-) rename docs/packages/{apiDocsBuilder => api-docs-builder}/ApiBuilders/ComponentApiBuilder.ts (100%) rename docs/packages/{apiDocsBuilder => api-docs-builder}/buildApi.ts (100%) rename docs/packages/{apiDocsBuilder => api-docs-builder}/buildApiUtils.test.ts (100%) rename docs/packages/{apiDocsBuilder => api-docs-builder}/buildApiUtils.ts (100%) rename docs/packages/{apiDocsBuilder => api-docs-builder}/package.json (100%) rename docs/packages/{apiDocsBuilder => api-docs-builder}/tsconfig.json (100%) rename docs/packages/{apiDocsBuilder => api-docs-builder}/utils/createDescribeableProp.ts (100%) rename docs/packages/{apiDocsBuilder => api-docs-builder}/utils/defaultPropsHandler.ts (100%) rename docs/packages/{apiDocsBuilder => api-docs-builder}/utils/escapeCell.ts (100%) rename docs/packages/{apiDocsBuilder => api-docs-builder}/utils/findComponents.ts (100%) rename docs/packages/{apiDocsBuilder => api-docs-builder}/utils/findPagesMarkdown.ts (100%) rename docs/packages/{apiDocsBuilder => api-docs-builder}/utils/generatePropDescription.ts (100%) rename docs/packages/{apiDocsBuilder => api-docs-builder}/utils/generatePropTypeDescription.ts (100%) rename docs/packages/{apiDocsBuilder => api-docs-builder}/utils/parseStyles.ts (100%) rename docs/packages/{apiDocsBuilder => api-docs-builder}/utils/parseTest.ts (100%) rename docs/packages/{apiDocsBuilder => api-docs-builder}/utils/replaceUrl.test.js (100%) rename docs/packages/{apiDocsBuilder => api-docs-builder}/utils/replaceUrl.ts (100%) rename docs/packages/{docsUtilities => docs-utilities}/index.ts (100%) rename docs/packages/{docsUtilities => docs-utilities}/package.json (100%) diff --git a/docs/packages/apiDocsBuilder/ApiBuilders/ComponentApiBuilder.ts b/docs/packages/api-docs-builder/ApiBuilders/ComponentApiBuilder.ts similarity index 100% rename from docs/packages/apiDocsBuilder/ApiBuilders/ComponentApiBuilder.ts rename to docs/packages/api-docs-builder/ApiBuilders/ComponentApiBuilder.ts diff --git a/docs/packages/apiDocsBuilder/buildApi.ts b/docs/packages/api-docs-builder/buildApi.ts similarity index 100% rename from docs/packages/apiDocsBuilder/buildApi.ts rename to docs/packages/api-docs-builder/buildApi.ts diff --git a/docs/packages/apiDocsBuilder/buildApiUtils.test.ts b/docs/packages/api-docs-builder/buildApiUtils.test.ts similarity index 100% rename from docs/packages/apiDocsBuilder/buildApiUtils.test.ts rename to docs/packages/api-docs-builder/buildApiUtils.test.ts diff --git a/docs/packages/apiDocsBuilder/buildApiUtils.ts b/docs/packages/api-docs-builder/buildApiUtils.ts similarity index 100% rename from docs/packages/apiDocsBuilder/buildApiUtils.ts rename to docs/packages/api-docs-builder/buildApiUtils.ts diff --git a/docs/packages/apiDocsBuilder/package.json b/docs/packages/api-docs-builder/package.json similarity index 100% rename from docs/packages/apiDocsBuilder/package.json rename to docs/packages/api-docs-builder/package.json diff --git a/docs/packages/apiDocsBuilder/tsconfig.json b/docs/packages/api-docs-builder/tsconfig.json similarity index 100% rename from docs/packages/apiDocsBuilder/tsconfig.json rename to docs/packages/api-docs-builder/tsconfig.json diff --git a/docs/packages/apiDocsBuilder/utils/createDescribeableProp.ts b/docs/packages/api-docs-builder/utils/createDescribeableProp.ts similarity index 100% rename from docs/packages/apiDocsBuilder/utils/createDescribeableProp.ts rename to docs/packages/api-docs-builder/utils/createDescribeableProp.ts diff --git a/docs/packages/apiDocsBuilder/utils/defaultPropsHandler.ts b/docs/packages/api-docs-builder/utils/defaultPropsHandler.ts similarity index 100% rename from docs/packages/apiDocsBuilder/utils/defaultPropsHandler.ts rename to docs/packages/api-docs-builder/utils/defaultPropsHandler.ts diff --git a/docs/packages/apiDocsBuilder/utils/escapeCell.ts b/docs/packages/api-docs-builder/utils/escapeCell.ts similarity index 100% rename from docs/packages/apiDocsBuilder/utils/escapeCell.ts rename to docs/packages/api-docs-builder/utils/escapeCell.ts diff --git a/docs/packages/apiDocsBuilder/utils/findComponents.ts b/docs/packages/api-docs-builder/utils/findComponents.ts similarity index 100% rename from docs/packages/apiDocsBuilder/utils/findComponents.ts rename to docs/packages/api-docs-builder/utils/findComponents.ts diff --git a/docs/packages/apiDocsBuilder/utils/findPagesMarkdown.ts b/docs/packages/api-docs-builder/utils/findPagesMarkdown.ts similarity index 100% rename from docs/packages/apiDocsBuilder/utils/findPagesMarkdown.ts rename to docs/packages/api-docs-builder/utils/findPagesMarkdown.ts diff --git a/docs/packages/apiDocsBuilder/utils/generatePropDescription.ts b/docs/packages/api-docs-builder/utils/generatePropDescription.ts similarity index 100% rename from docs/packages/apiDocsBuilder/utils/generatePropDescription.ts rename to docs/packages/api-docs-builder/utils/generatePropDescription.ts diff --git a/docs/packages/apiDocsBuilder/utils/generatePropTypeDescription.ts b/docs/packages/api-docs-builder/utils/generatePropTypeDescription.ts similarity index 100% rename from docs/packages/apiDocsBuilder/utils/generatePropTypeDescription.ts rename to docs/packages/api-docs-builder/utils/generatePropTypeDescription.ts diff --git a/docs/packages/apiDocsBuilder/utils/parseStyles.ts b/docs/packages/api-docs-builder/utils/parseStyles.ts similarity index 100% rename from docs/packages/apiDocsBuilder/utils/parseStyles.ts rename to docs/packages/api-docs-builder/utils/parseStyles.ts diff --git a/docs/packages/apiDocsBuilder/utils/parseTest.ts b/docs/packages/api-docs-builder/utils/parseTest.ts similarity index 100% rename from docs/packages/apiDocsBuilder/utils/parseTest.ts rename to docs/packages/api-docs-builder/utils/parseTest.ts diff --git a/docs/packages/apiDocsBuilder/utils/replaceUrl.test.js b/docs/packages/api-docs-builder/utils/replaceUrl.test.js similarity index 100% rename from docs/packages/apiDocsBuilder/utils/replaceUrl.test.js rename to docs/packages/api-docs-builder/utils/replaceUrl.test.js diff --git a/docs/packages/apiDocsBuilder/utils/replaceUrl.ts b/docs/packages/api-docs-builder/utils/replaceUrl.ts similarity index 100% rename from docs/packages/apiDocsBuilder/utils/replaceUrl.ts rename to docs/packages/api-docs-builder/utils/replaceUrl.ts diff --git a/docs/packages/docsUtilities/index.ts b/docs/packages/docs-utilities/index.ts similarity index 100% rename from docs/packages/docsUtilities/index.ts rename to docs/packages/docs-utilities/index.ts diff --git a/docs/packages/docsUtilities/package.json b/docs/packages/docs-utilities/package.json similarity index 100% rename from docs/packages/docsUtilities/package.json rename to docs/packages/docs-utilities/package.json diff --git a/docs/scripts/tsconfig.json b/docs/scripts/tsconfig.json index b6be86730fb14d..e79ea50ef133fc 100644 --- a/docs/scripts/tsconfig.json +++ b/docs/scripts/tsconfig.json @@ -1,6 +1,6 @@ { "extends": "../../tsconfig.json", - "include": ["../types/react-docgen.d.ts", "apiDocsBuilder/**/*", "i18n.js"], + "include": ["../types/react-docgen.d.ts", "api-docs-builder/**/*", "i18n.js"], "compilerOptions": { "allowJs": true, "isolatedModules": true, diff --git a/package.json b/package.json index d3580309451ceb..ba46555d254720 100644 --- a/package.json +++ b/package.json @@ -14,7 +14,7 @@ "release:publish:dry-run": "lerna publish from-package --dist-tag latest --contents build --registry=\"http://localhost:4873/\"", "release:tag": "node scripts/releaseTag.mjs", "docs:api": "rimraf ./docs/pages/**/api-docs ./docs/pages/**/api && yarn docs:api:build", - "docs:api:build": "ts-node ./docs/packages/apiDocsBuilder/buildApi.ts", + "docs:api:build": "ts-node ./docs/packages/api-docs-builder/buildApi.ts", "docs:build": "yarn workspace docs build", "docs:build-sw": "yarn workspace docs build-sw", "docs:build-color-preview": "babel-node scripts/buildColorTypes", From 18a9959b248b9f68d1d076e1fbad679ec245eb14 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dudak?= Date: Tue, 29 Nov 2022 13:44:38 +0100 Subject: [PATCH 09/19] Clean up tsconfig --- docs/scripts/tsconfig.json | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/docs/scripts/tsconfig.json b/docs/scripts/tsconfig.json index e79ea50ef133fc..c30167c66d748e 100644 --- a/docs/scripts/tsconfig.json +++ b/docs/scripts/tsconfig.json @@ -1,6 +1,6 @@ { "extends": "../../tsconfig.json", - "include": ["../types/react-docgen.d.ts", "api-docs-builder/**/*", "i18n.js"], + "include": ["*.ts", "i18n.js"], "compilerOptions": { "allowJs": true, "isolatedModules": true, @@ -10,6 +10,5 @@ "skipLibCheck": true, "esModuleInterop": true, "types": ["node"] - }, - "exclude": ["node_modules"] + } } From b1b5cc79f1732b8fab1ab2b01e074c9ad31d78eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dudak?= Date: Tue, 29 Nov 2022 13:59:16 +0100 Subject: [PATCH 10/19] Specify types for mui-markdown --- .../ApiBuilders/ComponentApiBuilder.ts | 1 - docs/packages/markdown/index.d.ts | 18 ++++++++++++++++++ docs/packages/markdown/package.json | 1 + 3 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 docs/packages/markdown/index.d.ts diff --git a/docs/packages/api-docs-builder/ApiBuilders/ComponentApiBuilder.ts b/docs/packages/api-docs-builder/ApiBuilders/ComponentApiBuilder.ts index 5976ed560a3342..674cad43a8bada 100644 --- a/docs/packages/api-docs-builder/ApiBuilders/ComponentApiBuilder.ts +++ b/docs/packages/api-docs-builder/ApiBuilders/ComponentApiBuilder.ts @@ -11,7 +11,6 @@ import remarkVisit from 'unist-util-visit'; import { Link } from 'mdast'; import { defaultHandlers, parse as docgenParse, ReactDocgenApi } from 'react-docgen'; import { unstable_generateUtilityClass as generateUtilityClass } from '@mui/utils'; -// @ts-ignore import { renderInline as renderMarkdownInline } from '@mui/markdown'; import { getUnstyledFilename } from '@mui-internal/docs-utilities'; import * as ttp from 'typescript-to-proptypes'; diff --git a/docs/packages/markdown/index.d.ts b/docs/packages/markdown/index.d.ts new file mode 100644 index 00000000000000..d4a7af422ae8d9 --- /dev/null +++ b/docs/packages/markdown/index.d.ts @@ -0,0 +1,18 @@ +interface TableOfContentsEntry { + children: TableOfContentsEntry; + hash: string; + level: number; + text: string; +} + +export function createRender(context: { + headingHashes: Record; + toc: TableOfContentsEntry[]; + userLanguage: string; +}): (markdown: string) => string; + +export function getHeaders(markdown: string): Record; + +export function getTitle(markdown: string): string | undefined; + +export function renderInline(markdown: string): string; diff --git a/docs/packages/markdown/package.json b/docs/packages/markdown/package.json index 5679bb4b28fbb4..4ecd528670c3b4 100644 --- a/docs/packages/markdown/package.json +++ b/docs/packages/markdown/package.json @@ -3,6 +3,7 @@ "version": "5.0.0", "private": true, "main": "./index.js", + "types": "./index.d.ts", "exports": { ".": "./index.js", "./loader": "./loader.js", From 0df0d3313f4d792de1c1f31746283d4d375cf028 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dudak?= Date: Wed, 30 Nov 2022 11:22:02 +0100 Subject: [PATCH 11/19] Fix type errors --- docs/packages/markdown/index.d.ts | 2 +- docs/packages/markdown/parseMarkdown.js | 2 +- docs/packages/markdown/prism.d.ts | 1 + 3 files changed, 3 insertions(+), 2 deletions(-) create mode 100644 docs/packages/markdown/prism.d.ts diff --git a/docs/packages/markdown/index.d.ts b/docs/packages/markdown/index.d.ts index d4a7af422ae8d9..e01dd2fc94caf1 100644 --- a/docs/packages/markdown/index.d.ts +++ b/docs/packages/markdown/index.d.ts @@ -13,6 +13,6 @@ export function createRender(context: { export function getHeaders(markdown: string): Record; -export function getTitle(markdown: string): string | undefined; +export function getTitle(markdown: string): string; export function renderInline(markdown: string): string; diff --git a/docs/packages/markdown/parseMarkdown.js b/docs/packages/markdown/parseMarkdown.js index d14d1c6cbe4092..a82a19720488ce 100644 --- a/docs/packages/markdown/parseMarkdown.js +++ b/docs/packages/markdown/parseMarkdown.js @@ -130,7 +130,7 @@ function getTitle(markdown) { const matches = markdown.match(titleRegExp); if (matches === null) { - return undefined; + return ''; } return matches[1].replace(/`/g, ''); diff --git a/docs/packages/markdown/prism.d.ts b/docs/packages/markdown/prism.d.ts new file mode 100644 index 00000000000000..cdc055519484ab --- /dev/null +++ b/docs/packages/markdown/prism.d.ts @@ -0,0 +1 @@ +export default function highlight(code: string, language: string): string; From 01d1c68ceede29a8d499e5d695aeea9afe53528c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dudak?= Date: Wed, 30 Nov 2022 20:54:34 +0100 Subject: [PATCH 12/19] Move private packages to the root packages directory --- package.json | 2 +- .../api-docs-builder/ApiBuilders/ComponentApiBuilder.ts | 0 {docs/packages => packages}/api-docs-builder/buildApi.ts | 0 .../api-docs-builder/buildApiUtils.test.ts | 0 {docs/packages => packages}/api-docs-builder/buildApiUtils.ts | 0 {docs/packages => packages}/api-docs-builder/package.json | 0 {docs/packages => packages}/api-docs-builder/tsconfig.json | 0 .../api-docs-builder/utils/createDescribeableProp.ts | 0 .../api-docs-builder/utils/defaultPropsHandler.ts | 0 .../packages => packages}/api-docs-builder/utils/escapeCell.ts | 0 .../api-docs-builder/utils/findComponents.ts | 0 .../api-docs-builder/utils/findPagesMarkdown.ts | 0 .../api-docs-builder/utils/generatePropDescription.ts | 0 .../api-docs-builder/utils/generatePropTypeDescription.ts | 0 .../packages => packages}/api-docs-builder/utils/parseStyles.ts | 0 {docs/packages => packages}/api-docs-builder/utils/parseTest.ts | 0 .../api-docs-builder/utils/replaceUrl.test.js | 0 .../packages => packages}/api-docs-builder/utils/replaceUrl.ts | 0 {docs/packages => packages}/docs-utilities/index.ts | 0 {docs/packages => packages}/docs-utilities/package.json | 0 20 files changed, 1 insertion(+), 1 deletion(-) rename {docs/packages => packages}/api-docs-builder/ApiBuilders/ComponentApiBuilder.ts (100%) rename {docs/packages => packages}/api-docs-builder/buildApi.ts (100%) rename {docs/packages => packages}/api-docs-builder/buildApiUtils.test.ts (100%) rename {docs/packages => packages}/api-docs-builder/buildApiUtils.ts (100%) rename {docs/packages => packages}/api-docs-builder/package.json (100%) rename {docs/packages => packages}/api-docs-builder/tsconfig.json (100%) rename {docs/packages => packages}/api-docs-builder/utils/createDescribeableProp.ts (100%) rename {docs/packages => packages}/api-docs-builder/utils/defaultPropsHandler.ts (100%) rename {docs/packages => packages}/api-docs-builder/utils/escapeCell.ts (100%) rename {docs/packages => packages}/api-docs-builder/utils/findComponents.ts (100%) rename {docs/packages => packages}/api-docs-builder/utils/findPagesMarkdown.ts (100%) rename {docs/packages => packages}/api-docs-builder/utils/generatePropDescription.ts (100%) rename {docs/packages => packages}/api-docs-builder/utils/generatePropTypeDescription.ts (100%) rename {docs/packages => packages}/api-docs-builder/utils/parseStyles.ts (100%) rename {docs/packages => packages}/api-docs-builder/utils/parseTest.ts (100%) rename {docs/packages => packages}/api-docs-builder/utils/replaceUrl.test.js (100%) rename {docs/packages => packages}/api-docs-builder/utils/replaceUrl.ts (100%) rename {docs/packages => packages}/docs-utilities/index.ts (100%) rename {docs/packages => packages}/docs-utilities/package.json (100%) diff --git a/package.json b/package.json index ba46555d254720..5979a753eef130 100644 --- a/package.json +++ b/package.json @@ -14,7 +14,7 @@ "release:publish:dry-run": "lerna publish from-package --dist-tag latest --contents build --registry=\"http://localhost:4873/\"", "release:tag": "node scripts/releaseTag.mjs", "docs:api": "rimraf ./docs/pages/**/api-docs ./docs/pages/**/api && yarn docs:api:build", - "docs:api:build": "ts-node ./docs/packages/api-docs-builder/buildApi.ts", + "docs:api:build": "ts-node ./packages/api-docs-builder/buildApi.ts", "docs:build": "yarn workspace docs build", "docs:build-sw": "yarn workspace docs build-sw", "docs:build-color-preview": "babel-node scripts/buildColorTypes", diff --git a/docs/packages/api-docs-builder/ApiBuilders/ComponentApiBuilder.ts b/packages/api-docs-builder/ApiBuilders/ComponentApiBuilder.ts similarity index 100% rename from docs/packages/api-docs-builder/ApiBuilders/ComponentApiBuilder.ts rename to packages/api-docs-builder/ApiBuilders/ComponentApiBuilder.ts diff --git a/docs/packages/api-docs-builder/buildApi.ts b/packages/api-docs-builder/buildApi.ts similarity index 100% rename from docs/packages/api-docs-builder/buildApi.ts rename to packages/api-docs-builder/buildApi.ts diff --git a/docs/packages/api-docs-builder/buildApiUtils.test.ts b/packages/api-docs-builder/buildApiUtils.test.ts similarity index 100% rename from docs/packages/api-docs-builder/buildApiUtils.test.ts rename to packages/api-docs-builder/buildApiUtils.test.ts diff --git a/docs/packages/api-docs-builder/buildApiUtils.ts b/packages/api-docs-builder/buildApiUtils.ts similarity index 100% rename from docs/packages/api-docs-builder/buildApiUtils.ts rename to packages/api-docs-builder/buildApiUtils.ts diff --git a/docs/packages/api-docs-builder/package.json b/packages/api-docs-builder/package.json similarity index 100% rename from docs/packages/api-docs-builder/package.json rename to packages/api-docs-builder/package.json diff --git a/docs/packages/api-docs-builder/tsconfig.json b/packages/api-docs-builder/tsconfig.json similarity index 100% rename from docs/packages/api-docs-builder/tsconfig.json rename to packages/api-docs-builder/tsconfig.json diff --git a/docs/packages/api-docs-builder/utils/createDescribeableProp.ts b/packages/api-docs-builder/utils/createDescribeableProp.ts similarity index 100% rename from docs/packages/api-docs-builder/utils/createDescribeableProp.ts rename to packages/api-docs-builder/utils/createDescribeableProp.ts diff --git a/docs/packages/api-docs-builder/utils/defaultPropsHandler.ts b/packages/api-docs-builder/utils/defaultPropsHandler.ts similarity index 100% rename from docs/packages/api-docs-builder/utils/defaultPropsHandler.ts rename to packages/api-docs-builder/utils/defaultPropsHandler.ts diff --git a/docs/packages/api-docs-builder/utils/escapeCell.ts b/packages/api-docs-builder/utils/escapeCell.ts similarity index 100% rename from docs/packages/api-docs-builder/utils/escapeCell.ts rename to packages/api-docs-builder/utils/escapeCell.ts diff --git a/docs/packages/api-docs-builder/utils/findComponents.ts b/packages/api-docs-builder/utils/findComponents.ts similarity index 100% rename from docs/packages/api-docs-builder/utils/findComponents.ts rename to packages/api-docs-builder/utils/findComponents.ts diff --git a/docs/packages/api-docs-builder/utils/findPagesMarkdown.ts b/packages/api-docs-builder/utils/findPagesMarkdown.ts similarity index 100% rename from docs/packages/api-docs-builder/utils/findPagesMarkdown.ts rename to packages/api-docs-builder/utils/findPagesMarkdown.ts diff --git a/docs/packages/api-docs-builder/utils/generatePropDescription.ts b/packages/api-docs-builder/utils/generatePropDescription.ts similarity index 100% rename from docs/packages/api-docs-builder/utils/generatePropDescription.ts rename to packages/api-docs-builder/utils/generatePropDescription.ts diff --git a/docs/packages/api-docs-builder/utils/generatePropTypeDescription.ts b/packages/api-docs-builder/utils/generatePropTypeDescription.ts similarity index 100% rename from docs/packages/api-docs-builder/utils/generatePropTypeDescription.ts rename to packages/api-docs-builder/utils/generatePropTypeDescription.ts diff --git a/docs/packages/api-docs-builder/utils/parseStyles.ts b/packages/api-docs-builder/utils/parseStyles.ts similarity index 100% rename from docs/packages/api-docs-builder/utils/parseStyles.ts rename to packages/api-docs-builder/utils/parseStyles.ts diff --git a/docs/packages/api-docs-builder/utils/parseTest.ts b/packages/api-docs-builder/utils/parseTest.ts similarity index 100% rename from docs/packages/api-docs-builder/utils/parseTest.ts rename to packages/api-docs-builder/utils/parseTest.ts diff --git a/docs/packages/api-docs-builder/utils/replaceUrl.test.js b/packages/api-docs-builder/utils/replaceUrl.test.js similarity index 100% rename from docs/packages/api-docs-builder/utils/replaceUrl.test.js rename to packages/api-docs-builder/utils/replaceUrl.test.js diff --git a/docs/packages/api-docs-builder/utils/replaceUrl.ts b/packages/api-docs-builder/utils/replaceUrl.ts similarity index 100% rename from docs/packages/api-docs-builder/utils/replaceUrl.ts rename to packages/api-docs-builder/utils/replaceUrl.ts diff --git a/docs/packages/docs-utilities/index.ts b/packages/docs-utilities/index.ts similarity index 100% rename from docs/packages/docs-utilities/index.ts rename to packages/docs-utilities/index.ts diff --git a/docs/packages/docs-utilities/package.json b/packages/docs-utilities/package.json similarity index 100% rename from docs/packages/docs-utilities/package.json rename to packages/docs-utilities/package.json From cc24a1ac36f055e86a006c85c3fe2452809bd6b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dudak?= Date: Wed, 30 Nov 2022 23:06:58 +0100 Subject: [PATCH 13/19] Fix paths in ComponentApiBuilder --- docs/config.d.ts | 2 ++ packages/api-docs-builder/ApiBuilders/ComponentApiBuilder.ts | 2 +- {docs/types => packages/api-docs-builder}/react-docgen.d.ts | 0 packages/api-docs-builder/tsconfig.json | 2 +- packages/api-docs-builder/utils/findPagesMarkdown.ts | 2 +- 5 files changed, 5 insertions(+), 3 deletions(-) create mode 100644 docs/config.d.ts rename {docs/types => packages/api-docs-builder}/react-docgen.d.ts (100%) diff --git a/docs/config.d.ts b/docs/config.d.ts new file mode 100644 index 00000000000000..12950f0e05064d --- /dev/null +++ b/docs/config.d.ts @@ -0,0 +1,2 @@ +// eslint-disable-next-line import/prefer-default-export +export const LANGUAGES: string[]; diff --git a/packages/api-docs-builder/ApiBuilders/ComponentApiBuilder.ts b/packages/api-docs-builder/ApiBuilders/ComponentApiBuilder.ts index 674cad43a8bada..0fa796b37df9f2 100644 --- a/packages/api-docs-builder/ApiBuilders/ComponentApiBuilder.ts +++ b/packages/api-docs-builder/ApiBuilders/ComponentApiBuilder.ts @@ -16,7 +16,7 @@ import { getUnstyledFilename } from '@mui-internal/docs-utilities'; import * as ttp from 'typescript-to-proptypes'; import muiDefaultPropsHandler from '../utils/defaultPropsHandler'; -import { LANGUAGES } from '../../../config'; +import { LANGUAGES } from 'docs/config'; import parseTest from '../utils/parseTest'; import generatePropTypeDescription, { getChained } from '../utils/generatePropTypeDescription'; import createDescribeableProp, { diff --git a/docs/types/react-docgen.d.ts b/packages/api-docs-builder/react-docgen.d.ts similarity index 100% rename from docs/types/react-docgen.d.ts rename to packages/api-docs-builder/react-docgen.d.ts diff --git a/packages/api-docs-builder/tsconfig.json b/packages/api-docs-builder/tsconfig.json index 419ec12e07af13..6e20e117b41e8d 100644 --- a/packages/api-docs-builder/tsconfig.json +++ b/packages/api-docs-builder/tsconfig.json @@ -14,7 +14,7 @@ "strict": true, "baseUrl": "./", "paths": { - "react-docgen": ["../../types/react-docgen.d.ts"] + "react-docgen": ["./react-docgen.d.ts"] } }, "include": ["./**/*.ts", "./**/*.js"], diff --git a/packages/api-docs-builder/utils/findPagesMarkdown.ts b/packages/api-docs-builder/utils/findPagesMarkdown.ts index cc733e6e2c2d40..83724113c9c633 100644 --- a/packages/api-docs-builder/utils/findPagesMarkdown.ts +++ b/packages/api-docs-builder/utils/findPagesMarkdown.ts @@ -10,7 +10,7 @@ interface MarkdownPage { * Returns the markdowns of the documentation in a flat array. */ export default function findPagesMarkdownNew( - directory: string = path.resolve(__dirname, '../../../data'), + directory: string = path.resolve(__dirname, '../../../docs/data'), pagesMarkdown: MarkdownPage[] = [], ) { const items = fs.readdirSync(directory); From 5da122772a7e44fce51f18f326a2fa829b5ebb8f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dudak?= Date: Wed, 30 Nov 2022 23:07:13 +0100 Subject: [PATCH 14/19] Remove unnecessary packages from docs --- docs/package.json | 4 ---- 1 file changed, 4 deletions(-) diff --git a/docs/package.json b/docs/package.json index 40549746052dda..15161990156372 100644 --- a/docs/package.json +++ b/docs/package.json @@ -61,7 +61,6 @@ "@types/react-window": "^1.8.5", "@types/styled-components": "5.1.26", "accept-language": "^3.0.18", - "ast-types": "^0.14.2", "autoprefixer": "^10.4.13", "autosuggest-highlight": "^3.3.4", "babel-plugin-module-resolver": "^4.1.0", @@ -76,7 +75,6 @@ "css-mediaquery": "^0.1.2", "date-fns": "^2.29.3", "date-fns-jalali": "^2.21.3-1", - "doctrine": "^3.0.0", "exceljs": "^4.3.0", "express": "^4.18.2", "fg-loadcss": "^3.1.0", @@ -97,7 +95,6 @@ "postcss": "^8.4.19", "prop-types": "^15.8.1", "react": "^18.2.0", - "react-docgen": "^5.4.3", "react-dom": "^18.2.0", "react-draggable": "^4.4.5", "react-final-form": "^6.5.9", @@ -113,7 +110,6 @@ "react-transition-group": "^4.4.5", "react-virtualized": "^9.22.3", "react-window": "^1.8.8", - "recast": "^0.21.5", "recharts": "2.1.16", "rimraf": "^3.0.2", "styled-components": "^5.3.6", From 606f2e31d3d3466e5ef9ee5694e95c265342960a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dudak?= Date: Wed, 30 Nov 2022 23:09:50 +0100 Subject: [PATCH 15/19] Remove the unnecessary ts-ignore --- packages/api-docs-builder/buildApiUtils.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/api-docs-builder/buildApiUtils.ts b/packages/api-docs-builder/buildApiUtils.ts index 3ae6752e2deac1..66ddb814f4e292 100644 --- a/packages/api-docs-builder/buildApiUtils.ts +++ b/packages/api-docs-builder/buildApiUtils.ts @@ -1,7 +1,6 @@ import fs from 'fs'; import path from 'path'; import kebabCase from 'lodash/kebabCase'; -// @ts-ignore import { getHeaders, getTitle } from '@mui/markdown'; import { getLineFeed } from '@mui-internal/docs-utilities'; import { replaceComponentLinks } from './utils/replaceUrl'; From 3bedd80f965de052617776bf7757be5b36fc192d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dudak?= Date: Wed, 30 Nov 2022 23:12:03 +0100 Subject: [PATCH 16/19] Remove redundant JSDocs --- .../utils/defaultPropsHandler.ts | 78 ++++++------------- 1 file changed, 22 insertions(+), 56 deletions(-) diff --git a/packages/api-docs-builder/utils/defaultPropsHandler.ts b/packages/api-docs-builder/utils/defaultPropsHandler.ts index 96107935db9f4d..a31d1095312f4d 100644 --- a/packages/api-docs-builder/utils/defaultPropsHandler.ts +++ b/packages/api-docs-builder/utils/defaultPropsHandler.ts @@ -7,11 +7,6 @@ const { getPropertyName, isReactForwardRefCall, printValue, resolveToValue } = d // based on https://github.com/reactjs/react-docgen/blob/735f39ef784312f4c0e740d4bfb812f0a7acd3d5/src/handlers/defaultPropsHandler.js#L1-L112 // adjusted for material-ui getThemedProps -/** - * @param {import('react-docgen').NodePath} propertyPath - * @param {import('react-docgen').Importer} importer - * @returns {{ value: string; computed: boolean } | null} - */ function getDefaultValue(propertyPath: NodePath, importer: Importer) { if (!types.AssignmentPattern.check(propertyPath.get('value').node)) { return null; @@ -22,8 +17,7 @@ function getDefaultValue(propertyPath: NodePath, importer: Importer) { let defaultValue: string | undefined; if (types.Literal.check(path.node)) { - // TODO: fix the type error - // @ts-ignore + // @ts-expect-error TODO upstream fix defaultValue = node.raw; } else { if (types.AssignmentPattern.check(path.node)) { @@ -69,12 +63,6 @@ function getJsdocDefaultValue(jsdoc: Annotation): { value: string } | undefined return { value: defaultTag.description || '' }; } -/** - * @param {import('react-docgen').NodePath} properties - * @param {import('react-docgen').Documentation} documentation - * @param {import('react-docgen').Importer} importer - * @returns {void} - */ function getDefaultValuesFromProps( properties: NodePath, documentation: Documentation, @@ -83,24 +71,13 @@ function getDefaultValuesFromProps( const { props: documentedProps } = documentation.toObject(); const implementedProps: Record = {}; properties - .filter( - /** - * @param {import('react-docgen').NodePath} propertyPath - */ - (propertyPath: NodePath) => types.Property.check(propertyPath.node), - undefined, - ) - .forEach( - /** - * @param {import('react-docgen').NodePath} propertyPath - */ - (propertyPath: NodePath) => { - const propName = getPropertyName(propertyPath); - if (propName) { - implementedProps[propName] = propertyPath; - } - }, - ); + .filter((propertyPath: NodePath) => types.Property.check(propertyPath.node), undefined) + .forEach((propertyPath: NodePath) => { + const propName = getPropertyName(propertyPath); + if (propName) { + implementedProps[propName] = propertyPath; + } + }); // Sometimes we list props in .propTypes even though they're implemented by another component // These props are spread so they won't appear in the component implementation. @@ -144,31 +121,20 @@ function getPropsPath(functionBody: NodePath): NodePath | undefined { let propsPath: NodePath | undefined; // visitVariableDeclarator, can't use visit body.node since it looses scope information functionBody - .filter( - /** - * @param {import('react-docgen').NodePath} path - */ - (path: NodePath) => { - return types.VariableDeclaration.check(path.node); - }, - undefined, - ) - .forEach( - /** - * @param {import('react-docgen').NodePath} path - */ - (path: NodePath) => { - const declaratorPath = path.get('declarations', 0); - // find `const {} = props` - // but not `const ownerState = props` - if ( - declaratorPath.get('init', 'name').value === 'props' && - declaratorPath.get('id', 'type').value === 'ObjectPattern' - ) { - propsPath = declaratorPath.get('id'); - } - }, - ); + .filter((path: NodePath) => { + return types.VariableDeclaration.check(path.node); + }, undefined) + .forEach((path: NodePath) => { + const declaratorPath = path.get('declarations', 0); + // find `const {} = props` + // but not `const ownerState = props` + if ( + declaratorPath.get('init', 'name').value === 'props' && + declaratorPath.get('id', 'type').value === 'ObjectPattern' + ) { + propsPath = declaratorPath.get('id'); + } + }); return propsPath; } From 44a23d4cc34a97d6245aff93e99f1166c73315e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dudak?= Date: Thu, 1 Dec 2022 09:43:44 +0100 Subject: [PATCH 17/19] Fix lint error --- packages/api-docs-builder/ApiBuilders/ComponentApiBuilder.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/api-docs-builder/ApiBuilders/ComponentApiBuilder.ts b/packages/api-docs-builder/ApiBuilders/ComponentApiBuilder.ts index 0fa796b37df9f2..d4885204cca893 100644 --- a/packages/api-docs-builder/ApiBuilders/ComponentApiBuilder.ts +++ b/packages/api-docs-builder/ApiBuilders/ComponentApiBuilder.ts @@ -14,9 +14,9 @@ import { unstable_generateUtilityClass as generateUtilityClass } from '@mui/util import { renderInline as renderMarkdownInline } from '@mui/markdown'; import { getUnstyledFilename } from '@mui-internal/docs-utilities'; import * as ttp from 'typescript-to-proptypes'; +import { LANGUAGES } from 'docs/config'; import muiDefaultPropsHandler from '../utils/defaultPropsHandler'; -import { LANGUAGES } from 'docs/config'; import parseTest from '../utils/parseTest'; import generatePropTypeDescription, { getChained } from '../utils/generatePropTypeDescription'; import createDescribeableProp, { From 78564f4cfb1d39853916ca30461e95a64126b227 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dudak?= Date: Thu, 1 Dec 2022 11:43:08 +0100 Subject: [PATCH 18/19] Convert docs-utilities to JS + .d.ts --- packages/docs-utilities/index.d.ts | 7 +++++++ packages/docs-utilities/{index.ts => index.js} | 10 +++++----- packages/docs-utilities/package.json | 2 +- 3 files changed, 13 insertions(+), 6 deletions(-) create mode 100644 packages/docs-utilities/index.d.ts rename packages/docs-utilities/{index.ts => index.js} (88%) diff --git a/packages/docs-utilities/index.d.ts b/packages/docs-utilities/index.d.ts new file mode 100644 index 00000000000000..51b6c86fe0b7b3 --- /dev/null +++ b/packages/docs-utilities/index.d.ts @@ -0,0 +1,7 @@ +export function getLineFeed(source: string): string; + +export function fixBabelGeneratorIssues(source: string): string; + +export function fixLineEndings(source: string, target: string): string; + +export function getUnstyledFilename(filename: string, definitionFile: boolean = false): string; diff --git a/packages/docs-utilities/index.ts b/packages/docs-utilities/index.js similarity index 88% rename from packages/docs-utilities/index.ts rename to packages/docs-utilities/index.js index 229af73a20c5e4..5e85f7acf48d84 100644 --- a/packages/docs-utilities/index.ts +++ b/packages/docs-utilities/index.js @@ -1,9 +1,9 @@ -import { EOL } from 'os'; +const { EOL } = require('os'); /** * @param {string} source */ -function getLineFeed(source: string) { +function getLineFeed(source) { const match = source.match(/\r?\n/); return match === null ? EOL : match[0]; } @@ -12,7 +12,7 @@ const fixBabelIssuesRegExp = /(?<=(\/>)|,)(\r?\n){2}/g; /** * @param {string} source */ -function fixBabelGeneratorIssues(source: string) { +function fixBabelGeneratorIssues(source) { return source.replace(fixBabelIssuesRegExp, '\n'); } @@ -20,7 +20,7 @@ function fixBabelGeneratorIssues(source: string) { * @param {string} source * @param {string} target */ -function fixLineEndings(source: string, target: string) { +function fixLineEndings(source, target) { return target.replace(/\r?\n/g, getLineFeed(source)); } @@ -28,7 +28,7 @@ function fixLineEndings(source: string, target: string) { * Converts styled or regular component d.ts file to unstyled d.ts * @param {string} filename - the file of the styled or regular mui component */ -function getUnstyledFilename(filename: string, definitionFile = false) { +function getUnstyledFilename(filename, definitionFile = false) { if (filename.indexOf('Unstyled') > -1) { return filename; } diff --git a/packages/docs-utilities/package.json b/packages/docs-utilities/package.json index e2ed73b95ecda2..740cec8962e5ce 100644 --- a/packages/docs-utilities/package.json +++ b/packages/docs-utilities/package.json @@ -2,5 +2,5 @@ "name": "@mui-internal/docs-utilities", "version": "1.0.0", "private": "true", - "main": "index.ts" + "main": "index.js" } From a4a4a13c0e8bf6e0f4373110672c105da2a01984 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dudak?= Date: Thu, 1 Dec 2022 14:56:17 +0100 Subject: [PATCH 19/19] Add readme --- packages/docs-utilities/README.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 packages/docs-utilities/README.md diff --git a/packages/docs-utilities/README.md b/packages/docs-utilities/README.md new file mode 100644 index 00000000000000..4f6c361f66aaa3 --- /dev/null +++ b/packages/docs-utilities/README.md @@ -0,0 +1,5 @@ +# @mui-internal/docs-utilities + +This package contains utilities shared between docs generation scripts. + +It is private and not meant to be published.