diff --git a/desktop/main.js b/desktop/main.js deleted file mode 100644 index 8e7b9e52..00000000 --- a/desktop/main.js +++ /dev/null @@ -1,70 +0,0 @@ -const { app, BrowserWindow, protocol } = require("electron"); -const path = require("path"); - -console.log("Got here", process.version); - -const createWindow = () => { - const WEB_FOLDER = "../dist/webapp"; - const PROTOCOL = "file"; - - protocol.interceptFileProtocol(PROTOCOL, (request, callback) => { - // Strip protocol - let url = request.url.substring(PROTOCOL.length + 2); - if (url.endsWith("/")) { - url = url.substring(0, url.length - 1); - } - - console.log("Requested url", url); - - if (!/\.(js|css|png|webmanifest|map)/.exec(url)) { - url = "/index.html"; - } - - if (url.includes("/service_worker.js?")) { - url = "/service_worker.js"; - } - - // if (!url.includes(".")) { - // url = "/index.html"; - // } - - // Build complete path for node require function - url = path.join(__dirname, WEB_FOLDER, url); - - // Replace backslashes by forward slashes (windows) - // url = url.replace(/\\/g, '/'); - url = path.normalize(url); - - // console.log("Requested path", url); - callback({ path: url }); - }); - - // Create the browser window. - let mainWindow = new BrowserWindow({ - width: 800, - height: 600, - webPreferences: { - // nodeIntegration: false, - preload: path.join(__dirname, "preload.js"), - }, - }); - - // and load the index.html of the app. - mainWindow.loadURL("file://start"); - // url.format({ - // pathname: "index.html", - // protocol: PROTOCOL + ":", - // slashes: true, - // }) - // ); -}; -app.on("window-all-closed", () => { - if (process.platform !== "darwin") app.quit(); -}); -app.whenReady().then(() => { - createWindow(); - - app.on("activate", () => { - if (BrowserWindow.getAllWindows().length === 0) createWindow(); - }); -}); diff --git a/desktop/package.json b/desktop/package.json deleted file mode 100644 index 20f0a913..00000000 --- a/desktop/package.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "name": "silverbullet-desktop", - "version": "1.0.0", - "main": "main.js", - "license": "MIT", - "scripts": { - "start": "electron ." - }, - "devDependencies": { - "electron": "^18.0.4" - } -} diff --git a/desktop/preload.js b/desktop/preload.js deleted file mode 100644 index be8a7cf1..00000000 --- a/desktop/preload.js +++ /dev/null @@ -1,5 +0,0 @@ -const { contextBridge } = require("electron"); - -contextBridge.exposeInMainWorld("desktop", { - url: "http://localhost:3000", -}); diff --git a/desktop/src/preload.ts b/desktop/src/preload.ts new file mode 100644 index 00000000..8fd37a89 --- /dev/null +++ b/desktop/src/preload.ts @@ -0,0 +1,3 @@ +const { contextBridge } = require("electron"); + +contextBridge.exposeInMainWorld("desktop", true); diff --git a/desktop/yarn.lock b/desktop/yarn.lock deleted file mode 100644 index 3ad53667..00000000 --- a/desktop/yarn.lock +++ /dev/null @@ -1,601 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@electron/get@^1.13.0": - version "1.14.1" - resolved "https://registry.yarnpkg.com/@electron/get/-/get-1.14.1.tgz#16ba75f02dffb74c23965e72d617adc721d27f40" - integrity sha512-BrZYyL/6m0ZXz/lDxy/nlVhQz+WF+iPS6qXolEU8atw7h6v1aYkjwJZ63m+bJMBTxDE66X+r2tPS4a/8C82sZw== - dependencies: - debug "^4.1.1" - env-paths "^2.2.0" - fs-extra "^8.1.0" - got "^9.6.0" - progress "^2.0.3" - semver "^6.2.0" - sumchecker "^3.0.1" - optionalDependencies: - global-agent "^3.0.0" - global-tunnel-ng "^2.7.1" - -"@sindresorhus/is@^0.14.0": - version "0.14.0" - resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" - integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== - -"@szmarczak/http-timer@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-1.1.2.tgz#b1665e2c461a2cd92f4c1bbf50d5454de0d4b421" - integrity sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA== - dependencies: - defer-to-connect "^1.0.1" - -"@types/node@^16.11.26": - version "16.11.27" - resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.27.tgz#5da19383bdbeda99bc0d09cfbb88cab7297ebc51" - integrity sha512-C1pD3kgLoZ56Uuy5lhfOxie4aZlA3UMGLX9rXteq4WitEZH6Rl80mwactt9QG0w0gLFlN/kLBTFnGXtDVWvWQw== - -boolean@^3.0.1: - version "3.2.0" - resolved "https://registry.yarnpkg.com/boolean/-/boolean-3.2.0.tgz#9e5294af4e98314494cbb17979fa54ca159f116b" - integrity sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw== - -buffer-crc32@~0.2.3: - version "0.2.13" - resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" - integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI= - -buffer-from@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" - integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== - -cacheable-request@^6.0.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-6.1.0.tgz#20ffb8bd162ba4be11e9567d823db651052ca912" - integrity sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg== - dependencies: - clone-response "^1.0.2" - get-stream "^5.1.0" - http-cache-semantics "^4.0.0" - keyv "^3.0.0" - lowercase-keys "^2.0.0" - normalize-url "^4.1.0" - responselike "^1.0.2" - -clone-response@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b" - integrity sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws= - dependencies: - mimic-response "^1.0.0" - -concat-stream@^1.6.2: - version "1.6.2" - resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" - integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== - dependencies: - buffer-from "^1.0.0" - inherits "^2.0.3" - readable-stream "^2.2.2" - typedarray "^0.0.6" - -config-chain@^1.1.11: - version "1.1.13" - resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.13.tgz#fad0795aa6a6cdaff9ed1b68e9dff94372c232f4" - integrity sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ== - dependencies: - ini "^1.3.4" - proto-list "~1.2.1" - -core-util-is@~1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" - integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== - -debug@^2.6.9: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - -debug@^4.1.0, debug@^4.1.1: - version "4.3.4" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" - integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== - dependencies: - ms "2.1.2" - -decompress-response@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" - integrity sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M= - dependencies: - mimic-response "^1.0.0" - -defer-to-connect@^1.0.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591" - integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ== - -define-properties@^1.1.3: - version "1.1.4" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.4.tgz#0b14d7bd7fbeb2f3572c3a7eda80ea5d57fb05b1" - integrity sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA== - dependencies: - has-property-descriptors "^1.0.0" - object-keys "^1.1.1" - -detect-node@^2.0.4: - version "2.1.0" - resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1" - integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== - -duplexer3@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" - integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= - -electron@^18.0.4: - version "18.0.4" - resolved "https://registry.yarnpkg.com/electron/-/electron-18.0.4.tgz#7b9b094db32805d4a7826d9f7a1b376d9d7b9f86" - integrity sha512-xfsozNpFr3WzeM1EFlw2qqiqXbCrgQNBJJMlcC4/DUYVpkF8364SZenX7FFFA42NmwXiOEahkvvho/u7UrAcGg== - dependencies: - "@electron/get" "^1.13.0" - "@types/node" "^16.11.26" - extract-zip "^1.0.3" - -encodeurl@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" - integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= - -end-of-stream@^1.1.0: - version "1.4.4" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" - integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== - dependencies: - once "^1.4.0" - -env-paths@^2.2.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" - integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== - -es6-error@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/es6-error/-/es6-error-4.1.1.tgz#9e3af407459deed47e9a91f9b885a84eb05c561d" - integrity sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg== - -escape-string-regexp@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" - integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== - -extract-zip@^1.0.3: - version "1.7.0" - resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-1.7.0.tgz#556cc3ae9df7f452c493a0cfb51cc30277940927" - integrity sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA== - dependencies: - concat-stream "^1.6.2" - debug "^2.6.9" - mkdirp "^0.5.4" - yauzl "^2.10.0" - -fd-slicer@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e" - integrity sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4= - dependencies: - pend "~1.2.0" - -fs-extra@^8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" - integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== - dependencies: - graceful-fs "^4.2.0" - jsonfile "^4.0.0" - universalify "^0.1.0" - -function-bind@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" - integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== - -get-intrinsic@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" - integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== - dependencies: - function-bind "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.1" - -get-stream@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" - integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== - dependencies: - pump "^3.0.0" - -get-stream@^5.1.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" - integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== - dependencies: - pump "^3.0.0" - -global-agent@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/global-agent/-/global-agent-3.0.0.tgz#ae7cd31bd3583b93c5a16437a1afe27cc33a1ab6" - integrity sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q== - dependencies: - boolean "^3.0.1" - es6-error "^4.1.1" - matcher "^3.0.0" - roarr "^2.15.3" - semver "^7.3.2" - serialize-error "^7.0.1" - -global-tunnel-ng@^2.7.1: - version "2.7.1" - resolved "https://registry.yarnpkg.com/global-tunnel-ng/-/global-tunnel-ng-2.7.1.tgz#d03b5102dfde3a69914f5ee7d86761ca35d57d8f" - integrity sha512-4s+DyciWBV0eK148wqXxcmVAbFVPqtc3sEtUE/GTQfuU80rySLcMhUmHKSHI7/LDj8q0gDYI1lIhRRB7ieRAqg== - dependencies: - encodeurl "^1.0.2" - lodash "^4.17.10" - npm-conf "^1.1.3" - tunnel "^0.0.6" - -globalthis@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.2.tgz#2a235d34f4d8036219f7e34929b5de9e18166b8b" - integrity sha512-ZQnSFO1la8P7auIOQECnm0sSuoMeaSq0EEdXMBFF2QJO4uNcwbyhSgG3MruWNbFTqCLmxVwGOl7LZ9kASvHdeQ== - dependencies: - define-properties "^1.1.3" - -got@^9.6.0: - version "9.6.0" - resolved "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85" - integrity sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q== - dependencies: - "@sindresorhus/is" "^0.14.0" - "@szmarczak/http-timer" "^1.1.2" - cacheable-request "^6.0.0" - decompress-response "^3.3.0" - duplexer3 "^0.1.4" - get-stream "^4.1.0" - lowercase-keys "^1.0.1" - mimic-response "^1.0.1" - p-cancelable "^1.0.0" - to-readable-stream "^1.0.0" - url-parse-lax "^3.0.0" - -graceful-fs@^4.1.6, graceful-fs@^4.2.0: - version "4.2.10" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" - integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== - -has-property-descriptors@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861" - integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== - dependencies: - get-intrinsic "^1.1.1" - -has-symbols@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" - integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== - -has@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" - integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== - dependencies: - function-bind "^1.1.1" - -http-cache-semantics@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390" - integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ== - -inherits@^2.0.3, inherits@~2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -ini@^1.3.4: - version "1.3.8" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" - integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== - -isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= - -json-buffer@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" - integrity sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg= - -json-stringify-safe@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" - integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= - -jsonfile@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" - integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= - optionalDependencies: - graceful-fs "^4.1.6" - -keyv@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9" - integrity sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA== - dependencies: - json-buffer "3.0.0" - -lodash@^4.17.10: - version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== - -lowercase-keys@^1.0.0, lowercase-keys@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" - integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== - -lowercase-keys@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" - integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== - -lru-cache@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" - integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== - dependencies: - yallist "^4.0.0" - -matcher@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/matcher/-/matcher-3.0.0.tgz#bd9060f4c5b70aa8041ccc6f80368760994f30ca" - integrity sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng== - dependencies: - escape-string-regexp "^4.0.0" - -mimic-response@^1.0.0, mimic-response@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" - integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== - -minimist@^1.2.6: - version "1.2.6" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" - integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== - -mkdirp@^0.5.4: - version "0.5.6" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" - integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== - dependencies: - minimist "^1.2.6" - -ms@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= - -ms@2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - -normalize-url@^4.1.0: - version "4.5.1" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.1.tgz#0dd90cf1288ee1d1313b87081c9a5932ee48518a" - integrity sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA== - -npm-conf@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/npm-conf/-/npm-conf-1.1.3.tgz#256cc47bd0e218c259c4e9550bf413bc2192aff9" - integrity sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw== - dependencies: - config-chain "^1.1.11" - pify "^3.0.0" - -object-keys@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" - integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== - -once@^1.3.1, once@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= - dependencies: - wrappy "1" - -p-cancelable@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc" - integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw== - -pend@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" - integrity sha1-elfrVQpng/kRUzH89GY9XI4AelA= - -pify@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" - integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= - -prepend-http@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" - integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc= - -process-nextick-args@~2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" - integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== - -progress@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" - integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== - -proto-list@~1.2.1: - version "1.2.4" - resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" - integrity sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk= - -pump@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" - integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - -readable-stream@^2.2.2: - version "2.3.7" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" - integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~2.0.0" - safe-buffer "~5.1.1" - string_decoder "~1.1.1" - util-deprecate "~1.0.1" - -responselike@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" - integrity sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec= - dependencies: - lowercase-keys "^1.0.0" - -roarr@^2.15.3: - version "2.15.4" - resolved "https://registry.yarnpkg.com/roarr/-/roarr-2.15.4.tgz#f5fe795b7b838ccfe35dc608e0282b9eba2e7afd" - integrity sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A== - dependencies: - boolean "^3.0.1" - detect-node "^2.0.4" - globalthis "^1.0.1" - json-stringify-safe "^5.0.1" - semver-compare "^1.0.0" - sprintf-js "^1.1.2" - -safe-buffer@~5.1.0, safe-buffer@~5.1.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - -semver-compare@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" - integrity sha1-De4hahyUGrN+nvsXiPavxf9VN/w= - -semver@^6.2.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" - integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== - -semver@^7.3.2: - version "7.3.7" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.7.tgz#12c5b649afdbf9049707796e22a4028814ce523f" - integrity sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g== - dependencies: - lru-cache "^6.0.0" - -serialize-error@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/serialize-error/-/serialize-error-7.0.1.tgz#f1360b0447f61ffb483ec4157c737fab7d778e18" - integrity sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw== - dependencies: - type-fest "^0.13.1" - -sprintf-js@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.2.tgz#da1765262bf8c0f571749f2ad6c26300207ae673" - integrity sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug== - -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - -sumchecker@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/sumchecker/-/sumchecker-3.0.1.tgz#6377e996795abb0b6d348e9b3e1dfb24345a8e42" - integrity sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg== - dependencies: - debug "^4.1.0" - -to-readable-stream@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/to-readable-stream/-/to-readable-stream-1.0.0.tgz#ce0aa0c2f3df6adf852efb404a783e77c0475771" - integrity sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q== - -tunnel@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/tunnel/-/tunnel-0.0.6.tgz#72f1314b34a5b192db012324df2cc587ca47f92c" - integrity sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg== - -type-fest@^0.13.1: - version "0.13.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.13.1.tgz#0172cb5bce80b0bd542ea348db50c7e21834d934" - integrity sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg== - -typedarray@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" - integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= - -universalify@^0.1.0: - version "0.1.2" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" - integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== - -url-parse-lax@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c" - integrity sha1-FrXK/Afb42dsGxmZF3gj1lA6yww= - dependencies: - prepend-http "^2.0.0" - -util-deprecate@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= - -yallist@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" - integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== - -yauzl@^2.10.0: - version "2.10.0" - resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" - integrity sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk= - dependencies: - buffer-crc32 "~0.2.3" - fd-slicer "~1.1.0" diff --git a/package-lock.json b/package-lock.json index 4d3c6cfa..281cc970 100644 --- a/package-lock.json +++ b/package-lock.json @@ -24,6 +24,25 @@ "typescript": "^4.6.2" } }, + "desktop": { + "version": "1.0.0", + "extraneous": true, + "license": "MIT", + "dependencies": { + "electron": "^18.0.3", + "electron-squirrel-startup": "^1.0.0", + "express": "^4.17.3" + }, + "devDependencies": { + "@electron-forge/cli": "^6.0.0-beta.63", + "@electron-forge/maker-deb": "^6.0.0-beta.63", + "@electron-forge/maker-rpm": "^6.0.0-beta.63", + "@electron-forge/maker-squirrel": "^6.0.0-beta.63", + "@electron-forge/maker-zip": "^6.0.0-beta.63", + "electron": "18.0.3", + "electron-rebuild": "^3.2.7" + } + }, "node_modules/@ampproject/remapping": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.1.2.tgz", @@ -4442,6 +4461,29 @@ "node": ">= 0.8" } }, + "node_modules/encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "optional": true, + "peer": true, + "dependencies": { + "iconv-lite": "^0.6.2" + } + }, + "node_modules/encoding/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "optional": true, + "peer": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/end-of-stream": { "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", @@ -14607,6 +14649,28 @@ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" }, + "encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "optional": true, + "peer": true, + "requires": { + "iconv-lite": "^0.6.2" + }, + "dependencies": { + "iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "optional": true, + "peer": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + } + } + }, "end-of-stream": { "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", diff --git a/package.json b/package.json index c1a79dc8..f6388230 100644 --- a/package.json +++ b/package.json @@ -7,13 +7,23 @@ "@lezer/common": "https://github.com/zefhemel/common.git#046c880d1fcab713cadad327a5b7d8bb5de6522c" }, "scripts": { - "watch": "rm -rf .parcel-cache && parcel watch packages/{silverbullet-web,silverbullet-server,plugos}", + "watch": "rm -rf .parcel-cache && parcel watch packages/{silverbullet-web,silverbullet-server,plugos} desktop", "clean": "rm -rf .parcel-cache packages/*/dist", "build": "parcel build packages/{silverbullet-web,silverbullet-server,plugos}", "plugs": "cd packages/plugs && npm run watch", "server": "cd packages/silverbullet-server && npm start", "test": "jest packages/*/dist/test" }, + "targets": { + "test": { + "source": [ + "src/index.js" + ], + "outputFormat": "commonjs", + "isLibrary": true, + "context": "electron-main" + } + }, "devDependencies": { "@parcel/core": "2.3.2", "@parcel/packager-raw-url": "2.3.2", diff --git a/packages/plugos-silverbullet-syscall/editor.ts b/packages/plugos-silverbullet-syscall/editor.ts index 99943a2d..4fdb23eb 100644 --- a/packages/plugos-silverbullet-syscall/editor.ts +++ b/packages/plugos-silverbullet-syscall/editor.ts @@ -5,6 +5,10 @@ export function getCurrentPage(): Promise { return syscall("editor.getCurrentPage"); } +export function setPage(newName: string): Promise { + return syscall("editor.setPage", newName); +} + export function getText(): Promise { return syscall("editor.getText"); } diff --git a/packages/plugs/draft/draft.plug.yaml b/packages/plugs/draft/draft.plug.yaml new file mode 100644 index 00000000..6935098b --- /dev/null +++ b/packages/plugs/draft/draft.plug.yaml @@ -0,0 +1,5 @@ +functions: + toggleDraftMode: + path: "./draft.ts:toggleMode" + command: + name: "Draft: Toggle Mode" diff --git a/packages/plugs/draft/draft.ts b/packages/plugs/draft/draft.ts new file mode 100644 index 00000000..44ef6aec --- /dev/null +++ b/packages/plugs/draft/draft.ts @@ -0,0 +1,7 @@ +import * as clientStore from "@silverbulletmd/plugos-silverbullet-syscall/clientStore"; + +export async function toggleMode() { + let currentValue = !!(await clientStore.get("enableDraftMode")); + console.log("New draft mode", !currentValue); + await clientStore.set("enableDraftMode", !currentValue); +} diff --git a/packages/silverbullet-common/spaces/http_space_primitives.ts b/packages/silverbullet-common/spaces/http_space_primitives.ts index eca1531e..bc1c607a 100644 --- a/packages/silverbullet-common/spaces/http_space_primitives.ts +++ b/packages/silverbullet-common/spaces/http_space_primitives.ts @@ -7,6 +7,7 @@ export class HttpSpacePrimitives implements SpacePrimitives { private plugUrl: string; constructor(url: string) { + console.log("UR", url); this.pageUrl = url + "/fs"; this.plugUrl = url + "/plug"; } diff --git a/packages/silverbullet-server/api_server.ts b/packages/silverbullet-server/api_server.ts index eb4a8db1..b61e6d43 100644 --- a/packages/silverbullet-server/api_server.ts +++ b/packages/silverbullet-server/api_server.ts @@ -22,6 +22,7 @@ import { createSandbox } from "@silverbulletmd/plugos/environments/node_sandbox" import { jwtSyscalls } from "@silverbulletmd/plugos/syscalls/jwt"; import buildMarkdown from "@silverbulletmd/web/parser"; import { loadMarkdownExtensions } from "@silverbulletmd/web/markdown_ext"; +import http, { Server } from "http"; export class ExpressServer { app: Express; @@ -31,21 +32,19 @@ export class ExpressServer { private distDir: string; private eventHook: EventHook; private db: Knex; + private port: number; + private server?: Server; - constructor( - app: Express, - rootPath: string, - distDir: string, - system: System - ) { - this.app = app; + constructor(port: number, rootPath: string, distDir: string) { + this.port = port; + this.app = express(); this.rootPath = rootPath; this.distDir = distDir; - this.system = system; + this.system = new System("server"); // Setup system this.eventHook = new EventHook(); - system.addHook(this.eventHook); + this.system.addHook(this.eventHook); this.space = new Space( new EventedSpacePrimitives( new DiskSpacePrimitives(rootPath), @@ -61,15 +60,15 @@ export class ExpressServer { useNullAsDefault: true, }); - system.registerSyscalls(["shell"], shellSyscalls(rootPath)); - system.addHook(new NodeCronHook()); + this.system.registerSyscalls(["shell"], shellSyscalls(rootPath)); + this.system.addHook(new NodeCronHook()); - system.registerSyscalls([], pageIndexSyscalls(this.db)); - system.registerSyscalls([], spaceSyscalls(this.space)); - system.registerSyscalls([], eventSyscalls(this.eventHook)); - system.registerSyscalls([], markdownSyscalls(buildMarkdown([]))); - system.registerSyscalls([], jwtSyscalls()); - system.addHook(new EndpointHook(app, "/_/")); + this.system.registerSyscalls([], pageIndexSyscalls(this.db)); + this.system.registerSyscalls([], spaceSyscalls(this.space)); + this.system.registerSyscalls([], eventSyscalls(this.eventHook)); + this.system.registerSyscalls([], markdownSyscalls(buildMarkdown([]))); + this.system.registerSyscalls([], jwtSyscalls()); + this.system.addHook(new EndpointHook(this.app, "/_/")); let throttledRebuildMdExtensions = throttle(() => { this.rebuildMdExtensions(); @@ -79,14 +78,14 @@ export class ExpressServer { plugLoaded: (plugName, plug) => { safeRun(async () => { console.log("Plug load", plugName); - await system.load(plugName, plug, createSandbox); + await this.system.load(plugName, plug, createSandbox); }); throttledRebuildMdExtensions(); }, plugUnloaded: (plugName) => { safeRun(async () => { console.log("Plug unload", plugName); - await system.unload(plugName); + await this.system.unload(plugName); }); throttledRebuildMdExtensions(); }, @@ -105,10 +104,12 @@ export class ExpressServer { ); } - async init() { + async start() { await ensurePageIndexTable(this.db); console.log("Setting up router"); + this.app.use("/", express.static(this.distDir)); + let fsRouter = express.Router(); // Page list @@ -267,5 +268,29 @@ export class ExpressServer { } res.status(200).header("Content-Type", "text/html").send(cachedIndex); }); + + this.server = http.createServer(this.app); + this.server.listen(this.port, () => { + console.log(`Server listening on port ${this.port}`); + }); + } + + async stop() { + if (this.server) { + console.log("Stopping"); + await this.system.unloadAll(); + console.log("Stopped plugs"); + return new Promise((resolve, reject) => { + this.server!.close((err) => { + this.server = undefined; + console.log("stopped server"); + if (err) { + reject(err); + } else { + resolve(); + } + }); + }); + } } } diff --git a/packages/silverbullet-server/server.ts b/packages/silverbullet-server/server.ts index 6bb7748c..1ef58d3a 100755 --- a/packages/silverbullet-server/server.ts +++ b/packages/silverbullet-server/server.ts @@ -1,12 +1,8 @@ #!/usr/bin/env node -import express from "express"; -import http from "http"; import yargs from "yargs"; import { hideBin } from "yargs/helpers"; -import { SilverBulletHooks } from "@silverbulletmd/common/manifest"; import { ExpressServer } from "./api_server"; -import { System } from "@silverbulletmd/plugos/system"; import path from "path"; let args = yargs(hideBin(process.argv)) @@ -23,23 +19,10 @@ if (!args._.length) { const pagesPath = args._[0] as string; -const app = express(); -const server = http.createServer(app); -const system = new System("server"); - const port = args.port; const distDir = path.resolve(`${__dirname}/../../silverbullet-web/dist`); -app.use("/", express.static(distDir)); - -const expressServer = new ExpressServer(app, pagesPath, distDir, system); -expressServer - .init() - .then(async () => { - server.listen(port, () => { - console.log(`Server listening on port ${port}`); - }); - }) - .catch((e) => { - console.error(e); - }); +const expressServer = new ExpressServer(port, pagesPath, distDir); +expressServer.start().catch((e) => { + console.error(e); +}); diff --git a/packages/silverbullet-web/boot.ts b/packages/silverbullet-web/boot.ts index f9c0601f..e686e81e 100644 --- a/packages/silverbullet-web/boot.ts +++ b/packages/silverbullet-web/boot.ts @@ -9,10 +9,7 @@ import { HttpSpacePrimitives } from "@silverbulletmd/common/spaces/http_space_pr // @ts-ignore let isDesktop = typeof window.desktop !== "undefined"; -// @ts-ignore -let url = isDesktop ? window.desktop.url : ""; - -let serverSpace = new Space(new HttpSpacePrimitives(url), true); +let serverSpace = new Space(new HttpSpacePrimitives(""), true); serverSpace.watch(); // // @ts-ignore @@ -46,6 +43,6 @@ if (!isDesktop) { navigator.serviceWorker .register(new URL("service_worker.ts", import.meta.url), { type: "module" }) .then((r) => { - // console.log("Service worker registered", r); + console.log("Service worker registered", r); }); } diff --git a/packages/silverbullet-web/customtags.ts b/packages/silverbullet-web/customtags.ts index bbe9a020..a43ea781 100644 --- a/packages/silverbullet-web/customtags.ts +++ b/packages/silverbullet-web/customtags.ts @@ -2,8 +2,7 @@ import { Tag } from "@codemirror/highlight"; export const WikiLinkTag = Tag.define(); export const WikiLinkPageTag = Tag.define(); -export const TagTag = Tag.define(); -export const MentionTag = Tag.define(); +export const CodeInfoTag = Tag.define(); export const TaskTag = Tag.define(); export const TaskMarkerTag = Tag.define(); export const CommentTag = Tag.define(); diff --git a/packages/silverbullet-web/navigator.ts b/packages/silverbullet-web/navigator.ts index 02e36eef..7bb07ab5 100644 --- a/packages/silverbullet-web/navigator.ts +++ b/packages/silverbullet-web/navigator.ts @@ -46,13 +46,24 @@ export class PathPageNavigator { cb(); } + decodeURI(): [string, number] { + let parts = decodeURI(location.pathname).substring(1).split("@"); + let page = + parts.length > 1 ? parts.slice(0, parts.length - 1).join("@") : parts[0]; + let pos = parts.length > 1 ? parts[parts.length - 1] : "0"; + if (pos.match(/^\d+$/)) { + return [page, +pos]; + } else { + return [`${page}@${pos}`, 0]; + } + } + getCurrentPage(): string { - let [page] = decodeURI(location.pathname).substring(1).split("@"); - return decodePageUrl(page); + return decodePageUrl(this.decodeURI()[0]); } getCurrentPos(): number { - let [, pos] = decodeURI(location.pathname).substring(1).split("@"); - return +pos || 0; + console.log("Pos", this.decodeURI()[1]); + return this.decodeURI()[1]; } } diff --git a/packages/silverbullet-web/parser.ts b/packages/silverbullet-web/parser.ts index baebccf6..eeeb1302 100644 --- a/packages/silverbullet-web/parser.ts +++ b/packages/silverbullet-web/parser.ts @@ -5,7 +5,7 @@ import * as ct from "./customtags"; import { Language, LanguageDescription, LanguageSupport } from "@codemirror/language"; import { StreamLanguage } from "@codemirror/stream-parser"; import { yaml } from "@codemirror/legacy-modes/mode/yaml"; -import { javascriptLanguage } from "@codemirror/lang-javascript"; +import { javascriptLanguage, typescriptLanguage } from "@codemirror/lang-javascript"; import { MDExt, mdExtensionStyleTags, mdExtensionSyntaxConfig } from "./markdown_ext"; export const pageLinkRegex = /^\[\[([^\]]+)\]\]/; @@ -87,6 +87,11 @@ export default function buildMarkdown(mdExtensions: MDExt[]): Language { alias: ["js"], support: new LanguageSupport(javascriptLanguage), }), + LanguageDescription.of({ + name: "typescript", + alias: ["ts"], + support: new LanguageSupport(typescriptLanguage), + }), ]), }), { @@ -101,6 +106,7 @@ export default function buildMarkdown(mdExtensions: MDExt[]): Language { t.processingInstruction, "TableHeader/...": t.heading, TableCell: t.content, + CodeInfo: ct.CodeInfoTag, }), ...mdExtensions.map((mdExt) => styleTags(mdExtensionStyleTags(mdExt)) diff --git a/packages/silverbullet-web/smart_quotes.ts b/packages/silverbullet-web/smart_quotes.ts index 8bc9e15e..54f3e5a5 100644 --- a/packages/silverbullet-web/smart_quotes.ts +++ b/packages/silverbullet-web/smart_quotes.ts @@ -1,4 +1,7 @@ import { KeyBinding } from "@codemirror/view"; +import { syntaxTree } from "@codemirror/language"; + +const straightQuoteContexts = ["CommentBlock", "FencedCode", "InlineCode"]; // TODO: Add support for selection (put quotes around or create blockquote block?) function keyBindingForQuote( @@ -11,6 +14,21 @@ function keyBindingForQuote( run: (target): boolean => { let cursorPos = target.state.selection.main.from; let chBefore = target.state.sliceDoc(cursorPos - 1, cursorPos); + + // Figure out the context, if in some sort of code/comment fragment don't be smart + let node = syntaxTree(target.state).resolveInner(cursorPos); + while (node) { + if (straightQuoteContexts.includes(node.type.name)) { + return false; + } + if (node.parent) { + node = node.parent; + } else { + break; + } + } + + // Ok, still here, let's use a smart quote let quote = right; if (/\W/.exec(chBefore) && !/[!\?,\.\-=“]/.exec(chBefore)) { quote = left; diff --git a/packages/silverbullet-web/style.ts b/packages/silverbullet-web/style.ts index a59ba124..7eef1cdf 100644 --- a/packages/silverbullet-web/style.ts +++ b/packages/silverbullet-web/style.ts @@ -14,10 +14,9 @@ export default function highlightStyles(mdExtension: MDExt[]) { { tag: t.url, class: "url" }, { tag: ct.WikiLinkTag, class: "wiki-link" }, { tag: ct.WikiLinkPageTag, class: "wiki-link-page" }, - { tag: ct.TagTag, class: "tag" }, - { tag: ct.MentionTag, class: "mention" }, { tag: ct.TaskTag, class: "task" }, { tag: ct.TaskMarkerTag, class: "task-marker" }, + { tag: ct.CodeInfoTag, class: "code-info" }, { tag: ct.CommentTag, class: "comment" }, { tag: ct.CommentMarkerTag, class: "comment-marker" }, { tag: t.emphasis, class: "emphasis" }, @@ -28,12 +27,14 @@ export default function highlightStyles(mdExtension: MDExt[]) { { tag: t.inserted, class: "inserted" }, { tag: t.deleted, class: "deleted" }, { tag: t.literal, class: "literal" }, + { tag: t.keyword, class: "keyword" }, { tag: t.list, class: "list" }, { tag: t.definition, class: "li" }, { tag: t.string, class: "string" }, { tag: t.number, class: "number" }, { tag: [t.regexp, t.escape, t.special(t.string)], class: "string2" }, { tag: t.variableName, class: "variableName" }, + { tag: t.typeName, class: "typeName" }, { tag: t.comment, class: "comment" }, { tag: t.invalid, class: "invalid" }, { tag: t.processingInstruction, class: "meta" }, diff --git a/packages/silverbullet-web/styles/editor.scss b/packages/silverbullet-web/styles/editor.scss index b90e4a68..7fe35579 100644 --- a/packages/silverbullet-web/styles/editor.scss +++ b/packages/silverbullet-web/styles/editor.scss @@ -87,6 +87,38 @@ .code { background-color: transparent; } + + // Set this to defaults + .comment { + color: #989797; + background-color: transparent; + border-radius: 0; + font-style: inherit; + font-size: inherit; + line-height: inherit; + } + + .keyword { + color: #830000; + } + + .variableName { + color: #036d9b; + } + + .typeName { + color: #038138; + } + + .string,.string2 { + color: #440377; + } + + //.code-info { + // background: black; + // border-radius: 3px; + //} + } .meta { diff --git a/packages/silverbullet-web/syscalls/editor.ts b/packages/silverbullet-web/syscalls/editor.ts index 4f34826e..147d57db 100644 --- a/packages/silverbullet-web/syscalls/editor.ts +++ b/packages/silverbullet-web/syscalls/editor.ts @@ -31,6 +31,13 @@ export function editorSyscalls(editor: Editor): SysCallMapping { "editor.getCurrentPage": (): string => { return editor.currentPage!; }, + // sets the current page name, without changing the content + "editor.setPage": (ctx, newName: string) => { + return editor.viewDispatch({ + type: "page-loaded", + name: newName, + }); + }, "editor.getText": () => { return editor.editorView?.state.sliceDoc(); },