Download scripts/dssl-styles-check.mjs from EHS-Studio/dssl: direct link, hf CLI and curl.
- Browser
- Download file 1.4 kB
-
https://huggingface.co/EHS-Studio/dssl/resolve/main/scripts/dssl-styles-check.mjs
- Command line
-
hf download hf://EHS-Studio/dssl/scripts/dssl-styles-check.mjs
-
curl -L -o dssl-styles-check.mjs https://huggingface.co/EHS-Studio/dssl/resolve/main/scripts/dssl-styles-check.mjs
1.4 kB
| // Compile the real site stylesheets through the DSSL compiler, | |
| // sharing a token registry exactly like the runtime does (tokens.dssl first). | |
| import { readFileSync, readdirSync } from 'fs'; | |
| import { parse } from '../public/dssl/parser.js'; | |
| import { resolve, DEFAULT_TOKENS } from '../public/dssl/resolver.js'; | |
| const dir = new URL('../public/styles/', import.meta.url).pathname; | |
| const order = ['tokens.dssl', 'site.dssl', 'home.dssl', 'docs.dssl', 'playground.dssl', 'changelog.dssl']; | |
| const files = readdirSync(dir).filter(f => f.endsWith('.dssl')); | |
| const sorted = order.filter(f => files.includes(f)).concat(files.filter(f => !order.includes(f))); | |
| const registry = new Map(Object.entries(DEFAULT_TOKENS)); | |
| let failed = false; | |
| for (const f of sorted) { | |
| const src = readFileSync(dir + f, 'utf8'); | |
| const { ast, errors: perrs } = parse(src, f); | |
| const doc = resolve(ast, f, Object.fromEntries(registry)); | |
| for (const [k, v] of Object.entries(doc.tokens)) registry.set(k, v); | |
| const errs = [...perrs, ...doc.errors]; | |
| console.log(`\n=== ${f}: ${doc.rules.length} rules, ${doc.shadowRules.length} shadow, ${errs.length} error(s)`); | |
| for (const e of errs) { | |
| failed = true; | |
| console.log(` line ${e.line}: ${e.message}${e.hint ? ` (did you mean "${e.hint}"?)` : ''}`); | |
| } | |
| } | |
| console.log(failed ? '\nSTYLESHEET CHECK FAILED' : '\nSTYLESHEET CHECK OK'); | |
| process.exitCode = failed ? 1 : 0; | |