akeyless-client-commons 1.1.33 → 1.1.35

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.
@@ -7,6 +7,9 @@ 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
+ }
10
13
  function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
11
14
  try {
12
15
  var info = gen[key](arg);
@@ -68,6 +71,9 @@ function _define_property(obj, key, value) {
68
71
  }
69
72
  return obj;
70
73
  }
74
+ function _iterable_to_array(iter) {
75
+ if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
76
+ }
71
77
  function _iterable_to_array_limit(arr, i) {
72
78
  var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
73
79
  if (_i == null) return;
@@ -95,6 +101,9 @@ function _iterable_to_array_limit(arr, i) {
95
101
  function _non_iterable_rest() {
96
102
  throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
97
103
  }
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
+ }
98
107
  function _object_spread(target) {
99
108
  for(var i = 1; i < arguments.length; i++){
100
109
  var source = arguments[i] != null ? arguments[i] : {};
@@ -137,6 +146,9 @@ function _object_spread_props(target, source) {
137
146
  function _sliced_to_array(arr, i) {
138
147
  return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest();
139
148
  }
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
+ }
140
152
  function _unsupported_iterable_to_array(o, minLen) {
141
153
  if (!o) return;
142
154
  if (typeof o === "string") return _array_like_to_array(o, minLen);
@@ -415,9 +427,14 @@ var snapshot = function(config, snapshotsFirstTime, settings) {
415
427
  });
416
428
  }
417
429
  var unsubscribe = onSnapshot(collectionRef, function(snapshot3) {
418
- if (!snapshotsFirstTime.includes(config.collectionName)) {
430
+ var firstTimeKey = JSON.stringify({
431
+ collectionName: config.collectionName,
432
+ conditions: config.conditions || [],
433
+ orderBy: config.orderBy || []
434
+ });
435
+ if (!snapshotsFirstTime.includes(firstTimeKey)) {
419
436
  var _config_onFirstTime, _config_extraParsers;
420
- snapshotsFirstTime.push(config.collectionName);
437
+ snapshotsFirstTime.push(firstTimeKey);
421
438
  var documents = snapshot3.docs.map(function(doc2) {
422
439
  return simpleExtractData(doc2);
423
440
  });
@@ -918,20 +935,240 @@ function useDeepCompareEffect(effect, dependencies) {
918
935
  }
919
936
  // src/hooks/WebWorker.ts
920
937
  import { useCallback as useCallback2, useEffect as useEffect3, useRef as useRef3 } from "react";
938
+ var useWebWorker = function(fn) {
939
+ var workerRef = useRef3(null);
940
+ var workerUrlRef = useRef3(null);
941
+ var nextJobIdRef = useRef3(1);
942
+ var pendingJobsRef = useRef3(/* @__PURE__ */ new Map());
943
+ useEffect3(function() {
944
+ if (typeof window === "undefined" || typeof Worker === "undefined") {
945
+ return function() {};
946
+ }
947
+ var functionString = fn.toString();
948
+ var workerSource = [
949
+ "const userFn = (".concat(functionString, ");"),
950
+ "onmessage = async function(event) {",
951
+ " try {",
952
+ " const { id, payload } = event.data || {};",
953
+ " const result = await userFn(payload);",
954
+ " postMessage({ id, ok: true, result });",
955
+ " } catch (err) {",
956
+ " let message;",
957
+ " try { message = err && err.message ? String(err.message) : String(err); } catch (_) { message = 'Worker error'; }",
958
+ " postMessage({ id, ok: false, error: message });",
959
+ " }",
960
+ "}"
961
+ ].join("\n");
962
+ var workerBlob = new Blob([
963
+ workerSource
964
+ ], {
965
+ type: "application/javascript"
966
+ });
967
+ var url = URL.createObjectURL(workerBlob);
968
+ var worker = new Worker(url);
969
+ worker.onmessage = function(event) {
970
+ var data = event.data || {};
971
+ var id = data.id;
972
+ if (!id) return;
973
+ var pending = pendingJobsRef.current.get(id);
974
+ if (!pending) return;
975
+ pendingJobsRef.current.delete(id);
976
+ if (data.ok) {
977
+ pending.resolve(data.result);
978
+ } else {
979
+ var _data_error;
980
+ pending.reject(new Error((_data_error = data.error) !== null && _data_error !== void 0 ? _data_error : "Worker error"));
981
+ }
982
+ };
983
+ worker.onerror = function() {
984
+ pendingJobsRef.current.forEach(function(job) {
985
+ job.reject(new Error("Worker encountered an error"));
986
+ });
987
+ pendingJobsRef.current.clear();
988
+ };
989
+ if (workerRef.current) {
990
+ workerRef.current.terminate();
991
+ }
992
+ if (workerUrlRef.current) {
993
+ URL.revokeObjectURL(workerUrlRef.current);
994
+ }
995
+ workerRef.current = worker;
996
+ workerUrlRef.current = url;
997
+ return function() {
998
+ if (workerRef.current) {
999
+ workerRef.current.terminate();
1000
+ workerRef.current = null;
1001
+ }
1002
+ if (workerUrlRef.current) {
1003
+ URL.revokeObjectURL(workerUrlRef.current);
1004
+ workerUrlRef.current = null;
1005
+ }
1006
+ pendingJobsRef.current.forEach(function(job) {
1007
+ job.reject(new Error("Worker terminated"));
1008
+ });
1009
+ pendingJobsRef.current.clear();
1010
+ };
1011
+ }, [
1012
+ fn
1013
+ ]);
1014
+ var runWorker = useCallback2(function(data, transfer) {
1015
+ if (!workerRef.current) {
1016
+ return new Promise(/*#__PURE__*/ function() {
1017
+ var _ref = _async_to_generator(function(resolve, reject) {
1018
+ var result, err;
1019
+ return _ts_generator(this, function(_state) {
1020
+ switch(_state.label){
1021
+ case 0:
1022
+ _state.trys.push([
1023
+ 0,
1024
+ 2,
1025
+ ,
1026
+ 3
1027
+ ]);
1028
+ return [
1029
+ 4,
1030
+ fn(data)
1031
+ ];
1032
+ case 1:
1033
+ result = _state.sent();
1034
+ resolve(result);
1035
+ return [
1036
+ 3,
1037
+ 3
1038
+ ];
1039
+ case 2:
1040
+ err = _state.sent();
1041
+ reject(err);
1042
+ return [
1043
+ 3,
1044
+ 3
1045
+ ];
1046
+ case 3:
1047
+ return [
1048
+ 2
1049
+ ];
1050
+ }
1051
+ });
1052
+ });
1053
+ return function(resolve, reject) {
1054
+ return _ref.apply(this, arguments);
1055
+ };
1056
+ }());
1057
+ }
1058
+ var id = nextJobIdRef.current++;
1059
+ return new Promise(function(resolve, reject) {
1060
+ pendingJobsRef.current.set(id, {
1061
+ resolve: resolve,
1062
+ reject: reject
1063
+ });
1064
+ try {
1065
+ if (transfer && transfer.length) {
1066
+ workerRef.current.postMessage({
1067
+ id: id,
1068
+ payload: data
1069
+ }, transfer);
1070
+ } else {
1071
+ workerRef.current.postMessage({
1072
+ id: id,
1073
+ payload: data
1074
+ });
1075
+ }
1076
+ } catch (err) {
1077
+ pendingJobsRef.current.delete(id);
1078
+ reject(err);
1079
+ }
1080
+ });
1081
+ }, [
1082
+ fn
1083
+ ]);
1084
+ return runWorker;
1085
+ };
1086
+ var WebWorker_default = useWebWorker;
921
1087
  // src/hooks/snapshots.ts
922
1088
  import { useEffect as useEffect4, useMemo as useMemo3, useRef as useRef4, useState as useState2 } from "react";
923
1089
  var useDbSnapshots = function(configs, label, settings) {
924
1090
  var snapshotsFirstTime = useRef4([]);
925
1091
  var unsubscribeFunctions = useRef4([]);
1092
+ var runProcessor = WebWorker_default(function(payload) {
1093
+ return {
1094
+ docs: payload.docs
1095
+ };
1096
+ });
1097
+ 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;
1163
+ });
1164
+ };
926
1165
  useDeepCompareEffect(function() {
927
- if (configs.length === 0) {
928
- return;
929
- }
930
1166
  var start = performance.now();
931
1167
  if (!(settings === null || settings === void 0 ? void 0 : settings.disableLogs) && configs.length > 0) {
932
1168
  console.log("==> ".concat(label || "DB snapshots", " started from db... "));
933
1169
  }
934
- var snapshotResults = configs.map(function(config) {
1170
+ var wrappedConfigs = wrapConfigsForWorker(configs);
1171
+ var snapshotResults = wrappedConfigs.map(function(config) {
935
1172
  return snapshot(config, snapshotsFirstTime.current, settings);
936
1173
  });
937
1174
  unsubscribeFunctions.current = snapshotResults.map(function(result) {
@@ -1019,25 +1256,94 @@ var useSmartSnapshots = function(configs, label, settings) {
1019
1256
  var useSocketSnapshots = function(configs, label, settings) {
1020
1257
  var _auth_currentUser;
1021
1258
  var _useState2 = _sliced_to_array(useState2(socketServiceInstance.isConnected()), 2), socketConnected = _useState2[0], setSocketConnected = _useState2[1];
1022
- var cleanupSubscriptionsRef = useRef4([]);
1259
+ var _useState21 = _sliced_to_array(useState2([]), 2), cleanupSubscriptions = _useState21[0], setCleanupSubscriptions = _useState21[1];
1023
1260
  var socketStarted = useRef4(false);
1261
+ var runProcessor = WebWorker_default(function(payload) {
1262
+ return {
1263
+ docs: payload.docs
1264
+ };
1265
+ });
1266
+ 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;
1331
+ });
1332
+ };
1024
1333
  useDeepCompareEffect(function() {
1025
- var isActive = true;
1026
1334
  if (!auth.currentUser) {
1027
1335
  return;
1028
1336
  }
1029
- var clearSubs = function() {
1030
- cleanupSubscriptionsRef.current.forEach(function(cleanup) {
1031
- return cleanup();
1032
- });
1033
- cleanupSubscriptionsRef.current = [];
1034
- };
1035
1337
  var subscribe = function() {
1036
1338
  if (configs.length === 0) {
1037
1339
  return;
1038
1340
  }
1039
- var disposer = socketServiceInstance.subscribeToCollections(configs);
1040
- cleanupSubscriptionsRef.current.push(disposer);
1341
+ var disposer = socketServiceInstance.subscribeToCollections(wrapConfigsForWorker(configs));
1342
+ setCleanupSubscriptions(function(prev) {
1343
+ return _to_consumable_array(prev).concat([
1344
+ disposer
1345
+ ]);
1346
+ });
1041
1347
  if (!(settings === null || settings === void 0 ? void 0 : settings.disableLogs)) {
1042
1348
  console.log("==> ".concat(label || "Cache snapshots", " subscribed to ").concat(configs.map(function(c) {
1043
1349
  return c.collectionName;
@@ -1046,34 +1352,32 @@ var useSocketSnapshots = function(configs, label, settings) {
1046
1352
  };
1047
1353
  if (socketServiceInstance.isConnected()) {
1048
1354
  setSocketConnected(true);
1049
- clearSubs();
1050
1355
  subscribe();
1051
1356
  } else if (!socketStarted.current) {
1052
1357
  socketStarted.current = true;
1053
1358
  auth.currentUser.getIdToken().then(function(token) {
1054
- if (!isActive) return;
1055
1359
  socketServiceInstance.startSession(token);
1056
1360
  if (!(settings === null || settings === void 0 ? void 0 : settings.disableLogs)) {
1057
1361
  console.log("==> ".concat(label || "Cache snapshots", " started... "));
1058
1362
  }
1059
- }).catch(function() {});
1363
+ });
1060
1364
  }
1061
1365
  var offConnect = socketServiceInstance.onConnect(function() {
1062
- if (!isActive) return;
1063
1366
  setSocketConnected(true);
1064
1367
  socketStarted.current = false;
1065
1368
  subscribe();
1066
1369
  });
1067
1370
  var offDisconnect = socketServiceInstance.onDisconnect(function() {
1068
- if (!isActive) return;
1069
1371
  setSocketConnected(false);
1372
+ cleanupSubscriptions.forEach(function(cleanup) {
1373
+ return cleanup();
1374
+ });
1070
1375
  });
1071
1376
  if (settings === null || settings === void 0 ? void 0 : settings.cleanupForConfigChange) {
1072
1377
  return function() {
1073
- isActive = false;
1074
- clearSubs();
1075
- offConnect();
1076
- offDisconnect();
1378
+ cleanupSubscriptions.forEach(function(cleanup) {
1379
+ return cleanup();
1380
+ });
1077
1381
  if (!(settings === null || settings === void 0 ? void 0 : settings.disableLogs) && configs.length > 0) {
1078
1382
  console.log("==> ".concat(label || "Cache snapshots", " unsubscribed. "));
1079
1383
  }
@@ -1084,21 +1388,10 @@ var useSocketSnapshots = function(configs, label, settings) {
1084
1388
  (_auth_currentUser = auth.currentUser) === null || _auth_currentUser === void 0 ? void 0 : _auth_currentUser.uid
1085
1389
  ]);
1086
1390
  useEffect4(function() {
1087
- var _auth_onIdTokenChanged;
1088
- var unsubscribeAuth = (_auth_onIdTokenChanged = auth.onIdTokenChanged) === null || _auth_onIdTokenChanged === void 0 ? void 0 : _auth_onIdTokenChanged.call(auth, function(user) {
1089
- if (!user) return;
1090
- user.getIdToken().then(function(token) {
1091
- return socketServiceInstance.setAuthToken(token);
1092
- }).catch(function() {});
1093
- });
1094
1391
  return function() {
1095
- cleanupSubscriptionsRef.current.forEach(function(cleanup) {
1392
+ cleanupSubscriptions.forEach(function(cleanup) {
1096
1393
  return cleanup();
1097
1394
  });
1098
- cleanupSubscriptionsRef.current = [];
1099
- if (typeof unsubscribeAuth === "function") {
1100
- unsubscribeAuth();
1101
- }
1102
1395
  if (!(settings === null || settings === void 0 ? void 0 : settings.disableLogs) && configs.length > 0) {
1103
1396
  console.log("==> ".concat(label || "Cache snapshots", " unsubscribed. "));
1104
1397
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "akeyless-client-commons",
3
- "version": "1.1.33",
3
+ "version": "1.1.35",
4
4
  "scripts": {
5
5
  "build": "tsup",
6
6
  "deploy": "npm run build && npm version patch --no-git-tag-version && npm publish",