From f556cc089d7a2885e86adb4152eb23e527ba2978 Mon Sep 17 00:00:00 2001 From: Seth Silesky <5115498+silesky@users.noreply.github.com> Date: Mon, 20 Jan 2025 16:01:05 -0600 Subject: [PATCH] wip --- packages/browser/src/core/events/index.ts | 15 +++++++-------- .../src/plugins/segmentio/__tests__/index.test.ts | 1 + packages/browser/src/plugins/segmentio/index.ts | 4 +++- .../src/plugins/segmentio/shared-dispatcher.ts | 11 +++++++---- 4 files changed, 18 insertions(+), 13 deletions(-) diff --git a/packages/browser/src/core/events/index.ts b/packages/browser/src/core/events/index.ts index 7e260b60d..f2d2e0745 100644 --- a/packages/browser/src/core/events/index.ts +++ b/packages/browser/src/core/events/index.ts @@ -2,8 +2,7 @@ import { v4 as uuid } from '@lukeed/uuid' import { ID, User } from '../user' import { Options, EventProperties, Traits, SegmentEvent } from './interfaces' import { addPageContext, PageContext } from '../page' -import { CoreEventFactory } from '@segment/analytics-core' -import type { BrowserIntegrationsOptions } from '../../browser/settings' +import { CoreEventFactory, IntegrationsOptions } from '@segment/analytics-core' export * from './interfaces' @@ -48,7 +47,7 @@ export class EventFactory extends CoreEventFactory { event: string, properties?: EventProperties, options?: Options, - globalIntegrations?: BrowserIntegrationsOptions, + globalIntegrations?: IntegrationsOptions, pageCtx?: PageContext ): SegmentEvent { const ev = super.track(event, properties, options, globalIntegrations) @@ -61,7 +60,7 @@ export class EventFactory extends CoreEventFactory { page: string | null, properties?: EventProperties, options?: Options, - globalIntegrations?: BrowserIntegrationsOptions, + globalIntegrations?: IntegrationsOptions, pageCtx?: PageContext ): SegmentEvent { const ev = super.page( @@ -80,7 +79,7 @@ export class EventFactory extends CoreEventFactory { screen: string | null, properties?: EventProperties, options?: Options, - globalIntegrations?: BrowserIntegrationsOptions, + globalIntegrations?: IntegrationsOptions, pageCtx?: PageContext ): SegmentEvent { const ev = super.screen( @@ -98,7 +97,7 @@ export class EventFactory extends CoreEventFactory { userId: ID, traits?: Traits, options?: Options, - globalIntegrations?: BrowserIntegrationsOptions, + globalIntegrations?: IntegrationsOptions, pageCtx?: PageContext ): SegmentEvent { const ev = super.identify(userId, traits, options, globalIntegrations) @@ -110,7 +109,7 @@ export class EventFactory extends CoreEventFactory { groupId: ID, traits?: Traits, options?: Options, - globalIntegrations?: BrowserIntegrationsOptions, + globalIntegrations?: IntegrationsOptions, pageCtx?: PageContext ): SegmentEvent { const ev = super.group(groupId, traits, options, globalIntegrations) @@ -122,7 +121,7 @@ export class EventFactory extends CoreEventFactory { to: string, from: string | null, options?: Options, - globalIntegrations?: BrowserIntegrationsOptions, + globalIntegrations?: IntegrationsOptions, pageCtx?: PageContext ): SegmentEvent { const ev = super.alias(to, from, options, globalIntegrations) diff --git a/packages/browser/src/plugins/segmentio/__tests__/index.test.ts b/packages/browser/src/plugins/segmentio/__tests__/index.test.ts index 04d69b596..8eb12ce78 100644 --- a/packages/browser/src/plugins/segmentio/__tests__/index.test.ts +++ b/packages/browser/src/plugins/segmentio/__tests__/index.test.ts @@ -104,6 +104,7 @@ describe('Segment.io', () => { await segmentio(analytics, { apiKey: '', deliveryStrategy: { + strategy: 'standard', config: { headers: () => ({ 'X-My-Header': 'foo', diff --git a/packages/browser/src/plugins/segmentio/index.ts b/packages/browser/src/plugins/segmentio/index.ts index 285606b42..f3e40bf26 100644 --- a/packages/browser/src/plugins/segmentio/index.ts +++ b/packages/browser/src/plugins/segmentio/index.ts @@ -84,7 +84,9 @@ export function segmentio( const deliveryStrategy = settings?.deliveryStrategy const client = - deliveryStrategy?.strategy === 'batching' + deliveryStrategy && + 'strategy' in deliveryStrategy && + deliveryStrategy.strategy === 'batching' ? batch(apiHost, deliveryStrategy.config) : standard(deliveryStrategy?.config) diff --git a/packages/browser/src/plugins/segmentio/shared-dispatcher.ts b/packages/browser/src/plugins/segmentio/shared-dispatcher.ts index 380e937d5..8ecd63e71 100644 --- a/packages/browser/src/plugins/segmentio/shared-dispatcher.ts +++ b/packages/browser/src/plugins/segmentio/shared-dispatcher.ts @@ -46,7 +46,7 @@ interface DispatchFetchConfig { priority?: RequestPriority } -export interface BatchingDispatchConfig extends DispatchFetchConfig { +export type BatchingDispatchConfig = DispatchFetchConfig & { /** * The maximum number of events to send in a single request. If the batch reaches this size, a request will automatically be sent. * @@ -73,10 +73,13 @@ export interface StandardDispatcherConfig extends DispatchFetchConfig {} export type DeliveryStrategy = | { - strategy?: 'standard' + strategy: 'batching' + config?: BatchingDispatchConfig + } + | { + strategy: 'standard' config?: StandardDispatcherConfig } | { - strategy?: 'batching' - config?: BatchingDispatchConfig + config: StandardDispatcherConfig }