From 3f98e14b9917715861d968e3e1721bf8b3a36f60 Mon Sep 17 00:00:00 2001
From: panteliselef
Date: Tue, 17 Dec 2024 10:46:27 +0200
Subject: [PATCH 01/23] chore(clerk-js): Attempt to fix deploy retheme PR
(#4790)
---
.changeset/quick-pens-hug.md | 2 ++
packages/clerk-js/src/ui/primitives/hooks/index.ts | 2 +-
.../hooks/{useFormControl.tsx => useFormField.tsx} | 14 ++++----------
3 files changed, 7 insertions(+), 11 deletions(-)
create mode 100644 .changeset/quick-pens-hug.md
rename packages/clerk-js/src/ui/primitives/hooks/{useFormControl.tsx => useFormField.tsx} (93%)
diff --git a/.changeset/quick-pens-hug.md b/.changeset/quick-pens-hug.md
new file mode 100644
index 0000000000..a845151cc8
--- /dev/null
+++ b/.changeset/quick-pens-hug.md
@@ -0,0 +1,2 @@
+---
+---
diff --git a/packages/clerk-js/src/ui/primitives/hooks/index.ts b/packages/clerk-js/src/ui/primitives/hooks/index.ts
index f0f19d1210..5a203e579d 100644
--- a/packages/clerk-js/src/ui/primitives/hooks/index.ts
+++ b/packages/clerk-js/src/ui/primitives/hooks/index.ts
@@ -1,2 +1,2 @@
-export * from './useFormControl';
+export * from './useFormField';
export * from './useInput';
diff --git a/packages/clerk-js/src/ui/primitives/hooks/useFormControl.tsx b/packages/clerk-js/src/ui/primitives/hooks/useFormField.tsx
similarity index 93%
rename from packages/clerk-js/src/ui/primitives/hooks/useFormControl.tsx
rename to packages/clerk-js/src/ui/primitives/hooks/useFormField.tsx
index 6c62e41baf..68672cf8f1 100644
--- a/packages/clerk-js/src/ui/primitives/hooks/useFormControl.tsx
+++ b/packages/clerk-js/src/ui/primitives/hooks/useFormField.tsx
@@ -43,20 +43,14 @@ export const FormFieldContextProvider = (props: React.PropsWithChildren ({
From 1a69e8459a6d3cd84a225e484f535e61e6a415a4 Mon Sep 17 00:00:00 2001
From: Robert Soriano
Date: Tue, 17 Dec 2024 10:20:34 -0800
Subject: [PATCH 02/23] test(vue): Fix unstyled button E2E test timeout errors
(#4794)
---
.changeset/tasty-queens-build.md | 2 ++
integration/templates/vue-vite/src/views/Unstyled.vue | 10 ++++++++--
2 files changed, 10 insertions(+), 2 deletions(-)
create mode 100644 .changeset/tasty-queens-build.md
diff --git a/.changeset/tasty-queens-build.md b/.changeset/tasty-queens-build.md
new file mode 100644
index 0000000000..a845151cc8
--- /dev/null
+++ b/.changeset/tasty-queens-build.md
@@ -0,0 +1,2 @@
+---
+---
diff --git a/integration/templates/vue-vite/src/views/Unstyled.vue b/integration/templates/vue-vite/src/views/Unstyled.vue
index 2e5ef79e41..7dbb082019 100644
--- a/integration/templates/vue-vite/src/views/Unstyled.vue
+++ b/integration/templates/vue-vite/src/views/Unstyled.vue
@@ -3,6 +3,12 @@ import { SignInButton, SignUpButton } from '@clerk/vue';
-
-
+
+
From 84ccb0049041534f111be65f7c7d4d6120069446 Mon Sep 17 00:00:00 2001
From: Stefanos Anagnostou
Date: Tue, 17 Dec 2024 20:46:17 +0200
Subject: [PATCH 03/23] fix(shared): Improve error message when Publishable Key
is missing (#4785)
---
.changeset/long-birds-worry.md | 5 +++++
packages/shared/src/__tests__/keys.test.ts | 6 ++++++
packages/shared/src/keys.ts | 7 ++++++-
3 files changed, 17 insertions(+), 1 deletion(-)
create mode 100644 .changeset/long-birds-worry.md
diff --git a/.changeset/long-birds-worry.md b/.changeset/long-birds-worry.md
new file mode 100644
index 0000000000..737fcd3ace
--- /dev/null
+++ b/.changeset/long-birds-worry.md
@@ -0,0 +1,5 @@
+---
+'@clerk/shared': patch
+---
+
+Improve error message when Publishable Key is missing when trying to parse it.
diff --git a/packages/shared/src/__tests__/keys.test.ts b/packages/shared/src/__tests__/keys.test.ts
index 25a588a7cf..775489434c 100644
--- a/packages/shared/src/__tests__/keys.test.ts
+++ b/packages/shared/src/__tests__/keys.test.ts
@@ -58,6 +58,12 @@ describe('parsePublishableKey(key)', () => {
expect(() => parsePublishableKey('fake_pk', { fatal: true })).toThrowError('Publishable key not valid.');
});
+ it('throws an error if the publishable key is missing, when fatal: true', () => {
+ expect(() => parsePublishableKey(undefined, { fatal: true })).toThrowError(
+ 'Publishable key is missing. Ensure that your publishable key is correctly configured. Double-check your environment configuration for your keys, or access them here: https://dashboard.clerk.com/last-active?path=api-keys',
+ );
+ });
+
it('applies the proxyUrl if provided', () => {
expect(parsePublishableKey('pk_live_Y2xlcmsuY2xlcmsuZGV2JA==', { proxyUrl: 'example.com/__clerk' })).toEqual({
frontendApi: 'example.com/__clerk',
diff --git a/packages/shared/src/keys.ts b/packages/shared/src/keys.ts
index efeb0b4e11..f8f21489c0 100644
--- a/packages/shared/src/keys.ts
+++ b/packages/shared/src/keys.ts
@@ -39,7 +39,12 @@ export function parsePublishableKey(
key = key || '';
if (!key || !isPublishableKey(key)) {
- if (options.fatal) {
+ if (options.fatal && !key) {
+ throw new Error(
+ 'Publishable key is missing. Ensure that your publishable key is correctly configured. Double-check your environment configuration for your keys, or access them here: https://dashboard.clerk.com/last-active?path=api-keys',
+ );
+ }
+ if (options.fatal && !isPublishableKey(key)) {
throw new Error('Publishable key not valid.');
}
return null;
From 2b57c39d7acd2d8e8c40d22a278be15f934f1a17 Mon Sep 17 00:00:00 2001
From: Bryce Kalow
Date: Tue, 17 Dec 2024 14:18:01 -0600
Subject: [PATCH 04/23] fix(clerk-js): Revert #4776 (#4797)
---
.changeset/wet-jars-tickle.md | 5 +++++
packages/clerk-js/src/core/auth/cookies/devBrowser.ts | 9 ++-------
packages/clerk-js/src/core/auth/devBrowser.ts | 4 ++--
3 files changed, 9 insertions(+), 9 deletions(-)
create mode 100644 .changeset/wet-jars-tickle.md
diff --git a/.changeset/wet-jars-tickle.md b/.changeset/wet-jars-tickle.md
new file mode 100644
index 0000000000..36abc6acf0
--- /dev/null
+++ b/.changeset/wet-jars-tickle.md
@@ -0,0 +1,5 @@
+---
+'@clerk/clerk-js': patch
+---
+
+Revert #4776 to address new bug.
diff --git a/packages/clerk-js/src/core/auth/cookies/devBrowser.ts b/packages/clerk-js/src/core/auth/cookies/devBrowser.ts
index 538143d697..7b292a9e65 100644
--- a/packages/clerk-js/src/core/auth/cookies/devBrowser.ts
+++ b/packages/clerk-js/src/core/auth/cookies/devBrowser.ts
@@ -8,7 +8,7 @@ import { getSecureAttribute } from '../getSecureAttribute';
export type DevBrowserCookieHandler = {
set: (jwt: string) => void;
- get: (mode?: 'only-suffixed') => string | undefined;
+ get: () => string | undefined;
remove: () => void;
};
@@ -22,12 +22,7 @@ export const createDevBrowserCookie = (cookieSuffix: string): DevBrowserCookieHa
const devBrowserCookie = createCookieHandler(DEV_BROWSER_JWT_KEY);
const suffixedDevBrowserCookie = createCookieHandler(getSuffixedCookieName(DEV_BROWSER_JWT_KEY, cookieSuffix));
- const get = (mode?: 'only-suffixed') => {
- if (mode === 'only-suffixed') {
- return suffixedDevBrowserCookie.get();
- }
- return suffixedDevBrowserCookie.get() || devBrowserCookie.get();
- };
+ const get = () => suffixedDevBrowserCookie.get() || devBrowserCookie.get();
const set = (jwt: string) => {
const expires = addYears(Date.now(), 1);
diff --git a/packages/clerk-js/src/core/auth/devBrowser.ts b/packages/clerk-js/src/core/auth/devBrowser.ts
index ad428372dd..2d5e3cb644 100644
--- a/packages/clerk-js/src/core/auth/devBrowser.ts
+++ b/packages/clerk-js/src/core/auth/devBrowser.ts
@@ -71,8 +71,8 @@ export function createDevBrowser({ cookieSuffix, frontendApi, fapiClient }: Crea
return;
}
- // 2. If no JWT is found in the first step, check if a JWT is already available in the suffixed __clerk_db_jwt JS cookie
- if (devBrowserCookie.get('only-suffixed')) {
+ // 2. If no JWT is found in the first step, check if a JWT is already available in the __clerk_db_jwt JS cookie
+ if (devBrowserCookie.get()) {
return;
}
From 4c6befca024247f314908fa9066315ba7becbccd Mon Sep 17 00:00:00 2001
From: Clerk Cookie <136073014+clerk-cookie@users.noreply.github.com>
Date: Tue, 17 Dec 2024 15:34:53 -0500
Subject: [PATCH 05/23] ci(repo): Version packages (#4796)
Co-authored-by: github-actions[bot]
---
.changeset/long-birds-worry.md | 5 -----
.changeset/quick-pens-hug.md | 2 --
.changeset/tasty-queens-build.md | 2 --
.changeset/wet-jars-tickle.md | 5 -----
packages/astro/CHANGELOG.md | 8 ++++++++
packages/astro/package.json | 2 +-
packages/backend/CHANGELOG.md | 7 +++++++
packages/backend/package.json | 2 +-
packages/chrome-extension/CHANGELOG.md | 9 +++++++++
packages/chrome-extension/package.json | 2 +-
packages/clerk-js/CHANGELOG.md | 9 +++++++++
packages/clerk-js/package.json | 2 +-
packages/elements/CHANGELOG.md | 8 ++++++++
packages/elements/package.json | 2 +-
packages/expo-passkeys/CHANGELOG.md | 7 +++++++
packages/expo-passkeys/package.json | 2 +-
packages/expo/CHANGELOG.md | 9 +++++++++
packages/expo/package.json | 2 +-
packages/express/CHANGELOG.md | 8 ++++++++
packages/express/package.json | 2 +-
packages/fastify/CHANGELOG.md | 8 ++++++++
packages/fastify/package.json | 2 +-
packages/nextjs/CHANGELOG.md | 9 +++++++++
packages/nextjs/package.json | 2 +-
packages/nuxt/CHANGELOG.md | 9 +++++++++
packages/nuxt/package.json | 2 +-
packages/react-router/CHANGELOG.md | 9 +++++++++
packages/react-router/package.json | 2 +-
packages/react/CHANGELOG.md | 7 +++++++
packages/react/package.json | 2 +-
packages/remix/CHANGELOG.md | 9 +++++++++
packages/remix/package.json | 2 +-
packages/sdk-node/CHANGELOG.md | 8 ++++++++
packages/sdk-node/package.json | 2 +-
packages/shared/CHANGELOG.md | 6 ++++++
packages/shared/package.json | 2 +-
packages/tanstack-start/CHANGELOG.md | 9 +++++++++
packages/tanstack-start/package.json | 2 +-
packages/testing/CHANGELOG.md | 8 ++++++++
packages/testing/package.json | 2 +-
packages/ui/CHANGELOG.md | 8 ++++++++
packages/ui/package.json | 2 +-
packages/vue/CHANGELOG.md | 7 +++++++
packages/vue/package.json | 2 +-
44 files changed, 182 insertions(+), 34 deletions(-)
delete mode 100644 .changeset/long-birds-worry.md
delete mode 100644 .changeset/quick-pens-hug.md
delete mode 100644 .changeset/tasty-queens-build.md
delete mode 100644 .changeset/wet-jars-tickle.md
diff --git a/.changeset/long-birds-worry.md b/.changeset/long-birds-worry.md
deleted file mode 100644
index 737fcd3ace..0000000000
--- a/.changeset/long-birds-worry.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@clerk/shared': patch
----
-
-Improve error message when Publishable Key is missing when trying to parse it.
diff --git a/.changeset/quick-pens-hug.md b/.changeset/quick-pens-hug.md
deleted file mode 100644
index a845151cc8..0000000000
--- a/.changeset/quick-pens-hug.md
+++ /dev/null
@@ -1,2 +0,0 @@
----
----
diff --git a/.changeset/tasty-queens-build.md b/.changeset/tasty-queens-build.md
deleted file mode 100644
index a845151cc8..0000000000
--- a/.changeset/tasty-queens-build.md
+++ /dev/null
@@ -1,2 +0,0 @@
----
----
diff --git a/.changeset/wet-jars-tickle.md b/.changeset/wet-jars-tickle.md
deleted file mode 100644
index 36abc6acf0..0000000000
--- a/.changeset/wet-jars-tickle.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@clerk/clerk-js': patch
----
-
-Revert #4776 to address new bug.
diff --git a/packages/astro/CHANGELOG.md b/packages/astro/CHANGELOG.md
index 9a1fd62925..93584a6b28 100644
--- a/packages/astro/CHANGELOG.md
+++ b/packages/astro/CHANGELOG.md
@@ -1,5 +1,13 @@
# @clerk/astro
+## 2.1.3
+
+### Patch Changes
+
+- Updated dependencies [[`84ccb0049041534f111be65f7c7d4d6120069446`](https://github.com/clerk/javascript/commit/84ccb0049041534f111be65f7c7d4d6120069446)]:
+ - @clerk/shared@2.20.3
+ - @clerk/backend@1.21.3
+
## 2.1.2
### Patch Changes
diff --git a/packages/astro/package.json b/packages/astro/package.json
index 8816b384db..5599e4c27f 100644
--- a/packages/astro/package.json
+++ b/packages/astro/package.json
@@ -1,6 +1,6 @@
{
"name": "@clerk/astro",
- "version": "2.1.2",
+ "version": "2.1.3",
"description": "Clerk SDK for Astro",
"keywords": [
"auth",
diff --git a/packages/backend/CHANGELOG.md b/packages/backend/CHANGELOG.md
index 6bedb14330..99ef93e94b 100644
--- a/packages/backend/CHANGELOG.md
+++ b/packages/backend/CHANGELOG.md
@@ -1,5 +1,12 @@
# Change Log
+## 1.21.3
+
+### Patch Changes
+
+- Updated dependencies [[`84ccb0049041534f111be65f7c7d4d6120069446`](https://github.com/clerk/javascript/commit/84ccb0049041534f111be65f7c7d4d6120069446)]:
+ - @clerk/shared@2.20.3
+
## 1.21.2
### Patch Changes
diff --git a/packages/backend/package.json b/packages/backend/package.json
index 76f1e6d7ce..a4703975ed 100644
--- a/packages/backend/package.json
+++ b/packages/backend/package.json
@@ -1,6 +1,6 @@
{
"name": "@clerk/backend",
- "version": "1.21.2",
+ "version": "1.21.3",
"description": "Clerk Backend SDK - REST Client for Backend API & JWT verification utilities",
"homepage": "https://clerk.com/",
"bugs": {
diff --git a/packages/chrome-extension/CHANGELOG.md b/packages/chrome-extension/CHANGELOG.md
index 04f1b1b1ee..f6906f4704 100644
--- a/packages/chrome-extension/CHANGELOG.md
+++ b/packages/chrome-extension/CHANGELOG.md
@@ -1,5 +1,14 @@
# Change Log
+## 2.1.4
+
+### Patch Changes
+
+- Updated dependencies [[`84ccb0049041534f111be65f7c7d4d6120069446`](https://github.com/clerk/javascript/commit/84ccb0049041534f111be65f7c7d4d6120069446), [`2b57c39d7acd2d8e8c40d22a278be15f934f1a17`](https://github.com/clerk/javascript/commit/2b57c39d7acd2d8e8c40d22a278be15f934f1a17)]:
+ - @clerk/shared@2.20.3
+ - @clerk/clerk-js@5.43.1
+ - @clerk/clerk-react@5.20.3
+
## 2.1.3
### Patch Changes
diff --git a/packages/chrome-extension/package.json b/packages/chrome-extension/package.json
index b2748a58c0..6fa861c585 100644
--- a/packages/chrome-extension/package.json
+++ b/packages/chrome-extension/package.json
@@ -1,6 +1,6 @@
{
"name": "@clerk/chrome-extension",
- "version": "2.1.3",
+ "version": "2.1.4",
"description": "Clerk SDK for Chrome extensions",
"keywords": [
"auth",
diff --git a/packages/clerk-js/CHANGELOG.md b/packages/clerk-js/CHANGELOG.md
index 726154afb8..090d0d80ea 100644
--- a/packages/clerk-js/CHANGELOG.md
+++ b/packages/clerk-js/CHANGELOG.md
@@ -1,5 +1,14 @@
# Change Log
+## 5.43.1
+
+### Patch Changes
+
+- Revert #4776 to address new bug. ([#4797](https://github.com/clerk/javascript/pull/4797)) by [@BRKalow](https://github.com/BRKalow)
+
+- Updated dependencies [[`84ccb0049041534f111be65f7c7d4d6120069446`](https://github.com/clerk/javascript/commit/84ccb0049041534f111be65f7c7d4d6120069446)]:
+ - @clerk/shared@2.20.3
+
## 5.43.0
### Minor Changes
diff --git a/packages/clerk-js/package.json b/packages/clerk-js/package.json
index e61ae30350..26350147ab 100644
--- a/packages/clerk-js/package.json
+++ b/packages/clerk-js/package.json
@@ -1,6 +1,6 @@
{
"name": "@clerk/clerk-js",
- "version": "5.43.0",
+ "version": "5.43.1",
"description": "Clerk JS library",
"keywords": [
"clerk",
diff --git a/packages/elements/CHANGELOG.md b/packages/elements/CHANGELOG.md
index 11ff3de30e..666b3ddef0 100644
--- a/packages/elements/CHANGELOG.md
+++ b/packages/elements/CHANGELOG.md
@@ -1,5 +1,13 @@
# @clerk/elements
+## 0.22.3
+
+### Patch Changes
+
+- Updated dependencies [[`84ccb0049041534f111be65f7c7d4d6120069446`](https://github.com/clerk/javascript/commit/84ccb0049041534f111be65f7c7d4d6120069446)]:
+ - @clerk/shared@2.20.3
+ - @clerk/clerk-react@5.20.3
+
## 0.22.2
### Patch Changes
diff --git a/packages/elements/package.json b/packages/elements/package.json
index 9f89bb1c88..962279049c 100644
--- a/packages/elements/package.json
+++ b/packages/elements/package.json
@@ -1,6 +1,6 @@
{
"name": "@clerk/elements",
- "version": "0.22.2",
+ "version": "0.22.3",
"description": "Clerk Elements",
"keywords": [
"clerk",
diff --git a/packages/expo-passkeys/CHANGELOG.md b/packages/expo-passkeys/CHANGELOG.md
index 2521ec8713..526295cad8 100644
--- a/packages/expo-passkeys/CHANGELOG.md
+++ b/packages/expo-passkeys/CHANGELOG.md
@@ -1,5 +1,12 @@
# @clerk/expo-passkeys
+## 0.1.3
+
+### Patch Changes
+
+- Updated dependencies [[`84ccb0049041534f111be65f7c7d4d6120069446`](https://github.com/clerk/javascript/commit/84ccb0049041534f111be65f7c7d4d6120069446)]:
+ - @clerk/shared@2.20.3
+
## 0.1.2
### Patch Changes
diff --git a/packages/expo-passkeys/package.json b/packages/expo-passkeys/package.json
index 0b5741b36d..58d3f0678c 100644
--- a/packages/expo-passkeys/package.json
+++ b/packages/expo-passkeys/package.json
@@ -1,6 +1,6 @@
{
"name": "@clerk/expo-passkeys",
- "version": "0.1.2",
+ "version": "0.1.3",
"description": "Passkeys library to be used with Clerk for expo",
"keywords": [
"react-native",
diff --git a/packages/expo/CHANGELOG.md b/packages/expo/CHANGELOG.md
index 38b149a668..49eb0be765 100644
--- a/packages/expo/CHANGELOG.md
+++ b/packages/expo/CHANGELOG.md
@@ -1,5 +1,14 @@
# Change Log
+## 2.6.3
+
+### Patch Changes
+
+- Updated dependencies [[`84ccb0049041534f111be65f7c7d4d6120069446`](https://github.com/clerk/javascript/commit/84ccb0049041534f111be65f7c7d4d6120069446), [`2b57c39d7acd2d8e8c40d22a278be15f934f1a17`](https://github.com/clerk/javascript/commit/2b57c39d7acd2d8e8c40d22a278be15f934f1a17)]:
+ - @clerk/shared@2.20.3
+ - @clerk/clerk-js@5.43.1
+ - @clerk/clerk-react@5.20.3
+
## 2.6.2
### Patch Changes
diff --git a/packages/expo/package.json b/packages/expo/package.json
index 0f254b30ef..15b1ecf536 100644
--- a/packages/expo/package.json
+++ b/packages/expo/package.json
@@ -1,6 +1,6 @@
{
"name": "@clerk/clerk-expo",
- "version": "2.6.2",
+ "version": "2.6.3",
"description": "Clerk React Native/Expo library",
"keywords": [
"react",
diff --git a/packages/express/CHANGELOG.md b/packages/express/CHANGELOG.md
index bc152b073b..f33eee9091 100644
--- a/packages/express/CHANGELOG.md
+++ b/packages/express/CHANGELOG.md
@@ -1,5 +1,13 @@
# Change Log
+## 1.3.30
+
+### Patch Changes
+
+- Updated dependencies [[`84ccb0049041534f111be65f7c7d4d6120069446`](https://github.com/clerk/javascript/commit/84ccb0049041534f111be65f7c7d4d6120069446)]:
+ - @clerk/shared@2.20.3
+ - @clerk/backend@1.21.3
+
## 1.3.29
### Patch Changes
diff --git a/packages/express/package.json b/packages/express/package.json
index d56310917a..c5d3e42e45 100644
--- a/packages/express/package.json
+++ b/packages/express/package.json
@@ -1,6 +1,6 @@
{
"name": "@clerk/express",
- "version": "1.3.29",
+ "version": "1.3.30",
"description": "Clerk server SDK for usage with Express",
"keywords": [
"clerk",
diff --git a/packages/fastify/CHANGELOG.md b/packages/fastify/CHANGELOG.md
index c52eada860..708671d0df 100644
--- a/packages/fastify/CHANGELOG.md
+++ b/packages/fastify/CHANGELOG.md
@@ -1,5 +1,13 @@
# Change Log
+## 2.1.3
+
+### Patch Changes
+
+- Updated dependencies [[`84ccb0049041534f111be65f7c7d4d6120069446`](https://github.com/clerk/javascript/commit/84ccb0049041534f111be65f7c7d4d6120069446)]:
+ - @clerk/shared@2.20.3
+ - @clerk/backend@1.21.3
+
## 2.1.2
### Patch Changes
diff --git a/packages/fastify/package.json b/packages/fastify/package.json
index 388a1d9101..7fc1e5a87d 100644
--- a/packages/fastify/package.json
+++ b/packages/fastify/package.json
@@ -1,6 +1,6 @@
{
"name": "@clerk/fastify",
- "version": "2.1.2",
+ "version": "2.1.3",
"description": "Clerk SDK for Fastify",
"keywords": [
"auth",
diff --git a/packages/nextjs/CHANGELOG.md b/packages/nextjs/CHANGELOG.md
index cfe1dc487b..f5d79b5d77 100644
--- a/packages/nextjs/CHANGELOG.md
+++ b/packages/nextjs/CHANGELOG.md
@@ -1,5 +1,14 @@
# Change Log
+## 6.9.4
+
+### Patch Changes
+
+- Updated dependencies [[`84ccb0049041534f111be65f7c7d4d6120069446`](https://github.com/clerk/javascript/commit/84ccb0049041534f111be65f7c7d4d6120069446)]:
+ - @clerk/shared@2.20.3
+ - @clerk/backend@1.21.3
+ - @clerk/clerk-react@5.20.3
+
## 6.9.3
### Patch Changes
diff --git a/packages/nextjs/package.json b/packages/nextjs/package.json
index b31ec1e842..05789e758c 100644
--- a/packages/nextjs/package.json
+++ b/packages/nextjs/package.json
@@ -1,6 +1,6 @@
{
"name": "@clerk/nextjs",
- "version": "6.9.3",
+ "version": "6.9.4",
"description": "Clerk SDK for NextJS",
"keywords": [
"clerk",
diff --git a/packages/nuxt/CHANGELOG.md b/packages/nuxt/CHANGELOG.md
index b5d7edf216..8648f9d13e 100644
--- a/packages/nuxt/CHANGELOG.md
+++ b/packages/nuxt/CHANGELOG.md
@@ -1,5 +1,14 @@
# @clerk/nuxt
+## 0.1.4
+
+### Patch Changes
+
+- Updated dependencies [[`84ccb0049041534f111be65f7c7d4d6120069446`](https://github.com/clerk/javascript/commit/84ccb0049041534f111be65f7c7d4d6120069446)]:
+ - @clerk/shared@2.20.3
+ - @clerk/backend@1.21.3
+ - @clerk/vue@0.1.4
+
## 0.1.3
### Patch Changes
diff --git a/packages/nuxt/package.json b/packages/nuxt/package.json
index 42693b5ea4..039e490073 100644
--- a/packages/nuxt/package.json
+++ b/packages/nuxt/package.json
@@ -1,6 +1,6 @@
{
"name": "@clerk/nuxt",
- "version": "0.1.3",
+ "version": "0.1.4",
"description": "Clerk SDK for Nuxt",
"keywords": [
"clerk",
diff --git a/packages/react-router/CHANGELOG.md b/packages/react-router/CHANGELOG.md
index 3084db9df1..84764dfca4 100644
--- a/packages/react-router/CHANGELOG.md
+++ b/packages/react-router/CHANGELOG.md
@@ -1,5 +1,14 @@
# Change Log
+## 0.1.3
+
+### Patch Changes
+
+- Updated dependencies [[`84ccb0049041534f111be65f7c7d4d6120069446`](https://github.com/clerk/javascript/commit/84ccb0049041534f111be65f7c7d4d6120069446)]:
+ - @clerk/shared@2.20.3
+ - @clerk/backend@1.21.3
+ - @clerk/clerk-react@5.20.3
+
## 0.1.2
### Patch Changes
diff --git a/packages/react-router/package.json b/packages/react-router/package.json
index 25a46923ff..befb2075f5 100644
--- a/packages/react-router/package.json
+++ b/packages/react-router/package.json
@@ -1,6 +1,6 @@
{
"name": "@clerk/react-router",
- "version": "0.1.2",
+ "version": "0.1.3",
"description": "Clerk SDK for React Router",
"keywords": [
"clerk",
diff --git a/packages/react/CHANGELOG.md b/packages/react/CHANGELOG.md
index 905c9a6932..3150367a3f 100644
--- a/packages/react/CHANGELOG.md
+++ b/packages/react/CHANGELOG.md
@@ -1,5 +1,12 @@
# Change Log
+## 5.20.3
+
+### Patch Changes
+
+- Updated dependencies [[`84ccb0049041534f111be65f7c7d4d6120069446`](https://github.com/clerk/javascript/commit/84ccb0049041534f111be65f7c7d4d6120069446)]:
+ - @clerk/shared@2.20.3
+
## 5.20.2
### Patch Changes
diff --git a/packages/react/package.json b/packages/react/package.json
index 36727fc6cc..d0d6b64ff1 100644
--- a/packages/react/package.json
+++ b/packages/react/package.json
@@ -1,6 +1,6 @@
{
"name": "@clerk/clerk-react",
- "version": "5.20.2",
+ "version": "5.20.3",
"description": "Clerk React library",
"keywords": [
"clerk",
diff --git a/packages/remix/CHANGELOG.md b/packages/remix/CHANGELOG.md
index 8f5ed9a909..55d92066c4 100644
--- a/packages/remix/CHANGELOG.md
+++ b/packages/remix/CHANGELOG.md
@@ -1,5 +1,14 @@
# Change Log
+## 4.4.4
+
+### Patch Changes
+
+- Updated dependencies [[`84ccb0049041534f111be65f7c7d4d6120069446`](https://github.com/clerk/javascript/commit/84ccb0049041534f111be65f7c7d4d6120069446)]:
+ - @clerk/shared@2.20.3
+ - @clerk/backend@1.21.3
+ - @clerk/clerk-react@5.20.3
+
## 4.4.3
### Patch Changes
diff --git a/packages/remix/package.json b/packages/remix/package.json
index a83d40d3f7..baa00dd920 100644
--- a/packages/remix/package.json
+++ b/packages/remix/package.json
@@ -1,6 +1,6 @@
{
"name": "@clerk/remix",
- "version": "4.4.3",
+ "version": "4.4.4",
"description": "Clerk SDK for Remix",
"keywords": [
"clerk",
diff --git a/packages/sdk-node/CHANGELOG.md b/packages/sdk-node/CHANGELOG.md
index 27baeb9ed4..c580eac292 100644
--- a/packages/sdk-node/CHANGELOG.md
+++ b/packages/sdk-node/CHANGELOG.md
@@ -1,5 +1,13 @@
# Change Log
+## 5.1.3
+
+### Patch Changes
+
+- Updated dependencies [[`84ccb0049041534f111be65f7c7d4d6120069446`](https://github.com/clerk/javascript/commit/84ccb0049041534f111be65f7c7d4d6120069446)]:
+ - @clerk/shared@2.20.3
+ - @clerk/backend@1.21.3
+
## 5.1.2
### Patch Changes
diff --git a/packages/sdk-node/package.json b/packages/sdk-node/package.json
index 596413355d..620ac49187 100644
--- a/packages/sdk-node/package.json
+++ b/packages/sdk-node/package.json
@@ -1,6 +1,6 @@
{
"name": "@clerk/clerk-sdk-node",
- "version": "5.1.2",
+ "version": "5.1.3",
"description": "Clerk server SDK for usage with node",
"keywords": [
"clerk",
diff --git a/packages/shared/CHANGELOG.md b/packages/shared/CHANGELOG.md
index 025bc14a42..6b55cf5a8d 100644
--- a/packages/shared/CHANGELOG.md
+++ b/packages/shared/CHANGELOG.md
@@ -1,5 +1,11 @@
# Change Log
+## 2.20.3
+
+### Patch Changes
+
+- Improve error message when Publishable Key is missing when trying to parse it. ([#4785](https://github.com/clerk/javascript/pull/4785)) by [@anagstef](https://github.com/anagstef)
+
## 2.20.2
### Patch Changes
diff --git a/packages/shared/package.json b/packages/shared/package.json
index 3acfb9a977..1e43251a39 100644
--- a/packages/shared/package.json
+++ b/packages/shared/package.json
@@ -1,6 +1,6 @@
{
"name": "@clerk/shared",
- "version": "2.20.2",
+ "version": "2.20.3",
"description": "Internal package utils used by the Clerk SDKs",
"repository": {
"type": "git",
diff --git a/packages/tanstack-start/CHANGELOG.md b/packages/tanstack-start/CHANGELOG.md
index 4db742d7c5..7605bc49d1 100644
--- a/packages/tanstack-start/CHANGELOG.md
+++ b/packages/tanstack-start/CHANGELOG.md
@@ -1,5 +1,14 @@
# @clerk/tanstack-start
+## 0.8.3
+
+### Patch Changes
+
+- Updated dependencies [[`84ccb0049041534f111be65f7c7d4d6120069446`](https://github.com/clerk/javascript/commit/84ccb0049041534f111be65f7c7d4d6120069446)]:
+ - @clerk/shared@2.20.3
+ - @clerk/backend@1.21.3
+ - @clerk/clerk-react@5.20.3
+
## 0.8.2
### Patch Changes
diff --git a/packages/tanstack-start/package.json b/packages/tanstack-start/package.json
index 139c65a844..81e706f86b 100644
--- a/packages/tanstack-start/package.json
+++ b/packages/tanstack-start/package.json
@@ -1,6 +1,6 @@
{
"name": "@clerk/tanstack-start",
- "version": "0.8.2",
+ "version": "0.8.3",
"description": "Clerk SDK for TanStack Start",
"keywords": [
"clerk",
diff --git a/packages/testing/CHANGELOG.md b/packages/testing/CHANGELOG.md
index 547fbcfafa..cdcba03206 100644
--- a/packages/testing/CHANGELOG.md
+++ b/packages/testing/CHANGELOG.md
@@ -1,5 +1,13 @@
# @clerk/testing
+## 1.4.3
+
+### Patch Changes
+
+- Updated dependencies [[`84ccb0049041534f111be65f7c7d4d6120069446`](https://github.com/clerk/javascript/commit/84ccb0049041534f111be65f7c7d4d6120069446)]:
+ - @clerk/shared@2.20.3
+ - @clerk/backend@1.21.3
+
## 1.4.2
### Patch Changes
diff --git a/packages/testing/package.json b/packages/testing/package.json
index e07b9c81c5..00064ef261 100644
--- a/packages/testing/package.json
+++ b/packages/testing/package.json
@@ -1,6 +1,6 @@
{
"name": "@clerk/testing",
- "version": "1.4.2",
+ "version": "1.4.3",
"description": "Utilities to help you create E2E test suites for apps using Clerk",
"keywords": [
"auth",
diff --git a/packages/ui/CHANGELOG.md b/packages/ui/CHANGELOG.md
index e9aa08024f..3556fbb750 100644
--- a/packages/ui/CHANGELOG.md
+++ b/packages/ui/CHANGELOG.md
@@ -1,5 +1,13 @@
# @clerk/ui
+## 0.3.4
+
+### Patch Changes
+
+- Updated dependencies [[`84ccb0049041534f111be65f7c7d4d6120069446`](https://github.com/clerk/javascript/commit/84ccb0049041534f111be65f7c7d4d6120069446)]:
+ - @clerk/shared@2.20.3
+ - @clerk/elements@0.22.3
+
## 0.3.3
### Patch Changes
diff --git a/packages/ui/package.json b/packages/ui/package.json
index 2719593509..6a97cc8d65 100644
--- a/packages/ui/package.json
+++ b/packages/ui/package.json
@@ -1,6 +1,6 @@
{
"name": "@clerk/ui",
- "version": "0.3.3",
+ "version": "0.3.4",
"repository": {
"type": "git",
"url": "git+https://github.com/clerk/javascript.git",
diff --git a/packages/vue/CHANGELOG.md b/packages/vue/CHANGELOG.md
index 4a061f36f5..f919d6d955 100644
--- a/packages/vue/CHANGELOG.md
+++ b/packages/vue/CHANGELOG.md
@@ -1,5 +1,12 @@
# @clerk/vue
+## 0.1.4
+
+### Patch Changes
+
+- Updated dependencies [[`84ccb0049041534f111be65f7c7d4d6120069446`](https://github.com/clerk/javascript/commit/84ccb0049041534f111be65f7c7d4d6120069446)]:
+ - @clerk/shared@2.20.3
+
## 0.1.3
### Patch Changes
diff --git a/packages/vue/package.json b/packages/vue/package.json
index a4cb903195..e323b1ef38 100644
--- a/packages/vue/package.json
+++ b/packages/vue/package.json
@@ -1,6 +1,6 @@
{
"name": "@clerk/vue",
- "version": "0.1.3",
+ "version": "0.1.4",
"description": "Clerk SDK for Vue",
"keywords": [
"clerk",
From fbb9e0da4fe87e9bb79db1a841e48ef949278bf0 Mon Sep 17 00:00:00 2001
From: Alex Carpenter
Date: Tue, 17 Dec 2024 17:06:41 -0500
Subject: [PATCH 06/23] feat(clerk-js): Support collecting optional fields in
combined flow (#4795)
---
.changeset/twelve-goats-shake.md | 5 +++++
.../SignIn/handleCombinedFlowTransfer.ts | 21 ++++++++++++++++---
2 files changed, 23 insertions(+), 3 deletions(-)
create mode 100644 .changeset/twelve-goats-shake.md
diff --git a/.changeset/twelve-goats-shake.md b/.changeset/twelve-goats-shake.md
new file mode 100644
index 0000000000..7e5b9d9922
--- /dev/null
+++ b/.changeset/twelve-goats-shake.md
@@ -0,0 +1,5 @@
+---
+'@clerk/clerk-js': patch
+---
+
+Redirect to sign up start step within combined flow when there are optional fields.
diff --git a/packages/clerk-js/src/ui/components/SignIn/handleCombinedFlowTransfer.ts b/packages/clerk-js/src/ui/components/SignIn/handleCombinedFlowTransfer.ts
index 0a883497b9..bad25a763d 100644
--- a/packages/clerk-js/src/ui/components/SignIn/handleCombinedFlowTransfer.ts
+++ b/packages/clerk-js/src/ui/components/SignIn/handleCombinedFlowTransfer.ts
@@ -1,4 +1,4 @@
-import type { LoadedClerk, SignUpModes } from '@clerk/types';
+import type { LoadedClerk, SignUpModes, SignUpResource } from '@clerk/types';
import { SIGN_UP_MODES } from '../../../core/constants';
import { completeSignUpFlow } from '../SignUp/util';
@@ -51,9 +51,12 @@ export function handleCombinedFlowTransfer({
paramsToForward.set('__clerk_ticket', organizationTicket);
}
- // Attempt to transfer directly to sign up verification if email or phone was used. The signUp.create() call will
+ // Attempt to transfer directly to sign up verification if email or phone was used and there are no optional fields. The signUp.create() call will
// inform us if the instance is eligible for moving directly to verification.
- if (identifierAttribute === 'emailAddress' || identifierAttribute === 'phoneNumber') {
+ if (
+ (!hasOptionalFields(clerk.client.signUp) && identifierAttribute === 'emailAddress') ||
+ identifierAttribute === 'phoneNumber'
+ ) {
return clerk.client.signUp
.create({
[identifierAttribute]: identifierValue,
@@ -74,3 +77,15 @@ export function handleCombinedFlowTransfer({
return navigate(`create?${paramsToForward.toString()}`);
}
+
+function hasOptionalFields(signUp: SignUpResource) {
+ const filteredFields = signUp.optionalFields.filter(
+ field =>
+ !field.startsWith('oauth_') &&
+ !field.startsWith('web3_') &&
+ field !== 'password' &&
+ field !== 'enterprise_sso' &&
+ field !== 'saml',
+ );
+ return filteredFields.length > 0;
+}
From 4e34a3ac28b7e0306c1cd66375a1d207cce6ffad Mon Sep 17 00:00:00 2001
From: Clerk Cookie <136073014+clerk-cookie@users.noreply.github.com>
Date: Tue, 17 Dec 2024 17:36:20 -0500
Subject: [PATCH 07/23] ci(repo): Version packages (#4802)
Co-authored-by: github-actions[bot]
---
.changeset/twelve-goats-shake.md | 5 -----
packages/chrome-extension/CHANGELOG.md | 7 +++++++
packages/chrome-extension/package.json | 2 +-
packages/clerk-js/CHANGELOG.md | 6 ++++++
packages/clerk-js/package.json | 2 +-
packages/expo/CHANGELOG.md | 7 +++++++
packages/expo/package.json | 2 +-
7 files changed, 23 insertions(+), 8 deletions(-)
delete mode 100644 .changeset/twelve-goats-shake.md
diff --git a/.changeset/twelve-goats-shake.md b/.changeset/twelve-goats-shake.md
deleted file mode 100644
index 7e5b9d9922..0000000000
--- a/.changeset/twelve-goats-shake.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@clerk/clerk-js': patch
----
-
-Redirect to sign up start step within combined flow when there are optional fields.
diff --git a/packages/chrome-extension/CHANGELOG.md b/packages/chrome-extension/CHANGELOG.md
index f6906f4704..eacf9f01c6 100644
--- a/packages/chrome-extension/CHANGELOG.md
+++ b/packages/chrome-extension/CHANGELOG.md
@@ -1,5 +1,12 @@
# Change Log
+## 2.1.5
+
+### Patch Changes
+
+- Updated dependencies [[`fbb9e0da4fe87e9bb79db1a841e48ef949278bf0`](https://github.com/clerk/javascript/commit/fbb9e0da4fe87e9bb79db1a841e48ef949278bf0)]:
+ - @clerk/clerk-js@5.43.2
+
## 2.1.4
### Patch Changes
diff --git a/packages/chrome-extension/package.json b/packages/chrome-extension/package.json
index 6fa861c585..7c6fdb1f63 100644
--- a/packages/chrome-extension/package.json
+++ b/packages/chrome-extension/package.json
@@ -1,6 +1,6 @@
{
"name": "@clerk/chrome-extension",
- "version": "2.1.4",
+ "version": "2.1.5",
"description": "Clerk SDK for Chrome extensions",
"keywords": [
"auth",
diff --git a/packages/clerk-js/CHANGELOG.md b/packages/clerk-js/CHANGELOG.md
index 090d0d80ea..e4913b96c6 100644
--- a/packages/clerk-js/CHANGELOG.md
+++ b/packages/clerk-js/CHANGELOG.md
@@ -1,5 +1,11 @@
# Change Log
+## 5.43.2
+
+### Patch Changes
+
+- Redirect to sign up start step within combined flow when there are optional fields. ([#4795](https://github.com/clerk/javascript/pull/4795)) by [@alexcarpenter](https://github.com/alexcarpenter)
+
## 5.43.1
### Patch Changes
diff --git a/packages/clerk-js/package.json b/packages/clerk-js/package.json
index 26350147ab..b44fdf6829 100644
--- a/packages/clerk-js/package.json
+++ b/packages/clerk-js/package.json
@@ -1,6 +1,6 @@
{
"name": "@clerk/clerk-js",
- "version": "5.43.1",
+ "version": "5.43.2",
"description": "Clerk JS library",
"keywords": [
"clerk",
diff --git a/packages/expo/CHANGELOG.md b/packages/expo/CHANGELOG.md
index 49eb0be765..9383307126 100644
--- a/packages/expo/CHANGELOG.md
+++ b/packages/expo/CHANGELOG.md
@@ -1,5 +1,12 @@
# Change Log
+## 2.6.4
+
+### Patch Changes
+
+- Updated dependencies [[`fbb9e0da4fe87e9bb79db1a841e48ef949278bf0`](https://github.com/clerk/javascript/commit/fbb9e0da4fe87e9bb79db1a841e48ef949278bf0)]:
+ - @clerk/clerk-js@5.43.2
+
## 2.6.3
### Patch Changes
diff --git a/packages/expo/package.json b/packages/expo/package.json
index 15b1ecf536..598b9e47a5 100644
--- a/packages/expo/package.json
+++ b/packages/expo/package.json
@@ -1,6 +1,6 @@
{
"name": "@clerk/clerk-expo",
- "version": "2.6.3",
+ "version": "2.6.4",
"description": "Clerk React Native/Expo library",
"keywords": [
"react",
From c9da04636ffe1ba804a1ce5e5b79027d3a2344d2 Mon Sep 17 00:00:00 2001
From: Vaggelis Yfantis
Date: Wed, 18 Dec 2024 12:37:04 +0200
Subject: [PATCH 08/23] feat(types): Add `oidcPrompt` and `oidcLoginHint`
(#4789)
---
.changeset/old-dryers-approve.md | 12 ++++++++++++
packages/types/src/externalAccount.ts | 2 ++
packages/types/src/factors.ts | 2 ++
packages/types/src/signIn.ts | 2 ++
packages/types/src/signUp.ts | 4 ++++
packages/types/src/user.ts | 2 ++
6 files changed, 24 insertions(+)
create mode 100644 .changeset/old-dryers-approve.md
diff --git a/.changeset/old-dryers-approve.md b/.changeset/old-dryers-approve.md
new file mode 100644
index 0000000000..1a6bb174e5
--- /dev/null
+++ b/.changeset/old-dryers-approve.md
@@ -0,0 +1,12 @@
+---
+'@clerk/types': minor
+---
+
+Adds `oidcLoginHint` & `oidcPrompt` parameters to following types:
+
+- `ReauthorizeExternalAccountParams`
+- `OAuthConfig`
+- `SignInCreateParams`
+- `PrepareVerificationParams`
+- `SignUpCreateParams`
+- `CreateExternalAccountParams`
diff --git a/packages/types/src/externalAccount.ts b/packages/types/src/externalAccount.ts
index c8b2fbd952..b2ab7b6a0b 100644
--- a/packages/types/src/externalAccount.ts
+++ b/packages/types/src/externalAccount.ts
@@ -7,6 +7,8 @@ import type { VerificationResource } from './verification';
export type ReauthorizeExternalAccountParams = {
additionalScopes?: OAuthScope[];
redirectUrl?: string;
+ oidcPrompt?: string;
+ oidcLoginHint?: string;
};
export interface ExternalAccountResource extends ClerkResource {
diff --git a/packages/types/src/factors.ts b/packages/types/src/factors.ts
index 1eb79ecfb9..6ef8237e3f 100644
--- a/packages/types/src/factors.ts
+++ b/packages/types/src/factors.ts
@@ -101,6 +101,8 @@ export type PassKeyConfig = PasskeyFactor;
export type OAuthConfig = OauthFactor & {
redirectUrl: string;
actionCompleteRedirectUrl: string;
+ oidcPrompt?: string;
+ oidcLoginHint?: string;
};
export type SamlConfig = SamlFactor & {
diff --git a/packages/types/src/signIn.ts b/packages/types/src/signIn.ts
index f9d9425dc9..cca2951dcf 100644
--- a/packages/types/src/signIn.ts
+++ b/packages/types/src/signIn.ts
@@ -183,6 +183,8 @@ export type SignInCreateParams = (
redirectUrl: string;
actionCompleteRedirectUrl?: string;
identifier?: string;
+ oidcPrompt?: string;
+ oidcLoginHint?: string;
}
| {
strategy: TicketStrategy;
diff --git a/packages/types/src/signUp.ts b/packages/types/src/signUp.ts
index c94d69e6be..8dd84f5a4d 100644
--- a/packages/types/src/signUp.ts
+++ b/packages/types/src/signUp.ts
@@ -127,6 +127,8 @@ export type PrepareVerificationParams =
strategy: OAuthStrategy;
redirectUrl?: string;
actionCompleteRedirectUrl?: string;
+ oidcPrompt?: string;
+ oidcLoginHint?: string;
}
| {
strategy: SamlStrategy;
@@ -171,6 +173,8 @@ export type SignUpCreateParams = Partial<
ticket: string;
token: string;
legalAccepted: boolean;
+ oidcPrompt: string;
+ oidcLoginHint: string;
} & Omit>, 'legalAccepted'>
>;
diff --git a/packages/types/src/user.ts b/packages/types/src/user.ts
index 15bc308226..a6cc92aef9 100644
--- a/packages/types/src/user.ts
+++ b/packages/types/src/user.ts
@@ -138,6 +138,8 @@ export type CreateExternalAccountParams = {
strategy: OAuthStrategy;
redirectUrl?: string;
additionalScopes?: OAuthScope[];
+ oidcPrompt?: string;
+ oidcLoginHint?: string;
};
export type VerifyTOTPParams = { code: string };
From aeb5855853e5e89a03a1d6ce3d421c3e9870c814 Mon Sep 17 00:00:00 2001
From: Robert Soriano
Date: Wed, 18 Dec 2024 06:46:33 -0800
Subject: [PATCH 09/23] chore(vue): Expose `initialValues` prop within
`` and `` (#4801)
---
.changeset/shiny-pandas-love.md | 5 +++++
packages/vue/src/components/SignInButton.ts | 11 +++++++++--
packages/vue/src/components/SignUpButton.ts | 3 ++-
3 files changed, 16 insertions(+), 3 deletions(-)
create mode 100644 .changeset/shiny-pandas-love.md
diff --git a/.changeset/shiny-pandas-love.md b/.changeset/shiny-pandas-love.md
new file mode 100644
index 0000000000..7ac5bf489d
--- /dev/null
+++ b/.changeset/shiny-pandas-love.md
@@ -0,0 +1,5 @@
+---
+"@clerk/vue": patch
+---
+
+Add `initialValues` option to `` and `` components.
diff --git a/packages/vue/src/components/SignInButton.ts b/packages/vue/src/components/SignInButton.ts
index 37a5536de2..c6f375dd03 100644
--- a/packages/vue/src/components/SignInButton.ts
+++ b/packages/vue/src/components/SignInButton.ts
@@ -6,7 +6,7 @@ import { assertSingleChild, normalizeWithDefaultValue } from '../utils';
type SignInButtonProps = Pick<
SignInProps,
- 'fallbackRedirectUrl' | 'forceRedirectUrl' | 'signUpForceRedirectUrl' | 'signUpFallbackRedirectUrl'
+ 'fallbackRedirectUrl' | 'forceRedirectUrl' | 'signUpForceRedirectUrl' | 'signUpFallbackRedirectUrl' | 'initialValues'
>;
export const SignInButton = defineComponent(
@@ -42,6 +42,13 @@ export const SignInButton = defineComponent(
};
},
{
- props: ['signUpForceRedirectUrl', 'signUpFallbackRedirectUrl', 'fallbackRedirectUrl', 'forceRedirectUrl', 'mode'],
+ props: [
+ 'signUpForceRedirectUrl',
+ 'signUpFallbackRedirectUrl',
+ 'fallbackRedirectUrl',
+ 'forceRedirectUrl',
+ 'mode',
+ 'initialValues',
+ ],
},
);
diff --git a/packages/vue/src/components/SignUpButton.ts b/packages/vue/src/components/SignUpButton.ts
index 29281cac8d..891374ea44 100644
--- a/packages/vue/src/components/SignUpButton.ts
+++ b/packages/vue/src/components/SignUpButton.ts
@@ -8,7 +8,7 @@ type SignUpButtonProps = {
unsafeMetadata?: SignUpUnsafeMetadata;
} & Pick<
SignUpProps,
- 'fallbackRedirectUrl' | 'forceRedirectUrl' | 'signInForceRedirectUrl' | 'signInFallbackRedirectUrl'
+ 'fallbackRedirectUrl' | 'forceRedirectUrl' | 'signInForceRedirectUrl' | 'signInFallbackRedirectUrl' | 'initialValues'
>;
export const SignUpButton = defineComponent(
@@ -51,6 +51,7 @@ export const SignUpButton = defineComponent(
'fallbackRedirectUrl',
'forceRedirectUrl',
'mode',
+ 'initialValues',
],
},
);
From b3300c84a42276bd071a37addbd1ca6888ed9d7c Mon Sep 17 00:00:00 2001
From: Laura Beatris <48022589+LauraBeatris@users.noreply.github.com>
Date: Wed, 18 Dec 2024 12:59:36 -0300
Subject: [PATCH 10/23] chore(backend): Introduce SAML connections per org
(#4792)
Co-authored-by: Izaak Lauer <8404559+izaaklauer@users.noreply.github.com>
---
.changeset/kind-crews-hear.md | 7 +++++++
packages/backend/src/api/endpoints/SamlConnectionApi.ts | 2 ++
packages/backend/src/api/resources/JSON.ts | 1 +
packages/backend/src/api/resources/SamlConnection.ts | 2 ++
4 files changed, 12 insertions(+)
create mode 100644 .changeset/kind-crews-hear.md
diff --git a/.changeset/kind-crews-hear.md b/.changeset/kind-crews-hear.md
new file mode 100644
index 0000000000..63bece9029
--- /dev/null
+++ b/.changeset/kind-crews-hear.md
@@ -0,0 +1,7 @@
+---
+'@clerk/backend': patch
+---
+
+Allow to create and update SAML connections with organization IDs.
+
+When users sign in or up using an organization's SAML connection, they're automatically added as members of that organization. For more information, refer to our docs: https://clerk.com/docs/organizations/manage-sso
diff --git a/packages/backend/src/api/endpoints/SamlConnectionApi.ts b/packages/backend/src/api/endpoints/SamlConnectionApi.ts
index 58671806c6..9ac17c2cf2 100644
--- a/packages/backend/src/api/endpoints/SamlConnectionApi.ts
+++ b/packages/backend/src/api/endpoints/SamlConnectionApi.ts
@@ -14,6 +14,7 @@ type CreateSamlConnectionParams = {
name: string;
provider: SamlIdpSlug;
domain: string;
+ organizationId?: string;
idpEntityId?: string;
idpSsoUrl?: string;
idpCertificate?: string;
@@ -31,6 +32,7 @@ type UpdateSamlConnectionParams = {
name?: string;
provider?: SamlIdpSlug;
domain?: string;
+ organizationId?: string;
idpEntityId?: string;
idpSsoUrl?: string;
idpCertificate?: string;
diff --git a/packages/backend/src/api/resources/JSON.ts b/packages/backend/src/api/resources/JSON.ts
index 5ef4fb5d2a..0c5c544ba6 100644
--- a/packages/backend/src/api/resources/JSON.ts
+++ b/packages/backend/src/api/resources/JSON.ts
@@ -360,6 +360,7 @@ export interface PaginatedResponseJSON {
export interface SamlConnectionJSON extends ClerkResourceJSON {
name: string;
domain: string;
+ organization_id: string | null;
idp_entity_id: string;
idp_sso_url: string;
idp_certificate: string;
diff --git a/packages/backend/src/api/resources/SamlConnection.ts b/packages/backend/src/api/resources/SamlConnection.ts
index d32f0495f4..e42add44c4 100644
--- a/packages/backend/src/api/resources/SamlConnection.ts
+++ b/packages/backend/src/api/resources/SamlConnection.ts
@@ -5,6 +5,7 @@ export class SamlConnection {
readonly id: string,
readonly name: string,
readonly domain: string,
+ readonly organizationId: string | null,
readonly idpEntityId: string | null,
readonly idpSsoUrl: string | null,
readonly idpCertificate: string | null,
@@ -28,6 +29,7 @@ export class SamlConnection {
data.id,
data.name,
data.domain,
+ data.organization_id,
data.idp_entity_id,
data.idp_sso_url,
data.idp_certificate,
From 784b50e622f8d203d337f7bd90948a54d19d87cd Mon Sep 17 00:00:00 2001
From: Clerk Cookie <136073014+clerk-cookie@users.noreply.github.com>
Date: Wed, 18 Dec 2024 11:23:15 -0500
Subject: [PATCH 11/23] ci(repo): Version packages (#4805)
Co-authored-by: github-actions[bot]
---
.changeset/kind-crews-hear.md | 7 -------
.changeset/old-dryers-approve.md | 12 ------------
.changeset/shiny-pandas-love.md | 5 -----
packages/astro/CHANGELOG.md | 9 +++++++++
packages/astro/package.json | 2 +-
packages/backend/CHANGELOG.md | 12 ++++++++++++
packages/backend/package.json | 2 +-
packages/chrome-extension/CHANGELOG.md | 9 +++++++++
packages/chrome-extension/package.json | 2 +-
packages/clerk-js/CHANGELOG.md | 9 +++++++++
packages/clerk-js/package.json | 2 +-
packages/elements/CHANGELOG.md | 9 +++++++++
packages/elements/package.json | 2 +-
packages/expo-passkeys/CHANGELOG.md | 8 ++++++++
packages/expo-passkeys/package.json | 2 +-
packages/expo/CHANGELOG.md | 10 ++++++++++
packages/expo/package.json | 2 +-
packages/express/CHANGELOG.md | 9 +++++++++
packages/express/package.json | 2 +-
packages/fastify/CHANGELOG.md | 9 +++++++++
packages/fastify/package.json | 2 +-
packages/localizations/CHANGELOG.md | 7 +++++++
packages/localizations/package.json | 2 +-
packages/nextjs/CHANGELOG.md | 10 ++++++++++
packages/nextjs/package.json | 2 +-
packages/nuxt/CHANGELOG.md | 10 ++++++++++
packages/nuxt/package.json | 2 +-
packages/react-router/CHANGELOG.md | 10 ++++++++++
packages/react-router/package.json | 2 +-
packages/react/CHANGELOG.md | 8 ++++++++
packages/react/package.json | 2 +-
packages/remix/CHANGELOG.md | 10 ++++++++++
packages/remix/package.json | 2 +-
packages/sdk-node/CHANGELOG.md | 9 +++++++++
packages/sdk-node/package.json | 2 +-
packages/shared/CHANGELOG.md | 7 +++++++
packages/shared/package.json | 2 +-
packages/tanstack-start/CHANGELOG.md | 10 ++++++++++
packages/tanstack-start/package.json | 2 +-
packages/testing/CHANGELOG.md | 9 +++++++++
packages/testing/package.json | 2 +-
packages/themes/CHANGELOG.md | 7 +++++++
packages/themes/package.json | 2 +-
packages/types/CHANGELOG.md | 13 +++++++++++++
packages/types/package.json | 2 +-
packages/ui/CHANGELOG.md | 10 ++++++++++
packages/ui/package.json | 2 +-
packages/vue/CHANGELOG.md | 10 ++++++++++
packages/vue/package.json | 2 +-
49 files changed, 237 insertions(+), 47 deletions(-)
delete mode 100644 .changeset/kind-crews-hear.md
delete mode 100644 .changeset/old-dryers-approve.md
delete mode 100644 .changeset/shiny-pandas-love.md
diff --git a/.changeset/kind-crews-hear.md b/.changeset/kind-crews-hear.md
deleted file mode 100644
index 63bece9029..0000000000
--- a/.changeset/kind-crews-hear.md
+++ /dev/null
@@ -1,7 +0,0 @@
----
-'@clerk/backend': patch
----
-
-Allow to create and update SAML connections with organization IDs.
-
-When users sign in or up using an organization's SAML connection, they're automatically added as members of that organization. For more information, refer to our docs: https://clerk.com/docs/organizations/manage-sso
diff --git a/.changeset/old-dryers-approve.md b/.changeset/old-dryers-approve.md
deleted file mode 100644
index 1a6bb174e5..0000000000
--- a/.changeset/old-dryers-approve.md
+++ /dev/null
@@ -1,12 +0,0 @@
----
-'@clerk/types': minor
----
-
-Adds `oidcLoginHint` & `oidcPrompt` parameters to following types:
-
-- `ReauthorizeExternalAccountParams`
-- `OAuthConfig`
-- `SignInCreateParams`
-- `PrepareVerificationParams`
-- `SignUpCreateParams`
-- `CreateExternalAccountParams`
diff --git a/.changeset/shiny-pandas-love.md b/.changeset/shiny-pandas-love.md
deleted file mode 100644
index 7ac5bf489d..0000000000
--- a/.changeset/shiny-pandas-love.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"@clerk/vue": patch
----
-
-Add `initialValues` option to `` and `` components.
diff --git a/packages/astro/CHANGELOG.md b/packages/astro/CHANGELOG.md
index 93584a6b28..b5a577c602 100644
--- a/packages/astro/CHANGELOG.md
+++ b/packages/astro/CHANGELOG.md
@@ -1,5 +1,14 @@
# @clerk/astro
+## 2.1.4
+
+### Patch Changes
+
+- Updated dependencies [[`b3300c84a42276bd071a37addbd1ca6888ed9d7c`](https://github.com/clerk/javascript/commit/b3300c84a42276bd071a37addbd1ca6888ed9d7c), [`c9da04636ffe1ba804a1ce5e5b79027d3a2344d2`](https://github.com/clerk/javascript/commit/c9da04636ffe1ba804a1ce5e5b79027d3a2344d2)]:
+ - @clerk/backend@1.21.4
+ - @clerk/types@4.40.0
+ - @clerk/shared@2.20.4
+
## 2.1.3
### Patch Changes
diff --git a/packages/astro/package.json b/packages/astro/package.json
index 5599e4c27f..d2717b0c2d 100644
--- a/packages/astro/package.json
+++ b/packages/astro/package.json
@@ -1,6 +1,6 @@
{
"name": "@clerk/astro",
- "version": "2.1.3",
+ "version": "2.1.4",
"description": "Clerk SDK for Astro",
"keywords": [
"auth",
diff --git a/packages/backend/CHANGELOG.md b/packages/backend/CHANGELOG.md
index 99ef93e94b..071f83fc04 100644
--- a/packages/backend/CHANGELOG.md
+++ b/packages/backend/CHANGELOG.md
@@ -1,5 +1,17 @@
# Change Log
+## 1.21.4
+
+### Patch Changes
+
+- Allow to create and update SAML connections with organization IDs. ([#4792](https://github.com/clerk/javascript/pull/4792)) by [@LauraBeatris](https://github.com/LauraBeatris)
+
+ When users sign in or up using an organization's SAML connection, they're automatically added as members of that organization. For more information, refer to our docs: https://clerk.com/docs/organizations/manage-sso
+
+- Updated dependencies [[`c9da04636ffe1ba804a1ce5e5b79027d3a2344d2`](https://github.com/clerk/javascript/commit/c9da04636ffe1ba804a1ce5e5b79027d3a2344d2)]:
+ - @clerk/types@4.40.0
+ - @clerk/shared@2.20.4
+
## 1.21.3
### Patch Changes
diff --git a/packages/backend/package.json b/packages/backend/package.json
index a4703975ed..f6917d1ba9 100644
--- a/packages/backend/package.json
+++ b/packages/backend/package.json
@@ -1,6 +1,6 @@
{
"name": "@clerk/backend",
- "version": "1.21.3",
+ "version": "1.21.4",
"description": "Clerk Backend SDK - REST Client for Backend API & JWT verification utilities",
"homepage": "https://clerk.com/",
"bugs": {
diff --git a/packages/chrome-extension/CHANGELOG.md b/packages/chrome-extension/CHANGELOG.md
index eacf9f01c6..e8b5cf2d67 100644
--- a/packages/chrome-extension/CHANGELOG.md
+++ b/packages/chrome-extension/CHANGELOG.md
@@ -1,5 +1,14 @@
# Change Log
+## 2.1.6
+
+### Patch Changes
+
+- Updated dependencies []:
+ - @clerk/clerk-js@5.43.3
+ - @clerk/clerk-react@5.20.4
+ - @clerk/shared@2.20.4
+
## 2.1.5
### Patch Changes
diff --git a/packages/chrome-extension/package.json b/packages/chrome-extension/package.json
index 7c6fdb1f63..84cb43d456 100644
--- a/packages/chrome-extension/package.json
+++ b/packages/chrome-extension/package.json
@@ -1,6 +1,6 @@
{
"name": "@clerk/chrome-extension",
- "version": "2.1.5",
+ "version": "2.1.6",
"description": "Clerk SDK for Chrome extensions",
"keywords": [
"auth",
diff --git a/packages/clerk-js/CHANGELOG.md b/packages/clerk-js/CHANGELOG.md
index e4913b96c6..06857eaca2 100644
--- a/packages/clerk-js/CHANGELOG.md
+++ b/packages/clerk-js/CHANGELOG.md
@@ -1,5 +1,14 @@
# Change Log
+## 5.43.3
+
+### Patch Changes
+
+- Updated dependencies [[`c9da04636ffe1ba804a1ce5e5b79027d3a2344d2`](https://github.com/clerk/javascript/commit/c9da04636ffe1ba804a1ce5e5b79027d3a2344d2)]:
+ - @clerk/types@4.40.0
+ - @clerk/localizations@3.9.4
+ - @clerk/shared@2.20.4
+
## 5.43.2
### Patch Changes
diff --git a/packages/clerk-js/package.json b/packages/clerk-js/package.json
index b44fdf6829..f870ff517c 100644
--- a/packages/clerk-js/package.json
+++ b/packages/clerk-js/package.json
@@ -1,6 +1,6 @@
{
"name": "@clerk/clerk-js",
- "version": "5.43.2",
+ "version": "5.43.3",
"description": "Clerk JS library",
"keywords": [
"clerk",
diff --git a/packages/elements/CHANGELOG.md b/packages/elements/CHANGELOG.md
index 666b3ddef0..26be42b0a5 100644
--- a/packages/elements/CHANGELOG.md
+++ b/packages/elements/CHANGELOG.md
@@ -1,5 +1,14 @@
# @clerk/elements
+## 0.22.4
+
+### Patch Changes
+
+- Updated dependencies [[`c9da04636ffe1ba804a1ce5e5b79027d3a2344d2`](https://github.com/clerk/javascript/commit/c9da04636ffe1ba804a1ce5e5b79027d3a2344d2)]:
+ - @clerk/types@4.40.0
+ - @clerk/clerk-react@5.20.4
+ - @clerk/shared@2.20.4
+
## 0.22.3
### Patch Changes
diff --git a/packages/elements/package.json b/packages/elements/package.json
index 962279049c..00b7a5b823 100644
--- a/packages/elements/package.json
+++ b/packages/elements/package.json
@@ -1,6 +1,6 @@
{
"name": "@clerk/elements",
- "version": "0.22.3",
+ "version": "0.22.4",
"description": "Clerk Elements",
"keywords": [
"clerk",
diff --git a/packages/expo-passkeys/CHANGELOG.md b/packages/expo-passkeys/CHANGELOG.md
index 526295cad8..7d924d25fd 100644
--- a/packages/expo-passkeys/CHANGELOG.md
+++ b/packages/expo-passkeys/CHANGELOG.md
@@ -1,5 +1,13 @@
# @clerk/expo-passkeys
+## 0.1.4
+
+### Patch Changes
+
+- Updated dependencies [[`c9da04636ffe1ba804a1ce5e5b79027d3a2344d2`](https://github.com/clerk/javascript/commit/c9da04636ffe1ba804a1ce5e5b79027d3a2344d2)]:
+ - @clerk/types@4.40.0
+ - @clerk/shared@2.20.4
+
## 0.1.3
### Patch Changes
diff --git a/packages/expo-passkeys/package.json b/packages/expo-passkeys/package.json
index 58d3f0678c..6524ba61c5 100644
--- a/packages/expo-passkeys/package.json
+++ b/packages/expo-passkeys/package.json
@@ -1,6 +1,6 @@
{
"name": "@clerk/expo-passkeys",
- "version": "0.1.3",
+ "version": "0.1.4",
"description": "Passkeys library to be used with Clerk for expo",
"keywords": [
"react-native",
diff --git a/packages/expo/CHANGELOG.md b/packages/expo/CHANGELOG.md
index 9383307126..f3de5a1a87 100644
--- a/packages/expo/CHANGELOG.md
+++ b/packages/expo/CHANGELOG.md
@@ -1,5 +1,15 @@
# Change Log
+## 2.6.5
+
+### Patch Changes
+
+- Updated dependencies [[`c9da04636ffe1ba804a1ce5e5b79027d3a2344d2`](https://github.com/clerk/javascript/commit/c9da04636ffe1ba804a1ce5e5b79027d3a2344d2)]:
+ - @clerk/types@4.40.0
+ - @clerk/clerk-js@5.43.3
+ - @clerk/clerk-react@5.20.4
+ - @clerk/shared@2.20.4
+
## 2.6.4
### Patch Changes
diff --git a/packages/expo/package.json b/packages/expo/package.json
index 598b9e47a5..7bab782d6b 100644
--- a/packages/expo/package.json
+++ b/packages/expo/package.json
@@ -1,6 +1,6 @@
{
"name": "@clerk/clerk-expo",
- "version": "2.6.4",
+ "version": "2.6.5",
"description": "Clerk React Native/Expo library",
"keywords": [
"react",
diff --git a/packages/express/CHANGELOG.md b/packages/express/CHANGELOG.md
index f33eee9091..87fb4d3a05 100644
--- a/packages/express/CHANGELOG.md
+++ b/packages/express/CHANGELOG.md
@@ -1,5 +1,14 @@
# Change Log
+## 1.3.31
+
+### Patch Changes
+
+- Updated dependencies [[`b3300c84a42276bd071a37addbd1ca6888ed9d7c`](https://github.com/clerk/javascript/commit/b3300c84a42276bd071a37addbd1ca6888ed9d7c), [`c9da04636ffe1ba804a1ce5e5b79027d3a2344d2`](https://github.com/clerk/javascript/commit/c9da04636ffe1ba804a1ce5e5b79027d3a2344d2)]:
+ - @clerk/backend@1.21.4
+ - @clerk/types@4.40.0
+ - @clerk/shared@2.20.4
+
## 1.3.30
### Patch Changes
diff --git a/packages/express/package.json b/packages/express/package.json
index c5d3e42e45..9839ec1fd0 100644
--- a/packages/express/package.json
+++ b/packages/express/package.json
@@ -1,6 +1,6 @@
{
"name": "@clerk/express",
- "version": "1.3.30",
+ "version": "1.3.31",
"description": "Clerk server SDK for usage with Express",
"keywords": [
"clerk",
diff --git a/packages/fastify/CHANGELOG.md b/packages/fastify/CHANGELOG.md
index 708671d0df..ee2540469d 100644
--- a/packages/fastify/CHANGELOG.md
+++ b/packages/fastify/CHANGELOG.md
@@ -1,5 +1,14 @@
# Change Log
+## 2.1.4
+
+### Patch Changes
+
+- Updated dependencies [[`b3300c84a42276bd071a37addbd1ca6888ed9d7c`](https://github.com/clerk/javascript/commit/b3300c84a42276bd071a37addbd1ca6888ed9d7c), [`c9da04636ffe1ba804a1ce5e5b79027d3a2344d2`](https://github.com/clerk/javascript/commit/c9da04636ffe1ba804a1ce5e5b79027d3a2344d2)]:
+ - @clerk/backend@1.21.4
+ - @clerk/types@4.40.0
+ - @clerk/shared@2.20.4
+
## 2.1.3
### Patch Changes
diff --git a/packages/fastify/package.json b/packages/fastify/package.json
index 7fc1e5a87d..b5f024c13b 100644
--- a/packages/fastify/package.json
+++ b/packages/fastify/package.json
@@ -1,6 +1,6 @@
{
"name": "@clerk/fastify",
- "version": "2.1.3",
+ "version": "2.1.4",
"description": "Clerk SDK for Fastify",
"keywords": [
"auth",
diff --git a/packages/localizations/CHANGELOG.md b/packages/localizations/CHANGELOG.md
index 2d590c380a..d8e315d481 100644
--- a/packages/localizations/CHANGELOG.md
+++ b/packages/localizations/CHANGELOG.md
@@ -1,5 +1,12 @@
# Change Log
+## 3.9.4
+
+### Patch Changes
+
+- Updated dependencies [[`c9da04636ffe1ba804a1ce5e5b79027d3a2344d2`](https://github.com/clerk/javascript/commit/c9da04636ffe1ba804a1ce5e5b79027d3a2344d2)]:
+ - @clerk/types@4.40.0
+
## 3.9.3
### Patch Changes
diff --git a/packages/localizations/package.json b/packages/localizations/package.json
index c94bdf6e83..756958409b 100644
--- a/packages/localizations/package.json
+++ b/packages/localizations/package.json
@@ -1,6 +1,6 @@
{
"name": "@clerk/localizations",
- "version": "3.9.3",
+ "version": "3.9.4",
"description": "Localizations for the Clerk components",
"keywords": [
"react",
diff --git a/packages/nextjs/CHANGELOG.md b/packages/nextjs/CHANGELOG.md
index f5d79b5d77..771ea54798 100644
--- a/packages/nextjs/CHANGELOG.md
+++ b/packages/nextjs/CHANGELOG.md
@@ -1,5 +1,15 @@
# Change Log
+## 6.9.5
+
+### Patch Changes
+
+- Updated dependencies [[`b3300c84a42276bd071a37addbd1ca6888ed9d7c`](https://github.com/clerk/javascript/commit/b3300c84a42276bd071a37addbd1ca6888ed9d7c), [`c9da04636ffe1ba804a1ce5e5b79027d3a2344d2`](https://github.com/clerk/javascript/commit/c9da04636ffe1ba804a1ce5e5b79027d3a2344d2)]:
+ - @clerk/backend@1.21.4
+ - @clerk/types@4.40.0
+ - @clerk/clerk-react@5.20.4
+ - @clerk/shared@2.20.4
+
## 6.9.4
### Patch Changes
diff --git a/packages/nextjs/package.json b/packages/nextjs/package.json
index 05789e758c..b8d2c2573c 100644
--- a/packages/nextjs/package.json
+++ b/packages/nextjs/package.json
@@ -1,6 +1,6 @@
{
"name": "@clerk/nextjs",
- "version": "6.9.4",
+ "version": "6.9.5",
"description": "Clerk SDK for NextJS",
"keywords": [
"clerk",
diff --git a/packages/nuxt/CHANGELOG.md b/packages/nuxt/CHANGELOG.md
index 8648f9d13e..5c202b3409 100644
--- a/packages/nuxt/CHANGELOG.md
+++ b/packages/nuxt/CHANGELOG.md
@@ -1,5 +1,15 @@
# @clerk/nuxt
+## 0.1.5
+
+### Patch Changes
+
+- Updated dependencies [[`b3300c84a42276bd071a37addbd1ca6888ed9d7c`](https://github.com/clerk/javascript/commit/b3300c84a42276bd071a37addbd1ca6888ed9d7c), [`c9da04636ffe1ba804a1ce5e5b79027d3a2344d2`](https://github.com/clerk/javascript/commit/c9da04636ffe1ba804a1ce5e5b79027d3a2344d2), [`aeb5855853e5e89a03a1d6ce3d421c3e9870c814`](https://github.com/clerk/javascript/commit/aeb5855853e5e89a03a1d6ce3d421c3e9870c814)]:
+ - @clerk/backend@1.21.4
+ - @clerk/types@4.40.0
+ - @clerk/vue@0.1.5
+ - @clerk/shared@2.20.4
+
## 0.1.4
### Patch Changes
diff --git a/packages/nuxt/package.json b/packages/nuxt/package.json
index 039e490073..b9b098761a 100644
--- a/packages/nuxt/package.json
+++ b/packages/nuxt/package.json
@@ -1,6 +1,6 @@
{
"name": "@clerk/nuxt",
- "version": "0.1.4",
+ "version": "0.1.5",
"description": "Clerk SDK for Nuxt",
"keywords": [
"clerk",
diff --git a/packages/react-router/CHANGELOG.md b/packages/react-router/CHANGELOG.md
index 84764dfca4..1efe86f6c4 100644
--- a/packages/react-router/CHANGELOG.md
+++ b/packages/react-router/CHANGELOG.md
@@ -1,5 +1,15 @@
# Change Log
+## 0.1.4
+
+### Patch Changes
+
+- Updated dependencies [[`b3300c84a42276bd071a37addbd1ca6888ed9d7c`](https://github.com/clerk/javascript/commit/b3300c84a42276bd071a37addbd1ca6888ed9d7c), [`c9da04636ffe1ba804a1ce5e5b79027d3a2344d2`](https://github.com/clerk/javascript/commit/c9da04636ffe1ba804a1ce5e5b79027d3a2344d2)]:
+ - @clerk/backend@1.21.4
+ - @clerk/types@4.40.0
+ - @clerk/clerk-react@5.20.4
+ - @clerk/shared@2.20.4
+
## 0.1.3
### Patch Changes
diff --git a/packages/react-router/package.json b/packages/react-router/package.json
index befb2075f5..2b06e010ba 100644
--- a/packages/react-router/package.json
+++ b/packages/react-router/package.json
@@ -1,6 +1,6 @@
{
"name": "@clerk/react-router",
- "version": "0.1.3",
+ "version": "0.1.4",
"description": "Clerk SDK for React Router",
"keywords": [
"clerk",
diff --git a/packages/react/CHANGELOG.md b/packages/react/CHANGELOG.md
index 3150367a3f..d43ad52689 100644
--- a/packages/react/CHANGELOG.md
+++ b/packages/react/CHANGELOG.md
@@ -1,5 +1,13 @@
# Change Log
+## 5.20.4
+
+### Patch Changes
+
+- Updated dependencies [[`c9da04636ffe1ba804a1ce5e5b79027d3a2344d2`](https://github.com/clerk/javascript/commit/c9da04636ffe1ba804a1ce5e5b79027d3a2344d2)]:
+ - @clerk/types@4.40.0
+ - @clerk/shared@2.20.4
+
## 5.20.3
### Patch Changes
diff --git a/packages/react/package.json b/packages/react/package.json
index d0d6b64ff1..29560d8ff0 100644
--- a/packages/react/package.json
+++ b/packages/react/package.json
@@ -1,6 +1,6 @@
{
"name": "@clerk/clerk-react",
- "version": "5.20.3",
+ "version": "5.20.4",
"description": "Clerk React library",
"keywords": [
"clerk",
diff --git a/packages/remix/CHANGELOG.md b/packages/remix/CHANGELOG.md
index 55d92066c4..c0578fbb5e 100644
--- a/packages/remix/CHANGELOG.md
+++ b/packages/remix/CHANGELOG.md
@@ -1,5 +1,15 @@
# Change Log
+## 4.4.5
+
+### Patch Changes
+
+- Updated dependencies [[`b3300c84a42276bd071a37addbd1ca6888ed9d7c`](https://github.com/clerk/javascript/commit/b3300c84a42276bd071a37addbd1ca6888ed9d7c), [`c9da04636ffe1ba804a1ce5e5b79027d3a2344d2`](https://github.com/clerk/javascript/commit/c9da04636ffe1ba804a1ce5e5b79027d3a2344d2)]:
+ - @clerk/backend@1.21.4
+ - @clerk/types@4.40.0
+ - @clerk/clerk-react@5.20.4
+ - @clerk/shared@2.20.4
+
## 4.4.4
### Patch Changes
diff --git a/packages/remix/package.json b/packages/remix/package.json
index baa00dd920..73220e6045 100644
--- a/packages/remix/package.json
+++ b/packages/remix/package.json
@@ -1,6 +1,6 @@
{
"name": "@clerk/remix",
- "version": "4.4.4",
+ "version": "4.4.5",
"description": "Clerk SDK for Remix",
"keywords": [
"clerk",
diff --git a/packages/sdk-node/CHANGELOG.md b/packages/sdk-node/CHANGELOG.md
index c580eac292..7bfb860119 100644
--- a/packages/sdk-node/CHANGELOG.md
+++ b/packages/sdk-node/CHANGELOG.md
@@ -1,5 +1,14 @@
# Change Log
+## 5.1.4
+
+### Patch Changes
+
+- Updated dependencies [[`b3300c84a42276bd071a37addbd1ca6888ed9d7c`](https://github.com/clerk/javascript/commit/b3300c84a42276bd071a37addbd1ca6888ed9d7c), [`c9da04636ffe1ba804a1ce5e5b79027d3a2344d2`](https://github.com/clerk/javascript/commit/c9da04636ffe1ba804a1ce5e5b79027d3a2344d2)]:
+ - @clerk/backend@1.21.4
+ - @clerk/types@4.40.0
+ - @clerk/shared@2.20.4
+
## 5.1.3
### Patch Changes
diff --git a/packages/sdk-node/package.json b/packages/sdk-node/package.json
index 620ac49187..1e32c897d9 100644
--- a/packages/sdk-node/package.json
+++ b/packages/sdk-node/package.json
@@ -1,6 +1,6 @@
{
"name": "@clerk/clerk-sdk-node",
- "version": "5.1.3",
+ "version": "5.1.4",
"description": "Clerk server SDK for usage with node",
"keywords": [
"clerk",
diff --git a/packages/shared/CHANGELOG.md b/packages/shared/CHANGELOG.md
index 6b55cf5a8d..f5a4f4a08f 100644
--- a/packages/shared/CHANGELOG.md
+++ b/packages/shared/CHANGELOG.md
@@ -1,5 +1,12 @@
# Change Log
+## 2.20.4
+
+### Patch Changes
+
+- Updated dependencies [[`c9da04636ffe1ba804a1ce5e5b79027d3a2344d2`](https://github.com/clerk/javascript/commit/c9da04636ffe1ba804a1ce5e5b79027d3a2344d2)]:
+ - @clerk/types@4.40.0
+
## 2.20.3
### Patch Changes
diff --git a/packages/shared/package.json b/packages/shared/package.json
index 1e43251a39..37aa9e2014 100644
--- a/packages/shared/package.json
+++ b/packages/shared/package.json
@@ -1,6 +1,6 @@
{
"name": "@clerk/shared",
- "version": "2.20.3",
+ "version": "2.20.4",
"description": "Internal package utils used by the Clerk SDKs",
"repository": {
"type": "git",
diff --git a/packages/tanstack-start/CHANGELOG.md b/packages/tanstack-start/CHANGELOG.md
index 7605bc49d1..e1ee0bde5c 100644
--- a/packages/tanstack-start/CHANGELOG.md
+++ b/packages/tanstack-start/CHANGELOG.md
@@ -1,5 +1,15 @@
# @clerk/tanstack-start
+## 0.8.4
+
+### Patch Changes
+
+- Updated dependencies [[`b3300c84a42276bd071a37addbd1ca6888ed9d7c`](https://github.com/clerk/javascript/commit/b3300c84a42276bd071a37addbd1ca6888ed9d7c), [`c9da04636ffe1ba804a1ce5e5b79027d3a2344d2`](https://github.com/clerk/javascript/commit/c9da04636ffe1ba804a1ce5e5b79027d3a2344d2)]:
+ - @clerk/backend@1.21.4
+ - @clerk/types@4.40.0
+ - @clerk/clerk-react@5.20.4
+ - @clerk/shared@2.20.4
+
## 0.8.3
### Patch Changes
diff --git a/packages/tanstack-start/package.json b/packages/tanstack-start/package.json
index 81e706f86b..76c69a8687 100644
--- a/packages/tanstack-start/package.json
+++ b/packages/tanstack-start/package.json
@@ -1,6 +1,6 @@
{
"name": "@clerk/tanstack-start",
- "version": "0.8.3",
+ "version": "0.8.4",
"description": "Clerk SDK for TanStack Start",
"keywords": [
"clerk",
diff --git a/packages/testing/CHANGELOG.md b/packages/testing/CHANGELOG.md
index cdcba03206..80cbde183f 100644
--- a/packages/testing/CHANGELOG.md
+++ b/packages/testing/CHANGELOG.md
@@ -1,5 +1,14 @@
# @clerk/testing
+## 1.4.4
+
+### Patch Changes
+
+- Updated dependencies [[`b3300c84a42276bd071a37addbd1ca6888ed9d7c`](https://github.com/clerk/javascript/commit/b3300c84a42276bd071a37addbd1ca6888ed9d7c), [`c9da04636ffe1ba804a1ce5e5b79027d3a2344d2`](https://github.com/clerk/javascript/commit/c9da04636ffe1ba804a1ce5e5b79027d3a2344d2)]:
+ - @clerk/backend@1.21.4
+ - @clerk/types@4.40.0
+ - @clerk/shared@2.20.4
+
## 1.4.3
### Patch Changes
diff --git a/packages/testing/package.json b/packages/testing/package.json
index 00064ef261..2bdda13bb9 100644
--- a/packages/testing/package.json
+++ b/packages/testing/package.json
@@ -1,6 +1,6 @@
{
"name": "@clerk/testing",
- "version": "1.4.3",
+ "version": "1.4.4",
"description": "Utilities to help you create E2E test suites for apps using Clerk",
"keywords": [
"auth",
diff --git a/packages/themes/CHANGELOG.md b/packages/themes/CHANGELOG.md
index 975e17b0ea..c27eb7db5a 100644
--- a/packages/themes/CHANGELOG.md
+++ b/packages/themes/CHANGELOG.md
@@ -1,5 +1,12 @@
# Change Log
+## 2.2.3
+
+### Patch Changes
+
+- Updated dependencies [[`c9da04636ffe1ba804a1ce5e5b79027d3a2344d2`](https://github.com/clerk/javascript/commit/c9da04636ffe1ba804a1ce5e5b79027d3a2344d2)]:
+ - @clerk/types@4.40.0
+
## 2.2.2
### Patch Changes
diff --git a/packages/themes/package.json b/packages/themes/package.json
index 324fa18de6..d22b0a505c 100644
--- a/packages/themes/package.json
+++ b/packages/themes/package.json
@@ -1,6 +1,6 @@
{
"name": "@clerk/themes",
- "version": "2.2.2",
+ "version": "2.2.3",
"description": "Themes for the Clerk auth components",
"keywords": [
"react",
diff --git a/packages/types/CHANGELOG.md b/packages/types/CHANGELOG.md
index 6fa877a977..03ae85fa59 100644
--- a/packages/types/CHANGELOG.md
+++ b/packages/types/CHANGELOG.md
@@ -1,5 +1,18 @@
# Change Log
+## 4.40.0
+
+### Minor Changes
+
+- Adds `oidcLoginHint` & `oidcPrompt` parameters to following types: ([#4789](https://github.com/clerk/javascript/pull/4789)) by [@octoper](https://github.com/octoper)
+
+ - `ReauthorizeExternalAccountParams`
+ - `OAuthConfig`
+ - `SignInCreateParams`
+ - `PrepareVerificationParams`
+ - `SignUpCreateParams`
+ - `CreateExternalAccountParams`
+
## 4.39.4
### Patch Changes
diff --git a/packages/types/package.json b/packages/types/package.json
index 1646e1ca6b..9ae7c6cdca 100644
--- a/packages/types/package.json
+++ b/packages/types/package.json
@@ -1,6 +1,6 @@
{
"name": "@clerk/types",
- "version": "4.39.4",
+ "version": "4.40.0",
"description": "Typings for Clerk libraries.",
"keywords": [
"clerk",
diff --git a/packages/ui/CHANGELOG.md b/packages/ui/CHANGELOG.md
index 3556fbb750..36757e949d 100644
--- a/packages/ui/CHANGELOG.md
+++ b/packages/ui/CHANGELOG.md
@@ -1,5 +1,15 @@
# @clerk/ui
+## 0.3.5
+
+### Patch Changes
+
+- Updated dependencies [[`c9da04636ffe1ba804a1ce5e5b79027d3a2344d2`](https://github.com/clerk/javascript/commit/c9da04636ffe1ba804a1ce5e5b79027d3a2344d2)]:
+ - @clerk/types@4.40.0
+ - @clerk/elements@0.22.4
+ - @clerk/localizations@3.9.4
+ - @clerk/shared@2.20.4
+
## 0.3.4
### Patch Changes
diff --git a/packages/ui/package.json b/packages/ui/package.json
index 6a97cc8d65..ac13ba67a6 100644
--- a/packages/ui/package.json
+++ b/packages/ui/package.json
@@ -1,6 +1,6 @@
{
"name": "@clerk/ui",
- "version": "0.3.4",
+ "version": "0.3.5",
"repository": {
"type": "git",
"url": "git+https://github.com/clerk/javascript.git",
diff --git a/packages/vue/CHANGELOG.md b/packages/vue/CHANGELOG.md
index f919d6d955..7f434b7ea7 100644
--- a/packages/vue/CHANGELOG.md
+++ b/packages/vue/CHANGELOG.md
@@ -1,5 +1,15 @@
# @clerk/vue
+## 0.1.5
+
+### Patch Changes
+
+- Add `initialValues` option to `` and `` components. ([#4801](https://github.com/clerk/javascript/pull/4801)) by [@wobsoriano](https://github.com/wobsoriano)
+
+- Updated dependencies [[`c9da04636ffe1ba804a1ce5e5b79027d3a2344d2`](https://github.com/clerk/javascript/commit/c9da04636ffe1ba804a1ce5e5b79027d3a2344d2)]:
+ - @clerk/types@4.40.0
+ - @clerk/shared@2.20.4
+
## 0.1.4
### Patch Changes
diff --git a/packages/vue/package.json b/packages/vue/package.json
index e323b1ef38..7a6fac893f 100644
--- a/packages/vue/package.json
+++ b/packages/vue/package.json
@@ -1,6 +1,6 @@
{
"name": "@clerk/vue",
- "version": "0.1.4",
+ "version": "0.1.5",
"description": "Clerk SDK for Vue",
"keywords": [
"clerk",
From a9234f28b53455c3be5517c9e1098fa525ee0dd4 Mon Sep 17 00:00:00 2001
From: Jacek Radko
Date: Wed, 18 Dec 2024 10:49:33 -0600
Subject: [PATCH 12/23] fix(repo): Link local packages for e2e (#4800)
---
.changeset/eleven-months-swim.md | 2 ++
integration/presets/astro.ts | 7 ++++---
integration/presets/elements.ts | 5 +++--
integration/presets/expo.ts | 3 ++-
integration/presets/express.ts | 3 ++-
integration/presets/next.ts | 7 ++++---
integration/presets/nuxt.ts | 3 ++-
integration/presets/react-router.ts | 3 ++-
integration/presets/react.ts | 5 +++--
integration/presets/remix.ts | 3 ++-
integration/presets/tanstack.ts | 5 +++--
integration/presets/utils.ts | 8 ++++++++
integration/presets/vue.ts | 3 ++-
13 files changed, 39 insertions(+), 18 deletions(-)
create mode 100644 .changeset/eleven-months-swim.md
create mode 100644 integration/presets/utils.ts
diff --git a/.changeset/eleven-months-swim.md b/.changeset/eleven-months-swim.md
new file mode 100644
index 0000000000..a845151cc8
--- /dev/null
+++ b/.changeset/eleven-months-swim.md
@@ -0,0 +1,2 @@
+---
+---
diff --git a/integration/presets/astro.ts b/integration/presets/astro.ts
index 0b7a208887..7995725b97 100644
--- a/integration/presets/astro.ts
+++ b/integration/presets/astro.ts
@@ -1,5 +1,6 @@
import { applicationConfig } from '../models/applicationConfig';
import { templates } from '../templates';
+import { linkPackage } from './utils';
const astroNode = applicationConfig()
.setName('astro-node')
@@ -9,9 +10,9 @@ const astroNode = applicationConfig()
.addScript('dev', 'pnpm dev')
.addScript('build', 'pnpm build')
.addScript('serve', 'pnpm preview')
- .addDependency('@clerk/astro', '*')
- .addDependency('@clerk/types', '*')
- .addDependency('@clerk/localizations', '*');
+ .addDependency('@clerk/astro', linkPackage('astro'))
+ .addDependency('@clerk/types', linkPackage('types'))
+ .addDependency('@clerk/localizations', linkPackage('localizations'));
const astroStatic = astroNode.clone().setName('astro-hybrid').useTemplate(templates['astro-hybrid']);
diff --git a/integration/presets/elements.ts b/integration/presets/elements.ts
index ae06dc5442..91bd21fbb0 100644
--- a/integration/presets/elements.ts
+++ b/integration/presets/elements.ts
@@ -1,6 +1,7 @@
import { constants } from '../constants';
import { applicationConfig } from '../models/applicationConfig.js';
import { templates } from '../templates/index.js';
+import { linkPackage } from './utils';
const nextAppRouter = applicationConfig()
.setName('elements-next')
@@ -13,8 +14,8 @@ const nextAppRouter = applicationConfig()
.addDependency('next', constants.E2E_NEXTJS_VERSION)
.addDependency('react', constants.E2E_REACT_VERSION)
.addDependency('react-dom', constants.E2E_REACT_DOM_VERSION)
- .addDependency('@clerk/nextjs', constants.E2E_CLERK_VERSION || '*')
- .addDependency('@clerk/elements', constants.E2E_CLERK_VERSION || '*');
+ .addDependency('@clerk/nextjs', constants.E2E_CLERK_VERSION || linkPackage('nextjs'))
+ .addDependency('@clerk/elements', constants.E2E_CLERK_VERSION || linkPackage('elements'));
export const elements = {
nextAppRouter,
diff --git a/integration/presets/expo.ts b/integration/presets/expo.ts
index 8380327fd3..bf9806fce2 100644
--- a/integration/presets/expo.ts
+++ b/integration/presets/expo.ts
@@ -1,5 +1,6 @@
import { applicationConfig } from '../models/applicationConfig';
import { templates } from '../templates';
+import { linkPackage } from './utils';
const expoWeb = applicationConfig()
.setName('expo-web')
@@ -9,7 +10,7 @@ const expoWeb = applicationConfig()
.addScript('dev', 'pnpm dev')
.addScript('build', 'pnpm build')
.addScript('serve', 'pnpm start')
- .addDependency('@clerk/clerk-expo', '*');
+ .addDependency('@clerk/clerk-expo', linkPackage('expo'));
export const expo = {
expoWeb,
diff --git a/integration/presets/express.ts b/integration/presets/express.ts
index fdebf5a530..6470469a0b 100644
--- a/integration/presets/express.ts
+++ b/integration/presets/express.ts
@@ -1,6 +1,7 @@
import { constants } from '../constants';
import { applicationConfig } from '../models/applicationConfig';
import { templates } from '../templates';
+import { linkPackage } from './utils';
const vite = applicationConfig()
.setName('express-vite')
@@ -10,7 +11,7 @@ const vite = applicationConfig()
.addScript('dev', 'pnpm dev')
.addScript('build', 'pnpm build')
.addScript('serve', 'pnpm start')
- .addDependency('@clerk/clerk-sdk-node', constants.E2E_CLERK_VERSION || '*');
+ .addDependency('@clerk/clerk-sdk-node', constants.E2E_CLERK_VERSION || linkPackage('sdk-node'));
export const express = {
vite,
diff --git a/integration/presets/next.ts b/integration/presets/next.ts
index a16a5a521e..6636af850c 100644
--- a/integration/presets/next.ts
+++ b/integration/presets/next.ts
@@ -1,6 +1,7 @@
import { constants } from '../constants';
import { applicationConfig } from '../models/applicationConfig.js';
import { templates } from '../templates/index.js';
+import { linkPackage } from './utils';
const appRouter = applicationConfig()
.setName('next-app-router')
@@ -13,9 +14,9 @@ const appRouter = applicationConfig()
.addDependency('next', constants.E2E_NEXTJS_VERSION)
.addDependency('react', constants.E2E_REACT_VERSION)
.addDependency('react-dom', constants.E2E_REACT_DOM_VERSION)
- .addDependency('@clerk/nextjs', constants.E2E_CLERK_VERSION || '*')
- .addDependency('@clerk/shared', '*')
- .addDependency('@clerk/types', '*');
+ .addDependency('@clerk/nextjs', constants.E2E_CLERK_VERSION || linkPackage('nextjs'))
+ .addDependency('@clerk/shared', linkPackage('shared'))
+ .addDependency('@clerk/types', linkPackage('types'));
const appRouterTurbo = appRouter.clone().setName('next-app-router-turbopack').addScript('dev', 'pnpm dev');
diff --git a/integration/presets/nuxt.ts b/integration/presets/nuxt.ts
index 8a55270454..8fdc9716c6 100644
--- a/integration/presets/nuxt.ts
+++ b/integration/presets/nuxt.ts
@@ -1,5 +1,6 @@
import { applicationConfig } from '../models/applicationConfig';
import { templates } from '../templates';
+import { linkPackage } from './utils';
const nuxtNode = applicationConfig()
.setName('nuxt-node')
@@ -10,7 +11,7 @@ const nuxtNode = applicationConfig()
.addScript('dev', 'pnpm dev')
.addScript('build', 'pnpm build')
.addScript('serve', 'pnpm preview')
- .addDependency('@clerk/nuxt', '*');
+ .addDependency('@clerk/nuxt', linkPackage('nuxt'));
export const nuxt = {
node: nuxtNode,
diff --git a/integration/presets/react-router.ts b/integration/presets/react-router.ts
index 1ff0470482..5ddb035f1b 100644
--- a/integration/presets/react-router.ts
+++ b/integration/presets/react-router.ts
@@ -1,6 +1,7 @@
import { constants } from '../constants';
import { applicationConfig } from '../models/applicationConfig.js';
import { templates } from '../templates/index.js';
+import { linkPackage } from './utils';
const reactRouterNode = applicationConfig()
.setName('react-router-node')
@@ -10,7 +11,7 @@ const reactRouterNode = applicationConfig()
.addScript('dev', 'pnpm dev')
.addScript('build', 'pnpm build')
.addScript('serve', 'pnpm start')
- .addDependency('@clerk/react-router', constants.E2E_CLERK_VERSION || '*');
+ .addDependency('@clerk/react-router', constants.E2E_CLERK_VERSION || linkPackage('react-router'));
export const reactRouter = {
reactRouterNode,
diff --git a/integration/presets/react.ts b/integration/presets/react.ts
index 0dc674300f..06e1434282 100644
--- a/integration/presets/react.ts
+++ b/integration/presets/react.ts
@@ -1,6 +1,7 @@
import { constants } from '../constants';
import { applicationConfig } from '../models/applicationConfig';
import { templates } from '../templates';
+import { linkPackage } from './utils';
const cra = applicationConfig()
.setName('react-cra')
@@ -10,8 +11,8 @@ const cra = applicationConfig()
.addScript('dev', 'pnpm start')
.addScript('build', 'pnpm build')
.addScript('serve', 'pnpm start')
- .addDependency('@clerk/clerk-react', constants.E2E_CLERK_VERSION || '*')
- .addDependency('@clerk/themes', constants.E2E_CLERK_VERSION || '*');
+ .addDependency('@clerk/clerk-react', constants.E2E_CLERK_VERSION || linkPackage('react'))
+ .addDependency('@clerk/themes', constants.E2E_CLERK_VERSION || linkPackage('themes'));
const vite = cra
.clone()
diff --git a/integration/presets/remix.ts b/integration/presets/remix.ts
index 41decccff0..d8f6c619bf 100644
--- a/integration/presets/remix.ts
+++ b/integration/presets/remix.ts
@@ -1,6 +1,7 @@
import { constants } from '../constants';
import { applicationConfig } from '../models/applicationConfig.js';
import { templates } from '../templates/index.js';
+import { linkPackage } from './utils';
const remixNode = applicationConfig()
.setName('remix-node')
@@ -10,7 +11,7 @@ const remixNode = applicationConfig()
.addScript('dev', 'pnpm dev')
.addScript('build', 'pnpm build')
.addScript('serve', 'pnpm start')
- .addDependency('@clerk/remix', constants.E2E_CLERK_VERSION || '*');
+ .addDependency('@clerk/remix', constants.E2E_CLERK_VERSION || linkPackage('remix'));
export const remix = {
remixNode,
diff --git a/integration/presets/tanstack.ts b/integration/presets/tanstack.ts
index 5b9399abe5..03ddd8d190 100644
--- a/integration/presets/tanstack.ts
+++ b/integration/presets/tanstack.ts
@@ -1,5 +1,6 @@
import { applicationConfig } from '../models/applicationConfig.js';
import { templates } from '../templates/index.js';
+import { linkPackage } from './utils';
const router = applicationConfig()
.setName('tanstack-router')
@@ -9,7 +10,7 @@ const router = applicationConfig()
.addScript('dev', 'pnpm dev')
.addScript('build', 'pnpm build')
.addScript('serve', 'pnpm start')
- .addDependency('@clerk/tanstack-start', '*');
+ .addDependency('@clerk/tanstack-start', linkPackage('tanstack-start'));
const start = applicationConfig()
.setName('tanstack-start')
@@ -19,7 +20,7 @@ const start = applicationConfig()
.addScript('dev', 'pnpm dev')
.addScript('build', 'pnpm build')
.addScript('serve', 'pnpm start')
- .addDependency('@clerk/tanstack-start', '*');
+ .addDependency('@clerk/tanstack-start', linkPackage('tanstack-start'));
export const tanstack = {
start,
diff --git a/integration/presets/utils.ts b/integration/presets/utils.ts
new file mode 100644
index 0000000000..4c4f6db45d
--- /dev/null
+++ b/integration/presets/utils.ts
@@ -0,0 +1,8 @@
+import path from 'node:path';
+
+export function linkPackage(pkg: string) {
+ // eslint-disable-next-line turbo/no-undeclared-variables
+ if (process.env.CI === 'true') return '*';
+
+ return `link:${path.resolve(process.cwd(), `packages/${pkg}`)}`;
+}
diff --git a/integration/presets/vue.ts b/integration/presets/vue.ts
index 3d9cc9e280..1003af19f5 100644
--- a/integration/presets/vue.ts
+++ b/integration/presets/vue.ts
@@ -1,5 +1,6 @@
import { applicationConfig } from '../models/applicationConfig';
import { templates } from '../templates';
+import { linkPackage } from './utils';
const vite = applicationConfig()
.setName('vue-vite')
@@ -9,7 +10,7 @@ const vite = applicationConfig()
.addScript('dev', 'pnpm dev')
.addScript('build', 'pnpm build')
.addScript('serve', 'pnpm preview')
- .addDependency('@clerk/vue', '*');
+ .addDependency('@clerk/vue', linkPackage('vue'));
export const vue = {
vite,
From 4fecdac34dd0f820a2b4e123e4f49a0202074937 Mon Sep 17 00:00:00 2001
From: Lennart
Date: Thu, 19 Dec 2024 10:37:44 +0100
Subject: [PATCH 13/23] chore(react-router): Add library mode E2E test (#4808)
Co-authored-by: Jacek
---
integration/constants.ts | 4 -
integration/presets/index.ts | 2 -
integration/presets/longRunningApps.ts | 2 -
integration/presets/react-router.ts | 11 ++
integration/presets/remix.ts | 18 ---
integration/templates/index.ts | 2 +-
.../templates/react-router-library/README.md | 50 +++++++
.../templates/react-router-library/index.html | 23 ++++
.../react-router-library/package.json | 25 ++++
.../react-router-library/public/vite.svg | 1 +
.../react-router-library/src/App.css | 42 ++++++
.../react-router-library/src/App.tsx | 17 +++
.../react-router-library/src/assets/react.svg | 1 +
.../react-router-library/src/index.css | 68 ++++++++++
.../react-router-library/src/main.tsx | 23 ++++
.../react-router-library/src/vite-env.d.ts | 1 +
.../react-router-library/tsconfig.app.json | 26 ++++
.../react-router-library/tsconfig.json | 4 +
.../react-router-library/tsconfig.node.json | 24 ++++
.../react-router-library/vite.config.ts | 7 +
integration/templates/remix-node/.eslintrc.js | 4 -
integration/templates/remix-node/.gitignore | 11 --
integration/templates/remix-node/README.md | 40 ------
.../templates/remix-node/app/entry.client.tsx | 18 ---
.../templates/remix-node/app/entry.server.tsx | 125 ------------------
integration/templates/remix-node/app/root.tsx | 36 -----
.../remix-node/app/routes/_index.tsx | 16 ---
.../remix-node/app/routes/protected.tsx | 19 ---
.../remix-node/app/routes/sign-in.$.tsx | 14 --
.../remix-node/app/routes/sign-up.$.tsx | 14 --
integration/templates/remix-node/package.json | 33 -----
.../templates/remix-node/public/favicon.ico | Bin 16958 -> 0 bytes
.../templates/remix-node/remix.config.js | 21 ---
.../templates/remix-node/remix.env.d.ts | 2 -
integration/templates/remix-node/server.ts | 7 -
.../templates/remix-node/tsconfig.json | 22 ---
.../tests/react-router/library-mode.test.ts | 59 +++++++++
package.json | 2 +-
38 files changed, 384 insertions(+), 410 deletions(-)
delete mode 100644 integration/presets/remix.ts
create mode 100644 integration/templates/react-router-library/README.md
create mode 100644 integration/templates/react-router-library/index.html
create mode 100644 integration/templates/react-router-library/package.json
create mode 100644 integration/templates/react-router-library/public/vite.svg
create mode 100644 integration/templates/react-router-library/src/App.css
create mode 100644 integration/templates/react-router-library/src/App.tsx
create mode 100644 integration/templates/react-router-library/src/assets/react.svg
create mode 100644 integration/templates/react-router-library/src/index.css
create mode 100644 integration/templates/react-router-library/src/main.tsx
create mode 100644 integration/templates/react-router-library/src/vite-env.d.ts
create mode 100644 integration/templates/react-router-library/tsconfig.app.json
create mode 100644 integration/templates/react-router-library/tsconfig.json
create mode 100644 integration/templates/react-router-library/tsconfig.node.json
create mode 100644 integration/templates/react-router-library/vite.config.ts
delete mode 100644 integration/templates/remix-node/.eslintrc.js
delete mode 100644 integration/templates/remix-node/.gitignore
delete mode 100644 integration/templates/remix-node/README.md
delete mode 100644 integration/templates/remix-node/app/entry.client.tsx
delete mode 100644 integration/templates/remix-node/app/entry.server.tsx
delete mode 100644 integration/templates/remix-node/app/root.tsx
delete mode 100644 integration/templates/remix-node/app/routes/_index.tsx
delete mode 100644 integration/templates/remix-node/app/routes/protected.tsx
delete mode 100644 integration/templates/remix-node/app/routes/sign-in.$.tsx
delete mode 100644 integration/templates/remix-node/app/routes/sign-up.$.tsx
delete mode 100644 integration/templates/remix-node/package.json
delete mode 100644 integration/templates/remix-node/public/favicon.ico
delete mode 100644 integration/templates/remix-node/remix.config.js
delete mode 100644 integration/templates/remix-node/remix.env.d.ts
delete mode 100644 integration/templates/remix-node/server.ts
delete mode 100644 integration/templates/remix-node/tsconfig.json
create mode 100644 integration/tests/react-router/library-mode.test.ts
diff --git a/integration/constants.ts b/integration/constants.ts
index d4b681f3b5..2369077fe8 100644
--- a/integration/constants.ts
+++ b/integration/constants.ts
@@ -56,10 +56,6 @@ export const constants = {
* The version of the dependency to use, controlled programmatically.
*/
E2E_REACT_DOM_VERSION: process.env.E2E_REACT_DOM_VERSION,
- /**
- * The version of the dependency to use, controlled programmatically.
- */
- E2E_REMIX_VERSION: process.env.E2E_REMIX_VERSION,
/**
* The version of the dependency to use, controlled programmatically.
*/
diff --git a/integration/presets/index.ts b/integration/presets/index.ts
index 6f58b490f3..24fc2d58cd 100644
--- a/integration/presets/index.ts
+++ b/integration/presets/index.ts
@@ -8,7 +8,6 @@ import { next } from './next';
import { nuxt } from './nuxt';
import { react } from './react';
import { reactRouter } from './react-router';
-import { remix } from './remix';
import { tanstack } from './tanstack';
export const appConfigs = {
@@ -17,7 +16,6 @@ export const appConfigs = {
longRunningApps: createLongRunningApps(),
next,
react,
- remix,
elements,
expo,
astro,
diff --git a/integration/presets/longRunningApps.ts b/integration/presets/longRunningApps.ts
index 010251ab04..cd1f27cc19 100644
--- a/integration/presets/longRunningApps.ts
+++ b/integration/presets/longRunningApps.ts
@@ -9,7 +9,6 @@ import { next } from './next';
import { nuxt } from './nuxt';
import { react } from './react';
import { reactRouter } from './react-router';
-import { remix } from './remix';
import { tanstack } from './tanstack';
import { vue } from './vue';
@@ -24,7 +23,6 @@ export const createLongRunningApps = () => {
{ id: 'react.vite.withEmailCodes', config: react.vite, env: envs.withEmailCodes },
{ id: 'react.vite.withEmailCodes_persist_client', config: react.vite, env: envs.withEmailCodes_destroy_client },
{ id: 'react.vite.withEmailLinks', config: react.vite, env: envs.withEmailLinks },
- { id: 'remix.node.withEmailCodes', config: remix.remixNode, env: envs.withEmailCodes },
{ id: 'next.appRouter.withEmailCodes', config: next.appRouter, env: envs.withEmailCodes },
{
id: 'next.appRouter.withEmailCodes_persist_client',
diff --git a/integration/presets/react-router.ts b/integration/presets/react-router.ts
index 5ddb035f1b..4b43c7083b 100644
--- a/integration/presets/react-router.ts
+++ b/integration/presets/react-router.ts
@@ -13,6 +13,17 @@ const reactRouterNode = applicationConfig()
.addScript('serve', 'pnpm start')
.addDependency('@clerk/react-router', constants.E2E_CLERK_VERSION || linkPackage('react-router'));
+const reactRouterLibrary = applicationConfig()
+ .setName('react-router-library')
+ .useTemplate(templates['react-router-library'])
+ .setEnvFormatter('public', key => `VITE_${key}`)
+ .addScript('setup', 'pnpm install')
+ .addScript('dev', 'pnpm dev')
+ .addScript('build', 'pnpm build')
+ .addScript('serve', 'pnpm preview')
+ .addDependency('@clerk/react-router', constants.E2E_CLERK_VERSION || linkPackage('react-router'));
+
export const reactRouter = {
reactRouterNode,
+ reactRouterLibrary,
} as const;
diff --git a/integration/presets/remix.ts b/integration/presets/remix.ts
deleted file mode 100644
index d8f6c619bf..0000000000
--- a/integration/presets/remix.ts
+++ /dev/null
@@ -1,18 +0,0 @@
-import { constants } from '../constants';
-import { applicationConfig } from '../models/applicationConfig.js';
-import { templates } from '../templates/index.js';
-import { linkPackage } from './utils';
-
-const remixNode = applicationConfig()
- .setName('remix-node')
- .useTemplate(templates['remix-node'])
- .setEnvFormatter('public', key => `${key}`)
- .addScript('setup', 'pnpm install')
- .addScript('dev', 'pnpm dev')
- .addScript('build', 'pnpm build')
- .addScript('serve', 'pnpm start')
- .addDependency('@clerk/remix', constants.E2E_CLERK_VERSION || linkPackage('remix'));
-
-export const remix = {
- remixNode,
-} as const;
diff --git a/integration/templates/index.ts b/integration/templates/index.ts
index 4d745d1db5..26c115fe1b 100644
--- a/integration/templates/index.ts
+++ b/integration/templates/index.ts
@@ -9,7 +9,6 @@ export const templates = {
'react-cra': resolve(__dirname, './react-cra'),
'react-vite': resolve(__dirname, './react-vite'),
'express-vite': resolve(__dirname, './express-vite'),
- 'remix-node': resolve(__dirname, './remix-node'),
'elements-next': resolve(__dirname, './elements-next'),
'astro-node': resolve(__dirname, './astro-node'),
'astro-hybrid': resolve(__dirname, './astro-hybrid'),
@@ -19,6 +18,7 @@ export const templates = {
'vue-vite': resolve(__dirname, './vue-vite'),
'nuxt-node': resolve(__dirname, './nuxt-node'),
'react-router-node': resolve(__dirname, './react-router-node'),
+ 'react-router-library': resolve(__dirname, './react-router-library'),
} as const;
if (new Set([...Object.values(templates)]).size !== Object.values(templates).length) {
diff --git a/integration/templates/react-router-library/README.md b/integration/templates/react-router-library/README.md
new file mode 100644
index 0000000000..1e5a46b4e1
--- /dev/null
+++ b/integration/templates/react-router-library/README.md
@@ -0,0 +1,50 @@
+# React + TypeScript + Vite
+
+This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules.
+
+Currently, two official plugins are available:
+
+- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react/README.md) uses [Babel](https://babeljs.io/) for Fast Refresh
+- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh
+
+## Expanding the ESLint configuration
+
+If you are developing a production application, we recommend updating the configuration to enable type aware lint rules:
+
+- Configure the top-level `parserOptions` property like this:
+
+```js
+export default tseslint.config({
+ languageOptions: {
+ // other options...
+ parserOptions: {
+ project: ['./tsconfig.node.json', './tsconfig.app.json'],
+ tsconfigRootDir: import.meta.dirname,
+ },
+ },
+});
+```
+
+- Replace `tseslint.configs.recommended` to `tseslint.configs.recommendedTypeChecked` or `tseslint.configs.strictTypeChecked`
+- Optionally add `...tseslint.configs.stylisticTypeChecked`
+- Install [eslint-plugin-react](https://github.com/jsx-eslint/eslint-plugin-react) and update the config:
+
+```js
+// eslint.config.js
+import react from 'eslint-plugin-react';
+
+export default tseslint.config({
+ // Set the react version
+ settings: { react: { version: '18.3' } },
+ plugins: {
+ // Add the react plugin
+ react,
+ },
+ rules: {
+ // other rules...
+ // Enable its recommended rules
+ ...react.configs.recommended.rules,
+ ...react.configs['jsx-runtime'].rules,
+ },
+});
+```
diff --git a/integration/templates/react-router-library/index.html b/integration/templates/react-router-library/index.html
new file mode 100644
index 0000000000..e4c1f3de22
--- /dev/null
+++ b/integration/templates/react-router-library/index.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+ Vite + React + TS
+
+
+
+
+
+
diff --git a/integration/templates/react-router-library/package.json b/integration/templates/react-router-library/package.json
new file mode 100644
index 0000000000..28970a47e3
--- /dev/null
+++ b/integration/templates/react-router-library/package.json
@@ -0,0 +1,25 @@
+{
+ "name": "react-router-library",
+ "version": "0.0.0",
+ "private": true,
+ "type": "module",
+ "scripts": {
+ "build": "tsc -b && vite build",
+ "dev": "vite --port $PORT",
+ "preview": "vite preview --port $PORT"
+ },
+ "dependencies": {
+ "@clerk/react-router": "^0.1.2",
+ "react": "^18.3.1",
+ "react-dom": "^18.3.1",
+ "react-router": "^7.0.2"
+ },
+ "devDependencies": {
+ "@types/react": "^18.3.12",
+ "@types/react-dom": "^18.3.1",
+ "@vitejs/plugin-react": "^4.3.4",
+ "globals": "^15.12.0",
+ "typescript": "~5.6.2",
+ "vite": "^6.0.1"
+ }
+}
diff --git a/integration/templates/react-router-library/public/vite.svg b/integration/templates/react-router-library/public/vite.svg
new file mode 100644
index 0000000000..e7b8dfb1b2
--- /dev/null
+++ b/integration/templates/react-router-library/public/vite.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/integration/templates/react-router-library/src/App.css b/integration/templates/react-router-library/src/App.css
new file mode 100644
index 0000000000..b9d355df2a
--- /dev/null
+++ b/integration/templates/react-router-library/src/App.css
@@ -0,0 +1,42 @@
+#root {
+ max-width: 1280px;
+ margin: 0 auto;
+ padding: 2rem;
+ text-align: center;
+}
+
+.logo {
+ height: 6em;
+ padding: 1.5em;
+ will-change: filter;
+ transition: filter 300ms;
+}
+.logo:hover {
+ filter: drop-shadow(0 0 2em #646cffaa);
+}
+.logo.react:hover {
+ filter: drop-shadow(0 0 2em #61dafbaa);
+}
+
+@keyframes logo-spin {
+ from {
+ transform: rotate(0deg);
+ }
+ to {
+ transform: rotate(360deg);
+ }
+}
+
+@media (prefers-reduced-motion: no-preference) {
+ a:nth-of-type(2) .logo {
+ animation: logo-spin infinite 20s linear;
+ }
+}
+
+.card {
+ padding: 2em;
+}
+
+.read-the-docs {
+ color: #888;
+}
diff --git a/integration/templates/react-router-library/src/App.tsx b/integration/templates/react-router-library/src/App.tsx
new file mode 100644
index 0000000000..93dfdf0438
--- /dev/null
+++ b/integration/templates/react-router-library/src/App.tsx
@@ -0,0 +1,17 @@
+import { SignInButton, SignedIn, SignedOut, UserButton } from '@clerk/react-router';
+import './App.css';
+
+function App() {
+ return (
+
+ );
+}
+
+export default App;
diff --git a/integration/templates/react-router-library/src/assets/react.svg b/integration/templates/react-router-library/src/assets/react.svg
new file mode 100644
index 0000000000..6c87de9bb3
--- /dev/null
+++ b/integration/templates/react-router-library/src/assets/react.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/integration/templates/react-router-library/src/index.css b/integration/templates/react-router-library/src/index.css
new file mode 100644
index 0000000000..6119ad9a8f
--- /dev/null
+++ b/integration/templates/react-router-library/src/index.css
@@ -0,0 +1,68 @@
+:root {
+ font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif;
+ line-height: 1.5;
+ font-weight: 400;
+
+ color-scheme: light dark;
+ color: rgba(255, 255, 255, 0.87);
+ background-color: #242424;
+
+ font-synthesis: none;
+ text-rendering: optimizeLegibility;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+
+a {
+ font-weight: 500;
+ color: #646cff;
+ text-decoration: inherit;
+}
+a:hover {
+ color: #535bf2;
+}
+
+body {
+ margin: 0;
+ display: flex;
+ place-items: center;
+ min-width: 320px;
+ min-height: 100vh;
+}
+
+h1 {
+ font-size: 3.2em;
+ line-height: 1.1;
+}
+
+button {
+ border-radius: 8px;
+ border: 1px solid transparent;
+ padding: 0.6em 1.2em;
+ font-size: 1em;
+ font-weight: 500;
+ font-family: inherit;
+ background-color: #1a1a1a;
+ cursor: pointer;
+ transition: border-color 0.25s;
+}
+button:hover {
+ border-color: #646cff;
+}
+button:focus,
+button:focus-visible {
+ outline: 4px auto -webkit-focus-ring-color;
+}
+
+@media (prefers-color-scheme: light) {
+ :root {
+ color: #213547;
+ background-color: #ffffff;
+ }
+ a:hover {
+ color: #747bff;
+ }
+ button {
+ background-color: #f9f9f9;
+ }
+}
diff --git a/integration/templates/react-router-library/src/main.tsx b/integration/templates/react-router-library/src/main.tsx
new file mode 100644
index 0000000000..46ab36679f
--- /dev/null
+++ b/integration/templates/react-router-library/src/main.tsx
@@ -0,0 +1,23 @@
+import { StrictMode } from 'react';
+import { createRoot } from 'react-dom/client';
+import { BrowserRouter, Routes, Route } from 'react-router';
+import { ClerkProvider } from '@clerk/react-router';
+import './index.css';
+import App from './App.tsx';
+
+const PUBLISHABLE_KEY = import.meta.env.VITE_CLERK_PUBLISHABLE_KEY;
+
+createRoot(document.getElementById('root')!).render(
+
+
+
+
+ }
+ />
+
+
+
+ ,
+);
diff --git a/integration/templates/react-router-library/src/vite-env.d.ts b/integration/templates/react-router-library/src/vite-env.d.ts
new file mode 100644
index 0000000000..11f02fe2a0
--- /dev/null
+++ b/integration/templates/react-router-library/src/vite-env.d.ts
@@ -0,0 +1 @@
+///
diff --git a/integration/templates/react-router-library/tsconfig.app.json b/integration/templates/react-router-library/tsconfig.app.json
new file mode 100644
index 0000000000..358ca9ba93
--- /dev/null
+++ b/integration/templates/react-router-library/tsconfig.app.json
@@ -0,0 +1,26 @@
+{
+ "compilerOptions": {
+ "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo",
+ "target": "ES2020",
+ "useDefineForClassFields": true,
+ "lib": ["ES2020", "DOM", "DOM.Iterable"],
+ "module": "ESNext",
+ "skipLibCheck": true,
+
+ /* Bundler mode */
+ "moduleResolution": "bundler",
+ "allowImportingTsExtensions": true,
+ "isolatedModules": true,
+ "moduleDetection": "force",
+ "noEmit": true,
+ "jsx": "react-jsx",
+
+ /* Linting */
+ "strict": true,
+ "noUnusedLocals": true,
+ "noUnusedParameters": true,
+ "noFallthroughCasesInSwitch": true,
+ "noUncheckedSideEffectImports": true
+ },
+ "include": ["src"]
+}
diff --git a/integration/templates/react-router-library/tsconfig.json b/integration/templates/react-router-library/tsconfig.json
new file mode 100644
index 0000000000..d32ff68200
--- /dev/null
+++ b/integration/templates/react-router-library/tsconfig.json
@@ -0,0 +1,4 @@
+{
+ "files": [],
+ "references": [{ "path": "./tsconfig.app.json" }, { "path": "./tsconfig.node.json" }]
+}
diff --git a/integration/templates/react-router-library/tsconfig.node.json b/integration/templates/react-router-library/tsconfig.node.json
new file mode 100644
index 0000000000..db0becc8b0
--- /dev/null
+++ b/integration/templates/react-router-library/tsconfig.node.json
@@ -0,0 +1,24 @@
+{
+ "compilerOptions": {
+ "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo",
+ "target": "ES2022",
+ "lib": ["ES2023"],
+ "module": "ESNext",
+ "skipLibCheck": true,
+
+ /* Bundler mode */
+ "moduleResolution": "bundler",
+ "allowImportingTsExtensions": true,
+ "isolatedModules": true,
+ "moduleDetection": "force",
+ "noEmit": true,
+
+ /* Linting */
+ "strict": true,
+ "noUnusedLocals": true,
+ "noUnusedParameters": true,
+ "noFallthroughCasesInSwitch": true,
+ "noUncheckedSideEffectImports": true
+ },
+ "include": ["vite.config.ts"]
+}
diff --git a/integration/templates/react-router-library/vite.config.ts b/integration/templates/react-router-library/vite.config.ts
new file mode 100644
index 0000000000..4a5def4c3d
--- /dev/null
+++ b/integration/templates/react-router-library/vite.config.ts
@@ -0,0 +1,7 @@
+import { defineConfig } from 'vite';
+import react from '@vitejs/plugin-react';
+
+// https://vite.dev/config/
+export default defineConfig({
+ plugins: [react()],
+});
diff --git a/integration/templates/remix-node/.eslintrc.js b/integration/templates/remix-node/.eslintrc.js
deleted file mode 100644
index f2faf1470f..0000000000
--- a/integration/templates/remix-node/.eslintrc.js
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('eslint').Linter.Config} */
-module.exports = {
- extends: ['@remix-run/eslint-config', '@remix-run/eslint-config/node'],
-};
diff --git a/integration/templates/remix-node/.gitignore b/integration/templates/remix-node/.gitignore
deleted file mode 100644
index 5d6a175132..0000000000
--- a/integration/templates/remix-node/.gitignore
+++ /dev/null
@@ -1,11 +0,0 @@
-node_modules
-
-.cache
-.env
-.vercel
-.output
-
-/build/
-/public/build
-/api/index.js
-/api/index.js.map
diff --git a/integration/templates/remix-node/README.md b/integration/templates/remix-node/README.md
deleted file mode 100644
index dc88d77a15..0000000000
--- a/integration/templates/remix-node/README.md
+++ /dev/null
@@ -1,40 +0,0 @@
-> **Warning**
-> The `@remix-run/vercel` runtime adapter has been deprecated in favor of out of
-> the box Vercel functionality and will be removed in Remix v2.
-> This means you don't have to use the Vercel template & can just use the Remix
-> template instead.
-
-# Welcome to Remix!
-
-- [Remix Docs](https://remix.run/docs)
-
-## Deployment
-
-After having run the `create-remix` command and selected "Vercel" as a deployment target, you only need to [import your Git repository](https://vercel.com/new) into Vercel, and it will be deployed.
-
-If you'd like to avoid using a Git repository, you can also deploy the directory by running [Vercel CLI](https://vercel.com/cli):
-
-```sh
-npm i -g vercel
-vercel
-```
-
-It is generally recommended to use a Git repository, because future commits will then automatically be deployed by Vercel, through its [Git Integration](https://vercel.com/docs/concepts/git).
-
-## Development
-
-To run your Remix app locally, make sure your project's local dependencies are installed:
-
-```sh
-npm install
-```
-
-Afterwards, start the Remix development server like so:
-
-```sh
-pnpm dev
-```
-
-Open up [http://localhost:3000](http://localhost:3000) and you should be ready to go!
-
-If you're used to using the `vercel dev` command provided by [Vercel CLI](https://vercel.com/cli) instead, you can also use that, but it's not needed.
diff --git a/integration/templates/remix-node/app/entry.client.tsx b/integration/templates/remix-node/app/entry.client.tsx
deleted file mode 100644
index 3f01ce18b1..0000000000
--- a/integration/templates/remix-node/app/entry.client.tsx
+++ /dev/null
@@ -1,18 +0,0 @@
-/**
- * By default, Remix will handle hydrating your app on the client for you.
- * You are free to delete this file if you'd like to, but if you ever want it revealed again, you can run `npx remix reveal` ✨
- * For more information, see https://remix.run/file-conventions/entry.client
- */
-
-import { RemixBrowser } from '@remix-run/react';
-import { startTransition, StrictMode } from 'react';
-import { hydrateRoot } from 'react-dom/client';
-
-startTransition(() => {
- hydrateRoot(
- document,
-
-
- ,
- );
-});
diff --git a/integration/templates/remix-node/app/entry.server.tsx b/integration/templates/remix-node/app/entry.server.tsx
deleted file mode 100644
index 0791aea535..0000000000
--- a/integration/templates/remix-node/app/entry.server.tsx
+++ /dev/null
@@ -1,125 +0,0 @@
-/**
- * By default, Remix will handle generating the HTTP Response for you.
- * You are free to delete this file if you'd like to, but if you ever want it revealed again, you can run `npx remix reveal` ✨
- * For more information, see https://remix.run/file-conventions/entry.server
- */
-
-import { PassThrough } from 'node:stream';
-
-import type { AppLoadContext, EntryContext } from '@remix-run/node';
-import { Response } from '@remix-run/node';
-import { RemixServer } from '@remix-run/react';
-import isbot from 'isbot';
-import { renderToPipeableStream } from 'react-dom/server';
-
-const ABORT_DELAY = 5_000;
-
-export default function handleRequest(
- request: Request,
- responseStatusCode: number,
- responseHeaders: Headers,
- remixContext: EntryContext,
- loadContext: AppLoadContext,
-) {
- return isbot(request.headers.get('user-agent'))
- ? handleBotRequest(request, responseStatusCode, responseHeaders, remixContext)
- : handleBrowserRequest(request, responseStatusCode, responseHeaders, remixContext);
-}
-
-function handleBotRequest(
- request: Request,
- responseStatusCode: number,
- responseHeaders: Headers,
- remixContext: EntryContext,
-) {
- return new Promise((resolve, reject) => {
- let shellRendered = false;
- const { pipe, abort } = renderToPipeableStream(
- ,
- {
- onAllReady() {
- shellRendered = true;
- const body = new PassThrough();
-
- responseHeaders.set('Content-Type', 'text/html');
-
- resolve(
- new Response(body, {
- headers: responseHeaders,
- status: responseStatusCode,
- }),
- );
-
- pipe(body);
- },
- onShellError(error: unknown) {
- reject(error);
- },
- onError(error: unknown) {
- responseStatusCode = 500;
- // Log streaming rendering errors from inside the shell. Don't log
- // errors encountered during initial shell rendering since they'll
- // reject and get logged in handleDocumentRequest.
- if (shellRendered) {
- console.error(error);
- }
- },
- },
- );
-
- setTimeout(abort, ABORT_DELAY);
- });
-}
-
-function handleBrowserRequest(
- request: Request,
- responseStatusCode: number,
- responseHeaders: Headers,
- remixContext: EntryContext,
-) {
- return new Promise((resolve, reject) => {
- let shellRendered = false;
- const { pipe, abort } = renderToPipeableStream(
- ,
- {
- onShellReady() {
- shellRendered = true;
- const body = new PassThrough();
-
- responseHeaders.set('Content-Type', 'text/html');
-
- resolve(
- new Response(body, {
- headers: responseHeaders,
- status: responseStatusCode,
- }),
- );
-
- pipe(body);
- },
- onShellError(error: unknown) {
- reject(error);
- },
- onError(error: unknown) {
- responseStatusCode = 500;
- // Log streaming rendering errors from inside the shell. Don't log
- // errors encountered during initial shell rendering since they'll
- // reject and get logged in handleDocumentRequest.
- if (shellRendered) {
- console.error(error);
- }
- },
- },
- );
-
- setTimeout(abort, ABORT_DELAY);
- });
-}
diff --git a/integration/templates/remix-node/app/root.tsx b/integration/templates/remix-node/app/root.tsx
deleted file mode 100644
index 4546c7334b..0000000000
--- a/integration/templates/remix-node/app/root.tsx
+++ /dev/null
@@ -1,36 +0,0 @@
-import { cssBundleHref } from '@remix-run/css-bundle';
-import type { LinksFunction } from '@remix-run/node';
-import { LoaderFunction } from '@remix-run/node';
-import { Links, LiveReload, Meta, Outlet, Scripts, ScrollRestoration } from '@remix-run/react';
-import { rootAuthLoader } from '@clerk/remix/ssr.server';
-import { ClerkApp, ClerkCatchBoundary } from '@clerk/remix';
-
-export const loader: LoaderFunction = args => rootAuthLoader(args);
-
-export const links: LinksFunction = () => [...(cssBundleHref ? [{ rel: 'stylesheet', href: cssBundleHref }] : [])];
-
-function App() {
- return (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- );
-}
-
-// TODO: Add clerkJsUrl
-export default ClerkApp(App);
-export const CatchBoundary = ClerkCatchBoundary();
diff --git a/integration/templates/remix-node/app/routes/_index.tsx b/integration/templates/remix-node/app/routes/_index.tsx
deleted file mode 100644
index 2b40fdbdfa..0000000000
--- a/integration/templates/remix-node/app/routes/_index.tsx
+++ /dev/null
@@ -1,16 +0,0 @@
-import type { V2_MetaFunction } from '@remix-run/node';
-import { SignedIn, SignedOut, UserButton } from '@clerk/remix';
-
-export const meta: V2_MetaFunction = () => {
- return [{ title: 'New Remix App' }, { name: 'description', content: 'Welcome to Remix!' }];
-};
-
-export default function Index() {
- return (
-
-
- SignedIn
- SignedOut
-
- );
-}
diff --git a/integration/templates/remix-node/app/routes/protected.tsx b/integration/templates/remix-node/app/routes/protected.tsx
deleted file mode 100644
index 2ec4e18cab..0000000000
--- a/integration/templates/remix-node/app/routes/protected.tsx
+++ /dev/null
@@ -1,19 +0,0 @@
-import { getAuth } from '@clerk/remix/ssr.server';
-import type { LoaderFunction } from '@remix-run/node';
-import { redirect } from '@remix-run/node';
-
-export const loader: LoaderFunction = async args => {
- const { userId } = await getAuth(args);
- if (!userId) {
- return redirect('/sign-in');
- }
- return {};
-};
-
-export default function Protected() {
- return (
-
-
Protected
-
- );
-}
diff --git a/integration/templates/remix-node/app/routes/sign-in.$.tsx b/integration/templates/remix-node/app/routes/sign-in.$.tsx
deleted file mode 100644
index 62f80b0b75..0000000000
--- a/integration/templates/remix-node/app/routes/sign-in.$.tsx
+++ /dev/null
@@ -1,14 +0,0 @@
-import { SignIn } from '@clerk/remix';
-
-export default function SignInPage() {
- return (
-
-
Sign In route
-
-
- );
-}
diff --git a/integration/templates/remix-node/app/routes/sign-up.$.tsx b/integration/templates/remix-node/app/routes/sign-up.$.tsx
deleted file mode 100644
index 1476b9f900..0000000000
--- a/integration/templates/remix-node/app/routes/sign-up.$.tsx
+++ /dev/null
@@ -1,14 +0,0 @@
-import { SignUp } from '@clerk/remix';
-
-export default function SignUpPage() {
- return (
-
-
Sign Up route
-
-
- );
-}
diff --git a/integration/templates/remix-node/package.json b/integration/templates/remix-node/package.json
deleted file mode 100644
index ffe14860e2..0000000000
--- a/integration/templates/remix-node/package.json
+++ /dev/null
@@ -1,33 +0,0 @@
-{
- "private": true,
- "sideEffects": false,
- "scripts": {
- "build": "remix build",
- "dev": "remix dev",
- "typecheck": "tsc"
- },
- "dependencies": {
- "@clerk/remix": "staging",
- "@remix-run/css-bundle": "^1.18.1",
- "@remix-run/node": "^1.18.1",
- "@remix-run/react": "^1.18.1",
- "@remix-run/vercel": "^1.18.1",
- "@vercel/node": "^2.10.3",
- "isbot": "^3.6.8",
- "react": "^18.3.1",
- "react-dom": "^18.3.1"
- },
- "devDependencies": {
- "@remix-run/dev": "^1.19.3",
- "@remix-run/eslint-config": "^1.18.1",
- "@remix-run/serve": "^1.18.1",
- "@types/node": "^18.19.33",
- "@types/react": "18.3.12",
- "@types/react-dom": "18.3.1",
- "eslint": "^8.38.0",
- "typescript": "^5.6.3"
- },
- "engines": {
- "node": ">=18.17.0"
- }
-}
diff --git a/integration/templates/remix-node/public/favicon.ico b/integration/templates/remix-node/public/favicon.ico
deleted file mode 100644
index 8830cf6821b354114848e6354889b8ecf6d2bc61..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 16958
zcmeI3+jCXb9mnJN2h^uNlXH@jlam{_a8F3W{T}Wih>9YJpaf7TUbu)A5fv|h7OMfR
zR;q$lr&D!wv|c)`wcw1?>4QT1(&|jdsrI2h`Rn)dTW5t$8pz=s3_5L?#oBxAowe8R
z_WfPfN?F+@`q$D@rvC?(W!uWieppskmQ~YG*>*L?{img@tWpnYXZslxeh#TSUS3{q
z1Ju6JcfQSbQuORq69@YK(X-3c9vC2c2a2z~zw=F=50@pm0PUiCAm!bAT?2jpM`(^b
zC|2&Ngngt^<>oCv#?P(AZ`5_84x#QBPulix)TpkIAUp=(KgGo4CVS~Sxt
zVoR4>r5g9%bDh7hi0|v$={zr>CHd`?-l4^Ld(Z9PNz9piFY+llUw_x4ou7Vf-q%$g
z)&)J4>6Ft~RZ(uV>dJD|`nxI1^x{X@Z5S<=vf;V3w_(*O-7}W<=e$=}CB9_R;)m9)d7`d_xx+nl^Bg|%ew=?uoKO8w
zeQU7h;~8s!@9-k>7Cx}1SDQ7m(&miH
zs8!l*wOJ!GHbdh)pD--&W3+w`9YJ=;m^FtMY=`mTq8pyV!-@L6smwp3(q?G>=_4v^
zn(ikLue7!y70#2uhqUVpb7fp!=xu2{aM^1P^pts#+feZv8d~)2sf`sjXLQCEj;pdI
z%~f`JOO;*KnziMv^i_6+?mL?^wrE_&=IT9o1i!}Sd4Sx4O@w~1bi1)8^1W_hyQJ
z^TuRsvF7h=(){B?>(sXvYR-1?7~Zr<=SJ1Cw!i~yfi=4h6o3O~(-Sb2Ilwq%g$+V`
z>(C&N1!FV5rWF&iwt8~b)=jIn4b!XbrWrZgIHTISrdHcpjjx=TwJXI7_%Ks4oFLl9
zNT;!%!P4~xH85njXdfqgnIxIFOOKW`W$fxU%{{5wZkVF^G=JB$oUNU5dQSL&ZnR1s
z*ckJ$R`eCUJsWL>j6*+|2S1TL_J|Fl&kt=~XZF=+=iT0Xq1*KU-NuH%NAQff$LJp3
zU_*a;@7I0K{mqwux87~vwsp<}@P>KNDb}3U+6$rcZ114|QTMUSk+rhPA(b{$>pQTc
zIQri{+U>GMzsCy0Mo4BfWXJlkk;RhfpWpAB{=Rtr*d1MNC+H3Oi5+3D$gUI&AjV-1
z=0ZOox+bGyHe=yk-yu%=+{~&46C$ut^ZN+ysx$NH}*F43)3bKkMsxGyIl#>7Yb8W
zO{}&LUO8Ow{7>!bvSq?X{15&Y|4}0w2=o_^0ZzYgB+4HhZ4>s*mW&?RQ6&AY|CPcx
z$*LjftNS|H)ePYnIKNg{ck*|y7EJ&Co0ho0K`!{ENPkASeKy-JWE}dF_%}j)Z5a&q
zXAI2gPu6`s-@baW=*+keiE$ALIs5G6_X_6kgKK8n3jH2-H9`6bo)Qn1
zZ2x)xPt1=`9V|bE4*;j9$X20+xQCc$rEK|9OwH-O+Q*k`ZNw}K##SkY
z3u}aCV%V|j@!gL5(*5fuWo>JFjeU9Qqk`$bdwH8(qZovE2tA7WUpoCE=VKm^eZ|vZ
z(k<+j*mGJVah>8CkAsMD6#I$RtF;#57Wi`c_^k5?+KCmX$;Ky2*6|Q^bJ8+s%2MB}OH-g$Ev^
zO3uqfGjuN%CZiu<`aCuKCh{kK!dDZ+CcwgIeU2dsDfz+V>V3BDb~)~
zO!2l!_)m;ZepR~sL+-~sHS7;5ZB|~uUM&&5vDda2b
z)CW8S6GI*oF><|ZeY5D^+Mcsri)!tmrM33qvwI4r9o@(GlW!u2R>>sB|E#%W`c*@5
z|0iA|`{6aA7D4Q?vc1{vT-#yytn07`H!QIO^1+X7?zG3%y0gPdIPUJ#s*DNAwd}m1_IMN1^T&be~+E
z_z%1W^9~dl|Me9U6+3oNyuMDkF*z_;dOG(Baa*yq;TRiw{EO~O_S6>e*L(+Cdu(TM
z@o%xTCV%hi&p)x3_inIF!b|W4|AF5p?y1j)cr9RG@v%QVaN8&LaorC-kJz_ExfVHB
za!mtuee#Vb?dh&bwrfGHYAiX&&|v$}U*UBM;#F!N=x>x|G5s0zOa9{(`=k4v^6iK3
z8d&=O@xhDs{;v7JQ%eO;!Bt`&*MH&d
zp^K#dkq;jnJz%%bsqwlaKA5?fy
zS5JDbO#BgSAdi8NM
zDo2SifX6^Z;vn>cBh-?~r_n9qYvP|3ihrnqq6deS-#>l#dV4mX|G%L8|EL;$U+w69
z;rTK3FW$ewUfH|R-Z;3;jvpfiDm?Fvyu9PeR>wi|E8>&j2Z@2h`U}|$>2d`BPV3pz#ViIzH8v6pP^L-p!GbLv<;(p>}_6u&E6XO5-
zJ8JEvJ1)0>{iSd|kOQn#?0rTYL=KSmgMHCf$Qbm;7|8d(goD&T-~oCDuZf57iP#_Y
zmxaoOSjQsm*^u+m$L9AMqwi=6bpdiAY6k3akjGN{xOZ`_J<~Puyzpi7yhhKrLmXV;
z@ftONPy;Uw1F#{_fyGbk04yLE01v=i_5`RqQP+SUH0nb=O?l!J)qCSTdsbmjFJrTm
zx4^ef@qt{B+TV_OHOhtR?XT}1Etm(f21;#qyyW6FpnM+S7*M1iME?9fe8d-`Q#InN
z?^y{C_|8bxgUE@!o+Z72C)BrS&5D`gb-X8kq*1G7Uld-z19V}HY~mK#!o9MC-*#^+
znEsdc-|jj0+%cgBMy(cEkq4IQ1D*b;17Lyp>Utnsz%LRTfjQKL*vo(yJxwtw^)l|!
z7jhIDdtLB}mpkOIG&4@F+9cYkS5r%%jz}I0R#F4oBMf-|Jmmk*
zk^OEzF%}%5{a~kGYbFjV1n>HKC+a`;&-n*v_kD2DPP~n5(QE3C;30L<32GB*qV2z$
zWR1Kh=^1-q)P37WS6YWKlUSDe=eD^u_CV+P)q!3^{=$#b^auGS7m8zFfFS<>(e~)TG
z&uwWhSoetoe!1^%)O}=6{SUcw-UQmw+i8lokRASPsbT=H|4D|(
zk^P7>TUEFho!3qXSWn$m2{lHXw
zD>eN6-;wwq9(?@f^F4L2Ny5_6!d~iiA^s~(|B*lbZir-$&%)l>%Q(36yOIAu|326K
ztmBWz|MLA{Kj(H_{w2gd*nZ6a@ma(w==~EHIscEk|C=NGJa%Ruh4_+~f|%rt{I5v*
zIX@F?|KJID56-ivb+PLo(9hn_CdK{irOcL15>JNQFY112^$+}JPyI{uQ~$&E*=ri;
z`d^fH?4f=8vKHT4!p9O*fX(brB75Y9?e>T9=X#Fc@V#%@5^)~#zu5I(=>LQA-EGTS
zecy*#6gG+8lapch#Hh%vl(+}J;Q!hC1OKoo;#h3#V%5Js)tQ)|>pTT@1ojd+F9Gey
zg`B)zm`|Mo%tH31s4=<+`Pu|B3orXwNyIcNN>;fBkIj^X8P}RXhF=
zXQK1u5RLN7k#_Q(KznJrALtMM13!vhfr025ar?@-%{l|uWt@NEd<$~n>RQL{
z+o;->n)+~0tt(u|o_9h!T`%M8%)w2awpV9b*xz9Pl-daUJm3y-HT%xg`^mFd6LBeL
z!0~s;zEr)Bn9x)I(wx`;JVwvRcc^io2XX(Nn3vr3dgbrr@YJ?K3w18P*52^ieBCQP
z=Up1V$N2~5ppJHRTeY8QfM(7Yv&RG7oWJAyv?c3g(29)P)u;_o&w|&)HGDIinXT~p
z3;S|e$=&Tek9Wn!`cdY+d-w@o`37}x{(hl>ykB|%9yB$CGdIcl7Z?d&lJ%}QHck77
zJPR%C+s2w1_Dl_pxu6$Zi!`HmoD-%7OD@7%lKLL^Ixd9VlRSW*o&$^iQ2z+}hTgH)
z#91TO#+jH<`w4L}XWOt(`gqM*uTUcky`O(mEyU|4dJoy6*UZJ7%*}ajuos%~>&P2j
zk23f5<@GeV?(?`l=ih+D8t`d72xrUjv0wsg;%s1@*2p?TQ;n2$pV7h?_T%sL>iL@w
zZ{lmc<|B7!e&o!zs6RW+u8+aDyUdG>ZS(v&rT$QVymB7sEC@VsK1dg^3F@K90-wYB
zX!we79q(Wh~izEdPF0&->x`(6LA>F$~{{xE8-3Wzyfe`+Lsce(?uj{k@lb97YTJt#>l*Z&LyKX@zjmu?UJC9w~;|NsB{%7G}y*uNDBxirfC
EKbET!0{{R3
diff --git a/integration/templates/remix-node/remix.config.js b/integration/templates/remix-node/remix.config.js
deleted file mode 100644
index a67401bcd1..0000000000
--- a/integration/templates/remix-node/remix.config.js
+++ /dev/null
@@ -1,21 +0,0 @@
-/** @type {import('@remix-run/dev').AppConfig} */
-module.exports = {
- ignoredRouteFiles: ['**/.*'],
- // When running locally in development mode, we use the built-in remix
- // server. This does not understand the vercel lambda module format,
- // so we default back to the standard build output.
- server: process.env.NODE_ENV === 'development' ? undefined : './server.ts',
- serverBuildPath: 'api/index.js',
- // appDirectory: "app",
- // assetsBuildDirectory: "public/build",
- // publicPath: "/build/",
- serverModuleFormat: 'cjs',
- future: {
- v2_dev: false,
- v2_errorBoundary: false,
- v2_headers: true,
- v2_meta: true,
- v2_normalizeFormMethod: true,
- v2_routeConvention: true,
- },
-};
diff --git a/integration/templates/remix-node/remix.env.d.ts b/integration/templates/remix-node/remix.env.d.ts
deleted file mode 100644
index dcf8c45e1d..0000000000
--- a/integration/templates/remix-node/remix.env.d.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-///
-///
diff --git a/integration/templates/remix-node/server.ts b/integration/templates/remix-node/server.ts
deleted file mode 100644
index 687d7293bc..0000000000
--- a/integration/templates/remix-node/server.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-import * as build from '@remix-run/dev/server-build';
-import { installGlobals } from '@remix-run/node';
-import { createRequestHandler } from '@remix-run/vercel';
-
-installGlobals();
-
-export default createRequestHandler({ build, mode: process.env.NODE_ENV });
diff --git a/integration/templates/remix-node/tsconfig.json b/integration/templates/remix-node/tsconfig.json
deleted file mode 100644
index 20f8a386a6..0000000000
--- a/integration/templates/remix-node/tsconfig.json
+++ /dev/null
@@ -1,22 +0,0 @@
-{
- "include": ["remix.env.d.ts", "**/*.ts", "**/*.tsx"],
- "compilerOptions": {
- "lib": ["DOM", "DOM.Iterable", "ES2019"],
- "isolatedModules": true,
- "esModuleInterop": true,
- "jsx": "react-jsx",
- "moduleResolution": "node",
- "resolveJsonModule": true,
- "target": "ES2019",
- "strict": true,
- "allowJs": true,
- "forceConsistentCasingInFileNames": true,
- "baseUrl": ".",
- "paths": {
- "~/*": ["./app/*"]
- },
-
- // Remix takes care of building everything in `remix build`.
- "noEmit": true
- }
-}
diff --git a/integration/tests/react-router/library-mode.test.ts b/integration/tests/react-router/library-mode.test.ts
new file mode 100644
index 0000000000..6f5af6f63b
--- /dev/null
+++ b/integration/tests/react-router/library-mode.test.ts
@@ -0,0 +1,59 @@
+import { test } from '@playwright/test';
+
+import type { Application } from '../../models/application';
+import { appConfigs } from '../../presets';
+import type { FakeOrganization, FakeUser } from '../../testUtils';
+import { createTestUtils } from '../../testUtils';
+
+test.describe('Library Mode basic tests for @react-router', () => {
+ test.describe.configure({ mode: 'parallel' });
+ let app: Application;
+ let fakeUser: FakeUser;
+ let fakeOrganization: FakeOrganization;
+
+ test.beforeAll(async () => {
+ app = await appConfigs.reactRouter.reactRouterLibrary.commit();
+
+ await app.setup();
+ await app.withEnv(appConfigs.envs.withEmailCodes);
+ await app.dev();
+
+ const u = createTestUtils({ app });
+ fakeUser = u.services.users.createFakeUser();
+ const user = await u.services.users.createBapiUser(fakeUser);
+ fakeOrganization = await u.services.users.createFakeOrganization(user.id);
+ });
+
+ test.afterAll(async () => {
+ await fakeOrganization.delete();
+ await fakeUser.deleteIfExists();
+
+ await app.teardown();
+ });
+
+ test.afterEach(async ({ page, context }) => {
+ const u = createTestUtils({ app, page, context });
+ await u.page.signOut();
+ await u.page.context().clearCookies();
+ });
+
+ test('should log in successfully', async ({ page, context }) => {
+ const u = createTestUtils({ app, page, context });
+
+ await u.page.goToAppHome();
+ await u.po.expect.toBeSignedOut();
+ await u.page.waitForClerkJsLoaded();
+
+ await u.page.getByRole('button', { name: /Sign in/i }).click();
+ await u.po.signIn.waitForMounted();
+ await u.po.signIn.signInWithEmailAndInstantPassword({ email: fakeUser.email, password: fakeUser.password });
+
+ await u.page.waitForAppUrl('/');
+ await u.po.expect.toBeSignedIn();
+ await u.po.userButton.waitForMounted();
+ await u.po.userButton.toggleTrigger();
+ await u.po.userButton.waitForPopover();
+
+ await u.po.userButton.toHaveVisibleMenuItems([/Manage account/i, /Sign out$/i]);
+ });
+});
diff --git a/package.json b/package.json
index bf422c2522..3bfbe08b6d 100644
--- a/package.json
+++ b/package.json
@@ -38,7 +38,7 @@
"test:integration:nextjs": "E2E_APP_ID=next.appRouter.* pnpm test:integration:base --grep @nextjs",
"test:integration:nuxt": "E2E_APP_ID=nuxt.node npm run test:integration:base -- --grep @nuxt",
"test:integration:quickstart": "E2E_APP_ID=quickstart.* pnpm test:integration:base --grep @quickstart",
- "test:integration:react-router": "E2E_APP_ID=react-router.node npm run test:integration:base -- --grep @react-router",
+ "test:integration:react-router": "E2E_APP_ID=react-router.* npm run test:integration:base -- --grep @react-router",
"test:integration:sessions": "pnpm test:integration:base --grep @sessions",
"test:integration:tanstack-router": "E2E_APP_ID=tanstack.router pnpm test:integration:base --grep @tanstack-router",
"test:integration:tanstack-start": "E2E_APP_ID=tanstack.start pnpm test:integration:base --grep @tanstack-start",
From 05c5de9201ac94ca889d4b65a9aab2946beb2474 Mon Sep 17 00:00:00 2001
From: Nikos Douvlis
Date: Thu, 19 Dec 2024 17:48:32 +0200
Subject: [PATCH 14/23] fix(clerk-js): Rethrow errors if not requires_captcha
during init (#4812)
---
.changeset/ten-taxis-decide.md | 5 +++++
packages/clerk-js/src/core/clerk.ts | 2 ++
2 files changed, 7 insertions(+)
create mode 100644 .changeset/ten-taxis-decide.md
diff --git a/.changeset/ten-taxis-decide.md b/.changeset/ten-taxis-decide.md
new file mode 100644
index 0000000000..6adfd9b398
--- /dev/null
+++ b/.changeset/ten-taxis-decide.md
@@ -0,0 +1,5 @@
+---
+"@clerk/clerk-js": patch
+---
+
+fix(clerk-js): Rethrow errors if not requires_captcha during init
diff --git a/packages/clerk-js/src/core/clerk.ts b/packages/clerk-js/src/core/clerk.ts
index b1cfd5d586..eb91cc89b5 100644
--- a/packages/clerk-js/src/core/clerk.ts
+++ b/packages/clerk-js/src/core/clerk.ts
@@ -1898,6 +1898,8 @@ export class Clerk implements ClerkInterface {
await initEnvironmentPromise;
initComponents();
await initClient();
+ } else {
+ throw e;
}
});
From 99f7536f191eb7b4f2ecff008f5523c500a02816 Mon Sep 17 00:00:00 2001
From: Laura Beatris <48022589+LauraBeatris@users.noreply.github.com>
Date: Thu, 19 Dec 2024 13:46:26 -0300
Subject: [PATCH 15/23] fix(clerk-js): Fix broken enterprise connection icon
for custom SAML provider (#4809)
---
.changeset/friendly-trains-love.md | 5 +++++
.../UserProfile/EnterpriseAccountsSection.tsx | 11 -----------
2 files changed, 5 insertions(+), 11 deletions(-)
create mode 100644 .changeset/friendly-trains-love.md
diff --git a/.changeset/friendly-trains-love.md b/.changeset/friendly-trains-love.md
new file mode 100644
index 0000000000..cd11208d2c
--- /dev/null
+++ b/.changeset/friendly-trains-love.md
@@ -0,0 +1,5 @@
+---
+'@clerk/clerk-js': patch
+---
+
+Fix broken enterprise connection icon for custom SAML provider
diff --git a/packages/clerk-js/src/ui/components/UserProfile/EnterpriseAccountsSection.tsx b/packages/clerk-js/src/ui/components/UserProfile/EnterpriseAccountsSection.tsx
index 674e402d60..b697f3aef2 100644
--- a/packages/clerk-js/src/ui/components/UserProfile/EnterpriseAccountsSection.tsx
+++ b/packages/clerk-js/src/ui/components/UserProfile/EnterpriseAccountsSection.tsx
@@ -1,4 +1,3 @@
-import { iconImageUrl } from '@clerk/shared/constants';
import { useUser } from '@clerk/shared/react';
import type { EnterpriseAccountResource, OAuthProvider } from '@clerk/types';
@@ -83,7 +82,6 @@ const EnterpriseAccount = ({ account }: { account: EnterpriseAccountResource })
const EnterpriseAccountProviderIcon = ({ account }: { account: EnterpriseAccountResource }) => {
const { provider, enterpriseConnection } = account;
- const isCustomOAuthProvider = provider.startsWith('oauth_custom_');
const providerWithoutPrefix = provider.replace(/(oauth_|saml_)/, '').trim() as OAuthProvider;
const connectionName = enterpriseConnection?.name ?? providerWithoutPrefix;
@@ -94,15 +92,6 @@ const EnterpriseAccountProviderIcon = ({ account }: { account: EnterpriseAccount
elementId: descriptors.enterpriseButtonsProviderIcon.setId(account.provider),
};
- if (!isCustomOAuthProvider) {
- return (
-
- );
- }
-
return enterpriseConnection?.logoPublicUrl ? (
Date: Thu, 19 Dec 2024 18:53:00 +0200
Subject: [PATCH 16/23] fix(clerk-expo): Re-export the `isClerkRuntimeError()`
utility (#4815)
---
.changeset/light-impalas-visit.md | 5 +++++
packages/expo/src/index.ts | 8 +++++++-
2 files changed, 12 insertions(+), 1 deletion(-)
create mode 100644 .changeset/light-impalas-visit.md
diff --git a/.changeset/light-impalas-visit.md b/.changeset/light-impalas-visit.md
new file mode 100644
index 0000000000..5bc4534e1c
--- /dev/null
+++ b/.changeset/light-impalas-visit.md
@@ -0,0 +1,5 @@
+---
+'@clerk/clerk-expo': patch
+---
+
+Re-export the `isClerkRuntimeError()` utility function from `@clerk/clerk-react`.
diff --git a/packages/expo/src/index.ts b/packages/expo/src/index.ts
index acb5c04139..57b60c6dac 100644
--- a/packages/expo/src/index.ts
+++ b/packages/expo/src/index.ts
@@ -1,6 +1,12 @@
import { setErrorThrowerOptions } from '@clerk/clerk-react/internal';
-export { isClerkAPIResponseError, isEmailLinkError, isKnownError, isMetamaskError } from '@clerk/clerk-react/errors';
+export {
+ isClerkAPIResponseError,
+ isEmailLinkError,
+ isKnownError,
+ isMetamaskError,
+ isClerkRuntimeError,
+} from '@clerk/clerk-react/errors';
/**
* @deprecated Use `getClerkInstance()` instead.
From ecec6ad9ca60c1130b4cb8d7faecffa175cac092 Mon Sep 17 00:00:00 2001
From: Jacek Radko
Date: Thu, 19 Dec 2024 21:18:19 -0600
Subject: [PATCH 17/23] chore(repo): Lift common devDeps to root (#4770)
---
.changeset/metal-tables-beg.md | 2 +
package.json | 2 +-
packages/astro/package.json | 4 +-
packages/backend/package.json | 3 -
packages/chrome-extension/package.json | 7 +-
packages/clerk-js/package.json | 3 -
packages/dev-cli/package.json | 4 +-
packages/elements/package.json | 9 +-
packages/expo-passkeys/package.json | 3 +-
packages/expo/package.json | 10 +-
packages/express/package.json | 5 +-
packages/fastify/package.json | 5 +-
packages/localizations/package.json | 4 +-
packages/nextjs/package.json | 4 +-
packages/react-router/package.json | 6 +-
packages/react/package.json | 4 +-
packages/remix/package.json | 6 +-
packages/sdk-node/package.json | 5 +-
packages/shared/package.json | 5 +-
packages/tanstack-start/package.json | 4 -
packages/testing/package.json | 5 +-
packages/themes/package.json | 3 +-
packages/types/package.json | 5 +-
packages/ui/theme-builder/package.json | 4 -
packages/vue/package.json | 1 -
pnpm-lock.yaml | 659 +++++++++----------------
renovate.json5 | 6 +-
27 files changed, 253 insertions(+), 525 deletions(-)
create mode 100644 .changeset/metal-tables-beg.md
diff --git a/.changeset/metal-tables-beg.md b/.changeset/metal-tables-beg.md
new file mode 100644
index 0000000000..a845151cc8
--- /dev/null
+++ b/.changeset/metal-tables-beg.md
@@ -0,0 +1,2 @@
+---
+---
diff --git a/package.json b/package.json
index 3bfbe08b6d..ab7707924c 100644
--- a/package.json
+++ b/package.json
@@ -68,7 +68,7 @@
"@testing-library/user-event": "^14.5.2",
"@types/cross-spawn": "^6.0.3",
"@types/jest": "^29.3.1",
- "@types/node": "^20.11.24",
+ "@types/node": "^20.17.10",
"@types/react": "catalog:react",
"@types/react-dom": "catalog:react",
"@vitest/coverage-v8": "2.1.4",
diff --git a/packages/astro/package.json b/packages/astro/package.json
index d2717b0c2d..6678787bfb 100644
--- a/packages/astro/package.json
+++ b/packages/astro/package.json
@@ -88,9 +88,7 @@
"nanostores": "0.11.3"
},
"devDependencies": {
- "@clerk/eslint-config-custom": "workspace:*",
- "react": "catalog:react",
- "typescript": "catalog:repo"
+ "@clerk/eslint-config-custom": "workspace:*"
},
"peerDependencies": {
"astro": "^4.15.0 || ^5.0.0"
diff --git a/packages/backend/package.json b/packages/backend/package.json
index f6917d1ba9..5ddacf2183 100644
--- a/packages/backend/package.json
+++ b/packages/backend/package.json
@@ -102,11 +102,8 @@
"@clerk/eslint-config-custom": "workspace:*",
"@edge-runtime/vm": "4.0.4",
"@types/cookie": "^0.6.0",
- "@types/node": "^18.19.33",
"msw": "2.6.4",
"npm-run-all": "^4.1.5",
- "tsup": "catalog:repo",
- "typescript": "catalog:repo",
"vitest-environment-miniflare": "2.14.4"
},
"engines": {
diff --git a/packages/chrome-extension/package.json b/packages/chrome-extension/package.json
index 84cb43d456..6beeeb5600 100644
--- a/packages/chrome-extension/package.json
+++ b/packages/chrome-extension/package.json
@@ -55,13 +55,8 @@
"devDependencies": {
"@clerk/eslint-config-custom": "workspace:*",
"@types/chrome": "*",
- "@types/node": "^18.19.33",
- "@types/react": "catalog:react",
- "@types/react-dom": "catalog:react",
"@types/webextension-polyfill": "^0.10.7",
- "tsup": "catalog:repo",
- "type-fest": "^4.8.3",
- "typescript": "catalog:repo"
+ "type-fest": "^4.8.3"
},
"peerDependencies": {
"react": "catalog:peer-react",
diff --git a/packages/clerk-js/package.json b/packages/clerk-js/package.json
index f870ff517c..de3437309b 100644
--- a/packages/clerk-js/package.json
+++ b/packages/clerk-js/package.json
@@ -81,15 +81,12 @@
"@rspack/core": "^1.0.14",
"@rspack/plugin-react-refresh": "^1.0.0",
"@svgr/webpack": "^6.2.1",
- "@types/react": "catalog:react",
- "@types/react-dom": "catalog:react",
"@types/webpack-dev-server": "^4.7.2",
"@types/webpack-env": "^1.16.4",
"react-refresh": "^0.14.0",
"react-refresh-typescript": "^2.0.5",
"terser-webpack-plugin": "^5.3.10",
"ts-loader": "^9.3.0",
- "typescript": "catalog:repo",
"webpack-merge": "^5.9.0"
},
"peerDependencies": {
diff --git a/packages/dev-cli/package.json b/packages/dev-cli/package.json
index 640d08b37a..3a4ac0b455 100644
--- a/packages/dev-cli/package.json
+++ b/packages/dev-cli/package.json
@@ -29,9 +29,7 @@
"jscodeshift": "^0.16.1"
},
"devDependencies": {
- "@clerk/eslint-config-custom": "workspace:*",
- "@types/node": "^20.14.8",
- "typescript": "catalog:repo"
+ "@clerk/eslint-config-custom": "workspace:*"
},
"engines": {
"node": ">=18.17.0"
diff --git a/packages/elements/package.json b/packages/elements/package.json
index 00b7a5b823..c91da9c207 100644
--- a/packages/elements/package.json
+++ b/packages/elements/package.json
@@ -79,20 +79,15 @@
"@radix-ui/react-slot": "^1.1.0",
"@xstate/react": "^4.1.1",
"client-only": "^0.0.1",
+ "tslib": "catalog:repo",
"xstate": "^5.15.0"
},
"devDependencies": {
"@clerk/eslint-config-custom": "workspace:*",
"@statelyai/inspect": "^0.4.0",
- "@types/node": "^18.19.33",
- "@types/react": "catalog:react",
- "@types/react-dom": "catalog:react",
"concurrently": "^8.2.2",
"next": "^14.2.18",
- "tslib": "catalog:repo",
- "tsup": "catalog:repo",
- "type-fest": "^4.29.0",
- "typescript": "catalog:repo"
+ "type-fest": "^4.29.0"
},
"peerDependencies": {
"next": "^13.5.4 || ^14.0.3 || ^15",
diff --git a/packages/expo-passkeys/package.json b/packages/expo-passkeys/package.json
index 6524ba61c5..c15340598b 100644
--- a/packages/expo-passkeys/package.json
+++ b/packages/expo-passkeys/package.json
@@ -35,10 +35,9 @@
"@clerk/types": "workspace:^",
"expo-modules-core": "1.12.26"
},
- "devDependencies": {},
"peerDependencies": {
"expo": "*",
- "react": "*",
+ "react": "catalog:peer-react",
"react-native": "*"
}
}
diff --git a/packages/expo/package.json b/packages/expo/package.json
index 7bab782d6b..c8c43ac22f 100644
--- a/packages/expo/package.json
+++ b/packages/expo/package.json
@@ -78,15 +78,11 @@
"@clerk/eslint-config-custom": "workspace:*",
"@clerk/expo-passkeys": "workspace:*",
"@types/base-64": "^1.0.2",
- "@types/node": "^20.11.24",
- "@types/react": "catalog:react",
- "@types/react-dom": "catalog:react",
"expo-auth-session": "^5.4.0",
"expo-local-authentication": "^13.8.0",
"expo-secure-store": "^12.8.1",
"expo-web-browser": "^12.8.2",
- "react-native": "^0.73.9",
- "typescript": "catalog:repo"
+ "react-native": "^0.73.9"
},
"peerDependencies": {
"@clerk/expo-passkeys": ">=0.0.6",
@@ -94,8 +90,8 @@
"expo-local-authentication": ">=13.5.0",
"expo-secure-store": ">=12.4.0",
"expo-web-browser": ">=12.5.0",
- "react": ">=18",
- "react-dom": ">=18",
+ "react": "catalog:peer-react",
+ "react-dom": "catalog:peer-react",
"react-native": ">=0.73"
},
"peerDependenciesMeta": {
diff --git a/packages/express/package.json b/packages/express/package.json
index 9839ec1fd0..df521fbbf4 100644
--- a/packages/express/package.json
+++ b/packages/express/package.json
@@ -62,12 +62,9 @@
},
"devDependencies": {
"@types/express": "^4.17.21",
- "@types/node": "^18.19.33",
"@types/supertest": "^6.0.2",
"express": "^4.20.0",
- "supertest": "^6.3.4",
- "tsup": "catalog:repo",
- "typescript": "catalog:repo"
+ "supertest": "^6.3.4"
},
"peerDependencies": {
"express": "^4.17.0 || ^5.0.0"
diff --git a/packages/fastify/package.json b/packages/fastify/package.json
index b5f024c13b..98215f9826 100644
--- a/packages/fastify/package.json
+++ b/packages/fastify/package.json
@@ -48,10 +48,7 @@
},
"devDependencies": {
"@clerk/eslint-config-custom": "workspace:*",
- "@types/node": "^20.14.8",
- "fastify": "^5.0.0",
- "tsup": "catalog:repo",
- "typescript": "catalog:repo"
+ "fastify": "^5.0.0"
},
"peerDependencies": {
"fastify": ">=5"
diff --git a/packages/localizations/package.json b/packages/localizations/package.json
index 756958409b..37b413f69b 100644
--- a/packages/localizations/package.json
+++ b/packages/localizations/package.json
@@ -105,9 +105,7 @@
"@clerk/types": "workspace:^"
},
"devDependencies": {
- "@clerk/eslint-config-custom": "workspace:*",
- "tsup": "catalog:repo",
- "typescript": "catalog:repo"
+ "@clerk/eslint-config-custom": "workspace:*"
},
"engines": {
"node": ">=18.17.0"
diff --git a/packages/nextjs/package.json b/packages/nextjs/package.json
index b8d2c2573c..6497ce3917 100644
--- a/packages/nextjs/package.json
+++ b/packages/nextjs/package.json
@@ -76,9 +76,7 @@
"devDependencies": {
"@clerk/eslint-config-custom": "workspace:*",
"@types/crypto-js": "4.2.2",
- "@types/node": "^18.19.33",
- "next": "^14.2.20",
- "typescript": "catalog:repo"
+ "next": "^14.2.20"
},
"peerDependencies": {
"next": "^13.5.4 || ^14.0.3 || ^15.0.0",
diff --git a/packages/react-router/package.json b/packages/react-router/package.json
index 2b06e010ba..e5c156e363 100644
--- a/packages/react-router/package.json
+++ b/packages/react-router/package.json
@@ -82,12 +82,8 @@
"devDependencies": {
"@clerk/eslint-config-custom": "workspace:*",
"@types/cookie": "^0.6.0",
- "@types/node": "^18.19.33",
- "@types/react": "catalog:react",
- "@types/react-dom": "catalog:react",
"esbuild-plugin-file-path-extensions": "^2.1.3",
- "react-router": "7.0.2",
- "typescript": "catalog:repo"
+ "react-router": "7.0.2"
},
"peerDependencies": {
"react": "catalog:peer-react",
diff --git a/packages/react/package.json b/packages/react/package.json
index 29560d8ff0..9c0748f693 100644
--- a/packages/react/package.json
+++ b/packages/react/package.json
@@ -82,9 +82,7 @@
"@clerk/eslint-config-custom": "workspace:*",
"@clerk/localizations": "workspace:*",
"@clerk/themes": "workspace:*",
- "@types/node": "^18.19.33",
- "@types/semver": "^7.5.8",
- "typescript": "catalog:repo"
+ "@types/semver": "^7.5.8"
},
"peerDependencies": {
"react": "catalog:peer-react",
diff --git a/packages/remix/package.json b/packages/remix/package.json
index 73220e6045..71ffbc11fc 100644
--- a/packages/remix/package.json
+++ b/packages/remix/package.json
@@ -84,11 +84,7 @@
"@clerk/eslint-config-custom": "workspace:*",
"@remix-run/react": "^2.0.0",
"@remix-run/server-runtime": "^2.0.0",
- "@types/cookie": "^0.6.0",
- "@types/node": "^18.19.33",
- "@types/react": "catalog:react",
- "@types/react-dom": "catalog:react",
- "typescript": "catalog:repo"
+ "@types/cookie": "^0.6.0"
},
"peerDependencies": {
"@remix-run/react": "^2.0.0",
diff --git a/packages/sdk-node/package.json b/packages/sdk-node/package.json
index 1e32c897d9..9b30fbf53a 100644
--- a/packages/sdk-node/package.json
+++ b/packages/sdk-node/package.json
@@ -61,11 +61,8 @@
"devDependencies": {
"@clerk/eslint-config-custom": "workspace:*",
"@types/express": "^4.17.21",
- "@types/node": "^18.19.33",
"nock": "^13.0.7",
- "npm-run-all": "^4.1.5",
- "tsup": "catalog:repo",
- "typescript": "catalog:repo"
+ "npm-run-all": "^4.1.5"
},
"engines": {
"node": ">=18.17.0"
diff --git a/packages/shared/package.json b/packages/shared/package.json
index 37aa9e2014..6461d854f8 100644
--- a/packages/shared/package.json
+++ b/packages/shared/package.json
@@ -144,11 +144,8 @@
"@clerk/eslint-config-custom": "workspace:*",
"@types/glob-to-regexp": "0.4.4",
"@types/js-cookie": "3.0.6",
- "@types/node": "^18.19.33",
"cross-fetch": "^4.0.0",
- "esbuild": "0.20.2",
- "tsup": "catalog:repo",
- "typescript": "catalog:repo"
+ "esbuild": "0.20.2"
},
"peerDependencies": {
"react": "catalog:peer-react",
diff --git a/packages/tanstack-start/package.json b/packages/tanstack-start/package.json
index 76c69a8687..d2506c4994 100644
--- a/packages/tanstack-start/package.json
+++ b/packages/tanstack-start/package.json
@@ -69,11 +69,7 @@
"@clerk/eslint-config-custom": "workspace:*",
"@tanstack/react-router": "^1.81.9",
"@tanstack/start": "^1.81.9",
- "@types/node": "^18.19.43",
- "@types/react": "catalog:react",
- "@types/react-dom": "catalog:react",
"esbuild-plugin-file-path-extensions": "^2.1.2",
- "typescript": "catalog:repo",
"vinxi": "^0.4.1"
},
"peerDependencies": {
diff --git a/packages/testing/package.json b/packages/testing/package.json
index 2bdda13bb9..f04e2e433b 100644
--- a/packages/testing/package.json
+++ b/packages/testing/package.json
@@ -70,10 +70,7 @@
"devDependencies": {
"@clerk/eslint-config-custom": "workspace:*",
"@playwright/test": "^1.44.0",
- "@types/node": "^18.19.33",
- "cypress": "^13.9.0",
- "tsup": "catalog:repo",
- "typescript": "catalog:repo"
+ "cypress": "^13.9.0"
},
"peerDependencies": {
"@playwright/test": "^1",
diff --git a/packages/themes/package.json b/packages/themes/package.json
index d22b0a505c..3121cd3102 100644
--- a/packages/themes/package.json
+++ b/packages/themes/package.json
@@ -41,8 +41,7 @@
"tslib": "catalog:repo"
},
"devDependencies": {
- "@clerk/eslint-config-custom": "workspace:*",
- "typescript": "catalog:repo"
+ "@clerk/eslint-config-custom": "workspace:*"
},
"engines": {
"node": ">=18.17.0"
diff --git a/packages/types/package.json b/packages/types/package.json
index 9ae7c6cdca..0f31f398d3 100644
--- a/packages/types/package.json
+++ b/packages/types/package.json
@@ -39,10 +39,7 @@
"csstype": "3.1.1"
},
"devDependencies": {
- "@clerk/eslint-config-custom": "workspace:*",
- "@types/node": "^18.19.33",
- "tsup": "catalog:repo",
- "typescript": "catalog:repo"
+ "@clerk/eslint-config-custom": "workspace:*"
},
"engines": {
"node": ">=18.17.0"
diff --git a/packages/ui/theme-builder/package.json b/packages/ui/theme-builder/package.json
index cc5e14f618..4f35d1f826 100644
--- a/packages/ui/theme-builder/package.json
+++ b/packages/ui/theme-builder/package.json
@@ -30,14 +30,10 @@
"zustand": "^4.5.5"
},
"devDependencies": {
- "@types/node": "^20.12.12",
- "@types/react": "catalog:react",
- "@types/react-dom": "catalog:react",
"eslint": "^8",
"eslint-config-next": "14.2.7",
"postcss": "^8.4.47",
"tailwindcss": "^3.4.1",
- "typescript": "^5.6.3",
"zx": "^8.1.9"
}
}
diff --git a/packages/vue/package.json b/packages/vue/package.json
index 7a6fac893f..bb8db8dff4 100644
--- a/packages/vue/package.json
+++ b/packages/vue/package.json
@@ -57,7 +57,6 @@
"devDependencies": {
"@testing-library/vue": "^8.1.0",
"@vue.ts/tsx-auto-props": "^0.6.0",
- "typescript": "catalog:repo",
"vue": "3.5.12"
},
"peerDependencies": {
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 8380ed2cef..5230075767 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -63,7 +63,7 @@ importers:
version: 0.5.2
'@commitlint/cli':
specifier: ^19.3.0
- version: 19.3.0(@types/node@20.17.5)(typescript@5.6.3)
+ version: 19.3.0(@types/node@20.17.10)(typescript@5.6.3)
'@commitlint/config-conventional':
specifier: ^19.2.2
version: 19.2.2
@@ -90,7 +90,7 @@ importers:
version: 10.1.0
'@testing-library/jest-dom':
specifier: ^6.4.6
- version: 6.4.6(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@20.17.5)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.5)(typescript@5.6.3)))(vitest@2.1.4(@edge-runtime/vm@4.0.4)(@types/node@20.17.5)(jsdom@24.1.3)(msw@2.6.4(@types/node@20.17.5)(typescript@5.6.3))(terser@5.31.1))
+ version: 6.4.6(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@20.17.10)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.10)(typescript@5.6.3)))(vitest@2.1.4(@edge-runtime/vm@4.0.4)(@types/node@20.17.10)(jsdom@24.1.3)(msw@2.6.4(@types/node@20.17.10)(typescript@5.6.3))(terser@5.31.1))
'@testing-library/react':
specifier: ^16.0.0
version: 16.0.0(@testing-library/dom@10.1.0)(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
@@ -104,8 +104,8 @@ importers:
specifier: ^29.3.1
version: 29.5.12
'@types/node':
- specifier: ^20.11.24
- version: 20.17.5
+ specifier: ^20.17.10
+ version: 20.17.10
'@types/react':
specifier: catalog:react
version: 18.3.12
@@ -114,7 +114,7 @@ importers:
version: 18.3.1
'@vitest/coverage-v8':
specifier: 2.1.4
- version: 2.1.4(vitest@2.1.4(@edge-runtime/vm@4.0.4)(@types/node@20.17.5)(jsdom@24.1.3)(msw@2.6.4(@types/node@20.17.5)(typescript@5.6.3))(terser@5.31.1))
+ version: 2.1.4(vitest@2.1.4(@edge-runtime/vm@4.0.4)(@types/node@20.17.10)(jsdom@24.1.3)(msw@2.6.4(@types/node@20.17.10)(typescript@5.6.3))(terser@5.31.1))
citty:
specifier: ^0.1.4
version: 0.1.6
@@ -159,10 +159,10 @@ importers:
version: 8.0.3
jest:
specifier: 29.7.0
- version: 29.7.0(@types/node@20.17.5)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.5)(typescript@5.6.3))
+ version: 29.7.0(@types/node@20.17.10)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.10)(typescript@5.6.3))
jest-chrome:
specifier: ^0.8.0
- version: 0.8.0(jest@29.7.0(@types/node@20.17.5)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.5)(typescript@5.6.3)))
+ version: 0.8.0(jest@29.7.0(@types/node@20.17.10)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.10)(typescript@5.6.3)))
jest-environment-jsdom:
specifier: ^29.3.1
version: 29.7.0
@@ -198,7 +198,7 @@ importers:
version: 1.2.2
ts-jest:
specifier: 29.2.5
- version: 29.2.5(@babel/core@7.26.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.0))(jest@29.7.0(@types/node@20.17.5)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.5)(typescript@5.6.3)))(typescript@5.6.3)
+ version: 29.2.5(@babel/core@7.26.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.0))(esbuild@0.24.0)(jest@29.7.0(@types/node@20.17.10)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.10)(typescript@5.6.3)))(typescript@5.6.3)
tsup:
specifier: catalog:repo
version: 8.3.5(jiti@2.4.0)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.6.0)
@@ -216,7 +216,7 @@ importers:
version: 5.31.1(typanion@3.14.0)
vitest:
specifier: 2.1.4
- version: 2.1.4(@edge-runtime/vm@4.0.4)(@types/node@20.17.5)(jsdom@24.1.3)(msw@2.6.4(@types/node@20.17.5)(typescript@5.6.3))(terser@5.31.1)
+ version: 2.1.4(@edge-runtime/vm@4.0.4)(@types/node@20.17.10)(jsdom@24.1.3)(msw@2.6.4(@types/node@20.17.10)(typescript@5.6.3))(terser@5.31.1)
yalc:
specifier: 1.0.0-pre.53
version: 1.0.0-pre.53(patch_hash=nepk7g7jbppq422nppscin4xqm)
@@ -248,12 +248,6 @@ importers:
'@clerk/eslint-config-custom':
specifier: workspace:*
version: link:../eslint-config-custom
- react:
- specifier: catalog:react
- version: 18.3.1
- typescript:
- specifier: catalog:repo
- version: 5.6.3
packages/backend:
dependencies:
@@ -282,24 +276,15 @@ importers:
'@types/cookie':
specifier: ^0.6.0
version: 0.6.0
- '@types/node':
- specifier: ^18.19.33
- version: 18.19.64
msw:
specifier: 2.6.4
- version: 2.6.4(@types/node@18.19.64)(typescript@5.6.3)
+ version: 2.6.4(@types/node@22.9.0)(typescript@5.6.3)
npm-run-all:
specifier: ^4.1.5
version: 4.1.5
- tsup:
- specifier: catalog:repo
- version: 8.3.5(jiti@2.4.0)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.6.0)
- typescript:
- specifier: catalog:repo
- version: 5.6.3
vitest-environment-miniflare:
specifier: 2.14.4
- version: 2.14.4(vitest@2.1.4(@edge-runtime/vm@4.0.4)(@types/node@18.19.64)(jsdom@24.1.3)(msw@2.6.4(@types/node@18.19.64)(typescript@5.6.3))(terser@5.31.1))
+ version: 2.14.4(vitest@2.1.4(@edge-runtime/vm@4.0.4)(@types/node@22.9.0)(jsdom@24.1.3)(msw@2.6.4(@types/node@22.9.0)(typescript@5.6.3))(terser@5.31.1))
packages/chrome-extension:
dependencies:
@@ -328,27 +313,12 @@ importers:
'@types/chrome':
specifier: '*'
version: 0.0.114
- '@types/node':
- specifier: ^18.19.33
- version: 18.19.64
- '@types/react':
- specifier: catalog:react
- version: 18.3.12
- '@types/react-dom':
- specifier: catalog:react
- version: 18.3.1
'@types/webextension-polyfill':
specifier: ^0.10.7
version: 0.10.7
- tsup:
- specifier: catalog:repo
- version: 8.3.5(jiti@2.4.0)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.6.0)
type-fest:
specifier: ^4.8.3
version: 4.29.0
- typescript:
- specifier: catalog:repo
- version: 5.6.3
packages/clerk-js:
dependencies:
@@ -424,10 +394,10 @@ importers:
version: link:../ui
'@rsdoctor/rspack-plugin':
specifier: ^0.4.7
- version: 0.4.7(@rspack/core@1.0.14(@swc/helpers@0.5.13))(webpack@5.94.0)
+ version: 0.4.7(@rspack/core@1.0.14(@swc/helpers@0.5.13))(webpack@5.94.0(esbuild@0.24.0))
'@rspack/cli':
specifier: ^1.0.14
- version: 1.0.14(@rspack/core@1.0.14(@swc/helpers@0.5.13))(@types/express@4.17.21)(webpack@5.94.0)
+ version: 1.0.14(@rspack/core@1.0.14(@swc/helpers@0.5.13))(@types/express@4.17.21)(webpack@5.94.0(esbuild@0.24.0))
'@rspack/core':
specifier: ^1.0.14
version: 1.0.14(@swc/helpers@0.5.13)
@@ -437,15 +407,9 @@ importers:
'@svgr/webpack':
specifier: ^6.2.1
version: 6.5.1
- '@types/react':
- specifier: catalog:react
- version: 18.3.12
- '@types/react-dom':
- specifier: catalog:react
- version: 18.3.1
'@types/webpack-dev-server':
specifier: ^4.7.2
- version: 4.7.2(webpack@5.94.0)
+ version: 4.7.2(webpack@5.94.0(esbuild@0.24.0))
'@types/webpack-env':
specifier: ^1.16.4
version: 1.18.1
@@ -457,13 +421,10 @@ importers:
version: 2.0.9(react-refresh@0.14.2)(typescript@5.6.3)
terser-webpack-plugin:
specifier: ^5.3.10
- version: 5.3.10(webpack@5.94.0)
+ version: 5.3.10(esbuild@0.24.0)(webpack@5.94.0(esbuild@0.24.0))
ts-loader:
specifier: ^9.3.0
- version: 9.5.1(typescript@5.6.3)(webpack@5.94.0)
- typescript:
- specifier: catalog:repo
- version: 5.6.3
+ version: 9.5.1(typescript@5.6.3)(webpack@5.94.0(esbuild@0.24.0))
webpack-merge:
specifier: ^5.9.0
version: 5.9.0
@@ -489,12 +450,6 @@ importers:
'@clerk/eslint-config-custom':
specifier: workspace:*
version: link:../eslint-config-custom
- '@types/node':
- specifier: ^20.14.8
- version: 20.17.5
- typescript:
- specifier: catalog:repo
- version: 5.6.3
packages/elements:
dependencies:
@@ -528,6 +483,9 @@ importers:
react-dom:
specifier: catalog:peer-react
version: 18.3.1(react@18.3.1)
+ tslib:
+ specifier: catalog:repo
+ version: 2.4.1
xstate:
specifier: ^5.15.0
version: 5.15.0
@@ -538,33 +496,15 @@ importers:
'@statelyai/inspect':
specifier: ^0.4.0
version: 0.4.0(ws@8.18.0)(xstate@5.15.0)
- '@types/node':
- specifier: ^18.19.33
- version: 18.19.64
- '@types/react':
- specifier: catalog:react
- version: 18.3.12
- '@types/react-dom':
- specifier: catalog:react
- version: 18.3.1
concurrently:
specifier: ^8.2.2
version: 8.2.2
next:
specifier: ^14.2.18
version: 14.2.20(@babel/core@7.26.0)(@playwright/test@1.44.1)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- tslib:
- specifier: catalog:repo
- version: 2.4.1
- tsup:
- specifier: catalog:repo
- version: 8.3.5(jiti@2.4.0)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.6.0)
type-fest:
specifier: ^4.29.0
version: 4.29.0
- typescript:
- specifier: catalog:repo
- version: 5.6.3
packages/eslint-config-custom:
dependencies:
@@ -617,10 +557,10 @@ importers:
specifier: ^1.0.0
version: 1.0.0
react:
- specifier: '>=18'
+ specifier: catalog:peer-react
version: 18.3.1
react-dom:
- specifier: '>=18'
+ specifier: catalog:peer-react
version: 18.3.1(react@18.3.1)
react-native-url-polyfill:
specifier: 2.0.0
@@ -638,15 +578,6 @@ importers:
'@types/base-64':
specifier: ^1.0.2
version: 1.0.2
- '@types/node':
- specifier: ^20.11.24
- version: 20.17.5
- '@types/react':
- specifier: catalog:react
- version: 18.3.12
- '@types/react-dom':
- specifier: catalog:react
- version: 18.3.1
expo-auth-session:
specifier: ^5.4.0
version: 5.4.0(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))
@@ -662,9 +593,6 @@ importers:
react-native:
specifier: ^0.73.9
version: 0.73.9(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(react@18.3.1)
- typescript:
- specifier: catalog:repo
- version: 5.6.3
packages/expo-passkeys:
dependencies:
@@ -681,7 +609,7 @@ importers:
specifier: 1.12.26
version: 1.12.26
react:
- specifier: '*'
+ specifier: catalog:peer-react
version: 18.3.1
react-native:
specifier: '*'
@@ -705,9 +633,6 @@ importers:
'@types/express':
specifier: ^4.17.21
version: 4.17.21
- '@types/node':
- specifier: ^18.19.33
- version: 18.19.64
'@types/supertest':
specifier: ^6.0.2
version: 6.0.2
@@ -717,12 +642,6 @@ importers:
supertest:
specifier: ^6.3.4
version: 6.3.4
- tsup:
- specifier: catalog:repo
- version: 8.3.5(jiti@2.4.0)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.6.0)
- typescript:
- specifier: catalog:repo
- version: 5.6.3
packages/fastify:
dependencies:
@@ -745,18 +664,9 @@ importers:
'@clerk/eslint-config-custom':
specifier: workspace:*
version: link:../eslint-config-custom
- '@types/node':
- specifier: ^20.14.8
- version: 20.17.5
fastify:
specifier: ^5.0.0
version: 5.0.0
- tsup:
- specifier: catalog:repo
- version: 8.3.5(jiti@2.4.0)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.6.0)
- typescript:
- specifier: catalog:repo
- version: 5.6.3
packages/localizations:
dependencies:
@@ -767,12 +677,6 @@ importers:
'@clerk/eslint-config-custom':
specifier: workspace:*
version: link:../eslint-config-custom
- tsup:
- specifier: catalog:repo
- version: 8.3.5(jiti@2.4.0)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.6.0)
- typescript:
- specifier: catalog:repo
- version: 5.6.3
packages/nextjs:
dependencies:
@@ -810,15 +714,9 @@ importers:
'@types/crypto-js':
specifier: 4.2.2
version: 4.2.2
- '@types/node':
- specifier: ^18.19.33
- version: 18.19.64
next:
specifier: ^14.2.20
version: 14.2.20(@babel/core@7.26.0)(@playwright/test@1.44.1)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- typescript:
- specifier: catalog:repo
- version: 5.6.3
packages/nuxt:
dependencies:
@@ -878,15 +776,9 @@ importers:
'@clerk/themes':
specifier: workspace:*
version: link:../themes
- '@types/node':
- specifier: ^18.19.33
- version: 18.19.64
'@types/semver':
specifier: ^7.5.8
version: 7.5.8
- typescript:
- specifier: catalog:repo
- version: 5.6.3
packages/react-router:
dependencies:
@@ -921,24 +813,12 @@ importers:
'@types/cookie':
specifier: ^0.6.0
version: 0.6.0
- '@types/node':
- specifier: ^18.19.33
- version: 18.19.64
- '@types/react':
- specifier: catalog:react
- version: 18.3.12
- '@types/react-dom':
- specifier: catalog:react
- version: 18.3.1
esbuild-plugin-file-path-extensions:
specifier: ^2.1.3
version: 2.1.3
react-router:
specifier: 7.0.2
version: 7.0.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- typescript:
- specifier: catalog:repo
- version: 5.6.3
packages/remix:
dependencies:
@@ -982,18 +862,6 @@ importers:
'@types/cookie':
specifier: ^0.6.0
version: 0.6.0
- '@types/node':
- specifier: ^18.19.33
- version: 18.19.64
- '@types/react':
- specifier: catalog:react
- version: 18.3.12
- '@types/react-dom':
- specifier: catalog:react
- version: 18.3.1
- typescript:
- specifier: catalog:repo
- version: 5.6.3
packages/sdk-node:
dependencies:
@@ -1016,21 +884,12 @@ importers:
'@types/express':
specifier: ^4.17.21
version: 4.17.21
- '@types/node':
- specifier: ^18.19.33
- version: 18.19.64
nock:
specifier: ^13.0.7
version: 13.5.4
npm-run-all:
specifier: ^4.1.5
version: 4.1.5
- tsup:
- specifier: catalog:repo
- version: 8.3.5(jiti@2.4.0)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.6.0)
- typescript:
- specifier: catalog:repo
- version: 5.6.3
packages/shared:
dependencies:
@@ -1068,21 +927,12 @@ importers:
'@types/js-cookie':
specifier: 3.0.6
version: 3.0.6
- '@types/node':
- specifier: ^18.19.33
- version: 18.19.64
cross-fetch:
specifier: ^4.0.0
version: 4.0.0
esbuild:
specifier: 0.20.2
version: 0.20.2
- tsup:
- specifier: catalog:repo
- version: 8.3.5(jiti@2.4.0)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.6.0)
- typescript:
- specifier: catalog:repo
- version: 5.6.3
packages/tailwindcss-transformer:
dependencies:
@@ -1140,25 +990,13 @@ importers:
version: 1.81.9(@tanstack/router-generator@1.81.9)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@tanstack/start':
specifier: ^1.81.9
- version: 1.81.9(@types/node@18.19.64)(ioredis@5.4.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(terser@5.31.1)(typescript@5.6.3)(vite@5.4.11(@types/node@20.17.5)(terser@5.31.1))(webpack-sources@3.2.3)(webpack@5.94.0)
- '@types/node':
- specifier: ^18.19.43
- version: 18.19.64
- '@types/react':
- specifier: catalog:react
- version: 18.3.12
- '@types/react-dom':
- specifier: catalog:react
- version: 18.3.1
+ version: 1.81.9(@types/node@22.9.0)(ioredis@5.4.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(terser@5.31.1)(typescript@5.6.3)(vite@5.4.11(@types/node@20.17.10)(terser@5.31.1))(webpack-sources@3.2.3)(webpack@5.94.0(esbuild@0.24.0))
esbuild-plugin-file-path-extensions:
specifier: ^2.1.2
version: 2.1.3
- typescript:
- specifier: catalog:repo
- version: 5.6.3
vinxi:
specifier: ^0.4.1
- version: 0.4.3(@types/node@18.19.64)(ioredis@5.4.1)(terser@5.31.1)(typescript@5.6.3)(webpack-sources@3.2.3)
+ version: 0.4.3(@types/node@22.9.0)(ioredis@5.4.1)(terser@5.31.1)(typescript@5.6.3)(webpack-sources@3.2.3)
packages/testing:
dependencies:
@@ -1181,18 +1019,9 @@ importers:
'@playwright/test':
specifier: ^1.44.0
version: 1.44.1
- '@types/node':
- specifier: ^18.19.33
- version: 18.19.64
cypress:
specifier: ^13.9.0
version: 13.9.0
- tsup:
- specifier: catalog:repo
- version: 8.3.5(jiti@2.4.0)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.6.0)
- typescript:
- specifier: catalog:repo
- version: 5.6.3
packages/themes:
dependencies:
@@ -1206,9 +1035,6 @@ importers:
'@clerk/eslint-config-custom':
specifier: workspace:*
version: link:../eslint-config-custom
- typescript:
- specifier: catalog:repo
- version: 5.6.3
packages/types:
dependencies:
@@ -1219,15 +1045,6 @@ importers:
'@clerk/eslint-config-custom':
specifier: workspace:*
version: link:../eslint-config-custom
- '@types/node':
- specifier: ^18.19.33
- version: 18.19.64
- tsup:
- specifier: catalog:repo
- version: 8.3.5(jiti@2.4.0)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.6.0)
- typescript:
- specifier: catalog:repo
- version: 5.6.3
packages/ui:
dependencies:
@@ -1372,9 +1189,6 @@ importers:
'@vue.ts/tsx-auto-props':
specifier: ^0.6.0
version: 0.6.0(rollup@4.26.0)(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3))(webpack-sources@3.2.3)
- typescript:
- specifier: catalog:repo
- version: 5.6.3
vue:
specifier: 3.5.12
version: 3.5.12(typescript@5.6.3)
@@ -5559,8 +5373,8 @@ packages:
'@types/node@18.19.64':
resolution: {integrity: sha512-955mDqvO2vFf/oL7V3WiUtiz+BugyX8uVbaT2H8oj3+8dRyH2FLiNdowe7eNqRM7IOIZvzDH76EoAT+gwm6aIQ==}
- '@types/node@20.17.5':
- resolution: {integrity: sha512-n8FYY/pRxu496441gIcAQFZPKXbhsd6VZygcq+PTSZ75eMh/Ke0hCAROdUa21qiFqKNsPPYic46yXDO1JGiPBQ==}
+ '@types/node@20.17.10':
+ resolution: {integrity: sha512-/jrvh5h6NXhEauFFexRin69nA0uHJ5gwk4iDivp/DeoEua3uwCUto6PC86IpRITBOs4+6i2I56K5x5b6WYGXHA==}
'@types/node@22.9.0':
resolution: {integrity: sha512-vuyHg81vvWA1Z1ELfvLko2c8f34gyA0zaic0+Rllc5lbCnbSyuvb2Oxpm6TAUAC/2xZN3QGqxBNggD1nNR2AfQ==}
@@ -6209,6 +6023,7 @@ packages:
acorn-import-assertions@1.9.0:
resolution: {integrity: sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==}
+ deprecated: package has been renamed to acorn-import-attributes
peerDependencies:
acorn: ^8
@@ -11318,8 +11133,8 @@ packages:
resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==}
engines: {node: '>=10.5.0'}
- node-emoji@2.1.3:
- resolution: {integrity: sha512-E2WEOVsgs7O16zsURJ/eH8BqhF029wGpEOnv7Urwdo2wmQanOACwJQh0devF9D9RhoZru0+9JXIS0dBXIAz+lA==}
+ node-emoji@2.2.0:
+ resolution: {integrity: sha512-Z3lTE9pLaJF47NyMhd4ww1yFTAP8YhYI8SleJiHzM46Fgpm5cnNzSl9XfzFNqbaz+VlJrIj3fXQ4DeN1Rjm6cw==}
engines: {node: '>=18'}
node-fetch-native@1.6.4:
@@ -13608,12 +13423,15 @@ packages:
sudo-prompt@8.2.5:
resolution: {integrity: sha512-rlBo3HU/1zAJUrkY6jNxDOC9eVYliG6nS4JA8u8KAshITd07tafMc/Br7xQwCSseXwJ2iCcHCE8SNWX3q8Z+kw==}
+ deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
sudo-prompt@9.1.1:
resolution: {integrity: sha512-es33J1g2HjMpyAhz8lOR+ICmXXAqTuKbuXuUWLhOLew20oN9oUCgCJx615U/v7aioZg7IX5lIh9x34vwneu4pA==}
+ deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
sudo-prompt@9.2.1:
resolution: {integrity: sha512-Mu7R0g4ig9TUuGSxJavny5Rv0egCEtpZRNMrZaYS1vxkiIxGiGUwoezU3LazIQ+KE04hTrTfNPgxU5gzi7F5Pw==}
+ deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
superagent@8.1.2:
resolution: {integrity: sha512-6WTxW1EB6yCxV5VFOIPQruWGHqc3yI7hEmZK6h+pyk69Lk/Ut7rLUY6W/ONF2MjBuGjvmMiIpsrVJ2vjrHlslA==}
@@ -16489,11 +16307,11 @@ snapshots:
'@colors/colors@1.5.0':
optional: true
- '@commitlint/cli@19.3.0(@types/node@20.17.5)(typescript@5.6.3)':
+ '@commitlint/cli@19.3.0(@types/node@20.17.10)(typescript@5.6.3)':
dependencies:
'@commitlint/format': 19.3.0
'@commitlint/lint': 19.2.2
- '@commitlint/load': 19.2.0(@types/node@20.17.5)(typescript@5.6.3)
+ '@commitlint/load': 19.2.0(@types/node@20.17.10)(typescript@5.6.3)
'@commitlint/read': 19.2.1
'@commitlint/types': 19.0.3
execa: 8.0.1
@@ -16540,7 +16358,7 @@ snapshots:
'@commitlint/rules': 19.0.3
'@commitlint/types': 19.0.3
- '@commitlint/load@19.2.0(@types/node@20.17.5)(typescript@5.6.3)':
+ '@commitlint/load@19.2.0(@types/node@20.17.10)(typescript@5.6.3)':
dependencies:
'@commitlint/config-validator': 19.0.3
'@commitlint/execute-rule': 19.0.0
@@ -16548,7 +16366,7 @@ snapshots:
'@commitlint/types': 19.0.3
chalk: 5.3.0
cosmiconfig: 9.0.0(typescript@5.6.3)
- cosmiconfig-typescript-loader: 5.0.0(@types/node@20.17.5)(cosmiconfig@9.0.0(typescript@5.6.3))(typescript@5.6.3)
+ cosmiconfig-typescript-loader: 5.0.0(@types/node@20.17.10)(cosmiconfig@9.0.0(typescript@5.6.3))(typescript@5.6.3)
lodash.isplainobject: 4.0.6
lodash.merge: 4.6.2
lodash.uniq: 4.5.0
@@ -17552,23 +17370,23 @@ snapshots:
figures: 6.1.0
ink: 5.0.1(@types/react@18.3.12)(react-devtools-core@4.28.5)(react@18.3.1)
- '@inquirer/confirm@5.0.2(@types/node@18.19.64)':
+ '@inquirer/confirm@5.0.2(@types/node@20.17.10)':
dependencies:
- '@inquirer/core': 10.1.0(@types/node@18.19.64)
- '@inquirer/type': 3.0.1(@types/node@18.19.64)
- '@types/node': 18.19.64
+ '@inquirer/core': 10.1.0(@types/node@20.17.10)
+ '@inquirer/type': 3.0.1(@types/node@20.17.10)
+ '@types/node': 20.17.10
+ optional: true
- '@inquirer/confirm@5.0.2(@types/node@20.17.5)':
+ '@inquirer/confirm@5.0.2(@types/node@22.9.0)':
dependencies:
- '@inquirer/core': 10.1.0(@types/node@20.17.5)
- '@inquirer/type': 3.0.1(@types/node@20.17.5)
- '@types/node': 20.17.5
- optional: true
+ '@inquirer/core': 10.1.0(@types/node@22.9.0)
+ '@inquirer/type': 3.0.1(@types/node@22.9.0)
+ '@types/node': 22.9.0
- '@inquirer/core@10.1.0(@types/node@18.19.64)':
+ '@inquirer/core@10.1.0(@types/node@20.17.10)':
dependencies:
'@inquirer/figures': 1.0.8
- '@inquirer/type': 3.0.1(@types/node@18.19.64)
+ '@inquirer/type': 3.0.1(@types/node@20.17.10)
ansi-escapes: 4.3.2
cli-width: 4.1.0
mute-stream: 2.0.0
@@ -17578,11 +17396,12 @@ snapshots:
yoctocolors-cjs: 2.1.2
transitivePeerDependencies:
- '@types/node'
+ optional: true
- '@inquirer/core@10.1.0(@types/node@20.17.5)':
+ '@inquirer/core@10.1.0(@types/node@22.9.0)':
dependencies:
'@inquirer/figures': 1.0.8
- '@inquirer/type': 3.0.1(@types/node@20.17.5)
+ '@inquirer/type': 3.0.1(@types/node@22.9.0)
ansi-escapes: 4.3.2
cli-width: 4.1.0
mute-stream: 2.0.0
@@ -17592,18 +17411,17 @@ snapshots:
yoctocolors-cjs: 2.1.2
transitivePeerDependencies:
- '@types/node'
- optional: true
'@inquirer/figures@1.0.8': {}
- '@inquirer/type@3.0.1(@types/node@18.19.64)':
+ '@inquirer/type@3.0.1(@types/node@20.17.10)':
dependencies:
- '@types/node': 18.19.64
+ '@types/node': 20.17.10
+ optional: true
- '@inquirer/type@3.0.1(@types/node@20.17.5)':
+ '@inquirer/type@3.0.1(@types/node@22.9.0)':
dependencies:
- '@types/node': 20.17.5
- optional: true
+ '@types/node': 22.9.0
'@internationalized/date@3.5.6':
dependencies:
@@ -17655,27 +17473,27 @@ snapshots:
'@jest/console@29.7.0':
dependencies:
'@jest/types': 29.6.3
- '@types/node': 20.17.5
+ '@types/node': 20.17.10
chalk: 4.1.2
jest-message-util: 29.7.0
jest-util: 29.7.0
slash: 3.0.0
- '@jest/core@29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.5)(typescript@5.6.3))':
+ '@jest/core@29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.10)(typescript@5.6.3))':
dependencies:
'@jest/console': 29.7.0
'@jest/reporters': 29.7.0
'@jest/test-result': 29.7.0
'@jest/transform': 29.7.0
'@jest/types': 29.6.3
- '@types/node': 20.17.5
+ '@types/node': 20.17.10
ansi-escapes: 4.3.2
chalk: 4.1.2
ci-info: 3.9.0
exit: 0.1.2
graceful-fs: 4.2.11
jest-changed-files: 29.7.0
- jest-config: 29.7.0(@types/node@20.17.5)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.5)(typescript@5.6.3))
+ jest-config: 29.7.0(@types/node@20.17.10)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.10)(typescript@5.6.3))
jest-haste-map: 29.7.0
jest-message-util: 29.7.0
jest-regex-util: 29.6.3
@@ -17703,14 +17521,14 @@ snapshots:
'@jest/test-result': 29.7.0
'@jest/transform': 29.7.0
'@jest/types': 29.6.3
- '@types/node': 20.17.5
+ '@types/node': 20.17.10
ansi-escapes: 4.3.2
chalk: 4.1.2
ci-info: 3.9.0
exit: 0.1.2
graceful-fs: 4.2.11
jest-changed-files: 29.7.0
- jest-config: 29.7.0(@types/node@20.17.5)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.9.0)(typescript@5.6.3))
+ jest-config: 29.7.0(@types/node@20.17.10)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.9.0)(typescript@5.6.3))
jest-haste-map: 29.7.0
jest-message-util: 29.7.0
jest-regex-util: 29.6.3
@@ -17740,7 +17558,7 @@ snapshots:
dependencies:
'@jest/fake-timers': 29.7.0
'@jest/types': 29.6.3
- '@types/node': 20.17.5
+ '@types/node': 20.17.10
jest-mock: 29.7.0
'@jest/expect-utils@29.7.0':
@@ -17758,7 +17576,7 @@ snapshots:
dependencies:
'@jest/types': 29.6.3
'@sinonjs/fake-timers': 10.3.0
- '@types/node': 20.17.5
+ '@types/node': 20.17.10
jest-message-util: 29.7.0
jest-mock: 29.7.0
jest-util: 29.7.0
@@ -17780,7 +17598,7 @@ snapshots:
'@jest/transform': 29.7.0
'@jest/types': 29.6.3
'@jridgewell/trace-mapping': 0.3.25
- '@types/node': 20.17.5
+ '@types/node': 20.17.10
chalk: 4.1.2
collect-v8-coverage: 1.0.2
exit: 0.1.2
@@ -17855,7 +17673,7 @@ snapshots:
dependencies:
'@types/istanbul-lib-coverage': 2.0.6
'@types/istanbul-reports': 3.0.1
- '@types/node': 20.17.5
+ '@types/node': 20.17.10
'@types/yargs': 15.0.19
chalk: 4.1.2
@@ -17864,7 +17682,7 @@ snapshots:
'@jest/schemas': 29.6.3
'@types/istanbul-lib-coverage': 2.0.6
'@types/istanbul-reports': 3.0.1
- '@types/node': 20.17.5
+ '@types/node': 20.17.10
'@types/yargs': 17.0.33
chalk: 4.1.2
@@ -20229,12 +20047,12 @@ snapshots:
'@rsdoctor/client@0.4.7': {}
- '@rsdoctor/core@0.4.7(@rspack/core@1.0.14(@swc/helpers@0.5.13))(webpack@5.94.0)':
+ '@rsdoctor/core@0.4.7(@rspack/core@1.0.14(@swc/helpers@0.5.13))(webpack@5.94.0(esbuild@0.24.0))':
dependencies:
- '@rsdoctor/graph': 0.4.7(@rspack/core@1.0.14(@swc/helpers@0.5.13))(webpack@5.94.0)
- '@rsdoctor/sdk': 0.4.7(@rspack/core@1.0.14(@swc/helpers@0.5.13))(webpack@5.94.0)
- '@rsdoctor/types': 0.4.7(@rspack/core@1.0.14(@swc/helpers@0.5.13))(webpack@5.94.0)
- '@rsdoctor/utils': 0.4.7(@rspack/core@1.0.14(@swc/helpers@0.5.13))(webpack@5.94.0)
+ '@rsdoctor/graph': 0.4.7(@rspack/core@1.0.14(@swc/helpers@0.5.13))(webpack@5.94.0(esbuild@0.24.0))
+ '@rsdoctor/sdk': 0.4.7(@rspack/core@1.0.14(@swc/helpers@0.5.13))(webpack@5.94.0(esbuild@0.24.0))
+ '@rsdoctor/types': 0.4.7(@rspack/core@1.0.14(@swc/helpers@0.5.13))(webpack@5.94.0(esbuild@0.24.0))
+ '@rsdoctor/utils': 0.4.7(@rspack/core@1.0.14(@swc/helpers@0.5.13))(webpack@5.94.0(esbuild@0.24.0))
axios: 1.7.7
enhanced-resolve: 5.12.0
filesize: 10.1.6
@@ -20252,10 +20070,10 @@ snapshots:
- utf-8-validate
- webpack
- '@rsdoctor/graph@0.4.7(@rspack/core@1.0.14(@swc/helpers@0.5.13))(webpack@5.94.0)':
+ '@rsdoctor/graph@0.4.7(@rspack/core@1.0.14(@swc/helpers@0.5.13))(webpack@5.94.0(esbuild@0.24.0))':
dependencies:
- '@rsdoctor/types': 0.4.7(@rspack/core@1.0.14(@swc/helpers@0.5.13))(webpack@5.94.0)
- '@rsdoctor/utils': 0.4.7(@rspack/core@1.0.14(@swc/helpers@0.5.13))(webpack@5.94.0)
+ '@rsdoctor/types': 0.4.7(@rspack/core@1.0.14(@swc/helpers@0.5.13))(webpack@5.94.0(esbuild@0.24.0))
+ '@rsdoctor/utils': 0.4.7(@rspack/core@1.0.14(@swc/helpers@0.5.13))(webpack@5.94.0(esbuild@0.24.0))
lodash: 4.17.21
socket.io: 4.7.2
source-map: 0.7.4
@@ -20266,13 +20084,13 @@ snapshots:
- utf-8-validate
- webpack
- '@rsdoctor/rspack-plugin@0.4.7(@rspack/core@1.0.14(@swc/helpers@0.5.13))(webpack@5.94.0)':
+ '@rsdoctor/rspack-plugin@0.4.7(@rspack/core@1.0.14(@swc/helpers@0.5.13))(webpack@5.94.0(esbuild@0.24.0))':
dependencies:
- '@rsdoctor/core': 0.4.7(@rspack/core@1.0.14(@swc/helpers@0.5.13))(webpack@5.94.0)
- '@rsdoctor/graph': 0.4.7(@rspack/core@1.0.14(@swc/helpers@0.5.13))(webpack@5.94.0)
- '@rsdoctor/sdk': 0.4.7(@rspack/core@1.0.14(@swc/helpers@0.5.13))(webpack@5.94.0)
- '@rsdoctor/types': 0.4.7(@rspack/core@1.0.14(@swc/helpers@0.5.13))(webpack@5.94.0)
- '@rsdoctor/utils': 0.4.7(@rspack/core@1.0.14(@swc/helpers@0.5.13))(webpack@5.94.0)
+ '@rsdoctor/core': 0.4.7(@rspack/core@1.0.14(@swc/helpers@0.5.13))(webpack@5.94.0(esbuild@0.24.0))
+ '@rsdoctor/graph': 0.4.7(@rspack/core@1.0.14(@swc/helpers@0.5.13))(webpack@5.94.0(esbuild@0.24.0))
+ '@rsdoctor/sdk': 0.4.7(@rspack/core@1.0.14(@swc/helpers@0.5.13))(webpack@5.94.0(esbuild@0.24.0))
+ '@rsdoctor/types': 0.4.7(@rspack/core@1.0.14(@swc/helpers@0.5.13))(webpack@5.94.0(esbuild@0.24.0))
+ '@rsdoctor/utils': 0.4.7(@rspack/core@1.0.14(@swc/helpers@0.5.13))(webpack@5.94.0(esbuild@0.24.0))
'@rspack/core': 1.0.14(@swc/helpers@0.5.13)
lodash: 4.17.21
transitivePeerDependencies:
@@ -20282,12 +20100,12 @@ snapshots:
- utf-8-validate
- webpack
- '@rsdoctor/sdk@0.4.7(@rspack/core@1.0.14(@swc/helpers@0.5.13))(webpack@5.94.0)':
+ '@rsdoctor/sdk@0.4.7(@rspack/core@1.0.14(@swc/helpers@0.5.13))(webpack@5.94.0(esbuild@0.24.0))':
dependencies:
'@rsdoctor/client': 0.4.7
- '@rsdoctor/graph': 0.4.7(@rspack/core@1.0.14(@swc/helpers@0.5.13))(webpack@5.94.0)
- '@rsdoctor/types': 0.4.7(@rspack/core@1.0.14(@swc/helpers@0.5.13))(webpack@5.94.0)
- '@rsdoctor/utils': 0.4.7(@rspack/core@1.0.14(@swc/helpers@0.5.13))(webpack@5.94.0)
+ '@rsdoctor/graph': 0.4.7(@rspack/core@1.0.14(@swc/helpers@0.5.13))(webpack@5.94.0(esbuild@0.24.0))
+ '@rsdoctor/types': 0.4.7(@rspack/core@1.0.14(@swc/helpers@0.5.13))(webpack@5.94.0(esbuild@0.24.0))
+ '@rsdoctor/utils': 0.4.7(@rspack/core@1.0.14(@swc/helpers@0.5.13))(webpack@5.94.0(esbuild@0.24.0))
'@types/fs-extra': 11.0.4
body-parser: 1.20.3
cors: 2.8.5
@@ -20306,20 +20124,20 @@ snapshots:
- utf-8-validate
- webpack
- '@rsdoctor/types@0.4.7(@rspack/core@1.0.14(@swc/helpers@0.5.13))(webpack@5.94.0)':
+ '@rsdoctor/types@0.4.7(@rspack/core@1.0.14(@swc/helpers@0.5.13))(webpack@5.94.0(esbuild@0.24.0))':
dependencies:
'@types/connect': 3.4.38
'@types/estree': 1.0.5
'@types/tapable': 2.2.7
source-map: 0.7.4
- webpack: 5.94.0
+ webpack: 5.94.0(esbuild@0.24.0)
optionalDependencies:
'@rspack/core': 1.0.14(@swc/helpers@0.5.13)
- '@rsdoctor/utils@0.4.7(@rspack/core@1.0.14(@swc/helpers@0.5.13))(webpack@5.94.0)':
+ '@rsdoctor/utils@0.4.7(@rspack/core@1.0.14(@swc/helpers@0.5.13))(webpack@5.94.0(esbuild@0.24.0))':
dependencies:
'@babel/code-frame': 7.25.7
- '@rsdoctor/types': 0.4.7(@rspack/core@1.0.14(@swc/helpers@0.5.13))(webpack@5.94.0)
+ '@rsdoctor/types': 0.4.7(@rspack/core@1.0.14(@swc/helpers@0.5.13))(webpack@5.94.0(esbuild@0.24.0))
'@types/estree': 1.0.5
acorn: 8.14.0
acorn-import-assertions: 1.9.0(acorn@8.14.0)
@@ -20380,11 +20198,11 @@ snapshots:
'@rspack/binding-win32-ia32-msvc': 1.0.14
'@rspack/binding-win32-x64-msvc': 1.0.14
- '@rspack/cli@1.0.14(@rspack/core@1.0.14(@swc/helpers@0.5.13))(@types/express@4.17.21)(webpack@5.94.0)':
+ '@rspack/cli@1.0.14(@rspack/core@1.0.14(@swc/helpers@0.5.13))(@types/express@4.17.21)(webpack@5.94.0(esbuild@0.24.0))':
dependencies:
'@discoveryjs/json-ext': 0.5.7
'@rspack/core': 1.0.14(@swc/helpers@0.5.13)
- '@rspack/dev-server': 1.0.5(@rspack/core@1.0.14(@swc/helpers@0.5.13))(@types/express@4.17.21)(webpack@5.94.0)
+ '@rspack/dev-server': 1.0.5(@rspack/core@1.0.14(@swc/helpers@0.5.13))(@types/express@4.17.21)(webpack@5.94.0(esbuild@0.24.0))
colorette: 2.0.19
exit-hook: 3.2.0
interpret: 3.1.1
@@ -20410,7 +20228,7 @@ snapshots:
optionalDependencies:
'@swc/helpers': 0.5.13
- '@rspack/dev-server@1.0.5(@rspack/core@1.0.14(@swc/helpers@0.5.13))(@types/express@4.17.21)(webpack@5.94.0)':
+ '@rspack/dev-server@1.0.5(@rspack/core@1.0.14(@swc/helpers@0.5.13))(@types/express@4.17.21)(webpack@5.94.0(esbuild@0.24.0))':
dependencies:
'@rspack/core': 1.0.14(@swc/helpers@0.5.13)
chokidar: 3.6.0
@@ -20419,8 +20237,8 @@ snapshots:
http-proxy-middleware: 2.0.6(@types/express@4.17.21)
mime-types: 2.1.35
p-retry: 4.6.2
- webpack-dev-middleware: 7.4.2(webpack@5.94.0)
- webpack-dev-server: 5.0.4(webpack@5.94.0)
+ webpack-dev-middleware: 7.4.2(webpack@5.94.0(esbuild@0.24.0))
+ webpack-dev-server: 5.0.4(webpack@5.94.0(esbuild@0.24.0))
ws: 8.18.0
transitivePeerDependencies:
- '@types/express'
@@ -20647,7 +20465,7 @@ snapshots:
tsx: 4.19.2
zod: 3.23.8
- '@tanstack/router-plugin@1.81.9(vite@5.4.11(@types/node@20.17.5)(terser@5.31.1))(webpack-sources@3.2.3)(webpack@5.94.0)':
+ '@tanstack/router-plugin@1.81.9(vite@5.4.11(@types/node@20.17.10)(terser@5.31.1))(webpack-sources@3.2.3)(webpack@5.94.0(esbuild@0.24.0))':
dependencies:
'@babel/core': 7.26.0
'@babel/generator': 7.26.2
@@ -20668,8 +20486,8 @@ snapshots:
unplugin: 1.15.0(webpack-sources@3.2.3)
zod: 3.23.8
optionalDependencies:
- vite: 5.4.11(@types/node@20.17.5)(terser@5.31.1)
- webpack: 5.94.0
+ vite: 5.4.11(@types/node@20.17.10)(terser@5.31.1)
+ webpack: 5.94.0(esbuild@0.24.0)
transitivePeerDependencies:
- supports-color
- webpack-sources
@@ -20695,25 +20513,25 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@tanstack/start@1.81.9(@types/node@18.19.64)(ioredis@5.4.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(terser@5.31.1)(typescript@5.6.3)(vite@5.4.11(@types/node@20.17.5)(terser@5.31.1))(webpack-sources@3.2.3)(webpack@5.94.0)':
+ '@tanstack/start@1.81.9(@types/node@22.9.0)(ioredis@5.4.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(terser@5.31.1)(typescript@5.6.3)(vite@5.4.11(@types/node@20.17.10)(terser@5.31.1))(webpack-sources@3.2.3)(webpack@5.94.0(esbuild@0.24.0))':
dependencies:
'@tanstack/react-cross-context': 1.81.9(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@tanstack/react-router': 1.81.9(@tanstack/router-generator@1.81.9)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@tanstack/router-generator': 1.81.9
- '@tanstack/router-plugin': 1.81.9(vite@5.4.11(@types/node@20.17.5)(terser@5.31.1))(webpack-sources@3.2.3)(webpack@5.94.0)
+ '@tanstack/router-plugin': 1.81.9(vite@5.4.11(@types/node@20.17.10)(terser@5.31.1))(webpack-sources@3.2.3)(webpack@5.94.0(esbuild@0.24.0))
'@tanstack/start-vite-plugin': 1.81.9
'@vinxi/react': 0.2.5
- '@vinxi/react-server-dom': 0.0.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@5.4.11(@types/node@20.17.5)(terser@5.31.1))
- '@vinxi/server-components': 0.4.3(vinxi@0.4.3(@types/node@18.19.64)(ioredis@5.4.1)(terser@5.31.1)(typescript@5.6.3)(webpack-sources@3.2.3))
- '@vinxi/server-functions': 0.4.3(vinxi@0.4.3(@types/node@18.19.64)(ioredis@5.4.1)(terser@5.31.1)(typescript@5.6.3)(webpack-sources@3.2.3))
- '@vitejs/plugin-react': 4.3.3(vite@5.4.11(@types/node@20.17.5)(terser@5.31.1))
+ '@vinxi/react-server-dom': 0.0.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@5.4.11(@types/node@20.17.10)(terser@5.31.1))
+ '@vinxi/server-components': 0.4.3(vinxi@0.4.3(@types/node@22.9.0)(ioredis@5.4.1)(terser@5.31.1)(typescript@5.6.3)(webpack-sources@3.2.3))
+ '@vinxi/server-functions': 0.4.3(vinxi@0.4.3(@types/node@22.9.0)(ioredis@5.4.1)(terser@5.31.1)(typescript@5.6.3)(webpack-sources@3.2.3))
+ '@vitejs/plugin-react': 4.3.3(vite@5.4.11(@types/node@20.17.10)(terser@5.31.1))
import-meta-resolve: 4.1.0
isbot: 5.1.17
jsesc: 3.0.2
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
tiny-invariant: 1.3.3
- vinxi: 0.4.3(@types/node@18.19.64)(ioredis@5.4.1)(terser@5.31.1)(typescript@5.6.3)(webpack-sources@3.2.3)
+ vinxi: 0.4.3(@types/node@22.9.0)(ioredis@5.4.1)(terser@5.31.1)(typescript@5.6.3)(webpack-sources@3.2.3)
zod: 3.23.8
transitivePeerDependencies:
- '@azure/app-configuration'
@@ -20779,7 +20597,7 @@ snapshots:
lz-string: 1.5.0
pretty-format: 27.5.1
- '@testing-library/jest-dom@6.4.6(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@20.17.5)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.5)(typescript@5.6.3)))(vitest@2.1.4(@edge-runtime/vm@4.0.4)(@types/node@20.17.5)(jsdom@24.1.3)(msw@2.6.4(@types/node@20.17.5)(typescript@5.6.3))(terser@5.31.1))':
+ '@testing-library/jest-dom@6.4.6(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@20.17.10)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.10)(typescript@5.6.3)))(vitest@2.1.4(@edge-runtime/vm@4.0.4)(@types/node@20.17.10)(jsdom@24.1.3)(msw@2.6.4(@types/node@20.17.10)(typescript@5.6.3))(terser@5.31.1))':
dependencies:
'@adobe/css-tools': 4.4.0
'@babel/runtime': 7.26.0
@@ -20792,8 +20610,8 @@ snapshots:
optionalDependencies:
'@jest/globals': 29.7.0
'@types/jest': 29.5.12
- jest: 29.7.0(@types/node@20.17.5)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.5)(typescript@5.6.3))
- vitest: 2.1.4(@edge-runtime/vm@4.0.4)(@types/node@20.17.5)(jsdom@24.1.3)(msw@2.6.4(@types/node@20.17.5)(typescript@5.6.3))(terser@5.31.1)
+ jest: 29.7.0(@types/node@20.17.10)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.10)(typescript@5.6.3))
+ vitest: 2.1.4(@edge-runtime/vm@4.0.4)(@types/node@20.17.10)(jsdom@24.1.3)(msw@2.6.4(@types/node@20.17.10)(typescript@5.6.3))(terser@5.31.1)
'@testing-library/react@16.0.0(@testing-library/dom@10.1.0)(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
@@ -20863,16 +20681,16 @@ snapshots:
'@types/better-sqlite3@7.6.11':
dependencies:
- '@types/node': 20.17.5
+ '@types/node': 20.17.10
'@types/body-parser@1.19.2':
dependencies:
'@types/connect': 3.4.38
- '@types/node': 20.17.5
+ '@types/node': 20.17.10
'@types/bonjour@3.5.13':
dependencies:
- '@types/node': 20.17.5
+ '@types/node': 20.17.10
'@types/braces@3.0.4': {}
@@ -20884,15 +20702,15 @@ snapshots:
'@types/connect-history-api-fallback@1.5.4':
dependencies:
'@types/express-serve-static-core': 4.17.35
- '@types/node': 20.17.5
+ '@types/node': 20.17.10
'@types/connect@3.4.38':
dependencies:
- '@types/node': 20.17.5
+ '@types/node': 20.17.10
'@types/conventional-commits-parser@5.0.0':
dependencies:
- '@types/node': 20.17.5
+ '@types/node': 20.17.10
'@types/cookie@0.4.1': {}
@@ -20902,11 +20720,11 @@ snapshots:
'@types/cors@2.8.17':
dependencies:
- '@types/node': 20.17.5
+ '@types/node': 20.17.10
'@types/cross-spawn@6.0.3':
dependencies:
- '@types/node': 20.17.5
+ '@types/node': 20.17.10
'@types/crypto-js@4.2.2': {}
@@ -20920,7 +20738,7 @@ snapshots:
'@types/express-serve-static-core@4.17.35':
dependencies:
- '@types/node': 20.17.5
+ '@types/node': 20.17.10
'@types/qs': 6.9.7
'@types/range-parser': 1.2.4
'@types/send': 0.17.1
@@ -20941,13 +20759,13 @@ snapshots:
'@types/fs-extra@11.0.4':
dependencies:
'@types/jsonfile': 6.1.1
- '@types/node': 20.17.5
+ '@types/node': 20.17.10
'@types/glob-to-regexp@0.4.4': {}
'@types/graceful-fs@4.1.8':
dependencies:
- '@types/node': 20.17.5
+ '@types/node': 20.17.10
'@types/gradient-string@1.1.6':
dependencies:
@@ -20963,7 +20781,7 @@ snapshots:
'@types/http-proxy@1.17.15':
dependencies:
- '@types/node': 20.17.5
+ '@types/node': 20.17.10
'@types/istanbul-lib-coverage@2.0.6': {}
@@ -20994,7 +20812,7 @@ snapshots:
'@types/jsdom@20.0.1':
dependencies:
- '@types/node': 20.17.5
+ '@types/node': 20.17.10
'@types/tough-cookie': 4.0.5
parse5: 7.2.1
@@ -21004,7 +20822,7 @@ snapshots:
'@types/jsonfile@6.1.1':
dependencies:
- '@types/node': 20.17.5
+ '@types/node': 20.17.10
'@types/lodash@4.14.198': {}
@@ -21030,7 +20848,7 @@ snapshots:
'@types/node-forge@1.3.11':
dependencies:
- '@types/node': 20.17.5
+ '@types/node': 20.17.10
'@types/node@12.20.55': {}
@@ -21038,14 +20856,13 @@ snapshots:
dependencies:
undici-types: 5.26.5
- '@types/node@20.17.5':
+ '@types/node@20.17.10':
dependencies:
undici-types: 6.19.8
'@types/node@22.9.0':
dependencies:
undici-types: 6.19.8
- optional: true
'@types/normalize-package-data@2.4.4': {}
@@ -21079,7 +20896,7 @@ snapshots:
'@types/send@0.17.1':
dependencies:
'@types/mime': 1.3.2
- '@types/node': 20.17.5
+ '@types/node': 20.17.10
'@types/serve-index@1.9.4':
dependencies:
@@ -21088,7 +20905,7 @@ snapshots:
'@types/serve-static@1.15.7':
dependencies:
'@types/http-errors': 2.0.4
- '@types/node': 20.17.5
+ '@types/node': 20.17.10
'@types/send': 0.17.1
'@types/sinonjs__fake-timers@8.1.1': {}
@@ -21097,7 +20914,7 @@ snapshots:
'@types/sockjs@0.3.36':
dependencies:
- '@types/node': 20.17.5
+ '@types/node': 20.17.10
'@types/stack-utils@2.0.1': {}
@@ -21107,7 +20924,7 @@ snapshots:
dependencies:
'@types/cookiejar': 2.1.5
'@types/methods': 1.1.4
- '@types/node': 20.17.5
+ '@types/node': 20.17.10
'@types/supertest@6.0.2':
dependencies:
@@ -21126,9 +20943,9 @@ snapshots:
'@types/webextension-polyfill@0.10.7': {}
- '@types/webpack-dev-server@4.7.2(webpack@5.94.0)':
+ '@types/webpack-dev-server@4.7.2(webpack@5.94.0(esbuild@0.24.0))':
dependencies:
- webpack-dev-server: 5.0.4(webpack@5.94.0)
+ webpack-dev-server: 5.0.4(webpack@5.94.0(esbuild@0.24.0))
transitivePeerDependencies:
- bufferutil
- debug
@@ -21143,7 +20960,7 @@ snapshots:
'@types/ws@8.5.12':
dependencies:
- '@types/node': 20.17.5
+ '@types/node': 20.17.10
'@types/yargs-parser@21.0.3': {}
@@ -21161,7 +20978,7 @@ snapshots:
'@types/yauzl@2.10.3':
dependencies:
- '@types/node': 20.17.5
+ '@types/node': 20.17.10
optional: true
'@typescript-eslint/eslint-plugin@6.9.0(@typescript-eslint/parser@6.21.0(eslint@8.49.0)(typescript@5.6.3))(eslint@8.49.0)(typescript@5.6.3)':
@@ -21585,7 +21402,7 @@ snapshots:
untun: 0.1.3
uqr: 0.1.2
- '@vinxi/plugin-directives@0.4.3(vinxi@0.4.3(@types/node@18.19.64)(ioredis@5.4.1)(terser@5.31.1)(typescript@5.6.3)(webpack-sources@3.2.3))':
+ '@vinxi/plugin-directives@0.4.3(vinxi@0.4.3(@types/node@22.9.0)(ioredis@5.4.1)(terser@5.31.1)(typescript@5.6.3)(webpack-sources@3.2.3))':
dependencies:
'@babel/parser': 7.26.2
acorn: 8.14.0
@@ -21596,47 +21413,47 @@ snapshots:
magicast: 0.2.11
recast: 0.23.9
tslib: 2.8.1
- vinxi: 0.4.3(@types/node@18.19.64)(ioredis@5.4.1)(terser@5.31.1)(typescript@5.6.3)(webpack-sources@3.2.3)
+ vinxi: 0.4.3(@types/node@22.9.0)(ioredis@5.4.1)(terser@5.31.1)(typescript@5.6.3)(webpack-sources@3.2.3)
- '@vinxi/react-server-dom@0.0.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@5.4.11(@types/node@20.17.5)(terser@5.31.1))':
+ '@vinxi/react-server-dom@0.0.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@5.4.11(@types/node@20.17.10)(terser@5.31.1))':
dependencies:
acorn-loose: 8.3.0
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- vite: 5.4.11(@types/node@20.17.5)(terser@5.31.1)
+ vite: 5.4.11(@types/node@20.17.10)(terser@5.31.1)
'@vinxi/react@0.2.5': {}
- '@vinxi/server-components@0.4.3(vinxi@0.4.3(@types/node@18.19.64)(ioredis@5.4.1)(terser@5.31.1)(typescript@5.6.3)(webpack-sources@3.2.3))':
+ '@vinxi/server-components@0.4.3(vinxi@0.4.3(@types/node@22.9.0)(ioredis@5.4.1)(terser@5.31.1)(typescript@5.6.3)(webpack-sources@3.2.3))':
dependencies:
- '@vinxi/plugin-directives': 0.4.3(vinxi@0.4.3(@types/node@18.19.64)(ioredis@5.4.1)(terser@5.31.1)(typescript@5.6.3)(webpack-sources@3.2.3))
+ '@vinxi/plugin-directives': 0.4.3(vinxi@0.4.3(@types/node@22.9.0)(ioredis@5.4.1)(terser@5.31.1)(typescript@5.6.3)(webpack-sources@3.2.3))
acorn: 8.14.0
acorn-loose: 8.3.0
acorn-typescript: 1.4.13(acorn@8.14.0)
astring: 1.8.6
magicast: 0.2.11
recast: 0.23.9
- vinxi: 0.4.3(@types/node@18.19.64)(ioredis@5.4.1)(terser@5.31.1)(typescript@5.6.3)(webpack-sources@3.2.3)
+ vinxi: 0.4.3(@types/node@22.9.0)(ioredis@5.4.1)(terser@5.31.1)(typescript@5.6.3)(webpack-sources@3.2.3)
- '@vinxi/server-functions@0.4.3(vinxi@0.4.3(@types/node@18.19.64)(ioredis@5.4.1)(terser@5.31.1)(typescript@5.6.3)(webpack-sources@3.2.3))':
+ '@vinxi/server-functions@0.4.3(vinxi@0.4.3(@types/node@22.9.0)(ioredis@5.4.1)(terser@5.31.1)(typescript@5.6.3)(webpack-sources@3.2.3))':
dependencies:
- '@vinxi/plugin-directives': 0.4.3(vinxi@0.4.3(@types/node@18.19.64)(ioredis@5.4.1)(terser@5.31.1)(typescript@5.6.3)(webpack-sources@3.2.3))
+ '@vinxi/plugin-directives': 0.4.3(vinxi@0.4.3(@types/node@22.9.0)(ioredis@5.4.1)(terser@5.31.1)(typescript@5.6.3)(webpack-sources@3.2.3))
acorn: 8.14.0
acorn-loose: 8.3.0
acorn-typescript: 1.4.13(acorn@8.14.0)
astring: 1.8.6
magicast: 0.2.11
recast: 0.23.9
- vinxi: 0.4.3(@types/node@18.19.64)(ioredis@5.4.1)(terser@5.31.1)(typescript@5.6.3)(webpack-sources@3.2.3)
+ vinxi: 0.4.3(@types/node@22.9.0)(ioredis@5.4.1)(terser@5.31.1)(typescript@5.6.3)(webpack-sources@3.2.3)
- '@vitejs/plugin-react@4.3.3(vite@5.4.11(@types/node@20.17.5)(terser@5.31.1))':
+ '@vitejs/plugin-react@4.3.3(vite@5.4.11(@types/node@20.17.10)(terser@5.31.1))':
dependencies:
'@babel/core': 7.26.0
'@babel/plugin-transform-react-jsx-self': 7.25.9(@babel/core@7.26.0)
'@babel/plugin-transform-react-jsx-source': 7.25.9(@babel/core@7.26.0)
'@types/babel__core': 7.20.5
react-refresh: 0.14.2
- vite: 5.4.11(@types/node@20.17.5)(terser@5.31.1)
+ vite: 5.4.11(@types/node@20.17.10)(terser@5.31.1)
transitivePeerDependencies:
- supports-color
@@ -21666,7 +21483,7 @@ snapshots:
vite: 5.4.11(@types/node@22.9.0)(terser@5.31.1)
vue: 3.5.12(typescript@5.6.3)
- '@vitest/coverage-v8@2.1.4(vitest@2.1.4(@edge-runtime/vm@4.0.4)(@types/node@20.17.5)(jsdom@24.1.3)(msw@2.6.4(@types/node@20.17.5)(typescript@5.6.3))(terser@5.31.1))':
+ '@vitest/coverage-v8@2.1.4(vitest@2.1.4(@edge-runtime/vm@4.0.4)(@types/node@20.17.10)(jsdom@24.1.3)(msw@2.6.4(@types/node@20.17.10)(typescript@5.6.3))(terser@5.31.1))':
dependencies:
'@ampproject/remapping': 2.3.0
'@bcoe/v8-coverage': 0.2.3
@@ -21680,7 +21497,7 @@ snapshots:
std-env: 3.7.0
test-exclude: 7.0.1
tinyrainbow: 1.2.0
- vitest: 2.1.4(@edge-runtime/vm@4.0.4)(@types/node@20.17.5)(jsdom@24.1.3)(msw@2.6.4(@types/node@20.17.5)(typescript@5.6.3))(terser@5.31.1)
+ vitest: 2.1.4(@edge-runtime/vm@4.0.4)(@types/node@20.17.10)(jsdom@24.1.3)(msw@2.6.4(@types/node@20.17.10)(typescript@5.6.3))(terser@5.31.1)
transitivePeerDependencies:
- supports-color
@@ -21691,23 +21508,23 @@ snapshots:
chai: 5.1.2
tinyrainbow: 1.2.0
- '@vitest/mocker@2.1.4(msw@2.6.4(@types/node@18.19.64)(typescript@5.6.3))(vite@5.4.11(@types/node@20.17.5)(terser@5.31.1))':
+ '@vitest/mocker@2.1.4(msw@2.6.4(@types/node@20.17.10)(typescript@5.6.3))(vite@5.4.11(@types/node@20.17.10)(terser@5.31.1))':
dependencies:
'@vitest/spy': 2.1.4
estree-walker: 3.0.3
magic-string: 0.30.12
optionalDependencies:
- msw: 2.6.4(@types/node@18.19.64)(typescript@5.6.3)
- vite: 5.4.11(@types/node@20.17.5)(terser@5.31.1)
+ msw: 2.6.4(@types/node@20.17.10)(typescript@5.6.3)
+ vite: 5.4.11(@types/node@20.17.10)(terser@5.31.1)
- '@vitest/mocker@2.1.4(msw@2.6.4(@types/node@20.17.5)(typescript@5.6.3))(vite@5.4.11(@types/node@20.17.5)(terser@5.31.1))':
+ '@vitest/mocker@2.1.4(msw@2.6.4(@types/node@22.9.0)(typescript@5.6.3))(vite@5.4.11(@types/node@20.17.10)(terser@5.31.1))':
dependencies:
'@vitest/spy': 2.1.4
estree-walker: 3.0.3
magic-string: 0.30.12
optionalDependencies:
- msw: 2.6.4(@types/node@20.17.5)(typescript@5.6.3)
- vite: 5.4.11(@types/node@20.17.5)(terser@5.31.1)
+ msw: 2.6.4(@types/node@22.9.0)(typescript@5.6.3)
+ vite: 5.4.11(@types/node@20.17.10)(terser@5.31.1)
'@vitest/pretty-format@2.1.4':
dependencies:
@@ -23020,7 +22837,7 @@ snapshots:
chrome-launcher@0.15.2:
dependencies:
- '@types/node': 20.17.5
+ '@types/node': 20.17.10
escape-string-regexp: 4.0.0
is-wsl: 2.2.0
lighthouse-logger: 1.4.2
@@ -23031,7 +22848,7 @@ snapshots:
chromium-edge-launcher@1.0.0:
dependencies:
- '@types/node': 20.17.5
+ '@types/node': 20.17.10
escape-string-regexp: 4.0.0
is-wsl: 2.2.0
lighthouse-logger: 1.4.2
@@ -23418,9 +23235,9 @@ snapshots:
corser@2.0.1: {}
- cosmiconfig-typescript-loader@5.0.0(@types/node@20.17.5)(cosmiconfig@9.0.0(typescript@5.6.3))(typescript@5.6.3):
+ cosmiconfig-typescript-loader@5.0.0(@types/node@20.17.10)(cosmiconfig@9.0.0(typescript@5.6.3))(typescript@5.6.3):
dependencies:
- '@types/node': 20.17.5
+ '@types/node': 20.17.10
cosmiconfig: 9.0.0(typescript@5.6.3)
jiti: 1.21.6
typescript: 5.6.3
@@ -23478,13 +23295,13 @@ snapshots:
crc-32: 1.2.2
readable-stream: 4.5.2
- create-jest@29.7.0(@types/node@20.17.5)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.5)(typescript@5.6.3)):
+ create-jest@29.7.0(@types/node@20.17.10)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.10)(typescript@5.6.3)):
dependencies:
'@jest/types': 29.6.3
chalk: 4.1.2
exit: 0.1.2
graceful-fs: 4.2.11
- jest-config: 29.7.0(@types/node@20.17.5)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.5)(typescript@5.6.3))
+ jest-config: 29.7.0(@types/node@20.17.10)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.10)(typescript@5.6.3))
jest-util: 29.7.0
prompts: 2.4.2
transitivePeerDependencies:
@@ -24141,7 +23958,7 @@ snapshots:
dependencies:
'@types/cookie': 0.4.1
'@types/cors': 2.8.17
- '@types/node': 20.17.5
+ '@types/node': 20.17.10
accepts: 1.3.8
base64id: 2.0.0
cookie: 0.4.2
@@ -26624,10 +26441,10 @@ snapshots:
jest-util: 29.7.0
p-limit: 3.1.0
- jest-chrome@0.8.0(jest@29.7.0(@types/node@20.17.5)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.5)(typescript@5.6.3))):
+ jest-chrome@0.8.0(jest@29.7.0(@types/node@20.17.10)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.10)(typescript@5.6.3))):
dependencies:
'@types/chrome': 0.0.114
- jest: 29.7.0(@types/node@20.17.5)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.5)(typescript@5.6.3))
+ jest: 29.7.0(@types/node@20.17.10)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.10)(typescript@5.6.3))
jest-circus@29.7.0(babel-plugin-macros@3.1.0):
dependencies:
@@ -26635,7 +26452,7 @@ snapshots:
'@jest/expect': 29.7.0
'@jest/test-result': 29.7.0
'@jest/types': 29.6.3
- '@types/node': 20.17.5
+ '@types/node': 20.17.10
chalk: 4.1.2
co: 4.6.0
dedent: 1.5.3(babel-plugin-macros@3.1.0)
@@ -26655,16 +26472,16 @@ snapshots:
- babel-plugin-macros
- supports-color
- jest-cli@29.7.0(@types/node@20.17.5)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.5)(typescript@5.6.3)):
+ jest-cli@29.7.0(@types/node@20.17.10)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.10)(typescript@5.6.3)):
dependencies:
- '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.5)(typescript@5.6.3))
+ '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.10)(typescript@5.6.3))
'@jest/test-result': 29.7.0
'@jest/types': 29.6.3
chalk: 4.1.2
- create-jest: 29.7.0(@types/node@20.17.5)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.5)(typescript@5.6.3))
+ create-jest: 29.7.0(@types/node@20.17.10)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.10)(typescript@5.6.3))
exit: 0.1.2
import-local: 3.1.0
- jest-config: 29.7.0(@types/node@20.17.5)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.5)(typescript@5.6.3))
+ jest-config: 29.7.0(@types/node@20.17.10)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.10)(typescript@5.6.3))
jest-util: 29.7.0
jest-validate: 29.7.0
yargs: 17.7.2
@@ -26694,7 +26511,7 @@ snapshots:
- ts-node
optional: true
- jest-config@29.7.0(@types/node@20.17.5)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.5)(typescript@5.6.3)):
+ jest-config@29.7.0(@types/node@20.17.10)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.10)(typescript@5.6.3)):
dependencies:
'@babel/core': 7.26.0
'@jest/test-sequencer': 29.7.0
@@ -26719,13 +26536,13 @@ snapshots:
slash: 3.0.0
strip-json-comments: 3.1.1
optionalDependencies:
- '@types/node': 20.17.5
- ts-node: 10.9.2(@types/node@20.17.5)(typescript@5.6.3)
+ '@types/node': 20.17.10
+ ts-node: 10.9.2(@types/node@20.17.10)(typescript@5.6.3)
transitivePeerDependencies:
- babel-plugin-macros
- supports-color
- jest-config@29.7.0(@types/node@20.17.5)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.9.0)(typescript@5.6.3)):
+ jest-config@29.7.0(@types/node@20.17.10)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.9.0)(typescript@5.6.3)):
dependencies:
'@babel/core': 7.26.0
'@jest/test-sequencer': 29.7.0
@@ -26750,7 +26567,7 @@ snapshots:
slash: 3.0.0
strip-json-comments: 3.1.1
optionalDependencies:
- '@types/node': 20.17.5
+ '@types/node': 20.17.10
ts-node: 10.9.2(@types/node@22.9.0)(typescript@5.6.3)
transitivePeerDependencies:
- babel-plugin-macros
@@ -26814,7 +26631,7 @@ snapshots:
'@jest/fake-timers': 29.7.0
'@jest/types': 29.6.3
'@types/jsdom': 20.0.1
- '@types/node': 20.17.5
+ '@types/node': 20.17.10
jest-mock: 29.7.0
jest-util: 29.7.0
jsdom: 20.0.3
@@ -26828,7 +26645,7 @@ snapshots:
'@jest/environment': 29.7.0
'@jest/fake-timers': 29.7.0
'@jest/types': 29.6.3
- '@types/node': 20.17.5
+ '@types/node': 20.17.10
jest-mock: 29.7.0
jest-util: 29.7.0
@@ -26838,7 +26655,7 @@ snapshots:
dependencies:
'@jest/types': 29.6.3
'@types/graceful-fs': 4.1.8
- '@types/node': 20.17.5
+ '@types/node': 20.17.10
anymatch: 3.1.3
fb-watchman: 2.0.2
graceful-fs: 4.2.11
@@ -26877,7 +26694,7 @@ snapshots:
jest-mock@29.7.0:
dependencies:
'@jest/types': 29.6.3
- '@types/node': 20.17.5
+ '@types/node': 20.17.10
jest-util: 29.7.0
jest-pnp-resolver@1.2.3(jest-resolve@29.7.0):
@@ -26912,7 +26729,7 @@ snapshots:
'@jest/test-result': 29.7.0
'@jest/transform': 29.7.0
'@jest/types': 29.6.3
- '@types/node': 20.17.5
+ '@types/node': 20.17.10
chalk: 4.1.2
emittery: 0.13.1
graceful-fs: 4.2.11
@@ -26940,7 +26757,7 @@ snapshots:
'@jest/test-result': 29.7.0
'@jest/transform': 29.7.0
'@jest/types': 29.6.3
- '@types/node': 20.17.5
+ '@types/node': 20.17.10
chalk: 4.1.2
cjs-module-lexer: 1.2.3
collect-v8-coverage: 1.0.2
@@ -26986,7 +26803,7 @@ snapshots:
jest-util@29.7.0:
dependencies:
'@jest/types': 29.6.3
- '@types/node': 20.17.5
+ '@types/node': 20.17.10
chalk: 4.1.2
ci-info: 3.9.0
graceful-fs: 4.2.11
@@ -27005,7 +26822,7 @@ snapshots:
dependencies:
'@jest/test-result': 29.7.0
'@jest/types': 29.6.3
- '@types/node': 20.17.5
+ '@types/node': 20.17.10
ansi-escapes: 4.3.2
chalk: 4.1.2
emittery: 0.13.1
@@ -27014,23 +26831,23 @@ snapshots:
jest-worker@27.5.1:
dependencies:
- '@types/node': 20.17.5
+ '@types/node': 20.17.10
merge-stream: 2.0.0
supports-color: 8.1.1
jest-worker@29.7.0:
dependencies:
- '@types/node': 20.17.5
+ '@types/node': 20.17.10
jest-util: 29.7.0
merge-stream: 2.0.0
supports-color: 8.1.1
- jest@29.7.0(@types/node@20.17.5)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.5)(typescript@5.6.3)):
+ jest@29.7.0(@types/node@20.17.10)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.10)(typescript@5.6.3)):
dependencies:
- '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.5)(typescript@5.6.3))
+ '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.10)(typescript@5.6.3))
'@jest/types': 29.6.3
import-local: 3.1.0
- jest-cli: 29.7.0(@types/node@20.17.5)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.5)(typescript@5.6.3))
+ jest-cli: 29.7.0(@types/node@20.17.10)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.10)(typescript@5.6.3))
transitivePeerDependencies:
- '@types/node'
- babel-plugin-macros
@@ -27728,7 +27545,7 @@ snapshots:
cli-highlight: 2.1.11
cli-table3: 0.6.5
marked: 9.1.6
- node-emoji: 2.1.3
+ node-emoji: 2.2.0
supports-hyperlinks: 3.1.0
marked-terminal@https://codeload.github.com/jescalan/marked-terminal/tar.gz/44f5ab42076e16937f56d645d3d7264675558ea1(marked@11.2.0):
@@ -27738,7 +27555,7 @@ snapshots:
cli-highlight: 2.1.11
cli-table3: 0.6.5
marked: 11.2.0
- node-emoji: 2.1.3
+ node-emoji: 2.2.0
supports-hyperlinks: 3.1.0
marked@11.2.0: {}
@@ -28414,12 +28231,12 @@ snapshots:
ms@2.1.3: {}
- msw@2.6.4(@types/node@18.19.64)(typescript@5.6.3):
+ msw@2.6.4(@types/node@20.17.10)(typescript@5.6.3):
dependencies:
'@bundled-es-modules/cookie': 2.0.1
'@bundled-es-modules/statuses': 1.0.1
'@bundled-es-modules/tough-cookie': 0.1.6
- '@inquirer/confirm': 5.0.2(@types/node@18.19.64)
+ '@inquirer/confirm': 5.0.2(@types/node@20.17.10)
'@mswjs/interceptors': 0.36.10
'@open-draft/deferred-promise': 2.2.0
'@open-draft/until': 2.1.0
@@ -28438,13 +28255,14 @@ snapshots:
typescript: 5.6.3
transitivePeerDependencies:
- '@types/node'
+ optional: true
- msw@2.6.4(@types/node@20.17.5)(typescript@5.6.3):
+ msw@2.6.4(@types/node@22.9.0)(typescript@5.6.3):
dependencies:
'@bundled-es-modules/cookie': 2.0.1
'@bundled-es-modules/statuses': 1.0.1
'@bundled-es-modules/tough-cookie': 0.1.6
- '@inquirer/confirm': 5.0.2(@types/node@20.17.5)
+ '@inquirer/confirm': 5.0.2(@types/node@22.9.0)
'@mswjs/interceptors': 0.36.10
'@open-draft/deferred-promise': 2.2.0
'@open-draft/until': 2.1.0
@@ -28463,7 +28281,6 @@ snapshots:
typescript: 5.6.3
transitivePeerDependencies:
- '@types/node'
- optional: true
muggle-string@0.4.1: {}
@@ -28662,7 +28479,7 @@ snapshots:
node-domexception@1.0.0: {}
- node-emoji@2.1.3:
+ node-emoji@2.2.0:
dependencies:
'@sindresorhus/is': 4.6.0
char-regex: 1.0.2
@@ -31530,14 +31347,16 @@ snapshots:
ansi-escapes: 5.0.0
supports-hyperlinks: 2.3.0
- terser-webpack-plugin@5.3.10(webpack@5.94.0):
+ terser-webpack-plugin@5.3.10(esbuild@0.24.0)(webpack@5.94.0(esbuild@0.24.0)):
dependencies:
'@jridgewell/trace-mapping': 0.3.25
jest-worker: 27.5.1
schema-utils: 3.3.0
serialize-javascript: 6.0.2
terser: 5.31.1
- webpack: 5.94.0
+ webpack: 5.94.0(esbuild@0.24.0)
+ optionalDependencies:
+ esbuild: 0.24.0
terser@5.31.1:
dependencies:
@@ -31702,12 +31521,12 @@ snapshots:
ts-interface-checker@0.1.13: {}
- ts-jest@29.2.5(@babel/core@7.26.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.0))(jest@29.7.0(@types/node@20.17.5)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.5)(typescript@5.6.3)))(typescript@5.6.3):
+ ts-jest@29.2.5(@babel/core@7.26.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.0))(esbuild@0.24.0)(jest@29.7.0(@types/node@20.17.10)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.10)(typescript@5.6.3)))(typescript@5.6.3):
dependencies:
bs-logger: 0.2.6
ejs: 3.1.10
fast-json-stable-stringify: 2.1.0
- jest: 29.7.0(@types/node@20.17.5)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.5)(typescript@5.6.3))
+ jest: 29.7.0(@types/node@20.17.10)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.10)(typescript@5.6.3))
jest-util: 29.7.0
json5: 2.2.3
lodash.memoize: 4.1.2
@@ -31720,8 +31539,9 @@ snapshots:
'@jest/transform': 29.7.0
'@jest/types': 29.6.3
babel-jest: 29.7.0(@babel/core@7.26.0)
+ esbuild: 0.24.0
- ts-loader@9.5.1(typescript@5.6.3)(webpack@5.94.0):
+ ts-loader@9.5.1(typescript@5.6.3)(webpack@5.94.0(esbuild@0.24.0)):
dependencies:
chalk: 4.1.2
enhanced-resolve: 5.17.1
@@ -31729,16 +31549,16 @@ snapshots:
semver: 7.6.3
source-map: 0.7.4
typescript: 5.6.3
- webpack: 5.94.0
+ webpack: 5.94.0(esbuild@0.24.0)
- ts-node@10.9.2(@types/node@20.17.5)(typescript@5.6.3):
+ ts-node@10.9.2(@types/node@20.17.10)(typescript@5.6.3):
dependencies:
'@cspotcode/source-map-support': 0.8.1
'@tsconfig/node10': 1.0.11
'@tsconfig/node12': 1.0.11
'@tsconfig/node14': 1.0.3
'@tsconfig/node16': 1.0.4
- '@types/node': 20.17.5
+ '@types/node': 20.17.10
acorn: 8.14.0
acorn-walk: 8.3.4
arg: 4.1.3
@@ -32389,7 +32209,7 @@ snapshots:
'@types/unist': 3.0.3
vfile-message: 4.0.2
- vinxi@0.4.3(@types/node@18.19.64)(ioredis@5.4.1)(terser@5.31.1)(typescript@5.6.3)(webpack-sources@3.2.3):
+ vinxi@0.4.3(@types/node@22.9.0)(ioredis@5.4.1)(terser@5.31.1)(typescript@5.6.3)(webpack-sources@3.2.3):
dependencies:
'@babel/core': 7.26.0
'@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.0)
@@ -32423,7 +32243,7 @@ snapshots:
unctx: 2.3.1(webpack-sources@3.2.3)
unenv: 1.10.0
unstorage: 1.13.1(ioredis@5.4.1)
- vite: 5.4.11(@types/node@18.19.64)(terser@5.31.1)
+ vite: 5.4.11(@types/node@22.9.0)(terser@5.31.1)
zod: 3.23.8
transitivePeerDependencies:
- '@azure/app-configuration'
@@ -32464,29 +32284,12 @@ snapshots:
dependencies:
vite: 5.4.11(@types/node@22.9.0)(terser@5.31.1)
- vite-node@2.1.4(@types/node@18.19.64)(terser@5.31.1):
- dependencies:
- cac: 6.7.14
- debug: 4.3.7(supports-color@8.1.1)
- pathe: 1.1.2
- vite: 5.4.11(@types/node@18.19.64)(terser@5.31.1)
- transitivePeerDependencies:
- - '@types/node'
- - less
- - lightningcss
- - sass
- - sass-embedded
- - stylus
- - sugarss
- - supports-color
- - terser
-
- vite-node@2.1.4(@types/node@20.17.5)(terser@5.31.1):
+ vite-node@2.1.4(@types/node@20.17.10)(terser@5.31.1):
dependencies:
cac: 6.7.14
debug: 4.3.7(supports-color@8.1.1)
pathe: 1.1.2
- vite: 5.4.11(@types/node@20.17.5)(terser@5.31.1)
+ vite: 5.4.11(@types/node@20.17.10)(terser@5.31.1)
transitivePeerDependencies:
- '@types/node'
- less
@@ -32570,23 +32373,13 @@ snapshots:
transitivePeerDependencies:
- supports-color
- vite@5.4.11(@types/node@18.19.64)(terser@5.31.1):
- dependencies:
- esbuild: 0.21.5
- postcss: 8.4.49
- rollup: 4.26.0
- optionalDependencies:
- '@types/node': 18.19.64
- fsevents: 2.3.3
- terser: 5.31.1
-
- vite@5.4.11(@types/node@20.17.5)(terser@5.31.1):
+ vite@5.4.11(@types/node@20.17.10)(terser@5.31.1):
dependencies:
esbuild: 0.21.5
postcss: 8.4.49
rollup: 4.26.0
optionalDependencies:
- '@types/node': 20.17.5
+ '@types/node': 20.17.10
fsevents: 2.3.3
terser: 5.31.1
@@ -32604,22 +32397,22 @@ snapshots:
optionalDependencies:
vite: 5.4.11(@types/node@22.9.0)(terser@5.31.1)
- vitest-environment-miniflare@2.14.4(vitest@2.1.4(@edge-runtime/vm@4.0.4)(@types/node@18.19.64)(jsdom@24.1.3)(msw@2.6.4(@types/node@18.19.64)(typescript@5.6.3))(terser@5.31.1)):
+ vitest-environment-miniflare@2.14.4(vitest@2.1.4(@edge-runtime/vm@4.0.4)(@types/node@22.9.0)(jsdom@24.1.3)(msw@2.6.4(@types/node@22.9.0)(typescript@5.6.3))(terser@5.31.1)):
dependencies:
'@miniflare/queues': 2.14.4
'@miniflare/runner-vm': 2.14.4
'@miniflare/shared': 2.14.4
'@miniflare/shared-test-environment': 2.14.4
undici: 5.28.4
- vitest: 2.1.4(@edge-runtime/vm@4.0.4)(@types/node@18.19.64)(jsdom@24.1.3)(msw@2.6.4(@types/node@18.19.64)(typescript@5.6.3))(terser@5.31.1)
+ vitest: 2.1.4(@edge-runtime/vm@4.0.4)(@types/node@22.9.0)(jsdom@24.1.3)(msw@2.6.4(@types/node@22.9.0)(typescript@5.6.3))(terser@5.31.1)
transitivePeerDependencies:
- bufferutil
- utf-8-validate
- vitest@2.1.4(@edge-runtime/vm@4.0.4)(@types/node@18.19.64)(jsdom@24.1.3)(msw@2.6.4(@types/node@18.19.64)(typescript@5.6.3))(terser@5.31.1):
+ vitest@2.1.4(@edge-runtime/vm@4.0.4)(@types/node@20.17.10)(jsdom@24.1.3)(msw@2.6.4(@types/node@20.17.10)(typescript@5.6.3))(terser@5.31.1):
dependencies:
'@vitest/expect': 2.1.4
- '@vitest/mocker': 2.1.4(msw@2.6.4(@types/node@18.19.64)(typescript@5.6.3))(vite@5.4.11(@types/node@20.17.5)(terser@5.31.1))
+ '@vitest/mocker': 2.1.4(msw@2.6.4(@types/node@20.17.10)(typescript@5.6.3))(vite@5.4.11(@types/node@20.17.10)(terser@5.31.1))
'@vitest/pretty-format': 2.1.4
'@vitest/runner': 2.1.4
'@vitest/snapshot': 2.1.4
@@ -32635,12 +32428,12 @@ snapshots:
tinyexec: 0.3.1
tinypool: 1.0.1
tinyrainbow: 1.2.0
- vite: 5.4.11(@types/node@18.19.64)(terser@5.31.1)
- vite-node: 2.1.4(@types/node@18.19.64)(terser@5.31.1)
+ vite: 5.4.11(@types/node@20.17.10)(terser@5.31.1)
+ vite-node: 2.1.4(@types/node@20.17.10)(terser@5.31.1)
why-is-node-running: 2.3.0
optionalDependencies:
'@edge-runtime/vm': 4.0.4
- '@types/node': 18.19.64
+ '@types/node': 20.17.10
jsdom: 24.1.3
transitivePeerDependencies:
- less
@@ -32653,10 +32446,10 @@ snapshots:
- supports-color
- terser
- vitest@2.1.4(@edge-runtime/vm@4.0.4)(@types/node@20.17.5)(jsdom@24.1.3)(msw@2.6.4(@types/node@20.17.5)(typescript@5.6.3))(terser@5.31.1):
+ vitest@2.1.4(@edge-runtime/vm@4.0.4)(@types/node@22.9.0)(jsdom@24.1.3)(msw@2.6.4(@types/node@22.9.0)(typescript@5.6.3))(terser@5.31.1):
dependencies:
'@vitest/expect': 2.1.4
- '@vitest/mocker': 2.1.4(msw@2.6.4(@types/node@20.17.5)(typescript@5.6.3))(vite@5.4.11(@types/node@20.17.5)(terser@5.31.1))
+ '@vitest/mocker': 2.1.4(msw@2.6.4(@types/node@22.9.0)(typescript@5.6.3))(vite@5.4.11(@types/node@20.17.10)(terser@5.31.1))
'@vitest/pretty-format': 2.1.4
'@vitest/runner': 2.1.4
'@vitest/snapshot': 2.1.4
@@ -32672,12 +32465,12 @@ snapshots:
tinyexec: 0.3.1
tinypool: 1.0.1
tinyrainbow: 1.2.0
- vite: 5.4.11(@types/node@20.17.5)(terser@5.31.1)
- vite-node: 2.1.4(@types/node@20.17.5)(terser@5.31.1)
+ vite: 5.4.11(@types/node@22.9.0)(terser@5.31.1)
+ vite-node: 2.1.4(@types/node@22.9.0)(terser@5.31.1)
why-is-node-running: 2.3.0
optionalDependencies:
'@edge-runtime/vm': 4.0.4
- '@types/node': 20.17.5
+ '@types/node': 22.9.0
jsdom: 24.1.3
transitivePeerDependencies:
- less
@@ -32815,7 +32608,7 @@ snapshots:
- bufferutil
- utf-8-validate
- webpack-dev-middleware@7.4.2(webpack@5.94.0):
+ webpack-dev-middleware@7.4.2(webpack@5.94.0(esbuild@0.24.0)):
dependencies:
colorette: 2.0.20
memfs: 4.14.0
@@ -32824,9 +32617,9 @@ snapshots:
range-parser: 1.2.1
schema-utils: 4.2.0
optionalDependencies:
- webpack: 5.94.0
+ webpack: 5.94.0(esbuild@0.24.0)
- webpack-dev-server@5.0.4(webpack@5.94.0):
+ webpack-dev-server@5.0.4(webpack@5.94.0(esbuild@0.24.0)):
dependencies:
'@types/bonjour': 3.5.13
'@types/connect-history-api-fallback': 1.5.4
@@ -32856,10 +32649,10 @@ snapshots:
serve-index: 1.9.1
sockjs: 0.3.24
spdy: 4.0.2
- webpack-dev-middleware: 7.4.2(webpack@5.94.0)
+ webpack-dev-middleware: 7.4.2(webpack@5.94.0(esbuild@0.24.0))
ws: 8.18.0
optionalDependencies:
- webpack: 5.94.0
+ webpack: 5.94.0(esbuild@0.24.0)
transitivePeerDependencies:
- bufferutil
- debug
@@ -32875,7 +32668,7 @@ snapshots:
webpack-virtual-modules@0.6.2: {}
- webpack@5.94.0:
+ webpack@5.94.0(esbuild@0.24.0):
dependencies:
'@types/estree': 1.0.6
'@webassemblyjs/ast': 1.14.1
@@ -32897,7 +32690,7 @@ snapshots:
neo-async: 2.6.2
schema-utils: 3.3.0
tapable: 2.2.1
- terser-webpack-plugin: 5.3.10(webpack@5.94.0)
+ terser-webpack-plugin: 5.3.10(esbuild@0.24.0)(webpack@5.94.0(esbuild@0.24.0))
watchpack: 2.4.2
webpack-sources: 3.2.3
transitivePeerDependencies:
diff --git a/renovate.json5 b/renovate.json5
index 29454a5d4f..9616e8e03d 100644
--- a/renovate.json5
+++ b/renovate.json5
@@ -1723,15 +1723,15 @@
{
"groupName": "common TypeScript types",
"matchPackageNames": [
- "@types/node",
- "@types/react",
- "@types/react-dom"
+ "@types/node"
],
"rangeStrategy": "bump"
},
{
"groupName": "React",
"matchPackageNames": [
+ "@types/react",
+ "@types/react-dom",
"react",
"react-dom"
],
From fa8be89155279f00b2a04da669e5ec3e22514d42 Mon Sep 17 00:00:00 2001
From: Lasse Narula <43168787+lasseklovstad@users.noreply.github.com>
Date: Fri, 20 Dec 2024 12:57:42 +0100
Subject: [PATCH 18/23] fix(localizations): Fix delete account action for
`nb-NO` localization (#4821)
Co-authored-by: Stefanos Anagnostou
---
.changeset/proud-terms-wave.md | 5 +++++
packages/localizations/src/nb-NO.ts | 4 ++--
2 files changed, 7 insertions(+), 2 deletions(-)
create mode 100644 .changeset/proud-terms-wave.md
diff --git a/.changeset/proud-terms-wave.md b/.changeset/proud-terms-wave.md
new file mode 100644
index 0000000000..513f052293
--- /dev/null
+++ b/.changeset/proud-terms-wave.md
@@ -0,0 +1,5 @@
+---
+"@clerk/localizations": patch
+---
+
+Fix delete account action for `nb-NO` localization.
diff --git a/packages/localizations/src/nb-NO.ts b/packages/localizations/src/nb-NO.ts
index 4956900b25..50b4a904ef 100644
--- a/packages/localizations/src/nb-NO.ts
+++ b/packages/localizations/src/nb-NO.ts
@@ -52,7 +52,7 @@ export const nbNO: LocalizationResource = {
formFieldHintText__optional: 'Valgfritt',
formFieldHintText__slug: 'En slug er en menneskelesbar ID som må være unik. Den brukes ofte i URL-er.',
formFieldInputPlaceholder__backupCode: undefined,
- formFieldInputPlaceholder__confirmDeletionUserAccount: 'Slett bruker',
+ formFieldInputPlaceholder__confirmDeletionUserAccount: 'Slett konto',
formFieldInputPlaceholder__emailAddress: undefined,
formFieldInputPlaceholder__emailAddress_username: undefined,
formFieldInputPlaceholder__emailAddresses:
@@ -675,7 +675,7 @@ export const nbNO: LocalizationResource = {
title: 'Legg til tilknyttet konto',
},
deletePage: {
- actionDescription: 'Skriv inn "Delete account" under for å fortsette.',
+ actionDescription: 'Skriv inn "Slett konto" under for å fortsette.',
confirm: 'Slett konto',
messageLine1: 'Er du sikker på at du vil slette kontoen din?',
messageLine2: 'Denne handlingen er permanent og kan ikke reverseres.',
From 389133b1fc84b086d09f012cf459729b0079de33 Mon Sep 17 00:00:00 2001
From: Robert Soriano
Date: Fri, 20 Dec 2024 04:44:59 -0800
Subject: [PATCH 19/23] fix(nuxt): Optimize `@clerk/vue` (#4820)
---
.changeset/shy-mangos-visit.md | 5 +++++
packages/nuxt/src/module.ts | 5 +++++
2 files changed, 10 insertions(+)
create mode 100644 .changeset/shy-mangos-visit.md
diff --git a/.changeset/shy-mangos-visit.md b/.changeset/shy-mangos-visit.md
new file mode 100644
index 0000000000..b57d839d71
--- /dev/null
+++ b/.changeset/shy-mangos-visit.md
@@ -0,0 +1,5 @@
+---
+"@clerk/nuxt": patch
+---
+
+Fix Vite optimization issue that caused duplicate versions of @clerk/vue to be created on first load, resulting in the Vue plugin losing context.
diff --git a/packages/nuxt/src/module.ts b/packages/nuxt/src/module.ts
index bc606a1e4a..114b4918c7 100644
--- a/packages/nuxt/src/module.ts
+++ b/packages/nuxt/src/module.ts
@@ -79,6 +79,11 @@ export default defineNuxtModule({
// Handle Nuxt-specific imports (e.g #imports)
nuxt.options.build.transpile.push(resolver.resolve('./runtime'));
+ // Optimize @clerk/vue to avoid missing injection Symbol key errors
+ nuxt.options.vite.optimizeDeps = nuxt.options.vite.optimizeDeps || {};
+ nuxt.options.vite.optimizeDeps.include = nuxt.options.vite.optimizeDeps.include || [];
+ nuxt.options.vite.optimizeDeps.include.push('@clerk/vue');
+
// Add the `@clerk/vue` plugin
addPlugin(resolver.resolve('./runtime/plugin'));
From a52029c7514fec28b43c8b72825139616dee5de5 Mon Sep 17 00:00:00 2001
From: panteliselef
Date: Fri, 20 Dec 2024 17:52:00 +0200
Subject: [PATCH 20/23] fix(clerk-js): Revalidate environment on window focus
for Keyless (#4813)
---
.changeset/bright-mangos-pump.md | 5 ++
.../src/ui/components/KeylessPrompt/index.tsx | 4 +-
.../use-revalidate-environment.ts | 62 +++++++++++++++++++
3 files changed, 69 insertions(+), 2 deletions(-)
create mode 100644 .changeset/bright-mangos-pump.md
create mode 100644 packages/clerk-js/src/ui/components/KeylessPrompt/use-revalidate-environment.ts
diff --git a/.changeset/bright-mangos-pump.md b/.changeset/bright-mangos-pump.md
new file mode 100644
index 0000000000..fb7ed12de5
--- /dev/null
+++ b/.changeset/bright-mangos-pump.md
@@ -0,0 +1,5 @@
+---
+'@clerk/clerk-js': patch
+---
+
+Revalidate environment on window focus for Keyless.
diff --git a/packages/clerk-js/src/ui/components/KeylessPrompt/index.tsx b/packages/clerk-js/src/ui/components/KeylessPrompt/index.tsx
index 5d3bef3aef..7e0e732149 100644
--- a/packages/clerk-js/src/ui/components/KeylessPrompt/index.tsx
+++ b/packages/clerk-js/src/ui/components/KeylessPrompt/index.tsx
@@ -3,12 +3,12 @@ import { useClerk } from '@clerk/shared/react';
import { css } from '@emotion/react';
import { useState } from 'react';
-import { useEnvironment } from '../../contexts';
import { descriptors, Flex, Link, Spinner } from '../../customizables';
import { Portal } from '../../elements/Portal';
import { InternalThemeProvider } from '../../styledSystem';
import { ClerkLogoIcon } from './ClerkLogoIcon';
import { KeySlashIcon } from './KeySlashIcon';
+import { useRevalidateEnvironment } from './use-revalidate-environment';
type KeylessPromptProps = {
claimUrl: string;
@@ -20,7 +20,7 @@ const _KeylessPrompt = (_props: KeylessPromptProps) => {
const [isLoading, setIsLoading] = useState(false);
const handleFocus = () => setIsExpanded(true);
- const claimed = Boolean(useEnvironment().authConfig.claimedAt);
+ const claimed = Boolean(useRevalidateEnvironment().authConfig.claimedAt);
const clerk = useClerk();
return (
diff --git a/packages/clerk-js/src/ui/components/KeylessPrompt/use-revalidate-environment.ts b/packages/clerk-js/src/ui/components/KeylessPrompt/use-revalidate-environment.ts
new file mode 100644
index 0000000000..12bd1ab84b
--- /dev/null
+++ b/packages/clerk-js/src/ui/components/KeylessPrompt/use-revalidate-environment.ts
@@ -0,0 +1,62 @@
+import { useClerk } from '@clerk/shared/react';
+import { useEffect, useReducer } from 'react';
+
+import type { Clerk } from '../../../core/clerk';
+import type { Environment } from '../../../core/resources';
+import { useEnvironment } from '../../contexts';
+
+/**
+ * Revalidates environment on focus, highly optimized for Keyless mode.
+ * Attention: this is not a generic solution, and should not be used for revalidating environment inside UI components that are end-user facing (e.g. SignIn)
+ */
+function useRevalidateEnvironment() {
+ const clerk = useClerk();
+ const [, forceUpdate] = useReducer(v => v + 1, 0);
+
+ useEffect(() => {
+ const controller = new AbortController();
+ window.addEventListener(
+ 'focus',
+
+ async () => {
+ const environment = (clerk as Clerk).__unstable__environment as Environment | undefined;
+
+ if (!environment) {
+ return;
+ }
+
+ if (environment.authConfig.claimedAt !== null) {
+ return controller.abort();
+ }
+
+ if (document.visibilityState !== 'visible') {
+ return;
+ }
+
+ const maxRetries = 2;
+
+ for (let i = 0; i < maxRetries; i++) {
+ const {
+ authConfig: { claimedAt },
+ } = await environment.fetch();
+
+ if (claimedAt !== null) {
+ forceUpdate();
+ break;
+ }
+ }
+ },
+ {
+ signal: controller.signal,
+ },
+ );
+
+ return () => {
+ controller.abort();
+ };
+ }, []);
+
+ return useEnvironment();
+}
+
+export { useRevalidateEnvironment };
From 2b296e67a8b80ed94b92e670dfeade82faa35ce7 Mon Sep 17 00:00:00 2001
From: Stefanos Anagnostou
Date: Fri, 20 Dec 2024 18:47:38 +0200
Subject: [PATCH 21/23] chore(repo): Fix releases slack post [internal] (#4824)
---
.changeset/sharp-vans-sit.md | 2 ++
scripts/notify.mjs | 40 ++++++++++++++++++++++++++++--------
2 files changed, 34 insertions(+), 8 deletions(-)
create mode 100644 .changeset/sharp-vans-sit.md
diff --git a/.changeset/sharp-vans-sit.md b/.changeset/sharp-vans-sit.md
new file mode 100644
index 0000000000..a845151cc8
--- /dev/null
+++ b/.changeset/sharp-vans-sit.md
@@ -0,0 +1,2 @@
+---
+---
diff --git a/scripts/notify.mjs b/scripts/notify.mjs
index 9e7c787e99..5f5a7b67ab 100644
--- a/scripts/notify.mjs
+++ b/scripts/notify.mjs
@@ -51,7 +51,6 @@ const getReleaseChannel = version => {
const slackFormatter = {
generateChangelog: ({ packageData, releasePrUrl, pusher }) => {
const markdown = text => ({ type: 'section', text: { type: 'mrkdwn', text } });
- const divider = () => ({ type: 'divider' });
const header = text => ({ type: 'header', text: { type: 'plain_text', text } });
const context = (imgUrl, text) => ({
type: 'context',
@@ -64,15 +63,12 @@ const slackFormatter = {
const releaseChannel = getReleaseChannel(packageData?.[0]?.version);
blocks.push(header(`Javascript SDKs - ${releaseChannel} Release - ${new Date().toLocaleDateString('en-US')}`));
+ blocks.push(markdown(`All release PRs for this day can be found <${releasePrUrl}|here>.\nReleased packages:\n`));
- let body = '';
- for (const { name, version, changelogUrl } of packageData) {
- body += `• <${changelogUrl}|Changelog> - \`${name}@${version}\`\n`;
- }
+ createPackagesBody(packageData).forEach(body => {
+ blocks.push(markdown(body));
+ });
- blocks.push(markdown(`All release PRs for this day can be found <${releasePrUrl}|here>.\nReleased packages:\n`));
- blocks.push(markdown(body));
- // blocks.push(divider());
blocks.push(markdown('\n'));
blocks.push(context(pusher.avatarUrl, `<${pusher.profileUrl}|*${pusher.username}*> triggered this release.`));
@@ -80,6 +76,34 @@ const slackFormatter = {
},
};
+/**
+ * @property {PackageData[]} packageData
+ */
+const createPackagesBody = packageData => {
+ // The Slack API has a limitation of ~3000 characters per block and
+ // also there is a limit on the number of blocks that can be sent in a single message.
+ // So, we split the body into fragments of 10 packages each.
+ const fragments = [];
+ let body = '';
+ let count = 0;
+ for (const { name, version, changelogUrl } of packageData) {
+ body += `• <${changelogUrl}|Changelog> - \`${name}@${version}\`\n`;
+ count++;
+
+ if (count === 10) {
+ fragments.push(body);
+ body = '';
+ count = 0;
+ }
+ }
+ // This is the remaining
+ if (body) {
+ fragments.push(body);
+ }
+
+ return fragments;
+};
+
/**
* @type {Record}
*/
From 8ad1866264ce5cf60a125d3a270597e8044b04c7 Mon Sep 17 00:00:00 2001
From: Robert Soriano
Date: Fri, 20 Dec 2024 10:28:12 -0800
Subject: [PATCH 22/23] feat(vue,nuxt): Release Vue and Nuxt SDK v1 (#4791)
---
.changeset/shiny-papayas-know.md | 6 ++++++
1 file changed, 6 insertions(+)
create mode 100644 .changeset/shiny-papayas-know.md
diff --git a/.changeset/shiny-papayas-know.md b/.changeset/shiny-papayas-know.md
new file mode 100644
index 0000000000..6ac7cff38d
--- /dev/null
+++ b/.changeset/shiny-papayas-know.md
@@ -0,0 +1,6 @@
+---
+'@clerk/nuxt': major
+'@clerk/vue': major
+---
+
+Introduce the official Clerk SDK for Vue and Nuxt.
From b5eb15bf81d94456309d6ca44ad423a4175d50b6 Mon Sep 17 00:00:00 2001
From: Bryce Kalow
Date: Fri, 20 Dec 2024 13:45:39 -0600
Subject: [PATCH 23/23] feat(clerk-react): Support for fallback prop (#4723)
Co-authored-by: Alex Carpenter
---
.changeset/serious-stingrays-learn.md | 10 +
.../src/app/create-organization/page.tsx | 9 +
.../src/app/organization-list/page.tsx | 9 +
.../src/app/organization-profile/page.tsx | 12 +
.../next-app-router/src/app/page.tsx | 5 +-
.../src/app/sign-in/[[...catchall]]/page.tsx | 1 +
.../src/app/sign-up/[[...catchall]]/page.tsx | 1 +
.../next-app-router/src/app/switcher/page.tsx | 7 +-
.../src/app/user-button/page.tsx | 9 +
.../src/app/user/[[...catchall]]/page.tsx | 2 +-
.../next-app-router/src/app/waitlist/page.tsx | 9 +
integration/templates/react-vite/src/App.tsx | 2 +-
.../src/create-organization/index.tsx | 9 +
.../src/custom-user-button/index.tsx | 2 +-
.../src/custom-user-profile/index.tsx | 5 +-
integration/templates/react-vite/src/main.tsx | 25 +
.../src/organization-list/index.tsx | 9 +
.../src/organization-profile/index.tsx | 12 +
.../react-vite/src/sign-in/index.tsx | 1 +
.../react-vite/src/sign-up/index.tsx | 1 +
.../react-vite/src/user-button/index.tsx | 9 +
.../templates/react-vite/src/user/index.tsx | 5 +-
.../react-vite/src/waitlist/index.tsx | 9 +
integration/testUtils/appPageObject.ts | 4 +-
integration/tests/components.test.ts | 109 ++++
.../src/client-boundary/uiComponents.tsx | 10 +-
.../src/components/ClerkHostRenderer.tsx | 118 +++++
.../react/src/components/uiComponents.tsx | 494 ++++++++++--------
packages/react/src/components/withClerk.tsx | 32 +-
packages/react/src/errors/messages.ts | 2 -
packages/react/src/types.ts | 2 +-
.../src/utils/useWaitForComponentMount.ts | 80 +++
32 files changed, 768 insertions(+), 246 deletions(-)
create mode 100644 .changeset/serious-stingrays-learn.md
create mode 100644 integration/templates/next-app-router/src/app/create-organization/page.tsx
create mode 100644 integration/templates/next-app-router/src/app/organization-list/page.tsx
create mode 100644 integration/templates/next-app-router/src/app/organization-profile/page.tsx
create mode 100644 integration/templates/next-app-router/src/app/user-button/page.tsx
create mode 100644 integration/templates/next-app-router/src/app/waitlist/page.tsx
create mode 100644 integration/templates/react-vite/src/create-organization/index.tsx
create mode 100644 integration/templates/react-vite/src/organization-list/index.tsx
create mode 100644 integration/templates/react-vite/src/organization-profile/index.tsx
create mode 100644 integration/templates/react-vite/src/user-button/index.tsx
create mode 100644 integration/templates/react-vite/src/waitlist/index.tsx
create mode 100644 integration/tests/components.test.ts
create mode 100644 packages/react/src/components/ClerkHostRenderer.tsx
create mode 100644 packages/react/src/utils/useWaitForComponentMount.ts
diff --git a/.changeset/serious-stingrays-learn.md b/.changeset/serious-stingrays-learn.md
new file mode 100644
index 0000000000..0baff9b9b3
--- /dev/null
+++ b/.changeset/serious-stingrays-learn.md
@@ -0,0 +1,10 @@
+---
+'@clerk/clerk-react': minor
+---
+
+Adds support for a `fallback` prop on Clerk's components. This allows rendering of a placeholder element while Clerk's components are mounting. Use this to help mitigate layout shift when using Clerk's components. Example usage:
+
+
+```tsx
+} />
+```
diff --git a/integration/templates/next-app-router/src/app/create-organization/page.tsx b/integration/templates/next-app-router/src/app/create-organization/page.tsx
new file mode 100644
index 0000000000..ee02fb133d
--- /dev/null
+++ b/integration/templates/next-app-router/src/app/create-organization/page.tsx
@@ -0,0 +1,9 @@
+import { CreateOrganization } from '@clerk/nextjs';
+
+export default function Page() {
+ return (
+
+ Loading create organization>} />
+
+ );
+}
diff --git a/integration/templates/next-app-router/src/app/organization-list/page.tsx b/integration/templates/next-app-router/src/app/organization-list/page.tsx
new file mode 100644
index 0000000000..ac4e1e6a5f
--- /dev/null
+++ b/integration/templates/next-app-router/src/app/organization-list/page.tsx
@@ -0,0 +1,9 @@
+import { OrganizationList } from '@clerk/nextjs';
+
+export default function Page() {
+ return (
+
+ Loading organization list>} />
+
+ );
+}
diff --git a/integration/templates/next-app-router/src/app/organization-profile/page.tsx b/integration/templates/next-app-router/src/app/organization-profile/page.tsx
new file mode 100644
index 0000000000..2145cf662b
--- /dev/null
+++ b/integration/templates/next-app-router/src/app/organization-profile/page.tsx
@@ -0,0 +1,12 @@
+import { OrganizationProfile } from '@clerk/nextjs';
+
+export default function Page() {
+ return (
+
+ Loading organization profile>}
+ />
+
+ );
+}
diff --git a/integration/templates/next-app-router/src/app/page.tsx b/integration/templates/next-app-router/src/app/page.tsx
index 72108e9580..a4fd6f599c 100644
--- a/integration/templates/next-app-router/src/app/page.tsx
+++ b/integration/templates/next-app-router/src/app/page.tsx
@@ -1,11 +1,12 @@
-import { SignedIn, SignedOut, SignIn, UserButton, Protect } from '@clerk/nextjs';
+import { SignedIn, SignedOut, SignIn, UserButton, Protect, OrganizationSwitcher } from '@clerk/nextjs';
import Link from 'next/link';
import { ClientId } from './client-id';
export default function Home() {
return (
-
+ Loading user button>} />
+ Loading organization switcher>} />
SignedIn
SignedOut
diff --git a/integration/templates/next-app-router/src/app/sign-in/[[...catchall]]/page.tsx b/integration/templates/next-app-router/src/app/sign-in/[[...catchall]]/page.tsx
index a0cf2adf13..d574c6244f 100644
--- a/integration/templates/next-app-router/src/app/sign-in/[[...catchall]]/page.tsx
+++ b/integration/templates/next-app-router/src/app/sign-in/[[...catchall]]/page.tsx
@@ -7,6 +7,7 @@ export default function Page() {
routing={'path'}
path={'/sign-in'}
signUpUrl={'/sign-up'}
+ fallback={<>Loading sign in>}
__experimental={{
combinedProps: {},
}}
diff --git a/integration/templates/next-app-router/src/app/sign-up/[[...catchall]]/page.tsx b/integration/templates/next-app-router/src/app/sign-up/[[...catchall]]/page.tsx
index 687bcf1ddd..b26b0967f3 100644
--- a/integration/templates/next-app-router/src/app/sign-up/[[...catchall]]/page.tsx
+++ b/integration/templates/next-app-router/src/app/sign-up/[[...catchall]]/page.tsx
@@ -7,6 +7,7 @@ export default function Page() {
routing={'path'}
path={'/sign-up'}
signInUrl={'/sign-in'}
+ fallback={<>Loading sign up>}
/>
);
diff --git a/integration/templates/next-app-router/src/app/switcher/page.tsx b/integration/templates/next-app-router/src/app/switcher/page.tsx
index 849cecc61c..5bb8843f04 100644
--- a/integration/templates/next-app-router/src/app/switcher/page.tsx
+++ b/integration/templates/next-app-router/src/app/switcher/page.tsx
@@ -1,5 +1,10 @@
import { OrganizationSwitcher } from '@clerk/nextjs';
export default function Page() {
- return ;
+ return (
+ Loading organization switcher>}
+ />
+ );
}
diff --git a/integration/templates/next-app-router/src/app/user-button/page.tsx b/integration/templates/next-app-router/src/app/user-button/page.tsx
new file mode 100644
index 0000000000..9d776a7809
--- /dev/null
+++ b/integration/templates/next-app-router/src/app/user-button/page.tsx
@@ -0,0 +1,9 @@
+import { UserButton } from '@clerk/nextjs';
+
+export default function Page() {
+ return (
+
+ Loading user button>} />
+
+ );
+}
diff --git a/integration/templates/next-app-router/src/app/user/[[...catchall]]/page.tsx b/integration/templates/next-app-router/src/app/user/[[...catchall]]/page.tsx
index 04f5b08a89..8fbe316558 100644
--- a/integration/templates/next-app-router/src/app/user/[[...catchall]]/page.tsx
+++ b/integration/templates/next-app-router/src/app/user/[[...catchall]]/page.tsx
@@ -3,7 +3,7 @@ import { UserProfile } from '@clerk/nextjs';
export default function Page() {
return (
-
+ Loading user profile>} />
);
}
diff --git a/integration/templates/next-app-router/src/app/waitlist/page.tsx b/integration/templates/next-app-router/src/app/waitlist/page.tsx
new file mode 100644
index 0000000000..5638940a29
--- /dev/null
+++ b/integration/templates/next-app-router/src/app/waitlist/page.tsx
@@ -0,0 +1,9 @@
+import { Waitlist } from '@clerk/nextjs';
+
+export default function Page() {
+ return (
+
+ Loading waitlist>} />
+
+ );
+}
diff --git a/integration/templates/react-vite/src/App.tsx b/integration/templates/react-vite/src/App.tsx
index 98e3530af6..3696ded74d 100644
--- a/integration/templates/react-vite/src/App.tsx
+++ b/integration/templates/react-vite/src/App.tsx
@@ -6,7 +6,7 @@ function App() {
return (
-
+ Loading organization switcher>} />
SignedOut
SignedIn
diff --git a/integration/templates/react-vite/src/create-organization/index.tsx b/integration/templates/react-vite/src/create-organization/index.tsx
new file mode 100644
index 0000000000..7f268110e7
--- /dev/null
+++ b/integration/templates/react-vite/src/create-organization/index.tsx
@@ -0,0 +1,9 @@
+import { CreateOrganization } from '@clerk/clerk-react';
+
+export default function Page() {
+ return (
+
+ Loading create organization>} />
+
+ );
+}
diff --git a/integration/templates/react-vite/src/custom-user-button/index.tsx b/integration/templates/react-vite/src/custom-user-button/index.tsx
index e283cddd76..728bb51f43 100644
--- a/integration/templates/react-vite/src/custom-user-button/index.tsx
+++ b/integration/templates/react-vite/src/custom-user-button/index.tsx
@@ -22,7 +22,7 @@ function Page1() {
export default function Page() {
return (
-
+ Loading user button>}>
🙃}
diff --git a/integration/templates/react-vite/src/custom-user-profile/index.tsx b/integration/templates/react-vite/src/custom-user-profile/index.tsx
index 8a259a1639..c6f2fa42e8 100644
--- a/integration/templates/react-vite/src/custom-user-profile/index.tsx
+++ b/integration/templates/react-vite/src/custom-user-profile/index.tsx
@@ -22,7 +22,10 @@ function Page1() {
export default function Page() {
return (
-
+ Loading user profile>}
+ path={'/custom-user-profile'}
+ >
🙃}
diff --git a/integration/templates/react-vite/src/main.tsx b/integration/templates/react-vite/src/main.tsx
index 86f1252b5e..f011cf9726 100644
--- a/integration/templates/react-vite/src/main.tsx
+++ b/integration/templates/react-vite/src/main.tsx
@@ -11,6 +11,11 @@ import UserProfile from './user';
import UserProfileCustom from './custom-user-profile';
import UserButtonCustom from './custom-user-button';
import UserButtonCustomTrigger from './custom-user-button-trigger';
+import UserButton from './user-button';
+import Waitlist from './waitlist';
+import OrganizationProfile from './organization-profile';
+import OrganizationList from './organization-list';
+import CreateOrganization from './create-organization';
const Root = () => {
const navigate = useNavigate();
@@ -53,6 +58,10 @@ const router = createBrowserRouter([
path: '/user/*',
element: ,
},
+ {
+ path: '/user-button',
+ element: ,
+ },
{
path: '/protected',
element: ,
@@ -69,6 +78,22 @@ const router = createBrowserRouter([
path: '/custom-user-button-trigger',
element: ,
},
+ {
+ path: '/waitlist',
+ element: ,
+ },
+ {
+ path: '/organization-profile',
+ element: ,
+ },
+ {
+ path: '/organization-list',
+ element: ,
+ },
+ {
+ path: '/create-organization',
+ element: ,
+ },
],
},
]);
diff --git a/integration/templates/react-vite/src/organization-list/index.tsx b/integration/templates/react-vite/src/organization-list/index.tsx
new file mode 100644
index 0000000000..393856f058
--- /dev/null
+++ b/integration/templates/react-vite/src/organization-list/index.tsx
@@ -0,0 +1,9 @@
+import { OrganizationList } from '@clerk/clerk-react';
+
+export default function Page() {
+ return (
+
+ Loading organization list>} />
+
+ );
+}
diff --git a/integration/templates/react-vite/src/organization-profile/index.tsx b/integration/templates/react-vite/src/organization-profile/index.tsx
new file mode 100644
index 0000000000..144b8b1a53
--- /dev/null
+++ b/integration/templates/react-vite/src/organization-profile/index.tsx
@@ -0,0 +1,12 @@
+import { OrganizationProfile } from '@clerk/clerk-react';
+
+export default function Page() {
+ return (
+
+ Loading organization profile>}
+ />
+
+ );
+}
diff --git a/integration/templates/react-vite/src/sign-in/index.tsx b/integration/templates/react-vite/src/sign-in/index.tsx
index 39caef7d00..7ec2593036 100644
--- a/integration/templates/react-vite/src/sign-in/index.tsx
+++ b/integration/templates/react-vite/src/sign-in/index.tsx
@@ -6,6 +6,7 @@ export default function Page() {
Loading sign in>}
/>
);
diff --git a/integration/templates/react-vite/src/sign-up/index.tsx b/integration/templates/react-vite/src/sign-up/index.tsx
index 9aef78cf85..fa00b90a68 100644
--- a/integration/templates/react-vite/src/sign-up/index.tsx
+++ b/integration/templates/react-vite/src/sign-up/index.tsx
@@ -6,6 +6,7 @@ export default function Page() {
Loading sign up>}
/>
);
diff --git a/integration/templates/react-vite/src/user-button/index.tsx b/integration/templates/react-vite/src/user-button/index.tsx
new file mode 100644
index 0000000000..a8c6df3a10
--- /dev/null
+++ b/integration/templates/react-vite/src/user-button/index.tsx
@@ -0,0 +1,9 @@
+import { UserButton } from '@clerk/clerk-react';
+
+export default function Page() {
+ return (
+
+ Loading user button>} />
+
+ );
+}
diff --git a/integration/templates/react-vite/src/user/index.tsx b/integration/templates/react-vite/src/user/index.tsx
index 007d4639ec..ca6b2c770f 100644
--- a/integration/templates/react-vite/src/user/index.tsx
+++ b/integration/templates/react-vite/src/user/index.tsx
@@ -3,7 +3,10 @@ import { UserProfile } from '@clerk/clerk-react';
export default function Page() {
return (
-
+ Loading user profile>}
+ />
);
}
diff --git a/integration/templates/react-vite/src/waitlist/index.tsx b/integration/templates/react-vite/src/waitlist/index.tsx
new file mode 100644
index 0000000000..effbf8a5a4
--- /dev/null
+++ b/integration/templates/react-vite/src/waitlist/index.tsx
@@ -0,0 +1,9 @@
+import { Waitlist } from '@clerk/clerk-react';
+
+export default function Page() {
+ return (
+
+ Loading waitlist>} />
+
+ );
+}
diff --git a/integration/testUtils/appPageObject.ts b/integration/testUtils/appPageObject.ts
index 70b2b21832..306c293a39 100644
--- a/integration/testUtils/appPageObject.ts
+++ b/integration/testUtils/appPageObject.ts
@@ -13,7 +13,7 @@ export const createAppPageObject = (testArgs: { page: Page }, app: Application)
// do not fail the test if interstitial is returned (401)
}
},
- goToRelative: (path: string, opts: { searchParams?: URLSearchParams; timeout?: number } = {}) => {
+ goToRelative: (path: string, opts: { waitUntil?: any; searchParams?: URLSearchParams; timeout?: number } = {}) => {
let url: URL;
try {
@@ -35,7 +35,7 @@ export const createAppPageObject = (testArgs: { page: Page }, app: Application)
if (opts.searchParams) {
url.search = opts.searchParams.toString();
}
- return page.goto(url.toString(), { timeout: opts.timeout ?? 20000 });
+ return page.goto(url.toString(), { timeout: opts.timeout ?? 20000, waitUntil: opts.waitUntil });
},
waitForClerkJsLoaded: async () => {
return page.waitForFunction(() => {
diff --git a/integration/tests/components.test.ts b/integration/tests/components.test.ts
new file mode 100644
index 0000000000..3863d8c766
--- /dev/null
+++ b/integration/tests/components.test.ts
@@ -0,0 +1,109 @@
+import { expect, test } from '@playwright/test';
+
+import { appConfigs } from '../presets';
+import type { FakeOrganization, FakeUser } from '../testUtils';
+import { createTestUtils, testAgainstRunningApps } from '../testUtils';
+
+testAgainstRunningApps({ withEnv: [appConfigs.envs.withEmailCodes] })('component smoke tests @generic', ({ app }) => {
+ let fakeUser: FakeUser;
+ let fakeOrganization: FakeOrganization;
+
+ test.beforeAll(async () => {
+ const u = createTestUtils({ app });
+ fakeUser = u.services.users.createFakeUser({
+ withPhoneNumber: true,
+ withUsername: true,
+ });
+ const user = await u.services.users.createBapiUser(fakeUser);
+ fakeOrganization = await u.services.users.createFakeOrganization(user.id);
+ });
+
+ test.afterAll(async () => {
+ await app.teardown();
+ await fakeUser.deleteIfExists();
+ await fakeOrganization.delete();
+ });
+
+ const components = [
+ {
+ name: 'SignIn',
+ path: '/sign-in',
+ fallback: 'Loading sign in',
+ },
+ {
+ name: 'SignUp',
+ path: '/sign-up',
+ fallback: 'Loading sign up',
+ },
+ {
+ name: 'UserProfile',
+ path: '/user',
+ protected: true,
+ fallback: 'Loading user profile',
+ },
+ {
+ name: 'UserButton',
+ path: '/user-button',
+ protected: true,
+ fallback: 'Loading user button',
+ },
+ {
+ name: 'Waitlist',
+ path: '/waitlist',
+ fallback: 'Loading waitlist',
+ },
+ {
+ name: 'OrganizationSwitcher',
+ path: '/',
+ fallback: 'Loading organization switcher',
+ protected: true,
+ },
+ {
+ name: 'OrganizationProfile',
+ path: '/organization-profile',
+ fallback: 'Loading organization profile',
+ protected: true,
+ },
+ {
+ name: 'OrganizationList',
+ path: '/organization-list',
+ fallback: 'Loading organization list',
+ protected: true,
+ },
+ {
+ name: 'CreateOrganization',
+ path: '/create-organization',
+ fallback: 'Loading create organization',
+ protected: true,
+ },
+ ];
+
+ const signIn = async ({ app, page, context }) => {
+ const u = createTestUtils({ app, page, context });
+ await u.po.signIn.goTo();
+ await u.po.signIn.signInWithEmailAndInstantPassword({ email: fakeUser.email, password: fakeUser.password });
+ await u.po.expect.toBeSignedIn();
+ };
+
+ const signOut = async ({ app, page, context }) => {
+ const u = createTestUtils({ app, page, context });
+ await u.page.evaluate(async () => {
+ await window.Clerk.signOut();
+ });
+ };
+
+ for (const component of components) {
+ test(`${component.name} supports fallback`, async ({ page, context }) => {
+ // eslint-disable-next-line playwright/no-conditional-in-test
+ if (component.protected) {
+ await signIn({ app, page, context });
+ }
+
+ const u = createTestUtils({ app, page, context });
+ await u.page.goToRelative(component.path, { waitUntil: 'commit' });
+ await expect(u.page.getByText(component.fallback)).toBeVisible();
+
+ await signOut({ app, page, context });
+ });
+ }
+});
diff --git a/packages/nextjs/src/client-boundary/uiComponents.tsx b/packages/nextjs/src/client-boundary/uiComponents.tsx
index a4dde9da72..054e54a428 100644
--- a/packages/nextjs/src/client-boundary/uiComponents.tsx
+++ b/packages/nextjs/src/client-boundary/uiComponents.tsx
@@ -6,7 +6,7 @@ import {
SignUp as BaseSignUp,
UserProfile as BaseUserProfile,
} from '@clerk/clerk-react';
-import type { OrganizationProfileProps, SignInProps, SignUpProps, UserProfileProps } from '@clerk/types';
+import type { ComponentProps } from 'react';
import React from 'react';
import { useEnforceCorrectRoutingProps } from './hooks/useEnforceRoutingProps';
@@ -29,7 +29,7 @@ export {
// Also the `typeof BaseUserProfile` is used to resolve the following error:
// "The inferred type of 'UserProfile' cannot be named without a reference to ..."
export const UserProfile: typeof BaseUserProfile = Object.assign(
- (props: UserProfileProps) => {
+ (props: ComponentProps) => {
return ;
},
{ ...BaseUserProfile },
@@ -40,16 +40,16 @@ export const UserProfile: typeof BaseUserProfile = Object.assign(
// Also the `typeof BaseOrganizationProfile` is used to resolved the following error:
// "The inferred type of 'OrganizationProfile' cannot be named without a reference to ..."
export const OrganizationProfile: typeof BaseOrganizationProfile = Object.assign(
- (props: OrganizationProfileProps) => {
+ (props: ComponentProps) => {
return ;
},
{ ...BaseOrganizationProfile },
);
-export const SignIn = (props: SignInProps) => {
+export const SignIn = (props: ComponentProps) => {
return ;
};
-export const SignUp = (props: SignUpProps) => {
+export const SignUp = (props: ComponentProps) => {
return ;
};
diff --git a/packages/react/src/components/ClerkHostRenderer.tsx b/packages/react/src/components/ClerkHostRenderer.tsx
new file mode 100644
index 0000000000..19b8187718
--- /dev/null
+++ b/packages/react/src/components/ClerkHostRenderer.tsx
@@ -0,0 +1,118 @@
+import { without } from '@clerk/shared/object';
+import { isDeeplyEqual } from '@clerk/shared/react';
+import type { PropsWithChildren } from 'react';
+import React from 'react';
+
+import type { MountProps, OpenProps } from '../types';
+
+const isMountProps = (props: any): props is MountProps => {
+ return 'mount' in props;
+};
+
+const isOpenProps = (props: any): props is OpenProps => {
+ return 'open' in props;
+};
+// README: should be a class pure component in order for mount and unmount
+// lifecycle props to be invoked correctly. Replacing the class component with a
+// functional component wrapped with a React.memo is not identical to the original
+// class implementation due to React intricacies such as the useEffect’s cleanup
+// seems to run AFTER unmount, while componentWillUnmount runs BEFORE.
+
+// More information can be found at https://clerk.slack.com/archives/C015S0BGH8R/p1624891993016300
+
+// The function Portal implementation is commented out for future reference.
+
+// const Portal = React.memo(({ props, mount, unmount }: MountProps) => {
+// const portalRef = React.createRef();
+
+// useEffect(() => {
+// if (portalRef.current) {
+// mount(portalRef.current, props);
+// }
+// return () => {
+// if (portalRef.current) {
+// unmount(portalRef.current);
+// }
+// };
+// }, []);
+
+// return ;
+// });
+
+// Portal.displayName = 'ClerkPortal';
+
+/**
+ * Used to orchestrate mounting of Clerk components in a host React application.
+ * Components are rendered into a specific DOM node using mount/unmount methods provided by the Clerk class.
+ */
+export class ClerkHostRenderer extends React.PureComponent<
+ PropsWithChildren<
+ (MountProps | OpenProps) & {
+ component?: string;
+ hideRootHtmlElement?: boolean;
+ rootProps?: JSX.IntrinsicElements['div'];
+ }
+ >
+> {
+ private rootRef = React.createRef();
+
+ componentDidUpdate(_prevProps: Readonly) {
+ if (!isMountProps(_prevProps) || !isMountProps(this.props)) {
+ return;
+ }
+
+ // Remove children and customPages from props before comparing
+ // children might hold circular references which deepEqual can't handle
+ // and the implementation of customPages or customMenuItems relies on props getting new references
+ const prevProps = without(_prevProps.props, 'customPages', 'customMenuItems', 'children');
+ const newProps = without(this.props.props, 'customPages', 'customMenuItems', 'children');
+ // instead, we simply use the length of customPages to determine if it changed or not
+ const customPagesChanged = prevProps.customPages?.length !== newProps.customPages?.length;
+ const customMenuItemsChanged = prevProps.customMenuItems?.length !== newProps.customMenuItems?.length;
+
+ if (!isDeeplyEqual(prevProps, newProps) || customPagesChanged || customMenuItemsChanged) {
+ if (this.rootRef.current) {
+ this.props.updateProps({ node: this.rootRef.current, props: this.props.props });
+ }
+ }
+ }
+
+ componentDidMount() {
+ if (this.rootRef.current) {
+ if (isMountProps(this.props)) {
+ this.props.mount(this.rootRef.current, this.props.props);
+ }
+
+ if (isOpenProps(this.props)) {
+ this.props.open(this.props.props);
+ }
+ }
+ }
+
+ componentWillUnmount() {
+ if (this.rootRef.current) {
+ if (isMountProps(this.props)) {
+ this.props.unmount(this.rootRef.current);
+ }
+ if (isOpenProps(this.props)) {
+ this.props.close();
+ }
+ }
+ }
+
+ render() {
+ const { hideRootHtmlElement = false } = this.props;
+ const rootAttributes = {
+ ref: this.rootRef,
+ ...this.props.rootProps,
+ ...(this.props.component && { 'data-clerk-component': this.props.component }),
+ };
+
+ return (
+ <>
+ {!hideRootHtmlElement && }
+ {this.props.children}
+ >
+ );
+ }
+}
diff --git a/packages/react/src/components/uiComponents.tsx b/packages/react/src/components/uiComponents.tsx
index a0d2a3263d..63b06dc7b2 100644
--- a/packages/react/src/components/uiComponents.tsx
+++ b/packages/react/src/components/uiComponents.tsx
@@ -1,5 +1,3 @@
-import { without } from '@clerk/shared/object';
-import { isDeeplyEqual } from '@clerk/shared/react';
import { logErrorInDevMode } from '@clerk/shared/utils';
import type {
CreateOrganizationProps,
@@ -14,7 +12,7 @@ import type {
WaitlistProps,
Without,
} from '@clerk/types';
-import type { PropsWithChildren } from 'react';
+import type { PropsWithChildren, ReactNode } from 'react';
import React, { createContext, createElement, useContext } from 'react';
import {
@@ -29,7 +27,6 @@ import {
import type {
CustomPortalsRendererProps,
MountProps,
- OpenProps,
OrganizationProfileLinkProps,
OrganizationProfilePageProps,
UserButtonActionProps,
@@ -44,8 +41,17 @@ import {
useUserButtonCustomMenuItems,
useUserProfileCustomPages,
} from '../utils';
+import { useWaitForComponentMount } from '../utils/useWaitForComponentMount';
+import { ClerkHostRenderer } from './ClerkHostRenderer';
import { withClerk } from './withClerk';
+type FallbackProp = {
+ /**
+ * An optional element to render while the component is mounting.
+ */
+ fallback?: ReactNode;
+};
+
type UserProfileExportType = typeof _UserProfile & {
Page: typeof UserProfilePage;
Link: typeof UserProfileLink;
@@ -59,8 +65,7 @@ type UserButtonExportType = typeof _UserButton & {
Link: typeof MenuLink;
/**
* The `` component can be used in conjunction with `asProvider` in order to control rendering
- * of the `` without affecting its configuration or any custom pages
- * that could be mounted
+ * of the `` without affecting its configuration or any custom pages that could be mounted
* @experimental This API is experimental and may change at any moment.
*/
__experimental_Outlet: typeof UserButtonOutlet;
@@ -89,8 +94,7 @@ type OrganizationSwitcherExportType = typeof _OrganizationSwitcher & {
OrganizationProfileLink: typeof OrganizationProfileLink;
/**
* The `` component can be used in conjunction with `asProvider` in order to control rendering
- * of the `` without affecting its configuration or any custom pages
- * that could be mounted
+ * of the `` without affecting its configuration or any custom pages that could be mounted
* @experimental This API is experimental and may change at any moment.
*/
__experimental_Outlet: typeof OrganizationSwitcherOutlet;
@@ -109,103 +113,6 @@ type OrganizationSwitcherPropsWithoutCustomPages = Without<
__experimental_asProvider?: boolean;
};
-const isMountProps = (props: any): props is MountProps => {
- return 'mount' in props;
-};
-
-const isOpenProps = (props: any): props is OpenProps => {
- return 'open' in props;
-};
-
-// README: should be a class pure component in order for mount and unmount
-// lifecycle props to be invoked correctly. Replacing the class component with a
-// functional component wrapped with a React.memo is not identical to the original
-// class implementation due to React intricacies such as the useEffect’s cleanup
-// seems to run AFTER unmount, while componentWillUnmount runs BEFORE.
-
-// More information can be found at https://clerk.slack.com/archives/C015S0BGH8R/p1624891993016300
-
-// The function Portal implementation is commented out for future reference.
-
-// const Portal = React.memo(({ props, mount, unmount }: MountProps) => {
-// const portalRef = React.createRef();
-
-// useEffect(() => {
-// if (portalRef.current) {
-// mount(portalRef.current, props);
-// }
-// return () => {
-// if (portalRef.current) {
-// unmount(portalRef.current);
-// }
-// };
-// }, []);
-
-// return ;
-// });
-
-// Portal.displayName = 'ClerkPortal';
-
-class Portal extends React.PureComponent<
- PropsWithChildren<(MountProps | OpenProps) & { hideRootHtmlElement?: boolean }>
-> {
- private portalRef = React.createRef();
-
- componentDidUpdate(_prevProps: Readonly) {
- if (!isMountProps(_prevProps) || !isMountProps(this.props)) {
- return;
- }
-
- // Remove children and customPages from props before comparing
- // children might hold circular references which deepEqual can't handle
- // and the implementation of customPages or customMenuItems relies on props getting new references
- const prevProps = without(_prevProps.props, 'customPages', 'customMenuItems', 'children');
- const newProps = without(this.props.props, 'customPages', 'customMenuItems', 'children');
- // instead, we simply use the length of customPages to determine if it changed or not
- const customPagesChanged = prevProps.customPages?.length !== newProps.customPages?.length;
- const customMenuItemsChanged = prevProps.customMenuItems?.length !== newProps.customMenuItems?.length;
-
- if (!isDeeplyEqual(prevProps, newProps) || customPagesChanged || customMenuItemsChanged) {
- if (this.portalRef.current) {
- this.props.updateProps({ node: this.portalRef.current, props: this.props.props });
- }
- }
- }
-
- componentDidMount() {
- if (this.portalRef.current) {
- if (isMountProps(this.props)) {
- this.props.mount(this.portalRef.current, this.props.props);
- }
-
- if (isOpenProps(this.props)) {
- this.props.open(this.props.props);
- }
- }
- }
-
- componentWillUnmount() {
- if (this.portalRef.current) {
- if (isMountProps(this.props)) {
- this.props.unmount(this.portalRef.current);
- }
- if (isOpenProps(this.props)) {
- this.props.close();
- }
- }
- }
-
- render() {
- const { hideRootHtmlElement = false } = this.props;
- return (
- <>
- {!hideRootHtmlElement && }
- {this.props.children}
- >
- );
- }
-}
-
const CustomPortalsRenderer = (props: CustomPortalsRendererProps) => {
return (
<>
@@ -215,27 +122,61 @@ const CustomPortalsRenderer = (props: CustomPortalsRendererProps) => {
);
};
-export const SignIn = withClerk(({ clerk, ...props }: WithClerkProp) => {
- return (
-
- );
-}, 'SignIn');
+export const SignIn = withClerk(
+ ({ clerk, component, fallback, ...props }: WithClerkProp) => {
+ const mountingStatus = useWaitForComponentMount(component);
+ const shouldShowFallback = mountingStatus === 'rendering' || !clerk.loaded;
-export const SignUp = withClerk(({ clerk, ...props }: WithClerkProp) => {
- return (
-
- );
-}, 'SignUp');
+ const rendererRootProps = {
+ ...(shouldShowFallback && fallback && { style: { display: 'none' } }),
+ };
+
+ return (
+ <>
+ {shouldShowFallback && fallback}
+ {clerk.loaded && (
+
+ )}
+ >
+ );
+ },
+ { component: 'SignIn', renderWhileLoading: true },
+);
+
+export const SignUp = withClerk(
+ ({ clerk, component, fallback, ...props }: WithClerkProp) => {
+ const mountingStatus = useWaitForComponentMount(component);
+ const shouldShowFallback = mountingStatus === 'rendering' || !clerk.loaded;
+
+ const rendererRootProps = {
+ ...(shouldShowFallback && fallback && { style: { display: 'none' } }),
+ };
+
+ return (
+ <>
+ {shouldShowFallback && fallback}
+ {clerk.loaded && (
+
+ )}
+ >
+ );
+ },
+ { component: 'SignUp', renderWhileLoading: true },
+);
export function UserProfilePage({ children }: PropsWithChildren) {
logErrorInDevMode(userProfilePageRenderedError);
@@ -248,20 +189,37 @@ export function UserProfileLink({ children }: PropsWithChildren>>) => {
+ ({
+ clerk,
+ component,
+ fallback,
+ ...props
+ }: WithClerkProp> & FallbackProp>) => {
+ const mountingStatus = useWaitForComponentMount(component);
+ const shouldShowFallback = mountingStatus === 'rendering' || !clerk.loaded;
+
+ const rendererRootProps = {
+ ...(shouldShowFallback && fallback && { style: { display: 'none' } }),
+ };
+
const { customPages, customPagesPortals } = useUserProfileCustomPages(props.children);
return (
-
-
-
+ <>
+ {shouldShowFallback && fallback}
+
+
+
+ >
);
},
- 'UserProfile',
+ { component: 'UserProfile', renderWhileLoading: true },
);
export const UserProfile: UserProfileExportType = Object.assign(_UserProfile, {
@@ -276,7 +234,19 @@ const UserButtonContext = createContext({
});
const _UserButton = withClerk(
- ({ clerk, ...props }: WithClerkProp>) => {
+ ({
+ clerk,
+ component,
+ fallback,
+ ...props
+ }: WithClerkProp & FallbackProp>) => {
+ const mountingStatus = useWaitForComponentMount(component);
+ const shouldShowFallback = mountingStatus === 'rendering' || !clerk.loaded;
+
+ const rendererRootProps = {
+ ...(shouldShowFallback && fallback && { style: { display: 'none' } }),
+ };
+
const { customPages, customPagesPortals } = useUserProfileCustomPages(props.children, {
allowForAnyChildren: !!props.__experimental_asProvider,
});
@@ -297,18 +267,23 @@ const _UserButton = withClerk(
return (
-
- {/*This mimics the previous behaviour before asProvider existed*/}
- {props.__experimental_asProvider ? sanitizedChildren : null}
-
-
+ {shouldShowFallback && fallback}
+ {clerk.loaded && (
+
+ {/*This mimics the previous behaviour before asProvider existed*/}
+ {props.__experimental_asProvider ? sanitizedChildren : null}
+
+
+ )}
);
},
- 'UserButton',
+ { component: 'UserButton', renderWhileLoading: true },
);
export function MenuItems({ children }: PropsWithChildren) {
@@ -337,7 +312,7 @@ export function UserButtonOutlet(outletProps: Without;
+ return ;
}
export const UserButton: UserButtonExportType = Object.assign(_UserButton, {
@@ -360,20 +335,39 @@ export function OrganizationProfileLink({ children }: PropsWithChildren>>) => {
+ ({
+ clerk,
+ component,
+ fallback,
+ ...props
+ }: WithClerkProp> & FallbackProp>) => {
+ const mountingStatus = useWaitForComponentMount(component);
+ const shouldShowFallback = mountingStatus === 'rendering' || !clerk.loaded;
+
+ const rendererRootProps = {
+ ...(shouldShowFallback && fallback && { style: { display: 'none' } }),
+ };
+
const { customPages, customPagesPortals } = useOrganizationProfileCustomPages(props.children);
return (
-
-
-
+ <>
+ {shouldShowFallback && fallback}
+ {clerk.loaded && (
+
+
+
+ )}
+ >
);
},
- 'OrganizationProfile',
+ { component: 'OrganizationProfile', renderWhileLoading: true },
);
export const OrganizationProfile: OrganizationProfileExportType = Object.assign(_OrganizationProfile, {
@@ -381,16 +375,33 @@ export const OrganizationProfile: OrganizationProfileExportType = Object.assign(
Link: OrganizationProfileLink,
});
-export const CreateOrganization = withClerk(({ clerk, ...props }: WithClerkProp) => {
- return (
-
- );
-}, 'CreateOrganization');
+export const CreateOrganization = withClerk(
+ ({ clerk, component, fallback, ...props }: WithClerkProp) => {
+ const mountingStatus = useWaitForComponentMount(component);
+ const shouldShowFallback = mountingStatus === 'rendering' || !clerk.loaded;
+
+ const rendererRootProps = {
+ ...(shouldShowFallback && fallback && { style: { display: 'none' } }),
+ };
+
+ return (
+ <>
+ {shouldShowFallback && fallback}
+ {clerk.loaded && (
+
+ )}
+ >
+ );
+ },
+ { component: 'CreateOrganization', renderWhileLoading: true },
+);
const OrganizationSwitcherContext = createContext({
mount: () => {},
@@ -399,7 +410,19 @@ const OrganizationSwitcherContext = createContext({
});
const _OrganizationSwitcher = withClerk(
- ({ clerk, ...props }: WithClerkProp>) => {
+ ({
+ clerk,
+ component,
+ fallback,
+ ...props
+ }: WithClerkProp & FallbackProp>) => {
+ const mountingStatus = useWaitForComponentMount(component);
+ const shouldShowFallback = mountingStatus === 'rendering' || !clerk.loaded;
+
+ const rendererRootProps = {
+ ...(shouldShowFallback && fallback && { style: { display: 'none' } }),
+ };
+
const { customPages, customPagesPortals } = useOrganizationProfileCustomPages(props.children, {
allowForAnyChildren: !!props.__experimental_asProvider,
});
@@ -411,6 +434,8 @@ const _OrganizationSwitcher = withClerk(
unmount: clerk.unmountOrganizationSwitcher,
updateProps: (clerk as any).__unstable__updateProps,
props: { ...props, organizationProfileProps },
+ rootProps: rendererRootProps,
+ component,
};
/**
@@ -420,18 +445,23 @@ const _OrganizationSwitcher = withClerk(
return (
-
- {/*This mimics the previous behaviour before asProvider existed*/}
- {props.__experimental_asProvider ? sanitizedChildren : null}
-
-
+ <>
+ {shouldShowFallback && fallback}
+ {clerk.loaded && (
+
+ {/*This mimics the previous behaviour before asProvider existed*/}
+ {props.__experimental_asProvider ? sanitizedChildren : null}
+
+
+ )}
+ >
);
},
- 'OrganizationSwitcher',
+ { component: 'OrganizationSwitcher', renderWhileLoading: true },
);
export function OrganizationSwitcherOutlet(
@@ -447,7 +477,7 @@ export function OrganizationSwitcherOutlet(
},
} satisfies MountProps;
- return ;
+ return ;
}
export const OrganizationSwitcher: OrganizationSwitcherExportType = Object.assign(_OrganizationSwitcher, {
@@ -456,34 +486,86 @@ export const OrganizationSwitcher: OrganizationSwitcherExportType = Object.assig
__experimental_Outlet: OrganizationSwitcherOutlet,
});
-export const OrganizationList = withClerk(({ clerk, ...props }: WithClerkProp) => {
- return (
-
- );
-}, 'OrganizationList');
+export const OrganizationList = withClerk(
+ ({ clerk, component, fallback, ...props }: WithClerkProp) => {
+ const mountingStatus = useWaitForComponentMount(component);
+ const shouldShowFallback = mountingStatus === 'rendering' || !clerk.loaded;
-export const GoogleOneTap = withClerk(({ clerk, ...props }: WithClerkProp) => {
- return (
-
- );
-}, 'GoogleOneTap');
+ const rendererRootProps = {
+ ...(shouldShowFallback && fallback && { style: { display: 'none' } }),
+ };
-export const Waitlist = withClerk(({ clerk, ...props }: WithClerkProp) => {
- return (
-
- );
-}, 'Waitlist');
+ return (
+ <>
+ {shouldShowFallback && fallback}
+ {clerk.loaded && (
+
+ )}
+ >
+ );
+ },
+ { component: 'OrganizationList', renderWhileLoading: true },
+);
+
+export const GoogleOneTap = withClerk(
+ ({ clerk, component, fallback, ...props }: WithClerkProp) => {
+ const mountingStatus = useWaitForComponentMount(component);
+ const shouldShowFallback = mountingStatus === 'rendering' || !clerk.loaded;
+
+ const rendererRootProps = {
+ ...(shouldShowFallback && fallback && { style: { display: 'none' } }),
+ };
+
+ return (
+ <>
+ {shouldShowFallback && fallback}
+ {clerk.loaded && (
+
+ )}
+ >
+ );
+ },
+ { component: 'GoogleOneTap', renderWhileLoading: true },
+);
+
+export const Waitlist = withClerk(
+ ({ clerk, component, fallback, ...props }: WithClerkProp) => {
+ const mountingStatus = useWaitForComponentMount(component);
+ const shouldShowFallback = mountingStatus === 'rendering' || !clerk.loaded;
+
+ const rendererRootProps = {
+ ...(shouldShowFallback && fallback && { style: { display: 'none' } }),
+ };
+
+ return (
+ <>
+ {shouldShowFallback && fallback}
+ {clerk.loaded && (
+
+ )}
+ >
+ );
+ },
+ { component: 'Waitlist', renderWhileLoading: true },
+);
diff --git a/packages/react/src/components/withClerk.tsx b/packages/react/src/components/withClerk.tsx
index 54ff7be47c..b826b6494a 100644
--- a/packages/react/src/components/withClerk.tsx
+++ b/packages/react/src/components/withClerk.tsx
@@ -2,28 +2,32 @@ import type { LoadedClerk, Without } from '@clerk/types';
import React from 'react';
import { useIsomorphicClerkContext } from '../contexts/IsomorphicClerkContext';
-import { errorThrower } from '../errors/errorThrower';
-import { hocChildrenNotAFunctionError } from '../errors/messages';
import { useAssertWrappedByClerkProvider } from '../hooks/useAssertWrappedByClerkProvider';
-export const withClerk = (
+export const withClerk =
(
Component: React.ComponentType
,
- displayName?: string,
+ displayNameOrOptions?: string | { component: string; renderWhileLoading?: boolean },
) => {
- displayName = displayName || Component.displayName || Component.name || 'Component';
+ const passedDisplayedName =
+ typeof displayNameOrOptions === 'string' ? displayNameOrOptions : displayNameOrOptions?.component;
+ const displayName = passedDisplayedName || Component.displayName || Component.name || 'Component';
Component.displayName = displayName;
+
+ const options = typeof displayNameOrOptions === 'string' ? undefined : displayNameOrOptions;
+
const HOC = (props: Without
) => {
useAssertWrappedByClerkProvider(displayName || 'withClerk');
const clerk = useIsomorphicClerkContext();
- if (!clerk.loaded) {
+ if (!clerk.loaded && !options?.renderWhileLoading) {
return null;
}
return (
);
@@ -31,19 +35,3 @@ export const withClerk =
(
HOC.displayName = `withClerk(${displayName})`;
return HOC;
};
-
-export const WithClerk: React.FC<{
- children: (clerk: LoadedClerk) => React.ReactNode;
-}> = ({ children }) => {
- const clerk = useIsomorphicClerkContext();
-
- if (typeof children !== 'function') {
- errorThrower.throw(hocChildrenNotAFunctionError);
- }
-
- if (!clerk.loaded) {
- return null;
- }
-
- return <>{children(clerk as unknown as LoadedClerk)}>;
-};
diff --git a/packages/react/src/errors/messages.ts b/packages/react/src/errors/messages.ts
index 359850c397..e63ce6979a 100644
--- a/packages/react/src/errors/messages.ts
+++ b/packages/react/src/errors/messages.ts
@@ -3,8 +3,6 @@ export const noClerkProviderError = 'You must wrap your application in a
`You've passed multiple children components to <${name}/>. You can only pass a single child component or text.`;
diff --git a/packages/react/src/types.ts b/packages/react/src/types.ts
index eb1326d8d7..0c732dbc1c 100644
--- a/packages/react/src/types.ts
+++ b/packages/react/src/types.ts
@@ -70,7 +70,7 @@ export interface HeadlessBrowserClerkConstructor {
new (publishableKey: string, options?: DomainOrProxyUrl): HeadlessBrowserClerk;
}
-export type WithClerkProp = T & { clerk: LoadedClerk };
+export type WithClerkProp = T & { clerk: LoadedClerk; component?: string };
export interface CustomPortalsRendererProps {
customPagesPortals?: any[];
diff --git a/packages/react/src/utils/useWaitForComponentMount.ts b/packages/react/src/utils/useWaitForComponentMount.ts
new file mode 100644
index 0000000000..dc6019b65f
--- /dev/null
+++ b/packages/react/src/utils/useWaitForComponentMount.ts
@@ -0,0 +1,80 @@
+import { useEffect, useRef, useState } from 'react';
+
+/**
+ * Used to detect when a Clerk component has been added to the DOM.
+ */
+function waitForElementChildren(options: { selector?: string; root?: HTMLElement | null; timeout?: number }) {
+ const { root = document?.body, selector, timeout = 0 } = options;
+
+ return new Promise((resolve, reject) => {
+ if (!root) {
+ reject(new Error('No root element provided'));
+ return;
+ }
+
+ let elementToWatch: HTMLElement | null = root;
+ if (selector) {
+ elementToWatch = root?.querySelector(selector);
+ }
+
+ // Check if the element already has child nodes
+ const isElementAlreadyPresent = elementToWatch?.childElementCount && elementToWatch.childElementCount > 0;
+ if (isElementAlreadyPresent) {
+ resolve();
+ return;
+ }
+
+ // Set up a MutationObserver to detect when the element has children
+ const observer = new MutationObserver(mutationsList => {
+ for (const mutation of mutationsList) {
+ if (mutation.type === 'childList') {
+ if (!elementToWatch && selector) {
+ elementToWatch = root?.querySelector(selector);
+ }
+
+ if (elementToWatch?.childElementCount && elementToWatch.childElementCount > 0) {
+ observer.disconnect();
+ resolve();
+ return;
+ }
+ }
+ }
+ });
+
+ observer.observe(root, { childList: true, subtree: true });
+
+ // Set up an optional timeout to reject the promise if the element never gets child nodes
+ if (timeout > 0) {
+ setTimeout(() => {
+ observer.disconnect();
+ reject(new Error(`Timeout waiting for element children`));
+ }, timeout);
+ }
+ });
+}
+
+/**
+ * Detect when a Clerk component has mounted by watching DOM updates to an element with a `data-clerk-component="${component}"` property.
+ */
+export function useWaitForComponentMount(component?: string) {
+ const watcherRef = useRef>();
+ const [status, setStatus] = useState<'rendering' | 'rendered' | 'error'>('rendering');
+
+ useEffect(() => {
+ if (!component) {
+ throw new Error('Clerk: no component name provided, unable to detect mount.');
+ }
+
+ if (typeof window !== 'undefined' && !watcherRef.current) {
+ watcherRef.current = waitForElementChildren({ selector: `[data-clerk-component="${component}"]` })
+ .then(() => {
+ setStatus('rendered');
+ })
+ .catch(() => {
+ setStatus('error');
+ });
+ }
+ }, [component]);
+
+ return status;
+}