From a8fa7e2700406a23f8815d9662a7bafe0d2fc4bc Mon Sep 17 00:00:00 2001 From: Felipe Lima Date: Wed, 27 Nov 2024 09:56:50 -0800 Subject: [PATCH 1/4] fix: Do not throw from newDefaultEventDispatcher on invalid key --- src/events/default-event-dispatcher.spec.ts | 16 ++++++++-------- src/events/default-event-dispatcher.ts | 6 +++++- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/src/events/default-event-dispatcher.spec.ts b/src/events/default-event-dispatcher.spec.ts index 015b5e7..dcf3051 100644 --- a/src/events/default-event-dispatcher.spec.ts +++ b/src/events/default-event-dispatcher.spec.ts @@ -6,6 +6,7 @@ import DefaultEventDispatcher, { } from './default-event-dispatcher'; import { Event } from './event-dispatcher'; import NetworkStatusListener from './network-status-listener'; +import NoOpEventDispatcher from './no-op-event-dispatcher'; global.fetch = jest.fn(); @@ -201,14 +202,13 @@ describe('DefaultEventDispatcher', () => { }); describe('newDefaultEventDispatcher', () => { - it('should throw if SDK key is invalid', () => { - expect(() => { - newDefaultEventDispatcher( - new ArrayBackedNamedEventQueue('test-queue'), - mockNetworkStatusListener, - 'invalid-sdk-key', - ); - }).toThrow('Unable to parse Event ingestion URL from SDK key'); + it('should fallback to no-op dispatcher if SDK key is invalid', () => { + const eventDispatcher = newDefaultEventDispatcher( + new ArrayBackedNamedEventQueue('test-queue'), + mockNetworkStatusListener, + 'invalid-sdk-key', + ); + expect(eventDispatcher).toBeInstanceOf(NoOpEventDispatcher); }); it('should create a new DefaultEventDispatcher with the provided configuration', () => { diff --git a/src/events/default-event-dispatcher.ts b/src/events/default-event-dispatcher.ts index 9fd5481..472b0d1 100644 --- a/src/events/default-event-dispatcher.ts +++ b/src/events/default-event-dispatcher.ts @@ -6,6 +6,7 @@ import EventDelivery from './event-delivery'; import EventDispatcher, { Event } from './event-dispatcher'; import NamedEventQueue from './named-event-queue'; import NetworkStatusListener from './network-status-listener'; +import NoOpEventDispatcher from './no-op-event-dispatcher'; import SdkKeyDecoder from './sdk-key-decoder'; export type EventDispatcherConfig = { @@ -135,7 +136,10 @@ export function newDefaultEventDispatcher( const sdkKeyDecoder = new SdkKeyDecoder(); const ingestionUrl = sdkKeyDecoder.decodeEventIngestionHostName(sdkKey); if (!ingestionUrl) { - throw new Error('Unable to parse Event ingestion URL from SDK key'); + logger.warn( + 'Unable to parse Event ingestion URL from SDK key, falling back to no-op event dispatcher', + ); + return new NoOpEventDispatcher(); } return new DefaultEventDispatcher( new BatchEventProcessor(eventQueue, batchSize), From 64a9ce05ca27fef7b66f918f11468197b4b4bce4 Mon Sep 17 00:00:00 2001 From: Felipe Lima Date: Wed, 27 Nov 2024 09:59:03 -0800 Subject: [PATCH 2/4] version bump --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 50e7a0c..5e8517e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@eppo/js-client-sdk-common", - "version": "4.5.0", + "version": "4.5.1", "description": "Eppo SDK for client-side JavaScript applications (base for both web and react native)", "main": "dist/index.js", "files": [ From 800a42b641a26195149ff27f625e77fd450917ca Mon Sep 17 00:00:00 2001 From: Felipe Lima Date: Wed, 27 Nov 2024 09:59:44 -0800 Subject: [PATCH 3/4] use info instead --- src/events/default-event-dispatcher.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/events/default-event-dispatcher.ts b/src/events/default-event-dispatcher.ts index 472b0d1..cbc0a3f 100644 --- a/src/events/default-event-dispatcher.ts +++ b/src/events/default-event-dispatcher.ts @@ -136,7 +136,7 @@ export function newDefaultEventDispatcher( const sdkKeyDecoder = new SdkKeyDecoder(); const ingestionUrl = sdkKeyDecoder.decodeEventIngestionHostName(sdkKey); if (!ingestionUrl) { - logger.warn( + logger.info( 'Unable to parse Event ingestion URL from SDK key, falling back to no-op event dispatcher', ); return new NoOpEventDispatcher(); From f9fa7b0d805d45a96c19ffcba3cb9966d170adf2 Mon Sep 17 00:00:00 2001 From: Felipe Lima Date: Wed, 27 Nov 2024 10:26:51 -0800 Subject: [PATCH 4/4] switch to debug log --- src/events/default-event-dispatcher.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/events/default-event-dispatcher.ts b/src/events/default-event-dispatcher.ts index cbc0a3f..c17b8f2 100644 --- a/src/events/default-event-dispatcher.ts +++ b/src/events/default-event-dispatcher.ts @@ -136,7 +136,7 @@ export function newDefaultEventDispatcher( const sdkKeyDecoder = new SdkKeyDecoder(); const ingestionUrl = sdkKeyDecoder.decodeEventIngestionHostName(sdkKey); if (!ingestionUrl) { - logger.info( + logger.debug( 'Unable to parse Event ingestion URL from SDK key, falling back to no-op event dispatcher', ); return new NoOpEventDispatcher();