dssl / scripts /repro-v072.mjs
EHS-Studio's picture
Claude Sonnet 5.5
Site and docs for 0.9.0; drop template leftovers; scripts without hard-coded paths
794b22f
Raw History Blame Contribute Delete
1.95 kB
#!/usr/bin/env node
// Reproduces every compiler-level claim from the external agent review (0.7.2 cycle).
import { parse } from '../public/dssl/parser.js';
import { resolve } from '../public/dssl/resolver.js';
let fails = 0;
function show(name, source, opts = {}) {
const { ast } = parse(source, 'repro.dssl');
const out = resolve(ast, 'repro.dssl', {});
console.log('== ' + name);
if (out.errors?.length) console.log(' ERRORS:', out.errors.map(e => e.message || e).join(' | '));
if (out.warnings?.length) console.log(' WARNINGS:', out.warnings.map(e => e.message || e).join(' | '));
for (const r of (out.rules || [])) {
console.log(' rule:', r.selector, JSON.stringify(r.decls || r.sets || r).slice(0, 220));
}
return out;
}
// 1. THE BIG ONE: nested state must sort after base
show('nested hover vs base (cascade)', `
.card {
background: #26201a
hover { background: #c0392b }
}
`);
// 2. raw hex alpha
show('raw hex /50 alpha', `
.card { background: #ff0000/50 }
`);
// 3. transition-delay units
show('transition-delay 200', `
.card { transition-delay: 200 }
`);
// 4. grid gap shorthand
show('grid: 3 gap 12', `
.grid { grid: 3 gap 12 }
`);
// 5. shadow token def with bare ink
show('shadow { md: 0 2 4 ink/10 }', `
shadow { md: 0 2 4 ink/10 }
`);
// 6. seen block
show('seen { opacity: 0 -> 1 } block', `
.card { seen { opacity: 0 -> 1 } }
`);
show('seen as motion decl', `
.card { seen: opacity 0 -> 1 }
`);
// 7. hovr typo nested
show('nested hovr typo', `
.card { hovr { background: red } }
`);
// 8. missing properties
show('fill/stroke/text-wrap/content-visibility', `
.card { fill: red; stroke: blue; stroke-width: 2; text-wrap: balance; content-visibility: auto }
`);
// 9. ::part / ::slotted
show('::part selector', `
my-card::part(header) { background: red }
`);
// 10. shadow: sm / hover shadow lg quickstart pattern
show('README quickstart pattern', `
.card { shadow: sm; hover { shadow: lg } }
`);