@blux.ai/web-sdk 0.0.3 → 0.0.4-rc0

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 (115) hide show
  1. package/.prettierrc +0 -1
  2. package/.sentryclirc +3 -0
  3. package/README.md +147 -11
  4. package/demo/README.md +46 -0
  5. package/demo/craco.config.js +27 -0
  6. package/demo/package.json +48 -0
  7. package/demo/public/favicon.ico +0 -0
  8. package/demo/public/index.html +43 -0
  9. package/demo/public/logo192.png +0 -0
  10. package/demo/public/logo512.png +0 -0
  11. package/demo/public/manifest.json +25 -0
  12. package/demo/public/robots.txt +3 -0
  13. package/demo/src/App.test.tsx +9 -0
  14. package/demo/src/App.tsx +158 -0
  15. package/demo/src/index.css +16 -0
  16. package/demo/src/index.tsx +19 -0
  17. package/demo/src/react-app-env.d.ts +1 -0
  18. package/demo/src/reportWebVitals.ts +15 -0
  19. package/demo/src/setupTests.ts +5 -0
  20. package/demo/tailwind.config.js +8 -0
  21. package/demo/yarn.lock +10120 -0
  22. package/dist/BluxClient.d.ts +40 -15
  23. package/dist/BluxClient.js +313 -87
  24. package/dist/BluxClient.js.map +1 -0
  25. package/dist/constants/URLS.d.ts +10 -0
  26. package/dist/constants/URLS.js +17 -0
  27. package/dist/constants/URLS.js.map +1 -0
  28. package/dist/core/LocalStorage.d.ts +0 -9
  29. package/dist/core/LocalStorage.js +4 -26
  30. package/dist/core/LocalStorage.js.map +1 -0
  31. package/dist/core/Logger.d.ts +11 -12
  32. package/dist/core/Logger.js +61 -63
  33. package/dist/core/Logger.js.map +1 -0
  34. package/dist/events/AddCartaddEvent.d.ts +5 -0
  35. package/dist/{requests/Events → events}/AddCartaddEvent.js +13 -10
  36. package/dist/events/AddCartaddEvent.js.map +1 -0
  37. package/dist/events/AddCustomEvent.d.ts +5 -0
  38. package/dist/{requests/Events → events}/AddCustomEvent.js +14 -11
  39. package/dist/events/AddCustomEvent.js.map +1 -0
  40. package/dist/events/AddLikeEvent.d.ts +5 -0
  41. package/dist/{requests/Events → events}/AddLikeEvent.js +13 -10
  42. package/dist/events/AddLikeEvent.js.map +1 -0
  43. package/dist/events/AddPageViewEvent.d.ts +5 -0
  44. package/dist/{requests/Events → events}/AddPageViewEvent.js +11 -8
  45. package/dist/events/AddPageViewEvent.js.map +1 -0
  46. package/dist/events/AddProductDetailViewEvent.d.ts +5 -0
  47. package/dist/{requests/Events → events}/AddProductDetailViewEvent.js +13 -10
  48. package/dist/events/AddProductDetailViewEvent.js.map +1 -0
  49. package/dist/events/AddPurchaseEvent.d.ts +5 -0
  50. package/dist/{requests/Events → events}/AddPurchaseEvent.js +13 -10
  51. package/dist/events/AddPurchaseEvent.js.map +1 -0
  52. package/dist/events/AddRateEvent.d.ts +5 -0
  53. package/dist/{requests/Events → events}/AddRateEvent.js +14 -11
  54. package/dist/events/AddRateEvent.js.map +1 -0
  55. package/dist/events/AddRecommendationViewEvent.d.ts +5 -0
  56. package/dist/{requests/Events → events}/AddRecommendationViewEvent.js +12 -9
  57. package/dist/events/AddRecommendationViewEvent.js.map +1 -0
  58. package/dist/events/Event.d.ts +5 -0
  59. package/dist/events/Event.js +26 -0
  60. package/dist/events/Event.js.map +1 -0
  61. package/dist/{requests/Events → events}/index.js +4 -0
  62. package/dist/events/index.js.map +1 -0
  63. package/dist/events/types.d.ts +42 -0
  64. package/dist/events/types.js +6 -0
  65. package/dist/events/types.js.map +1 -0
  66. package/dist/index.d.ts +3 -4
  67. package/dist/index.js +20 -15
  68. package/dist/index.js.map +1 -0
  69. package/dist/utils/helper.js +4 -0
  70. package/dist/utils/helper.js.map +1 -0
  71. package/dist/utils/operators.d.ts +2 -0
  72. package/dist/utils/operators.js +12 -0
  73. package/dist/utils/operators.js.map +1 -0
  74. package/dist/utils/sentry.d.ts +2 -0
  75. package/dist/utils/sentry.js +49 -0
  76. package/dist/utils/sentry.js.map +1 -0
  77. package/package.json +13 -3
  78. package/.vscode/settings.json +0 -7
  79. package/dist/core/BaseErrorHandler.d.ts +0 -3
  80. package/dist/core/BaseErrorHandler.js +0 -13
  81. package/dist/core/HTTPClient.d.ts +0 -10
  82. package/dist/core/HTTPClient.js +0 -122
  83. package/dist/requests/Devices/ActivateDevice.d.ts +0 -8
  84. package/dist/requests/Devices/ActivateDevice.js +0 -39
  85. package/dist/requests/Devices/CreateDevice.d.ts +0 -14
  86. package/dist/requests/Devices/CreateDevice.js +0 -54
  87. package/dist/requests/Devices/UpdateDevice.d.ts +0 -17
  88. package/dist/requests/Devices/UpdateDevice.js +0 -61
  89. package/dist/requests/Devices/index.d.ts +0 -3
  90. package/dist/requests/Devices/index.js +0 -19
  91. package/dist/requests/Events/AddCartaddEvent.d.ts +0 -5
  92. package/dist/requests/Events/AddCustomEvent.d.ts +0 -5
  93. package/dist/requests/Events/AddLikeEvent.d.ts +0 -5
  94. package/dist/requests/Events/AddPageViewEvent.d.ts +0 -5
  95. package/dist/requests/Events/AddProductDetailViewEvent.d.ts +0 -5
  96. package/dist/requests/Events/AddPurchaseEvent.d.ts +0 -5
  97. package/dist/requests/Events/AddRateEvent.d.ts +0 -5
  98. package/dist/requests/Events/AddRecommendationViewEvent.d.ts +0 -5
  99. package/dist/requests/Events/EventRequest.d.ts +0 -17
  100. package/dist/requests/Events/EventRequest.js +0 -56
  101. package/dist/requests/Events/types.d.ts +0 -42
  102. package/dist/requests/Events/types.js +0 -2
  103. package/dist/requests/Request.d.ts +0 -12
  104. package/dist/requests/Request.js +0 -22
  105. package/dist/requests/Users/UpdateUserProperties.d.ts +0 -17
  106. package/dist/requests/Users/UpdateUserProperties.js +0 -54
  107. package/dist/requests/Users/index.d.ts +0 -1
  108. package/dist/requests/Users/index.js +0 -17
  109. package/dist/requests/Users/types.d.ts +0 -12
  110. package/dist/requests/Users/types.js +0 -2
  111. package/dist/requests/index.d.ts +0 -3
  112. package/dist/requests/index.js +0 -19
  113. package/dist/utils/types.d.ts +0 -2
  114. package/dist/utils/types.js +0 -11
  115. /package/dist/{requests/Events → events}/index.d.ts +0 -0
