Files
triliumnext-korean-patch/updates/2026-09-05/work/trilium/build-phase5.mjs
T

29 lines
1.9 KiB
JavaScript

import fs from 'node:fs';import crypto from 'node:crypto';
const b='work/trilium',out=b+'/phase5';fs.mkdirSync(out,{recursive:true});
const hash=s=>crypto.createHash('sha256').update(s).digest('hex');
const pdf=fs.readFileSync('output/pdf/마지막-질문-한국어.pdf');fs.writeFileSync(out+'/demo-ko.pdf',pdf);
const original=fs.readFileSync(b+'/phase4-inspect/demo.pdf');
let main=fs.readFileSync(b+'/phase4/main.cjs','utf8');const oldmain=main;
const marker='triliumApplyKoreanPhase4()})';if(main.split(marker).length!==2)throw Error('Startup mismatch');
main=main.replace(marker,'triliumApplyKoreanPhase4();triliumApplyKoreanPdf()})');
const hook=`
function triliumApplyKoreanPdf(){
const fs=require('fs'),crypto=require('crypto'),file='/home/node/trilium-data/korean-demo-pdf.pending';
if(!fs.existsSync(file))return;
const content=fs.readFileSync(file),hash=s=>crypto.createHash('sha256').update(s).digest('hex');
if(hash(content)!=='${hash(pdf)}')throw Error('Invalid Korean PDF');
de.transactional(()=>{
const n=J.getNoteOrThrow('swKGGdlek7o6'),old=n.getContent();
if(n.isDeleted||n.isProtected||n.mime!=='application/pdf')throw Error('PDF note mismatch');
if(hash(old)===hash(content))return;
if(hash(old)!=='${hash(original)}')throw Error('PDF content changed');
const rev=new Mk({noteId:n.noteId,title:n.title,type:n.type,mime:n.mime,isProtected:n.isProtected,utcDateLastEdited:n.utcDateModified,utcDateCreated:kr.utcNowDateTime(),utcDateModified:kr.utcNowDateTime(),dateLastEdited:n.dateModified,dateCreated:kr.localNowDateTime()},true);
rev.save();rev.setContent(old);n.setContent(content);
});
fs.renameSync(file,file+'.applied-'+Date.now());console.log('KOREAN_DEMO_PDF_APPLIED');
}
`;
fs.writeFileSync(out+'/main.cjs',hook+main);
fs.writeFileSync(out+'/manifest.json',JSON.stringify({previousMainSha256:hash(oldmain),originalPdfSha256:hash(original),files:{'main.cjs':hash(hook+main),'demo-ko.pdf':hash(pdf)}},null,2));
console.log({pdfBytes:pdf.length});