@bringg/dashboard-sdk 8.23.1 → 8.24.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.
@@ -15,7 +15,8 @@ export declare class AsyncOperationStatus {
15
15
  handler: (payload: AsyncOperationStatusPayload<TPayload>) => void;
16
16
  signal: AbortSignal;
17
17
  }): void;
18
- private registerUnackedStatusCleanup;
18
+ cleanupUnackedMessageThatPassedTTL: () => void;
19
19
  hasUnackedStatusUpdates(): boolean;
20
+ private unregisterCleanUnackedMessage;
20
21
  cleanup(): void;
21
22
  }
@@ -32,12 +32,41 @@ var realtime_subscriptions_1 = require("../realtime-subscriptions");
32
32
  exports.UPDATE_ASYNC_OPERATION_REALTIME_EVENT = 'async operation status';
33
33
  var AsyncOperationStatus = /** @class */ (function () {
34
34
  function AsyncOperationStatus(session) {
35
+ var _this = this;
35
36
  // In case of adding listener for a request that status update was already received, we will save that so nothing will be lost
36
37
  this.unackedStatusUpdates = new Map();
37
38
  this.listeners = new Map();
39
+ this.cleanupUnackedMessageThatPassedTTL = function () {
40
+ var e_1, _a;
41
+ var now = Date.now();
42
+ try {
43
+ for (var _b = __values(_this.unackedStatusUpdates), _c = _b.next(); !_c.done; _c = _b.next()) {
44
+ var _d = __read(_c.value, 2), key = _d[0], queue = _d[1];
45
+ var liveMessages = queue.filter(function (_a) {
46
+ var messageTimeInMs = _a.messageTimeInMs;
47
+ return now - messageTimeInMs < AsyncOperationStatus.UNACKED_MESSAGES_TTL;
48
+ });
49
+ // If there are no live messages, we can remove the whole queue (this shouldn't happen as we have a check for this earlier
50
+ if (liveMessages.length === 0) {
51
+ _this.unackedStatusUpdates.delete(key);
52
+ }
53
+ else {
54
+ // Only keep the live messages
55
+ _this.unackedStatusUpdates.set(key, liveMessages);
56
+ }
57
+ }
58
+ }
59
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
60
+ finally {
61
+ try {
62
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
63
+ }
64
+ finally { if (e_1) throw e_1.error; }
65
+ }
66
+ };
38
67
  this.realtimeSubscriptions = new realtime_subscriptions_1.default(session);
39
68
  this.listenToEvent();
40
- this.registerUnackedStatusCleanup();
69
+ this.cleanupInterval = setInterval(this.cleanupUnackedMessageThatPassedTTL, AsyncOperationStatus.UNACKED_MESSAGES_TTL);
41
70
  }
42
71
  AsyncOperationStatus.prototype.listenToEvent = function () {
43
72
  var _this = this;
@@ -52,71 +81,81 @@ var AsyncOperationStatus = /** @class */ (function () {
52
81
  }
53
82
  return;
54
83
  }
55
- var queue = (_this.unackedStatusUpdates.get(event.request_id) || {}).queue;
84
+ var queue = _this.unackedStatusUpdates.get(event.request_id);
56
85
  if (!queue) {
57
86
  queue = [];
58
- _this.unackedStatusUpdates.set(event.request_id, {
59
- queue: queue,
60
- firstMessageTimeInMs: Date.now()
61
- });
87
+ _this.unackedStatusUpdates.set(event.request_id, queue);
62
88
  }
63
- queue.push(event);
89
+ queue.push({
90
+ event: event,
91
+ messageTimeInMs: Date.now()
92
+ });
64
93
  return;
65
94
  });
66
95
  };