@@ -1,17 +1,42 @@
1
- import { Request } from "./requests/Request";
2
- export default class BluxClient {
3
- static sdkInfo: {
4
- type: string;
5
- version: string;
6
- };
7
- static bluxClientID: string | null;
8
- static bluxAPIKey: string | null;
9
- static init({ bluxClientId, bluxAPIKey }: {
1
+ import "./utils/sentry";
2
+ import { BehaviorSubject } from "rxjs";
3
+ import { LogLevel } from "./core/Logger";
4
+ import { EventRequest } from "./events/types";
5
+ import { Event } from "./events/Event";
6
+ export type SdkInfo = {
7
+ type: string;
8
+ version: string;
9
+ };
10
+ type BluxUser = {
11
+ id: string;
12
+ bluxApiKey: string;
13
+ organizationId: string;
14
+ deviceId: string;
15
+ userId?: string;
16
+ };
17
+ declare class BluxClient {
18
+ private readonly STAGE;
19
+ private readonly identifierApi;
20
+ private readonly collectorApi;
21
+ private readonly sdkInfo;
22
+ readonly bluxUser$: BehaviorSubject<BluxUser | undefined>;
23
+ readonly requestQueue$: BehaviorSubject<EventRequest[]>;
24
+ constructor(STAGE?: "local" | "dev" | "prod");
25
+ private generateIdentifierHeader;
26
+ init({ bluxClientId: organizationId, bluxApiKey, }: {
10
27
  bluxClientId: string;
11
- bluxAPIKey: string;
12
- }): void;
13
- static setLogLevel(logLevel: "trace" | "debug" | "info" | "warn" | "error"): void;
14
- protected static deviceRegisterOrActivate(): void;
15
- static setUserId(userId: string | null): void;
16
- static sendRequest(request: Request | Request[]): void;
28
+ bluxApiKey: string;
29
+ }): Promise<void>;
30
+ setLogLevel(logLevel: LogLevel): void;
31
+ private getBluxUserWithTimeout;
32
+ setUserId(userId: string): Promise<void>;
33
+ signOut(): Promise<void>;
34
+ setUserProperties(userProperties: {
35
+ phone_number?: string;
36
+ email_address?: string;
37
+ }): Promise<void>;
38
+ setCustomUserProperties(customUserProperties: Record<string, string | boolean | number | null>): Promise<void>;
39
+ sendEvent(event: Event | Event[]): Promise<void>;
17
40
  }
41
+ export declare const bluxClient: BluxClient;
42
+ export {};
@@ -1,104 +1,330 @@
1
1
  "use strict";
2
+ !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},n=(new Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="bba7ea92-5680-5921-8c87-e591259918e7")}catch(e){}}();
3
+
4
+ var __assign = (this && this.__assign) || function () {
5
+ __assign = Object.assign || function(t) {
6
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
7
+ s = arguments[i];
8
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
9
+ t[p] = s[p];
10
+ }
11
+ return t;
12
+ };
13
+ return __assign.apply(this, arguments);
14
+ };
15
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
16
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
17
+ return new (P || (P = Promise))(function (resolve, reject) {
18
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
19
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
20
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
21
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
22
+ });
23
+ };
24
+ var __generator = (this && this.__generator) || function (thisArg, body) {
25
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
26
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
27
+ function verb(n) { return function (v) { return step([n, v]); }; }
28
+ function step(op) {
29
+ if (f) throw new TypeError("Generator is already executing.");
30
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
31
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
32
+ if (y = 0, t) op = [op[0] & 2, t.value];
33
+ switch (op[0]) {
34
+ case 0: case 1: t = op; break;
35
+ case 4: _.label++; return { value: op[1], done: false };
36
+ case 5: _.label++; y = op[1]; op = [0]; continue;
37
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
38
+ default:
39
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
40
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
41
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
42
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
43
+ if (t[2]) _.ops.pop();
44
+ _.trys.pop(); continue;
45
+ }
46
+ op = body.call(thisArg, _);
47
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
48
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
49
+ }
50
+ };
51
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
52
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
53
+ if (ar || !(i in from)) {
54
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
55
+ ar[i] = from[i];
56
+ }
57
+ }
58
+ return to.concat(ar || Array.prototype.slice.call(from));
59
+ };
60
+ var __importDefault = (this && this.__importDefault) || function (mod) {
61
+ return (mod && mod.__esModule) ? mod : { "default": mod };
62
+ };
2
63
  exports.__esModule = true;
