Skip to content

Commit ecf2838

Browse files
committed
refactor: migrate helpers, polyfill, forwardingStatsUploader, filteredMparticleUser to TS
1 parent ce56ddb commit ecf2838

10 files changed

Lines changed: 396 additions & 315 deletions

src/consent.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ export interface IConsentStateV2DTO {
8989
}
9090

9191
export interface IConsentRulesValues {
92-
consentPurpose: string;
92+
consentPurpose: string | number;
9393
hasConsented: boolean;
9494
}
9595
export interface IConsentRules {

src/filteredMparticleUser.js

Lines changed: 0 additions & 101 deletions
This file was deleted.

src/filteredMparticleUser.ts

Lines changed: 114 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,114 @@
1+
import Types from './types';
2+
import { IMParticleWebSDKInstance } from './mp-instance';
3+
import { MPID } from '@mparticle/web-sdk';
4+
import { Dictionary } from './utils';
5+
import KitBlocker from './kitBlocking';
6+
import { MPForwarder } from './forwarders.interfaces';
7+
8+
interface IFilteredMparticleUser {
9+
getUserIdentities(): { userIdentities: Dictionary<string> };
10+
getMPID(): MPID;
11+
getUserAttributesLists(forwarder: MPForwarder): Dictionary<string[]>;
12+
getAllUserAttributes(): Dictionary;
13+
}
14+
15+
export default function filteredMparticleUser(
16+
mpid: MPID,
17+
forwarder: MPForwarder | { userAttributeFilters: number[] },
18+
mpInstance: IMParticleWebSDKInstance,
19+
kitBlocker?: KitBlocker
20+
): IFilteredMparticleUser {
21+
return {
22+
getUserIdentities: function(): { userIdentities: Dictionary<string> } {
23+
let currentUserIdentities: Dictionary<string> = {};
24+
const identities = mpInstance._Store.getUserIdentities(mpid);
25+
26+
for (const identityType in identities) {
27+
if (identities.hasOwnProperty(identityType)) {
28+
const identityName = Types.IdentityType.getIdentityName(
29+
mpInstance._Helpers.parseNumber(identityType)
30+
);
31+
if (
32+
!kitBlocker ||
33+
(kitBlocker &&
34+
!kitBlocker.isIdentityBlocked(identityName))
35+
)
36+
//if identity type is not blocked
37+
currentUserIdentities[identityName] =
38+
identities[identityType];
39+
}
40+
}
41+
42+
currentUserIdentities = (mpInstance._Helpers.filterUserIdentitiesForForwarders as Function)(
43+
currentUserIdentities,
44+
(forwarder as MPForwarder).userIdentityFilters
45+
);
46+
47+
return {
48+
userIdentities: currentUserIdentities,
49+
};
50+
},
51+
getMPID: function(): MPID {
52+
return mpid;
53+
},
54+
getUserAttributesLists: function(forwarder: MPForwarder): Dictionary<string[]> {
55+
let userAttributes: Dictionary;
56+
let userAttributesLists: Dictionary<string[]> = {};
57+
58+
userAttributes = getAllUserAttributes();
59+
for (const key in userAttributes) {
60+
if (
61+
userAttributes.hasOwnProperty(key) &&
62+
Array.isArray(userAttributes[key])
63+
) {
64+
if (
65+
!kitBlocker ||
66+
(kitBlocker && !kitBlocker.isAttributeKeyBlocked(key))
67+
) {
68+
userAttributesLists[key] = userAttributes[key].slice();
69+
}
70+
}
71+
}
72+
73+
userAttributesLists = (mpInstance._Helpers.filterUserAttributes as Function)(
74+
userAttributesLists,
75+
forwarder.userAttributeFilters
76+
);
77+
78+
return userAttributesLists;
79+
},
80+
getAllUserAttributes: getAllUserAttributes,
81+
};
82+
83+
function getAllUserAttributes(): Dictionary {
84+
let userAttributesCopy: Dictionary = {};
85+
const userAttributes = mpInstance._Store.getUserAttributes(mpid);
86+
87+
if (userAttributes) {
88+
for (const prop in userAttributes) {
89+
if (userAttributes.hasOwnProperty(prop)) {
90+
if (
91+
!kitBlocker ||
92+
(kitBlocker &&
93+
!kitBlocker.isAttributeKeyBlocked(prop))
94+
) {
95+
if (Array.isArray(userAttributes[prop])) {
96+
userAttributesCopy[prop] = (userAttributes[
97+
prop
98+
] as string[]).slice();
99+
} else {
100+
userAttributesCopy[prop] = userAttributes[prop];
101+
}
102+
}
103+
}
104+
}
105+
}
106+
107+
userAttributesCopy = (mpInstance._Helpers.filterUserAttributes as Function)(
108+
userAttributesCopy,
109+
(forwarder as MPForwarder).userAttributeFilters
110+
);
111+
112+
return userAttributesCopy;
113+
}
114+
}
Lines changed: 24 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,36 @@
1-
export default function forwardingStatsUploader(mpInstance) {
2-
this.startForwardingStatsTimer = function() {
3-
mParticle._forwardingStatsTimer = setInterval(function() {
1+
import { IMParticleWebSDKInstance } from './mp-instance';
2+
import { Dictionary } from './utils';
3+
4+
export interface IForwardingStatsUploader {
5+
startForwardingStatsTimer(): void;
6+
}
7+
8+
export default function forwardingStatsUploader(
9+
this: IForwardingStatsUploader,
10+
mpInstance: IMParticleWebSDKInstance
11+
): void {
12+
this.startForwardingStatsTimer = function(): void {
13+
(window.mParticle as Dictionary)._forwardingStatsTimer = setInterval(function() {
414
prepareAndSendForwardingStatsBatch();
5-
}, mpInstance._Store.SDKConfig.forwarderStatsTimeout);
15+
}, (mpInstance._Store.SDKConfig as Dictionary).forwarderStatsTimeout);
616
};
717

8-
function prepareAndSendForwardingStatsBatch() {
9-
var forwarderQueue = mpInstance._Forwarders.getForwarderStatsQueue(),
10-
uploadsTable =
11-
mpInstance._Persistence.forwardingStatsBatches.uploadsTable,
12-
now = Date.now();
18+
function prepareAndSendForwardingStatsBatch(): void {
19+
const forwarderQueue = mpInstance._Forwarders.getForwarderStatsQueue();
20+
const uploadsTable =
21+
mpInstance._Persistence.forwardingStatsBatches.uploadsTable;
22+
const now = Date.now();
1323

1424
if (forwarderQueue.length) {
1525
uploadsTable[now] = { uploading: false, data: forwarderQueue };
1626
mpInstance._Forwarders.setForwarderStatsQueue([]);
1727
}
1828

19-
for (var date in uploadsTable) {
20-
(function(date) {
29+
for (const date in uploadsTable) {
30+
(function(date: string) {
2131
if (uploadsTable.hasOwnProperty(date)) {
2232
if (uploadsTable[date].uploading === false) {
23-
var xhrCallback = function() {
33+
const xhrCallback = function(): void {
2434
if (xhr.readyState === 4) {
2535
if (xhr.status === 200 || xhr.status === 202) {
2636
mpInstance.Logger.verbose(
@@ -39,8 +49,8 @@ export default function forwardingStatsUploader(mpInstance) {
3949
}
4050
};
4151

42-
var xhr = mpInstance._Helpers.createXHR(xhrCallback);
43-
var forwardingStatsData = uploadsTable[date].data;
52+
const xhr = mpInstance._Helpers.createXHR(xhrCallback);
53+
const forwardingStatsData = uploadsTable[date].data;
4454
uploadsTable[date].uploading = true;
4555
mpInstance._APIClient.sendBatchForwardingStatsToServer(
4656
forwardingStatsData,

0 commit comments

Comments
 (0)