@clix-so/react-native-sdk 0.0.1

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.
Files changed (100) hide show
  1. package/LICENSE +27 -0
  2. package/README.md +345 -0
  3. package/lib/module/core/Clix.js +217 -0
  4. package/lib/module/core/Clix.js.map +1 -0
  5. package/lib/module/core/ClixConfig.js +4 -0
  6. package/lib/module/core/ClixConfig.js.map +1 -0
  7. package/lib/module/core/ClixInitCoordinator.js +58 -0
  8. package/lib/module/core/ClixInitCoordinator.js.map +1 -0
  9. package/lib/module/core/ClixVersion.js +17 -0
  10. package/lib/module/core/ClixVersion.js.map +1 -0
  11. package/lib/module/index.js +7 -0
  12. package/lib/module/index.js.map +1 -0
  13. package/lib/module/models/ClixDevice.js +51 -0
  14. package/lib/module/models/ClixDevice.js.map +1 -0
  15. package/lib/module/models/ClixPushNotificationPayload.js +21 -0
  16. package/lib/module/models/ClixPushNotificationPayload.js.map +1 -0
  17. package/lib/module/models/ClixUserProperty.js +44 -0
  18. package/lib/module/models/ClixUserProperty.js.map +1 -0
  19. package/lib/module/package.json +1 -0
  20. package/lib/module/services/ClixAPIClient.js +172 -0
  21. package/lib/module/services/ClixAPIClient.js.map +1 -0
  22. package/lib/module/services/DeviceAPIService.js +112 -0
  23. package/lib/module/services/DeviceAPIService.js.map +1 -0
  24. package/lib/module/services/DeviceService.js +157 -0
  25. package/lib/module/services/DeviceService.js.map +1 -0
  26. package/lib/module/services/EventAPIService.js +36 -0
  27. package/lib/module/services/EventAPIService.js.map +1 -0
  28. package/lib/module/services/EventService.js +29 -0
  29. package/lib/module/services/EventService.js.map +1 -0
  30. package/lib/module/services/NotificationService.js +549 -0
  31. package/lib/module/services/NotificationService.js.map +1 -0
  32. package/lib/module/services/StorageService.js +76 -0
  33. package/lib/module/services/StorageService.js.map +1 -0
  34. package/lib/module/services/TokenService.js +71 -0
  35. package/lib/module/services/TokenService.js.map +1 -0
  36. package/lib/module/utils/ClixError.js +63 -0
  37. package/lib/module/utils/ClixError.js.map +1 -0
  38. package/lib/module/utils/UUID.js +28 -0
  39. package/lib/module/utils/UUID.js.map +1 -0
  40. package/lib/module/utils/logging/ClixLogger.js +55 -0
  41. package/lib/module/utils/logging/ClixLogger.js.map +1 -0
  42. package/lib/typescript/package.json +1 -0
  43. package/lib/typescript/src/core/Clix.d.ts +67 -0
  44. package/lib/typescript/src/core/Clix.d.ts.map +1 -0
  45. package/lib/typescript/src/core/ClixConfig.d.ts +9 -0
  46. package/lib/typescript/src/core/ClixConfig.d.ts.map +1 -0
  47. package/lib/typescript/src/core/ClixInitCoordinator.d.ts +16 -0
  48. package/lib/typescript/src/core/ClixInitCoordinator.d.ts.map +1 -0
  49. package/lib/typescript/src/core/ClixVersion.d.ts +6 -0
  50. package/lib/typescript/src/core/ClixVersion.d.ts.map +1 -0
  51. package/lib/typescript/src/index.d.ts +5 -0
  52. package/lib/typescript/src/index.d.ts.map +1 -0
  53. package/lib/typescript/src/models/ClixDevice.d.ts +42 -0
  54. package/lib/typescript/src/models/ClixDevice.d.ts.map +1 -0
  55. package/lib/typescript/src/models/ClixPushNotificationPayload.d.ts +23 -0
  56. package/lib/typescript/src/models/ClixPushNotificationPayload.d.ts.map +1 -0
  57. package/lib/typescript/src/models/ClixUserProperty.d.ts +19 -0
  58. package/lib/typescript/src/models/ClixUserProperty.d.ts.map +1 -0
  59. package/lib/typescript/src/services/ClixAPIClient.d.ts +35 -0
  60. package/lib/typescript/src/services/ClixAPIClient.d.ts.map +1 -0
  61. package/lib/typescript/src/services/DeviceAPIService.d.ts +13 -0
  62. package/lib/typescript/src/services/DeviceAPIService.d.ts.map +1 -0
  63. package/lib/typescript/src/services/DeviceService.d.ts +20 -0
  64. package/lib/typescript/src/services/DeviceService.d.ts.map +1 -0
  65. package/lib/typescript/src/services/EventAPIService.d.ts +7 -0
  66. package/lib/typescript/src/services/EventAPIService.d.ts.map +1 -0
  67. package/lib/typescript/src/services/EventService.d.ts +9 -0
  68. package/lib/typescript/src/services/EventService.d.ts.map +1 -0
  69. package/lib/typescript/src/services/NotificationService.d.ts +56 -0
  70. package/lib/typescript/src/services/NotificationService.d.ts.map +1 -0
  71. package/lib/typescript/src/services/StorageService.d.ts +10 -0
  72. package/lib/typescript/src/services/StorageService.d.ts.map +1 -0
  73. package/lib/typescript/src/services/TokenService.d.ts +15 -0
  74. package/lib/typescript/src/services/TokenService.d.ts.map +1 -0
  75. package/lib/typescript/src/utils/ClixError.d.ts +41 -0
  76. package/lib/typescript/src/utils/ClixError.d.ts.map +1 -0
  77. package/lib/typescript/src/utils/UUID.d.ts +14 -0
  78. package/lib/typescript/src/utils/UUID.d.ts.map +1 -0
  79. package/lib/typescript/src/utils/logging/ClixLogger.d.ts +18 -0
  80. package/lib/typescript/src/utils/logging/ClixLogger.d.ts.map +1 -0
  81. package/package.json +151 -0
  82. package/src/core/Clix.ts +256 -0
  83. package/src/core/ClixConfig.ts +9 -0
  84. package/src/core/ClixInitCoordinator.ts +65 -0
  85. package/src/core/ClixVersion.ts +17 -0
  86. package/src/index.ts +5 -0
  87. package/src/models/ClixDevice.ts +88 -0
  88. package/src/models/ClixPushNotificationPayload.ts +38 -0
  89. package/src/models/ClixUserProperty.ts +58 -0
  90. package/src/services/ClixAPIClient.ts +248 -0
  91. package/src/services/DeviceAPIService.ts +187 -0
  92. package/src/services/DeviceService.ts +204 -0
  93. package/src/services/EventAPIService.ts +48 -0
  94. package/src/services/EventService.ts +45 -0
  95. package/src/services/NotificationService.ts +730 -0
  96. package/src/services/StorageService.ts +84 -0
  97. package/src/services/TokenService.ts +84 -0
  98. package/src/utils/ClixError.ts +78 -0
  99. package/src/utils/UUID.ts +29 -0
  100. package/src/utils/logging/ClixLogger.ts +61 -0
