roboto-js 1.8.11 → 1.9.0

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.
package/.last-build CHANGED
@@ -1 +1 @@
1
- 2025-11-14T12:07:32.032Z
1
+ 2025-11-14T13:39:56.113Z
@@ -33,6 +33,7 @@ var _rbt_object = _interopRequireDefault(require("./rbt_object.cjs"));
33
33
  var _rbt_file = _interopRequireDefault(require("./rbt_file.cjs"));
34
34
  var _rbt_metrics_api = _interopRequireDefault(require("./rbt_metrics_api.cjs"));
35
35
  var _cookie_storage_adaptor = _interopRequireDefault(require("./cookie_storage_adaptor.cjs"));
36
+ var _module = require("module");
36
37
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
37
38
  function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
38
39
  function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator["return"] && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; }
@@ -43,6 +44,9 @@ function _defineProperties(target, props) { for (var i = 0; i < props.length; i+
43
44
  function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
44
45
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
45
46
  function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
47
+ // Import package.cjson to get version automatically
48
+ var _require = (0, _module.createRequire)(import.meta.url);
49
+ var packageJson = _require('../package.cjson');
46
50
  var Roboto = exports["default"] = /*#__PURE__*/function () {
47
51
  function Roboto(_ref) {
48
52
  var _this = this;
@@ -108,7 +112,8 @@ var Roboto = exports["default"] = /*#__PURE__*/function () {
108
112
  // Use passed accessKey
109
113
  baseUrl: "https://".concat(host),
110
114
  // Use passed host
111
- localStorageAdaptor: storageAdaptor
115
+ localStorageAdaptor: storageAdaptor,
116
+ withCredentials: useCookies && isBrowser // Only use credentials in browser with cookies enabled
112
117
  };
113
118
 
114
119
  // Add apikey and authtoken if provided directly
@@ -177,7 +182,7 @@ var Roboto = exports["default"] = /*#__PURE__*/function () {
177
182
  _createClass(Roboto, [{
178
183
  key: "getVersion",
179
184
  value: function getVersion() {
180
- return '1.7.3';
185
+ return packageJson.version;
181
186
  }
182
187
  }, {
183
188
  key: "setSiteEnv",
@@ -44,7 +44,9 @@ var RbtApi = exports["default"] = /*#__PURE__*/function () {
44
44
  _ref$apikey = _ref.apikey,
45
45
  apikey = _ref$apikey === void 0 ? null : _ref$apikey,
46
46
  _ref$localStorageAdap = _ref.localStorageAdaptor,
47
- localStorageAdaptor = _ref$localStorageAdap === void 0 ? null : _ref$localStorageAdap;
47
+ localStorageAdaptor = _ref$localStorageAdap === void 0 ? null : _ref$localStorageAdap,
48
+ _ref$withCredentials = _ref.withCredentials,
49
+ withCredentials = _ref$withCredentials === void 0 ? false : _ref$withCredentials;
48
50
  _classCallCheck(this, RbtApi);
49
51
  this.websocketClient = null;
50
52
 
@@ -61,7 +63,7 @@ var RbtApi = exports["default"] = /*#__PURE__*/function () {
61
63
  headers: {
62
64
  'accesskey': accesskey
63
65
  },
64
- withCredentials: true // Enable sending cookies in cross-origin requests
66
+ withCredentials: withCredentials // Opt-in: only send cookies when explicitly enabled
65
67
  });
66
68
  this.axios.__rbtApiInstance = this;
67
69
  if (localStorageAdaptor) {
package/dist/esm/index.js CHANGED
@@ -12,6 +12,11 @@ import RbtObject from './rbt_object.js';
12
12
  import RbtFile from './rbt_file.js';
13
13
  import RbtMetricsApi from './rbt_metrics_api.js';
14
14
  import CookieStorageAdaptor from './cookie_storage_adaptor.js';
15
+ import { createRequire } from 'module';
16
+
17
+ // Import package.json to get version automatically
18
+ var require = createRequire(import.meta.url);
19
+ var packageJson = require('../package.json');
15
20
  export { RbtApi, RbtObject, RbtFile, CookieStorageAdaptor
16
21
  //User,
17
22
  //Site
@@ -81,7 +86,8 @@ var Roboto = /*#__PURE__*/function () {
81
86
  // Use passed accessKey
82
87
  baseUrl: "https://".concat(host),
83
88
  // Use passed host
84
- localStorageAdaptor: storageAdaptor
89
+ localStorageAdaptor: storageAdaptor,
90
+ withCredentials: useCookies && isBrowser // Only use credentials in browser with cookies enabled
85
91
  };
86
92
 
87
93
  // Add apikey and authtoken if provided directly
@@ -150,7 +156,7 @@ var Roboto = /*#__PURE__*/function () {
150
156
  _createClass(Roboto, [{
151
157
  key: "getVersion",
152
158
  value: function getVersion() {
153
- return '1.7.3';
159
+ return packageJson.version;
154
160
  }
155
161
  }, {
156
162
  key: "setSiteEnv",
@@ -37,7 +37,9 @@ var RbtApi = /*#__PURE__*/function () {
37
37
  _ref$apikey = _ref.apikey,
38
38
  apikey = _ref$apikey === void 0 ? null : _ref$apikey,
39
39
  _ref$localStorageAdap = _ref.localStorageAdaptor,
40
- localStorageAdaptor = _ref$localStorageAdap === void 0 ? null : _ref$localStorageAdap;
40
+ localStorageAdaptor = _ref$localStorageAdap === void 0 ? null : _ref$localStorageAdap,
41
+ _ref$withCredentials = _ref.withCredentials,
42
+ withCredentials = _ref$withCredentials === void 0 ? false : _ref$withCredentials;
41
43
  _classCallCheck(this, RbtApi);
42
44
  this.websocketClient = null;
43
45
 
@@ -54,7 +56,7 @@ var RbtApi = /*#__PURE__*/function () {
54
56
  headers: {
55
57
  'accesskey': accesskey
56
58
  },
57
- withCredentials: true // Enable sending cookies in cross-origin requests
59
+ withCredentials: withCredentials // Opt-in: only send cookies when explicitly enabled
58
60
  });
59
61
  this.axios.__rbtApiInstance = this;
60
62
  if (localStorageAdaptor) {
package/dist/index.js CHANGED
@@ -13,6 +13,11 @@ import RbtObject from './rbt_object.js';
13
13
  import RbtFile from './rbt_file.js';
14
14
  import RbtMetricsApi from './rbt_metrics_api.js';
15
15
  import CookieStorageAdaptor from './cookie_storage_adaptor.js';
16
+ import { createRequire } from 'module';
17
+
18
+ // Import package.json to get version automatically
19
+ var require = createRequire(import.meta.url);
20
+ var packageJson = require('../package.json');
16
21
  export { RbtApi, RbtObject, RbtFile, CookieStorageAdaptor
17
22
  //User,
18
23
  //Site
@@ -29,9 +34,12 @@ var Roboto = /*#__PURE__*/function () {
29
34
  disableWebSocket = _ref$disableWebSocket === void 0 ? false : _ref$disableWebSocket,
30
35
  metricsHost = _ref.metricsHost,
31
36
  _ref$useCookies = _ref.useCookies,
32
- useCookies = _ref$useCookies === void 0 ? true : _ref$useCookies;
37
+ useCookies = _ref$useCookies === void 0 ? true : _ref$useCookies,
38
+ _ref$cookieDomain = _ref.cookieDomain,
39
+ cookieDomain = _ref$cookieDomain === void 0 ? 'auto' : _ref$cookieDomain;
33
40
  var proxyReq = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
34
41
  _classCallCheck(this, Roboto);
42
+ console.log("[Roboto] v".concat(this.getVersion(), " initializing..."));
35
43
  console.log('[Roboto] constructor', {
36
44
  host: host,
37
45
  accessKey: accessKey,
@@ -41,6 +49,7 @@ var Roboto = /*#__PURE__*/function () {
41
49
  disableWebSocket: disableWebSocket,
42
50
  metricsHost: metricsHost,
43
51
  useCookies: useCookies,
52
+ cookieDomain: cookieDomain,
44
53
  proxyReq: proxyReq
45
54
  });
46
55
  if (Roboto.instance && !proxyReq) {
@@ -54,11 +63,32 @@ var Roboto = /*#__PURE__*/function () {
54
63
  // Auto-configure storage adaptor
55
64
  var storageAdaptor = localStorageAdaptor;
56
65
  if (!storageAdaptor && isBrowser && useCookies) {
66
+ // Determine cookie domain for cross-subdomain support
67
+ var domain = undefined;
68
+ if (cookieDomain === 'auto') {
69
+ // Auto-detect: extract root domain for cross-subdomain cookies
70
+ // e.g., "beta.ringable.ai" → ".ringable.ai"
71
+ var hostname = window.location.hostname;
72
+ var parts = hostname.split('.');
73
+ // Only set domain for multi-part domains (not localhost or IPs)
74
+ if (parts.length > 2 && !hostname.match(/^\d+\.\d+\.\d+\.\d+$/)) {
75
+ // Get last two parts (domain.tld) and prepend with dot
76
+ domain = '.' + parts.slice(-2).join('.');
77
+ console.log("[Roboto] Auto-detected cookie domain: ".concat(domain, " from hostname: ").concat(hostname));
78
+ }
79
+ } else if (cookieDomain && cookieDomain !== 'none') {
80
+ // Use explicitly provided domain
81
+ domain = cookieDomain;
82
+ console.log("[Roboto] Using explicit cookie domain: ".concat(domain));
83
+ }
84
+
57
85
  // Use cookies by default in browser for better server-side compatibility
58
86
  storageAdaptor = new CookieStorageAdaptor({
59
87
  secure: window.location.protocol === 'https:',
60
88
  sameSite: 'Lax',
61
- maxAge: 24 * 60 * 60 // 24 hours
89
+ maxAge: 24 * 60 * 60,
90
+ // 24 hours
91
+ domain: domain
62
92
  });
63
93
  console.log('[Roboto] Using CookieStorageAdaptor for authentication tokens');
64
94
 
@@ -144,7 +174,7 @@ var Roboto = /*#__PURE__*/function () {
144
174
  return _createClass(Roboto, [{
145
175
  key: "getVersion",
146
176
  value: function getVersion() {
147
- return '1.7.3';
177
+ return packageJson.version;
148
178
  }
149
179
  }, {
150
180
  key: "setSiteEnv",
package/dist/rbt_api.js CHANGED
@@ -60,7 +60,8 @@ var RbtApi = /*#__PURE__*/function () {
60
60
  baseURL: baseUrl,
61
61
  headers: {
62
62
  'accesskey': accesskey
63
- }
63
+ },
64
+ withCredentials: true // Enable sending cookies in cross-origin requests
64
65
  });
65
66
  this.axios.__rbtApiInstance = this;
66
67
  if (localStorageAdaptor) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "roboto-js",
3
- "version": "1.8.11",
3
+ "version": "1.9.0",
4
4
  "type": "module",
5
5
  "description": "",
6
6
  "main": "dist/cjs/index.cjs",
package/src/index.js CHANGED
@@ -4,6 +4,11 @@ import RbtObject from './rbt_object.js';
4
4
  import RbtFile from './rbt_file.js';
5
5
  import RbtMetricsApi from './rbt_metrics_api.js';
6
6
  import CookieStorageAdaptor from './cookie_storage_adaptor.js';
7
+ import { createRequire } from 'module';
8
+
9
+ // Import package.json to get version automatically
10
+ const require = createRequire(import.meta.url);
11
+ const packageJson = require('../package.json');
7
12
 
8
13
  export {
9
14
  RbtApi,
@@ -17,11 +22,12 @@ export {
17
22
  export default class Roboto{
18
23
 
19
24
  getVersion(){
20
- return '1.7.3';
25
+ return packageJson.version;
21
26
  }
22
27
 
23
28
  constructor({ host, accessKey, apiKey, authToken, localStorageAdaptor, disableWebSocket = false, metricsHost, useCookies = true, cookieDomain = 'auto' }, proxyReq = null) {
24
29
 
30
+ console.log(`[Roboto] v${this.getVersion()} initializing...`);
25
31
  console.log('[Roboto] constructor', { host, accessKey, apiKey, authToken, localStorageAdaptor, disableWebSocket, metricsHost, useCookies, cookieDomain, proxyReq });
26
32
 
27
33
  if (Roboto.instance && !proxyReq) {
@@ -75,7 +81,8 @@ export default class Roboto{
75
81
  this.config = {
76
82
  accesskey: accessKey, // Use passed accessKey
77
83
  baseUrl: `https://${host}`, // Use passed host
78
- localStorageAdaptor: storageAdaptor
84
+ localStorageAdaptor: storageAdaptor,
85
+ withCredentials: useCookies && isBrowser // Only use credentials in browser with cookies enabled
79
86
  };
80
87
 
81
88
  // Add apikey and authtoken if provided directly
package/src/rbt_api.js CHANGED
@@ -8,9 +8,9 @@ import { openDB } from 'idb';
8
8
 
9
9
  export default class RbtApi {
10
10
 
11
- constructor({ baseUrl, accesskey, authtoken=null, apikey=null, localStorageAdaptor=null }) {
11
+ constructor({ baseUrl, accesskey, authtoken=null, apikey=null, localStorageAdaptor=null, withCredentials=false }) {
12
12
 
13
- console.log('[RbtApi] constructor received:', { baseUrl, accesskey, authtoken, apikey });
13
+ console.log('[RbtApi] constructor received:', { baseUrl, accesskey, authtoken, apikey, withCredentials });
14
14
 
15
15
  this.websocketClient = null;
16
16
 
@@ -28,7 +28,7 @@ export default class RbtApi {
28
28
  headers: {
29
29
  'accesskey': accesskey
30
30
  },
31
- withCredentials: true // Enable sending cookies in cross-origin requests
31
+ withCredentials: withCredentials // Opt-in: only send cookies when explicitly enabled
32
32
  });
33
33
  this.axios.__rbtApiInstance = this;
34
34