Fix civil-date public types: Day.date, currentPeriod, activeDate → YYYY-MM-DD strings

Abierto
#27 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
48/100
Tipo de issue
Nueva funcionalidad
Claridad
Bien especificado
Estado de actividad
Tranquilo
Stack tecnológico
typescript
Área
api

Línea de trabajo

Start by reading the public types for Day and CalendarStore, then search for all-day event boundaries and existing tests that use Temporal.PlainDate. Update the affected exported types and usages so civil dates are YYYY-MM-DD strings while event start/end remain Date objects. Done means no exported type exposes Temporal.PlainDate, the named values and tests use identical ISO date strings, and consumers get a TypeScript error for the old property access.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

enhancement

Parent

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

What to build

Change every civil-date value at the public boundary from `Temporal.PlainDate` to a `YYYY-MM-DD` ISO string. This is a targeted breaking change that must land before the module API is built, so the correct types are foundational from the start.

Civil values affected: `Day.date`, `CalendarStore.currentPeriod`, `CalendarStore.activeDate`, and any all-day event boundary that is currently typed as `Temporal.PlainDate`.

Why: encoding a civil date as a `Temporal.PlainDate` leaks the Temporal polyfill into consumer types. Encoding it as a `Date` object introduces the all-day off-by-one bug (UTC-midnight reads incorrectly in west-of-UTC timezones). A `YYYY-MM-DD` string is the honest, zero-ambiguity representation of a calendar-civil day.

Instant-bearing values (event `start`/`end`) are unaffected — those remain `Date` objects.

Acceptance criteria

  • `Day.date` is typed as `string` and carries a `YYYY-MM-DD` value
  • `CalendarStore.currentPeriod` and `activeDate` are typed as `string` (`YYYY-MM-DD`)
  • No `Temporal.PlainDate` appears in any exported type
  • `Day.isoDate` (already present) is confirmed as the canonical fast-path key; `Day.date` and `Day.isoDate` carry identical values — one of them may be removed if redundant
  • All existing tests updated to reflect the new types
  • A consumer who previously accessed `Day.date.year` / `.month` / `.day` receives a TypeScript error pointing them to the ISO string instead

Blocked by

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

Lenguaje dominante
TypeScript
Estrellas
620
Forks
6
Métricas de merge de PR
Sin PR fusionados en 30 d

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de TanStack/time

Todos los issues de TanStack/time

Issues similares

Más issues de TypeScript

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.