xpt-shared-types
v1.32.0
Published
Shared types and data for XPT projects
Downloads
1,938
Readme
xpt-shared-types
The API contract shared by xpt-strapi and xpt-client.
Strapi's content-type schemas are the single source of truth. This package turns them into plain TypeScript so both projects describe the same API, and a schema change breaks compilation at every stale usage instead of drifting silently.
import type { Tournament, TournamentStatus, Populated } from 'xpt-shared-types';
import { COUNTRIES_LIST } from 'xpt-shared-types';Everything is re-exported from the package root.
Layout
| Path | Contents |
| --- | --- |
| src/generated/ | Never edited by hand — written by yarn sync. enums.ts (one union per enumeration attribute), models.ts (read shapes), inputs.ts (write shapes). |
| src/contracts/ | Hand-written primitives the generated code imports: response envelopes, StrapiDocument, media, relation inputs, Populated<T, K>. |
| src/manual/ | Types with no Strapi content type behind them — request bodies, projections, socket payloads. |
| src/bracket.ts, src/gameCatalogue.ts, src/stream.ts | Shared logic with runtime values, applied identically by both apps. |
| src/data/ | Shared runtime data — COUNTRIES_LIST, GAME_GENRES. |
| scripts/ | sync-from-strapi.js (the generator) and overlay-local.mjs (local development). |
Commands
| Command | What it does |
| --- | --- |
| yarn sync | Regenerates src/generated/ from ../xpt-strapi/src/**/content-types/**/schema.json. Not part of build; the output is committed. |
| yarn build | tsc only — src/ to dist/ with declarations. |
| yarn overlay | Copies dist/ and package.json over both consumers' installed copy, so they see an unpublished build. |
Docs
| Doc | What it answers |
| --- | --- |
| docs/README.md | Index of everything below, and how these docs are maintained. |
| docs/adding-types.md | Where a new type goes, with one change followed end to end. |
| docs/generator.md | What yarn sync reads, its naming and mapping rules, and what it writes. |
| docs/local-development.md | Using an unpublished build in the two apps, and the install that undoes it. |
| docs/releasing.md | Bump, changelog, tag, push — and what the publish workflow checks. |
| CHANGELOG.md | What changed in each version. |
License
MIT
