One command, zero config, and only the client ever bundles: v8 server code is plain ESM that Node runs as-authored, so there is no server build to rot (the lesson of v9). - start: Vite middleware mode + HMR with per-request streaming SSR via ssrLoadModule; a virtual client entry generates the browser glue so the user writes exactly one isomorphic module (plan decision D5). - build: client bundle via Vite 8/Rolldown, manifest-derived route assets in dist/bankai.json, service worker built with the precache list injected (choo-service-worker convention, manifest edition), brotli+gzip precompression of every text asset. - serve: immutable caching + precompressed negotiation for hashed assets, 103 Early Hints (res.writeEarlyHints) with the route's assets before every page, streaming SSR, and a window.initialState tail with script-breakout-safe serialization and choo internals filtered out. - inspect: raw/gzip/brotli size report. Integration tests drive the real counter example through build and serve, asserting the 103 interim response at the HTTP level. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014NgfSjHE11oFpoSnLVKLXd
28 lines
775 B
JSON
28 lines
775 B
JSON
{
|
|
"name": "@choojs/monorepo",
|
|
"private": true,
|
|
"version": "8.0.0-dev",
|
|
"description": "Monorepo for choo v8 — a 4kb framework for creating sturdy frontend applications",
|
|
"type": "module",
|
|
"workspaces": [
|
|
"packages/*"
|
|
],
|
|
"engines": {
|
|
"node": ">=24"
|
|
},
|
|
"scripts": {
|
|
"test": "node --test packages/core/test/ packages/html/test/ packages/component/test/ packages/devtools/test/ packages/migrate/test/ packages/bankai/test/",
|
|
"test:e2e": "node --test test/e2e/",
|
|
"bench": "node bench/render.js",
|
|
"bench:browser": "node bench/real-browser.js"
|
|
},
|
|
"repository": "choojs/choo",
|
|
"license": "MIT",
|
|
"devDependencies": {
|
|
"happy-dom": "^20.14.0",
|
|
"nanohtml": "^1.10.0",
|
|
"playwright": "^1.63.0",
|
|
"uhtml": "^5.0.9"
|
|
}
|
|
}
|