pull/87/head
Zef Hemel 2022-10-04 16:33:29 +02:00
parent 8ddd61f029
commit 66104a1ee7
74 changed files with 1493 additions and 884 deletions

View File

@ -1,8 +1,6 @@
{
"imports": {
"@codemirror/state": "https://esm.sh/@codemirror/state",
"@codemirror/language": "https://esm.sh/@codemirror/language"
}
}
}

44
mod.ts
View File

@ -3,12 +3,29 @@ export {
completionKeymap,
} from "https://esm.sh/@codemirror/autocomplete@6.3.0?external=@codemirror/state";
export * as YAML from "https://deno.land/std@0.158.0/encoding/yaml.ts";
export * as path from "https://deno.land/std@0.158.0/path/mod.ts";
export { readAll } from "https://deno.land/std@0.158.0/streams/conversion.ts";
export {
encode as b64encode,
decode as b64decode,
} from "https://deno.land/std/encoding/base64.ts";
export {
defaultHighlightStyle,
Language,
LanguageSupport,
LanguageDescription,
syntaxHighlighting,
syntaxTree,
} from "https://esm.sh/@codemirror/language@6.2.1?external=@codemirror/state";
defineLanguageFacet,
languageDataProp,
foldNodeProp,
indentNodeProp,
ParseContext,
} from "@codemirror/language";
export { markdown } from "https://esm.sh/@codemirror/lang-markdown@6.0.1?external=@codemirror/state";
export {
history,
@ -30,13 +47,22 @@ export type {
MarkdownConfig,
Table,
TaskList,
MarkdownExtension,
} from "https://esm.sh/@lezer/markdown";
export type { SyntaxNode } from "https://esm.sh/@lezer/common";
export {
searchKeymap,
} from "https://esm.sh/@codemirror/search?external=@codemirror/state";
MarkdownParser,
parseCode,
parser as baseParser,
GFM,
Subscript,
Superscript,
Emoji,
} from "https://esm.sh/@lezer/markdown";
export type { SyntaxNode, Tree } from "https://esm.sh/@lezer/common";
export { searchKeymap } from "https://esm.sh/@codemirror/search?external=@codemirror/state";
export {
drawSelection,
@ -50,6 +76,10 @@ export {
} from "https://esm.sh/@codemirror/view@6.3.0?external=@codemirror/state";
export type { KeyBinding } from "https://esm.sh/@codemirror/view@6.3.0?external=@codemirror/state";
// export * as react from "https://esm.sh/react@17";
export { EditorSelection, EditorState, Text } from "@codemirror/state";
export type { StateCommand, ChangeSpec } from "@codemirror/state";
export { EditorSelection, EditorState } from "@codemirror/state";
export { DB as SQLite3 } from "https://deno.land/x/sqlite/mod.ts";
// @deno-types="https://deno.land/x/dex@1.0.2/types/index.d.ts"
export { default as Dex } from "https://deno.land/x/dex@1.0.2/mod.ts";

674
out.log Normal file
View File

@ -0,0 +1,674 @@
Args {
_: [ "packages/plugs/core/core.plug.yaml" ],
exclude: [ "https://esm.sh/handlebars", "https://deno.land/std@0.158.0/encoding/yaml.ts" ],
dist: "/Users/zef/git/silverbullet/dist"
}
External modules [ "https://esm.sh/handlebars", "https://deno.land/std@0.158.0/encoding/yaml.ts" ]
Bundle info for clearPageIndex
_out.tmp 1.2kb 100.0%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/syscall.ts 105b 8.2%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/query/engine.ts 97b 7.6%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/page.ts 77b 6.0%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/index.ts 62b 4.9%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/_in.ts 38b 3.0%
└ deno:file:///Users/zef/git/silverbullet/packages/plugos-syscall/syscall.ts 19b 1.5%
External modules [ "https://esm.sh/handlebars", "https://deno.land/std@0.158.0/encoding/yaml.ts" ]
Bundle info for pageQueryProvider
_out.tmp 2.3kb 100.0%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/query/engine.ts 1.0kb 43.0%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/page.ts 212b 8.9%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/syscall.ts 105b 4.4%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/space.ts 53b 2.2%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/index.ts 52b 2.2%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/_in.ts 38b 1.6%
└ deno:file:///Users/zef/git/silverbullet/packages/plugos-syscall/syscall.ts 19b 0.8%
External modules [ "https://esm.sh/handlebars", "https://deno.land/std@0.158.0/encoding/yaml.ts" ]
Bundle info for parseIndexTextRepublish
_out.tmp 1.4kb 100.0%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-syscall/event.ts 199b 13.5%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/syscall.ts 105b 7.1%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/query/engine.ts 97b 6.6%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/page.ts 81b 5.5%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/markdown.ts 57b 3.9%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/_in.ts 38b 2.6%
└ deno:file:///Users/zef/git/silverbullet/packages/plugos-syscall/syscall.ts 19b 1.3%
External modules [ "https://esm.sh/handlebars", "https://deno.land/std@0.158.0/encoding/yaml.ts" ]
Bundle info for reindexCommand
_out.tmp 1.3kb 100.0%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/syscall.ts 105b 7.6%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/page.ts 104b 7.6%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/query/engine.ts 97b 7.1%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/system.ts 70b 5.1%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/editor.ts 64b 4.7%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/_in.ts 38b 2.8%
└ deno:file:///Users/zef/git/silverbullet/packages/plugos-syscall/syscall.ts 19b 1.4%
External modules [ "https://esm.sh/handlebars", "https://deno.land/std@0.158.0/encoding/yaml.ts" ]
Bundle info for reindexSpace
_out.tmp 1.8kb 100.0%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/page.ts 272b 15.0%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-syscall/event.ts 199b 10.9%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/syscall.ts 105b 5.8%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/space.ts 102b 5.6%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/query/engine.ts 97b 5.3%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/markdown.ts 57b 3.1%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/index.ts 52b 2.9%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/_in.ts 38b 2.1%
└ deno:file:///Users/zef/git/silverbullet/packages/plugos-syscall/syscall.ts 19b 1.0%
External modules [ "https://esm.sh/handlebars", "https://deno.land/std@0.158.0/encoding/yaml.ts" ]
Bundle info for deletePage
_out.tmp 1.4kb 100.0%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/page.ts 138b 9.7%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/syscall.ts 105b 7.4%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/editor.ts 102b 7.1%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/query/engine.ts 97b 6.8%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/space.ts 51b 3.6%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/_in.ts 38b 2.7%
└ deno:file:///Users/zef/git/silverbullet/packages/plugos-syscall/syscall.ts 19b 1.3%
External modules [ "https://esm.sh/handlebars", "https://deno.land/std@0.158.0/encoding/yaml.ts" ]
Bundle info for editorLoad
_out.tmp 747b 100.0%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/syscall.ts 105b 14.1%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/editor.ts 56b 7.5%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/editor.ts 54b 7.2%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/clientStore.ts 50b 6.7%
└ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/_in.ts 38b 5.1%
External modules [ "https://esm.sh/handlebars", "https://deno.land/std@0.158.0/encoding/yaml.ts" ]
Bundle info for toggleReadOnlyMode
_out.tmp 836b 100.0%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/syscall.ts 105b 12.6%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/clientStore.ts 104b 12.4%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/editor.ts 91b 10.9%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/editor.ts 54b 6.5%
└ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/_in.ts 38b 4.5%
External modules [ "https://esm.sh/handlebars", "https://deno.land/std@0.158.0/encoding/yaml.ts" ]
Bundle info for indexLinks
_out.tmp 2.6kb 100.0%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/query/data.ts 515b 19.6%
├ deno:file:///Users/zef/git/silverbullet/packages/common/tree.ts 435b 16.6%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/page.ts 429b 16.4%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/index.ts 105b 4.0%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/syscall.ts 105b 4.0%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/query/engine.ts 97b 3.7%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/_in.ts 38b 1.4%
└ deno:file:///Users/zef/git/silverbullet/packages/plugos-syscall/syscall.ts 19b 0.7%
External modules [ "https://esm.sh/handlebars", "https://deno.land/std@0.158.0/encoding/yaml.ts" ]
Bundle info for linkQueryProvider
_out.tmp 2.2kb 100.0%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/query/engine.ts 1.0kb 45.2%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/page.ts 153b 6.7%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/syscall.ts 105b 4.6%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/index.ts 52b 2.3%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/_in.ts 38b 1.7%
└ deno:file:///Users/zef/git/silverbullet/packages/plugos-syscall/syscall.ts 19b 0.8%
External modules [ "https://esm.sh/handlebars", "https://deno.land/std@0.158.0/encoding/yaml.ts" ]
Bundle info for renamePage
_out.tmp 3.0kb 100.0%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/page.ts 1001b 33.1%
├ deno:file:///Users/zef/git/silverbullet/packages/common/tree.ts 392b 13.0%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/editor.ts 233b 7.7%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/space.ts 154b 5.1%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/syscall.ts 105b 3.5%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/query/engine.ts 97b 3.2%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/markdown.ts 57b 1.9%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/index.ts 52b 1.7%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/_in.ts 38b 1.3%
└ deno:file:///Users/zef/git/silverbullet/packages/plugos-syscall/syscall.ts 19b 0.6%
External modules [ "https://esm.sh/handlebars", "https://deno.land/std@0.158.0/encoding/yaml.ts" ]
Bundle info for pageComplete
_out.tmp 1.4kb 100.0%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/page.ts 155b 11.1%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/syscall.ts 105b 7.5%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/query/engine.ts 97b 7.0%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/space.ts 53b 3.8%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/editor.ts 47b 3.4%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/_in.ts 38b 2.7%
└ deno:file:///Users/zef/git/silverbullet/packages/plugos-syscall/syscall.ts 19b 1.4%
External modules [ "https://esm.sh/handlebars", "https://deno.land/std@0.158.0/encoding/yaml.ts" ]
Bundle info for commandComplete
_out.tmp 849b 100.0%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/command.ts 164b 19.3%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/syscall.ts 105b 12.4%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/system.ts 51b 6.0%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/editor.ts 47b 5.5%
└ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/_in.ts 38b 4.5%
External modules [ "https://esm.sh/handlebars", "https://deno.land/std@0.158.0/encoding/yaml.ts" ]
Bundle info for indexItems
_out.tmp 2.4kb 100.0%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/item.ts 497b 20.0%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/query/util.ts 469b 18.8%
├ deno:file:///Users/zef/git/silverbullet/packages/common/tree.ts 353b 14.2%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/syscall.ts 105b 4.2%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/query/engine.ts 97b 3.9%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/index.ts 53b 2.1%
└ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/_in.ts 38b 1.5%
External modules [ "https://esm.sh/handlebars", "https://deno.land/std@0.158.0/encoding/yaml.ts" ]
Bundle info for queryProvider
_out.tmp 2.2kb 100.0%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/query/engine.ts 1.0kb 45.6%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/item.ts 149b 6.6%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/syscall.ts 105b 4.7%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/index.ts 52b 2.3%
└ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/_in.ts 38b 1.7%
External modules [ "https://esm.sh/handlebars", "https://deno.land/std@0.158.0/encoding/yaml.ts" ]
Bundle info for linkNavigate
_out.tmp 1.8kb 100.0%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/navigate.ts 643b 35.7%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/editor.ts 291b 16.2%
├ deno:file:///Users/zef/git/silverbullet/packages/common/tree.ts 167b 9.3%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/syscall.ts 105b 5.8%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/markdown.ts 57b 3.2%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/system.ts 55b 3.1%
└ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/_in.ts 38b 2.1%
External modules [ "https://esm.sh/handlebars", "https://deno.land/std@0.158.0/encoding/yaml.ts" ]
Bundle info for clickNavigate
_out.tmp 1.7kb 100.0%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/navigate.ts 671b 37.6%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/editor.ts 249b 13.9%
├ deno:file:///Users/zef/git/silverbullet/packages/common/tree.ts 167b 9.4%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/syscall.ts 105b 5.9%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/markdown.ts 57b 3.2%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/system.ts 55b 3.1%
└ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/_in.ts 38b 2.1%
External modules [ "https://esm.sh/handlebars", "https://deno.land/std@0.158.0/encoding/yaml.ts" ]
Bundle info for navigateCommand
_out.tmp 678b 100.0%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/syscall.ts 105b 15.5%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/editor.ts 55b 8.1%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/_in.ts 38b 5.6%
└ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/navigate.ts 36b 5.3%
External modules [ "https://esm.sh/handlebars", "https://deno.land/std@0.158.0/encoding/yaml.ts" ]
Bundle info for indexTags
_out.tmp 2.1kb 100.0%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/query/util.ts 469b 21.8%
├ deno:file:///Users/zef/git/silverbullet/packages/common/tree.ts 353b 16.4%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/tags.ts 155b 7.2%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/syscall.ts 105b 4.9%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/query/engine.ts 97b 4.5%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/index.ts 53b 2.5%
└ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/_in.ts 38b 1.8%
External modules [ "https://esm.sh/handlebars", "https://deno.land/std@0.158.0/encoding/yaml.ts" ]
Bundle info for tagComplete
_out.tmp 1.3kb 100.0%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/tags.ts 162b 11.7%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/syscall.ts 105b 7.6%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/query/engine.ts 97b 7.0%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/index.ts 52b 3.8%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/editor.ts 47b 3.4%
└ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/_in.ts 38b 2.8%
External modules [ "https://esm.sh/handlebars", "https://deno.land/std@0.158.0/encoding/yaml.ts" ]
Bundle info for tagProvider
_out.tmp 2.2kb 100.0%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/query/engine.ts 1.0kb 45.1%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/tags.ts 176b 7.7%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/syscall.ts 105b 4.6%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/index.ts 52b 2.3%
└ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/_in.ts 38b 1.7%
External modules [ "https://esm.sh/handlebars", "https://deno.land/std@0.158.0/encoding/yaml.ts" ]
Bundle info for indexAnchors
_out.tmp 1.6kb 100.0%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/query/util.ts 469b 28.1%
├ deno:file:///Users/zef/git/silverbullet/packages/common/tree.ts 353b 21.2%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/anchor.ts 206b 12.4%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/syscall.ts 105b 6.3%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/index.ts 53b 3.2%
└ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/_in.ts 38b 2.3%
External modules [ "https://esm.sh/handlebars", "https://deno.land/std@0.158.0/encoding/yaml.ts" ]
Bundle info for anchorComplete
_out.tmp 1003b 100.0%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/anchor.ts 270b 26.9%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/syscall.ts 105b 10.5%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/editor.ts 94b 9.4%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/index.ts 52b 5.2%
└ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/_in.ts 38b 3.8%
External modules [ "https://esm.sh/handlebars", "https://deno.land/std@0.158.0/encoding/yaml.ts" ]
Bundle info for index
_out.tmp 2.0kb 100.0%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/query/util.ts 469b 23.1%
├ deno:file:///Users/zef/git/silverbullet/packages/common/tree.ts 311b 15.3%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/syscall.ts 105b 5.2%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/query/engine.ts 97b 4.8%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/search.ts 64b 3.1%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-syscall/fulltext.ts 53b 2.6%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/_in.ts 38b 1.9%
└ deno:file:///Users/zef/git/silverbullet/packages/plugos-syscall/syscall.ts 19b 0.9%
External modules [ "https://esm.sh/handlebars", "https://deno.land/std@0.158.0/encoding/yaml.ts" ]
Bundle info for unindex
_out.tmp 1.2kb 100.0%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/syscall.ts 105b 8.6%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/query/engine.ts 97b 8.0%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-syscall/fulltext.ts 50b 4.1%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/_in.ts 38b 3.1%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/search.ts 31b 2.5%
└ deno:file:///Users/zef/git/silverbullet/packages/plugos-syscall/syscall.ts 19b 1.6%
External modules [ "https://esm.sh/handlebars", "https://deno.land/std@0.158.0/encoding/yaml.ts" ]
Bundle info for queryProvider
_out.tmp 2.5kb 100.0%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/query/engine.ts 1.0kb 40.4%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/search.ts 359b 14.2%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/syscall.ts 105b 4.1%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-syscall/fulltext.ts 58b 2.3%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/index.ts 52b 2.1%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/_in.ts 38b 1.5%
└ deno:file:///Users/zef/git/silverbullet/packages/plugos-syscall/syscall.ts 19b 0.7%
External modules [ "https://esm.sh/handlebars", "https://deno.land/std@0.158.0/encoding/yaml.ts" ]
Bundle info for searchCommand
_out.tmp 1.3kb 100.0%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/syscall.ts 105b 7.9%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/editor.ts 104b 7.8%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/query/engine.ts 97b 7.3%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/search.ts 91b 6.8%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/_in.ts 38b 2.9%
└ deno:file:///Users/zef/git/silverbullet/packages/plugos-syscall/syscall.ts 19b 1.4%
External modules [ "https://esm.sh/handlebars", "https://deno.land/std@0.158.0/encoding/yaml.ts" ]
Bundle info for readPageSearch
_out.tmp 1.4kb 100.0%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/search.ts 229b 16.1%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/syscall.ts 105b 7.4%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/query/engine.ts 97b 6.8%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-syscall/fulltext.ts 58b 4.1%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/_in.ts 38b 2.7%
└ deno:file:///Users/zef/git/silverbullet/packages/plugos-syscall/syscall.ts 19b 1.3%
External modules [ "https://esm.sh/handlebars", "https://deno.land/std@0.158.0/encoding/yaml.ts" ]
Bundle info for getPageMetaSearch
_out.tmp 1.2kb 100.0%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/syscall.ts 105b 8.8%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/query/engine.ts 97b 8.1%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/search.ts 60b 5.0%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/_in.ts 38b 3.2%
└ deno:file:///Users/zef/git/silverbullet/packages/plugos-syscall/syscall.ts 19b 1.6%
External modules [ "https://esm.sh/handlebars", "https://deno.land/std@0.158.0/encoding/yaml.ts" ]
Bundle info for insertTemplateText
_out.tmp 1.9kb 100.0%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/template.ts 478b 24.5%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/editor.ts 185b 9.5%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/syscall.ts 105b 5.4%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/query/engine.ts 97b 5.0%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/lib/settings_page.ts 61b 3.1%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/lib/yaml_page.ts 61b 3.1%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/dates.ts 51b 2.6%
└ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/_in.ts 38b 1.9%
External modules [ "https://esm.sh/handlebars", "https://deno.land/std@0.158.0/encoding/yaml.ts" ]
Bundle info for insertTemplateText
_out.tmp 1.9kb 100.0%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/template.ts 478b 24.5%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/editor.ts 185b 9.5%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/syscall.ts 105b 5.4%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/query/engine.ts 97b 5.0%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/lib/settings_page.ts 61b 3.1%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/lib/yaml_page.ts 61b 3.1%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/dates.ts 51b 2.6%
└ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/_in.ts 38b 1.9%
External modules [ "https://esm.sh/handlebars", "https://deno.land/std@0.158.0/encoding/yaml.ts" ]
Bundle info for insertTemplateText
_out.tmp 1.9kb 100.0%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/template.ts 478b 24.5%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/editor.ts 185b 9.5%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/syscall.ts 105b 5.4%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/query/engine.ts 97b 5.0%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/lib/settings_page.ts 61b 3.1%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/lib/yaml_page.ts 61b 3.1%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/dates.ts 51b 2.6%
└ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/_in.ts 38b 1.9%
External modules [ "https://esm.sh/handlebars", "https://deno.land/std@0.158.0/encoding/yaml.ts" ]
Bundle info for insertTemplateText
_out.tmp 1.9kb 100.0%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/template.ts 478b 24.5%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/editor.ts 185b 9.5%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/syscall.ts 105b 5.4%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/query/engine.ts 97b 5.0%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/lib/settings_page.ts 61b 3.1%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/lib/yaml_page.ts 61b 3.1%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/dates.ts 51b 2.6%
└ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/_in.ts 38b 1.9%
External modules [ "https://esm.sh/handlebars", "https://deno.land/std@0.158.0/encoding/yaml.ts" ]
Bundle info for insertTemplateText
_out.tmp 1.9kb 100.0%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/template.ts 478b 24.5%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/editor.ts 185b 9.5%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/syscall.ts 105b 5.4%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/query/engine.ts 97b 5.0%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/lib/settings_page.ts 61b 3.1%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/lib/yaml_page.ts 61b 3.1%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/dates.ts 51b 2.6%
└ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/_in.ts 38b 1.9%
External modules [ "https://esm.sh/handlebars", "https://deno.land/std@0.158.0/encoding/yaml.ts" ]
Bundle info for insertTemplateText
_out.tmp 1.9kb 100.0%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/template.ts 478b 24.5%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/editor.ts 185b 9.5%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/syscall.ts 105b 5.4%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/query/engine.ts 97b 5.0%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/lib/settings_page.ts 61b 3.1%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/lib/yaml_page.ts 61b 3.1%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/dates.ts 51b 2.6%
└ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/_in.ts 38b 1.9%
External modules [ "https://esm.sh/handlebars", "https://deno.land/std@0.158.0/encoding/yaml.ts" ]
Bundle info for insertTemplateText
_out.tmp 1.9kb 100.0%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/template.ts 478b 24.5%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/editor.ts 185b 9.5%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/syscall.ts 105b 5.4%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/query/engine.ts 97b 5.0%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/lib/settings_page.ts 61b 3.1%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/lib/yaml_page.ts 61b 3.1%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/dates.ts 51b 2.6%
└ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/_in.ts 38b 1.9%
External modules [ "https://esm.sh/handlebars", "https://deno.land/std@0.158.0/encoding/yaml.ts" ]
Bundle info for quickNoteCommand
_out.tmp 2.3kb 100.0%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/lib/yaml_page.ts 439b 18.8%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/lib/settings_page.ts 262b 11.2%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/template.ts 179b 7.7%
├ deno:file:///Users/zef/git/silverbullet/packages/common/tree.ts 177b 7.6%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/syscall.ts 105b 4.5%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/query/engine.ts 97b 4.2%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/markdown.ts 57b 2.4%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/editor.ts 55b 2.4%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/space.ts 49b 2.1%
└ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/_in.ts 38b 1.6%
External modules [ "https://esm.sh/handlebars", "https://deno.land/std@0.158.0/encoding/yaml.ts" ]
Bundle info for dailyNoteCommand
_out.tmp 3.0kb 100.0%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/template.ts 710b 23.5%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/lib/yaml_page.ts 439b 14.5%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/lib/settings_page.ts 262b 8.7%
├ deno:file:///Users/zef/git/silverbullet/packages/common/tree.ts 177b 5.9%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/space.ts 155b 5.1%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/syscall.ts 105b 3.5%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/query/engine.ts 97b 3.2%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/markdown.ts 57b 1.9%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/editor.ts 55b 1.8%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/dates.ts 51b 1.7%
└ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/_in.ts 38b 1.3%
External modules [ "https://esm.sh/handlebars", "https://deno.land/std@0.158.0/encoding/yaml.ts" ]
Bundle info for instantiateTemplateCommand
_out.tmp 4.1kb 100.0%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/template.ts 866b 20.6%
├ deno:file:///Users/zef/git/silverbullet/packages/common/tree.ts 569b 13.5%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/query/data.ts 515b 12.3%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/lib/yaml_page.ts 439b 10.5%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/lib/settings_page.ts 262b 6.2%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/editor.ts 167b 4.0%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/space.ts 156b 3.7%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/syscall.ts 105b 2.5%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/query/engine.ts 97b 2.3%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/markdown.ts 57b 1.4%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/dates.ts 51b 1.2%
└ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/_in.ts 38b 0.9%
External modules [ "https://esm.sh/handlebars", "https://deno.land/std@0.158.0/encoding/yaml.ts" ]
Bundle info for insertSnippet
_out.tmp 3.2kb 100.0%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/template.ts 774b 24.0%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/lib/yaml_page.ts 439b 13.6%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/lib/settings_page.ts 262b 8.1%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/editor.ts 248b 7.7%
├ deno:file:///Users/zef/git/silverbullet/packages/common/tree.ts 177b 5.5%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/syscall.ts 105b 3.3%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/space.ts 102b 3.2%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/query/engine.ts 97b 3.0%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/markdown.ts 57b 1.8%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/dates.ts 51b 1.6%
└ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/_in.ts 38b 1.2%
External modules [ "https://esm.sh/handlebars", "https://deno.land/std@0.158.0/encoding/yaml.ts" ]
Bundle info for insertTemplateText
_out.tmp 1.9kb 100.0%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/template.ts 478b 24.5%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/editor.ts 185b 9.5%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/syscall.ts 105b 5.4%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/query/engine.ts 97b 5.0%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/lib/settings_page.ts 61b 3.1%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/lib/yaml_page.ts 61b 3.1%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/dates.ts 51b 2.6%
└ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/_in.ts 38b 1.9%
External modules [ "https://esm.sh/handlebars", "https://deno.land/std@0.158.0/encoding/yaml.ts" ]
Bundle info for insertTemplateText
_out.tmp 1.9kb 100.0%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/template.ts 478b 24.5%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/editor.ts 185b 9.5%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/syscall.ts 105b 5.4%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/query/engine.ts 97b 5.0%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/lib/settings_page.ts 61b 3.1%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/lib/yaml_page.ts 61b 3.1%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/dates.ts 51b 2.6%
└ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/_in.ts 38b 1.9%
External modules [ "https://esm.sh/handlebars", "https://deno.land/std@0.158.0/encoding/yaml.ts" ]
Bundle info for quoteSelection
_out.tmp 959b 100.0%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/text.ts 231b 24.1%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/editor.ts 141b 14.7%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/syscall.ts 105b 10.9%
└ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/_in.ts 38b 4.0%
External modules [ "https://esm.sh/handlebars", "https://deno.land/std@0.158.0/encoding/yaml.ts" ]
Bundle info for listifySelection
_out.tmp 892b 100.0%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/text.ts 164b 18.4%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/editor.ts 141b 15.8%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/syscall.ts 105b 11.8%
└ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/_in.ts 38b 4.3%
External modules [ "https://esm.sh/handlebars", "https://deno.land/std@0.158.0/encoding/yaml.ts" ]
Bundle info for numberListifySelection
_out.tmp 915b 100.0%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/text.ts 187b 20.4%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/editor.ts 141b 15.4%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/syscall.ts 105b 11.5%
└ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/_in.ts 38b 4.2%
External modules [ "https://esm.sh/handlebars", "https://deno.land/std@0.158.0/encoding/yaml.ts" ]
Bundle info for linkSelection
_out.tmp 972b 100.0%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/text.ts 198b 20.4%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/editor.ts 187b 19.2%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/syscall.ts 105b 10.8%
└ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/_in.ts 38b 3.9%
External modules [ "https://esm.sh/handlebars", "https://deno.land/std@0.158.0/encoding/yaml.ts" ]
Bundle info for wrapSelection
_out.tmp 1.3kb 100.0%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/text.ts 495b 36.1%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/editor.ts 289b 21.1%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/syscall.ts 105b 7.7%
└ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/_in.ts 38b 2.8%
External modules [ "https://esm.sh/handlebars", "https://deno.land/std@0.158.0/encoding/yaml.ts" ]
Bundle info for wrapSelection
_out.tmp 1.3kb 100.0%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/text.ts 495b 36.1%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/editor.ts 289b 21.1%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/syscall.ts 105b 7.7%
└ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/_in.ts 38b 2.8%
External modules [ "https://esm.sh/handlebars", "https://deno.land/std@0.158.0/encoding/yaml.ts" ]
Bundle info for wrapSelection
_out.tmp 1.3kb 100.0%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/text.ts 495b 36.1%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/editor.ts 289b 21.1%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/syscall.ts 105b 7.7%
└ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/_in.ts 38b 2.8%
External modules [ "https://esm.sh/handlebars", "https://deno.land/std@0.158.0/encoding/yaml.ts" ]
Bundle info for updatePlugsCommand
_out.tmp 1.5kb 100.0%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/plugmanager.ts 172b 11.6%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/system.ts 113b 7.6%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/syscall.ts 105b 7.1%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/editor.ts 101b 6.8%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/lib/yaml_page.ts 61b 4.1%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/_in.ts 38b 2.6%
└ deno:file:///Users/zef/git/silverbullet/packages/plugos-syscall/syscall.ts 19b 1.3%
External modules [ "https://esm.sh/handlebars", "https://deno.land/std@0.158.0/encoding/yaml.ts" ]
Bundle info for updatePlugs
_out.tmp 2.8kb 100.0%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/plugmanager.ts 681b 23.9%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/lib/yaml_page.ts 439b 15.4%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/space.ts 217b 7.6%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-syscall/event.ts 199b 7.0%
├ deno:file:///Users/zef/git/silverbullet/packages/common/tree.ts 177b 6.2%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/syscall.ts 105b 3.7%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/markdown.ts 57b 2.0%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/system.ts 43b 1.5%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/_in.ts 38b 1.3%
└ deno:file:///Users/zef/git/silverbullet/packages/plugos-syscall/syscall.ts 19b 0.7%
External modules [ "https://esm.sh/handlebars", "https://deno.land/std@0.158.0/encoding/yaml.ts" ]
Bundle info for getPlugHTTPS
_out.tmp 1.3kb 100.0%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/plugmanager.ts 208b 15.9%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/syscall.ts 105b 8.0%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/lib/yaml_page.ts 61b 4.7%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/_in.ts 38b 2.9%
└ deno:file:///Users/zef/git/silverbullet/packages/plugos-syscall/syscall.ts 19b 1.5%
External modules [ "https://esm.sh/handlebars", "https://deno.land/std@0.158.0/encoding/yaml.ts" ]
Bundle info for getPlugGithub
_out.tmp 1.4kb 100.0%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/plugmanager.ts 345b 23.9%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/syscall.ts 105b 7.3%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/lib/yaml_page.ts 61b 4.2%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/_in.ts 38b 2.6%
└ deno:file:///Users/zef/git/silverbullet/packages/plugos-syscall/syscall.ts 19b 1.3%
External modules [ "https://esm.sh/handlebars", "https://deno.land/std@0.158.0/encoding/yaml.ts" ]
Bundle info for getPlugGithubRelease
_out.tmp 1.6kb 100.0%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/plugmanager.ts 584b 34.7%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/syscall.ts 105b 6.2%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/lib/yaml_page.ts 61b 3.6%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/_in.ts 38b 2.3%
└ deno:file:///Users/zef/git/silverbullet/packages/plugos-syscall/syscall.ts 19b 1.1%
External modules [ "https://esm.sh/handlebars", "https://deno.land/std@0.158.0/encoding/yaml.ts" ]
Bundle info for parsePageCommand
_out.tmp 764b 100.0%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/syscall.ts 105b 13.7%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/debug.ts 80b 10.5%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/markdown.ts 57b 7.5%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/editor.ts 40b 5.2%
└ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/_in.ts 38b 5.0%
External modules [ "https://esm.sh/handlebars", "https://deno.land/std@0.158.0/encoding/yaml.ts" ]
Bundle info for showLogsCommand
_out.tmp 2.1kb 100.0%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/debug.ts 1.3kb 64.2%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/syscall.ts 105b 5.0%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/editor.ts 60b 2.8%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/sandbox.ts 59b 2.8%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-syscall/sandbox.ts 53b 2.5%
└ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/_in.ts 38b 1.8%
External modules [ "https://esm.sh/handlebars", "https://deno.land/std@0.158.0/encoding/yaml.ts" ]
Bundle info for hideBhsCommand
_out.tmp 666b 100.0%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/syscall.ts 105b 15.8%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/editor.ts 45b 6.8%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/_in.ts 38b 5.7%
└ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/debug.ts 34b 5.1%
External modules [ "https://esm.sh/handlebars", "https://deno.land/std@0.158.0/encoding/yaml.ts" ]
Bundle info for unfurlCommand
_out.tmp 1.7kb 100.0%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/link.ts 371b 21.4%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/editor.ts 265b 15.3%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-syscall/event.ts 199b 11.5%
├ deno:file:///Users/zef/git/silverbullet/packages/common/tree.ts 167b 9.6%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/syscall.ts 105b 6.1%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/system.ts 70b 4.0%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/markdown.ts 57b 3.3%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/_in.ts 38b 2.2%
└ deno:file:///Users/zef/git/silverbullet/packages/plugos-syscall/syscall.ts 19b 1.1%
External modules [ "https://esm.sh/handlebars", "https://deno.land/std@0.158.0/encoding/yaml.ts" ]
Bundle info for unfurlExec
_out.tmp 919b 100.0%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-syscall/event.ts 199b 21.7%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/link.ts 114b 12.4%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/syscall.ts 105b 11.4%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/_in.ts 38b 4.1%
└ deno:file:///Users/zef/git/silverbullet/packages/plugos-syscall/syscall.ts 19b 2.1%
External modules [ "https://esm.sh/handlebars", "https://deno.land/std@0.158.0/encoding/yaml.ts" ]
Bundle info for titleUnfurlOptions
_out.tmp 675b 100.0%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/syscall.ts 105b 15.6%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/link.ts 69b 10.2%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/_in.ts 38b 5.6%
└ deno:file:///Users/zef/git/silverbullet/packages/plugos-syscall/syscall.ts 19b 2.8%
External modules [ "https://esm.sh/handlebars", "https://deno.land/std@0.158.0/encoding/yaml.ts" ]
Bundle info for titleUnfurl
_out.tmp 925b 100.0%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/link.ts 319b 34.5%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/syscall.ts 105b 11.4%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/_in.ts 38b 4.1%
└ deno:file:///Users/zef/git/silverbullet/packages/plugos-syscall/syscall.ts 19b 2.1%
External modules [ "https://esm.sh/handlebars", "https://deno.land/std@0.158.0/encoding/yaml.ts" ]
Bundle info for statsCommand
_out.tmp 983b 100.0%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/stats.ts 239b 24.3%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/syscall.ts 105b 10.7%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/editor.ts 104b 10.6%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/space.ts 53b 5.4%
└ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/_in.ts 38b 3.9%
External modules [ "https://esm.sh/handlebars", "https://deno.land/std@0.158.0/encoding/yaml.ts" ]
Bundle info for readFileCloud
_out.tmp 1.5kb 100.0%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/cloud.ts 584b 38.2%
├ deno:file:///Users/zef/git/silverbullet/packages/common/tree.ts 301b 19.7%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/syscall.ts 105b 6.9%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/markdown.ts 57b 3.7%
└ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/_in.ts 38b 2.5%
External modules [ "https://esm.sh/handlebars", "https://deno.land/std@0.158.0/encoding/yaml.ts" ]
Bundle info for getFileMetaCloud
_out.tmp 682b 100.0%
├ deno:file:///Users/zef/git/silverbullet/packages/plugos-silverbullet-syscall/syscall.ts 105b 15.4%
├ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/cloud.ts 95b 13.9%
└ deno:file:///Users/zef/git/silverbullet/packages/plugs/core/_in.ts 38b 5.6%
Emitting bundle to /Users/zef/git/silverbullet/dist/core.plug.json

View File

@ -6,10 +6,10 @@ import {
Text,
EditorSelection,
ChangeSpec,
} from "@codemirror/state";
import { syntaxTree } from "@codemirror/language";
import { SyntaxNode, Tree } from "@lezer/common";
import { markdownLanguage } from "./markdown";
} from "../../../mod.ts";
import { syntaxTree } from "../../../mod.ts";
import { SyntaxNode, Tree } from "../../../mod.ts";
import { markdownLanguage } from "./markdown.ts";
function nodeStart(node: SyntaxNode, doc: Text) {
return doc.sliceString(node.from, node.from + 50);

View File

@ -2,21 +2,24 @@
// * Disable HTML tags
import { Prec } from "@codemirror/state";
import { KeyBinding, keymap } from "@codemirror/view";
import { KeyBinding, keymap } from "../../../mod.ts";
import {
Language,
LanguageSupport,
LanguageDescription,
} from "@codemirror/language";
import { MarkdownExtension, MarkdownParser, parseCode } from "@lezer/markdown";
} from "../../../mod.ts";
import { MarkdownExtension, MarkdownParser, parseCode } from "../../../mod.ts";
// import { html } from "@codemirror/lang-html";
import {
commonmarkLanguage,
markdownLanguage,
mkLang,
getCodeParser,
} from "./markdown";
import { insertNewlineContinueMarkup, deleteMarkupBackward } from "./commands";
} from "./markdown.ts";
import {
insertNewlineContinueMarkup,
deleteMarkupBackward,
} from "./commands.ts";
export {
commonmarkLanguage,
markdownLanguage,

View File

@ -6,15 +6,15 @@ import {
indentNodeProp,
LanguageDescription,
ParseContext,
} from "@codemirror/language";
} from "../../../mod.ts";
import {
parser as baseParser,
baseParser,
MarkdownParser,
GFM,
Subscript,
Superscript,
Emoji,
} from "@lezer/markdown";
} from "../../../mod.ts";
const data = defineLanguageFacet({ block: { open: "<!--", close: "-->" } });

