akeyless-client-commons 1.1.35 → 1.1.37

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.
@@ -9,6 +9,12 @@ declare function useSafeEffect(callback: () => void, dependencies: any[], error_
9
9
  declare const useDeepCompareMemo: <T>(factory: () => T, dependencies: any[]) => T;
10
10
  declare function useDeepCompareEffect(effect: EffectCallback, dependencies: any[]): void;
11
11
 
12
+ interface UseWebWorkerOptions {
13
+ debug?: boolean;
14
+ name?: string;
15
+ onError?: (error: Error) => void;
16
+ }
17
+
12
18
  type OnSnapshotCallback = (documents: any[], config: OnSnapshotConfig) => void;
13
19
  interface OnSnapshotParsers {
14
20
  onFirstTime?: OnSnapshotCallback;
@@ -33,25 +39,21 @@ interface OnSnapshotConfig extends OnSnapshotParsers {
33
39
  subscribeTo?: "cache" | "db";
34
40
  }
35
41
 
36
- declare const useDbSnapshots: (configs: OnSnapshotConfig[], label?: string, settings?: {
37
- cleanupForConfigChange?: boolean;
38
- disableLogs?: boolean;
39
- }) => void;
40
- declare const useSmartSnapshots: (configs: OnSnapshotConfig[], label?: string, settings?: {
42
+ interface UseDbSnapshotsSettings {
41
43
  cleanupForConfigChange?: boolean;
42
44
  disableLogs?: boolean;
43
- }) => {
45
+ worker?: UseWebWorkerOptions;
46
+ }
47
+ declare const useDbSnapshots: (configs: OnSnapshotConfig[], label?: string, settings?: UseDbSnapshotsSettings) => void;
48
+ declare const useSmartSnapshots: (configs: OnSnapshotConfig[], label?: string, settings?: UseDbSnapshotsSettings) => {
44
49
  groupedConfig: {
45
50
  configForDb: OnSnapshotConfig[];
46
51
  configForCache: OnSnapshotConfig[];
47
52
  };
48
53
  socketConnected: boolean;
49
54
  };
50
- declare const useSocketSnapshots: (configs: OnSnapshotConfig[], label?: string, settings?: {
51
- cleanupForConfigChange?: boolean;
52
- disableLogs?: boolean;
53
- }) => {
55
+ declare const useSocketSnapshots: (configs: OnSnapshotConfig[], label?: string, settings?: UseDbSnapshotsSettings) => {
54
56
  socketConnected: boolean;
55
57
  };
56
58
 
57
- export { useDbSnapshots, useDeepCompareEffect, useDeepCompareMemo, useDocumentTitle, useSafeEffect, useSetUserCountry, useSmartSnapshots, useSocketSnapshots };
59
+ export { type UseWebWorkerOptions, useDbSnapshots, useDeepCompareEffect, useDeepCompareMemo, useDocumentTitle, useSafeEffect, useSetUserCountry, useSmartSnapshots, useSocketSnapshots };
@@ -9,6 +9,12 @@ declare function useSafeEffect(callback: () => void, dependencies: any[], error_
9
9
  declare const useDeepCompareMemo: <T>(factory: () => T, dependencies: any[]) => T;
10
10
  declare function useDeepCompareEffect(effect: EffectCallback, dependencies: any[]): void;
11
11
 
12
+ interface UseWebWorkerOptions {
13
+ debug?: boolean;
14
+ name?: string;
15
+ onError?: (error: Error) => void;
16
+ }
17
+
12
18
  type OnSnapshotCallback = (documents: any[], config: OnSnapshotConfig) => void;
13
19
  interface OnSnapshotParsers {
14
20
  onFirstTime?: OnSnapshotCallback;
@@ -33,25 +39,21 @@ interface OnSnapshotConfig extends OnSnapshotParsers {
33
39
  subscribeTo?: "cache" | "db";
34
40
  }
35
41
 
36
- declare const useDbSnapshots: (configs: OnSnapshotConfig[], label?: string, settings?: {
37
- cleanupForConfigChange?: boolean;
38
- disableLogs?: boolean;
39
- }) => void;
40
- declare const useSmartSnapshots: (configs: OnSnapshotConfig[], label?: string, settings?: {
42
+ interface UseDbSnapshotsSettings {
41
43
  cleanupForConfigChange?: boolean;
42
44
  disableLogs?: boolean;
43
- }) => {
45
+ worker?: UseWebWorkerOptions;
46
+ }
47
+ declare const useDbSnapshots: (configs: OnSnapshotConfig[], label?: string, settings?: UseDbSnapshotsSettings) => void;
48
+ declare const useSmartSnapshots: (configs: OnSnapshotConfig[], label?: string, settings?: UseDbSnapshotsSettings) => {
44
49
  groupedConfig: {
45
50
  configForDb: OnSnapshotConfig[];
46
51
  configForCache: OnSnapshotConfig[];
47
52
  };
48
53
  socketConnected: boolean;
49
54
  };
50
- declare const useSocketSnapshots: (configs: OnSnapshotConfig[], label?: string, settings?: {
51
- cleanupForConfigChange?: boolean;
52
- disableLogs?: boolean;
53
- }) => {
55
+ declare const useSocketSnapshots: (configs: OnSnapshotConfig[], label?: string, settings?: UseDbSnapshotsSettings) => {
54
56
  socketConnected: boolean;
55
57
  };
56
58
 
57
- export { useDbSnapshots, useDeepCompareEffect, useDeepCompareMemo, useDocumentTitle, useSafeEffect, useSetUserCountry, useSmartSnapshots, useSocketSnapshots };
59
+ export { type UseWebWorkerOptions, useDbSnapshots, useDeepCompareEffect, useDeepCompareMemo, useDocumentTitle, useSafeEffect, useSetUserCountry, useSmartSnapshots, useSocketSnapshots };
@@ -7,9 +7,6 @@ function _array_like_to_array(arr, len) {
7
7
  function _array_with_holes(arr) {
8
8
  if (Array.isArray(arr)) return arr;
9
9
  }
10
- function _array_without_holes(arr) {
11
- if (Array.isArray(arr)) return _array_like_to_array(arr);
12
- }
13
10
  function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
14
11
  try {
15
12
  var info = gen[key](arg);
@@ -71,8 +68,12 @@ function _define_property(obj, key, value) {
71
68
  }
72
69
  return obj;
73
70
  }
74
- function _iterable_to_array(iter) {
75
- if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
71
+ function _instanceof(left, right) {
72
+ if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) {
73
+ return !!right[Symbol.hasInstance](left);
74
+ } else {
75
+ return left instanceof right;
76
+ }
76
77
  }
77
78
  function _iterable_to_array_limit(arr, i) {
78
79
  var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
@@ -101,9 +102,6 @@ function _iterable_to_array_limit(arr, i) {
101
102
  function _non_iterable_rest() {
102
103
  throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
103
104
  }
104
- function _non_iterable_spread() {
105
- throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
106
- }
107
105
  function _object_spread(target) {
108
106
  for(var i = 1; i < arguments.length; i++){
109
107
  var source = arguments[i] != null ? arguments[i] : {};
@@ -146,9 +144,6 @@ function _object_spread_props(target, source) {
146
144
  function _sliced_to_array(arr, i) {
147
145
  return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest();
148
146
  }
149
- function _to_consumable_array(arr) {
150
- return _array_without_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_spread();
151
- }
152
147
  function _type_of(obj) {
153
148
  "@swc/helpers - typeof";
154
149
  return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
@@ -1029,13 +1024,16 @@ function useDeepCompareEffect(effect, dependencies) {
1029
1024
  }
1030
1025
  // src/hooks/WebWorker.ts
1031
1026
  var import_react4 = require("react");
1032
- var useWebWorker = function(fn) {
1027
+ var useWebWorker = function(fn, options) {
1033
1028
  var workerRef = (0, import_react4.useRef)(null);
1034
1029
  var workerUrlRef = (0, import_react4.useRef)(null);
1035
1030
  var nextJobIdRef = (0, import_react4.useRef)(1);
1036
1031
  var pendingJobsRef = (0, import_react4.useRef)(/* @__PURE__ */ new Map());
1032
+ var isSupportedRef = (0, import_react4.useRef)(typeof window !== "undefined" && typeof Worker !== "undefined");
1033
+ var isReadyRef = (0, import_react4.useRef)(false);
1034
+ var lastErrorRef = (0, import_react4.useRef)(null);
1037
1035
  (0, import_react4.useEffect)(function() {
1038
- if (typeof window === "undefined" || typeof Worker === "undefined") {
1036
+ if (!isSupportedRef.current) {
1039
1037
  return function() {};
1040
1038
  }
1041
1039
  var functionString = fn.toString();
@@ -1060,6 +1058,10 @@ var useWebWorker = function(fn) {
1060
1058
  });
1061
1059
  var url = URL.createObjectURL(workerBlob);
1062
1060
  var worker = new Worker(url);
1061
+ isReadyRef.current = true;
1062
+ if (options === null || options === void 0 ? void 0 : options.debug) {
1063
+ console.log("[WebWorker".concat((options === null || options === void 0 ? void 0 : options.name) ? ":" + options.name : "", "] created"));
1064
+ }
1063
1065
  worker.onmessage = function(event) {
1064
1066
  var data = event.data || {};
1065
1067
  var id = data.id;
@@ -1070,13 +1072,21 @@ var useWebWorker = function(fn) {
1070
1072
  if (data.ok) {
1071
1073
  pending.resolve(data.result);
1072
1074
  } else {
1075
+ var _options_onError;
1073
1076
  var _data_error;
1074
- pending.reject(new Error((_data_error = data.error) !== null && _data_error !== void 0 ? _data_error : "Worker error"));
1077
+ var err = new Error((_data_error = data.error) !== null && _data_error !== void 0 ? _data_error : "Worker error");
1078
+ lastErrorRef.current = err;
1079
+ options === null || options === void 0 ? void 0 : (_options_onError = options.onError) === null || _options_onError === void 0 ? void 0 : _options_onError.call(options, err);
1080
+ pending.reject(err);
1075
1081
  }
1076
1082
  };
1077
- worker.onerror = function() {
1083
+ worker.onerror = function(event) {
1084
+ var _options_onError;
1085
+ var err = new Error(event.message || "Worker encountered an error");
1086
+ lastErrorRef.current = err;
1087
+ options === null || options === void 0 ? void 0 : (_options_onError = options.onError) === null || _options_onError === void 0 ? void 0 : _options_onError.call(options, err);
1078
1088
  pendingJobsRef.current.forEach(function(job) {
1079
- job.reject(new Error("Worker encountered an error"));
1089
+ job.reject(err);
1080
1090
  });
1081
1091
  pendingJobsRef.current.clear();
1082
1092
  };
@@ -1101,15 +1111,22 @@ var useWebWorker = function(fn) {
1101
1111
  job.reject(new Error("Worker terminated"));
1102
1112
  });
1103
1113
  pendingJobsRef.current.clear();
1114
+ isReadyRef.current = false;
1104
1115
  };
1105
1116
  }, [
1106
- fn
1117
+ fn,
1118
+ options === null || options === void 0 ? void 0 : options.debug,
1119
+ options === null || options === void 0 ? void 0 : options.name,
1120
+ options === null || options === void 0 ? void 0 : options.onError
1107
1121
  ]);
1108
- var runWorker = (0, import_react4.useCallback)(function(data, transfer) {
1122
+ var runWorkerBase = (0, import_react4.useCallback)(function(data, transfer) {
1109
1123
  if (!workerRef.current) {
1124
+ if (options === null || options === void 0 ? void 0 : options.debug) {
1125
+ console.warn("[WebWorker".concat((options === null || options === void 0 ? void 0 : options.name) ? ":" + options.name : "", "] fallback to main thread"));
1126
+ }
1110
1127
  return new Promise(/*#__PURE__*/ function() {
1111
1128
  var _ref = _async_to_generator(function(resolve, reject) {
1112
- var result, err;
1129
+ var result, err, _options_onError, error;
1113
1130
  return _ts_generator(this, function(_state) {
1114
1131
  switch(_state.label){
1115
1132
  case 0:
@@ -1132,7 +1149,10 @@ var useWebWorker = function(fn) {
1132
1149
  ];
1133
1150
  case 2:
1134
1151
  err = _state.sent();
1135
- reject(err);
1152
+ error = _instanceof(err, Error) ? err : new Error(String(err));
1153
+ lastErrorRef.current = error;
1154
+ options === null || options === void 0 ? void 0 : (_options_onError = options.onError) === null || _options_onError === void 0 ? void 0 : _options_onError.call(options, error);
1155
+ reject(error);
1136
1156
  return [
1137
1157
  3,
1138
1158
  3
@@ -1150,6 +1170,9 @@ var useWebWorker = function(fn) {
1150
1170
  }());
1151
1171
  }
1152
1172
  var id = nextJobIdRef.current++;
1173
+ if (options === null || options === void 0 ? void 0 : options.debug) {
1174
+ console.log("[WebWorker".concat((options === null || options === void 0 ? void 0 : options.name) ? ":" + options.name : "", "] postMessage id=").concat(id));
1175
+ }
1153
1176
  return new Promise(function(resolve, reject) {
1154
1177
  pendingJobsRef.current.set(id, {
1155
1178
  resolve: resolve,
@@ -1168,92 +1191,120 @@ var useWebWorker = function(fn) {
1168
1191
  });
1169
1192
  }
1170
1193
  } catch (err) {
1194
+ var _options_onError;
1171
1195
  pendingJobsRef.current.delete(id);
1172
- reject(err);
1196
+ var error = _instanceof(err, Error) ? err : new Error(String(err));
1197
+ lastErrorRef.current = error;
1198
+ options === null || options === void 0 ? void 0 : (_options_onError = options.onError) === null || _options_onError === void 0 ? void 0 : _options_onError.call(options, error);
1199
+ reject(error);
1173
1200
  }
1174
1201
  });
1175
1202
  }, [
1176
- fn
1203
+ fn,
1204
+ options === null || options === void 0 ? void 0 : options.debug,
1205
+ options === null || options === void 0 ? void 0 : options.name,
1206
+ options === null || options === void 0 ? void 0 : options.onError
1177
1207
  ]);
1208
+ var runWorker = runWorkerBase;
1209
+ runWorker.isSupported = function() {
1210
+ return isSupportedRef.current;
1211
+ };
1212
+ runWorker.isUsingWorker = function() {
1213
+ return Boolean(workerRef.current) && isReadyRef.current;
1214
+ };
1215
+ runWorker.pendingJobs = function() {
1216
+ return pendingJobsRef.current.size;
1217
+ };
1218
+ runWorker.lastError = function() {
1219
+ return lastErrorRef.current;
1220
+ };
1178
1221
  return runWorker;
1179
1222
  };
1180
1223
  var WebWorker_default = useWebWorker;
1181
1224
  // src/hooks/snapshots.ts
1182
1225
  var import_react5 = require("react");
1226
+ // src/hooks/snapshotWorker.ts
1227
+ var wrapConfigsWithWorker = function(cfgs, runProcessor) {
1228
+ var wrapCb = function(cb, op, run) {
1229
+ if (!cb) return void 0;
1230
+ return /*#__PURE__*/ function() {
1231
+ var _ref = _async_to_generator(function(docs, config) {
1232
+ var safeDocs, _ref, processed, e;
1233
+ return _ts_generator(this, function(_state) {
1234
+ switch(_state.label){
1235
+ case 0:
1236
+ _state.trys.push([
1237
+ 0,
1238
+ 2,
1239
+ ,
1240
+ 3
1241
+ ]);
1242
+ safeDocs = JSON.parse(JSON.stringify(docs));
1243
+ return [
1244
+ 4,
1245
+ run({
1246
+ op: op,
1247
+ docs: safeDocs
1248
+ })
1249
+ ];
1250
+ case 1:
1251
+ _ref = _state.sent(), processed = _ref.docs;
1252
+ cb(processed, config);
1253
+ return [
1254
+ 3,
1255
+ 3
1256
+ ];
1257
+ case 2:
1258
+ e = _state.sent();
1259
+ cb(docs, config);
1260
+ return [
1261
+ 3,
1262
+ 3
1263
+ ];
1264
+ case 3:
1265
+ return [
1266
+ 2
1267
+ ];
1268
+ }
1269
+ });
1270
+ });
1271
+ return function(docs, config) {
1272
+ return _ref.apply(this, arguments);
1273
+ };
1274
+ }();
1275
+ };
1276
+ return cfgs.map(function(cfg) {
1277
+ var wrapped = _object_spread({}, cfg);
1278
+ wrapped.onFirstTime = wrapCb(cfg.onFirstTime, "first", runProcessor);
1279
+ wrapped.onAdd = wrapCb(cfg.onAdd, "add", runProcessor);
1280
+ wrapped.onModify = wrapCb(cfg.onModify, "modify", runProcessor);
1281
+ wrapped.onRemove = wrapCb(cfg.onRemove, "remove", runProcessor);
1282
+ if (cfg.extraParsers && cfg.extraParsers.length) {
1283
+ wrapped.extraParsers = cfg.extraParsers.map(function(p) {
1284
+ return {
1285
+ onFirstTime: wrapCb(p.onFirstTime, "first", runProcessor),
1286
+ onAdd: wrapCb(p.onAdd, "add", runProcessor),
1287
+ onModify: wrapCb(p.onModify, "modify", runProcessor),
1288
+ onRemove: wrapCb(p.onRemove, "remove", runProcessor)
1289
+ };
1290
+ });
1291
+ }
1292
+ return wrapped;
1293
+ });
1294
+ };
1295
+ // src/hooks/snapshots.ts
1183
1296
  var useDbSnapshots = function(configs, label, settings) {
1184
1297
  var snapshotsFirstTime = (0, import_react5.useRef)([]);
1185
1298
  var unsubscribeFunctions = (0, import_react5.useRef)([]);
1186
- var runProcessor = WebWorker_default(function(payload) {
1299
+ var workerProcessorDb = (0, import_react5.useCallback)(function(payload) {
1187
1300
  return {
1188
1301
  docs: payload.docs
1189
1302
  };
1190
- });
1303
+ }, []);
1304
+ var runProcessor = WebWorker_default(workerProcessorDb, settings === null || settings === void 0 ? void 0 : settings.worker);
1191
1305
  var wrapConfigsForWorker = function(cfgs) {
1192
- return cfgs.map(function(cfg) {
1193
- var wrapped = _object_spread({}, cfg);
1194
- var wrapCb = function(cb, op) {
1195
- if (!cb) return void 0;
1196
- return /*#__PURE__*/ function() {
1197
- var _ref = _async_to_generator(function(docs, config) {
1198
- var safeDocs, _ref, processed, e;
1199
- return _ts_generator(this, function(_state) {
1200
- switch(_state.label){
1201
- case 0:
1202
- _state.trys.push([
1203
- 0,
1204
- 2,
1205
- ,
1206
- 3
1207
- ]);
1208
- safeDocs = JSON.parse(JSON.stringify(docs));
1209
- return [
1210
- 4,
1211
- runProcessor({
1212
- op: op,
1213
- docs: safeDocs
1214
- })
1215
- ];
1216
- case 1:
1217
- _ref = _state.sent(), processed = _ref.docs;
1218
- cb(processed, config);
1219
- return [
1220
- 3,
1221
- 3
1222
- ];
1223
- case 2:
1224
- e = _state.sent();
1225
- cb(docs, config);
1226
- return [
1227
- 3,
1228
- 3
1229
- ];
1230
- case 3:
1231
- return [
1232
- 2
1233
- ];
1234
- }
1235
- });
1236
- });
1237
- return function(docs, config) {
1238
- return _ref.apply(this, arguments);
1239
- };
1240
- }();
1241
- };
1242
- wrapped.onFirstTime = wrapCb(cfg.onFirstTime, "first");
1243
- wrapped.onAdd = wrapCb(cfg.onAdd, "add");
1244
- wrapped.onModify = wrapCb(cfg.onModify, "modify");
1245
- wrapped.onRemove = wrapCb(cfg.onRemove, "remove");
1246
- if (cfg.extraParsers && cfg.extraParsers.length) {
1247
- wrapped.extraParsers = cfg.extraParsers.map(function(p) {
1248
- return {
1249
- onFirstTime: wrapCb(p.onFirstTime, "first"),
1250
- onAdd: wrapCb(p.onAdd, "add"),
1251
- onModify: wrapCb(p.onModify, "modify"),
1252
- onRemove: wrapCb(p.onRemove, "remove")
1253
- };
1254
- });
1255
- }
1256
- return wrapped;
1306
+ return wrapConfigsWithWorker(cfgs, function(payload) {
1307
+ return runProcessor(payload);
1257
1308
  });
1258
1309
  };
1259
1310
  useDeepCompareEffect(function() {
@@ -1350,94 +1401,38 @@ var useSmartSnapshots = function(configs, label, settings) {
1350
1401
  var useSocketSnapshots = function(configs, label, settings) {
1351
1402
  var _auth_currentUser;
1352
1403
  var _ref = _sliced_to_array((0, import_react5.useState)(socketServiceInstance.isConnected()), 2), socketConnected = _ref[0], setSocketConnected = _ref[1];
1353
- var _ref1 = _sliced_to_array((0, import_react5.useState)([]), 2), cleanupSubscriptions = _ref1[0], setCleanupSubscriptions = _ref1[1];
1404
+ var cleanupSubscriptionsRef = (0, import_react5.useRef)([]);
1354
1405
  var socketStarted = (0, import_react5.useRef)(false);
1355
- var runProcessor = WebWorker_default(function(payload) {
1406
+ var workerProcessorSocket = (0, import_react5.useCallback)(function(payload) {
1356
1407
  return {
1357
1408
  docs: payload.docs
1358
1409
  };
1359
- });
1410
+ }, []);
1411
+ var runProcessor = WebWorker_default(workerProcessorSocket, settings === null || settings === void 0 ? void 0 : settings.worker);
1360
1412
  var wrapConfigsForWorker = function(cfgs) {
1361
- return cfgs.map(function(cfg) {
1362
- var wrapped = _object_spread({}, cfg);
1363
- var wrapCb = function(cb, op) {
1364
- if (!cb) return void 0;
1365
- return /*#__PURE__*/ function() {
1366
- var _ref = _async_to_generator(function(docs, config) {
1367
- var _ref, processed, e;
1368
- return _ts_generator(this, function(_state) {
1369
- switch(_state.label){
1370
- case 0:
1371
- _state.trys.push([
1372
- 0,
1373
- 2,
1374
- ,
1375
- 3
1376
- ]);
1377
- return [
1378
- 4,
1379
- runProcessor({
1380
- op: op,
1381
- docs: docs
1382
- })
1383
- ];
1384
- case 1:
1385
- _ref = _state.sent(), processed = _ref.docs;
1386
- cb(processed, config);
1387
- return [
1388
- 3,
1389
- 3
1390
- ];
1391
- case 2:
1392
- e = _state.sent();
1393
- cb(docs, config);
1394
- return [
1395
- 3,
1396
- 3
1397
- ];
1398
- case 3:
1399
- return [
1400
- 2
1401
- ];
1402
- }
1403
- });
1404
- });
1405
- return function(docs, config) {
1406
- return _ref.apply(this, arguments);
1407
- };
1408
- }();
1409
- };
1410
- wrapped.onFirstTime = wrapCb(cfg.onFirstTime, "first");
1411
- wrapped.onAdd = wrapCb(cfg.onAdd, "add");
1412
- wrapped.onModify = wrapCb(cfg.onModify, "modify");
1413
- wrapped.onRemove = wrapCb(cfg.onRemove, "remove");
1414
- if (cfg.extraParsers && cfg.extraParsers.length) {
1415
- wrapped.extraParsers = cfg.extraParsers.map(function(p) {
1416
- return {
1417
- onFirstTime: wrapCb(p.onFirstTime, "first"),
1418
- onAdd: wrapCb(p.onAdd, "add"),
1419
- onModify: wrapCb(p.onModify, "modify"),
1420
- onRemove: wrapCb(p.onRemove, "remove")
1421
- };
1422
- });
1423
- }
1424
- return wrapped;
1413
+ return wrapConfigsWithWorker(cfgs, function(payload) {
1414
+ return runProcessor(payload);
1425
1415
  });
1426
1416
  };
1427
1417
  useDeepCompareEffect(function() {
1428
1418
  if (!auth.currentUser) {
1429
1419
  return;
1430
1420
  }
1421
+ var clearSubscriptions = function() {
1422
+ if (cleanupSubscriptionsRef.current.length) {
1423
+ cleanupSubscriptionsRef.current.forEach(function(cleanup) {
1424
+ return cleanup();
1425
+ });
1426
+ cleanupSubscriptionsRef.current = [];
1427
+ }
1428
+ };
1431
1429
  var subscribe = function() {
1432
1430
  if (configs.length === 0) {
1433
1431
  return;
1434
1432
  }
1433
+ clearSubscriptions();
1435
1434
  var disposer = socketServiceInstance.subscribeToCollections(wrapConfigsForWorker(configs));
1436
- setCleanupSubscriptions(function(prev) {
1437
- return _to_consumable_array(prev).concat([
1438
- disposer
1439
- ]);
1440
- });
1435
+ cleanupSubscriptionsRef.current.push(disposer);
1441
1436
  if (!(settings === null || settings === void 0 ? void 0 : settings.disableLogs)) {
1442
1437
  console.log("==> ".concat(label || "Cache snapshots", " subscribed to ").concat(configs.map(function(c) {
1443
1438
  return c.collectionName;
@@ -1463,29 +1458,26 @@ var useSocketSnapshots = function(configs, label, settings) {
1463
1458
  });
1464
1459
  var offDisconnect = socketServiceInstance.onDisconnect(function() {
1465
1460
  setSocketConnected(false);
1466
- cleanupSubscriptions.forEach(function(cleanup) {
1467
- return cleanup();
1468
- });
1461
+ clearSubscriptions();
1469
1462
  });
1470
- if (settings === null || settings === void 0 ? void 0 : settings.cleanupForConfigChange) {
1471
- return function() {
1472
- cleanupSubscriptions.forEach(function(cleanup) {
1473
- return cleanup();
1474
- });
1475
- if (!(settings === null || settings === void 0 ? void 0 : settings.disableLogs) && configs.length > 0) {
1476
- console.log("==> ".concat(label || "Cache snapshots", " unsubscribed. "));
1477
- }
1478
- };
1479
- }
1463
+ return function() {
1464
+ clearSubscriptions();
1465
+ offConnect === null || offConnect === void 0 ? void 0 : offConnect();
1466
+ offDisconnect === null || offDisconnect === void 0 ? void 0 : offDisconnect();
1467
+ if (!(settings === null || settings === void 0 ? void 0 : settings.disableLogs) && configs.length > 0) {
1468
+ console.log("==> ".concat(label || "Cache snapshots", " unsubscribed. "));
1469
+ }
1470
+ };
1480
1471
  }, [
1481
1472
  configs,
1482
1473
  (_auth_currentUser = auth.currentUser) === null || _auth_currentUser === void 0 ? void 0 : _auth_currentUser.uid
1483
1474
  ]);
1484
1475
  (0, import_react5.useEffect)(function() {
1485
1476
  return function() {
1486
- cleanupSubscriptions.forEach(function(cleanup) {
1477
+ cleanupSubscriptionsRef.current.forEach(function(cleanup) {
1487
1478
  return cleanup();
1488
1479
  });
1480
+ cleanupSubscriptionsRef.current = [];
1489
1481
  if (!(settings === null || settings === void 0 ? void 0 : settings.disableLogs) && configs.length > 0) {
1490
1482
  console.log("==> ".concat(label || "Cache snapshots", " unsubscribed. "));
1491
1483
  }
@@ -7,9 +7,6 @@ function _array_like_to_array(arr, len) {
7
7
  function _array_with_holes(arr) {
8
8
  if (Array.isArray(arr)) return arr;
9
9
  }
10
- function _array_without_holes(arr) {
11
- if (Array.isArray(arr)) return _array_like_to_array(arr);
12
- }
13
10
  function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
14
11
  try {
15
12
  var info = gen[key](arg);
@@ -71,8 +68,12 @@ function _define_property(obj, key, value) {
71
68
  }
72
69
  return obj;
73
70
  }
74
- function _iterable_to_array(iter) {
75
- if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
71
+ function _instanceof(left, right) {
72
+ if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) {
73
+ return !!right[Symbol.hasInstance](left);
74
+ } else {
75
+ return left instanceof right;
76
+ }
76
77
  }
77
78
  function _iterable_to_array_limit(arr, i) {
78
79
  var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
@@ -101,9 +102,6 @@ function _iterable_to_array_limit(arr, i) {
101
102
  function _non_iterable_rest() {
102
103
  throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
103
104
  }
104
- function _non_iterable_spread() {
105
- throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
106
- }
107
105
  function _object_spread(target) {
108
106
  for(var i = 1; i < arguments.length; i++){
109
107
  var source = arguments[i] != null ? arguments[i] : {};
@@ -146,9 +144,6 @@ function _object_spread_props(target, source) {
146
144
  function _sliced_to_array(arr, i) {
147
145
  return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest();
148
146
  }
149
- function _to_consumable_array(arr) {
150
- return _array_without_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_spread();
151
- }
152
147
  function _unsupported_iterable_to_array(o, minLen) {
153
148
  if (!o) return;
154
149
  if (typeof o === "string") return _array_like_to_array(o, minLen);
@@ -935,13 +930,16 @@ function useDeepCompareEffect(effect, dependencies) {
935
930
  }
936
931
  // src/hooks/WebWorker.ts
937
932
  import { useCallback as useCallback2, useEffect as useEffect3, useRef as useRef3 } from "react";
938
- var useWebWorker = function(fn) {
933
+ var useWebWorker = function(fn, options) {
939
934
  var workerRef = useRef3(null);
940
935
  var workerUrlRef = useRef3(null);
941
936
  var nextJobIdRef = useRef3(1);
942
937
  var pendingJobsRef = useRef3(/* @__PURE__ */ new Map());
938
+ var isSupportedRef = useRef3(typeof window !== "undefined" && typeof Worker !== "undefined");
939
+ var isReadyRef = useRef3(false);
940
+ var lastErrorRef = useRef3(null);
943
941
  useEffect3(function() {
944
- if (typeof window === "undefined" || typeof Worker === "undefined") {
942
+ if (!isSupportedRef.current) {
945
943
  return function() {};
946
944
  }
947
945
  var functionString = fn.toString();
@@ -966,6 +964,10 @@ var useWebWorker = function(fn) {
966
964
  });
967
965
  var url = URL.createObjectURL(workerBlob);
968
966
  var worker = new Worker(url);
967
+ isReadyRef.current = true;
968
+ if (options === null || options === void 0 ? void 0 : options.debug) {
969
+ console.log("[WebWorker".concat((options === null || options === void 0 ? void 0 : options.name) ? ":" + options.name : "", "] created"));
970
+ }
969
971
  worker.onmessage = function(event) {
970
972
  var data = event.data || {};
971
973
  var id = data.id;
@@ -976,13 +978,21 @@ var useWebWorker = function(fn) {
976
978
  if (data.ok) {
977
979
  pending.resolve(data.result);
978
980
  } else {
981
+ var _options_onError;
979
982
  var _data_error;
980
- pending.reject(new Error((_data_error = data.error) !== null && _data_error !== void 0 ? _data_error : "Worker error"));
983
+ var err = new Error((_data_error = data.error) !== null && _data_error !== void 0 ? _data_error : "Worker error");
984
+ lastErrorRef.current = err;
985
+ options === null || options === void 0 ? void 0 : (_options_onError = options.onError) === null || _options_onError === void 0 ? void 0 : _options_onError.call(options, err);
986
+ pending.reject(err);
981
987
  }
982
988
  };
983
- worker.onerror = function() {
989
+ worker.onerror = function(event) {
990
+ var _options_onError;
991
+ var err = new Error(event.message || "Worker encountered an error");
992
+ lastErrorRef.current = err;
993
+ options === null || options === void 0 ? void 0 : (_options_onError = options.onError) === null || _options_onError === void 0 ? void 0 : _options_onError.call(options, err);
984
994
  pendingJobsRef.current.forEach(function(job) {
985
- job.reject(new Error("Worker encountered an error"));
995
+ job.reject(err);
986
996
  });
987
997
  pendingJobsRef.current.clear();
988
998
  };
@@ -1007,15 +1017,22 @@ var useWebWorker = function(fn) {
1007
1017
  job.reject(new Error("Worker terminated"));
1008
1018
  });
1009
1019
  pendingJobsRef.current.clear();
1020
+ isReadyRef.current = false;
1010
1021
  };
1011
1022
  }, [
1012
- fn
1023
+ fn,
1024
+ options === null || options === void 0 ? void 0 : options.debug,
1025
+ options === null || options === void 0 ? void 0 : options.name,
1026
+ options === null || options === void 0 ? void 0 : options.onError
1013
1027
  ]);
1014
- var runWorker = useCallback2(function(data, transfer) {
1028
+ var runWorkerBase = useCallback2(function(data, transfer) {
1015
1029
  if (!workerRef.current) {
1030
+ if (options === null || options === void 0 ? void 0 : options.debug) {
1031
+ console.warn("[WebWorker".concat((options === null || options === void 0 ? void 0 : options.name) ? ":" + options.name : "", "] fallback to main thread"));
1032
+ }
1016
1033
  return new Promise(/*#__PURE__*/ function() {
1017
1034
  var _ref = _async_to_generator(function(resolve, reject) {
1018
- var result, err;
1035
+ var result, err, _options_onError, error;
1019
1036
  return _ts_generator(this, function(_state) {
1020
1037
  switch(_state.label){
1021
1038
  case 0:
@@ -1038,7 +1055,10 @@ var useWebWorker = function(fn) {
1038
1055
  ];
1039
1056
  case 2:
1040
1057
  err = _state.sent();
1041
- reject(err);
1058
+ error = _instanceof(err, Error) ? err : new Error(String(err));
1059
+ lastErrorRef.current = error;
1060
+ options === null || options === void 0 ? void 0 : (_options_onError = options.onError) === null || _options_onError === void 0 ? void 0 : _options_onError.call(options, error);
1061
+ reject(error);
1042
1062
  return [
1043
1063
  3,
1044
1064
  3
@@ -1056,6 +1076,9 @@ var useWebWorker = function(fn) {
1056
1076
  }());
1057
1077
  }
1058
1078
  var id = nextJobIdRef.current++;
1079
+ if (options === null || options === void 0 ? void 0 : options.debug) {
1080
+ console.log("[WebWorker".concat((options === null || options === void 0 ? void 0 : options.name) ? ":" + options.name : "", "] postMessage id=").concat(id));
1081
+ }
1059
1082
  return new Promise(function(resolve, reject) {
1060
1083
  pendingJobsRef.current.set(id, {
1061
1084
  resolve: resolve,
@@ -1074,92 +1097,120 @@ var useWebWorker = function(fn) {
1074
1097
  });
1075
1098
  }
1076
1099
  } catch (err) {
1100
+ var _options_onError;
1077
1101
  pendingJobsRef.current.delete(id);
1078
- reject(err);
1102
+ var error = _instanceof(err, Error) ? err : new Error(String(err));
1103
+ lastErrorRef.current = error;
1104
+ options === null || options === void 0 ? void 0 : (_options_onError = options.onError) === null || _options_onError === void 0 ? void 0 : _options_onError.call(options, error);
1105
+ reject(error);
1079
1106
  }
1080
1107
  });
1081
1108
  }, [
1082
- fn
1109
+ fn,
1110
+ options === null || options === void 0 ? void 0 : options.debug,
1111
+ options === null || options === void 0 ? void 0 : options.name,
1112
+ options === null || options === void 0 ? void 0 : options.onError
1083
1113
  ]);
1114
+ var runWorker = runWorkerBase;
1115
+ runWorker.isSupported = function() {
1116
+ return isSupportedRef.current;
1117
+ };
1118
+ runWorker.isUsingWorker = function() {
1119
+ return Boolean(workerRef.current) && isReadyRef.current;
1120
+ };
1121
+ runWorker.pendingJobs = function() {
1122
+ return pendingJobsRef.current.size;
1123
+ };
1124
+ runWorker.lastError = function() {
1125
+ return lastErrorRef.current;
1126
+ };
1084
1127
  return runWorker;
1085
1128
  };
1086
1129
  var WebWorker_default = useWebWorker;
1087
1130
  // src/hooks/snapshots.ts
1088
- import { useEffect as useEffect4, useMemo as useMemo3, useRef as useRef4, useState as useState2 } from "react";
1131
+ import { useCallback as useCallback3, useEffect as useEffect4, useMemo as useMemo3, useRef as useRef4, useState as useState2 } from "react";
1132
+ // src/hooks/snapshotWorker.ts
1133
+ var wrapConfigsWithWorker = function(cfgs, runProcessor) {
1134
+ var wrapCb = function(cb, op, run) {
1135
+ if (!cb) return void 0;
1136
+ return /*#__PURE__*/ function() {
1137
+ var _ref = _async_to_generator(function(docs, config) {
1138
+ var safeDocs, _ref, processed, e;
1139
+ return _ts_generator(this, function(_state) {
1140
+ switch(_state.label){
1141
+ case 0:
1142
+ _state.trys.push([
1143
+ 0,
1144
+ 2,
1145
+ ,
1146
+ 3
1147
+ ]);
1148
+ safeDocs = JSON.parse(JSON.stringify(docs));
1149
+ return [
1150
+ 4,
1151
+ run({
1152
+ op: op,
1153
+ docs: safeDocs
1154
+ })
1155
+ ];
1156
+ case 1:
1157
+ _ref = _state.sent(), processed = _ref.docs;
1158
+ cb(processed, config);
1159
+ return [
1160
+ 3,
1161
+ 3
1162
+ ];
1163
+ case 2:
1164
+ e = _state.sent();
1165
+ cb(docs, config);
1166
+ return [
1167
+ 3,
1168
+ 3
1169
+ ];
1170
+ case 3:
1171
+ return [
1172
+ 2
1173
+ ];
1174
+ }
1175
+ });
1176
+ });
1177
+ return function(docs, config) {
1178
+ return _ref.apply(this, arguments);
1179
+ };
1180
+ }();
1181
+ };
1182
+ return cfgs.map(function(cfg) {
1183
+ var wrapped = _object_spread({}, cfg);
1184
+ wrapped.onFirstTime = wrapCb(cfg.onFirstTime, "first", runProcessor);
1185
+ wrapped.onAdd = wrapCb(cfg.onAdd, "add", runProcessor);
1186
+ wrapped.onModify = wrapCb(cfg.onModify, "modify", runProcessor);
1187
+ wrapped.onRemove = wrapCb(cfg.onRemove, "remove", runProcessor);
1188
+ if (cfg.extraParsers && cfg.extraParsers.length) {
1189
+ wrapped.extraParsers = cfg.extraParsers.map(function(p) {
1190
+ return {
1191
+ onFirstTime: wrapCb(p.onFirstTime, "first", runProcessor),
1192
+ onAdd: wrapCb(p.onAdd, "add", runProcessor),
1193
+ onModify: wrapCb(p.onModify, "modify", runProcessor),
1194
+ onRemove: wrapCb(p.onRemove, "remove", runProcessor)
1195
+ };
1196
+ });
1197
+ }
1198
+ return wrapped;
1199
+ });
1200
+ };
1201
+ // src/hooks/snapshots.ts
1089
1202
  var useDbSnapshots = function(configs, label, settings) {
1090
1203
  var snapshotsFirstTime = useRef4([]);
1091
1204
  var unsubscribeFunctions = useRef4([]);
1092
- var runProcessor = WebWorker_default(function(payload) {
1205
+ var workerProcessorDb = useCallback3(function(payload) {
1093
1206
  return {
1094
1207
  docs: payload.docs
1095
1208
  };
1096
- });
1209
+ }, []);
1210
+ var runProcessor = WebWorker_default(workerProcessorDb, settings === null || settings === void 0 ? void 0 : settings.worker);
1097
1211
  var wrapConfigsForWorker = function(cfgs) {
1098
- return cfgs.map(function(cfg) {
1099
- var wrapped = _object_spread({}, cfg);
1100
- var wrapCb = function(cb, op) {
1101
- if (!cb) return void 0;
1102
- return /*#__PURE__*/ function() {
1103
- var _ref = _async_to_generator(function(docs, config) {
1104
- var safeDocs, _ref, processed, e;
1105
- return _ts_generator(this, function(_state) {
1106
- switch(_state.label){
1107
- case 0:
1108
- _state.trys.push([
1109
- 0,
1110
- 2,
1111
- ,
1112
- 3
1113
- ]);
1114
- safeDocs = JSON.parse(JSON.stringify(docs));
1115
- return [
1116
- 4,
1117
- runProcessor({
1118
- op: op,
1119
- docs: safeDocs
1120
- })
1121
- ];
1122
- case 1:
1123
- _ref = _state.sent(), processed = _ref.docs;
1124
- cb(processed, config);
1125
- return [
1126
- 3,
1127
- 3
1128
- ];
1129
- case 2:
1130
- e = _state.sent();
1131
- cb(docs, config);
1132
- return [
1133
- 3,
1134
- 3
1135
- ];
1136
- case 3:
1137
- return [
1138
- 2
1139
- ];
1140
- }
1141
- });
1142
- });
1143
- return function(docs, config) {
1144
- return _ref.apply(this, arguments);
1145
- };
1146
- }();
1147
- };
1148
- wrapped.onFirstTime = wrapCb(cfg.onFirstTime, "first");
1149
- wrapped.onAdd = wrapCb(cfg.onAdd, "add");
1150
- wrapped.onModify = wrapCb(cfg.onModify, "modify");
1151
- wrapped.onRemove = wrapCb(cfg.onRemove, "remove");
1152
- if (cfg.extraParsers && cfg.extraParsers.length) {
1153
- wrapped.extraParsers = cfg.extraParsers.map(function(p) {
1154
- return {
1155
- onFirstTime: wrapCb(p.onFirstTime, "first"),
1156
- onAdd: wrapCb(p.onAdd, "add"),
1157
- onModify: wrapCb(p.onModify, "modify"),
1158
- onRemove: wrapCb(p.onRemove, "remove")
1159
- };
1160
- });
1161
- }
1162
- return wrapped;
1212
+ return wrapConfigsWithWorker(cfgs, function(payload) {
1213
+ return runProcessor(payload);
1163
1214
  });
1164
1215
  };
1165
1216
  useDeepCompareEffect(function() {
@@ -1256,94 +1307,38 @@ var useSmartSnapshots = function(configs, label, settings) {
1256
1307
  var useSocketSnapshots = function(configs, label, settings) {
1257
1308
  var _auth_currentUser;
1258
1309
  var _useState2 = _sliced_to_array(useState2(socketServiceInstance.isConnected()), 2), socketConnected = _useState2[0], setSocketConnected = _useState2[1];
1259
- var _useState21 = _sliced_to_array(useState2([]), 2), cleanupSubscriptions = _useState21[0], setCleanupSubscriptions = _useState21[1];
1310
+ var cleanupSubscriptionsRef = useRef4([]);
1260
1311
  var socketStarted = useRef4(false);
1261
- var runProcessor = WebWorker_default(function(payload) {
1312
+ var workerProcessorSocket = useCallback3(function(payload) {
1262
1313
  return {
1263
1314
  docs: payload.docs
1264
1315
  };
1265
- });
1316
+ }, []);
1317
+ var runProcessor = WebWorker_default(workerProcessorSocket, settings === null || settings === void 0 ? void 0 : settings.worker);
1266
1318
  var wrapConfigsForWorker = function(cfgs) {
1267
- return cfgs.map(function(cfg) {
1268
- var wrapped = _object_spread({}, cfg);
1269
- var wrapCb = function(cb, op) {
1270
- if (!cb) return void 0;
1271
- return /*#__PURE__*/ function() {
1272
- var _ref = _async_to_generator(function(docs, config) {
1273
- var _ref, processed, e;
1274
- return _ts_generator(this, function(_state) {
1275
- switch(_state.label){
1276
- case 0:
1277
- _state.trys.push([
1278
- 0,
1279
- 2,
1280
- ,
1281
- 3
1282
- ]);
1283
- return [
1284
- 4,
1285
- runProcessor({
1286
- op: op,
1287
- docs: docs
1288
- })
1289
- ];
1290
- case 1:
1291
- _ref = _state.sent(), processed = _ref.docs;
1292
- cb(processed, config);
1293
- return [
1294
- 3,
1295
- 3
1296
- ];
1297
- case 2:
1298
- e = _state.sent();
1299
- cb(docs, config);
1300
- return [
1301
- 3,
1302
- 3
1303
- ];
1304
- case 3:
1305
- return [
1306
- 2
1307
- ];
1308
- }
1309
- });
1310
- });
1311
- return function(docs, config) {
1312
- return _ref.apply(this, arguments);
1313
- };
1314
- }();
1315
- };
1316
- wrapped.onFirstTime = wrapCb(cfg.onFirstTime, "first");
1317
- wrapped.onAdd = wrapCb(cfg.onAdd, "add");
1318
- wrapped.onModify = wrapCb(cfg.onModify, "modify");
1319
- wrapped.onRemove = wrapCb(cfg.onRemove, "remove");
1320
- if (cfg.extraParsers && cfg.extraParsers.length) {
1321
- wrapped.extraParsers = cfg.extraParsers.map(function(p) {
1322
- return {
1323
- onFirstTime: wrapCb(p.onFirstTime, "first"),
1324
- onAdd: wrapCb(p.onAdd, "add"),
1325
- onModify: wrapCb(p.onModify, "modify"),
1326
- onRemove: wrapCb(p.onRemove, "remove")
1327
- };
1328
- });
1329
- }
1330
- return wrapped;
1319
+ return wrapConfigsWithWorker(cfgs, function(payload) {
1320
+ return runProcessor(payload);
1331
1321
  });
1332
1322
  };
1333
1323
  useDeepCompareEffect(function() {
1334
1324
  if (!auth.currentUser) {
1335
1325
  return;
1336
1326
  }
1327
+ var clearSubscriptions = function() {
1328
+ if (cleanupSubscriptionsRef.current.length) {
1329
+ cleanupSubscriptionsRef.current.forEach(function(cleanup) {
1330
+ return cleanup();
1331
+ });
1332
+ cleanupSubscriptionsRef.current = [];
1333
+ }
1334
+ };
1337
1335
  var subscribe = function() {
1338
1336
  if (configs.length === 0) {
1339
1337
  return;
1340
1338
  }
1339
+ clearSubscriptions();
1341
1340
  var disposer = socketServiceInstance.subscribeToCollections(wrapConfigsForWorker(configs));
1342
- setCleanupSubscriptions(function(prev) {
1343
- return _to_consumable_array(prev).concat([
1344
- disposer
1345
- ]);
1346
- });
1341
+ cleanupSubscriptionsRef.current.push(disposer);
1347
1342
  if (!(settings === null || settings === void 0 ? void 0 : settings.disableLogs)) {
1348
1343
  console.log("==> ".concat(label || "Cache snapshots", " subscribed to ").concat(configs.map(function(c) {
1349
1344
  return c.collectionName;
@@ -1369,29 +1364,26 @@ var useSocketSnapshots = function(configs, label, settings) {
1369
1364
  });
1370
1365
  var offDisconnect = socketServiceInstance.onDisconnect(function() {
1371
1366
  setSocketConnected(false);
1372
- cleanupSubscriptions.forEach(function(cleanup) {
1373
- return cleanup();
1374
- });
1367
+ clearSubscriptions();
1375
1368
  });
1376
- if (settings === null || settings === void 0 ? void 0 : settings.cleanupForConfigChange) {
1377
- return function() {
1378
- cleanupSubscriptions.forEach(function(cleanup) {
1379
- return cleanup();
1380
- });
1381
- if (!(settings === null || settings === void 0 ? void 0 : settings.disableLogs) && configs.length > 0) {
1382
- console.log("==> ".concat(label || "Cache snapshots", " unsubscribed. "));
1383
- }
1384
- };
1385
- }
1369
+ return function() {
1370
+ clearSubscriptions();
1371
+ offConnect === null || offConnect === void 0 ? void 0 : offConnect();
1372
+ offDisconnect === null || offDisconnect === void 0 ? void 0 : offDisconnect();
1373
+ if (!(settings === null || settings === void 0 ? void 0 : settings.disableLogs) && configs.length > 0) {
1374
+ console.log("==> ".concat(label || "Cache snapshots", " unsubscribed. "));
1375
+ }
1376
+ };
1386
1377
  }, [
1387
1378
  configs,
1388
1379
  (_auth_currentUser = auth.currentUser) === null || _auth_currentUser === void 0 ? void 0 : _auth_currentUser.uid
1389
1380
  ]);
1390
1381
  useEffect4(function() {
1391
1382
  return function() {
1392
- cleanupSubscriptions.forEach(function(cleanup) {
1383
+ cleanupSubscriptionsRef.current.forEach(function(cleanup) {
1393
1384
  return cleanup();
1394
1385
  });
1386
+ cleanupSubscriptionsRef.current = [];
1395
1387
  if (!(settings === null || settings === void 0 ? void 0 : settings.disableLogs) && configs.length > 0) {
1396
1388
  console.log("==> ".concat(label || "Cache snapshots", " unsubscribed. "));
1397
1389
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "akeyless-client-commons",
3
- "version": "1.1.35",
3
+ "version": "1.1.37",
4
4
  "scripts": {
5
5
  "build": "tsup",
6
6
  "deploy": "npm run build && npm version patch --no-git-tag-version && npm publish",