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/.changeset/perfect-dots-doubt.md b/.changeset/perfect-dots-doubt.md new file mode 100644 index 00000000000..a845151cc84 --- /dev/null +++ b/.changeset/perfect-dots-doubt.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 3d2500ad033..02d15601d0e 100644 --- a/package.json +++ b/package.json @@ -88,10 +88,10 @@ "version": "npx changeset version && ./scripts/version-info.sh", "version:snapshot": "./scripts/snapshot.mjs", "version:staging": "./scripts/staging.mjs", - "release": "FORCE_COLOR=1 npm run build -- --force && npx changeset publish && git push --follow-tags", - "release:snapshot": "FORCE_COLOR=1 npm run build && npx changeset publish --tag snapshot --no-git-tag", - "release:staging": "FORCE_COLOR=1 npm run build && npx 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 && npx changeset publish --no-git-tag; fi", + "release": "TURBO_FORCE=true FORCE_COLOR=1 npm run build -- --force && npx changeset publish && git push --follow-tags", + "release:snapshot": "TURBO_FORCE=true ORCE_COLOR=1 npm run build && npx changeset publish --tag snapshot --no-git-tag", + "release:staging": "TURBO_FORCE=true FORCE_COLOR=1 npm run build && npx 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 && npx 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" } } diff --git a/packages/backend/src/tokens/factory.ts b/packages/backend/src/tokens/factory.ts index a3a640c276f..9a7a665b21e 100644 --- a/packages/backend/src/tokens/factory.ts +++ b/packages/backend/src/tokens/factory.ts @@ -106,6 +106,7 @@ export function createAuthenticateRequest(params: CreateAuthenticateRequestOptio publishableKey: runtimePublishableKey || buildtimePublishableKey, proxyUrl: runtimeProxyUrl || buildProxyUrl, isSatellite: runtimeIsSatellite || buildtimeIsSatellite, + // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion domain: (runtimeDomain || buildtimeDomain) as any, userAgent: runtimeUserAgent || buildUserAgent, }); 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/react/src/components/controlComponents.tsx b/packages/react/src/components/controlComponents.tsx index 20791102102..061dd3a6f64 100644 --- a/packages/react/src/components/controlComponents.tsx +++ b/packages/react/src/components/controlComponents.tsx @@ -42,8 +42,8 @@ export const ClerkLoading = ({ children }: React.PropsWithChildren): JS export const RedirectToSignIn = withClerk(({ clerk, ...props }: WithClerkProp) => { const { client, session } = clerk; - // TODO: Remove temp use of __unstable__environment - const { __unstable__environment } = clerk as any; + // @ts-expect-error - TODO: Remove temp use of __unstable__environment + const { __unstable__environment } = clerk; const hasActiveSessions = client.activeSessions && client.activeSessions.length > 0; diff --git a/packages/react/src/components/uiComponents.tsx b/packages/react/src/components/uiComponents.tsx index ca9af9043dd..930f6070f8d 100644 --- a/packages/react/src/components/uiComponents.tsx +++ b/packages/react/src/components/uiComponents.tsx @@ -72,7 +72,8 @@ export const SignIn = withClerk(({ clerk, ...props }: WithClerkProp ); @@ -83,7 +84,8 @@ export const SignUp = withClerk(({ clerk, ...props }: WithClerkProp ); @@ -94,7 +96,8 @@ export const UserProfile = withClerk(({ clerk, ...props }: WithClerkProp ); @@ -105,7 +108,8 @@ export const UserButton = withClerk(({ clerk, ...props }: WithClerkProp ); @@ -116,7 +120,8 @@ export const OrganizationProfile = withClerk(({ clerk, ...props }: WithClerkProp ); @@ -127,7 +132,8 @@ export const CreateOrganization = withClerk(({ clerk, ...props }: WithClerkProp< ); @@ -138,7 +144,8 @@ export const OrganizationSwitcher = withClerk(({ clerk, ...props }: WithClerkPro ); @@ -149,7 +156,8 @@ export const OrganizationList = withClerk(({ clerk, ...props }: WithClerkProp ); diff --git a/packages/react/src/isomorphicClerk.ts b/packages/react/src/isomorphicClerk.ts index d51e2a93d1c..4fbcd516338 100644 --- a/packages/react/src/isomorphicClerk.ts +++ b/packages/react/src/isomorphicClerk.ts @@ -732,7 +732,11 @@ export default class IsomorphicClerk { signOutCallbackOrOptions?: SignOutCallback | SignOutOptions, options?: SignOutOptions, ): Promise => { - const callback = () => this.clerkjs?.signOut(signOutCallbackOrOptions as any, options); + const callback = + typeof signOutCallbackOrOptions === 'function' + ? () => this.clerkjs?.signOut(signOutCallbackOrOptions, options) + : () => this.clerkjs?.signOut(signOutCallbackOrOptions); + if (this.clerkjs && this.#loaded) { return callback() as Promise; } else { diff --git a/packages/react/src/utils/loadClerkJsScript.ts b/packages/react/src/utils/loadClerkJsScript.ts index 1ce63f52eb4..775274dcdcf 100644 --- a/packages/react/src/utils/loadClerkJsScript.ts +++ b/packages/react/src/utils/loadClerkJsScript.ts @@ -12,6 +12,7 @@ type LoadClerkJsScriptOptions = Omit { const { frontendApi, publishableKey } = opts; 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/packages/shared/src/hooks/useOrganization.tsx b/packages/shared/src/hooks/useOrganization.tsx index 3c27babf3c6..f8ab32b6555 100644 --- a/packages/shared/src/hooks/useOrganization.tsx +++ b/packages/shared/src/hooks/useOrganization.tsx @@ -1,4 +1,5 @@ import type { + ActiveSessionResource, ClerkPaginationParams, GetDomainsParams, GetInvitationsParams, @@ -365,7 +366,10 @@ export const useOrganization: UseOrganization = params => { isLoaded: !isMembershipsLoading && !isInvitationsLoading, organization, membershipList, - membership: getCurrentOrganizationMembership(session!.user.organizationMemberships, organization.id), // your membership in the current org + membership: getCurrentOrganizationMembership( + (session as ActiveSessionResource).user.organizationMemberships, + organization.id, + ), // your membership in the current org invitationList, unstable__mutate: () => { void mutateMembershipList(); 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 8528e466182..d3425be9ce3 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": [], + "inputs": ["src/**"], "outputs": [] }, "lint:publint": {