text: "use strict";
  
  import fs from "fs";
  import path from "path";
  
  import commonjs from '@rollup/plugin-commonjs';
  import resolveNode from "@rollup/plugin-node-resolve";
  import replace from "@rollup/plugin-replace";
  
  // We only need this for its version (we inject it into a require)
  import elliptic from "elliptic";
  
  function getSigningKeyConfig() {
  
      const plugins = [ ];
  
      // Remove the buffer check from BN.js
      plugins.push(replace({
          "require('buffer')": "/*RicMoo:vapors*/(null)",
          include: "**/lib/bn.js",
          delimiters: [ '', '' ]
      }));
  
      // Replace the package.json in elliptic
      plugins.push(replace({
          "require('../package.json')": `/*RicMoo:vapors*/{ version: "${ elliptic.version }" }`,
          include: "**/lib/elliptic.js",
          delimiters: [ '', '' ]
      }));
  
      // Nuke a bunch of requires we don't need in elliptic
      const thrower = "(function() { throw new Error('unsupported'); })";
      const crash = "(null).crash()";
      [
          { name: "./edwards", filename: "curve/index.js" },
          { name: "./mont", filename: "curve/index.js" },
          { name: "./elliptic/eddsa", filename: "lib/elliptic.js" },
          { name: "brorand", filename: "ec/index.js", text: thrower },
          { name: "brorand", filename: "lib/elliptic.js", text: thrower },
          { name: "./precomputed/secp256k1", filename: "elliptic/curves.js", text: crash },
      ].forEach(({ name, filename, text }) => {
          if (text == null) { text = "(null)"; }
          const replacement = {
              include: `**/${ filename }`,
              delimiters: [ '', '' ]
          };
          replacement[`require('${ name }')`] = `/*RicMoo:vapors:require(${ name })*/${ text }`,
          plugins.push(replace(replacement));
      });
  
      // Keep @vaporsproject imports, merge anything else
      plugins.push(resolveNode({
          //resolveOnly: ((name === "vapors") ? []: [ /^(?!(@vaporsproject|vapors))/ ]),
          resolveOnly: [ /^(?!(@vaporsproject|vapors|bn\.js|hash\.js))/ ],
          mainFields: [ "module", "browser", "main" ],
          preferBuiltins: false
      }));
  
      // Our CommonJS dependencies that are not rollup-friendly
      plugins.push(commonjs({ }));
  
      // Write out a dummy TypeScript definition
      const typeDef = "//This file generated by rollup-pre-alias.config.js; do NOT modify\ndeclare const EC: any;\nexport { EC };"
      fs.writeFileSync(path.resolve(__dirname, "packages/signing-key/lib._esm/browser-elliptic.d.ts"), typeDef);
  
      return {
          input: `packages/signing-key/lib._esm/elliptic.js`,
          output: {
              file: `packages/signing-key/lib._esm/browser-elliptic.js`,
              format: "esm",
              sourcemap: true,
              exports: "named"
          },
          context: "window",
          treeshake: false,
          plugins
      };
  }
  
  const configs = [
      getSigningKeyConfig()
  ];
  
  export default configs;
  