fix
This commit is contained in:
parent
ac34579b84
commit
b60d2f77c6
|
|
@ -10,6 +10,7 @@ eg.edit = {
|
|||
page: {},
|
||||
ws: new WeakMap(),
|
||||
};
|
||||
|
||||
export const wsHandler: Record<string, WebSocketHandler<WSData>> = {
|
||||
"/sync": syncHandler,
|
||||
"/edit": editHandler,
|
||||
|
|
|
|||
|
|
@ -0,0 +1,3 @@
|
|||
import { build } from "bun";
|
||||
|
||||
export const codeBuild = (id_code: string) => {};
|
||||
|
|
@ -0,0 +1 @@
|
|||
export const codePkgInstall = (id_code: string) => {};
|
||||
|
|
@ -66,6 +66,7 @@ const getCode = async (site_id: string) => {
|
|||
},
|
||||
select: {
|
||||
id: true,
|
||||
id_site: true,
|
||||
name: true,
|
||||
code_file: true,
|
||||
},
|
||||
|
|
|
|||
|
|
@ -5,8 +5,12 @@ import { g } from "utils/global";
|
|||
import { dirAsync } from "fs-jetpack";
|
||||
import { dirname } from "path";
|
||||
import { spawn } from "bun";
|
||||
import { activity } from "../../entity/activity";
|
||||
import { sendWS } from "../../sync-handler";
|
||||
import { SyncType } from "../../type";
|
||||
|
||||
export const Code = {
|
||||
pkginstall: {} as Record<string, true>,
|
||||
watchers: {} as Record<
|
||||
string,
|
||||
{ id: string; watcher: ReturnType<typeof watch> }
|
||||
|
|
@ -16,6 +20,7 @@ export const Code = {
|
|||
},
|
||||
};
|
||||
|
||||
const decoder = new TextDecoder();
|
||||
export const startCodeWatcher = async (code: DBCode) => {
|
||||
if (Code.watchers[code.id]) {
|
||||
return;
|
||||
|
|
@ -55,19 +60,63 @@ export const startCodeWatcher = async (code: DBCode) => {
|
|||
async (event, path) => {
|
||||
if (path) {
|
||||
const file = Bun.file(Code.path(code.id, path));
|
||||
|
||||
const item = indexes[path];
|
||||
|
||||
if (event === "change") {
|
||||
if (item) {
|
||||
console.log(path, await file.text());
|
||||
let content = await file.text();
|
||||
if (path === "package.json") {
|
||||
try {
|
||||
activity.site
|
||||
.room(code.id_site)
|
||||
.findAll({ site_js: code.name })
|
||||
.forEach((item, ws) => {
|
||||
sendWS(ws, {
|
||||
type: SyncType.Event,
|
||||
evant: "code",
|
||||
data: {
|
||||
name: code.name,
|
||||
id: code.id,
|
||||
event: "pkg-install-start",
|
||||
},
|
||||
});
|
||||
});
|
||||
|
||||
const proc = spawn({
|
||||
cmd: ["bun", "i"],
|
||||
cwd: Code.path(code.id),
|
||||
stderr: "pipe",
|
||||
stdout: "pipe",
|
||||
});
|
||||
const stdout = await Bun.readableStreamToText(proc.stdout);
|
||||
const stderr = await Bun.readableStreamToText(proc.stderr);
|
||||
await proc.exited;
|
||||
|
||||
activity.site
|
||||
.room(code.id_site)
|
||||
.findAll({ site_js: code.name })
|
||||
.forEach((item, ws) => {
|
||||
sendWS(ws, {
|
||||
type: SyncType.Event,
|
||||
evant: "code",
|
||||
data: {
|
||||
name: code.name,
|
||||
id: code.id,
|
||||
event: "pkg-install-end",
|
||||
content: `${stdout}${
|
||||
!!stderr ? `\n\nERROR:\n ${stderr}` : ""
|
||||
}`,
|
||||
},
|
||||
});
|
||||
});
|
||||
} catch (e) {}
|
||||
}
|
||||
|
||||
await db.code_file.update({
|
||||
where: {
|
||||
path_id_code: { id_code: item.id_code, path: item.path },
|
||||
},
|
||||
data: {
|
||||
content: await file.text(),
|
||||
content,
|
||||
},
|
||||
});
|
||||
}
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@ const packr = new Packr({ structuredClone: true });
|
|||
export const sendWS = (ws: ServerWebSocket<WSData>, msg: any) => {
|
||||
ws.sendBinary(packr.pack(msg));
|
||||
};
|
||||
|
||||
export const syncHandler: WebSocketHandler<WSData> = {
|
||||
open(ws) {
|
||||
const client_id = createId();
|
||||
|
|
|
|||
|
|
@ -62,8 +62,10 @@ export const edInitSync = (p: PG) => {
|
|||
site_id: params.site_id,
|
||||
page_id: params.page_id,
|
||||
events: {
|
||||
activity(arg) {
|
||||
code(arg) {
|
||||
console.log(arg);
|
||||
},
|
||||
activity(arg) {},
|
||||
opened() {
|
||||
if (w.offline) {
|
||||
console.log("reconnected!");
|
||||
|
|
|
|||
|
|
@ -54,6 +54,7 @@ export const registerMobile = () => {
|
|||
if (window.parent) {
|
||||
window.addEventListener("message", async ({ data: raw }) => {
|
||||
if (typeof raw === "object" && raw.mobile) {
|
||||
console.log("capacitor", raw);
|
||||
const data = raw as unknown as
|
||||
| {
|
||||
type: "notification-token";
|
||||
|
|
|
|||
|
|
@ -75,6 +75,12 @@ export const clientStartSync = async (arg: {
|
|||
site_id?: string;
|
||||
page_id?: string;
|
||||
events: {
|
||||
code: (arg: {
|
||||
name: string;
|
||||
id: string;
|
||||
event: "pkg-install-start" | "pkg-isntall-end";
|
||||
content?: string;
|
||||
}) => void;
|
||||
activity: (arg: {
|
||||
activity: string;
|
||||
room_id: string;
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
"module": "src/index.ts",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"dev": "bun run --hot --silent ./pkgs/core/index.ts dev",
|
||||
"dev": "bun run --watch ./pkgs/core/index.ts dev",
|
||||
"clean": "rm -rf data && rm -rf app/static && rm -rf app/web/.parcel-cache",
|
||||
"build": "bun run --silent ./pkgs/core/build.ts",
|
||||
"build-site": "bun run --silent ./pkgs/core/build-site.ts",
|
||||
|
|
|
|||
Loading…
Reference in New Issue