From 559c9ca8999ad58a2464931aff66e8b6153fed19 Mon Sep 17 00:00:00 2001 From: Jacek Date: Fri, 11 Jul 2025 16:30:24 -0500 Subject: [PATCH 1/6] chore/turbo-prettier --- package.json | 4 +- packages/agent-toolkit/package.json | 2 + packages/astro/CHANGELOG.md | 17 ++++---- packages/astro/package.json | 2 + packages/backend/package.json | 2 + packages/chrome-extension/package.json | 2 + packages/clerk-js/.prettierignore | 5 +++ packages/clerk-js/package.json | 2 + packages/dev-cli/package.json | 2 + packages/elements/package.json | 2 + packages/expo-passkeys/package.json | 2 + packages/expo/package.json | 2 + packages/express/package.json | 2 + packages/fastify/package.json | 2 + packages/localizations/package.json | 2 + packages/nextjs/package.json | 2 + packages/nuxt/package.json | 2 + packages/react-router/package.json | 2 + packages/react/package.json | 2 + packages/remix/package.json | 2 + packages/shared/package.json | 2 + packages/tanstack-react-start/package.json | 2 + packages/testing/package.json | 2 + packages/themes/package.json | 2 + packages/types/package.json | 2 + packages/upgrade/package.json | 2 + packages/vue/package.json | 2 + scripts/format-non-workspace.mjs | 46 ++++++++++++++++++++++ turbo.json | 44 +++++++++++++++++++++ 29 files changed, 155 insertions(+), 9 deletions(-) create mode 100644 packages/clerk-js/.prettierignore create mode 100644 scripts/format-non-workspace.mjs diff --git a/package.json b/package.json index 09b7ffd0e0f..0ec70cc30ca 100644 --- a/package.json +++ b/package.json @@ -12,8 +12,8 @@ "clean": "turbo clean", "dev": "TURBO_UI=0 FORCE_COLOR=1 turbo dev --filter=@clerk/* --filter=!@clerk/clerk-expo --filter=!@clerk/tanstack-react-start --filter=!@clerk/elements --filter=!@clerk/remix --filter=!@clerk/chrome-extension", "dev:js": "TURBO_UI=0 FORCE_COLOR=1 turbo dev:current --filter=@clerk/clerk-js", - "format": "prettier --write .", - "format:check": "prettier --cache --check .", + "format": "turbo format && node scripts/format-non-workspace.mjs", + "format:check": "turbo format:check && node scripts/format-non-workspace.mjs --check", "preinstall": "npx only-allow pnpm", "integration:secrets": "node ./scripts/1password-keys.mjs", "lint": "node ./scripts/lint.mjs", diff --git a/packages/agent-toolkit/package.json b/packages/agent-toolkit/package.json index 5047538d519..20aff574e2d 100644 --- a/packages/agent-toolkit/package.json +++ b/packages/agent-toolkit/package.json @@ -39,6 +39,8 @@ "build": "tsup --env.NODE_ENV production", "clean": "rimraf ./dist", "dev": "tsup --watch", + "format": "prettier --write .", + "format:check": "prettier --cache --check .", "lint": "eslint src", "lint:attw": "attw --pack . --profile esm-only", "lint:publint": "publint", diff --git a/packages/astro/CHANGELOG.md b/packages/astro/CHANGELOG.md index d574ece40de..a0ba9891a16 100644 --- a/packages/astro/CHANGELOG.md +++ b/packages/astro/CHANGELOG.md @@ -241,7 +241,7 @@ ```astro --- - import { CreateOrganization } from '@clerk/astro/components' + import { CreateOrganization } from '@clerk/astro/components'; --- @@ -585,8 +585,8 @@ Regular usage without server islands: ```astro - -

Not an admin

+ +

Not an admin

You're an admin

``` @@ -594,9 +594,12 @@ Example with server islands: ```astro - -

Loading...

-

Not an admin

+ +

Loading...

+

Not an admin

You're an admin

