@letscooee/web-sdk 0.0.3 → 0.0.7

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 (59) hide show
  1. package/CHANGELOG.md +15 -2
  2. package/README.md +4 -2
  3. package/dist/constants.js +11 -2
  4. package/dist/index-preview.js +3 -0
  5. package/dist/init/visibility-listener.js +2 -2
  6. package/dist/models/event/event-response.js +1 -0
  7. package/dist/models/trigger/action/click-action-executor.js +260 -0
  8. package/dist/models/trigger/blocks/background.js +33 -0
  9. package/dist/models/trigger/blocks/border.js +49 -0
  10. package/dist/models/trigger/blocks/click-action.js +9 -0
  11. package/dist/models/trigger/blocks/color.js +48 -0
  12. package/dist/models/trigger/blocks/colour.js +1 -0
  13. package/dist/models/trigger/blocks/flex.js +1 -0
  14. package/dist/models/trigger/blocks/font.js +1 -0
  15. package/dist/models/trigger/blocks/glossy.js +25 -0
  16. package/dist/models/trigger/blocks/gradient.js +1 -0
  17. package/dist/models/trigger/blocks/image.js +1 -0
  18. package/dist/models/trigger/blocks/index.js +5 -0
  19. package/dist/models/trigger/blocks/position.js +1 -0
  20. package/dist/models/trigger/blocks/shadow.js +1 -0
  21. package/dist/models/trigger/blocks/spacing.js +1 -0
  22. package/dist/models/trigger/blocks/transform.js +13 -0
  23. package/dist/models/trigger/elements/base-element.js +50 -0
  24. package/dist/models/trigger/elements/base-text-element.js +1 -0
  25. package/dist/models/trigger/elements/group-element.js +1 -0
  26. package/dist/models/trigger/elements/image-element.js +26 -0
  27. package/dist/models/trigger/elements/index.js +4 -0
  28. package/dist/models/trigger/elements/shape-element.js +24 -0
  29. package/dist/models/trigger/elements/text-element.js +81 -0
  30. package/dist/models/trigger/embedded-trigger.js +26 -0
  31. package/dist/models/trigger/inapp/container.js +103 -0
  32. package/dist/models/trigger/inapp/in-app-trigger.js +32 -0
  33. package/dist/models/trigger/inapp/layer.js +1 -0
  34. package/dist/models/trigger/trigger-data.js +9 -3
  35. package/dist/models/trigger/trigger-helper.js +49 -0
  36. package/dist/renderer/base-text-renderer.js +77 -0
  37. package/dist/renderer/block-processor.js +234 -0
  38. package/dist/renderer/block-renderer.js +44 -0
  39. package/dist/renderer/container-renderer.js +46 -0
  40. package/dist/renderer/group-renderer.js +44 -0
  41. package/dist/renderer/iFrame-renderer.js +85 -0
  42. package/dist/renderer/image-renderer.js +44 -0
  43. package/dist/renderer/in-app-renderer.js +81 -0
  44. package/dist/renderer/index.js +25 -0
  45. package/dist/renderer/renderer.js +77 -0
  46. package/dist/renderer/root-container-renderer.js +43 -0
  47. package/dist/renderer/shape-renderer.js +39 -0
  48. package/dist/renderer/text-renderer.js +48 -0
  49. package/dist/sdk-preview.min.js +2 -0
  50. package/dist/sdk-preview.min.js.LICENSE.txt +8 -0
  51. package/dist/sdk.min.js +1 -1
  52. package/dist/services/http-api.service.js +30 -9
  53. package/dist/services/user-auth.service.js +7 -7
  54. package/dist/session/new-session-executor.js +2 -2
  55. package/dist/session/session-manager.js +1 -0
  56. package/dist/utils/local-storage-helper.js +22 -0
  57. package/dist/utils/log.js +17 -13
  58. package/package.json +8 -6
  59. package/webpack-preview.config.js +10 -0
@@ -37,6 +37,9 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
37
37
  import { Constants } from '../constants';
38
38
  import { Log } from '../utils/log';
39
39
  import { RuntimeData } from '../utils/runtime-data';
