diff --git a/.changeset/dull-ducks-dance.md b/.changeset/dull-ducks-dance.md new file mode 100644 index 00000000000..a845151cc84 --- /dev/null +++ b/.changeset/dull-ducks-dance.md @@ -0,0 +1,2 @@ +--- +--- diff --git a/setupJest.afterEnv.ts b/jest.setup-after-env.ts similarity index 100% rename from setupJest.afterEnv.ts rename to jest.setup-after-env.ts diff --git a/package.json b/package.json index b431372e4fe..9fcda4dd924 100644 --- a/package.json +++ b/package.json @@ -1,17 +1,45 @@ { "name": "@clerk/javascript", + "version": "0.0.0", + "private": true, + "license": "MIT", "workspaces": { "packages": [ "packages/*" ] }, - "license": "MIT", - "version": "0.0.0", - "private": true, - "packageManager": "npm@8.5.0", - "engines": { - "node": ">=16.8.0", - "npm": ">=8.5.0" + "scripts": { + "build": "FORCE_COLOR=1 turbo build --concurrency=${TURBO_CONCURRENCY:-80%}", + "bundlewatch": "turbo bundlewatch", + "changeset": "changeset", + "changeset:empty": "npm run changeset -- --empty", + "clean": "turbo clean", + "dev": "FORCE_COLOR=1 turbo dev --filter=@clerk/* --filter=!@clerk/expo", + "dev:js": "FORCE_COLOR=1 turbo dev:current --filter=@clerk/clerk-js", + "format": "prettier --write .", + "format:check": "prettier --cache --check .", + "lint": "FORCE_COLOR=1 turbo lint", + "lint:attw": "FORCE_COLOR=1 turbo lint:attw", + "lint:fix": "FORCE_COLOR=1 turbo lint -- --fix", + "lint:publint": "FORCE_COLOR=1 turbo lint:publint", + "nuke": "./scripts/nuke.sh", + "prepare": "husky install", + "release": "TURBO_FORCE=true FORCE_COLOR=1 npm run build -- --force && changeset publish && git push --follow-tags", + "release:snapshot": "TURBO_FORCE=true FORCE_COLOR=1 npm run build && changeset publish --tag snapshot --no-git-tag", + "release:staging": "TURBO_FORCE=true FORCE_COLOR=1 npm run build && changeset publish --tag staging --no-git-tag", + "release:verdaccio": "if [ \"$(npm config get registry)\" = \"https://registry.npmjs.org/\" ]; then echo 'Error: Using default registry' && exit 1; else TURBO_FORCE=true TURBO_CONCURRENCY=4 npm run build && changeset publish --no-git-tag; fi", + "test": "FORCE_COLOR=1 turbo test --concurrency=${TURBO_CONCURRENCY:-80%}", + "test:ci": "FORCE_COLOR=1 turbo test --concurrency=${TURBO_CONCURRENCY:-80%}", + "test:integration:base": "DEBUG=1 npx playwright test --config integration/playwright.config.ts", + "test:integration:deployment:nextjs": "DEBUG=1 npx playwright test --config integration/playwright.deployments.config.ts", + "test:integration:generic": "E2E_APP_ID=react.vite.* npm run test:integration:base -- --grep @generic", + "test:integration:nextjs": "E2E_APP_ID=next.appRouter.withEmailCodes npm run test:integration:base -- --grep \"@generic|@nextjs\"", + "test:integration:remix": "echo 'placeholder'", + "update:lockfile": "npm run nuke && npm install -D --arch=x64 --platform=linux turbo && npm install -D --arch=arm64 --platform=darwin turbo", + "version": "changeset version && ./scripts/version-info.sh", + "version:snapshot": "./scripts/snapshot.mjs", + "version:staging": "./scripts/staging.mjs", + "yalc:all": "for d in packages/*/; do echo $d; cd $d; yalc push --replace --sig; cd '../../'; done" }, "devDependencies": { "@arethetypeswrong/cli": "^0.12.1", @@ -45,9 +73,9 @@ "husky": "^8.0.3", "jest": "^29.3.1", "jest-environment-jsdom": "^29.3.1", + "lint-staged": "^14.0.1", "npm-cli-adduser": "^1.1.4", "npm-cli-login": "^1.0.0", - "lint-staged": "^14.0.1", "prettier": "^2.8.7", "publint": "^0.2.4", "react": "18.2.0", @@ -61,37 +89,9 @@ "verdaccio": "^5.26.3", "zx": "^7.2.3" }, - "scripts": { - "dev": "FORCE_COLOR=1 turbo dev --filter=@clerk/* --filter=!@clerk/expo", - "dev:js": "FORCE_COLOR=1 turbo dev:current --filter=@clerk/clerk-js", - "build": "FORCE_COLOR=1 turbo build --concurrency=${TURBO_CONCURRENCY:-80%}", - "test": "FORCE_COLOR=1 turbo test --concurrency=${TURBO_CONCURRENCY:-80%}", - "test:ci": "FORCE_COLOR=1 turbo test --concurrency=${TURBO_CONCURRENCY:-80%}", - "test:integration:base": "DEBUG=1 npx playwright test --config integration/playwright.config.ts", - "test:integration:generic": "E2E_APP_ID=react.vite.* npm run test:integration:base -- --grep @generic", - "test:integration:nextjs": "E2E_APP_ID=next.appRouter.withEmailCodes npm run test:integration:base -- --grep \"@generic|@nextjs\"", - "test:integration:remix": "echo 'placeholder'", - "test:integration:deployment:nextjs": "DEBUG=1 npx playwright test --config integration/playwright.deployments.config.ts", - "clean": "turbo clean", - "lint": "FORCE_COLOR=1 turbo lint", - "lint:publint": "FORCE_COLOR=1 turbo lint:publint", - "lint:attw": "FORCE_COLOR=1 turbo lint:attw", - "lint:fix": "FORCE_COLOR=1 turbo lint -- --fix", - "bundlewatch": "turbo bundlewatch", - "format": "prettier --write .", - "format:check": "prettier --cache --check .", - "nuke": "./scripts/nuke.sh", - "yalc:all": "for d in packages/*/; do echo $d; cd $d; yalc push --replace --sig; cd '../../'; done", - "prepare": "husky install", - "changeset": "changeset", - "changeset:empty": "npm run changeset -- --empty", - "version": "changeset version && ./scripts/version-info.sh", - "version:snapshot": "./scripts/snapshot.mjs", - "version:staging": "./scripts/staging.mjs", - "release": "FORCE_COLOR=1 npm run build -- --force && changeset publish && git push --follow-tags", - "release:snapshot": "FORCE_COLOR=1 npm run build && changeset publish --tag snapshot --no-git-tag", - "release:staging": "FORCE_COLOR=1 npm run build && changeset publish --tag staging --no-git-tag", - "release:verdaccio": "if [ \"$(npm config get registry)\" = \"https://registry.npmjs.org/\" ]; then echo 'Error: Using default registry' && exit 1; else TURBO_CONCURRENCY=4 npm run build && changeset publish --no-git-tag; fi", - "update:lockfile": "npm run nuke && npm install -D --arch=x64 --platform=linux turbo && npm install -D --arch=arm64 --platform=darwin turbo" + "packageManager": "npm@8.5.0", + "engines": { + "node": ">=16.8.0", + "npm": ">=8.5.0" } } diff --git a/packages/chrome-extension/jest.config.js b/packages/chrome-extension/jest.config.js index 882e10b0fe4..6bab963d68c 100644 --- a/packages/chrome-extension/jest.config.js +++ b/packages/chrome-extension/jest.config.js @@ -7,7 +7,7 @@ module.exports = { roots: ['/src'], testEnvironment: 'jsdom', - setupFilesAfterEnv: ['../../setupJest.afterEnv.ts'], + setupFilesAfterEnv: ['../../jest.setup-after-env.ts'], moduleDirectories: ['node_modules', '/src'], transform: { diff --git a/packages/clerk-js/jest.config.js b/packages/clerk-js/jest.config.js index 21b5eeb4c15..3464b1d1036 100644 --- a/packages/clerk-js/jest.config.js +++ b/packages/clerk-js/jest.config.js @@ -3,10 +3,10 @@ const config = { displayName: 'clerk-js', injectGlobals: true, - testEnvironment: '/jsdom-with-timezone.ts', + testEnvironment: '/jest.jsdom-with-timezone.ts', roots: ['/src'], - setupFiles: ['./setupJest.ts'], - setupFilesAfterEnv: ['./setupJestAfterEnv.ts'], + setupFiles: ['./jest.setup.ts'], + setupFilesAfterEnv: ['./jest.setup-after-env.ts'], testRegex: [ '/__tests__/(.+/)*.*.test.[jt]sx?$', '/ui/.*/__tests__/.*.test.[jt]sx?$', diff --git a/packages/clerk-js/jsdom-with-timezone.ts b/packages/clerk-js/jest.jsdom-with-timezone.ts similarity index 100% rename from packages/clerk-js/jsdom-with-timezone.ts rename to packages/clerk-js/jest.jsdom-with-timezone.ts diff --git a/packages/clerk-js/setupJestAfterEnv.ts b/packages/clerk-js/jest.setup-after-env.ts similarity index 100% rename from packages/clerk-js/setupJestAfterEnv.ts rename to packages/clerk-js/jest.setup-after-env.ts diff --git a/packages/clerk-js/setupJest.ts b/packages/clerk-js/jest.setup.ts similarity index 100% rename from packages/clerk-js/setupJest.ts rename to packages/clerk-js/jest.setup.ts diff --git a/packages/clerk-js/tsconfig.test.json b/packages/clerk-js/tsconfig.test.json index 97f9024bed3..72bee288c2a 100644 --- a/packages/clerk-js/tsconfig.test.json +++ b/packages/clerk-js/tsconfig.test.json @@ -1,5 +1,5 @@ { "extends": "./tsconfig.json", - "include": ["src/**/*", "./setupJestAfterEnv.ts"], + "include": ["src/**/*", "./jest.setup-after-env.ts"], "exclude": ["node_modules"] } diff --git a/packages/clerk-js/turbo.json b/packages/clerk-js/turbo.json new file mode 100644 index 00000000000..07391097f92 --- /dev/null +++ b/packages/clerk-js/turbo.json @@ -0,0 +1,69 @@ +{ + "extends": ["//"], + "pipeline": { + "build": { + "inputs": [ + "*.d.ts", + "**/package.json", + "bundlewatch.config.json", + "headless/**", + "src/**", + "tsconfig.json", + "tsconfig.build.json", + "tsconfig.declarations.json", + "tsup.config.ts", + "webpack.config.js", + + "!**/**/*.test.*", + "!**/test/**", + "!**/tests/**", + "!**/__tests__/**", + "!**/__mocks__/**", + "!**/__snapshots__/**", + "!coverage/**", + "!examples/**", + "!node_modules/**" + ] + }, + "test": { + "inputs": [ + "*.d.ts", + "**/package.json", + "bundlewatch.config.json", + "jest.*", + "src/**", + "svgTransform.js", + "tests/**", + "tsconfig.json", + "tsconfig.*.json", + "tsup.config.ts", + "webpack.config.js", + + "!**/__snapshots__/**", + "!coverage/**", + "!examples/**", + "!node_modules/**" + ] + }, + "test:ci": { + "dependsOn": ["build"], + "inputs": [ + "*.d.ts", + "**/package.json", + "bundlewatch.config.json", + "jest.*", + "src/**", + "tests/**", + "tsconfig.json", + "tsconfig.*.json", + "tsup.config.ts", + "webpack.config.js", + + "!**/__snapshots__/**", + "!coverage/**", + "!examples/**", + "!node_modules/**" + ] + } + } +} diff --git a/packages/react/jest.config.js b/packages/react/jest.config.js index 44b634b7142..e37103a5711 100644 --- a/packages/react/jest.config.js +++ b/packages/react/jest.config.js @@ -4,7 +4,7 @@ module.exports = { roots: ['/src'], testEnvironment: 'jsdom', - setupFilesAfterEnv: ['../../setupJest.afterEnv.ts'], + setupFilesAfterEnv: ['../../jest.setup-after-env.ts'], moduleDirectories: ['node_modules', '/src'], transform: { diff --git a/packages/sdk-node/jest.config.js b/packages/sdk-node/jest.config.js index 13a98183d6f..bf00d606ee1 100644 --- a/packages/sdk-node/jest.config.js +++ b/packages/sdk-node/jest.config.js @@ -4,7 +4,7 @@ module.exports = { transform: { '^.+\\.ts$': 'ts-jest', }, - setupFiles: ['/setupEnvVars.js'], + setupFiles: ['/jest.setup.js'], collectCoverage: true, // Jest currently does not support package.json subpath imports // so we manually map them to the actual files. See @clerk/backend/package.json diff --git a/packages/sdk-node/setupEnvVars.js b/packages/sdk-node/jest.setup.js similarity index 100% rename from packages/sdk-node/setupEnvVars.js rename to packages/sdk-node/jest.setup.js diff --git a/packages/sdk-node/turbo.json b/packages/sdk-node/turbo.json new file mode 100644 index 00000000000..ecf7ee4b7f0 --- /dev/null +++ b/packages/sdk-node/turbo.json @@ -0,0 +1,28 @@ +{ + "extends": ["//"], + "pipeline": { + "build": { + "inputs": [ + "*.d.ts", + "**/package.json", + "cjs/**", + "esm/**", + "src/**", + "scripts/**", + "tsconfig.json", + "tsconfig.declarations.json", + "tsup.config.ts", + + "!**/**/*.test.*", + "!**/test/**", + "!**/tests/**", + "!**/__tests__/**", + "!**/__mocks__/**", + "!**/__snapshots__/**", + "!coverage/**", + "!examples/**", + "!node_modules/**" + ] + } + } +} diff --git a/packages/shared/jest.config.js b/packages/shared/jest.config.js index d2615837d8f..a2b723665c1 100644 --- a/packages/shared/jest.config.js +++ b/packages/shared/jest.config.js @@ -5,7 +5,7 @@ const config = { testEnvironment: 'jsdom', roots: ['/src'], - setupFiles: ['./setupJest.ts'], + setupFiles: ['./jest.setup.ts'], collectCoverage: false, coverageProvider: 'v8', diff --git a/packages/shared/setupJest.ts b/packages/shared/jest.setup.ts similarity index 100% rename from packages/shared/setupJest.ts rename to packages/shared/jest.setup.ts diff --git a/tsconfig.eslint.json b/tsconfig.eslint.json index d67b88526ca..cf89b1187b0 100644 --- a/tsconfig.eslint.json +++ b/tsconfig.eslint.json @@ -5,16 +5,16 @@ "allowJs": true }, "include": [ + ".eslintrc.js", + "commitlint.config.js", + "jest.*.ts", + "integration/*/*.js", + "integration/**/*.ts", + "integration/**/*.tsx", "packages/*/src", + "packages/*/*.js", "packages/**/*.ts", "packages/**/*.tsx", - "packages/*/*.js", - "integration/**/*.ts", - "integration/**/*.tsx", - "integration/*/*.js", - ".eslintrc.js", - "commitlint.config.js", - "scripts/*.mjs", - "setupJest.afterEnv.ts" + "scripts/*.mjs" ] } diff --git a/turbo.json b/turbo.json index 4b1881aecf2..714d24c58ef 100644 --- a/turbo.json +++ b/turbo.json @@ -3,42 +3,55 @@ "remoteCache": { "signature": true }, - "globalDependencies": [ + ".*", + "jest.*.ts", "packages/eslint-config-custom/index.js", "package.json", "package-lock.json", - "setupJest.afterEnv.ts", "tsconfig.json", - "tsconfig.*.json" + "tsconfig.*.json", + "verdaccio.*.yaml" ], "globalEnv": [ + "CI", + "CLERK_*", + "GATSBY_CLERK_*", + "NEXT_PUBLIC_CLERK_*", + "NODE_ENV", + "NODE_EXTRA_CA_CERTS", "NODE_VERSION", "NPM_VERSION", - "NODE_ENV", - "VERCEL", - "CLERK_JS_VERSION", - "CLERK_API_URL", - "CLERK_API_VERSION", - "CLERK_API_KEY", - "CLERK_SECRET_KEY", - "GATSBY_CLERK_JS", - "GATSBY_CLERK_FRONTEND_API", - "GATSBY_CLERK_PROXY_URL", - "GATSBY_CLERK_PUBLISHABLE_KEY", - "NEXT_PUBLIC_CLERK_JS_VERSION", - "NEXT_PUBLIC_CLERK_JS", - "NEXT_PUBLIC_CLERK_FRONTEND_API", - "NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY", - "NEXT_PUBLIC_CLERK_DOMAIN", - "NEXT_PUBLIC_CLERK_PROXY_URL", - "NEXT_PUBLIC_CLERK_IS_SATELLITE", - "NEXT_PUBLIC_CLERK_SIGN_IN_URL", - "NEXT_PUBLIC_CLERK_SIGN_UP_URL" + "RUNNER_ARCH", + "RUNNER_DEBUG", + "RUNNER_OS", + "TZ", + "VERCEL" ], "pipeline": { "build": { "dependsOn": ["^build"], + "inputs": [ + "*.d.ts", + "**/package.json", + "bundlewatch.config.json", + "src/**", + "tsconfig.json", + "tsconfig.build.json", + "tsconfig.declarations.json", + "tsup.config.ts", + + "!**/**/*.test.*", + "!**/test/**", + "!**/tests/**", + "!**/__tests__/**", + "!**/__mocks__/**", + "!**/__snapshots__/**", + "!coverage/**", + "!examples/**", + "!node_modules/**" + ], + "outputMode": "new-only", "outputs": ["dist/**"] }, "dev": { @@ -46,8 +59,8 @@ "cache": false }, "dev:current": { - "dependsOn": ["^build", "dev"], "cache": false, + "dependsOn": ["^build", "dev"], "persistent": true }, "clean": { @@ -56,14 +69,49 @@ }, "test": { "dependsOn": ["build"], + "inputs": [ + "*.d.ts", + "**/package.json", + "bundlewatch.config.json", + "jest.*", + "src/**", + "tests/**", + "tsconfig.json", + "tsconfig.*.json", + "tsup.config.ts", + + "!**/__snapshots__/**", + "!coverage/**", + "!examples/**", + "!node_modules/**" + ], + "outputMode": "new-only", "outputs": [] }, "test:ci": { "dependsOn": ["build"], + "inputs": [ + "*.d.ts", + "**/package.json", + "bundlewatch.config.json", + "jest.*", + "src/**", + "tests/**", + "tsconfig.json", + "tsconfig.*.json", + "tsup.config.ts", + + "!**/__snapshots__/**", + "!coverage/**", + "!examples/**", + "!node_modules/**" + ], + "outputMode": "new-only", "outputs": [] }, "lint": { - "dependsOn": ["build"], + "dependsOn": ["^build"], + "inputs": ["src/**"], "outputs": [] }, "lint:publint": {