@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.
@@ -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.productId && { last_profile_id: data.productId })));
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,2 @@
1
+ import type { TRegistrationMetadata, TRegistrationRequestBodySourceMetadata } from "@root/types";
2
+ export declare function prepareMetadata(obj: TRegistrationMetadata): TRegistrationRequestBodySourceMetadata[];
@@ -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
- productId?: string;
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 {};
@@ -1 +1,2 @@
1
+ export * from "./TRegistrationMetadata";
1
2
  export * from "./TCommunicator";
@@ -1 +1,2 @@
1
+ export * from "./TRegistrationMetadata";
1
2
  export * from "./TCommunicator";
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "1.0.50",
2
+ "version": "1.0.52",
3
3
  "name": "@maxzima/wa-communicator",
4
4
  "description": "",
5
5
  "author": "Noname",
@@ -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.productId && { last_profile_id: data.productId })
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
- productId?: string,
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>>;
@@ -1 +1,2 @@
1
+ export * from "./TRegistrationMetadata";
1
2
  export * from "./TCommunicator";
@@ -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":"_productId_"}",
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, setStorageValuesDataWithProductId,
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(setStorageValuesDataWithProductId);
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
- productId: '_productId_',
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 setStorageValuesDataWithProductId: TStorageRequestData = {
84
+ const setStorageValuesDataWithProfileId: TStorageRequestData = {
83
85
  accessToken: communicatorTestData.accessToken,
84
86
  origin: communicatorTestData.origin,
85
- productId: communicatorTestData.productId
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
- setStorageValuesDataWithProductId,
114
+ setStorageValuesDataWithProfileId,
113
115
  getRestrictedCountriesData,
114
116
  profileAssignData,
115
117
  getAssignedProductsData