diff --git a/plugbox/src/bundle.ts b/plugbox/bin/plugbox-bundle.mjs old mode 100644 new mode 100755 similarity index 75% rename from plugbox/src/bundle.ts rename to plugbox/bin/plugbox-bundle.mjs index 8cab4fef..880d18e2 --- a/plugbox/src/bundle.ts +++ b/plugbox/bin/plugbox-bundle.mjs @@ -1,12 +1,13 @@ +#!/usr/bin/env node + import esbuild from "esbuild"; import { readFile, unlink, writeFile } from "fs/promises"; import path from "path"; import yargs from "yargs"; import { hideBin } from "yargs/helpers"; -import { Manifest } from "../../webapp/src/plugins/types"; -async function compile(filePath: string, sourceMap: boolean) { +async function compile(filePath, sourceMap) { let tempFile = "out.js"; let js = await esbuild.build({ entryPoints: [filePath], @@ -25,11 +26,9 @@ async function compile(filePath: string, sourceMap: boolean) { return jsCode; } -async function bundle(manifestPath: string, sourceMaps: boolean) { +async function bundle(manifestPath, sourceMaps) { const rootPath = path.dirname(manifestPath); - const manifest = JSON.parse( - (await readFile(manifestPath)).toString() - ) as Manifest; + const manifest = JSON.parse((await readFile(manifestPath)).toString()); for (let [name, def] of Object.entries(manifest.functions)) { let jsFunctionName = def.functionName, @@ -53,8 +52,8 @@ async function run() { }) .parse(); - let generatedManifest = await bundle(args._[0] as string, !!args.debug); - writeFile(args._[1] as string, JSON.stringify(generatedManifest, null, 2)); + let generatedManifest = await bundle(args._[0], !!args.debug); + writeFile(args._[1], JSON.stringify(generatedManifest, null, 2)); } run().catch((e) => { diff --git a/plugbox/package.json b/plugbox/package.json index 5708d867..66f2c025 100644 --- a/plugbox/package.json +++ b/plugbox/package.json @@ -2,10 +2,11 @@ "name": "plugbox", "version": "1.0.0", "type": "module", - "source": "src/bundle.ts", - "main": "dist/bundle.js", + "license": "MIT", + "bin": { + "plugbox-bundle": "./bin/plugbox-bundle.mjs" + }, "scripts": { - "build": "parcel build", "check": "tsc --noEmit" }, "dependencies": { @@ -17,7 +18,6 @@ }, "devDependencies": { "@types/node": "^17.0.21", - "@types/yargs": "^17.0.9", - "parcel": "^2.3.2" + "@types/yargs": "^17.0.9" } } diff --git a/plugbox/src/runtime.ts b/plugbox/src/runtime.ts index b54c63fa..5148d3d7 100644 --- a/plugbox/src/runtime.ts +++ b/plugbox/src/runtime.ts @@ -11,9 +11,9 @@ export class FunctionWorker { private initCallback: any; private invokeResolve?: (result?: any) => void; private invokeReject?: (reason?: any) => void; - private plugin: Plugin; + private plugin: Plugin; - constructor(plugin: Plugin, pathPrefix: string, name: string) { + constructor(plugin: Plugin, pathPrefix: string, name: string) { let worker = window.Worker; this.worker = new worker("/function_worker.js"); @@ -76,25 +76,25 @@ export class FunctionWorker { } } -export interface PluginLoader { - load(name: string, manifest: Manifest): Promise; +export interface PluginLoader { + load(name: string, manifest: Manifest): Promise; } -export class Plugin { +export class Plugin { pathPrefix: string; - system: System; + system: System; private runningFunctions: Map; - public manifest?: Manifest; + public manifest?: Manifest; private name: string; - constructor(system: System, pathPrefix: string, name: string) { + constructor(system: System, pathPrefix: string, name: string) { this.name = name; this.pathPrefix = `${pathPrefix}/${name}`; this.system = system; this.runningFunctions = new Map(); } - async load(manifest: Manifest) { + async load(manifest: Manifest) { this.manifest = manifest; await this.system.pluginLoader.load(this.name, manifest); await this.dispatchEvent("load"); @@ -111,7 +111,7 @@ export class Plugin { } async dispatchEvent(name: string, data?: any): Promise { - let functionsToSpawn = this.manifest!.events[name]; + let functionsToSpawn = this.manifest!.hooks.events[name]; if (functionsToSpawn) { return await Promise.all( functionsToSpawn.map( @@ -135,16 +135,16 @@ export class Plugin { } } -export class System { - protected plugins: Map; +export class System { + protected plugins: Map>; protected pathPrefix: string; registeredSyscalls: SysCallMapping; - pluginLoader: PluginLoader; + pluginLoader: PluginLoader; - constructor(PluginLoader: PluginLoader, pathPrefix: string) { + constructor(PluginLoader: PluginLoader, pathPrefix: string) { this.pluginLoader = PluginLoader; this.pathPrefix = pathPrefix; - this.plugins = new Map(); + this.plugins = new Map>(); this.registeredSyscalls = {}; } @@ -167,7 +167,7 @@ export class System { return Promise.resolve(callback(...args)); } - async load(name: string, manifest: Manifest): Promise { + async load(name: string, manifest: Manifest): Promise> { const plugin = new Plugin(this, this.pathPrefix, name); await plugin.load(manifest); this.plugins.set(name, plugin); diff --git a/plugbox/src/types.ts b/plugbox/src/types.ts index 1131204c..8a4afdca 100644 --- a/plugbox/src/types.ts +++ b/plugbox/src/types.ts @@ -1,28 +1,14 @@ -export interface Manifest { +export type EventHook = { events: { [key: string]: string[] }; - commands: { - [key: string]: CommandDef; - }; +}; + +export interface Manifest { + hooks: HookT & EventHook; functions: { [key: string]: FunctionDef; }; } -export const slashCommandRegexp = /\/[\w\-]*/; - -export interface CommandDef { - // Function name to invoke - invoke: string; - - // Bind to keyboard shortcut - key?: string; - mac?: string; - - // If to show in slash invoked menu and if so, with what label - // should match slashCommandRegexp - slashCommand?: string; -} - export interface FunctionDef { path: string; functionName?: string; diff --git a/plugbox/src/util.ts b/plugbox/src/util.ts index de823705..955b267c 100644 --- a/plugbox/src/util.ts +++ b/plugbox/src/util.ts @@ -1,13 +1,3 @@ -export function countWords(str: string): number { - var matches = str.match(/[\w\d\'\'-]+/gi); - return matches ? matches.length : 0; -} - -export function readingTime(wordCount: number): number { - // 225 is average word reading speed for adults - return Math.ceil(wordCount / 225); -} - export function safeRun(fn: () => Promise) { fn().catch((e) => { console.error(e); @@ -21,7 +11,3 @@ export function sleep(ms: number): Promise { }, ms); }); } - -export function isMacLike() { - return /(Mac|iPhone|iPod|iPad)/i.test(navigator.platform); -} diff --git a/plugs/Makefile b/plugs/Makefile index b47c979a..39155b27 100644 --- a/plugs/Makefile +++ b/plugs/Makefile @@ -1,4 +1,4 @@ -BUILD=node ../plugbox/dist/bundle.js +BUILD=../plugbox/bin/plugbox-bundle.mjs core: * ${BUILD} --debug core/core.plug.json ../webapp/src/generated/core.plug.json diff --git a/plugs/core/core.plug.json b/plugs/core/core.plug.json index 9d1fdff5..29f87bc1 100644 --- a/plugs/core/core.plug.json +++ b/plugs/core/core.plug.json @@ -1,42 +1,44 @@ { - "commands": { - "Navigate To page": { - "invoke": "linkNavigate", - "key": "Ctrl-Enter", - "mac": "Cmd-Enter" + "hooks": { + "commands": { + "Navigate To page": { + "invoke": "linkNavigate", + "key": "Ctrl-Enter", + "mac": "Cmd-Enter" + }, + "Insert Current Date": { + "invoke": "insertToday", + "slashCommand": "today" + }, + "Toggle : Heading 1": { + "invoke": "toggle_h1", + "mac": "Cmd-1", + "key": "Ctrl-1" + }, + "Toggle : Heading 2": { + "invoke": "toggle_h2", + "mac": "Cmd-2", + "key": "Ctrl-2" + }, + "Page: Delete": { + "invoke": "deletePage" + }, + "Page: Rename": { + "invoke": "renamePage" + }, + "Pages: Reindex": { + "invoke": "reindexPages" + }, + "Pages: Back Links": { + "invoke": "showBackLinks" + } }, - "Insert Current Date": { - "invoke": "insertToday", - "slashCommand": "/today" - }, - "Toggle : Heading 1": { - "invoke": "toggle_h1", - "mac": "Cmd-1", - "key": "Ctrl-1" - }, - "Toggle : Heading 2": { - "invoke": "toggle_h2", - "mac": "Cmd-2", - "key": "Ctrl-2" - }, - "Page: Delete": { - "invoke": "deletePage" - }, - "Page: Rename": { - "invoke": "renamePage" - }, - "Pages: Reindex": { - "invoke": "reindexPages" - }, - "Pages: Back Links": { - "invoke": "showBackLinks" + "events": { + "page:click": ["taskToggle", "clickNavigate"], + "editor:complete": ["pageComplete"], + "page:index": ["indexLinks"] } }, - "events": { - "page:click": ["taskToggle", "clickNavigate"], - "editor:complete": ["pageComplete"], - "page:index": ["indexLinks"] - }, "functions": { "indexLinks": { "path": "./page.ts:indexLinks" diff --git a/plugs/core/dates.ts b/plugs/core/dates.ts index 74e173ac..e653901b 100644 --- a/plugs/core/dates.ts +++ b/plugs/core/dates.ts @@ -1,6 +1,7 @@ import { syscall } from "./lib/syscall"; export async function insertToday() { + console.log("Inserting date"); let niceDate = new Date().toISOString().split("T")[0]; await syscall("editor.insertAtCursor", niceDate); } diff --git a/webapp/package.json b/webapp/package.json index 63714b52..f7ee3b34 100644 --- a/webapp/package.json +++ b/webapp/package.json @@ -17,6 +17,7 @@ "@parcel/transformer-sass": "2.3.2", "@parcel/transformer-webmanifest": "2.3.2", "@parcel/validator-typescript": "^2.3.2", + "@types/node": "^17.0.21", "@types/react": "^17.0.39", "@types/react-dom": "^17.0.11", "assert": "^2.0.0", diff --git a/webapp/src/editor.tsx b/webapp/src/editor.tsx index 16f60e84..390d3bf3 100644 --- a/webapp/src/editor.tsx +++ b/webapp/src/editor.tsx @@ -23,6 +23,7 @@ import { import React, { useEffect, useReducer } from "react"; import ReactDOM from "react-dom"; import coreManifest from "./generated/core.plug.json"; + // @ts-ignore window.coreManifest = coreManifest; import { AppEvent, AppEventDispatcher, ClickEvent } from "./app_event"; @@ -38,7 +39,7 @@ import { IPageNavigator, PathPageNavigator } from "./navigator"; import customMarkDown from "./parser"; import { BrowserSystem } from "./plugbox_browser/browser_system"; import { Plugin } from "../../plugbox/src/runtime"; -import { slashCommandRegexp } from "../../plugbox/src/types"; +import { slashCommandRegexp } from "./types"; import reducer from "./reducer"; import { smartQuoteKeymap } from "./smart_quotes"; @@ -53,6 +54,7 @@ import { AppCommand, AppViewState, initialViewState, + NuggetHook, PageMeta, } from "./types"; import { safeRun } from "./util"; @@ -78,7 +80,7 @@ export class Editor implements AppEventDispatcher { openPages: Map; space: Space; editorCommands: Map; - plugins: Plugin[]; + plugins: Plugin[]; indexer: Indexer; navigationResolve?: (val: undefined) => void; pageNavigator: IPageNavigator; @@ -122,7 +124,7 @@ export class Editor implements AppEventDispatcher { } async loadPlugins() { - const system = new BrowserSystem("/plugin"); + const system = new BrowserSystem("/plugin"); system.registerSyscalls( dbSyscalls, editorSyscalls(this), @@ -144,8 +146,8 @@ export class Editor implements AppEventDispatcher { }); } - private buildCommands(plugin: Plugin) { - const cmds = plugin.manifest!.commands; + private buildCommands(plugin: Plugin) { + const cmds = plugin.manifest!.hooks.commands; for (let name in cmds) { let cmd = cmds[name]; this.editorCommands.set(name, { diff --git a/webapp/src/plugbox_browser/browser_system.ts b/webapp/src/plugbox_browser/browser_system.ts index d776d958..38067be2 100644 --- a/webapp/src/plugbox_browser/browser_system.ts +++ b/webapp/src/plugbox_browser/browser_system.ts @@ -2,14 +2,14 @@ import { PluginLoader, System } from "../../../plugbox/src/runtime"; import { Manifest } from "../../../plugbox/src/types"; import { sleep } from "../util"; -export class BrowserLoader implements PluginLoader { +export class BrowserLoader implements PluginLoader { readonly pathPrefix: string; constructor(pathPrefix: string) { this.pathPrefix = pathPrefix; } - async load(name: string, manifest: Manifest): Promise { + async load(name: string, manifest: Manifest): Promise { await fetch(`${this.pathPrefix}/${name}`, { method: "PUT", body: JSON.stringify(manifest), @@ -17,7 +17,7 @@ export class BrowserLoader implements PluginLoader { } } -export class BrowserSystem extends System { +export class BrowserSystem extends System { constructor(pathPrefix: string) { super(new BrowserLoader(pathPrefix), pathPrefix); } diff --git a/webapp/src/plugbox_sw.ts b/webapp/src/plugbox_sw.ts index 3d7e327a..0257aaeb 100644 --- a/webapp/src/plugbox_sw.ts +++ b/webapp/src/plugbox_sw.ts @@ -1,4 +1,4 @@ -import { Manifest } from "../../plugbox/src/types"; +import { Manifest } from "./types"; import { openDB } from "idb"; diff --git a/webapp/src/types.ts b/webapp/src/types.ts index e8abe48b..c0449245 100644 --- a/webapp/src/types.ts +++ b/webapp/src/types.ts @@ -1,4 +1,12 @@ -import { CommandDef } from "../../plugbox/src/types"; +import * as plugbox from "../../plugbox/src/types"; + +export type NuggetHook = { + commands: { + [key: string]: CommandDef; + }; +}; + +export type Manifest = plugbox.Manifest; export type PageMeta = { name: string; @@ -12,6 +20,21 @@ export type AppCommand = { run: (arg: any) => Promise; }; +export const slashCommandRegexp = /\/[\w\-]*/; + +export interface CommandDef { + // Function name to invoke + invoke: string; + + // Bind to keyboard shortcut + key?: string; + mac?: string; + + // If to show in slash invoked menu and if so, with what label + // should match slashCommandRegexp + slashCommand?: string; +} + export type AppViewState = { currentPage?: PageMeta; isSaved: boolean; diff --git a/webapp/yarn.lock b/webapp/yarn.lock index 8f0da7c1..3d119578 100644 --- a/webapp/yarn.lock +++ b/webapp/yarn.lock @@ -957,6 +957,11 @@ resolved "https://registry.yarnpkg.com/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad" integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA== +"@types/node@^17.0.21": + version "17.0.21" + resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.21.tgz#864b987c0c68d07b4345845c3e63b75edd143644" + integrity sha512-DBZCJbhII3r90XbQxI8Y9IjjiiOGlZ0Hr32omXIZvwwZ7p4DMMXGrKXVyPfuoBOri9XNtL0UK69jYIBIsRX3QQ== + "@types/parse-json@^4.0.0": version "4.0.0" resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" @@ -993,21 +998,6 @@ abortcontroller-polyfill@^1.1.9: resolved "https://registry.yarnpkg.com/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.3.tgz#1b5b487bd6436b5b764fd52a612509702c3144b5" integrity sha512-zetDJxd89y3X99Kvo4qFx8GKlt6GsvN3UcRZHwU6iFA/0KiOmhkTVhe8oRoTBiTVPZu09x3vCra47+w8Yz1+2Q== -acorn-walk@^8.2.0: - version "8.2.0" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" - integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== - -acorn@^8.7.0: - version "8.7.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.0.tgz#90951fde0f8f09df93549481e5fc141445b791cf" - integrity sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ== - -ansi-regex@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" - integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== - ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" @@ -1015,7 +1005,7 @@ ansi-styles@^3.2.1: dependencies: color-convert "^1.9.0" -ansi-styles@^4.0.0, ansi-styles@^4.1.0: +ansi-styles@^4.1.0: version "4.3.0" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== @@ -1255,15 +1245,6 @@ cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: inherits "^2.0.1" safe-buffer "^5.0.1" -cliui@^7.0.2: - version "7.0.4" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" - integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.0" - wrap-ansi "^7.0.0" - clone@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" @@ -1561,11 +1542,6 @@ elliptic@^6.5.3: minimalistic-assert "^1.0.1" minimalistic-crypto-utils "^1.0.1" -emoji-regex@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" - integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== - entities@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" @@ -1623,132 +1599,6 @@ es6-object-assign@^1.1.0: resolved "https://registry.yarnpkg.com/es6-object-assign/-/es6-object-assign-1.1.0.tgz#c2c3582656247c39ea107cb1e6652b6f9f24523c" integrity sha1-wsNYJlYkfDnqEHyx5mUrb58kUjw= -esbuild-android-64@0.14.25: - version "0.14.25" - resolved "https://registry.yarnpkg.com/esbuild-android-64/-/esbuild-android-64-0.14.25.tgz#d532d38cb5fe0ae45167ce35f4bbc784c636be40" - integrity sha512-L5vCUk7TzFbBnoESNoXjU3x9+/+7TDIE/1mTfy/erAfvZAqC+S3sp/Qa9wkypFMcFvN9FzvESkTlpeQDolREtQ== - -esbuild-android-arm64@0.14.25: - version "0.14.25" - resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.14.25.tgz#9c5bb3366aabfd14a1c726d36978b79441dfcb6e" - integrity sha512-4jv5xPjM/qNm27T5j3ZEck0PvjgQtoMHnz4FzwF5zNP56PvY2CT0WStcAIl6jNlsuDdN63rk2HRBIsO6xFbcFw== - -esbuild-darwin-64@0.14.25: - version "0.14.25" - resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.14.25.tgz#05dcdb6d884f427039ffee5e92ff97527e56c26d" - integrity sha512-TGp8tuudIxOyWd1+8aYPxQmC1ZQyvij/AfNBa35RubixD0zJ1vkKHVAzo0Zao1zcG6pNqiSyzfPto8vmg0s7oA== - -esbuild-darwin-arm64@0.14.25: - version "0.14.25" - resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.25.tgz#28e080da4ea0cfe9498071e7f8060498caee1a95" - integrity sha512-oTcDgdm0MDVEmw2DWu8BV68pYuImpFgvWREPErBZmNA4MYKGuBRaCiJqq6jZmBR1x+3y1DWCjez+5uLtuAm6mw== - -esbuild-freebsd-64@0.14.25: - version "0.14.25" - resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.25.tgz#200d3664a3b945bc9fdcba73614b49a11ebd1cfa" - integrity sha512-ueAqbnMZ8arnuLH8tHwTCQYeptnHOUV7vA6px6j4zjjQwDx7TdP7kACPf3TLZLdJQ3CAD1XCvQ2sPhX+8tacvQ== - -esbuild-freebsd-arm64@0.14.25: - version "0.14.25" - resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.25.tgz#624b08c5da6013bdc312aaa23c4ff409580f5c3c" - integrity sha512-+ZVWud2HKh+Ob6k/qiJWjBtUg4KmJGGmbvEXXW1SNKS7hW7HU+Zq2ZCcE1akFxOPkVB+EhOty/sSek30tkCYug== - -esbuild-linux-32@0.14.25: - version "0.14.25" - resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.14.25.tgz#0238e597eb0b60aa06c7e98fccbbfd6bb9a0d6c5" - integrity sha512-3OP/lwV3kCzEz45tobH9nj+uE4ubhGsfx+tn0L26WAGtUbmmcRpqy7XRG/qK7h1mClZ+eguIANcQntYMdYklfw== - -esbuild-linux-64@0.14.25: - version "0.14.25" - resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.14.25.tgz#8a8b8cf47dfce127c858e71229d9a385a82c62e8" - integrity sha512-+aKHdHZmX9qwVlQmu5xYXh7GsBFf4TWrePgeJTalhXHOG7NNuUwoHmketGiZEoNsWyyqwH9rE5BC+iwcLY30Ug== - -esbuild-linux-arm64@0.14.25: - version "0.14.25" - resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.25.tgz#7ac94371418a2640ba413bc1700aaedeb2794e52" - integrity sha512-UxfenPx/wSZx55gScCImPtXekvZQLI2GW3qe5dtlmU7luiqhp5GWPzGeQEbD3yN3xg/pHc671m5bma5Ns7lBHw== - -esbuild-linux-arm@0.14.25: - version "0.14.25" - resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.14.25.tgz#034bd18e9310b9f010c89f90ef7f05706689600b" - integrity sha512-aTLcE2VBoLydL943REcAcgnDi3bHtmULSXWLbjtBdtykRatJVSxKMjK9YlBXUZC4/YcNQfH7AxwVeQr9fNxPhw== - -esbuild-linux-mips64le@0.14.25: - version "0.14.25" - resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.25.tgz#05f98a8cf6b578eab6b4e6b0ab094f37530934f4" - integrity sha512-wLWYyqVfYx9Ur6eU5RT92yJVsaBGi5RdkoWqRHOqcJ38Kn60QMlcghsKeWfe9jcYut8LangYZ98xO1LxIoSXrQ== - -esbuild-linux-ppc64le@0.14.25: - version "0.14.25" - resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.25.tgz#46fd0add8d8535678439d7a9c2876ad20042d952" - integrity sha512-0dR6Csl6Zas3g4p9ULckEl8Mo8IInJh33VCJ3eaV1hj9+MHGdmDOakYMN8MZP9/5nl+NU/0ygpd14cWgy8uqRw== - -esbuild-linux-riscv64@0.14.25: - version "0.14.25" - resolved "https://registry.yarnpkg.com/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.25.tgz#ea2e986f0f3e5df73c635135dd778051734fc605" - integrity sha512-J4d20HDmTrgvhR0bdkDhvvJGaikH3LzXQnNaseo8rcw9Yqby9A90gKUmWpfwqLVNRILvNnAmKLfBjCKU9ajg8w== - -esbuild-linux-s390x@0.14.25: - version "0.14.25" - resolved "https://registry.yarnpkg.com/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.25.tgz#efe89486e9a1b1508925048076e3f3a6698aa6a3" - integrity sha512-YI2d5V6nTE73ZnhEKQD7MtsPs1EtUZJ3obS21oxQxGbbRw1G+PtJKjNyur+3t6nzHP9oTg6GHQ3S3hOLLmbDIQ== - -esbuild-netbsd-64@0.14.25: - version "0.14.25" - resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.25.tgz#439fe27d8ee3b5887501ee63988e85f920107db6" - integrity sha512-TKIVgNWLUOkr+Exrye70XTEE1lJjdQXdM4tAXRzfHE9iBA7LXWcNtVIuSnphTqpanPzTDFarF0yqq4kpbC6miA== - -esbuild-openbsd-64@0.14.25: - version "0.14.25" - resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.25.tgz#31ebf616aadf6e60674469f2b92cec92280d9930" - integrity sha512-QgFJ37A15D7NIXBTYEqz29+uw3nNBOIyog+3kFidANn6kjw0GHZ0lEYQn+cwjyzu94WobR+fes7cTl/ZYlHb1A== - -esbuild-sunos-64@0.14.25: - version "0.14.25" - resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.14.25.tgz#815e4f936d74970292a63ccfd5791fe5e3569f5f" - integrity sha512-rmWfjUItYIVlqr5EnTH1+GCxXiBOC42WBZ3w++qh7n2cS9Xo0lO5pGSG2N+huOU2fX5L+6YUuJ78/vOYvefeFw== - -esbuild-windows-32@0.14.25: - version "0.14.25" - resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.14.25.tgz#189e14df2478f2c193c86968ab1fb54e1ceaafd2" - integrity sha512-HGAxVUofl3iUIz9W10Y9XKtD0bNsK9fBXv1D55N/ljNvkrAYcGB8YCm0v7DjlwtyS6ws3dkdQyXadbxkbzaKOA== - -esbuild-windows-64@0.14.25: - version "0.14.25" - resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.14.25.tgz#3d5fbfdc3856850bb47439299e3b60dd18be111f" - integrity sha512-TirEohRkfWU9hXLgoDxzhMQD1g8I2mOqvdQF2RS9E/wbkORTAqJHyh7wqGRCQAwNzdNXdg3JAyhQ9/177AadWA== - -esbuild-windows-arm64@0.14.25: - version "0.14.25" - resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.25.tgz#8b243cbbad8a86cf98697da9ccb88c05df2ef458" - integrity sha512-4ype9ERiI45rSh+R8qUoBtaj6kJvUOI7oVLhKqPEpcF4Pa5PpT3hm/mXAyotJHREkHpM87PAJcA442mLnbtlNA== - -esbuild@^0.14.24: - version "0.14.25" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.14.25.tgz#ddb9d47b91ca76abb7d850ce3dfed0bc3dc88d16" - integrity sha512-4JHEIOMNFvK09ziiL+iVmldIhLbn49V4NAVo888tcGFKedEZY/Y8YapfStJ6zSE23tzYPKxqKwQBnQoIO0BI/Q== - optionalDependencies: - esbuild-android-64 "0.14.25" - esbuild-android-arm64 "0.14.25" - esbuild-darwin-64 "0.14.25" - esbuild-darwin-arm64 "0.14.25" - esbuild-freebsd-64 "0.14.25" - esbuild-freebsd-arm64 "0.14.25" - esbuild-linux-32 "0.14.25" - esbuild-linux-64 "0.14.25" - esbuild-linux-arm "0.14.25" - esbuild-linux-arm64 "0.14.25" - esbuild-linux-mips64le "0.14.25" - esbuild-linux-ppc64le "0.14.25" - esbuild-linux-riscv64 "0.14.25" - esbuild-linux-s390x "0.14.25" - esbuild-netbsd-64 "0.14.25" - esbuild-openbsd-64 "0.14.25" - esbuild-sunos-64 "0.14.25" - esbuild-windows-32 "0.14.25" - esbuild-windows-64 "0.14.25" - esbuild-windows-arm64 "0.14.25" - escalade@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" @@ -1794,11 +1644,6 @@ function-bind@^1.1.1: resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== -get-caller-file@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" - integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== - get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" @@ -2003,11 +1848,6 @@ is-extglob@^2.1.1: resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= -is-fullwidth-code-point@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" - integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== - is-generator-function@^1.0.7: version "1.0.10" resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72" @@ -2378,14 +2218,6 @@ picomatch@^2.0.4, picomatch@^2.2.1: resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== -"plugbox@file:../plugbox": - version "1.0.0" - dependencies: - esbuild "^0.14.24" - typescript ">=3.0.0" - vm2 "^3.9.9" - yargs "^17.3.1" - postcss-calc@^8.2.0: version "8.2.4" resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-8.2.4.tgz#77b9c29bfcbe8a07ff6693dc87050828889739a5" @@ -2725,11 +2557,6 @@ regenerator-runtime@^0.13.7: resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52" integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== -require-directory@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= - resolve-from@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" @@ -2828,15 +2655,6 @@ stream-browserify@^3.0.0: inherits "~2.0.4" readable-stream "^3.5.0" -string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - string.prototype.trimend@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz#e75ae90c2942c63504686c18b287b4a0b1a45f80" @@ -2860,13 +2678,6 @@ string_decoder@^1.1.1: dependencies: safe-buffer "~5.2.0" -strip-ansi@^6.0.0, strip-ansi@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - style-mod@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/style-mod/-/style-mod-4.0.0.tgz#97e7c2d68b592975f2ca7a63d0dd6fcacfe35a01" @@ -2993,14 +2804,6 @@ v8-compile-cache@^2.0.0: resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== -vm2@^3.9.9: - version "3.9.9" - resolved "https://registry.yarnpkg.com/vm2/-/vm2-3.9.9.tgz#c0507bc5fbb99388fad837d228badaaeb499ddc5" - integrity sha512-xwTm7NLh/uOjARRBs8/95H0e8fT3Ukw5D/JJWhxMbhKzNh1Nu981jQKvkep9iKYNxzlVrdzD0mlBGkDKZWprlw== - dependencies: - acorn "^8.7.0" - acorn-walk "^8.2.0" - w3c-keyname@^2.2.4: version "2.2.4" resolved "https://registry.yarnpkg.com/w3c-keyname/-/w3c-keyname-2.2.4.tgz#4ade6916f6290224cdbd1db8ac49eab03d0eef6b" @@ -3034,44 +2837,12 @@ which-typed-array@^1.1.2: has-tostringtag "^1.0.0" is-typed-array "^1.1.7" -wrap-ansi@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - xxhash-wasm@^0.4.2: version "0.4.2" resolved "https://registry.yarnpkg.com/xxhash-wasm/-/xxhash-wasm-0.4.2.tgz#752398c131a4dd407b5132ba62ad372029be6f79" integrity sha512-/eyHVRJQCirEkSZ1agRSCwriMhwlyUcFkXD5TPVSLP+IPzjsqMVzZwdoczLp1SoQU0R3dxz1RpIK+4YNQbCVOA== -y18n@^5.0.5: - version "5.0.8" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" - integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== - yaml@^1.10.0, yaml@^1.10.2: version "1.10.2" resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== - -yargs-parser@^21.0.0: - version "21.0.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.0.1.tgz#0267f286c877a4f0f728fceb6f8a3e4cb95c6e35" - integrity sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg== - -yargs@^17.3.1: - version "17.3.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.3.1.tgz#da56b28f32e2fd45aefb402ed9c26f42be4c07b9" - integrity sha512-WUANQeVgjLbNsEmGk20f+nlHgOqzRFpiGWVaBrYGYIGANIIu3lWjoyi0fNlFmJkvfhCZ6BXINe7/W2O2bV4iaA== - dependencies: - cliui "^7.0.2" - escalade "^3.1.1" - get-caller-file "^2.0.5" - require-directory "^2.1.1" - string-width "^4.2.3" - y18n "^5.0.5" - yargs-parser "^21.0.0"