@rpcbase/client 0.339.0 → 0.341.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +308 -179
- package/dist/initWithRoutes.d.ts.map +1 -1
- package/dist/notificationsRealtime.d.ts +18 -0
- package/dist/notificationsRealtime.d.ts.map +1 -0
- package/dist/{rts.d.ts → rts/index.d.ts} +4 -4
- package/dist/rts/index.d.ts.map +1 -0
- package/dist/rts/index.js +20 -0
- package/dist/{rts.js → useQuery-5oC6VOlA.js} +17 -17
- package/package.json +6 -5
- package/dist/navigationGuard/installGlobalNavigationGuard.test.d.ts +0 -2
- package/dist/navigationGuard/installGlobalNavigationGuard.test.d.ts.map +0 -1
- package/dist/rts/wsClient.sync.test.d.ts +0 -2
- package/dist/rts/wsClient.sync.test.d.ts.map +0 -1
- package/dist/rts.d.ts.map +0 -1
package/dist/index.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
export { toast } from 'sonner';
|
|
1
2
|
export * from './apiClient';
|
|
2
3
|
export * from './initWithRoutes';
|
|
3
4
|
export * from './types';
|
|
@@ -8,5 +9,5 @@ export * from './ssrErrorState';
|
|
|
8
9
|
export * from './components/SsrErrorFallback';
|
|
9
10
|
export * from './components/RouteErrorBoundary';
|
|
10
11
|
export * from './notifications';
|
|
11
|
-
export
|
|
12
|
+
export * from './notificationsRealtime';
|
|
12
13
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,kBAAkB,CAAA;AAChC,cAAc,SAAS,CAAA;AACvB,cAAc,kBAAkB,CAAA;AAChC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,SAAS,CAAA;AACvB,cAAc,iBAAiB,CAAA;AAC/B,cAAc,+BAA+B,CAAA;AAC7C,cAAc,iCAAiC,CAAA;AAC/C,cAAc,iBAAiB,CAAA;AAC/B,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAA;AAE9B,cAAc,aAAa,CAAA;AAC3B,cAAc,kBAAkB,CAAA;AAChC,cAAc,SAAS,CAAA;AACvB,cAAc,kBAAkB,CAAA;AAChC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,SAAS,CAAA;AACvB,cAAc,iBAAiB,CAAA;AAC/B,cAAc,+BAA+B,CAAA;AAC7C,cAAc,iCAAiC,CAAA;AAC/C,cAAc,iBAAiB,CAAA;AAC/B,cAAc,yBAAyB,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
|
+
import { Toaster, toast } from "sonner";
|
|
2
|
+
import { toast as toast2 } from "sonner";
|
|
1
3
|
import env from "@rpcbase/env";
|
|
2
4
|
import { jsx, jsxs, Fragment } from "react/jsx-runtime";
|
|
3
|
-
import { StrictMode, useState, useEffect, useRef, useCallback, useLayoutEffect, useSyncExternalStore } from "react";
|
|
5
|
+
import { StrictMode, useState, useEffect, useRef, useCallback, useLayoutEffect, useSyncExternalStore, createContext, useMemo, useContext } from "react";
|
|
4
6
|
import posthog from "posthog-js";
|
|
5
7
|
import { getNavigationGuards, createRoutesFromElements, createBrowserRouter, RouterProvider, useLocation, useRouteError, isRouteErrorResponse } from "@rpcbase/router";
|
|
6
8
|
import { hydrateRoot } from "react-dom/client";
|
|
7
|
-
import { Toaster } from "sonner";
|
|
8
|
-
import { toast } from "sonner";
|
|
9
9
|
import { PostHogProvider } from "posthog-js/react/dist/esm/index.js";
|
|
10
|
+
import { m as useQuery } from "./useQuery-5oC6VOlA.js";
|
|
10
11
|
let apiClient;
|
|
11
12
|
const initApiClient = async (args) => {
|
|
12
13
|
if (env.SSR) {
|
|
@@ -408,6 +409,13 @@ const initWithRoutes = async (routesElement, opts) => {
|
|
|
408
409
|
hydrationOptions
|
|
409
410
|
);
|
|
410
411
|
};
|
|
412
|
+
if (!isProduction && !env.SSR) {
|
|
413
|
+
import("react-grab/core").then(({ init }) => {
|
|
414
|
+
init({
|
|
415
|
+
// theme: { hue: 350 }
|
|
416
|
+
});
|
|
417
|
+
});
|
|
418
|
+
}
|
|
411
419
|
var commonjsGlobal = typeof globalThis !== "undefined" ? globalThis : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : {};
|
|
412
420
|
function getDefaultExportFromCjs(x) {
|
|
413
421
|
return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, "default") ? x["default"] : x;
|
|
@@ -673,8 +681,8 @@ function require_Symbol() {
|
|
|
673
681
|
if (hasRequired_Symbol) return _Symbol;
|
|
674
682
|
hasRequired_Symbol = 1;
|
|
675
683
|
var root = require_root();
|
|
676
|
-
var
|
|
677
|
-
_Symbol =
|
|
684
|
+
var Symbol = root.Symbol;
|
|
685
|
+
_Symbol = Symbol;
|
|
678
686
|
return _Symbol;
|
|
679
687
|
}
|
|
680
688
|
var _arrayMap;
|
|
@@ -697,8 +705,8 @@ var hasRequiredIsArray;
|
|
|
697
705
|
function requireIsArray() {
|
|
698
706
|
if (hasRequiredIsArray) return isArray_1;
|
|
699
707
|
hasRequiredIsArray = 1;
|
|
700
|
-
var
|
|
701
|
-
isArray_1 =
|
|
708
|
+
var isArray = Array.isArray;
|
|
709
|
+
isArray_1 = isArray;
|
|
702
710
|
return isArray_1;
|
|
703
711
|
}
|
|
704
712
|
var _getRawTag;
|
|
@@ -706,11 +714,11 @@ var hasRequired_getRawTag;
|
|
|
706
714
|
function require_getRawTag() {
|
|
707
715
|
if (hasRequired_getRawTag) return _getRawTag;
|
|
708
716
|
hasRequired_getRawTag = 1;
|
|
709
|
-
var
|
|
717
|
+
var Symbol = require_Symbol();
|
|
710
718
|
var objectProto = Object.prototype;
|
|
711
719
|
var hasOwnProperty2 = objectProto.hasOwnProperty;
|
|
712
720
|
var nativeObjectToString = objectProto.toString;
|
|
713
|
-
var symToStringTag =
|
|
721
|
+
var symToStringTag = Symbol ? Symbol.toStringTag : void 0;
|
|
714
722
|
function getRawTag(value) {
|
|
715
723
|
var isOwn = hasOwnProperty2.call(value, symToStringTag), tag = value[symToStringTag];
|
|
716
724
|
try {
|
|
@@ -749,9 +757,9 @@ var hasRequired_baseGetTag;
|
|
|
749
757
|
function require_baseGetTag() {
|
|
750
758
|
if (hasRequired_baseGetTag) return _baseGetTag;
|
|
751
759
|
hasRequired_baseGetTag = 1;
|
|
752
|
-
var
|
|
760
|
+
var Symbol = require_Symbol(), getRawTag = require_getRawTag(), objectToString = require_objectToString();
|
|
753
761
|
var nullTag = "[object Null]", undefinedTag = "[object Undefined]";
|
|
754
|
-
var symToStringTag =
|
|
762
|
+
var symToStringTag = Symbol ? Symbol.toStringTag : void 0;
|
|
755
763
|
function baseGetTag(value) {
|
|
756
764
|
if (value == null) {
|
|
757
765
|
return value === void 0 ? undefinedTag : nullTag;
|
|
@@ -790,13 +798,13 @@ var hasRequired_baseToString;
|
|
|
790
798
|
function require_baseToString() {
|
|
791
799
|
if (hasRequired_baseToString) return _baseToString;
|
|
792
800
|
hasRequired_baseToString = 1;
|
|
793
|
-
var
|
|
794
|
-
var symbolProto =
|
|
801
|
+
var Symbol = require_Symbol(), arrayMap = require_arrayMap(), isArray = requireIsArray(), isSymbol = requireIsSymbol();
|
|
802
|
+
var symbolProto = Symbol ? Symbol.prototype : void 0, symbolToString = symbolProto ? symbolProto.toString : void 0;
|
|
795
803
|
function baseToString(value) {
|
|
796
804
|
if (typeof value == "string") {
|
|
797
805
|
return value;
|
|
798
806
|
}
|
|
799
|
-
if (
|
|
807
|
+
if (isArray(value)) {
|
|
800
808
|
return arrayMap(value, baseToString) + "";
|
|
801
809
|
}
|
|
802
810
|
if (isSymbol(value)) {
|
|
@@ -814,10 +822,10 @@ function requireToString() {
|
|
|
814
822
|
if (hasRequiredToString) return toString_1;
|
|
815
823
|
hasRequiredToString = 1;
|
|
816
824
|
var baseToString = require_baseToString();
|
|
817
|
-
function
|
|
825
|
+
function toString2(value) {
|
|
818
826
|
return value == null ? "" : baseToString(value);
|
|
819
827
|
}
|
|
820
|
-
toString_1 =
|
|
828
|
+
toString_1 = toString2;
|
|
821
829
|
return toString_1;
|
|
822
830
|
}
|
|
823
831
|
var deburr_1;
|
|
@@ -825,13 +833,13 @@ var hasRequiredDeburr;
|
|
|
825
833
|
function requireDeburr() {
|
|
826
834
|
if (hasRequiredDeburr) return deburr_1;
|
|
827
835
|
hasRequiredDeburr = 1;
|
|
828
|
-
var deburrLetter = require_deburrLetter(),
|
|
836
|
+
var deburrLetter = require_deburrLetter(), toString2 = requireToString();
|
|
829
837
|
var reLatin = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g;
|
|
830
838
|
var rsComboMarksRange = "\\u0300-\\u036f", reComboHalfMarksRange = "\\ufe20-\\ufe2f", rsComboSymbolsRange = "\\u20d0-\\u20ff", rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange;
|
|
831
839
|
var rsCombo = "[" + rsComboRange + "]";
|
|
832
840
|
var reComboMark = RegExp(rsCombo, "g");
|
|
833
841
|
function deburr(string) {
|
|
834
|
-
string =
|
|
842
|
+
string = toString2(string);
|
|
835
843
|
return string && string.replace(reLatin, deburrLetter).replace(reComboMark, "");
|
|
836
844
|
}
|
|
837
845
|
deburr_1 = deburr;
|
|
@@ -890,9 +898,9 @@ var hasRequiredWords;
|
|
|
890
898
|
function requireWords() {
|
|
891
899
|
if (hasRequiredWords) return words_1;
|
|
892
900
|
hasRequiredWords = 1;
|
|
893
|
-
var asciiWords = require_asciiWords(), hasUnicodeWord = require_hasUnicodeWord(),
|
|
901
|
+
var asciiWords = require_asciiWords(), hasUnicodeWord = require_hasUnicodeWord(), toString2 = requireToString(), unicodeWords = require_unicodeWords();
|
|
894
902
|
function words(string, pattern, guard) {
|
|
895
|
-
string =
|
|
903
|
+
string = toString2(string);
|
|
896
904
|
pattern = guard ? void 0 : pattern;
|
|
897
905
|
if (pattern === void 0) {
|
|
898
906
|
return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);
|
|
@@ -1317,8 +1325,8 @@ function requireThrottle() {
|
|
|
1317
1325
|
}
|
|
1318
1326
|
var throttleExports = requireThrottle();
|
|
1319
1327
|
const _throttle = /* @__PURE__ */ getDefaultExportFromCjs(throttleExports);
|
|
1320
|
-
|
|
1321
|
-
|
|
1328
|
+
const { getOwnPropertyNames, getOwnPropertySymbols } = Object;
|
|
1329
|
+
const { hasOwnProperty } = Object.prototype;
|
|
1322
1330
|
function combineComparators(comparatorA, comparatorB) {
|
|
1323
1331
|
return function isEqual(a, b, state) {
|
|
1324
1332
|
return comparatorA(a, b, state) && comparatorB(a, b, state);
|
|
@@ -1329,41 +1337,45 @@ function createIsCircular(areItemsEqual) {
|
|
|
1329
1337
|
if (!a || !b || typeof a !== "object" || typeof b !== "object") {
|
|
1330
1338
|
return areItemsEqual(a, b, state);
|
|
1331
1339
|
}
|
|
1332
|
-
|
|
1333
|
-
|
|
1334
|
-
|
|
1340
|
+
const { cache } = state;
|
|
1341
|
+
const cachedA = cache.get(a);
|
|
1342
|
+
const cachedB = cache.get(b);
|
|
1335
1343
|
if (cachedA && cachedB) {
|
|
1336
1344
|
return cachedA === b && cachedB === a;
|
|
1337
1345
|
}
|
|
1338
1346
|
cache.set(a, b);
|
|
1339
1347
|
cache.set(b, a);
|
|
1340
|
-
|
|
1348
|
+
const result = areItemsEqual(a, b, state);
|
|
1341
1349
|
cache.delete(a);
|
|
1342
1350
|
cache.delete(b);
|
|
1343
1351
|
return result;
|
|
1344
1352
|
};
|
|
1345
1353
|
}
|
|
1346
|
-
function getShortTag(value) {
|
|
1347
|
-
return value != null ? value[Symbol.toStringTag] : void 0;
|
|
1348
|
-
}
|
|
1349
1354
|
function getStrictProperties(object) {
|
|
1350
1355
|
return getOwnPropertyNames(object).concat(getOwnPropertySymbols(object));
|
|
1351
1356
|
}
|
|
1352
|
-
|
|
1357
|
+
const hasOwn = (
|
|
1353
1358
|
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
1354
|
-
Object.hasOwn || (
|
|
1355
|
-
|
|
1356
|
-
|
|
1359
|
+
Object.hasOwn || ((object, property) => hasOwnProperty.call(object, property))
|
|
1360
|
+
);
|
|
1361
|
+
const PREACT_VNODE = "__v";
|
|
1362
|
+
const PREACT_OWNER = "__o";
|
|
1363
|
+
const REACT_OWNER = "_owner";
|
|
1364
|
+
const { getOwnPropertyDescriptor, keys } = Object;
|
|
1365
|
+
const sameValueEqual = (
|
|
1366
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
1367
|
+
Object.is || function sameValueEqual2(a, b) {
|
|
1368
|
+
return a === b ? a !== 0 || 1 / a === 1 / b : a !== a && b !== b;
|
|
1369
|
+
}
|
|
1357
1370
|
);
|
|
1358
|
-
function
|
|
1359
|
-
return a === b
|
|
1371
|
+
function strictEqual(a, b) {
|
|
1372
|
+
return a === b;
|
|
1373
|
+
}
|
|
1374
|
+
function areArrayBuffersEqual(a, b) {
|
|
1375
|
+
return a.byteLength === b.byteLength && areTypedArraysEqual(new Uint8Array(a), new Uint8Array(b));
|
|
1360
1376
|
}
|
|
1361
|
-
var PREACT_VNODE = "__v";
|
|
1362
|
-
var PREACT_OWNER = "__o";
|
|
1363
|
-
var REACT_OWNER = "_owner";
|
|
1364
|
-
var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor, keys = Object.keys;
|
|
1365
1377
|
function areArraysEqual(a, b, state) {
|
|
1366
|
-
|
|
1378
|
+
let index = a.length;
|
|
1367
1379
|
if (b.length !== index) {
|
|
1368
1380
|
return false;
|
|
1369
1381
|
}
|
|
@@ -1374,35 +1386,35 @@ function areArraysEqual(a, b, state) {
|
|
|
1374
1386
|
}
|
|
1375
1387
|
return true;
|
|
1376
1388
|
}
|
|
1389
|
+
function areDataViewsEqual(a, b) {
|
|
1390
|
+
return a.byteLength === b.byteLength && areTypedArraysEqual(new Uint8Array(a.buffer, a.byteOffset, a.byteLength), new Uint8Array(b.buffer, b.byteOffset, b.byteLength));
|
|
1391
|
+
}
|
|
1377
1392
|
function areDatesEqual(a, b) {
|
|
1378
|
-
return
|
|
1393
|
+
return sameValueEqual(a.getTime(), b.getTime());
|
|
1379
1394
|
}
|
|
1380
1395
|
function areErrorsEqual(a, b) {
|
|
1381
1396
|
return a.name === b.name && a.message === b.message && a.cause === b.cause && a.stack === b.stack;
|
|
1382
1397
|
}
|
|
1383
|
-
function areFunctionsEqual(a, b) {
|
|
1384
|
-
return a === b;
|
|
1385
|
-
}
|
|
1386
1398
|
function areMapsEqual(a, b, state) {
|
|
1387
|
-
|
|
1399
|
+
const size = a.size;
|
|
1388
1400
|
if (size !== b.size) {
|
|
1389
1401
|
return false;
|
|
1390
1402
|
}
|
|
1391
1403
|
if (!size) {
|
|
1392
1404
|
return true;
|
|
1393
1405
|
}
|
|
1394
|
-
|
|
1395
|
-
|
|
1396
|
-
|
|
1397
|
-
|
|
1398
|
-
|
|
1406
|
+
const matchedIndices = new Array(size);
|
|
1407
|
+
const aIterable = a.entries();
|
|
1408
|
+
let aResult;
|
|
1409
|
+
let bResult;
|
|
1410
|
+
let index = 0;
|
|
1399
1411
|
while (aResult = aIterable.next()) {
|
|
1400
1412
|
if (aResult.done) {
|
|
1401
1413
|
break;
|
|
1402
1414
|
}
|
|
1403
|
-
|
|
1404
|
-
|
|
1405
|
-
|
|
1415
|
+
const bIterable = b.entries();
|
|
1416
|
+
let hasMatch = false;
|
|
1417
|
+
let matchIndex = 0;
|
|
1406
1418
|
while (bResult = bIterable.next()) {
|
|
1407
1419
|
if (bResult.done) {
|
|
1408
1420
|
break;
|
|
@@ -1411,8 +1423,8 @@ function areMapsEqual(a, b, state) {
|
|
|
1411
1423
|
matchIndex++;
|
|
1412
1424
|
continue;
|
|
1413
1425
|
}
|
|
1414
|
-
|
|
1415
|
-
|
|
1426
|
+
const aEntry = aResult.value;
|
|
1427
|
+
const bEntry = bResult.value;
|
|
1416
1428
|
if (state.equals(aEntry[0], bEntry[0], index, matchIndex, a, b, state) && state.equals(aEntry[1], bEntry[1], aEntry[0], bEntry[0], a, b, state)) {
|
|
1417
1429
|
hasMatch = matchedIndices[matchIndex] = true;
|
|
1418
1430
|
break;
|
|
@@ -1426,10 +1438,9 @@ function areMapsEqual(a, b, state) {
|
|
|
1426
1438
|
}
|
|
1427
1439
|
return true;
|
|
1428
1440
|
}
|
|
1429
|
-
var areNumbersEqual = sameValueZeroEqual;
|
|
1430
1441
|
function areObjectsEqual(a, b, state) {
|
|
1431
|
-
|
|
1432
|
-
|
|
1442
|
+
const properties = keys(a);
|
|
1443
|
+
let index = properties.length;
|
|
1433
1444
|
if (keys(b).length !== index) {
|
|
1434
1445
|
return false;
|
|
1435
1446
|
}
|
|
@@ -1441,14 +1452,14 @@ function areObjectsEqual(a, b, state) {
|
|
|
1441
1452
|
return true;
|
|
1442
1453
|
}
|
|
1443
1454
|
function areObjectsEqualStrict(a, b, state) {
|
|
1444
|
-
|
|
1445
|
-
|
|
1455
|
+
const properties = getStrictProperties(a);
|
|
1456
|
+
let index = properties.length;
|
|
1446
1457
|
if (getStrictProperties(b).length !== index) {
|
|
1447
1458
|
return false;
|
|
1448
1459
|
}
|
|
1449
|
-
|
|
1450
|
-
|
|
1451
|
-
|
|
1460
|
+
let property;
|
|
1461
|
+
let descriptorA;
|
|
1462
|
+
let descriptorB;
|
|
1452
1463
|
while (index-- > 0) {
|
|
1453
1464
|
property = properties[index];
|
|
1454
1465
|
if (!isPropertyEqual(a, b, state, property)) {
|
|
@@ -1463,30 +1474,30 @@ function areObjectsEqualStrict(a, b, state) {
|
|
|
1463
1474
|
return true;
|
|
1464
1475
|
}
|
|
1465
1476
|
function arePrimitiveWrappersEqual(a, b) {
|
|
1466
|
-
return
|
|
1477
|
+
return sameValueEqual(a.valueOf(), b.valueOf());
|
|
1467
1478
|
}
|
|
1468
1479
|
function areRegExpsEqual(a, b) {
|
|
1469
1480
|
return a.source === b.source && a.flags === b.flags;
|
|
1470
1481
|
}
|
|
1471
1482
|
function areSetsEqual(a, b, state) {
|
|
1472
|
-
|
|
1483
|
+
const size = a.size;
|
|
1473
1484
|
if (size !== b.size) {
|
|
1474
1485
|
return false;
|
|
1475
1486
|
}
|
|
1476
1487
|
if (!size) {
|
|
1477
1488
|
return true;
|
|
1478
1489
|
}
|
|
1479
|
-
|
|
1480
|
-
|
|
1481
|
-
|
|
1482
|
-
|
|
1490
|
+
const matchedIndices = new Array(size);
|
|
1491
|
+
const aIterable = a.values();
|
|
1492
|
+
let aResult;
|
|
1493
|
+
let bResult;
|
|
1483
1494
|
while (aResult = aIterable.next()) {
|
|
1484
1495
|
if (aResult.done) {
|
|
1485
1496
|
break;
|
|
1486
1497
|
}
|
|
1487
|
-
|
|
1488
|
-
|
|
1489
|
-
|
|
1498
|
+
const bIterable = b.values();
|
|
1499
|
+
let hasMatch = false;
|
|
1500
|
+
let matchIndex = 0;
|
|
1490
1501
|
while (bResult = bIterable.next()) {
|
|
1491
1502
|
if (bResult.done) {
|
|
1492
1503
|
break;
|
|
@@ -1504,8 +1515,8 @@ function areSetsEqual(a, b, state) {
|
|
|
1504
1515
|
return true;
|
|
1505
1516
|
}
|
|
1506
1517
|
function areTypedArraysEqual(a, b) {
|
|
1507
|
-
|
|
1508
|
-
if (b.
|
|
1518
|
+
let index = a.byteLength;
|
|
1519
|
+
if (b.byteLength !== index || a.byteOffset !== b.byteOffset) {
|
|
1509
1520
|
return false;
|
|
1510
1521
|
}
|
|
1511
1522
|
while (index-- > 0) {
|
|
@@ -1524,23 +1535,10 @@ function isPropertyEqual(a, b, state, property) {
|
|
|
1524
1535
|
}
|
|
1525
1536
|
return hasOwn(b, property) && state.equals(a[property], b[property], property, property, a, b, state);
|
|
1526
1537
|
}
|
|
1527
|
-
|
|
1528
|
-
|
|
1529
|
-
|
|
1530
|
-
|
|
1531
|
-
var MAP_TAG = "[object Map]";
|
|
1532
|
-
var NUMBER_TAG = "[object Number]";
|
|
1533
|
-
var OBJECT_TAG = "[object Object]";
|
|
1534
|
-
var REG_EXP_TAG = "[object RegExp]";
|
|
1535
|
-
var SET_TAG = "[object Set]";
|
|
1536
|
-
var STRING_TAG = "[object String]";
|
|
1537
|
-
var URL_TAG = "[object URL]";
|
|
1538
|
-
var isArray = Array.isArray;
|
|
1539
|
-
var isTypedArray = typeof ArrayBuffer !== "undefined" && typeof ArrayBuffer.isView === "function" ? ArrayBuffer.isView : null;
|
|
1540
|
-
var assign = Object.assign;
|
|
1541
|
-
var getTag = Object.prototype.toString.call.bind(Object.prototype.toString);
|
|
1542
|
-
function createEqualityComparator(_a) {
|
|
1543
|
-
var areArraysEqual2 = _a.areArraysEqual, areDatesEqual2 = _a.areDatesEqual, areErrorsEqual2 = _a.areErrorsEqual, areFunctionsEqual2 = _a.areFunctionsEqual, areMapsEqual2 = _a.areMapsEqual, areNumbersEqual2 = _a.areNumbersEqual, areObjectsEqual2 = _a.areObjectsEqual, arePrimitiveWrappersEqual2 = _a.arePrimitiveWrappersEqual, areRegExpsEqual2 = _a.areRegExpsEqual, areSetsEqual2 = _a.areSetsEqual, areTypedArraysEqual2 = _a.areTypedArraysEqual, areUrlsEqual2 = _a.areUrlsEqual, unknownTagComparators = _a.unknownTagComparators;
|
|
1538
|
+
const toString = Object.prototype.toString;
|
|
1539
|
+
function createEqualityComparator(config) {
|
|
1540
|
+
const supportedComparatorMap = createSupportedComparatorMap(config);
|
|
1541
|
+
const { areArraysEqual: areArraysEqual2, areDatesEqual: areDatesEqual2, areFunctionsEqual, areMapsEqual: areMapsEqual2, areNumbersEqual, areObjectsEqual: areObjectsEqual2, areRegExpsEqual: areRegExpsEqual2, areSetsEqual: areSetsEqual2, getUnsupportedCustomComparator } = config;
|
|
1544
1542
|
return function comparator(a, b, state) {
|
|
1545
1543
|
if (a === b) {
|
|
1546
1544
|
return true;
|
|
@@ -1548,32 +1546,29 @@ function createEqualityComparator(_a) {
|
|
|
1548
1546
|
if (a == null || b == null) {
|
|
1549
1547
|
return false;
|
|
1550
1548
|
}
|
|
1551
|
-
|
|
1549
|
+
const type = typeof a;
|
|
1552
1550
|
if (type !== typeof b) {
|
|
1553
1551
|
return false;
|
|
1554
1552
|
}
|
|
1555
1553
|
if (type !== "object") {
|
|
1556
|
-
if (type === "number") {
|
|
1557
|
-
return
|
|
1554
|
+
if (type === "number" || type === "bigint") {
|
|
1555
|
+
return areNumbersEqual(a, b, state);
|
|
1558
1556
|
}
|
|
1559
1557
|
if (type === "function") {
|
|
1560
|
-
return
|
|
1558
|
+
return areFunctionsEqual(a, b, state);
|
|
1561
1559
|
}
|
|
1562
1560
|
return false;
|
|
1563
1561
|
}
|
|
1564
|
-
|
|
1562
|
+
const constructor = a.constructor;
|
|
1565
1563
|
if (constructor !== b.constructor) {
|
|
1566
1564
|
return false;
|
|
1567
1565
|
}
|
|
1568
1566
|
if (constructor === Object) {
|
|
1569
1567
|
return areObjectsEqual2(a, b, state);
|
|
1570
1568
|
}
|
|
1571
|
-
if (
|
|
1569
|
+
if (constructor === Array) {
|
|
1572
1570
|
return areArraysEqual2(a, b, state);
|
|
1573
1571
|
}
|
|
1574
|
-
if (isTypedArray != null && isTypedArray(a)) {
|
|
1575
|
-
return areTypedArraysEqual2(a, b, state);
|
|
1576
|
-
}
|
|
1577
1572
|
if (constructor === Date) {
|
|
1578
1573
|
return areDatesEqual2(a, b, state);
|
|
1579
1574
|
}
|
|
@@ -1586,79 +1581,55 @@ function createEqualityComparator(_a) {
|
|
|
1586
1581
|
if (constructor === Set) {
|
|
1587
1582
|
return areSetsEqual2(a, b, state);
|
|
1588
1583
|
}
|
|
1589
|
-
|
|
1590
|
-
|
|
1591
|
-
return areDatesEqual2(a, b, state);
|
|
1592
|
-
}
|
|
1593
|
-
if (tag === REG_EXP_TAG) {
|
|
1594
|
-
return areRegExpsEqual2(a, b, state);
|
|
1595
|
-
}
|
|
1596
|
-
if (tag === MAP_TAG) {
|
|
1597
|
-
return areMapsEqual2(a, b, state);
|
|
1598
|
-
}
|
|
1599
|
-
if (tag === SET_TAG) {
|
|
1600
|
-
return areSetsEqual2(a, b, state);
|
|
1601
|
-
}
|
|
1602
|
-
if (tag === OBJECT_TAG) {
|
|
1603
|
-
return typeof a.then !== "function" && typeof b.then !== "function" && areObjectsEqual2(a, b, state);
|
|
1604
|
-
}
|
|
1605
|
-
if (tag === URL_TAG) {
|
|
1606
|
-
return areUrlsEqual2(a, b, state);
|
|
1607
|
-
}
|
|
1608
|
-
if (tag === ERROR_TAG) {
|
|
1609
|
-
return areErrorsEqual2(a, b, state);
|
|
1584
|
+
if (constructor === Promise) {
|
|
1585
|
+
return false;
|
|
1610
1586
|
}
|
|
1611
|
-
if (
|
|
1612
|
-
return
|
|
1587
|
+
if (Array.isArray(a)) {
|
|
1588
|
+
return areArraysEqual2(a, b, state);
|
|
1613
1589
|
}
|
|
1614
|
-
|
|
1615
|
-
|
|
1590
|
+
const tag = toString.call(a);
|
|
1591
|
+
const supportedComparator = supportedComparatorMap[tag];
|
|
1592
|
+
if (supportedComparator) {
|
|
1593
|
+
return supportedComparator(a, b, state);
|
|
1616
1594
|
}
|
|
1617
|
-
|
|
1618
|
-
|
|
1619
|
-
|
|
1620
|
-
var shortTag = getShortTag(a);
|
|
1621
|
-
if (shortTag) {
|
|
1622
|
-
unknownTagComparator = unknownTagComparators[shortTag];
|
|
1623
|
-
}
|
|
1624
|
-
}
|
|
1625
|
-
if (unknownTagComparator) {
|
|
1626
|
-
return unknownTagComparator(a, b, state);
|
|
1627
|
-
}
|
|
1595
|
+
const unsupportedCustomComparator = getUnsupportedCustomComparator && getUnsupportedCustomComparator(a, b, state, tag);
|
|
1596
|
+
if (unsupportedCustomComparator) {
|
|
1597
|
+
return unsupportedCustomComparator(a, b, state);
|
|
1628
1598
|
}
|
|
1629
1599
|
return false;
|
|
1630
1600
|
};
|
|
1631
1601
|
}
|
|
1632
|
-
function createEqualityComparatorConfig(
|
|
1633
|
-
|
|
1634
|
-
|
|
1602
|
+
function createEqualityComparatorConfig({ circular, createCustomConfig, strict }) {
|
|
1603
|
+
let config = {
|
|
1604
|
+
areArrayBuffersEqual,
|
|
1635
1605
|
areArraysEqual: strict ? areObjectsEqualStrict : areArraysEqual,
|
|
1606
|
+
areDataViewsEqual,
|
|
1636
1607
|
areDatesEqual,
|
|
1637
1608
|
areErrorsEqual,
|
|
1638
|
-
areFunctionsEqual,
|
|
1609
|
+
areFunctionsEqual: strictEqual,
|
|
1639
1610
|
areMapsEqual: strict ? combineComparators(areMapsEqual, areObjectsEqualStrict) : areMapsEqual,
|
|
1640
|
-
areNumbersEqual,
|
|
1611
|
+
areNumbersEqual: sameValueEqual,
|
|
1641
1612
|
areObjectsEqual: strict ? areObjectsEqualStrict : areObjectsEqual,
|
|
1642
1613
|
arePrimitiveWrappersEqual,
|
|
1643
1614
|
areRegExpsEqual,
|
|
1644
1615
|
areSetsEqual: strict ? combineComparators(areSetsEqual, areObjectsEqualStrict) : areSetsEqual,
|
|
1645
|
-
areTypedArraysEqual: strict ? areObjectsEqualStrict : areTypedArraysEqual,
|
|
1616
|
+
areTypedArraysEqual: strict ? combineComparators(areTypedArraysEqual, areObjectsEqualStrict) : areTypedArraysEqual,
|
|
1646
1617
|
areUrlsEqual,
|
|
1647
|
-
|
|
1618
|
+
getUnsupportedCustomComparator: void 0
|
|
1648
1619
|
};
|
|
1649
1620
|
if (createCustomConfig) {
|
|
1650
|
-
config = assign({}, config, createCustomConfig(config));
|
|
1621
|
+
config = Object.assign({}, config, createCustomConfig(config));
|
|
1651
1622
|
}
|
|
1652
1623
|
if (circular) {
|
|
1653
|
-
|
|
1654
|
-
|
|
1655
|
-
|
|
1656
|
-
|
|
1657
|
-
config = assign({}, config, {
|
|
1658
|
-
areArraysEqual:
|
|
1659
|
-
areMapsEqual:
|
|
1660
|
-
areObjectsEqual:
|
|
1661
|
-
areSetsEqual:
|
|
1624
|
+
const areArraysEqual2 = createIsCircular(config.areArraysEqual);
|
|
1625
|
+
const areMapsEqual2 = createIsCircular(config.areMapsEqual);
|
|
1626
|
+
const areObjectsEqual2 = createIsCircular(config.areObjectsEqual);
|
|
1627
|
+
const areSetsEqual2 = createIsCircular(config.areSetsEqual);
|
|
1628
|
+
config = Object.assign({}, config, {
|
|
1629
|
+
areArraysEqual: areArraysEqual2,
|
|
1630
|
+
areMapsEqual: areMapsEqual2,
|
|
1631
|
+
areObjectsEqual: areObjectsEqual2,
|
|
1632
|
+
areSetsEqual: areSetsEqual2
|
|
1662
1633
|
});
|
|
1663
1634
|
}
|
|
1664
1635
|
return config;
|
|
@@ -1668,11 +1639,10 @@ function createInternalEqualityComparator(compare) {
|
|
|
1668
1639
|
return compare(a, b, state);
|
|
1669
1640
|
};
|
|
1670
1641
|
}
|
|
1671
|
-
function createIsEqual(
|
|
1672
|
-
var circular = _a.circular, comparator = _a.comparator, createState = _a.createState, equals = _a.equals, strict = _a.strict;
|
|
1642
|
+
function createIsEqual({ circular, comparator, createState, equals, strict }) {
|
|
1673
1643
|
if (createState) {
|
|
1674
1644
|
return function isEqual(a, b) {
|
|
1675
|
-
|
|
1645
|
+
const { cache = circular ? /* @__PURE__ */ new WeakMap() : void 0, meta } = createState();
|
|
1676
1646
|
return comparator(a, b, {
|
|
1677
1647
|
cache,
|
|
1678
1648
|
equals,
|
|
@@ -1691,7 +1661,7 @@ function createIsEqual(_a) {
|
|
|
1691
1661
|
});
|
|
1692
1662
|
};
|
|
1693
1663
|
}
|
|
1694
|
-
|
|
1664
|
+
const state = {
|
|
1695
1665
|
cache: void 0,
|
|
1696
1666
|
equals,
|
|
1697
1667
|
meta: void 0,
|
|
@@ -1701,7 +1671,50 @@ function createIsEqual(_a) {
|
|
|
1701
1671
|
return comparator(a, b, state);
|
|
1702
1672
|
};
|
|
1703
1673
|
}
|
|
1704
|
-
|
|
1674
|
+
function createSupportedComparatorMap({ areArrayBuffersEqual: areArrayBuffersEqual2, areArraysEqual: areArraysEqual2, areDataViewsEqual: areDataViewsEqual2, areDatesEqual: areDatesEqual2, areErrorsEqual: areErrorsEqual2, areFunctionsEqual, areMapsEqual: areMapsEqual2, areNumbersEqual, areObjectsEqual: areObjectsEqual2, arePrimitiveWrappersEqual: arePrimitiveWrappersEqual2, areRegExpsEqual: areRegExpsEqual2, areSetsEqual: areSetsEqual2, areTypedArraysEqual: areTypedArraysEqual2, areUrlsEqual: areUrlsEqual2 }) {
|
|
1675
|
+
return {
|
|
1676
|
+
"[object Arguments]": areObjectsEqual2,
|
|
1677
|
+
"[object Array]": areArraysEqual2,
|
|
1678
|
+
"[object ArrayBuffer]": areArrayBuffersEqual2,
|
|
1679
|
+
"[object AsyncGeneratorFunction]": areFunctionsEqual,
|
|
1680
|
+
"[object BigInt]": areNumbersEqual,
|
|
1681
|
+
"[object BigInt64Array]": areTypedArraysEqual2,
|
|
1682
|
+
"[object BigUint64Array]": areTypedArraysEqual2,
|
|
1683
|
+
"[object Boolean]": arePrimitiveWrappersEqual2,
|
|
1684
|
+
"[object DataView]": areDataViewsEqual2,
|
|
1685
|
+
"[object Date]": areDatesEqual2,
|
|
1686
|
+
// If an error tag, it should be tested explicitly. Like RegExp, the properties are not
|
|
1687
|
+
// enumerable, and therefore will give false positives if tested like a standard object.
|
|
1688
|
+
"[object Error]": areErrorsEqual2,
|
|
1689
|
+
"[object Float16Array]": areTypedArraysEqual2,
|
|
1690
|
+
"[object Float32Array]": areTypedArraysEqual2,
|
|
1691
|
+
"[object Float64Array]": areTypedArraysEqual2,
|
|
1692
|
+
"[object Function]": areFunctionsEqual,
|
|
1693
|
+
"[object GeneratorFunction]": areFunctionsEqual,
|
|
1694
|
+
"[object Int8Array]": areTypedArraysEqual2,
|
|
1695
|
+
"[object Int16Array]": areTypedArraysEqual2,
|
|
1696
|
+
"[object Int32Array]": areTypedArraysEqual2,
|
|
1697
|
+
"[object Map]": areMapsEqual2,
|
|
1698
|
+
"[object Number]": arePrimitiveWrappersEqual2,
|
|
1699
|
+
"[object Object]": (a, b, state) => (
|
|
1700
|
+
// The exception for value comparison is custom `Promise`-like class instances. These should
|
|
1701
|
+
// be treated the same as standard `Promise` objects, which means strict equality, and if
|
|
1702
|
+
// it reaches this point then that strict equality comparison has already failed.
|
|
1703
|
+
typeof a.then !== "function" && typeof b.then !== "function" && areObjectsEqual2(a, b, state)
|
|
1704
|
+
),
|
|
1705
|
+
// For RegExp, the properties are not enumerable, and therefore will give false positives if
|
|
1706
|
+
// tested like a standard object.
|
|
1707
|
+
"[object RegExp]": areRegExpsEqual2,
|
|
1708
|
+
"[object Set]": areSetsEqual2,
|
|
1709
|
+
"[object String]": arePrimitiveWrappersEqual2,
|
|
1710
|
+
"[object URL]": areUrlsEqual2,
|
|
1711
|
+
"[object Uint8Array]": areTypedArraysEqual2,
|
|
1712
|
+
"[object Uint8ClampedArray]": areTypedArraysEqual2,
|
|
1713
|
+
"[object Uint16Array]": areTypedArraysEqual2,
|
|
1714
|
+
"[object Uint32Array]": areTypedArraysEqual2
|
|
1715
|
+
};
|
|
1716
|
+
}
|
|
1717
|
+
const deepEqual = createCustomEqual();
|
|
1705
1718
|
createCustomEqual({ strict: true });
|
|
1706
1719
|
createCustomEqual({ circular: true });
|
|
1707
1720
|
createCustomEqual({
|
|
@@ -1709,37 +1722,26 @@ createCustomEqual({
|
|
|
1709
1722
|
strict: true
|
|
1710
1723
|
});
|
|
1711
1724
|
createCustomEqual({
|
|
1712
|
-
createInternalComparator:
|
|
1713
|
-
return sameValueZeroEqual;
|
|
1714
|
-
}
|
|
1725
|
+
createInternalComparator: () => sameValueEqual
|
|
1715
1726
|
});
|
|
1716
1727
|
createCustomEqual({
|
|
1717
1728
|
strict: true,
|
|
1718
|
-
createInternalComparator:
|
|
1719
|
-
return sameValueZeroEqual;
|
|
1720
|
-
}
|
|
1729
|
+
createInternalComparator: () => sameValueEqual
|
|
1721
1730
|
});
|
|
1722
1731
|
createCustomEqual({
|
|
1723
1732
|
circular: true,
|
|
1724
|
-
createInternalComparator:
|
|
1725
|
-
return sameValueZeroEqual;
|
|
1726
|
-
}
|
|
1733
|
+
createInternalComparator: () => sameValueEqual
|
|
1727
1734
|
});
|
|
1728
1735
|
createCustomEqual({
|
|
1729
1736
|
circular: true,
|
|
1730
|
-
createInternalComparator:
|
|
1731
|
-
return sameValueZeroEqual;
|
|
1732
|
-
},
|
|
1737
|
+
createInternalComparator: () => sameValueEqual,
|
|
1733
1738
|
strict: true
|
|
1734
1739
|
});
|
|
1735
|
-
function createCustomEqual(options) {
|
|
1736
|
-
|
|
1737
|
-
|
|
1738
|
-
|
|
1739
|
-
|
|
1740
|
-
var config = createEqualityComparatorConfig(options);
|
|
1741
|
-
var comparator = createEqualityComparator(config);
|
|
1742
|
-
var equals = createCustomInternalComparator ? createCustomInternalComparator(comparator) : createInternalEqualityComparator(comparator);
|
|
1740
|
+
function createCustomEqual(options = {}) {
|
|
1741
|
+
const { circular = false, createInternalComparator: createCustomInternalComparator, createState, strict = false } = options;
|
|
1742
|
+
const config = createEqualityComparatorConfig(options);
|
|
1743
|
+
const comparator = createEqualityComparator(config);
|
|
1744
|
+
const equals = createCustomInternalComparator ? createCustomInternalComparator(comparator) : createInternalEqualityComparator(comparator);
|
|
1743
1745
|
return createIsEqual({ circular, comparator, createState, equals, strict });
|
|
1744
1746
|
}
|
|
1745
1747
|
const defaultRect = { x: 0, y: 0, width: 0, height: 0, top: 0, left: 0, bottom: 0, right: 0 };
|
|
@@ -1929,7 +1931,133 @@ const runNotificationDigest = async ({ force = false } = {}) => {
|
|
|
1929
1931
|
}
|
|
1930
1932
|
return { sent: result.sent === true, skippedReason: result.skippedReason };
|
|
1931
1933
|
};
|
|
1934
|
+
const NotificationsRealtimeContext = createContext(null);
|
|
1935
|
+
const toIso = (value) => {
|
|
1936
|
+
if (value instanceof Date) return value.toISOString();
|
|
1937
|
+
if (typeof value === "string") return value;
|
|
1938
|
+
return void 0;
|
|
1939
|
+
};
|
|
1940
|
+
const toNotificationItem = (doc) => {
|
|
1941
|
+
const id = typeof doc._id === "string" ? doc._id : String(doc._id ?? "");
|
|
1942
|
+
if (!id) return null;
|
|
1943
|
+
return {
|
|
1944
|
+
id,
|
|
1945
|
+
topic: typeof doc.topic === "string" ? doc.topic : void 0,
|
|
1946
|
+
title: typeof doc.title === "string" ? doc.title : "",
|
|
1947
|
+
body: typeof doc.body === "string" ? doc.body : void 0,
|
|
1948
|
+
url: typeof doc.url === "string" ? doc.url : void 0,
|
|
1949
|
+
createdAt: toIso(doc.createdAt) ?? (/* @__PURE__ */ new Date()).toISOString(),
|
|
1950
|
+
seenAt: toIso(doc.seenAt),
|
|
1951
|
+
readAt: toIso(doc.readAt),
|
|
1952
|
+
archivedAt: toIso(doc.archivedAt),
|
|
1953
|
+
metadata: typeof doc.metadata === "object" && doc.metadata !== null ? doc.metadata : void 0
|
|
1954
|
+
};
|
|
1955
|
+
};
|
|
1956
|
+
const buildDisabledTopics = (settings) => {
|
|
1957
|
+
const raw = settings?.topicPreferences;
|
|
1958
|
+
if (!Array.isArray(raw) || raw.length === 0) return [];
|
|
1959
|
+
return raw.map((pref) => {
|
|
1960
|
+
if (!pref || typeof pref !== "object") return null;
|
|
1961
|
+
const topic = typeof pref.topic === "string" ? pref.topic.trim() : "";
|
|
1962
|
+
if (!topic) return null;
|
|
1963
|
+
return pref.inApp === false ? topic : null;
|
|
1964
|
+
}).filter((topic) => Boolean(topic));
|
|
1965
|
+
};
|
|
1966
|
+
function NotificationsRealtimeProvider({
|
|
1967
|
+
userId,
|
|
1968
|
+
limit = 200,
|
|
1969
|
+
toastOnNew = true,
|
|
1970
|
+
children
|
|
1971
|
+
}) {
|
|
1972
|
+
const trimmedUserId = typeof userId === "string" ? userId.trim() : "";
|
|
1973
|
+
const canUseRts = Boolean(trimmedUserId);
|
|
1974
|
+
const settingsQuery = useQuery(
|
|
1975
|
+
canUseRts ? "RBNotificationSettings" : "",
|
|
1976
|
+
useMemo(() => canUseRts ? { userId: trimmedUserId } : {}, [canUseRts, trimmedUserId]),
|
|
1977
|
+
useMemo(() => ({ key: "rb.notifications.settings", limit: 1 }), [])
|
|
1978
|
+
);
|
|
1979
|
+
const settings = settingsQuery.data?.[0] ?? null;
|
|
1980
|
+
const disabledTopics = useMemo(() => buildDisabledTopics(settings), [settings]);
|
|
1981
|
+
const query = useMemo(() => {
|
|
1982
|
+
if (!canUseRts) return {};
|
|
1983
|
+
const base = {
|
|
1984
|
+
userId: trimmedUserId,
|
|
1985
|
+
archivedAt: { $exists: false }
|
|
1986
|
+
};
|
|
1987
|
+
if (disabledTopics.length > 0) {
|
|
1988
|
+
base.topic = { $nin: disabledTopics };
|
|
1989
|
+
}
|
|
1990
|
+
return base;
|
|
1991
|
+
}, [canUseRts, disabledTopics, trimmedUserId]);
|
|
1992
|
+
const notificationsQuery = useQuery(
|
|
1993
|
+
canUseRts ? "RBNotification" : "",
|
|
1994
|
+
query,
|
|
1995
|
+
useMemo(() => ({
|
|
1996
|
+
key: "rb.notifications",
|
|
1997
|
+
sort: { createdAt: -1 },
|
|
1998
|
+
limit
|
|
1999
|
+
}), [limit])
|
|
2000
|
+
);
|
|
2001
|
+
const notifications = useMemo(() => {
|
|
2002
|
+
const raw = notificationsQuery.data;
|
|
2003
|
+
if (!Array.isArray(raw)) return [];
|
|
2004
|
+
return raw.map((doc) => toNotificationItem(doc)).filter((n) => Boolean(n));
|
|
2005
|
+
}, [notificationsQuery.data]);
|
|
2006
|
+
const unreadCount = useMemo(() => notifications.reduce((acc, n) => acc + (n.readAt ? 0 : 1), 0), [notifications]);
|
|
2007
|
+
const unseenCount = useMemo(() => notifications.reduce((acc, n) => acc + (n.seenAt ? 0 : 1), 0), [notifications]);
|
|
2008
|
+
const lastToastIds = useRef(/* @__PURE__ */ new Set());
|
|
2009
|
+
const hasSeededToastIds = useRef(false);
|
|
2010
|
+
const toastStartMs = useRef(Date.now());
|
|
2011
|
+
useEffect(() => {
|
|
2012
|
+
hasSeededToastIds.current = false;
|
|
2013
|
+
lastToastIds.current = /* @__PURE__ */ new Set();
|
|
2014
|
+
toastStartMs.current = Date.now();
|
|
2015
|
+
}, [trimmedUserId]);
|
|
2016
|
+
useEffect(() => {
|
|
2017
|
+
if (!toastOnNew) return;
|
|
2018
|
+
if (!canUseRts) return;
|
|
2019
|
+
if (notificationsQuery.loading) return;
|
|
2020
|
+
if (!hasSeededToastIds.current) {
|
|
2021
|
+
hasSeededToastIds.current = true;
|
|
2022
|
+
lastToastIds.current = new Set(notifications.map((n) => n.id));
|
|
2023
|
+
return;
|
|
2024
|
+
}
|
|
2025
|
+
const nextNew = notifications.filter((n) => !lastToastIds.current.has(n.id));
|
|
2026
|
+
if (!nextNew.length) return;
|
|
2027
|
+
for (const n of nextNew) {
|
|
2028
|
+
lastToastIds.current.add(n.id);
|
|
2029
|
+
}
|
|
2030
|
+
const isTabActive = typeof document !== "undefined" && document.visibilityState === "visible";
|
|
2031
|
+
if (!isTabActive) return;
|
|
2032
|
+
const eligible = nextNew.filter((n) => {
|
|
2033
|
+
const createdAtMs = Date.parse(n.createdAt);
|
|
2034
|
+
if (!Number.isFinite(createdAtMs)) return true;
|
|
2035
|
+
return createdAtMs >= toastStartMs.current;
|
|
2036
|
+
});
|
|
2037
|
+
if (!eligible.length) return;
|
|
2038
|
+
if (eligible.length > 3) {
|
|
2039
|
+
toast(`${eligible.length} new notifications`, { description: "Open the notifications drawer to view them." });
|
|
2040
|
+
return;
|
|
2041
|
+
}
|
|
2042
|
+
for (const n of eligible) {
|
|
2043
|
+
toast(n.title || "New notification", { description: n.body });
|
|
2044
|
+
}
|
|
2045
|
+
}, [canUseRts, notifications, notificationsQuery.loading, toastOnNew]);
|
|
2046
|
+
const value = useMemo(() => ({
|
|
2047
|
+
notifications,
|
|
2048
|
+
unreadCount,
|
|
2049
|
+
unseenCount,
|
|
2050
|
+
loading: notificationsQuery.loading,
|
|
2051
|
+
error: notificationsQuery.error
|
|
2052
|
+
}), [notifications, notificationsQuery.error, notificationsQuery.loading, unreadCount, unseenCount]);
|
|
2053
|
+
return /* @__PURE__ */ jsx(NotificationsRealtimeContext.Provider, { value: canUseRts ? value : null, children });
|
|
2054
|
+
}
|
|
2055
|
+
const useNotificationsRealtime = () => {
|
|
2056
|
+
return useContext(NotificationsRealtimeContext);
|
|
2057
|
+
};
|
|
1932
2058
|
export {
|
|
2059
|
+
NotificationsRealtimeContext,
|
|
2060
|
+
NotificationsRealtimeProvider,
|
|
1933
2061
|
RootProvider,
|
|
1934
2062
|
RouteErrorBoundary,
|
|
1935
2063
|
SSR_ERROR_STATE_GLOBAL_KEY,
|
|
@@ -1947,8 +2075,9 @@ export {
|
|
|
1947
2075
|
peekClientSsrErrorState,
|
|
1948
2076
|
runNotificationDigest,
|
|
1949
2077
|
serializeSsrErrorState,
|
|
1950
|
-
toast,
|
|
2078
|
+
toast2 as toast,
|
|
1951
2079
|
updateNotificationSettings,
|
|
1952
2080
|
useMediaQuery,
|
|
2081
|
+
useNotificationsRealtime,
|
|
1953
2082
|
useThrottledMeasure
|
|
1954
2083
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initWithRoutes.d.ts","sourceRoot":"","sources":["../src/initWithRoutes.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAmC,MAAM,OAAO,CAAA;AAElE,OAAO,EAAsB,wBAAwB,EAAiB,MAAM,iBAAiB,CAAA;AAO7F,OAAO,EAGL,oBAAoB,EACrB,MAAM,iBAAiB,CAAA;AAgFxB,KAAK,qBAAqB,GAAG;IAC3B,0BAA0B,CAAC,EAAE,OAAO,CAAA;IACpC,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,SAAS,CAAA;CAC9D,CAAA;AAED,KAAK,aAAa,GAAG,UAAU,CAAC,OAAO,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAA;AA0CnE,eAAO,MAAM,cAAc,GACzB,eAAe,aAAa,EAC5B,OAAO,qBAAqB,
|
|
1
|
+
{"version":3,"file":"initWithRoutes.d.ts","sourceRoot":"","sources":["../src/initWithRoutes.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAmC,MAAM,OAAO,CAAA;AAElE,OAAO,EAAsB,wBAAwB,EAAiB,MAAM,iBAAiB,CAAA;AAO7F,OAAO,EAGL,oBAAoB,EACrB,MAAM,iBAAiB,CAAA;AAgFxB,KAAK,qBAAqB,GAAG;IAC3B,0BAA0B,CAAC,EAAE,OAAO,CAAA;IACpC,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,SAAS,CAAA;CAC9D,CAAA;AAED,KAAK,aAAa,GAAG,UAAU,CAAC,OAAO,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAA;AA0CnE,eAAO,MAAM,cAAc,GACzB,eAAe,aAAa,EAC5B,OAAO,qBAAqB,kBAqF7B,CAAA"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
import { NotificationItem } from './notifications';
|
|
3
|
+
export type NotificationsRealtimeState = {
|
|
4
|
+
notifications: NotificationItem[];
|
|
5
|
+
unreadCount: number;
|
|
6
|
+
unseenCount: number;
|
|
7
|
+
loading: boolean;
|
|
8
|
+
error: unknown;
|
|
9
|
+
};
|
|
10
|
+
export declare const NotificationsRealtimeContext: import('react').Context<NotificationsRealtimeState | null>;
|
|
11
|
+
export declare function NotificationsRealtimeProvider({ userId, limit, toastOnNew, children, }: {
|
|
12
|
+
userId?: string;
|
|
13
|
+
limit?: number;
|
|
14
|
+
toastOnNew?: boolean;
|
|
15
|
+
children: ReactNode;
|
|
16
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
17
|
+
export declare const useNotificationsRealtime: () => NotificationsRealtimeState | null;
|
|
18
|
+
//# sourceMappingURL=notificationsRealtime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notificationsRealtime.d.ts","sourceRoot":"","sources":["../src/notificationsRealtime.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAyD,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAI7F,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AA0BvD,MAAM,MAAM,0BAA0B,GAAG;IACvC,aAAa,EAAE,gBAAgB,EAAE,CAAA;IACjC,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,EAAE,OAAO,CAAA;CACf,CAAA;AAED,eAAO,MAAM,4BAA4B,4DAAyD,CAAA;AAwClG,wBAAgB,6BAA6B,CAAC,EAC5C,MAAM,EACN,KAAW,EACX,UAAiB,EACjB,QAAQ,GACT,EAAE;IACD,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,QAAQ,EAAE,SAAS,CAAA;CACpB,2CA2GA;AAED,eAAO,MAAM,wBAAwB,QAAO,0BAA0B,GAAG,IAExE,CAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { configureRtsPouchStore, destroyAllCollections, destroyCollection, deleteDocs, getCollection, resetRtsPouchStore, runQuery, updateDocs, type RtsPouchQueryContext, type RtsPouchQueryOptions, type RtsPouchStoreConfig, } from './
|
|
2
|
-
export { addLocalTxn, connect, disconnect, onMessage, reconnect, registerQuery, sendMessage, syncRtsChanges, type RtsConnectOptions, type RtsQueryContext, type RtsQueryOptions, } from './
|
|
3
|
-
export { useQuery, type UseRtsQueryOptions, type UseRtsQueryResult, } from './
|
|
4
|
-
//# sourceMappingURL=
|
|
1
|
+
export { configureRtsPouchStore, destroyAllCollections, destroyCollection, deleteDocs, getCollection, resetRtsPouchStore, runQuery, updateDocs, type RtsPouchQueryContext, type RtsPouchQueryOptions, type RtsPouchStoreConfig, } from './pouchStore';
|
|
2
|
+
export { addLocalTxn, connect, disconnect, onMessage, reconnect, registerQuery, sendMessage, syncRtsChanges, type RtsConnectOptions, type RtsQueryContext, type RtsQueryOptions, } from './wsClient';
|
|
3
|
+
export { useQuery, type UseRtsQueryOptions, type UseRtsQueryResult, } from './useQuery';
|
|
4
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/rts/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,qBAAqB,EACrB,iBAAiB,EACjB,UAAU,EACV,aAAa,EACb,kBAAkB,EAClB,QAAQ,EACR,UAAU,EACV,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,GACzB,MAAM,cAAc,CAAA;AAErB,OAAO,EACL,WAAW,EACX,OAAO,EACP,UAAU,EACV,SAAS,EACT,SAAS,EACT,aAAa,EACb,WAAW,EACX,cAAc,EACd,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,eAAe,GACrB,MAAM,YAAY,CAAA;AAEnB,OAAO,EACL,QAAQ,EACR,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,GACvB,MAAM,YAAY,CAAA"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { f, c, h, b, d, a, i, g, o, j, k, r, e, s, l, u, m } from "../useQuery-5oC6VOlA.js";
|
|
2
|
+
export {
|
|
3
|
+
f as addLocalTxn,
|
|
4
|
+
c as configureRtsPouchStore,
|
|
5
|
+
h as connect,
|
|
6
|
+
b as deleteDocs,
|
|
7
|
+
d as destroyAllCollections,
|
|
8
|
+
a as destroyCollection,
|
|
9
|
+
i as disconnect,
|
|
10
|
+
g as getCollection,
|
|
11
|
+
o as onMessage,
|
|
12
|
+
j as reconnect,
|
|
13
|
+
k as registerQuery,
|
|
14
|
+
r as resetRtsPouchStore,
|
|
15
|
+
e as runQuery,
|
|
16
|
+
s as sendMessage,
|
|
17
|
+
l as syncRtsChanges,
|
|
18
|
+
u as updateDocs,
|
|
19
|
+
m as useQuery
|
|
20
|
+
};
|
|
@@ -768,21 +768,21 @@ const useQuery = (modelName, query = {}, options = {}) => {
|
|
|
768
768
|
);
|
|
769
769
|
};
|
|
770
770
|
export {
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
reconnect,
|
|
781
|
-
registerQuery,
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
771
|
+
destroyCollection as a,
|
|
772
|
+
deleteDocs as b,
|
|
773
|
+
configureRtsPouchStore as c,
|
|
774
|
+
destroyAllCollections as d,
|
|
775
|
+
runQuery as e,
|
|
776
|
+
addLocalTxn as f,
|
|
777
|
+
getCollection as g,
|
|
778
|
+
connect as h,
|
|
779
|
+
disconnect as i,
|
|
780
|
+
reconnect as j,
|
|
781
|
+
registerQuery as k,
|
|
782
|
+
syncRtsChanges as l,
|
|
783
|
+
useQuery as m,
|
|
784
|
+
onMessage as o,
|
|
785
|
+
resetRtsPouchStore as r,
|
|
786
|
+
sendMessage as s,
|
|
787
|
+
updateDocs as u
|
|
788
788
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rpcbase/client",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.341.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"files": [
|
|
6
6
|
"dist"
|
|
@@ -14,9 +14,9 @@
|
|
|
14
14
|
"default": "./dist/index.js"
|
|
15
15
|
},
|
|
16
16
|
"./rts": {
|
|
17
|
-
"types": "./dist/rts.d.ts",
|
|
18
|
-
"import": "./dist/rts.js",
|
|
19
|
-
"default": "./dist/rts.js"
|
|
17
|
+
"types": "./dist/rts/index.d.ts",
|
|
18
|
+
"import": "./dist/rts/index.js",
|
|
19
|
+
"default": "./dist/rts/index.js"
|
|
20
20
|
},
|
|
21
21
|
"./instrument": {
|
|
22
22
|
"types": "./dist/instrument.d.ts",
|
|
@@ -82,13 +82,14 @@
|
|
|
82
82
|
"pouchdb-adapter-indexeddb": "9.0.0",
|
|
83
83
|
"pouchdb-core": "9.0.0",
|
|
84
84
|
"pouchdb-find": "9.0.0",
|
|
85
|
+
"react-grab": "0.0.94",
|
|
85
86
|
"sonner": "2.0.7"
|
|
86
87
|
},
|
|
87
88
|
"peerDependencies": {
|
|
88
89
|
"axios": "^1.13"
|
|
89
90
|
},
|
|
90
91
|
"devDependencies": {
|
|
91
|
-
"fast-equals": "
|
|
92
|
+
"fast-equals": "6.0.0",
|
|
92
93
|
"lodash": "4.17.21"
|
|
93
94
|
}
|
|
94
95
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"installGlobalNavigationGuard.test.d.ts","sourceRoot":"","sources":["../../src/navigationGuard/installGlobalNavigationGuard.test.ts"],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"wsClient.sync.test.d.ts","sourceRoot":"","sources":["../../src/rts/wsClient.sync.test.ts"],"names":[],"mappings":""}
|
package/dist/rts.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rts.d.ts","sourceRoot":"","sources":["../src/rts.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,qBAAqB,EACrB,iBAAiB,EACjB,UAAU,EACV,aAAa,EACb,kBAAkB,EAClB,QAAQ,EACR,UAAU,EACV,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,GACzB,MAAM,kBAAkB,CAAA;AAEzB,OAAO,EACL,WAAW,EACX,OAAO,EACP,UAAU,EACV,SAAS,EACT,SAAS,EACT,aAAa,EACb,WAAW,EACX,cAAc,EACd,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,eAAe,GACrB,MAAM,gBAAgB,CAAA;AAEvB,OAAO,EACL,QAAQ,EACR,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,GACvB,MAAM,gBAAgB,CAAA"}
|