From 081b093e7ea66a0975e61ffdc642b73225f9c0f0 Mon Sep 17 00:00:00 2001 From: KernelDeimos Date: Mon, 15 Apr 2024 14:43:15 -0400 Subject: [PATCH] Add missing asset for xterm, fix SDK url --- packages/backend/src/SelfhostedModule.js | 4 +- .../backend/src/services/DevWatcherService.js | 4 +- packages/terminal/assets/xterm.css | 209 ++++++++++++++++++ packages/terminal/rollup.config.js | 3 +- 4 files changed, 215 insertions(+), 5 deletions(-) create mode 100644 packages/terminal/assets/xterm.css diff --git a/packages/backend/src/SelfhostedModule.js b/packages/backend/src/SelfhostedModule.js index 81074f42..60b04716 100644 --- a/packages/backend/src/SelfhostedModule.js +++ b/packages/backend/src/SelfhostedModule.js @@ -28,7 +28,7 @@ class SelfhostedModule extends AdvancedBase { command: 'npx', args: ['rollup', '-c', 'rollup.config.js', '--watch'], env: { - PUTER_JS_URL: config.origin + 'sdk/puter.dev.js', + PUTER_JS_URL: config.origin + '/sdk/puter.dev.js', } }, { @@ -37,7 +37,7 @@ class SelfhostedModule extends AdvancedBase { command: 'npx', args: ['rollup', '-c', 'rollup.config.js', '--watch'], env: { - PUTER_JS_URL: config.origin + 'sdk/puter.dev.js', + PUTER_JS_URL: config.origin + '/sdk/puter.dev.js', } }, ], diff --git a/packages/backend/src/services/DevWatcherService.js b/packages/backend/src/services/DevWatcherService.js index 667507db..a62c0307 100644 --- a/packages/backend/src/services/DevWatcherService.js +++ b/packages/backend/src/services/DevWatcherService.js @@ -47,10 +47,10 @@ class DevWatcherService extends BaseService { }) for ( const entry of commands ) { - const { name, directory, command, args } = entry; + const { directory } = entry; const fullpath = this.modules.path.join( root, directory); - this.start_({ name, fullpath, command, args }); + this.start_({ ...entry, fullpath }); } } diff --git a/packages/terminal/assets/xterm.css b/packages/terminal/assets/xterm.css new file mode 100644 index 00000000..74acc267 --- /dev/null +++ b/packages/terminal/assets/xterm.css @@ -0,0 +1,209 @@ +/** + * Copyright (c) 2014 The xterm.js authors. All rights reserved. + * Copyright (c) 2012-2013, Christopher Jeffrey (MIT License) + * https://github.com/chjj/term.js + * @license MIT + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * Originally forked from (with the author's permission): + * Fabrice Bellard's javascript vt100 for jslinux: + * http://bellard.org/jslinux/ + * Copyright (c) 2011 Fabrice Bellard + * The original design remains. The terminal itself + * has been extended to include xterm CSI codes, among + * other features. + */ + +/** + * Default styles for xterm.js + */ + +.xterm { + cursor: text; + position: relative; + user-select: none; + -ms-user-select: none; + -webkit-user-select: none; +} + +.xterm.focus, +.xterm:focus { + outline: none; +} + +.xterm .xterm-helpers { + position: absolute; + top: 0; + /** + * The z-index of the helpers must be higher than the canvases in order for + * IMEs to appear on top. + */ + z-index: 5; +} + +.xterm .xterm-helper-textarea { + padding: 0; + border: 0; + margin: 0; + /* Move textarea out of the screen to the far left, so that the cursor is not visible */ + position: absolute; + opacity: 0; + left: -9999em; + top: 0; + width: 0; + height: 0; + z-index: -5; + /** Prevent wrapping so the IME appears against the textarea at the correct position */ + white-space: nowrap; + overflow: hidden; + resize: none; +} + +.xterm .composition-view { + /* TODO: Composition position got messed up somewhere */ + background: #000; + color: #FFF; + display: none; + position: absolute; + white-space: nowrap; + z-index: 1; +} + +.xterm .composition-view.active { + display: block; +} + +.xterm .xterm-viewport { + /* On OS X this is required in order for the scroll bar to appear fully opaque */ + background-color: #000; + overflow-y: scroll; + cursor: default; + position: absolute; + right: 0; + left: 0; + top: 0; + bottom: 0; +} + +.xterm .xterm-screen { + position: relative; +} + +.xterm .xterm-screen canvas { + position: absolute; + left: 0; + top: 0; +} + +.xterm .xterm-scroll-area { + visibility: hidden; +} + +.xterm-char-measure-element { + display: inline-block; + visibility: hidden; + position: absolute; + top: 0; + left: -9999em; + line-height: normal; +} + +.xterm.enable-mouse-events { + /* When mouse events are enabled (eg. tmux), revert to the standard pointer cursor */ + cursor: default; +} + +.xterm.xterm-cursor-pointer, +.xterm .xterm-cursor-pointer { + cursor: pointer; +} + +.xterm.column-select.focus { + /* Column selection mode */ + cursor: crosshair; +} + +.xterm .xterm-accessibility, +.xterm .xterm-message { + position: absolute; + left: 0; + top: 0; + bottom: 0; + right: 0; + z-index: 10; + color: transparent; + pointer-events: none; +} + +.xterm .live-region { + position: absolute; + left: -9999px; + width: 1px; + height: 1px; + overflow: hidden; +} + +.xterm-dim { + /* Dim should not apply to background, so the opacity of the foreground color is applied + * explicitly in the generated class and reset to 1 here */ + opacity: 1 !important; +} + +.xterm-underline-1 { text-decoration: underline; } +.xterm-underline-2 { text-decoration: double underline; } +.xterm-underline-3 { text-decoration: wavy underline; } +.xterm-underline-4 { text-decoration: dotted underline; } +.xterm-underline-5 { text-decoration: dashed underline; } + +.xterm-overline { + text-decoration: overline; +} + +.xterm-overline.xterm-underline-1 { text-decoration: overline underline; } +.xterm-overline.xterm-underline-2 { text-decoration: overline double underline; } +.xterm-overline.xterm-underline-3 { text-decoration: overline wavy underline; } +.xterm-overline.xterm-underline-4 { text-decoration: overline dotted underline; } +.xterm-overline.xterm-underline-5 { text-decoration: overline dashed underline; } + +.xterm-strikethrough { + text-decoration: line-through; +} + +.xterm-screen .xterm-decoration-container .xterm-decoration { + z-index: 6; + position: absolute; +} + +.xterm-screen .xterm-decoration-container .xterm-decoration.xterm-decoration-top-layer { + z-index: 7; +} + +.xterm-decoration-overview-ruler { + z-index: 8; + position: absolute; + top: 0; + right: 0; + pointer-events: none; +} + +.xterm-decoration-top { + z-index: 2; + position: relative; +} diff --git a/packages/terminal/rollup.config.js b/packages/terminal/rollup.config.js index ffaa8d66..7aaa3ab6 100644 --- a/packages/terminal/rollup.config.js +++ b/packages/terminal/rollup.config.js @@ -38,7 +38,8 @@ export default { src: 'assets/index.html', dest: 'dist', transform: (contents, name) => { - return contents.toString().replace('__SDK_URL__', globalThis.__CONFIG__.sdk_url); + return contents.toString().replace('__SDK_URL__', + process.env.PUTER_JS_URL ?? globalThis.__CONFIG__.sdk_url); } }, { src: 'assets/shell.html', dest: 'dist' },