📛 docs: badges on the README, and an install section that tells the truth
Five badges under the title: CI and Docs are live workflow badges (the Docs one links to the deployed site), and Node, TypeScript and MIT are static, tinted the brand brown from the landing page rather than shields' defaults. No npm badge yet — the package is not on the registry, and a badge that renders "not found" is worse than none. It gets added with the first publish. The real fix hiding under the badges: Installation led with `npm install cereale`, which does not resolve to this library — the name is unclaimed. The section now says so and gives the clone/pack/install route the landing page has carried since 0.4.0. Also synced the pins the page got and the README missed (tsc 5.2+, Bun 1.3, NestJS 11.1), and the line describing the docs site as "served from docs/ on main" now describes the Actions deployment that replaced branch serving. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SAcqrz3FcadkYr3xG32CjK
This commit is contained in:
@@ -1,5 +1,11 @@
|
||||
# Cereale
|
||||
|
||||
[](https://github.com/avalon-vanguard/cereale/actions/workflows/ci.yml)
|
||||
[](https://avalon-vanguard.github.io/cereale/)
|
||||
[](https://github.com/avalon-vanguard/cereale/blob/main/package.json)
|
||||
[](https://github.com/avalon-vanguard/cereale#installation)
|
||||
[](LICENSE)
|
||||
|
||||
**Validated domain objects, not validated data.**
|
||||
|
||||
Cereale maps JSON onto your own classes and gives you back real instances — with your methods,
|
||||
@@ -28,8 +34,9 @@ user.greet(); // your methods are still there
|
||||
**[avalon-vanguard.github.io/cereale](https://avalon-vanguard.github.io/cereale/)** — an
|
||||
interactive playground that runs this library in your browser, the full decorator reference,
|
||||
and the toolchain matrix. The page has no third-party dependencies — no CDN, no analytics, no webfonts; the only thing it
|
||||
fetches is its own vendored compiler, and only when you first press Run. It is served from
|
||||
`docs/` on `main`, and `npm run build:docs` rebuilds its assets to open locally.
|
||||
fetches is its own vendored compiler, and only when you first press Run. It deploys from
|
||||
`docs/` on `main` through Actions once CI is green, and `npm run build:docs` rebuilds its
|
||||
assets to open locally.
|
||||
|
||||
## Where it fits
|
||||
|
||||
@@ -72,8 +79,18 @@ entity, anything with behaviour attached. Reach for Zod when you just want the d
|
||||
|
||||
## Installation
|
||||
|
||||
Not on npm yet: `npm install cereale` does **not** resolve to this library — the name is
|
||||
unclaimed on the registry. Installing straight from GitHub will not work either, because the
|
||||
build output is not committed. Until the first publish, install from a clone:
|
||||
|
||||
```bash
|
||||
npm install cereale
|
||||
git clone https://github.com/avalon-vanguard/cereale
|
||||
cd cereale
|
||||
npm install && npm run build
|
||||
npm pack # → cereale-0.4.0.tgz
|
||||
|
||||
# then, from your own project
|
||||
npm install ../cereale/cereale-0.4.0.tgz
|
||||
```
|
||||
|
||||
Cereale uses **TC39 standard decorators** (since 0.2.0), so no `experimentalDecorators` flag:
|
||||
@@ -104,7 +121,7 @@ inside a native binary with no standalone transform API.
|
||||
|
||||
| Transformer | Status | Notes |
|
||||
| --- | --- | --- |
|
||||
| `tsc` | ✅ | With `experimentalDecorators: false` and `target: ES2022`+ |
|
||||
| `tsc` 5.2+ | ✅ | With `experimentalDecorators: false` and `target: ES2022`+ |
|
||||
| esbuild | ✅ | `experimentalDecorators: false` via `tsconfigRaw`, **plus** esbuild's own top-level `target: es2022`. Its default `esnext` target leaves decorator syntax in the output |
|
||||
| swc | ✅ | `jsc.transform.decoratorVersion: "2022-03"` |
|
||||
| **oxc** | ❌ | Used by **Vite 8** and **Vitest 4** — see below |
|
||||
@@ -118,10 +135,10 @@ was written. The short version:
|
||||
| --- | --- | --- |
|
||||
| **Angular** 21 | ✅ | Flip the scaffolded `experimentalDecorators` to `false`. Angular does not need it — `ngtsc` erases its own decorators itself |
|
||||
| **React, Vue, Svelte, Solid, Astro, Nuxt** | ✅ | Any Vite 8 app: add the `cereale/vite` plugin below |
|
||||
| **Bun** | ✅ | No configuration |
|
||||
| **Bun** 1.3 | ✅ | No configuration |
|
||||
| **Node** + `tsc` | ✅ | Just the flag |
|
||||
| **Next.js** 16 | ⚠️ | Not inline: it derives both the SWC parser *and* the transform from one flag, so decorators either compile legacy or fail to parse. Keep your models in a package compiled by `tsc` |
|
||||
| **NestJS** 11 | ⚠️ | Not inline: its DI needs `emitDecoratorMetadata`. Same precompiled-package route — verified working alongside `@Injectable()` in a program with both legacy flags on |
|
||||
| **NestJS** 11.1 | ⚠️ | Not inline: its DI needs `emitDecoratorMetadata`. Same precompiled-package route — verified working alongside `@Injectable()` in a program with both legacy flags on |
|
||||
|
||||
**If you are on Vite 8 or Vitest 4**, oxc leaves decorator syntax in the output without
|
||||
reporting anything: `vitest` prints `0 test` next to a bare `SyntaxError`, and `vite build`
|
||||
|
||||
Reference in New Issue
Block a user