From ddf330ec4d48de13d7cd10a2d142f067f447736a Mon Sep 17 00:00:00 2001 From: wobsoriano Date: Wed, 15 Jan 2025 11:53:24 -0800 Subject: [PATCH 01/16] chore(vue): Initial vue component support for better runtime prop checking --- packages/types/src/clerk.ts | 2 +- packages/vue/package.json | 7 +- packages/vue/src/components/SignInButton.ts | 38 +- packages/vue/src/components/index.ts | 4 +- .../src/components/ui-components/SignIn.vue | 17 + packages/vue/src/components/uiComponents.ts | 15 +- packages/vue/src/env.d.ts | 6 + packages/vue/tsconfig.json | 3 +- packages/vue/tsup.config.ts | 5 +- pnpm-lock.yaml | 458 +++++++++++++++++- 10 files changed, 511 insertions(+), 44 deletions(-) create mode 100644 packages/vue/src/components/ui-components/SignIn.vue create mode 100644 packages/vue/src/env.d.ts diff --git a/packages/types/src/clerk.ts b/packages/types/src/clerk.ts index f3bf518c229..00cf8a46cb1 100644 --- a/packages/types/src/clerk.ts +++ b/packages/types/src/clerk.ts @@ -990,7 +990,7 @@ export type SignInCombinedProps = RoutingOptions & { LegacyRedirectProps & AfterSignOutUrl; -interface TransferableOption { +export interface TransferableOption { /** * Indicates whether or not sign in attempts are transferable to the sign up flow. * When set to false, prevents opaque sign ups when a user attempts to sign in via OAuth with an email that doesn't exist. diff --git a/packages/vue/package.json b/packages/vue/package.json index 3fbb5c375a9..6758dafd185 100644 --- a/packages/vue/package.json +++ b/packages/vue/package.json @@ -41,7 +41,8 @@ "dist" ], "scripts": { - "build": "tsup", + "build": "tsup --onSuccess \"pnpm build:dts\"", + "build:dts": "vue-tsc --declaration --emitDeclarationOnly", "dev": "tsup --watch", "lint": "eslint src/", "lint:attw": "attw --pack . --ignore-rules no-resolution cjs-resolves-to-esm", @@ -57,7 +58,9 @@ "devDependencies": { "@testing-library/vue": "^8.1.0", "@vue.ts/tsx-auto-props": "^0.6.0", - "vue": "3.5.12" + "unplugin-vue": "^5.2.1", + "vue": "3.5.12", + "vue-tsc": "^2.0.24" }, "peerDependencies": { "vue": "^3.2.0" diff --git a/packages/vue/src/components/SignInButton.ts b/packages/vue/src/components/SignInButton.ts index c6f375dd039..6a58f9fa62e 100644 --- a/packages/vue/src/components/SignInButton.ts +++ b/packages/vue/src/components/SignInButton.ts @@ -1,21 +1,23 @@ -import type { SignInProps } from '@clerk/types'; +import type { PropType } from 'vue'; import { defineComponent, h } from 'vue'; import { useClerk } from '../composables/useClerk'; import { assertSingleChild, normalizeWithDefaultValue } from '../utils'; -type SignInButtonProps = Pick< - SignInProps, - 'fallbackRedirectUrl' | 'forceRedirectUrl' | 'signUpForceRedirectUrl' | 'signUpFallbackRedirectUrl' | 'initialValues' ->; - -export const SignInButton = defineComponent( - ( - props: SignInButtonProps & { - mode?: 'modal' | 'redirect'; +export const SignInButton = defineComponent({ + props: { + fallbackRedirectUrl: String, + forceRedirectUrl: String, + signUpForceRedirectUrl: String, + signUpFallbackRedirectUrl: String, + initialValues: Object, + withSignUp: Boolean, + mode: { + type: String as PropType<'modal' | 'redirect'>, + required: false, }, - { slots, attrs }, - ) => { + }, + setup(props, { slots, attrs }) { const clerk = useClerk(); function clickHandler() { @@ -41,14 +43,4 @@ export const SignInButton = defineComponent( }); }; }, - { - props: [ - 'signUpForceRedirectUrl', - 'signUpFallbackRedirectUrl', - 'fallbackRedirectUrl', - 'forceRedirectUrl', - 'mode', - 'initialValues', - ], - }, -); +}); diff --git a/packages/vue/src/components/index.ts b/packages/vue/src/components/index.ts index 1fdcb0edc02..520fb2466b8 100644 --- a/packages/vue/src/components/index.ts +++ b/packages/vue/src/components/index.ts @@ -1,6 +1,8 @@ +import SignIn from './ui-components/SignIn.vue'; + +export { SignIn }; export { SignUp, - SignIn, UserProfile, UserButton, OrganizationSwitcher, diff --git a/packages/vue/src/components/ui-components/SignIn.vue b/packages/vue/src/components/ui-components/SignIn.vue new file mode 100644 index 00000000000..aa1b181f692 --- /dev/null +++ b/packages/vue/src/components/ui-components/SignIn.vue @@ -0,0 +1,17 @@ + + + diff --git a/packages/vue/src/components/uiComponents.ts b/packages/vue/src/components/uiComponents.ts index 57de3a0821c..42ecbc4adcb 100644 --- a/packages/vue/src/components/uiComponents.ts +++ b/packages/vue/src/components/uiComponents.ts @@ -4,7 +4,6 @@ import type { OrganizationListProps, OrganizationProfileProps, OrganizationSwitcherProps, - SignInProps, SignUpProps, UserButtonProps, UserProfileProps, @@ -61,7 +60,7 @@ const CustomPortalsRenderer = defineComponent((props: CustomPortalsRendererProps * The component only mounts when Clerk is fully loaded and automatically * handles cleanup on unmount. */ -const Portal = defineComponent((props: MountProps) => { +export const Portal = defineComponent((props: MountProps) => { const portalRef = ref(null); const isPortalMounted = ref(false); // Make the props reactive so the watcher can react to changes @@ -258,18 +257,6 @@ export const GoogleOneTap = defineComponent((props: GoogleOneTapProps) => { }); }); -export const SignIn = defineComponent((props: SignInProps) => { - const clerk = useClerk(); - - return () => - h(Portal, { - mount: clerk.value?.mountSignIn, - unmount: clerk.value?.unmountSignIn, - updateProps: (clerk.value as any)?.__unstable__updateProps, - props, - }); -}); - export const SignUp = defineComponent((props: SignUpProps) => { const clerk = useClerk(); diff --git a/packages/vue/src/env.d.ts b/packages/vue/src/env.d.ts new file mode 100644 index 00000000000..57bbe713ceb --- /dev/null +++ b/packages/vue/src/env.d.ts @@ -0,0 +1,6 @@ +declare module '*.vue' { + import type { DefineComponent } from 'vue'; + + const component: DefineComponent, Record, any>; + export default component; +} diff --git a/packages/vue/tsconfig.json b/packages/vue/tsconfig.json index 9e59bba3481..52cc8a703f5 100644 --- a/packages/vue/tsconfig.json +++ b/packages/vue/tsconfig.json @@ -7,7 +7,8 @@ "strict": true, "noImplicitAny": true, "noUnusedLocals": true, - "noEmit": true, + "declaration": true, + "declarationDir": "./dist", "allowSyntheticDefaultImports": true, "esModuleInterop": false, "skipLibCheck": true diff --git a/packages/vue/tsup.config.ts b/packages/vue/tsup.config.ts index b4c0fba3cd2..f7e5402ff01 100644 --- a/packages/vue/tsup.config.ts +++ b/packages/vue/tsup.config.ts @@ -1,5 +1,6 @@ import autoPropsPlugin from '@vue.ts/tsx-auto-props/esbuild'; import { defineConfig, type Options } from 'tsup'; +import vuePlugin from 'unplugin-vue/esbuild'; import { name, version } from './package.json'; @@ -13,8 +14,10 @@ export default defineConfig(() => { bundle: true, sourcemap: true, minify: false, - dts: true, + dts: false, esbuildPlugins: [ + // Adds .vue files support + vuePlugin() as EsbuildPlugin, // Automatically generates runtime props from TypeScript types/interfaces for all // control and UI components, adding them to Vue components during build via // Object.defineProperty diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1e194160ddb..4c2a59ee582 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1068,7 +1068,11 @@ importers: 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) '@vitejs/plugin-react': specifier: ^4.3.1 +<<<<<<< HEAD version: 4.3.3(vite@5.4.11(@types/node@22.10.6)(terser@5.37.0)) +======= + version: 4.3.3(vite@6.0.7(@types/node@22.9.0)(jiti@2.4.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.0)) +>>>>>>> f5c194e59 (chore(vue): Initial vue component support for better runtime prop checking) concurrently: specifier: ^8.2.2 version: 8.2.2 @@ -1161,9 +1165,15 @@ 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) + unplugin-vue: + specifier: ^5.2.1 + version: 5.2.1(@types/node@22.9.0)(jiti@2.4.0)(terser@5.37.0)(tsx@4.19.2)(vue@3.5.12(typescript@5.6.3))(yaml@2.6.0) vue: specifier: 3.5.12 version: 3.5.12(typescript@5.6.3) + vue-tsc: + specifier: ^2.0.24 + version: 2.2.0(typescript@5.6.3) packages: @@ -2257,6 +2267,12 @@ packages: cpu: [ppc64] os: [aix] + '@esbuild/aix-ppc64@0.24.2': + resolution: {integrity: sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + '@esbuild/android-arm64@0.20.2': resolution: {integrity: sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==} engines: {node: '>=12'} @@ -2281,6 +2297,12 @@ packages: cpu: [arm64] os: [android] + '@esbuild/android-arm64@0.24.2': + resolution: {integrity: sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + '@esbuild/android-arm@0.20.2': resolution: {integrity: sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==} engines: {node: '>=12'} @@ -2305,6 +2327,12 @@ packages: cpu: [arm] os: [android] + '@esbuild/android-arm@0.24.2': + resolution: {integrity: sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + '@esbuild/android-x64@0.20.2': resolution: {integrity: sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==} engines: {node: '>=12'} @@ -2329,6 +2357,12 @@ packages: cpu: [x64] os: [android] + '@esbuild/android-x64@0.24.2': + resolution: {integrity: sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + '@esbuild/darwin-arm64@0.20.2': resolution: {integrity: sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==} engines: {node: '>=12'} @@ -2353,6 +2387,12 @@ packages: cpu: [arm64] os: [darwin] + '@esbuild/darwin-arm64@0.24.2': + resolution: {integrity: sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + '@esbuild/darwin-x64@0.20.2': resolution: {integrity: sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==} engines: {node: '>=12'} @@ -2377,6 +2417,12 @@ packages: cpu: [x64] os: [darwin] + '@esbuild/darwin-x64@0.24.2': + resolution: {integrity: sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + '@esbuild/freebsd-arm64@0.20.2': resolution: {integrity: sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==} engines: {node: '>=12'} @@ -2401,6 +2447,12 @@ packages: cpu: [arm64] os: [freebsd] + '@esbuild/freebsd-arm64@0.24.2': + resolution: {integrity: sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + '@esbuild/freebsd-x64@0.20.2': resolution: {integrity: sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==} engines: {node: '>=12'} @@ -2425,6 +2477,12 @@ packages: cpu: [x64] os: [freebsd] + '@esbuild/freebsd-x64@0.24.2': + resolution: {integrity: sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + '@esbuild/linux-arm64@0.20.2': resolution: {integrity: sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==} engines: {node: '>=12'} @@ -2449,6 +2507,12 @@ packages: cpu: [arm64] os: [linux] + '@esbuild/linux-arm64@0.24.2': + resolution: {integrity: sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + '@esbuild/linux-arm@0.20.2': resolution: {integrity: sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==} engines: {node: '>=12'} @@ -2473,6 +2537,12 @@ packages: cpu: [arm] os: [linux] + '@esbuild/linux-arm@0.24.2': + resolution: {integrity: sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + '@esbuild/linux-ia32@0.20.2': resolution: {integrity: sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==} engines: {node: '>=12'} @@ -2497,6 +2567,12 @@ packages: cpu: [ia32] os: [linux] + '@esbuild/linux-ia32@0.24.2': + resolution: {integrity: sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + '@esbuild/linux-loong64@0.20.2': resolution: {integrity: sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==} engines: {node: '>=12'} @@ -2521,6 +2597,12 @@ packages: cpu: [loong64] os: [linux] + '@esbuild/linux-loong64@0.24.2': + resolution: {integrity: sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + '@esbuild/linux-mips64el@0.20.2': resolution: {integrity: sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==} engines: {node: '>=12'} @@ -2545,6 +2627,12 @@ packages: cpu: [mips64el] os: [linux] + '@esbuild/linux-mips64el@0.24.2': + resolution: {integrity: sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + '@esbuild/linux-ppc64@0.20.2': resolution: {integrity: sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==} engines: {node: '>=12'} @@ -2569,6 +2657,12 @@ packages: cpu: [ppc64] os: [linux] + '@esbuild/linux-ppc64@0.24.2': + resolution: {integrity: sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + '@esbuild/linux-riscv64@0.20.2': resolution: {integrity: sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==} engines: {node: '>=12'} @@ -2593,6 +2687,12 @@ packages: cpu: [riscv64] os: [linux] + '@esbuild/linux-riscv64@0.24.2': + resolution: {integrity: sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + '@esbuild/linux-s390x@0.20.2': resolution: {integrity: sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==} engines: {node: '>=12'} @@ -2617,6 +2717,12 @@ packages: cpu: [s390x] os: [linux] + '@esbuild/linux-s390x@0.24.2': + resolution: {integrity: sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + '@esbuild/linux-x64@0.20.2': resolution: {integrity: sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==} engines: {node: '>=12'} @@ -2641,6 +2747,18 @@ packages: cpu: [x64] os: [linux] + '@esbuild/linux-x64@0.24.2': + resolution: {integrity: sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-arm64@0.24.2': + resolution: {integrity: sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + '@esbuild/netbsd-x64@0.20.2': resolution: {integrity: sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==} engines: {node: '>=12'} @@ -2665,6 +2783,12 @@ packages: cpu: [x64] os: [netbsd] + '@esbuild/netbsd-x64@0.24.2': + resolution: {integrity: sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + '@esbuild/openbsd-arm64@0.23.1': resolution: {integrity: sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==} engines: {node: '>=18'} @@ -2677,6 +2801,12 @@ packages: cpu: [arm64] os: [openbsd] + '@esbuild/openbsd-arm64@0.24.2': + resolution: {integrity: sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + '@esbuild/openbsd-x64@0.20.2': resolution: {integrity: sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==} engines: {node: '>=12'} @@ -2701,6 +2831,12 @@ packages: cpu: [x64] os: [openbsd] + '@esbuild/openbsd-x64@0.24.2': + resolution: {integrity: sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + '@esbuild/sunos-x64@0.20.2': resolution: {integrity: sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==} engines: {node: '>=12'} @@ -2725,6 +2861,12 @@ packages: cpu: [x64] os: [sunos] + '@esbuild/sunos-x64@0.24.2': + resolution: {integrity: sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + '@esbuild/win32-arm64@0.20.2': resolution: {integrity: sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==} engines: {node: '>=12'} @@ -2749,6 +2891,12 @@ packages: cpu: [arm64] os: [win32] + '@esbuild/win32-arm64@0.24.2': + resolution: {integrity: sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + '@esbuild/win32-ia32@0.20.2': resolution: {integrity: sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==} engines: {node: '>=12'} @@ -2773,6 +2921,12 @@ packages: cpu: [ia32] os: [win32] + '@esbuild/win32-ia32@0.24.2': + resolution: {integrity: sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + '@esbuild/win32-x64@0.20.2': resolution: {integrity: sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==} engines: {node: '>=12'} @@ -2797,6 +2951,12 @@ packages: cpu: [x64] os: [win32] + '@esbuild/win32-x64@0.24.2': + resolution: {integrity: sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + '@eslint-community/eslint-utils@4.4.0': resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -2817,7 +2977,7 @@ packages: '@expo/bunyan@4.0.1': resolution: {integrity: sha512-+Lla7nYSiHZirgK+U/uYzsLv/X+HaJienbD5AKX1UQZHYfWaP+9uuQluRB4GrEVWF0GZ7vEVp/jzaOT9k/SQlg==} - engines: {node: '>=0.10.0'} + engines: {'0': node >=0.10.0} '@expo/cli@0.18.30': resolution: {integrity: sha512-V90TUJh9Ly8stYo8nwqIqNWCsYjE28GlVFWEhAFCUOp99foiQr8HSTpiiX5GIrprcPoWmlGoY+J5fQA29R4lFg==} @@ -5779,12 +5939,21 @@ packages: '@volar/language-core@2.1.6': resolution: {integrity: sha512-pAlMCGX/HatBSiDFMdMyqUshkbwWbLxpN/RL7HCQDOo2gYBE+uS+nanosLc1qR6pTQ/U8q00xt8bdrrAFPSC0A==} + '@volar/language-core@2.4.11': + resolution: {integrity: sha512-lN2C1+ByfW9/JRPpqScuZt/4OrUUse57GLI6TbLgTIqBVemdl1wNcZ1qYGEo2+Gw8coYLgCy7SuKqn6IrQcQgg==} + '@volar/source-map@2.1.6': resolution: {integrity: sha512-TeyH8pHHonRCHYI91J7fWUoxi0zWV8whZTVRlsWHSYfjm58Blalkf9LrZ+pj6OiverPTmrHRkBsG17ScQyWECw==} + '@volar/source-map@2.4.11': + resolution: {integrity: sha512-ZQpmafIGvaZMn/8iuvCFGrW3smeqkq/IIh9F1SdSx9aUl0J4Iurzd6/FhmjNO5g2ejF3rT45dKskgXWiofqlZQ==} + '@volar/typescript@2.1.6': resolution: {integrity: sha512-JgPGhORHqXuyC3r6skPmPHIZj4LoMmGlYErFTuPNBq9Nhc9VTv7ctHY7A3jMN3ngKEfRrfnUcwXHztvdSQqNfw==} + '@volar/typescript@2.4.11': + resolution: {integrity: sha512-2DT+Tdh88Spp5PyPbqhyoYavYCPDsqbHLFwcUI9K1NlY1YgUJvujGdrqUp0zWxnW7KWNTr3xSpMuv2WnaTKDAw==} + '@vue-macros/common@1.15.0': resolution: {integrity: sha512-yg5VqW7+HRfJGimdKvFYzx8zorHUYo0hzPwuraoC1DWa7HHazbTMoVsHDvk3JHa1SGfSL87fRnzmlvgjEHhszA==} engines: {node: '>=16.14.0'} @@ -5834,6 +6003,9 @@ packages: '@vue/compiler-ssr@3.5.12': resolution: {integrity: sha512-eLwc7v6bfGBSM7wZOGPmRavSWzNFF6+PdRhE+VFJhNCgHiF8AM7ccoqcv5kBXA2eWUfigD7byekvf/JsOfKvPA==} + '@vue/compiler-vue2@2.7.16': + resolution: {integrity: sha512-qYC3Psj9S/mfu9uVi5WvNZIzq+xnXMhOwbTFKKDD7b1lhpnn71jXSFdTQ+WsIEk0ONCd7VV2IMm7ONl6tbQ86A==} + '@vue/devtools-api@6.6.4': resolution: {integrity: sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==} @@ -5856,9 +6028,20 @@ packages: typescript: optional: true + '@vue/language-core@2.2.0': + resolution: {integrity: sha512-O1ZZFaaBGkKbsRfnVH1ifOK1/1BUkyK+3SQsfnh6PmMmD4qJcTU8godCeA96jjDRTL6zgnK7YzCHfaUlH2r0Mw==} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + '@vue/reactivity@3.5.12': resolution: {integrity: sha512-UzaN3Da7xnJXdz4Okb/BGbAaomRHc3RdoWqTzlvd9+WBR5m3J39J1fGcHes7U3za0ruYn/iYy/a1euhMEHvTAg==} + '@vue/reactivity@3.5.13': + resolution: {integrity: sha512-NaCwtw8o48B9I6L1zl2p41OHo/2Z4wqYGGIK1Khu5T7yxrn+ATOixn/Udn2m+6kZKB/J7cuT9DbWWhRxqixACg==} + '@vue/runtime-core@3.5.12': resolution: {integrity: sha512-hrMUYV6tpocr3TL3Ad8DqxOdpDe4zuQY4HPY3X/VRh+L2myQO8MFXPAMarIOSGNu0bFAjh1yBkMPXZBqCk62Uw==} @@ -5873,6 +6056,9 @@ packages: '@vue/shared@3.5.12': resolution: {integrity: sha512-L2RPSAwUFbgZH20etwrXyVyCBu9OxRSi8T/38QsvnkJyvq2LufW2lDCOzm7t/U9C1mkhJGWYfCuFBCmIuNivrg==} + '@vue/shared@3.5.13': + resolution: {integrity: sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==} + '@vue/test-utils@2.4.6': resolution: {integrity: sha512-FMxEjOpYNYiFe0GkaHsnJPXFHxQ6m4t8vI/ElPGpMWxZKpmRvQ33OIrvRXemy6yha03RxhOlQuy+gZMC3CQSow==} @@ -6068,6 +6254,9 @@ packages: ajv@8.17.1: resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} + alien-signals@0.4.14: + resolution: {integrity: sha512-itUAVzhczTmP2U5yX67xVpsbbOiquusbWVyA9N+sy6+r6YVbFkahXvNCeEPWEOMhwDYwbVbGHFkVL03N9I5g+Q==} + anser@1.4.10: resolution: {integrity: sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww==} @@ -8005,6 +8194,11 @@ packages: engines: {node: '>=18'} hasBin: true + esbuild@0.24.2: + resolution: {integrity: sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA==} + engines: {node: '>=18'} + hasBin: true + escalade@3.2.0: resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} engines: {node: '>=6'} @@ -14151,6 +14345,12 @@ packages: vue-router: optional: true + unplugin-vue@5.2.1: + resolution: {integrity: sha512-yHNruKlkP6HjH7uXdCYiEyvD3exfZl+Mu93y+lI9B2wDafk7RLBoTzKa4R24UD6v5YQwfadgBjAdv9e99gnrFw==} + engines: {node: '>=18.0.0'} + peerDependencies: + vue: ^3.2.25 + unplugin@1.15.0: resolution: {integrity: sha512-jTPIs63W+DUEDW207ztbaoO7cQ4p5aVaB823LSlxpsFEU3Mykwxf3ZGC/wzxFJeZlASZYgVrWeo7LgOrqJZ8RA==} engines: {node: '>=14.0.0'} @@ -14160,6 +14360,10 @@ packages: webpack-sources: optional: true + unplugin@1.16.1: + resolution: {integrity: sha512-4/u/j4FrCKdi17jaxuJA0jClGxB1AvU2hw/IuayPc4ay1XGaJs/rbb4v5WKwAjNifjmXK9PIFyuPiaK8azyR9w==} + engines: {node: '>=14.0.0'} + unstorage@1.13.1: resolution: {integrity: sha512-ELexQHUrG05QVIM/iUeQNdl9FXDZhqLJ4yP59fnmn2jGUh0TEulwOgov1ubOb3Gt2ZGK/VMchJwPDNVEGWQpRg==} peerDependencies: @@ -14462,6 +14666,46 @@ packages: terser: optional: true + vite@6.0.7: + resolution: {integrity: sha512-RDt8r/7qx9940f8FcOIAH9PTViRrghKaK2K1jY3RaAURrEUbm9Du1mJ72G+jlhtG3WwodnfzY8ORQZbBavZEAQ==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 + jiti: '>=1.21.0' + less: '*' + lightningcss: ^1.21.0 + sass: '*' + sass-embedded: '*' + stylus: '*' + sugarss: '*' + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + '@types/node': + optional: true + jiti: + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + vitefu@1.0.2: resolution: {integrity: sha512-0/iAvbXyM3RiPPJ4lyD4w6Mjgtf4ejTK6TPvTNG3H32PLwuT0N/ZjJLiXug7ETE/LWtTeHw9WRv7uX/tIKYyKg==} peerDependencies: @@ -14545,6 +14789,12 @@ packages: vue-template-compiler@2.7.16: resolution: {integrity: sha512-AYbUWAJHLGGQM7+cNTELw+KsOG9nl2CnSv467WobS5Cv9uk3wFcnr1Etsz2sEIHEZvw1U+o9mRlEO6QbZvUPGQ==} + vue-tsc@2.2.0: + resolution: {integrity: sha512-gtmM1sUuJ8aSb0KoAFmK9yMxb8TxjewmxqTJ1aKphD5Cbu0rULFY6+UQT51zW7SpUcenfPUuflKyVwyx9Qdnxg==} + hasBin: true + peerDependencies: + typescript: '>=5.0.0' + vue@3.5.12: resolution: {integrity: sha512-CLVZtXtn2ItBIi/zHZ0Sg1Xkb7+PU32bJJ8Bmy7ts3jxXTcbfsEfBivFYYWz1Hur+lalqGAh65Coin0r+HRUfg==} peerDependencies: @@ -16525,6 +16775,9 @@ snapshots: '@esbuild/aix-ppc64@0.24.0': optional: true + '@esbuild/aix-ppc64@0.24.2': + optional: true + '@esbuild/android-arm64@0.20.2': optional: true @@ -16537,6 +16790,9 @@ snapshots: '@esbuild/android-arm64@0.24.0': optional: true + '@esbuild/android-arm64@0.24.2': + optional: true + '@esbuild/android-arm@0.20.2': optional: true @@ -16549,6 +16805,9 @@ snapshots: '@esbuild/android-arm@0.24.0': optional: true + '@esbuild/android-arm@0.24.2': + optional: true + '@esbuild/android-x64@0.20.2': optional: true @@ -16561,6 +16820,9 @@ snapshots: '@esbuild/android-x64@0.24.0': optional: true + '@esbuild/android-x64@0.24.2': + optional: true + '@esbuild/darwin-arm64@0.20.2': optional: true @@ -16573,6 +16835,9 @@ snapshots: '@esbuild/darwin-arm64@0.24.0': optional: true + '@esbuild/darwin-arm64@0.24.2': + optional: true + '@esbuild/darwin-x64@0.20.2': optional: true @@ -16585,6 +16850,9 @@ snapshots: '@esbuild/darwin-x64@0.24.0': optional: true + '@esbuild/darwin-x64@0.24.2': + optional: true + '@esbuild/freebsd-arm64@0.20.2': optional: true @@ -16597,6 +16865,9 @@ snapshots: '@esbuild/freebsd-arm64@0.24.0': optional: true + '@esbuild/freebsd-arm64@0.24.2': + optional: true + '@esbuild/freebsd-x64@0.20.2': optional: true @@ -16609,6 +16880,9 @@ snapshots: '@esbuild/freebsd-x64@0.24.0': optional: true + '@esbuild/freebsd-x64@0.24.2': + optional: true + '@esbuild/linux-arm64@0.20.2': optional: true @@ -16621,6 +16895,9 @@ snapshots: '@esbuild/linux-arm64@0.24.0': optional: true + '@esbuild/linux-arm64@0.24.2': + optional: true + '@esbuild/linux-arm@0.20.2': optional: true @@ -16633,6 +16910,9 @@ snapshots: '@esbuild/linux-arm@0.24.0': optional: true + '@esbuild/linux-arm@0.24.2': + optional: true + '@esbuild/linux-ia32@0.20.2': optional: true @@ -16645,6 +16925,9 @@ snapshots: '@esbuild/linux-ia32@0.24.0': optional: true + '@esbuild/linux-ia32@0.24.2': + optional: true + '@esbuild/linux-loong64@0.20.2': optional: true @@ -16657,6 +16940,9 @@ snapshots: '@esbuild/linux-loong64@0.24.0': optional: true + '@esbuild/linux-loong64@0.24.2': + optional: true + '@esbuild/linux-mips64el@0.20.2': optional: true @@ -16669,6 +16955,9 @@ snapshots: '@esbuild/linux-mips64el@0.24.0': optional: true + '@esbuild/linux-mips64el@0.24.2': + optional: true + '@esbuild/linux-ppc64@0.20.2': optional: true @@ -16681,6 +16970,9 @@ snapshots: '@esbuild/linux-ppc64@0.24.0': optional: true + '@esbuild/linux-ppc64@0.24.2': + optional: true + '@esbuild/linux-riscv64@0.20.2': optional: true @@ -16693,6 +16985,9 @@ snapshots: '@esbuild/linux-riscv64@0.24.0': optional: true + '@esbuild/linux-riscv64@0.24.2': + optional: true + '@esbuild/linux-s390x@0.20.2': optional: true @@ -16705,6 +17000,9 @@ snapshots: '@esbuild/linux-s390x@0.24.0': optional: true + '@esbuild/linux-s390x@0.24.2': + optional: true + '@esbuild/linux-x64@0.20.2': optional: true @@ -16717,6 +17015,12 @@ snapshots: '@esbuild/linux-x64@0.24.0': optional: true + '@esbuild/linux-x64@0.24.2': + optional: true + + '@esbuild/netbsd-arm64@0.24.2': + optional: true + '@esbuild/netbsd-x64@0.20.2': optional: true @@ -16729,12 +17033,18 @@ snapshots: '@esbuild/netbsd-x64@0.24.0': optional: true + '@esbuild/netbsd-x64@0.24.2': + optional: true + '@esbuild/openbsd-arm64@0.23.1': optional: true '@esbuild/openbsd-arm64@0.24.0': optional: true + '@esbuild/openbsd-arm64@0.24.2': + optional: true + '@esbuild/openbsd-x64@0.20.2': optional: true @@ -16747,6 +17057,9 @@ snapshots: '@esbuild/openbsd-x64@0.24.0': optional: true + '@esbuild/openbsd-x64@0.24.2': + optional: true + '@esbuild/sunos-x64@0.20.2': optional: true @@ -16759,6 +17072,9 @@ snapshots: '@esbuild/sunos-x64@0.24.0': optional: true + '@esbuild/sunos-x64@0.24.2': + optional: true + '@esbuild/win32-arm64@0.20.2': optional: true @@ -16771,6 +17087,9 @@ snapshots: '@esbuild/win32-arm64@0.24.0': optional: true + '@esbuild/win32-arm64@0.24.2': + optional: true + '@esbuild/win32-ia32@0.20.2': optional: true @@ -16783,6 +17102,9 @@ snapshots: '@esbuild/win32-ia32@0.24.0': optional: true + '@esbuild/win32-ia32@0.24.2': + optional: true + '@esbuild/win32-x64@0.20.2': optional: true @@ -16795,6 +17117,9 @@ snapshots: '@esbuild/win32-x64@0.24.0': optional: true + '@esbuild/win32-x64@0.24.2': + optional: true + '@eslint-community/eslint-utils@4.4.0(eslint@8.49.0)': dependencies: eslint: 8.49.0 @@ -21353,7 +21678,22 @@ snapshots: transitivePeerDependencies: - supports-color +<<<<<<< HEAD '@vitejs/plugin-vue-jsx@4.1.0(vite@5.4.11(@types/node@22.10.6)(terser@5.37.0))(vue@3.5.12(typescript@5.6.3))': +======= + '@vitejs/plugin-react@4.3.3(vite@6.0.7(@types/node@22.9.0)(jiti@2.4.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.0))': + 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: 6.0.7(@types/node@22.9.0)(jiti@2.4.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.0) + transitivePeerDependencies: + - supports-color + + '@vitejs/plugin-vue-jsx@4.1.0(vite@5.4.11(@types/node@22.9.0)(terser@5.37.0))(vue@3.5.12(typescript@5.6.3))': +>>>>>>> f5c194e59 (chore(vue): Initial vue component support for better runtime prop checking) dependencies: '@babel/core': 7.26.0 '@babel/plugin-transform-typescript': 7.26.3(@babel/core@7.26.0) @@ -21431,15 +21771,27 @@ snapshots: dependencies: '@volar/source-map': 2.1.6 + '@volar/language-core@2.4.11': + dependencies: + '@volar/source-map': 2.4.11 + '@volar/source-map@2.1.6': dependencies: muggle-string: 0.4.1 + '@volar/source-map@2.4.11': {} + '@volar/typescript@2.1.6': dependencies: '@volar/language-core': 2.1.6 path-browserify: 1.0.1 + '@volar/typescript@2.4.11': + dependencies: + '@volar/language-core': 2.4.11 + path-browserify: 1.0.1 + vscode-uri: 3.0.8 + '@vue-macros/common@1.15.0(rollup@4.26.0)(vue@3.5.12(typescript@5.6.3))': dependencies: '@babel/types': 7.26.3 @@ -21543,6 +21895,11 @@ snapshots: '@vue/compiler-dom': 3.5.12 '@vue/shared': 3.5.12 + '@vue/compiler-vue2@2.7.16': + dependencies: + de-indent: 1.0.2 + he: 1.2.0 + '@vue/devtools-api@6.6.4': {} '@vue/devtools-core@7.4.4(vite@5.4.11(@types/node@22.10.6)(terser@5.37.0))(vue@3.5.12(typescript@5.6.3))': @@ -21583,10 +21940,27 @@ snapshots: optionalDependencies: typescript: 5.6.3 + '@vue/language-core@2.2.0(typescript@5.6.3)': + dependencies: + '@volar/language-core': 2.4.11 + '@vue/compiler-dom': 3.5.12 + '@vue/compiler-vue2': 2.7.16 + '@vue/shared': 3.5.13 + alien-signals: 0.4.14 + minimatch: 9.0.5 + muggle-string: 0.4.1 + path-browserify: 1.0.1 + optionalDependencies: + typescript: 5.6.3 + '@vue/reactivity@3.5.12': dependencies: '@vue/shared': 3.5.12 + '@vue/reactivity@3.5.13': + dependencies: + '@vue/shared': 3.5.13 + '@vue/runtime-core@3.5.12': dependencies: '@vue/reactivity': 3.5.12 @@ -21607,6 +21981,8 @@ snapshots: '@vue/shared@3.5.12': {} + '@vue/shared@3.5.13': {} + '@vue/test-utils@2.4.6': dependencies: js-beautify: 1.15.1 @@ -21833,6 +22209,8 @@ snapshots: json-schema-traverse: 1.0.0 require-from-string: 2.0.2 + alien-signals@0.4.14: {} + anser@1.4.10: {} ansi-align@3.0.1: @@ -24114,6 +24492,34 @@ snapshots: '@esbuild/win32-ia32': 0.24.0 '@esbuild/win32-x64': 0.24.0 + esbuild@0.24.2: + optionalDependencies: + '@esbuild/aix-ppc64': 0.24.2 + '@esbuild/android-arm': 0.24.2 + '@esbuild/android-arm64': 0.24.2 + '@esbuild/android-x64': 0.24.2 + '@esbuild/darwin-arm64': 0.24.2 + '@esbuild/darwin-x64': 0.24.2 + '@esbuild/freebsd-arm64': 0.24.2 + '@esbuild/freebsd-x64': 0.24.2 + '@esbuild/linux-arm': 0.24.2 + '@esbuild/linux-arm64': 0.24.2 + '@esbuild/linux-ia32': 0.24.2 + '@esbuild/linux-loong64': 0.24.2 + '@esbuild/linux-mips64el': 0.24.2 + '@esbuild/linux-ppc64': 0.24.2 + '@esbuild/linux-riscv64': 0.24.2 + '@esbuild/linux-s390x': 0.24.2 + '@esbuild/linux-x64': 0.24.2 + '@esbuild/netbsd-arm64': 0.24.2 + '@esbuild/netbsd-x64': 0.24.2 + '@esbuild/openbsd-arm64': 0.24.2 + '@esbuild/openbsd-x64': 0.24.2 + '@esbuild/sunos-x64': 0.24.2 + '@esbuild/win32-arm64': 0.24.2 + '@esbuild/win32-ia32': 0.24.2 + '@esbuild/win32-x64': 0.24.2 + escalade@3.2.0: {} escape-html@1.0.3: {} @@ -31762,6 +32168,27 @@ snapshots: - vue - webpack-sources + unplugin-vue@5.2.1(@types/node@22.9.0)(jiti@2.4.0)(terser@5.37.0)(tsx@4.19.2)(vue@3.5.12(typescript@5.6.3))(yaml@2.6.0): + dependencies: + '@vue/reactivity': 3.5.13 + debug: 4.4.0(supports-color@8.1.1) + unplugin: 1.16.1 + vite: 6.0.7(@types/node@22.9.0)(jiti@2.4.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.0) + vue: 3.5.12(typescript@5.6.3) + transitivePeerDependencies: + - '@types/node' + - jiti + - less + - lightningcss + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + - tsx + - yaml + unplugin@1.15.0(webpack-sources@3.2.3): dependencies: acorn: 8.14.0 @@ -31769,6 +32196,11 @@ snapshots: optionalDependencies: webpack-sources: 3.2.3 + unplugin@1.16.1: + dependencies: + acorn: 8.14.0 + webpack-virtual-modules: 0.6.2 + unstorage@1.13.1(ioredis@5.4.1): dependencies: anymatch: 3.1.3 @@ -32166,6 +32598,24 @@ snapshots: vite: 5.4.11(@types/node@22.10.6)(terser@5.37.0) vitest-environment-miniflare@2.14.4(vitest@2.1.4(@edge-runtime/vm@5.0.0)(@types/node@22.10.6)(jsdom@24.1.3)(msw@2.6.4(@types/node@22.10.6)(typescript@5.6.3))(terser@5.37.0)): + vite@6.0.7(@types/node@22.9.0)(jiti@2.4.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.0): + dependencies: + esbuild: 0.24.2 + postcss: 8.4.49 + rollup: 4.26.0 + optionalDependencies: + '@types/node': 22.9.0 + fsevents: 2.3.3 + jiti: 2.4.0 + terser: 5.37.0 + tsx: 4.19.2 + yaml: 2.6.0 + + vitefu@1.0.2(vite@5.4.11(@types/node@22.9.0)(terser@5.37.0)): + optionalDependencies: + vite: 5.4.11(@types/node@22.9.0)(terser@5.37.0) + + vitest-environment-miniflare@2.14.4(vitest@2.1.4(@edge-runtime/vm@5.0.0)(@types/node@22.9.0)(jsdom@24.1.3)(msw@2.6.4(@types/node@22.9.0)(typescript@5.6.3))(terser@5.37.0)): dependencies: '@miniflare/queues': 2.14.4 '@miniflare/runner-vm': 2.14.4 @@ -32257,6 +32707,12 @@ snapshots: de-indent: 1.0.2 he: 1.2.0 + vue-tsc@2.2.0(typescript@5.6.3): + dependencies: + '@volar/typescript': 2.4.11 + '@vue/language-core': 2.2.0(typescript@5.6.3) + typescript: 5.6.3 + vue@3.5.12(typescript@5.6.3): dependencies: '@vue/compiler-dom': 3.5.12 From 17168f742f07167328c3c78965d8893dadb40ab1 Mon Sep 17 00:00:00 2001 From: wobsoriano Date: Wed, 15 Jan 2025 11:59:28 -0800 Subject: [PATCH 02/16] chore(vue): Pass prop to SignIn component --- packages/vue/src/components/SignInButton.ts | 2 +- packages/vue/src/components/index.ts | 4 +--- packages/vue/src/components/ui-components/SignIn.vue | 3 ++- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/packages/vue/src/components/SignInButton.ts b/packages/vue/src/components/SignInButton.ts index 6a58f9fa62e..c04ad26fa34 100644 --- a/packages/vue/src/components/SignInButton.ts +++ b/packages/vue/src/components/SignInButton.ts @@ -11,7 +11,7 @@ export const SignInButton = defineComponent({ signUpForceRedirectUrl: String, signUpFallbackRedirectUrl: String, initialValues: Object, - withSignUp: Boolean, + // withSignUp: Boolean, mode: { type: String as PropType<'modal' | 'redirect'>, required: false, diff --git a/packages/vue/src/components/index.ts b/packages/vue/src/components/index.ts index 520fb2466b8..300df97209d 100644 --- a/packages/vue/src/components/index.ts +++ b/packages/vue/src/components/index.ts @@ -1,6 +1,3 @@ -import SignIn from './ui-components/SignIn.vue'; - -export { SignIn }; export { SignUp, UserProfile, @@ -12,6 +9,7 @@ export { GoogleOneTap, Waitlist, } from './uiComponents'; +export { default as SignIn } from './ui-components/SignIn.vue'; export { ClerkLoaded, diff --git a/packages/vue/src/components/ui-components/SignIn.vue b/packages/vue/src/components/ui-components/SignIn.vue index aa1b181f692..dbd1319f237 100644 --- a/packages/vue/src/components/ui-components/SignIn.vue +++ b/packages/vue/src/components/ui-components/SignIn.vue @@ -5,13 +5,14 @@ import { SignInProps } from '@clerk/types'; const clerk = useClerk(); -defineProps(); +const props = defineProps(); From d612ec59d1ed92f6cffb90dab072b61f9daae9bc Mon Sep 17 00:00:00 2001 From: wobsoriano Date: Wed, 15 Jan 2025 12:02:54 -0800 Subject: [PATCH 03/16] chore: add changeset --- .changeset/dry-pears-approve.md | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 .changeset/dry-pears-approve.md diff --git a/.changeset/dry-pears-approve.md b/.changeset/dry-pears-approve.md new file mode 100644 index 00000000000..971fea7b063 --- /dev/null +++ b/.changeset/dry-pears-approve.md @@ -0,0 +1,6 @@ +--- +'@clerk/types': major +'@clerk/vue': major +--- + +Improve runtime prop checking for single-file components From fa6e4a469a185b81583c8b3ffac2e5487c143fab Mon Sep 17 00:00:00 2001 From: wobsoriano Date: Wed, 15 Jan 2025 12:06:15 -0800 Subject: [PATCH 04/16] fix lockfile --- pnpm-lock.yaml | 168 +++++++++++++++++-------------------------------- 1 file changed, 56 insertions(+), 112 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4c2a59ee582..09a1151ecc0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1068,11 +1068,7 @@ importers: 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) '@vitejs/plugin-react': specifier: ^4.3.1 -<<<<<<< HEAD - version: 4.3.3(vite@5.4.11(@types/node@22.10.6)(terser@5.37.0)) -======= - version: 4.3.3(vite@6.0.7(@types/node@22.9.0)(jiti@2.4.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.0)) ->>>>>>> f5c194e59 (chore(vue): Initial vue component support for better runtime prop checking) + version: 4.3.3(vite@6.0.7(@types/node@22.10.6)(jiti@2.4.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.0)) concurrently: specifier: ^8.2.2 version: 8.2.2 @@ -1167,7 +1163,7 @@ importers: 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) unplugin-vue: specifier: ^5.2.1 - version: 5.2.1(@types/node@22.9.0)(jiti@2.4.0)(terser@5.37.0)(tsx@4.19.2)(vue@3.5.12(typescript@5.6.3))(yaml@2.6.0) + version: 5.2.1(@types/node@22.10.6)(jiti@2.4.0)(terser@5.37.0)(tsx@4.19.2)(vue@3.5.12(typescript@5.6.3))(yaml@2.6.0) vue: specifier: 3.5.12 version: 3.5.12(typescript@5.6.3) @@ -5501,9 +5497,6 @@ packages: '@types/node@18.19.70': resolution: {integrity: sha512-RE+K0+KZoEpDUbGGctnGdkrLFwi1eYKTlIHNl2Um98mUkGsm1u2Ff6Ltd0e8DktTtC98uy7rSj+hO8t/QuLoVQ==} - '@types/node@20.17.10': - resolution: {integrity: sha512-/jrvh5h6NXhEauFFexRin69nA0uHJ5gwk4iDivp/DeoEua3uwCUto6PC86IpRITBOs4+6i2I56K5x5b6WYGXHA==} - '@types/node@22.10.6': resolution: {integrity: sha512-qNiuwC4ZDAUNcY47xgaSuS92cjf8JbSUoaKS77bmLG1rU7MlATVSiw/IlrjtIyyskXBZ8KkNfjK/P5na7rgXbQ==} @@ -14214,9 +14207,6 @@ packages: undici-types@5.26.5: resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} - undici-types@6.19.8: - resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} - undici-types@6.20.0: resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==} @@ -17734,7 +17724,7 @@ snapshots: '@jest/console@29.7.0': dependencies: '@jest/types': 29.6.3 - '@types/node': 20.17.10 + '@types/node': 22.10.6 chalk: 4.1.2 jest-message-util: 29.7.0 jest-util: 29.7.0 @@ -17747,14 +17737,14 @@ snapshots: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.17.10 + '@types/node': 22.10.6 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.10)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.10.6)(typescript@5.6.3)) + jest-config: 29.7.0(@types/node@22.10.6)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.10.6)(typescript@5.6.3)) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -17783,7 +17773,7 @@ snapshots: dependencies: '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.17.10 + '@types/node': 22.10.6 jest-mock: 29.7.0 '@jest/expect-utils@29.7.0': @@ -17801,7 +17791,7 @@ snapshots: dependencies: '@jest/types': 29.6.3 '@sinonjs/fake-timers': 10.3.0 - '@types/node': 20.17.10 + '@types/node': 22.10.6 jest-message-util: 29.7.0 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -17823,7 +17813,7 @@ snapshots: '@jest/transform': 29.7.0 '@jest/types': 29.6.3 '@jridgewell/trace-mapping': 0.3.25 - '@types/node': 20.17.10 + '@types/node': 22.10.6 chalk: 4.1.2 collect-v8-coverage: 1.0.2 exit: 0.1.2 @@ -17898,7 +17888,7 @@ snapshots: dependencies: '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.1 - '@types/node': 20.17.10 + '@types/node': 22.10.6 '@types/yargs': 15.0.19 chalk: 4.1.2 @@ -17907,7 +17897,7 @@ snapshots: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.1 - '@types/node': 20.17.10 + '@types/node': 22.10.6 '@types/yargs': 17.0.33 chalk: 4.1.2 @@ -20906,16 +20896,16 @@ snapshots: '@types/better-sqlite3@7.6.11': dependencies: - '@types/node': 20.17.10 + '@types/node': 22.10.6 '@types/body-parser@1.19.2': dependencies: '@types/connect': 3.4.38 - '@types/node': 20.17.10 + '@types/node': 22.10.6 '@types/bonjour@3.5.13': dependencies: - '@types/node': 20.17.10 + '@types/node': 22.10.6 '@types/braces@3.0.4': {} @@ -20927,15 +20917,15 @@ snapshots: '@types/connect-history-api-fallback@1.5.4': dependencies: '@types/express-serve-static-core': 4.17.35 - '@types/node': 20.17.10 + '@types/node': 22.10.6 '@types/connect@3.4.38': dependencies: - '@types/node': 20.17.10 + '@types/node': 22.10.6 '@types/conventional-commits-parser@5.0.0': dependencies: - '@types/node': 20.17.10 + '@types/node': 22.10.6 '@types/cookie@0.4.1': {} @@ -20945,11 +20935,11 @@ snapshots: '@types/cors@2.8.17': dependencies: - '@types/node': 20.17.10 + '@types/node': 22.10.6 '@types/cross-spawn@6.0.3': dependencies: - '@types/node': 20.17.10 + '@types/node': 22.10.6 '@types/crypto-js@4.2.2': {} @@ -20963,7 +20953,7 @@ snapshots: '@types/express-serve-static-core@4.17.35': dependencies: - '@types/node': 20.17.10 + '@types/node': 22.10.6 '@types/qs': 6.9.7 '@types/range-parser': 1.2.4 '@types/send': 0.17.1 @@ -20984,13 +20974,13 @@ snapshots: '@types/fs-extra@11.0.4': dependencies: '@types/jsonfile': 6.1.1 - '@types/node': 20.17.10 + '@types/node': 22.10.6 '@types/glob-to-regexp@0.4.4': {} '@types/graceful-fs@4.1.8': dependencies: - '@types/node': 20.17.10 + '@types/node': 22.10.6 '@types/gradient-string@1.1.6': dependencies: @@ -21006,7 +20996,7 @@ snapshots: '@types/http-proxy@1.17.15': dependencies: - '@types/node': 20.17.10 + '@types/node': 22.10.6 '@types/istanbul-lib-coverage@2.0.6': {} @@ -21037,7 +21027,7 @@ snapshots: '@types/jsdom@20.0.1': dependencies: - '@types/node': 20.17.10 + '@types/node': 22.10.6 '@types/tough-cookie': 4.0.5 parse5: 7.2.1 @@ -21047,7 +21037,7 @@ snapshots: '@types/jsonfile@6.1.1': dependencies: - '@types/node': 20.17.10 + '@types/node': 22.10.6 '@types/lodash@4.14.198': {} @@ -21073,7 +21063,7 @@ snapshots: '@types/node-forge@1.3.11': dependencies: - '@types/node': 20.17.10 + '@types/node': 22.10.6 '@types/node@12.20.55': {} @@ -21081,10 +21071,6 @@ snapshots: dependencies: undici-types: 5.26.5 - '@types/node@20.17.10': - dependencies: - undici-types: 6.19.8 - '@types/node@22.10.6': dependencies: undici-types: 6.20.0 @@ -21119,7 +21105,7 @@ snapshots: '@types/send@0.17.1': dependencies: '@types/mime': 1.3.2 - '@types/node': 20.17.10 + '@types/node': 22.10.6 '@types/serve-index@1.9.4': dependencies: @@ -21128,7 +21114,7 @@ snapshots: '@types/serve-static@1.15.7': dependencies: '@types/http-errors': 2.0.4 - '@types/node': 20.17.10 + '@types/node': 22.10.6 '@types/send': 0.17.1 '@types/sinonjs__fake-timers@8.1.1': {} @@ -21137,7 +21123,7 @@ snapshots: '@types/sockjs@0.3.36': dependencies: - '@types/node': 20.17.10 + '@types/node': 22.10.6 '@types/stack-utils@2.0.1': {} @@ -21147,7 +21133,7 @@ snapshots: dependencies: '@types/cookiejar': 2.1.5 '@types/methods': 1.1.4 - '@types/node': 20.17.10 + '@types/node': 22.10.6 '@types/supertest@6.0.2': dependencies: @@ -21181,7 +21167,7 @@ snapshots: '@types/ws@8.5.12': dependencies: - '@types/node': 20.17.10 + '@types/node': 22.10.6 '@types/yargs-parser@21.0.3': {} @@ -21199,7 +21185,7 @@ snapshots: '@types/yauzl@2.10.3': dependencies: - '@types/node': 20.17.10 + '@types/node': 22.10.6 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)': @@ -21678,22 +21664,18 @@ snapshots: transitivePeerDependencies: - supports-color -<<<<<<< HEAD - '@vitejs/plugin-vue-jsx@4.1.0(vite@5.4.11(@types/node@22.10.6)(terser@5.37.0))(vue@3.5.12(typescript@5.6.3))': -======= - '@vitejs/plugin-react@4.3.3(vite@6.0.7(@types/node@22.9.0)(jiti@2.4.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.0))': + '@vitejs/plugin-react@4.3.3(vite@6.0.7(@types/node@22.10.6)(jiti@2.4.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.0))': 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: 6.0.7(@types/node@22.9.0)(jiti@2.4.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.0) + vite: 6.0.7(@types/node@22.10.6)(jiti@2.4.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.0) transitivePeerDependencies: - supports-color - '@vitejs/plugin-vue-jsx@4.1.0(vite@5.4.11(@types/node@22.9.0)(terser@5.37.0))(vue@3.5.12(typescript@5.6.3))': ->>>>>>> f5c194e59 (chore(vue): Initial vue component support for better runtime prop checking) + '@vitejs/plugin-vue-jsx@4.1.0(vite@5.4.11(@types/node@22.10.6)(terser@5.37.0))(vue@3.5.12(typescript@5.6.3))': dependencies: '@babel/core': 7.26.0 '@babel/plugin-transform-typescript': 7.26.3(@babel/core@7.26.0) @@ -23101,7 +23083,7 @@ snapshots: chrome-launcher@0.15.2: dependencies: - '@types/node': 20.17.10 + '@types/node': 22.10.6 escape-string-regexp: 4.0.0 is-wsl: 2.2.0 lighthouse-logger: 1.4.2 @@ -23112,7 +23094,7 @@ snapshots: chromium-edge-launcher@1.0.0: dependencies: - '@types/node': 20.17.10 + '@types/node': 22.10.6 escape-string-regexp: 4.0.0 is-wsl: 2.2.0 lighthouse-logger: 1.4.2 @@ -24214,7 +24196,7 @@ snapshots: dependencies: '@types/cookie': 0.4.1 '@types/cors': 2.8.17 - '@types/node': 20.17.10 + '@types/node': 22.10.6 accepts: 1.3.8 base64id: 2.0.0 cookie: 0.4.2 @@ -26743,7 +26725,7 @@ snapshots: '@jest/expect': 29.7.0 '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.17.10 + '@types/node': 22.10.6 chalk: 4.1.2 co: 4.6.0 dedent: 1.5.3(babel-plugin-macros@3.1.0) @@ -26782,37 +26764,6 @@ snapshots: - supports-color - ts-node - jest-config@29.7.0(@types/node@20.17.10)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.10.6)(typescript@5.6.3)): - dependencies: - '@babel/core': 7.26.0 - '@jest/test-sequencer': 29.7.0 - '@jest/types': 29.6.3 - babel-jest: 29.7.0(@babel/core@7.26.0) - chalk: 4.1.2 - ci-info: 3.9.0 - deepmerge: 4.3.1 - glob: 7.2.3 - graceful-fs: 4.2.11 - jest-circus: 29.7.0(babel-plugin-macros@3.1.0) - jest-environment-node: 29.7.0 - jest-get-type: 29.6.3 - jest-regex-util: 29.6.3 - jest-resolve: 29.7.0 - jest-runner: 29.7.0 - jest-util: 29.7.0 - jest-validate: 29.7.0 - micromatch: 4.0.8 - parse-json: 5.2.0 - pretty-format: 29.7.0 - slash: 3.0.0 - strip-json-comments: 3.1.1 - optionalDependencies: - '@types/node': 20.17.10 - ts-node: 10.9.2(@types/node@22.10.6)(typescript@5.6.3) - transitivePeerDependencies: - - babel-plugin-macros - - supports-color - jest-config@29.7.0(@types/node@22.10.6)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.10.6)(typescript@5.6.3)): dependencies: '@babel/core': 7.26.0 @@ -26869,7 +26820,7 @@ snapshots: '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 '@types/jsdom': 20.0.1 - '@types/node': 20.17.10 + '@types/node': 22.10.6 jest-mock: 29.7.0 jest-util: 29.7.0 jsdom: 20.0.3 @@ -26883,7 +26834,7 @@ snapshots: '@jest/environment': 29.7.0 '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.17.10 + '@types/node': 22.10.6 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -26893,7 +26844,7 @@ snapshots: dependencies: '@jest/types': 29.6.3 '@types/graceful-fs': 4.1.8 - '@types/node': 20.17.10 + '@types/node': 22.10.6 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 @@ -26932,7 +26883,7 @@ snapshots: jest-mock@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 20.17.10 + '@types/node': 22.10.6 jest-util: 29.7.0 jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): @@ -26967,7 +26918,7 @@ snapshots: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.17.10 + '@types/node': 22.10.6 chalk: 4.1.2 emittery: 0.13.1 graceful-fs: 4.2.11 @@ -26995,7 +26946,7 @@ snapshots: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.17.10 + '@types/node': 22.10.6 chalk: 4.1.2 cjs-module-lexer: 1.2.3 collect-v8-coverage: 1.0.2 @@ -27041,7 +26992,7 @@ snapshots: jest-util@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 20.17.10 + '@types/node': 22.10.6 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 @@ -27060,7 +27011,7 @@ snapshots: dependencies: '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.17.10 + '@types/node': 22.10.6 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 @@ -27069,13 +27020,13 @@ snapshots: jest-worker@27.5.1: dependencies: - '@types/node': 20.17.10 + '@types/node': 22.10.6 merge-stream: 2.0.0 supports-color: 8.1.1 jest-worker@29.7.0: dependencies: - '@types/node': 20.17.10 + '@types/node': 22.10.6 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -32000,8 +31951,6 @@ snapshots: undici-types@5.26.5: {} - undici-types@6.19.8: {} - undici-types@6.20.0: {} undici@5.28.4: @@ -32168,12 +32117,12 @@ snapshots: - vue - webpack-sources - unplugin-vue@5.2.1(@types/node@22.9.0)(jiti@2.4.0)(terser@5.37.0)(tsx@4.19.2)(vue@3.5.12(typescript@5.6.3))(yaml@2.6.0): + unplugin-vue@5.2.1(@types/node@22.10.6)(jiti@2.4.0)(terser@5.37.0)(tsx@4.19.2)(vue@3.5.12(typescript@5.6.3))(yaml@2.6.0): dependencies: '@vue/reactivity': 3.5.13 debug: 4.4.0(supports-color@8.1.1) unplugin: 1.16.1 - vite: 6.0.7(@types/node@22.9.0)(jiti@2.4.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.0) + vite: 6.0.7(@types/node@22.10.6)(jiti@2.4.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.0) vue: 3.5.12(typescript@5.6.3) transitivePeerDependencies: - '@types/node' @@ -32593,29 +32542,24 @@ snapshots: fsevents: 2.3.3 terser: 5.37.0 - vitefu@1.0.2(vite@5.4.11(@types/node@22.10.6)(terser@5.37.0)): - optionalDependencies: - vite: 5.4.11(@types/node@22.10.6)(terser@5.37.0) - - vitest-environment-miniflare@2.14.4(vitest@2.1.4(@edge-runtime/vm@5.0.0)(@types/node@22.10.6)(jsdom@24.1.3)(msw@2.6.4(@types/node@22.10.6)(typescript@5.6.3))(terser@5.37.0)): - vite@6.0.7(@types/node@22.9.0)(jiti@2.4.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.0): + vite@6.0.7(@types/node@22.10.6)(jiti@2.4.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.0): dependencies: esbuild: 0.24.2 postcss: 8.4.49 rollup: 4.26.0 optionalDependencies: - '@types/node': 22.9.0 + '@types/node': 22.10.6 fsevents: 2.3.3 jiti: 2.4.0 terser: 5.37.0 tsx: 4.19.2 yaml: 2.6.0 - vitefu@1.0.2(vite@5.4.11(@types/node@22.9.0)(terser@5.37.0)): + vitefu@1.0.2(vite@5.4.11(@types/node@22.10.6)(terser@5.37.0)): optionalDependencies: - vite: 5.4.11(@types/node@22.9.0)(terser@5.37.0) + vite: 5.4.11(@types/node@22.10.6)(terser@5.37.0) - vitest-environment-miniflare@2.14.4(vitest@2.1.4(@edge-runtime/vm@5.0.0)(@types/node@22.9.0)(jsdom@24.1.3)(msw@2.6.4(@types/node@22.9.0)(typescript@5.6.3))(terser@5.37.0)): + vitest-environment-miniflare@2.14.4(vitest@2.1.4(@edge-runtime/vm@5.0.0)(@types/node@22.10.6)(jsdom@24.1.3)(msw@2.6.4(@types/node@22.10.6)(typescript@5.6.3))(terser@5.37.0)): dependencies: '@miniflare/queues': 2.14.4 '@miniflare/runner-vm': 2.14.4 @@ -33244,4 +33188,4 @@ snapshots: zx@8.3.0: optionalDependencies: '@types/fs-extra': 11.0.4 - '@types/node': 20.17.10 + '@types/node': 22.10.6 From efda20fad9d998842be750e61b81925bc462674a Mon Sep 17 00:00:00 2001 From: Robert Soriano Date: Wed, 15 Jan 2025 12:07:13 -0800 Subject: [PATCH 05/16] chore: update changeset --- .changeset/dry-pears-approve.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.changeset/dry-pears-approve.md b/.changeset/dry-pears-approve.md index 971fea7b063..567c1815649 100644 --- a/.changeset/dry-pears-approve.md +++ b/.changeset/dry-pears-approve.md @@ -1,6 +1,6 @@ --- -'@clerk/types': major -'@clerk/vue': major +'@clerk/types': patch +'@clerk/vue': patch --- Improve runtime prop checking for single-file components From dca87dcf93d9b39f182e9ca71581e70894afdef1 Mon Sep 17 00:00:00 2001 From: wobsoriano Date: Wed, 15 Jan 2025 12:12:50 -0800 Subject: [PATCH 06/16] ignore resolution error --- packages/vue/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/vue/package.json b/packages/vue/package.json index 6758dafd185..d294af11abf 100644 --- a/packages/vue/package.json +++ b/packages/vue/package.json @@ -45,7 +45,7 @@ "build:dts": "vue-tsc --declaration --emitDeclarationOnly", "dev": "tsup --watch", "lint": "eslint src/", - "lint:attw": "attw --pack . --ignore-rules no-resolution cjs-resolves-to-esm", + "lint:attw": "attw --pack . --ignore-rules no-resolution cjs-resolves-to-esm internal-resolution-error", "lint:publint": "publint", "publish:local": "pnpm yalc push --replace --sig", "test": "vitest", From 6ad2975f1b158dcc4c99db811b0106fb33145fd7 Mon Sep 17 00:00:00 2001 From: wobsoriano Date: Wed, 15 Jan 2025 12:35:44 -0800 Subject: [PATCH 07/16] unexport type --- packages/types/src/clerk.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/types/src/clerk.ts b/packages/types/src/clerk.ts index 00cf8a46cb1..f3bf518c229 100644 --- a/packages/types/src/clerk.ts +++ b/packages/types/src/clerk.ts @@ -990,7 +990,7 @@ export type SignInCombinedProps = RoutingOptions & { LegacyRedirectProps & AfterSignOutUrl; -export interface TransferableOption { +interface TransferableOption { /** * Indicates whether or not sign in attempts are transferable to the sign up flow. * When set to false, prevents opaque sign ups when a user attempts to sign in via OAuth with an email that doesn't exist. From 615b7312af0f0375c4aa63a5014525a38fec64a4 Mon Sep 17 00:00:00 2001 From: Robert Soriano Date: Wed, 15 Jan 2025 12:36:19 -0800 Subject: [PATCH 08/16] chore: update changeset --- .changeset/dry-pears-approve.md | 1 - 1 file changed, 1 deletion(-) diff --git a/.changeset/dry-pears-approve.md b/.changeset/dry-pears-approve.md index 567c1815649..02428afc87f 100644 --- a/.changeset/dry-pears-approve.md +++ b/.changeset/dry-pears-approve.md @@ -1,5 +1,4 @@ --- -'@clerk/types': patch '@clerk/vue': patch --- From 1f7ad1660919a576a0cc5baedc00832287bf0ff9 Mon Sep 17 00:00:00 2001 From: wobsoriano Date: Wed, 15 Jan 2025 13:21:05 -0800 Subject: [PATCH 09/16] chore(types): Export TransferableOption type --- packages/types/src/clerk.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/types/src/clerk.ts b/packages/types/src/clerk.ts index f3bf518c229..00cf8a46cb1 100644 --- a/packages/types/src/clerk.ts +++ b/packages/types/src/clerk.ts @@ -990,7 +990,7 @@ export type SignInCombinedProps = RoutingOptions & { LegacyRedirectProps & AfterSignOutUrl; -interface TransferableOption { +export interface TransferableOption { /** * Indicates whether or not sign in attempts are transferable to the sign up flow. * When set to false, prevents opaque sign ups when a user attempts to sign in via OAuth with an email that doesn't exist. From f9a83c39fb91f20a71f1497e90d1c75abe2edad4 Mon Sep 17 00:00:00 2001 From: wobsoriano Date: Wed, 15 Jan 2025 13:21:40 -0800 Subject: [PATCH 10/16] update changeset --- .changeset/dry-pears-approve.md | 1 + 1 file changed, 1 insertion(+) diff --git a/.changeset/dry-pears-approve.md b/.changeset/dry-pears-approve.md index 02428afc87f..567c1815649 100644 --- a/.changeset/dry-pears-approve.md +++ b/.changeset/dry-pears-approve.md @@ -1,4 +1,5 @@ --- +'@clerk/types': patch '@clerk/vue': patch --- From 6d26ab1329c04bf69cefca094ce266220661981b Mon Sep 17 00:00:00 2001 From: wobsoriano Date: Wed, 15 Jan 2025 15:19:14 -0800 Subject: [PATCH 11/16] chore(vue): Refactor SignInButton render function to SFC --- packages/vue/src/components/SignInButton.vue | 48 ++++++++++++++++++++ packages/vue/src/components/index.ts | 2 +- 2 files changed, 49 insertions(+), 1 deletion(-) create mode 100644 packages/vue/src/components/SignInButton.vue diff --git a/packages/vue/src/components/SignInButton.vue b/packages/vue/src/components/SignInButton.vue new file mode 100644 index 00000000000..fbcae81a3fc --- /dev/null +++ b/packages/vue/src/components/SignInButton.vue @@ -0,0 +1,48 @@ + + + diff --git a/packages/vue/src/components/index.ts b/packages/vue/src/components/index.ts index 300df97209d..b157bab6a60 100644 --- a/packages/vue/src/components/index.ts +++ b/packages/vue/src/components/index.ts @@ -25,7 +25,7 @@ export { RedirectToOrganizationProfile, } from './controlComponents'; -export { SignInButton } from './SignInButton'; +export { default as SignInButton } from './SignInButton.vue'; export { SignUpButton } from './SignUpButton'; export { SignOutButton } from './SignOutButton'; export { SignInWithMetamaskButton } from './SignInWithMetamaskButton'; From bc18a7a00da8d72b2f2afa02142fae5d57c4a755 Mon Sep 17 00:00:00 2001 From: wobsoriano Date: Wed, 15 Jan 2025 15:42:15 -0800 Subject: [PATCH 12/16] chore(vue): Add vue vite plugin for tests --- packages/vue/package.json | 1 + packages/vue/src/components/SignInButton.ts | 46 ------------------- .../components/__tests__/SignInButton.test.ts | 2 +- packages/vue/vitest.config.ts | 2 + pnpm-lock.yaml | 18 ++++++-- 5 files changed, 17 insertions(+), 52 deletions(-) delete mode 100644 packages/vue/src/components/SignInButton.ts diff --git a/packages/vue/package.json b/packages/vue/package.json index f5562e3f356..59e86afc6bc 100644 --- a/packages/vue/package.json +++ b/packages/vue/package.json @@ -57,6 +57,7 @@ }, "devDependencies": { "@testing-library/vue": "^8.1.0", + "@vitejs/plugin-vue": "^5.2.1", "@vue.ts/tsx-auto-props": "^0.6.0", "unplugin-vue": "^5.2.1", "vue": "3.5.12", diff --git a/packages/vue/src/components/SignInButton.ts b/packages/vue/src/components/SignInButton.ts deleted file mode 100644 index c04ad26fa34..00000000000 --- a/packages/vue/src/components/SignInButton.ts +++ /dev/null @@ -1,46 +0,0 @@ -import type { PropType } from 'vue'; -import { defineComponent, h } from 'vue'; - -import { useClerk } from '../composables/useClerk'; -import { assertSingleChild, normalizeWithDefaultValue } from '../utils'; - -export const SignInButton = defineComponent({ - props: { - fallbackRedirectUrl: String, - forceRedirectUrl: String, - signUpForceRedirectUrl: String, - signUpFallbackRedirectUrl: String, - initialValues: Object, - // withSignUp: Boolean, - mode: { - type: String as PropType<'modal' | 'redirect'>, - required: false, - }, - }, - setup(props, { slots, attrs }) { - const clerk = useClerk(); - - function clickHandler() { - const { mode, ...opts } = props; - - if (mode === 'modal') { - return clerk.value?.openSignIn(opts); - } - - void clerk.value?.redirectToSignIn({ - ...opts, - signInFallbackRedirectUrl: props.fallbackRedirectUrl, - signInForceRedirectUrl: props.forceRedirectUrl, - }); - } - - return () => { - const children = normalizeWithDefaultValue(slots.default?.(), 'Sign in'); - const child = assertSingleChild(children, 'SignInButton'); - return h(child, { - ...attrs, - onClick: clickHandler, - }); - }; - }, -}); diff --git a/packages/vue/src/components/__tests__/SignInButton.test.ts b/packages/vue/src/components/__tests__/SignInButton.test.ts index 4850e12e459..192b21c5bcb 100644 --- a/packages/vue/src/components/__tests__/SignInButton.test.ts +++ b/packages/vue/src/components/__tests__/SignInButton.test.ts @@ -3,7 +3,7 @@ import { render, screen } from '@testing-library/vue'; import { vi } from 'vitest'; import { defineComponent, h, ref } from 'vue'; -import { SignInButton } from '../SignInButton'; +import SignInButton from '../SignInButton.vue'; const mockRedirectToSignIn = vi.fn(); const originalError = console.error; diff --git a/packages/vue/vitest.config.ts b/packages/vue/vitest.config.ts index 527089358ab..e622333bea1 100644 --- a/packages/vue/vitest.config.ts +++ b/packages/vue/vitest.config.ts @@ -1,3 +1,4 @@ +import vue from '@vitejs/plugin-vue'; import { defineConfig } from 'vitest/config'; export default defineConfig({ @@ -5,4 +6,5 @@ export default defineConfig({ globals: true, environment: 'jsdom', }, + plugins: [vue()], }); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 09a1151ecc0..7c70ed5c3ab 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1158,6 +1158,9 @@ importers: '@testing-library/vue': specifier: ^8.1.0 version: 8.1.0(@vue/compiler-sfc@3.5.12)(vue@3.5.12(typescript@5.6.3)) + '@vitejs/plugin-vue': + specifier: ^5.2.1 + version: 5.2.1(vite@6.0.7(@types/node@22.10.6)(jiti@2.4.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.0))(vue@3.5.12(typescript@5.6.3)) '@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) @@ -5884,11 +5887,11 @@ packages: vite: ^5.0.0 vue: ^3.0.0 - '@vitejs/plugin-vue@5.2.0': - resolution: {integrity: sha512-7n7KdUEtx/7Yl7I/WVAMZ1bEb0eVvXF3ummWTeLcs/9gvo9pJhuLdouSXGjdZ/MKD1acf1I272+X0RMua4/R3g==} + '@vitejs/plugin-vue@5.2.1': + resolution: {integrity: sha512-cxh314tzaWwOLqVes2gnnCtvBDcM1UMdn+iFR+UjAn411dPT3tOmqrJjbMd7koZpMAmBM/GqeV4n9ge7JSiJJQ==} engines: {node: ^18.0.0 || >=20.0.0} peerDependencies: - vite: ^5.0.0 + vite: ^5.0.0 || ^6.0.0 vue: ^3.2.25 '@vitest/coverage-v8@2.1.4': @@ -18353,7 +18356,7 @@ snapshots: dependencies: '@nuxt/kit': 3.14.159(magicast@0.3.5)(rollup@4.26.0)(webpack-sources@3.2.3) '@rollup/plugin-replace': 6.0.1(rollup@4.26.0) - '@vitejs/plugin-vue': 5.2.0(vite@5.4.11(@types/node@22.10.6)(terser@5.37.0))(vue@3.5.12(typescript@5.6.3)) + '@vitejs/plugin-vue': 5.2.1(vite@5.4.11(@types/node@22.10.6)(terser@5.37.0))(vue@3.5.12(typescript@5.6.3)) '@vitejs/plugin-vue-jsx': 4.1.0(vite@5.4.11(@types/node@22.10.6)(terser@5.37.0))(vue@3.5.12(typescript@5.6.3)) autoprefixer: 10.4.20(postcss@8.4.49) clear: 0.1.0 @@ -21685,11 +21688,16 @@ snapshots: transitivePeerDependencies: - supports-color - '@vitejs/plugin-vue@5.2.0(vite@5.4.11(@types/node@22.10.6)(terser@5.37.0))(vue@3.5.12(typescript@5.6.3))': + '@vitejs/plugin-vue@5.2.1(vite@5.4.11(@types/node@22.10.6)(terser@5.37.0))(vue@3.5.12(typescript@5.6.3))': dependencies: vite: 5.4.11(@types/node@22.10.6)(terser@5.37.0) vue: 3.5.12(typescript@5.6.3) + '@vitejs/plugin-vue@5.2.1(vite@6.0.7(@types/node@22.10.6)(jiti@2.4.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.0))(vue@3.5.12(typescript@5.6.3))': + dependencies: + vite: 6.0.7(@types/node@22.10.6)(jiti@2.4.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.0) + vue: 3.5.12(typescript@5.6.3) + '@vitest/coverage-v8@2.1.4(vitest@2.1.4(@edge-runtime/vm@5.0.0)(@types/node@22.10.6)(jsdom@24.1.3)(msw@2.6.4(@types/node@22.10.6)(typescript@5.6.3))(terser@5.37.0))': dependencies: '@ampproject/remapping': 2.3.0 From c2f62ef2e442653e6c841f3ca19e8ce44edb0a2a Mon Sep 17 00:00:00 2001 From: wobsoriano Date: Wed, 15 Jan 2025 15:51:12 -0800 Subject: [PATCH 13/16] clean up test files included by vue-tsc --- packages/vue/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/vue/package.json b/packages/vue/package.json index 59e86afc6bc..48b042b7385 100644 --- a/packages/vue/package.json +++ b/packages/vue/package.json @@ -42,7 +42,7 @@ ], "scripts": { "build": "tsup --onSuccess \"pnpm build:dts\"", - "build:dts": "vue-tsc --declaration --emitDeclarationOnly", + "build:dts": "vue-tsc --declaration --emitDeclarationOnly && rm -rf dist/components/__tests__", "dev": "tsup --watch", "lint": "eslint src/", "lint:attw": "attw --pack . --ignore-rules no-resolution cjs-resolves-to-esm internal-resolution-error", From 8ed8b4b98435479548deb917f6da5286e30b231b Mon Sep 17 00:00:00 2001 From: wobsoriano Date: Thu, 16 Jan 2025 07:39:20 -0800 Subject: [PATCH 14/16] chore(vue): Add type to type imports --- packages/vue/src/components/ui-components/SignIn.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/vue/src/components/ui-components/SignIn.vue b/packages/vue/src/components/ui-components/SignIn.vue index dbd1319f237..686c0bffc1a 100644 --- a/packages/vue/src/components/ui-components/SignIn.vue +++ b/packages/vue/src/components/ui-components/SignIn.vue @@ -1,7 +1,7 @@