Nine review angles, fourteen verified findings, all but the byte-table generator applied. The two that mattered most were regressions of mine: - a:hover repainted button-styled anchors, and in dark theme --accent-text equals --accent-solid — hovering the hero CTA drew its label in its own background colour. Verified invisible before (computed color == computed background) and distinct after: 10.39:1 dark, 6.90:1 light. The buttons and the skip link now re-assert their label colours on hover. - Footer links had lost every non-hover affordance: the text-decoration:none carve-out plus body-coloured links left a 2.37:1 shade difference as the only cue. The carve-out is deleted — .nav-links a and .brand already declare none themselves — and the accent rule is back on the footer. Also on the page: #ref-filter, the one text input, moves to --border-ui (it still had the 1.68:1 border the token's own comment calls decorative); focusable code surfaces get the --accent-on-code ring at -2px offset, inside the .code overflow clip; #output .out-err drops #ff8095, the last surviving colour of the deleted indigo palette; the two rgba(255,106,126) washes become color-mix over --err-line so a grep for the token finds them. The theme machinery loses a whole block: the dark media query is guarded with :not([data-theme="light"]), so an explicit light toggle falls through to the bare :root palette and the 21-token hand-copy in [data-theme="light"] is gone. Verified in all four system/toggle combinations. The page stops contradicting the repo: it claimed cereale/min "cannot tree-shake — nothing left to shake" while src/treeshake.test.ts proves the opposite on every run. Corrected here and in FRAMEWORKS.md, with the measured figures (1,837 vs 1,996 bytes for one decorator). The release facts the page was hand-bumping — both tgz names, "0.4.0 lives in the repository", the sixty-eight — now fill from meta.js/the bundle like the version badge always has. The workflows close three holes: - The docs sync gate was blind to NEW untracked build outputs (git diff does not report them; demonstrated). Both workflows now run check:docs-sync, one shared script that fails on anything porcelain reports — which also ends the copy-paste divergence between them. - pages.yml deploys on CI succeeding on main (workflow_run) instead of on the push itself, so a deploy implies green tests, not just in-sync docs. The deploy job refuses refs other than main, closing the workflow_dispatch any-branch deploy, and the build job drops pages/id-token — npm postinstall scripts no longer run alongside an OIDC grant. - The Junie action is pinned to the commit behind v1.7.4 rather than the tag, which is the immutability the previous comment promised but a mutable ref cannot deliver. Verified: every fix confirmed in a rendered browser in both themes; 72 contrast pairs still pass; no overflow at 20 widths; 268 tests, build, check:types, check:docs, actionlint all green. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SAcqrz3FcadkYr3xG32CjK
99 lines
2.8 KiB
JSON
99 lines
2.8 KiB
JSON
{
|
|
"name": "cereale",
|
|
"version": "0.4.0",
|
|
"description": "Strongly typed JSON mapping and validation for TypeScript classes \u2014 validated domain objects, not validated data. A zero-dependency replacement for class-validator + class-transformer, on TC39 standard decorators.",
|
|
"type": "module",
|
|
"main": "./dist/cjs/index.js",
|
|
"module": "./dist/esm/index.js",
|
|
"types": "./dist/esm/index.d.ts",
|
|
"exports": {
|
|
".": {
|
|
"types": "./dist/esm/index.d.ts",
|
|
"import": "./dist/esm/index.js",
|
|
"require": "./dist/cjs/index.js"
|
|
},
|
|
"./vite": {
|
|
"types": "./dist/esm/vite.d.ts",
|
|
"import": "./dist/esm/vite.js",
|
|
"require": "./dist/cjs/vite.js"
|
|
},
|
|
"./min": {
|
|
"types": "./dist/esm/index.d.ts",
|
|
"default": "./dist/cereale.min.js"
|
|
}
|
|
},
|
|
"sideEffects": [
|
|
"./dist/esm/index.js",
|
|
"./dist/esm/metadata.js",
|
|
"./dist/cereale.min.js",
|
|
"./src/index.ts",
|
|
"./src/metadata.ts"
|
|
],
|
|
"files": [
|
|
"dist",
|
|
"src",
|
|
"FRAMEWORKS.md",
|
|
"CHANGELOG.md",
|
|
"!src/**/*.test.ts",
|
|
"!src/example.ts"
|
|
],
|
|
"scripts": {
|
|
"build": "rm -rf dist && tsc -p tsconfig.cjs.json && tsc -p tsconfig.esm.json && node scripts/build-bundle.mjs",
|
|
"build:docs": "node scripts/build-docs.mjs",
|
|
"demo": "node --no-warnings=ExperimentalWarning --loader ts-node/esm src/example.ts",
|
|
"type-check": "tsc --noEmit",
|
|
"test": "vitest run",
|
|
"test:watch": "vitest",
|
|
"test:coverage": "vitest run --coverage",
|
|
"lint": "eslint .",
|
|
"lint:fix": "eslint . --fix",
|
|
"verify": "npm run type-check && npm run lint && npm run test && npm run build && npm run check:types && npm run check:docs",
|
|
"prepublishOnly": "npm run verify",
|
|
"check:docs": "node scripts/check-docs.mjs",
|
|
"check:types": "node scripts/check-types.mjs",
|
|
"check:docs-sync": "npm run build:docs && node scripts/check-docs-sync.mjs"
|
|
},
|
|
"engines": {
|
|
"node": ">=20.0.0"
|
|
},
|
|
"repository": {
|
|
"type": "git",
|
|
"url": "git+https://github.com/avalon-vanguard/cereale.git"
|
|
},
|
|
"keywords": [
|
|
"json",
|
|
"validation",
|
|
"decorators",
|
|
"standard-decorators",
|
|
"typescript",
|
|
"dto",
|
|
"serialization",
|
|
"class-validator",
|
|
"class-transformer",
|
|
"class-validator-alternative"
|
|
],
|
|
"author": "Avalon Vanguard",
|
|
"license": "MIT",
|
|
"bugs": {
|
|
"url": "https://github.com/avalon-vanguard/cereale/issues"
|
|
},
|
|
"homepage": "https://avalon-vanguard.github.io/cereale/",
|
|
"devDependencies": {
|
|
"@babel/standalone": "^8.0.4",
|
|
"@eslint/js": "^10.0.1",
|
|
"@swc/core": "^1.15.47",
|
|
"@types/node": "^25.6.0",
|
|
"@vitest/coverage-v8": "^4.1.4",
|
|
"esbuild": "^0.25.0",
|
|
"eslint": "^10.2.1",
|
|
"globals": "^17.5.0",
|
|
"ts-node": "^10.9.2",
|
|
"typescript": "^6.0.2",
|
|
"typescript-eslint": "^8.58.2",
|
|
"vitest": "^4.1.4"
|
|
},
|
|
"publishConfig": {
|
|
"access": "public"
|
|
}
|
|
}
|