Skip to content

Commit 6013f98

Browse files
committed
refactor: migrate identity module to TS
1 parent 98825ec commit 6013f98

16 files changed

Lines changed: 238 additions & 166 deletions

dist/types/src/identity-utils.d.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import type { IMParticleWebSDKInstance } from './mp-instance';
88
import { IIdentitySearchRequestBody, IdentitySearchCallback } from './identity/search';
99
export declare const CACHE_HEADER: "x-mp-max-age";
1010
export type IdentityCache = BaseVault<Dictionary<ICachedIdentityCall>>;
11-
export type IParseCachedIdentityResponse = (cachedIdentity: IIdentityResponse, mpid: string, callback: IdentityCallback, identityApiData: IdentityApiData, identityMethod: string, knownIdentities: IKnownIdentities, fromCachedIdentity: boolean) => void;
11+
export type IParseCachedIdentityResponse = (cachedIdentity: IIdentityResponse, mpid: string, callback: IdentityCallback, identityApiData: IdentityApiData, identityMethod: string, knownIdentities: IKnownIdentities | UserIdentities, fromCachedIdentity: boolean) => void;
1212
export interface IKnownIdentities extends UserIdentities {
1313
device_application_stamp?: string;
1414
}

dist/types/src/identity.interfaces.d.ts

