@maxzima/wa-communicator 1.0.51 → 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}`,
@@ -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,6 +170,7 @@ 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;
@@ -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.51",
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({
@@ -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
 
@@ -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_","fbclid":"_fbclid_"}}",
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_",
@@ -38,6 +38,23 @@ const communicatorTestData = {
38
38
  fbclid: '_fbclid_',
39
39
  userId: '_userId_',
40
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
+ }
41
58
  };
42
59
 
43
60
  export {
@@ -73,6 +73,7 @@ const registrationData: TRegistrationRequestData = {
73
73
  utmCampaign: communicatorTestData.utmCampaign,
74
74
  utmTerm: communicatorTestData.utmTerm,
75
75
  fbclid: communicatorTestData.fbclid,
76
+ metadata: communicatorTestData.metadata,
76
77
  };
77
78
 
78
79
  const setStorageValuesData: TStorageRequestData = {