67
96
  AsyncOperationStatus.prototype.addListener = function (_a) {
97
+ var e_2, _b;
68
98
  var _this = this;
69
99
  var requestId = _a.requestId, handler = _a.handler, signal = _a.signal;
70
100
  if (signal.aborted) {
71
101
  return;
72
102
  }
73
- this.listeners.set(requestId, handler);
103
+ var abortedInTheMiddle = false;
74
104
  if (this.unackedStatusUpdates.has(requestId)) {
75
105
  var unackedStatusUpdates = this.unackedStatusUpdates.get(requestId);
76
- unackedStatusUpdates.queue.forEach(function (payload) {
77
- try {
78
- handler(payload);
79
- }
80
- catch (_a) {
81
- // ignore
82
- }
83
- });
84
- this.unackedStatusUpdates.delete(requestId);
85
- }
86
- signal.addEventListener('abort', function () {
87
- _this.listeners.delete(requestId);
88
- }, { once: true });
89
- };
90
- AsyncOperationStatus.prototype.registerUnackedStatusCleanup = function () {
91
- var _this = this;
92
- this.cleanupInterval = setInterval(function () {
93
- var e_1, _a;
94
- var now = Date.now();
106
+ var processedMessages = 0;
95
107
  try {
96
- for (var _b = __values(_this.unackedStatusUpdates), _c = _b.next(); !_c.done; _c = _b.next()) {
97
- var _d = __read(_c.value, 2), key = _d[0], firstMessageTimeInMs = _d[1].firstMessageTimeInMs;
98
- if (now - firstMessageTimeInMs >= AsyncOperationStatus.UNACKED_MESSAGES_TTL) {
99
- _this.unackedStatusUpdates.delete(key);
108
+ for (var unackedStatusUpdates_1 = __values(unackedStatusUpdates), unackedStatusUpdates_1_1 = unackedStatusUpdates_1.next(); !unackedStatusUpdates_1_1.done; unackedStatusUpdates_1_1 = unackedStatusUpdates_1.next()) {
109
+ var event_1 = unackedStatusUpdates_1_1.value.event;
110
+ abortedInTheMiddle = signal.aborted;
111
+ if (abortedInTheMiddle) {
112
+ break;
100
113
  }
114
+ try {
115
+ handler(event_1);
116
+ }
117
+ catch (_c) {
118
+ // ignore
119
+ }
120
+ processedMessages++;
101
121
  }
102
122
  }
103
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
123
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
104
124
  finally {
105
125
  try {
106
- if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
126
+ if (unackedStatusUpdates_1_1 && !unackedStatusUpdates_1_1.done && (_b = unackedStatusUpdates_1.return)) _b.call(unackedStatusUpdates_1);
107
127
  }
108
- finally { if (e_1) throw e_1.error; }
128
+ finally { if (e_2) throw e_2.error; }
129
+ }
130
+ if (abortedInTheMiddle) {
131
+ // Remove the processed messages
132
+ unackedStatusUpdates.splice(0, processedMessages);
133
+ }
134
+ else {
135
+ this.unackedStatusUpdates.delete(requestId);
109
136
  }
110
- }, AsyncOperationStatus.UNACKED_MESSAGES_TTL);
137
+ }
138
+ if (signal.aborted) {
139
+ return;
140
+ }
141
+ // Because we call the handlers synchronously, it is ok that we add the listener afterwards
142
+ // If we would wait for the handler this would have be needed to move before handling the unacked messages
143
+ this.listeners.set(requestId, handler);
144
+ signal.addEventListener('abort', function () {
145
+ _this.listeners.delete(requestId);
146
+ }, { once: true });
111
147
  };
112
148
  AsyncOperationStatus.prototype.hasUnackedStatusUpdates = function () {
113
149
  return this.unackedStatusUpdates.size > 0;
114
150
  };
151
+ AsyncOperationStatus.prototype.unregisterCleanUnackedMessage = function () {
152
+ clearInterval(this.cleanupInterval);
153
+ this.cleanupInterval = undefined;
154
+ };
115
155
  AsyncOperationStatus.prototype.cleanup = function () {
116
156
  var _a;
117
- clearInterval(this.cleanupInterval);
157
+ this.unregisterCleanUnackedMessage();
118
158
  (_a = this.unsubscribe) === null || _a === void 0 ? void 0 : _a.call(this);
119
- this.cleanupInterval = undefined;
120
159
  this.unsubscribe = undefined;
121
160
  this.listeners.clear();
122
161
  this.unackedStatusUpdates.clear();
@@ -1 +1 @@
1
- {"version":3,"file":"AsyncOperationStatus.js","sourceRoot":"","sources":["../../src/AsyncOperationStatus/AsyncOperationStatus.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AsyncOperationStatus.js","sourceRoot":"","sources":["../../src/AsyncOperationStatus/AsyncOperationStatus.ts"],"names":[],"mappings":"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"}
@@ -53,7 +53,7 @@ var lodash_1 = require("lodash");
53
53
  var BringgException_1 = require("../Core/BringgException");
54
54
  var Logger_1 = require("../Core/Logger");
55
55
  var abort_1 = require("../utils/abort");
56
- var version = '8.23.1';
56
+ var version = '8.24.0';
57
57
  function logErrorResponse(response) {
58
58
  var data = response.data, status = response.status;
59
59
  try {
@@ -1817,12 +1817,41 @@ var realtime_subscriptions_1 = __webpack_require__(47985);
1817
1817
  exports.UPDATE_ASYNC_OPERATION_REALTIME_EVENT = 'async operation status';
1818
1818
  var AsyncOperationStatus = /** @class */ (function () {
1819
1819
  function AsyncOperationStatus(session) {
1820
+ var _this = this;
1820
1821
  // In case of adding listener for a request that status update was already received, we will save that so nothing will be lost
1821
1822
  this.unackedStatusUpdates = new Map();
1822
1823
  this.listeners = new Map();
1824
+ this.cleanupUnackedMessageThatPassedTTL = function () {
1825
+ var e_1, _a;
1826
+ var now = Date.now();
1827
+ try {
1828
+ for (var _b = __values(_this.unackedStatusUpdates), _c = _b.next(); !_c.done; _c = _b.next()) {
1829
+ var _d = __read(_c.value, 2), key = _d[0], queue = _d[1];
1830
+ var liveMessages = queue.filter(function (_a) {
1831
+ var messageTimeInMs = _a.messageTimeInMs;
1832
+ return now - messageTimeInMs < AsyncOperationStatus.UNACKED_MESSAGES_TTL;
1833
+ });
1834
+ // If there are no live messages, we can remove the whole queue (this shouldn't happen as we have a check for this earlier
1835
+ if (liveMessages.length === 0) {
1836
+ _this.unackedStatusUpdates.delete(key);
1837
+ }
1838
+ else {
1839
+ // Only keep the live messages
1840
+ _this.unackedStatusUpdates.set(key, liveMessages);
1841
+ }
1842
+ }
1843
+ }
1844
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
1845
+ finally {
1846
+ try {
1847
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
1848
+ }
1849
+ finally { if (e_1) throw e_1.error; }
1850
+ }
1851
+ };
1823
1852
  this.realtimeSubscriptions = new realtime_subscriptions_1.default(session);
1824
1853
  this.listenToEvent();
1825
- this.registerUnackedStatusCleanup();
1854
+ this.cleanupInterval = setInterval(this.cleanupUnackedMessageThatPassedTTL, AsyncOperationStatus.UNACKED_MESSAGES_TTL);
1826
1855
  }
1827
1856
  AsyncOperationStatus.prototype.listenToEvent = function () {
1828
1857
  var _this = this;
@@ -1837,71 +1866,81 @@ var AsyncOperationStatus = /** @class */ (function () {
1837
1866
  }
1838
1867
  return;
1839
1868
  }
1840
- var queue = (_this.unackedStatusUpdates.get(event.request_id) || {}).queue;
1869
+ var queue = _this.unackedStatusUpdates.get(event.request_id);
1841
1870
  if (!queue) {
1842
1871
  queue = [];
1843
- _this.unackedStatusUpdates.set(event.request_id, {
1844
- queue: queue,
1845
- firstMessageTimeInMs: Date.now()
1846
- });
1872
+ _this.unackedStatusUpdates.set(event.request_id, queue);
1847
1873
  }
1848
- queue.push(event);
1874
+ queue.push({
1875
+ event: event,
1876
+ messageTimeInMs: Date.now()
1877
+ });
1849
1878
  return;
1850
1879
  });
1851
1880
  };
1852
1881
  AsyncOperationStatus.prototype.addListener = function (_a) {
1882
+ var e_2, _b;
1853
1883
  var _this = this;
1854
1884
  var requestId = _a.requestId, handler = _a.handler, signal = _a.signal;
1855
1885
  if (signal.aborted) {
1856
1886
  return;
1857
1887
  }
1858
- this.listeners.set(requestId, handler);
1888
+ var abortedInTheMiddle = false;
1859
1889
  if (this.unackedStatusUpdates.has(requestId)) {
1860
1890
  var unackedStatusUpdates = this.unackedStatusUpdates.get(requestId);
1861
- unackedStatusUpdates.queue.forEach(function (payload) {
1862
- try {
1863
- handler(payload);
1864
- }
1865
- catch (_a) {
1866
- // ignore
1867
- }
1868
- });
1869
- this.unackedStatusUpdates.delete(requestId);
1870
- }
1871
- signal.addEventListener('abort', function () {
1872
- _this.listeners.delete(requestId);
1873
- }, { once: true });
1874
- };
1875
- AsyncOperationStatus.prototype.registerUnackedStatusCleanup = function () {
1876
- var _this = this;
1877
- this.cleanupInterval = setInterval(function () {
1878
- var e_1, _a;
1879
- var now = Date.now();
1891
+ var processedMessages = 0;
1880
1892
  try {
1881
- for (var _b = __values(_this.unackedStatusUpdates), _c = _b.next(); !_c.done; _c = _b.next()) {
1882
- var _d = __read(_c.value, 2), key = _d[0], firstMessageTimeInMs = _d[1].firstMessageTimeInMs;
1883
- if (now - firstMessageTimeInMs >= AsyncOperationStatus.UNACKED_MESSAGES_TTL) {
1884
- _this.unackedStatusUpdates.delete(key);
1893
+ for (var unackedStatusUpdates_1 = __values(unackedStatusUpdates), unackedStatusUpdates_1_1 = unackedStatusUpdates_1.next(); !unackedStatusUpdates_1_1.done; unackedStatusUpdates_1_1 = unackedStatusUpdates_1.next()) {
1894
+ var event_1 = unackedStatusUpdates_1_1.value.event;
1895
+ abortedInTheMiddle = signal.aborted;
1896
+ if (abortedInTheMiddle) {
1897
+ break;
1898
+ }
1899
+ try {
1900
+ handler(event_1);
1901
+ }
1902
+ catch (_c) {
1903
+ // ignore
1885
1904
  }
1905
+ processedMessages++;
1886
1906
  }
1887
1907
  }
1888
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
1908
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
1889
1909
  finally {
1890
1910
  try {
1891
- if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
1911
+ if (unackedStatusUpdates_1_1 && !unackedStatusUpdates_1_1.done && (_b = unackedStatusUpdates_1.return)) _b.call(unackedStatusUpdates_1);
1892
1912
  }
1893
- finally { if (e_1) throw e_1.error; }
1913
+ finally { if (e_2) throw e_2.error; }
1914
+ }
1915
+ if (abortedInTheMiddle) {
1916
+ // Remove the processed messages
1917
+ unackedStatusUpdates.splice(0, processedMessages);
1894
1918
  }
1895
- }, AsyncOperationStatus.UNACKED_MESSAGES_TTL);
1919
+ else {
1920
+ this.unackedStatusUpdates.delete(requestId);
1921
+ }
1922
+ }
1923
+ if (signal.aborted) {
1924
+ return;
1925
+ }
1926
+ // Because we call the handlers synchronously, it is ok that we add the listener afterwards
1927
+ // If we would wait for the handler this would have be needed to move before handling the unacked messages
1928
+ this.listeners.set(requestId, handler);
1929
+ signal.addEventListener('abort', function () {
1930
+ _this.listeners.delete(requestId);
1931
+ }, { once: true });
1896
1932
  };
1897
1933
  AsyncOperationStatus.prototype.hasUnackedStatusUpdates = function () {
1898
1934
  return this.unackedStatusUpdates.size > 0;
1899
1935
  };
1936
+ AsyncOperationStatus.prototype.unregisterCleanUnackedMessage = function () {
1937
+ clearInterval(this.cleanupInterval);
1938
+ this.cleanupInterval = undefined;
1939
+ };
1900
1940
  AsyncOperationStatus.prototype.cleanup = function () {
1901
1941
  var _a;
1902
- clearInterval(this.cleanupInterval);
1942
+ this.unregisterCleanUnackedMessage();
1903
1943
  (_a = this.unsubscribe) === null || _a === void 0 ? void 0 : _a.call(this);
1904
- this.cleanupInterval = undefined;
1905
1944
  this.unsubscribe = undefined;
1906
1945
  this.listeners.clear();
1907
1946
  this.unackedStatusUpdates.clear();
@@ -20384,7 +20423,7 @@ var lodash_1 = __webpack_require__(96486);
20384
20423
  var BringgException_1 = __webpack_require__(43605);
20385
20424
  var Logger_1 = __webpack_require__(55860);
20386
20425
  var abort_1 = __webpack_require__(34179);
20387
- var version = '8.23.1';
20426
+ var version = '8.24.0';
20388
20427
  function logErrorResponse(response) {
20389
20428
  var data = response.data, status = response.status;
20390
20429
  try {