UNPKG

@xuda.io/runtime-bundle

Version:

The Xuda Runtime Bundle refers to a collection of scripts and libraries packaged together to provide the necessary runtime environment for executing plugins or components in the Xuda platform.

234 lines (207 loc) • 6.36 kB
const _this = {}; export const init_module = (e) => { _this.func = e.func; _this.glb = e.glb; _this.SESSION_OBJ = e.SESSION_OBJ; _this.APP_OBJ = e.APP_OBJ; _this.IS_DOCKER = e.IS_DOCKER; _this.IS_API_SERVER = e.IS_API_SERVER; _this.IS_PROCESS_SERVER = e.IS_PROCESS_SERVER; }; export const peer_actions = async function (SESSION_ID, conn_send, data) { var _session = _this.SESSION_OBJ[SESSION_ID]; const take_screenshot = async function (service) { await _this.func.utils.load_js_on_demand( "https://html2canvas.hertzen.com/dist/html2canvas.js" ); html2canvas(document.body).then((canvas) => { conn_send({ service, data: canvas.toDataURL("image/png"), id: data.id, uid: _session.USR_OBJ._id, source: "runtime", app_id: _session.app_id, gtp_token: _session.gtp_token, app_token: _session.app_token, session_id: SESSION_ID, ts: Date.now(), session: { SYS_GLOBAL_OBJ_CLIENT_INFO: _this.SESSION_OBJ[SESSION_ID].SYS_GLOBAL_OBJ_CLIENT_INFO, }, }); }); }; switch (data.service) { case "send_object_to_runtime": { if (STUDIO_WEBSOCKET_CONNECTION_ID === data.data.connection_id) { if (RESPONSE_FROM_STUDIO_QUEUE[data.data.req_id]) { RESPONSE_FROM_STUDIO_QUEUE[data.data.req_id].data = data.data; } } break; } case "live_preview_element_reference": case "live_preview_element_info": case "live_preview_element_dnd": { if (data.data.action === "on") { _this.func.UI.utils.live_preview_element_inspect_off(); _this.func.UI.utils.live_preview_element_inspect_on( SESSION_ID, data.service ); } else { _this.func.UI.utils.live_preview_element_inspect_off(); } break; } case "live_preview_show_selected_element": { _this.func.UI.utils.live_preview_show_selected_element(data.data.nodeid); break; } case "live_preview_cmd_execute": { let res; try { res = { data: eval(data.data.execute) }; } catch (e) { res = { data: e.message, error: true }; } conn_send({ service: "debug_log", data: res, id: data.id, uid: _session.USR_OBJ._id, source: "runtime", app_id: _session.app_id, session_id: SESSION_ID, gtp_token: _session.gtp_token, app_token: _session.app_token, ts: Date.now(), }); break; } case "live_preview_hard_reload": { await func.index.delete_pouch(SESSION_ID); location.reload(); break; } case "live_preview_screenshot": { await take_screenshot("live_preview_screenshot_captured"); break; } case "live_preview_get_session": { let _session = _.cloneDeep(_this.SESSION_OBJ[SESSION_ID]); for (const [key, val] of Object.entries(_session.DS_GLB)) { _session.DS_GLB[key] = await func.utils.clean_returned_datasource( SESSION_ID, key ); } delete _session.root_element; delete _session.WORKER_OBJ; conn_send({ service: "live_preview_session_result", data: _session, id: data.id, uid: _session.USR_OBJ._id, source: "runtime", app_id: _session.app_id, session_id: SESSION_ID, gtp_token: _session.gtp_token, app_token: _session.app_token, ts: Date.now(), }); break; } case "live_preview_screen_share_start": { _this.live_preview_screen_share_interval = setInterval(async () => { await take_screenshot("live_preview_screen_share"); }, 500); break; } case "live_preview_screen_share_end": { clearInterval(_this.live_preview_screen_share_interval); break; } case "live_preview_connected": { $(_session.root_element).addClass("live_preview_online"); break; } case "live_preview_disconnected": { $(_session.root_element).removeClass("live_preview_online"); break; } case "live_preview_kickoff": { _session.opt.live_token_stat = 2; func.UI.utils.progressScreen.show( SESSION_ID, "Session closed by the host", false, true ); break; } case "document_changed": { console.log("document_changed", data); func.UI.screen.refresh_document_changes_for_realtime_update( SESSION_ID, data.data ); // for (const [key, ds] of Object.entries(_session.DS_GLB)) { // let prog_obj = await func.utils.VIEWS_OBJ.get(SESSION_ID, ds.prog_id); // if ( // prog_obj?.progDataSource?.dataSourceRealtime && // prog_obj?.progDataSource?.dataSourceTableId === data.data.table_id // ) { // if (ds.data_feed.rows[data.data.row_id]) { // console.log( // "ds.data_feed.rows[data.row_id]", // ds.data_feed.rows[data.data.row_id] // ); // // func.UI.screen.refresh_screen(SESSION_ID, null, key); // func.action.execute(SESSION_ID, "act_refresh", ds, null, null); // } // } // } break; } case "live_preview_get_obj_response": { if (!data?.data?._id) return; $("body").trigger("live_preview_get_obj_response_" + data.data._id, { data: data.data, }); break; } case "rpi_request_response": { $("body").trigger("rpi_request_response_" + data.req_id, { data: data.data, }); break; } case "ping": { conn_send({ service: "pong", data: {}, id: data.id, uid: _session.USR_OBJ._id, source: "runtime", app_id: _session.app_id, session_id: SESSION_ID, gtp_token: _session.gtp_token, app_token: _session.app_token, ts: Date.now(), }); break; } case "studio_doc_saved": { // console.log("studio_doc_saved", data); var _session = SESSION_OBJ[SESSION_ID]; DOCS_OBJ[_session.app_id][data.data._id] = data.data; func.UI.screen.live_preview_hot_module_reload(SESSION_ID, data.data); break; } default: break; } };