View File

@ -1,24 +1,25 @@
import { mkdir, readdir, readFile, stat, unlink, writeFile } from "fs/promises";
import * as path from "path";
import { FileMeta } from "../types";
import { FileData, FileEncoding, SpacePrimitives } from "./space_primitives";
import { Plug } from "@plugos/plugos/plug";
import { realpathSync } from "fs";
import mime from "mime-types";
// import { mkdir, readdir, readFile, stat, unlink, writeFile } from "fs/promises";
import { path } from "../../../mod.ts";
import { b64encode, b64decode } from "../../../mod.ts";
import { readAll } from "../../../mod.ts";
import { FileMeta } from "../types.ts";
import { FileData, FileEncoding, SpacePrimitives } from "./space_primitives.ts";
import { Plug } from "../../plugos/plug.ts";
import { mime } from "https://deno.land/x/mimetypes@v1.0.0/mod.ts";
function lookupContentType(path: string): string {
return mime.lookup(path) || "application/octet-stream";
return mime.getType(path) || "application/octet-stream";
}
export class DiskSpacePrimitives implements SpacePrimitives {
rootPath: string;
constructor(rootPath: string) {
this.rootPath = realpathSync(rootPath);
this.rootPath = Deno.realPathSync(rootPath);
}
safePath(p: string): string {
let realPath = path.resolve(p);
const realPath = path.resolve(p);
if (!realPath.startsWith(this.rootPath)) {
throw Error(`Path ${p} is not in the space`);
}
@ -39,29 +40,37 @@ export class DiskSpacePrimitives implements SpacePrimitives {
): Promise<{ data: FileData; meta: FileMeta }> {
const localPath = this.filenameToPath(name);
try {
const s = await stat(localPath);
const s = await Deno.stat(localPath);
let data: FileData | null = null;
let contentType = lookupContentType(name);
const contentType = lookupContentType(name);
switch (encoding) {
case "string":
data = await readFile(localPath, "utf8");
data = await Deno.readTextFile(localPath);
break;
case "dataurl":
let fileBuffer = await readFile(localPath, {
encoding: "base64",
});
data = `data:${contentType};base64,${fileBuffer}`;
{
const f = await Deno.open(localPath, { read: true });
const buf = b64encode(await readAll(f));
Deno.close(f.rid);
data = `data:${contentType};base64,${buf}`;
}
break;
case "arraybuffer":
let arrayBuffer = await readFile(localPath);
data = arrayBuffer.buffer;
{
const f = await Deno.open(localPath, { read: true });
const buf = await readAll(f);
Deno.close(f.rid);
data = buf.buffer;
}
break;
}
return {
data,
meta: {
name: name,
lastModified: s.mtime.getTime(),
lastModified: s.mtime!.getTime(),
perm: "rw",
size: s.size,
contentType: contentType,
@ -82,30 +91,31 @@ export class DiskSpacePrimitives implements SpacePrimitives {
let localPath = this.filenameToPath(name);
try {
// Ensure parent folder exists
await mkdir(path.dirname(localPath), { recursive: true });
await Deno.mkdir(path.dirname(localPath), { recursive: true });
// Actually write the file
switch (encoding) {
case "string":
await writeFile(localPath, data as string, "utf8");
await Deno.writeTextFile(localPath, data as string);
break;
case "dataurl":
await writeFile(localPath, (data as string).split(",")[1], {
encoding: "base64",
});
await Deno.writeFile(
localPath,
b64decode((data as string).split(",")[1])
);
break;
case "arraybuffer":
await writeFile(localPath, Buffer.from(data as ArrayBuffer));
await Deno.writeFile(localPath, new Uint8Array(data as ArrayBuffer));
break;
}
// Fetch new metadata
const s = await stat(localPath);
const s = await Deno.stat(localPath);
return {
name: name,
size: s.size,
contentType: lookupContentType(name),
lastModified: s.mtime.getTime(),
lastModified: s.mtime!.getTime(),
perm: "rw",
};
} catch (e) {
@ -115,14 +125,14 @@ export class DiskSpacePrimitives implements SpacePrimitives {
}
async getFileMeta(name: string): Promise<FileMeta> {
let localPath = this.filenameToPath(name);
const localPath = this.filenameToPath(name);
try {
const s = await stat(localPath);
const s = await Deno.stat(localPath);
return {
name: name,
size: s.size,
contentType: lookupContentType(name),
lastModified: s.mtime.getTime(),
lastModified: s.mtime!.getTime(),
perm: "rw",
};
} catch (e) {
@ -132,30 +142,29 @@ export class DiskSpacePrimitives implements SpacePrimitives {
}
async deleteFile(name: string): Promise<void> {
let localPath = this.filenameToPath(name);
await unlink(localPath);
const localPath = this.filenameToPath(name);
await Deno.remove(localPath);
}
async fetchFileList(): Promise<FileMeta[]> {
let fileList: FileMeta[] = [];
const fileList: FileMeta[] = [];
const walkPath = async (dir: string) => {
let files = await readdir(dir);
for (let file of files) {
if (file.startsWith(".")) {
for await (const file of Deno.readDir(dir)) {
if (file.name.startsWith(".")) {
continue;
}
const fullPath = path.join(dir, file);
let s = await stat(fullPath);
if (s.isDirectory()) {
const fullPath = path.join(dir, file.name);
let s = await Deno.stat(fullPath);
if (file.isDirectory) {
await walkPath(fullPath);
} else {
if (!file.startsWith(".")) {
if (!file.name.startsWith(".")) {
fileList.push({
name: this.pathToFilename(fullPath),
size: s.size,
contentType: lookupContentType(fullPath),
lastModified: s.mtime.getTime(),
lastModified: s.mtime!.getTime(),
perm: "rw",
});
}

View File

@ -1,8 +1,8 @@
import { EventHook } from "@plugos/plugos/hooks/event";
import { Plug } from "@plugos/plugos/plug";
import { EventHook } from "../../plugos/hooks/event.ts";
import { Plug } from "../../plugos/plug.ts";
import { FileMeta } from "../types";
import { FileData, FileEncoding, SpacePrimitives } from "./space_primitives";
import { FileMeta } from "../types.ts";
import { FileData, FileEncoding, SpacePrimitives } from "./space_primitives.ts";
export class EventedSpacePrimitives implements SpacePrimitives {
constructor(private wrapped: SpacePrimitives, private eventHook: EventHook) {}
@ -52,8 +52,11 @@ export class EventedSpacePrimitives implements SpacePrimitives {
text = data as string;
break;
case "arraybuffer":
{
const decoder = new TextDecoder("utf-8");
text = decoder.decode(data as ArrayBuffer);
}
break;
case "dataurl":
throw Error("Data urls not supported in this context");

View File

@ -1,6 +1,6 @@
import { AttachmentMeta, FileMeta, PageMeta } from "../types";
import { Plug } from "@plugos/plugos/plug";
import { FileData, FileEncoding, SpacePrimitives } from "./space_primitives";
import { AttachmentMeta, FileMeta, PageMeta } from "../types.ts";
import { Plug } from "../../plugos/plug.ts";
import { FileData, FileEncoding, SpacePrimitives } from "./space_primitives.ts";
export class HttpSpacePrimitives implements SpacePrimitives {
fsUrl: string;
@ -51,12 +51,16 @@ export class HttpSpacePrimitives implements SpacePrimitives {
let data: FileData | null = null;
switch (encoding) {
case "arraybuffer":
{
let abBlob = await res.blob();
data = await abBlob.arrayBuffer();
}
break;
case "dataurl":
{
let dUBlob = await res.blob();
data = arrayBufferToDataUrl(await dUBlob.arrayBuffer());
}
break;
case "string":
data = await res.text();

View File

@ -1,9 +1,9 @@
import { FileData, FileEncoding, SpacePrimitives } from "./space_primitives";
import { AttachmentMeta, FileMeta, PageMeta } from "../types";
import { EventEmitter } from "@plugos/plugos/event";
import { Plug } from "@plugos/plugos/plug";
import { plugPrefix } from "./constants";
import { safeRun } from "../util";
import { FileData, FileEncoding, SpacePrimitives } from "./space_primitives.ts";
import { AttachmentMeta, FileMeta, PageMeta } from "../types.ts";
import { EventEmitter } from "../../plugos/event.ts";
import { Plug } from "../../plugos/plug.ts";
import { plugPrefix } from "./constants.ts";
import { safeRun } from "../util.ts";
const pageWatchInterval = 2000;

View File

@ -1,5 +1,5 @@
import { Plug } from "@plugos/plugos/plug";
import { FileMeta } from "../types";
import { Plug } from "../../plugos/plug.ts";
import { FileMeta } from "../types.ts";
export type FileEncoding = "string" | "arraybuffer" | "dataurl";
export type FileData = ArrayBuffer | string;

View File

@ -1,11 +1,11 @@
import { SysCallMapping } from "@plugos/plugos/system";
import { parse } from "../parse_tree";
import { Language } from "@codemirror/language";
import type { ParseTree } from "../tree";
import { SysCallMapping } from "../../plugos/system.ts";
import { parse } from "../parse_tree.ts";
import { Language } from "../../../mod.ts";
import type { ParseTree } from "../tree.ts";
export function markdownSyscalls(lang: Language): SysCallMapping {
return {
"markdown.parseMarkdown": (ctx, text: string): ParseTree => {
"markdown.parseMarkdown": (_ctx, text: string): ParseTree => {
return parse(lang, text);
},
};

View File

@ -1,4 +1,4 @@
import YAML from "yaml";
import { YAML } from "../../mod.ts";
export function safeRun(fn: () => Promise<void>) {
fn().catch((e) => {
@ -33,5 +33,7 @@ export function parseYamlSettings(settingsMarkdown: string): {
return {};
}
const yaml = match[1];
return YAML.parse(yaml);
return YAML.parse(yaml) as {
[key: string]: any;
};
}

View File

@ -1,4 +1,4 @@
import { syscall } from "./syscall";
import { syscall } from "./syscall.ts";
export async function set(key: string, value: any): Promise<void> {
return syscall("clientStore.set", key, value);

View File

@ -1,5 +1,5 @@
import { syscall } from "./syscall";
import { FilterOption } from "../common/types";
import { syscall } from "./syscall.ts";
import { FilterOption } from "../common/types.ts";
export function getCurrentPage(): Promise<string> {
return syscall("editor.getCurrentPage");

View File

@ -1,5 +1,5 @@
import type { Query } from "@plugos/plugos-syscall/store";
import { syscall } from "./syscall";
import type { Query } from "../plugos-syscall/store.ts";
import { syscall } from "./syscall.ts";
export type KV = {
key: string;

View File

@ -1,6 +1,6 @@
import { syscall } from "./syscall";
import { syscall } from "./syscall.ts";
import type { ParseTree } from "../common/tree";
import type { ParseTree } from "../common/tree.ts";
export async function parseMarkdown(text: string): Promise<ParseTree> {
return syscall("markdown.parseMarkdown", text);

View File

@ -1,5 +1,5 @@
import { syscall } from "./syscall";
import { AttachmentMeta, PageMeta } from "../common/types";
import { syscall } from "./syscall.ts";
import { AttachmentMeta, PageMeta } from "../common/types.ts";
export async function listPages(unfiltered = false): Promise<PageMeta[]> {
return syscall("space.listPages", unfiltered);

View File

@ -1,5 +1,5 @@
import type { CommandDef } from "@silverbulletmd/web/hooks/command";
import { syscall } from "./syscall";
import type { CommandDef } from "../web/hooks/command.ts";
import { syscall } from "./syscall.ts";
export async function invokeFunction(
env: string,

View File

@ -1,4 +1,4 @@
import { syscall } from "./syscall";
import { syscall } from "./syscall.ts";
export async function dispatch(
eventName: string,

View File

@ -1,4 +1,4 @@
import { syscall } from "./syscall";
import { syscall } from "./syscall.ts";
export type FileMeta = {
name: string;

View File

@ -1,4 +1,4 @@
import { syscall } from "./syscall";
import { syscall } from "./syscall.ts";
export async function fullTextIndex(key: string, value: string) {
return syscall("fulltext.index", key, value);

View File

@ -1,4 +1,4 @@
import type { LogEntry } from "@plugos/plugos/sandbox";
import type { LogEntry } from "../plugos/sandbox.ts";
export async function getLogs(): Promise<LogEntry[]> {
return syscall("sandbox.getLogs");

View File

@ -1,4 +1,4 @@
import { syscall } from "./syscall";
import { syscall } from "./syscall.ts";
export async function run(
cmd: string,

View File

@ -1,4 +1,4 @@
import { syscall } from "./syscall";
import { syscall } from "./syscall.ts";
export type KV = {
key: string;

View File

@ -1,14 +1,11 @@
#!/usr/bin/env node
#!/usr/bin/env deno
import { readFile, watch, writeFile } from "fs/promises";
import path from "path";
import { Manifest } from "../types.ts";
import { YAML } from "../../../mod.ts";
import { compile, esbuild, sandboxCompileModule } from "../compile.ts";
import { path } from "../../../mod.ts";
import yargs from "yargs";
import { hideBin } from "yargs/helpers";
import { Manifest } from "../types";
import YAML from "yaml";
import { mkdirSync } from "fs";
import { compile, sandboxCompileModule } from "../compile";
import * as flags from "https://deno.land/std@0.158.0/flags/mod.ts";
async function bundle(
manifestPath: string,
@ -17,14 +14,15 @@ async function bundle(
) {
const rootPath = path.dirname(manifestPath);
const manifest = YAML.parse(
(await readFile(manifestPath)).toString()
await Deno.readTextFile(manifestPath)
) as Manifest<any>;
if (!manifest.name) {
throw new Error(`Missing 'name' in ${manifestPath}`);
}
let allModulesToExclude = excludeModules.slice();
const allModulesToExclude = excludeModules.slice();
for (let [name, moduleSpec] of Object.entries(manifest.dependencies || {})) {
manifest.dependencies![name] = await sandboxCompileModule(moduleSpec);
allModulesToExclude.push(name);
@ -42,7 +40,7 @@ async function bundle(
jsFunctionName,
debug,
allModulesToExclude,
false
true
);
delete def.path;
}
@ -55,7 +53,7 @@ async function buildManifest(
debug: boolean,
excludeModules: string[]
) {
let generatedManifest = await bundle(manifestPath, debug, excludeModules);
const generatedManifest = await bundle(manifestPath, debug, excludeModules);
const outFile =
manifestPath.substring(
0,
@ -63,47 +61,30 @@ async function buildManifest(
) + ".json";
const outPath = path.join(distPath, path.basename(outFile));
console.log("Emitting bundle to", outPath);
await writeFile(outPath, JSON.stringify(generatedManifest, null, 2));
await Deno.writeTextFile(outPath, JSON.stringify(generatedManifest, null, 2));
return { generatedManifest, outPath };
}
async function run() {
let args = yargs(hideBin(process.argv))
.option("debug", {
type: "boolean",
})
.option("watch", {
type: "boolean",
alias: "w",
})
.option("dist", {
type: "string",
default: ".",
})
.option("exclude", {
type: "array",
default: [],
})
.parse();
if (args._.length === 0) {
console.log(
"Usage: plugos-bundle [--debug] [--dist <path>] [--exclude package1 package2] -- <manifest.plug.yaml> <manifest2.plug.yaml> ..."
);
process.exit(1);
}
type BundleArgs = {
_: string[];
dist?: string;
debug?: boolean;
exclude?: string[] | string;
};
// console.log("Args", args);
export async function run(args: BundleArgs) {
console.log("Args", args);
async function buildAll() {
mkdirSync(args.dist, { recursive: true });
Deno.mkdirSync(args.dist!, { recursive: true });
for (const plugManifestPath of args._) {
let manifestPath = plugManifestPath as string;
const manifestPath = plugManifestPath as string;
try {
await buildManifest(
manifestPath,
args.dist,
args.dist!,
!!args.debug,
args.exclude
args.exclude as string[]
);
} catch (e) {
console.error(`Error building ${manifestPath}:`, e);
@ -112,28 +93,44 @@ async function run() {
}
await buildAll();
if (args.watch) {
console.log("Watching for changes...");
for await (const { eventType, filename } of watch(".", {
recursive: true,
})) {
if (
filename.endsWith(".plug.yaml") ||
filename.endsWith(".js") ||
filename.endsWith(".css") ||
filename.endsWith(".png") ||
filename.endsWith(".jpg") ||
filename.endsWith(".gif") ||
(filename.endsWith(".ts") && !filename.endsWith("_in.ts"))
) {
console.log("Change detected", eventType, filename);
await buildAll();
}
}
}
// if (args.watch) {
// console.log("Watching for changes...");
// for await (const event of Deno.watchFs(".", {
// recursive: true,
// })) {
// if (
// event.filename.endsWith(".plug.yaml") ||
// filename.endsWith(".js") ||
// filename.endsWith(".css") ||
// filename.endsWith(".png") ||
// filename.endsWith(".jpg") ||
// filename.endsWith(".gif") ||
// (filename.endsWith(".ts") && !filename.endsWith("_in.ts"))
// ) {
// console.log("Change detected", eventType, filename);
// await buildAll();
// }
// }
// }
}
run().catch((e) => {
console.error(e);
process.exit(1);
});
if (import.meta.main) {
let args: BundleArgs = flags.parse(Deno.args);
if (args._.length === 0) {
console.log(
"Usage: plugos-bundle [--debug] [--dist <path>] [--exclude=package1,package2] <manifest.plug.yaml> <manifest2.plug.yaml> ..."
);
Deno.exit(1);
}
if (!args.dist) {
args.dist = path.resolve("dist");
}
args.exclude =
typeof args.exclude === "string" ? args.exclude.split(",") : [];
await run(args);
esbuild.stop();
}

View File

@ -1,16 +1,17 @@
import esbuild from "esbuild";
import { mkdir, readFile, rm, symlink, unlink, writeFile } from "fs/promises";
import path from "path";
import { tmpdir } from "os";
import { nodeModulesDir } from "./environments/node_sandbox";
import { promisify } from "util";
import { execFile } from "child_process";
const execFilePromise = promisify(execFile);
// import { esbuild } from "../../mod.ts";
import * as esbuildWasm from "https://deno.land/x/esbuild@v0.14.54/wasm.js";
import * as esbuildNative from "https://deno.land/x/esbuild@v0.14.54/mod.js";
export const esbuild: typeof esbuildWasm =
Deno.run === undefined ? esbuildWasm : esbuildNative;
import { path } from "../../mod.ts";
import { denoPlugin } from "../esbuild_deno_loader/mod.ts";
export async function compile(
filePath: string,
functionName: string | undefined = undefined,
debug: boolean = false,
debug = false,
excludeModules: string[] = [],
meta = false
): Promise<string> {
@ -20,7 +21,7 @@ export async function compile(
if (functionName) {
// Generate a new file importing just this one function and exporting it
inFile = path.resolve(path.dirname(filePath), "_in.ts");
await writeFile(
await Deno.writeTextFile(
inFile,
`import {${functionName}} from "./${path.basename(
filePath
@ -28,6 +29,8 @@ export async function compile(
);
}
// console.log("External modules", excludeModules);
try {
// TODO: Figure out how to make source maps work correctly with eval() code
let result = await esbuild.build({
@ -41,6 +44,12 @@ export async function compile(
outfile: outFile,
metafile: true,
external: excludeModules,
treeShaking: true,
plugins: [
denoPlugin({
importMapURL: new URL("./../../import_map.json", import.meta.url),
}),
],
loader: {
".css": "text",
".md": "text",
@ -59,12 +68,12 @@ export async function compile(
console.log("Bundle info for", functionName, text);
}
let jsCode = (await readFile(outFile)).toString();
await unlink(outFile);
let jsCode = await Deno.readTextFile(outFile);
await Deno.remove(outFile);
return `(() => { ${jsCode} return mod;})()`;
} finally {
if (inFile !== filePath) {
await unlink(inFile);
await Deno.remove(inFile);
}
}
}
@ -74,74 +83,61 @@ export async function compileModule(
moduleName: string
): Promise<string> {
let inFile = path.resolve(cwd, "_in.ts");
await writeFile(inFile, `export * from "${moduleName}";`);
await Deno.writeTextFile(inFile, `export * from "${moduleName}";`);
let code = await compile(inFile);
await unlink(inFile);
await Deno.remove(inFile);
return code;
}
// TODO: Reconsider this later
const exposedModules = [
"@silverbulletmd/plugos-silverbullet-syscall",
"@plugos/plugos-syscall",
];
// export async function sandboxCompile(
// filename: string,
// code: string,
// functionName?: string,
// debug: boolean = false,
// installModules: string[] = [],
// globalModules: string[] = []
// ): Promise<string> {
// let tmpDir = `${tmpdir()}/plugos-${Math.random()}`;
// await mkdir(tmpDir, { recursive: true });
export async function sandboxCompile(
filename: string,
code: string,
functionName?: string,
debug: boolean = false,
installModules: string[] = [],
globalModules: string[] = []
): Promise<string> {
let tmpDir = `${tmpdir()}/plugos-${Math.random()}`;
await mkdir(tmpDir, { recursive: true });
// const srcNodeModules = `${nodeModulesDir}/node_modules`;
// const targetNodeModules = `${tmpDir}/node_modules`;
const srcNodeModules = `${nodeModulesDir}/node_modules`;
const targetNodeModules = `${tmpDir}/node_modules`;
// await mkdir(`${targetNodeModules}/@silverbulletmd`, { recursive: true });
// await mkdir(`${targetNodeModules}/@plugos`, { recursive: true });
// for (const exposedModule of exposedModules) {
// await symlink(
// `${srcNodeModules}/${exposedModule}`,
// `${targetNodeModules}/${exposedModule}`,
// "dir"
// );
// }
// for (let moduleName of installModules) {
// await execFilePromise("npm", ["install", moduleName], {
// cwd: tmpDir,
// });
// }
await mkdir(`${targetNodeModules}/@silverbulletmd`, { recursive: true });
await mkdir(`${targetNodeModules}/@plugos`, { recursive: true });
for (const exposedModule of exposedModules) {
await symlink(
`${srcNodeModules}/${exposedModule}`,
`${targetNodeModules}/${exposedModule}`,
"dir"
);
}
for (let moduleName of installModules) {
await execFilePromise("npm", ["install", moduleName], {
cwd: tmpDir,
});
}
await writeFile(`${tmpDir}/${filename}`, code);
let jsCode = await compile(
`${tmpDir}/${filename}`,
functionName,
debug,
globalModules
);
await rm(tmpDir, { recursive: true });
return jsCode;
}
// await writeFile(`${tmpDir}/${filename}`, code);
// let jsCode = await compile(
// `${tmpDir}/${filename}`,
// functionName,
// debug,
// globalModules
// );
// await rm(tmpDir, { recursive: true });
// return jsCode;
// }
export async function sandboxCompileModule(
moduleName: string,
moduleUrl: string,
globalModules: string[] = []
): Promise<string> {
let [modulePart, path] = moduleName.split(":");
let modulePieces = modulePart.split("@");
let cleanModulesName = modulePieces
.slice(0, modulePieces.length - 1)
.join("@");
return sandboxCompile(
"module.ts",
// `export * from "${cleanModulesName}${path ? path : ""}";`,
`module.exports = require("${cleanModulesName}${path ? path : ""}");`,
undefined,
true,
[modulePart],
globalModules
await Deno.writeTextFile(
"_mod.ts",
`module.exports = require("${moduleUrl}");`
);
let code = await compile("_mod.ts", undefined, false, globalModules);
await Deno.remove("_mod.ts");
return code;
}

View File

@ -0,0 +1,42 @@
import { safeRun } from "../util.ts";
// @ts-ignore
// import workerCode from "bundle-text:./node_worker.ts";
import { Sandbox } from "../sandbox.ts";
import { WorkerLike } from "./worker.ts";
import { Plug } from "../plug.ts";
class DenoWorkerWrapper implements WorkerLike {
private worker: Worker;
onMessage?: (message: any) => Promise<void>;
ready: Promise<void>;
constructor(worker: Worker) {
this.worker = worker;
this.worker.addEventListener("message", (evt: any) => {
let data = evt.data;
if (!data) return;
safeRun(async () => {
await this.onMessage!(data);
});
});
this.ready = Promise.resolve();
}
postMessage(message: any): void {
this.worker.postMessage(message);
}
terminate() {
return this.worker.terminate();
}
}
export function createSandbox(plug: Plug<any>) {
let worker = new Worker(
new URL("./sandbox_worker.ts", import.meta.url).href,
{
type: "module",
}
);
return new Sandbox(plug, new DenoWorkerWrapper(worker));
}

View File

@ -1,8 +0,0 @@
<html>
<body>
<script type="module">
// Sup yo!
import "./sandbox_worker";
</script>
</body>
</html>

View File

@ -1,55 +0,0 @@
import { safeRun } from "../util";
// @ts-ignore
import sandboxHtml from "bundle-text:./iframe_sandbox.html";
import { Sandbox } from "../sandbox";
import { WorkerLike } from "./worker";
import { Plug } from "../plug";
class IFrameWrapper implements WorkerLike {
private iframe: HTMLIFrameElement;
onMessage?: (message: any) => Promise<void>;
ready: Promise<void>;
private messageListener: (evt: any) => void;
constructor() {
const iframe = document.createElement("iframe", {});
this.iframe = iframe;
iframe.style.display = "none";
// Let's lock this down significantly
iframe.setAttribute("sandbox", "allow-scripts");
iframe.srcdoc = sandboxHtml;
this.messageListener = (evt: any) => {
if (evt.source !== iframe.contentWindow) {
return;
}
let data = evt.data;
if (!data) return;
safeRun(async () => {
await this.onMessage!(data);
});
};
window.addEventListener("message", this.messageListener);
document.body.appendChild(iframe);
this.ready = new Promise((resolve) => {
iframe.onload = () => {
resolve();
iframe.onload = null;
};
});
}
postMessage(message: any): void {
this.iframe.contentWindow!.postMessage(message, "*");
}
terminate() {
console.log("Terminating iframe sandbox");
window.removeEventListener("message", this.messageListener);
return this.iframe.remove();
}
}
export function createSandbox(plug: Plug<any>) {
return new Sandbox(plug, new IFrameWrapper());
}

View File

@ -1,56 +0,0 @@
import { Worker } from "worker_threads";
import { safeRun } from "../util";
// @ts-ignore
import workerCode from "bundle-text:./node_worker.ts";
import { Sandbox } from "../sandbox";
import { WorkerLike } from "./worker";
import { Plug } from "../plug";
import path from "path";
import fs from "fs";
class NodeWorkerWrapper implements WorkerLike {
onMessage?: (message: any) => Promise<void>;
ready: Promise<void>;
private worker: Worker;
constructor(worker: Worker) {
this.worker = worker;
worker.on("message", (message: any) => {
safeRun(async () => {
await this.onMessage!(message);
});
});
this.ready = new Promise((resolve) => {
worker.once("online", resolve);
});
}
postMessage(message: any): void {
this.worker.postMessage(message);
}
terminate(): void {
this.worker.terminate();
}
}
// Look for the node_modules directory, to be passed to the worker to find e.g. the vm2 module
export let nodeModulesDir = __dirname;
while (
!fs.existsSync(nodeModulesDir + "/node_modules/vm2") &&
nodeModulesDir !== "/"
) {
nodeModulesDir = path.dirname(nodeModulesDir);
}
export function createSandbox(plug: Plug<any>) {
let worker = new Worker(workerCode, {
eval: true,
workerData: {
nodeModulesPath: path.join(nodeModulesDir, "node_modules"),
},
});
return new Sandbox(plug, new NodeWorkerWrapper(worker));
}

View File

@ -1,158 +0,0 @@
import { ConsoleLogger } from "./custom_logger";
const {
parentPort,
workerData: { nodeModulesPath },
} = require("worker_threads");
const { VM, VMScript } = require(`${nodeModulesPath}/vm2`);
let loadedFunctions = new Map<string, Function>();
let pendingRequests = new Map<
number,
{
resolve: (result: unknown) => void;
reject: (e: any) => void;
}
>();
let syscallReqId = 0;
let consoleLogger = new ConsoleLogger((level, message) => {
parentPort.postMessage({
type: "log",
level,
message,
});
}, false);
let loadedModules = new Map<string, any>();
// HACK to make Mattermost client work...
loadedModules.set("form-data", require(`${nodeModulesPath}/form-data`));
let vm = new VM({
sandbox: {
// Exposing some "safe" APIs
console: consoleLogger,
setTimeout,
clearTimeout,
setInterval,
URL,
clearInterval,
TextEncoder,
TextDecoder,
fetch: require(`${nodeModulesPath}/node-fetch`),
WebSocket: require(`${nodeModulesPath}/ws`),
// This is only going to be called for pre-bundled modules, we won't allow
// arbitrary requiring of modules
require: (moduleName: string): any => {
// console.log("Loading module", moduleName);
// if (preloadedModules.includes(moduleName)) {
// return require(`${nodeModulesPath}/${moduleName}`);
// } else
if (loadedModules.has(moduleName)) {
let mod = loadedModules.get(moduleName);
// console.log("And it has the value", mod);
return mod;
} else {
throw Error(`Cannot import arbitrary modules like ${moduleName}`);
}
},
self: {
syscall: (name: string, ...args: any[]) => {
return new Promise((resolve, reject) => {
syscallReqId++;
pendingRequests.set(syscallReqId, { resolve, reject });
parentPort.postMessage({
type: "syscall",
id: syscallReqId,
name,
// TODO: Figure out why this is necessary (to avoide a CloneError)
args: JSON.parse(JSON.stringify(args)),
});
});
},
},
},
});
function wrapScript(code: string) {
return `(${code})["default"]`;
}
function safeRun(fn: any) {
fn().catch((e: any) => {
console.error(e);
});
}
parentPort.on("message", (data: any) => {
safeRun(async () => {
switch (data.type) {
case "load":
loadedFunctions.set(data.name, new VMScript(wrapScript(data.code)));
parentPort.postMessage({
type: "inited",
name: data.name,
});
break;
case "load-dependency":
// console.log("Asked to load dep", data.name);
try {
let r = vm.run(data.code);
// console.log("Loaded dependency", r);
loadedModules.set(data.name, r);
parentPort.postMessage({
type: "dependency-inited",
name: data.name,
});
} catch (e: any) {
console.error("Could not load dependency", e.message);
}
break;
case "invoke":
let fn = loadedFunctions.get(data.name);
if (!fn) {
throw new Error(`Function not loaded: ${data.name}`);
}
try {
let r = vm.run(fn);
let result = await Promise.resolve(r(...data.args));
parentPort.postMessage({
type: "result",
id: data.id,
// TOOD: Figure out if this is necessary, because it's expensive
result: result && JSON.parse(JSON.stringify(result)),
});
} catch (e: any) {
// console.error("Error caught", e, "Stack", e.stack);
parentPort.postMessage({
type: "result",
id: data.id,
error: e.message,
stack: e.stack,
});
}
break;
case "syscall-response":
let syscallId = data.id;
const lookup = pendingRequests.get(syscallId);
if (!lookup) {
throw Error("Invalid request id");
}
pendingRequests.delete(syscallId);
if (data.error) {
// console.log("Got rejection", data.error);
lookup.reject(new Error(data.error));
} else {
lookup.resolve(data.result);
}
break;
}
});
});
process.on("uncaughtException", (e) => {
console.error("Uncaught error", e);
});

View File

@ -1,6 +1,6 @@
import { safeRun } from "../util";
import { ConsoleLogger } from "./custom_logger";
import { ControllerMessage, WorkerMessage } from "./worker";
import { safeRun } from "../util.ts";
import { ConsoleLogger } from "./custom_logger.ts";
import { ControllerMessage, WorkerMessage } from "./worker.ts";
let loadedFunctions = new Map<string, Function>();
let pendingRequests = new Map<
@ -43,7 +43,7 @@ let loadedModules = new Map<string, any>();
// @ts-ignore
self.require = (moduleName: string): any => {
// console.log("Loading", moduleName, loadedModules.get(moduleName));
console.log("Requiring", moduleName, loadedModules.get(moduleName));
return loadedModules.get(moduleName);
};
@ -61,15 +61,19 @@ self.addEventListener("message", (event: { data: WorkerMessage }) => {
let data = event.data;
switch (data.type) {
case "load":
{
let fn2 = new Function(wrapScript(data.code!));
loadedFunctions.set(data.name!, fn2());
workerPostMessage({
type: "inited",
name: data.name,
});
}
break;
case "load-dependency":
// console.log("Received dep", data.name);
{
console.log("Received dep", data.name);
let fn3 = new Function(`return ${data.code!}`);
let v = fn3();
loadedModules.set(data.name!, v);
@ -78,8 +82,10 @@ self.addEventListener("message", (event: { data: WorkerMessage }) => {
type: "dependency-inited",
name: data.name,
});
}
break;
case "invoke":
{
let fn = loadedFunctions.get(data.name!);
if (!fn) {
throw new Error(`Function not loaded: ${data.name}`);
@ -101,9 +107,11 @@ self.addEventListener("message", (event: { data: WorkerMessage }) => {
// console.error("Error invoking function", data.name, e.message);
// throw e;
}
}
break;
case "syscall-response":
{
let syscallId = data.id!;
const lookup = pendingRequests.get(syscallId);
if (!lookup) {
@ -121,6 +129,8 @@ self.addEventListener("message", (event: { data: WorkerMessage }) => {
} else {
lookup.resolve(data.result);
}
}
break;
}
});

View File

@ -1,7 +1,7 @@
import { safeRun } from "../util";
import { Sandbox } from "../sandbox";
import { WorkerLike } from "./worker";
import { Plug } from "../plug";
import { safeRun } from "../util.ts";
import { Sandbox } from "../sandbox.ts";
import { WorkerLike } from "./worker.ts";
import type { Plug } from "../plug.ts";
class WebWorkerWrapper implements WorkerLike {
private worker: Worker;

View File

@ -1,4 +1,4 @@
import type { LogLevel } from "./custom_logger";
import type { LogLevel } from "./custom_logger.ts";
export type ControllerMessageType =
| "inited"

View File

@ -9,11 +9,11 @@ export abstract class EventEmitter<HandlerT> {
this.handlers = this.handlers.filter((h) => h !== handlers);
}
emit(eventName: keyof HandlerT, ...args: any[]) {
for (let handler of this.handlers) {
let fn: any = handler[eventName];
async emit(eventName: keyof HandlerT, ...args: any[]): Promise<void> {
for (const handler of this.handlers) {
const fn: any = handler[eventName];
if (fn) {
fn(...args);
await Promise.resolve(fn(...args));
}
}
}

View File

@ -1,7 +1,6 @@
import { Hook, Manifest } from "../types";
import { System } from "../system";
import { safeRun } from "../util";
import { EventEmitter } from "events";
import type { Hook, Manifest } from "../types.ts";
import { System } from "../system.ts";
import { safeRun } from "../util.ts";
// System events:
// - plug:load (plugName: string)
@ -28,9 +27,7 @@ export class EventHook implements Hook<EventHookT> {
}
let eventNames = new Set<string>();
for (const plug of this.system.loadedPlugs.values()) {
for (const [name, functionDef] of Object.entries(
plug.manifest!.functions
)) {
for (const functionDef of Object.values(plug.manifest!.functions)) {
if (functionDef.events) {
for (let eventName of functionDef.events) {
eventNames.add(eventName);

View File

@ -1,7 +1,7 @@
import { Hook, Manifest } from "../types";
import cron, { ScheduledTask } from "node-cron";
import { safeRun } from "../util";
import { System } from "../system";
import { Hook, Manifest } from "../types.ts";
import { Cron } from "https://cdn.jsdelivr.net/gh/hexagon/croner@4/src/croner.js";
import { safeRun } from "../util.ts";
import { System } from "../system.ts";
export type CronHookT = {
cron?: string | string[];
@ -9,7 +9,7 @@ export type CronHookT = {
export class NodeCronHook implements Hook<CronHookT> {
apply(system: System<CronHookT>): void {
let tasks: ScheduledTask[] = [];
let tasks: Cron[] = [];
system.on({
plugLoaded: () => {
reloadCrons();
@ -37,9 +37,9 @@ export class NodeCronHook implements Hook<CronHookT> {
const crons = Array.isArray(functionDef.cron)
? functionDef.cron
: [functionDef.cron];
for (let cronDef of crons) {
for (const cronDef of crons) {
tasks.push(
cron.schedule(cronDef, () => {
new Cron(cronDef, () => {
console.log("Now acting on cron", cronDef);
safeRun(async () => {
try {
@ -57,7 +57,7 @@ export class NodeCronHook implements Hook<CronHookT> {
}
validateManifest(manifest: Manifest<CronHookT>): string[] {
let errors = [];
let errors: string[] = [];
for (const [name, functionDef] of Object.entries(manifest.functions)) {
if (!functionDef.cron) {
continue;
@ -66,9 +66,9 @@ export class NodeCronHook implements Hook<CronHookT> {
? functionDef.cron
: [functionDef.cron];
for (let cronDef of crons) {
if (!cron.validate(cronDef)) {
errors.push(`Invalid cron expression ${cronDef}`);
}
// if (!cron.validate(cronDef)) {
// errors.push(`Invalid cron expression ${cronDef}`);
// }
}
}
return errors;

View File

@ -1,6 +1,6 @@
import { Manifest, RuntimeEnvironment } from "./types";
import { Sandbox } from "./sandbox";
import { System } from "./system";
import { Manifest, RuntimeEnvironment } from "./types.ts";
import { Sandbox } from "./sandbox.ts";
import { System } from "./system.ts";
export class Plug<HookT> {
system: System<HookT>;

View File

@ -1,66 +0,0 @@
import fs from "fs/promises";
import watch from "node-watch";
import path from "path";
import { createSandbox } from "./environments/node_sandbox";
import { System } from "./system";
import { Manifest } from "./types";
export class DiskPlugLoader<HookT> {
private system: System<HookT>;
private plugPath: string;
constructor(system: System<HookT>, plugPath: string) {
this.system = system;
this.plugPath = plugPath;
}
watcher() {
watch(this.plugPath, (eventType, localPath) => {
if (!localPath.endsWith(".plug.json")) {
return;
}
Promise.resolve()
.then(async () => {
try {
// let localPath = path.join(this.plugPath, filename);
console.log("Change detected for", localPath);
try {
await fs.stat(localPath);
} catch (e) {
// Likely removed
console.log("Plug removed, TODO: Unload");
return;
}
const plugDef = await this.loadPlugFromFile(localPath);
} catch (e) {
console.log("Ignoring something FYI", e);
// ignore, error handled by loadPlug
}
})
.catch(console.error);
});
}
private async loadPlugFromFile(localPath: string) {
const plug = await fs.readFile(localPath, "utf8");
try {
const plugDef: Manifest<HookT> = JSON.parse(plug);
console.log("Now loading plug", plugDef.name);
await this.system.load(plugDef, createSandbox);
return plugDef;
} catch (e) {
console.error("Could not parse plugin file", e);
throw e;
}
}
async loadPlugs() {
for (let filename of await fs.readdir(this.plugPath)) {
if (filename.endsWith(".plug.json")) {
let localPath = path.join(this.plugPath, filename);
await this.loadPlugFromFile(localPath);
}
}
}
}

View File

@ -1,9 +1,14 @@
import { createSandbox } from "./environments/node_sandbox";
import { expect, test } from "@jest/globals";
import { System } from "./system";
import { createSandbox } from "./environments/deno_sandbox.ts";
import { System } from "./system.ts";
test("Run a Node sandbox", async () => {
let system = new System("server");
import {
assertEquals,
assert,
} from "https://deno.land/std@0.158.0/testing/asserts.ts";
import { denoPlugin } from "../esbuild_deno_loader/mod.ts";
Deno.test("Run a deno sandbox", async () => {
const system = new System("server");
system.registerSyscalls([], {
addNumbers: (ctx, a, b) => {
return a + b;
@ -85,31 +90,83 @@ test("Run a Node sandbox", async () => {
},
createSandbox
);
expect(await plug.invoke("addTen", [10])).toBe(20);
assertEquals(await plug.invoke("addTen", [10]), 20);
for (let i = 0; i < 100; i++) {
expect(await plug.invoke("addNumbersSyscall", [10, i])).toBe(10 + i);
assertEquals(await plug.invoke("addNumbersSyscall", [10, i]), 10 + i);
}
try {
await plug.invoke("errorOut", []);
expect(true).toBe(false);
assert(false);
} catch (e: any) {
expect(e.message).toContain("BOOM");
assert(e.message.indexOf("BOOM") !== -1);
}
try {
await plug.invoke("errorOutSys", []);
expect(true).toBe(false);
assert(false);
} catch (e: any) {
expect(e.message).toContain("#fail");
assert(e.message.indexOf("#fail") !== -1);
}
try {
await plug.invoke("restrictedTest", []);
expect(true).toBe(false);
assert(false);
} catch (e: any) {
expect(e.message).toContain(
assert(
e.message.indexOf(
"Missing permission 'restricted' for syscall restrictedSyscall"
) !== -1
);
}
expect(await plug.invoke("dangerousTest", [])).toBe("yay");
assertEquals(await plug.invoke("dangerousTest", []), "yay");
await system.unloadAll();
});
import { run as bundleRun } from "./bin/plugos-bundle.ts";
import { esbuild } from "./compile.ts";
import { safeRun } from "./util.ts";
const __dirname = new URL(".", import.meta.url).pathname;
Deno.test("Preload dependencies", async () => {
const tmpDist = `${__dirname}tmp_dist`;
await bundleRun({
_: [`${__dirname}../plugs/global.plug.yaml`],
debug: true,
dist: tmpDist,
exclude: [],
});
const globalModules = JSON.parse(
Deno.readTextFileSync(`${tmpDist}/global.plug.json`)
);
await bundleRun({
_: [`${__dirname}test.plug.yaml`],
debug: true,
dist: tmpDist,
exclude: Object.keys(globalModules.dependencies),
});
esbuild.stop();
const system = new System("server");
system.on({
plugLoaded: async (plug) => {
for (let [modName, code] of Object.entries(globalModules.dependencies)) {
await plug.sandbox.loadDependency(modName, code as string);
}
},
});
// Load test module
console.log("Loading test module");
const testPlug = await system.load(
JSON.parse(Deno.readTextFileSync(`${tmpDist}/test.plug.json`)),
createSandbox
);
console.log("Running");
const result = await testPlug.invoke("boot", []);
console.log("Result", result);
await system.unloadAll();
Deno.removeSync(tmpDist, { recursive: true });
});

View File

@ -1,10 +1,10 @@
import type { LogLevel } from "./environments/custom_logger";
import type { LogLevel } from "./environments/custom_logger.ts";
import {
ControllerMessage,
WorkerLike,
WorkerMessage,
} from "./environments/worker";
import { Plug } from "./plug";
} from "./environments/worker.ts";
import { Plug } from "./plug.ts";
export type SandboxFactory<HookT> = (plug: Plug<HookT>) => Sandbox;
@ -64,8 +64,8 @@ export class Sandbox {
});
}
async loadDependency(name: string, code: string): Promise<void> {
// console.log("Loading dependency", name);
loadDependency(name: string, code: string): Promise<void> {
console.log("Loading dependency", name);
this.worker.postMessage({
type: "load-dependency",
name: name,

View File

@ -1,12 +1,12 @@
import { SysCallMapping } from "../system";
import { EventHook } from "../hooks/event";
import { SysCallMapping } from "../system.ts";
import { EventHook } from "../hooks/event.ts";
export function eventSyscalls(eventHook: EventHook): SysCallMapping {
return {
"event.dispatch": async (ctx, eventName: string, data: any) => {
"event.dispatch": (ctx, eventName: string, data: any) => {
return eventHook.dispatchEvent(eventName, data);
},
"event.list": async () => {
"event.list": () => {
return eventHook.listEvents();
},
};

View File

@ -1,13 +1,11 @@
import { readdir, readFile, stat, writeFile, unlink, mkdir } from "fs/promises";
import path from "path";
import type { SysCallMapping } from "../system";
import type { SysCallMapping } from "../system.ts";
export type FileMeta = {
name: string;
lastModified: number;
};
export default function fileSystemSyscalls(root: string = "/"): SysCallMapping {
export default function fileSystemSyscalls(root = "/"): SysCallMapping {
function resolvedPath(p: string): string {
p = path.resolve(root, p);
if (!p.startsWith(root)) {

View File

@ -0,0 +1,9 @@
import { SQLite3 } from "../../../mod.ts";
import { storeSyscalls } from "./store.dex_deno.ts";
Deno.test("store.dex", async () => {
const db = new SQLite3(":memory:");
const syscalls = storeSyscalls(db, "test");
const fakeCtx = {} as any;
await syscalls["store.put"](fakeCtx, "key", { value: "value" });
});

View File

@ -0,0 +1,175 @@
import type { QueryBuilder } from "https://deno.land/x/dex@1.0.2/types/index.d.ts";
import { RowObject } from "https://deno.land/x/sqlite/mod.ts";
import type { SQLite3 } from "../../../mod.ts";
import { Dex } from "../../../mod.ts";
import { SysCallMapping } from "../system.ts";
export type Item = {
page: string;
key: string;
value: any;
};
export type KV = {
key: string;
value: any;
};
const dex = Dex<Item>({ client: "sqlite3" });
export function ensureTable(db: SQLite3, tableName: string) {
const result = db.query<[string]>(
`SELECT name FROM sqlite_master WHERE type='table' AND name=?`,
[tableName],
);
if (result.length === 0) {
const createQuery = dex.schema.createTable(tableName, (table) => {
table.string("key");
table.text("value");
table.primary(["key"]);
}).toString();
db.query(createQuery);
console.log(`Created table ${tableName}`);
}
}
export type Query = {
filter?: Filter[];
orderBy?: string;
orderDesc?: boolean;
limit?: number;
select?: string[];
};
export type Filter = {
op: string;
prop: string;
value: any;
};
export function queryToKnex(
queryBuilder: QueryBuilder<Item, any>,
query: Query,
): QueryBuilder<Item, any> {
if (query.filter) {
for (const filter of query.filter) {
queryBuilder = queryBuilder.andWhereRaw(
`json_extract(value, '$.${filter.prop}') ${filter.op} ?`,
[filter.value],
);
}
}
if (query.limit) {
queryBuilder = queryBuilder.limit(query.limit);
}
if (query.orderBy) {
queryBuilder = queryBuilder.orderByRaw(
`json_extract(value, '$.${query.orderBy}') ${
query.orderDesc ? "desc" : "asc"
}`,
);
}
return queryBuilder;
}
function asyncQuery<T extends RowObject>(
db: SQLite3,
query: QueryBuilder<any, any>,
): Promise<T[]> {
return Promise.resolve(db.queryEntries<T>(query.toString()));
}
function asyncExecute(
db: SQLite3,
query: QueryBuilder<any, any>,
): Promise<void> {
return Promise.resolve(db.execute(query.toString()));
}
export function storeSyscalls(
db: SQLite3,
tableName: string,
): SysCallMapping {
const apiObj: SysCallMapping = {
"store.delete": async (_ctx, key: string) => {
await asyncExecute(db, dex(tableName).where({ key }).del());
},
"store.deletePrefix": async (_ctx, prefix: string) => {
await asyncExecute(
db,
dex(tableName).whereRaw(`"key" LIKE "${prefix}%"`).del(),
);
},
"store.deleteQuery": async (_ctx, query: Query) => {
await asyncExecute(db, queryToKnex(dex(tableName), query).del());
},
"store.deleteAll": async () => {
await asyncExecute(db, dex(tableName).del());
},
"store.set": async (_ctx, key: string, value: any) => {
await asyncExecute(
db,
dex(tableName).where({ key }).update("value", JSON.stringify(value)),
);
if (db.changes === 0) {
await asyncExecute(
db,
dex(tableName).insert({
key,
value: JSON.stringify(value),
}),
);
}
},
// TODO: Optimize
"store.batchSet": async (ctx, kvs: KV[]) => {
for (let { key, value } of kvs) {
await apiObj["store.set"](ctx, key, value);
}
},
"store.batchDelete": async (ctx, keys: string[]) => {
for (let key of keys) {
await apiObj["store.delete"](ctx, key);
}
},
"store.get": async (_ctx, key: string): Promise<any | null> => {
const result = await asyncQuery<Item>(
db,
dex(tableName).where({ key }).select("value"),
);
if (result.length) {
return JSON.parse(result[0].value);
} else {
return null;
}
},
"store.queryPrefix": async (ctx, prefix: string) => {
return (
await asyncQuery<Item>(
db,
dex(tableName)
.andWhereRaw(`"key" LIKE "${prefix}%"`)
.select("key", "value"),
)
).map(({ key, value }) => ({
key,
value: JSON.parse(value),
}));
},
"store.query": async (_ctx, query: Query) => {
return (
await asyncQuery<Item>(
db,
queryToKnex(dex(tableName), query).select("key", "value"),
)
).map(({ key, value }: { key: string; value: string }) => ({
key,
value: JSON.parse(value),
}));
},
};
return apiObj;
}

View File

@ -1,49 +0,0 @@
import { createSandbox } from "../environments/node_sandbox";
import { expect, test } from "@jest/globals";
import { System } from "../system";
import { storeSyscalls } from "./store.dexie_browser";
// For testing in node.js
require("fake-indexeddb/auto");
test("Test store", async () => {
let system = new System("server");
system.registerSyscalls([], storeSyscalls("test", "test"));
let plug = await system.load(
{
name: "test",
functions: {
test1: {
code: `(() => {
return {
default: async () => {
await self.syscall("store.set", "name", "Pete");
return await self.syscall("store.get", "name");
}
};
})()`,
},
test2: {
code: `(() => {
return {
default: async () => {
await self.syscall("store.set", "page1:bl:page2:10", {title: "Something", meta: 20});
await self.syscall("store.batchSet", [
{key: "page2:bl:page3", value: {title: "Something2", meta: 10}},
{key: "page2:bl:page4", value: {title: "Something3", meta: 10}},
]);
return await self.syscall("store.queryPrefix", "page2:");
}
};
})()`,
},
},
},
createSandbox
);
expect(await plug.invoke("test1", [])).toBe("Pete");
let queryResults = await plug.invoke("test2", []);
expect(queryResults.length).toBe(2);
expect(queryResults[0].value.meta).toBe(10);
await system.unloadAll();
});

View File

@ -1,7 +1,7 @@
import { Hook, Manifest, RuntimeEnvironment } from "./types";
import { EventEmitter } from "./event";
import { SandboxFactory } from "./sandbox";
import { Plug } from "./plug";
import { Hook, Manifest, RuntimeEnvironment } from "./types.ts";
import { EventEmitter } from "./event.ts";
import { SandboxFactory } from "./sandbox.ts";
import { Plug } from "./plug.ts";
export interface SysCallMapping {
[key: string]: (ctx: SyscallContext, ...args: any) => Promise<any> | any;
@ -10,8 +10,8 @@ export interface SysCallMapping {
export type SystemJSON<HookT> = Manifest<HookT>[];
export type SystemEvents<HookT> = {
plugLoaded: (plug: Plug<HookT>) => void;
plugUnloaded: (name: string) => void;
plugLoaded: (plug: Plug<HookT>) => void | Promise<void>;
plugUnloaded: (name: string) => void | Promise<void>;
};
export type SyscallContext = {
@ -62,7 +62,7 @@ export class System<HookT> extends EventEmitter<SystemEvents<HookT>> {
}
}
async syscallWithContext(
syscallWithContext(
ctx: SyscallContext,
name: string,
args: any[]
@ -82,7 +82,7 @@ export class System<HookT> extends EventEmitter<SystemEvents<HookT>> {
return Promise.resolve(syscall.callback(ctx, ...args));
}
async localSyscall(
localSyscall(
contextPlugName: string,
syscallName: string,
args: any[]
@ -116,7 +116,7 @@ export class System<HookT> extends EventEmitter<SystemEvents<HookT>> {
console.log("Loading", name);
await plug.load(manifest);
this.plugs.set(name, plug);
this.emit("plugLoaded", plug);
await this.emit("plugLoaded", plug);
return plug;
}

View File

@ -0,0 +1,4 @@
name: test
functions:
boot:
path: "./test_func.test.ts:hello"

View File

@ -0,0 +1,7 @@
import * as YAML from "https://deno.land/std/encoding/yaml.ts";
export function hello() {
console.log(YAML.stringify({ hello: "world" }));
return "hello";
}

View File

@ -1,4 +1,4 @@
import { System } from "./system";
import { System } from "./system.ts";
export interface Manifest<HookT> {
name: string;

View File

@ -1,15 +1,14 @@
import { collectNodesOfType, traverseTree } from "@silverbulletmd/common/tree";
import { collectNodesOfType } from "../../common/tree.ts";
import {
batchSet,
queryPrefix,
} from "@silverbulletmd/plugos-silverbullet-syscall";
} from "../../plugos-silverbullet-syscall/index.ts";
import {
getCurrentPage,
matchBefore,
} from "@silverbulletmd/plugos-silverbullet-syscall/editor";
import type { IndexTreeEvent } from "@silverbulletmd/web/app_event";
import { applyQuery, QueryProviderEvent } from "../query/engine";
import { removeQueries } from "../query/util";
} from "../../plugos-silverbullet-syscall/editor.ts";
import type { IndexTreeEvent } from "../../web/app_event.ts";
import { removeQueries } from "../query/util.ts";
// Key space
// a:pageName:anchorName => pos

View File

@ -1,13 +1,10 @@
import type {
FileData,
FileEncoding,
} from "@silverbulletmd/common/spaces/space_primitives";
import {
renderToText,
replaceNodesMatching,
} from "@silverbulletmd/common/tree";
import type { FileMeta } from "@silverbulletmd/common/types";
import { parseMarkdown } from "@silverbulletmd/plugos-silverbullet-syscall/markdown";
} from "../../common/spaces/space_primitives.ts";
import { renderToText, replaceNodesMatching } from "../../common/tree.ts";
import type { FileMeta } from "../../common/types.ts";
import { parseMarkdown } from "../../plugos-silverbullet-syscall/markdown.ts";
const pagePrefix = "💭 ";

View File

@ -1,7 +1,5 @@
import { queryPrefix } from "@silverbulletmd/plugos-silverbullet-syscall";
import { matchBefore } from "@silverbulletmd/plugos-silverbullet-syscall/editor";
import { listCommands } from "@silverbulletmd/plugos-silverbullet-syscall/system";
import { applyQuery, QueryProviderEvent } from "../query/engine";
import { matchBefore } from "../../plugos-silverbullet-syscall/editor.ts";
import { listCommands } from "../../plugos-silverbullet-syscall/system.ts";
export async function commandComplete() {
let prefix = await matchBefore("\\{\\[[^\\]]*");

View File

@ -1,11 +1,11 @@
import { getLogs } from "@plugos/plugos-syscall/sandbox";
import { getLogs } from "../../plugos-syscall/sandbox.ts";
import {
getText,
hidePanel,
showPanel,
} from "@silverbulletmd/plugos-silverbullet-syscall/editor";
import { parseMarkdown } from "@silverbulletmd/plugos-silverbullet-syscall/markdown";
import { getServerLogs } from "@silverbulletmd/plugos-silverbullet-syscall/sandbox";
} from "../../plugos-silverbullet-syscall/editor.ts";
import { parseMarkdown } from "../../plugos-silverbullet-syscall/markdown.ts";
import { getServerLogs } from "../../plugos-silverbullet-syscall/sandbox.ts";
export async function parsePageCommand() {
console.log(

View File

@ -1,5 +1,5 @@
import * as clientStore from "@silverbulletmd/plugos-silverbullet-syscall/clientStore";
import { enableReadOnlyMode } from "@silverbulletmd/plugos-silverbullet-syscall/editor";
import * as clientStore from "../../plugos-silverbullet-syscall/clientStore.ts";
import { enableReadOnlyMode } from "../../plugos-silverbullet-syscall/editor.ts";
export async function editorLoad() {
let readOnlyMode = await clientStore.get("readOnlyMode");

View File

@ -1,18 +1,16 @@
import type { IndexTreeEvent } from "@silverbulletmd/web/app_event";
import type { IndexTreeEvent } from "../../web/app_event.ts";
import {
batchSet,
queryPrefix,
} from "@silverbulletmd/plugos-silverbullet-syscall/index";
} from "../../plugos-silverbullet-syscall/index.ts";
import {
collectNodesMatching,
collectNodesOfType,
ParseTree,
renderToText,
replaceNodesMatching,
} from "@silverbulletmd/common/tree";
import { removeQueries } from "../query/util";
import { applyQuery, QueryProviderEvent } from "../query/engine";
} from "../../common/tree.ts";
import { removeQueries } from "../query/util.ts";
import { applyQuery, QueryProviderEvent } from "../query/engine.ts";
export type Item = {
name: string;

View File

@ -1,14 +1,14 @@
import { nodeAtPos } from "@silverbulletmd/common/tree";
import { nodeAtPos } from "../../common/tree.ts";
import {
filterBox,
flashNotification,
getCursor,
getText,
replaceRange,
} from "@silverbulletmd/plugos-silverbullet-syscall/editor";
import { parseMarkdown } from "@silverbulletmd/plugos-silverbullet-syscall/markdown";
import { dispatch as dispatchEvent } from "@plugos/plugos-syscall/event";
import { invokeFunction } from "@silverbulletmd/plugos-silverbullet-syscall/system";
} from "../../plugos-silverbullet-syscall/editor.ts";
import { parseMarkdown } from "../../plugos-silverbullet-syscall/markdown.ts";
import { dispatch as dispatchEvent } from "../../plugos-syscall/event.ts";
import { invokeFunction } from "../../plugos-silverbullet-syscall/system.ts";
type UnfurlOption = {
id: string;

View File

@ -1,4 +1,4 @@
import type { ClickEvent } from "@silverbulletmd/web/app_event";
import type { ClickEvent } from "../../web/app_event.ts";
import {
flashNotification,
getCurrentPage,
@ -6,10 +6,10 @@ import {
getText,
navigate as navigateTo,
openUrl,
} from "@silverbulletmd/plugos-silverbullet-syscall/editor";
import { parseMarkdown } from "@silverbulletmd/plugos-silverbullet-syscall/markdown";
import { nodeAtPos, ParseTree } from "@silverbulletmd/common/tree";
import { invokeCommand } from "@silverbulletmd/plugos-silverbullet-syscall/system";
} from "../../plugos-silverbullet-syscall/editor.ts";
import { parseMarkdown } from "../../plugos-silverbullet-syscall/markdown.ts";
import { nodeAtPos, ParseTree } from "../../common/tree.ts";
import { invokeCommand } from "../../plugos-silverbullet-syscall/system.ts";
// Checks if the URL contains a protocol, if so keeps it, otherwise assumes an attachment
function patchUrl(url: string): string {

View File

@ -1,13 +1,11 @@
import type { IndexEvent, IndexTreeEvent } from "@silverbulletmd/web/app_event";
import type { IndexEvent, IndexTreeEvent } from "../../web/app_event.ts";
import {
batchSet,
clearPageIndex as clearPageIndexSyscall,
clearPageIndexForPage,
queryPrefix,
set,
} from "@silverbulletmd/plugos-silverbullet-syscall/index";
import { set as storeSet } from "@plugos/plugos-syscall/store";
} from "../../plugos-silverbullet-syscall/index.ts";
import {
flashNotification,
@ -17,26 +15,26 @@ import {
matchBefore,
navigate,
prompt,
} from "@silverbulletmd/plugos-silverbullet-syscall/editor";
} from "../../plugos-silverbullet-syscall/editor.ts";
import { dispatch } from "@plugos/plugos-syscall/event";
import { dispatch } from "../../plugos-syscall/event.ts";
import {
deletePage as deletePageSyscall,
listPages,
readPage,
writePage,
} from "@silverbulletmd/plugos-silverbullet-syscall/space";
import { invokeFunction } from "@silverbulletmd/plugos-silverbullet-syscall/system";
import { parseMarkdown } from "@silverbulletmd/plugos-silverbullet-syscall/markdown";
} from "../../plugos-silverbullet-syscall/space.ts";
import { invokeFunction } from "../../plugos-silverbullet-syscall/system.ts";
import { parseMarkdown } from "../../plugos-silverbullet-syscall/markdown.ts";
import {
addParentPointers,
collectNodesMatching,
ParseTree,
renderToText,
replaceNodesMatching,
} from "@silverbulletmd/common/tree";
import { applyQuery, QueryProviderEvent } from "../query/engine";
import { extractMeta } from "../query/data";
} from "../../common/tree.ts";
import { applyQuery, QueryProviderEvent } from "../query/engine.ts";
import { extractMeta } from "../query/data.ts";
// Key space:
// pl:toPage:pos => pageName

View File

@ -1,20 +1,20 @@
import { dispatch } from "@plugos/plugos-syscall/event";
import { Manifest } from "@silverbulletmd/common/manifest";
import { dispatch } from "../../plugos-syscall/event.ts";
import { Manifest } from "../../common/manifest.ts";
import {
flashNotification,
save,
} from "@silverbulletmd/plugos-silverbullet-syscall/editor";
} from "../../plugos-silverbullet-syscall/editor.ts";
import {
deleteAttachment,
listPlugs,
writeAttachment,
} from "@silverbulletmd/plugos-silverbullet-syscall/space";
} from "../../plugos-silverbullet-syscall/space.ts";
import {
invokeFunction,
reloadPlugs,
} from "@silverbulletmd/plugos-silverbullet-syscall/system";
} from "../../plugos-silverbullet-syscall/system.ts";
import { readYamlPage } from "../lib/yaml_page";
import { readYamlPage } from "../lib/yaml_page.ts";
export async function updatePlugsCommand() {
await save();

View File

@ -2,17 +2,14 @@ import {
fullTextDelete,
fullTextIndex,
fullTextSearch,
} from "@plugos/plugos-syscall/fulltext";
import { renderToText } from "@silverbulletmd/common/tree";
import { PageMeta } from "@silverbulletmd/common/types";
import { queryPrefix } from "@silverbulletmd/plugos-silverbullet-syscall";
import {
navigate,
prompt,
} from "@silverbulletmd/plugos-silverbullet-syscall/editor";
import { IndexTreeEvent } from "@silverbulletmd/web/app_event";
import { applyQuery, QueryProviderEvent } from "../query/engine";
import { removeQueries } from "../query/util";
} from "../../plugos-syscall/fulltext.ts";
import { renderToText } from "../../common/tree.ts";
import { PageMeta } from "../../common/types.ts";
import { queryPrefix } from "../../plugos-silverbullet-syscall/index.ts";
import { navigate, prompt } from "../../plugos-silverbullet-syscall/editor.ts";
import { IndexTreeEvent } from "../../web/app_event.ts";
import { applyQuery, QueryProviderEvent } from "../query/engine.ts";
import { removeQueries } from "../query/util.ts";
const searchPrefix = "🔍 ";

View File

@ -1,8 +1,8 @@
import {
flashNotification,
getText,
} from "@silverbulletmd/plugos-silverbullet-syscall/editor";
import { listPages } from "@silverbulletmd/plugos-silverbullet-syscall/space";
} from "../../plugos-silverbullet-syscall/editor.ts";
import { listPages } from "../../plugos-silverbullet-syscall/space.ts";
function countWords(str: string): number {
const matches = str.match(/[\w\d\'-]+/gi);

View File

@ -1,12 +1,12 @@
import { collectNodesOfType } from "@silverbulletmd/common/tree";
import { collectNodesOfType } from "../../common/tree.ts";
import {
batchSet,
queryPrefix,
} from "@silverbulletmd/plugos-silverbullet-syscall";
import { matchBefore } from "@silverbulletmd/plugos-silverbullet-syscall/editor";
import type { IndexTreeEvent } from "@silverbulletmd/web/app_event";
import { applyQuery, QueryProviderEvent } from "../query/engine";
import { removeQueries } from "../query/util";
} from "../../plugos-silverbullet-syscall/index.ts";
import { matchBefore } from "../../plugos-silverbullet-syscall/editor.ts";
import type { IndexTreeEvent } from "../../web/app_event.ts";
import { applyQuery, QueryProviderEvent } from "../query/engine.ts";
import { removeQueries } from "../query/util.ts";
// Key space
// tag:TAG => true (for completion)

View File

@ -3,7 +3,7 @@ import {
readPage,
writePage,
getPageMeta,
} from "@silverbulletmd/plugos-silverbullet-syscall/space";
} from "../../plugos-silverbullet-syscall/space.ts";
import {
filterBox,
getCurrentPage,
@ -12,12 +12,12 @@ import {
moveCursor,
navigate,
prompt,
} from "@silverbulletmd/plugos-silverbullet-syscall/editor";
import { parseMarkdown } from "@silverbulletmd/plugos-silverbullet-syscall/markdown";
import { extractMeta } from "../query/data";
import { renderToText } from "@silverbulletmd/common/tree";
import { niceDate } from "./dates";
import { readSettings } from "../lib/settings_page";
} from "../../plugos-silverbullet-syscall/editor.ts";
import { parseMarkdown } from "../../plugos-silverbullet-syscall/markdown.ts";
import { extractMeta } from "../query/data.ts";
import { renderToText } from "../../common/tree.ts";
import { niceDate } from "./dates.ts";
import { readSettings } from "../lib/settings_page.ts";
export async function instantiateTemplateCommand() {
let allPages = await listPages();

View File

@ -5,7 +5,7 @@ import {
moveCursor,
replaceRange,
setSelection,
} from "@silverbulletmd/plugos-silverbullet-syscall/editor";
} from "../../plugos-silverbullet-syscall/editor.ts";
export async function quoteSelection() {
let text = await getText();
@ -71,7 +71,7 @@ export async function linkSelection() {
pos = linkedText.length - 1;
}
}
await replaceRange(selection.from, selection.to, linkedText)
await replaceRange(selection.from, selection.to, linkedText);
await moveCursor(selection.from + pos);
}

View File

@ -1,5 +1,5 @@
name: global
dependencies:
yaml: "yaml@2"
handlebars: "handlebars@4.7.7:/dist/handlebars"
"@lezer/lr": "@lezer/lr@1.0.0"
"https://esm.sh/handlebars": "https://esm.sh/handlebars"
"https://deno.land/std/encoding/yaml.ts": "https://deno.land/std/encoding/yaml.ts"
"https://esm.sh/@lezer/lr": "https://esm.sh/@lezer/lr"

View File

@ -1,7 +1,8 @@
import { readYamlPage } from "./yaml_page";
import { notifyUser } from "./util";
import YAML from "yaml";
import { writePage } from "@silverbulletmd/plugos-silverbullet-syscall/space";
import { readYamlPage } from "./yaml_page.ts";
import { notifyUser } from "./util.ts";
import * as YAML from "https://deno.land/std@0.158.0/encoding/yaml.ts";
import { writePage } from "../../plugos-silverbullet-syscall/space.ts";
/**
* Convenience function to read a specific set of settings from the `SETTINGS` page as well as default values

View File

@ -1,4 +1,4 @@
import { flashNotification } from "@silverbulletmd/plugos-silverbullet-syscall/editor";
import { flashNotification } from "../../plugos-silverbullet-syscall/editor.ts";
export async function replaceAsync(
str: string,
@ -16,7 +16,9 @@ export async function replaceAsync(
}
export function isServer() {
return typeof window === 'undefined' || typeof window.document === "undefined"; // if something defines window the same way as the browser, this will fail.
return (
typeof window === "undefined" || typeof window.document === "undefined"
); // if something defines window the same way as the browser, this will fail.
}
// this helps keep if's condition as positive
@ -24,7 +26,7 @@ export function isBrowser() {
return !isServer();
}
export async function notifyUser(message: string, type?: "info"|"error") {
export async function notifyUser(message: string, type?: "info" | "error") {
if (isBrowser()) {
return flashNotification(message, type);
}

View File

@ -1,10 +1,10 @@
import { findNodeOfType, traverseTree } from "@silverbulletmd/common/tree";
import { parseMarkdown } from "@silverbulletmd/plugos-silverbullet-syscall/markdown";
import { findNodeOfType, traverseTree } from "../../common/tree.ts";
import { parseMarkdown } from "../../plugos-silverbullet-syscall/markdown.ts";
import {
readPage,
writePage,
} from "@silverbulletmd/plugos-silverbullet-syscall/space";
import YAML from "yaml";
} from "../../plugos-silverbullet-syscall/space.ts";
import * as YAML from "https://deno.land/std@0.158.0/encoding/yaml.ts";
export async function readYamlPage(
pageName: string,

View File

@ -1,26 +1,21 @@
// Index key space:
// data:page@pos
import type { IndexTreeEvent } from "@silverbulletmd/web/app_event";
import type { IndexTreeEvent } from "../../web/app_event.ts";
import {
batchSet,
queryPrefix,
} from "@silverbulletmd/plugos-silverbullet-syscall";
} from "../../plugos-silverbullet-syscall/index.ts";
import {
addParentPointers,
collectNodesOfType,
findNodeOfType,
ParseTree,
replaceNodesMatching,
} from "@silverbulletmd/common/tree";
import {
parse as parseYaml,
stringify as stringifyYaml,
parseAllDocuments,
} from "yaml";
import type { QueryProviderEvent } from "./engine";
import { applyQuery } from "./engine";
import { removeQueries } from "./util";
} from "../../common/tree.ts";
import type { QueryProviderEvent } from "./engine.ts";
import { applyQuery } from "./engine.ts";
import { removeQueries } from "./util.ts";
export async function indexData({ name, tree }: IndexTreeEvent) {
let dataObjects: { key: string; value: Object }[] = [];

View File

@ -1,10 +1,11 @@
import { collectNodesOfType, ParseTree } from "@silverbulletmd/common/tree";
import Handlebars from "handlebars";
import YAML from "yaml";
import { collectNodesOfType, ParseTree } from "../../common/tree.ts";
// import Handlebars from "handlebars";
import Handlebars from "https://esm.sh/handlebars";
import * as YAML from "https://deno.land/std@0.158.0/encoding/yaml.ts";
import { readPage } from "@silverbulletmd/plugos-silverbullet-syscall/space";
import { niceDate } from "../core/dates";
import { ParsedQuery } from "./parser";
import { readPage } from "../../plugos-silverbullet-syscall/space.ts";
import { niceDate } from "../core/dates.ts";
import { ParsedQuery } from "./parser.ts";
export type QueryProviderEvent = {
query: ParsedQuery;

View File

@ -3,7 +3,7 @@ import {
reloadPage,
save,
} from "@silverbulletmd/plugos-silverbullet-syscall/editor";
import Handlebars from "handlebars";
import Handlebars from "https://esm.sh/handlebars";
import {
readPage,

View File

@ -3,7 +3,7 @@ import {
collectNodesMatching,
ParseTree,
renderToText,
} from "@silverbulletmd/common/tree";
} from "../../common/tree.ts";
export const queryRegex =
/(<!--\s*#query\s+(.+?)-->)(.+?)(<!--\s*\/query\s*-->)/gs;