Skip to content

Commit 19840fd

Browse files
committed
feat: effect observables
1 parent 2b5b06c commit 19840fd

13 files changed

+126
-83
lines changed

package-lock.json

Lines changed: 64 additions & 32 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/core/cjsBuild.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ require("esbuild")
2222
: "./dist/core.cjs.development.js",
2323
target: "es2015",
2424
minify: isProd,
25-
external: ["react", "rxjs", "@rxstate/core", "use-sync-external-store"],
25+
external: ["react", "rxjs", "@rx-state/core", "use-sync-external-store"],
2626
format: "cjs",
2727
sourcemap: true,
2828
plugins: [fixCjsPlugin],

packages/core/package.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"version": "0.9.8",
2+
"version": "0.10.0-rc.3",
33
"repository": {
44
"type": "git",
55
"url": "git+https://github.com/re-rxjs/react-rxjs.git"
@@ -25,8 +25,8 @@
2525
],
2626
"scripts": {
2727
"build": "npm run build:ts && npm run build:esm2017 && npm run build:esm2019 && npm run build:cjs:dev && npm run build:cjs:prod",
28-
"build:esm2019": "esbuild src/index.tsx --bundle --outfile=./dist/core.es2019.mjs --target=es2019 --external:react --external:rxjs --external:@rxstate/core --external:use-sync-external-store --format=esm --sourcemap",
29-
"build:esm2017": "esbuild src/index.tsx --bundle --outfile=./dist/core.es2017.js --target=es2017 --external:react --external:rxjs --external:@rxstate/core --external:use-sync-external-store --format=esm --sourcemap",
28+
"build:esm2019": "esbuild src/index.tsx --bundle --outfile=./dist/core.es2019.mjs --target=es2019 --external:react --external:rxjs --external:@rx-state/core --external:use-sync-external-store --format=esm --sourcemap",
29+
"build:esm2017": "esbuild src/index.tsx --bundle --outfile=./dist/core.es2017.js --target=es2017 --external:react --external:rxjs --external:@rx-state/core --external:use-sync-external-store --format=esm --sourcemap",
3030
"build:cjs:dev": "node cjsBuild.js",
3131
"build:cjs:prod": "node cjsBuild.js --prod",
3232
"build:ts": "tsc -p ./tsconfig-build.json --outDir ./dist --skipLibCheck --emitDeclarationOnly",
@@ -50,7 +50,7 @@
5050
"Victor Oliva (https://github.com/voliva)"
5151
],
5252
"dependencies": {
53-
"@rxstate/core": "^0.0.1",
53+
"@rx-state/core": "0.1.0-rc.3",
5454
"use-sync-external-store": "^1.0.0"
5555
},
5656
"devDependencies": {

packages/core/src/SUSPENSE.ts

Lines changed: 0 additions & 7 deletions
This file was deleted.

packages/core/src/Subscribe.test.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { state } from "@rxstate/core"
1+
import { state } from "@rx-state/core"
22
import { render, screen, act } from "@testing-library/react"
33
import React, { StrictMode, useState, useEffect } from "react"
44
import { defer, EMPTY, NEVER, Observable, of, startWith } from "rxjs"

packages/core/src/bind/connectFactoryObservable.ts

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
11
import { Observable } from "rxjs"
2-
import { SUSPENSE } from "../SUSPENSE"
32
import { EMPTY_VALUE } from "../internal/empty-value"
4-
import { state, StateObservable } from "@rxstate/core"
3+
import {
4+
EffectObservable,
5+
state,
6+
StateObservable,
7+
SUSPENSE,
8+
} from "@rx-state/core"
59
import { useStateObservable } from "../useStateObservable"
610

711
/**
@@ -23,12 +27,12 @@ import { useStateObservable } from "../useStateObservable"
2327
* subscription, then the hook will leverage React Suspense while it's waiting
2428
* for the first value.
2529
*/
26-
export default function connectFactoryObservable<A extends [], O>(
27-
getObservable: (...args: A) => Observable<O>,
30+
export default function connectFactoryObservable<A extends [], O, E>(
31+
getObservable: (...args: A) => EffectObservable<O, E>,
2832
defaultValue: O | ((...args: A) => O),
2933
): [
30-
(...args: A) => Exclude<O, typeof SUSPENSE>,
31-
(...args: A) => StateObservable<O>,
34+
(...args: A) => Exclude<O | E, SUSPENSE>,
35+
(...args: A) => StateObservable<O, E>,
3236
] {
3337
const args:
3438
| [(...args: A) => Observable<O>]
@@ -37,6 +41,6 @@ export default function connectFactoryObservable<A extends [], O>(
3741
? [getObservable]
3842
: [getObservable, defaultValue]
3943

40-
const obs = state(...(args as [(...args: A) => Observable<O>]))
44+
const obs = state(...(args as [(...args: A) => EffectObservable<O, E>]))
4145
return [(...input: A) => useStateObservable(obs(...input)), obs]
4246
}

packages/core/src/bind/connectObservable.test.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -477,7 +477,7 @@ describe("connectObservable", () => {
477477
it("allows async errors to be caught in error boundaries with suspense", async () => {
478478
const errStream = new Subject()
479479
const [useError, errStream$] = bind(errStream)
480-
const errStream$WithoutErrors = errStream$.pipe(catchError(() => EMPTY))
480+
const errStream$WithoutErrors = errStream$.pipe(catchError(() => NEVER))
481481

482482
const ErrorComponent = () => {
483483
const value = useError()

packages/core/src/bind/connectObservable.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { EMPTY_VALUE } from "../internal/empty-value"
22
import { Observable } from "rxjs"
33
import { useStateObservable } from "../useStateObservable"
4-
import { state } from "@rxstate/core"
4+
import { state } from "@rx-state/core"
55

66
/**
77
* Accepts: An Observable.

packages/core/src/bind/index.ts

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
import { Observable } from "rxjs"
2-
import { SUSPENSE } from "../SUSPENSE"
32
import connectFactoryObservable from "./connectFactoryObservable"
43
import connectObservable from "./connectObservable"
54
import { EMPTY_VALUE } from "../internal/empty-value"
6-
import { StateObservable, DefaultedStateObservable } from "@rxstate/core"
5+
import {
6+
StateObservable,
7+
DefaultedStateObservable,
8+
SUSPENSE,
9+
} from "@rx-state/core"
710

811
/**
912
* Binds an observable to React
@@ -21,7 +24,7 @@ import { StateObservable, DefaultedStateObservable } from "@rxstate/core"
2124
*/
2225
export function bind<T>(
2326
observable: Observable<T>,
24-
): [() => Exclude<T, typeof SUSPENSE>, StateObservable<T>]
27+
): [() => Exclude<T, typeof SUSPENSE>, StateObservable<T, never>]
2528

2629
/**
2730
* Binds an observable to React
@@ -38,7 +41,7 @@ export function bind<T>(
3841
export function bind<T>(
3942
observable: Observable<T>,
4043
defaultValue: T,
41-
): [() => Exclude<T, typeof SUSPENSE>, DefaultedStateObservable<T>]
44+
): [() => Exclude<T, typeof SUSPENSE>, DefaultedStateObservable<T, never>]
4245

4346
/**
4447
* Binds a factory observable to React
@@ -62,7 +65,7 @@ export function bind<A extends unknown[], O>(
6265
getObservable: (...args: A) => Observable<O>,
6366
): [
6467
(...args: A) => Exclude<O, typeof SUSPENSE>,
65-
(...args: A) => StateObservable<O>,
68+
(...args: A) => StateObservable<O, never>,
6669
]
6770

6871
/**
@@ -86,7 +89,7 @@ export function bind<A extends unknown[], O>(
8689
defaultValue: O | ((...args: A) => O),
8790
): [
8891
(...args: A) => Exclude<O, typeof SUSPENSE>,
89-
(...args: A) => DefaultedStateObservable<O>,
92+
(...args: A) => DefaultedStateObservable<O, never>,
9093
]
9194

9295
export function bind(observable: any, defaultValue?: any) {

packages/core/src/index.tsx

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
1-
export * from "@rxstate/core"
1+
export * from "@rx-state/core"
22
export { shareLatest } from "./shareLatest"
33
export { useStateObservable } from "./useStateObservable"
44
export { bind } from "./bind"
5-
export { SUSPENSE } from "./SUSPENSE"
65
export { Subscribe, RemoveSubscribe } from "./Subscribe"

0 commit comments

Comments
 (0)