Server package: validateOnServer + loadEvents adapter

未关闭
#37 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

还没有人认领这个 Issue。

评估

难度
5/5
预计耗时
一周以上
新手友好度
32/100
Issue 类型
功能
描述清晰度
基本清楚
活跃度
冷清
技术栈
typescript
领域
api, backend

调研方向

Start by reading the parent issue #25 and blocked issue #26 to understand the shared Validation Core and what this package depends on. Then trace the existing core's public functions and package conventions; this issue names no files or tests. Done means the new runtime-agnostic package implements the adapter and direct exports, has mock-based unit tests, and documents transactional isolation and the exclusion-constraint recommendation.

由索引模型根据 Issue 内容生成。

描述

enhancement

Parent

https://github.com/TanStack/time/issues/25

What to build

Build `@tanstack/time-server` — a runtime-agnostic package that exposes the shared isomorphic Validation Core with a `loadEvents` adapter seam for authoritative server-side validation. The library never opens a database connection; the consumer implements `loadEvents` against their own DB inside their own write transaction.

The package's key export:

```ts
validateOnServer(write, { loadEvents }, ctx) → Promise<conflicts[]>
```

The library computes `getRequiredRange(write)`, calls `loadEvents(range, ctx)` to get the relevant events from the consumer's DB, then runs the same pure Validation Core as the client's advisory checks. Same logic, authoritative data.

Documentation must prominently state: read-validate-write is only race-free inside one transaction with a consistent/locked view. The library provides rules; the consumer provides isolation. A DB exclusion constraint is the recommended backstop for raw time-overlap.

Acceptance criteria

  • `@tanstack/time-server` is a new package in the monorepo with no DOM or browser dependencies
  • `validateOnServer(write, { loadEvents }, ctx)` calls `loadEvents` with the required range, then runs the Validation Core
  • `loadEvents(range, ctx) → Promise<Event[]>` is the only DB seam; the package opens no connections
  • The package works in Node, Bun, Deno, and edge runtimes (no Node-specific APIs)
  • Unit tests use a mock `loadEvents` — no real DB required
  • The package exports the same Validation Core pure functions directly for consumers who want to call them without the adapter orchestration
  • Documentation clearly states the transactional-isolation requirement and the DB exclusion constraint recommendation

Blocked by

https://github.com/TanStack/time/issues/26

主要语言
TypeScript
星标
620
派生
6
PR 合并指标
30 天内没有已合并 PR

环境准备

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

TanStack/time 的其他 Issue

查看 TanStack/time 的全部 Issue

相似的 Issue

更多 TypeScript Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。