From 0c987e7ebf1e280a57eba43070bb7c8b26793dd9 Mon Sep 17 00:00:00 2001 From: Alexander Braunreuther Date: Mon, 10 Jun 2024 13:56:46 +0200 Subject: [PATCH 1/4] feat: improve logger --- .../sdks/javascript/src/lib/Ninetailed.ts | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/packages/sdks/javascript/src/lib/Ninetailed.ts b/packages/sdks/javascript/src/lib/Ninetailed.ts index 64a0537..99b03bc 100644 --- a/packages/sdks/javascript/src/lib/Ninetailed.ts +++ b/packages/sdks/javascript/src/lib/Ninetailed.ts @@ -177,6 +177,16 @@ export class Ninetailed implements NinetailedInstance { useSDKEvaluation = false, }: Options = {} ) { + if (typeof onLog === 'function') { + logger.addSink(new OnLogLogSink(onLog)); + } + + if (typeof onError === 'function') { + logger.addSink(new OnErrorLogSink(onError)); + } + + this.logger = logger; + this.useSDKEvaluation = useSDKEvaluation; if (ninetailedApiClientInstanceOrOptions instanceof NinetailedApiClient) { @@ -220,17 +230,8 @@ export class Ninetailed implements NinetailedInstance { from: 'api', }; - if (typeof onLog === 'function') { - logger.addSink(new OnLogLogSink(onLog)); - } - - if (typeof onError === 'function') { - logger.addSink(new OnErrorLogSink(onError)); - } - this.eventBuilder = new EventBuilder(buildClientContext); - this.logger = logger; this.ninetailedCorePlugin = new NinetailedCorePlugin({ apiClient: this.apiClient, locale, From d1275b5cca36408bcd65ba749e546aad6abe7496 Mon Sep 17 00:00:00 2001 From: Alexander Braunreuther Date: Mon, 10 Jun 2024 14:01:47 +0200 Subject: [PATCH 2/4] feat: add the listener before the privacy event gets fired. --- .../lib/NinetailedCorePlugin/NinetailedCorePlugin.ts | 11 ++++------- .../src/lib/NinetailedCorePlugin/constants.ts | 2 +- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/packages/sdks/javascript/src/lib/NinetailedCorePlugin/NinetailedCorePlugin.ts b/packages/sdks/javascript/src/lib/NinetailedCorePlugin/NinetailedCorePlugin.ts index f05a44a..4f5c335 100644 --- a/packages/sdks/javascript/src/lib/NinetailedCorePlugin/NinetailedCorePlugin.ts +++ b/packages/sdks/javascript/src/lib/NinetailedCorePlugin/NinetailedCorePlugin.ts @@ -143,16 +143,13 @@ export class NinetailedCorePlugin } } - instance.on( - SET_ENABLED_FEATURES, - ({ payload }: { payload: { features: Feature[] } }) => { - this.enabledFeatures = payload.features || []; - } - ); - logger.debug('Ninetailed Core plugin initialized.'); } + public [SET_ENABLED_FEATURES] = async ({ payload }: EventFn) => { + this.enabledFeatures = payload.features || []; + }; + public pageStart(params: AbortableFnParams) { return this.abortNonClientEvents(params); } diff --git a/packages/sdks/javascript/src/lib/NinetailedCorePlugin/constants.ts b/packages/sdks/javascript/src/lib/NinetailedCorePlugin/constants.ts index 563fc7a..1ee55f7 100644 --- a/packages/sdks/javascript/src/lib/NinetailedCorePlugin/constants.ts +++ b/packages/sdks/javascript/src/lib/NinetailedCorePlugin/constants.ts @@ -10,6 +10,6 @@ export const PROFILE_CHANGE = 'profile-change'; export const PROFILE_RESET = 'profile-reset'; export const CONSENT = '__nt-consent__'; -export const SET_ENABLED_FEATURES = 'set-enabled-features'; +export const SET_ENABLED_FEATURES = 'setEnabledFeatures'; export const EMPTY_MERGE_ID = 'nt:empty-merge-id'; From 3c12a3699d76618bb692ac40d4069e6cecc9d41b Mon Sep 17 00:00:00 2001 From: Alexander Braunreuther Date: Mon, 10 Jun 2024 14:10:05 +0200 Subject: [PATCH 3/4] fix: deduplicate constant --- packages/plugins/privacy/src/NinetailedPrivacyPlugin.ts | 2 +- .../src/lib/NinetailedCorePlugin/NinetailedCorePlugin.ts | 2 +- .../sdks/javascript/src/lib/NinetailedCorePlugin/constants.ts | 1 - packages/sdks/shared/src/lib/constants.ts | 2 +- 4 files changed, 3 insertions(+), 4 deletions(-) diff --git a/packages/plugins/privacy/src/NinetailedPrivacyPlugin.ts b/packages/plugins/privacy/src/NinetailedPrivacyPlugin.ts index 6f632b7..6bad4c8 100644 --- a/packages/plugins/privacy/src/NinetailedPrivacyPlugin.ts +++ b/packages/plugins/privacy/src/NinetailedPrivacyPlugin.ts @@ -4,13 +4,13 @@ import { FEATURES, logger, pickBy, + SET_ENABLED_FEATURES, } from '@ninetailed/experience.js-shared'; import { AnalyticsInstance, CONSENT, COMPONENT, COMPONENT_START, - SET_ENABLED_FEATURES, PLUGIN_NAME as NINETAILED_CORE_PLUGIN_NAME, } from '@ninetailed/experience.js'; import wildCardMatch from 'wildcard-match'; diff --git a/packages/sdks/javascript/src/lib/NinetailedCorePlugin/NinetailedCorePlugin.ts b/packages/sdks/javascript/src/lib/NinetailedCorePlugin/NinetailedCorePlugin.ts index 4f5c335..22210e5 100644 --- a/packages/sdks/javascript/src/lib/NinetailedCorePlugin/NinetailedCorePlugin.ts +++ b/packages/sdks/javascript/src/lib/NinetailedCorePlugin/NinetailedCorePlugin.ts @@ -13,6 +13,7 @@ import { unionBy, NinetailedRequestContext, buildComponentViewEvent, + SET_ENABLED_FEATURES, } from '@ninetailed/experience.js-shared'; import { NinetailedAnalyticsPlugin, @@ -32,7 +33,6 @@ import { PROFILE_CHANGE, PROFILE_FALLBACK_CACHE, PROFILE_RESET, - SET_ENABLED_FEATURES, } from './constants'; import { NinetailedInstance, FlushResult } from '../types'; import { HAS_SEEN_STICKY_COMPONENT } from '../constants'; diff --git a/packages/sdks/javascript/src/lib/NinetailedCorePlugin/constants.ts b/packages/sdks/javascript/src/lib/NinetailedCorePlugin/constants.ts index 1ee55f7..2a5ba52 100644 --- a/packages/sdks/javascript/src/lib/NinetailedCorePlugin/constants.ts +++ b/packages/sdks/javascript/src/lib/NinetailedCorePlugin/constants.ts @@ -10,6 +10,5 @@ export const PROFILE_CHANGE = 'profile-change'; export const PROFILE_RESET = 'profile-reset'; export const CONSENT = '__nt-consent__'; -export const SET_ENABLED_FEATURES = 'setEnabledFeatures'; export const EMPTY_MERGE_ID = 'nt:empty-merge-id'; diff --git a/packages/sdks/shared/src/lib/constants.ts b/packages/sdks/shared/src/lib/constants.ts index 592ac29..ed607a3 100644 --- a/packages/sdks/shared/src/lib/constants.ts +++ b/packages/sdks/shared/src/lib/constants.ts @@ -10,7 +10,7 @@ export const PROFILE_CHANGE = 'profile-change'; export const PROFILE_RESET = 'profile-reset'; export const CONSENT = '__nt-consent__'; -export const SET_ENABLED_FEATURES = 'set-enabled-features'; +export const SET_ENABLED_FEATURES = 'setEnabledFeatures'; export const EMPTY_MERGE_ID = 'nt:empty-merge-id'; From 3f0f4309359683d6e61171d929c797a5c01725d5 Mon Sep 17 00:00:00 2001 From: Alexander Braunreuther Date: Mon, 10 Jun 2024 14:11:51 +0200 Subject: [PATCH 4/4] fix: move constant to js implementation --- .../plugins/privacy/src/NinetailedPrivacyPlugin.spec.ts | 6 +++--- packages/plugins/privacy/src/NinetailedPrivacyPlugin.ts | 2 +- .../src/lib/NinetailedCorePlugin/NinetailedCorePlugin.ts | 2 +- .../javascript/src/lib/NinetailedCorePlugin/constants.ts | 2 ++ packages/sdks/shared/src/lib/constants.ts | 1 - 5 files changed, 7 insertions(+), 6 deletions(-) diff --git a/packages/plugins/privacy/src/NinetailedPrivacyPlugin.spec.ts b/packages/plugins/privacy/src/NinetailedPrivacyPlugin.spec.ts index a629446..c6c753a 100644 --- a/packages/plugins/privacy/src/NinetailedPrivacyPlugin.spec.ts +++ b/packages/plugins/privacy/src/NinetailedPrivacyPlugin.spec.ts @@ -1,10 +1,10 @@ /* eslint-disable @typescript-eslint/ban-ts-comment */ import { Analytics, AnalyticsInstance } from 'analytics'; -import { PLUGIN_NAME as NINETAILED_CORE_PLUGIN_NAME } from '@ninetailed/experience.js'; import { - FEATURES, + PLUGIN_NAME as NINETAILED_CORE_PLUGIN_NAME, SET_ENABLED_FEATURES, -} from '@ninetailed/experience.js-shared'; +} from '@ninetailed/experience.js'; +import { FEATURES } from '@ninetailed/experience.js-shared'; import { DEFAULT_ACCEPTED_CONSENT_CONFIG, DEFAULT_PRIVACY_CONFIG, diff --git a/packages/plugins/privacy/src/NinetailedPrivacyPlugin.ts b/packages/plugins/privacy/src/NinetailedPrivacyPlugin.ts index 6bad4c8..39ecaf9 100644 --- a/packages/plugins/privacy/src/NinetailedPrivacyPlugin.ts +++ b/packages/plugins/privacy/src/NinetailedPrivacyPlugin.ts @@ -4,7 +4,6 @@ import { FEATURES, logger, pickBy, - SET_ENABLED_FEATURES, } from '@ninetailed/experience.js-shared'; import { AnalyticsInstance, @@ -12,6 +11,7 @@ import { COMPONENT, COMPONENT_START, PLUGIN_NAME as NINETAILED_CORE_PLUGIN_NAME, + SET_ENABLED_FEATURES, } from '@ninetailed/experience.js'; import wildCardMatch from 'wildcard-match'; import { isEqual } from 'radash'; diff --git a/packages/sdks/javascript/src/lib/NinetailedCorePlugin/NinetailedCorePlugin.ts b/packages/sdks/javascript/src/lib/NinetailedCorePlugin/NinetailedCorePlugin.ts index 22210e5..4f5c335 100644 --- a/packages/sdks/javascript/src/lib/NinetailedCorePlugin/NinetailedCorePlugin.ts +++ b/packages/sdks/javascript/src/lib/NinetailedCorePlugin/NinetailedCorePlugin.ts @@ -13,7 +13,6 @@ import { unionBy, NinetailedRequestContext, buildComponentViewEvent, - SET_ENABLED_FEATURES, } from '@ninetailed/experience.js-shared'; import { NinetailedAnalyticsPlugin, @@ -33,6 +32,7 @@ import { PROFILE_CHANGE, PROFILE_FALLBACK_CACHE, PROFILE_RESET, + SET_ENABLED_FEATURES, } from './constants'; import { NinetailedInstance, FlushResult } from '../types'; import { HAS_SEEN_STICKY_COMPONENT } from '../constants'; diff --git a/packages/sdks/javascript/src/lib/NinetailedCorePlugin/constants.ts b/packages/sdks/javascript/src/lib/NinetailedCorePlugin/constants.ts index 2a5ba52..6941083 100644 --- a/packages/sdks/javascript/src/lib/NinetailedCorePlugin/constants.ts +++ b/packages/sdks/javascript/src/lib/NinetailedCorePlugin/constants.ts @@ -11,4 +11,6 @@ export const PROFILE_RESET = 'profile-reset'; export const CONSENT = '__nt-consent__'; +export const SET_ENABLED_FEATURES = 'setEnabledFeatures'; + export const EMPTY_MERGE_ID = 'nt:empty-merge-id'; diff --git a/packages/sdks/shared/src/lib/constants.ts b/packages/sdks/shared/src/lib/constants.ts index ed607a3..e2fda7c 100644 --- a/packages/sdks/shared/src/lib/constants.ts +++ b/packages/sdks/shared/src/lib/constants.ts @@ -10,7 +10,6 @@ export const PROFILE_CHANGE = 'profile-change'; export const PROFILE_RESET = 'profile-reset'; export const CONSENT = '__nt-consent__'; -export const SET_ENABLED_FEATURES = 'setEnabledFeatures'; export const EMPTY_MERGE_ID = 'nt:empty-merge-id';