import resolve from "@rollup/plugin-node-resolve";
import commonjs from "@rollup/plugin-commonjs";
import jsonPlugin from "@rollup/plugin-json";
import fs from "fs";
import path from "path";

const sandboxBundle = fs.readFileSync(
  path.resolve("./node_modules/doric/bundle/doric-sandbox.js"),
  "utf-8"
);

const doricLibBundle = fs.readFileSync(
  path.resolve("./node_modules/doric/bundle/doric-lib.js"),
  "utf-8"
);

const builtinScript = `
const Environment = {
    platform:"web"
};
/**++++++++SandBox++++++++*/
${sandboxBundle}
/**--------SandBox--------*/

/**++++++++Lib++++++++*/
Reflect.apply(doric.jsRegisterModule,this,["doric",Reflect.apply(function(__module){(function(module,exports,require){
${doricLibBundle}
})(__module,__module.exports,doric.__require__);
return __module.exports;
},this,[{exports:{}}])]);
/**--------Lib--------*/
    `;

export default {
  input: `build/index.js`,
  output: {
    format: "iife",
    name: "doric_web",
    file: `dist/index.js`,
    sourcemap: true,
    banner: builtinScript,
    globals: {
      doric: "doric_lib",
      "doric/src/runtime/sandbox": "doric",
    },
  },
  plugins: [resolve({ mainFields: ["jsnext"] }), commonjs(), jsonPlugin()],
  external: ["axios", "reflect-metadata", "doric"],
  onwarn: function (warning) {
    if (warning.code === "THIS_IS_UNDEFINED") {
      return;
    }
    console.warn(warning.message);
  },
};