Lines changed: 22 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
import { IdentityApiData, MPID, UserIdentities } from '@mparticle/web-sdk';
2+
import { Context } from '@mparticle/event-models';
23
import AudienceManager from './audienceManager';
34
import { ICachedIdentityCall, IKnownIdentities } from './identity-utils';
45
import { BaseVault } from './vault';
56
import { Dictionary, Environment, valueof } from './utils';
67
import Constants from './constants';
78
import { IdentityCallback, IUserAttributeChangeEvent, IUserIdentityChangeEvent, IMParticleUser, mParticleUserCart, IIdentityResponse } from './identity-user-interfaces';
89
import { IdentitySearchCallback } from './identity/search';
9-
declare const platform: "web", sdkVendor: "mparticle", sdkVersion: string, HTTPCodes: {
10+
declare const HTTPCodes: {
1011
readonly noHttpCoverage: -1;
1112
readonly activeIdentityRequest: -2;
1213
readonly activeSession: -3;
@@ -18,6 +19,7 @@ declare const platform: "web", sdkVendor: "mparticle", sdkVersion: string, HTTPC
1819
export type IdentityPreProcessResult = {
1920
valid: boolean;
2021
error?: string;
22+
cleanedIdentities?: IdentityApiData;
2123
};
2224
export type IdentityAPIMethod = valueof<typeof Constants.IdentityMethods>;
2325
export declare enum SDKIdentityTypeEnum {
@@ -46,14 +48,14 @@ export declare enum SDKIdentityTypeEnum {
4648
}
4749
export interface IIdentityAPIRequestData {
4850
client_sdk: {
49-
platform: typeof platform;
50-
sdk_vendor: typeof sdkVendor;
51-
sdk_version: typeof sdkVersion;
51+
platform: string;
52+
sdk_vendor: string;
53+
sdk_version: string;
5254
};
53-
context: string | null;
55+
context: Context | null;
5456
environment: Environment;
5557
request_id: string;
56-
request_timestamp_unixtime_ms: number;
58+
request_timestamp_ms: number;
5759
previous_mpid: MPID | null;
5860
known_identities: IKnownIdentities;
5961
}
@@ -67,10 +69,13 @@ export interface IIdentityAPIIdentityChangeData {
6769
}
6870
export interface IIdentityRequest {
6971
combineUserIdentities(previousUIByName: UserIdentities, newUIByName: UserIdentities): UserIdentities;
70-
createIdentityRequest(identityApiData: IdentityApiData, platform: string, sdkVendor: string, sdkVersion: string, deviceId: string, context: string | null, mpid: MPID): IIdentityAPIRequestData;
71-
createModifyIdentityRequest(currentUserIdentities: UserIdentities, newUserIdentities: UserIdentities, platform: string, sdkVendor: string, sdkVersion: string, context: string | null): IIdentityAPIModifyRequestData;
72-
createIdentityChanges(previousIdentities: UserIdentities, newIdentitie: UserIdentities): IIdentityAPIIdentityChangeData;
72+
createIdentityRequest(identityApiData: IdentityApiData, platform: string, sdkVendor: string, sdkVersion: string, deviceId: string, context: Context | null, mpid: MPID): IIdentityAPIRequestData;
73+
createModifyIdentityRequest(currentUserIdentities: UserIdentities, newUserIdentities: UserIdentities, platform: string, sdkVendor: string, sdkVersion: string, context: Context | null): IIdentityAPIModifyRequestData;
74+
createIdentityChanges(previousIdentities: UserIdentities, newIdentities: UserIdentities): IIdentityAPIIdentityChangeData[];
7375
preProcessIdentityRequest(identityApiData: IdentityApiData, callback: IdentityCallback, method: IdentityAPIMethod): IdentityPreProcessResult;
76+
createAliasNetworkRequest(aliasRequest: IAliasRequest): object;
77+
convertAliasToNative(aliasRequest: IAliasRequest): object;
78+
convertToNative(identityApiData: IdentityApiData): object | void;
7479
}
7580
export type AliasRequestScope = 'device' | 'mpid';
7681
export interface IAliasRequest {
@@ -96,7 +101,7 @@ export interface SDKIdentityApi {
96101
getCurrentUser?(): IMParticleUser;
97102
getUser?(mpid: string): IMParticleUser;
98103
getUsers?(): IMParticleUser[];
99-
aliasUsers?(aliasRequest?: IAliasRequest, callback?: IdentityCallback): void;
104+
aliasUsers?(aliasRequest?: IAliasRequest, callback?: IAliasCallback): void;
100105
createAliasRequest?(sourceUser: IMParticleUser, destinationUser: IMParticleUser, scope?: AliasRequestScope): IAliasRequest;
101106
/**
102107
* Sends a request to mParticle's IDSync `/v1/search` endpoint to look up
@@ -140,12 +145,14 @@ export interface IIdentity {
140145
idCache: BaseVault<Dictionary<ICachedIdentityCall>>;
141146
IdentityAPI: SDKIdentityApi;
142147
IdentityRequest: IIdentityRequest;
143-
mParticleUser(mpid: MPID, IsLoggedIn: boolean): IMParticleUser;
144-
createUserAttributeChange(key: string, newValue: string, previousUserAttributeValue: string, isNewAttribute: boolean, deleted: boolean, user: IMParticleUser): IUserAttributeChangeEvent;
145-
createUserIdentityChange(identityType: SDKIdentityTypeEnum, newIdentity: string, oldIdentity: string, newCreatedThisBatch: boolean, userInMemory: IMParticleUser): IUserIdentityChangeEvent;
146-
parseIdentityResponse(identityResponse: IIdentityResponse, previousMPID: MPID, callback: IdentityCallback, identityApiData: IdentityApiData, method: IdentityAPIMethod, knownIdentities: UserIdentities, parsingCachedResponse: boolean): void;
147-
sendUserAttributeChangeEvent(attributeKey: string, newUserAttributeValue: string, previousUserAttributeValue: string, isNewAttribute: boolean, deleted: boolean, user: IMParticleUser): void;
148+
mParticleUser(mpid?: MPID, IsLoggedIn?: boolean): IMParticleUser;
149+
createUserAttributeChange(key: string, newValue: string | string[] | null, previousUserAttributeValue: string | string[] | null, isNewAttribute: boolean, deleted: boolean, user: IMParticleUser): IUserAttributeChangeEvent;
150+
createUserIdentityChange(identityType: SDKIdentityTypeEnum | string, newIdentity: string, oldIdentity: string, newCreatedThisBatch: boolean, userInMemory: IMParticleUser): IUserIdentityChangeEvent;
151+
parseIdentityResponse(identityResponse: IIdentityResponse, previousMPID: MPID, callback: IdentityCallback, identityApiData: IdentityApiData, method: IdentityAPIMethod, knownIdentities: IKnownIdentities | UserIdentities, parsingCachedResponse: boolean): void;
152+
sendUserAttributeChangeEvent(attributeKey: string, newUserAttributeValue: string | string[] | null, previousUserAttributeValue: string | string[] | null, isNewAttribute: boolean, deleted: boolean, user: IMParticleUser): void;
148153
sendUserIdentityChangeEvent(newUserIdentities: UserIdentities, method: IdentityAPIMethod, mpid: MPID, prevUserIdentities: UserIdentities): void;
154+
reinitForwardersOnUserChange(prevUser: IMParticleUser, newUser: IMParticleUser): void;
155+
setForwarderCallbacks(user: IMParticleUser, method: IdentityAPIMethod): void;
149156
/**
150157
* @deprecated
151158
*/

dist/types/src/identityApiClient.d.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
import { IAliasCallback, IAliasRequest, IdentityAPIMethod, IIdentity, IIdentityAPIRequestData } from './identity.interfaces';
1+
import { IAliasCallback, IAliasRequest, IdentityAPIMethod, IIdentity, IIdentityAPIRequestData, IIdentityAPIModifyRequestData } from './identity.interfaces';
22
import { IdentityApiData, MPID, UserIdentities } from '@mparticle/web-sdk';
33
import { IdentityCallback, IdentityResultBody, IIdentityResponse } from './identity-user-interfaces';
44
import { IMParticleWebSDKInstance } from './mp-instance';
55
export interface IIdentityApiClient {
66
sendAliasRequest: (aliasRequest: IAliasRequest, aliasCallback: IAliasCallback) => Promise<void>;
7-
sendIdentityRequest: (identityApiRequest: IIdentityAPIRequestData, method: IdentityAPIMethod, callback: IdentityCallback, originalIdentityApiData: IdentityApiData, parseIdentityResponse: IIdentity['parseIdentityResponse'], mpid: MPID, knownIdentities: UserIdentities) => Promise<void>;
7+
sendIdentityRequest: (identityApiRequest: IIdentityAPIRequestData | IIdentityAPIModifyRequestData, method: IdentityAPIMethod, callback: IdentityCallback, originalIdentityApiData: IdentityApiData, parseIdentityResponse: IIdentity['parseIdentityResponse'], mpid: MPID, knownIdentities?: UserIdentities) => Promise<void>;
88
getUploadUrl: (method: IdentityAPIMethod, mpid: MPID) => string;
99
getIdentityResponseFromFetch: (response: Response, responseBody: IdentityResultBody) => IIdentityResponse;
1010
getIdentityResponseFromXHR: (response: XMLHttpRequest) => IIdentityResponse;

dist/types/src/mp-instance.d.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { IStore } from './store';
55
import { IServerModel } from './serverModel';
66
import ForwardingStatsUploader from './forwardingStatsUploader';
77
import { IConsent } from './consent';
8-
import IdentityAPIClient from './identityApiClient';
8+
import { IIdentityApiClient } from './identityApiClient';
99
import IntegrationCapture from './integrationCapture';
1010
import { IPreInit } from './pre-init-utils';
1111
import { MParticleWebSDK, SDKHelpersApi } from './sdkRuntimeModels';
@@ -41,7 +41,7 @@ export interface IMParticleWebSDKInstance extends MParticleWebSDK {
4141
_ForwardingStatsUploader: ForwardingStatsUploader;
4242
_Helpers: SDKHelpersApi;
4343
_Identity: IIdentity;
44-
_IdentityAPIClient: typeof IdentityAPIClient;
44+
_IdentityAPIClient: IIdentityApiClient;
4545
_IntegrationCapture: IntegrationCapture;
4646
_NativeSdkHelpers: INativeSdkHelpers;
4747
_Persistence: IPersistence;

dist/types/src/persistence.interfaces.d.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -59,12 +59,12 @@ export interface IPersistence {
5959
getCookieDomain(): string;
6060
getDomain(doc: string, locationHostname: string): string;
6161
saveUserCookieSyncDatesToPersistence(mpid: MPID, csd: CookieSyncDates): void;
62-
savePersistence(persistance: IPersistenceMinified): void;
62+
savePersistence(persistance: IPersistenceMinified, mpid?: MPID): void;
6363
getPersistence(): IPersistenceMinified;
64-
getFirstSeenTime(mpid: MPID): string | null;
65-
setFirstSeenTime(mpid: MPID, time: number): void;
64+
getFirstSeenTime(mpid: MPID): number | null;
65+
setFirstSeenTime(mpid: MPID, time?: number): void;
6666
getLastSeenTime(mpid: MPID): number | null;
67-
setLastSeenTime(mpid: MPID, time: number): void;
67+
setLastSeenTime(mpid: MPID, time?: number): void;
6868
getDeviceId(): string;
6969
setDeviceId(guid: string): void;
7070
resetPersistence(): void;

dist/types/src/store.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,7 @@ export interface IFeatureFlags {
8181
export interface IStore {
8282
isEnabled: boolean;
8383
isInitialized: boolean;
84+
mpid: MPID;
8485
sessionAttributes: SessionAttributes;
8586
localSessionAttributes: LocalSessionAttributes;
8687
currentSessionMPIDs: MPID[];

src/identity-utils.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ export type IParseCachedIdentityResponse = (
3434
callback: IdentityCallback,
3535
identityApiData: IdentityApiData,
3636
identityMethod: string,
37-
knownIdentities: IKnownIdentities,
37+
knownIdentities: IKnownIdentities | UserIdentities,
3838
fromCachedIdentity: boolean
3939
) => void;
4040

src/identity.interfaces.ts

Lines changed: 30 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { IdentityApiData, MPID, UserIdentities } from '@mparticle/web-sdk';
2+
import { Context } from '@mparticle/event-models';
23
import AudienceManager from './audienceManager';
34
import { ICachedIdentityCall, IKnownIdentities } from './identity-utils';
45
import { BaseVault } from './vault';
@@ -18,6 +19,7 @@ const { platform, sdkVendor, sdkVersion, HTTPCodes } = Constants;
1819
export type IdentityPreProcessResult = {
1920
valid: boolean;
2021
error?: string;
22+
cleanedIdentities?: IdentityApiData;
2123
};
2224

2325
export type IdentityAPIMethod = valueof<typeof Constants.IdentityMethods>;
@@ -49,14 +51,14 @@ export enum SDKIdentityTypeEnum {
4951

5052
export interface IIdentityAPIRequestData {
5153
client_sdk: {
52-
platform: typeof platform;
53-
sdk_vendor: typeof sdkVendor;
54-
sdk_version: typeof sdkVersion;
54+
platform: string;
55+
sdk_vendor: string;
56+
sdk_version: string;
5557
};
56-
context: string | null;
58+
context: Context | null;
5759
environment: Environment;
5860
request_id: string;
59-
request_timestamp_unixtime_ms: number;
61+
request_timestamp_ms: number;
6062
previous_mpid: MPID | null;
6163
known_identities: IKnownIdentities;
6264
}
@@ -86,7 +88,7 @@ export interface IIdentityRequest {
8688
sdkVendor: string,
8789
sdkVersion: string,
8890
deviceId: string,
89-
context: string | null,
91+
context: Context | null,
9092
mpid: MPID
9193
): IIdentityAPIRequestData;
9294
createModifyIdentityRequest(
@@ -95,17 +97,20 @@ export interface IIdentityRequest {
9597
platform: string,
9698
sdkVendor: string,
9799
sdkVersion: string,
98-
context: string | null
100+
context: Context | null
99101
): IIdentityAPIModifyRequestData;
100102
createIdentityChanges(
101103
previousIdentities: UserIdentities,
102-
newIdentitie: UserIdentities
103-
): IIdentityAPIIdentityChangeData;
104+
newIdentities: UserIdentities
105+
): IIdentityAPIIdentityChangeData[];
104106
preProcessIdentityRequest(
105107
identityApiData: IdentityApiData,
106108
callback: IdentityCallback,
107109
method: IdentityAPIMethod
108110
): IdentityPreProcessResult;
111+
createAliasNetworkRequest(aliasRequest: IAliasRequest): object;
112+
convertAliasToNative(aliasRequest: IAliasRequest): object;
113+
convertToNative(identityApiData: IdentityApiData): object | void;
109114
}
110115

111116
export type AliasRequestScope = 'device' | 'mpid';
@@ -150,7 +155,7 @@ export interface SDKIdentityApi {
150155
getUsers?(): IMParticleUser[];
151156
aliasUsers?(
152157
aliasRequest?: IAliasRequest,
153-
callback?: IdentityCallback
158+
callback?: IAliasCallback
154159
): void;
155160
createAliasRequest?(
156161
sourceUser: IMParticleUser,
@@ -211,18 +216,18 @@ export interface IIdentity {
211216
IdentityAPI: SDKIdentityApi;
212217
IdentityRequest: IIdentityRequest;
213218

214-
mParticleUser(mpid: MPID, IsLoggedIn: boolean): IMParticleUser;
219+
mParticleUser(mpid?: MPID, IsLoggedIn?: boolean): IMParticleUser;
215220

216221
createUserAttributeChange(
217222
key: string,
218-
newValue: string,
219-
previousUserAttributeValue: string,
223+
newValue: string | string[] | null,
224+
previousUserAttributeValue: string | string[] | null,
220225
isNewAttribute: boolean,
221226
deleted: boolean,
222227
user: IMParticleUser
223228
): IUserAttributeChangeEvent;
224229
createUserIdentityChange(
225-
identityType: SDKIdentityTypeEnum,
230+
identityType: SDKIdentityTypeEnum | string,
226231
newIdentity: string,
227232
oldIdentity: string,
228233
newCreatedThisBatch: boolean,
@@ -234,13 +239,13 @@ export interface IIdentity {
234239
callback: IdentityCallback,
235240
identityApiData: IdentityApiData,
236241
method: IdentityAPIMethod,
237-
knownIdentities: UserIdentities,
242+
knownIdentities: IKnownIdentities | UserIdentities,
238243
parsingCachedResponse: boolean
239244
): void;
240245
sendUserAttributeChangeEvent(
241246
attributeKey: string,
242-
newUserAttributeValue: string,
243-
previousUserAttributeValue: string,
247+
newUserAttributeValue: string | string[] | null,
248+
previousUserAttributeValue: string | string[] | null,
244249
isNewAttribute: boolean,
245250
deleted: boolean,
246251
user: IMParticleUser
@@ -251,6 +256,14 @@ export interface IIdentity {
251256
mpid: MPID,
252257
prevUserIdentities: UserIdentities
253258
): void;
259+
reinitForwardersOnUserChange(
260+
prevUser: IMParticleUser,
261+
newUser: IMParticleUser
262+
): void;
263+
setForwarderCallbacks(
264+
user: IMParticleUser,
265+
method: IdentityAPIMethod
266+
): void;
254267

255268
/**
256269
* @deprecated

0 commit comments

Comments
 (0)