diff --git a/.lintstagedrc.json b/.lintstagedrc.json index c43f5f89fe..863473f2ad 100644 --- a/.lintstagedrc.json +++ b/.lintstagedrc.json @@ -1,3 +1,4 @@ { - "!(docs/**/*)*.{ts,js,json,html,md,mts}": ["eslint --fix", "prettier --write"] + "!(docs/**/*)*.{ts,js,json,html,md,mts}": ["eslint --fix", "prettier --write"], + "cSpell.json": ["ts-node-esm scripts/fixCSpell.ts"] } diff --git a/cSpell.json b/cSpell.json index 0d9ed77a1e..a8c28dc3e4 100644 --- a/cSpell.json +++ b/cSpell.json @@ -2,91 +2,85 @@ "version": "0.2", "language": "en", "words": [ - "blockquotes", + "acyclicer", + "adamiecki", + "alois", + "antiscript", + "applitools", + "asciidoctor", + "ashish", + "astah", + "bbox", + "bilkent", + "bisheng", + "brolin", + "codedoc", + "colour", + "cpettitt", "customizability", - "Gantt", + "cuzon", + "cytoscape", + "dagre", + "descr", + "docsify", + "docsy", + "doku", + "dompurify", + "edgechromium", + "faber", + "flatmap", + "gantt", + "gitea", + "gitgraph", + "graphlib", + "grav", + "greywolf", + "inkdrop", + "jaoude", "jison", - "mermaid", - "mindmap", - "Mindmaps", - "mitigations", - "sandboxed", - "shiki", - "verdana", - "Visio" - ], - "ignoreWords": [ - "Alois", - "Klink", + "kaufmann", + "klemm", + "klink", "knsv", - "Knut", - "Matthieu", - "Sidharth", - "Sveidqvist", - "Vinod", - "Faber", - "Orlandoni", - "Klemm", - "Mindaugas", - "Laganeckas", - "Cuzon", - "Yash", - "Adamiecki", - "applitools", - "Asciidoctor", - "Astah", - "Bisheng", - "codedoc", - "Docsy", - "Doku", - "Gitea", - "Gitgraph", - "Grav", - "Inkdrop", - "Jaoude", + "knut", + "laganeckas", + "lucida", + "matthieu", "mdbook", "mermerd", + "mindaugas", + "mindmap", + "mindmaps", + "mitigations", "mkdocs", + "orlandoni", "phpbb", - "Plantuml", - "Playfair's", - "Podlite", + "plantuml", + "playfair", + "podlite", + "ranksep", "redmine", + "sandboxed", + "setupgraphviewbox", + "shiki", + "sidharth", "sphinxcontrib", - "Tuleap", - "dagre", - "vitepress", - "docsify", - "colour", - "graphlib", - "acyclicer", - "ranksep", - "descr", + "statediagram", "substate", - "Ashish", - "bbox", + "sveidqvist", "techn", - "cytoscape", - "Lucida", - "Bilkent", - "cpettitt", - "antiscript", "ts-nocheck", - "setupGraphViewbox", - "flatmap", - "Kaufmann", + "tuleap", + "verdana", "viewports", - "edgechromium", - "statediagram", - "Brolin", - "Greywolf" + "vinod", + "visio", + "vitepress", + "xlink", + "yash" ], "patterns": [ - { - "name": "Markdown links", - "pattern": "\\((.*)\\)", - "description": "" - }, + { "name": "Markdown links", "pattern": "\\((.*)\\)", "description": "" }, { "name": "Markdown code blocks", "pattern": "/^(\\s*`{3,}).*[\\s\\S]*?^\\1/gmx", @@ -97,25 +91,14 @@ "pattern": "\\`([^\\`\\r\\n]+?)\\`", "description": "https://stackoverflow.com/questions/41274241/how-to-capture-inline-markdown-code-but-not-a-markdown-code-fence-with-regex" }, - { - "name": "Link contents", - "pattern": "\\", - "description": "" - }, - { - "name": "Snippet references", - "pattern": "-- snippet:(.*)", - "description": "" - }, + { "name": "Link contents", "pattern": "\\", "description": "" }, + { "name": "Snippet references", "pattern": "-- snippet:(.*)", "description": "" }, { "name": "Snippet references 2", "pattern": "\\<\\[sample:(.*)", "description": "another kind of snippet reference" }, - { - "name": "Multi-line code blocks", - "pattern": "/^\\s*```[\\s\\S]*?^\\s*```/gm" - }, + { "name": "Multi-line code blocks", "pattern": "/^\\s*```[\\s\\S]*?^\\s*```/gm" }, { "name": "HTML Tags", "pattern": "<[^>]*>", diff --git a/package.json b/package.json index 15bfcbada6..0881fa3f2e 100644 --- a/package.json +++ b/package.json @@ -33,7 +33,7 @@ "dev": "concurrently \"pnpm build:vite --watch\" \"ts-node-esm .vite/server.ts\"", "release": "pnpm build", "lint": "eslint --cache --ignore-path .gitignore . && pnpm --filter mermaid run lint:jison && prettier --check .", - "lint:fix": "eslint --fix --ignore-path .gitignore . && prettier --write .", + "lint:fix": "eslint --fix --ignore-path .gitignore . && prettier --write . && ts-node-esm scripts/fixCSpell.ts", "cypress": "cypress run", "cypress:open": "cypress open", "e2e": "start-server-and-test dev http://localhost:9000/ cypress", diff --git a/packages/mermaid/src/docs.mts b/packages/mermaid/src/docs.mts index 96f5e9024c..5d7175a866 100644 --- a/packages/mermaid/src/docs.mts +++ b/packages/mermaid/src/docs.mts @@ -61,14 +61,7 @@ const LOGMSG_COPIED = `, and copied to ${FINAL_DOCS_DIR}`; const WARN_DOCSDIR_DOESNT_MATCH = `Changed files were transformed in ${SOURCE_DOCS_DIR} but do not match the files in ${FINAL_DOCS_DIR}. Please run 'pnpm --filter mermaid run docs:build' after making changes to ${SOURCE_DOCS_DIR} to update the ${FINAL_DOCS_DIR} directory with the transformed files.`; -// TODO: Read from .prettierrc? -const prettierConfig: prettier.Config = { - useTabs: false, - tabWidth: 2, - endOfLine: 'auto', - printWidth: 100, - singleQuote: true, -}; +const prettierConfig = prettier.resolveConfig.sync('.') ?? {}; let filesWereTransformed = false; diff --git a/scripts/fixCSpell.ts b/scripts/fixCSpell.ts new file mode 100644 index 0000000000..1d15e21940 --- /dev/null +++ b/scripts/fixCSpell.ts @@ -0,0 +1,24 @@ +/** + * Sorts all the `words` in the cSpell.json file. + * + * Run from the same folder as the `cSpell.json` file + * (i.e. the root of the Mermaid project). + */ + +import { readFileSync, writeFileSync } from 'node:fs'; +import prettier from 'prettier'; + +const filepath = './cSpell.json'; +const cSpell: { words: string[] } = JSON.parse(readFileSync(filepath, 'utf8')); + +cSpell.words = [...new Set(cSpell.words.map((word) => word.toLowerCase()))]; +cSpell.words.sort((a, b) => a.localeCompare(b)); + +const prettierConfig = prettier.resolveConfig.sync(filepath) ?? {}; +writeFileSync( + filepath, + prettier.format(JSON.stringify(cSpell), { + ...prettierConfig, + filepath, + }) +);