diff --git a/package-lock.json b/package-lock.json index a5e7e1f..e2bbb85 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "payload-feature-flags", - "version": "1.0.0", + "version": "0.0.16", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "payload-feature-flags", - "version": "1.0.0", + "version": "0.0.16", "license": "MIT", "devDependencies": { "@eslint/eslintrc": "^3.2.0", diff --git a/package.json b/package.json index 778c1ad..d920a1e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@xtr-dev/payload-feature-flags", - "version": "0.0.14", + "version": "0.0.16", "description": "Feature flags plugin for Payload CMS - manage feature toggles, A/B tests, and gradual rollouts", "license": "MIT", "type": "module", diff --git a/src/hooks/client.ts b/src/hooks/client.ts index 1ea345c..b7c7167 100644 --- a/src/hooks/client.ts +++ b/src/hooks/client.ts @@ -21,23 +21,31 @@ export interface FeatureFlagOptions { // Helper to get config from options or defaults function getConfig(options?: FeatureFlagOptions) { - // In server-side environments, serverURL must be explicitly provided - const serverURL = options?.serverURL || - (typeof window !== 'undefined' ? window.location.origin : undefined) - - if (!serverURL) { - console.warn( - 'FeatureFlags: serverURL must be provided when using hooks in server-side environment. ' + - 'Falling back to relative URL which may not work correctly.' - ) - // Use relative URL as fallback - will work if API is on same domain - return { serverURL: '', apiPath: options?.apiPath || '/api', collectionSlug: options?.collectionSlug || 'feature-flags' } + // Check if serverURL is explicitly provided + if (options?.serverURL) { + return { + serverURL: options.serverURL, + apiPath: options.apiPath || '/api', + collectionSlug: options.collectionSlug || 'feature-flags' + } } - const apiPath = options?.apiPath || '/api' - const collectionSlug = options?.collectionSlug || 'feature-flags' + // In browser environment, use window.location.origin + if (typeof window !== 'undefined') { + return { + serverURL: window.location.origin, + apiPath: options?.apiPath || '/api', + collectionSlug: options?.collectionSlug || 'feature-flags' + } + } - return { serverURL, apiPath, collectionSlug } + // During SSR or in non-browser environments, use relative URL + // This will work for same-origin requests + return { + serverURL: '', + apiPath: options?.apiPath || '/api', + collectionSlug: options?.collectionSlug || 'feature-flags' + } } /**