import assert from 'node:assert/strict' import { execFileSync } from 'node:child_process' import { readFileSync } from 'node:fs' import { dirname, resolve } from 'node:path' import { performance } from 'node:perf_hooks' import { build } from 'esbuild' import { buildCounterbalancedSchedule } from './counterbalanced-benchmark-schedule.mjs' const baseline = process.argv[2] ?? '20ab9950654' const file = 'src/renderer/src/components/editor/raw-markdown-html.ts' async function load(contents) { const result = await build({ stdin: { contents: `${contents}\nexport { createRichMarkdownEditorCodec } from './rich-markdown-source-transport'`, loader: 'ts', resolveDir: dirname(resolve(file)) }, bundle: true, platform: 'node', format: 'esm', write: false, banner: { js: `import { createRequire } from 'node:module'; const require = createRequire(${JSON.stringify(resolve('package.json'))});` } }) return import( `data:text/javascript;base64,${Buffer.from(result.outputFiles[0].text).toString('base64')}` ) } const arms = { before: await load( execFileSync('git', ['show', `${baseline}:${file}`], { encoding: 'utf8', windowsHide: true }) ), after: await load(readFileSync(file, 'utf8')) } const key = '0123456789abcdef0123456789abcdef' const codecs = Object.fromEntries( Object.entries(arms).map(([arm, module]) => [arm, module.createRichMarkdownEditorCodec(key)]) ) const results = [] for (const [name, input] of [ ['plain', '# Heading\nOrdinary prose.'], ['complete', 'before after text\n'.repeat(100)], ['unclosed-1000', `prefix ${'${'