const path = require('path');
const html = require('choo/html');
const NAME = 'AndroidIndexPlugin';

function chunkFileNames(compilation) {
  const names = {};
  for (const chunk of compilation.chunks) {
    for (const file of chunk.files) {
      if (!/\.map$/.test(file)) {
        names[`${chunk.name}${path.extname(file)}`] = file;
      }
    }
  }
  return names;
}
class AndroidIndexPlugin {
  apply(compiler) {
    compiler.hooks.emit.tap(NAME, compilation => {
      const files = chunkFileNames(compilation);
      const page = html`
        <html lang="en-US">
          <head>
            <title>Send</title>
            <meta charset="utf-8" />
            <meta
              name="viewport"
              content="width=device-width, initial-scale=1"
            />
            <base href="file:///android_asset/" />
            <link href="${files['app.css']}" rel="stylesheet" />
            <script src="${files['android.js']}"></script>
          </head>
          <body></body>
        </html>
      `
        .toString()
        .replace(/\n\s{6}/g, '\n');
      compilation.assets['android.html'] = {
        source() {
          return page;
        },
        size() {
          return page.length;
        }
      };
    });
  }
}

module.exports = AndroidIndexPlugin;
