From b483ba18702d99c74192b195e0ad5344e88b1dd2 Mon Sep 17 00:00:00 2001 From: Ron Cohen Date: Thu, 15 May 2025 13:19:13 +0200 Subject: [PATCH 1/3] chore: improve logging for initializtion and offline mode --- packages/node-sdk/src/client.ts | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/packages/node-sdk/src/client.ts b/packages/node-sdk/src/client.ts index 6597740a..9d76f608 100644 --- a/packages/node-sdk/src/client.ts +++ b/packages/node-sdk/src/client.ts @@ -127,11 +127,15 @@ export class BucketClient { */ public readonly logger: Logger; + private initializationFinished = false; private _initialize = once(async () => { if (!this._config.offline) { await this.featuresCache.refresh(); } - this.logger.info("Bucket initialized"); + this.logger.info( + "Bucket initialized" + (this._config.offline ? " (offline mode)" : ""), + ); + this.initializationFinished = true; }); /** @@ -219,7 +223,10 @@ export class BucketClient { const offline = config.offline ?? process.env.NODE_ENV === "test"; if (!offline) { - ok(typeof config.secretKey === "string", "secretKey must be a string"); + ok( + typeof config.secretKey === "string", + "secretKey must be a string, or set offline=true", + ); ok(config.secretKey.length > 22, "invalid secretKey specified"); } @@ -957,6 +964,10 @@ export class BucketClient { ): Record { checkContextWithTracking(options); + if (!this.initializationFinished) { + this.logger.error("BucketClient is not initialized yet."); + } + void this.syncContext(options); let featureDefinitions: FeaturesAPIResponse["features"]; @@ -966,7 +977,7 @@ export class BucketClient { const fetchedFeatures = this.featuresCache.get(); if (!fetchedFeatures) { this.logger.warn( - "failed to use feature definitions, there are none cached yet. Using fallback features.", + "no feature definitions available, using fallback features.", ); return this._config.fallbackFeatures || {}; } From e5726ac7663c9ceff1462c56a3e7a10813a2eb06 Mon Sep 17 00:00:00 2001 From: Ron Cohen Date: Thu, 15 May 2025 13:22:09 +0200 Subject: [PATCH 2/3] hint at when this shows up --- packages/node-sdk/src/client.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/node-sdk/src/client.ts b/packages/node-sdk/src/client.ts index 9d76f608..6001b5f5 100644 --- a/packages/node-sdk/src/client.ts +++ b/packages/node-sdk/src/client.ts @@ -965,7 +965,7 @@ export class BucketClient { checkContextWithTracking(options); if (!this.initializationFinished) { - this.logger.error("BucketClient is not initialized yet."); + this.logger.error("getFeature(s): BucketClient is not initialized yet."); } void this.syncContext(options); From 58cee527cedad696a3209275c96367b03d8dbb9c Mon Sep 17 00:00:00 2001 From: Ron Cohen Date: Thu, 15 May 2025 13:25:20 +0200 Subject: [PATCH 3/3] fix tests --- packages/node-sdk/test/client.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/node-sdk/test/client.test.ts b/packages/node-sdk/test/client.test.ts index 9dad7671..b0647afb 100644 --- a/packages/node-sdk/test/client.test.ts +++ b/packages/node-sdk/test/client.test.ts @@ -2055,7 +2055,7 @@ describe("BucketClient", () => { expect(logger.warn).toHaveBeenCalledWith( expect.stringMatching( - "failed to use feature definitions, there are none cached yet. Using fallback features.", + "no feature definitions available, using fallback features", ), );