import {run} from '../UserScriptをbundleするDeno_script/script.ts';

const {outputFiles} = await run(
  `https://scrapbox.io/api/code/takker/from-programming-notes/index.js`,
  {},
  {
    external: [
      '../scrapbox-parser@7.1.0/script.js',
      '../scrapbox-access-nodes@0.1.0/script.js',
      '../scrapbox-cursor-position-2/script.js',
      '../scrapbox-dom-accessor/script.js',
      '../scrapbox-keyboard-emulation/script.js',
      '../date-fns.min.js/script.js',
    ],
    charset: 'utf8',
    bundle: true,
    minify: true,
    write: false, // 標準出力やfileにbundleしたコードを出力しない
    sourcemap: 'inline',
  }
);
const code = (outputFiles?.[0]?.text ?? '')
  // /takker用にimport pathやその他変数を書き換える
  .replaceAll('履歴スライダー', 'Open commit viewer')
  .replaceAll('addMenu', 'addItem')
  .replaceAll('scrapbox-cursor-position-2', 'scrapbox-cursor-position-6')
  .replaceAll('scrapbox-keyboard-emulation', 'scrapbox-keyboard-emulation-2');

const json: {pages: {title: string; lines: string[];}[];} = {
  pages: [{
    title: 'from-programming-notes-scripts',
    lines: [
      'from-programming-notes-scripts',
      '[from-programming-notes]の[index.js https://scrapbox.io/api/code/takker/from-programming-notes/index.js]をsource map付きでbundleしたもの',
      '[import]からはこのコードを読み込む',
      '',
      'code:script.js',
      ...code.split('\n').map(line => ` ${line}`),
    ],
  }],
};
await Deno.writeTextFile('import.json', JSON.stringify(json));