Files
headroom/frontend/node_modules/@ark/schema/README.md
Santhosh Janardhanan de2d83092e feat: Reinitialize frontend with SvelteKit and TypeScript
- Delete old Vite+Svelte frontend
- Initialize new SvelteKit project with TypeScript
- Configure Tailwind CSS v4 + DaisyUI
- Implement JWT authentication with auto-refresh
- Create login page with form validation (Zod)
- Add protected route guards
- Update Docker configuration for single-stage build
- Add E2E tests with Playwright (6/11 passing)
- Fix Svelte 5 reactivity with $state() runes

Known issues:
- 5 E2E tests failing (timing/async issues)
- Token refresh implementation needs debugging
- Validation error display timing
2026-02-17 16:19:59 -05:00

19 lines
1.2 KiB
Markdown

# @ark/schema
Underlying schema language parsed from arktype syntax.
The parts of ArkType's type system that exist in TS (i.e. not runtime-only constraints like bounds, divisors, custom predicates, morphs etc.) are structured like this:
- Union: a set of intersections
- Intersection: a set of a basis and constraints
- Basis: this is the base type to which refinements like props are applied. It is one of three things, getting narrower as you move down the list:
- Domain: `"string" | "number" | "bigint" | "object" | "symbol"` parallels built-in TS keywords for non-enumerable value sets
- Proto: Must be an `instanceof` some class (implies domain `"object"`)
- Unit: Must `===` some value (can be intersected with any other constraint and reduced to itself or a disjoint)
- Constraint: an individual condition that must be satisfied:
- Required: must have a specified literal string or symbol key and a value that conforms to a specified union or intersection
- Optional: Required conditions met or the specified key is not present
- Index: all keys that satisfy an index type must have values satisfying the corresponding value type
In this system, `L` extends/subtypes/is assignable to `R` if and only if the intersection `L & R` is equal to `L`.