Files
ycode/scripts/rea/recover-table-styles.mjs
T

20 lines
1.3 KiB
JavaScript

import fs from 'node:fs'
import crypto from 'node:crypto'
import postcss from 'postcss'
const file='.tmp/rea-css-recovered/src-CyXHA0IC.css'
const css=fs.readFileSync(file,'utf8'),sha=crypto.createHash('sha256').update(css).digest('hex')
if(sha!=='a5e26b537bb50323aefbf25abddad52e288dd3868598be8d255d70886fe77cfe')throw Error('Unexpected pinned REA table CSS source')
const rules=[]
postcss.parse(css).walkRules(rule=>{
const selectors=rule.selectors.filter(selector=>/\.cr-table-block|^\.cr-markdown (?:th|td)(?:\b|>)/.test(selector))
if(!selectors.length)return
const selected=rule.clone();selected.selectors=selectors.map(selector=>selector.includes('.cr-markdown')?selector:'.cr-markdown '+selector)
let tree=selected
for(let parent=rule.parent;parent?.type==='atrule';parent=parent.parent){const outer=parent.clone({nodes:[]});outer.append(tree);tree=outer}
rules.push(tree.toString())
})
fs.writeFileSync('src/renderer/src/workbuddy/markdown/source-table.css',`/* WorkBuddy 5.8.2; REA ev_377c8790468b3c67dad8577aabb327f98d3140659f0fffdbabfcff5a40cc9e94.
* src-CyXHA0IC.css SHA-256 ${sha}; table selectors scoped to .cr-markdown.
* Native geometry evidence ev_d6e6920ff4e47f73a182fac5312c5f02393366a035445d18c8a6733a8c8a11ed. */\n`+rules.join('\n')+'\n')
console.log(JSON.stringify({sha,rules:rules.length}))