prasi-bun/app/web/src/nova/view/logic/load-code-old.ts

60 lines
1.7 KiB
TypeScript

import importModule from "../../../render/editor/tools/dynamic-import";
import { devLoader } from "../../../render/live/dev-loader";
import { createAPI, createDB, initApi } from "../../../utils/script/init-api";
import { VG } from "./global";
export const oldLoadCode = async (v: VG) => {
const site = await db.site.findFirst({
where: { id: v.current.site_id },
include: { component_site: true },
});
const loader = devLoader;
const p = {} as any;
if (site) {
const w = window as any;
if (!w.exports) w.exports = {};
if (site.component_site) {
for (const cg of site.component_site) {
await importModule(loader.npm(p, "site", cg.id_component_group));
}
}
await initApi(site.config);
await importModule(loader.npm(p, "site", site.id));
if (site.js_compiled) {
const config = site.config as any;
const exec = (fn: string, scopes: any) => {
if (config.api_url && !scopes["api"]) {
scopes["api"] = createAPI(config.api_url);
scopes["db"] = createDB(config.api_url);
}
scopes.params = w.params;
scopes.module = {};
const f = new Function(...Object.keys(scopes), fn);
const res = f(...Object.values(scopes));
return res;
};
const scope = {
types: {},
exports: w.exports,
load: importModule,
render: p.render,
module: {
exports: {} as any,
},
};
exec(site.js_compiled, scope);
if (scope.module.exports) {
for (const [k, v] of Object.entries(scope.module.exports)) {
w.exports[k] = v;
}
}
}
}
v.status = "rebuild";
v.render();
};