From 954c181dd9470efbd3bfbd9ef28a76d56ffdf651 Mon Sep 17 00:00:00 2001 From: wobsoriano Date: Wed, 24 Jul 2024 12:56:07 -0700 Subject: [PATCH 1/2] feat(astro): Add opt-out support for SDK telemetry --- packages/astro/src/env.d.ts | 2 ++ packages/astro/src/integration/create-integration.ts | 4 ++-- packages/astro/src/internal/merge-env-vars-with-params.ts | 7 +++++++ packages/astro/src/server/clerk-client.ts | 4 ++++ packages/astro/src/server/get-safe-env.ts | 5 ++++- packages/astro/src/types.ts | 1 - 6 files changed, 19 insertions(+), 4 deletions(-) diff --git a/packages/astro/src/env.d.ts b/packages/astro/src/env.d.ts index 37338fad5a4..57dc7096ab1 100644 --- a/packages/astro/src/env.d.ts +++ b/packages/astro/src/env.d.ts @@ -16,6 +16,8 @@ interface InternalEnv { readonly PUBLIC_CLERK_PROXY_URL?: string; readonly PUBLIC_CLERK_SIGN_IN_URL?: string; readonly PUBLIC_CLERK_SIGN_UP_URL?: string; + readonly PUBLIC_CLERK_TELEMETRY_DISABLED?: string; + readonly PUBLIC_CLERK_TELEMETRY_DEBUG?: string; } interface ImportMeta { diff --git a/packages/astro/src/integration/create-integration.ts b/packages/astro/src/integration/create-integration.ts index ad71d4757bc..246bba537af 100644 --- a/packages/astro/src/integration/create-integration.ts +++ b/packages/astro/src/integration/create-integration.ts @@ -50,12 +50,12 @@ function createIntegration() const buildImportPath = `${packageName}/internal`; - // Set params as envs do backend code has access to them + // Set params as envs so backend code has access to them updateConfig({ vite: { define: { /** - * Convert the integration params to environment variable in order for be readable from the server + * Convert the integration params to environment variable in order for it to be readable from the server */ ...buildEnvVarFromOption(signInUrl, 'PUBLIC_CLERK_SIGN_IN_URL'), ...buildEnvVarFromOption(signUpUrl, 'PUBLIC_CLERK_SIGN_UP_URL'), diff --git a/packages/astro/src/internal/merge-env-vars-with-params.ts b/packages/astro/src/internal/merge-env-vars-with-params.ts index 2a428faf245..c5498c1e0da 100644 --- a/packages/astro/src/internal/merge-env-vars-with-params.ts +++ b/packages/astro/src/internal/merge-env-vars-with-params.ts @@ -1,3 +1,5 @@ +import { isTruthy } from '@clerk/shared/underscore'; + import type { AstroClerkIntegrationParams } from '../types'; /** @@ -11,6 +13,7 @@ const mergeEnvVarsWithParams = (params?: AstroClerkIntegrationParams & { publish proxyUrl: paramProxy, domain: paramDomain, publishableKey: paramPublishableKey, + telemetry: paramTelemetry, ...rest } = params || {}; @@ -21,6 +24,10 @@ const mergeEnvVarsWithParams = (params?: AstroClerkIntegrationParams & { publish proxyUrl: paramProxy || import.meta.env.PUBLIC_CLERK_PROXY_URL, domain: paramDomain || import.meta.env.PUBLIC_CLERK_DOMAIN, publishableKey: paramPublishableKey || import.meta.env.PUBLIC_CLERK_PUBLISHABLE_KEY || '', + telemetry: paramTelemetry || { + disabled: isTruthy(import.meta.env.PUBLIC_CLERK_TELEMETRY_DISABLED), + debug: isTruthy(import.meta.env.PUBLIC_CLERK_TELEMETRY_DEBUG), + }, ...rest, }; }; diff --git a/packages/astro/src/server/clerk-client.ts b/packages/astro/src/server/clerk-client.ts index a1e7178cab4..03b011e8f3e 100644 --- a/packages/astro/src/server/clerk-client.ts +++ b/packages/astro/src/server/clerk-client.ts @@ -21,6 +21,10 @@ const createClerkClientWithOptions: CreateClerkClientWithOptions = (context, opt // eslint-disable-next-line turbo/no-undeclared-env-vars environment: import.meta.env.MODE, }, + telemetry: { + disabled: getSafeEnv(context).telemetryDisabled, + debug: getSafeEnv(context).telemetryDebug, + }, ...options, }); diff --git a/packages/astro/src/server/get-safe-env.ts b/packages/astro/src/server/get-safe-env.ts index e3666d664c4..ee890f95095 100644 --- a/packages/astro/src/server/get-safe-env.ts +++ b/packages/astro/src/server/get-safe-env.ts @@ -1,10 +1,11 @@ +import { isTruthy } from '@clerk/shared/underscore'; import type { APIContext } from 'astro'; type ContextOrLocals = APIContext | APIContext['locals']; /** * @internal - * Isomorphic handler for reading environemnt variables defined from Vite or are injected in the request context (CF Pages) + * Isomorphic handler for reading environment variables defined from Vite or are injected in the request context (CF Pages) */ function getContextEnvVar(envVarName: keyof InternalEnv, contextOrLocals: ContextOrLocals): string | undefined { const locals = 'locals' in contextOrLocals ? contextOrLocals.locals : contextOrLocals; @@ -33,6 +34,8 @@ function getSafeEnv(context: ContextOrLocals) { clerkJsVersion: getContextEnvVar('PUBLIC_CLERK_JS_VERSION', context), apiVersion: getContextEnvVar('CLERK_API_VERSION', context), apiUrl: getContextEnvVar('CLERK_API_URL', context), + telemetryDisabled: isTruthy(getContextEnvVar('PUBLIC_CLERK_TELEMETRY_DISABLED', context)), + telemetryDebug: isTruthy(getContextEnvVar('PUBLIC_CLERK_TELEMETRY_DEBUG', context)), }; } diff --git a/packages/astro/src/types.ts b/packages/astro/src/types.ts index 4ab798ddd1e..17f91480cf0 100644 --- a/packages/astro/src/types.ts +++ b/packages/astro/src/types.ts @@ -13,7 +13,6 @@ type AstroClerkIntegrationParams = Without< ClerkOptions, | 'isSatellite' | 'sdkMetadata' - | 'telemetry' | 'standardBrowser' | 'selectInitialSession' | 'routerReplace' From 6673e8449b38110723102817ee722b6e1fcec745 Mon Sep 17 00:00:00 2001 From: Robert Soriano Date: Wed, 24 Jul 2024 13:07:59 -0700 Subject: [PATCH 2/2] chore(astro): Add changeset --- .changeset/four-pots-type.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/four-pots-type.md diff --git a/.changeset/four-pots-type.md b/.changeset/four-pots-type.md new file mode 100644 index 00000000000..63da2534878 --- /dev/null +++ b/.changeset/four-pots-type.md @@ -0,0 +1,5 @@ +--- +"@clerk/astro": patch +--- + +Introduce option to opt-out of telemetry data collection