@effect-rx/rx-react 0.1.2 → 0.1.4

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.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["./src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,QAAQ,MAAM,wBAAwB,CAAA;AAClD,OAAO,KAAK,KAAK,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,KAAK,QAAQ,MAAM,wBAAwB,CAAA;AAClD,OAAO,KAAK,MAAM,MAAM,sBAAsB,CAAA;AAC9C,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAA;AAEtC;;;GAGG;AACH,eAAO,MAAM,eAAe,kCAA0D,CAAA;AAqBtF;;;GAGG;AACH,eAAO,MAAM,UAAU,wBAOtB,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,QAAQ,8CAA6C,IAGjE,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,WAAW,wDAAuD,IAG9E,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,KAAK,2DAA0D,IAAI,CAIpE,CAAA;AAEZ;;;GAGG;AACH,eAAO,MAAM,WAAW,qEAAoE,IAAI,CAIpF,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["./src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,QAAQ,MAAM,wBAAwB,CAAA;AAClD,OAAO,KAAK,KAAK,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,KAAK,QAAQ,MAAM,wBAAwB,CAAA;AAClD,OAAO,KAAK,MAAM,MAAM,sBAAsB,CAAA;AAC9C,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAA;AAEtC;;;GAGG;AACH,eAAO,MAAM,eAAe,kCAA0D,CAAA;AAwBtF;;;GAGG;AACH,eAAO,MAAM,UAAU,wBAOtB,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,QAAQ,8CAA6C,IAGjE,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,WAAW,wDAAuD,IAG9E,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,KAAK,2DAA0D,IAAI,CAIpE,CAAA;AAEZ;;;GAGG;AACH,eAAO,MAAM,WAAW,qEAAoE,IAAI,CAIpF,CAAA"}
package/index.js CHANGED
@@ -24,19 +24,24 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
24
24
  */
25
25
  const RegistryContext = /*#__PURE__*/React.createContext( /*#__PURE__*/Registry.make());
26
26
  exports.RegistryContext = RegistryContext;
27
- class RxStore {
28
- constructor(registry, rx) {
29
- this.registry = registry;
30
- this.rx = rx;
31
- this.subscribe = f => {
32
- this.value = this.registry.get(this.rx);
33
- return this.registry.subscribe(this.rx, a => {
34
- this.value = a;
35
- f();
36
- });
37
- };
38
- this.snapshot = () => this.value;
27
+ function makeStore(registry, rx) {
28
+ let getter = function () {
29
+ return registry.get(rx);
30
+ };
31
+ function subscribe(f) {
32
+ const [get, unmount] = registry.subscribeGetter(rx, f);
33
+ getter = get;
34
+ return unmount;
39
35
  }
36
+ function snapshot() {
37
+ return getter();
38
+ }
39
+ return {
40
+ rx,
41
+ registry,
42
+ subscribe,
43
+ snapshot
44
+ };
40
45
  }
41
46
  /**
42
47
  * @since 1.0.0
@@ -46,7 +51,7 @@ const useRxValue = rx => {
46
51
  const registry = React.useContext(RegistryContext);
47
52
  const store = React.useRef(undefined);
48
53
  if (store.current?.rx !== rx || store.current?.registry !== registry) {
49
- store.current = new RxStore(registry, rx);
54
+ store.current = makeStore(registry, rx);
50
55
  }
51
56
  return React.useSyncExternalStore(store.current.subscribe, store.current.snapshot);
52
57
  };
package/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["Registry","_interopRequireWildcard","require","Registry_1","exports","React","Result","Result_1","Rx","Rx_1","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","RegistryContext","createContext","make","RxStore","constructor","registry","rx","subscribe","f","value","a","snapshot","useRxValue","useContext","store","useRef","undefined","current","useSyncExternalStore","useSetRx","useCallback","useUpdateRx","useRx","useRxUpdate"],"sources":["./src/index.ts"],"sourcesContent":[null],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["Registry","_interopRequireWildcard","require","Registry_1","exports","React","Result","Result_1","Rx","Rx_1","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","RegistryContext","createContext","make","makeStore","registry","rx","getter","subscribe","f","unmount","subscribeGetter","snapshot","useRxValue","useContext","store","useRef","undefined","current","useSyncExternalStore","useSetRx","useCallback","value","useUpdateRx","useRx","useRxUpdate"],"sources":["./src/index.ts"],"sourcesContent":[null],"mappings":"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"}
package/mjs/index.mjs CHANGED
@@ -14,19 +14,24 @@ export { Rx_1 as Rx };
14
14
  * @category context
15
15
  */
16
16
  export const RegistryContext = /*#__PURE__*/React.createContext( /*#__PURE__*/Registry.make());
17
- class RxStore {
18
- constructor(registry, rx) {
19
- this.registry = registry;
20
- this.rx = rx;
21
- this.subscribe = f => {
22
- this.value = this.registry.get(this.rx);
23
- return this.registry.subscribe(this.rx, a => {
24
- this.value = a;
25
- f();
26
- });
27
- };
28
- this.snapshot = () => this.value;
17
+ function makeStore(registry, rx) {
18
+ let getter = function () {
19
+ return registry.get(rx);
20
+ };
21
+ function subscribe(f) {
22
+ const [get, unmount] = registry.subscribeGetter(rx, f);
23
+ getter = get;
24
+ return unmount;
29
25
  }
26
+ function snapshot() {
27
+ return getter();
28
+ }
29
+ return {
30
+ rx,
31
+ registry,
32
+ subscribe,
33
+ snapshot
34
+ };
30
35
  }
31
36
  /**
32
37
  * @since 1.0.0
@@ -36,7 +41,7 @@ export const useRxValue = rx => {
36
41
  const registry = React.useContext(RegistryContext);
37
42
  const store = React.useRef(undefined);
38
43
  if (store.current?.rx !== rx || store.current?.registry !== registry) {
39
- store.current = new RxStore(registry, rx);
44
+ store.current = makeStore(registry, rx);
40
45
  }
41
46
  return React.useSyncExternalStore(store.current.subscribe, store.current.snapshot);
42
47
  };
package/mjs/index.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":["Registry","React","Result","Rx","RegistryContext","createContext","make","RxStore","constructor","registry","rx","subscribe","f","value","get","a","snapshot","useRxValue","useContext","store","useRef","undefined","current","useSyncExternalStore","useSetRx","useCallback","set","useUpdateRx","useRx","useRxUpdate"],"sources":["../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA;;;AAGA,OAAO,KAAKA,QAAQ,MAAM,wBAAwB;AAElD,OAAO,KAAKC,KAAK,MAAM,OAAO;4BAEJ,wBAAwB;uBAAtCD,QAAQ;0BACI,sBAAsB;qBAAlCE,MAAM;sBACE,kBAAkB;iBAA1BC,EAAE;AAEd;;;;AAIA,OAAO,MAAMC,eAAe,gBAAGH,KAAK,CAACI,aAAa,eAAoBL,QAAQ,CAACM,IAAI,EAAE,CAAC;AAEtF,MAAMC,OAAO;EACXC,YACWC,QAA2B,EAC3BC,EAAY;IADZ,KAAAD,QAAQ,GAARA,QAAQ;IACR,KAAAC,EAAE,GAAFA,EAAE;IAKb,KAAAC,SAAS,GAAIC,CAAa,IAAgB;MACxC,IAAI,CAACC,KAAK,GAAG,IAAI,CAACJ,QAAQ,CAACK,GAAG,CAAC,IAAI,CAACJ,EAAE,CAAC;MACvC,OAAO,IAAI,CAACD,QAAQ,CAACE,SAAS,CAAC,IAAI,CAACD,EAAE,EAAGK,CAAC,IAAI;QAC5C,IAAI,CAACF,KAAK,GAAGE,CAAC;QACdH,CAAC,EAAE;MACL,CAAC,CAAC;IACJ,CAAC;IAED,KAAAI,QAAQ,GAAG,MAAS,IAAI,CAACH,KAAK;EAZ3B;;AAeL;;;;AAIA,OAAO,MAAMI,UAAU,GAAOP,EAAY,IAAO;EAC/C,MAAMD,QAAQ,GAAGR,KAAK,CAACiB,UAAU,CAACd,eAAe,CAAC;EAClD,MAAMe,KAAK,GAAGlB,KAAK,CAACmB,MAAM,CAAaC,SAAgB,CAAC;EACxD,IAAIF,KAAK,CAACG,OAAO,EAAEZ,EAAE,KAAKA,EAAE,IAAIS,KAAK,CAACG,OAAO,EAAEb,QAAQ,KAAKA,QAAQ,EAAE;IACpEU,KAAK,CAACG,OAAO,GAAG,IAAIf,OAAO,CAACE,QAAQ,EAAEC,EAAE,CAAC;;EAE3C,OAAOT,KAAK,CAACsB,oBAAoB,CAACJ,KAAK,CAACG,OAAO,CAACX,SAAS,EAAEQ,KAAK,CAACG,OAAO,CAACN,QAAQ,CAAC;AACpF,CAAC;AAED;;;;AAIA,OAAO,MAAMQ,QAAQ,GAAUd,EAAsB,IAAoB;EACvE,MAAMD,QAAQ,GAAGR,KAAK,CAACiB,UAAU,CAACd,eAAe,CAAC;EAClD,OAAOH,KAAK,CAACwB,WAAW,CAAEZ,KAAK,IAAKJ,QAAQ,CAACiB,GAAG,CAAChB,EAAE,EAAEG,KAAK,CAAC,EAAE,CAACJ,QAAQ,EAAEC,EAAE,CAAC,CAAC;AAC9E,CAAC;AAED;;;;AAIA,OAAO,MAAMiB,WAAW,GAAUjB,EAAsB,IAA8B;EACpF,MAAMD,QAAQ,GAAGR,KAAK,CAACiB,UAAU,CAACd,eAAe,CAAC;EAClD,OAAOH,KAAK,CAACwB,WAAW,CAAEb,CAAC,IAAKH,QAAQ,CAACiB,GAAG,CAAChB,EAAE,EAAEE,CAAC,CAACH,QAAQ,CAACK,GAAG,CAACJ,EAAE,CAAC,CAAC,CAAC,EAAE,CAACD,QAAQ,EAAEC,EAAE,CAAC,CAAC;AACxF,CAAC;AAED;;;;AAIA,OAAO,MAAMkB,KAAK,GAAUlB,EAAsB,IAChD,CACEO,UAAU,CAACP,EAAE,CAAC,EACdc,QAAQ,CAACd,EAAE,CAAC,CACJ;AAEZ;;;;AAIA,OAAO,MAAMmB,WAAW,GAAUnB,EAAsB,IACtD,CACEO,UAAU,CAACP,EAAE,CAAC,EACdiB,WAAW,CAACjB,EAAE,CAAC,CACP"}
1
+ {"version":3,"file":"index.mjs","names":["Registry","React","Result","Rx","RegistryContext","createContext","make","makeStore","registry","rx","getter","get","subscribe","f","unmount","subscribeGetter","snapshot","useRxValue","useContext","store","useRef","undefined","current","useSyncExternalStore","useSetRx","useCallback","value","set","useUpdateRx","useRx","useRxUpdate"],"sources":["../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA;;;AAGA,OAAO,KAAKA,QAAQ,MAAM,wBAAwB;AAElD,OAAO,KAAKC,KAAK,MAAM,OAAO;4BAEJ,wBAAwB;uBAAtCD,QAAQ;0BACI,sBAAsB;qBAAlCE,MAAM;sBACE,kBAAkB;iBAA1BC,EAAE;AAEd;;;;AAIA,OAAO,MAAMC,eAAe,gBAAGH,KAAK,CAACI,aAAa,eAAoBL,QAAQ,CAACM,IAAI,EAAE,CAAC;AAStF,SAASC,SAASA,CAAIC,QAA2B,EAAEC,EAAY;EAC7D,IAAIC,MAAM,GAAG,SAAAA,CAAA;IACX,OAAOF,QAAQ,CAACG,GAAG,CAACF,EAAE,CAAC;EACzB,CAAC;EACD,SAASG,SAASA,CAACC,CAAa;IAC9B,MAAM,CAACF,GAAG,EAAEG,OAAO,CAAC,GAAGN,QAAQ,CAACO,eAAe,CAACN,EAAE,EAAEI,CAAC,CAAC;IACtDH,MAAM,GAAGC,GAAG;IACZ,OAAOG,OAAO;EAChB;EACA,SAASE,QAAQA,CAAA;IACf,OAAON,MAAM,EAAE;EACjB;EACA,OAAO;IAAED,EAAE;IAAED,QAAQ;IAAEI,SAAS;IAAEI;EAAQ,CAAE;AAC9C;AAEA;;;;AAIA,OAAO,MAAMC,UAAU,GAAOR,EAAY,IAAO;EAC/C,MAAMD,QAAQ,GAAGP,KAAK,CAACiB,UAAU,CAACd,eAAe,CAAC;EAClD,MAAMe,KAAK,GAAGlB,KAAK,CAACmB,MAAM,CAAaC,SAAgB,CAAC;EACxD,IAAIF,KAAK,CAACG,OAAO,EAAEb,EAAE,KAAKA,EAAE,IAAIU,KAAK,CAACG,OAAO,EAAEd,QAAQ,KAAKA,QAAQ,EAAE;IACpEW,KAAK,CAACG,OAAO,GAAGf,SAAS,CAACC,QAAQ,EAAEC,EAAE,CAAC;;EAEzC,OAAOR,KAAK,CAACsB,oBAAoB,CAACJ,KAAK,CAACG,OAAO,CAACV,SAAS,EAAEO,KAAK,CAACG,OAAO,CAACN,QAAQ,CAAC;AACpF,CAAC;AAED;;;;AAIA,OAAO,MAAMQ,QAAQ,GAAUf,EAAsB,IAAoB;EACvE,MAAMD,QAAQ,GAAGP,KAAK,CAACiB,UAAU,CAACd,eAAe,CAAC;EAClD,OAAOH,KAAK,CAACwB,WAAW,CAAEC,KAAK,IAAKlB,QAAQ,CAACmB,GAAG,CAAClB,EAAE,EAAEiB,KAAK,CAAC,EAAE,CAAClB,QAAQ,EAAEC,EAAE,CAAC,CAAC;AAC9E,CAAC;AAED;;;;AAIA,OAAO,MAAMmB,WAAW,GAAUnB,EAAsB,IAA8B;EACpF,MAAMD,QAAQ,GAAGP,KAAK,CAACiB,UAAU,CAACd,eAAe,CAAC;EAClD,OAAOH,KAAK,CAACwB,WAAW,CAAEZ,CAAC,IAAKL,QAAQ,CAACmB,GAAG,CAAClB,EAAE,EAAEI,CAAC,CAACL,QAAQ,CAACG,GAAG,CAACF,EAAE,CAAC,CAAC,CAAC,EAAE,CAACD,QAAQ,EAAEC,EAAE,CAAC,CAAC;AACxF,CAAC;AAED;;;;AAIA,OAAO,MAAMoB,KAAK,GAAUpB,EAAsB,IAChD,CACEQ,UAAU,CAACR,EAAE,CAAC,EACde,QAAQ,CAACf,EAAE,CAAC,CACJ;AAEZ;;;;AAIA,OAAO,MAAMqB,WAAW,GAAUrB,EAAsB,IACtD,CACEQ,UAAU,CAACR,EAAE,CAAC,EACdmB,WAAW,CAACnB,EAAE,CAAC,CACP"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@effect-rx/rx-react",
3
- "version": "0.1.2",
3
+ "version": "0.1.4",
4
4
  "description": "Reactive toolkit for Effect",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -35,7 +35,7 @@
35
35
  "sideEffects": [],
36
36
  "author": "Effect contributors",
37
37
  "dependencies": {
38
- "@effect-rx/rx": "^0.1.2"
38
+ "@effect-rx/rx": "^0.1.4"
39
39
  },
40
40
  "peerDependencies": {
41
41
  "@effect/data": "^0.18.5",
package/src/index.ts CHANGED
@@ -15,23 +15,26 @@ export * as Rx from "@effect-rx/rx/Rx"
15
15
  */
16
16
  export const RegistryContext = React.createContext<Registry.Registry>(Registry.make())
17
17
 
18
- class RxStore<A> {
19
- constructor(
20
- readonly registry: Registry.Registry,
21
- readonly rx: Rx.Rx<A>
22
- ) {}
23
-
24
- value!: A
18
+ interface RxStore<A> {
19
+ readonly rx: Rx.Rx<A>
20
+ readonly registry: Registry.Registry
21
+ readonly subscribe: (f: () => void) => () => void
22
+ readonly snapshot: () => A
23
+ }
25
24
 
26
- subscribe = (f: () => void): () => void => {
27
- this.value = this.registry.get(this.rx)
28
- return this.registry.subscribe(this.rx, (a) => {
29
- this.value = a
30
- f()
31
- })
25
+ function makeStore<A>(registry: Registry.Registry, rx: Rx.Rx<A>): RxStore<A> {
26
+ let getter = function() {
27
+ return registry.get(rx)
32
28
  }
33
-
34
- snapshot = (): A => this.value
29
+ function subscribe(f: () => void): () => void {
30
+ const [get, unmount] = registry.subscribeGetter(rx, f)
31
+ getter = get
32
+ return unmount
33
+ }
34
+ function snapshot() {
35
+ return getter()
36
+ }
37
+ return { rx, registry, subscribe, snapshot }
35
38
  }
36
39
 
37
40
  /**
@@ -42,7 +45,7 @@ export const useRxValue = <A>(rx: Rx.Rx<A>): A => {
42
45
  const registry = React.useContext(RegistryContext)
43
46
  const store = React.useRef<RxStore<A>>(undefined as any)
44
47
  if (store.current?.rx !== rx || store.current?.registry !== registry) {
45
- store.current = new RxStore(registry, rx)
48
+ store.current = makeStore(registry, rx)
46
49
  }
47
50
  return React.useSyncExternalStore(store.current.subscribe, store.current.snapshot)
48
51
  }