From 2f01863d406b16e29b46a75df8bbe7ff53c76fe8 Mon Sep 17 00:00:00 2001 From: panteliselef Date: Thu, 15 Aug 2024 20:23:13 +0300 Subject: [PATCH] chore(astro): Remove dependency `@clerk/clerk-js` Since clerk-js is being hotloaded it is unnecessary to keep the npm package as a dependency --- .changeset/nine-shoes-hug.md | 7 +++++++ package-lock.json | 1 - packages/astro/package.json | 1 - .../astro/src/internal/create-clerk-instance.ts | 2 +- packages/astro/src/internal/run-once.ts | 4 +--- packages/astro/src/types.ts | 15 ++++++++++++++- 6 files changed, 23 insertions(+), 7 deletions(-) create mode 100644 .changeset/nine-shoes-hug.md diff --git a/.changeset/nine-shoes-hug.md b/.changeset/nine-shoes-hug.md new file mode 100644 index 00000000000..0b8ffb41cdc --- /dev/null +++ b/.changeset/nine-shoes-hug.md @@ -0,0 +1,7 @@ +--- +"@clerk/astro": patch +--- + +Remove dependency `@clerk/clerk-js`. + +Since clerk-js is being hotloaded it is unnecessary to keep the npm package as a dependency. diff --git a/package-lock.json b/package-lock.json index 26e4f9083fb..27922d27487 100644 --- a/package-lock.json +++ b/package-lock.json @@ -51854,7 +51854,6 @@ "license": "MIT", "dependencies": { "@clerk/backend": "1.6.3", - "@clerk/clerk-js": "5.14.1", "@clerk/shared": "2.5.1", "@clerk/types": "4.13.1", "nanoid": "5.0.7", diff --git a/packages/astro/package.json b/packages/astro/package.json index aa0e767542b..4c571c1f880 100644 --- a/packages/astro/package.json +++ b/packages/astro/package.json @@ -80,7 +80,6 @@ }, "dependencies": { "@clerk/backend": "1.6.3", - "@clerk/clerk-js": "5.14.1", "@clerk/shared": "2.5.1", "@clerk/types": "4.13.1", "nanoid": "5.0.7", diff --git a/packages/astro/src/internal/create-clerk-instance.ts b/packages/astro/src/internal/create-clerk-instance.ts index dd72be8d929..6d64083b90b 100644 --- a/packages/astro/src/internal/create-clerk-instance.ts +++ b/packages/astro/src/internal/create-clerk-instance.ts @@ -72,7 +72,7 @@ function updateClerkOptions(options: AstroClerkUpdateOptions) { if (!clerk) { throw new Error('Missing clerk instance'); } - // TODO: Update Clerk type from @clerk/types to include this method + // `__unstable__updateProps` is not exposed as public API from `@clerk/types` void (clerk as any).__unstable__updateProps({ options: { ...initOptions, ...options }, appearance: { ...initOptions?.appearance, ...options.appearance }, diff --git a/packages/astro/src/internal/run-once.ts b/packages/astro/src/internal/run-once.ts index f36149f9c2f..c1a89915cf0 100644 --- a/packages/astro/src/internal/run-once.ts +++ b/packages/astro/src/internal/run-once.ts @@ -1,5 +1,3 @@ -import type { Clerk } from '@clerk/clerk-js'; - import { invokeClerkAstroJSFunctions } from './invoke-clerk-astro-js-functions'; import { mountAllClerkAstroJSComponents } from './mount-clerk-astro-js-components'; import type { CreateClerkInstanceInternalFn } from './types'; @@ -12,7 +10,7 @@ const runOnce = (onFirst: CreateClerkInstanceInternalFn) => { let hasRun = false; return (params: Parameters[0]) => { if (hasRun) { - const clerkJSInstance = window.Clerk as Clerk; + const clerkJSInstance = window.Clerk; return new Promise(res => { if (!clerkJSInstance) { return res(false); diff --git a/packages/astro/src/types.ts b/packages/astro/src/types.ts index c9e9897e128..9462b751ec2 100644 --- a/packages/astro/src/types.ts +++ b/packages/astro/src/types.ts @@ -1,4 +1,4 @@ -import type { ClerkOptions, MultiDomainAndOrProxyPrimitives, Without } from '@clerk/types'; +import type { Clerk, ClerkOptions, ClientResource, MultiDomainAndOrProxyPrimitives, Without } from '@clerk/types'; type AstroClerkUpdateOptions = Pick; @@ -18,10 +18,23 @@ type AstroClerkIntegrationParams = Without< type AstroClerkCreateInstanceParams = AstroClerkIntegrationParams & { publishableKey: string }; +// Copied from `@clerk/clerk-react` +export interface HeadlessBrowserClerk extends Clerk { + load: (opts?: Without) => Promise; + updateClient: (client: ClientResource) => void; +} + +// Copied from `@clerk/clerk-react` +export interface BrowserClerk extends HeadlessBrowserClerk { + onComponentsReady: Promise; + components: any; +} + declare global { interface Window { __astro_clerk_component_props: Map>>; __astro_clerk_function_props: Map>>; + Clerk: BrowserClerk; } }