@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/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, ct, lt, ut, dt, ft, yt = () => {
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
- }, pt = async e => {
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
- }, ht = (e, t) => {
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
- }, gt = () => "undefined" == typeof window || void 0 === window.document, mt = () => !gt(), _t = e => {
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 && gt() && (r = He());
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 && gt() && (Object.entries(e.initialState).forEach(([e, t]) => {
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 && !gt()) {
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: () => gt() ? JSON.stringify(s.getSnapshot()) : a,
1573
+ getSerializedState: () => mt() ? JSON.stringify(s.getSnapshot()) : a,
1565
1574
  isHydrated: () => o || s.isReady
1566
1575
  });
1567
- }, St = async e => {
1568
- gt() || await e.whenReady();
1569
- }, wt = e => JSON.stringify(e.getSnapshot()), bt = (e, t) => {
1570
- if (!gt()) try {
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
- }, vt = () => (it || (it = f("react"), ct = it.useState, lt = it.useEffect, ut = it.useSyncExternalStore,
1577
- dt = it.useMemo, ft = it.useCallback), {
1578
- React: it,
1579
- useState: ct,
1580
- useEffect: lt,
1581
- useSyncExternalStore: ut,
1582
- useMemo: dt,
1583
- useCallback: ft
1584
- }), Et = () => {
1585
- const {useSyncExternalStore: e} = vt();
1586
- return e(e => () => {}, () => mt(), () => !0);
1587
- }, kt = () => {
1588
- const {useState: e, useEffect: t} = vt(), [n, r] = e(() => gt()), [s, o] = e(() => gt());
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 (gt()) return;
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
- }, Ot = e => {
1601
- const {useState: t, useEffect: n, useMemo: r} = vt(), [s, o] = t(() => !!gt() || (e.isHydrated?.() ?? e.isReady));
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 (gt()) return;
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
- }, Ct = e => {
1649
- const t = _t(e);
1657
+ }, Dt = e => {
1658
+ const t = St(e);
1650
1659
  return Object.assign(t, {
1651
- useHydrated: Et,
1652
- useHydrationStatus: kt,
1660
+ useHydrated: kt,
1661
+ useHydrationStatus: Ot,
1653
1662
  useDeferredStore: e => {
1654
- const n = Ot(t), {useCallback: r} = vt();
1663
+ const n = Ct(t), {useCallback: r} = Et();
1655
1664
  return (e => {
1656
- const {useSyncExternalStore: t} = vt();
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
- }, Dt = e => e.getSnapshot(), Mt = (e, t) => {
1662
- gt() || Object.entries(t).forEach(([t, n]) => {
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
- }, At = (e, t) => {
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
- }, jt = (e, t) => {
1685
- const n = At(e);
1693
+ }, Rt = (e, t) => {
1694
+ const n = jt(e);
1686
1695
  return Object.assign(n.dispatch, t);
1687
- }, Rt = (e, t) => async (n, r) => {
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
- }, Pt = (e, t) => {
1718
- At(e);
1726
+ }, Tt = (e, t) => {
1727
+ jt(e);
1719
1728
  const n = {};
1720
- for (const [e, r] of Object.entries(t)) n[e] = Rt(e, r);
1729
+ for (const [e, r] of Object.entries(t)) n[e] = Pt(e, r);
1721
1730
  return n;
1722
- }, Tt = (e, ...t) => ({
1731
+ }, It = (e, ...t) => ({
1723
1732
  type: "call",
1724
1733
  fn: e,
1725
1734
  args: t
1726
- }), It = e => ({
1735
+ }), zt = e => ({
1727
1736
  type: "put",
1728
1737
  action: e
1729
- }), zt = e => ({
1738
+ }), xt = e => ({
1730
1739
  type: "select",
1731
1740
  selector: e
1732
- }), xt = e => ({
1741
+ }), $t = e => ({
1733
1742
  type: "take",
1734
1743
  pattern: e
1735
- }), $t = e => ({
1744
+ }), Vt = e => ({
1736
1745
  type: "all",
1737
1746
  effects: e
1738
- }), Vt = e => ({
1747
+ }), Nt = e => ({
1739
1748
  type: "race",
1740
1749
  effects: e
1741
- }), Nt = e => async (t, n) => {
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
- }, Ut = (e, t) => (At(e).dispatch(t), () => {});
1779
+ }, Lt = (e, t) => (jt(e).dispatch(t), () => {});
1771
1780
 
1772
1781
  g();
1773
1782
 
1774
- var Lt = () => ({
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
- }), Ft = e => {
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
- }, Kt = e => ({
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
- }), Jt = e => {
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
- }, Bt = () => {
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
- }, Wt = e => ({
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
- }), Qt = e => ({
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
- }), qt = e => {
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
- }, Ht = () => {
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
- }, Gt = (e = {}) => {
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
- }, Xt = e => {
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
- }, Zt = (e, t) => ({
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
- }), Yt = (e, t) => ({
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
- }), en = (e, t) => ({
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
- }), tn = e => ({
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
- }), nn = (e, t) => {
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
- return "undefined" == typeof window || Qe() || (window.gstate = n, window.gState = n,
2151
- window.rgs = n), Object.assign(e => nt(e, n), n);
2152
- }, rn = (e, t) => tt()?.addAccessRule(e, t), sn = (e, t, n) => tt()?.hasPermission(e, t, n) ?? !0, on = (e, t, n) => {
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
- }, an = (e, t) => tt()?.hasConsent(e, t) ?? !1, cn = e => tt()?.getConsents(e) ?? [], ln = (e, t) => tt()?.revokeConsent(e, t), un = e => {
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
- }, dn = e => {
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
- }, fn = () => {}, yn = () => {};
2174
+ }, yn = () => {}, pn = () => {};
2165
2175
 
2166
- export { c as SyncEngine, rn as addAccessRule, $t as all, Qt as analyticsPlugin, Tt as call, fn as clearAccessRules, yn as clearAllConsents, Xt as cloudSyncPlugin, jt as createActions, Rt as createAsyncAction, Pt as createAsyncActions, ht as createAsyncStore, Yt as createFirestoreAdapter, Zt as createMongoAdapter, Ct as createNextStore, _t as createSSRStore, Nt as createSaga, en as createSqlRestAdapter, Ge as createStore, l as createSyncEngine, At as createThunkStore, Ht as debugPlugin, wt as dehydrateStore, dn as deleteUserData, Re as deriveKeyFromPassword, Ye as destroyState, ot as destroySync, Jt as devToolsPlugin, Ie as exportKey, un as exportUserData, Te as generateEncryptionKey, Pe as generateSalt, cn as getConsents, Dt as getSSRInitialState, tt as getStore, nn as gstate, Wt as guardPlugin, an as hasConsent, sn as hasPermission, St as hydrateOnClient, Lt as immerPlugin, ze as importKey, Gt as indexedDBPlugin, Ze as initState, st as initSync, Mt as initializeFromSSR, mt as isClientSide, je as isCryptoAvailable, gt as isServerSide, Ue as logAudit, tn as loggerPlugin, It as put, Vt as race, on as recordConsent, bt as rehydrateStore, ln as revokeConsent, Ut as runSaga, Ke as sanitizeValue, Kt as schemaPlugin, zt as select, Ne as setAuditLogger, Bt as snapshotPlugin, qt as syncPlugin, xt as take, pt as triggerSync, Ft as undoRedoPlugin, Ot as useDeferredStore, nt as useGState, Et as useHydrated, kt as useHydrationStatus, et as useIsStoreReady, nt as useSimpleState, nt as useStore, yt as useSyncStatus, at as useSyncedState, Je as validateKey };
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
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@biglogic/rgs",
3
3
  "code": "argis",
4
- "version": "3.9.8",
4
+ "version": "3.9.10",
5
5
  "description": "Argis (RGS) - Reactive Global State: A react state everywhere made easy",
6
6
  "main": "./index.cjs",
7
7
  "browser": "./index.cjs",