roboto-js 1.3.3 → 1.3.5

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.
@@ -38,7 +38,8 @@ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e
38
38
  var Roboto = exports["default"] = /*#__PURE__*/function () {
39
39
  function Roboto(_ref) {
40
40
  var host = _ref.host,
41
- apiKey = _ref.apiKey;
41
+ apiKey = _ref.apiKey,
42
+ localStorageAdaptor = _ref.localStorageAdaptor;
42
43
  var proxyReq = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
43
44
  _classCallCheck(this, Roboto);
44
45
  if (Roboto.instance && !proxyReq) {
@@ -50,7 +51,9 @@ var Roboto = exports["default"] = /*#__PURE__*/function () {
50
51
  this.config = {
51
52
  apiKey: apiKey,
52
53
  // Use passed apiKey
53
- baseUrl: "https://".concat(host) // Use passed host
54
+ baseUrl: "https://".concat(host),
55
+ // Use passed host
56
+ localStorageAdaptor: localStorageAdaptor
54
57
  };
55
58
 
56
59
  // DEVELOPMENT
@@ -28,31 +28,78 @@ var RbtApi = exports["default"] = /*#__PURE__*/function () {
28
28
  function RbtApi(_ref) {
29
29
  var apiKey = _ref.apiKey,
30
30
  baseUrl = _ref.baseUrl,
31
- authtoken = _ref.authtoken,
32
- accesskey = _ref.accesskey;
31
+ _ref$authtoken = _ref.authtoken,
32
+ authtoken = _ref$authtoken === void 0 ? null : _ref$authtoken,
33
+ _ref$accesskey = _ref.accesskey,
34
+ accesskey = _ref$accesskey === void 0 ? null : _ref$accesskey,
35
+ _ref$localStorageAdap = _ref.localStorageAdaptor,
36
+ localStorageAdaptor = _ref$localStorageAdap === void 0 ? null : _ref$localStorageAdap;
33
37
  _classCallCheck(this, RbtApi);
34
- var isClient = typeof window !== 'undefined';
35
- var authTokenToUse = isClient && !authtoken && typeof localStorage != 'undefined' ? localStorage.getItem('authtoken') : authtoken;
36
38
  this.axios = _axios["default"].create({
37
39
  baseURL: baseUrl,
38
40
  headers: {
39
- 'accesskey': accesskey || apiKey,
40
- 'authtoken': authTokenToUse
41
+ 'accesskey': accesskey || apiKey
42
+ //'authtoken': authTokenToUse
41
43
  }
42
44
  });
45
+ if (localStorageAdaptor) {
46
+ // must implement getItem, setItem interface
47
+ this.localStorageAdaptor = localStorageAdaptor;
48
+ } else if (typeof localStorage != 'undefined') {
49
+ // browser based local storage
50
+ this.localStorageAdaptor = {
51
+ getItem: function getItem(key) {
52
+ return Promise.resolve(localStorage.getItem(key));
53
+ },
54
+ setItem: function setItem(key, value) {
55
+ return Promise.resolve(localStorage.setItem(key, value));
56
+ }
57
+ };
58
+ }
43
59
  this.localDb = null;
44
60
  this.iac_session = null;
45
- this.authtoken = authTokenToUse;
46
61
  this.appServiceHost = null;
62
+
63
+ // Use the storageAdaptor to get the authToken, if available
64
+ this.initAuthToken(authtoken);
47
65
  }
48
66
  _createClass(RbtApi, [{
49
- key: "initLocalDb",
67
+ key: "initAuthToken",
50
68
  value: function () {
51
- var _initLocalDb = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
69
+ var _initAuthToken = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(authtoken) {
52
70
  return _regeneratorRuntime().wrap(function _callee$(_context) {
53
71
  while (1) switch (_context.prev = _context.next) {
54
72
  case 0:
55
- _context.next = 2;
73
+ if (!(!authtoken && this.localStorageAdaptor)) {
74
+ _context.next = 4;
75
+ break;
76
+ }
77
+ _context.next = 3;
78
+ return this.localStorageAdaptor.getItem('authtoken');
79
+ case 3:
80
+ authtoken = _context.sent;
81
+ case 4:
82
+ this.authtoken = authtoken;
83
+ this.axios.defaults.headers.common['authtoken'] = this.authtoken;
84
+ case 6:
85
+ case "end":
86
+ return _context.stop();
87
+ }
88
+ }, _callee, this);
89
+ }));
90
+ function initAuthToken(_x) {
91
+ return _initAuthToken.apply(this, arguments);
92
+ }
93
+ return initAuthToken;
94
+ }()
95
+ }, {
96
+ key: "initLocalDb",
97
+ value: function () {
98
+ var _initLocalDb = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {
99
+ return _regeneratorRuntime().wrap(function _callee2$(_context2) {
100
+ while (1) switch (_context2.prev = _context2.next) {
101
+ case 0:
102
+ _context2.next = 2;
56
103
  return (0, _idb.openDB)('RBTFileDatabase', 1, {
57
104
  upgrade: function upgrade(db) {
58
105
  if (!db.objectStoreNames.contains('files')) {
@@ -63,12 +110,12 @@ var RbtApi = exports["default"] = /*#__PURE__*/function () {
63
110
  }
64
111
  });
65
112
  case 2:
66
- this.localDb = _context.sent;
113
+ this.localDb = _context2.sent;
67
114
  case 3:
68
115
  case "end":
69
- return _context.stop();
116
+ return _context2.stop();
70
117
  }
71
- }, _callee, this);
118
+ }, _callee2, this);
72
119
  }));
73
120
  function initLocalDb() {
74
121
  return _initLocalDb.apply(this, arguments);
@@ -93,46 +140,50 @@ var RbtApi = exports["default"] = /*#__PURE__*/function () {
93
140
  }, {
94
141
  key: "login",
95
142
  value: (function () {
96
- var _login = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(params) {
143
+ var _login = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(params) {
97
144
  var hash_password, response;
98
- return _regeneratorRuntime().wrap(function _callee2$(_context2) {
99
- while (1) switch (_context2.prev = _context2.next) {
145
+ return _regeneratorRuntime().wrap(function _callee3$(_context3) {
146
+ while (1) switch (_context3.prev = _context3.next) {
100
147
  case 0:
101
- _context2.prev = 0;
148
+ _context3.prev = 0;
102
149
  // create a md5 hash of the password using crypto-js
103
150
  hash_password = _cryptoJs["default"].MD5(params.password).toString(_cryptoJs["default"].enc.Hex);
104
- _context2.next = 4;
151
+ _context3.next = 4;
105
152
  return this.axios.post('/user_service/loginUser', [{
106
153
  email: params.email,
107
154
  password: hash_password
108
155
  }]);
109
156
  case 4:
110
- response = _context2.sent;
157
+ response = _context3.sent;
111
158
  if (!(response.data.ok === false)) {
112
- _context2.next = 7;
159
+ _context3.next = 7;
113
160
  break;
114
161
  }
115
- return _context2.abrupt("return", this._handleError(response));
162
+ return _context3.abrupt("return", this._handleError(response));
116
163
  case 7:
117
164
  this.iac_session = response.data;
118
165
  this.currentUser = this.iac_session ? new _rbt_user["default"](this.iac_session.user, this.axios) : null;
119
166
  // update axios instance headers with authtoken
120
167
  this.axios.defaults.headers.common['authtoken'] = response.data.authToken;
121
- if (typeof localStorage != 'undefined') {
122
- localStorage.setItem('authtoken', response.data.authToken);
168
+ if (!this.localStorageAdaptor) {
169
+ _context3.next = 13;
170
+ break;
123
171
  }
124
- return _context2.abrupt("return", response.data);
125
- case 14:
126
- _context2.prev = 14;
127
- _context2.t0 = _context2["catch"](0);
128
- this._handleError(_context2.t0);
129
- case 17:
172
+ _context3.next = 13;
173
+ return this.localStorageAdaptor.setItem('authtoken', response.data.authToken);
174
+ case 13:
175
+ return _context3.abrupt("return", response.data);
176
+ case 16:
177
+ _context3.prev = 16;
178
+ _context3.t0 = _context3["catch"](0);
179
+ this._handleError(_context3.t0);
180
+ case 19:
130
181
  case "end":
131
- return _context2.stop();
182
+ return _context3.stop();
132
183
  }
133
- }, _callee2, this, [[0, 14]]);
184
+ }, _callee3, this, [[0, 16]]);
134
185
  }));
135
- function login(_x) {
186
+ function login(_x2) {
136
187
  return _login.apply(this, arguments);
137
188
  }
138
189
  return login;
@@ -140,21 +191,21 @@ var RbtApi = exports["default"] = /*#__PURE__*/function () {
140
191
  }, {
141
192
  key: "logout",
142
193
  value: function () {
143
- var _logout = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {
194
+ var _logout = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {
144
195
  var response;
145
- return _regeneratorRuntime().wrap(function _callee3$(_context3) {
146
- while (1) switch (_context3.prev = _context3.next) {
196
+ return _regeneratorRuntime().wrap(function _callee4$(_context4) {
197
+ while (1) switch (_context4.prev = _context4.next) {
147
198
  case 0:
148
- _context3.prev = 0;
149
- _context3.next = 3;
199
+ _context4.prev = 0;
200
+ _context4.next = 3;
150
201
  return this.axios.post('/user_service/logoutUser');
151
202
  case 3:
152
- response = _context3.sent;
203
+ response = _context4.sent;
153
204
  if (!(response.data.ok === false)) {
154
- _context3.next = 6;
205
+ _context4.next = 6;
155
206
  break;
156
207
  }
157
- return _context3.abrupt("return", this._handleError(response));
208
+ return _context4.abrupt("return", this._handleError(response));
158
209
  case 6:
159
210
  // Clear the iac_session and remove the auth token from axios headers
160
211
  this.iac_session = null;
@@ -164,21 +215,23 @@ var RbtApi = exports["default"] = /*#__PURE__*/function () {
164
215
  }
165
216
 
166
217
  // Clear localStorage if it's being used
167
- if (typeof localStorage !== 'undefined') {
168
- localStorage.removeItem('authtoken');
218
+ if (!this.localStorageAdaptor) {
219
+ _context4.next = 12;
220
+ break;
169
221
  }
170
-
171
- // Return some kind of success response or the response from the server
172
- return _context3.abrupt("return", response.data);
173
- case 13:
174
- _context3.prev = 13;
175
- _context3.t0 = _context3["catch"](0);
176
- this._handleError(_context3.t0);
177
- case 16:
222
+ _context4.next = 12;
223
+ return this.localStorageAdaptor.removeItem('authtoken');
224
+ case 12:
225
+ return _context4.abrupt("return", response.data);
226
+ case 15:
227
+ _context4.prev = 15;
228
+ _context4.t0 = _context4["catch"](0);
229
+ this._handleError(_context4.t0);
230
+ case 18:
178
231
  case "end":
179
- return _context3.stop();
232
+ return _context4.stop();
180
233
  }
181
- }, _callee3, this, [[0, 13]]);
234
+ }, _callee4, this, [[0, 15]]);
182
235
  }));
183
236
  function logout() {
184
237
  return _logout.apply(this, arguments);
@@ -188,43 +241,43 @@ var RbtApi = exports["default"] = /*#__PURE__*/function () {
188
241
  }, {
189
242
  key: "loadCurrentUser",
190
243
  value: function () {
191
- var _loadCurrentUser = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {
244
+ var _loadCurrentUser = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee5() {
192
245
  var response;
193
- return _regeneratorRuntime().wrap(function _callee4$(_context4) {
194
- while (1) switch (_context4.prev = _context4.next) {
246
+ return _regeneratorRuntime().wrap(function _callee5$(_context5) {
247
+ while (1) switch (_context5.prev = _context5.next) {
195
248
  case 0:
196
- _context4.prev = 0;
249
+ _context5.prev = 0;
197
250
  if (!this.currentUser) {
198
- _context4.next = 3;
251
+ _context5.next = 3;
199
252
  break;
200
253
  }
201
- return _context4.abrupt("return", this.currentUser);
254
+ return _context5.abrupt("return", this.currentUser);
202
255
  case 3:
203
256
  if (!this.authtoken) {
204
- _context4.next = 10;
257
+ _context5.next = 10;
205
258
  break;
206
259
  }
207
- _context4.next = 6;
260
+ _context5.next = 6;
208
261
  return this.refreshAuthToken(this.authtoken);
209
262
  case 6:
210
- response = _context4.sent;
263
+ response = _context5.sent;
211
264
  this.currentUser = new _rbt_user["default"]({
212
265
  id: response.user.id
213
266
  }, this.axios);
214
267
  this.currentUser.setData(response.user);
215
- return _context4.abrupt("return", this.currentUser);
268
+ return _context5.abrupt("return", this.currentUser);
216
269
  case 10:
217
270
  this.currentUser = null;
218
- return _context4.abrupt("return", null);
271
+ return _context5.abrupt("return", null);
219
272
  case 14:
220
- _context4.prev = 14;
221
- _context4.t0 = _context4["catch"](0);
222
- return _context4.abrupt("return", this._handleError(_context4.t0));
273
+ _context5.prev = 14;
274
+ _context5.t0 = _context5["catch"](0);
275
+ return _context5.abrupt("return", this._handleError(_context5.t0));
223
276
  case 17:
224
277
  case "end":
225
- return _context4.stop();
278
+ return _context5.stop();
226
279
  }
227
- }, _callee4, this, [[0, 14]]);
280
+ }, _callee5, this, [[0, 14]]);
228
281
  }));
229
282
  function loadCurrentUser() {
230
283
  return _loadCurrentUser.apply(this, arguments);
@@ -234,37 +287,37 @@ var RbtApi = exports["default"] = /*#__PURE__*/function () {
234
287
  }, {
235
288
  key: "confirmUserEmail",
236
289
  value: function () {
237
- var _confirmUserEmail = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee5(confirmCode) {
290
+ var _confirmUserEmail = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee6(confirmCode) {
238
291
  var params, response;
239
- return _regeneratorRuntime().wrap(function _callee5$(_context5) {
240
- while (1) switch (_context5.prev = _context5.next) {
292
+ return _regeneratorRuntime().wrap(function _callee6$(_context6) {
293
+ while (1) switch (_context6.prev = _context6.next) {
241
294
  case 0:
242
295
  params = {
243
296
  emailConfirmCode: confirmCode
244
297
  };
245
- _context5.prev = 1;
246
- _context5.next = 4;
298
+ _context6.prev = 1;
299
+ _context6.next = 4;
247
300
  return this.axios.post('/user_service/confirmUserEmail', [params]);
248
301
  case 4:
249
- response = _context5.sent;
302
+ response = _context6.sent;
250
303
  if (!(response.data.ok === false)) {
251
- _context5.next = 7;
304
+ _context6.next = 7;
252
305
  break;
253
306
  }
254
- return _context5.abrupt("return", this._handleError(response));
307
+ return _context6.abrupt("return", this._handleError(response));
255
308
  case 7:
256
- return _context5.abrupt("return", response.data);
309
+ return _context6.abrupt("return", response.data);
257
310
  case 10:
258
- _context5.prev = 10;
259
- _context5.t0 = _context5["catch"](1);
260
- return _context5.abrupt("return", this._handleError(_context5.t0));
311
+ _context6.prev = 10;
312
+ _context6.t0 = _context6["catch"](1);
313
+ return _context6.abrupt("return", this._handleError(_context6.t0));
261
314
  case 13:
262
315
  case "end":
263
- return _context5.stop();
316
+ return _context6.stop();
264
317
  }
265
- }, _callee5, this, [[1, 10]]);
318
+ }, _callee6, this, [[1, 10]]);
266
319
  }));
267
- function confirmUserEmail(_x2) {
320
+ function confirmUserEmail(_x3) {
268
321
  return _confirmUserEmail.apply(this, arguments);
269
322
  }
270
323
  return confirmUserEmail;
@@ -272,36 +325,36 @@ var RbtApi = exports["default"] = /*#__PURE__*/function () {
272
325
  }, {
273
326
  key: "loadUser",
274
327
  value: function () {
275
- var _loadUser = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee6(userId) {
328
+ var _loadUser = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee7(userId) {
276
329
  var params, _response$data, response, userData, User;
277
- return _regeneratorRuntime().wrap(function _callee6$(_context6) {
278
- while (1) switch (_context6.prev = _context6.next) {
330
+ return _regeneratorRuntime().wrap(function _callee7$(_context7) {
331
+ while (1) switch (_context7.prev = _context7.next) {
279
332
  case 0:
280
333
  params = {
281
334
  id: userId
282
335
  };
283
- _context6.prev = 1;
284
- _context6.next = 4;
336
+ _context7.prev = 1;
337
+ _context7.next = 4;
285
338
  return this.axios.post('/user_service/loadUser', [params]);
286
339
  case 4:
287
- response = _context6.sent;
340
+ response = _context7.sent;
288
341
  userData = response === null || response === void 0 || (_response$data = response.data) === null || _response$data === void 0 ? void 0 : _response$data.user;
289
342
  User = new _rbt_user["default"]({
290
343
  id: userData.id
291
344
  }, this.axios);
292
345
  User.setData(userData);
293
- return _context6.abrupt("return", User);
346
+ return _context7.abrupt("return", User);
294
347
  case 11:
295
- _context6.prev = 11;
296
- _context6.t0 = _context6["catch"](1);
297
- return _context6.abrupt("return", this._handleError(_context6.t0));
348
+ _context7.prev = 11;
349
+ _context7.t0 = _context7["catch"](1);
350
+ return _context7.abrupt("return", this._handleError(_context7.t0));
298
351
  case 14:
299
352
  case "end":
300
- return _context6.stop();
353
+ return _context7.stop();
301
354
  }
302
- }, _callee6, this, [[1, 11]]);
355
+ }, _callee7, this, [[1, 11]]);
303
356
  }));
304
- function loadUser(_x3) {
357
+ function loadUser(_x4) {
305
358
  return _loadUser.apply(this, arguments);
306
359
  }
307
360
  return loadUser;
@@ -309,29 +362,29 @@ var RbtApi = exports["default"] = /*#__PURE__*/function () {
309
362
  }, {
310
363
  key: "refreshAuthToken",
311
364
  value: function () {
312
- var _refreshAuthToken = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee7(authtoken) {
365
+ var _refreshAuthToken = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee8(authtoken) {
313
366
  var response;
314
- return _regeneratorRuntime().wrap(function _callee7$(_context7) {
315
- while (1) switch (_context7.prev = _context7.next) {
367
+ return _regeneratorRuntime().wrap(function _callee8$(_context8) {
368
+ while (1) switch (_context8.prev = _context8.next) {
316
369
  case 0:
317
- _context7.prev = 0;
318
- _context7.next = 3;
370
+ _context8.prev = 0;
371
+ _context8.next = 3;
319
372
  return this.axios.post('/user_service/refreshAuthToken', [authtoken]);
320
373
  case 3:
321
- response = _context7.sent;
374
+ response = _context8.sent;
322
375
  debugger;
323
- return _context7.abrupt("return", response.data);
376
+ return _context8.abrupt("return", response.data);
324
377
  case 8:
325
- _context7.prev = 8;
326
- _context7.t0 = _context7["catch"](0);
327
- this._handleError(_context7.t0);
378
+ _context8.prev = 8;
379
+ _context8.t0 = _context8["catch"](0);
380
+ this._handleError(_context8.t0);
328
381
  case 11:
329
382
  case "end":
330
- return _context7.stop();
383
+ return _context8.stop();
331
384
  }
332
- }, _callee7, this, [[0, 8]]);
385
+ }, _callee8, this, [[0, 8]]);
333
386
  }));
334
- function refreshAuthToken(_x4) {
387
+ function refreshAuthToken(_x5) {
335
388
  return _refreshAuthToken.apply(this, arguments);
336
389
  }
337
390
  return refreshAuthToken;
@@ -346,32 +399,32 @@ var RbtApi = exports["default"] = /*#__PURE__*/function () {
346
399
  }, {
347
400
  key: "registerUser",
348
401
  value: (function () {
349
- var _registerUser = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee8() {
402
+ var _registerUser = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee9() {
350
403
  var dataHash,
351
404
  response,
352
405
  record,
353
- _args8 = arguments;
354
- return _regeneratorRuntime().wrap(function _callee8$(_context8) {
355
- while (1) switch (_context8.prev = _context8.next) {
406
+ _args9 = arguments;
407
+ return _regeneratorRuntime().wrap(function _callee9$(_context9) {
408
+ while (1) switch (_context9.prev = _context9.next) {
356
409
  case 0:
357
- dataHash = _args8.length > 0 && _args8[0] !== undefined ? _args8[0] : {};
358
- _context8.prev = 1;
359
- _context8.next = 4;
410
+ dataHash = _args9.length > 0 && _args9[0] !== undefined ? _args9[0] : {};
411
+ _context9.prev = 1;
412
+ _context9.next = 4;
360
413
  return this.axios.post('/user_service/registerUser', [dataHash]);
361
414
  case 4:
362
- response = _context8.sent;
415
+ response = _context9.sent;
363
416
  record = response.data;
364
- return _context8.abrupt("return", new _rbt_user["default"](record, this.axios));
417
+ return _context9.abrupt("return", new _rbt_user["default"](record, this.axios));
365
418
  case 9:
366
- _context8.prev = 9;
367
- _context8.t0 = _context8["catch"](1);
419
+ _context9.prev = 9;
420
+ _context9.t0 = _context9["catch"](1);
368
421
  debugger;
369
- return _context8.abrupt("return", this._handleError(_context8.t0));
422
+ return _context9.abrupt("return", this._handleError(_context9.t0));
370
423
  case 13:
371
424
  case "end":
372
- return _context8.stop();
425
+ return _context9.stop();
373
426
  }
374
- }, _callee8, this, [[1, 9]]);
427
+ }, _callee9, this, [[1, 9]]);
375
428
  }));
376
429
  function registerUser() {
377
430
  return _registerUser.apply(this, arguments);
@@ -389,32 +442,32 @@ var RbtApi = exports["default"] = /*#__PURE__*/function () {
389
442
  }, {
390
443
  key: "createFile",
391
444
  value: (function () {
392
- var _createFile = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee9(dataHash) {
445
+ var _createFile = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee10(dataHash) {
393
446
  var response, record;
394
- return _regeneratorRuntime().wrap(function _callee9$(_context9) {
395
- while (1) switch (_context9.prev = _context9.next) {
447
+ return _regeneratorRuntime().wrap(function _callee10$(_context10) {
448
+ while (1) switch (_context10.prev = _context10.next) {
396
449
  case 0:
397
- _context9.prev = 0;
398
- _context9.next = 3;
450
+ _context10.prev = 0;
451
+ _context10.next = 3;
399
452
  return this.axios.post('/object_service/createObject', ['<@filekit.file>', dataHash]);
400
453
  case 3:
401
- response = _context9.sent;
454
+ response = _context10.sent;
402
455
  record = response.data;
403
456
  if (dataHash) {
404
457
  record.data = dataHash;
405
458
  }
406
- return _context9.abrupt("return", new _rbt_file["default"](record, this.axios, this.localDb));
459
+ return _context10.abrupt("return", new _rbt_file["default"](record, this.axios, this.localDb));
407
460
  case 9:
408
- _context9.prev = 9;
409
- _context9.t0 = _context9["catch"](0);
410
- return _context9.abrupt("return", this._handleError(_context9.t0));
461
+ _context10.prev = 9;
462
+ _context10.t0 = _context10["catch"](0);
463
+ return _context10.abrupt("return", this._handleError(_context10.t0));
411
464
  case 12:
412
465
  case "end":
413
- return _context9.stop();
466
+ return _context10.stop();
414
467
  }
415
- }, _callee9, this, [[0, 9]]);
468
+ }, _callee10, this, [[0, 9]]);
416
469
  }));
417
- function createFile(_x5) {
470
+ function createFile(_x6) {
418
471
  return _createFile.apply(this, arguments);
419
472
  }
420
473
  return createFile;
@@ -430,38 +483,38 @@ var RbtApi = exports["default"] = /*#__PURE__*/function () {
430
483
  }, {
431
484
  key: "create",
432
485
  value: (function () {
433
- var _create = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee10(type) {
486
+ var _create = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee11(type) {
434
487
  var dataHash,
435
488
  response,
436
489
  record,
437
- _args10 = arguments;
438
- return _regeneratorRuntime().wrap(function _callee10$(_context10) {
439
- while (1) switch (_context10.prev = _context10.next) {
490
+ _args11 = arguments;
491
+ return _regeneratorRuntime().wrap(function _callee11$(_context11) {
492
+ while (1) switch (_context11.prev = _context11.next) {
440
493
  case 0:
441
- dataHash = _args10.length > 1 && _args10[1] !== undefined ? _args10[1] : {};
442
- _context10.prev = 1;
443
- _context10.next = 4;
494
+ dataHash = _args11.length > 1 && _args11[1] !== undefined ? _args11[1] : {};
495
+ _context11.prev = 1;
496
+ _context11.next = 4;
444
497
  return this.axios.post('/object_service/createObject', [type, dataHash]);
445
498
  case 4:
446
- response = _context10.sent;
499
+ response = _context11.sent;
447
500
  record = response.data;
448
501
  if (dataHash) {
449
502
  record.data = dataHash;
450
503
  }
451
- return _context10.abrupt("return", new _rbt_object["default"](record, this.axios, {
504
+ return _context11.abrupt("return", new _rbt_object["default"](record, this.axios, {
452
505
  isNew: true
453
506
  }));
454
507
  case 10:
455
- _context10.prev = 10;
456
- _context10.t0 = _context10["catch"](1);
457
- return _context10.abrupt("return", this._handleError(_context10.t0));
508
+ _context11.prev = 10;
509
+ _context11.t0 = _context11["catch"](1);
510
+ return _context11.abrupt("return", this._handleError(_context11.t0));
458
511
  case 13:
459
512
  case "end":
460
- return _context10.stop();
513
+ return _context11.stop();
461
514
  }
462
- }, _callee10, this, [[1, 10]]);
515
+ }, _callee11, this, [[1, 10]]);
463
516
  }));
464
- function create(_x6) {
517
+ function create(_x7) {
465
518
  return _create.apply(this, arguments);
466
519
  }
467
520
  return create;
@@ -498,19 +551,19 @@ var RbtApi = exports["default"] = /*#__PURE__*/function () {
498
551
  }, {
499
552
  key: "query",
500
553
  value: (function () {
501
- var _query = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee11(type) {
554
+ var _query = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee12(type) {
502
555
  var _this = this;
503
556
  var params,
504
557
  defaultOrderBy,
505
558
  defaultLimit,
506
559
  mergedParams,
507
560
  response,
508
- _args11 = arguments;
509
- return _regeneratorRuntime().wrap(function _callee11$(_context11) {
510
- while (1) switch (_context11.prev = _context11.next) {
561
+ _args12 = arguments;
562
+ return _regeneratorRuntime().wrap(function _callee12$(_context12) {
563
+ while (1) switch (_context12.prev = _context12.next) {
511
564
  case 0:
512
- params = _args11.length > 1 && _args11[1] !== undefined ? _args11[1] : {};
513
- _context11.prev = 1;
565
+ params = _args12.length > 1 && _args12[1] !== undefined ? _args12[1] : {};
566
+ _context12.prev = 1;
514
567
  params.type = type;
515
568
 
516
569
  // Default ordering and pagination
@@ -527,15 +580,15 @@ var RbtApi = exports["default"] = /*#__PURE__*/function () {
527
580
  }
528
581
  }; // Merge defaults with provided params
529
582
  mergedParams = _objectSpread(_objectSpread(_objectSpread({}, defaultOrderBy), defaultLimit), params);
530
- _context11.next = 8;
583
+ _context12.next = 8;
531
584
  return this.axios.post('/object_service/queryObjects', [mergedParams]);
532
585
  case 8:
533
- response = _context11.sent;
586
+ response = _context12.sent;
534
587
  if (!(response.data.ok === false)) {
535
- _context11.next = 11;
588
+ _context12.next = 11;
536
589
  break;
537
590
  }
538
- return _context11.abrupt("return", this._handleError(response));
591
+ return _context12.abrupt("return", this._handleError(response));
539
592
  case 11:
540
593
  // Process items into RbtObject instances
541
594
  if (Array.isArray(response.data.items)) {
@@ -545,18 +598,18 @@ var RbtApi = exports["default"] = /*#__PURE__*/function () {
545
598
  });
546
599
  });
547
600
  }
548
- return _context11.abrupt("return", response.data.items);
601
+ return _context12.abrupt("return", response.data.items);
549
602
  case 15:
550
- _context11.prev = 15;
551
- _context11.t0 = _context11["catch"](1);
552
- return _context11.abrupt("return", this._handleError(_context11.t0));
603
+ _context12.prev = 15;
604
+ _context12.t0 = _context12["catch"](1);
605
+ return _context12.abrupt("return", this._handleError(_context12.t0));
553
606
  case 18:
554
607
  case "end":
555
- return _context11.stop();
608
+ return _context12.stop();
556
609
  }
557
- }, _callee11, this, [[1, 15]]);
610
+ }, _callee12, this, [[1, 15]]);
558
611
  }));
559
- function query(_x7) {
612
+ function query(_x8) {
560
613
  return _query.apply(this, arguments);
561
614
  }
562
615
  return query;
@@ -573,47 +626,47 @@ var RbtApi = exports["default"] = /*#__PURE__*/function () {
573
626
  }, {
574
627
  key: "load",
575
628
  value: (function () {
576
- var _load = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee12(type, ids) {
629
+ var _load = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee13(type, ids) {
577
630
  var params,
578
631
  mergedParams,
579
632
  res,
580
- _args12 = arguments;
581
- return _regeneratorRuntime().wrap(function _callee12$(_context12) {
582
- while (1) switch (_context12.prev = _context12.next) {
633
+ _args13 = arguments;
634
+ return _regeneratorRuntime().wrap(function _callee13$(_context13) {
635
+ while (1) switch (_context13.prev = _context13.next) {
583
636
  case 0:
584
- params = _args12.length > 2 && _args12[2] !== undefined ? _args12[2] : {};
585
- _context12.prev = 1;
637
+ params = _args13.length > 2 && _args13[2] !== undefined ? _args13[2] : {};
638
+ _context13.prev = 1;
586
639
  if (!Array.isArray(ids)) {
587
- _context12.next = 7;
640
+ _context13.next = 7;
588
641
  break;
589
642
  }
590
643
  mergedParams = _objectSpread(_objectSpread({}, params), {}, {
591
644
  where: "id IN (" + ids.join(',') + ")"
592
645
  });
593
- return _context12.abrupt("return", this.query(type, mergedParams));
646
+ return _context13.abrupt("return", this.query(type, mergedParams));
594
647
  case 7:
595
648
  mergedParams = _objectSpread(_objectSpread({}, params), {}, {
596
649
  where: "id=" + ids
597
650
  });
598
- _context12.next = 10;
651
+ _context13.next = 10;
599
652
  return this.query(type, mergedParams);
600
653
  case 10:
601
- res = _context12.sent;
602
- return _context12.abrupt("return", res[0]);
654
+ res = _context13.sent;
655
+ return _context13.abrupt("return", res[0]);
603
656
  case 12:
604
- _context12.next = 17;
657
+ _context13.next = 17;
605
658
  break;
606
659
  case 14:
607
- _context12.prev = 14;
608
- _context12.t0 = _context12["catch"](1);
609
- return _context12.abrupt("return", this._handleError(_context12.t0));
660
+ _context13.prev = 14;
661
+ _context13.t0 = _context13["catch"](1);
662
+ return _context13.abrupt("return", this._handleError(_context13.t0));
610
663
  case 17:
611
664
  case "end":
612
- return _context12.stop();
665
+ return _context13.stop();
613
666
  }
614
- }, _callee12, this, [[1, 14]]);
667
+ }, _callee13, this, [[1, 14]]);
615
668
  }));
616
- function load(_x8, _x9) {
669
+ function load(_x9, _x10) {
617
670
  return _load.apply(this, arguments);
618
671
  }
619
672
  return load;
@@ -635,7 +688,7 @@ var RbtApi = exports["default"] = /*#__PURE__*/function () {
635
688
  }, {
636
689
  key: "runTask",
637
690
  value: (function () {
638
- var _runTask = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee13() {
691
+ var _runTask = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee14() {
639
692
  var params,
640
693
  callbacks,
641
694
  onProgress,
@@ -647,20 +700,20 @@ var RbtApi = exports["default"] = /*#__PURE__*/function () {
647
700
  status,
648
701
  message,
649
702
  output,
650
- _args13 = arguments;
651
- return _regeneratorRuntime().wrap(function _callee13$(_context13) {
652
- while (1) switch (_context13.prev = _context13.next) {
703
+ _args14 = arguments;
704
+ return _regeneratorRuntime().wrap(function _callee14$(_context14) {
705
+ while (1) switch (_context14.prev = _context14.next) {
653
706
  case 0:
654
- params = _args13.length > 0 && _args13[0] !== undefined ? _args13[0] : {};
655
- callbacks = _args13.length > 1 && _args13[1] !== undefined ? _args13[1] : {};
707
+ params = _args14.length > 0 && _args14[0] !== undefined ? _args14[0] : {};
708
+ callbacks = _args14.length > 1 && _args14[1] !== undefined ? _args14[1] : {};
656
709
  onProgress = callbacks.onProgress, onError = callbacks.onError, onFinish = callbacks.onFinish;
657
- _context13.prev = 3;
658
- _context13.next = 6;
710
+ _context14.prev = 3;
711
+ _context14.next = 6;
659
712
  return this.post('/task_service/runChain', params);
660
713
  case 6:
661
- response = _context13.sent;
714
+ response = _context14.sent;
662
715
  if (response) {
663
- _context13.next = 9;
716
+ _context14.next = 9;
664
717
  break;
665
718
  }
666
719
  throw new Error('Invalid server response');
@@ -668,7 +721,7 @@ var RbtApi = exports["default"] = /*#__PURE__*/function () {
668
721
  // Validate response structure
669
722
  ok = response.ok, jobId = response.jobId, status = response.status, message = response.message, output = response.output;
670
723
  if (!(!ok || typeof jobId !== 'string' || typeof status !== 'string')) {
671
- _context13.next = 12;
724
+ _context14.next = 12;
672
725
  break;
673
726
  }
674
727
  throw new Error('Invalid response structure');
@@ -686,7 +739,7 @@ var RbtApi = exports["default"] = /*#__PURE__*/function () {
686
739
  console.log('Finish (request) ', response);
687
740
  onFinish(response);
688
741
  }
689
- return _context13.abrupt("return", {
742
+ return _context14.abrupt("return", {
690
743
  ok: ok,
691
744
  jobId: jobId,
692
745
  status: status,
@@ -694,24 +747,24 @@ var RbtApi = exports["default"] = /*#__PURE__*/function () {
694
747
  output: output
695
748
  });
696
749
  case 18:
697
- _context13.prev = 18;
698
- _context13.t0 = _context13["catch"](3);
750
+ _context14.prev = 18;
751
+ _context14.t0 = _context14["catch"](3);
699
752
  if (typeof onError === 'function') {
700
- onError(_context13.t0);
753
+ onError(_context14.t0);
701
754
  } else {
702
- console.error('Error in runTask:', _context13.t0);
755
+ console.error('Error in runTask:', _context14.t0);
703
756
  }
704
- return _context13.abrupt("return", {
757
+ return _context14.abrupt("return", {
705
758
  ok: false,
706
759
  jobId: null,
707
760
  status: 'ERROR',
708
- error: _context13.t0.message
761
+ error: _context14.t0.message
709
762
  });
710
763
  case 22:
711
764
  case "end":
712
- return _context13.stop();
765
+ return _context14.stop();
713
766
  }
714
- }, _callee13, this, [[3, 18]]);
767
+ }, _callee14, this, [[3, 18]]);
715
768
  }));
716
769
  function runTask() {
717
770
  return _runTask.apply(this, arguments);
@@ -732,26 +785,26 @@ var RbtApi = exports["default"] = /*#__PURE__*/function () {
732
785
  }, {
733
786
  key: "pollTaskProgress",
734
787
  value: (function () {
735
- var _pollTaskProgress = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee15(jobId, callbacks) {
788
+ var _pollTaskProgress = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee16(jobId, callbacks) {
736
789
  var _this2 = this;
737
790
  var onProgress, onError, onFinish, checkProgress;
738
- return _regeneratorRuntime().wrap(function _callee15$(_context15) {
739
- while (1) switch (_context15.prev = _context15.next) {
791
+ return _regeneratorRuntime().wrap(function _callee16$(_context16) {
792
+ while (1) switch (_context16.prev = _context16.next) {
740
793
  case 0:
741
794
  onProgress = callbacks.onProgress, onError = callbacks.onError, onFinish = callbacks.onFinish;
742
- _context15.prev = 1;
795
+ _context16.prev = 1;
743
796
  checkProgress = /*#__PURE__*/function () {
744
- var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee14() {
797
+ var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee15() {
745
798
  var response;
746
- return _regeneratorRuntime().wrap(function _callee14$(_context14) {
747
- while (1) switch (_context14.prev = _context14.next) {
799
+ return _regeneratorRuntime().wrap(function _callee15$(_context15) {
800
+ while (1) switch (_context15.prev = _context15.next) {
748
801
  case 0:
749
- _context14.next = 2;
802
+ _context15.next = 2;
750
803
  return _this2.get("/task_service/pollChainProgress", {
751
804
  jobId: jobId
752
805
  });
753
806
  case 2:
754
- response = _context14.sent;
807
+ response = _context15.sent;
755
808
  // If the task is still in progress, start polling for updates
756
809
  if (response.status === 'DONE' && onFinish) {
757
810
  // Provide the current progress to the callback function
@@ -774,28 +827,28 @@ var RbtApi = exports["default"] = /*#__PURE__*/function () {
774
827
  }
775
828
  case 7:
776
829
  case "end":
777
- return _context14.stop();
830
+ return _context15.stop();
778
831
  }
779
- }, _callee14);
832
+ }, _callee15);
780
833
  }));
781
834
  return function checkProgress() {
782
835
  return _ref2.apply(this, arguments);
783
836
  };
784
837
  }();
785
838
  checkProgress();
786
- _context15.next = 9;
839
+ _context16.next = 9;
787
840
  break;
788
841
  case 6:
789
- _context15.prev = 6;
790
- _context15.t0 = _context15["catch"](1);
791
- return _context15.abrupt("return", this._handleError(_context15.t0));
842
+ _context16.prev = 6;
843
+ _context16.t0 = _context16["catch"](1);
844
+ return _context16.abrupt("return", this._handleError(_context16.t0));
792
845
  case 9:
793
846
  case "end":
794
- return _context15.stop();
847
+ return _context16.stop();
795
848
  }
796
- }, _callee15, this, [[1, 6]]);
849
+ }, _callee16, this, [[1, 6]]);
797
850
  }));
798
- function pollTaskProgress(_x10, _x11) {
851
+ function pollTaskProgress(_x11, _x12) {
799
852
  return _pollTaskProgress.apply(this, arguments);
800
853
  }
801
854
  return pollTaskProgress;
@@ -815,46 +868,46 @@ var RbtApi = exports["default"] = /*#__PURE__*/function () {
815
868
  }, {
816
869
  key: "get",
817
870
  value: (function () {
818
- var _get = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee16(endpoint) {
871
+ var _get = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee17(endpoint) {
819
872
  var params,
820
873
  headers,
821
874
  response,
822
- _args16 = arguments;
823
- return _regeneratorRuntime().wrap(function _callee16$(_context16) {
824
- while (1) switch (_context16.prev = _context16.next) {
875
+ _args17 = arguments;
876
+ return _regeneratorRuntime().wrap(function _callee17$(_context17) {
877
+ while (1) switch (_context17.prev = _context17.next) {
825
878
  case 0:
826
- params = _args16.length > 1 && _args16[1] !== undefined ? _args16[1] : {};
879
+ params = _args17.length > 1 && _args17[1] !== undefined ? _args17[1] : {};
827
880
  debugger;
828
- _context16.prev = 2;
881
+ _context17.prev = 2;
829
882
  // Add the authToken to the headers
830
883
  headers = {
831
884
  authtoken: this.authtoken
832
885
  }; // Make the GET request using Axios
833
- _context16.next = 6;
886
+ _context17.next = 6;
834
887
  return this.axios.get(endpoint, {
835
888
  params: params,
836
889
  headers: headers
837
890
  });
838
891
  case 6:
839
- response = _context16.sent;
892
+ response = _context17.sent;
840
893
  if (!(response.data.ok === false)) {
841
- _context16.next = 9;
894
+ _context17.next = 9;
842
895
  break;
843
896
  }
844
- return _context16.abrupt("return", this._handleError(response));
897
+ return _context17.abrupt("return", this._handleError(response));
845
898
  case 9:
846
- return _context16.abrupt("return", response.data);
899
+ return _context17.abrupt("return", response.data);
847
900
  case 12:
848
- _context16.prev = 12;
849
- _context16.t0 = _context16["catch"](2);
850
- return _context16.abrupt("return", this._handleError(_context16.t0));
901
+ _context17.prev = 12;
902
+ _context17.t0 = _context17["catch"](2);
903
+ return _context17.abrupt("return", this._handleError(_context17.t0));
851
904
  case 15:
852
905
  case "end":
853
- return _context16.stop();
906
+ return _context17.stop();
854
907
  }
855
- }, _callee16, this, [[2, 12]]);
908
+ }, _callee17, this, [[2, 12]]);
856
909
  }));
857
- function get(_x12) {
910
+ function get(_x13) {
858
911
  return _get.apply(this, arguments);
859
912
  }
860
913
  return get;
@@ -875,44 +928,44 @@ var RbtApi = exports["default"] = /*#__PURE__*/function () {
875
928
  }, {
876
929
  key: "post",
877
930
  value: (function () {
878
- var _post = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee17(endpoint) {
931
+ var _post = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee18(endpoint) {
879
932
  var data,
880
933
  headers,
881
934
  response,
882
- _args17 = arguments;
883
- return _regeneratorRuntime().wrap(function _callee17$(_context17) {
884
- while (1) switch (_context17.prev = _context17.next) {
935
+ _args18 = arguments;
936
+ return _regeneratorRuntime().wrap(function _callee18$(_context18) {
937
+ while (1) switch (_context18.prev = _context18.next) {
885
938
  case 0:
886
- data = _args17.length > 1 && _args17[1] !== undefined ? _args17[1] : {};
887
- _context17.prev = 1;
939
+ data = _args18.length > 1 && _args18[1] !== undefined ? _args18[1] : {};
940
+ _context18.prev = 1;
888
941
  // Add the authToken to the headers
889
942
  headers = {
890
943
  authtoken: this.authtoken
891
944
  }; // Make the POST request using Axios
892
- _context17.next = 5;
945
+ _context18.next = 5;
893
946
  return this.axios.post(endpoint, data, {
894
947
  headers: headers
895
948
  });
896
949
  case 5:
897
- response = _context17.sent;
950
+ response = _context18.sent;
898
951
  if (!(response.data.ok === false)) {
899
- _context17.next = 8;
952
+ _context18.next = 8;
900
953
  break;
901
954
  }
902
- return _context17.abrupt("return", this._handleError(response));
955
+ return _context18.abrupt("return", this._handleError(response));
903
956
  case 8:
904
- return _context17.abrupt("return", response.data);
957
+ return _context18.abrupt("return", response.data);
905
958
  case 11:
906
- _context17.prev = 11;
907
- _context17.t0 = _context17["catch"](1);
908
- return _context17.abrupt("return", this._handleError(_context17.t0));
959
+ _context18.prev = 11;
960
+ _context18.t0 = _context18["catch"](1);
961
+ return _context18.abrupt("return", this._handleError(_context18.t0));
909
962
  case 14:
910
963
  case "end":
911
- return _context17.stop();
964
+ return _context18.stop();
912
965
  }
913
- }, _callee17, this, [[1, 11]]);
966
+ }, _callee18, this, [[1, 11]]);
914
967
  }));
915
- function post(_x13) {
968
+ function post(_x14) {
916
969
  return _post.apply(this, arguments);
917
970
  }
918
971
  return post;
package/dist/esm/index.js CHANGED
@@ -8,7 +8,8 @@ export { RbtApi, RbtObject, RbtFile
8
8
  export default class Roboto {
9
9
  constructor({
10
10
  host,
11
- apiKey
11
+ apiKey,
12
+ localStorageAdaptor
12
13
  }, proxyReq = null) {
13
14
  if (Roboto.instance && !proxyReq) {
14
15
  // if on client, there can only be one instance
@@ -19,7 +20,9 @@ export default class Roboto {
19
20
  this.config = {
20
21
  apiKey: apiKey,
21
22
  // Use passed apiKey
22
- baseUrl: `https://${host}` // Use passed host
23
+ baseUrl: `https://${host}`,
24
+ // Use passed host
25
+ localStorageAdaptor: localStorageAdaptor
23
26
  };
24
27
 
25
28
  // DEVELOPMENT
@@ -9,22 +9,40 @@ export default class RbtApi {
9
9
  constructor({
10
10
  apiKey,
11
11
  baseUrl,
12
- authtoken,
13
- accesskey
12
+ authtoken = null,
13
+ accesskey = null,
14
+ localStorageAdaptor = null
14
15
  }) {
15
- const isClient = typeof window !== 'undefined';
16
- const authTokenToUse = isClient && !authtoken && typeof localStorage != 'undefined' ? localStorage.getItem('authtoken') : authtoken;
17
16
  this.axios = axios.create({
18
17
  baseURL: baseUrl,
19
18
  headers: {
20
- 'accesskey': accesskey || apiKey,
21
- 'authtoken': authTokenToUse
19
+ 'accesskey': accesskey || apiKey
20
+ //'authtoken': authTokenToUse
22
21
  }
23
22
  });
23
+ if (localStorageAdaptor) {
24
+ // must implement getItem, setItem interface
25
+ this.localStorageAdaptor = localStorageAdaptor;
26
+ } else if (typeof localStorage != 'undefined') {
27
+ // browser based local storage
28
+ this.localStorageAdaptor = {
29
+ getItem: key => Promise.resolve(localStorage.getItem(key)),
30
+ setItem: (key, value) => Promise.resolve(localStorage.setItem(key, value))
31
+ };
32
+ }
24
33
  this.localDb = null;
25
34
  this.iac_session = null;
26
- this.authtoken = authTokenToUse;
27
35
  this.appServiceHost = null;
36
+
37
+ // Use the storageAdaptor to get the authToken, if available
38
+ this.initAuthToken(authtoken);
39
+ }
40
+ async initAuthToken(authtoken) {
41
+ if (!authtoken && this.localStorageAdaptor) {
42
+ authtoken = await this.localStorageAdaptor.getItem('authtoken');
43
+ }
44
+ this.authtoken = authtoken;
45
+ this.axios.defaults.headers.common['authtoken'] = this.authtoken;
28
46
  }
29
47
  async initLocalDb() {
30
48
  this.localDb = await openDB('RBTFileDatabase', 1, {
@@ -65,8 +83,8 @@ export default class RbtApi {
65
83
  this.currentUser = this.iac_session ? new RbtUser(this.iac_session.user, this.axios) : null;
66
84
  // update axios instance headers with authtoken
67
85
  this.axios.defaults.headers.common['authtoken'] = response.data.authToken;
68
- if (typeof localStorage != 'undefined') {
69
- localStorage.setItem('authtoken', response.data.authToken);
86
+ if (this.localStorageAdaptor) {
87
+ await this.localStorageAdaptor.setItem('authtoken', response.data.authToken);
70
88
  }
71
89
  return response.data;
72
90
  } catch (e) {
@@ -90,8 +108,8 @@ export default class RbtApi {
90
108
  }
91
109
 
92
110
  // Clear localStorage if it's being used
93
- if (typeof localStorage !== 'undefined') {
94
- localStorage.removeItem('authtoken');
111
+ if (this.localStorageAdaptor) {
112
+ await this.localStorageAdaptor.removeItem('authtoken');
95
113
  }
96
114
 
97
115
  // Return some kind of success response or the response from the server
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "roboto-js",
3
- "version": "1.3.3",
3
+ "version": "1.3.5",
4
4
  "type": "module",
5
5
  "description": "",
6
6
  "main": "dist/cjs/index.cjs",
package/src/index.js CHANGED
@@ -13,7 +13,7 @@ export {
13
13
 
14
14
  export default class Roboto{
15
15
 
16
- constructor({ host, apiKey }, proxyReq = null) {
16
+ constructor({ host, apiKey, localStorageAdaptor }, proxyReq = null) {
17
17
 
18
18
  if (Roboto.instance && !proxyReq) {
19
19
  // if on client, there can only be one instance
@@ -25,7 +25,8 @@ export default class Roboto{
25
25
 
26
26
  this.config = {
27
27
  apiKey: apiKey, // Use passed apiKey
28
- baseUrl: `https://${host}` // Use passed host
28
+ baseUrl: `https://${host}`, // Use passed host
29
+ localStorageAdaptor: localStorageAdaptor
29
30
  };
30
31
 
31
32
  // DEVELOPMENT
package/src/rbt_api.js CHANGED
@@ -8,23 +8,45 @@ import { openDB } from 'idb';
8
8
 
9
9
  export default class RbtApi {
10
10
 
11
- constructor({ apiKey, baseUrl, authtoken, accesskey }) {
12
-
13
- const isClient = typeof window !== 'undefined';
14
- const authTokenToUse = isClient && !authtoken && typeof localStorage != 'undefined' ? localStorage.getItem('authtoken') : authtoken;
11
+ constructor({ apiKey, baseUrl, authtoken=null, accesskey=null, localStorageAdaptor=null }) {
15
12
 
16
13
  this.axios = axios.create({
17
14
  baseURL: baseUrl,
18
15
  headers: {
19
16
  'accesskey': accesskey || apiKey,
20
- 'authtoken': authTokenToUse
17
+ //'authtoken': authTokenToUse
21
18
  }
22
19
  });
20
+
21
+ if(localStorageAdaptor){
22
+ // must implement getItem, setItem interface
23
+ this.localStorageAdaptor = localStorageAdaptor;
24
+ }
25
+ else if(typeof localStorage != 'undefined'){
26
+ // browser based local storage
27
+ this.localStorageAdaptor = {
28
+ getItem: (key) => Promise.resolve(localStorage.getItem(key)),
29
+ setItem: (key, value) => Promise.resolve(localStorage.setItem(key, value)),
30
+ };
31
+ }
23
32
  this.localDb = null;
24
33
  this.iac_session = null;
25
- this.authtoken = authTokenToUse;
26
34
  this.appServiceHost = null;
27
35
 
36
+ // Use the storageAdaptor to get the authToken, if available
37
+ this.initAuthToken(authtoken);
38
+
39
+ }
40
+
41
+ async initAuthToken(authtoken) {
42
+
43
+ if(!authtoken && this.localStorageAdaptor){
44
+ authtoken = await this.localStorageAdaptor.getItem('authtoken');
45
+ }
46
+
47
+ this.authtoken = authtoken;
48
+ this.axios.defaults.headers.common['authtoken'] = this.authtoken;
49
+
28
50
  }
29
51
 
30
52
  async initLocalDb(){
@@ -75,8 +97,8 @@ export default class RbtApi {
75
97
  // update axios instance headers with authtoken
76
98
  this.axios.defaults.headers.common['authtoken'] = response.data.authToken;
77
99
 
78
- if(typeof localStorage != 'undefined'){
79
- localStorage.setItem('authtoken', response.data.authToken);
100
+ if(this.localStorageAdaptor){
101
+ await this.localStorageAdaptor.setItem('authtoken', response.data.authToken);
80
102
  }
81
103
 
82
104
  return response.data;
@@ -104,8 +126,8 @@ export default class RbtApi {
104
126
  }
105
127
 
106
128
  // Clear localStorage if it's being used
107
- if (typeof localStorage !== 'undefined') {
108
- localStorage.removeItem('authtoken');
129
+ if (this.localStorageAdaptor) {
130
+ await this.localStorageAdaptor.removeItem('authtoken');
109
131
  }
110
132
 
111
133
  // Return some kind of success response or the response from the server