diff --git a/README.md b/README.md index 19b3bfa..e24d53b 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ More packages will be added in the future to support additional platforms and fr import { SupaClient } from '@supashiphq/javascript-sdk' const client = new SupaClient({ - apiKey: 'api-key', + sdkKey: 'sdk-key', environment: 'production', context: { userId: '123', diff --git a/packages/javascript/README.md b/packages/javascript/README.md index 45d6a7b..572f844 100644 --- a/packages/javascript/README.md +++ b/packages/javascript/README.md @@ -29,7 +29,7 @@ const features = { // Create client with features const client = new SupaClient({ - apiKey: 'your-api-key', + sdkKey: 'your-sdk-key', environment: 'production', features, context: { @@ -96,7 +96,7 @@ const features: FeaturesWithFallbacks = { } const client = new SupaClient({ - apiKey: 'your-api-key', + sdkKey: 'your-sdk-key', environment: 'production', features, context: {}, @@ -123,7 +123,7 @@ new SupaClient(config: SupaClientConfig) | Option | Type | Required | Description | | ---------------------------- | ----------------------- | -------- | ---------------------------------------------------------------------------------- | -| `apiKey` | `string` | Yes | Your Supaship API key (Project Settings -> API Keys) | +| `sdkKey` | `string` | Yes | Your Supaship SDK key (Project Settings -> SDK Keys) | | `environment` | `string` | Yes | Environment slug (e.g., `production`, `staging`, `development`) | | `features` | `FeaturesWithFallbacks` | Yes | Feature definitions with fallback values | | `context` | `FeatureContext` | Yes | Default context for feature evaluation | @@ -143,7 +143,7 @@ Use `sensitiveContextProperties` to hash selected context property values on the ```typescript const client = new SupaClient({ - apiKey: 'your-api-key', + sdkKey: 'your-sdk-key', environment: 'production', features, context: { @@ -200,7 +200,7 @@ const features = { } satisfies FeaturesWithFallbacks const client = new SupaClient({ - apiKey: 'key', + sdkKey: 'key', environment: 'production', features, context: {}, @@ -246,7 +246,7 @@ const features = { } satisfies FeaturesWithFallbacks const client = new SupaClient({ - apiKey: 'key', + sdkKey: 'key', environment: 'prod', features, context: {}, @@ -352,7 +352,7 @@ import { SupaClient } from '@supashiphq/javascript-sdk' import { features } from './features' export const client = new SupaClient({ - apiKey: process.env.SUPASHIP_API_KEY!, + sdkKey: process.env.SUPASHIP_SDK_KEY!, environment: process.env.ENVIRONMENT!, features, context: {}, @@ -383,7 +383,7 @@ const features: FeaturesWithFallbacks = { } const client = new SupaClient({ - apiKey: 'key', + sdkKey: 'key', environment: 'prod', features, context: {}, @@ -401,7 +401,7 @@ const theme = config.theme // ✅ Type-safe, inferred as 'light' literal ```typescript const client = new SupaClient({ - apiKey: 'your-api-key', + sdkKey: 'your-sdk-key', environment: 'production', features, context: { @@ -456,7 +456,7 @@ const features = { // ✅ Automatic (recommended) - Toolbar auto-enabled in browser with 'auto' mode const client = new SupaClient({ - apiKey: 'your-api-key', + sdkKey: 'your-sdk-key', environment: 'development', features, context: {}, @@ -464,7 +464,7 @@ const client = new SupaClient({ // 🎨 Custom configuration const client = new SupaClient({ - apiKey: 'your-api-key', + sdkKey: 'your-sdk-key', environment: 'development', features, context: {}, @@ -479,7 +479,7 @@ const client = new SupaClient({ // ❌ Opt-out (disable toolbar) const client = new SupaClient({ - apiKey: 'your-api-key', + sdkKey: 'your-sdk-key', environment: 'production', features, context: {}, @@ -518,7 +518,7 @@ const features = { } satisfies FeaturesWithFallbacks const featureClient = new SupaClient({ - apiKey: process.env.SUPASHIP_API_KEY!, + sdkKey: process.env.SUPASHIP_SDK_KEY!, environment: 'production', features, context: {}, @@ -561,7 +561,7 @@ const features = { } satisfies FeaturesWithFallbacks const client = new SupaClient({ - apiKey: import.meta.env.VITE_SUPASHIP_API_KEY, + sdkKey: import.meta.env.VITE_SUPASHIP_SDK_KEY, environment: 'production', features, context: {}, @@ -619,7 +619,7 @@ export class FeatureFlagService { constructor() { this.client = new SupaClient({ - apiKey: environment.SUPASHIP_API_KEY, + sdkKey: environment.SUPASHIP_SDK_KEY, environment: 'production', features, context: { diff --git a/packages/javascript/src/__tests__/client.test.ts b/packages/javascript/src/__tests__/client.test.ts index 8a1b53f..918400d 100644 --- a/packages/javascript/src/__tests__/client.test.ts +++ b/packages/javascript/src/__tests__/client.test.ts @@ -18,7 +18,7 @@ jest.mock('../utils', () => ({ })) describe('SupaClient', () => { - const mockApiKey = 'test-api-key' + const mockSdkKey = 'test-sdk-key' const mockBaseUrl = 'https://test-api.com' const testFeatures = { testFeature: null, @@ -29,7 +29,7 @@ describe('SupaClient', () => { beforeEach((): void => { client = new SupaClient({ - apiKey: mockApiKey, + sdkKey: mockSdkKey, environment: 'test-environment', networkConfig: { featuresAPIUrl: `${mockBaseUrl}/features`, @@ -43,7 +43,7 @@ describe('SupaClient', () => { describe('constructor and configuration', () => { it('should use default featuresAPIUrl when not provided', (): void => { const client = new SupaClient({ - apiKey: 'test', + sdkKey: 'test', environment: 'test-environment', context: {}, features: {} satisfies FeaturesWithFallbacks, @@ -53,7 +53,7 @@ describe('SupaClient', () => { it('should use default retry configuration', (): void => { const client = new SupaClient({ - apiKey: 'test', + sdkKey: 'test', environment: 'test-environment', features: {} satisfies FeaturesWithFallbacks, context: {}, @@ -65,7 +65,7 @@ describe('SupaClient', () => { it('should use custom retry configuration', (): void => { const client = new SupaClient({ - apiKey: 'test', + sdkKey: 'test', environment: 'test-environment', features: {} satisfies FeaturesWithFallbacks, context: {}, @@ -80,7 +80,7 @@ describe('SupaClient', () => { it('should handle empty plugins array', (): void => { const client = new SupaClient({ - apiKey: 'test', + sdkKey: 'test', environment: 'test-environment', features: {} satisfies FeaturesWithFallbacks, context: {}, @@ -91,7 +91,7 @@ describe('SupaClient', () => { it('should handle undefined plugins', (): void => { const client = new SupaClient({ - apiKey: 'test', + sdkKey: 'test', environment: 'test-environment', features: {} satisfies FeaturesWithFallbacks, context: {}, @@ -103,7 +103,7 @@ describe('SupaClient', () => { describe('updateContext', () => { it('should merge context by default', (): void => { const testClient = new SupaClient({ - apiKey: mockApiKey, + sdkKey: mockSdkKey, environment: 'test-environment', features: testFeatures, context: { existing: 'value', toUpdate: 'old' }, @@ -121,7 +121,7 @@ describe('SupaClient', () => { it('should replace context when mergeWithExisting is false', (): void => { const testClient = new SupaClient({ - apiKey: mockApiKey, + sdkKey: mockSdkKey, environment: 'test-environment', features: testFeatures, context: { existing: 'value', toUpdate: 'old' }, @@ -150,7 +150,7 @@ describe('SupaClient', () => { } const testClient = new SupaClient({ - apiKey: mockApiKey, + sdkKey: mockSdkKey, environment: 'test-environment', features: testFeatures, context: { old: 'value' }, @@ -252,7 +252,7 @@ describe('SupaClient', () => { } const testClient = new SupaClient({ - apiKey: mockApiKey, + sdkKey: mockSdkKey, environment: 'test-environment', features: testFeatures, context: {}, @@ -290,7 +290,7 @@ describe('SupaClient', () => { } const testClient = new SupaClient({ - apiKey: mockApiKey, + sdkKey: mockSdkKey, environment: 'test-environment', features: { feature1: null } satisfies FeaturesWithFallbacks, context: { default: 'value' }, @@ -329,7 +329,7 @@ describe('SupaClient', () => { } const testClient = new SupaClient({ - apiKey: mockApiKey, + sdkKey: mockSdkKey, environment: 'test-environment', features: { feature1: false as boolean, @@ -359,7 +359,7 @@ describe('SupaClient', () => { } const testClient = new SupaClient({ - apiKey: mockApiKey, + sdkKey: mockSdkKey, environment: 'test-environment', features: { feature1: null } satisfies FeaturesWithFallbacks, context: {}, @@ -386,7 +386,7 @@ describe('SupaClient', () => { json: () => Promise.resolve({ features: { feature1: { variation: 'true' } } }), } as MockResponse) const testClient = new SupaClient({ - apiKey: mockApiKey, + sdkKey: mockSdkKey, environment: 'test-environment', features: { feature1: null } satisfies FeaturesWithFallbacks, context: { @@ -418,7 +418,7 @@ describe('SupaClient', () => { json: () => Promise.resolve({ features: { feature1: { variation: 'true' } } }), } as MockResponse) const testClient = new SupaClient({ - apiKey: mockApiKey, + sdkKey: mockSdkKey, environment: 'test-environment', features: { feature1: null } satisfies FeaturesWithFallbacks, context: { @@ -469,7 +469,7 @@ describe('SupaClient', () => { it('should work with retry disabled', async (): Promise => { const testClient = new SupaClient({ - apiKey: mockApiKey, + sdkKey: mockSdkKey, environment: 'test-environment', features: { testFeature: null } satisfies FeaturesWithFallbacks, context: {}, @@ -498,7 +498,7 @@ describe('SupaClient', () => { } const testClient = new SupaClient({ - apiKey: mockApiKey, + sdkKey: mockSdkKey, environment: 'test-environment', features: { testFeature: null } satisfies FeaturesWithFallbacks, context: {}, diff --git a/packages/javascript/src/client.ts b/packages/javascript/src/client.ts index feea018..63470f4 100644 --- a/packages/javascript/src/client.ts +++ b/packages/javascript/src/client.ts @@ -20,7 +20,7 @@ type ResolvedNetworkConfig = { } export class SupaClient { - private apiKey: string + private sdkKey: string private environment: string private defaultContext?: FeatureContext private plugins: SupaPlugin[] @@ -32,7 +32,7 @@ export class SupaClient { private networkConfig: ResolvedNetworkConfig constructor(config: SupaClientConfig & { features: TFeatures }) { - this.apiKey = config.apiKey + this.sdkKey = config.sdkKey this.environment = config.environment this.defaultContext = config.context this.featureDefinitions = config.features as Features @@ -285,7 +285,7 @@ export class SupaClient { const url = this.networkConfig.featuresAPIUrl const headers: Record = { 'Content-Type': 'application/json', - Authorization: `Bearer ${this.apiKey}`, + Authorization: `Bearer ${this.sdkKey}`, } const requestContext = await this.hashSensitiveContext(mergedContext) const body = JSON.stringify({ diff --git a/packages/javascript/src/types.ts b/packages/javascript/src/types.ts index b0a41d2..db0ad70 100644 --- a/packages/javascript/src/types.ts +++ b/packages/javascript/src/types.ts @@ -5,10 +5,10 @@ export type { SupaToolbarPluginConfig } from './plugins/toolbar-plugin' export interface SupaClientConfig { /** - * API key used to authenticate requests to Supaship services. + * SDK key used to authenticate requests to Supaship services. * Typically created in your project settings. */ - apiKey: string + sdkKey: string /** * Environment identifier used for feature flag evaluation (e.g. "production", "staging"). */ diff --git a/packages/react/README.md b/packages/react/README.md index ac22b84..97d5a06 100644 --- a/packages/react/README.md +++ b/packages/react/README.md @@ -28,7 +28,7 @@ function App() { return ( ({ describe('SupaProvider', () => { const config = { baseUrl: 'https://api.test.com', - apiKey: 'test-api-key', + sdkKey: 'test-sdk-key', environment: 'test-environment', context: {}, features: {} satisfies FeaturesWithFallbacks, diff --git a/packages/react/src/__tests__/useFeature.test.tsx b/packages/react/src/__tests__/useFeature.test.tsx index 93fb959..7989fa7 100644 --- a/packages/react/src/__tests__/useFeature.test.tsx +++ b/packages/react/src/__tests__/useFeature.test.tsx @@ -54,7 +54,7 @@ const TestComponent = ({ } const config = { - apiKey: 'test-api-key', + sdkKey: 'test-sdk-key', environment: 'test-environment', baseUrl: 'https://api.test.com', context: {}, diff --git a/packages/vue/README.md b/packages/vue/README.md index b03f91e..968fc65 100644 --- a/packages/vue/README.md +++ b/packages/vue/README.md @@ -35,7 +35,7 @@ declare module '@supashiphq/vue-sdk' { const supaship = createSupaship({ config: { - apiKey: 'your-api-key', + sdkKey: 'your-sdk-key', environment: 'production', features: FEATURE_FLAGS, context: { @@ -98,7 +98,7 @@ app.mount('#app') ```ts const config = { - apiKey: 'your-api-key', + sdkKey: 'your-sdk-key', environment: 'production', features: { // Required: define all feature flags with fallback values @@ -374,7 +374,7 @@ import { createSupaship } from '@supashiphq/vue-sdk' const supaship = createSupaship({ config: { - apiKey: 'your-api-key', + sdkKey: 'your-sdk-key', features: FEATURE_FLAGS, context: { // Initial context - can be updated later with useFeatureContext @@ -496,7 +496,7 @@ const FEATURE_FLAGS = { const supaship = createSupaship({ config: { - apiKey: import.meta.env.VITE_SUPASHIP_API_KEY, + sdkKey: import.meta.env.VITE_SUPASHIP_SDK_KEY, environment: import.meta.env.MODE, features: FEATURE_FLAGS, }, @@ -523,7 +523,7 @@ export default defineNuxtPlugin(nuxtApp => { const config = useRuntimeConfig() const supaship = createSupaship({ config: { - apiKey: config.public.supashipApiKey as string, + sdkKey: config.public.supashipSDKKey as string, environment: process.env.NODE_ENV || 'production', features: FEATURE_FLAGS, }, @@ -538,7 +538,7 @@ export default defineNuxtPlugin(nuxtApp => { export default defineNuxtConfig({ runtimeConfig: { public: { - supashipApiKey: process.env.NUXT_PUBLIC_SUPASHIP_API_KEY || '', + supashipSDKKey: process.env.NUXT_PUBLIC_SUPASHIP_SDK_KEY || '', }, }, }) @@ -626,7 +626,7 @@ import { createSupaship, FeaturesWithFallbacks } from '@supashiphq/vue-sdk' export function createTestSupaship(features: FeaturesWithFallbacks) { return createSupaship({ config: { - apiKey: 'test-key', + sdkKey: 'test-key', environment: 'test', features, context: {}, @@ -741,7 +741,7 @@ app.mount('#app') // Plugin missing! #### Features Not Loading -- **Check API key:** Verify your API key is correct +- **Check SDK key:** Verify your SDK key is correct - **Check network:** Open browser dev tools and check network requests - **Check features config:** Ensure features are defined in the config diff --git a/packages/vue/src/__tests__/useFeature.test.ts b/packages/vue/src/__tests__/useFeature.test.ts index 18f0641..21f8393 100644 --- a/packages/vue/src/__tests__/useFeature.test.ts +++ b/packages/vue/src/__tests__/useFeature.test.ts @@ -57,7 +57,7 @@ const TestComponent = defineComponent({ }) const config = { - apiKey: 'test-api-key', + sdkKey: 'test-sdk-key', environment: 'test-environment', baseUrl: 'https://api.test.com', context: {},