40
+ import { InAppRenderer } from '../renderer/in-app-renderer';
41
+ import { LocalStorageHelper } from '../utils/local-storage-helper';
42
+ import { TriggerHelper } from '../models/trigger/trigger-helper';
40
43
  /**
41
44
  * A base or lower level HTTP service which simply hits the backend for given request.
42
45
  *
@@ -75,14 +78,24 @@ var HttpAPIService = /** @class */ (function () {
75
78
  */
76
79
  HttpAPIService.prototype.doHTTP = function (method, url, body, headers) {
77
80
  return __awaiter(this, void 0, void 0, function () {
78
- var response;
81
+ var browserSupportsKeepalive, xmlHttpRequest_1, response;
79
82
  return __generator(this, function (_a) {
80
83
  switch (_a.label) {
81
84
  case 0:
82
85
  if (!url.startsWith('http')) {
83
86
  url = Constants.API_URL + url;
84
87
  }
85
- return [4 /*yield*/, fetch(url, { method: method, body: JSON.stringify(body), headers: headers })];
88
+ browserSupportsKeepalive = 'keepalive' in new Request('');
89
+ if (!browserSupportsKeepalive && JSON.stringify(body).includes('CE App Background')) {
90
+ xmlHttpRequest_1 = new XMLHttpRequest();
91
+ xmlHttpRequest_1.open('POST', url, false);
92
+ headers.forEach(function (value, key) {
93
+ xmlHttpRequest_1.setRequestHeader(key, value);
94
+ });
95
+ xmlHttpRequest_1.send(JSON.stringify(body));
96
+ return [2 /*return*/, xmlHttpRequest_1.response.json()];
97
+ }
98
+ return [4 /*yield*/, fetch(url, { method: method, body: JSON.stringify(body), headers: headers, keepalive: true })];
86
99
  case 1:
87
100
  response = _a.sent();
88
101
  if (!response.ok) {
@@ -113,12 +126,20 @@ var HttpAPIService = /** @class */ (function () {
113
126
  HttpAPIService.prototype.sendEvent = function (event) {
114
127
  var headers = this.getDefaultHeaders();
115
128
  headers.append('x-sdk-token', this.apiToken);
129
+ event.activeTriggers = TriggerHelper.getActiveTriggers();
130
+ var trigger = LocalStorageHelper.getObject(Constants.STORAGE_ACTIVE_TRIGGER);
131
+ if (trigger) {
132
+ event.trigger = trigger;
133
+ }
116
134
  this.doHTTP('POST', '/v1/event/track', event, headers)
117
- .then(function () {
118
- Log.l('Sent', event.name);
135
+ .then(function (data) {
136
+ Log.log('Sent', event.name);
137
+ if (data.triggerData) {
138
+ new InAppRenderer().render(data.triggerData);
139
+ }
119
140
  })
120
141
  .catch(function (error) {
121
- Log.e('Error sending event', error);
142
+ Log.error('Error sending event', error);
122
143
  });
123
144
  };
124
145
  /**
@@ -131,10 +152,10 @@ var HttpAPIService = /** @class */ (function () {
131
152
  headers.append('x-sdk-token', this.apiToken);
132
153
  this.doHTTP('PUT', '/v1/user/update', data, headers)
133
154
  .then(function () {
134
- Log.l('Updated user profile');
155
+ Log.log('Updated user profile');
135
156
  })
136
157
  .catch(function (error) {
137
- Log.e('Error saving user profile', error);
158
+ Log.error('Error saving user profile', error);
138
159
  });
139
160
  };
140
161
  /**
@@ -147,10 +168,10 @@ var HttpAPIService = /** @class */ (function () {
147
168
  headers.append('x-sdk-token', this.apiToken);
148
169
  this.doHTTP('POST', '/v1/session/conclude', data, headers)
149
170
  .then(function (json) {
150
- Log.l('Conclude Session', json);
171
+ Log.log('Conclude Session', json);
151
172
  })
152
173
  .catch(function (error) {
153
- Log.e(error);
174
+ Log.error(error);
154
175
  });
155
176
  };
156
177
  /**
@@ -105,11 +105,11 @@ var UserAuthService = /** @class */ (function () {
105
105
  return __generator(this, function (_a) {
106
106
  this.sdkToken = LocalStorageHelper.getString(Constants.STORAGE_SDK_TOKEN, '');
107
107
  if (!this.sdkToken) {
108
- Log.l('No SDK token found in local storage');
108
+ Log.log('No SDK token found in local storage');
109
109
  }
110
110
  this.userID = LocalStorageHelper.getString(Constants.STORAGE_USER_ID, '');
111
111
  if (!this.userID) {
112
- Log.l('No user ID found in local storage');
112
+ Log.log('No user ID found in local storage');
113
113
  }
114
114
  this.updateAPIClient();
115
115
  return [2 /*return*/];
@@ -122,8 +122,8 @@ var UserAuthService = /** @class */ (function () {
122
122
  * @private
123
123
  */
124
124
  UserAuthService.prototype.updateAPIClient = function () {
125
- Log.l('SDK Token:', this.sdkToken);
126
- Log.l('User ID:', this.userID);
125
+ Log.log('SDK Token:', this.sdkToken);
126
+ Log.log('User ID:', this.userID);
127
127
  this.apiService.setAPIToken(this.sdkToken);
128
128
  this.apiService.setUserId(this.userID);
129
129
  };
@@ -138,7 +138,7 @@ var UserAuthService = /** @class */ (function () {
138
138
  if (this.hasToken()) {
139
139
  return [2 /*return*/, this.populateUserDataFromStorage()];
140
140
  }
141
- Log.l('Attempt to acquire SDK token');
141
+ Log.log('Attempt to acquire SDK token');
142
142
  return [2 /*return*/, this.getSDKTokenFromServer()];
143
143
  });
144
144
  });
@@ -164,12 +164,12 @@ var UserAuthService = /** @class */ (function () {
164
164
  return [4 /*yield*/, responseJson];
165
165
  case 3:
166
166
  data = _a.sent();
167
- Log.l('Register Device Response', data);
167
+ Log.log('Register Device Response', data);
168
168
  this.saveUserDataInStorage(data);
169
169
  return [3 /*break*/, 5];
170
170
  case 4:
171
171
  error_1 = _a.sent();
172
- Log.e(error_1);
172
+ Log.error(error_1);
173
173
  throw error_1;
174
174
  case 5: return [2 /*return*/];
175
175
  }
@@ -117,7 +117,7 @@ var NewSessionExecutor = /** @class */ (function () {
117
117
  return __generator(this, function (_b) {
118
118
  switch (_b.label) {
119
119
  case 0:
120
- event = new Event('CE Web Installed', {});
120
+ event = new Event('CE App Installed', {});
121
121
  _a = event;
122
122
  return [4 /*yield*/, new DevicePropertiesCollector().get()];
123
123
  case 1:
@@ -137,7 +137,7 @@ var NewSessionExecutor = /** @class */ (function () {
137
137
  return __generator(this, function (_b) {
138
138
  switch (_b.label) {
139
139
  case 0:
140
- event = new Event('CE Web Launched', {});
140
+ event = new Event('CE App Launched', {});
141
141
  _a = event;
142
142
  return [4 /*yield*/, new DevicePropertiesCollector().get()];
143
143
  case 1:
@@ -116,6 +116,7 @@ var SessionManager = /** @class */ (function () {
116
116
  'duration': this.getTotalDurationInSeconds(),
117
117
  };
118
118
  SafeHttpService.getInstance().concludeSession(data);
119
+ LocalStorageHelper.remove(Constants.STORAGE_ACTIVE_TRIGGER);
119
120
  this.destroySession();
120
121
  };
121
122
  /**
@@ -67,6 +67,28 @@ var LocalStorageHelper = /** @class */ (function () {
67
67
  LocalStorageHelper.setBoolean = function (key, value) {
68
68
  LocalStorageHelper.setString(key, JSON.stringify(value));
69
69
  };
70
+ /**
71
+ * Get value from local storage.
72
+ *
73
+ * @param {string} key key provided for the stored value.
74
+ * @return {any} value stored.
75
+ */
76
+ LocalStorageHelper.getObject = function (key) {
77
+ try {
78
+ return JSON.parse(LocalStorageHelper.getString(key, ''));
79
+ }
80
+ catch (ignored) {
81
+ return null;
82
+ }
83
+ };
84
+ /**
85
+ * Set value in local storage as json string.
86
+ * @param {string} key key provided for the storing value.
87
+ * @param {any} value value stored.
88
+ */
89
+ LocalStorageHelper.setObject = function (key, value) {
90
+ LocalStorageHelper.setString(key, JSON.stringify(value));
91
+ };
70
92
  /**
71
93
  * Remove the specified key from storage.
72
94
  *
package/dist/utils/log.js CHANGED
@@ -1,7 +1,11 @@
1
- var __spreadArray = (this && this.__spreadArray) || function (to, from) {
2
- for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
3
- to[j] = from[i];
4
- return to;
1
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
2
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
3
+ if (ar || !(i in from)) {
4
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
5
+ ar[i] = from[i];
6
+ }
7
+ }
8
+ return to.concat(ar || Array.prototype.slice.call(from));
5
9
  };
6
10
  import { Constants } from '../constants';
7
11
  /**
@@ -16,38 +20,38 @@ var Log = /** @class */ (function () {
16
20
  /**
17
21
  * Log info messages.
18
22
  *
19
- * @param {any[]} messages
23
+ * @param {any} messages
20
24
  */
21
- Log.l = function () {
25
+ Log.log = function () {
22
26
  var messages = [];
23
27
  for (var _i = 0; _i < arguments.length; _i++) {
24
28
  messages[_i] = arguments[_i];
25
29
  }
26
- console.log.apply(console, __spreadArray([Constants.LOG_PREFIX, ':'], messages));
30
+ console.log.apply(console, __spreadArray([Constants.LOG_PREFIX, ':'], messages, false));
27
31
  };
28
32
  /**
29
33
  * Log error messages.
30
34
  *
31
- * @param {any[]} messages
35
+ * @param {any} messages
32
36
  */
33
- Log.e = function () {
37
+ Log.error = function () {
34
38
  var messages = [];
35
39
  for (var _i = 0; _i < arguments.length; _i++) {
36
40
  messages[_i] = arguments[_i];
37
41
  }
38
- console.error.apply(console, __spreadArray([Constants.LOG_PREFIX, ':'], messages));
42
+ console.error.apply(console, __spreadArray([Constants.LOG_PREFIX, ':'], messages, false));
39
43
  };
40
44
  /**
41
45
  * Log warning messages.
42
46
  *
43
- * @param {any[]} messages
47
+ * @param {any} messages
44
48
  */
45
- Log.w = function () {
49
+ Log.warning = function () {
46
50
  var messages = [];
47
51
  for (var _i = 0; _i < arguments.length; _i++) {
48
52
  messages[_i] = arguments[_i];
49
53
  }
50
- console.warn.apply(console, __spreadArray([Constants.LOG_PREFIX, ':'], messages));
54
+ console.warn.apply(console, __spreadArray([Constants.LOG_PREFIX, ':'], messages, false));
51
55
  };
52
56
  return Log;
53
57
  }());
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@letscooee/web-sdk",
3
3
  "description": "Hyperpersonalised Mobile/Web App Re-Engagement via Machine Learning",
4
- "version": "0.0.3",
4
+ "version": "0.0.7",
5
5
  "scripts": {
6
6
  "lint": "eslint 'src/**'",
7
7
  "prepare": "npm run build",
8
8
  "build": "tsc",
9
- "build:production": "tsc && webpack",
9
+ "build:production": "webpack && webpack --config ./webpack-preview.config.js",
10
10
  "serve:old-school": "webpack serve",
11
11
  "preversion": "git add CHANGELOG.md src/constants.ts",
12
12
  "version": "npm run build:production",
@@ -31,18 +31,20 @@
31
31
  "homepage": "https://github.com/letscooee/cooee-web-sdk#readme",
32
32
  "devDependencies": {
33
33
  "@types/ua-parser-js": "^0.7.36",
34
- "@typescript-eslint/eslint-plugin": "^4.31.0",
35
- "@typescript-eslint/parser": "^4.31.0",
36
- "eslint": "^7.32.0",
34
+ "@typescript-eslint/eslint-plugin": "^5.10.0",
35
+ "@typescript-eslint/parser": "^5.10.0",
36
+ "eslint": "^8.7.0",
37
37
  "eslint-config-google": "^0.14.0",
38
38
  "ts-loader": "^9.2.4",
39
- "typescript": "^4.3.5",
39
+ "typescript": "^4.4.4",
40
40
  "webpack": "^5.47.1",
41
41
  "webpack-cli": "^4.7.2",
42
42
  "webpack-dev-server": "^4.1.1"
43
43
  },
44
44
  "dependencies": {
45
45
  "bson-objectid": "^2.0.1",
46
+ "hex-rgb": "^5.0.0",
47
+ "hex-to-rgba": "^2.0.1",
46
48
  "rxjs": "^7.3.0",
47
49
  "ua-parser-js": "^0.7.28"
48
50
  }
@@ -0,0 +1,10 @@
1
+ const config = require('./webpack.config');
2
+ config.entry = './src/index-preview.ts';
3
+ config.output.library = {
4
+ name: 'CooeePreview',
5
+ type: 'assign',
6
+ export: 'default',
7
+ };
8
+ config.output.filename = 'sdk-preview.min.js';
9
+
10
+ module.exports = config;