/** * This rollup plugin use to recovery Userscript Metadata Header. */ function getMetaHeader(code) { const startStr = '// ==UserScript==' const endStr = '// ==/UserScript==' const startPos = code.indexOf(startStr) const endPost = code.indexOf(endStr) + endStr.length + 1 let partOne = code.substring(startPos, endPost) let partTwo = code.substring(endPost) return [partOne, partTwo] } export default function fix(options = {}) { let metaHeader; return { name: 'metadata', transform(code) { let restPart = code if (code.startsWith('// ==UserScript==')) { [metaHeader, restPart] = getMetaHeader(code) } return restPart }, renderChunk(code) { if (metaHeader) { return metaHeader + '\n\n' + code } return code } } }