@maxzima/wa-communicator 1.0.50 → 1.0.52
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/engine/Communicator/Constants/RegistrationMetadata.d.ts +1 -0
- package/dist/engine/Communicator/Constants/RegistrationMetadata.js +17 -0
- package/dist/engine/Communicator/Public/Communicator.js +4 -3
- package/dist/engine/Communicator/Utils/registrationMetaData.d.ts +2 -0
- package/dist/engine/Communicator/Utils/registrationMetaData.js +13 -0
- package/dist/types/TCommunicator.d.ts +8 -1
- package/dist/types/TRegistrationMetadata.d.ts +3 -0
- package/dist/types/TRegistrationMetadata.js +1 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.js +1 -0
- package/package.json +1 -1
- package/src/engine/Communicator/Constants/RegistrationMetadata.ts +17 -0
- package/src/engine/Communicator/Public/Communicator.ts +4 -2
- package/src/engine/Communicator/Utils/registrationMetaData.ts +17 -0
- package/src/types/TCommunicator.ts +6 -1
- package/src/types/TRegistrationMetadata.ts +5 -0
- package/src/types/index.ts +1 -0
- package/test/__snapshots__/communicator.spec.ts.snap +2 -2
- package/test/communicator.spec.ts +3 -2
- package/test/testunits/communicator/general.ts +19 -1
- package/test/testunits/communicator/requests.ts +5 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const registrationMetadataKeys: readonly ["wa.country_code", "wa.device_type", "wa.hash", "google._gcl_aw", "google._ga", "meta._fbc", "meta._fbp", "microsoft._uetmsclkid", "microsoft._uetvid", "linkedin.li_fat_id", "appsflyer.cuid", "utm.source", "utm.medium", "utm.campaign", "utm.term"];
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export const registrationMetadataKeys = [
|
|
2
|
+
'wa.country_code',
|
|
3
|
+
'wa.device_type',
|
|
4
|
+
'wa.hash',
|
|
5
|
+
'google._gcl_aw',
|
|
6
|
+
'google._ga',
|
|
7
|
+
'meta._fbc',
|
|
8
|
+
'meta._fbp',
|
|
9
|
+
'microsoft._uetmsclkid',
|
|
10
|
+
'microsoft._uetvid',
|
|
11
|
+
'linkedin.li_fat_id',
|
|
12
|
+
'appsflyer.cuid',
|
|
13
|
+
'utm.source',
|
|
14
|
+
'utm.medium',
|
|
15
|
+
'utm.campaign',
|
|
16
|
+
'utm.term',
|
|
17
|
+
];
|
|
@@ -2,6 +2,7 @@ import { __awaiter } from "tslib";
|
|
|
2
2
|
import { CommunicatorDefaultRequestData } from "./../Constants/Communicator";
|
|
3
3
|
import { jsonParse } from "./../Utils/jsonParseSafe";
|
|
4
4
|
import { CommunicatorAuthAPIEndpointEnum, CommunicatorFAPIEndpointEnum } from "./../Enums/CommunicatorEnum";
|
|
5
|
+
import { prepareMetadata } from "./../Utils/registrationMetaData";
|
|
5
6
|
export class Communicator {
|
|
6
7
|
constructor(props) {
|
|
7
8
|
this.getHeaders = (token) => {
|
|
@@ -204,7 +205,7 @@ export class Communicator {
|
|
|
204
205
|
registration(data) {
|
|
205
206
|
return __awaiter(this, void 0, void 0, function* () {
|
|
206
207
|
const headers = this.getHeaders(data.accessToken);
|
|
207
|
-
const body = JSON.stringify(Object.assign(Object.assign({ name: data.name }, (data.countryCode && { country_code: data.countryCode })), { source: {
|
|
208
|
+
const body = JSON.stringify(Object.assign(Object.assign(Object.assign({ name: data.name }, (data.countryCode && { country_code: data.countryCode })), { source: {
|
|
208
209
|
hash: data.hash,
|
|
209
210
|
device_type: data.deviceType,
|
|
210
211
|
ga_id: data.gaId,
|
|
@@ -215,7 +216,7 @@ export class Communicator {
|
|
|
215
216
|
utm_campaign: data.utmCampaign,
|
|
216
217
|
utm_term: data.utmTerm,
|
|
217
218
|
fbclid: data.fbclid,
|
|
218
|
-
} }));
|
|
219
|
+
} }), (data.metadata && { metadata: prepareMetadata(data.metadata) })));
|
|
219
220
|
return yield this.send({
|
|
220
221
|
method: 'POST',
|
|
221
222
|
url: `${this.props.clientFAPIBaseUrl}${CommunicatorFAPIEndpointEnum.REGISTRATION}`,
|
|
@@ -227,7 +228,7 @@ export class Communicator {
|
|
|
227
228
|
setStorageValues(data) {
|
|
228
229
|
return __awaiter(this, void 0, void 0, function* () {
|
|
229
230
|
const headers = this.getHeaders(data.accessToken);
|
|
230
|
-
const body = JSON.stringify(Object.assign({ seo_source: data.origin }, (data.
|
|
231
|
+
const body = JSON.stringify(Object.assign({ seo_source: data.origin }, (data.profileId && { last_profile_id: data.profileId })));
|
|
231
232
|
return yield this.send({
|
|
232
233
|
method: 'POST',
|
|
233
234
|
url: `${this.props.clientFAPIBaseUrl}${CommunicatorFAPIEndpointEnum.STORAGE}`,
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { registrationMetadataKeys } from "../Constants/RegistrationMetadata";
|
|
2
|
+
export function prepareMetadata(obj) {
|
|
3
|
+
const result = [];
|
|
4
|
+
for (const key of registrationMetadataKeys) {
|
|
5
|
+
if (key in obj && typeof obj[key] === 'string') {
|
|
6
|
+
result.push({
|
|
7
|
+
key,
|
|
8
|
+
value: obj[key],
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
return result;
|
|
13
|
+
}
|
|
@@ -1,6 +1,11 @@
|
|
|
1
|
+
import type { TRegistrationMetadata, TRegistrationMetadataKey } from "./TRegistrationMetadata";
|
|
1
2
|
type TChallenge = 'email_otp' | 'mobile_otp' | 'pin' | 'out_of_band';
|
|
2
3
|
type TAuditSource = 'Backend' | 'SelfService';
|
|
3
4
|
type TRegistrationRequestBodySourceDeviceType = 'mobile' | 'regular';
|
|
5
|
+
export type TRegistrationRequestBodySourceMetadata = {
|
|
6
|
+
key: TRegistrationMetadataKey;
|
|
7
|
+
value: string;
|
|
8
|
+
};
|
|
4
9
|
type TRequestProps = {
|
|
5
10
|
url?: string;
|
|
6
11
|
method?: RequestInit['method'];
|
|
@@ -141,6 +146,7 @@ type TRegistrationRequestBodySource = {
|
|
|
141
146
|
utm_campaign: string;
|
|
142
147
|
utm_term: string;
|
|
143
148
|
fbclid: string;
|
|
149
|
+
metadata: TRegistrationRequestBodySourceMetadata[];
|
|
144
150
|
};
|
|
145
151
|
type TRegistrationRequestBody = {
|
|
146
152
|
name: string;
|
|
@@ -164,11 +170,12 @@ type TRegistrationRequestData = {
|
|
|
164
170
|
utmCampaign: TRegistrationRequestBodySource['utm_campaign'];
|
|
165
171
|
utmTerm: TRegistrationRequestBodySource['utm_term'];
|
|
166
172
|
fbclid: TRegistrationRequestBodySource['fbclid'];
|
|
173
|
+
metadata: TRegistrationMetadata;
|
|
167
174
|
};
|
|
168
175
|
type TStorageRequestData = {
|
|
169
176
|
accessToken: string;
|
|
170
177
|
origin: string;
|
|
171
|
-
|
|
178
|
+
profileId?: string;
|
|
172
179
|
};
|
|
173
180
|
type TGetRestrictedCountriesData = {
|
|
174
181
|
entityType?: import('@root/enums').CountryTypeEnum;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { registrationMetadataKeys } from "@root/engine/Communicator/Constants/RegistrationMetadata";
|
|
2
|
+
export type TRegistrationMetadataKey = typeof registrationMetadataKeys[number];
|
|
3
|
+
export type TRegistrationMetadata = Partial<Record<TRegistrationMetadataKey, string>>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/dist/types/index.d.ts
CHANGED
package/dist/types/index.js
CHANGED
package/package.json
CHANGED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export const registrationMetadataKeys = [
|
|
2
|
+
'wa.country_code',
|
|
3
|
+
'wa.device_type',
|
|
4
|
+
'wa.hash',
|
|
5
|
+
'google._gcl_aw',
|
|
6
|
+
'google._ga',
|
|
7
|
+
'meta._fbc',
|
|
8
|
+
'meta._fbp',
|
|
9
|
+
'microsoft._uetmsclkid',
|
|
10
|
+
'microsoft._uetvid',
|
|
11
|
+
'linkedin.li_fat_id',
|
|
12
|
+
'appsflyer.cuid',
|
|
13
|
+
'utm.source',
|
|
14
|
+
'utm.medium',
|
|
15
|
+
'utm.campaign',
|
|
16
|
+
'utm.term',
|
|
17
|
+
] as const;
|
|
@@ -31,6 +31,7 @@ import {
|
|
|
31
31
|
CommunicatorAuthAPIEndpointEnum,
|
|
32
32
|
CommunicatorFAPIEndpointEnum
|
|
33
33
|
} from "./../Enums/CommunicatorEnum";
|
|
34
|
+
import {prepareMetadata} from "./../Utils/registrationMetaData";
|
|
34
35
|
|
|
35
36
|
export class Communicator {
|
|
36
37
|
private props: TCommunicatorProps;
|
|
@@ -229,7 +230,8 @@ export class Communicator {
|
|
|
229
230
|
utm_campaign: data.utmCampaign,
|
|
230
231
|
utm_term: data.utmTerm,
|
|
231
232
|
fbclid: data.fbclid,
|
|
232
|
-
}
|
|
233
|
+
},
|
|
234
|
+
...(data.metadata && { metadata: prepareMetadata(data.metadata) }),
|
|
233
235
|
});
|
|
234
236
|
|
|
235
237
|
return await this.send({
|
|
@@ -244,7 +246,7 @@ export class Communicator {
|
|
|
244
246
|
const headers = this.getHeaders(data.accessToken);
|
|
245
247
|
const body = JSON.stringify({
|
|
246
248
|
seo_source: data.origin,
|
|
247
|
-
...(data.
|
|
249
|
+
...(data.profileId && { last_profile_id: data.profileId })
|
|
248
250
|
});
|
|
249
251
|
|
|
250
252
|
return await this.send({
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { registrationMetadataKeys } from "../Constants/RegistrationMetadata";
|
|
2
|
+
import type { TRegistrationMetadata, TRegistrationRequestBodySourceMetadata } from "@root/types";
|
|
3
|
+
|
|
4
|
+
export function prepareMetadata(obj: TRegistrationMetadata): TRegistrationRequestBodySourceMetadata[] {
|
|
5
|
+
const result: TRegistrationRequestBodySourceMetadata[] = [];
|
|
6
|
+
|
|
7
|
+
for (const key of registrationMetadataKeys) {
|
|
8
|
+
if (key in obj && typeof obj[key] === 'string') {
|
|
9
|
+
result.push({
|
|
10
|
+
key,
|
|
11
|
+
value: obj[key],
|
|
12
|
+
})
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
return result;
|
|
17
|
+
}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
|
+
import type {TRegistrationMetadata, TRegistrationMetadataKey} from "./TRegistrationMetadata";
|
|
2
|
+
|
|
1
3
|
type TChallenge = 'email_otp' | 'mobile_otp' | 'pin' | 'out_of_band';
|
|
2
4
|
type TAuditSource = 'Backend' | 'SelfService';
|
|
3
5
|
type TRegistrationRequestBodySourceDeviceType = 'mobile' | 'regular';
|
|
6
|
+
export type TRegistrationRequestBodySourceMetadata = { key: TRegistrationMetadataKey, value: string }
|
|
4
7
|
|
|
5
8
|
type TRequestProps = {
|
|
6
9
|
url?: string,
|
|
@@ -190,6 +193,7 @@ type TRegistrationRequestBodySource = {
|
|
|
190
193
|
utm_campaign: string,
|
|
191
194
|
utm_term: string,
|
|
192
195
|
fbclid: string,
|
|
196
|
+
metadata: TRegistrationRequestBodySourceMetadata[],
|
|
193
197
|
}
|
|
194
198
|
|
|
195
199
|
type TRegistrationRequestBody = {
|
|
@@ -216,6 +220,7 @@ type TRegistrationRequestData = {
|
|
|
216
220
|
utmCampaign: TRegistrationRequestBodySource['utm_campaign'],
|
|
217
221
|
utmTerm: TRegistrationRequestBodySource['utm_term'],
|
|
218
222
|
fbclid: TRegistrationRequestBodySource['fbclid'],
|
|
223
|
+
metadata: TRegistrationMetadata,
|
|
219
224
|
}
|
|
220
225
|
/* endregion registration */
|
|
221
226
|
|
|
@@ -223,7 +228,7 @@ type TRegistrationRequestData = {
|
|
|
223
228
|
type TStorageRequestData = {
|
|
224
229
|
accessToken: string,
|
|
225
230
|
origin: string,
|
|
226
|
-
|
|
231
|
+
profileId?: string,
|
|
227
232
|
}
|
|
228
233
|
/* endregion registration */
|
|
229
234
|
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { registrationMetadataKeys } from "@root/engine/Communicator/Constants/RegistrationMetadata";
|
|
2
|
+
|
|
3
|
+
export type TRegistrationMetadataKey = typeof registrationMetadataKeys[number];
|
|
4
|
+
|
|
5
|
+
export type TRegistrationMetadata = Partial<Record<TRegistrationMetadataKey, string>>;
|
package/src/types/index.ts
CHANGED
|
@@ -108,7 +108,7 @@ exports[`Communicator requests profileAssign 1`] = `
|
|
|
108
108
|
|
|
109
109
|
exports[`Communicator requests registration 1`] = `
|
|
110
110
|
{
|
|
111
|
-
"body": "{"name":"_companyName_","country_code":"CAN","source":{"hash":"_hash_","device_type":"mobile","ga_id":"_gaId_","origin":"_origin_","gc_id":"_gcId_","utm_source":"_utmSource_","utm_medium":"_utmMedium_","utm_campaign":"_utmCampaign_","utm_term":"_utmTerm_"}}",
|
|
111
|
+
"body": "{"name":"_companyName_","country_code":"CAN","source":{"hash":"_hash_","device_type":"mobile","ga_id":"_gaId_","origin":"_origin_","gc_id":"_gcId_","utm_source":"_utmSource_","utm_medium":"_utmMedium_","utm_campaign":"_utmCampaign_","utm_term":"_utmTerm_","fbclid":"_fbclid_"},"metadata":[{"key":"wa.country_code","value":"CAN"},{"key":"wa.device_type","value":"mobile"},{"key":"wa.hash","value":"_hash_"},{"key":"google._gcl_aw","value":"_gcl_aw_"},{"key":"google._ga","value":"_ga_"},{"key":"meta._fbc","value":"_fbc_"},{"key":"meta._fbp","value":"_fbp_"},{"key":"microsoft._uetmsclkid","value":"_uetmsclkid_"},{"key":"microsoft._uetvid","value":"_uetvid_"},{"key":"linkedin.li_fat_id","value":"_li_fat_id_"},{"key":"appsflyer.cuid","value":"_cuid_"},{"key":"utm.source","value":"_utmSource_"},{"key":"utm.medium","value":"_utmMedium_"},{"key":"utm.campaign","value":"_utmCampaign_"},{"key":"utm.term","value":"_utmTerm_"}]}",
|
|
112
112
|
"headers": {
|
|
113
113
|
"Accept": "application/json, text/plain, */*",
|
|
114
114
|
"Authorization": "Bearer _accessToken_",
|
|
@@ -134,7 +134,7 @@ exports[`Communicator requests setStorageValues 1`] = `
|
|
|
134
134
|
|
|
135
135
|
exports[`Communicator requests setStorageValuesWithProductId 1`] = `
|
|
136
136
|
{
|
|
137
|
-
"body": "{"seo_source":"_origin_","last_profile_id":"
|
|
137
|
+
"body": "{"seo_source":"_origin_","last_profile_id":"_profileId_"}",
|
|
138
138
|
"headers": {
|
|
139
139
|
"Accept": "application/json, text/plain, */*",
|
|
140
140
|
"Authorization": "Bearer _accessToken_",
|
|
@@ -17,7 +17,8 @@ import {
|
|
|
17
17
|
setStorageValuesData,
|
|
18
18
|
getRestrictedCountriesData,
|
|
19
19
|
getAssignedProductsData,
|
|
20
|
-
profileAssignData,
|
|
20
|
+
profileAssignData,
|
|
21
|
+
setStorageValuesDataWithProfileId,
|
|
21
22
|
} from "./testunits/communicator/requests";
|
|
22
23
|
import {communicatorTestData} from "./testunits/communicator/general";
|
|
23
24
|
|
|
@@ -113,7 +114,7 @@ describe('Communicator requests', () => {
|
|
|
113
114
|
});
|
|
114
115
|
|
|
115
116
|
test('setStorageValuesWithProductId', async () => {
|
|
116
|
-
const setStorageValuesRequestData = await communicator.setStorageValues(
|
|
117
|
+
const setStorageValuesRequestData = await communicator.setStorageValues(setStorageValuesDataWithProfileId);
|
|
117
118
|
expect(setStorageValuesRequestData).toMatchSnapshot();
|
|
118
119
|
});
|
|
119
120
|
|
|
@@ -35,8 +35,26 @@ const communicatorTestData = {
|
|
|
35
35
|
utmMedium: '_utmMedium_',
|
|
36
36
|
utmCampaign: '_utmCampaign_',
|
|
37
37
|
utmTerm: '_utmTerm_',
|
|
38
|
+
fbclid: '_fbclid_',
|
|
38
39
|
userId: '_userId_',
|
|
39
|
-
|
|
40
|
+
profileId: '_profileId_',
|
|
41
|
+
metadata: {
|
|
42
|
+
'wa.country_code': 'CAN',
|
|
43
|
+
'wa.device_type': 'mobile' as TRegistrationRequestBodySourceDeviceType,
|
|
44
|
+
'wa.hash': '_hash_',
|
|
45
|
+
'google._gcl_aw': '_gcl_aw_',
|
|
46
|
+
'google._ga': '_ga_',
|
|
47
|
+
'meta._fbc': '_fbc_',
|
|
48
|
+
'meta._fbp': '_fbp_',
|
|
49
|
+
'microsoft._uetmsclkid': '_uetmsclkid_',
|
|
50
|
+
'microsoft._uetvid': '_uetvid_',
|
|
51
|
+
'linkedin.li_fat_id': '_li_fat_id_',
|
|
52
|
+
'appsflyer.cuid': '_cuid_',
|
|
53
|
+
'utm.source': '_utmSource_',
|
|
54
|
+
'utm.medium': '_utmMedium_',
|
|
55
|
+
'utm.campaign': '_utmCampaign_',
|
|
56
|
+
'utm.term': '_utmTerm_',
|
|
57
|
+
}
|
|
40
58
|
};
|
|
41
59
|
|
|
42
60
|
export {
|
|
@@ -72,6 +72,8 @@ const registrationData: TRegistrationRequestData = {
|
|
|
72
72
|
utmMedium: communicatorTestData.utmMedium,
|
|
73
73
|
utmCampaign: communicatorTestData.utmCampaign,
|
|
74
74
|
utmTerm: communicatorTestData.utmTerm,
|
|
75
|
+
fbclid: communicatorTestData.fbclid,
|
|
76
|
+
metadata: communicatorTestData.metadata,
|
|
75
77
|
};
|
|
76
78
|
|
|
77
79
|
const setStorageValuesData: TStorageRequestData = {
|
|
@@ -79,10 +81,10 @@ const setStorageValuesData: TStorageRequestData = {
|
|
|
79
81
|
origin: communicatorTestData.origin,
|
|
80
82
|
};
|
|
81
83
|
|
|
82
|
-
const
|
|
84
|
+
const setStorageValuesDataWithProfileId: TStorageRequestData = {
|
|
83
85
|
accessToken: communicatorTestData.accessToken,
|
|
84
86
|
origin: communicatorTestData.origin,
|
|
85
|
-
|
|
87
|
+
profileId: communicatorTestData.profileId
|
|
86
88
|
};
|
|
87
89
|
|
|
88
90
|
const getRestrictedCountriesData: TGetRestrictedCountriesData = {
|
|
@@ -109,7 +111,7 @@ export {
|
|
|
109
111
|
getCurrentUserProfileData,
|
|
110
112
|
registrationData,
|
|
111
113
|
setStorageValuesData,
|
|
112
|
-
|
|
114
|
+
setStorageValuesDataWithProfileId,
|
|
113
115
|
getRestrictedCountriesData,
|
|
114
116
|
profileAssignData,
|
|
115
117
|
getAssignedProductsData
|