@absolutejs/sync 0.15.0 → 1.0.0
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/README.md +19 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -29,7 +29,8 @@ queries are matched incrementally; joins (inner and left), aggregations, and
|
|
|
29
29
|
top-N ordering are maintained incrementally through a composable operator graph
|
|
30
30
|
(`query(...).filter().join().leftJoin().groupBy().orderBy()`).
|
|
31
31
|
|
|
32
|
-
> Status:
|
|
32
|
+
> Status: **1.0** — public API frozen across all subpaths. See
|
|
33
|
+
> [`CHANGELOG.md`](./CHANGELOG.md). Tier 1 (hub, SSE plugin, browser subscriber,
|
|
33
34
|
> write-behind cache), Tier 2 (Drizzle + Prisma topic adapters, `createLiveQuery`),
|
|
34
35
|
> and Tier 3 (sync engine: collections, WebSocket diff transport, optimistic
|
|
35
36
|
> mutations + offline queue, a local-first client cache, declarative row-level
|
|
@@ -467,6 +468,23 @@ Conflict-free replicated data types — pure, **zero-dependency**, and isomorphi
|
|
|
467
468
|
| `drizzleCollection({ name, table, where, find, ... })` (drizzle) | Same one-`where`→hydrate+matcher, for Drizzle. |
|
|
468
469
|
| `matchesDrizzleWhere(table, where, row)` (drizzle) | Evaluate a Drizzle SQL `where` against a row (the matcher). |
|
|
469
470
|
|
|
471
|
+
## Benchmarks
|
|
472
|
+
|
|
473
|
+
Run `bun run bench/run.ts`. Highlights (Bun 1.3, full results + methodology in
|
|
474
|
+
[`docs/benchmarks.md`](./docs/benchmarks.md)):
|
|
475
|
+
|
|
476
|
+
- **Delta uploads scale flat.** One keystroke on a 10,000-char doc: a full-state
|
|
477
|
+
upload is ~877 KB; the delta is ~105 bytes — an **8,350×** reduction (and ~84×
|
|
478
|
+
even at 100 chars). The server keeps full state, so late joiners still hydrate
|
|
479
|
+
in one shot.
|
|
480
|
+
- **~50,000 mutations/sec** (write + emit) locally; diff fan-out is linear in
|
|
481
|
+
subscriber count.
|
|
482
|
+
- **Tombstone compaction** halves a delete-heavy document's stored state.
|
|
483
|
+
|
|
484
|
+
`docs/benchmarks.md` also has an architectural comparison with Convex and Zero —
|
|
485
|
+
the short version: live queries, optimistic writes, and conflict-free editing
|
|
486
|
+
**without adopting a new backend** (it rides your own DB/ORM/server).
|
|
487
|
+
|
|
470
488
|
## License
|
|
471
489
|
|
|
472
490
|
MIT
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@absolutejs/sync",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "1.0.0",
|
|
4
4
|
"description": "Lightweight reactive-push and write-behind-cache primitives for Elysia and the AbsoluteJS ecosystem — kill polling and keep a remote store off your hot path, without adopting a whole sync-engine backend.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|