const fs = require("fs");
const TOOLS_NODE = require('../env/TOOLS/_qxVm.TOOLS.NODE');
const BASE_OBJ_NODE = require('../env/BASE_CONFIG/_qxVm.BASE_CONFIG.node');
const EVENT_NODE = require('../env/EVENT/_qxVm.EVENT.NODE');
const EVENTTARGET_NODE = require('../env/EVENTTARGET/_qxVm.EVENTTARGET.NODE');
const BOM_NODE = require('../env/BOM/_qxVm.BOM.NODE');
const DOM_NODE = require('../env/DOM/_qxVm.DOM.NODE');
const VM_PROXYOBJ = require('../env/TOOLS/vm_proxyObj');
/*
导包顺序就是继承关系的顺序
*/

function qxVm_env_generate(user_config_str) {
    let code = "";

    code += `${TOOLS_NODE.Get_tools_node_code()}\r\n`;  // 自己封装的工具

    code += user_config_str.pop('canvas_str');    // 自定义canvas指纹放到框架内存

    code += user_config_str.pop('env_str');    // 自定义浏览器环境放到框架内存

    code += user_config_str.pop('plugin_str');    // 自定义浏览器插件放到框架内存

    code += `${BASE_OBJ_NODE.Get_baseConfig_node_code()}\r\n`;  // base config

    code += `${EVENT_NODE.Get_event_node_code()}\r\n`  // event相关的Object

    code += `${EVENTTARGET_NODE.Get_eventTarget_node_code()}\r\n`  // eventTarget相关的Object

    code += `${BOM_NODE.Get_Bom_node_code()}\r\n`;  // BOM

    code += user_config_str.pop('window_attribute_str');    // 初始化 window 属性

    code += `${DOM_NODE.Get_Dom_node_code()}\r\n`;  // DOM

    code += 'lwVm.memory.htmlCollection[0] = new HTMLBodyElement(lwVm.memory.$createObj_key);\r\n\r\n';  // 初始化DOM节点
    code += 'lwVm.memory.htmlCollection[1] = new HTMLHeadElement(lwVm.memory.$createObj_key);\r\n\r\n';  // 初始化DOM节点

    code += `${VM_PROXYOBJ.vm_proxyObj()}\r\n`;  // 设置代理对象

    code += `${BASE_OBJ_NODE.Get_frameEnd_code()}\r\n`  // 结束的操作

    return code
}

module.exports = {
    qxVm_env: qxVm_env_generate
};

