repos / starfx

supercharged async flow control library.
git clone https://github.com/neurosnap/starfx.git

(281) commits
Eric Bower  ·  18 Nov 24
chore: cache bust css
style: docs
8cc044f
Eric Bower  ·  17 Nov 24
style: docs
Vlad  ·  14 Nov 24
feat: support multiple stores registering the same thunk (#51)

* feat(thunk): enable multiple stores to register thunks with unique identifiers

* refactor(store): remove unused getStoreId function
style: home
794602b
Eric Bower  ·  17 Oct 24
style: home
Vlad  ·  03 Oct 24
refactor(persist): update persist.ts (#50)

Refactor persist.ts to improve code organization and readability.
- Add support for transform functions to modify the state before storing and after retrieving from storage.
- Implement inbound and outbound transformers to handle state transformations.
- Handle errors thrown by transformers and log them to the console.
- Use the transformed state when reconciling and persisting the store.
- Update persistStoreMdw function to use the transformed state when saving to storage.
- Add tests for persist transformers
Eric Bower  ·  03 Oct 24
fix: unregister a thunk when the operation shuts down
chore: update esm.sh to latest
6fd92f8 (v0.13.3)
Eric Bower  ·  02 Oct 24
chore: update esm.sh to latest
Eric Bower  ·  02 Oct 24
chore: update deno.lock file
Eric Bower  ·  02 Oct 24
chore: cleanup thunk registry fix
Vlad  ·  11 Sep 24
fix(thunk): prevent multiple calls to `.register`
Eric Bower  ·  28 Aug 24
docs: structured conc
docs: copy
924ae1a
Eric Bower  ·  27 Aug 24
docs: copy
docs: copy
26d3da7
Eric Bower  ·  26 Aug 24
docs: copy
docs: copy
144ca25
Eric Bower  ·  26 Aug 24
docs: copy
docs: copy
10d40c5
Eric Bower  ·  26 Aug 24
docs: copy
docs: nav
39607cd
Eric Bower  ·  26 Aug 24
docs: nav
docs: copy
65f60cf
Eric Bower  ·  26 Aug 24
docs: copy
docs: copy
8c94373
Eric Bower  ·  26 Aug 24
docs: copy
fix: fmt
c80d74b
Eric Bower  ·  26 Aug 24
fix: fmt
docs: copy
1beab54
Eric Bower  ·  26 Aug 24
docs: copy
docs: copy
6070252
Eric Bower  ·  26 Aug 24
docs: copy
docs: fx
96e49d4
Eric Bower  ·  26 Aug 24
docs: fx
docs: copy
c1d8bf0
Eric Bower  ·  26 Aug 24
docs: copy
Eric Bower  ·  26 Aug 24
chore: doc comments
Eric Bower  ·  19 Aug 24
chore(react): export `useStore` hook
Eric Bower  ·  18 Aug 24
docs(loaders): meta code example
Eric Bower  ·  18 Aug 24
docs(learn): preload then refresh
docs: typo
ab4f169
Eric Bower  ·  17 Aug 24
docs: typo
docs: copy
e7d0693
Eric Bower  ·  17 Aug 24
docs: copy
docs: typo
8984f7a
Eric Bower  ·  17 Aug 24
docs: typo
docs: copy
d4d1134
Eric Bower  ·  17 Aug 24
docs: copy
docs: copy
6334085
Eric Bower  ·  17 Aug 24
docs: copy
docs: copy
dbb4ee1
Eric Bower  ·  17 Aug 24
docs: copy
docs: copy
fdd40e9
Eric Bower  ·  17 Aug 24
docs: copy
docs: copy
bade988
Eric Bower  ·  17 Aug 24
docs: copy
docs: copy
351a8d3
Eric Bower  ·  16 Aug 24
docs: copy
docs: copy
23b3bf2
Eric Bower  ·  16 Aug 24
docs: copy
docs: copy
9d8eb2c
Eric Bower  ·  16 Aug 24
docs: copy
Eric Bower  ·  16 Aug 24
docs: more content
Eric Bower  ·  16 Aug 24
fix(thunk): run thunk supervisors immediately on register

For whatever reason, dispatching actions to register all the supervisor
thunks was too slow and causing a regression with prod systems.

This reverts part of the register function to how it used to work.  To
be more specific, it calls the supervisor functions immediately in a
`parallel` call.
Eric Bower  ·  16 Aug 24
chore(thunk): use `console.warn` instead of `console.error`
Eric Bower  ·  14 Aug 24
fix(thunk): remove unnecessary error log
Eric Bower  ·  12 Aug 24
docs: exposition
docs: readme
3dbdd21
Eric Bower  ·  30 Jul 24
docs: readme
Eric Bower  ·  30 Jul 24
refactor: enhanced thunk registry system (#44)

The current registry system for thunks works like this:

- User calls `const thunks = createThunks()`
- User creates **all** thunks `const go = thunks.create("go")`
- User registers thunks `store.run(thunks.bootup)`

However, there's a caveat with this implementation: all thunks must be
created before `store.run` is called.  Further, since thunks are created
at the module-level, if the module that exports those thunks isn't
loaded before `thunk.bootup` is called then those thunks are silently
ignored.

This change will make it so it doesn't matter when a thunk is created,
we will "lazy load" it.

We still require `store.run(thunks.bootup)` to be called -- because we
need access to the store and won't have it when creating a thunk.

We are also sending an error whenever a thunk is dispatched without it
being registered which should help ensure thunks get properly
registered.

We also changed the name of `thunks.bootup` to `thunks.register` to make
it more clear that this is a registry system.
Eric Bower  ·  30 Jul 24
docs(learn): headers
docs: readme
5053757
Eric Bower  ·  30 Jul 24
docs: readme
Eric Bower  ·  30 Jul 24
docs: learn page
docs: content
1532286
Eric Bower  ·  30 Jul 24
docs: content
docs: logo
f0349ab
Eric Bower  ·  30 Jul 24
docs: logo
Eric Bower  ·  27 Jul 24
chore: update pgs-action
Eric Bower  ·  27 Jul 24
chore: update pgs-action
docs: readme
f62c646
Eric Bower  ·  09 Jul 24
docs: readme
Eric Bower  ·  24 Jun 24
docs: effection link
docs: copy
edfc02d
Eric Bower  ·  21 Jun 24
docs: copy
Eric Bower  ·  21 Jun 24
refactor: pager partial
Eric Bower  ·  21 Jun 24
style: tweak settings
Eric Bower  ·  21 Jun 24
fix: sidebar links
chore: nav
5ad5b08
Eric Bower  ·  10 Jun 24
chore: nav
Eric Bower  ·  10 Jun 24
chore: update deno.lock file
Eric Bower  ·  10 Jun 24
docs: update pdocs and reframe lib
fix: catch error and bubble up
17b2c15 (v0.12.0)
Eric Bower  ·  07 May 24
fix: catch error and bubble up
Eric Bower  ·  19 Apr 24
chore: update deno.lock
Eric Bower  ·  15 Apr 24
fix(mdw): thunk loader needs `ctx.loader`
docs: copy
70f24ec
Eric Bower  ·  19 Mar 24
docs: copy
Eric Bower  ·  19 Mar 24
chore: update go
Eric Bower  ·  19 Mar 24
chore: upgrade pgit
refactor: remove Result.data
6313833 (v0.10.0)
Eric Bower  ·  05 Mar 24
refactor: remove Result.data

BREAKING CHANGE: `ctx.json` no longer has a `.data` property
docs: metadata
7b09e81
Eric Bower  ·  05 Mar 24
docs: metadata
docs: copy
a3fa13b
Eric Bower  ·  05 Mar 24
docs: copy
Eric Bower  ·  05 Mar 24
docs: soften the blow
Eric Bower  ·  04 Mar 24
docs: getting started
Eric Bower  ·  04 Mar 24
docs: getting started
fix: export ApiMdwProps
9bc36df (v0.9.0)
Eric Bower  ·  04 Mar 24
fix: export ApiMdwProps
Eric Bower  ·  04 Mar 24
refactor: merge `starfx/store` into `starfx` (#43)

I'm looking for ways to simplify the API in order to make this lib more
ergonomic.

DEPRECATED: `configureStore` is now `createStore`
BREAKING CHANGE: removed `starfx/store`
Eric Bower  ·  04 Mar 24
docs: motivation
design: sidebar
27ee28d
Eric Bower  ·  03 Mar 24
design: sidebar
docs: copy
31d72aa
Eric Bower  ·  01 Mar 24
docs: copy
Eric Bower  ·  28 Feb 24
chore: retain 1 site
docs: clearTimers
7ed8b3c (v0.8.0)
Eric Bower  ·  23 Feb 24
docs: clearTimers
Eric Bower  ·  23 Feb 24
chore: make clearTimers more ergonomic (#42)

Eric Bower  ·  23 Feb 24
feat: clear timers (#41)

feat: use `race` from `effection`

BREAKING CHANGE: replace `race` with `raceMap`
Eric Bower  ·  23 Feb 24
chore: deprecate `slice.loader`

Use `slice.loaders` instead
Eric Bower  ·  22 Feb 24
fix: reset loader when task is cancelled (#40)

This issue happens when:
- User runs a task with a loader
- Loading is in "loading" state
- Task gets halted
- Loader does not get cleaned up
- Loader stays in "loading" state
docs: cleanup
c18cc7e
Eric Bower  ·  21 Feb 24
docs: cleanup
Eric Bower  ·  18 Feb 24
chore: update pdocs
Eric Bower  ·  16 Feb 24
chore: update pdocs
docs: endpoints
de53ffa
Eric Bower  ·  16 Feb 24
docs: endpoints
docs: copy
83e2769
Eric Bower  ·  16 Feb 24
docs: copy
docs: nav
db94dd9
Eric Bower  ·  16 Feb 24
docs: nav
docs: copy
45e804f
Eric Bower  ·  16 Feb 24
docs: copy
Eric Bower  ·  16 Feb 24
json api example
Eric Bower  ·  16 Feb 24
docs: sitemap links
docs: react
9ea5759
Eric Bower  ·  16 Feb 24
docs: react
docs: react
9756e62
Eric Bower  ·  16 Feb 24
docs: react
docs: copy
187ff1a
Eric Bower  ·  16 Feb 24
docs: copy
docs: copy
d1df279
Eric Bower  ·  15 Feb 24
docs: copy
docs: typo
b765768
Eric Bower  ·  15 Feb 24
docs: typo
docs: copy
fe13fff
Eric Bower  ·  15 Feb 24
docs: copy
docs: api work
6f04a24
Eric Bower  ·  15 Feb 24
docs: api work
Eric Bower  ·  15 Feb 24
docs: more pages
fix: docs gha
a6babda
Eric Bower  ·  14 Feb 24
fix: docs gha
fix: docs gha
1b2056a
Eric Bower  ·  14 Feb 24
fix: docs gha
Eric Bower  ·  14 Feb 24
fix: gha for docs
fix: tweak gha
e5b98b2
Eric Bower  ·  14 Feb 24
fix: tweak gha
docs site (#39)
2ab8297
Eric Bower  ·  14 Feb 24
docs site (#39)

Wait for loader (#37)
95bee2f (v0.7.0)
Eric Bower  ·  10 Feb 24
Wait for loader (#37)

docs: readme
797ba54
Eric Bower  ·  08 Feb 24
docs: readme
Eric Bower  ·  07 Feb 24
chore: dont prefix action types

BREAKING CHANGE: we removed `@@starfx:` from all action types
fix(ci): shell string
6396f79 (v0.5.3)
Eric Bower  ·  06 Feb 24
fix(ci): shell string
fix: lint
856e366
Eric Bower  ·  06 Feb 24
fix: lint
Eric Bower  ·  06 Feb 24
fix(thunk): `toString` must return `type` instead of `name`
Jacob Bolda  ·  30 Jan 24
ecosystem CI tests (#36)

* initial CI setup

* fix CI workflow name

* consistent CI workflow name with file name

* script to symlink and CI workflow update to run build

* fix folder name in example dir

* try --refresh-lockfile

* try with npm

* try with --no-lockfile

* try with npm including build

* npm run build

* run as matrix

* don't fail fast

* skip remove of ./npm/node_modules

* do file: install for parcel instead

* keep node_modules for parcel

* matrix out path chunks

* lint fix

* another lint fix

* fix CI name

* install both examples

* dynamically pull matching branch

* nested folder

* quiet script

* throw on failed reponse

* pass branch

* more error context

* bad boop

* name branch step

* lint

* build and test examples

* remove GITHUB_TOKEN

* directly append in script

* add logs

* dump output

* dump output file

* dump step

* .outputs

* lint

* really need to fix my local linter

* add a bit to the readme

* rename .scripts/ to scripts/

* update script references
Eric Bower  ·  23 Jan 24
refactor: remove `log` (#35)

refactor: removed wrapped spawn from take helpers

BREAKING CHANGE: take helper fn signatures are different
BREAKING CHANGE: no more log or `LogContext`
Eric Bower  ·  21 Jan 24
fix: parcel bundler import export destructuring

For whatever reason, parcel doesn't like that we are importing from
"thunk" and exporting at the same time.
Eric Bower  ·  19 Jan 24
chore: folder/file org cleanup (#33)

chore: update deno.lock
bcdad66 (v0.5.0)
Eric Bower  ·  18 Jan 24
chore: update deno.lock
Eric Bower  ·  18 Jan 24
refactor: rm redux (#32)

Eric Bower  ·  11 Jan 24
refactor(query): better extract types from endpoints

- fix(query): pick correct `ApiError` type inside `createApi`
- `useCache` will automatically pull success type from endpoint.
Eric Bower  ·  10 Jan 24
refactor(store): export storeMdw as collection
Eric Bower  ·  10 Jan 24
fix(store): loader mdw
docs: readme
cd38fa9
Eric Bower  ·  09 Jan 24
docs: readme
Eric Bower  ·  08 Jan 24
fix(loader): consistent state shape
Eric Bower  ·  08 Jan 24
fix(loader): dont save derived data inside slice
Eric Bower  ·  06 Jan 24
feat(query): generic loader mdw
Eric Bower  ·  06 Jan 24
chore(query): cleanup mdw.predicate
Eric Bower  ·  06 Jan 24
feat(query): `mdw.predicate`
Eric Bower  ·  03 Jan 24
fix: flatten PersistGate elements
Eric Bower  ·  03 Jan 24
fix(table): properly memoize `selectByIds`
Eric Bower  ·  03 Jan 24
chore(query): export useCache type
docs: readme
680d9ea
Eric Bower  ·  20 Dec 23
docs: readme
docs: readme
228ebf1
Eric Bower  ·  20 Dec 23
docs: readme
docs: readme
34f382e
Eric Bower  ·  19 Dec 23
docs: readme
docs: readme
1b0365a
Eric Bower  ·  19 Dec 23
docs: readme
docs: readme
f2bfbd1
Eric Bower  ·  19 Dec 23
docs: readme
docs: readme
5619d15
Eric Bower  ·  19 Dec 23
docs: readme
docs: readme
1441fb4
Eric Bower  ·  19 Dec 23
docs: readme
docs: readme
96afdb8
Eric Bower  ·  19 Dec 23
docs: readme
docs: readme
8d91e2e
Eric Bower  ·  19 Dec 23
docs: readme
docs: readme
a360879
Eric Bower  ·  19 Dec 23
docs: readme
docs: readme
3f5d0aa
Eric Bower  ·  19 Dec 23
docs: readme
docs: readme
60440e9
Eric Bower  ·  18 Dec 23
docs: readme
Eric Bower  ·  18 Dec 23
feat(store): add local storage adapter
fix(thunks): types
1e24f21 (v0.3.6)
Eric Bower  ·  18 Dec 23
fix(thunks): types
Eric Bower  ·  17 Dec 23
fix(store): persistor rehydrates properly now
docs: readme
aea5407
Eric Bower  ·  17 Dec 23
docs: readme
docs: readme
a62fff6
Eric Bower  ·  16 Dec 23
docs: readme
fix(store): cache timer mdw
7b1c7d5 (v0.3.4)
Eric Bower  ·  16 Dec 23
fix(store): cache timer mdw
Eric Bower  ·  16 Dec 23
chore: rename files and remove old fx
Eric Bower  ·  15 Dec 23
chore: rm getframe
Eric Bower  ·  14 Dec 23
refactor(log): generalize for any logging not just errors
Eric Bower  ·  14 Dec 23
fix(slice): properly memoize loader selectors
Eric Bower  ·  14 Dec 23
fix: wrong type for slice.any
Eric Bower  ·  13 Dec 23
chore: remove `first` from upstream
Eric Bower  ·  12 Dec 23
feat(store): `reset` updater to revert store to initialState provided by
user
Eric Bower  ·  12 Dec 23
feat(slice.table): return empty value provided for reuse
Eric Bower  ·  12 Dec 23
chore: remove outdated selectors
docs: readme
71d8a09
Eric Bower  ·  12 Dec 23
docs: readme
docs: readme
a3ead2d
Eric Bower  ·  12 Dec 23
docs: readme
docs: readme
59b037d
Eric Bower  ·  12 Dec 23
docs: readme
docs: readme
e12acac
Eric Bower  ·  12 Dec 23
docs: readme
docs: readme
09eba9f
Eric Bower  ·  12 Dec 23
docs: readme
fix: `slice.table` types
cfcc818 (v0.2.2)
Eric Bower  ·  04 Dec 23
fix: `slice.table` types
docs: readme
89763fc
Eric Bower  ·  04 Dec 23
docs: readme
docs: readme
fc535da
Eric Bower  ·  04 Dec 23
docs: readme
docs: readme
ce9ef2b
Eric Bower  ·  04 Dec 23
docs: readme
docs: readme
8015488
Eric Bower  ·  04 Dec 23
docs: readme
Eric Bower  ·  01 Dec 23
refactor(store): `slice.table` `empty` is now optional (#28)

Eric Bower  ·  01 Dec 23
feat(query): thunk and api thunks can simply accept payload (#29)

fix: export persist module
8f49b0c (v0.2.0)
Eric Bower  ·  01 Dec 23
fix: export persist module
Eric Bower  ·  01 Dec 23
fix(thunk): add `.use` to `CreateActionWithPayload` (#27)

Eric Bower  ·  01 Dec 23
feat(store): redux-persist replacement (#21)

Eric Bower  ·  01 Dec 23
feat: `createBatchMdw` for batching store listener events (#22)

Eric Bower  ·  01 Dec 23
refactor: require data and loaders slices (#24)

docs: readme
e319eb3
Eric Bower  ·  01 Dec 23
docs: readme
docs: readme
78650a3
Eric Bower  ·  01 Dec 23
docs: readme
Eric Bower  ·  30 Nov 23
chore: update effection@v3-beta.3
Eric Bower  ·  30 Nov 23
feat: thunks dynamic mdw api (#26)

docs: readme
cde4792
Eric Bower  ·  30 Nov 23
docs: readme
docs: readme
a1278f6
Eric Bower  ·  24 Nov 23
docs: readme
docs: readme
281d65e
Eric Bower  ·  23 Nov 23
docs: readme
docs: readme
aec79a8
Eric Bower  ·  23 Nov 23
docs: readme
docs: readme
6871f66
Eric Bower  ·  23 Nov 23
docs: readme
docs: readme
76ffa37
Eric Bower  ·  23 Nov 23
docs: readme
docs: readme
aa996a1
Eric Bower  ·  23 Nov 23
docs: readme
docs: readme
6ae19f0
Eric Bower  ·  23 Nov 23
docs: readme
docs: readme
8b8db0c
Eric Bower  ·  23 Nov 23
docs: readme
docs: readme
81dea06
Eric Bower  ·  23 Nov 23
docs: readme
Eric Bower  ·  23 Nov 23
docs: readme headers
docs: readme
ee29a97
Eric Bower  ·  23 Nov 23
docs: readme
Eric Bower  ·  22 Nov 23
refactor(query): middleware naming (#25)

Eric Bower  ·  19 Nov 23
refactor(npm): use deno arg instead of env var
doc: readme
78d8534
Eric Bower  ·  19 Nov 23
doc: readme
doc: readme
ab99d8d
Eric Bower  ·  19 Nov 23
doc: readme
Eric Bower  ·  14 Nov 23
refactor(fx): use `call` from `effection` (#20)

Eric Bower  ·  11 Nov 23
fix(gha): trailing slash rsync
Eric Bower  ·  10 Nov 23
chore: use pgs-action
Eric Bower  ·  10 Nov 23
refactor(redux): custom queue impl (#19)

Eric Bower  ·  01 Nov 23
chore(npm): explicit fields
Eric Bower  ·  13 Oct 23
fix(redux): `poll` supervisor correct call sig
Eric Bower  ·  13 Oct 23
chore: rm references to `saga-query`
Eric Bower  ·  13 Oct 23
chore: update `effection` to `beta.0`
Eric Bower  ·  02 Oct 23
chore: update effection v3.0.15
refactor(redux): take strat
4842df8 (v0.0.30)
Eric Bower  ·  18 Sep 23
refactor(redux): take strat

Trying to think about performance considerations with implementation
refactor(redux): use signal for middleware
0ba8393 (v0.0.28) (v0.0.29)
Eric Bower  ·  17 Sep 23
refactor(redux): use signal for middleware
Eric Bower  ·  16 Sep 23
chore(redux): export `send` for debugging
Eric Bower  ·  16 Sep 23
refactor(redux): use signal instead of channel
Eric Bower  ·  16 Sep 23
fix(redux): dispatchActions needs batchActions
chore: type improvements
ed175e3 (v0.0.24)
Eric Bower  ·  16 Sep 23
chore: type improvements
chore: modify supervisor types
8b15e81 (v0.0.23)
Eric Bower  ·  16 Sep 23
chore: modify supervisor types
chore: export more redux fns
5b3374e (v0.0.22)
Eric Bower  ·  16 Sep 23
chore: export more redux fns
chore: export supervisors
e18a41f (v0.0.21)
Eric Bower  ·  16 Sep 23
chore: export supervisors
chore: update deps
e0dffb4 (v0.0.20)
Eric Bower  ·  15 Sep 23
chore: update deps

chore: update `saga-query` changes
Eric Bower  ·  14 Sep 23
doc: update tagline
Vlad  ·  12 Sep 23
refactor(store/slice): rename `obj.patch` to `obj.update`

Eric Bower  ·  10 Sep 23
fix: imports for `starfx/react`
Eric Bower  ·  10 Sep 23
Merge pull request #13 from neurosnap/create-table


---------

Co-authored-by: Vlad <vladmarginean@softwiz.ro>
Vlad  ·  29 Jul 23
feat: schema concept

Schema is like a database schema: you specify what tables you want and their shape.  The goal of this feature is to help users build an immutable data store that resembles a database, with ways to change the data being store as well as query it.

New features:
- `createSchema` which will generate the `initialState` for `createStore`
- `table()` which will create a table slice
- `str()` which will create a string slice
- `num()` which will create a number slice
- `any()` which will create a generic slice with any type
- `obj()` which will create an object slice

```ts
import { createSchema, configureStore, slice, select } from 'starfx/store';
import { main } from 'starfx';

interface User {
  id: string;
  name: string;
}

const { db, initialState } = createSchema({
  users: slice.table<User>({ empty: { id: "", name: "" } }),
});

const store = configureStore({ initialState });
main(function*() {
  yield* schema.update(db.users.add({ "1": { id: "1", name: "bob" }  }));
  const user = yield* select(db.users.selectById, { id: "1" });
});
```
doc: readme
27b4af5
Eric Bower  ·  02 Sep 23
doc: readme
doc: readme
10377f3
Eric Bower  ·  02 Sep 23
doc: readme
doc: readme
213be82
Eric Bower  ·  02 Sep 23
doc: readme
doc: readme
d760ff8
Eric Bower  ·  02 Sep 23
doc: readme
Eric Bower  ·  02 Sep 23
doc: readme update with references
Eric Bower  ·  01 Sep 23
fix(pgs): retain
Use redux (#12)
ec3aa69 (v0.0.16)
Eric Bower  ·  28 Aug 23
Use redux (#12)

doc: refactor
a8c1cbb (v0.0.15)
Eric Bower  ·  28 Aug 23
doc: refactor
doc: readme
61543a3
Eric Bower  ·  28 Aug 23
doc: readme
Eric Bower  ·  28 Aug 23
Toolkit 2.0 (#11)

feat: added `prepareStore()`

BREAKING CHANGE: refactored `configureStore()` from `starfx/redux`
Eric Bower  ·  27 Aug 23
refactor: `call()` to not be safe (#9)

docs: readme
cd48d9d
Eric Bower  ·  23 Aug 23
docs: readme
chore: add pgit
4544ac6
Eric Bower  ·  17 Aug 23
chore: add pgit
fix: bubble errors up properly
912155b (v0.0.13)
Eric Bower  ·  30 Jul 23
fix: bubble errors up properly
Eric Bower  ·  30 Jul 23
fix: `errorHandler` properly catch errors
Eric Bower  ·  30 Jul 23
fix: event inside takeEvery can trigger same event (#5)

This is a regression from `saga-query`.  This is an issue that came up
in `redux-saga`.

[See ref to original issue.](https://github.com/redux-saga/redux-saga/issues/277)

[Discussion in discord](https://discordapp.com/channels/700803887132704931/1108053742835736636)
Eric Bower  ·  30 Jul 23
fix: ensure compose mdw returns aggregate `Result` (#6)

There was a regression compared to `saga-query` for `createPipe()` where
we were swallowing errors in the mdw pipeline.  This is largely because
we are experimenting with the idea of ensuring all operations inside
`starfx` are safe-by-default and return a `Result` instead of `throw`.

This effort is a design decision to treat errors-as-data.

In order to support safe-by-default inside our `compose()` function, we
need to aggregate the `Result` of every mdw call and then attach an
aggregate `Result` onto the `ctx` provided to `compose()`.

So now we require at least one field to always exist on `ctx` which is
`ctx.result` which returns `Result<any[]>`.

If an error exists inside the aggregate results, we return it unwrapped
as an error.  If no error exists in the results then we return a single
`Result` with a list of values unwrapped.

Here is a test that demonstrates the new behavior:

```ts
it(tests, "error inside endpoint mdw", async () => {
  let called = false;
  const query = createPipe();
  query.use(function* (ctx, next) {
    yield* next();
    if (!ctx.result.ok) {
      called = true;
    }
  });

  query.use(query.routes());

  const fetchUsers = query.create(
    `/users`,
    { supervisor: takeEvery },
    function* processUsers() {
      throw new Error("some error");
    },
  );

  const store = await configureStore({
    initialState: {
      ...createQueryState(),
      users: {},
    },
  });
  store.run(query.bootup);
  store.dispatch(fetchUsers());
  asserts.assertEquals(called, true);
});
```
fix: dispatch type sig
3db088e (v0.0.9)
Eric Bower  ·  15 Jul 23
fix: dispatch type sig
docs: readme
d05fa1c
Eric Bower  ·  14 Jul 23
docs: readme
Eric Bower  ·  14 Jul 23
chore: fix readme fmt
Eric Bower  ·  14 Jul 23
docs: quick readme example
Eric Bower  ·  14 Jul 23
refactor: switch default createPipe() supervisor to redux
Eric Bower  ·  14 Jul 23
feat: immutable store (#2)

fmt
b8d1fd5 (v0.0.7)
Eric Bower  ·  11 Jul 23
fmt
fix: npm release
0cf7617 (v0.0.6)
Eric Bower  ·  11 Jul 23
fix: npm release
Vlad  ·  11 Jul 23
add enhancers to redux store (#3)

Eric Bower  ·  10 Jul 23
fix: double take on same event (#4)

Eric Bower  ·  27 May 23
fix(npm): generate esm-specific types
Eric Bower  ·  22 May 23
chore: use mod.ts for entry points
chore: npm build tweaks
0b71265 (v0.0.4)
Eric Bower  ·  21 May 23
chore: npm build tweaks
Eric Bower  ·  21 May 23
chore: npm working!
Eric Bower  ·  21 May 23
chore: move examples
Eric Bower  ·  21 May 23
chore: more natural npm imports
Eric Bower  ·  21 May 23
chore: reorg files and types
Eric Bower  ·  21 May 23
chore: refactor redux store creator
Eric Bower  ·  21 May 23
chore: compose types
fix: publish workflow
119d312 (v0.0.3)
Eric Bower  ·  20 May 23
fix: publish workflow
fix: missing lock
02f69d6 (v0.0.2)
Eric Bower  ·  20 May 23
fix: missing lock
fix: npm build
f1eb994
Eric Bower  ·  20 May 23
fix: npm build
chore: fmt
bc68e89 (v0.0.1)
Eric Bower  ·  20 May 23
chore: fmt
doc: readme
8a1da84
Eric Bower  ·  20 May 23
doc: readme
doc: readme
3dcec64
Eric Bower  ·  20 May 23
doc: readme
Eric Bower  ·  20 May 23
doc: description
Eric Bower  ·  20 May 23
feat(query): Data synchronization using a middleware system for front-end apps (#1)

Eric Bower  ·  24 Apr 23
chore: update deno lock
take helpers
1f42ca7
Eric Bower  ·  20 Apr 23
take helpers
tweaks
410024f
Eric Bower  ·  20 Apr 23
tweaks
Eric Bower  ·  20 Apr 23
feat: `compose` function for middleware
Eric Bower  ·  20 Apr 23
refactor: `call` returns `Result` now
Eric Bower  ·  20 Apr 23
chore: moved `once`
Eric Bower  ·  20 Apr 23
chore: fix imports
Eric Bower  ·  20 Apr 23
chore: remove .bak file
Eric Bower  ·  20 Apr 23
chore(fx): replaced `all` with `parallel`
Eric Bower  ·  17 Apr 23
feat: parallel fx
parallel api
1294504
Eric Bower  ·  16 Apr 23
parallel api
fix
58a048f
Eric Bower  ·  15 Apr 23
fix
Eric Bower  ·  15 Apr 23
explicit exports
lock
9b791ce
Eric Bower  ·  15 Apr 23
lock
docs: readme
b0f5039
Eric Bower  ·  04 Apr 23
docs: readme
Eric Bower  ·  04 Apr 23
docs: fix linter
docs: readme
8b1e67b
Eric Bower  ·  04 Apr 23
docs: readme
Eric Bower  ·  28 Mar 23
chore: getting ready for initial release
init
8137f72
Eric Bower  ·  28 Mar 23
init