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 = `
/**++++++++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);
    },
}