diff --git a/.changeset/config.json b/.changeset/config.json index 845b885da63..de7ee0d0ed4 100644 --- a/.changeset/config.json +++ b/.changeset/config.json @@ -12,7 +12,7 @@ "access": "public", "baseBranch": "origin/main", "updateInternalDependencies": "patch", - "ignore": [], + "ignore": ["@clerk/elements"], "snapshot": { "useCalculatedVersion": true, "prereleaseTemplate": "{tag}.v{commit}" diff --git a/.changeset/dull-moose-kiss.md b/.changeset/dull-moose-kiss.md new file mode 100644 index 00000000000..a845151cc84 --- /dev/null +++ b/.changeset/dull-moose-kiss.md @@ -0,0 +1,2 @@ +--- +--- diff --git a/.changeset/pre.json b/.changeset/pre.json index 454c7f81b51..0fe92d197cb 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -16,8 +16,7 @@ "@clerk/clerk-sdk-node": "4.12.16", "@clerk/shared": "1.0.0", "@clerk/themes": "1.7.9", - "@clerk/types": "3.57.0", - "@clerk/elements": "0.0.1" + "@clerk/types": "3.57.0" }, "changesets": [ "afraid-experts-eat", diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5d0afad0afa..72035253746 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -66,11 +66,11 @@ jobs: - name: Lint types using attw timeout-minutes: ${{ fromJSON(vars.TIMEOUT_MINUTES_SHORT) }} - run: npx turbo lint:attw $TURBO_ARGS --filter=!nextjs --filter=!backend --only + run: npx turbo lint:attw $TURBO_ARGS --filter=!nextjs --filter=!elements --filter=!backend --only - name: Lint types using attw [Errors Allowed] timeout-minutes: ${{ fromJSON(vars.TIMEOUT_MINUTES_SHORT) }} - run: npx turbo lint:attw $TURBO_ARGS --filter=nextjs --filter=backend --continue --only + run: npx turbo lint:attw $TURBO_ARGS --filter=nextjs --filter=backend --filter=elements --continue --only continue-on-error: true # TODO: Remove this when all related errors are fixed - name: Run lint diff --git a/package-lock.json b/package-lock.json index b570d272f96..9a572ad8e49 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3540,6 +3540,70 @@ "version": "0.3.1", "license": "MIT" }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz", + "integrity": "sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.12.tgz", + "integrity": "sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz", + "integrity": "sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.12.tgz", + "integrity": "sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, "node_modules/@esbuild/darwin-arm64": { "version": "0.18.20", "cpu": [ @@ -3555,6 +3619,294 @@ "node": ">=12" } }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz", + "integrity": "sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz", + "integrity": "sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz", + "integrity": "sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz", + "integrity": "sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz", + "integrity": "sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz", + "integrity": "sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz", + "integrity": "sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz", + "integrity": "sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz", + "integrity": "sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz", + "integrity": "sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz", + "integrity": "sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz", + "integrity": "sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz", + "integrity": "sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz", + "integrity": "sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz", + "integrity": "sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz", + "integrity": "sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz", + "integrity": "sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz", + "integrity": "sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, "node_modules/@eslint-community/eslint-utils": { "version": "4.4.0", "license": "MIT", @@ -8958,6 +9310,175 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.9.6.tgz", + "integrity": "sha512-MVNXSSYN6QXOulbHpLMKYi60ppyO13W9my1qogeiAqtjb2yR4LSmfU2+POvDkLzhjYLXz9Rf9+9a3zFHW1Lecg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.9.6.tgz", + "integrity": "sha512-T14aNLpqJ5wzKNf5jEDpv5zgyIqcpn1MlwCrUXLrwoADr2RkWA0vOWP4XxbO9aiO3dvMCQICZdKeDrFl7UMClw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.9.6.tgz", + "integrity": "sha512-CqNNAyhRkTbo8VVZ5R85X73H3R5NX9ONnKbXuHisGWC0qRbTTxnF1U4V9NafzJbgGM0sHZpdO83pLPzq8uOZFw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.9.6.tgz", + "integrity": "sha512-zRDtdJuRvA1dc9Mp6BWYqAsU5oeLixdfUvkTHuiYOHwqYuQ4YgSmi6+/lPvSsqc/I0Omw3DdICx4Tfacdzmhog==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.9.6.tgz", + "integrity": "sha512-oNk8YXDDnNyG4qlNb6is1ojTOGL/tRhbbKeE/YuccItzerEZT68Z9gHrY3ROh7axDc974+zYAPxK5SH0j/G+QQ==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.9.6.tgz", + "integrity": "sha512-Z3O60yxPtuCYobrtzjo0wlmvDdx2qZfeAWTyfOjEDqd08kthDKexLpV97KfAeUXPosENKd8uyJMRDfFMxcYkDQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.9.6.tgz", + "integrity": "sha512-gpiG0qQJNdYEVad+1iAsGAbgAnZ8j07FapmnIAQgODKcOTjLEWM9sRb+MbQyVsYCnA0Im6M6QIq6ax7liws6eQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.9.6.tgz", + "integrity": "sha512-+uCOcvVmFUYvVDr27aiyun9WgZk0tXe7ThuzoUTAukZJOwS5MrGbmSlNOhx1j80GdpqbOty05XqSl5w4dQvcOA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.9.6.tgz", + "integrity": "sha512-HUNqM32dGzfBKuaDUBqFB7tP6VMN74eLZ33Q9Y1TBqRDn+qDonkAUyKWwF9BR9unV7QUzffLnz9GrnKvMqC/fw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.9.6.tgz", + "integrity": "sha512-ch7M+9Tr5R4FK40FHQk8VnML0Szi2KRujUgHXd/HjuH9ifH72GUmw6lStZBo3c3GB82vHa0ZoUfjfcM7JiiMrQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.9.6.tgz", + "integrity": "sha512-VD6qnR99dhmTQ1mJhIzXsRcTBvTjbfbGGwKAHcu+52cVl15AC/kplkhxzW/uT0Xl62Y/meBKDZvoJSJN+vTeGA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.9.6.tgz", + "integrity": "sha512-J9AFDq/xiRI58eR2NIDfyVmTYGyIZmRcvcAoJ48oDld/NTR8wyiPUu2X/v1navJ+N/FGg68LEbX3Ejd6l8B7MQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.9.6.tgz", + "integrity": "sha512-jqzNLhNDvIZOrt69Ce4UjGRpXJBzhUBzawMwnaDAwyHriki3XollsewxWzOzz+4yOFDkuJHtTsZFwMxhYJWmLQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, "node_modules/@rushstack/eslint-patch": { "version": "1.5.1", "license": "MIT" @@ -16516,6 +17037,54 @@ "esbuild-windows-arm64": "0.15.18" } }, + "node_modules/esbuild-android-64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.18.tgz", + "integrity": "sha512-wnpt3OXRhcjfIDSZu9bnzT4/TNTDsOUvip0foZOUBG7QbSt//w3QV4FInVJxNhKc/ErhUxc5z4QjHtMi7/TbgA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-android-arm64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.18.tgz", + "integrity": "sha512-G4xu89B8FCzav9XU8EjsXacCKSG2FT7wW9J6hOc18soEHJdtWu03L3TQDGf0geNxfLTtxENKBzMSq9LlbjS8OQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-darwin-64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.18.tgz", + "integrity": "sha512-2WAvs95uPnVJPuYKP0Eqx+Dl/jaYseZEUUT1sjg97TJa4oBtbAKnPnl3b5M9l51/nbx7+QAEtuummJZW0sBEmg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, "node_modules/esbuild-darwin-arm64": { "version": "0.15.18", "cpu": [ @@ -16531,6 +17100,198 @@ "node": ">=12" } }, + "node_modules/esbuild-freebsd-64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.18.tgz", + "integrity": "sha512-TT3uBUxkteAjR1QbsmvSsjpKjOX6UkCstr8nMr+q7zi3NuZ1oIpa8U41Y8I8dJH2fJgdC3Dj3CXO5biLQpfdZA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-freebsd-arm64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.18.tgz", + "integrity": "sha512-R/oVr+X3Tkh+S0+tL41wRMbdWtpWB8hEAMsOXDumSSa6qJR89U0S/PpLXrGF7Wk/JykfpWNokERUpCeHDl47wA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-32": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.18.tgz", + "integrity": "sha512-lphF3HiCSYtaa9p1DtXndiQEeQDKPl9eN/XNoBf2amEghugNuqXNZA/ZovthNE2aa4EN43WroO0B85xVSjYkbg==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.18.tgz", + "integrity": "sha512-hNSeP97IviD7oxLKFuii5sDPJ+QHeiFTFLoLm7NZQligur8poNOWGIgpQ7Qf8Balb69hptMZzyOBIPtY09GZYw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-arm": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.18.tgz", + "integrity": "sha512-UH779gstRblS4aoS2qpMl3wjg7U0j+ygu3GjIeTonCcN79ZvpPee12Qun3vcdxX+37O5LFxz39XeW2I9bybMVA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-arm64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.18.tgz", + "integrity": "sha512-54qr8kg/6ilcxd+0V3h9rjT4qmjc0CccMVWrjOEM/pEcUzt8X62HfBSeZfT2ECpM7104mk4yfQXkosY8Quptug==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-mips64le": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.18.tgz", + "integrity": "sha512-Mk6Ppwzzz3YbMl/ZZL2P0q1tnYqh/trYZ1VfNP47C31yT0K8t9s7Z077QrDA/guU60tGNp2GOwCQnp+DYv7bxQ==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-ppc64le": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.18.tgz", + "integrity": "sha512-b0XkN4pL9WUulPTa/VKHx2wLCgvIAbgwABGnKMY19WhKZPT+8BxhZdqz6EgkqCLld7X5qiCY2F/bfpUUlnFZ9w==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-riscv64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.18.tgz", + "integrity": "sha512-ba2COaoF5wL6VLZWn04k+ACZjZ6NYniMSQStodFKH/Pu6RxzQqzsmjR1t9QC89VYJxBeyVPTaHuBMCejl3O/xg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-s390x": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.18.tgz", + "integrity": "sha512-VbpGuXEl5FCs1wDVp93O8UIzl3ZrglgnSQ+Hu79g7hZu6te6/YHgVJxCM2SqfIila0J3k0csfnf8VD2W7u2kzQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-netbsd-64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.18.tgz", + "integrity": "sha512-98ukeCdvdX7wr1vUYQzKo4kQ0N2p27H7I11maINv73fVEXt2kyh4K4m9f35U1K43Xc2QGXlzAw0K9yoU7JUjOg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-openbsd-64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.18.tgz", + "integrity": "sha512-yK5NCcH31Uae076AyQAXeJzt/vxIo9+omZRKj1pauhk3ITuADzuOx5N2fdHrAKPxN+zH3w96uFKlY7yIn490xQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, "node_modules/esbuild-register": { "version": "3.4.2", "dev": true, @@ -16542,6 +17303,102 @@ "esbuild": ">=0.12 <1" } }, + "node_modules/esbuild-sunos-64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.18.tgz", + "integrity": "sha512-On22LLFlBeLNj/YF3FT+cXcyKPEI263nflYlAhz5crxtp3yRG1Ugfr7ITyxmCmjm4vbN/dGrb/B7w7U8yJR9yw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-32": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.18.tgz", + "integrity": "sha512-o+eyLu2MjVny/nt+E0uPnBxYuJHBvho8vWsC2lV61A7wwTWC3jkN2w36jtA+yv1UgYkHRihPuQsL23hsCYGcOQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.18.tgz", + "integrity": "sha512-qinug1iTTaIIrCorAUjR0fcBk24fjzEedFYhhispP8Oc7SFvs+XeW3YpAKiKp8dRpizl4YYAhxMjlftAMJiaUw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-arm64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.18.tgz", + "integrity": "sha512-q9bsYzegpZcLziq0zgUi5KqGVtfhjxGbnksaBFYmWLxeV/S1fK4OLdq2DFYnXcLMjlZw2L0jLsk1eGoB522WXQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild/node_modules/@esbuild/android-arm": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.18.tgz", + "integrity": "sha512-5GT+kcs2WVGjVs7+boataCkO5Fg0y4kCjzkB5bAip7H4jfnOS3dA6KPiww9W1OEKTKeAcUVhdZGvgI65OXmUnw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild/node_modules/@esbuild/linux-loong64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.18.tgz", + "integrity": "sha512-L4jVKS82XVhw2nvzLg/19ClLWg0y27ulRwuP7lcyL6AbUWB5aPglXY3M21mauDQMDfRLs8cQmeT03r/+X3cZYQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, "node_modules/escalade": { "version": "3.1.1", "license": "MIT", @@ -34038,8 +34895,9 @@ }, "node_modules/tsup": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/tsup/-/tsup-7.2.0.tgz", + "integrity": "sha512-vDHlczXbgUvY3rWvqFEbSqmC1L7woozbzngMqTtL2PGBODTtWlRwGDDawhvWzr5c1QjKe4OAKqJGfE1xeXUvtQ==", "dev": true, - "license": "MIT", "dependencies": { "bundle-require": "^4.0.0", "cac": "^6.7.12", @@ -34080,6 +34938,342 @@ } } }, + "node_modules/tsup/node_modules/@esbuild/android-arm": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz", + "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/tsup/node_modules/@esbuild/android-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz", + "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/tsup/node_modules/@esbuild/android-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz", + "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/tsup/node_modules/@esbuild/darwin-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz", + "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/tsup/node_modules/@esbuild/freebsd-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz", + "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/tsup/node_modules/@esbuild/freebsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz", + "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/tsup/node_modules/@esbuild/linux-arm": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz", + "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/tsup/node_modules/@esbuild/linux-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz", + "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/tsup/node_modules/@esbuild/linux-ia32": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz", + "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/tsup/node_modules/@esbuild/linux-loong64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz", + "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/tsup/node_modules/@esbuild/linux-mips64el": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz", + "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/tsup/node_modules/@esbuild/linux-ppc64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz", + "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/tsup/node_modules/@esbuild/linux-riscv64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz", + "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/tsup/node_modules/@esbuild/linux-s390x": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz", + "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/tsup/node_modules/@esbuild/linux-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz", + "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/tsup/node_modules/@esbuild/netbsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz", + "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/tsup/node_modules/@esbuild/openbsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz", + "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/tsup/node_modules/@esbuild/sunos-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz", + "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/tsup/node_modules/@esbuild/win32-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz", + "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/tsup/node_modules/@esbuild/win32-ia32": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz", + "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/tsup/node_modules/@esbuild/win32-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz", + "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, "node_modules/tsup/node_modules/bundle-require": { "version": "4.0.1", "dev": true, @@ -36440,16 +37634,16 @@ }, "packages/backend": { "name": "@clerk/backend", - "version": "1.0.0-alpha-v5.17", + "version": "1.0.0-beta-v5.18", "license": "MIT", "dependencies": { - "@clerk/shared": "2.0.0-alpha-v5.10", + "@clerk/shared": "2.0.0-beta-v5.11", "cookie": "0.5.0", "snakecase-keys": "5.4.4", "tslib": "2.4.1" }, "devDependencies": { - "@clerk/types": "4.0.0-alpha-v5.12", + "@clerk/types": "4.0.0-beta-v5.13", "@cloudflare/workers-types": "^3.18.0", "@types/chai": "^4.3.3", "@types/cookie": "^0.5.1", @@ -36479,12 +37673,12 @@ }, "packages/chrome-extension": { "name": "@clerk/chrome-extension", - "version": "1.0.0-alpha-v5.18", + "version": "1.0.0-beta-v5.20", "license": "MIT", "dependencies": { - "@clerk/clerk-js": "5.0.0-alpha-v5.18", - "@clerk/clerk-react": "5.0.0-alpha-v5.16", - "@clerk/shared": "2.0.0-alpha-v5.10", + "@clerk/clerk-js": "5.0.0-beta-v5.20", + "@clerk/clerk-react": "5.0.0-beta-v5.17", + "@clerk/shared": "2.0.0-beta-v5.11", "webextension-polyfill": "^0.10.0" }, "devDependencies": { @@ -36528,12 +37722,12 @@ }, "packages/clerk-js": { "name": "@clerk/clerk-js", - "version": "5.0.0-alpha-v5.18", + "version": "5.0.0-beta-v5.20", "license": "MIT", "dependencies": { - "@clerk/localizations": "2.0.0-alpha-v5.11", - "@clerk/shared": "2.0.0-alpha-v5.10", - "@clerk/types": "4.0.0-alpha-v5.12", + "@clerk/localizations": "2.0.0-beta-v5.12", + "@clerk/shared": "2.0.0-beta-v5.11", + "@clerk/types": "4.0.0-beta-v5.13", "@emotion/cache": "11.11.0", "@emotion/react": "11.11.1", "@floating-ui/react": "0.25.4", @@ -36652,27 +37846,26 @@ }, "packages/elements": { "name": "@clerk/elements", - "version": "0.0.2-alpha-v5.7", + "version": "0.0.0", "license": "MIT", "dependencies": { - "@clerk/clerk-react": "5.0.0-alpha-v5.16", - "@clerk/nextjs": "5.0.0-alpha-v5.19", - "@clerk/shared": "2.0.0-alpha-v5.10", + "@clerk/clerk-react": "5.0.0-beta-v5.17", + "@clerk/shared": "2.0.0-beta-v5.11", "@radix-ui/react-form": "^0.0.3", "@radix-ui/react-slot": "^1.0.2", "@statelyai/inspect": "^0.1.0", "@xstate/react": "^4.0.2", - "clsx": "^2.1.0", "xstate": "^5.4.1" }, "devDependencies": { - "@clerk/types": "^4.0.0-alpha-v5.12", + "@clerk/types": "^4.0.0-beta-v5.13", "@types/node": "^18.17.0", "@types/react": "*", "@types/react-dom": "*", "eslint-config-custom": "*", "next": "^14.0.4", "tslib": "2.4.1", + "tsup": "^8.0.1", "type-fest": "^4.9.0", "typescript": "^5.3.3" }, @@ -36690,6 +37883,22 @@ } } }, + "packages/elements/node_modules/@esbuild/darwin-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz", + "integrity": "sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, "packages/elements/node_modules/@next/env": { "version": "14.0.4", "resolved": "https://registry.npmjs.org/@next/env/-/env-14.0.4.tgz", @@ -36721,6 +37930,12 @@ "tslib": "^2.4.0" } }, + "packages/elements/node_modules/@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", + "dev": true + }, "packages/elements/node_modules/@xstate/react": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/@xstate/react/-/react-4.0.2.tgz", @@ -36739,12 +37954,77 @@ } } }, - "packages/elements/node_modules/clsx": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.0.tgz", - "integrity": "sha512-m3iNNWpd9rl3jvvcBnu70ylMdrXt8Vlq4HYadnU5fwcOtvkSQWPmj7amUcDT2qYI7risszBjI5AUIUox9D16pg==", + "packages/elements/node_modules/bundle-require": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/bundle-require/-/bundle-require-4.0.2.tgz", + "integrity": "sha512-jwzPOChofl67PSTW2SGubV9HBQAhhR2i6nskiOThauo9dzwDUgOWQScFVaJkjEfYX+UXiD+LEx8EblQMc2wIag==", + "dev": true, + "dependencies": { + "load-tsconfig": "^0.2.3" + }, "engines": { - "node": ">=6" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "peerDependencies": { + "esbuild": ">=0.17" + } + }, + "packages/elements/node_modules/esbuild": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.12.tgz", + "integrity": "sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.19.12", + "@esbuild/android-arm": "0.19.12", + "@esbuild/android-arm64": "0.19.12", + "@esbuild/android-x64": "0.19.12", + "@esbuild/darwin-arm64": "0.19.12", + "@esbuild/darwin-x64": "0.19.12", + "@esbuild/freebsd-arm64": "0.19.12", + "@esbuild/freebsd-x64": "0.19.12", + "@esbuild/linux-arm": "0.19.12", + "@esbuild/linux-arm64": "0.19.12", + "@esbuild/linux-ia32": "0.19.12", + "@esbuild/linux-loong64": "0.19.12", + "@esbuild/linux-mips64el": "0.19.12", + "@esbuild/linux-ppc64": "0.19.12", + "@esbuild/linux-riscv64": "0.19.12", + "@esbuild/linux-s390x": "0.19.12", + "@esbuild/linux-x64": "0.19.12", + "@esbuild/netbsd-x64": "0.19.12", + "@esbuild/openbsd-x64": "0.19.12", + "@esbuild/sunos-x64": "0.19.12", + "@esbuild/win32-arm64": "0.19.12", + "@esbuild/win32-ia32": "0.19.12", + "@esbuild/win32-x64": "0.19.12" + } + }, + "packages/elements/node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "packages/elements/node_modules/next": { @@ -36794,11 +38074,113 @@ } } }, + "packages/elements/node_modules/rollup": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.9.6.tgz", + "integrity": "sha512-05lzkCS2uASX0CiLFybYfVkwNbKZG5NFQ6Go0VWyogFTXXbR039UVsegViTntkk4OglHBdF54ccApXRRuXRbsg==", + "dev": true, + "dependencies": { + "@types/estree": "1.0.5" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.9.6", + "@rollup/rollup-android-arm64": "4.9.6", + "@rollup/rollup-darwin-arm64": "4.9.6", + "@rollup/rollup-darwin-x64": "4.9.6", + "@rollup/rollup-linux-arm-gnueabihf": "4.9.6", + "@rollup/rollup-linux-arm64-gnu": "4.9.6", + "@rollup/rollup-linux-arm64-musl": "4.9.6", + "@rollup/rollup-linux-riscv64-gnu": "4.9.6", + "@rollup/rollup-linux-x64-gnu": "4.9.6", + "@rollup/rollup-linux-x64-musl": "4.9.6", + "@rollup/rollup-win32-arm64-msvc": "4.9.6", + "@rollup/rollup-win32-ia32-msvc": "4.9.6", + "@rollup/rollup-win32-x64-msvc": "4.9.6", + "fsevents": "~2.3.2" + } + }, + "packages/elements/node_modules/source-map": { + "version": "0.8.0-beta.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz", + "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==", + "dev": true, + "dependencies": { + "whatwg-url": "^7.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "packages/elements/node_modules/tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, "packages/elements/node_modules/tslib": { "version": "2.4.1", "dev": true, "license": "0BSD" }, + "packages/elements/node_modules/tsup": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/tsup/-/tsup-8.0.1.tgz", + "integrity": "sha512-hvW7gUSG96j53ZTSlT4j/KL0q1Q2l6TqGBFc6/mu/L46IoNWqLLUzLRLP1R8Q7xrJTmkDxxDoojV5uCVs1sVOg==", + "dev": true, + "dependencies": { + "bundle-require": "^4.0.0", + "cac": "^6.7.12", + "chokidar": "^3.5.1", + "debug": "^4.3.1", + "esbuild": "^0.19.2", + "execa": "^5.0.0", + "globby": "^11.0.3", + "joycon": "^3.0.1", + "postcss-load-config": "^4.0.1", + "resolve-from": "^5.0.0", + "rollup": "^4.0.2", + "source-map": "0.8.0-beta.0", + "sucrase": "^3.20.3", + "tree-kill": "^1.2.2" + }, + "bin": { + "tsup": "dist/cli-default.js", + "tsup-node": "dist/cli-node.js" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@microsoft/api-extractor": "^7.36.0", + "@swc/core": "^1", + "postcss": "^8.4.12", + "typescript": ">=4.5.0" + }, + "peerDependenciesMeta": { + "@microsoft/api-extractor": { + "optional": true + }, + "@swc/core": { + "optional": true + }, + "postcss": { + "optional": true + }, + "typescript": { + "optional": true + } + } + }, "packages/elements/node_modules/type-fest": { "version": "4.9.0", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.9.0.tgz", @@ -36824,6 +38206,23 @@ "node": ">=14.17" } }, + "packages/elements/node_modules/webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "dev": true + }, + "packages/elements/node_modules/whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "dev": true, + "dependencies": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, "packages/elements/node_modules/xstate": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/xstate/-/xstate-5.5.0.tgz", @@ -37055,17 +38454,17 @@ }, "packages/expo": { "name": "@clerk/clerk-expo", - "version": "1.0.0-alpha-v5.18", + "version": "1.0.0-beta-v5.20", "license": "MIT", "dependencies": { - "@clerk/clerk-js": "5.0.0-alpha-v5.18", - "@clerk/clerk-react": "5.0.0-alpha-v5.16", - "@clerk/shared": "2.0.0-alpha-v5.10", + "@clerk/clerk-js": "5.0.0-beta-v5.20", + "@clerk/clerk-react": "5.0.0-beta-v5.17", + "@clerk/shared": "2.0.0-beta-v5.11", "base-64": "^1.0.0", "react-native-url-polyfill": "2.0.0" }, "devDependencies": { - "@clerk/types": "^4.0.0-alpha-v5.12", + "@clerk/types": "^4.0.0-beta-v5.13", "@types/base-64": "^1.0.2", "@types/node": "^18.17.0", "@types/react": "*", @@ -37090,12 +38489,12 @@ }, "packages/fastify": { "name": "@clerk/fastify", - "version": "1.0.0-alpha-v5.19", + "version": "1.0.0-beta-v5.20", "license": "MIT", "dependencies": { - "@clerk/backend": "1.0.0-alpha-v5.17", - "@clerk/shared": "2.0.0-alpha-v5.10", - "@clerk/types": "4.0.0-alpha-v5.12", + "@clerk/backend": "1.0.0-beta-v5.18", + "@clerk/shared": "2.0.0-beta-v5.11", + "@clerk/types": "4.0.0-beta-v5.13", "cookies": "0.8.0" }, "devDependencies": { @@ -37113,17 +38512,17 @@ } }, "packages/gatsby-plugin-clerk": { - "version": "5.0.0-alpha-v5.19", + "version": "5.0.0-beta-v5.20", "license": "MIT", "dependencies": { - "@clerk/backend": "1.0.0-alpha-v5.17", - "@clerk/clerk-react": "5.0.0-alpha-v5.16", - "@clerk/clerk-sdk-node": "5.0.0-alpha-v5.17", + "@clerk/backend": "1.0.0-beta-v5.18", + "@clerk/clerk-react": "5.0.0-beta-v5.17", + "@clerk/clerk-sdk-node": "5.0.0-beta-v5.18", "cookie": "0.5.0", "tslib": "2.4.1" }, "devDependencies": { - "@clerk/types": "4.0.0-alpha-v5.12", + "@clerk/types": "4.0.0-beta-v5.13", "@types/cookie": "^0.5.0", "@types/node": "^18.17.0", "eslint-config-custom": "*", @@ -37143,10 +38542,10 @@ }, "packages/localizations": { "name": "@clerk/localizations", - "version": "2.0.0-alpha-v5.11", + "version": "2.0.0-beta-v5.12", "license": "MIT", "devDependencies": { - "@clerk/types": "4.0.0-alpha-v5.12", + "@clerk/types": "4.0.0-beta-v5.13", "@types/node": "^18.17.0", "eslint-config-custom": "*", "tsup": "*", @@ -37162,16 +38561,16 @@ }, "packages/nextjs": { "name": "@clerk/nextjs", - "version": "5.0.0-alpha-v5.19", + "version": "5.0.0-beta-v5.20", "license": "MIT", "dependencies": { - "@clerk/backend": "1.0.0-alpha-v5.17", - "@clerk/clerk-react": "5.0.0-alpha-v5.16", - "@clerk/shared": "2.0.0-alpha-v5.10", + "@clerk/backend": "1.0.0-beta-v5.18", + "@clerk/clerk-react": "5.0.0-beta-v5.17", + "@clerk/shared": "2.0.0-beta-v5.11", "path-to-regexp": "6.2.1" }, "devDependencies": { - "@clerk/types": "4.0.0-alpha-v5.12", + "@clerk/types": "4.0.0-beta-v5.13", "@types/node": "^18.17.0", "@types/react": "*", "@types/react-dom": "*", @@ -37196,17 +38595,17 @@ }, "packages/react": { "name": "@clerk/clerk-react", - "version": "5.0.0-alpha-v5.16", + "version": "5.0.0-beta-v5.17", "license": "MIT", "dependencies": { - "@clerk/shared": "2.0.0-alpha-v5.10", - "@clerk/types": "4.0.0-alpha-v5.12", + "@clerk/shared": "2.0.0-beta-v5.11", + "@clerk/types": "4.0.0-beta-v5.13", "eslint-config-custom": "*", "semver": "^7.5.4", "tslib": "2.4.1" }, "devDependencies": { - "@clerk/themes": "2.0.0-alpha-v5.2", + "@clerk/themes": "2.0.0-beta-v5.3", "@types/node": "^18.17.0", "@types/react": "*", "@types/react-dom": "*", @@ -37228,17 +38627,17 @@ }, "packages/remix": { "name": "@clerk/remix", - "version": "4.0.0-alpha-v5.19", + "version": "4.0.0-beta-v5.20", "license": "MIT", "dependencies": { - "@clerk/backend": "1.0.0-alpha-v5.17", - "@clerk/clerk-react": "5.0.0-alpha-v5.16", - "@clerk/shared": "2.0.0-alpha-v5.10", + "@clerk/backend": "1.0.0-beta-v5.18", + "@clerk/clerk-react": "5.0.0-beta-v5.17", + "@clerk/shared": "2.0.0-beta-v5.11", "cookie": "0.5.0", "tslib": "2.4.1" }, "devDependencies": { - "@clerk/types": "4.0.0-alpha-v5.12", + "@clerk/types": "4.0.0-beta-v5.13", "@remix-run/react": "^2.0.0", "@remix-run/server-runtime": "^2.0.0", "@types/cookie": "^0.5.0", @@ -37264,16 +38663,16 @@ }, "packages/sdk-node": { "name": "@clerk/clerk-sdk-node", - "version": "5.0.0-alpha-v5.17", + "version": "5.0.0-beta-v5.18", "license": "MIT", "dependencies": { - "@clerk/backend": "1.0.0-alpha-v5.17", - "@clerk/shared": "2.0.0-alpha-v5.10", + "@clerk/backend": "1.0.0-beta-v5.18", + "@clerk/shared": "2.0.0-beta-v5.11", "camelcase-keys": "6.2.2", "snakecase-keys": "3.2.1" }, "devDependencies": { - "@clerk/types": "4.0.0-alpha-v5.12", + "@clerk/types": "4.0.0-beta-v5.13", "@types/express": "4.17.14", "@types/node": "^18.17.0", "eslint-config-custom": "*", @@ -37306,7 +38705,7 @@ }, "packages/shared": { "name": "@clerk/shared", - "version": "2.0.0-alpha-v5.10", + "version": "2.0.0-beta-v5.11", "hasInstallScript": true, "license": "MIT", "dependencies": { @@ -37316,7 +38715,7 @@ "swr": "2.2.0" }, "devDependencies": { - "@clerk/types": "4.0.0-alpha-v5.12", + "@clerk/types": "4.0.0-beta-v5.13", "@types/glob-to-regexp": "0.4.1", "@types/js-cookie": "3.0.2", "@types/node": "^18.17.0", @@ -37351,10 +38750,10 @@ }, "packages/themes": { "name": "@clerk/themes", - "version": "2.0.0-alpha-v5.2", + "version": "2.0.0-beta-v5.3", "license": "MIT", "devDependencies": { - "@clerk/types": "4.0.0-alpha-v5.12", + "@clerk/types": "4.0.0-beta-v5.13", "@types/node": "^18.17.0", "eslint-config-custom": "*", "typescript": "*" @@ -37369,7 +38768,7 @@ }, "packages/types": { "name": "@clerk/types", - "version": "4.0.0-alpha-v5.12", + "version": "4.0.0-beta-v5.13", "license": "MIT", "dependencies": { "csstype": "3.1.1" diff --git a/packages/elements/.npmignore b/packages/elements/.npmignore index 1e107f52e47..1e8fc102c3d 100644 --- a/packages/elements/.npmignore +++ b/packages/elements/.npmignore @@ -1 +1,2 @@ examples +dist/metafile-*.json diff --git a/packages/elements/examples/nextjs/app/otp-playground/page.tsx b/packages/elements/examples/nextjs/app/otp-playground/page.tsx index 03fd0b5b37a..71a515e4b1d 100644 --- a/packages/elements/examples/nextjs/app/otp-playground/page.tsx +++ b/packages/elements/examples/nextjs/app/otp-playground/page.tsx @@ -1,13 +1,14 @@ 'use client'; -import { Field, Input, Label, SignIn, SignInStart } from '@clerk/elements'; +import { Field, Input, Label } from '@clerk/elements/common'; +import { SignIn, Start } from '@clerk/elements/sign-in'; import clsx from 'clsx'; import { AnimatePresence, motion } from 'framer-motion'; export default function Page() { return ( - +
@@ -47,7 +48,7 @@ export default function Page() { />
-
+
); } diff --git a/packages/elements/examples/nextjs/app/sign-in/[[...sign-in]]/page.tsx b/packages/elements/examples/nextjs/app/sign-in/[[...sign-in]]/page.tsx index 598d431f8aa..abd58c97d37 100644 --- a/packages/elements/examples/nextjs/app/sign-in/[[...sign-in]]/page.tsx +++ b/packages/elements/examples/nextjs/app/sign-in/[[...sign-in]]/page.tsx @@ -1,16 +1,7 @@ 'use client'; -import { - GlobalError, - SignIn, - SignInContinue, - SignInFactorOne, - SignInFactorTwo, - SignInSocialProvider, - SignInStart, - SignInStrategy, - Submit, -} from '@clerk/elements'; +import { GlobalError, Submit } from '@clerk/elements/common'; +import { Continue, Factor, SignIn, SocialProvider, Start, Verification } from '@clerk/elements/sign-in'; import { H1, H2, H3, HR as Hr, P } from '@/components/design'; import { CustomField, CustomSubmit } from '@/components/form'; @@ -21,36 +12,36 @@ export default function SignInPage() { return (
- +

START

- Sign In with GitHub - + - Sign In with Google - + - Sign In with Metamask - +

@@ -71,36 +62,35 @@ export default function SignInPage() { Sign In
- + - +

STRATEGIES (FIRST/SECOND FACTOR)

- Current Factor: First - Second + Current Factor: First | Second

- + Sign In - + - + Sign In - + - + Sign In - + - +

Verify your email

Please check your email for a verification code...

@@ -119,9 +109,9 @@ export default function SignInPage() { Verify -
+
-
+ diff --git a/packages/elements/examples/nextjs/app/sign-up/[[...sign-up]]/page.tsx b/packages/elements/examples/nextjs/app/sign-up/[[...sign-up]]/page.tsx index 5bf7b6074a9..0fe44161d75 100644 --- a/packages/elements/examples/nextjs/app/sign-up/[[...sign-up]]/page.tsx +++ b/packages/elements/examples/nextjs/app/sign-up/[[...sign-up]]/page.tsx @@ -1,14 +1,7 @@ 'use client'; -import { - GlobalError, - SignUp, - SignUpContinue, - SignUpSocialProvider, - SignUpStart, - SignUpStrategy, - SignUpVerify, -} from '@clerk/elements'; +import { GlobalError } from '@clerk/elements/common'; +import { Continue, SignUp, SocialProvider, Start, Verification, Verify } from '@clerk/elements/sign-up'; import { H1, HR as Hr } from '@/components/design'; import { CustomField, CustomSubmit } from '@/components/form'; @@ -19,34 +12,34 @@ export default function SignUpPage() { return (
- +

SIGN UP - START

- Sign In with GitHub - + - Sign In with Google - + - Sign In with Metamask - +

@@ -66,9 +59,9 @@ export default function SignUpPage() { Sign Up
- + - +

SIGN UP - CONTINUE

@@ -95,22 +88,22 @@ export default function SignUpPage() { Submit
-
+ - +

SIGN UP - VERIFY

- + Verify - + - Please check your email for a link to verify your account. -
+ Please check your email for a link to verify your account. + diff --git a/packages/elements/examples/nextjs/components/form.tsx b/packages/elements/examples/nextjs/components/form.tsx index 3bfb93dd43f..a62ac9151e8 100644 --- a/packages/elements/examples/nextjs/components/form.tsx +++ b/packages/elements/examples/nextjs/components/form.tsx @@ -7,7 +7,7 @@ import { Input, Label, Submit as ElementsSubmit, -} from '@clerk/elements'; +} from '@clerk/elements/common'; import clsx from 'clsx'; import { forwardRef } from 'react'; @@ -21,7 +21,7 @@ function OTPInputSegment({ value, status }: any) { className={clsx( 'flex flex-col justify-center items-center h-12 w-10 rounded-lg border-2 bg-white border-[var(--border-color)] [--border-color:theme(colors.gray.300)] data-[state="invalid"]:[--border-color:theme(colors.red.500)] text-lg text-black self-stretch', (status === 'cursor' || status === 'selected') && - '[--border-color:theme(colors.purple.500)] shadow-[theme(colors.purple.500_0_0_0_1px)]', + '[--border-color:theme(colors.purple.500)] shadow-[0_0_0_1px_theme(colors.purple.500)]', status === 'selected' && 'bg-purple-100', )} > @@ -32,7 +32,7 @@ function OTPInputSegment({ value, status }: any) { ); } -export const CustomField = forwardRef(function CustomField( +export const CustomField = forwardRef(function CustomField( { name, label }, forwardedRef, ) { @@ -43,6 +43,7 @@ export const CustomField = forwardRef(fu } : { className: 'bg-tertiary rounded-sm px-2 py-1 border border-foreground data-[invalid]:border-red-500', + ref: forwardedRef, }; return ( @@ -53,7 +54,6 @@ export const CustomField = forwardRef(fu
diff --git a/packages/elements/examples/nextjs/components/sign-in-debug.tsx b/packages/elements/examples/nextjs/components/sign-in-debug.tsx index ca71f1c052a..51e872fcdd7 100644 --- a/packages/elements/examples/nextjs/components/sign-in-debug.tsx +++ b/packages/elements/examples/nextjs/components/sign-in-debug.tsx @@ -1,7 +1,7 @@ 'use client'; import { SignedIn } from '@clerk/clerk-react'; -import { useSignInFlow, useSignInFlowSelector } from '@clerk/elements'; +import { useSignInFlow, useSignInFlowSelector } from '@clerk/elements/sign-in'; import { SignOutButton } from '@clerk/nextjs'; import { Button } from './design'; @@ -27,6 +27,7 @@ export function SignInLogButtons() { + {/* @ts-expect-error - Intentionally not in exported clerk-js types */} diff --git a/packages/elements/examples/nextjs/components/sign-up-debug.tsx b/packages/elements/examples/nextjs/components/sign-up-debug.tsx index dfd42a11dd4..6bb47f1d433 100644 --- a/packages/elements/examples/nextjs/components/sign-up-debug.tsx +++ b/packages/elements/examples/nextjs/components/sign-up-debug.tsx @@ -1,7 +1,7 @@ 'use client'; import { SignedIn } from '@clerk/clerk-react'; -import { useSignUpFlow, useSignUpFlowSelector } from '@clerk/elements'; +import { useSignUpFlow, useSignUpFlowSelector } from '@clerk/elements/sign-up'; import { SignOutButton } from '@clerk/nextjs'; import { Button } from './design'; @@ -27,6 +27,7 @@ export function SignUpLogButtons() { + {/* @ts-expect-error - Intentionally not in exported clerk-js types */} diff --git a/packages/elements/examples/nextjs/components/social-providers.tsx b/packages/elements/examples/nextjs/components/social-providers.tsx index 63cd4e76f2b..2dc280e0220 100644 --- a/packages/elements/examples/nextjs/components/social-providers.tsx +++ b/packages/elements/examples/nextjs/components/social-providers.tsx @@ -1,6 +1,6 @@ 'use client'; -import { SocialProviderIcon as ClerkElementsSocialProviderIcon } from '@clerk/elements'; +import { SocialProviderIcon as ClerkElementsSocialProviderIcon } from '@clerk/elements/common'; import Image from 'next/image'; import type { ComponentProps } from 'react'; diff --git a/packages/elements/examples/nextjs/package.json b/packages/elements/examples/nextjs/package.json index 3bd337c37a0..2b6f6eb5f71 100644 --- a/packages/elements/examples/nextjs/package.json +++ b/packages/elements/examples/nextjs/package.json @@ -15,7 +15,7 @@ "@radix-ui/react-form": "^0.0.3", "clsx": "^2.0.0", "framer-motion": "^11.0.2", - "next": "14.0.4", + "next": "^14.1.0", "react": "^18", "react-dom": "^18" }, diff --git a/packages/elements/package.json b/packages/elements/package.json index 42a3cf005b7..31ff57bb9fc 100644 --- a/packages/elements/package.json +++ b/packages/elements/package.json @@ -1,17 +1,17 @@ { "name": "@clerk/elements", - "version": "0.0.2-beta-v5.8", - "private": true, + "version": "0.0.0", "description": "Clerk Elements", "keywords": [ "clerk", "typescript", - "nextjs", "auth", "authentication", "passwordless", "session", - "jwt" + "jwt", + "elements", + "radix" ], "homepage": "https://clerk.com/", "bugs": { @@ -26,6 +26,16 @@ "author": "Clerk", "sideEffects": false, "exports": { + "./*": { + "import": { + "types": "./dist/react/*/index.d.mts", + "default": "./dist/react/*/index.mjs" + }, + "require": { + "types": "./dist/react/*/index.d.ts", + "default": "./dist/react/*/index.js" + } + }, ".": { "import": { "types": "./dist/index.d.mts", @@ -37,8 +47,6 @@ } } }, - "main": "./dist/index.js", - "types": "./dist/index.d.ts", "files": [ "dist" ], @@ -49,9 +57,9 @@ "app:e2e": "(cd examples/nextjs && npm run e2e)", "app:lint": "(cd examples/nextjs && npm run lint)", "build": "tsup", - "clean": "rimraf ./dist", + "build:analyze": "tsup --metafile; open https://esbuild.github.io/analyze/", + "build:declarations": "tsc -p tsconfig.json", "dev": "tsup --watch", - "dev:publish": "npm run dev -- --env.publish", "lint": "eslint src/", "lint:attw": "attw --pack .", "lint:publint": "publint", @@ -60,13 +68,11 @@ }, "dependencies": { "@clerk/clerk-react": "5.0.0-beta-v5.17", - "@clerk/nextjs": "5.0.0-beta-v5.20", "@clerk/shared": "2.0.0-beta-v5.11", "@radix-ui/react-form": "^0.0.3", "@radix-ui/react-slot": "^1.0.2", "@statelyai/inspect": "^0.1.0", "@xstate/react": "^4.0.2", - "clsx": "^2.1.0", "xstate": "^5.4.1" }, "devDependencies": { @@ -77,6 +83,7 @@ "eslint-config-custom": "*", "next": "^14.0.4", "tslib": "2.4.1", + "tsup": "^8.0.1", "type-fest": "^4.9.0", "typescript": "^5.3.3" }, diff --git a/packages/elements/src/index.ts b/packages/elements/src/index.ts index b18a1219d87..7d21ce99b4b 100644 --- a/packages/elements/src/index.ts +++ b/packages/elements/src/index.ts @@ -1,37 +1,6 @@ -'use client'; +// TODO: Add link to docs +throw new Error(`No exports are available from the top-level "@clerk/elements" package. +Use specific subpath imports instead, e.g. "@clerk/elements/sign-in". -import { useNextRouter } from '~/react/router/next'; - -/** Common Components */ -export { Field, FieldError, FieldState, Form, GlobalError, Input, Label, Submit } from '~/react/common/form'; -export { SocialProviderIcon } from '~/react/common/third-party-providers/social-provider'; - -/** Sign In Components */ -export { - SignIn, - SignInStart, - SignInFactorOne, - SignInFactorTwo, - SignInContinue, - SignInSocialProviders, - SignInSocialProvider, - SignInSocialProviderIcon, - SignInStrategy, -} from '~/react/sign-in'; - -/** Sign Up Components */ -export { - SignUp, - SignUpStart, - SignUpContinue, - SignUpVerify, - SignUpSocialProviders, - SignUpSocialProvider, - SignUpSocialProviderIcon, - SignUpStrategy, -} from '~/react/sign-up'; - -/** Hooks */ -export { useSignUpFlow, useSignUpFlowSelector } from '~/internals/machines/sign-up/sign-up.context'; -export { useSignInFlow, useSignInFlowSelector } from '~/internals/machines/sign-in/sign-in.context'; -export { useNextRouter }; +Find all available exports in the documentation: +https://clerk.com/docs`); diff --git a/packages/elements/src/internals/machines/sign-in/sign-in.machine.ts b/packages/elements/src/internals/machines/sign-in/sign-in.machine.ts index 0cc350378fb..26fd316c709 100644 --- a/packages/elements/src/internals/machines/sign-in/sign-in.machine.ts +++ b/packages/elements/src/internals/machines/sign-in/sign-in.machine.ts @@ -476,15 +476,17 @@ export const SignInMachine = setup({ // continueSignUp }, }; + } else if (event.type === 'AUTHENTICATE.OAUTH' && event.strategy) { + return { + clerk: context.clerk, + params: { + strategy: event.strategy, + // continueSignUp + }, + }; } - return { - clerk: context.clerk, - params: { - strategy: event.strategy, - // continueSignUp - }, - }; + throw new ClerkElementsRuntimeError('Invalid strategy'); }, onError: { actions: 'setFormErrors', diff --git a/packages/elements/src/internals/machines/sign-up/sign-up.machine.ts b/packages/elements/src/internals/machines/sign-up/sign-up.machine.ts index bee35afd182..74a5048d88f 100644 --- a/packages/elements/src/internals/machines/sign-up/sign-up.machine.ts +++ b/packages/elements/src/internals/machines/sign-up/sign-up.machine.ts @@ -55,7 +55,7 @@ export type SignUpMachineEvents = | ErrorActorEvent | { type: 'AUTHENTICATE.OAUTH'; strategy: OAuthStrategy } | { type: 'AUTHENTICATE.SAML'; strategy: SamlStrategy } - | { type: 'AUTHENTICATE.WEB3'; strategy?: Web3Strategy } + | { type: 'AUTHENTICATE.WEB3'; strategy: Web3Strategy } | { type: 'FAILURE'; error: Error } | { type: 'OAUTH.CALLBACK' } | { type: 'SUBMIT' } @@ -280,15 +280,17 @@ export const SignUpMachine = setup({ // continueSignUp }, }; + } else if (event.type === 'AUTHENTICATE.OAUTH' && event.strategy) { + return { + clerk: context.clerk, + params: { + strategy: event.strategy, + // continueSignUp + }, + }; } - return { - clerk: context.clerk, - params: { - strategy: event.strategy, - // continueSignUp - }, - }; + throw new ClerkElementsRuntimeError('Invalid strategy'); }, onError: { actions: 'setFormErrors', diff --git a/packages/elements/src/react/common/form/index.tsx b/packages/elements/src/react/common/form/index.tsx index 37ae68b5759..82ef1da4f85 100644 --- a/packages/elements/src/react/common/form/index.tsx +++ b/packages/elements/src/react/common/form/index.tsx @@ -4,6 +4,7 @@ import type { FormLabelProps, FormMessageProps, FormProps, + FormSubmitProps as RadixFormSubmitProps, } from '@radix-ui/react-form'; import { Control as RadixControl, @@ -11,10 +12,11 @@ import { Form as RadixForm, FormMessage, Label as RadixLabel, - Submit, + Submit as RadixSubmit, } from '@radix-ui/react-form'; import type { ComponentProps, ReactNode } from 'react'; import React, { createContext, useCallback, useContext, useEffect } from 'react'; +import type { SetRequired } from 'type-fest'; import type { BaseActorRef } from 'xstate'; import type { ClerkElementsError } from '~/internals/errors/error'; @@ -109,7 +111,7 @@ const determineInputTypeFromName = (name: string) => { return 'text' as const; }; -const useInput = ({ name: inputName, value: initialValue, type: inputType, ...passthroughProps }: ClerkInputProps) => { +const useInput = ({ name: inputName, value: initialValue, type: inputType, ...passthroughProps }: FormInputProps) => { // Inputs can be used outside of a wrapper if desired, so safely destructure here const fieldContext = useFieldContext(); const name = inputName || fieldContext?.name; @@ -223,9 +225,9 @@ function FieldState({ children }: { children: (state: { state: FieldStates }) => return children(fieldState); } -type ClerkInputProps = FormControlProps | ({ type: 'otp' } & OTPInputProps); +type FormInputProps = FormControlProps | ({ type: 'otp' } & OTPInputProps); -function Input(props: ClerkInputProps) { +function Input(props: FormInputProps) { const field = useInput(props); return ; @@ -235,6 +237,12 @@ function Label(props: FormLabelProps) { return ; } +type FormSubmitProps = SetRequired; + +function Submit(props: FormSubmitProps) { + return ; +} + // ================= ERRORS ================= // type FormErrorRenderProps = Pick; @@ -302,10 +310,12 @@ function FieldError({ children, code, name, ...rest }: FormFieldErrorProps) { export { Field, FieldError, FieldState, Form, GlobalError, Input, Label, Submit }; export type { FormControlProps, + FormFieldErrorProps, FormErrorProps, - FormGlobalErrorProps, FormErrorRenderProps, - FormFieldErrorProps, FormFieldProps, + FormGlobalErrorProps, + FormInputProps, FormProps, + FormSubmitProps, }; diff --git a/packages/elements/src/react/common/index.ts b/packages/elements/src/react/common/index.ts new file mode 100644 index 00000000000..50e57f4c59c --- /dev/null +++ b/packages/elements/src/react/common/index.ts @@ -0,0 +1,2 @@ +export { Field, FieldError, FieldState, Form, GlobalError, Input, Label, Submit } from '~/react/common/form'; +export { SocialProviderIcon } from '~/react/common/third-party-providers/social-provider'; diff --git a/packages/elements/src/react/common/third-party-providers/social-provider.tsx b/packages/elements/src/react/common/third-party-providers/social-provider.tsx index 21b3cbd3f96..5a3b93de7dd 100644 --- a/packages/elements/src/react/common/third-party-providers/social-provider.tsx +++ b/packages/elements/src/react/common/third-party-providers/social-provider.tsx @@ -33,11 +33,13 @@ export function SocialProvider({ asChild, provider, ...rest }: SocialProviderPro } const Comp = asChild ? Slot : 'button'; + const defaultProps = asChild ? {} : { type: 'button' as const }; return ( diff --git a/packages/elements/src/react/sign-in/continue.tsx b/packages/elements/src/react/sign-in/continue.tsx new file mode 100644 index 00000000000..c9af9dc3994 --- /dev/null +++ b/packages/elements/src/react/sign-in/continue.tsx @@ -0,0 +1,20 @@ +'use client'; + +import type { SignInStrategy as ClerkSignInStrategy } from '@clerk/types'; +import type { PropsWithChildren } from 'react'; + +import { StrategiesContext, useSignInFlow, useSignInStrategies } from '~/internals/machines/sign-in/sign-in.context'; +import { Form } from '~/react/common/form'; + +export type SignInContinueProps = PropsWithChildren<{ preferred?: ClerkSignInStrategy }>; + +export function SignInContinue({ children, preferred }: SignInContinueProps) { + const { current, isActive, shouldRender } = useSignInStrategies(preferred); + const actorRef = useSignInFlow(); + + return shouldRender ? ( + +
{children}
+
+ ) : null; +} diff --git a/packages/elements/src/react/sign-in/index.ts b/packages/elements/src/react/sign-in/index.ts new file mode 100644 index 00000000000..a8ad8ad6e5b --- /dev/null +++ b/packages/elements/src/react/sign-in/index.ts @@ -0,0 +1,13 @@ +'use client'; + +export { SignInContinue as Continue } from './continue'; +export { SignInRoot as SignIn, SignInRoot as Root } from './root'; +export { + SignInSocialProvider as SocialProvider, + SignInSocialProviderIcon as SocialProviderIcon, +} from './social-providers'; +export { SignInStart as Start } from './start'; +export { SignInFactor as Factor, SignInVerification as Verification } from './verifications'; + +// TODO: Move contexts from /internals to /react +export { useSignInFlow, useSignInFlowSelector } from '~/internals/machines/sign-in/sign-in.context'; diff --git a/packages/elements/src/react/sign-in/index.tsx b/packages/elements/src/react/sign-in/index.tsx deleted file mode 100644 index 776b28a86a1..00000000000 --- a/packages/elements/src/react/sign-in/index.tsx +++ /dev/null @@ -1,176 +0,0 @@ -'use client'; - -import { ClerkLoaded, useClerk } from '@clerk/clerk-react'; -import type { OAuthProvider, SignInStrategy as ClerkSignInStrategy, Web3Provider } from '@clerk/types'; -import { Slot } from '@radix-ui/react-slot'; -import type { PropsWithChildren } from 'react'; - -import { FormStoreProvider, useFormStore } from '~/internals/machines/form/form.context'; -import { - SignInFlowProvider as SignInFlowContextProvider, - StrategiesContext, - useSignInFlow, - useSignInStateMatcher, - useSignInStrategies, - useSignInThirdPartyProvider, - useSignInThirdPartyProviders, - useStrategy, -} from '~/internals/machines/sign-in/sign-in.context'; -import type { SignInStrategyName } from '~/internals/machines/sign-in/sign-in.types'; -import { Form } from '~/react/common/form'; -import { Router, useClerkRouter, useNextRouter } from '~/react/router'; -import { createBrowserInspectorReactHook } from '~/react/utils/xstate'; -import type { ThirdPartyStrategy } from '~/utils/third-party-strategies'; - -import type { SocialProviderProps } from '../common/third-party-providers/social-provider'; -import { SocialProvider, SocialProviderIcon } from '../common/third-party-providers/social-provider'; - -const { useBrowserInspector } = createBrowserInspectorReactHook(); - -// ================= SignInFlowProvider ================= // - -function SignInFlowProvider({ children }: PropsWithChildren) { - const clerk = useClerk(); - const router = useClerkRouter(); - const form = useFormStore(); - const { loading: inspectorLoading, inspector } = useBrowserInspector(); - - if (!router) { - throw new Error('clerk: Unable to locate ClerkRouter, make sure this is rendered within ``.'); - } - - if (inspectorLoading) { - return null; - } - - return ( - - {children} - - ); -} - -// ================= SignIn ================= // - -export function SignIn({ children }: PropsWithChildren): JSX.Element | null { - // TODO: eventually we'll rely on the framework SDK to specify its host router, but for now we'll default to Next.js - const router = useNextRouter(); - - return ( - - {/* TODO: Temporary hydration fix */} - - - {children} - - - - ); -} - -// ================= SignInStart ================= // - -export function SignInStart({ children }: PropsWithChildren) { - const state = useSignInStateMatcher(); - const actorRef = useSignInFlow(); - - return state.matches('Start') ?
{children}
: null; -} - -// ================= SignInFactorOne ================= // - -export function SignInFactorOne({ children }: PropsWithChildren) { - const state = useSignInStateMatcher(); - const actorRef = useSignInFlow(); - - return state.matches('FirstFactor') ?
{children}
: null; -} - -// ================= SignInFactorTwo ================= // - -export function SignInFactorTwo({ children }: PropsWithChildren) { - const state = useSignInStateMatcher(); - const actorRef = useSignInFlow(); - - return state.matches('SecondFactor') ?
{children}
: null; -} - -// ================= SignInContinue ================= // - -export type SignInContinueProps = PropsWithChildren<{ preferred?: ClerkSignInStrategy }>; - -export function SignInContinue({ children, preferred }: SignInContinueProps) { - const { current, isActive, shouldRender } = useSignInStrategies(preferred); - const actorRef = useSignInFlow(); - - return shouldRender ? ( - -
{children}
-
- ) : null; -} - -// ================= SignInStrategy ================= // - -export type SignInStrategyProps = PropsWithChildren<{ name: SignInStrategyName }>; - -export function SignInStrategy({ children, name }: SignInStrategyProps) { - const { shouldRender } = useStrategy(name); - return shouldRender ? children : null; -} - -// ================= SignInSocialProviders ================= // - -export type SignInSocialProvidersProps = { render(provider: ThirdPartyStrategy): React.ReactNode }; - -export function SignInSocialProviders({ render: provider }: SignInSocialProvidersProps) { - const thirdPartyProviders = useSignInThirdPartyProviders(); - - if (!thirdPartyProviders) { - return null; - } - - return ( - <> - {thirdPartyProviders.strategies.map(strategy => ( - - {provider(thirdPartyProviders.strategyToDisplayData[strategy])} - - ))} - - ); -} - -// ================= SignInSocialProvider ================= // - -export interface SignInSocialProviderProps extends Omit { - name: OAuthProvider | Web3Provider; -} - -export function SignInSocialProvider({ name, ...rest }: SignInSocialProviderProps) { - const thirdPartyProvider = useSignInThirdPartyProvider(name); - - return ( - - ); -} - -export const SignInSocialProviderIcon = SocialProviderIcon; diff --git a/packages/elements/src/react/sign-in/root.tsx b/packages/elements/src/react/sign-in/root.tsx new file mode 100644 index 00000000000..f4aee729e12 --- /dev/null +++ b/packages/elements/src/react/sign-in/root.tsx @@ -0,0 +1,60 @@ +'use client'; + +import { ClerkLoaded, useClerk } from '@clerk/clerk-react'; +import type { PropsWithChildren } from 'react'; + +import { FormStoreProvider, useFormStore } from '~/internals/machines/form/form.context'; +import { SignInFlowProvider as SignInFlowContextProvider } from '~/internals/machines/sign-in/sign-in.context'; +import { Router, useClerkRouter, useNextRouter } from '~/react/router'; +import { createBrowserInspectorReactHook } from '~/react/utils/xstate'; + +const { useBrowserInspector } = createBrowserInspectorReactHook(); + +function SignInFlowProvider({ children }: PropsWithChildren) { + const clerk = useClerk(); + const router = useClerkRouter(); + const form = useFormStore(); + const { loading: inspectorLoading, inspector } = useBrowserInspector(); + + if (!router) { + throw new Error('clerk: Unable to locate ClerkRouter, make sure this is rendered within ``.'); + } + + if (inspectorLoading) { + return null; + } + + return ( + + {children} + + ); +} + +export function SignInRoot({ children }: PropsWithChildren): JSX.Element | null { + // TODO: eventually we'll rely on the framework SDK to specify its host router, but for now we'll default to Next.js + const router = useNextRouter(); + + return ( + + {/* TODO: Temporary hydration fix */} + + + {children} + + + + ); +} diff --git a/packages/elements/src/react/sign-in/social-providers.tsx b/packages/elements/src/react/sign-in/social-providers.tsx new file mode 100644 index 00000000000..9c8f1dddb53 --- /dev/null +++ b/packages/elements/src/react/sign-in/social-providers.tsx @@ -0,0 +1,24 @@ +'use client'; + +import type { OAuthProvider, Web3Provider } from '@clerk/types'; + +import { useSignInThirdPartyProvider } from '~/internals/machines/sign-in/sign-in.context'; +import type { SocialProviderProps } from '~/react/common/third-party-providers/social-provider'; +import { SocialProvider, SocialProviderIcon } from '~/react/common/third-party-providers/social-provider'; + +export interface SignInSocialProviderProps extends Omit { + name: OAuthProvider | Web3Provider; +} + +export function SignInSocialProvider({ name, ...rest }: SignInSocialProviderProps) { + const thirdPartyProvider = useSignInThirdPartyProvider(name); + + return ( + + ); +} + +export const SignInSocialProviderIcon = SocialProviderIcon; diff --git a/packages/elements/src/react/sign-in/start.tsx b/packages/elements/src/react/sign-in/start.tsx new file mode 100644 index 00000000000..23b2cf23a7d --- /dev/null +++ b/packages/elements/src/react/sign-in/start.tsx @@ -0,0 +1,15 @@ +'use client'; + +import type { PropsWithChildren } from 'react'; + +import { useSignInFlow, useSignInStateMatcher } from '~/internals/machines/sign-in/sign-in.context'; +import { Form } from '~/react/common/form'; + +export type SignInStartProps = PropsWithChildren; + +export function SignInStart({ children }: SignInStartProps) { + const state = useSignInStateMatcher(); + const actorRef = useSignInFlow(); + + return state.matches('Start') ?
{children}
: null; +} diff --git a/packages/elements/src/react/sign-in/verifications.tsx b/packages/elements/src/react/sign-in/verifications.tsx new file mode 100644 index 00000000000..289a46eac56 --- /dev/null +++ b/packages/elements/src/react/sign-in/verifications.tsx @@ -0,0 +1,21 @@ +'use client'; + +import { useSignInStateMatcher, useStrategy } from '~/internals/machines/sign-in/sign-in.context'; +import type { SignInStrategyName } from '~/internals/machines/sign-in/sign-in.types'; + +export type SignInFactorProps = React.PropsWithChildren< + { first: true; second?: never } | { first?: never; second: true } +>; + +export function SignInFactor({ children, first, second }: SignInFactorProps) { + const state = useSignInStateMatcher(); + const render = (first && state.matches('FirstFactor')) || (second && state.matches('SecondFactor')); + return render ? children : null; +} + +export type SignInVerificationProps = React.PropsWithChildren<{ name: SignInStrategyName }>; + +export function SignInVerification({ children, name }: SignInVerificationProps) { + const { shouldRender } = useStrategy(name); + return shouldRender ? children : null; +} diff --git a/packages/elements/src/react/sign-up/continue.tsx b/packages/elements/src/react/sign-up/continue.tsx new file mode 100644 index 00000000000..dae513e420f --- /dev/null +++ b/packages/elements/src/react/sign-up/continue.tsx @@ -0,0 +1,15 @@ +'use client'; + +import type { PropsWithChildren } from 'react'; + +import { useSignUpFlow, useSignUpStateMatcher } from '~/internals/machines/sign-up/sign-up.context'; +import { Form } from '~/react/common/form'; + +export type SignUpContinueProps = PropsWithChildren; + +export function SignUpContinue({ children }: SignUpContinueProps) { + const state = useSignUpStateMatcher(); + const actorRef = useSignUpFlow(); + + return state.matches('Continue') ?
{children}
: null; +} diff --git a/packages/elements/src/react/sign-up/index.ts b/packages/elements/src/react/sign-up/index.ts new file mode 100644 index 00000000000..93e63845934 --- /dev/null +++ b/packages/elements/src/react/sign-up/index.ts @@ -0,0 +1,13 @@ +'use client'; + +export { SignUpContinue as Continue } from './continue'; +export { SignUpRoot as SignUp, SignUpRoot as Root } from './root'; +export { + SignUpSocialProvider as SocialProvider, + SignUpSocialProviderIcon as SocialProviderIcon, +} from './social-providers'; +export { SignUpStart as Start } from './start'; +export { SignUpVerification as Verification, SignUpVerify as Verify } from './verifications'; + +// TODO: Move contexts from /internals to /react +export { useSignUpFlow, useSignUpFlowSelector } from '~/internals/machines/sign-up/sign-up.context'; diff --git a/packages/elements/src/react/sign-up/index.tsx b/packages/elements/src/react/sign-up/index.tsx deleted file mode 100644 index 8886900783c..00000000000 --- a/packages/elements/src/react/sign-up/index.tsx +++ /dev/null @@ -1,159 +0,0 @@ -'use client'; - -import { ClerkLoaded, useClerk } from '@clerk/clerk-react'; -import type { OAuthProvider, Web3Provider } from '@clerk/types'; -import { Slot } from '@radix-ui/react-slot'; -import type { PropsWithChildren } from 'react'; - -import { FormStoreProvider, useFormStore } from '~/internals/machines/form/form.context'; -import { - SignUpFlowProvider as SignUpFlowContextProvider, - useSignUpFlow, - useSignUpStateMatcher, - useSignUpThirdPartyProvider, - useSignUpThirdPartyProviders, -} from '~/internals/machines/sign-up/sign-up.context'; -import type { SignUpVerificationTags } from '~/internals/machines/sign-up/sign-up.machine'; -import { Form } from '~/react/common/form'; -import { Router, useClerkRouter, useNextRouter } from '~/react/router'; -import { createBrowserInspectorReactHook } from '~/react/utils/xstate'; -import type { ThirdPartyStrategy } from '~/utils/third-party-strategies'; - -import type { SocialProviderProps } from '../common/third-party-providers/social-provider'; -import { SocialProvider, SocialProviderIcon } from '../common/third-party-providers/social-provider'; - -const { useBrowserInspector } = createBrowserInspectorReactHook(); - -// ================= SignUpFlowProvider ================= // - -function SignUpFlowProvider({ children }: PropsWithChildren) { - const clerk = useClerk(); - const router = useClerkRouter(); - const form = useFormStore(); - const { loading: inspectorLoading, inspector } = useBrowserInspector(); - - if (!router) { - throw new Error('clerk: Unable to locate ClerkRouter, make sure this is rendered within ``.'); - } - - if (inspectorLoading) { - return null; - } - - return ( - - {children} - - ); -} - -// ================= SignUp ================= // - -export function SignUp({ children }: PropsWithChildren): JSX.Element | null { - // TODO: eventually we'll rely on the framework SDK to specify its host router, but for now we'll default to Next.js - const router = useNextRouter(); - - return ( - - - - {children} - - - - ); -} - -// ================= SignUpStart ================= // - -export function SignUpStart({ children }: PropsWithChildren) { - const state = useSignUpStateMatcher(); - const actorRef = useSignUpFlow(); - - return state.matches('Start') ?
{children}
: null; -} - -// ================= SignUpContinue ================= // - -export function SignUpContinue({ children }: PropsWithChildren) { - const state = useSignUpStateMatcher(); - const actorRef = useSignUpFlow(); - - return state.matches('Continue') ?
{children}
: null; -} - -// ================= SignUpVerify ================= // - -export type SignUpVerifyProps = PropsWithChildren; - -export function SignUpVerify({ children }: SignUpVerifyProps) { - const actorRef = useSignUpFlow(); - const state = useSignUpStateMatcher(); - - return state.matches('Verification') ?
{children}
: null; -} - -// ================= SignUpStrategy ================= // - -export type SignUpStrategyProps = PropsWithChildren<{ name: SignUpVerificationTags }>; - -export function SignUpStrategy({ children, name }: SignUpStrategyProps) { - const state = useSignUpStateMatcher(); - return state.hasTag(name) ? children : null; -} - -// ================= SignUpSocialProviders ================= // - -export type SignUpSocialProvidersProps = { render(provider: ThirdPartyStrategy): React.ReactNode }; - -export function SignUpSocialProviders({ render: provider }: SignUpSocialProvidersProps) { - const thirdPartyProviders = useSignUpThirdPartyProviders(); - - if (!thirdPartyProviders) { - return null; - } - - return ( - <> - {thirdPartyProviders.strategies.map(strategy => ( - - {provider(thirdPartyProviders.strategyToDisplayData[strategy])} - - ))} - - ); -} - -// ================= SignUpSocialProvider ================= // - -export interface SignUpSocialProviderProps extends Omit { - name: OAuthProvider | Web3Provider; -} - -export function SignUpSocialProvider({ name, ...rest }: SignUpSocialProviderProps) { - const thirdPartyProvider = useSignUpThirdPartyProvider(name); - - return ( - - ); -} - -export const SignUpSocialProviderIcon = SocialProviderIcon; diff --git a/packages/elements/src/react/sign-up/root.tsx b/packages/elements/src/react/sign-up/root.tsx new file mode 100644 index 00000000000..5c42e8ceb49 --- /dev/null +++ b/packages/elements/src/react/sign-up/root.tsx @@ -0,0 +1,59 @@ +'use client'; + +import { ClerkLoaded, useClerk } from '@clerk/clerk-react'; +import type { PropsWithChildren } from 'react'; + +import { FormStoreProvider, useFormStore } from '~/internals/machines/form/form.context'; +import { SignUpFlowProvider as SignUpFlowContextProvider } from '~/internals/machines/sign-up/sign-up.context'; +import { Router, useClerkRouter, useNextRouter } from '~/react/router'; +import { createBrowserInspectorReactHook } from '~/react/utils/xstate'; + +const { useBrowserInspector } = createBrowserInspectorReactHook(); + +function SignUpFlowProvider({ children }: PropsWithChildren) { + const clerk = useClerk(); + const router = useClerkRouter(); + const form = useFormStore(); + const { loading: inspectorLoading, inspector } = useBrowserInspector(); + + if (!router) { + throw new Error('clerk: Unable to locate ClerkRouter, make sure this is rendered within ``.'); + } + + if (inspectorLoading) { + return null; + } + + return ( + + {children} + + ); +} + +export function SignUpRoot({ children }: PropsWithChildren): JSX.Element | null { + // TODO: eventually we'll rely on the framework SDK to specify its host router, but for now we'll default to Next.js + const router = useNextRouter(); + + return ( + + + + {children} + + + + ); +} diff --git a/packages/elements/src/react/sign-up/social-providers.tsx b/packages/elements/src/react/sign-up/social-providers.tsx new file mode 100644 index 00000000000..4aa17717071 --- /dev/null +++ b/packages/elements/src/react/sign-up/social-providers.tsx @@ -0,0 +1,25 @@ +'use client'; + +import type { OAuthProvider, Web3Provider } from '@clerk/types'; + +import { useSignUpThirdPartyProvider } from '~/internals/machines/sign-up/sign-up.context'; + +import type { SocialProviderProps } from '../common/third-party-providers/social-provider'; +import { SocialProvider, SocialProviderIcon } from '../common/third-party-providers/social-provider'; + +export interface SignUpSocialProviderProps extends Omit { + name: OAuthProvider | Web3Provider; +} + +export function SignUpSocialProvider({ name, ...rest }: SignUpSocialProviderProps) { + const thirdPartyProvider = useSignUpThirdPartyProvider(name); + + return ( + + ); +} + +export const SignUpSocialProviderIcon = SocialProviderIcon; diff --git a/packages/elements/src/react/sign-up/start.tsx b/packages/elements/src/react/sign-up/start.tsx new file mode 100644 index 00000000000..22c75afe40e --- /dev/null +++ b/packages/elements/src/react/sign-up/start.tsx @@ -0,0 +1,15 @@ +'use client'; + +import type { PropsWithChildren } from 'react'; + +import { useSignUpFlow, useSignUpStateMatcher } from '~/internals/machines/sign-up/sign-up.context'; +import { Form } from '~/react/common/form'; + +export type SignUpStartProps = PropsWithChildren; + +export function SignUpStart({ children }: SignUpStartProps) { + const state = useSignUpStateMatcher(); + const actorRef = useSignUpFlow(); + + return state.matches('Start') ?
{children}
: null; +} diff --git a/packages/elements/src/react/sign-up/verifications.tsx b/packages/elements/src/react/sign-up/verifications.tsx new file mode 100644 index 00000000000..e819481a2c6 --- /dev/null +++ b/packages/elements/src/react/sign-up/verifications.tsx @@ -0,0 +1,23 @@ +'use client'; + +import type { PropsWithChildren } from 'react'; + +import { useSignUpFlow, useSignUpStateMatcher } from '~/internals/machines/sign-up/sign-up.context'; +import type { SignUpVerificationTags } from '~/internals/machines/sign-up/sign-up.machine'; +import { Form } from '~/react/common/form'; + +export type SignUpVerifyProps = PropsWithChildren; + +export function SignUpVerify({ children }: SignUpVerifyProps) { + const actorRef = useSignUpFlow(); + const state = useSignUpStateMatcher(); + + return state.matches('Verification') ?
{children}
: null; +} + +export type SignUpVerificationProps = PropsWithChildren<{ name: SignUpVerificationTags }>; + +export function SignUpVerification({ children, name }: SignUpVerificationProps) { + const state = useSignUpStateMatcher(); + return state.hasTag(name) ? children : null; +} diff --git a/packages/elements/tsup.config.ts b/packages/elements/tsup.config.ts index 6ab5d5f4bf5..86b57be791d 100644 --- a/packages/elements/tsup.config.ts +++ b/packages/elements/tsup.config.ts @@ -17,6 +17,9 @@ export default defineConfig(overrideOptions => { dts: true, entry: { index: 'src/index.ts', + 'react/common/index': 'src/react/common/index.ts', + 'react/sign-in/index': 'src/react/sign-in/index.ts', + 'react/sign-up/index': 'src/react/sign-up/index.ts', }, external: ['react', 'react-dom'], format: ['cjs', 'esm'],