Client/server Data Strategy
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 25/100
- Tipo di issue
- Funzionalità
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Tranquilla
- Stack tecnologico
- typescript
- Ambito
- backend-api-design
Direzione di ricerca
Start by reading the kernel's current in-process pipeline and ADR-0002; this issue names no implementation files or tests. Check blockers #28 and #37 before beginning. Done means both strategies produce identical output, delegatable stages use the specified serializable transport requests and server handlers, and clipping and layout remain client-side.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Parent
https://github.com/TanStack/time/issues/25
What to build
Add a pluggable `strategy` option to the kernel (inspired by AG Grid's row model). In `'client'` mode all pipeline stages run in-process. In `'server'` mode the delegatable stages — recurrence-expand, conflict-detect, slot-generation — run server-side via the same isomorphic Validation Core; the client receives materialized results and only runs clip-to-viewport and layout.
The consumer's calendar API is identical in both modes. The observable output (`Day[]`, event layout, conflict arrays) must match regardless of which strategy is active.
This is computation push-down, not just data-sourcing. The boundary is serializable for free because ADR-0002 restricts all public types to native `Date`, `YYYY-MM-DD` strings, and plain objects — no Temporal instances, no class instances.
The kernel emits a serializable operation request per delegatable stage (e.g. `{ op: 'expandRange', range, events, config }`). This request is also the TanStack Query key, so caching and invalidation require no extra plumbing. The consumer provides a `transport` function that forwards the request to their endpoint, which calls the matching server-side handler from `@tanstack/time-server`.
In `'client'` mode advisory and authoritative validation collapse — the client is the only validator. In `'server'` mode the client runs advisory checks; the server is authoritative.
Acceptance criteria
- `createCalendar({ strategy: 'client' })` behaves identically to the current in-process behaviour
- `createCalendar({ strategy: 'server', transport })` forwards delegatable stages to the consumer's `transport` function
- `transport` receives a serializable operation request and returns a plain-object result; it owns the fetch/RPC/auth
- The operation request object is stable and suitable as a TanStack Query `queryKey`
- `@tanstack/time-server` exports a handler per delegatable operation that the consumer's endpoint calls
- Given the same event data, `strategy: 'client'` and `strategy: 'server'` (with a mock transport) produce identical `Day[]` output
- Clip-to-viewport and layout always run client-side regardless of strategy
Blocked by
https://github.com/TanStack/time/issues/28
https://github.com/TanStack/time/issues/37
- Lingua principale
- TypeScript
- Stelle
- 620
- Fork
- 6
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di TanStack/time
-
Dependency DashboardAperta
Difficoltà 5/5 Più di una settimana Idoneità per principianti 5/100
-
enhancement
Difficoltà 5/5 Più di una settimana Idoneità per principianti 32/100
-
enhancement
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
-
enhancement
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
-
Undo/redo moduleApertaenhancement
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
Tutte le issue di TanStack/time
Issue simili
-
Add: Yichang TVApertacheck:passed streams:add
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
I maintainer di solito rispondono entro 1 giorno
-
vtselect: data race in Tempo search tags APIs for invalid TraceQL queriesForse già presa @Shubham19032004 l’ha presa oggi. Apertabug
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
VictoriaMetrics/VictoriaTraces#304 ·
I maintainer di solito rispondono entro 1 giorno
-
test: claim-conflict drop leaves both facts active and is never re-proposed (untested review cell)Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 83/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
microsoft/vscode-pull-request-github#9159 ·
I maintainer di solito rispondono entro 1 giorno
-
[Feature]: Usage page should show API-equivalent cost and say when a connected plan shows info onlyApertaenhancement from-x
Difficoltà 2/5 1-3 ore Idoneità per principianti 66/100
nightly-labs/openbot#4867 ·
I maintainer di solito rispondono entro 1 giorno