From 5ac9bce825fd95a6166de798bfcb65551269f55a Mon Sep 17 00:00:00 2001 From: panteliselef Date: Fri, 12 Jul 2024 15:13:59 +0300 Subject: [PATCH 1/4] chore(astro): Simplify submodules and drop `bundled` variant --- .../src/components/SignOutReact.tsx | 2 +- .../src/components/page-with-user.tsx | 2 +- .../astro-node/src/layouts/react/Layout.astro | 2 +- .../astro-node/src/pages/react/index.astro | 2 +- .../src/pages/react/only-admins.astro | 2 +- .../src/pages/react/only-members.astro | 2 +- .../astro-node/src/pages/react/sign-in.astro | 2 +- packages/astro/client/react/package.json | 3 - packages/astro/package.json | 27 ++------- packages/astro/react/package.json | 3 + packages/astro/src/bundled.ts | 1 - packages/astro/src/client/index.ts | 60 +------------------ packages/astro/src/globals.d.ts | 1 - packages/astro/src/index.ts | 6 +- packages/astro/src/integration/bundled.ts | 5 -- .../src/integration/create-integration.ts | 12 +--- packages/astro/src/integration/index.ts | 5 -- packages/astro/src/internal/bundled.ts | 13 ---- .../create-clerk-instance.ts} | 37 +++++++----- .../create-injection-script-runner.ts | 2 +- packages/astro/src/internal/index.ts | 2 +- .../mount-clerk-astro-js-components.ts | 0 .../src/{client => internal}/run-once.ts | 0 .../astro/src/{client => internal}/types.ts | 0 .../src/{client => }/react/SignInButton.tsx | 0 .../src/{client => }/react/SignOutButton.tsx | 2 +- .../src/{client => }/react/SignUpButton.tsx | 0 .../{client => }/react/controlComponents.tsx | 2 +- .../astro/src/{client => }/react/hooks.ts | 4 +- .../astro/src/{client => }/react/index.ts | 0 .../astro/src/{client => }/react/types.ts | 0 .../src/{client => }/react/uiComponents.tsx | 0 .../astro/src/{client => }/react/utils.tsx | 2 +- packages/astro/src/server/clerk-middleware.ts | 4 +- packages/astro/tsup.config.ts | 7 +-- 35 files changed, 54 insertions(+), 158 deletions(-) delete mode 100644 packages/astro/client/react/package.json create mode 100644 packages/astro/react/package.json delete mode 100644 packages/astro/src/bundled.ts delete mode 100644 packages/astro/src/integration/bundled.ts delete mode 100644 packages/astro/src/integration/index.ts delete mode 100644 packages/astro/src/internal/bundled.ts rename packages/astro/src/{client/bundled.ts => internal/create-clerk-instance.ts} (50%) rename packages/astro/src/{client => internal}/mount-clerk-astro-js-components.ts (100%) rename packages/astro/src/{client => internal}/run-once.ts (100%) rename packages/astro/src/{client => internal}/types.ts (100%) rename packages/astro/src/{client => }/react/SignInButton.tsx (100%) rename packages/astro/src/{client => }/react/SignOutButton.tsx (94%) rename packages/astro/src/{client => }/react/SignUpButton.tsx (100%) rename packages/astro/src/{client => }/react/controlComponents.tsx (97%) rename packages/astro/src/{client => }/react/hooks.ts (98%) rename packages/astro/src/{client => }/react/index.ts (100%) rename packages/astro/src/{client => }/react/types.ts (100%) rename packages/astro/src/{client => }/react/uiComponents.tsx (100%) rename packages/astro/src/{client => }/react/utils.tsx (97%) diff --git a/integration/templates/astro-node/src/components/SignOutReact.tsx b/integration/templates/astro-node/src/components/SignOutReact.tsx index 19a2d1a7c4c..37f46e88367 100644 --- a/integration/templates/astro-node/src/components/SignOutReact.tsx +++ b/integration/templates/astro-node/src/components/SignOutReact.tsx @@ -1,4 +1,4 @@ -import { useAuth } from '@clerk/astro/client/react'; +import { useAuth } from '@clerk/astro/react'; import React from 'react'; import { type PropsWithChildren } from 'react'; diff --git a/integration/templates/astro-node/src/components/page-with-user.tsx b/integration/templates/astro-node/src/components/page-with-user.tsx index 547c01ee7b9..dea0e96f044 100644 --- a/integration/templates/astro-node/src/components/page-with-user.tsx +++ b/integration/templates/astro-node/src/components/page-with-user.tsx @@ -1,5 +1,5 @@ import React, { type PropsWithChildren, useSyncExternalStore } from 'react'; -import { UserProfile } from '@clerk/astro/client/react'; +import { UserProfile } from '@clerk/astro/react'; import { $userStore } from '@clerk/astro/client/stores'; export function PageWithUser({ children }: PropsWithChildren) { diff --git a/integration/templates/astro-node/src/layouts/react/Layout.astro b/integration/templates/astro-node/src/layouts/react/Layout.astro index 84f6aedcff8..2f076c64d38 100644 --- a/integration/templates/astro-node/src/layouts/react/Layout.astro +++ b/integration/templates/astro-node/src/layouts/react/Layout.astro @@ -5,7 +5,7 @@ interface Props { const { title } = Astro.props; -import { SignedIn, SignedOut, UserButton } from "@clerk/astro/client/react"; +import { SignedIn, SignedOut, UserButton } from "@clerk/astro/react"; import { LanguagePicker } from "../../components/LanguagePicker"; --- diff --git a/integration/templates/astro-node/src/pages/react/index.astro b/integration/templates/astro-node/src/pages/react/index.astro index fe5b85630f0..a16549eea03 100644 --- a/integration/templates/astro-node/src/pages/react/index.astro +++ b/integration/templates/astro-node/src/pages/react/index.astro @@ -3,7 +3,7 @@ import Layout from "../../layouts/react/Layout.astro"; import Card from "../../components/Card.astro"; import SignOutButton from "../../lib/astro-components/SignOutButton.astro"; -import { SignedIn, SignedOut, OrganizationSwitcher } from "@clerk/astro/client/react"; +import { SignedIn, SignedOut, OrganizationSwitcher } from "@clerk/astro/react"; --- diff --git a/integration/templates/astro-node/src/pages/react/only-admins.astro b/integration/templates/astro-node/src/pages/react/only-admins.astro index fa82e45d5bc..111308d7b75 100644 --- a/integration/templates/astro-node/src/pages/react/only-admins.astro +++ b/integration/templates/astro-node/src/pages/react/only-admins.astro @@ -1,5 +1,5 @@ --- -import { Protect } from "@clerk/astro/client/react"; +import { Protect } from "@clerk/astro/react"; import Layout from "../../layouts/react/Layout.astro"; --- diff --git a/integration/templates/astro-node/src/pages/react/only-members.astro b/integration/templates/astro-node/src/pages/react/only-members.astro index 76fe4c5e74a..bd4ebd0343c 100644 --- a/integration/templates/astro-node/src/pages/react/only-members.astro +++ b/integration/templates/astro-node/src/pages/react/only-members.astro @@ -1,5 +1,5 @@ --- -import { Protect } from "@clerk/astro/client/react"; +import { Protect } from "@clerk/astro/react"; import Layout from "../../layouts/react/Layout.astro"; --- diff --git a/integration/templates/astro-node/src/pages/react/sign-in.astro b/integration/templates/astro-node/src/pages/react/sign-in.astro index 90b2bf3e89b..fc99e1473e8 100644 --- a/integration/templates/astro-node/src/pages/react/sign-in.astro +++ b/integration/templates/astro-node/src/pages/react/sign-in.astro @@ -1,5 +1,5 @@ --- -import { SignIn } from "@clerk/astro/client/react"; +import { SignIn } from "@clerk/astro/react"; import Layout from "../../layouts/react/Layout.astro"; --- diff --git a/packages/astro/client/react/package.json b/packages/astro/client/react/package.json deleted file mode 100644 index bdf27224fca..00000000000 --- a/packages/astro/client/react/package.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "main": "../../dist/client/react/index.js" -} diff --git a/packages/astro/package.json b/packages/astro/package.json index f46f5d41afe..c08bd3146be 100644 --- a/packages/astro/package.json +++ b/packages/astro/package.json @@ -50,9 +50,9 @@ "types": "./dist/index.d.ts", "import": "./dist/index.js" }, - "./client/react": { - "types": "./dist/client/react/index.d.ts", - "import": "./dist/client/react/index.js" + "./react": { + "types": "./dist/react/index.d.ts", + "import": "./dist/react/index.js" }, "./client/stores": { "types": "./dist/client/stores/index.d.ts", @@ -62,34 +62,14 @@ "types": "./dist/client/index.d.ts", "import": "./dist/client/index.js" }, - "./client/bundled": { - "types": "./dist/client/bundled.d.ts", - "import": "./dist/client/bundled.js" - }, - "./integration": { - "types": "./dist/integration/index.d.ts", - "import": "./dist/integration/index.js" - }, - "./integration/bundled": { - "types": "./dist/integration/bundled.d.ts", - "import": "./dist/integration/bundled.js" - }, "./internal": { "types": "./dist/internal/index.d.ts", "import": "./dist/internal/index.js" }, - "./internal/bundled": { - "types": "./dist/internal/bundled.d.ts", - "import": "./dist/internal/bundled.js" - }, "./server": { "types": "./dist/server/index.d.ts", "import": "./dist/server/index.js" }, - "./bundled": { - "types": "./dist/bundled.d.ts", - "import": "./dist/bundled.js" - }, "./env": "./env.d.ts", "./components/control": "./components/control/index.ts", "./components/control/*": "./components/control/*", @@ -98,6 +78,7 @@ "./components/unstyled": "./components/unstyled/index.ts", "./components/unstyled/*": "./components/unstyled/*", "./components/*": "./components/*", + "./components": "./components/index.ts", "./package.json": "./package.json" }, "imports": { diff --git a/packages/astro/react/package.json b/packages/astro/react/package.json new file mode 100644 index 00000000000..282e8e8b258 --- /dev/null +++ b/packages/astro/react/package.json @@ -0,0 +1,3 @@ +{ + "main": "../../dist/react/index.js" +} diff --git a/packages/astro/src/bundled.ts b/packages/astro/src/bundled.ts deleted file mode 100644 index d0650ab41cc..00000000000 --- a/packages/astro/src/bundled.ts +++ /dev/null @@ -1 +0,0 @@ -export { default } from './integration/bundled'; diff --git a/packages/astro/src/client/index.ts b/packages/astro/src/client/index.ts index ffe5b8c612b..b5ddb3aba78 100644 --- a/packages/astro/src/client/index.ts +++ b/packages/astro/src/client/index.ts @@ -1,59 +1 @@ -import { waitForClerkScript } from '../internal/utils/loadClerkJSScript'; -import { $clerk, $csrState } from '../stores/internal'; -import type { AstroClerkIntegrationParams, AstroClerkUpdateOptions } from '../types'; -import { mountAllClerkAstroJSComponents } from './mount-clerk-astro-js-components'; -import { runOnce } from './run-once'; - -let initOptions: AstroClerkIntegrationParams | undefined; - -/** - * Prevents firing clerk.load multiple times - */ -export const createClerkInstance = runOnce(createClerkInstanceInternal); - -export async function createClerkInstanceInternal(options?: AstroClerkIntegrationParams) { - let clerkJSInstance = window.Clerk; - if (!clerkJSInstance) { - await waitForClerkScript(); - - if (!window.Clerk) { - throw new Error('Failed to download latest ClerkJS. Contact support@clerk.com.'); - } - clerkJSInstance = window.Clerk; - } - - if (!$clerk.get()) { - // @ts-ignore - $clerk.set(clerkJSInstance); - } - - initOptions = options; - // TODO: Update Clerk type from @clerk/types to include this method - return (clerkJSInstance as any) - .load(options) - .then(() => { - $csrState.setKey('isLoaded', true); - - mountAllClerkAstroJSComponents(); - - clerkJSInstance.addListener(payload => { - $csrState.setKey('client', payload.client); - $csrState.setKey('user', payload.user); - $csrState.setKey('session', payload.session); - $csrState.setKey('organization', payload.organization); - }); - }) - .catch(() => {}); -} - -export function updateClerkOptions(options: AstroClerkUpdateOptions) { - const clerk = $clerk.get(); - if (!clerk) { - throw new Error('Missing clerk instance'); - } - // TODO: Update Clerk type from @clerk/types to include this method - void (clerk as any).__unstable__updateProps({ - options: { ...initOptions, ...options }, - appearance: { ...initOptions?.appearance, ...options.appearance }, - }); -} +export { updateClerkOptions } from '../internal/create-clerk-instance'; diff --git a/packages/astro/src/globals.d.ts b/packages/astro/src/globals.d.ts index 9d72ed5414e..f14f854fd7d 100644 --- a/packages/astro/src/globals.d.ts +++ b/packages/astro/src/globals.d.ts @@ -3,5 +3,4 @@ export {}; declare global { const PACKAGE_NAME: string; const PACKAGE_VERSION: string; - const __HOTLOAD__: string; } diff --git a/packages/astro/src/index.ts b/packages/astro/src/index.ts index 0d7f7ffa1d3..ccccb65ca9d 100644 --- a/packages/astro/src/index.ts +++ b/packages/astro/src/index.ts @@ -1 +1,5 @@ -export { default } from './integration'; +import { createIntegration } from './integration/create-integration'; + +export default createIntegration({ + mode: 'hotload', +}); diff --git a/packages/astro/src/integration/bundled.ts b/packages/astro/src/integration/bundled.ts deleted file mode 100644 index 516eefdd525..00000000000 --- a/packages/astro/src/integration/bundled.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { createIntegration } from './create-integration'; - -export default createIntegration({ - mode: 'bundled', -}); diff --git a/packages/astro/src/integration/create-integration.ts b/packages/astro/src/integration/create-integration.ts index d695e767d03..ad71d4757bc 100644 --- a/packages/astro/src/integration/create-integration.ts +++ b/packages/astro/src/integration/create-integration.ts @@ -14,10 +14,8 @@ type HotloadAstroClerkIntegrationParams = AstroClerkIntegrationParams & { clerkJSVersion?: string; }; -function createIntegration

({ mode }: P) { - return ( - params?: P['mode'] extends 'hotload' ? HotloadAstroClerkIntegrationParams : AstroClerkIntegrationParams, - ): AstroIntegration => { +function createIntegration() { + return (params?: Params): AstroIntegration => { const { proxyUrl, isSatellite, domain, signInUrl, signUpUrl } = params || {}; // These are not provided when the "bundled" integration is used @@ -50,10 +48,7 @@ function createIntegration

({ mode }: }, }; - const defaultBundledImportPath = `${packageName}/internal/bundled`; - - const buildImportPath = - mode === 'bundled' ? defaultBundledImportPath : defaultBundledImportPath.replace('/bundled', ''); + const buildImportPath = `${packageName}/internal`; // Set params as envs do backend code has access to them updateConfig({ @@ -72,7 +67,6 @@ function createIntegration

({ mode }: ...buildEnvVarFromOption(clerkJSUrl, 'PUBLIC_CLERK_JS_URL'), ...buildEnvVarFromOption(clerkJSVariant, 'PUBLIC_CLERK_JS_VARIANT'), ...buildEnvVarFromOption(clerkJSVersion, 'PUBLIC_CLERK_JS_VERSION'), - __HOTLOAD__: mode === 'hotload', }, ssr: { diff --git a/packages/astro/src/integration/index.ts b/packages/astro/src/integration/index.ts deleted file mode 100644 index 77f3eaaa6b7..00000000000 --- a/packages/astro/src/integration/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { createIntegration } from './create-integration'; - -export default createIntegration({ - mode: 'hotload', -}); diff --git a/packages/astro/src/internal/bundled.ts b/packages/astro/src/internal/bundled.ts deleted file mode 100644 index 0b932e9f84b..00000000000 --- a/packages/astro/src/internal/bundled.ts +++ /dev/null @@ -1,13 +0,0 @@ -/** - * The following code will be used in order to be injected as script via the astro integration. - * F.e. - * - * injectScript('before-hydration', `...`) - */ - -import { createClerkInstance } from '../client/bundled'; -import { createInjectionScriptRunner } from './create-injection-script-runner'; - -const runInjectionScript = createInjectionScriptRunner(createClerkInstance); - -export { runInjectionScript }; diff --git a/packages/astro/src/client/bundled.ts b/packages/astro/src/internal/create-clerk-instance.ts similarity index 50% rename from packages/astro/src/client/bundled.ts rename to packages/astro/src/internal/create-clerk-instance.ts index b2a7b9380d9..a3442ac23a5 100644 --- a/packages/astro/src/client/bundled.ts +++ b/packages/astro/src/internal/create-clerk-instance.ts @@ -1,30 +1,35 @@ -import { Clerk } from '@clerk/clerk-js'; - +import { waitForClerkScript } from '../internal/utils/loadClerkJSScript'; import { $clerk, $csrState } from '../stores/internal'; -import type { AstroClerkCreateInstanceParams, AstroClerkUpdateOptions } from '../types'; +import type { AstroClerkIntegrationParams, AstroClerkUpdateOptions } from '../types'; import { mountAllClerkAstroJSComponents } from './mount-clerk-astro-js-components'; import { runOnce } from './run-once'; -import type { CreateClerkInstanceInternalFn } from './types'; -let initOptions: AstroClerkCreateInstanceParams | undefined; +let initOptions: AstroClerkIntegrationParams | undefined; /** * Prevents firing clerk.load multiple times */ -export const createClerkInstance: CreateClerkInstanceInternalFn = runOnce(createClerkInstanceInternal); +const createClerkInstance = runOnce(createClerkInstanceInternal); -export function createClerkInstanceInternal(options?: AstroClerkCreateInstanceParams) { - let clerkJSInstance = window.Clerk as unknown as Clerk; +async function createClerkInstanceInternal(options?: AstroClerkIntegrationParams) { + let clerkJSInstance = window.Clerk; if (!clerkJSInstance) { - clerkJSInstance = new Clerk(options!.publishableKey); + await waitForClerkScript(); + + if (!window.Clerk) { + throw new Error('Failed to download latest ClerkJS. Contact support@clerk.com.'); + } + clerkJSInstance = window.Clerk; + } + + if (!$clerk.get()) { // @ts-ignore $clerk.set(clerkJSInstance); - // @ts-ignore - window.Clerk = clerkJSInstance; } initOptions = options; - return clerkJSInstance + // TODO: Update Clerk type from @clerk/types to include this method + return (clerkJSInstance as any) .load(options) .then(() => { $csrState.setKey('isLoaded', true); @@ -41,14 +46,16 @@ export function createClerkInstanceInternal(options?: AstroClerkCreateInstancePa .catch(() => {}); } -export function updateClerkOptions(options: AstroClerkUpdateOptions) { +function updateClerkOptions(options: AstroClerkUpdateOptions) { const clerk = $clerk.get(); if (!clerk) { throw new Error('Missing clerk instance'); } - //@ts-ignore - clerk.__unstable__updateProps({ + // TODO: Update Clerk type from @clerk/types to include this method + void (clerk as any).__unstable__updateProps({ options: { ...initOptions, ...options }, appearance: { ...initOptions?.appearance, ...options.appearance }, }); } + +export { createClerkInstance, updateClerkOptions }; diff --git a/packages/astro/src/internal/create-injection-script-runner.ts b/packages/astro/src/internal/create-injection-script-runner.ts index ee3268c9186..e07b298edc0 100644 --- a/packages/astro/src/internal/create-injection-script-runner.ts +++ b/packages/astro/src/internal/create-injection-script-runner.ts @@ -1,7 +1,7 @@ -import type { CreateClerkInstanceInternalFn } from '../client/types'; import { $initialState } from '../stores/internal'; import type { AstroClerkIntegrationParams } from '../types'; import { mergeEnvVarsWithParams } from './merge-env-vars-with-params'; +import type { CreateClerkInstanceInternalFn } from './types'; /** * @internal diff --git a/packages/astro/src/internal/index.ts b/packages/astro/src/internal/index.ts index 72e6d8e25e6..c00256cf3f8 100644 --- a/packages/astro/src/internal/index.ts +++ b/packages/astro/src/internal/index.ts @@ -5,7 +5,7 @@ * injectScript('before-hydration', `...`) */ -import { createClerkInstance } from '../client'; +import { createClerkInstance } from './create-clerk-instance'; import { createInjectionScriptRunner } from './create-injection-script-runner'; const runInjectionScript = createInjectionScriptRunner(createClerkInstance); diff --git a/packages/astro/src/client/mount-clerk-astro-js-components.ts b/packages/astro/src/internal/mount-clerk-astro-js-components.ts similarity index 100% rename from packages/astro/src/client/mount-clerk-astro-js-components.ts rename to packages/astro/src/internal/mount-clerk-astro-js-components.ts diff --git a/packages/astro/src/client/run-once.ts b/packages/astro/src/internal/run-once.ts similarity index 100% rename from packages/astro/src/client/run-once.ts rename to packages/astro/src/internal/run-once.ts diff --git a/packages/astro/src/client/types.ts b/packages/astro/src/internal/types.ts similarity index 100% rename from packages/astro/src/client/types.ts rename to packages/astro/src/internal/types.ts diff --git a/packages/astro/src/client/react/SignInButton.tsx b/packages/astro/src/react/SignInButton.tsx similarity index 100% rename from packages/astro/src/client/react/SignInButton.tsx rename to packages/astro/src/react/SignInButton.tsx diff --git a/packages/astro/src/client/react/SignOutButton.tsx b/packages/astro/src/react/SignOutButton.tsx similarity index 94% rename from packages/astro/src/client/react/SignOutButton.tsx rename to packages/astro/src/react/SignOutButton.tsx index efe3abf4722..c61a3eb527b 100644 --- a/packages/astro/src/client/react/SignOutButton.tsx +++ b/packages/astro/src/react/SignOutButton.tsx @@ -17,7 +17,7 @@ export const SignOutButton = withClerk( const clickHandler = () => clerk?.signOut({ redirectUrl, sessionId }); const wrappedChildClickHandler: React.MouseEventHandler = async e => { - await safeExecute((child as any).props.onClick)(e); + await safeExecute(child.props.onClick)(e); return clickHandler(); }; diff --git a/packages/astro/src/client/react/SignUpButton.tsx b/packages/astro/src/react/SignUpButton.tsx similarity index 100% rename from packages/astro/src/client/react/SignUpButton.tsx rename to packages/astro/src/react/SignUpButton.tsx diff --git a/packages/astro/src/client/react/controlComponents.tsx b/packages/astro/src/react/controlComponents.tsx similarity index 97% rename from packages/astro/src/client/react/controlComponents.tsx rename to packages/astro/src/react/controlComponents.tsx index 07280cc491c..71c2ed41dad 100644 --- a/packages/astro/src/client/react/controlComponents.tsx +++ b/packages/astro/src/react/controlComponents.tsx @@ -1,7 +1,7 @@ import type { CheckAuthorizationWithCustomPermissions } from '@clerk/types'; import type { PropsWithChildren } from 'react'; -import type { ProtectComponentDefaultProps } from '../../types'; +import type { ProtectComponentDefaultProps } from '../types'; import { useAuth } from './hooks'; export function SignedOut(props: PropsWithChildren) { diff --git a/packages/astro/src/client/react/hooks.ts b/packages/astro/src/react/hooks.ts similarity index 98% rename from packages/astro/src/client/react/hooks.ts rename to packages/astro/src/react/hooks.ts index f7b97e723d7..e8b99e1c358 100644 --- a/packages/astro/src/client/react/hooks.ts +++ b/packages/astro/src/react/hooks.ts @@ -12,8 +12,8 @@ import { useCallback, useSyncExternalStore } from 'react'; // @ts-ignore import { authAsyncStorage } from '#async-local-storage'; -import { $authStore } from '../../stores/external'; -import { $clerk, $csrState } from '../../stores/internal'; +import { $authStore } from '../stores/external'; +import { $clerk, $csrState } from '../stores/internal'; type CheckAuthorizationSignedOut = undefined; type CheckAuthorizationWithoutOrgOrUser = (params?: Parameters[0]) => false; diff --git a/packages/astro/src/client/react/index.ts b/packages/astro/src/react/index.ts similarity index 100% rename from packages/astro/src/client/react/index.ts rename to packages/astro/src/react/index.ts diff --git a/packages/astro/src/client/react/types.ts b/packages/astro/src/react/types.ts similarity index 100% rename from packages/astro/src/client/react/types.ts rename to packages/astro/src/react/types.ts diff --git a/packages/astro/src/client/react/uiComponents.tsx b/packages/astro/src/react/uiComponents.tsx similarity index 100% rename from packages/astro/src/client/react/uiComponents.tsx rename to packages/astro/src/react/uiComponents.tsx diff --git a/packages/astro/src/client/react/utils.tsx b/packages/astro/src/react/utils.tsx similarity index 97% rename from packages/astro/src/client/react/utils.tsx rename to packages/astro/src/react/utils.tsx index b99ed6276ec..e91422e80e5 100644 --- a/packages/astro/src/client/react/utils.tsx +++ b/packages/astro/src/react/utils.tsx @@ -2,7 +2,7 @@ import type { LoadedClerk } from '@clerk/types'; import { computed, type Store, type StoreValue } from 'nanostores'; import React from 'react'; -import { $clerk, $csrState } from '../../stores/internal'; +import { $clerk, $csrState } from '../stores/internal'; /** * This implementation of `useStore` is an alternative solution to the hook exported by nanostores diff --git a/packages/astro/src/server/clerk-middleware.ts b/packages/astro/src/server/clerk-middleware.ts index be08f6642af..989bfcb1978 100644 --- a/packages/astro/src/server/clerk-middleware.ts +++ b/packages/astro/src/server/clerk-middleware.ts @@ -279,9 +279,7 @@ async function decorateRequest( controller.enqueue(clerkAstroData); controller.enqueue(clerkSafeEnvVariables); - if (__HOTLOAD__) { - controller.enqueue(hotloadScript); - } + controller.enqueue(hotloadScript); controller.enqueue(closingHeadTag); controller.enqueue(chunk.slice(index + closingHeadTag.length)); diff --git a/packages/astro/tsup.config.ts b/packages/astro/tsup.config.ts index 67ff574cd95..d03fc8e1652 100644 --- a/packages/astro/tsup.config.ts +++ b/packages/astro/tsup.config.ts @@ -8,16 +8,11 @@ export default defineConfig(() => { clean: true, entry: [ './src/index.ts', - './src/bundled.ts', - './src/client/react/index.ts', + './src/react/index.ts', './src/client/stores/index.ts', './src/client/index.ts', - './src/client/bundled.ts', './src/server/index.ts', './src/internal/index.ts', - './src/internal/bundled.ts', - './src/integration/index.ts', - './src/integration/bundled.ts', './src/async-local-storage.client.ts', './src/async-local-storage.server.ts', ], From 75b33c6a2352858a772c2b37911752df8cfe6eb6 Mon Sep 17 00:00:00 2001 From: panteliselef Date: Fri, 12 Jul 2024 15:19:03 +0300 Subject: [PATCH 2/4] chore(astro): Add changeset --- .changeset/four-days-hammer.md | 14 ++++++++++++++ packages/astro/package.json | 1 - 2 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 .changeset/four-days-hammer.md diff --git a/.changeset/four-days-hammer.md b/.changeset/four-days-hammer.md new file mode 100644 index 00000000000..9057a46ee0d --- /dev/null +++ b/.changeset/four-days-hammer.md @@ -0,0 +1,14 @@ +--- +"@clerk/astro": patch +--- + +Simplify submodules and drop the `bunlded` variant. + +Moved +- `@clerk/astro/client/react` to `@clerk/astro/react` +Dropped +- `@clerk/astro/bundled` +- `@clerk/astro/client/bundled` +- `@clerk/astro/internal/bundled` +- `@clerk/astro/integration` +- `@clerk/astro/integration/bundled` diff --git a/packages/astro/package.json b/packages/astro/package.json index c08bd3146be..7a41bd7f079 100644 --- a/packages/astro/package.json +++ b/packages/astro/package.json @@ -78,7 +78,6 @@ "./components/unstyled": "./components/unstyled/index.ts", "./components/unstyled/*": "./components/unstyled/*", "./components/*": "./components/*", - "./components": "./components/index.ts", "./package.json": "./package.json" }, "imports": { From a62d8ff1e41984eb9d85f5264730fadae57101c9 Mon Sep 17 00:00:00 2001 From: panteliselef Date: Fri, 12 Jul 2024 15:42:33 +0300 Subject: [PATCH 3/4] fix(astro): build was failing --- packages/astro/src/index.ts | 4 +--- packages/astro/src/react/SignOutButton.tsx | 4 +++- playground/nextjs/package.json | 7 ++++++- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/packages/astro/src/index.ts b/packages/astro/src/index.ts index ccccb65ca9d..a57af01dc74 100644 --- a/packages/astro/src/index.ts +++ b/packages/astro/src/index.ts @@ -1,5 +1,3 @@ import { createIntegration } from './integration/create-integration'; -export default createIntegration({ - mode: 'hotload', -}); +export default createIntegration(); diff --git a/packages/astro/src/react/SignOutButton.tsx b/packages/astro/src/react/SignOutButton.tsx index c61a3eb527b..4d70c33349b 100644 --- a/packages/astro/src/react/SignOutButton.tsx +++ b/packages/astro/src/react/SignOutButton.tsx @@ -17,7 +17,9 @@ export const SignOutButton = withClerk( const clickHandler = () => clerk?.signOut({ redirectUrl, sessionId }); const wrappedChildClickHandler: React.MouseEventHandler = async e => { - await safeExecute(child.props.onClick)(e); + if (child && typeof child === 'object' && 'props' in child) { + await safeExecute(child.props.onClick)(e); + } return clickHandler(); }; diff --git a/playground/nextjs/package.json b/playground/nextjs/package.json index 6f78ab54c98..273823bcbff 100644 --- a/playground/nextjs/package.json +++ b/playground/nextjs/package.json @@ -11,8 +11,13 @@ "lint": "next lint" }, "dependencies": { - "@clerk/nextjs": "beta", + "@clerk/backend": "file:.yalc/@clerk/backend", + "@clerk/clerk-react": "file:.yalc/@clerk/clerk-react", + "@clerk/clerk-sdk-node": "file:.yalc/@clerk/clerk-sdk-node", + "@clerk/nextjs": "file:.yalc/@clerk/nextjs", + "@clerk/shared": "file:.yalc/@clerk/shared", "@clerk/themes": "beta", + "@clerk/types": "file:.yalc/@clerk/types", "next": "^14.1.0", "react": "^18.2.0", "react-dom": "^18.2.0" From 2dd9cdcbdbe942fcb2612e95bfd6e5c73a73d2be Mon Sep 17 00:00:00 2001 From: panteliselef Date: Fri, 12 Jul 2024 20:18:55 +0300 Subject: [PATCH 4/4] chore(astro): Merge `/client/store` into `/client` --- .changeset/four-days-hammer.md | 1 + .../templates/astro-node/src/components/page-with-user.tsx | 2 +- .../astro-node/src/lib/astro-components/SignOutButton.astro | 2 +- packages/astro/client/stores/package.json | 3 --- packages/astro/package.json | 4 ---- packages/astro/src/client/index.ts | 1 + packages/astro/src/client/stores/index.ts | 1 - packages/astro/tsup.config.ts | 1 - 8 files changed, 4 insertions(+), 11 deletions(-) delete mode 100644 packages/astro/client/stores/package.json delete mode 100644 packages/astro/src/client/stores/index.ts diff --git a/.changeset/four-days-hammer.md b/.changeset/four-days-hammer.md index 9057a46ee0d..ed99930ea93 100644 --- a/.changeset/four-days-hammer.md +++ b/.changeset/four-days-hammer.md @@ -6,6 +6,7 @@ Simplify submodules and drop the `bunlded` variant. Moved - `@clerk/astro/client/react` to `@clerk/astro/react` +- `@clerk/astro/client/stores` to `@clerk/astro/client` Dropped - `@clerk/astro/bundled` - `@clerk/astro/client/bundled` diff --git a/integration/templates/astro-node/src/components/page-with-user.tsx b/integration/templates/astro-node/src/components/page-with-user.tsx index dea0e96f044..1650b626077 100644 --- a/integration/templates/astro-node/src/components/page-with-user.tsx +++ b/integration/templates/astro-node/src/components/page-with-user.tsx @@ -1,6 +1,6 @@ import React, { type PropsWithChildren, useSyncExternalStore } from 'react'; import { UserProfile } from '@clerk/astro/react'; -import { $userStore } from '@clerk/astro/client/stores'; +import { $userStore } from '@clerk/astro/client'; export function PageWithUser({ children }: PropsWithChildren) { const user = useSyncExternalStore($userStore.listen, $userStore.get, $userStore.get); diff --git a/integration/templates/astro-node/src/lib/astro-components/SignOutButton.astro b/integration/templates/astro-node/src/lib/astro-components/SignOutButton.astro index 8a689d6858b..07371b385ac 100644 --- a/integration/templates/astro-node/src/lib/astro-components/SignOutButton.astro +++ b/integration/templates/astro-node/src/lib/astro-components/SignOutButton.astro @@ -12,7 +12,7 @@ interface Props extends SignOutOptions {