@biglogic/rgs 3.9.8 → 3.9.10
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/SKILL.md +148 -0
- package/core/hooks.d.ts +1 -0
- package/extension/rgs.vsix +0 -0
- package/index.cjs +29 -23
- package/index.d.ts +2 -2
- package/index.js +85 -75
- package/{docs/markdown → markdown}/api.md +32 -0
- package/markdown/getting-started.md +62 -0
- package/package.json +1 -1
- package/docs/README.md +0 -479
- package/docs/markdown/getting-started.md +0 -68
- package/tsup.setup.d.ts +0 -9
- /package/{docs/SUMMARY.md → SUMMARY.md} +0 -0
- /package/{docs/_config.yml → _config.yml} +0 -0
- /package/{docs/markdown → markdown}/case-studies.md +0 -0
- /package/{docs/markdown → markdown}/faq.md +0 -0
- /package/{docs/markdown → markdown}/local-first-sync.md +0 -0
- /package/{docs/markdown → markdown}/migration-guide.md +0 -0
- /package/{docs/markdown → markdown}/persistence-and-safety.md +0 -0
- /package/{docs/markdown → markdown}/philosophy.md +0 -0
- /package/{docs/markdown → markdown}/plugin-sdk.md +0 -0
- /package/{docs/markdown → markdown}/plugins-and-extensibility.md +0 -0
- /package/{docs/markdown → markdown}/security-architecture.md +0 -0
- /package/{docs/markdown → markdown}/the-magnetar-way.md +0 -0
package/index.js
CHANGED
|
@@ -1446,7 +1446,7 @@ function at(e, t) {
|
|
|
1446
1446
|
}, [ u, i, e, r ]), d ];
|
|
1447
1447
|
}
|
|
1448
1448
|
|
|
1449
|
-
var it
|
|
1449
|
+
var it = () => {
|
|
1450
1450
|
const [e, t] = s({
|
|
1451
1451
|
isOnline: !0,
|
|
1452
1452
|
isSyncing: !1,
|
|
@@ -1472,12 +1472,21 @@ var it, ct, lt, ut, dt, ft, yt = () => {
|
|
|
1472
1472
|
const n = Array.from(rt.values()).map(t => t.onStateChange(e));
|
|
1473
1473
|
return () => n.forEach(e => e());
|
|
1474
1474
|
}, []), e;
|
|
1475
|
-
},
|
|
1475
|
+
}, ct = async e => {
|
|
1476
1476
|
const t = e || Xe?.namespace;
|
|
1477
1477
|
if (!t) return;
|
|
1478
1478
|
const n = rt.get(t);
|
|
1479
1479
|
n && await n.flush();
|
|
1480
|
-
}
|
|
1480
|
+
};
|
|
1481
|
+
|
|
1482
|
+
function lt(r) {
|
|
1483
|
+
const o = e(() => r || Xe, [ r ]), a = n(e => o ? o._subscribe(e) : () => {}, [ o ]), i = n(() => !0, []), c = n(() => !0, []);
|
|
1484
|
+
t(a, i, c);
|
|
1485
|
+
const [, l] = s(0);
|
|
1486
|
+
return [ !0, n(() => l(e => e + 1), []) ];
|
|
1487
|
+
}
|
|
1488
|
+
|
|
1489
|
+
var ut, dt, ft, yt, pt, ht, gt = (e, t) => {
|
|
1481
1490
|
const n = t?.key || "async_data", r = t?.store || Ge({
|
|
1482
1491
|
namespace: `async_${n}`,
|
|
1483
1492
|
silent: !0
|
|
@@ -1531,22 +1540,22 @@ var it, ct, lt, ut, dt, ft, yt = () => {
|
|
|
1531
1540
|
}
|
|
1532
1541
|
}
|
|
1533
1542
|
});
|
|
1534
|
-
},
|
|
1543
|
+
}, mt = () => "undefined" == typeof window || void 0 === window.document, _t = () => !mt(), St = e => {
|
|
1535
1544
|
const t = e?.ssrSafe ?? !0, n = e?.deferHydration ?? !1;
|
|
1536
1545
|
let r = e?.storage;
|
|
1537
|
-
!r && t &&
|
|
1546
|
+
!r && t && mt() && (r = He());
|
|
1538
1547
|
const s = Ge({
|
|
1539
1548
|
...e,
|
|
1540
1549
|
storage: r || void 0,
|
|
1541
1550
|
persistByDefault: !n && (e?.persistByDefault ?? !1)
|
|
1542
1551
|
});
|
|
1543
1552
|
let o = !1, a = null;
|
|
1544
|
-
e?.initialState &&
|
|
1553
|
+
e?.initialState && mt() && (Object.entries(e.initialState).forEach(([e, t]) => {
|
|
1545
1554
|
s._setSilently(e, t);
|
|
1546
1555
|
}), a = JSON.stringify(e.initialState));
|
|
1547
1556
|
return Object.assign(s, {
|
|
1548
1557
|
hydrate: async () => {
|
|
1549
|
-
if (!o && !
|
|
1558
|
+
if (!o && !mt()) {
|
|
1550
1559
|
if (t && !s.namespace.startsWith("async_")) {
|
|
1551
1560
|
const t = s.getSnapshot(), n = Ge({
|
|
1552
1561
|
...e,
|
|
@@ -1561,33 +1570,33 @@ var it, ct, lt, ut, dt, ft, yt = () => {
|
|
|
1561
1570
|
await s.whenReady();
|
|
1562
1571
|
}
|
|
1563
1572
|
},
|
|
1564
|
-
getSerializedState: () =>
|
|
1573
|
+
getSerializedState: () => mt() ? JSON.stringify(s.getSnapshot()) : a,
|
|
1565
1574
|
isHydrated: () => o || s.isReady
|
|
1566
1575
|
});
|
|
1567
|
-
},
|
|
1568
|
-
|
|
1569
|
-
},
|
|
1570
|
-
if (!
|
|
1576
|
+
}, wt = async e => {
|
|
1577
|
+
mt() || await e.whenReady();
|
|
1578
|
+
}, bt = e => JSON.stringify(e.getSnapshot()), vt = (e, t) => {
|
|
1579
|
+
if (!mt()) try {
|
|
1571
1580
|
const n = JSON.parse(t);
|
|
1572
1581
|
Object.entries(n).forEach(([t, n]) => {
|
|
1573
1582
|
e._setSilently(t, n);
|
|
1574
1583
|
});
|
|
1575
1584
|
} catch (e) {}
|
|
1576
|
-
},
|
|
1577
|
-
|
|
1578
|
-
React:
|
|
1579
|
-
useState:
|
|
1580
|
-
useEffect:
|
|
1581
|
-
useSyncExternalStore:
|
|
1582
|
-
useMemo:
|
|
1583
|
-
useCallback:
|
|
1584
|
-
}),
|
|
1585
|
-
const {useSyncExternalStore: e} =
|
|
1586
|
-
return e(e => () => {}, () =>
|
|
1587
|
-
},
|
|
1588
|
-
const {useState: e, useEffect: t} =
|
|
1585
|
+
}, Et = () => (ut || (ut = f("react"), dt = ut.useState, ft = ut.useEffect, yt = ut.useSyncExternalStore,
|
|
1586
|
+
pt = ut.useMemo, ht = ut.useCallback), {
|
|
1587
|
+
React: ut,
|
|
1588
|
+
useState: dt,
|
|
1589
|
+
useEffect: ft,
|
|
1590
|
+
useSyncExternalStore: yt,
|
|
1591
|
+
useMemo: pt,
|
|
1592
|
+
useCallback: ht
|
|
1593
|
+
}), kt = () => {
|
|
1594
|
+
const {useSyncExternalStore: e} = Et();
|
|
1595
|
+
return e(e => () => {}, () => _t(), () => !0);
|
|
1596
|
+
}, Ot = () => {
|
|
1597
|
+
const {useState: e, useEffect: t} = Et(), [n, r] = e(() => mt()), [s, o] = e(() => mt());
|
|
1589
1598
|
return t(() => {
|
|
1590
|
-
if (
|
|
1599
|
+
if (mt()) return;
|
|
1591
1600
|
r(!0);
|
|
1592
1601
|
const e = setTimeout(() => {
|
|
1593
1602
|
o(!0), r(!1);
|
|
@@ -1597,10 +1606,10 @@ dt = it.useMemo, ft = it.useCallback), {
|
|
|
1597
1606
|
isHydrated: s,
|
|
1598
1607
|
isHydrating: n
|
|
1599
1608
|
};
|
|
1600
|
-
},
|
|
1601
|
-
const {useState: t, useEffect: n, useMemo: r} =
|
|
1609
|
+
}, Ct = e => {
|
|
1610
|
+
const {useState: t, useEffect: n, useMemo: r} = Et(), [s, o] = t(() => !!mt() || (e.isHydrated?.() ?? e.isReady));
|
|
1602
1611
|
return n(() => {
|
|
1603
|
-
if (
|
|
1612
|
+
if (mt()) return;
|
|
1604
1613
|
const t = () => {
|
|
1605
1614
|
const t = e.isHydrated?.() ?? e.isReady;
|
|
1606
1615
|
o(t);
|
|
@@ -1645,24 +1654,24 @@ dt = it.useMemo, ft = it.useCallback), {
|
|
|
1645
1654
|
}
|
|
1646
1655
|
};
|
|
1647
1656
|
}, [ e, s ]);
|
|
1648
|
-
},
|
|
1649
|
-
const t =
|
|
1657
|
+
}, Dt = e => {
|
|
1658
|
+
const t = St(e);
|
|
1650
1659
|
return Object.assign(t, {
|
|
1651
|
-
useHydrated:
|
|
1652
|
-
useHydrationStatus:
|
|
1660
|
+
useHydrated: kt,
|
|
1661
|
+
useHydrationStatus: Ot,
|
|
1653
1662
|
useDeferredStore: e => {
|
|
1654
|
-
const n =
|
|
1663
|
+
const n = Ct(t), {useCallback: r} = Et();
|
|
1655
1664
|
return (e => {
|
|
1656
|
-
const {useSyncExternalStore: t} =
|
|
1665
|
+
const {useSyncExternalStore: t} = Et();
|
|
1657
1666
|
return t(r(t => n._subscribe(t, e), [ n, e ]), r(() => n.get(e), [ n, e ]), () => {});
|
|
1658
1667
|
})(e);
|
|
1659
1668
|
}
|
|
1660
1669
|
});
|
|
1661
|
-
},
|
|
1662
|
-
|
|
1670
|
+
}, Mt = e => e.getSnapshot(), At = (e, t) => {
|
|
1671
|
+
mt() || Object.entries(t).forEach(([t, n]) => {
|
|
1663
1672
|
e._setSilently(t, n);
|
|
1664
1673
|
});
|
|
1665
|
-
},
|
|
1674
|
+
}, jt = (e, t) => {
|
|
1666
1675
|
const n = t?.extraArgument, r = async t => {
|
|
1667
1676
|
if ("function" == typeof t) return t(r, () => e.getSnapshot(), n);
|
|
1668
1677
|
if (t.type) {
|
|
@@ -1681,10 +1690,10 @@ dt = it.useMemo, ft = it.useCallback), {
|
|
|
1681
1690
|
return Object.assign(e, {
|
|
1682
1691
|
dispatch: r
|
|
1683
1692
|
});
|
|
1684
|
-
},
|
|
1685
|
-
const n =
|
|
1693
|
+
}, Rt = (e, t) => {
|
|
1694
|
+
const n = jt(e);
|
|
1686
1695
|
return Object.assign(n.dispatch, t);
|
|
1687
|
-
},
|
|
1696
|
+
}, Pt = (e, t) => async (n, r) => {
|
|
1688
1697
|
const s = r()[e];
|
|
1689
1698
|
n({
|
|
1690
1699
|
type: `SET_${e.toUpperCase()}`,
|
|
@@ -1714,31 +1723,31 @@ dt = it.useMemo, ft = it.useCallback), {
|
|
|
1714
1723
|
}
|
|
1715
1724
|
}), t;
|
|
1716
1725
|
}
|
|
1717
|
-
},
|
|
1718
|
-
|
|
1726
|
+
}, Tt = (e, t) => {
|
|
1727
|
+
jt(e);
|
|
1719
1728
|
const n = {};
|
|
1720
|
-
for (const [e, r] of Object.entries(t)) n[e] =
|
|
1729
|
+
for (const [e, r] of Object.entries(t)) n[e] = Pt(e, r);
|
|
1721
1730
|
return n;
|
|
1722
|
-
},
|
|
1731
|
+
}, It = (e, ...t) => ({
|
|
1723
1732
|
type: "call",
|
|
1724
1733
|
fn: e,
|
|
1725
1734
|
args: t
|
|
1726
|
-
}),
|
|
1735
|
+
}), zt = e => ({
|
|
1727
1736
|
type: "put",
|
|
1728
1737
|
action: e
|
|
1729
|
-
}),
|
|
1738
|
+
}), xt = e => ({
|
|
1730
1739
|
type: "select",
|
|
1731
1740
|
selector: e
|
|
1732
|
-
}),
|
|
1741
|
+
}), $t = e => ({
|
|
1733
1742
|
type: "take",
|
|
1734
1743
|
pattern: e
|
|
1735
|
-
}),
|
|
1744
|
+
}), Vt = e => ({
|
|
1736
1745
|
type: "all",
|
|
1737
1746
|
effects: e
|
|
1738
|
-
}),
|
|
1747
|
+
}), Nt = e => ({
|
|
1739
1748
|
type: "race",
|
|
1740
1749
|
effects: e
|
|
1741
|
-
}),
|
|
1750
|
+
}), Ut = e => async (t, n) => {
|
|
1742
1751
|
const r = async e => {
|
|
1743
1752
|
switch (e.type) {
|
|
1744
1753
|
case "call":
|
|
@@ -1767,18 +1776,18 @@ dt = it.useMemo, ft = it.useCallback), {
|
|
|
1767
1776
|
let t = e.next();
|
|
1768
1777
|
for (;!t.done; ) await r(t.value), t = e.next();
|
|
1769
1778
|
} catch (e) {}
|
|
1770
|
-
},
|
|
1779
|
+
}, Lt = (e, t) => (jt(e).dispatch(t), () => {});
|
|
1771
1780
|
|
|
1772
1781
|
g();
|
|
1773
1782
|
|
|
1774
|
-
var
|
|
1783
|
+
var Ft = () => ({
|
|
1775
1784
|
name: "gstate-immer",
|
|
1776
1785
|
hooks: {
|
|
1777
1786
|
onInstall: ({store: e}) => {
|
|
1778
1787
|
e._registerMethod("immer", "setWithProduce", (t, n) => e.set(t, n));
|
|
1779
1788
|
}
|
|
1780
1789
|
}
|
|
1781
|
-
}),
|
|
1790
|
+
}), Kt = e => {
|
|
1782
1791
|
let t = [], n = -1, r = !1;
|
|
1783
1792
|
const s = e?.limit || 50;
|
|
1784
1793
|
return {
|
|
@@ -1810,7 +1819,7 @@ var Lt = () => ({
|
|
|
1810
1819
|
}
|
|
1811
1820
|
}
|
|
1812
1821
|
};
|
|
1813
|
-
},
|
|
1822
|
+
}, Jt = e => ({
|
|
1814
1823
|
name: "gstate-schema",
|
|
1815
1824
|
hooks: {
|
|
1816
1825
|
onSet: ({key: t, value: n}) => {
|
|
@@ -1822,7 +1831,7 @@ var Lt = () => ({
|
|
|
1822
1831
|
}
|
|
1823
1832
|
}
|
|
1824
1833
|
}
|
|
1825
|
-
}),
|
|
1834
|
+
}), Bt = e => {
|
|
1826
1835
|
const t = globalThis.__REDUX_DEVTOOLS_EXTENSION__;
|
|
1827
1836
|
if (!t?.connect) return {
|
|
1828
1837
|
name: "gstate-devtools-noop",
|
|
@@ -1845,7 +1854,7 @@ var Lt = () => ({
|
|
|
1845
1854
|
}
|
|
1846
1855
|
}
|
|
1847
1856
|
};
|
|
1848
|
-
},
|
|
1857
|
+
}, Wt = () => {
|
|
1849
1858
|
const e = new Map;
|
|
1850
1859
|
return {
|
|
1851
1860
|
name: "gstate-snapshot",
|
|
@@ -1865,7 +1874,7 @@ var Lt = () => ({
|
|
|
1865
1874
|
}
|
|
1866
1875
|
}
|
|
1867
1876
|
};
|
|
1868
|
-
},
|
|
1877
|
+
}, Qt = e => ({
|
|
1869
1878
|
name: "gstate-guard",
|
|
1870
1879
|
hooks: {
|
|
1871
1880
|
onBeforeSet: ({key: t, value: n, store: r}) => {
|
|
@@ -1874,7 +1883,7 @@ var Lt = () => ({
|
|
|
1874
1883
|
s && s(n);
|
|
1875
1884
|
}
|
|
1876
1885
|
}
|
|
1877
|
-
}),
|
|
1886
|
+
}), qt = e => ({
|
|
1878
1887
|
name: "gstate-analytics",
|
|
1879
1888
|
hooks: {
|
|
1880
1889
|
onSet: ({key: t, value: n}) => {
|
|
@@ -1892,7 +1901,7 @@ var Lt = () => ({
|
|
|
1892
1901
|
}));
|
|
1893
1902
|
}
|
|
1894
1903
|
}
|
|
1895
|
-
}),
|
|
1904
|
+
}), Ht = e => {
|
|
1896
1905
|
const t = new BroadcastChannel(e?.channelName || "gstate_sync");
|
|
1897
1906
|
let n = !1;
|
|
1898
1907
|
return {
|
|
@@ -1922,7 +1931,7 @@ var Lt = () => ({
|
|
|
1922
1931
|
}
|
|
1923
1932
|
}
|
|
1924
1933
|
};
|
|
1925
|
-
},
|
|
1934
|
+
}, Gt = () => {
|
|
1926
1935
|
if (Qe()) return {
|
|
1927
1936
|
name: "gstate-debug-noop",
|
|
1928
1937
|
hooks: {}
|
|
@@ -1960,7 +1969,7 @@ var Lt = () => ({
|
|
|
1960
1969
|
}
|
|
1961
1970
|
}
|
|
1962
1971
|
};
|
|
1963
|
-
},
|
|
1972
|
+
}, Xt = (e = {}) => {
|
|
1964
1973
|
const t = e.dbName || "rgs-db", n = e.storeName || "states", r = e.version || 1;
|
|
1965
1974
|
let s = null;
|
|
1966
1975
|
const o = () => new Promise((e, o) => {
|
|
@@ -2028,7 +2037,7 @@ var Lt = () => ({
|
|
|
2028
2037
|
}
|
|
2029
2038
|
}
|
|
2030
2039
|
};
|
|
2031
|
-
},
|
|
2040
|
+
}, Zt = e => {
|
|
2032
2041
|
const {adapter: t, autoSyncInterval: n} = e, r = new Map, s = {
|
|
2033
2042
|
lastSyncTimestamp: null,
|
|
2034
2043
|
totalKeysSynced: 0,
|
|
@@ -2082,7 +2091,7 @@ var Lt = () => ({
|
|
|
2082
2091
|
}
|
|
2083
2092
|
}
|
|
2084
2093
|
};
|
|
2085
|
-
},
|
|
2094
|
+
}, Yt = (e, t) => ({
|
|
2086
2095
|
name: "MongoDB-Atlas",
|
|
2087
2096
|
save: async n => (await fetch(`${e}/action/updateOne`, {
|
|
2088
2097
|
method: "POST",
|
|
@@ -2106,7 +2115,7 @@ var Lt = () => ({
|
|
|
2106
2115
|
upsert: !0
|
|
2107
2116
|
})
|
|
2108
2117
|
})).ok
|
|
2109
|
-
}),
|
|
2118
|
+
}), en = (e, t) => ({
|
|
2110
2119
|
name: "Firebase-Firestore",
|
|
2111
2120
|
save: async e => {
|
|
2112
2121
|
try {
|
|
@@ -2116,7 +2125,7 @@ var Lt = () => ({
|
|
|
2116
2125
|
return !1;
|
|
2117
2126
|
}
|
|
2118
2127
|
}
|
|
2119
|
-
}),
|
|
2128
|
+
}), tn = (e, t) => ({
|
|
2120
2129
|
name: "SQL-REST-API",
|
|
2121
2130
|
save: async n => {
|
|
2122
2131
|
const r = t();
|
|
@@ -2131,7 +2140,7 @@ var Lt = () => ({
|
|
|
2131
2140
|
credentials: "same-origin"
|
|
2132
2141
|
})).ok;
|
|
2133
2142
|
}
|
|
2134
|
-
}),
|
|
2143
|
+
}), nn = e => ({
|
|
2135
2144
|
name: "gstate-logger",
|
|
2136
2145
|
hooks: {
|
|
2137
2146
|
onSet: ({key: e, value: t, version: n}) => {
|
|
@@ -2140,27 +2149,28 @@ var Lt = () => ({
|
|
|
2140
2149
|
onRemove: ({key: e}) => {},
|
|
2141
2150
|
onTransaction: ({key: e}) => {}
|
|
2142
2151
|
}
|
|
2143
|
-
}),
|
|
2152
|
+
}), rn = (e, t) => {
|
|
2144
2153
|
const n = Ge("string" == typeof t ? {
|
|
2145
2154
|
namespace: t
|
|
2146
2155
|
} : t);
|
|
2147
2156
|
e && Object.entries(e).forEach(([e, t]) => {
|
|
2148
2157
|
null === n.get(e) && n._setSilently(e, t);
|
|
2149
2158
|
});
|
|
2150
|
-
|
|
2151
|
-
window.
|
|
2152
|
-
|
|
2159
|
+
const r = e => nt(e, n);
|
|
2160
|
+
return "undefined" == typeof window || Qe() || (window.gstate = r, window.gState = n,
|
|
2161
|
+
window.rgs = n), Object.assign(r, n);
|
|
2162
|
+
}, sn = (e, t) => tt()?.addAccessRule(e, t), on = (e, t, n) => tt()?.hasPermission(e, t, n) ?? !0, an = (e, t, n) => {
|
|
2153
2163
|
const r = tt();
|
|
2154
2164
|
if (!r) throw new Error("[gstate] recordConsent failed: No store found. call initState() first.");
|
|
2155
2165
|
return r.recordConsent(e, t, n);
|
|
2156
|
-
},
|
|
2166
|
+
}, cn = (e, t) => tt()?.hasConsent(e, t) ?? !1, ln = e => tt()?.getConsents(e) ?? [], un = (e, t) => tt()?.revokeConsent(e, t), dn = e => {
|
|
2157
2167
|
const t = tt();
|
|
2158
2168
|
if (!t) throw new Error("[gstate] exportUserData failed: No store found.");
|
|
2159
2169
|
return t.exportUserData(e);
|
|
2160
|
-
},
|
|
2170
|
+
}, fn = e => {
|
|
2161
2171
|
const t = tt();
|
|
2162
2172
|
if (!t) throw new Error("[gstate] deleteUserData failed: No store found.");
|
|
2163
2173
|
return t.deleteUserData(e);
|
|
2164
|
-
},
|
|
2174
|
+
}, yn = () => {}, pn = () => {};
|
|
2165
2175
|
|
|
2166
|
-
export { c as SyncEngine,
|
|
2176
|
+
export { c as SyncEngine, sn as addAccessRule, Vt as all, qt as analyticsPlugin, It as call, yn as clearAccessRules, pn as clearAllConsents, Zt as cloudSyncPlugin, Rt as createActions, Pt as createAsyncAction, Tt as createAsyncActions, gt as createAsyncStore, en as createFirestoreAdapter, Yt as createMongoAdapter, Dt as createNextStore, St as createSSRStore, Ut as createSaga, tn as createSqlRestAdapter, Ge as createStore, l as createSyncEngine, jt as createThunkStore, Gt as debugPlugin, bt as dehydrateStore, fn as deleteUserData, Re as deriveKeyFromPassword, Ye as destroyState, ot as destroySync, Bt as devToolsPlugin, Ie as exportKey, dn as exportUserData, Te as generateEncryptionKey, Pe as generateSalt, ln as getConsents, Mt as getSSRInitialState, tt as getStore, rn as gstate, Qt as guardPlugin, cn as hasConsent, on as hasPermission, wt as hydrateOnClient, Ft as immerPlugin, ze as importKey, Xt as indexedDBPlugin, Ze as initState, st as initSync, At as initializeFromSSR, _t as isClientSide, je as isCryptoAvailable, mt as isServerSide, Ue as logAudit, nn as loggerPlugin, zt as put, Nt as race, an as recordConsent, vt as rehydrateStore, un as revokeConsent, Lt as runSaga, Ke as sanitizeValue, Jt as schemaPlugin, xt as select, Ne as setAuditLogger, Wt as snapshotPlugin, Ht as syncPlugin, $t as take, ct as triggerSync, Kt as undoRedoPlugin, Ct as useDeferredStore, nt as useGState, kt as useHydrated, Ot as useHydrationStatus, et as useIsStoreReady, nt as useSimpleState, nt as useStore, lt as useStoreSubscribe, it as useSyncStatus, at as useSyncedState, Je as validateKey };
|
|
@@ -6,6 +6,38 @@ Complete API reference for RGS (Argis) - Reactive Global State.
|
|
|
6
6
|
|
|
7
7
|
## Core Functions
|
|
8
8
|
|
|
9
|
+
### `gstate`
|
|
10
|
+
|
|
11
|
+
Creates a reactive store with a built-in typed hook in one line.
|
|
12
|
+
|
|
13
|
+
```typescript
|
|
14
|
+
function gstate<S extends Record<string, unknown>>(
|
|
15
|
+
initialState: S,
|
|
16
|
+
configOrNamespace?: string | StoreConfig<S>
|
|
17
|
+
): (<K extends keyof S>(key: K) => readonly [S[K] | undefined, (val: S[K] | StateUpdater<S[K]>, options?: PersistOptions) => boolean]) & IStore<S>
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
**Parameters:**
|
|
21
|
+
- `initialState` - Initial state object
|
|
22
|
+
- `configOrNamespace` - Optional namespace string or full StoreConfig
|
|
23
|
+
|
|
24
|
+
**Returns:** A callable function that returns typed hooks when called with a key, plus the full store interface.
|
|
25
|
+
|
|
26
|
+
**Example:**
|
|
27
|
+
```typescript
|
|
28
|
+
const useCounter = gstate({ count: 0, name: 'John' })
|
|
29
|
+
|
|
30
|
+
// Get typed hook for specific key
|
|
31
|
+
const [count, setCount] = useCounter('count')
|
|
32
|
+
const [name, setName] = useCounter('name')
|
|
33
|
+
|
|
34
|
+
// Or use store methods directly
|
|
35
|
+
useCounter.set('count', 5)
|
|
36
|
+
useCounter.get('count')
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
9
41
|
### `initState`
|
|
10
42
|
|
|
11
43
|
Initializes a global store instance.
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# ⚡ Chapter 2: Quick Start - From Zero to State in 30 Seconds
|
|
2
|
+
|
|
3
|
+
Stop wasting time on boilerplate. Here is how you deploy the RGS Panzer in your React project.
|
|
4
|
+
|
|
5
|
+
## 1. Installation
|
|
6
|
+
|
|
7
|
+
The engine is lightweight but armored.
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
npm install @biglogic/rgs
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## 2. Quick Start: The Zen Way (Recommended)
|
|
14
|
+
|
|
15
|
+
The simplest way to use RGS - one line creates both store and typed hook.
|
|
16
|
+
|
|
17
|
+
```typescript
|
|
18
|
+
import { gstate } from '@biglogic/rgs';
|
|
19
|
+
|
|
20
|
+
// ONE line creates a typed store + hook
|
|
21
|
+
const useCounter = gstate({ count: 0, name: 'John' })
|
|
22
|
+
|
|
23
|
+
function Counter() {
|
|
24
|
+
// Get typed hook for specific keys
|
|
25
|
+
const [count, setCount] = useCounter('count')
|
|
26
|
+
const [name, setName] = useCounter('name')
|
|
27
|
+
|
|
28
|
+
return (
|
|
29
|
+
<div>
|
|
30
|
+
<p>Hello, {name}!</p>
|
|
31
|
+
<p>Count: {count}</p>
|
|
32
|
+
<button onClick={() =u003e setCount(count + 1)}>
|
|
33
|
+
+1
|
|
34
|
+
</button>
|
|
35
|
+
</div>
|
|
36
|
+
)
|
|
37
|
+
}
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
Or use store methods directly:
|
|
41
|
+
```typescript
|
|
42
|
+
useCounter.set('count', 5)
|
|
43
|
+
useCounter.get('count')
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## 3. Classic Way (Global Store)
|
|
47
|
+
|
|
48
|
+
If you prefer a global store approach:
|
|
49
|
+
|
|
50
|
+
```typescript
|
|
51
|
+
import { initState, useStore } from '@biglogic/rgs';
|
|
52
|
+
|
|
53
|
+
// Initialize once at app root
|
|
54
|
+
initState({
|
|
55
|
+
namespace: 'my-awesome-app',
|
|
56
|
+
persistence: true
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
// Use anywhere in your app
|
|
60
|
+
const [count, setCount] = useStore('count')
|
|
61
|
+
const [user, setUser] = useStore('user')
|
|
62
|
+
```
|
package/package.json
CHANGED