Exposed "store" syscalls to client and server environments
parent
8a10369d91
commit
f0d09a51e6
|
@ -10,7 +10,7 @@ import bodyParser from "body-parser";
|
||||||
import { EventHook } from "@plugos/plugos/hooks/event";
|
import { EventHook } from "@plugos/plugos/hooks/event";
|
||||||
import spaceSyscalls from "./syscalls/space";
|
import spaceSyscalls from "./syscalls/space";
|
||||||
import { eventSyscalls } from "@plugos/plugos/syscalls/event";
|
import { eventSyscalls } from "@plugos/plugos/syscalls/event";
|
||||||
import { ensureTable, pageIndexSyscalls } from "./syscalls";
|
import { ensureTable as ensureIndexTable, pageIndexSyscalls } from "./syscalls";
|
||||||
import knex, { Knex } from "knex";
|
import knex, { Knex } from "knex";
|
||||||
import shellSyscalls from "@plugos/plugos/syscalls/shell.node";
|
import shellSyscalls from "@plugos/plugos/syscalls/shell.node";
|
||||||
import { NodeCronHook } from "@plugos/plugos/hooks/node_cron";
|
import { NodeCronHook } from "@plugos/plugos/hooks/node_cron";
|
||||||
|
@ -49,6 +49,10 @@ import { PlugSpacePrimitives } from "./hooks/plug_space_primitives";
|
||||||
import { PageNamespaceHook } from "./hooks/page_namespace";
|
import { PageNamespaceHook } from "./hooks/page_namespace";
|
||||||
import { readFileSync } from "fs";
|
import { readFileSync } from "fs";
|
||||||
import fileSystemSyscalls from "@plugos/plugos/syscalls/fs.node";
|
import fileSystemSyscalls from "@plugos/plugos/syscalls/fs.node";
|
||||||
|
import {
|
||||||
|
storeSyscalls,
|
||||||
|
ensureTable as ensureStoreTable,
|
||||||
|
} from "@plugos/plugos/syscalls/store.knex_node";
|
||||||
|
|
||||||
const safeFilename = /^[a-zA-Z0-9_\-\.]+$/;
|
const safeFilename = /^[a-zA-Z0-9_\-\.]+$/;
|
||||||
|
|
||||||
|
@ -117,6 +121,7 @@ export class ExpressServer {
|
||||||
this.system.registerSyscalls(
|
this.system.registerSyscalls(
|
||||||
[],
|
[],
|
||||||
pageIndexSyscalls(this.db),
|
pageIndexSyscalls(this.db),
|
||||||
|
storeSyscalls(this.db, "store"),
|
||||||
fullTextSearchSyscalls(this.db, "fts"),
|
fullTextSearchSyscalls(this.db, "fts"),
|
||||||
spaceSyscalls(this.space),
|
spaceSyscalls(this.space),
|
||||||
eventSyscalls(this.eventHook),
|
eventSyscalls(this.eventHook),
|
||||||
|
@ -260,7 +265,8 @@ export class ExpressServer {
|
||||||
next();
|
next();
|
||||||
};
|
};
|
||||||
|
|
||||||
await ensureTable(this.db);
|
await ensureIndexTable(this.db);
|
||||||
|
await ensureStoreTable(this.db, "store");
|
||||||
await ensureFTSTable(this.db, "fts");
|
await ensureFTSTable(this.db, "fts");
|
||||||
await this.ensureIndexPage();
|
await this.ensureIndexPage();
|
||||||
|
|
||||||
|
|
|
@ -60,6 +60,7 @@ import { FilterOption, PageMeta } from "@silverbulletmd/common/types";
|
||||||
import { syntaxTree } from "@codemirror/language";
|
import { syntaxTree } from "@codemirror/language";
|
||||||
import sandboxSyscalls from "@plugos/plugos/syscalls/sandbox";
|
import sandboxSyscalls from "@plugos/plugos/syscalls/sandbox";
|
||||||
import { eventSyscalls } from "@plugos/plugos/syscalls/event";
|
import { eventSyscalls } from "@plugos/plugos/syscalls/event";
|
||||||
|
import { storeSyscalls } from "./syscalls/store";
|
||||||
|
|
||||||
class PageState {
|
class PageState {
|
||||||
constructor(
|
constructor(
|
||||||
|
@ -155,6 +156,7 @@ export class Editor {
|
||||||
systemSyscalls(this),
|
systemSyscalls(this),
|
||||||
markdownSyscalls(buildMarkdown(this.mdExtensions)),
|
markdownSyscalls(buildMarkdown(this.mdExtensions)),
|
||||||
clientStoreSyscalls(),
|
clientStoreSyscalls(),
|
||||||
|
storeSyscalls(this.space),
|
||||||
sandboxSyscalls(this.system)
|
sandboxSyscalls(this.system)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,17 @@
|
||||||
|
import { SysCallMapping } from "@plugos/plugos/system";
|
||||||
|
import { proxySyscalls } from "@plugos/plugos/syscalls/transport";
|
||||||
|
import { Space } from "@silverbulletmd/common/spaces/space";
|
||||||
|
|
||||||
|
export function storeSyscalls(space: Space): SysCallMapping {
|
||||||
|
return proxySyscalls(
|
||||||
|
[
|
||||||
|
"store.queryPrefix",
|
||||||
|
"store.get",
|
||||||
|
"store.set",
|
||||||
|
"store.batchSet",
|
||||||
|
"store.delete",
|
||||||
|
"store.deletePrefix",
|
||||||
|
],
|
||||||
|
(ctx, name, ...args) => space.proxySyscall(ctx.plug, name, args)
|
||||||
|
);
|
||||||
|
}
|
Loading…
Reference in New Issue