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.
- package/dist/hooks/index.d.mts +13 -11
- package/dist/hooks/index.d.ts +13 -11
- package/dist/hooks/index.js +167 -175
- package/dist/hooks/index.mjs +168 -176
- package/package.json +1 -1
package/dist/hooks/index.d.mts
CHANGED
|
@@ -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
|
-
|
|
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 };
|
package/dist/hooks/index.d.ts
CHANGED
|
@@ -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
|
-
|
|
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 };
|
package/dist/hooks/index.js
CHANGED
|
@@ -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
|
|
75
|
-
if (typeof Symbol !== "undefined" &&
|
|
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 (
|
|
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
|
-
|
|
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(
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
|
1193
|
-
|
|
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
|
|
1404
|
+
var cleanupSubscriptionsRef = (0, import_react5.useRef)([]);
|
|
1354
1405
|
var socketStarted = (0, import_react5.useRef)(false);
|
|
1355
|
-
var
|
|
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
|
|
1362
|
-
|
|
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
|
-
|
|
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
|
-
|
|
1467
|
-
return cleanup();
|
|
1468
|
-
});
|
|
1461
|
+
clearSubscriptions();
|
|
1469
1462
|
});
|
|
1470
|
-
|
|
1471
|
-
|
|
1472
|
-
|
|
1473
|
-
|
|
1474
|
-
|
|
1475
|
-
|
|
1476
|
-
|
|
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
|
-
|
|
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
|
}
|
package/dist/hooks/index.mjs
CHANGED
|
@@ -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
|
|
75
|
-
if (typeof Symbol !== "undefined" &&
|
|
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 (
|
|
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
|
-
|
|
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(
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
|
1099
|
-
|
|
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
|
|
1310
|
+
var cleanupSubscriptionsRef = useRef4([]);
|
|
1260
1311
|
var socketStarted = useRef4(false);
|
|
1261
|
-
var
|
|
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
|
|
1268
|
-
|
|
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
|
-
|
|
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
|
-
|
|
1373
|
-
return cleanup();
|
|
1374
|
-
});
|
|
1367
|
+
clearSubscriptions();
|
|
1375
1368
|
});
|
|
1376
|
-
|
|
1377
|
-
|
|
1378
|
-
|
|
1379
|
-
|
|
1380
|
-
|
|
1381
|
-
|
|
1382
|
-
|
|
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
|
-
|
|
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
|
}
|