- Store protocol now returns promesa promises instead of core.async channels - MemoryStore: `(p/resolved val)` replaces chan+put!+close! ceremony - IDBStore: `p/create` with resolve/reject wraps IDB callbacks - sync.cljc: CLJ uses `p/vthread`, CLJS returns native Promise chains - core.cljc: `p/let` replaces go blocks, timer-based sync loop replaces go-loop+alts!, debounced push replaces kick channel - Tests use `deref` with timeout on promesa promises - Todomvc example uses `p/let` instead of go/<!
686 B
686 B
Replace core.async with promesa
Tasks
- 1. Add
funcool/promesato deps.edn, removecore.async - 2. Update
store.cljcdocstring (returns promises, not channels) - 3. Rewrite
store/memory.cljc— return(p/resolved val) - 4. Rewrite
store/idb.cljs— wrap IDB callbacks in(p/create ...) - 5. Rewrite
sync.cljc— return promises from pull!/push!/fetch-transit - 6. Rewrite
core.cljc— promises + timer-based sync loop - 7. Update
test/core_test.clj—derefpromises instead of<!! - 8. Update
example/todomvc/todomvc.cljs—p/letinstead ofgo/<! - 9. Run tests — 28 tests, 87 assertions, 0 failures