Tons of refactoring, moving commands and slash commands into hooks

This commit is contained in:
Zef Hemel
2022-03-29 11:21:32 +02:00
parent bf32d6d0bd
commit b89aee97d7
42 changed files with 330 additions and 224 deletions
+2 -2
View File
@@ -1,6 +1,6 @@
import { Express } from "express";
import { SilverBulletHooks } from "../common/manifest";
import { EndpointFeature } from "../plugos/feature/endpoint";
import { EndpointHook } from "../plugos/hooks/endpoint";
import { readFile } from "fs/promises";
import { System } from "../plugos/system";
@@ -19,7 +19,7 @@ export class ExpressServer {
this.rootPath = rootPath;
this.system = system;
system.addFeature(new EndpointFeature(app, "/_"));
system.addHook(new EndpointHook(app, "/_"));
// Fallback, serve index.html
let cachedIndex: string | undefined = undefined;
+11 -14
View File
@@ -11,9 +11,9 @@ import { stat } from "fs/promises";
import { Cursor, cursorEffect } from "../webapp/cursorEffect";
import { SilverBulletHooks } from "../common/manifest";
import { System } from "../plugos/system";
import { EventFeature } from "../plugos/feature/event";
import { EventHook } from "../plugos/hooks/event";
import spaceSyscalls from "./syscalls/space";
import { eventSyscalls } from "../plugos/syscall/event";
import { eventSyscalls } from "../plugos/syscalls/event";
export class PageApi implements ApiProvider {
openPages: Map<string, Page>;
@@ -21,7 +21,7 @@ export class PageApi implements ApiProvider {
rootPath: string;
connectedSockets: Set<Socket>;
private system: System<SilverBulletHooks>;
private eventFeature: EventFeature;
private eventHook: EventHook;
constructor(
rootPath: string,
@@ -34,10 +34,10 @@ export class PageApi implements ApiProvider {
this.openPages = openPages;
this.connectedSockets = connectedSockets;
this.system = system;
this.eventFeature = new EventFeature();
system.addFeature(this.eventFeature);
this.eventHook = new EventHook();
system.addHook(this.eventHook);
system.registerSyscalls("space", [], spaceSyscalls(this));
system.registerSyscalls("event", [], eventSyscalls(this.eventFeature));
system.registerSyscalls("event", [], eventSyscalls(this.eventHook));
}
async init(): Promise<void> {
@@ -229,11 +229,8 @@ export class PageApi implements ApiProvider {
" to disk and indexing."
);
await this.flushPageToDisk(pageName, page);
await this.eventFeature.dispatchEvent(
"page:saved",
pageName
);
await this.eventFeature.dispatchEvent("page:index", {
await this.eventHook.dispatchEvent("page:saved", pageName);
await this.eventHook.dispatchEvent("page:index", {
name: pageName,
text: page.text.sliceString(0),
});
@@ -312,8 +309,8 @@ export class PageApi implements ApiProvider {
this.openPages.delete(pageName);
}
// Trigger system events
await this.eventFeature.dispatchEvent("page:saved", pageName);
await this.eventFeature.dispatchEvent("page:index", {
await this.eventHook.dispatchEvent("page:saved", pageName);
await this.eventHook.dispatchEvent("page:index", {
name: pageName,
text: text,
});
@@ -325,7 +322,7 @@ export class PageApi implements ApiProvider {
clientConn.openPages.delete(pageName);
// Cascading of this to all connected clients will be handled by file watcher
await this.pageStore.deletePage(pageName);
await this.eventFeature.dispatchEvent("page:deleted", pageName);
await this.eventHook.dispatchEvent("page:deleted", pageName);
},
listPages: async (clientConn: ClientConnection): Promise<PageMeta[]> => {
+8 -8
View File
@@ -9,8 +9,8 @@ import {hideBin} from "yargs/helpers";
import {SilverBulletHooks} from "../common/manifest";
import {ExpressServer} from "./express_server";
import {DiskPlugLoader} from "../plugos/plug_loader";
import {NodeCronFeature} from "../plugos/feature/node_cron";
import shellSyscalls from "../plugos/syscall/shell.node";
import {NodeCronHook} from "../plugos/hooks/node_cron";
import shellSyscalls from "../plugos/syscalls/shell.node";
import {System} from "../plugos/system";
let args = yargs(hideBin(process.argv))
@@ -21,7 +21,7 @@ let args = yargs(hideBin(process.argv))
.parse();
if (!args._.length) {
console.error("Usage: silverbullet <path-to-pages>");
console.error("Usage: silverbullet <path-to-pages>");
process.exit(1);
}
@@ -58,11 +58,11 @@ expressServer
);
await plugLoader.loadPlugs();
plugLoader.watcher();
system.registerSyscalls("shell", ["shell"], shellSyscalls(pagesPath));
system.addFeature(new NodeCronFeature());
server.listen(port, () => {
console.log(`Server listening on port ${port}`);
});
system.registerSyscalls("shell", ["shell"], shellSyscalls(pagesPath));
system.addHook(new NodeCronHook());
server.listen(port, () => {
console.log(`Server listening on port ${port}`);
});
})
.catch((e) => {
console.error(e);
+1 -1
View File
@@ -5,7 +5,7 @@ import {
ensureTable,
storeReadSyscalls,
storeWriteSyscalls,
} from "../../plugos/syscall/store.knex_node";
} from "../../plugos/syscalls/store.knex_node";
type IndexItem = {
page: string;