fix
This commit is contained in:
parent
f7611ae351
commit
ea27006085
|
|
@ -4,7 +4,7 @@ import { g } from "utils/global";
|
||||||
|
|
||||||
export const _ = {
|
export const _ = {
|
||||||
url: "/nova-load/:mode/:id/**",
|
url: "/nova-load/:mode/:id/**",
|
||||||
async api(mode: "site" | "page" | "code", id: string) {
|
async api(mode: "site" | "code", id: string) {
|
||||||
const { req, res } = apiContext(this);
|
const { req, res } = apiContext(this);
|
||||||
|
|
||||||
if (mode === "site") {
|
if (mode === "site") {
|
||||||
|
|
@ -17,10 +17,6 @@ export const _ = {
|
||||||
return new Response(file as any);
|
return new Response(file as any);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
if (mode === "page") {
|
|
||||||
const code = await db.code_assign.findMany({ where: { id_page: id } });
|
|
||||||
return code.map((e) => e.id);
|
|
||||||
} else if (mode === "code") {
|
} else if (mode === "code") {
|
||||||
const file = Bun.file(
|
const file = Bun.file(
|
||||||
dir.path(`${g.datadir}/site/build/${id}/${req.params["*"]}`)
|
dir.path(`${g.datadir}/site/build/${id}/${req.params["*"]}`)
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,10 @@
|
||||||
import { VG } from "./global";
|
import { VG } from "./global";
|
||||||
|
|
||||||
export const codeLoaded = new Set<string>();
|
export const codeLoaded = new Set<string>();
|
||||||
|
const codeMap = {
|
||||||
|
page: {} as Record<string, string[]>,
|
||||||
|
compGroup: {} as Record<string, string[]>,
|
||||||
|
};
|
||||||
export const vLoadCode = async (v: VG, forceLoad?: boolean) => {
|
export const vLoadCode = async (v: VG, forceLoad?: boolean) => {
|
||||||
if (forceLoad) {
|
if (forceLoad) {
|
||||||
codeLoaded.clear();
|
codeLoaded.clear();
|
||||||
|
|
@ -25,9 +29,57 @@ export const vLoadCode = async (v: VG, forceLoad?: boolean) => {
|
||||||
resolve();
|
resolve();
|
||||||
}),
|
}),
|
||||||
];
|
];
|
||||||
|
const code_ids: string[] = [];
|
||||||
|
const code = await db.code.findMany({
|
||||||
|
where: { id_site: site_id, name: { notIn: ["site", "SSR"] } },
|
||||||
|
select: { code_assign: true },
|
||||||
|
});
|
||||||
|
|
||||||
const code_ids = await api.nova_load("page", page_id);
|
codeMap.compGroup = {};
|
||||||
for (const id of code_ids) {
|
codeMap.page = {};
|
||||||
|
for (const c of code) {
|
||||||
|
c.code_assign.forEach((e) => {
|
||||||
|
if (e.id_page) {
|
||||||
|
if (!codeMap.page[e.id_page]) codeMap.page[e.id_page] = [];
|
||||||
|
codeMap.page[e.id_page].push(e.id_code);
|
||||||
|
}
|
||||||
|
if (e.id_component_group) {
|
||||||
|
if (!codeMap.compGroup[e.id_component_group])
|
||||||
|
codeMap.compGroup[e.id_component_group] = [];
|
||||||
|
codeMap.page[e.id_component_group].push(e.id_code);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
if (codeMap.page[page_id]) {
|
||||||
|
for (const id of codeMap.page[page_id]) {
|
||||||
|
promises.push(
|
||||||
|
new Promise<void>(async (resolve) => {
|
||||||
|
if (!codeLoaded.has(id)) {
|
||||||
|
codeLoaded.add(id);
|
||||||
|
const module = await importCJS(`/nova-load/code/${id}/index.js`);
|
||||||
|
for (const [k, v] of Object.entries(module)) {
|
||||||
|
w[k] = v;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
resolve();
|
||||||
|
})
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
await Promise.all(promises);
|
||||||
|
|
||||||
|
v.mode = "rebuild";
|
||||||
|
v.render();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const loadCGroupCode = async (cgroup_id: string) => {
|
||||||
|
if (codeMap.compGroup[cgroup_id]) {
|
||||||
|
const promises = [];
|
||||||
|
const w = window as any;
|
||||||
|
for (const id of codeMap.compGroup[cgroup_id]) {
|
||||||
promises.push(
|
promises.push(
|
||||||
new Promise<void>(async (resolve) => {
|
new Promise<void>(async (resolve) => {
|
||||||
if (!codeLoaded.has(id)) {
|
if (!codeLoaded.has(id)) {
|
||||||
|
|
@ -41,11 +93,7 @@ export const vLoadCode = async (v: VG, forceLoad?: boolean) => {
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
await Promise.all(promises);
|
await Promise.all(promises);
|
||||||
|
|
||||||
v.mode = "rebuild";
|
|
||||||
v.render();
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue