diff --git a/.changeset/afraid-toes-sin.md b/.changeset/afraid-toes-sin.md new file mode 100644 index 00000000000..20fe12183ae --- /dev/null +++ b/.changeset/afraid-toes-sin.md @@ -0,0 +1,6 @@ +--- +'@clerk/clerk-js': patch +'@clerk/clerk-react': patch +--- + +Include **BUILD_DISABLE_RHC** to allow for builds which remove remotely hosted code as it is a requirement for browser extensions. diff --git a/.changeset/tidy-garlics-boil.md b/.changeset/tidy-garlics-boil.md new file mode 100644 index 00000000000..b885d2e8606 --- /dev/null +++ b/.changeset/tidy-garlics-boil.md @@ -0,0 +1,5 @@ +--- +'@clerk/chrome-extension': major +--- + +Consume packages with remotely hosted code removed as required by Manifest v3. diff --git a/packages/chrome-extension/src/background/clerk.ts b/packages/chrome-extension/src/background/clerk.ts index 6f75d4a8025..c77b4722651 100644 --- a/packages/chrome-extension/src/background/clerk.ts +++ b/packages/chrome-extension/src/background/clerk.ts @@ -1,4 +1,4 @@ -import { Clerk } from '@clerk/clerk-js'; +import { Clerk } from '@clerk/clerk-js/no-rhc'; import { createClerkClient as _createClerkClient, @@ -6,10 +6,11 @@ import { } from '../internal'; import { SCOPE } from '../types'; +Clerk.mountComponentRenderer = undefined; + export type CreateClerkClientOptions = Omit<_CreateClerkClientOptions, 'scope'>; export async function createClerkClient(opts: CreateClerkClientOptions): Promise { - Clerk.mountComponentRenderer = undefined; const clerk = await _createClerkClient({ ...opts, scope: SCOPE.BACKGROUND }); await clerk.load({ standardBrowser: false }); return clerk; diff --git a/packages/chrome-extension/src/internal/clerk.ts b/packages/chrome-extension/src/internal/clerk.ts index 6b134503669..0fe5df00d1d 100644 --- a/packages/chrome-extension/src/internal/clerk.ts +++ b/packages/chrome-extension/src/internal/clerk.ts @@ -1,4 +1,4 @@ -import { Clerk } from '@clerk/clerk-js'; +import { Clerk } from '@clerk/clerk-js/no-rhc'; import { DEV_BROWSER_JWT_KEY } from '@clerk/shared/devBrowser'; import { parsePublishableKey } from '@clerk/shared/keys'; import browser from 'webextension-polyfill'; @@ -32,6 +32,10 @@ export async function createClerkClient({ storageCache = BrowserStorageCache, syncHost, }: CreateClerkClientOptions): Promise { + if (scope === SCOPE.BACKGROUND) { + Clerk.mountComponentRenderer = undefined; + } + // Don't cache background scripts as it can result in out-of-sync client information. if (clerk && scope !== SCOPE.BACKGROUND) { return clerk; diff --git a/packages/chrome-extension/src/react/ClerkProvider.tsx b/packages/chrome-extension/src/react/ClerkProvider.tsx index 3c174bc90a4..8127a36d01a 100644 --- a/packages/chrome-extension/src/react/ClerkProvider.tsx +++ b/packages/chrome-extension/src/react/ClerkProvider.tsx @@ -1,4 +1,4 @@ -import type { Clerk } from '@clerk/clerk-js'; +import type { Clerk } from '@clerk/clerk-js/no-rhc'; import type { ClerkProviderProps as ClerkReactProviderProps } from '@clerk/clerk-react'; import { ClerkProvider as ClerkReactProvider } from '@clerk/clerk-react'; import React from 'react'; diff --git a/packages/chrome-extension/tsup.config.ts b/packages/chrome-extension/tsup.config.ts index a7f6237ea5a..317efbfa3c8 100644 --- a/packages/chrome-extension/tsup.config.ts +++ b/packages/chrome-extension/tsup.config.ts @@ -2,7 +2,6 @@ import type { Options } from 'tsup'; import { defineConfig } from 'tsup'; import { runAfterLast } from '../../scripts/utils'; -// @ts-ignore import { name, version } from './package.json'; export default defineConfig(overrideOptions => { @@ -10,16 +9,20 @@ export default defineConfig(overrideOptions => { const shouldPublish = !!overrideOptions.env?.publish; const common: Options = { - entry: ['./src/index.ts', './src/background/index.ts', './src/internal/index.ts', './src/react/index.ts'], + entry: ['./src/index.ts', './src/background/index.ts', './src/react/index.ts'], bundle: true, clean: true, minify: false, sourcemap: true, legacyOutput: true, + treeshake: true, + noExternal: ['@clerk/clerk-react'], + external: ['use-sync-external-store'], define: { PACKAGE_NAME: `"${name}"`, PACKAGE_VERSION: `"${version}"`, __DEV__: `${isWatch}`, + __BUILD_DISABLE_RHC__: 'true', }, }; diff --git a/packages/clerk-js/no-rhc/index.d.ts b/packages/clerk-js/no-rhc/index.d.ts new file mode 100644 index 00000000000..e2e71077761 --- /dev/null +++ b/packages/clerk-js/no-rhc/index.d.ts @@ -0,0 +1,3 @@ +export { Clerk } from '../dist/types/index'; + +export * from '../dist/types/index'; diff --git a/packages/clerk-js/no-rhc/index.js b/packages/clerk-js/no-rhc/index.js new file mode 100644 index 00000000000..f29fe6cfcfa --- /dev/null +++ b/packages/clerk-js/no-rhc/index.js @@ -0,0 +1 @@ +module.exports = require('../dist/clerk.no-rhc'); diff --git a/packages/clerk-js/package.json b/packages/clerk-js/package.json index 3421a691013..1dbcb32ab4c 100644 --- a/packages/clerk-js/package.json +++ b/packages/clerk-js/package.json @@ -27,7 +27,8 @@ "types": "dist/types/index.d.ts", "files": [ "dist", - "headless" + "headless", + "no-rhc" ], "scripts": { "build": "pnpm build:bundle && pnpm build:declarations", diff --git a/packages/clerk-js/rspack.config.js b/packages/clerk-js/rspack.config.js index 2f17f5cd940..91bddaa0915 100644 --- a/packages/clerk-js/rspack.config.js +++ b/packages/clerk-js/rspack.config.js @@ -11,6 +11,7 @@ const isDevelopment = mode => !isProduction(mode); const variants = { clerk: 'clerk', + clerkNoRHC: 'clerk.no-rhc', // Omit Remotely Hosted Code clerkBrowser: 'clerk.browser', clerkHeadless: 'clerk.headless', clerkHeadlessBrowser: 'clerk.headless.browser', @@ -18,6 +19,7 @@ const variants = { const variantToSourceFile = { [variants.clerk]: './src/index.ts', + [variants.clerkNoRHC]: './src/index.ts', [variants.clerkBrowser]: './src/index.browser.ts', [variants.clerkHeadless]: './src/index.headless.ts', [variants.clerkHeadlessBrowser]: './src/index.headless.browser.ts', @@ -27,9 +29,10 @@ const variantToSourceFile = { * * @param {object} config * @param {'development'|'production'} config.mode + * @param {boolean} [config.disableRHC=false] * @returns { import('@rspack/cli').Configuration } */ -const common = ({ mode }) => { +const common = ({ mode, disableRHC = false }) => { return { mode, resolve: { @@ -39,6 +42,7 @@ const common = ({ mode }) => { }, plugins: [ new rspack.DefinePlugin({ + __BUILD_DISABLE_RHC__: JSON.stringify(disableRHC), __DEV__: isDevelopment(mode), __PKG_VERSION__: JSON.stringify(packageJSON.version), __PKG_NAME__: JSON.stringify(packageJSON.name), @@ -400,12 +404,63 @@ const prodConfig = ({ mode, env, analysis }) => { }, }); + const clerkEsmNoRHC = merge( + entryForVariant(variants.clerkNoRHC), + common({ mode, disableRHC: true }), + commonForProd(), + commonForProdBundled(), + { + experiments: { + outputModule: true, + }, + output: { + filename: '[name].mjs', + libraryTarget: 'module', + }, + plugins: [ + // Include the lazy chunks in the bundle as well + // so that the final bundle can be imported and bundled again + // by a different bundler, eg the webpack instance used by react-scripts + new rspack.optimize.LimitChunkCountPlugin({ + maxChunks: 1, + }), + ], + optimization: { + splitChunks: false, + }, + }, + ); + + const clerkCjsNoRHC = merge( + entryForVariant(variants.clerkNoRHC), + common({ mode, disableRHC: true }), + commonForProd(), + commonForProdBundled(), + { + output: { + filename: '[name].js', + libraryTarget: 'commonjs', + }, + plugins: [ + // Include the lazy chunks in the bundle as well + // so that the final bundle can be imported and bundled again + // by a different bundler, eg the webpack instance used by react-scripts + new rspack.optimize.LimitChunkCountPlugin({ + maxChunks: 1, + }), + ], + optimization: { + splitChunks: false, + }, + }, + ); + // webpack-bundle-analyzer only supports a single build, use clerkBrowser as that's the default build we serve if (analysis) { return [clerkBrowser]; } - return [clerkBrowser, clerkHeadless, clerkHeadlessBrowser, clerkEsm, clerkCjs]; + return [clerkBrowser, clerkHeadless, clerkHeadlessBrowser, clerkEsm, clerkEsmNoRHC, clerkCjs, clerkCjsNoRHC]; }; /** @@ -478,6 +533,12 @@ const devConfig = ({ mode, env }) => { common({ mode }), commonForDev(), ), + // prettier-ignore + [variants.clerkBrowserNoRHC]: merge( + entryForVariant(variants.clerkBrowserNoRHC), + common({ mode, disableRHC: true }), + commonForDev(), + ), [variants.clerkHeadless]: merge( entryForVariant(variants.clerkHeadless), common({ mode }), diff --git a/packages/clerk-js/src/core/clerk.ts b/packages/clerk-js/src/core/clerk.ts index 21f43e6ee6e..516ce741dcd 100644 --- a/packages/clerk-js/src/core/clerk.ts +++ b/packages/clerk-js/src/core/clerk.ts @@ -109,6 +109,7 @@ import { clerkMissingSignInUrlAsSatellite, clerkOAuthCallbackDidNotCompleteSignInSignUp, clerkRedirectUrlIsMissingScheme, + clerkUnsupportedEnvironmentWarning, } from './errors'; import { eventBus, events } from './events'; import type { FapiClient, FapiRequestCallback } from './fapiClient'; @@ -175,7 +176,7 @@ export class Clerk implements ClerkInterface { // converted to protected environment to support `updateEnvironment` type assertion protected environment?: EnvironmentResource | null; - #publishableKey: string = ''; + #publishableKey = ''; #domain: DomainOrProxyUrl['domain']; #proxyUrl: DomainOrProxyUrl['proxyUrl']; #authService?: AuthCookieService; @@ -263,7 +264,9 @@ export class Clerk implements ClerkInterface { const publishableKey = parsePublishableKey(this.publishableKey); if (!publishableKey) { - return errorThrower.throwInvalidPublishableKeyError({ key: this.publishableKey }); + return errorThrower.throwInvalidPublishableKeyError({ + key: this.publishableKey, + }); } return publishableKey.frontendApi; @@ -557,7 +560,7 @@ export class Clerk implements ClerkInterface { }; public mountSignIn = (node: HTMLDivElement, props?: SignInProps): void => { - if (props && props.__experimental?.newComponents && this.__experimental_ui) { + if (props?.__experimental?.newComponents && this.__experimental_ui) { this.__experimental_ui.mount('SignIn', node, props); } else { this.assertComponentsReady(this.#componentControls); @@ -583,7 +586,7 @@ export class Clerk implements ClerkInterface { }; public mountSignUp = (node: HTMLDivElement, props?: SignUpProps): void => { - if (props && props.__experimental?.newComponents && this.__experimental_ui) { + if (props?.__experimental?.newComponents && this.__experimental_ui) { this.__experimental_ui.mount('SignUp', node, props); } else { this.assertComponentsReady(this.#componentControls); @@ -1325,7 +1328,13 @@ export class Clerk implements ClerkInterface { signUp, verifyEmailPath: params.verifyEmailAddressUrl || - buildURL({ base: displayConfig.signUpUrl, hashPath: '/verify-email-address' }, { stringify: true }), + buildURL( + { + base: displayConfig.signUpUrl, + hashPath: '/verify-email-address', + }, + { stringify: true }, + ), verifyPhonePath: params.verifyPhoneNumberUrl || buildURL({ base: displayConfig.signUpUrl, hashPath: '/verify-phone-number' }, { stringify: true }), @@ -1486,6 +1495,11 @@ export class Clerk implements ClerkInterface { public authenticateWithGoogleOneTap = async ( params: AuthenticateWithGoogleOneTapParams, ): Promise => { + if (__BUILD_DISABLE_RHC__) { + clerkUnsupportedEnvironmentWarning('Google One Tap'); + return this.client!.signIn; // TODO: Remove not null assertion + } + return this.client?.signIn .create({ strategy: 'google_one_tap', @@ -1504,11 +1518,27 @@ export class Clerk implements ClerkInterface { }; public authenticateWithMetamask = async (props: AuthenticateWithMetamaskParams = {}): Promise => { - await this.authenticateWithWeb3({ ...props, strategy: 'web3_metamask_signature' }); + if (__BUILD_DISABLE_RHC__) { + clerkUnsupportedEnvironmentWarning('Metamask'); + return; + } + + await this.authenticateWithWeb3({ + ...props, + strategy: 'web3_metamask_signature', + }); }; public authenticateWithCoinbaseWallet = async (props: AuthenticateWithCoinbaseWalletParams = {}): Promise => { - await this.authenticateWithWeb3({ ...props, strategy: 'web3_coinbase_wallet_signature' }); + if (__BUILD_DISABLE_RHC__) { + clerkUnsupportedEnvironmentWarning('Coinbase Wallet'); + return; + } + + await this.authenticateWithWeb3({ + ...props, + strategy: 'web3_coinbase_wallet_signature', + }); }; public authenticateWithWeb3 = async ({ @@ -1519,6 +1549,11 @@ export class Clerk implements ClerkInterface { strategy, legalAccepted, }: ClerkAuthenticateWithWeb3Params): Promise => { + if (__BUILD_DISABLE_RHC__) { + clerkUnsupportedEnvironmentWarning('Web3'); + return; + } + if (!this.client || !this.environment) { return; } @@ -1532,7 +1567,11 @@ export class Clerk implements ClerkInterface { let signInOrSignUp: SignInResource | SignUpResource; try { - signInOrSignUp = await this.client.signIn.authenticateWithWeb3({ identifier, generateSignature, strategy }); + signInOrSignUp = await this.client.signIn.authenticateWithWeb3({ + identifier, + generateSignature, + strategy, + }); } catch (err) { if (isError(err, ERROR_CODES.FORM_IDENTIFIER_NOT_FOUND)) { signInOrSignUp = await this.client.signUp.authenticateWithWeb3({ @@ -1642,7 +1681,10 @@ export class Clerk implements ClerkInterface { // 2. clerk-js initializes propA with a default value // 3. The customer update propB independently of propA and window.Clerk.updateProps is called // 4. If we don't merge the new props with the current options, propA will be reset to undefined - const props = { ..._props, options: this.#initOptions({ ...this.#options, ..._props.options }) }; + const props = { + ..._props, + options: this.#initOptions({ ...this.#options, ..._props.options }), + }; return this.#componentControls?.ensureMounted().then(controls => controls.updateProps(props)); }; diff --git a/packages/clerk-js/src/core/errors.ts b/packages/clerk-js/src/core/errors.ts index b917db134c4..304a1716dde 100644 --- a/packages/clerk-js/src/core/errors.ts +++ b/packages/clerk-js/src/core/errors.ts @@ -1,5 +1,17 @@ const errorPrefix = 'ClerkJS:'; +/** + * Used to log a warning when a Clerk feature is used in an unsupported environment. + * (Development Only) + * + * @param strategy The strategy that is not supported in the current environment. + * @returns void + * @note This is a warning and not an error because the application will still work, but the feature will not be available. + */ +export function clerkUnsupportedEnvironmentWarning(strategy: string) { + console.warn(`${errorPrefix} ${strategy} is not supported in this environment.`); +} + export function clerkNetworkError(url: string, e: Error): never { throw new Error(`${errorPrefix} Network error at "${url}" - ${e}. Please try again.`); } @@ -8,7 +20,7 @@ export function clerkErrorInitFailed(): never { throw new Error(`${errorPrefix} Something went wrong initializing Clerk.`); } -export function clerkErrorDevInitFailed(msg: string = ''): never { +export function clerkErrorDevInitFailed(msg = ''): never { throw new Error(`${errorPrefix} Something went wrong initializing Clerk in development mode.${msg && ` ${msg}`}`); } diff --git a/packages/clerk-js/src/core/resources/SignIn.ts b/packages/clerk-js/src/core/resources/SignIn.ts index 48bfb57ce29..ce9efceead4 100644 --- a/packages/clerk-js/src/core/resources/SignIn.ts +++ b/packages/clerk-js/src/core/resources/SignIn.ts @@ -55,6 +55,7 @@ import { clerkInvalidStrategy, clerkMissingOptionError, clerkMissingWebAuthnPublicKeyOptions, + clerkUnsupportedEnvironmentWarning, clerkVerifyEmailAddressCalledBeforeCreate, clerkVerifyPasskeyCalledBeforeCreate, clerkVerifyWeb3WalletCalledBeforeCreate, @@ -237,6 +238,11 @@ export class SignIn extends BaseResource implements SignInResource { }; public authenticateWithWeb3 = async (params: AuthenticateWithWeb3Params): Promise => { + if (__BUILD_DISABLE_RHC__) { + clerkUnsupportedEnvironmentWarning('Web3'); + return this; + } + const { identifier, generateSignature, strategy = 'web3_metamask_signature' } = params || {}; const provider = strategy.replace('web3_', '').replace('_signature', '') as Web3Provider; @@ -283,6 +289,11 @@ export class SignIn extends BaseResource implements SignInResource { }; public authenticateWithMetamask = async (): Promise => { + if (__BUILD_DISABLE_RHC__) { + clerkUnsupportedEnvironmentWarning('Metamask'); + return this; + } + const identifier = await getMetamaskIdentifier(); return this.authenticateWithWeb3({ identifier, @@ -292,6 +303,11 @@ export class SignIn extends BaseResource implements SignInResource { }; public authenticateWithCoinbaseWallet = async (): Promise => { + if (__BUILD_DISABLE_RHC__) { + clerkUnsupportedEnvironmentWarning('Coinbase Wallet'); + return this; + } + const identifier = await getCoinbaseWalletIdentifier(); return this.authenticateWithWeb3({ identifier, diff --git a/packages/clerk-js/src/core/resources/SignUp.ts b/packages/clerk-js/src/core/resources/SignUp.ts index 85b123ca343..be227ce3c81 100644 --- a/packages/clerk-js/src/core/resources/SignUp.ts +++ b/packages/clerk-js/src/core/resources/SignUp.ts @@ -37,6 +37,7 @@ import { normalizeUnsafeMetadata } from '../../utils/resourceParams'; import { clerkInvalidFAPIResponse, clerkMissingOptionError, + clerkUnsupportedEnvironmentWarning, clerkVerifyEmailAddressCalledBeforeCreate, clerkVerifyWeb3WalletCalledBeforeCreate, } from '../errors'; @@ -79,31 +80,41 @@ export class SignUp extends BaseResource implements SignUpResource { create = async (params: SignUpCreateParams): Promise => { const paramsWithCaptcha: Record = params; - const { captchaSiteKey, canUseCaptcha, captchaURL, captchaWidgetType, captchaProvider, captchaPublicKeyInvisible } = - retrieveCaptchaInfo(SignUp.clerk); - if ( - !this.shouldBypassCaptchaForAttempt(params) && - canUseCaptcha && - captchaSiteKey && - captchaURL && - captchaPublicKeyInvisible - ) { - try { - const captchaParams = await getCaptchaToken({ - siteKey: captchaSiteKey, - widgetType: captchaWidgetType, - invisibleSiteKey: captchaPublicKeyInvisible, - scriptUrl: captchaURL, - captchaProvider, - }); - paramsWithCaptcha.captchaToken = captchaParams.captchaToken; - paramsWithCaptcha.captchaWidgetType = captchaParams.captchaWidgetType; - } catch (e) { - if (e.captchaError) { - paramsWithCaptcha.captchaError = e.captchaError; - } else { - throw new ClerkRuntimeError(e.message, { code: 'captcha_unavailable' }); + if (!__BUILD_DISABLE_RHC__) { + const { + captchaSiteKey, + canUseCaptcha, + captchaURL, + captchaWidgetType, + captchaProvider, + captchaPublicKeyInvisible, + } = retrieveCaptchaInfo(SignUp.clerk); + + if ( + !this.shouldBypassCaptchaForAttempt(params) && + canUseCaptcha && + captchaSiteKey && + captchaURL && + captchaPublicKeyInvisible + ) { + try { + const captchaParams = await getCaptchaToken({ + siteKey: captchaSiteKey, + widgetType: captchaWidgetType, + invisibleSiteKey: captchaPublicKeyInvisible, + scriptUrl: captchaURL, + captchaProvider, + }); + + paramsWithCaptcha.captchaToken = captchaParams.captchaToken; + paramsWithCaptcha.captchaWidgetType = captchaParams.captchaWidgetType; + } catch (e) { + if (e.captchaError) { + paramsWithCaptcha.captchaError = e.captchaError; + } else { + throw new ClerkRuntimeError(e.message, { code: 'captcha_unavailable' }); + } } } } @@ -196,6 +207,11 @@ export class SignUp extends BaseResource implements SignUpResource { legalAccepted?: boolean; }, ): Promise => { + if (__BUILD_DISABLE_RHC__) { + clerkUnsupportedEnvironmentWarning('Web3'); + return this; + } + const { generateSignature, identifier, @@ -244,6 +260,11 @@ export class SignUp extends BaseResource implements SignUpResource { legalAccepted?: boolean; }, ): Promise => { + if (__BUILD_DISABLE_RHC__) { + clerkUnsupportedEnvironmentWarning('Metamask'); + return this; + } + const identifier = await getMetamaskIdentifier(); return this.authenticateWithWeb3({ identifier, @@ -259,6 +280,11 @@ export class SignUp extends BaseResource implements SignUpResource { legalAccepted?: boolean; }, ): Promise => { + if (__BUILD_DISABLE_RHC__) { + clerkUnsupportedEnvironmentWarning('Coinbase Wallet'); + return this; + } + const identifier = await getCoinbaseWalletIdentifier(); return this.authenticateWithWeb3({ identifier, diff --git a/packages/clerk-js/src/globals.d.ts b/packages/clerk-js/src/globals.d.ts index 26ef5a8a3c2..4cd691f52f6 100644 --- a/packages/clerk-js/src/globals.d.ts +++ b/packages/clerk-js/src/globals.d.ts @@ -2,6 +2,7 @@ declare global { const __DEV__: boolean; const __PKG_NAME__: string; const __PKG_VERSION__: string; + const __BUILD_DISABLE_RHC__: string; interface Window { __unstable__onBeforeSetActive: () => Promise | void; diff --git a/packages/clerk-js/src/ui/components/GoogleOneTap/one-tap-start.tsx b/packages/clerk-js/src/ui/components/GoogleOneTap/one-tap-start.tsx index 9d612da1e70..a06db08f630 100644 --- a/packages/clerk-js/src/ui/components/GoogleOneTap/one-tap-start.tsx +++ b/packages/clerk-js/src/ui/components/GoogleOneTap/one-tap-start.tsx @@ -1,6 +1,7 @@ import { useClerk, useUser } from '@clerk/shared/react'; import { useEffect, useRef } from 'react'; +import { clerkUnsupportedEnvironmentWarning } from '../../../core/errors'; import type { GISCredentialResponse } from '../../../utils/one-tap'; import { loadGIS } from '../../../utils/one-tap'; import { useEnvironment, useGoogleOneTapContext } from '../../contexts'; @@ -33,7 +34,13 @@ function _OneTapStart(): JSX.Element | null { const shouldLoadGIS = !user?.id && !!environmentClientID; async function initializeGIS() { + if (__BUILD_DISABLE_RHC__) { + clerkUnsupportedEnvironmentWarning('Google Identity Services'); + return undefined; + } + const google = await loadGIS(); + google.accounts.id.initialize({ client_id: environmentClientID!, callback: oneTapCallback, @@ -42,6 +49,7 @@ function _OneTapStart(): JSX.Element | null { auto_select: false, use_fedcm_for_prompt: ctx.fedCmSupport, }); + return google; } diff --git a/packages/clerk-js/src/utils/captcha/getCaptchaToken.ts b/packages/clerk-js/src/utils/captcha/getCaptchaToken.ts index 68058d407ce..1c38f5f1735 100644 --- a/packages/clerk-js/src/utils/captcha/getCaptchaToken.ts +++ b/packages/clerk-js/src/utils/captcha/getCaptchaToken.ts @@ -1,4 +1,10 @@ import { getTurnstileToken } from './turnstile'; import type { CaptchaOptions } from './types'; -export const getCaptchaToken = (opts: CaptchaOptions) => getTurnstileToken(opts); +export const getCaptchaToken = (opts: CaptchaOptions) => { + if (__BUILD_DISABLE_RHC__) { + return Promise.reject(); + } + + return getTurnstileToken(opts); +}; diff --git a/packages/clerk-js/src/utils/index.ts b/packages/clerk-js/src/utils/index.ts index cdffa71c21c..892275e1cdf 100644 --- a/packages/clerk-js/src/utils/index.ts +++ b/packages/clerk-js/src/utils/index.ts @@ -1,4 +1,5 @@ export * from './beforeUnloadTracker'; +export * from './completeSignUpFlow'; export * from './componentGuards'; export * from './dynamicParamParser'; export * from './email'; @@ -6,11 +7,13 @@ export * from './encoders'; export * from './errors'; export * from './errorThrower'; export * from './getClerkQueryParam'; -export * from './getClerkQueryParam'; export * from './hex'; export * from './ignoreEventValue'; +export * from './image'; export * from './instance'; export * from './jwt'; +export * from './normalizeRoutingOptions'; +export * from './organization'; export * from './pageLifecycle'; export * from './path'; export * from './props'; @@ -20,9 +23,3 @@ export * from './runtime'; export * from './url'; export * from './web3'; export * from './windowNavigate'; -export * from './componentGuards'; -export * from './queryStateParams'; -export * from './normalizeRoutingOptions'; -export * from './image'; -export * from './completeSignUpFlow'; -export * from './organization'; diff --git a/packages/react/src/globals.d.ts b/packages/react/src/globals.d.ts index 35c17622984..af26a664708 100644 --- a/packages/react/src/globals.d.ts +++ b/packages/react/src/globals.d.ts @@ -5,4 +5,5 @@ declare global { const PACKAGE_VERSION: string; const JS_PACKAGE_VERSION: string; const __DEV__: boolean; + var __BUILD_DISABLE_RHC__: boolean; // eslint-disable-line no-var } diff --git a/packages/react/src/isomorphicClerk.ts b/packages/react/src/isomorphicClerk.ts index 40c865118d9..cabf975d4cf 100644 --- a/packages/react/src/isomorphicClerk.ts +++ b/packages/react/src/isomorphicClerk.ts @@ -60,6 +60,10 @@ import type { } from './types'; import { isConstructor } from './utils'; +if (typeof __BUILD_DISABLE_RHC__ === 'undefined') { + globalThis.__BUILD_DISABLE_RHC__ = false; +} + const SDK_METADATA = { name: PACKAGE_NAME, version: PACKAGE_VERSION, @@ -461,7 +465,7 @@ export class IsomorphicClerk implements IsomorphicLoadedClerk { } global.Clerk = c; - } else { + } else if (!__BUILD_DISABLE_RHC__) { // Hot-load latest ClerkJS from Clerk CDN if (!global.Clerk) { await loadClerkJsScript({ diff --git a/playground/browser-extension/assets/icon.png b/playground/browser-extension/assets/icon.png new file mode 100644 index 00000000000..df3eaad5939 Binary files /dev/null and b/playground/browser-extension/assets/icon.png differ diff --git a/playground/browser-extension/package.json b/playground/browser-extension/package.json index 614b2e68b61..8c2e3619e71 100644 --- a/playground/browser-extension/package.json +++ b/playground/browser-extension/package.json @@ -15,26 +15,20 @@ }, "dependencies": { "@clerk/chrome-extension": "file:../../packages/chrome-extension", - "@clerk/clerk-js": "file:../../packages/clerk-js", - "@clerk/clerk-react": "file:../../packages/react", - "@clerk/localizations": "file:../../packages/localizations", - "@clerk/shared": "file:../../packages/shared", - "@clerk/themes": "file:../../packages/themes", - "@clerk/types": "file:../../packages/types", - "plasmo": "0.89.3", - "react": "18.3.1", - "react-dom": "18.3.1", + "plasmo": "0.89.4", + "react": "^18.3.1", + "react-dom": "^18.3.1", "react-router-dom": "^6.27.0", "tailwindcss": "3.4.14", "webextension-polyfill": "^0.12.0" }, "devDependencies": { - "@types/chrome": "0.0.279", + "@types/chrome": "0.0.280", "@types/node": "20.16.14", - "@types/react": "18.3.11", + "@types/react": "18.3.12", "@types/react-dom": "18.3.1", "@types/webextension-polyfill": "^0.12.1", - "postcss": "8.4.47", + "postcss": "8.4.49", "prettier": "3.3.3", "prettier-plugin-tailwindcss": "^0.6.8", "typescript": "5.6.3" diff --git a/playground/browser-extension/pnpm-lock.yaml b/playground/browser-extension/pnpm-lock.yaml index 9e30ec04388..5a22a73612d 100644 --- a/playground/browser-extension/pnpm-lock.yaml +++ b/playground/browser-extension/pnpm-lock.yaml @@ -10,37 +10,19 @@ importers: dependencies: '@clerk/chrome-extension': specifier: file:../../packages/chrome-extension - version: file:../../packages/chrome-extension(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@clerk/clerk-js': - specifier: file:../../packages/clerk-js - version: file:../../packages/clerk-js(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@clerk/clerk-react': - specifier: file:../../packages/react - version: file:../../packages/react(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@clerk/localizations': - specifier: file:../../packages/localizations - version: file:../../packages/localizations - '@clerk/shared': - specifier: file:../../packages/shared - version: file:../../packages/shared(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@clerk/themes': - specifier: file:../../packages/themes - version: file:../../packages/themes - '@clerk/types': - specifier: file:../../packages/types - version: file:../../packages/types + version: file:../../packages/chrome-extension(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) plasmo: - specifier: 0.89.3 - version: 0.89.3(@swc/core@1.7.40(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)(lodash@4.17.21)(postcss@8.4.47)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: 0.89.4 + version: 0.89.4(@swc/core@1.9.1(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)(lodash@4.17.21)(postcss@8.4.49)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: - specifier: 18.3.1 + specifier: ^18.3.1 version: 18.3.1 react-dom: - specifier: 18.3.1 + specifier: ^18.3.1 version: 18.3.1(react@18.3.1) react-router-dom: specifier: ^6.27.0 - version: 6.27.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 6.28.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) tailwindcss: specifier: 3.4.14 version: 3.4.14 @@ -49,14 +31,14 @@ importers: version: 0.12.0 devDependencies: '@types/chrome': - specifier: 0.0.279 - version: 0.0.279 + specifier: 0.0.280 + version: 0.0.280 '@types/node': specifier: 20.16.14 version: 20.16.14 '@types/react': - specifier: 18.3.11 - version: 18.3.11 + specifier: 18.3.12 + version: 18.3.12 '@types/react-dom': specifier: 18.3.1 version: 18.3.1 @@ -64,8 +46,8 @@ importers: specifier: ^0.12.1 version: 0.12.1 postcss: - specifier: 8.4.47 - version: 8.4.47 + specifier: 8.4.49 + version: 8.4.49 prettier: specifier: 3.3.3 version: 3.3.3 @@ -160,76 +142,38 @@ packages: react: '>=18' react-dom: '>=18' - '@clerk/clerk-js@5.29.1': - resolution: {integrity: sha512-2SwhoKHnGLiG1pgRxYkMzLzuLEuoS0l3KzYYC1D9EHxQ9s6ei2ZWlKxUQmw/WQSuAhQ669/g0KVNMvUo++cicA==} - engines: {node: '>=18.17.0'} - peerDependencies: - react: '>=18' - react-dom: '>=18' - - '@clerk/clerk-js@file:../../packages/clerk-js': - resolution: {directory: ../../packages/clerk-js, type: directory} + '@clerk/clerk-js@5.33.1': + resolution: {integrity: sha512-zwAuBtqo7b1vDHCn5tC6/W9iJ1s0FAJr5MRLsvTDraU7ntTw0UPgVMljtJqyo6ruYJbWPiFt6/vAUpLa/9rtxg==} engines: {node: '>=18.17.0'} peerDependencies: react: '>=18' react-dom: '>=18' - '@clerk/clerk-react@5.13.1': - resolution: {integrity: sha512-d+6RhRdSIGZpZhrn/f4ZPpx+ZfXCWDV8DFFvCzXjkNqeJDmCBWOeUYNHM5Ag2pXWp+wl0dU7C9qxgSLwrh7rvQ==} - engines: {node: '>=18.17.0'} - peerDependencies: - react: '>=18 || >=19.0.0-beta' - react-dom: '>=18 || >=19.0.0-beta' - - '@clerk/clerk-react@file:../../packages/react': - resolution: {directory: ../../packages/react, type: directory} + '@clerk/clerk-react@5.15.3': + resolution: {integrity: sha512-Ha7Cjiffk3GT0+lJgrtJfeTC9P1kIdmErjQc0t6+lcx12qZwnO1fsf5fp6GND6+P+VtjbgGOPrQmPoJoEcI3cA==} engines: {node: '>=18.17.0'} peerDependencies: - react: '>=18 || >=19.0.0-beta' - react-dom: '>=18 || >=19.0.0-beta' - - '@clerk/localizations@3.4.0': - resolution: {integrity: sha512-RrlumDVyKWtOEMqzWsIF+cRVr3FQAVYWW99dXUsKtSF92G3HtbMCp9c8ysMyHxR/K31tweb8Ut29cB8nBcKQyQ==} - engines: {node: '>=18.17.0'} + react: ^18 || ^19.0.0-0 + react-dom: ^18 || ^19.0.0-0 - '@clerk/localizations@file:../../packages/localizations': - resolution: {directory: ../../packages/localizations, type: directory} + '@clerk/localizations@3.6.2': + resolution: {integrity: sha512-CAP0jAgWP4hjco6hm+KoDan376Co/5ZUyJjAEgh+bs0JoHLIBkK+bML62XHPQgzHUdHHoNUn5pydXvsvaPFNvA==} engines: {node: '>=18.17.0'} - '@clerk/shared@2.10.1': - resolution: {integrity: sha512-9dPuCcTd2qaK+YU9BiO5mPPnet9B38ZSp0gutnaUQmve9013qO0p9Lx7ympiPSulwkTG4NAfYxjr/pyIUUFqCQ==} + '@clerk/shared@2.12.1': + resolution: {integrity: sha512-ezX/BXnMJ1rH7vX4H3nXpZ3WW8m1lbyri5dHOoDlREUOe/zr9lawUgVx+75aTxrVPtK7u8XwzMj/rT2cMfMmqw==} engines: {node: '>=18.17.0'} peerDependencies: - react: '>=18 || >=19.0.0-beta' - react-dom: '>=18 || >=19.0.0-beta' + react: ^18 || ^19.0.0-0 + react-dom: ^18 || ^19.0.0-0 peerDependenciesMeta: react: optional: true react-dom: optional: true - '@clerk/shared@file:../../packages/shared': - resolution: {directory: ../../packages/shared, type: directory} - engines: {node: '>=18.17.0'} - peerDependencies: - react: '>=18 || >=19.0.0-beta' - react-dom: '>=18 || >=19.0.0-beta' - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true - - '@clerk/themes@file:../../packages/themes': - resolution: {directory: ../../packages/themes, type: directory} - engines: {node: '>=18.17.0'} - - '@clerk/types@4.28.0': - resolution: {integrity: sha512-RPdrUs8HYfhXaZ0MOVBkzy7lilsU9lDVSC88a5o/cEMmTML+BTDfLHMlLG81kgvagSLCKKbl28iocb8y7stm1Q==} - engines: {node: '>=18.17.0'} - - '@clerk/types@file:../../packages/types': - resolution: {directory: ../../packages/types, type: directory} + '@clerk/types@4.32.0': + resolution: {integrity: sha512-6oqRJsQE8GIThVyPBAO0kJP0pZJ1c11Hz0qabDk9lStoxjHy7fRIcIm/JX5xlA6rjilWBMEgJr4C0a36mJvVXg==} engines: {node: '>=18.17.0'} '@coinbase/wallet-sdk@4.0.4': @@ -897,8 +841,8 @@ packages: cpu: [arm64] os: [android] - '@parcel/watcher-android-arm64@2.4.1': - resolution: {integrity: sha512-LOi/WTbbh3aTn2RYddrO8pnapixAziFl6SMxHM69r3tvdSm94JtCenaKgk1GRg5FJ5wpMCpHeW+7yqPlvZv7kg==} + '@parcel/watcher-android-arm64@2.5.0': + resolution: {integrity: sha512-qlX4eS28bUcQCdribHkg/herLe+0A9RyYC+mm2PXpncit8z5b3nSqGVzMNR3CmtAOgRutiZ02eIJJgP/b1iEFQ==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [android] @@ -909,8 +853,8 @@ packages: cpu: [arm64] os: [darwin] - '@parcel/watcher-darwin-arm64@2.4.1': - resolution: {integrity: sha512-ln41eihm5YXIY043vBrrHfn94SIBlqOWmoROhsMVTSXGh0QahKGy77tfEywQ7v3NywyxBBkGIfrWRHm0hsKtzA==} + '@parcel/watcher-darwin-arm64@2.5.0': + resolution: {integrity: sha512-hyZ3TANnzGfLpRA2s/4U1kbw2ZI4qGxaRJbBH2DCSREFfubMswheh8TeiC1sGZ3z2jUf3s37P0BBlrD3sjVTUw==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [darwin] @@ -921,14 +865,14 @@ packages: cpu: [x64] os: [darwin] - '@parcel/watcher-darwin-x64@2.4.1': - resolution: {integrity: sha512-yrw81BRLjjtHyDu7J61oPuSoeYWR3lDElcPGJyOvIXmor6DEo7/G2u1o7I38cwlcoBHQFULqF6nesIX3tsEXMg==} + '@parcel/watcher-darwin-x64@2.5.0': + resolution: {integrity: sha512-9rhlwd78saKf18fT869/poydQK8YqlU26TMiNg7AIu7eBp9adqbJZqmdFOsbZ5cnLp5XvRo9wcFmNHgHdWaGYA==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [darwin] - '@parcel/watcher-freebsd-x64@2.4.1': - resolution: {integrity: sha512-TJa3Pex/gX3CWIx/Co8k+ykNdDCLx+TuZj3f3h7eOjgpdKM+Mnix37RYsYU4LHhiYJz3DK5nFCCra81p6g050w==} + '@parcel/watcher-freebsd-x64@2.5.0': + resolution: {integrity: sha512-syvfhZzyM8kErg3VF0xpV8dixJ+RzbUaaGaeb7uDuz0D3FK97/mZ5AJQ3XNnDsXX7KkFNtyQyFrXZzQIcN49Tw==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [freebsd] @@ -939,8 +883,14 @@ packages: cpu: [arm] os: [linux] - '@parcel/watcher-linux-arm-glibc@2.4.1': - resolution: {integrity: sha512-4rVYDlsMEYfa537BRXxJ5UF4ddNwnr2/1O4MHM5PjI9cvV2qymvhwZSFgXqbS8YoTk5i/JR0L0JDs69BUn45YA==} + '@parcel/watcher-linux-arm-glibc@2.5.0': + resolution: {integrity: sha512-0VQY1K35DQET3dVYWpOaPFecqOT9dbuCfzjxoQyif1Wc574t3kOSkKevULddcR9znz1TcklCE7Ht6NIxjvTqLA==} + engines: {node: '>= 10.0.0'} + cpu: [arm] + os: [linux] + + '@parcel/watcher-linux-arm-musl@2.5.0': + resolution: {integrity: sha512-6uHywSIzz8+vi2lAzFeltnYbdHsDm3iIB57d4g5oaB9vKwjb6N6dRIgZMujw4nm5r6v9/BQH0noq6DzHrqr2pA==} engines: {node: '>= 10.0.0'} cpu: [arm] os: [linux] @@ -951,8 +901,8 @@ packages: cpu: [arm64] os: [linux] - '@parcel/watcher-linux-arm64-glibc@2.4.1': - resolution: {integrity: sha512-BJ7mH985OADVLpbrzCLgrJ3TOpiZggE9FMblfO65PlOCdG++xJpKUJ0Aol74ZUIYfb8WsRlUdgrZxKkz3zXWYA==} + '@parcel/watcher-linux-arm64-glibc@2.5.0': + resolution: {integrity: sha512-BfNjXwZKxBy4WibDb/LDCriWSKLz+jJRL3cM/DllnHH5QUyoiUNEp3GmL80ZqxeumoADfCCP19+qiYiC8gUBjA==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [linux] @@ -963,8 +913,8 @@ packages: cpu: [arm64] os: [linux] - '@parcel/watcher-linux-arm64-musl@2.4.1': - resolution: {integrity: sha512-p4Xb7JGq3MLgAfYhslU2SjoV9G0kI0Xry0kuxeG/41UfpjHGOhv7UoUDAz/jb1u2elbhazy4rRBL8PegPJFBhA==} + '@parcel/watcher-linux-arm64-musl@2.5.0': + resolution: {integrity: sha512-S1qARKOphxfiBEkwLUbHjCY9BWPdWnW9j7f7Hb2jPplu8UZ3nes7zpPOW9bkLbHRvWM0WDTsjdOTUgW0xLBN1Q==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [linux] @@ -975,8 +925,8 @@ packages: cpu: [x64] os: [linux] - '@parcel/watcher-linux-x64-glibc@2.4.1': - resolution: {integrity: sha512-s9O3fByZ/2pyYDPoLM6zt92yu6P4E39a03zvO0qCHOTjxmt3GHRMLuRZEWhWLASTMSrrnVNWdVI/+pUElJBBBg==} + '@parcel/watcher-linux-x64-glibc@2.5.0': + resolution: {integrity: sha512-d9AOkusyXARkFD66S6zlGXyzx5RvY+chTP9Jp0ypSTC9d4lzyRs9ovGf/80VCxjKddcUvnsGwCHWuF2EoPgWjw==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [linux] @@ -987,8 +937,8 @@ packages: cpu: [x64] os: [linux] - '@parcel/watcher-linux-x64-musl@2.4.1': - resolution: {integrity: sha512-L2nZTYR1myLNST0O632g0Dx9LyMNHrn6TOt76sYxWLdff3cB22/GZX2UPtJnaqQPdCRoszoY5rcOj4oMTtp5fQ==} + '@parcel/watcher-linux-x64-musl@2.5.0': + resolution: {integrity: sha512-iqOC+GoTDoFyk/VYSFHwjHhYrk8bljW6zOhPuhi5t9ulqiYq1togGJB5e3PwYVFFfeVgc6pbz3JdQyDoBszVaA==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [linux] @@ -999,14 +949,14 @@ packages: cpu: [arm64] os: [win32] - '@parcel/watcher-win32-arm64@2.4.1': - resolution: {integrity: sha512-Uq2BPp5GWhrq/lcuItCHoqxjULU1QYEcyjSO5jqqOK8RNFDBQnenMMx4gAl3v8GiWa59E9+uDM7yZ6LxwUIfRg==} + '@parcel/watcher-win32-arm64@2.5.0': + resolution: {integrity: sha512-twtft1d+JRNkM5YbmexfcH/N4znDtjgysFaV9zvZmmJezQsKpkfLYJ+JFV3uygugK6AtIM2oADPkB2AdhBrNig==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [win32] - '@parcel/watcher-win32-ia32@2.4.1': - resolution: {integrity: sha512-maNRit5QQV2kgHFSYwftmPBxiuK5u4DXjbXx7q6eKjq5dsLXZ4FJiVvlcw35QXzk0KrUecJmuVFbj4uV9oYrcw==} + '@parcel/watcher-win32-ia32@2.5.0': + resolution: {integrity: sha512-+rgpsNRKwo8A53elqbbHXdOMtY/tAtTzManTWShB5Kk54N8Q9mzNWV7tV+IbGueCbcj826MfWGU3mprWtuf1TA==} engines: {node: '>= 10.0.0'} cpu: [ia32] os: [win32] @@ -1017,8 +967,8 @@ packages: cpu: [x64] os: [win32] - '@parcel/watcher-win32-x64@2.4.1': - resolution: {integrity: sha512-+DvS92F9ezicfswqrvIRM2njcYJbd5mb9CUgtrHCHmvn7pPPa+nMDRu1o1bYYz/l5IB2NVGNJWiH7h1E58IF2A==} + '@parcel/watcher-win32-x64@2.5.0': + resolution: {integrity: sha512-lPrxve92zEHdgeff3aiu4gDOIt4u7sJYha6wbdEZDCDUhtjTsOMiaJzG5lMY4GkWH8p0fMmO2Ppq5G5XXG+DQw==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [win32] @@ -1027,8 +977,8 @@ packages: resolution: {integrity: sha512-71S4TF+IMyAn24PK4KSkdKtqJDR3zRzb0HE3yXpacItqTM7XfF2f5q9NEGLEVl0dAaBAGfNwDCjH120y25F6Tg==} engines: {node: '>= 10.0.0'} - '@parcel/watcher@2.4.1': - resolution: {integrity: sha512-HNjmfLQEVRZmHRET336f20H/8kOozUGwk7yajvsonjNxbj2wBTK1WsQuHkD5yYh9RxFGL2EyDHryOihOwUoKDA==} + '@parcel/watcher@2.5.0': + resolution: {integrity: sha512-i0GV1yJnm2n3Yq1qw6QrUrd/LI9bE8WEBOTtOkpCXHHdyN3TAGgqAK/DAT05z4fq2x04cARXt2pDmjWjL92iTQ==} engines: {node: '>= 10.0.0'} '@parcel/workers@2.8.3': @@ -1205,8 +1155,8 @@ packages: '@plasmohq/parcel-config@0.41.1': resolution: {integrity: sha512-peNpm+F1tVIZmDx8Mca8b3769cxc2IWS7q0+0Y4BLT1+2kis7X4b46IAYgOXtsDRZCb9pvxQhRhrVHpwGtdVLg==} - '@plasmohq/parcel-core@0.1.9': - resolution: {integrity: sha512-xuWfArWo4O9+RCb8mdvxf+hFH5lldLnufXGFCXnqBMGvL/A/l1NvQjXjVKYoTnPeX+9iZd534rb/7v49BPayCg==} + '@plasmohq/parcel-core@0.1.10': + resolution: {integrity: sha512-XbJrqlgPNo+uQaukWayfRDZnAvdkYrmcydCOz0wfmuksTjDisyGkL3ZbWeX86QPN65CXFyou11/9h3+U9IsHfA==} engines: {parcel: '>= 2.7.0'} '@plasmohq/parcel-namer-manifest@0.3.12': @@ -1269,8 +1219,8 @@ packages: resolution: {integrity: sha512-c83qWb22rNRuB0UaVCI0uRPNRr8Z0FWnEIvT47jiHAmOIUHbBOg5XvV7pM5x+rKn9HRpjxquDbXYSXr3fAKFcw==} engines: {node: '>=12'} - '@remix-run/router@1.20.0': - resolution: {integrity: sha512-mUnk8rPJBI9loFDZ+YzPGdeniYK+FTmRD1TMCz7ev2SNIozyKKpnGgsxO34u6Z4z/t0ITuu7voi/AshfsGsgFg==} + '@remix-run/router@1.21.0': + resolution: {integrity: sha512-xfSkCAchbdG5PnbrKqFWwia4Bi61nH+wm8wLEqfHDyp7Y3dZzgqS2itV8i4gAq9pC2HsTpwyBC6Ds8VHZ96JlA==} engines: {node: '>=14.0.0'} '@sindresorhus/is@5.6.0': @@ -1357,8 +1307,8 @@ packages: cpu: [arm64] os: [darwin] - '@swc/core-darwin-arm64@1.7.40': - resolution: {integrity: sha512-LRRrCiRJLb1kpQtxMNNsr5W82Inr0dy5Imho+4HQzVx/Ismi0qX4hQBgzJAnyOBNLK1+OBVb/912UVhKXppdfQ==} + '@swc/core-darwin-arm64@1.9.1': + resolution: {integrity: sha512-2/ncHSCdAh5OHem1fMITrWEzzl97OdMK1PHc9CkxSJnphLjRubfxB5sbc5tDhcO68a5tVy+DxwaBgDec3PXnOg==} engines: {node: '>=10'} cpu: [arm64] os: [darwin] @@ -1369,8 +1319,8 @@ packages: cpu: [x64] os: [darwin] - '@swc/core-darwin-x64@1.7.40': - resolution: {integrity: sha512-Lpl0XK/4fLzS5jsK48opUuGXrqJXwqJckYYPwyGbCfCXm4MsBe+7dX2hq/Kc4YMY25+NeTmzAXhla8TT4WYD/g==} + '@swc/core-darwin-x64@1.9.1': + resolution: {integrity: sha512-4MDOFC5zmNqRJ9RGFOH95oYf27J9HniLVpB1pYm2gGeNHdl2QvDMtx2QTuMHQ6+OTn/3y1BHYuhBGp7d405oLA==} engines: {node: '>=10'} cpu: [x64] os: [darwin] @@ -1381,8 +1331,8 @@ packages: cpu: [arm] os: [linux] - '@swc/core-linux-arm-gnueabihf@1.7.40': - resolution: {integrity: sha512-4bEvvjptpoc5BRPr/R419h6fXTEuub+frpxxlxBOEKxgXjAF/S3xdxyPijUAakmW/xXBF0u7OC4KYI+38yQp6g==} + '@swc/core-linux-arm-gnueabihf@1.9.1': + resolution: {integrity: sha512-eVW/BjRW8/HpLe3+1jRU7w7PdRLBgnEEYTkHJISU8805/EKT03xNZn6CfaBpKfeAloY4043hbGzE/NP9IahdpQ==} engines: {node: '>=10'} cpu: [arm] os: [linux] @@ -1393,8 +1343,8 @@ packages: cpu: [arm64] os: [linux] - '@swc/core-linux-arm64-gnu@1.7.40': - resolution: {integrity: sha512-v2fBlHJ/6Ovz0L2xFAI9TRiKyl9DTdx139PuAHD9gyzp16Utl/W0MPd4t2cYdkI6hPXE9PsJCSzMOrduh+YoDg==} + '@swc/core-linux-arm64-gnu@1.9.1': + resolution: {integrity: sha512-8m3u1v8R8NgI/9+cHMkzk14w87blSy3OsQPWPfhOL+XPwhyLPvat+ahQJb2nZmltjTgkB4IbzKFSfbuA34LmNA==} engines: {node: '>=10'} cpu: [arm64] os: [linux] @@ -1405,8 +1355,8 @@ packages: cpu: [arm64] os: [linux] - '@swc/core-linux-arm64-musl@1.7.40': - resolution: {integrity: sha512-uMkduQuU4LFVkW6txv8AVArT8GjJVJ5IHoWloXaUBMT447iE8NALmpePdZWhMyj6KV7j0y23CM5rzV/I2eNGLg==} + '@swc/core-linux-arm64-musl@1.9.1': + resolution: {integrity: sha512-hpT0sQAZnW8l02I289yeyFfT9llGO9PzKDxUq8pocKtioEHiElRqR53juCWoSmzuWi+6KX7zUJ0NKCBrc8pmDg==} engines: {node: '>=10'} cpu: [arm64] os: [linux] @@ -1417,8 +1367,8 @@ packages: cpu: [x64] os: [linux] - '@swc/core-linux-x64-gnu@1.7.40': - resolution: {integrity: sha512-4LZdY1MBSnXyTpW5fpBU/+JGAhkuHT+VnFTDNegRboN5nSPh7y0Yvn4LmIioESV+sWzjKkEXujJPGjrp+oSp5w==} + '@swc/core-linux-x64-gnu@1.9.1': + resolution: {integrity: sha512-sGFdpdAYusk/ropHiwtXom2JrdaKPxl8MqemRv6dvxZq1Gm/GdmOowxdXIPjCgBGMgoXVcgNviH6CgiO5q+UtA==} engines: {node: '>=10'} cpu: [x64] os: [linux] @@ -1429,8 +1379,8 @@ packages: cpu: [x64] os: [linux] - '@swc/core-linux-x64-musl@1.7.40': - resolution: {integrity: sha512-FPjOwT3SgI6PAwH1O8bhOGBPzuvzOlzKeCtxLaCjruHJu9V8KKBrMTWOZT/FJyYC9mX5Ip1+l9j30UqUZdQxtA==} + '@swc/core-linux-x64-musl@1.9.1': + resolution: {integrity: sha512-YtNLNwIWs0Z2+XgBs6+LrCIGtfCDtNr4S4b6Q5HDOreEIGzSvhkef8eyBI5L+fJ2eGov4b7iEo61C4izDJS5RA==} engines: {node: '>=10'} cpu: [x64] os: [linux] @@ -1441,8 +1391,8 @@ packages: cpu: [arm64] os: [win32] - '@swc/core-win32-arm64-msvc@1.7.40': - resolution: {integrity: sha512-//ovXdD9GsTmhPmXJlXnIbRQkeuL6PSrYSr7uCMNcclrUdJG0YkO0GMM2afUKYbdJcunylDDWsSS8PFWn0QxmA==} + '@swc/core-win32-arm64-msvc@1.9.1': + resolution: {integrity: sha512-qSxD3uZW2vSiHqUt30vUi0PB92zDh9bjqh5YKpfhhVa7h1vt/xXhlid8yMvSNToTfzhRrTEffOAPUr7WVoyQUA==} engines: {node: '>=10'} cpu: [arm64] os: [win32] @@ -1453,8 +1403,8 @@ packages: cpu: [ia32] os: [win32] - '@swc/core-win32-ia32-msvc@1.7.40': - resolution: {integrity: sha512-iD/1auVhHGlhWAPrWmfRWL3w4AvXIWGVXZiSA109/xnRIPiHKb/HqqTp/qB94E/ZHMPRgLKkLTNwamlkueUs8g==} + '@swc/core-win32-ia32-msvc@1.9.1': + resolution: {integrity: sha512-C3fPEwyX/WRPlX6zIToNykJuz1JkZX0sk8H1QH2vpnKuySUkt/Ur5K2FzLgSWzJdbfxstpgS151/es0VGAD+ZA==} engines: {node: '>=10'} cpu: [ia32] os: [win32] @@ -1465,8 +1415,8 @@ packages: cpu: [x64] os: [win32] - '@swc/core-win32-x64-msvc@1.7.40': - resolution: {integrity: sha512-ZlFAV1WFPhhWQ/8esiygmetkb905XIcMMtHRRG0FBGCllO+HVL5nikUaLDgTClz1onmEY9sMXUFQeoPtvliV+w==} + '@swc/core-win32-x64-msvc@1.9.1': + resolution: {integrity: sha512-2XZ+U1AyVsOAXeH6WK1syDm7+gwTjA8fShs93WcbxnK7HV+NigDlvr4124CeJLTHyh3fMh1o7+CnQnaBJhlysQ==} engines: {node: '>=10'} cpu: [x64] os: [win32] @@ -1480,8 +1430,8 @@ packages: '@swc/helpers': optional: true - '@swc/core@1.7.40': - resolution: {integrity: sha512-0HIzM5vigVT5IvNum+pPuST9p8xFhN6mhdIKju7qYYeNuZG78lwms/2d8WgjTJJlzp6JlPguXGrMMNzjQw0qNg==} + '@swc/core@1.9.1': + resolution: {integrity: sha512-OnPc+Kt5oy3xTvr/KCUOqE9ptJcWbyQgAUr1ydh9EmbBcmJTaO1kfQCxm/axzJi6sKeDTxL9rX5zvLOhoYIaQw==} engines: {node: '>=10'} peerDependencies: '@swc/helpers': '*' @@ -1498,8 +1448,8 @@ packages: '@swc/types@0.1.12': resolution: {integrity: sha512-wBJA+SdtkbFhHjTMYH+dEH1y4VpfGdAc2Kw/LK09i9bXd/K6j6PkDcFCEzb6iVfZMkPRrl/q0e3toqTAJdkIVA==} - '@swc/types@0.1.13': - resolution: {integrity: sha512-JL7eeCk6zWCbiYQg2xQSdLXQJl8Qoc9rXmG2cEKvHe3CKwMHwHGpfOb8frzNLmbycOo6I51qxnLnn9ESf4I20Q==} + '@swc/types@0.1.14': + resolution: {integrity: sha512-PbSmTiYCN+GMrvfjrMo9bdY+f2COnwbdnoMw7rqU/PI5jXpKjxOGZ0qqZCImxnT81NkNsKnmEpvu+hRXLBeCJg==} '@szmarczak/http-timer@5.0.1': resolution: {integrity: sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==} @@ -1509,8 +1459,8 @@ packages: resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} engines: {node: '>=10.13.0'} - '@types/chrome@0.0.279': - resolution: {integrity: sha512-wl0IxQ2OQiMazPZM5LimHQ7Jwd72/O8UvvzyptplXT2S4eUqXH5C0n8S+v8PtKhyX89p0igCPpNy3Bwksyk57g==} + '@types/chrome@0.0.280': + resolution: {integrity: sha512-AotSmZrL9bcZDDmSI1D9dE7PGbhOur5L0cKxXd7IqbVizQWCY4gcvupPUVsQ4FfDj3V2tt/iOpomT9EY0s+w1g==} '@types/estree@1.0.6': resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} @@ -1542,8 +1492,8 @@ packages: '@types/react-dom@18.3.1': resolution: {integrity: sha512-qW1Mfv8taImTthu4KoXgDfLuk4bydU6Q/TkADnDWWHwi4NX4BR+LWfTp2sVmTqRrsHvyDDTelgelxJ+SsejKKQ==} - '@types/react@18.3.11': - resolution: {integrity: sha512-r6QZ069rFTjrEYgFdOck1gK7FLVsgJE7tTz0pQBczlBNUhBNk0MQH4UbnFSwjpQLMkLzgqvBBa+qGpLje16eTQ==} + '@types/react@18.3.12': + resolution: {integrity: sha512-D2wOSq/d6Agt28q7rSI3jhU7G6aiuzljDGZ2hTZHIkrTLUI+AF3WMeKkEZ9nN2fkBAlcktT6vcZjDFiIhMYEQw==} '@types/trusted-types@2.0.7': resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} @@ -1592,6 +1542,9 @@ packages: abortcontroller-polyfill@1.7.5: resolution: {integrity: sha512-JMJ5soJWP18htbbxJjG7bG6yuI6pRhgJ0scHHTfkUjf6wjP912xZWvM+A4sJK3gqd9E8fcPbDnOefbA9Th/FIQ==} + abortcontroller-polyfill@1.7.6: + resolution: {integrity: sha512-Zypm+LjYdWAzvuypZvDN0smUJrhOurcuBWhhMRBExqVLRvdjp3Z9mASxKyq19K+meZMshwjjy5S0lkm388zE4Q==} + acorn@8.14.0: resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} engines: {node: '>=0.4.0'} @@ -1746,8 +1699,8 @@ packages: resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} - caniuse-lite@1.0.30001675: - resolution: {integrity: sha512-/wV1bQwPrkLiQMjaJF5yUMVM/VdRPOCU8QZ+PmG6uW6DvYSrNY1bpwHI/3mOcUosLaJCzYDi5o91IQB51ft6cg==} + caniuse-lite@1.0.30001678: + resolution: {integrity: sha512-RR+4U/05gNtps58PEBDZcPWTgEO2MBeoPZ96aQcjmfkBWRIDfN451fW2qyDA9/+HohLLIL5GqiMwA+IB1pWarw==} chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} @@ -1869,6 +1822,10 @@ packages: resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} engines: {node: '>= 8'} + cross-spawn@7.0.5: + resolution: {integrity: sha512-ZVJrKKYunU38/76t0RMOulHOnUcbU9GbpWKAOZ0mhjr7CX6FVrH+4FrAapSOekrgFQ3f/8gwMEuIft0aKq6Hug==} + engines: {node: '>= 8'} + crypto-js@4.2.0: resolution: {integrity: sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==} @@ -1992,8 +1949,8 @@ packages: eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - electron-to-chromium@1.5.49: - resolution: {integrity: sha512-ZXfs1Of8fDb6z7WEYZjXpgIRF6MEu8JdeGA0A40aZq6OQbS+eJpnnV49epZRna2DU/YsEjSQuGtQPPtvt6J65A==} + electron-to-chromium@1.5.53: + resolution: {integrity: sha512-7F6qFMWzBArEFK4PLE+c+nWzhS1kIoNkQvGnNDogofxQAym+roQ0GUIdw6C/4YdJ6JKGp19c2a/DLcfKTi4wRQ==} emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -2432,8 +2389,8 @@ packages: cpu: [arm64] os: [darwin] - lightningcss-darwin-arm64@1.27.0: - resolution: {integrity: sha512-Gl/lqIXY+d+ySmMbgDf0pgaWSqrWYxVHoc88q+Vhf2YNzZ8DwoRzGt5NZDVqqIW5ScpSnmmjcgXP87Dn2ylSSQ==} + lightningcss-darwin-arm64@1.28.1: + resolution: {integrity: sha512-VG3vvzM0m/rguCdm76DdobNeNJnHK+jWcdkNLFWHLh9YCotRvbRIt45JxwcHlIF8TDqWStVLTdghq5NaigVCBQ==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [darwin] @@ -2444,8 +2401,8 @@ packages: cpu: [x64] os: [darwin] - lightningcss-darwin-x64@1.27.0: - resolution: {integrity: sha512-0+mZa54IlcNAoQS9E0+niovhyjjQWEMrwW0p2sSdLRhLDc8LMQ/b67z7+B5q4VmjYCMSfnFi3djAAQFIDuj/Tg==} + lightningcss-darwin-x64@1.28.1: + resolution: {integrity: sha512-O7ORdislvKfMohFl4Iq7fxKqdJOuuxArcglVI3amuFO5DJ0wfV3Gxgi1JRo49slfr7OVzJQEHLG4muTWYM5cTQ==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [darwin] @@ -2456,8 +2413,8 @@ packages: cpu: [x64] os: [freebsd] - lightningcss-freebsd-x64@1.27.0: - resolution: {integrity: sha512-n1sEf85fePoU2aDN2PzYjoI8gbBqnmLGEhKq7q0DKLj0UTVmOTwDC7PtLcy/zFxzASTSBlVQYJUhwIStQMIpRA==} + lightningcss-freebsd-x64@1.28.1: + resolution: {integrity: sha512-b7sF89B31kYYijxVcFO7l5u6UNA862YstNu+3YbLl/IQKzveL4a5cwR5cdpG+OOhErg/c2u9WCmzZoX2I5GBvw==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [freebsd] @@ -2468,8 +2425,8 @@ packages: cpu: [arm] os: [linux] - lightningcss-linux-arm-gnueabihf@1.27.0: - resolution: {integrity: sha512-MUMRmtdRkOkd5z3h986HOuNBD1c2lq2BSQA1Jg88d9I7bmPGx08bwGcnB75dvr17CwxjxD6XPi3Qh8ArmKFqCA==} + lightningcss-linux-arm-gnueabihf@1.28.1: + resolution: {integrity: sha512-p61kXwvhUDLLzkWHjzSFfUBW/F0iy3jr3CWi3k8SKULtJEsJXTI9DqRm9EixxMSe2AMBQBt4auTYiQL4B1N51A==} engines: {node: '>= 12.0.0'} cpu: [arm] os: [linux] @@ -2480,8 +2437,8 @@ packages: cpu: [arm64] os: [linux] - lightningcss-linux-arm64-gnu@1.27.0: - resolution: {integrity: sha512-cPsxo1QEWq2sfKkSq2Bq5feQDHdUEwgtA9KaB27J5AX22+l4l0ptgjMZZtYtUnteBofjee+0oW1wQ1guv04a7A==} + lightningcss-linux-arm64-gnu@1.28.1: + resolution: {integrity: sha512-iO+fN9hOMmzfwqcG2/BgUtMKD48H2JO/SXU44fyIwpY2veb65QF5xiRrQ9l1FwIxbGK3231KBYCtAqv+xf+NsQ==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] @@ -2492,8 +2449,8 @@ packages: cpu: [arm64] os: [linux] - lightningcss-linux-arm64-musl@1.27.0: - resolution: {integrity: sha512-rCGBm2ax7kQ9pBSeITfCW9XSVF69VX+fm5DIpvDZQl4NnQoMQyRwhZQm9pd59m8leZ1IesRqWk2v/DntMo26lg==} + lightningcss-linux-arm64-musl@1.28.1: + resolution: {integrity: sha512-dnMHeXEmCUzHHZjaDpQBYuBKcN9nPC3nPFKl70bcj5Bkn5EmkcgEqm5p035LKOgvAwk1XwLpQCML6pXmCwz0NQ==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] @@ -2504,8 +2461,8 @@ packages: cpu: [x64] os: [linux] - lightningcss-linux-x64-gnu@1.27.0: - resolution: {integrity: sha512-Dk/jovSI7qqhJDiUibvaikNKI2x6kWPN79AQiD/E/KeQWMjdGe9kw51RAgoWFDi0coP4jinaH14Nrt/J8z3U4A==} + lightningcss-linux-x64-gnu@1.28.1: + resolution: {integrity: sha512-7vWDISaMUn+oo2TwRdf2hl/BLdPxvywv9JKEqNZB/0K7bXwV4XE9wN/C2sAp1gGuh6QBA8lpjF4JIPt3HNlCHA==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] @@ -2516,14 +2473,14 @@ packages: cpu: [x64] os: [linux] - lightningcss-linux-x64-musl@1.27.0: - resolution: {integrity: sha512-QKjTxXm8A9s6v9Tg3Fk0gscCQA1t/HMoF7Woy1u68wCk5kS4fR+q3vXa1p3++REW784cRAtkYKrPy6JKibrEZA==} + lightningcss-linux-x64-musl@1.28.1: + resolution: {integrity: sha512-IHCu9tVGP+x5BCpA2rF3D04DBokcBza/a8AuHQU+1AiMKubuMegPwcL7RatBgK4ztFHeYnnD5NdhwhRfYMAtNA==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] - lightningcss-win32-arm64-msvc@1.27.0: - resolution: {integrity: sha512-/wXegPS1hnhkeG4OXQKEMQeJd48RDC3qdh+OA8pCuOPCyvnm/yEayrJdJVqzBsqpy1aJklRCVxscpFur80o6iQ==} + lightningcss-win32-arm64-msvc@1.28.1: + resolution: {integrity: sha512-Erm72kHmMg/3h350PTseskz+eEGBM17Fuu79WW2Qqt0BfWSF1jHHc12lkJCWMYl5jcBHPs5yZdgNHtJ7IJS3Uw==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [win32] @@ -2534,8 +2491,8 @@ packages: cpu: [x64] os: [win32] - lightningcss-win32-x64-msvc@1.27.0: - resolution: {integrity: sha512-/OJLj94Zm/waZShL8nB5jsNj3CfNATLCTyFxZyouilfTmSoLDX7VlVAmhPHoZWVFp4vdmoiEbPEYC8HID3m6yw==} + lightningcss-win32-x64-msvc@1.28.1: + resolution: {integrity: sha512-ZPQtvx+uQBzrSdHH8p4H3M9Alue+x369TPZAA3b4K3d92FPhpZCuBG04+HQzspam9sVeID9mI6f3VRAs2ezaEA==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [win32] @@ -2544,8 +2501,8 @@ packages: resolution: {integrity: sha512-jEqaL7m/ZckZJjlMAfycr1Kpz7f93k6n7KGF5SJjuPSm6DWI6h3ayLZmgRHgy1OfrwoCed6h4C/gHYPOd1OFMA==} engines: {node: '>= 12.0.0'} - lightningcss@1.27.0: - resolution: {integrity: sha512-8f7aNmS1+etYSLHht0fQApPc2kNO8qGRutifN5rVIc6Xo6ABsEbqOr758UwI7ALVbTt4x1fllKt0PYgzD9S3yQ==} + lightningcss@1.28.1: + resolution: {integrity: sha512-KRDkHlLlNj3DWh79CDt93fPlRJh2W1AuHV0ZSZAMMuN7lqlsZTV5842idfS1urWG8q9tc17velp1gCXhY7sLnQ==} engines: {node: '>= 12.0.0'} lilconfig@2.1.0: @@ -2671,8 +2628,8 @@ packages: resolution: {integrity: sha512-P0efT1C9jIdVRefqjzOQ9Xml57zpOXnIuS+csaB4MdZbTdmGDLo8XhzBG1N7aO11gKDDkJvBLULeFTo46wwreA==} hasBin: true - msgpackr@1.11.0: - resolution: {integrity: sha512-I8qXuuALqJe5laEBYoFykChhSXLikZmUhccjGsPuSJ/7uPip2TJ7lwdIQwWSAi0jGZDXv4WOP8Qg65QZRuXxXw==} + msgpackr@1.11.2: + resolution: {integrity: sha512-F9UngXRlPyWCDEASDpTf6c9uNhGPTqnTeLVt7bN+bU1eajoR/8V9ys2BRaV5C/e5ihE6sJ9uPIKaYt6bFuO32g==} msgpackr@1.8.5: resolution: {integrity: sha512-mpPs3qqTug6ahbblkThoUY2DQdNXcm4IapwOS3Vm/87vmpzLVelvp9h3It1y9l1VPpiFLV11vfOXnmeEwiIXwg==} @@ -2773,8 +2730,8 @@ packages: resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} engines: {node: '>=10'} - ordered-binary@1.5.2: - resolution: {integrity: sha512-JTo+4+4Fw7FreyAvlSLjb1BBVaxEQAacmjD3jjuyPZclpbEghTvQZbXBb2qPd2LeIMxiHwXBZUcpmG2Gl/mDEA==} + ordered-binary@1.5.3: + resolution: {integrity: sha512-oGFr3T+pYdTGJ+YFEILMpS3es+GiIbs9h/XQrclBXUtd44ey7XwfsMzM31f64I1SQOawDoDr/D823kNCADI8TA==} os-tmpdir@1.0.2: resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} @@ -2840,8 +2797,8 @@ packages: resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} engines: {node: '>= 6'} - plasmo@0.89.3: - resolution: {integrity: sha512-rBOv1fbNnhdfsDmI5XAMCvNmPwZsXWdcPU4lLH8I1PqXNDeyXCEJdiCLC+4LvB8V262a2UhHgvPwTW9Au4qAmQ==} + plasmo@0.89.4: + resolution: {integrity: sha512-vsoMe8ts0tyW27fZxwQLqWR/58NKqRepLFrZMVBH4ceSIyPDryfPpXzVxmBDH43odbiUVFdh8BGAt2ri2vQuGw==} hasBin: true postcss-import@15.1.0: @@ -2881,8 +2838,8 @@ packages: postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - postcss@8.4.47: - resolution: {integrity: sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==} + postcss@8.4.49: + resolution: {integrity: sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==} engines: {node: ^10 || ^12 || >=14} posthtml-parser@0.10.2: @@ -3024,15 +2981,15 @@ packages: resolution: {integrity: sha512-Gvzk7OZpiqKSkxsQvO/mbTN1poglhmAV7gR/DdIrRrSMXraRQQlfikRJOr3Nb9GTMPC5kof948Zy6jJZIFtDvQ==} engines: {node: '>=0.10.0'} - react-router-dom@6.27.0: - resolution: {integrity: sha512-+bvtFWMC0DgAFrfKXKG9Fc+BcXWRUO1aJIihbB79xaeq0v5UzfvnM5houGUm1Y461WVRcgAQ+Clh5rdb1eCx4g==} + react-router-dom@6.28.0: + resolution: {integrity: sha512-kQ7Unsl5YdyOltsPGl31zOjLrDv+m2VcIEcIHqYYD3Lp0UppLjrzcfJqDJwXxFw3TH/yvapbnUvPlAj7Kx5nbg==} engines: {node: '>=14.0.0'} peerDependencies: react: '>=16.8' react-dom: '>=16.8' - react-router@6.27.0: - resolution: {integrity: sha512-YA+HGZXz4jaAkVoYBE98VQl+nVzI+cVI2Oj/06F5ZM+0u3TgedN9Y9kmMRo2mnkSK2nCpNQn0DVob4HCsY/WLw==} + react-router@6.28.0: + resolution: {integrity: sha512-HrYdIFqdrnhDw0PqG/AKjAqEqM7AvxCz0DQ4h2W8k6nqmc5uRBYDag0SBxx9iYz5G8gnuNVLzUe13wl9eAsXXg==} engines: {node: '>=14.0.0'} peerDependencies: react: '>=16.8' @@ -3118,8 +3075,8 @@ packages: safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - sass@1.80.5: - resolution: {integrity: sha512-TQd2aoQl/+zsxRMEDSxVdpPIqeq9UFc6pr7PzkugiTx3VYCFPUaa3P4RrBQsqok4PO200Vkz0vXQBNlg7W907g==} + sass@1.80.6: + resolution: {integrity: sha512-ccZgdHNiBF1NHBsWvacvT5rju3y1d/Eu+8Ex6c21nHp2lZGLBEtuwc415QfiI1PJa1TpCo3iXwwSRjRpn2Ckjg==} engines: {node: '>=14.0.0'} hasBin: true @@ -3341,8 +3298,8 @@ packages: tslib@2.4.1: resolution: {integrity: sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==} - tslib@2.8.0: - resolution: {integrity: sha512-jWVzBLplnCmoaTr13V9dYbiQ99wvZRd0vNWaDRg+aVYRcjDF3nDksxFDE/+fkXnKhpnUUkmx5pK/v8mCtLVqZA==} + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} tsup@7.2.0: resolution: {integrity: sha512-vDHlczXbgUvY3rWvqFEbSqmC1L7woozbzngMqTtL2PGBODTtWlRwGDDawhvWzr5c1QjKe4OAKqJGfE1xeXUvtQ==} @@ -3588,11 +3545,11 @@ snapshots: '@babel/helper-string-parser': 7.25.9 '@babel/helper-validator-identifier': 7.25.9 - '@clerk/chrome-extension@file:../../packages/chrome-extension(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@clerk/chrome-extension@file:../../packages/chrome-extension(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@clerk/clerk-js': 5.29.1(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@clerk/clerk-react': 5.13.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@clerk/shared': 2.10.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@clerk/clerk-js': 5.33.1(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@clerk/clerk-react': 5.15.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@clerk/shared': 2.12.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) webextension-polyfill: 0.10.0 @@ -3600,41 +3557,17 @@ snapshots: - '@types/react' - supports-color - '@clerk/clerk-js@5.29.1(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@clerk/clerk-js@5.33.1(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@clerk/localizations': 3.4.0 - '@clerk/shared': 2.10.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@clerk/types': 4.28.0 + '@clerk/localizations': 3.6.2 + '@clerk/shared': 2.12.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@clerk/types': 4.32.0 '@coinbase/wallet-sdk': 4.0.4 '@emotion/cache': 11.11.0 - '@emotion/react': 11.11.1(@types/react@18.3.11)(react@18.3.1) - '@floating-ui/react': 0.25.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@formkit/auto-animate': 0.8.2 - '@zxcvbn-ts/core': 3.0.4 - '@zxcvbn-ts/language-common': 3.0.4 - browser-tabs-lock: 1.2.15 - copy-to-clipboard: 3.3.3 - core-js: 3.26.1 - crypto-js: 4.2.0 - dequal: 2.0.3 - qrcode.react: 3.1.0(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - regenerator-runtime: 0.13.11 - transitivePeerDependencies: - - '@types/react' - - supports-color - - '@clerk/clerk-js@file:../../packages/clerk-js(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@clerk/localizations': 3.4.0 - '@clerk/shared': 2.10.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@clerk/types': 4.28.0 - '@coinbase/wallet-sdk': 4.0.4 - '@emotion/cache': 11.11.0 - '@emotion/react': 11.11.1(@types/react@18.3.11)(react@18.3.1) + '@emotion/react': 11.11.1(@types/react@18.3.12)(react@18.3.1) '@floating-ui/react': 0.25.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@formkit/auto-animate': 0.8.2 + '@swc/helpers': 0.5.13 '@zxcvbn-ts/core': 3.0.4 '@zxcvbn-ts/language-common': 3.0.4 browser-tabs-lock: 1.2.15 @@ -3650,44 +3583,22 @@ snapshots: - '@types/react' - supports-color - '@clerk/clerk-react@5.13.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@clerk/shared': 2.10.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@clerk/types': 4.28.0 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - tslib: 2.4.1 - - '@clerk/clerk-react@file:../../packages/react(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@clerk/clerk-react@5.15.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@clerk/shared': 2.10.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@clerk/types': 4.28.0 + '@clerk/shared': 2.12.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@clerk/types': 4.32.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) tslib: 2.4.1 - '@clerk/localizations@3.4.0': - dependencies: - '@clerk/types': 4.28.0 - - '@clerk/localizations@file:../../packages/localizations': + '@clerk/localizations@3.6.2': dependencies: - '@clerk/types': 4.28.0 - - '@clerk/shared@2.10.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@clerk/types': 4.28.0 - glob-to-regexp: 0.4.1 - js-cookie: 3.0.5 - std-env: 3.7.0 - swr: 2.2.5(react@18.3.1) - optionalDependencies: - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + '@clerk/types': 4.32.0 - '@clerk/shared@file:../../packages/shared(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@clerk/shared@2.12.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@clerk/types': 4.28.0 + '@clerk/types': 4.32.0 + dequal: 2.0.3 glob-to-regexp: 0.4.1 js-cookie: 3.0.5 std-env: 3.7.0 @@ -3696,16 +3607,7 @@ snapshots: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - '@clerk/themes@file:../../packages/themes': - dependencies: - '@clerk/types': 4.28.0 - tslib: 2.4.1 - - '@clerk/types@4.28.0': - dependencies: - csstype: 3.1.1 - - '@clerk/types@file:../../packages/types': + '@clerk/types@4.32.0': dependencies: csstype: 3.1.1 @@ -3748,7 +3650,7 @@ snapshots: '@emotion/memoize@0.9.0': {} - '@emotion/react@11.11.1(@types/react@18.3.11)(react@18.3.1)': + '@emotion/react@11.11.1(@types/react@18.3.12)(react@18.3.1)': dependencies: '@babel/runtime': 7.26.0 '@emotion/babel-plugin': 11.12.0 @@ -3760,7 +3662,7 @@ snapshots: hoist-non-react-statics: 3.3.2 react: 18.3.1 optionalDependencies: - '@types/react': 18.3.11 + '@types/react': 18.3.12 transitivePeerDependencies: - supports-color @@ -3852,7 +3754,7 @@ snapshots: '@expo/spawn-async@1.7.2': dependencies: - cross-spawn: 7.0.3 + cross-spawn: 7.0.5 '@floating-ui/core@1.6.8': dependencies: @@ -4044,14 +3946,14 @@ snapshots: transitivePeerDependencies: - '@parcel/core' - '@parcel/config-default@2.9.3(@parcel/core@2.9.3)(@swc/helpers@0.5.13)(postcss@8.4.47)(typescript@5.2.2)': + '@parcel/config-default@2.9.3(@parcel/core@2.9.3)(@swc/helpers@0.5.13)(postcss@8.4.49)(typescript@5.2.2)': dependencies: '@parcel/bundler-default': 2.9.3(@parcel/core@2.9.3) '@parcel/compressor-raw': 2.9.3(@parcel/core@2.9.3) '@parcel/core': 2.9.3 '@parcel/namer-default': 2.9.3(@parcel/core@2.9.3) '@parcel/optimizer-css': 2.9.3(@parcel/core@2.9.3) - '@parcel/optimizer-htmlnano': 2.9.3(@parcel/core@2.9.3)(postcss@8.4.47)(typescript@5.2.2) + '@parcel/optimizer-htmlnano': 2.9.3(@parcel/core@2.9.3)(postcss@8.4.49)(typescript@5.2.2) '@parcel/optimizer-image': 2.9.3(@parcel/core@2.9.3) '@parcel/optimizer-svgo': 2.9.3(@parcel/core@2.9.3) '@parcel/optimizer-swc': 2.9.3(@parcel/core@2.9.3)(@swc/helpers@0.5.13) @@ -4105,14 +4007,14 @@ snapshots: '@parcel/types': 2.9.3(@parcel/core@2.9.3) '@parcel/utils': 2.9.3 '@parcel/workers': 2.9.3(@parcel/core@2.9.3) - abortcontroller-polyfill: 1.7.5 + abortcontroller-polyfill: 1.7.6 base-x: 3.0.10 browserslist: 4.24.2 clone: 2.1.2 dotenv: 7.0.0 dotenv-expand: 5.1.0 json5: 2.2.3 - msgpackr: 1.11.0 + msgpackr: 1.11.2 nullthrows: 1.1.1 semver: 7.5.4 @@ -4142,7 +4044,7 @@ snapshots: '@parcel/fs-search': 2.8.3 '@parcel/types': 2.8.3(@parcel/core@2.9.3) '@parcel/utils': 2.8.3 - '@parcel/watcher': 2.2.0 + '@parcel/watcher': 2.5.0 '@parcel/workers': 2.8.3(@parcel/core@2.9.3) '@parcel/fs@2.9.3(@parcel/core@2.9.3)': @@ -4151,7 +4053,7 @@ snapshots: '@parcel/fs-search': 2.9.3 '@parcel/types': 2.9.3(@parcel/core@2.9.3) '@parcel/utils': 2.9.3 - '@parcel/watcher': 2.2.0 + '@parcel/watcher': 2.5.0 '@parcel/workers': 2.9.3(@parcel/core@2.9.3) '@parcel/graph@2.9.3': @@ -4211,7 +4113,7 @@ snapshots: '@parcel/source-map': 2.1.1 '@parcel/utils': 2.9.3 browserslist: 4.24.2 - lightningcss: 1.27.0 + lightningcss: 1.28.1 nullthrows: 1.1.1 transitivePeerDependencies: - '@parcel/core' @@ -4225,10 +4127,10 @@ snapshots: transitivePeerDependencies: - '@parcel/core' - '@parcel/optimizer-htmlnano@2.9.3(@parcel/core@2.9.3)(postcss@8.4.47)(typescript@5.2.2)': + '@parcel/optimizer-htmlnano@2.9.3(@parcel/core@2.9.3)(postcss@8.4.49)(typescript@5.2.2)': dependencies: '@parcel/plugin': 2.9.3(@parcel/core@2.9.3) - htmlnano: 2.1.1(postcss@8.4.47)(svgo@2.8.0)(typescript@5.2.2) + htmlnano: 2.1.1(postcss@8.4.49)(svgo@2.8.0)(typescript@5.2.2) nullthrows: 1.1.1 posthtml: 0.16.6 svgo: 2.8.0 @@ -4266,7 +4168,7 @@ snapshots: '@parcel/plugin': 2.9.3(@parcel/core@2.9.3) '@parcel/source-map': 2.1.1 '@parcel/utils': 2.9.3 - '@swc/core': 1.7.40(@swc/helpers@0.5.13) + '@swc/core': 1.9.1(@swc/helpers@0.5.13) nullthrows: 1.1.1 transitivePeerDependencies: - '@parcel/core' @@ -4445,7 +4347,7 @@ snapshots: '@parcel/source-map': 2.1.1 '@parcel/utils': 2.9.3 browserslist: 4.24.2 - lightningcss: 1.27.0 + lightningcss: 1.28.1 nullthrows: 1.1.1 transitivePeerDependencies: - '@parcel/core' @@ -4558,7 +4460,7 @@ snapshots: dependencies: '@parcel/plugin': 2.9.3(@parcel/core@2.9.3) '@parcel/source-map': 2.1.1 - sass: 1.80.5 + sass: 1.80.6 transitivePeerDependencies: - '@parcel/core' @@ -4639,67 +4541,70 @@ snapshots: '@parcel/watcher-android-arm64@2.2.0': optional: true - '@parcel/watcher-android-arm64@2.4.1': + '@parcel/watcher-android-arm64@2.5.0': optional: true '@parcel/watcher-darwin-arm64@2.2.0': optional: true - '@parcel/watcher-darwin-arm64@2.4.1': + '@parcel/watcher-darwin-arm64@2.5.0': optional: true '@parcel/watcher-darwin-x64@2.2.0': optional: true - '@parcel/watcher-darwin-x64@2.4.1': + '@parcel/watcher-darwin-x64@2.5.0': optional: true - '@parcel/watcher-freebsd-x64@2.4.1': + '@parcel/watcher-freebsd-x64@2.5.0': optional: true '@parcel/watcher-linux-arm-glibc@2.2.0': optional: true - '@parcel/watcher-linux-arm-glibc@2.4.1': + '@parcel/watcher-linux-arm-glibc@2.5.0': + optional: true + + '@parcel/watcher-linux-arm-musl@2.5.0': optional: true '@parcel/watcher-linux-arm64-glibc@2.2.0': optional: true - '@parcel/watcher-linux-arm64-glibc@2.4.1': + '@parcel/watcher-linux-arm64-glibc@2.5.0': optional: true '@parcel/watcher-linux-arm64-musl@2.2.0': optional: true - '@parcel/watcher-linux-arm64-musl@2.4.1': + '@parcel/watcher-linux-arm64-musl@2.5.0': optional: true '@parcel/watcher-linux-x64-glibc@2.2.0': optional: true - '@parcel/watcher-linux-x64-glibc@2.4.1': + '@parcel/watcher-linux-x64-glibc@2.5.0': optional: true '@parcel/watcher-linux-x64-musl@2.2.0': optional: true - '@parcel/watcher-linux-x64-musl@2.4.1': + '@parcel/watcher-linux-x64-musl@2.5.0': optional: true '@parcel/watcher-win32-arm64@2.2.0': optional: true - '@parcel/watcher-win32-arm64@2.4.1': + '@parcel/watcher-win32-arm64@2.5.0': optional: true - '@parcel/watcher-win32-ia32@2.4.1': + '@parcel/watcher-win32-ia32@2.5.0': optional: true '@parcel/watcher-win32-x64@2.2.0': optional: true - '@parcel/watcher-win32-x64@2.4.1': + '@parcel/watcher-win32-x64@2.5.0': optional: true '@parcel/watcher@2.2.0': @@ -4720,25 +4625,26 @@ snapshots: '@parcel/watcher-win32-arm64': 2.2.0 '@parcel/watcher-win32-x64': 2.2.0 - '@parcel/watcher@2.4.1': + '@parcel/watcher@2.5.0': dependencies: detect-libc: 1.0.3 is-glob: 4.0.3 micromatch: 4.0.8 node-addon-api: 7.1.1 optionalDependencies: - '@parcel/watcher-android-arm64': 2.4.1 - '@parcel/watcher-darwin-arm64': 2.4.1 - '@parcel/watcher-darwin-x64': 2.4.1 - '@parcel/watcher-freebsd-x64': 2.4.1 - '@parcel/watcher-linux-arm-glibc': 2.4.1 - '@parcel/watcher-linux-arm64-glibc': 2.4.1 - '@parcel/watcher-linux-arm64-musl': 2.4.1 - '@parcel/watcher-linux-x64-glibc': 2.4.1 - '@parcel/watcher-linux-x64-musl': 2.4.1 - '@parcel/watcher-win32-arm64': 2.4.1 - '@parcel/watcher-win32-ia32': 2.4.1 - '@parcel/watcher-win32-x64': 2.4.1 + '@parcel/watcher-android-arm64': 2.5.0 + '@parcel/watcher-darwin-arm64': 2.5.0 + '@parcel/watcher-darwin-x64': 2.5.0 + '@parcel/watcher-freebsd-x64': 2.5.0 + '@parcel/watcher-linux-arm-glibc': 2.5.0 + '@parcel/watcher-linux-arm-musl': 2.5.0 + '@parcel/watcher-linux-arm64-glibc': 2.5.0 + '@parcel/watcher-linux-arm64-musl': 2.5.0 + '@parcel/watcher-linux-x64-glibc': 2.5.0 + '@parcel/watcher-linux-x64-musl': 2.5.0 + '@parcel/watcher-win32-arm64': 2.5.0 + '@parcel/watcher-win32-ia32': 2.5.0 + '@parcel/watcher-win32-x64': 2.5.0 '@parcel/workers@2.8.3(@parcel/core@2.9.3)': dependencies: @@ -4789,10 +4695,10 @@ snapshots: transitivePeerDependencies: - '@parcel/core' - '@plasmohq/parcel-config@0.41.1(@swc/core@1.7.40(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)(lodash@4.17.21)(postcss@8.4.47)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.2.2)': + '@plasmohq/parcel-config@0.41.1(@swc/core@1.9.1(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)(lodash@4.17.21)(postcss@8.4.49)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.2.2)': dependencies: '@parcel/compressor-raw': 2.9.3(@parcel/core@2.9.3) - '@parcel/config-default': 2.9.3(@parcel/core@2.9.3)(@swc/helpers@0.5.13)(postcss@8.4.47)(typescript@5.2.2) + '@parcel/config-default': 2.9.3(@parcel/core@2.9.3)(@swc/helpers@0.5.13)(postcss@8.4.49)(typescript@5.2.2) '@parcel/core': 2.9.3 '@parcel/optimizer-data-url': 2.9.3(@parcel/core@2.9.3) '@parcel/reporter-bundle-buddy': 2.9.3(@parcel/core@2.9.3) @@ -4819,7 +4725,7 @@ snapshots: '@plasmohq/parcel-optimizer-es': 0.4.1(@swc/helpers@0.5.13) '@plasmohq/parcel-packager': 0.6.15 '@plasmohq/parcel-resolver': 0.14.1 - '@plasmohq/parcel-resolver-post': 0.4.5(@swc/core@1.7.40(@swc/helpers@0.5.13))(postcss@8.4.47) + '@plasmohq/parcel-resolver-post': 0.4.5(@swc/core@1.9.1(@swc/helpers@0.5.13))(postcss@8.4.49) '@plasmohq/parcel-runtime': 0.25.1 '@plasmohq/parcel-transformer-inject-env': 0.2.12 '@plasmohq/parcel-transformer-inline-css': 0.3.11 @@ -4886,7 +4792,7 @@ snapshots: - walrus - whiskers - '@plasmohq/parcel-core@0.1.9': + '@plasmohq/parcel-core@0.1.10': dependencies: '@parcel/cache': 2.9.3(@parcel/core@2.9.3) '@parcel/core': 2.9.3 @@ -4939,14 +4845,14 @@ snapshots: '@parcel/utils': 2.9.3 nullthrows: 1.1.1 - '@plasmohq/parcel-resolver-post@0.4.5(@swc/core@1.7.40(@swc/helpers@0.5.13))(postcss@8.4.47)': + '@plasmohq/parcel-resolver-post@0.4.5(@swc/core@1.9.1(@swc/helpers@0.5.13))(postcss@8.4.49)': dependencies: '@parcel/core': 2.9.3 '@parcel/hash': 2.9.3 '@parcel/plugin': 2.9.3(@parcel/core@2.9.3) '@parcel/types': 2.9.3(@parcel/core@2.9.3) '@parcel/utils': 2.9.3 - tsup: 7.2.0(@swc/core@1.7.40(@swc/helpers@0.5.13))(postcss@8.4.47)(typescript@5.2.2) + tsup: 7.2.0(@swc/core@1.9.1(@swc/helpers@0.5.13))(postcss@8.4.49)(typescript@5.2.2) typescript: 5.2.2 transitivePeerDependencies: - '@swc/core' @@ -5080,7 +4986,7 @@ snapshots: '@pnpm/network.ca-file': 1.0.2 config-chain: 1.1.13 - '@remix-run/router@1.20.0': {} + '@remix-run/router@1.21.0': {} '@sindresorhus/is@5.6.0': {} @@ -5163,61 +5069,61 @@ snapshots: '@swc/core-darwin-arm64@1.3.96': optional: true - '@swc/core-darwin-arm64@1.7.40': + '@swc/core-darwin-arm64@1.9.1': optional: true '@swc/core-darwin-x64@1.3.96': optional: true - '@swc/core-darwin-x64@1.7.40': + '@swc/core-darwin-x64@1.9.1': optional: true '@swc/core-linux-arm-gnueabihf@1.3.96': optional: true - '@swc/core-linux-arm-gnueabihf@1.7.40': + '@swc/core-linux-arm-gnueabihf@1.9.1': optional: true '@swc/core-linux-arm64-gnu@1.3.96': optional: true - '@swc/core-linux-arm64-gnu@1.7.40': + '@swc/core-linux-arm64-gnu@1.9.1': optional: true '@swc/core-linux-arm64-musl@1.3.96': optional: true - '@swc/core-linux-arm64-musl@1.7.40': + '@swc/core-linux-arm64-musl@1.9.1': optional: true '@swc/core-linux-x64-gnu@1.3.96': optional: true - '@swc/core-linux-x64-gnu@1.7.40': + '@swc/core-linux-x64-gnu@1.9.1': optional: true '@swc/core-linux-x64-musl@1.3.96': optional: true - '@swc/core-linux-x64-musl@1.7.40': + '@swc/core-linux-x64-musl@1.9.1': optional: true '@swc/core-win32-arm64-msvc@1.3.96': optional: true - '@swc/core-win32-arm64-msvc@1.7.40': + '@swc/core-win32-arm64-msvc@1.9.1': optional: true '@swc/core-win32-ia32-msvc@1.3.96': optional: true - '@swc/core-win32-ia32-msvc@1.7.40': + '@swc/core-win32-ia32-msvc@1.9.1': optional: true '@swc/core-win32-x64-msvc@1.3.96': optional: true - '@swc/core-win32-x64-msvc@1.7.40': + '@swc/core-win32-x64-msvc@1.9.1': optional: true '@swc/core@1.3.96(@swc/helpers@0.5.13)': @@ -5237,34 +5143,34 @@ snapshots: '@swc/core-win32-x64-msvc': 1.3.96 '@swc/helpers': 0.5.13 - '@swc/core@1.7.40(@swc/helpers@0.5.13)': + '@swc/core@1.9.1(@swc/helpers@0.5.13)': dependencies: '@swc/counter': 0.1.3 - '@swc/types': 0.1.13 + '@swc/types': 0.1.14 optionalDependencies: - '@swc/core-darwin-arm64': 1.7.40 - '@swc/core-darwin-x64': 1.7.40 - '@swc/core-linux-arm-gnueabihf': 1.7.40 - '@swc/core-linux-arm64-gnu': 1.7.40 - '@swc/core-linux-arm64-musl': 1.7.40 - '@swc/core-linux-x64-gnu': 1.7.40 - '@swc/core-linux-x64-musl': 1.7.40 - '@swc/core-win32-arm64-msvc': 1.7.40 - '@swc/core-win32-ia32-msvc': 1.7.40 - '@swc/core-win32-x64-msvc': 1.7.40 + '@swc/core-darwin-arm64': 1.9.1 + '@swc/core-darwin-x64': 1.9.1 + '@swc/core-linux-arm-gnueabihf': 1.9.1 + '@swc/core-linux-arm64-gnu': 1.9.1 + '@swc/core-linux-arm64-musl': 1.9.1 + '@swc/core-linux-x64-gnu': 1.9.1 + '@swc/core-linux-x64-musl': 1.9.1 + '@swc/core-win32-arm64-msvc': 1.9.1 + '@swc/core-win32-ia32-msvc': 1.9.1 + '@swc/core-win32-x64-msvc': 1.9.1 '@swc/helpers': 0.5.13 '@swc/counter@0.1.3': {} '@swc/helpers@0.5.13': dependencies: - tslib: 2.8.0 + tslib: 2.8.1 '@swc/types@0.1.12': dependencies: '@swc/counter': 0.1.3 - '@swc/types@0.1.13': + '@swc/types@0.1.14': dependencies: '@swc/counter': 0.1.3 @@ -5274,7 +5180,7 @@ snapshots: '@trysound/sax@0.2.0': {} - '@types/chrome@0.0.279': + '@types/chrome@0.0.280': dependencies: '@types/filesystem': 0.0.36 '@types/har-format': 1.2.16 @@ -5303,9 +5209,9 @@ snapshots: '@types/react-dom@18.3.1': dependencies: - '@types/react': 18.3.11 + '@types/react': 18.3.12 - '@types/react@18.3.11': + '@types/react@18.3.12': dependencies: '@types/prop-types': 15.7.13 csstype: 3.1.3 @@ -5336,7 +5242,7 @@ snapshots: '@vue/shared': 3.3.4 estree-walker: 2.0.2 magic-string: 0.30.12 - postcss: 8.4.47 + postcss: 8.4.49 source-map-js: 1.2.1 '@vue/compiler-ssr@3.3.4': @@ -5383,6 +5289,8 @@ snapshots: abortcontroller-polyfill@1.7.5: {} + abortcontroller-polyfill@1.7.6: {} + acorn@8.14.0: {} ansi-escapes@4.3.2: @@ -5481,15 +5389,15 @@ snapshots: browserslist@4.22.1: dependencies: - caniuse-lite: 1.0.30001675 - electron-to-chromium: 1.5.49 + caniuse-lite: 1.0.30001678 + electron-to-chromium: 1.5.53 node-releases: 2.0.18 update-browserslist-db: 1.1.1(browserslist@4.22.1) browserslist@4.24.2: dependencies: - caniuse-lite: 1.0.30001675 - electron-to-chromium: 1.5.49 + caniuse-lite: 1.0.30001678 + electron-to-chromium: 1.5.53 node-releases: 2.0.18 update-browserslist-db: 1.1.1(browserslist@4.24.2) @@ -5536,7 +5444,7 @@ snapshots: camelcase@6.3.0: {} - caniuse-lite@1.0.30001675: {} + caniuse-lite@1.0.30001678: {} chalk@4.1.2: dependencies: @@ -5657,6 +5565,12 @@ snapshots: shebang-command: 2.0.0 which: 2.0.2 + cross-spawn@7.0.5: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + crypto-js@4.2.0: {} crypto-random-string@4.0.0: @@ -5759,7 +5673,7 @@ snapshots: eastasianwidth@0.2.0: {} - electron-to-chromium@1.5.49: {} + electron-to-chromium@1.5.53: {} emoji-regex@8.0.0: {} @@ -5835,7 +5749,7 @@ snapshots: execa@5.1.1: dependencies: - cross-spawn: 7.0.3 + cross-spawn: 7.0.5 get-stream: 6.0.1 human-signals: 2.1.0 is-stream: 2.0.1 @@ -6012,13 +5926,13 @@ snapshots: dependencies: react-is: 16.13.1 - htmlnano@2.1.1(postcss@8.4.47)(svgo@2.8.0)(typescript@5.2.2): + htmlnano@2.1.1(postcss@8.4.49)(svgo@2.8.0)(typescript@5.2.2): dependencies: cosmiconfig: 9.0.0(typescript@5.2.2) posthtml: 0.16.6 timsort: 0.3.0 optionalDependencies: - postcss: 8.4.47 + postcss: 8.4.49 svgo: 2.8.0 transitivePeerDependencies: - typescript @@ -6182,7 +6096,7 @@ snapshots: dependencies: copy-anything: 2.0.6 parse-node-version: 1.0.1 - tslib: 2.8.0 + tslib: 2.8.1 optionalDependencies: errno: 0.1.8 graceful-fs: 4.2.11 @@ -6195,58 +6109,58 @@ snapshots: lightningcss-darwin-arm64@1.21.8: optional: true - lightningcss-darwin-arm64@1.27.0: + lightningcss-darwin-arm64@1.28.1: optional: true lightningcss-darwin-x64@1.21.8: optional: true - lightningcss-darwin-x64@1.27.0: + lightningcss-darwin-x64@1.28.1: optional: true lightningcss-freebsd-x64@1.21.8: optional: true - lightningcss-freebsd-x64@1.27.0: + lightningcss-freebsd-x64@1.28.1: optional: true lightningcss-linux-arm-gnueabihf@1.21.8: optional: true - lightningcss-linux-arm-gnueabihf@1.27.0: + lightningcss-linux-arm-gnueabihf@1.28.1: optional: true lightningcss-linux-arm64-gnu@1.21.8: optional: true - lightningcss-linux-arm64-gnu@1.27.0: + lightningcss-linux-arm64-gnu@1.28.1: optional: true lightningcss-linux-arm64-musl@1.21.8: optional: true - lightningcss-linux-arm64-musl@1.27.0: + lightningcss-linux-arm64-musl@1.28.1: optional: true lightningcss-linux-x64-gnu@1.21.8: optional: true - lightningcss-linux-x64-gnu@1.27.0: + lightningcss-linux-x64-gnu@1.28.1: optional: true lightningcss-linux-x64-musl@1.21.8: optional: true - lightningcss-linux-x64-musl@1.27.0: + lightningcss-linux-x64-musl@1.28.1: optional: true - lightningcss-win32-arm64-msvc@1.27.0: + lightningcss-win32-arm64-msvc@1.28.1: optional: true lightningcss-win32-x64-msvc@1.21.8: optional: true - lightningcss-win32-x64-msvc@1.27.0: + lightningcss-win32-x64-msvc@1.28.1: optional: true lightningcss@1.21.8: @@ -6263,20 +6177,20 @@ snapshots: lightningcss-linux-x64-musl: 1.21.8 lightningcss-win32-x64-msvc: 1.21.8 - lightningcss@1.27.0: + lightningcss@1.28.1: dependencies: detect-libc: 1.0.3 optionalDependencies: - lightningcss-darwin-arm64: 1.27.0 - lightningcss-darwin-x64: 1.27.0 - lightningcss-freebsd-x64: 1.27.0 - lightningcss-linux-arm-gnueabihf: 1.27.0 - lightningcss-linux-arm64-gnu: 1.27.0 - lightningcss-linux-arm64-musl: 1.27.0 - lightningcss-linux-x64-gnu: 1.27.0 - lightningcss-linux-x64-musl: 1.27.0 - lightningcss-win32-arm64-msvc: 1.27.0 - lightningcss-win32-x64-msvc: 1.27.0 + lightningcss-darwin-arm64: 1.28.1 + lightningcss-darwin-x64: 1.28.1 + lightningcss-freebsd-x64: 1.28.1 + lightningcss-linux-arm-gnueabihf: 1.28.1 + lightningcss-linux-arm64-gnu: 1.28.1 + lightningcss-linux-arm64-musl: 1.28.1 + lightningcss-linux-x64-gnu: 1.28.1 + lightningcss-linux-x64-musl: 1.28.1 + lightningcss-win32-arm64-msvc: 1.28.1 + lightningcss-win32-x64-msvc: 1.28.1 lilconfig@2.1.0: {} @@ -6286,10 +6200,10 @@ snapshots: lmdb@2.5.2: dependencies: - msgpackr: 1.11.0 + msgpackr: 1.11.2 node-addon-api: 4.3.0 node-gyp-build-optional-packages: 5.0.3 - ordered-binary: 1.5.2 + ordered-binary: 1.5.3 weak-lru-cache: 1.2.2 optionalDependencies: '@lmdb/lmdb-darwin-arm64': 2.5.2 @@ -6304,7 +6218,7 @@ snapshots: msgpackr: 1.8.5 node-addon-api: 4.3.0 node-gyp-build-optional-packages: 5.0.6 - ordered-binary: 1.5.2 + ordered-binary: 1.5.3 weak-lru-cache: 1.2.2 optionalDependencies: '@lmdb/lmdb-darwin-arm64': 2.7.11 @@ -6403,7 +6317,7 @@ snapshots: '@msgpackr-extract/msgpackr-extract-win32-x64': 3.0.3 optional: true - msgpackr@1.11.0: + msgpackr@1.11.2: optionalDependencies: msgpackr-extract: 3.0.3 @@ -6494,7 +6408,7 @@ snapshots: strip-ansi: 6.0.1 wcwidth: 1.0.1 - ordered-binary@1.5.2: {} + ordered-binary@1.5.3: {} os-tmpdir@1.0.2: {} @@ -6550,7 +6464,7 @@ snapshots: pirates@4.0.6: {} - plasmo@0.89.3(@swc/core@1.7.40(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)(lodash@4.17.21)(postcss@8.4.47)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + plasmo@0.89.4(@swc/core@1.9.1(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)(lodash@4.17.21)(postcss@8.4.49)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: '@expo/spawn-async': 1.7.2 '@parcel/core': 2.9.3 @@ -6558,8 +6472,8 @@ snapshots: '@parcel/package-manager': 2.9.3(@parcel/core@2.9.3) '@parcel/watcher': 2.2.0 '@plasmohq/init': 0.7.0 - '@plasmohq/parcel-config': 0.41.1(@swc/core@1.7.40(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)(lodash@4.17.21)(postcss@8.4.47)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.2.2) - '@plasmohq/parcel-core': 0.1.9 + '@plasmohq/parcel-config': 0.41.1(@swc/core@1.9.1(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)(lodash@4.17.21)(postcss@8.4.49)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.2.2) + '@plasmohq/parcel-core': 0.1.10 buffer: 6.0.3 chalk: 5.3.0 change-case: 5.1.2 @@ -6641,28 +6555,28 @@ snapshots: - walrus - whiskers - postcss-import@15.1.0(postcss@8.4.47): + postcss-import@15.1.0(postcss@8.4.49): dependencies: - postcss: 8.4.47 + postcss: 8.4.49 postcss-value-parser: 4.2.0 read-cache: 1.0.0 resolve: 1.22.8 - postcss-js@4.0.1(postcss@8.4.47): + postcss-js@4.0.1(postcss@8.4.49): dependencies: camelcase-css: 2.0.1 - postcss: 8.4.47 + postcss: 8.4.49 - postcss-load-config@4.0.2(postcss@8.4.47): + postcss-load-config@4.0.2(postcss@8.4.49): dependencies: lilconfig: 3.1.2 yaml: 2.6.0 optionalDependencies: - postcss: 8.4.47 + postcss: 8.4.49 - postcss-nested@6.2.0(postcss@8.4.47): + postcss-nested@6.2.0(postcss@8.4.49): dependencies: - postcss: 8.4.47 + postcss: 8.4.49 postcss-selector-parser: 6.1.2 postcss-selector-parser@6.1.2: @@ -6672,7 +6586,7 @@ snapshots: postcss-value-parser@4.2.0: {} - postcss@8.4.47: + postcss@8.4.49: dependencies: nanoid: 3.3.7 picocolors: 1.1.1 @@ -6763,16 +6677,16 @@ snapshots: react-refresh@0.9.0: {} - react-router-dom@6.27.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + react-router-dom@6.28.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: - '@remix-run/router': 1.20.0 + '@remix-run/router': 1.21.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - react-router: 6.27.0(react@18.3.1) + react-router: 6.28.0(react@18.3.1) - react-router@6.27.0(react@18.3.1): + react-router@6.28.0(react@18.3.1): dependencies: - '@remix-run/router': 1.20.0 + '@remix-run/router': 1.21.0 react: 18.3.1 react@18.3.1: @@ -6842,18 +6756,19 @@ snapshots: rxjs@7.8.1: dependencies: - tslib: 2.8.0 + tslib: 2.8.1 safe-buffer@5.2.1: {} safer-buffer@2.1.2: {} - sass@1.80.5: + sass@1.80.6: dependencies: - '@parcel/watcher': 2.4.1 chokidar: 4.0.1 immutable: 4.3.7 source-map-js: 1.2.1 + optionalDependencies: + '@parcel/watcher': 2.5.0 sax@1.4.1: optional: true @@ -7041,11 +6956,11 @@ snapshots: normalize-path: 3.0.0 object-hash: 3.0.0 picocolors: 1.1.1 - postcss: 8.4.47 - postcss-import: 15.1.0(postcss@8.4.47) - postcss-js: 4.0.1(postcss@8.4.47) - postcss-load-config: 4.0.2(postcss@8.4.47) - postcss-nested: 6.2.0(postcss@8.4.47) + postcss: 8.4.49 + postcss-import: 15.1.0(postcss@8.4.49) + postcss-js: 4.0.1(postcss@8.4.49) + postcss-load-config: 4.0.2(postcss@8.4.49) + postcss-nested: 6.2.0(postcss@8.4.49) postcss-selector-parser: 6.1.2 resolve: 1.22.8 sucrase: 3.35.0 @@ -7124,9 +7039,9 @@ snapshots: tslib@2.4.1: {} - tslib@2.8.0: {} + tslib@2.8.1: {} - tsup@7.2.0(@swc/core@1.7.40(@swc/helpers@0.5.13))(postcss@8.4.47)(typescript@5.2.2): + tsup@7.2.0(@swc/core@1.9.1(@swc/helpers@0.5.13))(postcss@8.4.49)(typescript@5.2.2): dependencies: bundle-require: 4.2.1(esbuild@0.18.20) cac: 6.7.14 @@ -7136,15 +7051,15 @@ snapshots: execa: 5.1.1 globby: 11.1.0 joycon: 3.1.1 - postcss-load-config: 4.0.2(postcss@8.4.47) + postcss-load-config: 4.0.2(postcss@8.4.49) resolve-from: 5.0.0 rollup: 3.29.5 source-map: 0.8.0-beta.0 sucrase: 3.35.0 tree-kill: 1.2.2 optionalDependencies: - '@swc/core': 1.7.40(@swc/helpers@0.5.13) - postcss: 8.4.47 + '@swc/core': 1.9.1(@swc/helpers@0.5.13) + postcss: 8.4.49 typescript: 5.2.2 transitivePeerDependencies: - supports-color diff --git a/playground/browser-extension/src/background/index.ts b/playground/browser-extension/src/background/index.ts index 8417d7ac393..229e330bdc0 100644 --- a/playground/browser-extension/src/background/index.ts +++ b/playground/browser-extension/src/background/index.ts @@ -1,17 +1,22 @@ import { createClerkClient } from '@clerk/chrome-extension/background'; -console.log('Background Script w/ Clerk createClerkClient() demo loaded') +console.log('Background Script w/ Clerk createClerkClient() demo loaded'); -const publishableKey = process.env.PLASMO_PUBLIC_CLERK_PUBLISHABLE_KEY +const publishableKey = process.env.PLASMO_PUBLIC_CLERK_PUBLISHABLE_KEY; if (!publishableKey) { - throw new Error('Please add the PLASMO_PUBLIC_CLERK_PUBLISHABLE_KEY to the .env.development file') + throw new Error('Please add the PLASMO_PUBLIC_CLERK_PUBLISHABLE_KEY to the .env.development file'); } async function getToken() { const clerk = await createClerkClient({ publishableKey, - syncHost: process.env.PLASMO_PUBLIC_CLERK_SYNC_HOST + syncHost: process.env.PLASMO_PUBLIC_CLERK_SYNC_HOST, }); + + if (!clerk.session) { + return null; + } + return await clerk.session?.getToken(); } @@ -19,11 +24,11 @@ async function getToken() { // NOTE: A runtime listener cannot be async. // It must return true, in order to keep the connection open and send a response later. chrome.runtime.onMessage.addListener((request, sender, sendResponse) => { - if (request.greeting === "get-token") { - console.log('Handling request for the user\'s current token') - getToken().then((token) => sendResponse({ token })).catch((error) => console.error(JSON.stringify(error))); + if (request.greeting === 'get-token') { + console.log("Handling request for the user's current token"); + getToken() + .then(token => sendResponse({ token })) + .catch(error => console.error(JSON.stringify(error))); } return true; }); - - diff --git a/playground/browser-extension/src/popup/index.tsx b/playground/browser-extension/src/popup/index.tsx index cdf4214799b..cb3eef6c4a7 100644 --- a/playground/browser-extension/src/popup/index.tsx +++ b/playground/browser-extension/src/popup/index.tsx @@ -1,16 +1,15 @@ - -import "../style.css"; -import { RouterProvider, createMemoryRouter } from "react-router-dom"; +import '../style.css'; +import { RouterProvider, createMemoryRouter } from 'react-router-dom'; // Import the layouts -import { RootLayout } from "./layouts/root-layout"; +import { RootLayout } from './layouts/root-layout'; // Import the components -import { SignInPage } from "./routes/sign-in"; -import { SignUpPage } from "./routes/sign-up"; -import { Index } from "./routes"; -import { Settings } from "./routes/settings"; -import { SDKFeatures } from "./routes/sdk-features"; +import { SignInPage } from './routes/sign-in'; +import { SignUpPage } from './routes/sign-up'; +import { Index } from './routes'; +import { Settings } from './routes/settings'; +import { SDKFeatures } from './routes/sdk-features'; // Create the router // This removes the need for an App.tsx file @@ -18,17 +17,15 @@ const router = createMemoryRouter([ { element: , children: [ - { path: "/", element: }, - { path: "/sign-in", element: }, - { path: "/sign-up", element: }, - { path: "/settings", element: }, - { path: "/sdk-features", element: } + { path: '/', element: }, + { path: '/sign-in', element: }, + { path: '/sign-up', element: }, + { path: '/settings', element: }, + { path: '/sdk-features', element: }, ], }, ]); export default function PopupIndex() { - return ( - - ) + return ; }