@@ -0,0 +1 @@
1
+ {"version":3,"names":["ClixVersion","fallBackVersion","getVersion","cachedVersion","require","version","error"],"sourceRoot":"../../../src","sources":["core/ClixVersion.ts"],"mappings":";;AAAA,OAAO,MAAMA,WAAW,CAAC;EAEvB,OAAeC,eAAe,GAAW,OAAO;EAEhD,aAAaC,UAAUA,CAAA,EAAoB;IACzC,IAAI,IAAI,CAACC,aAAa,EAAE;MACtB,OAAO,IAAI,CAACA,aAAa;IAC3B;IACA,IAAI;MACF,IAAI,CAACA,aAAa,GAChBC,OAAO,CAAC,uBAAuB,CAAC,CAACC,OAAO,IAAI,IAAI,CAACJ,eAAe;MAClE,OAAO,IAAI,CAACE,aAAa;IAC3B,CAAC,CAAC,OAAOG,KAAK,EAAE;MACd,OAAO,OAAO;IAChB;EACF;AACF","ignoreList":[]}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+
3
+ import { Clix } from "./core/Clix.js";
4
+ import { ClixLogLevel } from "./utils/logging/ClixLogger.js";
5
+ export { ClixLogLevel };
6
+ export default Clix;
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Clix","ClixLogLevel"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;AAAA,SAASA,IAAI,QAAQ,gBAAa;AAClC,SAASC,YAAY,QAAQ,+BAA4B;AAEzD,SAASA,YAAY;AACrB,eAAeD,IAAI","ignoreList":[]}
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+
3
+ export class ClixDevice {
4
+ constructor(device) {
5
+ this.id = device.id;
6
+ this.platform = device.platform;
7
+ this.model = device.model;
8
+ this.manufacturer = device.manufacturer;
9
+ this.osName = device.osName;
10
+ this.osVersion = device.osVersion;
11
+ this.localeRegion = device.localeRegion;
12
+ this.localeLanguage = device.localeLanguage;
13
+ this.timezone = device.timezone;
14
+ this.appName = device.appName;
15
+ this.appVersion = device.appVersion;
16
+ this.sdkType = device.sdkType;
17
+ this.sdkVersion = device.sdkVersion;
18
+ this.adId = device.adId;
19
+ this.isPushPermissionGranted = device.isPushPermissionGranted;
20
+ this.pushToken = device.pushToken;
21
+ this.pushTokenType = device.pushTokenType;
22
+ }
23
+ copyWith(updates) {
24
+ return new ClixDevice({
25
+ id: updates.id ?? this.id,
26
+ platform: updates.platform ?? this.platform,
27
+ model: updates.model ?? this.model,
28
+ manufacturer: updates.manufacturer ?? this.manufacturer,
29
+ osName: updates.osName ?? this.osName,
30
+ osVersion: updates.osVersion ?? this.osVersion,
31
+ localeRegion: updates.localeRegion ?? this.localeRegion,
32
+ localeLanguage: updates.localeLanguage ?? this.localeLanguage,
33
+ timezone: updates.timezone ?? this.timezone,
34
+ appName: updates.appName ?? this.appName,
35
+ appVersion: updates.appVersion ?? this.appVersion,
36
+ sdkType: updates.sdkType ?? this.sdkType,
37
+ sdkVersion: updates.sdkVersion ?? this.sdkVersion,
38
+ adId: updates.adId ?? this.adId,
39
+ isPushPermissionGranted: updates.isPushPermissionGranted ?? this.isPushPermissionGranted,
40
+ pushToken: updates.pushToken ?? this.pushToken,
41
+ pushTokenType: updates.pushTokenType ?? this.pushTokenType
42
+ });
43
+ }
44
+ equals(other) {
45
+ return this.id === other.id;
46
+ }
47
+ toString() {
48
+ return `ClixDevice(id: ${this.id}, platform: ${this.platform}, model: ${this.model})`;
49
+ }
50
+ }
51
+ //# sourceMappingURL=ClixDevice.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["ClixDevice","constructor","device","id","platform","model","manufacturer","osName","osVersion","localeRegion","localeLanguage","timezone","appName","appVersion","sdkType","sdkVersion","adId","isPushPermissionGranted","pushToken","pushTokenType","copyWith","updates","equals","other","toString"],"sourceRoot":"../../../src","sources":["models/ClixDevice.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+
3
+ export class ClixPushNotificationPayload {
4
+ constructor(payload) {
5
+ this.messageId = payload.messageId;
6
+ this.campaignId = payload.campaignId;
7
+ this.userId = payload.userId;
8
+ this.deviceId = payload.deviceId;
9
+ this.trackingId = payload.trackingId;
10
+ this.landingUrl = payload.landingUrl;
11
+ this.imageUrl = payload.imageUrl;
12
+ this.customProperties = payload.customProperties;
13
+ }
14
+ equals(other) {
15
+ return this.messageId === other.messageId;
16
+ }
17
+ toString() {
18
+ return `ClixPushNotificationPayload(messageId: ${this.messageId}, campaignId: ${this.campaignId})`;
19
+ }
20
+ }
21
+ //# sourceMappingURL=ClixPushNotificationPayload.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["ClixPushNotificationPayload","constructor","payload","messageId","campaignId","userId","deviceId","trackingId","landingUrl","imageUrl","customProperties","equals","other","toString"],"sourceRoot":"../../../src","sources":["models/ClixPushNotificationPayload.ts"],"mappings":";;AAAA,OAAO,MAAMA,2BAA2B,CAAC;EAUvCC,WAAWA,CAACC,OASX,EAAE;IACD,IAAI,CAACC,SAAS,GAAGD,OAAO,CAACC,SAAS;IAClC,IAAI,CAACC,UAAU,GAAGF,OAAO,CAACE,UAAU;IACpC,IAAI,CAACC,MAAM,GAAGH,OAAO,CAACG,MAAM;IAC5B,IAAI,CAACC,QAAQ,GAAGJ,OAAO,CAACI,QAAQ;IAChC,IAAI,CAACC,UAAU,GAAGL,OAAO,CAACK,UAAU;IACpC,IAAI,CAACC,UAAU,GAAGN,OAAO,CAACM,UAAU;IACpC,IAAI,CAACC,QAAQ,GAAGP,OAAO,CAACO,QAAQ;IAChC,IAAI,CAACC,gBAAgB,GAAGR,OAAO,CAACQ,gBAAgB;EAClD;EAEAC,MAAMA,CAACC,KAAkC,EAAW;IAClD,OAAO,IAAI,CAACT,SAAS,KAAKS,KAAK,CAACT,SAAS;EAC3C;EAEAU,QAAQA,CAAA,EAAW;IACjB,OAAO,0CAA0C,IAAI,CAACV,SAAS,iBAAiB,IAAI,CAACC,UAAU,GAAG;EACpG;AACF","ignoreList":[]}
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+
3
+ export let PropertyType = /*#__PURE__*/function (PropertyType) {
4
+ PropertyType["String"] = "USER_PROPERTY_TYPE_STRING";
5
+ PropertyType["Number"] = "USER_PROPERTY_TYPE_NUMBER";
6
+ PropertyType["Boolean"] = "USER_PROPERTY_TYPE_BOOLEAN";
7
+ return PropertyType;
8
+ }({});
9
+ export class ClixUserProperty {
10
+ constructor(property) {
11
+ this.name = property.name;
12
+ this.valueString = property.valueString;
13
+ this.type = property.type;
14
+ }
15
+ static of(name, value) {
16
+ let type;
17
+ let codableValue;
18
+ if (typeof value === 'boolean') {
19
+ type = PropertyType.Boolean;
20
+ codableValue = value;
21
+ } else if (typeof value === 'number') {
22
+ type = PropertyType.Number;
23
+ codableValue = value;
24
+ } else if (typeof value === 'string') {
25
+ type = PropertyType.String;
26
+ codableValue = value;
27
+ } else {
28
+ type = PropertyType.String;
29
+ codableValue = value.toString();
30
+ }
31
+ return new ClixUserProperty({
32
+ name,
33
+ valueString: codableValue,
34
+ type
35
+ });
36
+ }
37
+ equals(other) {
38
+ return this.name === other.name && this.valueString === other.valueString && this.type === other.type;
39
+ }
40
+ toString() {
41
+ return `ClixUserProperty(name: ${this.name}, value: ${this.valueString}, type: ${this.type})`;
42
+ }
43
+ }
44
+ //# sourceMappingURL=ClixUserProperty.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["PropertyType","ClixUserProperty","constructor","property","name","valueString","type","of","value","codableValue","Boolean","Number","String","toString","equals","other"],"sourceRoot":"../../../src","sources":["models/ClixUserProperty.ts"],"mappings":";;AAAA,WAAYA,YAAY,0BAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAA,OAAZA,YAAY;AAAA;AAMxB,OAAO,MAAMC,gBAAgB,CAAC;EAK5BC,WAAWA,CAACC,QAIX,EAAE;IACD,IAAI,CAACC,IAAI,GAAGD,QAAQ,CAACC,IAAI;IACzB,IAAI,CAACC,WAAW,GAAGF,QAAQ,CAACE,WAAW;IACvC,IAAI,CAACC,IAAI,GAAGH,QAAQ,CAACG,IAAI;EAC3B;EAEA,OAAOC,EAAEA,CAACH,IAAY,EAAEI,KAAU,EAAoB;IACpD,IAAIF,IAAkB;IACtB,IAAIG,YAAiB;IAErB,IAAI,OAAOD,KAAK,KAAK,SAAS,EAAE;MAC9BF,IAAI,GAAGN,YAAY,CAACU,OAAO;MAC3BD,YAAY,GAAGD,KAAK;IACtB,CAAC,MAAM,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;MACpCF,IAAI,GAAGN,YAAY,CAACW,MAAM;MAC1BF,YAAY,GAAGD,KAAK;IACtB,CAAC,MAAM,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;MACpCF,IAAI,GAAGN,YAAY,CAACY,MAAM;MAC1BH,YAAY,GAAGD,KAAK;IACtB,CAAC,MAAM;MACLF,IAAI,GAAGN,YAAY,CAACY,MAAM;MAC1BH,YAAY,GAAGD,KAAK,CAACK,QAAQ,CAAC,CAAC;IACjC;IAEA,OAAO,IAAIZ,gBAAgB,CAAC;MAC1BG,IAAI;MACJC,WAAW,EAAEI,YAAY;MACzBH;IACF,CAAC,CAAC;EACJ;EAEAQ,MAAMA,CAACC,KAAuB,EAAW;IACvC,OACE,IAAI,CAACX,IAAI,KAAKW,KAAK,CAACX,IAAI,IACxB,IAAI,CAACC,WAAW,KAAKU,KAAK,CAACV,WAAW,IACtC,IAAI,CAACC,IAAI,KAAKS,KAAK,CAACT,IAAI;EAE5B;EAEAO,QAAQA,CAAA,EAAW;IACjB,OAAO,0BAA0B,IAAI,CAACT,IAAI,YAAY,IAAI,CAACC,WAAW,WAAW,IAAI,CAACC,IAAI,GAAG;EAC/F;AACF","ignoreList":[]}
@@ -0,0 +1 @@
1
+ {"type":"module"}
@@ -0,0 +1,172 @@
1
+ "use strict";
2
+
3
+ import { ClixVersion } from "../core/ClixVersion.js";
4
+ import { ClixLogger } from "../utils/logging/ClixLogger.js";
5
+ export class ClixAPIClient {
6
+ static API_BASE_PATH = '/api/v1';
7
+ constructor(config) {
8
+ this.config = config;
9
+ }
10
+ async getCommonHeaders() {
11
+ const version = await ClixVersion.getVersion();
12
+ const headers = {
13
+ 'Content-Type': 'application/json',
14
+ 'X-Clix-Project-ID': this.config.projectId,
15
+ 'X-Clix-API-Key': this.config.apiKey,
16
+ 'User-Agent': `clix-react-native-sdk/${version}`
17
+ };
18
+ if (this.config.extraHeaders) {
19
+ Object.assign(headers, this.config.extraHeaders);
20
+ }
21
+ return headers;
22
+ }
23
+ buildUrl(path) {
24
+ const endpoint = this.config.endpoint || 'https://api.clix.so';
25
+ const baseUrl = endpoint.endsWith('/') ? endpoint.slice(0, -1) : endpoint;
26
+ const fullPath = path.startsWith('/') ? path : `/${path}`;
27
+ return `${baseUrl}${ClixAPIClient.API_BASE_PATH}${fullPath}`;
28
+ }
29
+ buildUrlWithQuery(path, queryParameters) {
30
+ const url = this.buildUrl(path);
31
+ if (queryParameters && Object.keys(queryParameters).length > 0) {
32
+ const searchParams = new URLSearchParams();
33
+ Object.entries(queryParameters).forEach(([key, value]) => {
34
+ if (value !== null && value !== undefined) {
35
+ searchParams.append(key, String(value));
36
+ }
37
+ });
38
+ return `${url}?${searchParams.toString()}`;
39
+ }
40
+ return url;
41
+ }
42
+ async get(path, options) {
43
+ const url = this.buildUrlWithQuery(path, options?.queryParameters);
44
+ const commonHeaders = await this.getCommonHeaders();
45
+ const requestHeaders = {
46
+ ...commonHeaders,
47
+ ...options?.headers
48
+ };
49
+ ClixLogger.debug(`API GET ${path}`);
50
+ ClixLogger.debug(`Making request to: ${url}`);
51
+ try {
52
+ const response = await fetch(url, {
53
+ method: 'GET',
54
+ headers: requestHeaders
55
+ });
56
+ const data = await this.parseResponse(response);
57
+ ClixLogger.debug(`Response Status: ${response.status}`);
58
+ ClixLogger.debug(`Response Body: ${JSON.stringify(data)}`);
59
+ return {
60
+ status: response.status,
61
+ data,
62
+ headers: this.headersToRecord(response.headers)
63
+ };
64
+ } catch (error) {
65
+ ClixLogger.error(`GET ${path} failed`, error);
66
+ throw error;
67
+ }
68
+ }
69
+ async post(path, options) {
70
+ const url = this.buildUrlWithQuery(path, options?.queryParameters);
71
+ const commonHeaders = await this.getCommonHeaders();
72
+ const requestHeaders = {
73
+ ...commonHeaders,
74
+ ...options?.headers
75
+ };
76
+ ClixLogger.debug(`API POST ${path}`);
77
+ if (options?.body) {
78
+ ClixLogger.debug(`Request Body: ${JSON.stringify(options.body)}`);
79
+ }
80
+ if (options?.queryParameters && Object.keys(options.queryParameters).length > 0) {
81
+ ClixLogger.debug(`Query Parameters: ${JSON.stringify(options.queryParameters)}`);
82
+ }
83
+ const body = options?.body ? JSON.stringify(options.body) : undefined;
84
+ try {
85
+ const response = await fetch(url, {
86
+ method: 'POST',
87
+ headers: requestHeaders,
88
+ body
89
+ });
90
+ const data = await this.parseResponse(response);
91
+ ClixLogger.debug(`Response Status: ${response.status}`);
92
+ ClixLogger.debug(`Response Body: ${JSON.stringify(data)}`);
93
+ return {
94
+ status: response.status,
95
+ data,
96
+ headers: this.headersToRecord(response.headers)
97
+ };
98
+ } catch (error) {
99
+ ClixLogger.error(`POST ${path} failed`, error);
100
+ throw error;
101
+ }
102
+ }
103
+ async put(path, options) {
104
+ const url = this.buildUrlWithQuery(path, options?.queryParameters);
105
+ const commonHeaders = await this.getCommonHeaders();
106
+ const requestHeaders = {
107
+ ...commonHeaders,
108
+ ...options?.headers
109
+ };
110
+ ClixLogger.debug(`API PUT ${path}`);
111
+ const body = options?.body ? JSON.stringify(options.body) : undefined;
112
+ try {
113
+ const response = await fetch(url, {
114
+ method: 'PUT',
115
+ headers: requestHeaders,
116
+ body
117
+ });
118
+ const data = await this.parseResponse(response);
119
+ ClixLogger.debug(`Response Status: ${response.status}`);
120
+ ClixLogger.debug(`Response Body: ${JSON.stringify(data)}`);
121
+ return {
122
+ status: response.status,
123
+ data,
124
+ headers: this.headersToRecord(response.headers)
125
+ };
126
+ } catch (error) {
127
+ ClixLogger.error(`PUT ${path} failed`, error);
128
+ throw error;
129
+ }
130
+ }
131
+ async delete(path, options) {
132
+ const url = this.buildUrlWithQuery(path, options?.queryParameters);
133
+ const commonHeaders = await this.getCommonHeaders();
134
+ const requestHeaders = {
135
+ ...commonHeaders,
136
+ ...options?.headers
137
+ };
138
+ ClixLogger.debug(`API DELETE ${path}`);
139
+ try {
140
+ const response = await fetch(url, {
141
+ method: 'DELETE',
142
+ headers: requestHeaders
143
+ });
144
+ const data = await this.parseResponse(response);
145
+ ClixLogger.debug(`Response Status: ${response.status}`);
146
+ ClixLogger.debug(`Response Body: ${JSON.stringify(data)}`);
147
+ return {
148
+ status: response.status,
149
+ data,
150
+ headers: this.headersToRecord(response.headers)
151
+ };
152
+ } catch (error) {
153
+ ClixLogger.error(`DELETE ${path} failed`, error);
154
+ throw error;
155
+ }
156
+ }
157
+ async parseResponse(response) {
158
+ const contentType = response.headers.get('content-type');
159
+ if (contentType && contentType.includes('application/json')) {
160
+ return await response.json();
161
+ }
162
+ return await response.text();
163
+ }
164
+ headersToRecord(headers) {
165
+ const record = {};
166
+ headers.forEach((value, key) => {
167
+ record[key] = value;
168
+ });
169
+ return record;
170
+ }
171
+ }
172
+ //# sourceMappingURL=ClixAPIClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["ClixVersion","ClixLogger","ClixAPIClient","API_BASE_PATH","constructor","config","getCommonHeaders","version","getVersion","headers","projectId","apiKey","extraHeaders","Object","assign","buildUrl","path","endpoint","baseUrl","endsWith","slice","fullPath","startsWith","buildUrlWithQuery","queryParameters","url","keys","length","searchParams","URLSearchParams","entries","forEach","key","value","undefined","append","String","toString","get","options","commonHeaders","requestHeaders","debug","response","fetch","method","data","parseResponse","status","JSON","stringify","headersToRecord","error","post","body","put","delete","contentType","includes","json","text","record"],"sourceRoot":"../../../src","sources":["services/ClixAPIClient.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,112 @@
1
+ "use strict";
2
+
3
+ import { ClixLogger } from "../utils/logging/ClixLogger.js";
4
+ export class DeviceAPIService {
5
+ constructor(apiClient) {
6
+ this.apiClient = apiClient;
7
+ }
8
+ async registerDevice(device) {
9
+ try {
10
+ ClixLogger.debug(`Upserting device: ${device.id}`);
11
+ const response = await this.apiClient.post('/devices', {
12
+ body: {
13
+ devices: [{
14
+ id: device.id,
15
+ platform: device.platform,
16
+ model: device.model,
17
+ manufacturer: device.manufacturer,
18
+ os_name: device.osName,
19
+ os_version: device.osVersion,
20
+ locale_region: device.localeRegion,
21
+ locale_language: device.localeLanguage,
22
+ timezone: device.timezone,
23
+ app_name: device.appName,
24
+ app_version: device.appVersion,
25
+ sdk_type: device.sdkType,
26
+ sdk_version: device.sdkVersion,
27
+ ad_id: device.adId,
28
+ is_push_permission_granted: device.isPushPermissionGranted,
29
+ push_token: device.pushToken,
30
+ push_token_type: device.pushTokenType
31
+ }]
32
+ }
33
+ });
34
+ if (response.status < 200 || response.status >= 300) {
35
+ throw new Error(`HTTP ${response.status}: ${JSON.stringify(response.data)}`);
36
+ }
37
+ ClixLogger.debug(`Device upserted successfully: ${device.id}`);
38
+ } catch (error) {
39
+ ClixLogger.error(`Failed to upsert device: ${device.id}`, error);
40
+ throw error;
41
+ }
42
+ }
43
+ async setProjectUserId(deviceId, projectUserId) {
44
+ try {
45
+ ClixLogger.debug(`Setting project user ID for device: ${deviceId}`);
46
+ const response = await this.apiClient.post(`/devices/${deviceId}/user/project-user-id`, {
47
+ body: {
48
+ project_user_id: projectUserId
49
+ }
50
+ });
51
+ if (response.status < 200 || response.status >= 300) {
52
+ throw new Error(`HTTP ${response.status}: ${JSON.stringify(response.data)}`);
53
+ }
54
+ ClixLogger.debug(`Project user ID set successfully for device: ${deviceId}`);
55
+ } catch (error) {
56
+ ClixLogger.error(`Failed to set project user ID for device: ${deviceId}`, error);
57
+ throw error;
58
+ }
59
+ }
60
+ async removeProjectUserId(deviceId) {
61
+ try {
62
+ ClixLogger.debug(`Removing project user ID for device: ${deviceId}`);
63
+ const response = await this.apiClient.delete(`/devices/${deviceId}/user/project-user-id`);
64
+ if (response.status < 200 || response.status >= 300) {
65
+ throw new Error(`HTTP ${response.status}: ${JSON.stringify(response.data)}`);
66
+ }
67
+ ClixLogger.debug(`Project user ID removed successfully for device: ${deviceId}`);
68
+ } catch (error) {
69
+ ClixLogger.error(`Failed to remove project user ID for device: ${deviceId}`, error);
70
+ throw error;
71
+ }
72
+ }
73
+ async upsertUserProperties(deviceId, properties) {
74
+ try {
75
+ ClixLogger.debug(`Upserting ${properties.length} user properties for device: ${deviceId}`);
76
+ const response = await this.apiClient.post(`/devices/${deviceId}/user/properties`, {
77
+ body: {
78
+ properties: properties.map(p => ({
79
+ name: p.name,
80
+ value_string: p.valueString,
81
+ type: p.type
82
+ }))
83
+ }
84
+ });
85
+ if (response.status < 200 || response.status >= 300) {
86
+ throw new Error(`HTTP ${response.status}: ${JSON.stringify(response.data)}`);
87
+ }
88
+ ClixLogger.debug(`User properties upserted successfully for device: ${deviceId}`);
89
+ } catch (error) {
90
+ ClixLogger.error(`Failed to upsert user properties for device: ${deviceId}`, error);
91
+ throw error;
92
+ }
93
+ }
94
+ async removeUserProperties(deviceId, propertyNames) {
95
+ try {
96
+ ClixLogger.debug(`Removing ${propertyNames.length} user properties for device: ${deviceId}`);
97
+ const response = await this.apiClient.delete(`/devices/${deviceId}/user/properties`, {
98
+ queryParameters: {
99
+ property_names: propertyNames.join(',')
100
+ }
101
+ });
102
+ if (response.status < 200 || response.status >= 300) {
103
+ throw new Error(`HTTP ${response.status}: ${JSON.stringify(response.data)}`);
104
+ }
105
+ ClixLogger.debug(`User properties removed successfully for device: ${deviceId}`);
106
+ } catch (error) {
107
+ ClixLogger.error(`Failed to remove user properties for device: ${deviceId}`, error);
108
+ throw error;
109
+ }
110
+ }
111
+ }
112
+ //# sourceMappingURL=DeviceAPIService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["ClixLogger","DeviceAPIService","constructor","apiClient","registerDevice","device","debug","id","response","post","body","devices","platform","model","manufacturer","os_name","osName","os_version","osVersion","locale_region","localeRegion","locale_language","localeLanguage","timezone","app_name","appName","app_version","appVersion","sdk_type","sdkType","sdk_version","sdkVersion","ad_id","adId","is_push_permission_granted","isPushPermissionGranted","push_token","pushToken","push_token_type","pushTokenType","status","Error","JSON","stringify","data","error","setProjectUserId","deviceId","projectUserId","project_user_id","removeProjectUserId","delete","upsertUserProperties","properties","length","map","p","name","value_string","valueString","type","removeUserProperties","propertyNames","queryParameters","property_names","join"],"sourceRoot":"../../../src","sources":["services/DeviceAPIService.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,157 @@
1
+ "use strict";
2
+
3
+ import messaging from '@react-native-firebase/messaging';
4
+ import { Platform } from 'react-native';
5
+ import DeviceInfo from 'react-native-device-info';
6
+ import { ClixVersion } from "../core/ClixVersion.js";
7
+ import { ClixDevice } from "../models/ClixDevice.js";
8
+ import { ClixUserProperty } from "../models/ClixUserProperty.js";
9
+ import { ClixError } from "../utils/ClixError.js";
10
+ import { ClixLogger } from "../utils/logging/ClixLogger.js";
11
+ import { UUID } from "../utils/UUID.js";
12
+ export class DeviceService {
13
+ static DEVICE_ID_KEY = 'clix_device_id';
14
+ constructor(storageService, tokenService, deviceAPIService) {
15
+ this.storageService = storageService;
16
+ this.tokenService = tokenService;
17
+ this.deviceAPIService = deviceAPIService;
18
+ }
19
+ async getCurrentDeviceId() {
20
+ const existingId = await this.storageService.get(DeviceService.DEVICE_ID_KEY);
21
+ if (existingId) {
22
+ return existingId;
23
+ }
24
+ const newId = UUID.generate();
25
+ await this.storageService.set(DeviceService.DEVICE_ID_KEY, newId);
26
+ return newId;
27
+ }
28
+ async setProjectUserId(projectUserId) {
29
+ try {
30
+ const deviceId = await this.getCurrentDeviceId();
31
+ await this.deviceAPIService.setProjectUserId(deviceId, projectUserId);
32
+ ClixLogger.debug(`Project user ID set: ${projectUserId}`);
33
+ } catch (error) {
34
+ ClixLogger.error('Failed to set project user ID', error);
35
+ throw ClixError.unknownError({
36
+ reason: `Failed to set project user ID: ${error}`,
37
+ cause: error
38
+ });
39
+ }
40
+ }
41
+ async removeProjectUserId() {
42
+ try {
43
+ const deviceId = await this.getCurrentDeviceId();
44
+ await this.deviceAPIService.removeProjectUserId(deviceId);
45
+ ClixLogger.debug('Project user ID removed');
46
+ } catch (error) {
47
+ ClixLogger.error('Failed to remove project user ID', error);
48
+ throw ClixError.unknownError({
49
+ reason: `Failed to remove project user ID: ${error}`,
50
+ cause: error
51
+ });
52
+ }
53
+ }
54
+ async updateUserProperties(properties) {
55
+ try {
56
+ const userProperties = Object.entries(properties).map(([key, value]) => ClixUserProperty.of(key, value));
57
+ const deviceId = await this.getCurrentDeviceId();
58
+ await this.deviceAPIService.upsertUserProperties(deviceId, userProperties);
59
+ ClixLogger.debug(`User properties updated: ${Object.keys(properties).join(', ')}`);
60
+ } catch (error) {
61
+ ClixLogger.error('Failed to update user properties', error);
62
+ throw ClixError.unknownError({
63
+ reason: `Failed to update user properties: ${error}`,
64
+ cause: error
65
+ });
66
+ }
67
+ }
68
+ async removeUserProperties(names) {
69
+ try {
70
+ const deviceId = await this.getCurrentDeviceId();
71
+ await this.deviceAPIService.removeUserProperties(deviceId, names);
72
+ ClixLogger.debug(`User properties removed: ${names.join(', ')}`);
73
+ } catch (error) {
74
+ ClixLogger.error('Failed to remove user properties', error);
75
+ throw ClixError.unknownError({
76
+ reason: `Failed to remove user properties: ${error}`,
77
+ cause: error
78
+ });
79
+ }
80
+ }
81
+ async upsertToken(token, tokenType = 'FCM') {
82
+ try {
83
+ await this.tokenService.saveToken(token);
84
+ const deviceId = await this.getCurrentDeviceId();
85
+ const device = await this.createDevice(deviceId, token);
86
+ await this.deviceAPIService.registerDevice(device);
87
+ ClixLogger.debug(`Token upserted: ${tokenType}`);
88
+ } catch (error) {
89
+ ClixLogger.error('Failed to upsert token', error);
90
+
91
+ // Don't throw for token upsert failures during initialization
92
+ // This allows the SDK to continue initializing even if token registration fails
93
+ if (error instanceof Error && error.message.includes('crypto.getRandomValues')) {
94
+ ClixLogger.warn('Token upsert failed due to crypto polyfill issue, will retry later');
95
+ return;
96
+ }
97
+ throw ClixError.unknownError({
98
+ reason: `Failed to upsert token: ${error}`,
99
+ cause: error
100
+ });
101
+ }
102
+ }
103
+ async getPushPermissionStatus() {
104
+ try {
105
+ // First check stored permission status
106
+ const storedStatus = await this.storageService.get('notification_permission_status');
107
+ if (storedStatus === 'authorized' || storedStatus === 'provisional') {
108
+ return true;
109
+ }
110
+
111
+ // If no stored status, check current Firebase messaging permission
112
+ const authStatus = await messaging().hasPermission();
113
+ const isGranted = authStatus === messaging.AuthorizationStatus.AUTHORIZED || authStatus === messaging.AuthorizationStatus.PROVISIONAL;
114
+ ClixLogger.debug(`Push permission status: ${isGranted ? 'granted' : 'denied'}`);
115
+ return isGranted;
116
+ } catch (error) {
117
+ ClixLogger.warn('Failed to get push permission status, defaulting to false', error);
118
+ return false;
119
+ }
120
+ }
121
+ async createDevice(deviceId, token) {
122
+ const platform = DeviceInfo.getSystemName();
123
+ const osName = DeviceInfo.getSystemName();
124
+ const osVersion = DeviceInfo.getSystemVersion();
125
+ const manufacturer = await DeviceInfo.getManufacturer();
126
+ const model = DeviceInfo.getModel();
127
+ const appName = DeviceInfo.getApplicationName();
128
+ const appVersion = DeviceInfo.getVersion();
129
+ const timezone = Intl.DateTimeFormat().resolvedOptions().timeZone;
130
+ const locale = Intl.DateTimeFormat().resolvedOptions().locale || 'en-US';
131
+ const localeLanguage = locale.split('-')[0] || 'en';
132
+ const localeRegion = locale.split('-')[1] || 'US';
133
+ let adId;
134
+ const isPushPermissionGranted = await this.getPushPermissionStatus();
135
+ const sdkVersion = await ClixVersion.getVersion();
136
+ return new ClixDevice({
137
+ id: deviceId,
138
+ platform,
139
+ model,
140
+ manufacturer,
141
+ osName,
142
+ osVersion,
143
+ localeRegion,
144
+ localeLanguage,
145
+ timezone,
146
+ appName,
147
+ appVersion,
148
+ sdkType: 'react-native',
149
+ sdkVersion,
150
+ adId,
151
+ isPushPermissionGranted,
152
+ pushToken: token,
153
+ pushTokenType: token ? Platform.OS === 'ios' ? 'APNS' : 'FCM' : undefined
154
+ });
155
+ }
156
+ }
157
+ //# sourceMappingURL=DeviceService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["messaging","Platform","DeviceInfo","ClixVersion","ClixDevice","ClixUserProperty","ClixError","ClixLogger","UUID","DeviceService","DEVICE_ID_KEY","constructor","storageService","tokenService","deviceAPIService","getCurrentDeviceId","existingId","get","newId","generate","set","setProjectUserId","projectUserId","deviceId","debug","error","unknownError","reason","cause","removeProjectUserId","updateUserProperties","properties","userProperties","Object","entries","map","key","value","of","upsertUserProperties","keys","join","removeUserProperties","names","upsertToken","token","tokenType","saveToken","device","createDevice","registerDevice","Error","message","includes","warn","getPushPermissionStatus","storedStatus","authStatus","hasPermission","isGranted","AuthorizationStatus","AUTHORIZED","PROVISIONAL","platform","getSystemName","osName","osVersion","getSystemVersion","manufacturer","getManufacturer","model","getModel","appName","getApplicationName","appVersion","getVersion","timezone","Intl","DateTimeFormat","resolvedOptions","timeZone","locale","localeLanguage","split","localeRegion","adId","isPushPermissionGranted","sdkVersion","id","sdkType","pushToken","pushTokenType","OS","undefined"],"sourceRoot":"../../../src","sources":["services/DeviceService.ts"],"mappings":"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","ignoreList":[]}