20 lines
1.3 KiB
JavaScript
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}))
|