``` @@ -1231,7 +1234,7 @@ ```astro --- - import { SignInButton } from '@clerk/components/astro' + import { SignInButton } from '@clerk/components/astro'; --- diff --git a/packages/astro/package.json b/packages/astro/package.json index d751997b2f1..92e65208b0a 100644 --- a/packages/astro/package.json +++ b/packages/astro/package.json @@ -80,6 +80,8 @@ "build:dts": "tsc --emitDeclarationOnly --declaration", "copy:components": "rm -rf ./components && mkdir -p ./components/ && cp -r ./src/astro-components/* ./components/ && cp ./src/types.ts ./", "dev": "tsup --watch --onSuccess \"pnpm build:dts\"", + "format": "prettier --write .", + "format:check": "prettier --cache --check .", "lint": "eslint src env.d.ts", "lint:attw": "attw --pack . --profile esm-only --ignore-rules internal-resolution-error", "lint:publint": "pnpm copy:components && publint", diff --git a/packages/backend/package.json b/packages/backend/package.json index 36531a6299d..56e3f544cf6 100644 --- a/packages/backend/package.json +++ b/packages/backend/package.json @@ -93,6 +93,8 @@ "clean": "rimraf ./dist", "dev": "tsup --watch", "dev:publish": "pnpm dev -- --env.publish", + "format": "prettier --write .", + "format:check": "prettier --cache --check .", "lint": "eslint src", "lint:attw": "attw --pack . --profile node16 --ignore-rules false-cjs", "lint:publint": "publint", diff --git a/packages/chrome-extension/package.json b/packages/chrome-extension/package.json index 305eeed83f6..b6041743e52 100644 --- a/packages/chrome-extension/package.json +++ b/packages/chrome-extension/package.json @@ -38,6 +38,8 @@ "clean": "rimraf ./dist", "dev": "tsup --watch", "dev:publish": "pnpm dev -- --env.publish", + "format": "prettier --write .", + "format:check": "prettier --cache --check .", "lint": "eslint src", "lint:attw": "attw --pack . --profile node16", "lint:publint": "publint", diff --git a/packages/clerk-js/.prettierignore b/packages/clerk-js/.prettierignore new file mode 100644 index 00000000000..abfdc92a42c --- /dev/null +++ b/packages/clerk-js/.prettierignore @@ -0,0 +1,5 @@ +dist/ +coverage/ +node_modules/ +.turbo/ +*.js.map \ No newline at end of file diff --git a/packages/clerk-js/package.json b/packages/clerk-js/package.json index 9418adb4505..070baa671dc 100644 --- a/packages/clerk-js/package.json +++ b/packages/clerk-js/package.json @@ -44,6 +44,8 @@ "dev:headless": "rspack serve --config rspack.config.js --env variant=\"clerk.headless.browser\"", "dev:origin": "rspack serve --config rspack.config.js --env devOrigin=http://localhost:${PORT:-4000}", "dev:sandbox": "rspack serve --config rspack.config.js --env devOrigin=http://localhost:${PORT:-4000} --env sandbox=1", + "format": "prettier --write .", + "format:check": "prettier --cache --check .", "lint": "eslint src", "lint:attw": "attw --pack . --profile node16 --ignore-rules named-exports", "lint:publint": "publint || true", diff --git a/packages/dev-cli/package.json b/packages/dev-cli/package.json index 9cf28894b16..c8ac9367f46 100644 --- a/packages/dev-cli/package.json +++ b/packages/dev-cli/package.json @@ -19,6 +19,8 @@ "clerk-dev": "bin/cli.js" }, "scripts": { + "format": "prettier --write .", + "format:check": "prettier --cache --check .", "lint": "eslint src" }, "dependencies": { diff --git a/packages/elements/package.json b/packages/elements/package.json index edd94ee09c7..dabd407a0d8 100644 --- a/packages/elements/package.json +++ b/packages/elements/package.json @@ -63,6 +63,8 @@ "build:declarations": "tsc -p tsconfig.declarations.json", "dev": "tsup --env.NODE_ENV development --watch", "dev:example": "concurrently \"pnpm dev\" \"pnpm app:dev\"", + "format": "prettier --write .", + "format:check": "prettier --cache --check .", "lint": "eslint src", "lint:attw": "attw --pack . --profile node16", "lint:publint": "publint", diff --git a/packages/expo-passkeys/package.json b/packages/expo-passkeys/package.json index eb57619bc20..bee4ba7b1a0 100644 --- a/packages/expo-passkeys/package.json +++ b/packages/expo-passkeys/package.json @@ -25,6 +25,8 @@ "clean": "rimraf ./dist", "dev": "tsup --watch", "dev:publish": "pnpm dev -- --env.publish", + "format": "prettier --write .", + "format:check": "prettier --cache --check .", "lint": "eslint src", "open:android": "open -a \"Android Studio\" example/android", "open:ios": "xed example/ios", diff --git a/packages/expo/package.json b/packages/expo/package.json index 06892b774f9..29f05189bf2 100644 --- a/packages/expo/package.json +++ b/packages/expo/package.json @@ -71,6 +71,8 @@ "clean": "rimraf ./dist", "dev": "tsup --watch", "dev:publish": "pnpm dev -- --env.publish", + "format": "prettier --write .", + "format:check": "prettier --cache --check .", "lint": "eslint src", "publish:local": "pnpm yalc push --replace --sig", "test": "vitest run", diff --git a/packages/express/package.json b/packages/express/package.json index d7a7e6a5970..38d4fc6a764 100644 --- a/packages/express/package.json +++ b/packages/express/package.json @@ -57,6 +57,8 @@ "clean": "rimraf ./dist", "dev": "tsup --watch", "dev:publish": "pnpm dev -- --env.publish", + "format": "prettier --write .", + "format:check": "prettier --cache --check .", "lint": "eslint src", "lint:attw": "attw --pack . --profile node16", "lint:publint": "publint", diff --git a/packages/fastify/package.json b/packages/fastify/package.json index 67d089fc6a3..d6f1efbc241 100644 --- a/packages/fastify/package.json +++ b/packages/fastify/package.json @@ -55,6 +55,8 @@ "build": "tsup --env.NODE_ENV production", "clean": "rimraf ./dist", "dev": "tsup --watch", + "format": "prettier --write .", + "format:check": "prettier --cache --check .", "lint": "eslint src", "lint:attw": "attw --pack . --profile node16 --ignore-rules unexpected-module-syntax", "lint:publint": "publint", diff --git a/packages/localizations/package.json b/packages/localizations/package.json index bb0e30f6f7b..8cfe82ef962 100644 --- a/packages/localizations/package.json +++ b/packages/localizations/package.json @@ -100,6 +100,8 @@ "postbuild": "node ../../scripts/subpath-workaround.mjs localizations", "clean": "rimraf ./dist", "dev": "tsup --watch", + "format": "prettier --write .", + "format:check": "prettier --cache --check .", "generate": "tsc src/utils/generate.ts && node src/utils/generate.js && prettier --write src/*.ts", "lint": "eslint src", "lint:attw": "attw --pack . --profile node16" diff --git a/packages/nextjs/package.json b/packages/nextjs/package.json index 609d4c1cb91..db35286f6cc 100644 --- a/packages/nextjs/package.json +++ b/packages/nextjs/package.json @@ -64,6 +64,8 @@ "clean": "rimraf ./dist", "dev": "tsup --watch", "dev:publish": "pnpm dev -- --env.publish", + "format": "prettier --write .", + "format:check": "prettier --cache --check .", "lint": "eslint src", "lint:attw": "attw --pack . --profile node16 --ignore-rules unexpected-module-syntax", "lint:publint": "publint", diff --git a/packages/nuxt/package.json b/packages/nuxt/package.json index 42f5cf22c17..2ad2a0eded5 100644 --- a/packages/nuxt/package.json +++ b/packages/nuxt/package.json @@ -59,6 +59,8 @@ "scripts": { "build": "tsup", "dev": "tsup --watch", + "format": "prettier --write .", + "format:check": "prettier --cache --check .", "lint": "eslint src", "lint:attw": "attw --pack . --profile esm-only", "lint:publint": "publint", diff --git a/packages/react-router/package.json b/packages/react-router/package.json index 8a5268079fb..5028c7bfff4 100644 --- a/packages/react-router/package.json +++ b/packages/react-router/package.json @@ -72,6 +72,8 @@ "scripts": { "build": "tsup", "dev": "tsup --watch", + "format": "prettier --write .", + "format:check": "prettier --cache --check .", "lint": "eslint src", "lint:attw": "attw --pack . --profile esm-only", "lint:publint": "publint", diff --git a/packages/react/package.json b/packages/react/package.json index 5cb89f91b1e..72dbe8b9673 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -68,6 +68,8 @@ "clean": "rimraf ./dist", "dev": "tsup --watch", "dev:publish": "pnpm dev --env.publish", + "format": "prettier --write .", + "format:check": "prettier --cache --check .", "lint": "eslint src", "lint:attw": "attw --pack . --profile node16", "lint:publint": "publint", diff --git a/packages/remix/package.json b/packages/remix/package.json index 9d7d921021c..5995530af4a 100644 --- a/packages/remix/package.json +++ b/packages/remix/package.json @@ -67,6 +67,8 @@ "clean": "rimraf ./dist", "dev": "tsup --watch", "dev:publish": "pnpm dev -- --env.publish", + "format": "prettier --write .", + "format:check": "prettier --cache --check .", "lint": "eslint src", "lint:attw": "attw --pack . --profile node16", "lint:publint": "publint", diff --git a/packages/shared/package.json b/packages/shared/package.json index 612c655d6c8..2a5df334770 100644 --- a/packages/shared/package.json +++ b/packages/shared/package.json @@ -131,6 +131,8 @@ "clean": "rimraf ./dist", "dev": "tsup --watch", "dev:publish": "pnpm dev -- --env.publish", + "format": "prettier --write .", + "format:check": "prettier --cache --check .", "postinstall": "node ./scripts/postinstall.mjs", "lint": "eslint src", "lint:attw": "attw --pack . --profile node16", diff --git a/packages/tanstack-react-start/package.json b/packages/tanstack-react-start/package.json index 76c6afedbee..5d672be8db4 100644 --- a/packages/tanstack-react-start/package.json +++ b/packages/tanstack-react-start/package.json @@ -59,6 +59,8 @@ "clean": "rimraf ./dist", "dev": "tsup --watch", "dev:publish": "pnpm dev -- --env.publish", + "format": "prettier --write .", + "format:check": "prettier --cache --check .", "lint": "eslint src", "lint:attw": "attw --pack . --profile esm-only", "lint:publint": "publint", diff --git a/packages/testing/package.json b/packages/testing/package.json index ff12a381e00..f10634d36d5 100644 --- a/packages/testing/package.json +++ b/packages/testing/package.json @@ -69,6 +69,8 @@ "build": "tsup --env.NODE_ENV production", "clean": "rimraf ./dist", "dev": "tsup --watch", + "format": "prettier --write .", + "format:check": "prettier --cache --check .", "lint": "eslint src" }, "dependencies": { diff --git a/packages/themes/package.json b/packages/themes/package.json index 9c7b787b6a2..691e59b976f 100644 --- a/packages/themes/package.json +++ b/packages/themes/package.json @@ -34,6 +34,8 @@ "build": "tsc -p tsconfig.build.json", "clean": "rimraf ./dist", "dev": "tsc -p tsconfig.build.json --watch", + "format": "prettier --write .", + "format:check": "prettier --cache --check .", "lint": "eslint src", "lint:attw": "attw --pack . --profile node16" }, diff --git a/packages/types/package.json b/packages/types/package.json index 5969710b4ee..666fc84e552 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -34,6 +34,8 @@ "build:declarations": "tsc -p tsconfig.declarations.json", "clean": "rimraf ./dist", "dev": "tsup --watch", + "format": "prettier --write .", + "format:check": "prettier --cache --check .", "lint": "eslint src", "lint:attw": "attw --pack . --profile node16", "publish:local": "pnpm yalc push --replace --sig" diff --git a/packages/upgrade/package.json b/packages/upgrade/package.json index 062162c869c..6156987e9a5 100644 --- a/packages/upgrade/package.json +++ b/packages/upgrade/package.json @@ -19,6 +19,8 @@ "build": "pnpm clean && NODE_ENV=production babel --keep-file-extension --out-dir=dist src --copy-files", "clean": "rm -rf dist/*", "dev": "babel --keep-file-extension --out-dir=dist --watch src --copy-files", + "format": "prettier --write .", + "format:check": "prettier --cache --check .", "lint": "eslint src/", "lint:publint": "publint", "test": "vitest run", diff --git a/packages/vue/package.json b/packages/vue/package.json index 25401658ab9..ffd5f802b25 100644 --- a/packages/vue/package.json +++ b/packages/vue/package.json @@ -48,6 +48,8 @@ "build": "tsup --onSuccess \"pnpm build:dts\"", "build:dts": "vue-tsc --declaration --emitDeclarationOnly -p tsconfig.build.json", "dev": "tsup --watch", + "format": "prettier --write .", + "format:check": "prettier --cache --check .", "lint": "eslint src", "lint:attw": "attw --pack . --profile esm-only --ignore-rules internal-resolution-error", "lint:publint": "publint", diff --git a/scripts/format-non-workspace.mjs b/scripts/format-non-workspace.mjs new file mode 100644 index 00000000000..64a5dd4b54e --- /dev/null +++ b/scripts/format-non-workspace.mjs @@ -0,0 +1,46 @@ +#!/usr/bin/env node + +import { $ } from 'zx'; + +/** + * Format files that are not part of workspace packages. + * This includes: + * - integration/ directory + * - playground/ directory + * - scripts/ directory + * - .github/ directory + * - Root level config files + */ + +const NON_WORKSPACE_PATHS = [ + 'integration', + 'playground', + 'scripts', + '.github', + // Root level config files + '*.json', + '*.md', + '*.mjs', + '*.ts', + '*.yaml', + '.prettierrc*', +]; + +async function formatNonWorkspaceFiles() { + const isCheck = process.argv.includes('--check'); + const baseArgs = isCheck + ? ['prettier', '--cache', '--check', '--ignore-unknown'] + : ['prettier', '--write', '--ignore-unknown']; + + console.log(`${isCheck ? 'Checking' : 'Formatting'} non-workspace files...`); + + try { + await $`pnpm ${baseArgs} ${NON_WORKSPACE_PATHS}`; + console.log(`āœ… Non-workspace files ${isCheck ? 'check passed' : 'formatted successfully'}`); + } catch (error) { + console.error(`āŒ Non-workspace files ${isCheck ? 'check failed' : 'formatting failed'}`); + process.exit(1); + } +} + +formatNonWorkspaceFiles().catch(console.error); diff --git a/turbo.json b/turbo.json index 0e3eeac08d7..c7c39b3f626 100644 --- a/turbo.json +++ b/turbo.json @@ -143,7 +143,51 @@ ], "outputs": [] }, + "format": { + "inputs": [ + "**/*.js", + "**/*.jsx", + "**/*.ts", + "**/*.tsx", + "**/*.json", + "**/*.md", + "**/*.mdx", + "**/*.vue", + "**/*.astro", + "**/*.css", + "**/*.scss", + "**/*.html", + "!**/__snapshots__/**", + "!CHANGELOG.md", + "!coverage/**", + "!dist/**", + "!examples/**", + "!node_modules/**" + ], + "outputs": [], + "cache": false + }, "format:check": { + "inputs": [ + "**/*.js", + "**/*.jsx", + "**/*.ts", + "**/*.tsx", + "**/*.json", + "**/*.md", + "**/*.mdx", + "**/*.vue", + "**/*.astro", + "**/*.css", + "**/*.scss", + "**/*.html", + "!**/__snapshots__/**", + "!CHANGELOG.md", + "!coverage/**", + "!dist/**", + "!examples/**", + "!node_modules/**" + ], "outputs": [] }, "//#test:integration:ap-flows": { From 4f3a6cbd1de7a009c4d46fa93fbcbece2a2f8acf Mon Sep 17 00:00:00 2001 From: Jacek Date: Thu, 24 Jul 2025 09:20:59 -0500 Subject: [PATCH 2/6] wip --- .prettierignore | 4 +- .prettierrc | 12 ---- packages/agent-toolkit/package.json | 4 +- packages/astro/package.json | 4 +- packages/backend/package.json | 4 +- packages/chrome-extension/package.json | 4 +- packages/clerk-js/package.json | 4 +- packages/dev-cli/package.json | 4 +- packages/elements/package.json | 4 +- packages/expo-passkeys/package.json | 4 +- packages/expo/package.json | 4 +- packages/express/package.json | 4 +- packages/fastify/package.json | 4 +- packages/localizations/package.json | 4 +- packages/nextjs/package.json | 4 +- packages/nuxt/package.json | 4 +- packages/react-router/package.json | 4 +- packages/react/package.json | 4 +- packages/remix/package.json | 4 +- packages/shared/package.json | 4 +- packages/tanstack-react-start/package.json | 4 +- packages/testing/package.json | 4 +- packages/themes/package.json | 4 +- packages/types/package.json | 4 +- packages/upgrade/package.json | 4 +- packages/vue/package.json | 4 +- prettier.config.mjs | 12 ++++ scripts/1password-keys.mjs | 5 +- scripts/format-non-workspace.mjs | 82 +++++++++++++++------- scripts/format-package.mjs | 23 ++++++ turbo.json | 7 +- 31 files changed, 151 insertions(+), 90 deletions(-) delete mode 100644 .prettierrc create mode 100644 prettier.config.mjs create mode 100644 scripts/format-package.mjs diff --git a/.prettierignore b/.prettierignore index 76c30f72670..51265795595 100644 --- a/.prettierignore +++ b/.prettierignore @@ -8,9 +8,11 @@ .vscode .yalc /**/scripts/info.js +*.map +*.min.js +*.bundle.js build coverage -coverage dist /packages/nextjs/examples node_modules diff --git a/.prettierrc b/.prettierrc deleted file mode 100644 index b49961d93e7..00000000000 --- a/.prettierrc +++ /dev/null @@ -1,12 +0,0 @@ -{ - "arrowParens": "avoid", - "bracketSpacing": true, - "jsxSingleQuote": true, - "plugins": ["prettier-plugin-packagejson", "prettier-plugin-tailwindcss", "prettier-plugin-astro"], - "printWidth": 120, - "semi": true, - "singleAttributePerLine": true, - "singleQuote": true, - "tabWidth": 2, - "trailingComma": "all" -} diff --git a/packages/agent-toolkit/package.json b/packages/agent-toolkit/package.json index 20aff574e2d..49edcd85022 100644 --- a/packages/agent-toolkit/package.json +++ b/packages/agent-toolkit/package.json @@ -39,8 +39,8 @@ "build": "tsup --env.NODE_ENV production", "clean": "rimraf ./dist", "dev": "tsup --watch", - "format": "prettier --write .", - "format:check": "prettier --cache --check .", + "format": "node ../../scripts/format-package.mjs", + "format:check": "node ../../scripts/format-package.mjs --check", "lint": "eslint src", "lint:attw": "attw --pack . --profile esm-only", "lint:publint": "publint", diff --git a/packages/astro/package.json b/packages/astro/package.json index 92e65208b0a..153b70650be 100644 --- a/packages/astro/package.json +++ b/packages/astro/package.json @@ -80,8 +80,8 @@ "build:dts": "tsc --emitDeclarationOnly --declaration", "copy:components": "rm -rf ./components && mkdir -p ./components/ && cp -r ./src/astro-components/* ./components/ && cp ./src/types.ts ./", "dev": "tsup --watch --onSuccess \"pnpm build:dts\"", - "format": "prettier --write .", - "format:check": "prettier --cache --check .", + "format": "node ../../scripts/format-package.mjs", + "format:check": "node ../../scripts/format-package.mjs --check", "lint": "eslint src env.d.ts", "lint:attw": "attw --pack . --profile esm-only --ignore-rules internal-resolution-error", "lint:publint": "pnpm copy:components && publint", diff --git a/packages/backend/package.json b/packages/backend/package.json index 56e3f544cf6..6a7cfa84e3c 100644 --- a/packages/backend/package.json +++ b/packages/backend/package.json @@ -93,8 +93,8 @@ "clean": "rimraf ./dist", "dev": "tsup --watch", "dev:publish": "pnpm dev -- --env.publish", - "format": "prettier --write .", - "format:check": "prettier --cache --check .", + "format": "node ../../scripts/format-package.mjs", + "format:check": "node ../../scripts/format-package.mjs --check", "lint": "eslint src", "lint:attw": "attw --pack . --profile node16 --ignore-rules false-cjs", "lint:publint": "publint", diff --git a/packages/chrome-extension/package.json b/packages/chrome-extension/package.json index b6041743e52..20964cea821 100644 --- a/packages/chrome-extension/package.json +++ b/packages/chrome-extension/package.json @@ -38,8 +38,8 @@ "clean": "rimraf ./dist", "dev": "tsup --watch", "dev:publish": "pnpm dev -- --env.publish", - "format": "prettier --write .", - "format:check": "prettier --cache --check .", + "format": "node ../../scripts/format-package.mjs", + "format:check": "node ../../scripts/format-package.mjs --check", "lint": "eslint src", "lint:attw": "attw --pack . --profile node16", "lint:publint": "publint", diff --git a/packages/clerk-js/package.json b/packages/clerk-js/package.json index 070baa671dc..7107bbea217 100644 --- a/packages/clerk-js/package.json +++ b/packages/clerk-js/package.json @@ -44,8 +44,8 @@ "dev:headless": "rspack serve --config rspack.config.js --env variant=\"clerk.headless.browser\"", "dev:origin": "rspack serve --config rspack.config.js --env devOrigin=http://localhost:${PORT:-4000}", "dev:sandbox": "rspack serve --config rspack.config.js --env devOrigin=http://localhost:${PORT:-4000} --env sandbox=1", - "format": "prettier --write .", - "format:check": "prettier --cache --check .", + "format": "node ../../scripts/format-package.mjs", + "format:check": "node ../../scripts/format-package.mjs --check", "lint": "eslint src", "lint:attw": "attw --pack . --profile node16 --ignore-rules named-exports", "lint:publint": "publint || true", diff --git a/packages/dev-cli/package.json b/packages/dev-cli/package.json index c8ac9367f46..71ccce0620c 100644 --- a/packages/dev-cli/package.json +++ b/packages/dev-cli/package.json @@ -19,8 +19,8 @@ "clerk-dev": "bin/cli.js" }, "scripts": { - "format": "prettier --write .", - "format:check": "prettier --cache --check .", + "format": "node ../../scripts/format-package.mjs", + "format:check": "node ../../scripts/format-package.mjs --check", "lint": "eslint src" }, "dependencies": { diff --git a/packages/elements/package.json b/packages/elements/package.json index dabd407a0d8..3c9e4b7fc59 100644 --- a/packages/elements/package.json +++ b/packages/elements/package.json @@ -63,8 +63,8 @@ "build:declarations": "tsc -p tsconfig.declarations.json", "dev": "tsup --env.NODE_ENV development --watch", "dev:example": "concurrently \"pnpm dev\" \"pnpm app:dev\"", - "format": "prettier --write .", - "format:check": "prettier --cache --check .", + "format": "node ../../scripts/format-package.mjs", + "format:check": "node ../../scripts/format-package.mjs --check", "lint": "eslint src", "lint:attw": "attw --pack . --profile node16", "lint:publint": "publint", diff --git a/packages/expo-passkeys/package.json b/packages/expo-passkeys/package.json index bee4ba7b1a0..c036a976649 100644 --- a/packages/expo-passkeys/package.json +++ b/packages/expo-passkeys/package.json @@ -25,8 +25,8 @@ "clean": "rimraf ./dist", "dev": "tsup --watch", "dev:publish": "pnpm dev -- --env.publish", - "format": "prettier --write .", - "format:check": "prettier --cache --check .", + "format": "node ../../scripts/format-package.mjs", + "format:check": "node ../../scripts/format-package.mjs --check", "lint": "eslint src", "open:android": "open -a \"Android Studio\" example/android", "open:ios": "xed example/ios", diff --git a/packages/expo/package.json b/packages/expo/package.json index 29f05189bf2..a410cefc6a0 100644 --- a/packages/expo/package.json +++ b/packages/expo/package.json @@ -71,8 +71,8 @@ "clean": "rimraf ./dist", "dev": "tsup --watch", "dev:publish": "pnpm dev -- --env.publish", - "format": "prettier --write .", - "format:check": "prettier --cache --check .", + "format": "node ../../scripts/format-package.mjs", + "format:check": "node ../../scripts/format-package.mjs --check", "lint": "eslint src", "publish:local": "pnpm yalc push --replace --sig", "test": "vitest run", diff --git a/packages/express/package.json b/packages/express/package.json index 38d4fc6a764..07d3d4f87aa 100644 --- a/packages/express/package.json +++ b/packages/express/package.json @@ -57,8 +57,8 @@ "clean": "rimraf ./dist", "dev": "tsup --watch", "dev:publish": "pnpm dev -- --env.publish", - "format": "prettier --write .", - "format:check": "prettier --cache --check .", + "format": "node ../../scripts/format-package.mjs", + "format:check": "node ../../scripts/format-package.mjs --check", "lint": "eslint src", "lint:attw": "attw --pack . --profile node16", "lint:publint": "publint", diff --git a/packages/fastify/package.json b/packages/fastify/package.json index d6f1efbc241..6ed51283b76 100644 --- a/packages/fastify/package.json +++ b/packages/fastify/package.json @@ -55,8 +55,8 @@ "build": "tsup --env.NODE_ENV production", "clean": "rimraf ./dist", "dev": "tsup --watch", - "format": "prettier --write .", - "format:check": "prettier --cache --check .", + "format": "node ../../scripts/format-package.mjs", + "format:check": "node ../../scripts/format-package.mjs --check", "lint": "eslint src", "lint:attw": "attw --pack . --profile node16 --ignore-rules unexpected-module-syntax", "lint:publint": "publint", diff --git a/packages/localizations/package.json b/packages/localizations/package.json index 8cfe82ef962..8d9d6235dba 100644 --- a/packages/localizations/package.json +++ b/packages/localizations/package.json @@ -100,8 +100,8 @@ "postbuild": "node ../../scripts/subpath-workaround.mjs localizations", "clean": "rimraf ./dist", "dev": "tsup --watch", - "format": "prettier --write .", - "format:check": "prettier --cache --check .", + "format": "node ../../scripts/format-package.mjs", + "format:check": "node ../../scripts/format-package.mjs --check", "generate": "tsc src/utils/generate.ts && node src/utils/generate.js && prettier --write src/*.ts", "lint": "eslint src", "lint:attw": "attw --pack . --profile node16" diff --git a/packages/nextjs/package.json b/packages/nextjs/package.json index db35286f6cc..e83f0f2b582 100644 --- a/packages/nextjs/package.json +++ b/packages/nextjs/package.json @@ -64,8 +64,8 @@ "clean": "rimraf ./dist", "dev": "tsup --watch", "dev:publish": "pnpm dev -- --env.publish", - "format": "prettier --write .", - "format:check": "prettier --cache --check .", + "format": "node ../../scripts/format-package.mjs", + "format:check": "node ../../scripts/format-package.mjs --check", "lint": "eslint src", "lint:attw": "attw --pack . --profile node16 --ignore-rules unexpected-module-syntax", "lint:publint": "publint", diff --git a/packages/nuxt/package.json b/packages/nuxt/package.json index 2ad2a0eded5..9c840243313 100644 --- a/packages/nuxt/package.json +++ b/packages/nuxt/package.json @@ -59,8 +59,8 @@ "scripts": { "build": "tsup", "dev": "tsup --watch", - "format": "prettier --write .", - "format:check": "prettier --cache --check .", + "format": "node ../../scripts/format-package.mjs", + "format:check": "node ../../scripts/format-package.mjs --check", "lint": "eslint src", "lint:attw": "attw --pack . --profile esm-only", "lint:publint": "publint", diff --git a/packages/react-router/package.json b/packages/react-router/package.json index 5028c7bfff4..eed1518f547 100644 --- a/packages/react-router/package.json +++ b/packages/react-router/package.json @@ -72,8 +72,8 @@ "scripts": { "build": "tsup", "dev": "tsup --watch", - "format": "prettier --write .", - "format:check": "prettier --cache --check .", + "format": "node ../../scripts/format-package.mjs", + "format:check": "node ../../scripts/format-package.mjs --check", "lint": "eslint src", "lint:attw": "attw --pack . --profile esm-only", "lint:publint": "publint", diff --git a/packages/react/package.json b/packages/react/package.json index 72dbe8b9673..3cd57f97b79 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -68,8 +68,8 @@ "clean": "rimraf ./dist", "dev": "tsup --watch", "dev:publish": "pnpm dev --env.publish", - "format": "prettier --write .", - "format:check": "prettier --cache --check .", + "format": "node ../../scripts/format-package.mjs", + "format:check": "node ../../scripts/format-package.mjs --check", "lint": "eslint src", "lint:attw": "attw --pack . --profile node16", "lint:publint": "publint", diff --git a/packages/remix/package.json b/packages/remix/package.json index 5995530af4a..d123f697cc0 100644 --- a/packages/remix/package.json +++ b/packages/remix/package.json @@ -67,8 +67,8 @@ "clean": "rimraf ./dist", "dev": "tsup --watch", "dev:publish": "pnpm dev -- --env.publish", - "format": "prettier --write .", - "format:check": "prettier --cache --check .", + "format": "node ../../scripts/format-package.mjs", + "format:check": "node ../../scripts/format-package.mjs --check", "lint": "eslint src", "lint:attw": "attw --pack . --profile node16", "lint:publint": "publint", diff --git a/packages/shared/package.json b/packages/shared/package.json index 2a5df334770..8f5575c7133 100644 --- a/packages/shared/package.json +++ b/packages/shared/package.json @@ -131,8 +131,8 @@ "clean": "rimraf ./dist", "dev": "tsup --watch", "dev:publish": "pnpm dev -- --env.publish", - "format": "prettier --write .", - "format:check": "prettier --cache --check .", + "format": "node ../../scripts/format-package.mjs", + "format:check": "node ../../scripts/format-package.mjs --check", "postinstall": "node ./scripts/postinstall.mjs", "lint": "eslint src", "lint:attw": "attw --pack . --profile node16", diff --git a/packages/tanstack-react-start/package.json b/packages/tanstack-react-start/package.json index 5d672be8db4..608101dcb97 100644 --- a/packages/tanstack-react-start/package.json +++ b/packages/tanstack-react-start/package.json @@ -59,8 +59,8 @@ "clean": "rimraf ./dist", "dev": "tsup --watch", "dev:publish": "pnpm dev -- --env.publish", - "format": "prettier --write .", - "format:check": "prettier --cache --check .", + "format": "node ../../scripts/format-package.mjs", + "format:check": "node ../../scripts/format-package.mjs --check", "lint": "eslint src", "lint:attw": "attw --pack . --profile esm-only", "lint:publint": "publint", diff --git a/packages/testing/package.json b/packages/testing/package.json index f10634d36d5..6c63d5ee596 100644 --- a/packages/testing/package.json +++ b/packages/testing/package.json @@ -69,8 +69,8 @@ "build": "tsup --env.NODE_ENV production", "clean": "rimraf ./dist", "dev": "tsup --watch", - "format": "prettier --write .", - "format:check": "prettier --cache --check .", + "format": "node ../../scripts/format-package.mjs", + "format:check": "node ../../scripts/format-package.mjs --check", "lint": "eslint src" }, "dependencies": { diff --git a/packages/themes/package.json b/packages/themes/package.json index 691e59b976f..463bf66a6ca 100644 --- a/packages/themes/package.json +++ b/packages/themes/package.json @@ -34,8 +34,8 @@ "build": "tsc -p tsconfig.build.json", "clean": "rimraf ./dist", "dev": "tsc -p tsconfig.build.json --watch", - "format": "prettier --write .", - "format:check": "prettier --cache --check .", + "format": "node ../../scripts/format-package.mjs", + "format:check": "node ../../scripts/format-package.mjs --check", "lint": "eslint src", "lint:attw": "attw --pack . --profile node16" }, diff --git a/packages/types/package.json b/packages/types/package.json index 666fc84e552..86f5d1dba37 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -34,8 +34,8 @@ "build:declarations": "tsc -p tsconfig.declarations.json", "clean": "rimraf ./dist", "dev": "tsup --watch", - "format": "prettier --write .", - "format:check": "prettier --cache --check .", + "format": "node ../../scripts/format-package.mjs", + "format:check": "node ../../scripts/format-package.mjs --check", "lint": "eslint src", "lint:attw": "attw --pack . --profile node16", "publish:local": "pnpm yalc push --replace --sig" diff --git a/packages/upgrade/package.json b/packages/upgrade/package.json index 6156987e9a5..5489f4afcaf 100644 --- a/packages/upgrade/package.json +++ b/packages/upgrade/package.json @@ -19,8 +19,8 @@ "build": "pnpm clean && NODE_ENV=production babel --keep-file-extension --out-dir=dist src --copy-files", "clean": "rm -rf dist/*", "dev": "babel --keep-file-extension --out-dir=dist --watch src --copy-files", - "format": "prettier --write .", - "format:check": "prettier --cache --check .", + "format": "node ../../scripts/format-package.mjs", + "format:check": "node ../../scripts/format-package.mjs --check", "lint": "eslint src/", "lint:publint": "publint", "test": "vitest run", diff --git a/packages/vue/package.json b/packages/vue/package.json index ffd5f802b25..4758131ad2a 100644 --- a/packages/vue/package.json +++ b/packages/vue/package.json @@ -48,8 +48,8 @@ "build": "tsup --onSuccess \"pnpm build:dts\"", "build:dts": "vue-tsc --declaration --emitDeclarationOnly -p tsconfig.build.json", "dev": "tsup --watch", - "format": "prettier --write .", - "format:check": "prettier --cache --check .", + "format": "node ../../scripts/format-package.mjs", + "format:check": "node ../../scripts/format-package.mjs --check", "lint": "eslint src", "lint:attw": "attw --pack . --profile esm-only --ignore-rules internal-resolution-error", "lint:publint": "publint", diff --git a/prettier.config.mjs b/prettier.config.mjs new file mode 100644 index 00000000000..0c399854540 --- /dev/null +++ b/prettier.config.mjs @@ -0,0 +1,12 @@ +export default { + arrowParens: 'avoid', + bracketSpacing: true, + jsxSingleQuote: true, + plugins: ['prettier-plugin-packagejson', 'prettier-plugin-tailwindcss', 'prettier-plugin-astro'], + printWidth: 120, + semi: true, + singleAttributePerLine: true, + singleQuote: true, + tabWidth: 2, + trailingComma: 'all', +}; diff --git a/scripts/1password-keys.mjs b/scripts/1password-keys.mjs index 8484d274de4..c6ffd90123c 100644 --- a/scripts/1password-keys.mjs +++ b/scripts/1password-keys.mjs @@ -2,6 +2,7 @@ import { writeFile } from 'node:fs/promises'; import { join } from 'node:path'; + import { $ } from 'zx'; const is1PasswordInstalled = await $`op --version`.then(res => res.exitCode === 0).catch(() => false); @@ -19,7 +20,7 @@ const envItem = await $`op read 'op://Shared/JS SDKs integration tests/add more/ return null; }) - .catch(err => { + .catch(() => { return null; }); @@ -31,7 +32,7 @@ const keysItem = await $`op read 'op://Shared/JS SDKs integration tests/add more return null; }) - .catch(err => { + .catch(() => { return null; }); diff --git a/scripts/format-non-workspace.mjs b/scripts/format-non-workspace.mjs index 64a5dd4b54e..daa36bd596f 100644 --- a/scripts/format-non-workspace.mjs +++ b/scripts/format-non-workspace.mjs @@ -1,44 +1,76 @@ #!/usr/bin/env node +import { globby } from 'globby'; import { $ } from 'zx'; -/** - * Format files that are not part of workspace packages. - * This includes: - * - integration/ directory - * - playground/ directory - * - scripts/ directory - * - .github/ directory - * - Root level config files - */ - -const NON_WORKSPACE_PATHS = [ - 'integration', - 'playground', - 'scripts', - '.github', - // Root level config files - '*.json', - '*.md', - '*.mjs', - '*.ts', - '*.yaml', - '.prettierrc*', +const ROOT_FILE_PATTERNS = ['*.cjs', '*.js', '*.json', '*.md', '*.mjs', '*.ts', '*.yaml']; +const NON_WORKSPACE_PATTERNS = [ + 'docs/**/*.{js,jsx,ts,tsx,json,md,mdx}', + 'integration/**/*.{js,jsx,ts,tsx,json,md,mdx}', + 'playground/**/*.{js,jsx,ts,tsx,json,md,mdx}', + 'scripts/**/*.{js,jsx,ts,tsx,json,md,mdx}', ]; +async function getExistingFiles() { + const existingFiles = []; + + for (const pattern of ROOT_FILE_PATTERNS) { + try { + const matches = await globby(pattern, { + ignore: ['node_modules/**', 'packages/**'], + }); + existingFiles.push(...matches); + } catch { + // Pattern didn't match any files, skip it + } + } + + for (const pattern of NON_WORKSPACE_PATTERNS) { + try { + const matches = await globby(pattern, { + ignore: [ + 'node_modules/**', + '**/dist/**', + '**/build/**', + '**/coverage/**', + '**/.turbo/**', + '**/.next/**', + '**/.tsup/**', + ], + }); + existingFiles.push(...matches); + } catch { + // Pattern didn't match any files, skip it + } + } + + return existingFiles.filter(Boolean); +} + async function formatNonWorkspaceFiles() { const isCheck = process.argv.includes('--check'); const baseArgs = isCheck - ? ['prettier', '--cache', '--check', '--ignore-unknown'] - : ['prettier', '--write', '--ignore-unknown']; + ? ['prettier', '--cache', '--check', '--ignore-unknown', '--ignore-path', '.prettierignore'] + : ['prettier', '--write', '--ignore-unknown', '--ignore-path', '.prettierignore']; console.log(`${isCheck ? 'Checking' : 'Formatting'} non-workspace files...`); try { - await $`pnpm ${baseArgs} ${NON_WORKSPACE_PATHS}`; + const existingFiles = await getExistingFiles(); + + if (existingFiles.length === 0) { + console.log('ā„¹ļø No non-workspace files found to format'); + return; + } + + console.log(`šŸ“ Found ${existingFiles.length} files/directories to format`); + await $`pnpm ${baseArgs} ${existingFiles}`; console.log(`āœ… Non-workspace files ${isCheck ? 'check passed' : 'formatted successfully'}`); } catch (error) { console.error(`āŒ Non-workspace files ${isCheck ? 'check failed' : 'formatting failed'}`); + if (error.stderr) { + console.error(error.stderr); + } process.exit(1); } } diff --git a/scripts/format-package.mjs b/scripts/format-package.mjs new file mode 100644 index 00000000000..34b349d87b8 --- /dev/null +++ b/scripts/format-package.mjs @@ -0,0 +1,23 @@ +#!/usr/bin/env node + +import { $ } from 'zx'; + +async function formatPackage() { + const isCheck = process.argv.includes('--check'); + const baseArgs = isCheck + ? ['prettier', '--cache', '--check', '--ignore-path', '../../.prettierignore'] + : ['prettier', '--write', '--ignore-path', '../../.prettierignore']; + + try { + await $`pnpm ${baseArgs} .`; + console.log(`āœ… Package files ${isCheck ? 'check passed' : 'formatted successfully'}`); + } catch (error) { + console.error(`āŒ Package files ${isCheck ? 'check failed' : 'formatting failed'}`); + if (error.stderr) { + console.error(error.stderr); + } + process.exit(1); + } +} + +formatPackage().catch(console.error); diff --git a/turbo.json b/turbo.json index c7c39b3f626..5a651d02495 100644 --- a/turbo.json +++ b/turbo.json @@ -157,6 +157,8 @@ "**/*.css", "**/*.scss", "**/*.html", + ".prettierignore", + "prettier.config.mjs", "!**/__snapshots__/**", "!CHANGELOG.md", "!coverage/**", @@ -164,8 +166,7 @@ "!examples/**", "!node_modules/**" ], - "outputs": [], - "cache": false + "outputs": [] }, "format:check": { "inputs": [ @@ -181,6 +182,8 @@ "**/*.css", "**/*.scss", "**/*.html", + ".prettierignore", + "prettier.config.mjs", "!**/__snapshots__/**", "!CHANGELOG.md", "!coverage/**", From 256f109aa831b78c202be79d0f3034bb2a0f2c97 Mon Sep 17 00:00:00 2001 From: Jacek Date: Thu, 24 Jul 2025 10:00:32 -0500 Subject: [PATCH 3/6] verbose output --- scripts/format-non-workspace.mjs | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/scripts/format-non-workspace.mjs b/scripts/format-non-workspace.mjs index daa36bd596f..7c0c85ecde4 100644 --- a/scripts/format-non-workspace.mjs +++ b/scripts/format-non-workspace.mjs @@ -17,7 +17,7 @@ async function getExistingFiles() { for (const pattern of ROOT_FILE_PATTERNS) { try { const matches = await globby(pattern, { - ignore: ['node_modules/**', 'packages/**'], + ignore: ['node_modules/**', '**/node_modules/**', 'packages/**'], }); existingFiles.push(...matches); } catch { @@ -30,12 +30,14 @@ async function getExistingFiles() { const matches = await globby(pattern, { ignore: [ 'node_modules/**', + '**/node_modules/**', '**/dist/**', '**/build/**', '**/coverage/**', '**/.turbo/**', '**/.next/**', '**/.tsup/**', + '**/.cache/**', ], }); existingFiles.push(...matches); @@ -49,6 +51,7 @@ async function getExistingFiles() { async function formatNonWorkspaceFiles() { const isCheck = process.argv.includes('--check'); + const isVerbose = process.argv.includes('--verbose'); const baseArgs = isCheck ? ['prettier', '--cache', '--check', '--ignore-unknown', '--ignore-path', '.prettierignore'] : ['prettier', '--write', '--ignore-unknown', '--ignore-path', '.prettierignore']; @@ -64,6 +67,15 @@ async function formatNonWorkspaceFiles() { } console.log(`šŸ“ Found ${existingFiles.length} files/directories to format`); + + if (isVerbose) { + console.log('\nšŸ“„ Files to be formatted:'); + existingFiles.forEach((file, index) => { + console.log(` ${index + 1}. ${file}`); + }); + console.log(''); + } + await $`pnpm ${baseArgs} ${existingFiles}`; console.log(`āœ… Non-workspace files ${isCheck ? 'check passed' : 'formatted successfully'}`); } catch (error) { From dda0abcafdd1b6408b179edad0570f265bd89cc2 Mon Sep 17 00:00:00 2001 From: Jacek Date: Thu, 24 Jul 2025 10:03:57 -0500 Subject: [PATCH 4/6] wip --- packages/astro/CHANGELOG.md | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/packages/astro/CHANGELOG.md b/packages/astro/CHANGELOG.md index a0ba9891a16..d574ece40de 100644 --- a/packages/astro/CHANGELOG.md +++ b/packages/astro/CHANGELOG.md @@ -241,7 +241,7 @@ ```astro --- - import { CreateOrganization } from '@clerk/astro/components'; + import { CreateOrganization } from '@clerk/astro/components' --- @@ -585,8 +585,8 @@ Regular usage without server islands: ```astro - -

Not an admin

+ +

Not an admin

You're an admin

``` @@ -594,12 +594,9 @@ Example with server islands: ```astro - -

Loading...

-

Not an admin

+ +

Loading...

+

Not an admin

You're an admin

``` @@ -1234,7 +1231,7 @@ ```astro --- - import { SignInButton } from '@clerk/components/astro'; + import { SignInButton } from '@clerk/components/astro' --- From 9b11591c2230b619cf2436078fce7a60e2d3d7d9 Mon Sep 17 00:00:00 2001 From: Jacek Date: Thu, 24 Jul 2025 10:05:18 -0500 Subject: [PATCH 5/6] wip --- packages/clerk-js/.prettierignore | 5 ----- 1 file changed, 5 deletions(-) delete mode 100644 packages/clerk-js/.prettierignore diff --git a/packages/clerk-js/.prettierignore b/packages/clerk-js/.prettierignore deleted file mode 100644 index abfdc92a42c..00000000000 --- a/packages/clerk-js/.prettierignore +++ /dev/null @@ -1,5 +0,0 @@ -dist/ -coverage/ -node_modules/ -.turbo/ -*.js.map \ No newline at end of file From c9bfd67303db17afb7ad6ca1a69e0a68ce0145da Mon Sep 17 00:00:00 2001 From: Jacek Date: Thu, 24 Jul 2025 10:15:19 -0500 Subject: [PATCH 6/6] chore: empty changeset --- .changeset/five-birds-cheer.md | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 .changeset/five-birds-cheer.md diff --git a/.changeset/five-birds-cheer.md b/.changeset/five-birds-cheer.md new file mode 100644 index 00000000000..a845151cc84 --- /dev/null +++ b/.changeset/five-birds-cheer.md @@ -0,0 +1,2 @@ +--- +---