3
- var BaseErrorHandler_1 = require("./core/BaseErrorHandler");
4
- var HTTPClient_1 = require("./core/HTTPClient");
64
+ exports.bluxClient = void 0;
65
+ require("./utils/sentry");
66
+ var rxjs_1 = require("rxjs");
5
67
  var LocalStorage_1 = require("./core/LocalStorage");
6
68
  var Logger_1 = require("./core/Logger");
7
- var ActivateDevice_1 = require("./requests/Devices/ActivateDevice");
8
- var CreateDevice_1 = require("./requests/Devices/CreateDevice");
9
- var UpdateDevice_1 = require("./requests/Devices/UpdateDevice");
10
- var types_1 = require("./utils/types");
69
+ var axios_1 = __importDefault(require("axios"));
70
+ var operators_1 = require("./utils/operators");
71
+ var URLS_1 = require("./constants/URLS");
11
72
  var BluxClient = /** @class */ (function () {
12
- function BluxClient() {
73
+ function BluxClient(STAGE) {
74
+ if (STAGE === void 0) { STAGE = "prod"; }
75
+ var _this = this;
76
+ this.STAGE = STAGE;
77
+ this.identifierApi = axios_1["default"].create({
78
+ baseURL: URLS_1.IDENTIFIER_API_URL_BY_STAGE[this.STAGE]
79
+ });
80
+ this.collectorApi = axios_1["default"].create({
81
+ baseURL: URLS_1.COLLECTOR_API_URL_BY_STAGE[this.STAGE],
82
+ headers: {
83
+ "Content-Type": "application/json;charset=UTF-8",
84
+ Accept: "application/json"
85
+ }
86
+ });
87
+ this.sdkInfo = {
88
+ type: "browser",
89
+ version: "0.0.3"
90
+ };
91
+ this.bluxUser$ = new rxjs_1.BehaviorSubject(undefined);
92
+ this.requestQueue$ = new rxjs_1.BehaviorSubject([]);
93
+ this.requestQueue$
94
+ .pipe((0, rxjs_1.filter)(function (queue) { return queue.length > 0; }), (0, rxjs_1.concatMap)(function (requests) {
95
+ return (0, rxjs_1.from)(requests.map(function (request, idx) { return ({ request: request, idx: idx }); })).pipe((0, rxjs_1.withLatestFrom)(_this.bluxUser$.pipe((0, operators_1.filterNullable)())), (0, rxjs_1.concatMap)(function (_a) {
96
+ var _b = _a[0], request = _b.request, idx = _b.idx, bluxUser = _a[1];
97
+ return __awaiter(_this, void 0, void 0, function () {
98
+ var body, error_1;
99
+ return __generator(this, function (_c) {
100
+ switch (_c.label) {
101
+ case 0:
102
+ body = JSON.stringify(__assign(__assign({}, request), { user_id: bluxUser.userId, blux_id: bluxUser.id, device_id: bluxUser.deviceId, timetsamp: request.timestamp + 1e-6 * idx }));
103
+ _c.label = 1;
104
+ case 1:
105
+ _c.trys.push([1, 3, , 4]);
106
+ return [4 /*yield*/, this.collectorApi.post("/events", body, {
107
+ headers: {
108
+ "X-BLUX-SDK-INFO": "".concat(this.sdkInfo.type, "-").concat(this.sdkInfo.version),
109
+ "X-BLUX-CLIENT-ID": bluxUser.organizationId,
110
+ "X-BLUX-API-KEY": bluxUser.bluxApiKey,
111
+ "X-BLUX-TIMESTAMP": Math.floor(Date.now() / 1000).toString()
112
+ }
113
+ })];
114
+ case 2:
115
+ _c.sent(); // todo : retry & send with batch
116
+ return [3 /*break*/, 4];
117
+ case 3:
118
+ error_1 = _c.sent();
119
+ Logger_1.Logger.error(error_1, { tags: { from: "request-events-api" } });
120
+ return [3 /*break*/, 4];
121
+ case 4: return [2 /*return*/, requests.map(function (r) { return r.id; })]; // todo: return successed requests only
122
+ }
123
+ });
124
+ });
125
+ }));
126
+ }), (0, rxjs_1.map)(function (requestIdsSucceeded) {
127
+ return _this.requestQueue$.value.filter(function (request) { return !requestIdsSucceeded.includes(request.id); });
128
+ }))
129
+ .subscribe(this.requestQueue$);
13
130
  }
14
- BluxClient.init = function (_a) {
15
- var bluxClientId = _a.bluxClientId, bluxAPIKey = _a.bluxAPIKey;
16
- try {
17
- Logger_1.Logger.debug("Init with client id: " + bluxClientId);
18
- BluxClient.bluxClientID = bluxClientId;
19
- BluxClient.bluxAPIKey = bluxAPIKey;
20
- BluxClient.deviceRegisterOrActivate();
21
- }
22
- catch (e) {
23
- BaseErrorHandler_1.BaseErrorHandler.handle(e);
24
- }
131
+ BluxClient.prototype.generateIdentifierHeader = function (_a) {
132
+ var bluxApiKey = _a.bluxApiKey;
133
+ return {
134
+ Authorization: bluxApiKey
135
+ };
25
136
  };
26
- BluxClient.setLogLevel = function (logLevel) {
137
+ BluxClient.prototype.init = function (_a) {
138
+ var organizationId = _a.bluxClientId, bluxApiKey = _a.bluxApiKey;
139
+ return __awaiter(this, void 0, void 0, function () {
140
+ var deviceId, _b, blux_user_id, device_id, error_2;
141
+ return __generator(this, function (_c) {
142
+ switch (_c.label) {
143
+ case 0:
144
+ _c.trys.push([0, 2, , 3]);
145
+ Logger_1.Logger.debug("Init with client id: " + organizationId);
146
+ deviceId = LocalStorage_1.LocalStorage.getDeviceId();
147
+ if (!deviceId) {
148
+ Logger_1.Logger.debug("Saved Device ID is not exists, newly registered.");
149
+ }
150
+ return [4 /*yield*/, this.identifierApi.post("/organizations/".concat(organizationId, "/blux-users/initialize"), {
151
+ device_id: deviceId !== null && deviceId !== void 0 ? deviceId : undefined,
152
+ country_code: navigator.language.split("-")[1],
153
+ device_model: navigator.userAgent,
154
+ language_code: navigator.language.split("-")[0],
155
+ platform: "browser",
156
+ os_version: navigator.userAgent,
157
+ sdk_version: this.sdkInfo.version,
158
+ sdk_type: this.sdkInfo.type,
159
+ timezone: Intl.DateTimeFormat().resolvedOptions().timeZone
160
+ }, {
161
+ headers: this.generateIdentifierHeader({
162
+ bluxApiKey: bluxApiKey
163
+ })
164
+ })];
165
+ case 1:
166
+ _b = (_c.sent()).data, blux_user_id = _b.blux_user_id, device_id = _b.device_id;
167
+ console.log({ device_id: device_id });
168
+ LocalStorage_1.LocalStorage.setDeviceId(device_id);
169
+ this.bluxUser$.next({
170
+ id: blux_user_id,
171
+ bluxApiKey: bluxApiKey,
172
+ organizationId: organizationId,
173
+ deviceId: device_id
174
+ });
175
+ return [3 /*break*/, 3];
176
+ case 2:
177
+ error_2 = _c.sent();
178
+ Logger_1.Logger.error(error_2, { tags: { from: "init" } });
179
+ return [3 /*break*/, 3];
180
+ case 3: return [2 /*return*/];
181
+ }
182
+ });
183
+ });
184
+ };
185
+ BluxClient.prototype.setLogLevel = function (logLevel) {
27
186
  Logger_1.Logger.setLevel(logLevel);
28
187
  };
29
- BluxClient.deviceRegisterOrActivate = function () {
30
- try {
31
- var clientId = BluxClient.bluxClientID;
32
- var deviceId = LocalStorage_1.LocalStorage.getDeviceId();
33
- var bluxId = LocalStorage_1.LocalStorage.getBluxId();
34
- if ((0, types_1.isNullOrUndefined)(clientId) || (clientId && (0, types_1.isEmptyString)(clientId))) {
35
- throw new Error("Client ID is not intialized. Please initialize BluxClient.");
36
- }
37
- if (!deviceId || !bluxId) {
38
- // Create Device 호출 -> bluxId, deviceId 저장
39
- Logger_1.Logger.debug("Saved Device ID and Blux ID are not exists, newly registered.");
40
- var createDeviceRequest = new CreateDevice_1.CreateDevice();
41
- HTTPClient_1.HTTPClient.sendRequestWithBody(createDeviceRequest).then(function (response) {
42
- if (response) {
43
- LocalStorage_1.LocalStorage.setBluxId(response.blux_id);
44
- LocalStorage_1.LocalStorage.setDeviceId(response.device_id);
45
- }
46
- });
47
- }
48
- else {
49
- Logger_1.Logger.debug("Saved Device ID and Blux ID are exists : " + deviceId + " | " + bluxId);
50
- // Activate Device 호출
51
- var activateDeviceRequest = new ActivateDevice_1.ActivateDevice(bluxId, deviceId);
52
- HTTPClient_1.HTTPClient.sendRequestWithBody(activateDeviceRequest);
53
- }
54
- }
55
- catch (e) {
56
- BaseErrorHandler_1.BaseErrorHandler.handle(e);
57
- }
188
+ BluxClient.prototype.getBluxUserWithTimeout = function () {
189
+ return __awaiter(this, void 0, void 0, function () {
190
+ var bluxUser;
191
+ return __generator(this, function (_a) {
192
+ switch (_a.label) {
193
+ case 0: return [4 /*yield*/, (0, rxjs_1.firstValueFrom)(this.bluxUser$.pipe((0, operators_1.filterNullable)(), (0, rxjs_1.timeout)(5000), (0, rxjs_1.catchError)(function (error) {
194
+ return (0, rxjs_1.throwError)(function () {
195
+ return error.name === "TimeoutError"
196
+ ? new Error("Client ID is not intialized. Please initialize BluxClient.")
197
+ : error;
198
+ });
199
+ })))];
200
+ case 1:
201
+ bluxUser = _a.sent();
202
+ return [2 /*return*/, bluxUser];
203
+ }
204
+ });
205
+ });
58
206
  };
59
- BluxClient.setUserId = function (userId) {
60
- try {
61
- // localStorage로부터 device_id, blux_id를 가져온다.
62
- var deviceId = LocalStorage_1.LocalStorage.getDeviceId();
63
- var bluxId = LocalStorage_1.LocalStorage.getBluxId();
64
- if (!deviceId || !bluxId) {
65
- throw new Error("Both deviceId and bluxId are not found in localStorage. Please initialize BluxClient.");
66
- }
67
- var updateDeviceRequest = new UpdateDevice_1.UpdateDevice(bluxId, deviceId, userId);
68
- HTTPClient_1.HTTPClient.sendRequestWithBody(updateDeviceRequest).then(function (response) {
69
- var _a;
70
- if (response) {
71
- LocalStorage_1.LocalStorage.setBluxId(response.blux_id);
72
- LocalStorage_1.LocalStorage.setDeviceId(response.device_id);
73
- LocalStorage_1.LocalStorage.setUserId((_a = response.user_id) !== null && _a !== void 0 ? _a : "undefined");
207
+ BluxClient.prototype.setUserId = function (userId) {
208
+ return __awaiter(this, void 0, void 0, function () {
209
+ var bluxUser, bluxIdInResponse, error_3;
210
+ return __generator(this, function (_a) {
211
+ switch (_a.label) {
212
+ case 0:
213
+ _a.trys.push([0, 3, , 4]);
214
+ return [4 /*yield*/, this.getBluxUserWithTimeout()];
215
+ case 1:
216
+ bluxUser = _a.sent();
217
+ return [4 /*yield*/, this.identifierApi.put("/organizations/".concat(bluxUser.organizationId, "/blux-users/").concat(bluxUser.id, "/sign-in"), { user_id: userId }, {
218
+ headers: this.generateIdentifierHeader(bluxUser)
219
+ })];
220
+ case 2:
221
+ bluxIdInResponse = (_a.sent()).data.blux_user_id;
222
+ if (bluxIdInResponse !== bluxUser.id) {
223
+ Logger_1.Logger.debug("Blux id is changed in setUserId.");
224
+ this.bluxUser$.next(__assign(__assign({}, bluxUser), { id: bluxIdInResponse }));
225
+ }
226
+ return [3 /*break*/, 4];
227
+ case 3:
228
+ error_3 = _a.sent();
229
+ Logger_1.Logger.error(error_3, { tags: { from: "setUserId" } });
230
+ return [3 /*break*/, 4];
231
+ case 4: return [2 /*return*/];
74
232
  }
75
233
  });
76
- }
77
- catch (e) {
78
- BaseErrorHandler_1.BaseErrorHandler.handle(e);
79
- }
234
+ });
80
235
  };
81
- BluxClient.sendRequest = function (request) {
82
- try {
83
- var bluxId = LocalStorage_1.LocalStorage.getBluxId();
84
- var deviceId = LocalStorage_1.LocalStorage.getDeviceId();
85
- var userId = LocalStorage_1.LocalStorage.getUserId();
86
- // If either of bluxId or deviceId is not exists, do not send request.
87
- if (!bluxId || !deviceId) {
88
- throw new Error("Saved Blux ID and Device ID are not exists. Do not send event request.");
89
- }
90
- HTTPClient_1.HTTPClient.sendRequestWithBody(request, { bluxId: bluxId, deviceId: deviceId, userId: userId });
91
- }
92
- catch (e) {
93
- BaseErrorHandler_1.BaseErrorHandler.handle(e);
94
- }
236
+ BluxClient.prototype.signOut = function () {
237
+ return __awaiter(this, void 0, void 0, function () {
238
+ var bluxUser, bluxIdInResponse, error_4;
239
+ return __generator(this, function (_a) {
240
+ switch (_a.label) {
241
+ case 0:
242
+ _a.trys.push([0, 3, , 4]);
243
+ return [4 /*yield*/, this.getBluxUserWithTimeout()];
244
+ case 1:
245
+ bluxUser = _a.sent();
246
+ return [4 /*yield*/, this.identifierApi.put("/organizations/".concat(bluxUser.organizationId, "/blux-users/").concat(bluxUser.id, "/sign-out"), { device_id: bluxUser.deviceId }, {
247
+ headers: this.generateIdentifierHeader(bluxUser)
248
+ })];
249
+ case 2:
250
+ bluxIdInResponse = (_a.sent()).data.blux_user_id;
251
+ Logger_1.Logger.debug("Blux id is changed in signOut.");
252
+ this.bluxUser$.next(__assign(__assign({}, bluxUser), { id: bluxIdInResponse }));
253
+ return [3 /*break*/, 4];
254
+ case 3:
255
+ error_4 = _a.sent();
256
+ Logger_1.Logger.error(error_4, { tags: { from: "signOut" } });
257
+ return [3 /*break*/, 4];
258
+ case 4: return [2 /*return*/];
259
+ }
260
+ });
261
+ });
262
+ };
263
+ BluxClient.prototype.setUserProperties = function (userProperties) {
264
+ return __awaiter(this, void 0, void 0, function () {
265
+ var bluxUser, error_5;
266
+ return __generator(this, function (_a) {
267
+ switch (_a.label) {
268
+ case 0:
269
+ _a.trys.push([0, 3, , 4]);
270
+ return [4 /*yield*/, this.getBluxUserWithTimeout()];
271
+ case 1:
272
+ bluxUser = _a.sent();
273
+ return [4 /*yield*/, this.identifierApi.put("/organizations/".concat(bluxUser.organizationId, "/blux-users/").concat(bluxUser.id, "/update-user-properties"), { properties: userProperties }, {
274
+ headers: this.generateIdentifierHeader(bluxUser)
275
+ })];
276
+ case 2:
277
+ _a.sent();
278
+ return [3 /*break*/, 4];
279
+ case 3:
280
+ error_5 = _a.sent();
281
+ Logger_1.Logger.error(error_5, { tags: { from: "setUserProperties" } });
282
+ return [3 /*break*/, 4];
283
+ case 4: return [2 /*return*/];
284
+ }
285
+ });
286
+ });
95
287
  };
96
- BluxClient.sdkInfo = {
97
- type: "browser",
98
- version: "0.0.1"
288
+ BluxClient.prototype.setCustomUserProperties = function (customUserProperties) {
289
+ return __awaiter(this, void 0, void 0, function () {
290
+ var bluxUser, error_6;
291
+ return __generator(this, function (_a) {
292
+ switch (_a.label) {
293
+ case 0:
294
+ _a.trys.push([0, 3, , 4]);
295
+ return [4 /*yield*/, this.getBluxUserWithTimeout()];
296
+ case 1:
297
+ bluxUser = _a.sent();
298
+ return [4 /*yield*/, this.identifierApi.put("/organizations/".concat(bluxUser.organizationId, "/blux-users/").concat(bluxUser.id, "/update-custom-user-properties"), { properties: customUserProperties }, {
299
+ headers: this.generateIdentifierHeader(bluxUser)
300
+ })];
301
+ case 2:
302
+ _a.sent();
303
+ return [3 /*break*/, 4];
304
+ case 3:
305
+ error_6 = _a.sent();
306
+ Logger_1.Logger.error(error_6, { tags: { from: "setCustomUserProperties" } });
307
+ return [3 /*break*/, 4];
308
+ case 4: return [2 /*return*/];
309
+ }
310
+ });
311
+ });
312
+ };
313
+ BluxClient.prototype.sendEvent = function (event) {
314
+ return __awaiter(this, void 0, void 0, function () {
315
+ var requests;
316
+ var _this = this;
317
+ return __generator(this, function (_a) {
318
+ requests = (Array.isArray(event) ? event : [event]).map(function (event) { return event.request; });
319
+ this.requestQueue$.next(__spreadArray(__spreadArray([], this.requestQueue$.value, true), requests.filter(function (request) {
320
+ return !_this.requestQueue$.value.map(function (r) { return r.id; }).includes(request.id);
321
+ }), true));
322
+ return [2 /*return*/];
323
+ });
324
+ });
99
325
  };
100
- BluxClient.bluxClientID = null;
101
- BluxClient.bluxAPIKey = null;
102
326
  return BluxClient;
103
327
  }());
104
- exports["default"] = BluxClient;
328
+ exports.bluxClient = new BluxClient("prod");
329
+ //# sourceMappingURL=BluxClient.js.map
330
+ //# debugId=bba7ea92-5680-5921-8c87-e591259918e7
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BluxClient.js","sources":["BluxClient.ts"],"sourceRoot":"/","sourcesContent":["import \"./utils/sentry\";\nimport {\n BehaviorSubject,\n catchError,\n concatMap,\n filter,\n firstValueFrom,\n from,\n map,\n throwError,\n timeout,\n withLatestFrom,\n} from \"rxjs\";\nimport { LocalStorage } from \"./core/LocalStorage\";\nimport { Logger, LogLevel } from \"./core/Logger\";\nimport axios from \"axios\";\nimport { filterNullable } from \"./utils/operators\";\nimport { EventRequest } from \"./events/types\";\nimport {\n COLLECTOR_API_URL_BY_STAGE,\n IDENTIFIER_API_URL_BY_STAGE,\n} from \"./constants/URLS\";\nimport { Event } from \"./events/Event\";\n\nexport type SdkInfo = {\n type: string;\n version: string;\n};\n\ntype BluxUser = {\n id: string;\n bluxApiKey: string;\n organizationId: string;\n deviceId: string;\n userId?: string;\n};\n\nclass BluxClient {\n private readonly identifierApi = axios.create({\n baseURL: IDENTIFIER_API_URL_BY_STAGE[this.STAGE],\n });\n private readonly collectorApi = axios.create({\n baseURL: COLLECTOR_API_URL_BY_STAGE[this.STAGE],\n headers: {\n \"Content-Type\": \"application/json;charset=UTF-8\",\n Accept: \"application/json\",\n },\n });\n\n private readonly sdkInfo: SdkInfo = {\n type: \"browser\",\n version: \"0.0.3\",\n };\n\n public readonly bluxUser$ = new BehaviorSubject<BluxUser | undefined>(\n undefined\n );\n\n public readonly requestQueue$ = new BehaviorSubject<EventRequest[]>([]);\n\n constructor(private readonly STAGE: \"local\" | \"dev\" | \"prod\" = \"prod\") {\n this.requestQueue$\n .pipe(\n filter((queue) => queue.length > 0),\n concatMap((requests) => {\n return from(requests.map((request, idx) => ({ request, idx }))).pipe(\n withLatestFrom(this.bluxUser$.pipe(filterNullable())),\n concatMap(async ([{ request, idx }, bluxUser]) => {\n const body = JSON.stringify({\n ...request,\n user_id: bluxUser.userId,\n blux_id: bluxUser.id,\n device_id: bluxUser.deviceId,\n timetsamp: request.timestamp + 1e-6 * idx,\n });\n try {\n await this.collectorApi.post(\"/events\", body, {\n headers: {\n \"X-BLUX-SDK-INFO\": `${this.sdkInfo.type}-${this.sdkInfo.version}`,\n \"X-BLUX-CLIENT-ID\": bluxUser.organizationId,\n \"X-BLUX-API-KEY\": bluxUser.bluxApiKey,\n \"X-BLUX-TIMESTAMP\": Math.floor(\n Date.now() / 1000\n ).toString(),\n },\n }); // todo : retry & send with batch\n } catch (error) {\n Logger.error(error, { tags: { from: \"request-events-api\" } });\n }\n\n return requests.map((r) => r.id); // todo: return successed requests only\n })\n );\n }),\n map((requestIdsSucceeded) =>\n this.requestQueue$.value.filter(\n (request) => !requestIdsSucceeded.includes(request.id)\n )\n )\n )\n .subscribe(this.requestQueue$);\n }\n\n private generateIdentifierHeader({ bluxApiKey }: { bluxApiKey: string }) {\n return {\n Authorization: bluxApiKey,\n };\n }\n\n public async init({\n bluxClientId: organizationId,\n bluxApiKey,\n }: {\n bluxClientId: string;\n bluxApiKey: string;\n }) {\n try {\n Logger.debug(\"Init with client id: \" + organizationId);\n\n const deviceId = LocalStorage.getDeviceId();\n\n if (!deviceId) {\n Logger.debug(\"Saved Device ID is not exists, newly registered.\");\n }\n\n const {\n data: { blux_user_id, device_id },\n } = await this.identifierApi.post<{\n blux_user_id: string;\n device_id: string;\n }>(\n `/organizations/${organizationId}/blux-users/initialize`,\n {\n device_id: deviceId ?? undefined,\n country_code: navigator.language.split(\"-\")[1],\n device_model: navigator.userAgent,\n language_code: navigator.language.split(\"-\")[0],\n platform: \"browser\",\n os_version: navigator.userAgent,\n sdk_version: this.sdkInfo.version,\n sdk_type: this.sdkInfo.type,\n timezone: Intl.DateTimeFormat().resolvedOptions().timeZone,\n },\n {\n headers: this.generateIdentifierHeader({\n bluxApiKey,\n }),\n }\n );\n\n console.log({ device_id });\n\n LocalStorage.setDeviceId(device_id);\n\n this.bluxUser$.next({\n id: blux_user_id,\n bluxApiKey,\n organizationId,\n deviceId: device_id,\n });\n } catch (error) {\n Logger.error(error, { tags: { from: \"init\" } });\n }\n }\n\n public setLogLevel(logLevel: LogLevel) {\n Logger.setLevel(logLevel);\n }\n\n private async getBluxUserWithTimeout() {\n const bluxUser = await firstValueFrom(\n this.bluxUser$.pipe(\n filterNullable(),\n timeout(5000),\n catchError((error) => {\n return throwError(() =>\n error.name === \"TimeoutError\"\n ? new Error(\n \"Client ID is not intialized. Please initialize BluxClient.\"\n )\n : error\n );\n })\n )\n );\n\n return bluxUser;\n }\n\n public async setUserId(userId: string) {\n try {\n const bluxUser = await this.getBluxUserWithTimeout();\n\n const {\n data: { blux_user_id: bluxIdInResponse },\n } = await this.identifierApi.put<{ blux_user_id: string }>(\n `/organizations/${bluxUser.organizationId}/blux-users/${bluxUser.id}/sign-in`,\n { user_id: userId },\n {\n headers: this.generateIdentifierHeader(bluxUser),\n }\n );\n\n if (bluxIdInResponse !== bluxUser.id) {\n Logger.debug(\"Blux id is changed in setUserId.\");\n this.bluxUser$.next({\n ...bluxUser,\n id: bluxIdInResponse,\n });\n }\n } catch (error) {\n Logger.error(error, { tags: { from: \"setUserId\" } });\n }\n }\n\n public async signOut() {\n try {\n const bluxUser = await this.getBluxUserWithTimeout();\n\n const {\n data: { blux_user_id: bluxIdInResponse },\n } = await this.identifierApi.put<{ blux_user_id: string }>(\n `/organizations/${bluxUser.organizationId}/blux-users/${bluxUser.id}/sign-out`,\n { device_id: bluxUser.deviceId },\n {\n headers: this.generateIdentifierHeader(bluxUser),\n }\n );\n\n Logger.debug(\"Blux id is changed in signOut.\");\n this.bluxUser$.next({\n ...bluxUser,\n id: bluxIdInResponse,\n });\n } catch (error) {\n Logger.error(error, { tags: { from: \"signOut\" } });\n }\n }\n\n public async setUserProperties(userProperties: {\n phone_number?: string;\n email_address?: string;\n }) {\n try {\n const bluxUser = await this.getBluxUserWithTimeout();\n\n await this.identifierApi.put<{ blux_user_id: string }>(\n `/organizations/${bluxUser.organizationId}/blux-users/${bluxUser.id}/update-user-properties`,\n { properties: userProperties },\n {\n headers: this.generateIdentifierHeader(bluxUser),\n }\n );\n } catch (error) {\n Logger.error(error, { tags: { from: \"setUserProperties\" } });\n }\n }\n\n public async setCustomUserProperties(\n customUserProperties: Record<string, string | boolean | number | null>\n ) {\n try {\n const bluxUser = await this.getBluxUserWithTimeout();\n\n await this.identifierApi.put<{ blux_user_id: string }>(\n `/organizations/${bluxUser.organizationId}/blux-users/${bluxUser.id}/update-custom-user-properties`,\n { properties: customUserProperties },\n {\n headers: this.generateIdentifierHeader(bluxUser),\n }\n );\n } catch (error) {\n Logger.error(error, { tags: { from: \"setCustomUserProperties\" } });\n }\n }\n\n public async sendEvent(event: Event | Event[]) {\n const requests = (Array.isArray(event) ? event : [event]).map(\n (event) => event.request\n );\n\n this.requestQueue$.next([\n ...this.requestQueue$.value,\n ...requests.filter(\n (request) =>\n !this.requestQueue$.value.map((r) => r.id).includes(request.id)\n ),\n ]);\n }\n}\n\nexport const bluxClient = new BluxClient(\"prod\");\n"],"names":[],"mappings":"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","debug_id":"bba7ea92-5680-5921-8c87-e591259918e7"}
@@ -0,0 +1,10 @@
1
+ export declare const IDENTIFIER_API_URL_BY_STAGE: {
2
+ readonly local: "http://localhost:9000/local";
3
+ readonly dev: "https://api.blux.ai/dev";
4
+ readonly prod: "https://api.blux.ai/prod";
5
+ };
6
+ export declare const COLLECTOR_API_URL_BY_STAGE: {
7
+ readonly local: "https://collector-api-web.blux.ai";
8
+ readonly dev: "https://collector-api-web.blux.ai";
9
+ readonly prod: "https://collector-api-web.blux.ai";
10
+ };
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},n=(new Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="aa0ab5c9-0125-5caf-ad60-d94ff3e57c21")}catch(e){}}();
3
+
4
+ exports.__esModule = true;
5
+ exports.COLLECTOR_API_URL_BY_STAGE = exports.IDENTIFIER_API_URL_BY_STAGE = void 0;
6
+ exports.IDENTIFIER_API_URL_BY_STAGE = {
7
+ local: "http://localhost:9000/local",
8
+ dev: "https://api.blux.ai/dev",
9
+ prod: "https://api.blux.ai/prod"
10
+ };
11
+ exports.COLLECTOR_API_URL_BY_STAGE = {
12
+ local: "https://collector-api-web.blux.ai",
13
+ dev: "https://collector-api-web.blux.ai",
14
+ prod: "https://collector-api-web.blux.ai"
15
+ };
16
+ //# sourceMappingURL=URLS.js.map
17
+ //# debugId=aa0ab5c9-0125-5caf-ad60-d94ff3e57c21
@@ -0,0 +1 @@
1
+ {"version":3,"file":"URLS.js","sources":["constants/URLS.ts"],"sourceRoot":"/","sourcesContent":["export const IDENTIFIER_API_URL_BY_STAGE = {\n local: \"http://localhost:9000/local\",\n dev: \"https://api.blux.ai/dev\",\n prod: \"https://api.blux.ai/prod\",\n} as const;\n\nexport const COLLECTOR_API_URL_BY_STAGE = {\n local: \"https://collector-api-web.blux.ai\", // todo\n dev: \"https://collector-api-web.blux.ai\", // todo\n prod: \"https://collector-api-web.blux.ai\", // todo\n} as const;\n"],"names":[],"mappings":";;;;;AAAa,QAAA,2BAA2B,GAAG;IACzC,KAAK,EAAE,6BAA6B;IACpC,GAAG,EAAE,yBAAyB;IAC9B,IAAI,EAAE,0BAA0B;CACxB,CAAC;AAEE,QAAA,0BAA0B,GAAG;IACxC,KAAK,EAAE,mCAAmC;IAC1C,GAAG,EAAE,mCAAmC;IACxC,IAAI,EAAE,mCAAmC;CACjC,CAAC","debug_id":"aa0ab5c9-0125-5caf-ad60-d94ff3e57c21"}
@@ -1,13 +1,4 @@
1
1
  export declare class LocalStorage {
2
- /**
3
- * Used in BluxClient initialization to dedupe local storage.
4
- */
5
- static getLogLevel(): string | null;
6
- static setLogLevel(loglevel: string): void;
7
- static getBluxId(): string | null;
8
- static setBluxId(bluxId: string): void;
9
2
  static getDeviceId(): string | null;
10
3
  static setDeviceId(deviceId: string): void;
11
- static getUserId(): string | null;
12
- static setUserId(userId: string): void;
13
4
  }
@@ -1,29 +1,12 @@
1
1
  "use strict";
2
+ !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},n=(new Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="984c1bce-2a88-501a-9964-b1e8f8423f11")}catch(e){}}();
3
+
2
4
  exports.__esModule = true;
3
5
  exports.LocalStorage = void 0;
4
- var BlUX_LOGLEVEL = "blux_loglevel";
5
- var BLUX_ID = "blux_id";
6
6
  var BLUX_DEVICE_ID = "blux_deviceId";
7
- var BLUX_USER_ID = "blux_userId";
8
7
  var LocalStorage = /** @class */ (function () {
9
8
  function LocalStorage() {
10
9
  }
11
- /**
12
- * Used in BluxClient initialization to dedupe local storage.
13
- */
14
- LocalStorage.getLogLevel = function () {
15
- return localStorage.getItem(BlUX_LOGLEVEL);
16
- };
17
- LocalStorage.setLogLevel = function (loglevel) {
18
- localStorage.setItem(BlUX_LOGLEVEL, loglevel);
19
- };
20
- LocalStorage.getBluxId = function () {
21
- var bluxId = localStorage.getItem(BLUX_ID);
22
- return bluxId === "undefined" || (bluxId === null || bluxId === void 0 ? void 0 : bluxId.trim()) == "" ? null : bluxId;
23
- };
24
- LocalStorage.setBluxId = function (bluxId) {
25
- localStorage.setItem(BLUX_ID, bluxId);
26
- };
27
10
  LocalStorage.getDeviceId = function () {
28
11
  var deviceId = localStorage.getItem(BLUX_DEVICE_ID);
29
12
  return deviceId === "undefined" || (deviceId === null || deviceId === void 0 ? void 0 : deviceId.trim()) == "" ? null : deviceId;
@@ -31,13 +14,8 @@ var LocalStorage = /** @class */ (function () {
31
14
  LocalStorage.setDeviceId = function (deviceId) {
32
15
  localStorage.setItem(BLUX_DEVICE_ID, deviceId);
33
16
  };
34
- LocalStorage.getUserId = function () {
35
- var userId = localStorage.getItem(BLUX_USER_ID);
36
- return userId === "undefined" || (userId === null || userId === void 0 ? void 0 : userId.trim()) == "" ? null : userId;
37
- };
38
- LocalStorage.setUserId = function (userId) {
39
- localStorage.setItem(BLUX_USER_ID, userId);
40
- };
41
17
  return LocalStorage;
42
18
  }());
43
19
  exports.LocalStorage = LocalStorage;
20
+ //# sourceMappingURL=LocalStorage.js.map
21
+ //# debugId=984c1bce-2a88-501a-9964-b1e8f8423f11
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LocalStorage.js","sources":["core/LocalStorage.ts"],"sourceRoot":"/","sourcesContent":["const BLUX_DEVICE_ID = \"blux_deviceId\";\n\nexport class LocalStorage {\n static getDeviceId(): string | null {\n const deviceId = localStorage.getItem(BLUX_DEVICE_ID);\n return deviceId === \"undefined\" || deviceId?.trim() == \"\" ? null : deviceId;\n }\n\n static setDeviceId(deviceId: string) {\n localStorage.setItem(BLUX_DEVICE_ID, deviceId);\n }\n}\n"],"names":[],"mappings":";;;;;AAAA,IAAM,cAAc,GAAG,eAAe,CAAC;AAEvC;IAAA;IASA,CAAC;IARQ,wBAAW,GAAlB;QACE,IAAM,QAAQ,GAAG,YAAY,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QACtD,OAAO,QAAQ,KAAK,WAAW,IAAI,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,IAAI,EAAE,KAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC9E,CAAC;IAEM,wBAAW,GAAlB,UAAmB,QAAgB;QACjC,YAAY,CAAC,OAAO,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;IACjD,CAAC;IACH,mBAAC;AAAD,CAAC,AATD,IASC;AATY,oCAAY","debug_id":"984c1bce-2a88-501a-9964-b1e8f8423f11"}