const { readFile } = require('fs').promises;

// Snowpack plugins must be CommonJS :(
const transformPromise = import('./lib/compiler/index.js');

module.exports = function (snowpackConfig, { resolve, extensions, astroConfig } = {}) {
  return {
    name: 'snowpack-astro',
    knownEntrypoints: ['deepmerge'],
    resolve: {
      input: ['.astro', '.md'],
      output: ['.js'],
    },
    async load({ filePath }) {
      const { compileComponent } = await transformPromise;
      const projectRoot = snowpackConfig.root;
      const contents = await readFile(filePath, 'utf-8');
      const compileOptions = {
        astroConfig,
        resolve,
        extensions,
      };
      const result = await compileComponent(contents, { compileOptions, filename: filePath, projectRoot });
      return result.contents;
    },
  };
};