Skip to content

Commit 6cb7247

Browse files
refactor: Migrate Forwarder module to TypeScript
1 parent 147bad2 commit 6cb7247

18 files changed

+443
-327
lines changed

src/apiClient.ts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
import Constants from './constants';
2-
import Types from './types';
2+
import Types, { MessageType } from './types';
33
import { BatchUploader } from './batchUploader';
44
import { SDKEvent, SDKDataPlan } from './sdkRuntimeModels';
55
import KitBlocker from './kitBlocking';
66
import { Dictionary, isEmpty, parseNumber } from './utils';
77
import { IUploadObject } from './serverModel';
8-
import { MPForwarder } from './forwarders.interfaces';
98
import { IMParticleUser, ISDKUserAttributes } from './identity-user-interfaces';
109
import { AsyncUploader, FetchUploader, XHRUploader } from './uploaders';
1110
import { IMParticleWebSDKInstance } from './mp-instance';
1211
import { appendUserInfo } from './user-utils';
12+
import { IMPForwarder } from './forwarders.interfaces';
1313

1414
export interface IAPIClient {
1515
uploader: BatchUploader | null;
@@ -24,7 +24,7 @@ export interface IAPIClient {
2424
) => void;
2525
initializeForwarderStatsUploader: () => AsyncUploader;
2626
prepareForwardingStats: (
27-
forwarder: MPForwarder,
27+
forwarder: IMPForwarder,
2828
event: IUploadObject
2929
) => void;
3030
}
@@ -140,7 +140,7 @@ export default function APIClient(
140140
// https://go.mparticle.com/work/SQDSDKS-6935
141141
// While Event Name is 'usually' a string, there are some cases where it is a number
142142
// in that it could be a type of MessageType Enum
143-
if (event.EventName as unknown as number !== Types.MessageType.AppStateTransition) {
143+
if (event.EventName as unknown as number !== MessageType.AppStateTransition) {
144144
if (kitBlocker && kitBlocker.kitBlockingEnabled) {
145145
event = kitBlocker.createBlockedEvent(event);
146146
}
@@ -193,7 +193,7 @@ export default function APIClient(
193193
};
194194

195195
this.prepareForwardingStats = function(
196-
forwarder: MPForwarder,
196+
forwarder: IMPForwarder,
197197
event:SDKEvent,
198198
) : void {
199199
let forwardingStatsData: IForwardingStatsData;
@@ -206,8 +206,8 @@ export default function APIClient(
206206
n: event.EventName,
207207
attrs: event.EventAttributes,
208208
sdk: event.SDKVersion,
209-
dt: event.EventDataType,
210-
et: event.EventCategory,
209+
dt: event.EventDataType as number,
210+
et: event.EventCategory as number,
211211
dbg: event.Debug,
212212
ct: event.Timestamp,
213213
eec: event.ExpandedEventCount,

src/configAPIClient.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import {
1414
} from './uploaders';
1515
import { IPixelConfiguration } from './cookieSyncManager';
1616
import { IMParticleWebSDKInstance } from './mp-instance';
17+
import { UserAttributeFilters, UserIdentityFilters } from './forwarders.interfaces';
1718

1819
export interface IKitConfigs extends IKitFilterSettings {
1920
name: string;
@@ -26,15 +27,19 @@ export interface IKitConfigs extends IKitFilterSettings {
2627
settings: Dictionary;
2728
eventSubscriptionId: number;
2829
excludeAnonymousUser: boolean;
30+
31+
// https://go.mparticle.com/work/SQDSDKS-5156
32+
isSandbox?: boolean;
33+
hasSandbox?: boolean;
2934
}
3035

3136
export interface IKitFilterSettings {
3237
eventTypeFilters: number[];
3338
eventNameFilters: number[];
3439
screenNameFilters: number[];
3540
screenAttributeFilters: number[];
36-
userIdentityFilters: number[];
37-
userAttributeFilters: number[];
41+
userIdentityFilters: UserIdentityFilters;
42+
userAttributeFilters: UserAttributeFilters;
3843
attributeFilters: number[];
3944
filteringEventAttributeValue?: IFilteringEventAttributeValue;
4045
filteringUserAttributeValue?: IFilteringUserAttributeValue;

src/forwarders.interfaces.ts

Lines changed: 109 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,20 @@
1-
import { SDKEvent, SDKEventCustomFlags } from './sdkRuntimeModels';
1+
import { SDKEvent, SDKEventCustomFlags, SDKInitConfig } from './sdkRuntimeModels';
22
import { Dictionary } from './utils';
33
import { IKitConfigs, IKitFilterSettings } from './configAPIClient';
44
import { IdentityApiData } from '@mparticle/web-sdk';
5+
import { IFilteringConsentRuleValues, IFilteringEventAttributeValue, IFilteringUserAttributeValue, IKitConfigs, IKitFilterSettings } from './configAPIClient';
6+
import { Callback, IdentityApiData, Logger, UserIdentities } from '@mparticle/web-sdk';
57
import {
68
IMParticleUser,
9+
ISDKUserAttributes,
710
ISDKUserIdentity,
811
UserAttributes,
912
} from './identity-user-interfaces';
10-
11-
// TODO: https://go.mparticle.com/work/SQDSDKS-4475
12-
export type MPForwarder = Dictionary;
13+
import { IForwardingStatsData } from './apiClient';
14+
import { IPixelConfiguration } from './cookieSyncManager';
15+
import { IdentityAPIMethod } from './identity.interfaces';
16+
import { AsyncUploader } from './uploaders';
17+
import { IdentityType } from './types';
1318

1419
// The state of the kit when accessed via window.KitName via CDN
1520
// or imported as an NPM package
@@ -86,3 +91,103 @@ export type forwardingStatsCallback = (
8691
forwarder: ConfiguredKit,
8792
event: SDKEvent
8893
) => void;
94+
95+
96+
export type UserIdentityFilters = typeof IdentityType[];
97+
export type UserAttributeFilters = number[];
98+
99+
// FIXME: Remove in favor of IKitConfigs.settings
100+
// https://go.mparticle.com/work/SQDSDKS-7113
101+
interface ForwarderSettings {
102+
PriorityValue?: number;
103+
}
104+
105+
export interface IMPForwarder {
106+
// @deprecated
107+
setForwarderUserIdentities: (userIdentities: UserIdentities) => void;
108+
109+
setForwarderOnUserIdentified: (user: IMParticleUser) => void;
110+
setForwarderOnIdentityComplete: (user: IMParticleUser, identityMethod: IdentityAPIMethod) => void;
111+
handleForwarderUserAttributes: (functionNameKey: string, key: string, value: string | string[]) => void;
112+
id: number;
113+
settings: ForwarderSettings;
114+
forwarderStatsUploader: AsyncUploader;
115+
isInitialized: boolean;
116+
filteringConsentRuleValues: IFilteringConsentRuleValues;
117+
filteringUserAttributeValue: IFilteringUserAttributeValue;
118+
filteringEventAttributeValue: IFilteringEventAttributeValue;
119+
excludeAnonymousUser: boolean;
120+
userIdentityFilters: UserIdentityFilters;
121+
userAttributeFilters: UserAttributeFilters;
122+
initialized: boolean;
123+
logger: Logger;
124+
125+
suffix?: string;
126+
127+
eventSubscriptionId: number;
128+
129+
eventNameFilters: number[];
130+
eventTypeFilters: number[];
131+
attributeFilters: number[];
132+
133+
screenNameFilters: number[];
134+
screenAttributeFilters: number[];
135+
136+
137+
// Side loaded kit functionality in Forwarder methods
138+
kitInstance: UnregisteredKit;
139+
140+
// https://go.mparticle.com/work/SQDSDKS-5156
141+
isSandbox?: boolean;
142+
hasSandbox?: boolean;
143+
isVisible?: boolean;
144+
145+
configureSideloadedKit: (kitConstructor: RegisteredKit) => void;
146+
147+
sendSingleForwardingStatsToServer: (forwardingStatsData: IForwardingStatsData) => void;
148+
applyToForwarders: (functionName: string, functionArgs: any[]) => void;
149+
sendEventToForwarders: (event: SDKEvent) => void;
150+
processPixelConfigs: (pixelConfigs: SDKInitConfig) => void;
151+
configurePixel: (pixelConfig: IPixelConfiguration) => void;
152+
returnConfiguredKit: (forwarder: RegisteredKit, config: IKitConfigs) => IMPForwarder;
153+
154+
processSideloadedKits: (mpConfig: SDKInitConfig) => void;
155+
156+
init: (
157+
setting: ForwarderSettings,
158+
forwarderSettingsCallback: Callback,
159+
testMode: boolean,
160+
trackerId: string | number | null,
161+
filteredUserAttributes: ISDKUserAttributes,
162+
filteredUserIdentities: ISDKUserIdentity[],
163+
appVersion: string,
164+
appName: string,
165+
customFlags: SDKEventCustomFlags,
166+
clientId: string
167+
) => void;
168+
169+
initForwarders: (userIdentities: UserIdentities, forwarderStatsCallback: Callback) => void;
170+
isEnabledForUserAttributes: (filterObject?: IFilteringUserAttributeValue, user?: IMParticleUser) => boolean;
171+
isEnabledForUnknownUser: (excludeAnonymousUserBoolean: boolean, user: IMParticleUser) => boolean;
172+
173+
name?: string;
174+
175+
// Techically these do not return a value, but we sometimes use a string as a debug message
176+
onUserIdentified?: (user: IMParticleUser, identityApiData?: IdentityApiData) => string;
177+
onIdentifyComplete?: (user: IMParticleUser, identityApiData: IdentityApiData) => string;
178+
onLoginComplete?: (user: IMParticleUser, identityApiData: IdentityApiData) => string;
179+
onLogoutComplete?: (user: IMParticleUser, identityApiData: IdentityApiData) => string;
180+
onModifyComplete?: (user: IMParticleUser, identityApiData: IdentityApiData) => string;
181+
setOptOut: (optOut: boolean) => string;
182+
setUserAttribute?: (key: string, value: string | string[]) => string;
183+
removeUserAttribute?: (key: string) => string;
184+
process?: (event: SDKEvent) => string;
185+
setUserIdentity?: (identity: string, type: number) => string;
186+
187+
getForwarderStatsQueue: () => IForwardingStatsData[];
188+
setForwarderStatsQueue: (queue: IForwardingStatsData[]) => void;
189+
processForwarders: (config: SDKInitConfig, forwardingStatsCallback: Callback) => void;
190+
processUIEnabledKits: (config: SDKInitConfig) => void;
191+
returnKitConstructors: () => Dictionary<RegisteredKit>;
192+
configureUIEnabledKit: (config: IKitConfigs, kitConstructor: Dictionary<RegisteredKit>) => void;
193+
}

0 commit comments

Comments
 (0)