buninu-linux 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/LICENSES/Bun-LICENSE.md +84 -0
- package/LICENSES/GCC-Runtime-Library-Exception-3.1.txt +73 -0
- package/LICENSES/GPL-2.0.txt +338 -0
- package/LICENSES/GPL-3.0.txt +674 -0
- package/LICENSES/LGPL-2.1.txt +501 -0
- package/LICENSES/Linux-syscall-note.txt +25 -0
- package/LICENSES/musl-COPYRIGHT.txt +193 -0
- package/NOTICE.md +184 -0
- package/README.md +537 -0
- package/build-image.sh +44 -0
- package/build-uki.sh +75 -0
- package/fetch-alpine.sh +80 -0
- package/fetch-bun.sh +41 -0
- package/fetch-plus-build.sh +11 -0
- package/hello/build-hello.sh +14 -0
- package/hello/hello.c +50 -0
- package/index.js +235 -0
- package/initramfs/bin/sh +3 -0
- package/initramfs/buninu/.bashrc +11 -0
- package/initramfs/buninu/ARCHITECTURE.md +452 -0
- package/initramfs/buninu/CHANGELOG.md +580 -0
- package/initramfs/buninu/LICENSE +21 -0
- package/initramfs/buninu/README.md +1161 -0
- package/initramfs/buninu/apps/bun/make-bunBin.sh +99 -0
- package/initramfs/buninu/apps/bunmsh/CHANGELOG.md +493 -0
- package/initramfs/buninu/apps/bunmsh/LICENSE +21 -0
- package/initramfs/buninu/apps/bunmsh/LICENSE-MICRO +58 -0
- package/initramfs/buninu/apps/bunmsh/LICENSE-MKSH +295 -0
- package/initramfs/buninu/apps/bunmsh/PORTING.md +192 -0
- package/initramfs/buninu/apps/bunmsh/README.md +1042 -0
- package/initramfs/buninu/apps/bunmsh/bunmsh +7 -0
- package/initramfs/buninu/apps/bunmsh/bunshell.md +61 -0
- package/initramfs/buninu/apps/bunmsh/help/README.md +2237 -0
- package/initramfs/buninu/apps/bunmsh/help/alias.md +22 -0
- package/initramfs/buninu/apps/bunmsh/help/basename.md +38 -0
- package/initramfs/buninu/apps/bunmsh/help/builtin.md +25 -0
- package/initramfs/buninu/apps/bunmsh/help/bun.md +27 -0
- package/initramfs/buninu/apps/bunmsh/help/bunmsh.md +47 -0
- package/initramfs/buninu/apps/bunmsh/help/cat.md +31 -0
- package/initramfs/buninu/apps/bunmsh/help/catfancy.md +35 -0
- package/initramfs/buninu/apps/bunmsh/help/cd.md +22 -0
- package/initramfs/buninu/apps/bunmsh/help/chmod.md +27 -0
- package/initramfs/buninu/apps/bunmsh/help/clear.md +21 -0
- package/initramfs/buninu/apps/bunmsh/help/colon.md +22 -0
- package/initramfs/buninu/apps/bunmsh/help/command.md +27 -0
- package/initramfs/buninu/apps/bunmsh/help/cp.md +28 -0
- package/initramfs/buninu/apps/bunmsh/help/curl.md +181 -0
- package/initramfs/buninu/apps/bunmsh/help/cut.md +25 -0
- package/initramfs/buninu/apps/bunmsh/help/date.md +25 -0
- package/initramfs/buninu/apps/bunmsh/help/dirname.md +25 -0
- package/initramfs/buninu/apps/bunmsh/help/echo.md +25 -0
- package/initramfs/buninu/apps/bunmsh/help/env.md +27 -0
- package/initramfs/buninu/apps/bunmsh/help/eval.md +22 -0
- package/initramfs/buninu/apps/bunmsh/help/exec.md +22 -0
- package/initramfs/buninu/apps/bunmsh/help/exit.md +21 -0
- package/initramfs/buninu/apps/bunmsh/help/export.md +22 -0
- package/initramfs/buninu/apps/bunmsh/help/false.md +22 -0
- package/initramfs/buninu/apps/bunmsh/help/find.md +33 -0
- package/initramfs/buninu/apps/bunmsh/help/getopts.md +28 -0
- package/initramfs/buninu/apps/bunmsh/help/grep.md +34 -0
- package/initramfs/buninu/apps/bunmsh/help/head.md +27 -0
- package/initramfs/buninu/apps/bunmsh/help/kill.md +43 -0
- package/initramfs/buninu/apps/bunmsh/help/ln.md +28 -0
- package/initramfs/buninu/apps/bunmsh/help/ls.md +37 -0
- package/initramfs/buninu/apps/bunmsh/help/lsbun.md +29 -0
- package/initramfs/buninu/apps/bunmsh/help/lsfancy.md +37 -0
- package/initramfs/buninu/apps/bunmsh/help/md5sum.md +21 -0
- package/initramfs/buninu/apps/bunmsh/help/mkdir.md +27 -0
- package/initramfs/buninu/apps/bunmsh/help/mktemp.md +26 -0
- package/initramfs/buninu/apps/bunmsh/help/mv.md +26 -0
- package/initramfs/buninu/apps/bunmsh/help/print.md +30 -0
- package/initramfs/buninu/apps/bunmsh/help/printf.md +25 -0
- package/initramfs/buninu/apps/bunmsh/help/pspa.md +38 -0
- package/initramfs/buninu/apps/bunmsh/help/pspac.md +57 -0
- package/initramfs/buninu/apps/bunmsh/help/pwd.md +21 -0
- package/initramfs/buninu/apps/bunmsh/help/read.md +27 -0
- package/initramfs/buninu/apps/bunmsh/help/readonly.md +27 -0
- package/initramfs/buninu/apps/bunmsh/help/realpath.md +21 -0
- package/initramfs/buninu/apps/bunmsh/help/rm.md +33 -0
- package/initramfs/buninu/apps/bunmsh/help/rmdir.md +27 -0
- package/initramfs/buninu/apps/bunmsh/help/sed.md +29 -0
- package/initramfs/buninu/apps/bunmsh/help/seq.md +29 -0
- package/initramfs/buninu/apps/bunmsh/help/serve.md +50 -0
- package/initramfs/buninu/apps/bunmsh/help/set.md +26 -0
- package/initramfs/buninu/apps/bunmsh/help/sha256sum.md +21 -0
- package/initramfs/buninu/apps/bunmsh/help/shift.md +23 -0
- package/initramfs/buninu/apps/bunmsh/help/sleep.md +25 -0
- package/initramfs/buninu/apps/bunmsh/help/sort.md +29 -0
- package/initramfs/buninu/apps/bunmsh/help/source.md +23 -0
- package/initramfs/buninu/apps/bunmsh/help/tab.md +30 -0
- package/initramfs/buninu/apps/bunmsh/help/tac.md +29 -0
- package/initramfs/buninu/apps/bunmsh/help/tail.md +27 -0
- package/initramfs/buninu/apps/bunmsh/help/tee.md +25 -0
- package/initramfs/buninu/apps/bunmsh/help/test.md +30 -0
- package/initramfs/buninu/apps/bunmsh/help/time.md +29 -0
- package/initramfs/buninu/apps/bunmsh/help/touch.md +26 -0
- package/initramfs/buninu/apps/bunmsh/help/tr.md +26 -0
- package/initramfs/buninu/apps/bunmsh/help/true.md +22 -0
- package/initramfs/buninu/apps/bunmsh/help/type.md +21 -0
- package/initramfs/buninu/apps/bunmsh/help/umask.md +22 -0
- package/initramfs/buninu/apps/bunmsh/help/unalias.md +28 -0
- package/initramfs/buninu/apps/bunmsh/help/uname.md +31 -0
- package/initramfs/buninu/apps/bunmsh/help/unset.md +28 -0
- package/initramfs/buninu/apps/bunmsh/help/wc.md +27 -0
- package/initramfs/buninu/apps/bunmsh/help/whence.md +26 -0
- package/initramfs/buninu/apps/bunmsh/help/which.md +41 -0
- package/initramfs/buninu/apps/bunmsh/help/yes.md +23 -0
- package/initramfs/buninu/apps/bunmsh/index.js +7 -0
- package/initramfs/buninu/apps/bunmsh/package.json +30 -0
- package/initramfs/buninu/apps/bunmsh/serve.js +468 -0
- package/initramfs/buninu/apps/bunmsh/single-exe/README.md +402 -0
- package/initramfs/buninu/apps/bunmsh/single-exe/assetsHelper.js +371 -0
- package/initramfs/buninu/apps/bunmsh/single-exe/assetsLoader.mjs +85 -0
- package/initramfs/buninu/apps/bunmsh/single-exe/assetsPacker.js +218 -0
- package/initramfs/buninu/apps/bunmsh/single-exe/compiled.js +527 -0
- package/initramfs/buninu/apps/bunmsh/single-exe/entry.mjs +17 -0
- package/initramfs/buninu/apps/bunmsh/src/cat-fancy.js +117 -0
- package/initramfs/buninu/apps/bunmsh/src/cat-operands.js +31 -0
- package/initramfs/buninu/apps/bunmsh/src/completion.js +363 -0
- package/initramfs/buninu/apps/bunmsh/src/curl.js +1191 -0
- package/initramfs/buninu/apps/bunmsh/src/environment.js +61 -0
- package/initramfs/buninu/apps/bunmsh/src/fancy-ls.js +186 -0
- package/initramfs/buninu/apps/bunmsh/src/find.js +119 -0
- package/initramfs/buninu/apps/bunmsh/src/history.js +198 -0
- package/initramfs/buninu/apps/bunmsh/src/main.js +850 -0
- package/initramfs/buninu/apps/bunmsh/src/mouse.js +103 -0
- package/initramfs/buninu/apps/bunmsh/src/shell.js +3932 -0
- package/initramfs/buninu/apps/bunmsh/test/catfancy.test.js +102 -0
- package/initramfs/buninu/apps/bunmsh/test/curl.test.js +335 -0
- package/initramfs/buninu/apps/bunmsh/test/reference-source.sh +1 -0
- package/initramfs/buninu/apps/bunmsh/test/reference.test.js +817 -0
- package/initramfs/buninu/apps/bunmsh/test/serve/README.md +3 -0
- package/initramfs/buninu/apps/bunmsh/test/serve/bad.json +1 -0
- package/initramfs/buninu/apps/bunmsh/test/serve/data.json +1 -0
- package/initramfs/buninu/apps/bunmsh/test/serve/data.json5 +1 -0
- package/initramfs/buninu/apps/bunmsh/test/serve/data.jsonc +2 -0
- package/initramfs/buninu/apps/bunmsh/test/serve/data.jsonl +2 -0
- package/initramfs/buninu/apps/bunmsh/test/serve/data.ndjson +1 -0
- package/initramfs/buninu/apps/bunmsh/test/serve/data.toml +3 -0
- package/initramfs/buninu/apps/bunmsh/test/serve/data.ts +15 -0
- package/initramfs/buninu/apps/bunmsh/test/serve/data.xml +1 -0
- package/initramfs/buninu/apps/bunmsh/test/serve/data.yaml +3 -0
- package/initramfs/buninu/apps/bunmsh/test/serve/data.yml +1 -0
- package/initramfs/buninu/apps/bunmsh/test/serve.test.js +241 -0
- package/initramfs/buninu/apps/bunmsh/test/shell.test.js +2092 -0
- package/initramfs/buninu/apps/bunmsh/test/shell1.test.js +1087 -0
- package/initramfs/buninu/apps/bunmsh/test/shell2.test.js +457 -0
- package/initramfs/buninu/apps/bunmsh/test/shell3.test.js +741 -0
- package/initramfs/buninu/apps/bunmsh/test/t.sh +12 -0
- package/initramfs/buninu/apps/bunx/bunx.js +172 -0
- package/initramfs/buninu/apps/cmdlist +48 -0
- package/initramfs/buninu/apps/jsgotty/LICENSE +23 -0
- package/initramfs/buninu/apps/jsgotty/LICENSES/Apache-2.0-zmodem.js.txt +201 -0
- package/initramfs/buninu/apps/jsgotty/NOTICE +21 -0
- package/initramfs/buninu/apps/jsgotty/README.en.md +294 -0
- package/initramfs/buninu/apps/jsgotty/README.md +296 -0
- package/initramfs/buninu/apps/jsgotty/client.mjs +700 -0
- package/initramfs/buninu/apps/jsgotty/env.sh +2 -0
- package/initramfs/buninu/apps/jsgotty/gotty.js +3334 -0
- package/initramfs/buninu/apps/jsgotty/node_modules/.package-lock.json +35 -0
- package/initramfs/buninu/apps/jsgotty/node_modules/node-addon-api/LICENSE.md +9 -0
- package/initramfs/buninu/apps/jsgotty/node_modules/node-addon-api/README.md +319 -0
- package/initramfs/buninu/apps/jsgotty/node_modules/node-addon-api/common.gypi +20 -0
- package/initramfs/buninu/apps/jsgotty/node_modules/node-addon-api/except.gypi +25 -0
- package/initramfs/buninu/apps/jsgotty/node_modules/node-addon-api/index.js +12 -0
- package/initramfs/buninu/apps/jsgotty/node_modules/node-addon-api/napi-inl.deprecated.h +186 -0
- package/initramfs/buninu/apps/jsgotty/node_modules/node-addon-api/napi-inl.h +6607 -0
- package/initramfs/buninu/apps/jsgotty/node_modules/node-addon-api/napi.h +3201 -0
- package/initramfs/buninu/apps/jsgotty/node_modules/node-addon-api/node_addon_api.gyp +32 -0
- package/initramfs/buninu/apps/jsgotty/node_modules/node-addon-api/node_api.gyp +9 -0
- package/initramfs/buninu/apps/jsgotty/node_modules/node-addon-api/noexcept.gypi +26 -0
- package/initramfs/buninu/apps/jsgotty/node_modules/node-addon-api/nothing.c +0 -0
- package/initramfs/buninu/apps/jsgotty/node_modules/node-addon-api/package-support.json +21 -0
- package/initramfs/buninu/apps/jsgotty/node_modules/node-addon-api/package.json +480 -0
- package/initramfs/buninu/apps/jsgotty/node_modules/node-addon-api/tools/README.md +73 -0
- package/initramfs/buninu/apps/jsgotty/node_modules/node-addon-api/tools/check-napi.js +99 -0
- package/initramfs/buninu/apps/jsgotty/node_modules/node-addon-api/tools/clang-format.js +71 -0
- package/initramfs/buninu/apps/jsgotty/node_modules/node-addon-api/tools/conversion.js +301 -0
- package/initramfs/buninu/apps/jsgotty/node_modules/node-addon-api/tools/eslint-format.js +79 -0
- package/initramfs/buninu/apps/jsgotty/node_modules/ws/LICENSE +20 -0
- package/initramfs/buninu/apps/jsgotty/node_modules/ws/README.md +548 -0
- package/initramfs/buninu/apps/jsgotty/node_modules/ws/browser.js +8 -0
- package/initramfs/buninu/apps/jsgotty/node_modules/ws/index.js +22 -0
- package/initramfs/buninu/apps/jsgotty/node_modules/ws/lib/buffer-util.js +131 -0
- package/initramfs/buninu/apps/jsgotty/node_modules/ws/lib/constants.js +19 -0
- package/initramfs/buninu/apps/jsgotty/node_modules/ws/lib/event-target.js +292 -0
- package/initramfs/buninu/apps/jsgotty/node_modules/ws/lib/extension.js +203 -0
- package/initramfs/buninu/apps/jsgotty/node_modules/ws/lib/limiter.js +55 -0
- package/initramfs/buninu/apps/jsgotty/node_modules/ws/lib/permessage-deflate.js +528 -0
- package/initramfs/buninu/apps/jsgotty/node_modules/ws/lib/receiver.js +760 -0
- package/initramfs/buninu/apps/jsgotty/node_modules/ws/lib/sender.js +607 -0
- package/initramfs/buninu/apps/jsgotty/node_modules/ws/lib/stream.js +161 -0
- package/initramfs/buninu/apps/jsgotty/node_modules/ws/lib/subprotocol.js +62 -0
- package/initramfs/buninu/apps/jsgotty/node_modules/ws/lib/validation.js +152 -0
- package/initramfs/buninu/apps/jsgotty/node_modules/ws/lib/websocket-server.js +562 -0
- package/initramfs/buninu/apps/jsgotty/node_modules/ws/lib/websocket.js +1407 -0
- package/initramfs/buninu/apps/jsgotty/node_modules/ws/package.json +70 -0
- package/initramfs/buninu/apps/jsgotty/node_modules/ws/wrapper.mjs +21 -0
- package/initramfs/buninu/apps/jsgotty/package-lock.json +46 -0
- package/initramfs/buninu/apps/jsgotty/package.json +19 -0
- package/initramfs/buninu/apps/jsgotty/patches/windowsPtyAgent.js +326 -0
- package/initramfs/buninu/apps/jsgotty/patches/windowsTerminal.js +204 -0
- package/initramfs/buninu/apps/jsgotty/rz.js +199 -0
- package/initramfs/buninu/apps/jsgotty/single-exe/README.md +384 -0
- package/initramfs/buninu/apps/jsgotty/single-exe/assetsHelper.js +371 -0
- package/initramfs/buninu/apps/jsgotty/single-exe/assetsLoader.mjs +85 -0
- package/initramfs/buninu/apps/jsgotty/single-exe/assetsPacker.js +218 -0
- package/initramfs/buninu/apps/jsgotty/single-exe/compiled.js +498 -0
- package/initramfs/buninu/apps/jsgotty/single-exe/entry.mjs +23 -0
- package/initramfs/buninu/apps/jsgotty/single-exe/packAssets.sh +7 -0
- package/initramfs/buninu/apps/jsgotty/static/css/index.css +13 -0
- package/initramfs/buninu/apps/jsgotty/static/css/kitty.css +61 -0
- package/initramfs/buninu/apps/jsgotty/static/css/xterm.css +218 -0
- package/initramfs/buninu/apps/jsgotty/static/css/xterm_customize.css +35 -0
- package/initramfs/buninu/apps/jsgotty/static/favicon.ico +0 -0
- package/initramfs/buninu/apps/jsgotty/static/help.md +125 -0
- package/initramfs/buninu/apps/jsgotty/static/icon.svg +66 -0
- package/initramfs/buninu/apps/jsgotty/static/icon_192.png +0 -0
- package/initramfs/buninu/apps/jsgotty/static/index.html +164 -0
- package/initramfs/buninu/apps/jsgotty/static/js/gotty.js +31537 -0
- package/initramfs/buninu/apps/jsgotty/static/js/gotty.js.LICENSE.txt +7 -0
- package/initramfs/buninu/apps/jsgotty/static/js/gotty.js.map +1 -0
- package/initramfs/buninu/apps/jsgotty/static/js/gotty.licenses.txt +650 -0
- package/initramfs/buninu/apps/jsgotty/static/js/kitty.js +1101 -0
- package/initramfs/buninu/apps/jsgotty/static/js/windows_bridge.js +194 -0
- package/initramfs/buninu/apps/jsgotty/static/js/xterm-addon-unicode11.js +2 -0
- package/initramfs/buninu/apps/jsgotty/static/js/zmodem.js +1 -0
- package/initramfs/buninu/apps/jsgotty/static/manifest.json +15 -0
- package/initramfs/buninu/apps/jsgotty/sz.js +273 -0
- package/initramfs/buninu/apps/jsgotty/tests/kitty-order.test.js +58 -0
- package/initramfs/buninu/apps/jsgotty/tests/websocket-origin.test.js +54 -0
- package/initramfs/buninu/apps/jsgotty/viu.mjs +422 -0
- package/initramfs/buninu/apps/jsgotty/wgotty +62 -0
- package/initramfs/buninu/apps/jsgotty/windows-bridge-node.js +60 -0
- package/initramfs/buninu/apps/jsgotty/zmodem-node.js +262 -0
- package/initramfs/buninu/apps/jsmdcui/CHANGELOG.md +1118 -0
- package/initramfs/buninu/apps/jsmdcui/LICENSE +22 -0
- package/initramfs/buninu/apps/jsmdcui/README.md +1283 -0
- package/initramfs/buninu/apps/jsmdcui/cdp-maze.js +141 -0
- package/initramfs/buninu/apps/jsmdcui/clean.sh +9 -0
- package/initramfs/buninu/apps/jsmdcui/demos/basic.jpg +0 -0
- package/initramfs/buninu/apps/jsmdcui/demos/chinese.md +32 -0
- package/initramfs/buninu/apps/jsmdcui/demos/event.md +170 -0
- package/initramfs/buninu/apps/jsmdcui/demos/good.jpg +0 -0
- package/initramfs/buninu/apps/jsmdcui/demos/image-processor.md +366 -0
- package/initramfs/buninu/apps/jsmdcui/demos/image-processor.zh-TW.md +366 -0
- package/initramfs/buninu/apps/jsmdcui/demos/img-change.md +73 -0
- package/initramfs/buninu/apps/jsmdcui/demos/imgtool-zh.md +298 -0
- package/initramfs/buninu/apps/jsmdcui/demos/imgtool.md +298 -0
- package/initramfs/buninu/apps/jsmdcui/demos/maze.md +149 -0
- package/initramfs/buninu/apps/jsmdcui/demos/reactive.md +40 -0
- package/initramfs/buninu/apps/jsmdcui/demos/reader.md +513 -0
- package/initramfs/buninu/apps/jsmdcui/demos/select.md +63 -0
- package/initramfs/buninu/apps/jsmdcui/demos/todo-zh.md +190 -0
- package/initramfs/buninu/apps/jsmdcui/demos/todo.md +191 -0
- package/initramfs/buninu/apps/jsmdcui/edit +9 -0
- package/initramfs/buninu/apps/jsmdcui/jsmdcui.sh +16 -0
- package/initramfs/buninu/apps/jsmdcui/llm-maze.txt +94 -0
- package/initramfs/buninu/apps/jsmdcui/package.json +29 -0
- package/initramfs/buninu/apps/jsmdcui/project_structure.txt +35 -0
- package/initramfs/buninu/apps/jsmdcui/runmd.mjs +1140 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/colorschemes/atom-dark.micro +33 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/colorschemes/bubblegum.micro +31 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/colorschemes/cmc-16.micro +47 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/colorschemes/cmc-tc.micro +43 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/colorschemes/darcula.micro +34 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/colorschemes/default.micro +1 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/colorschemes/dracula-tc.micro +49 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/colorschemes/dukedark-tc.micro +38 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/colorschemes/dukelight-tc.micro +38 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/colorschemes/dukeubuntu-tc.micro +38 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/colorschemes/geany.micro +29 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/colorschemes/gotham.micro +29 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/colorschemes/gruvbox-tc.micro +29 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/colorschemes/gruvbox.micro +26 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/colorschemes/material-tc.micro +36 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/colorschemes/monokai-dark.micro +28 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/colorschemes/monokai.micro +34 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/colorschemes/one-dark.micro +39 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/colorschemes/railscast.micro +37 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/colorschemes/simple.micro +33 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/colorschemes/solarized-tc.micro +31 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/colorschemes/solarized.micro +30 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/colorschemes/sunny-day.micro +29 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/colorschemes/twilight.micro +40 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/colorschemes/zenburn.micro +30 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/help/actions.md +161 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/help/cdp.md +130 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/help/colors.md +421 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/help/commands.md +161 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/help/copypaste.md +149 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/help/defaultkeys.md +148 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/help/help.md +1283 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/help/keybindings.md +355 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/help/linter.md +90 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/help/options.md +709 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/help/plugins.md +544 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/help/tutorial.md +112 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/jsplugins/cdp/cdp-server.js +1263 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/jsplugins/cdp/cdp.js +203 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/jsplugins/chapter/chapter.js +111 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/jsplugins/diff/diff.js +46 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/jsplugins/example/example.js +117 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/jsplugins/linter/linter.js +281 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/plugins/autoclose/autoclose.lua +75 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/plugins/ftoptions/ftoptions.lua +17 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/plugins/literate/README.md +5 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/plugins/literate/literate.lua +55 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/plugins/status/help/status.md +21 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/plugins/status/status.lua +62 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/LICENSE +22 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/PowerShell.yaml +128 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/README.md +63 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/ada.yaml +43 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/apacheconf.yaml +59 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/arduino.yaml +101 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/asciidoc.yaml +51 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/asm.yaml +123 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/ats.yaml +99 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/awk.yaml +44 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/b.yaml +87 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/bat.yaml +57 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/c.yaml +60 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/caddyfile.yaml +23 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/cake.yaml +7 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/clojure.yaml +38 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/cmake.yaml +42 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/coffeescript.yaml +56 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/colortest.yaml +19 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/conky.yaml +17 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/cpp.yaml +91 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/crontab.yaml +36 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/crystal.yaml +72 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/csharp.yaml +52 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/css.yaml +44 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/csx.yaml +8 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/cuda.yaml +68 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/cython.yaml +52 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/d.yaml +121 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/dart.yaml +46 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/default.yaml +10 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/dockerfile.yaml +36 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/dot.yaml +29 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/elixir.yaml +30 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/elm.yaml +38 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/erb.yaml +42 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/erlang.yaml +45 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/fish.yaml +48 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/forth.yaml +34 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/fortran.yaml +64 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/freebsd-kernel.yaml +14 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/fsharp.yaml +48 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/gdscript.yaml +61 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/gemini.yaml +19 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/gentoo-ebuild.yaml +48 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/gentoo-etc-portage.yaml +23 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/git-commit.yaml +35 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/git-config.yaml +14 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/git-rebase-todo.yaml +19 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/gleam.yaml +69 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/glsl.yaml +26 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/gnuplot.yaml +15 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/go.yaml +62 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/godoc.yaml +17 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/golo.yaml +73 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/gomod.yaml +31 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/graphql.yaml +47 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/groff.yaml +30 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/groovy.yaml +111 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/haml.yaml +16 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/hare.yaml +52 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/haskell.yaml +52 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/hc.yaml +52 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/html.yaml +70 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/html4.yaml +25 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/html5.yaml +25 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/ini.yaml +23 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/inputrc.yaml +14 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/java.yaml +37 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/javascript.yaml +124 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/jinja2.yaml +19 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/json.yaml +39 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/jsonnet.yaml +92 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/julia.yaml +57 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/justfile.yaml +40 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/keymap.yaml +27 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/kickstart.yaml +16 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/kotlin.yaml +66 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/kvlang.yaml +67 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/ledger.yaml +14 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/lfe.yaml +17 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/lilypond.yaml +26 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/lisp.yaml +17 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/log.yaml +92 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/lua.yaml +111 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/mail.yaml +25 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/makefile.yaml +38 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/man.yaml +12 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/markdown.yaml +65 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/mc.yaml +23 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/meson.yaml +51 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/micro.yaml +34 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/mpdconf.yaml +13 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/msbuild.yaml +6 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/nanorc.yaml +16 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/nftables.yaml +30 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/nginx.yaml +22 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/nim.yaml +27 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/nix.yaml +32 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/nu.yaml +114 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/objc.yaml +60 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/ocaml.yaml +43 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/octave.yaml +83 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/odin.yaml +64 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/pascal.yaml +45 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/patch.yaml +14 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/peg.yaml +16 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/perl.yaml +58 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/php.yaml +60 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/pkg-config.yaml +12 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/po.yaml +12 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/pony.yaml +37 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/pov.yaml +21 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/privoxy-action.yaml +14 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/privoxy-config.yaml +10 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/privoxy-filter.yaml +12 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/proto.yaml +40 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/prql.yaml +84 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/puppet.yaml +22 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/python2.yaml +60 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/python3.yaml +80 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/r.yaml +32 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/raku.yaml +42 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/reST.yaml +18 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/renpy.yaml +15 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/rpmspec.yaml +43 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/ruby.yaml +73 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/rust.yaml +78 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/sage.yaml +60 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/scad.yaml +53 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/scala.yaml +33 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/sed.yaml +13 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/sh.yaml +69 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/sls.yaml +15 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/smalltalk.yaml +55 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/solidity.yaml +41 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/sql.yaml +35 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/stata.yaml +67 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/svelte.yaml +27 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/swift.yaml +103 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/systemd.yaml +16 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/tcl.yaml +18 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/terraform.yaml +87 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/tex.yaml +32 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/toml.yaml +56 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/twig.yaml +55 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/typescript.yaml +49 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/v.yaml +80 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/vala.yaml +26 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/verilog.yaml +60 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/vhdl.yaml +37 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/vi.yaml +31 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/vue.yaml +64 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/xml.yaml +37 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/xresources.yaml +14 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/yaml.yaml +34 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/yum.yaml +12 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/zig.yaml +52 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/zscript.yaml +72 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/zsh.yaml +52 -0
- package/initramfs/buninu/apps/jsmdcui/single-exe/README.md +396 -0
- package/initramfs/buninu/apps/jsmdcui/single-exe/assetsHelper.js +371 -0
- package/initramfs/buninu/apps/jsmdcui/single-exe/assetsLoader.mjs +85 -0
- package/initramfs/buninu/apps/jsmdcui/single-exe/assetsPacker.js +218 -0
- package/initramfs/buninu/apps/jsmdcui/single-exe/compiled.js +498 -0
- package/initramfs/buninu/apps/jsmdcui/single-exe/entry.mjs +17 -0
- package/initramfs/buninu/apps/jsmdcui/single-exe/packAssets.sh +7 -0
- package/initramfs/buninu/apps/jsmdcui/src/MDCUI_DEFAULT_EDIT +0 -0
- package/initramfs/buninu/apps/jsmdcui/src/buffer/backup.js +165 -0
- package/initramfs/buninu/apps/jsmdcui/src/buffer/buffer.js +126 -0
- package/initramfs/buninu/apps/jsmdcui/src/buffer/fixed3-codec.js +140 -0
- package/initramfs/buninu/apps/jsmdcui/src/buffer/loc.js +38 -0
- package/initramfs/buninu/apps/jsmdcui/src/buffer/message.js +29 -0
- package/initramfs/buninu/apps/jsmdcui/src/build-args.js +40 -0
- package/initramfs/buninu/apps/jsmdcui/src/config/clean.js +172 -0
- package/initramfs/buninu/apps/jsmdcui/src/config/colorscheme.js +99 -0
- package/initramfs/buninu/apps/jsmdcui/src/config/config.js +125 -0
- package/initramfs/buninu/apps/jsmdcui/src/config/defaults.js +109 -0
- package/initramfs/buninu/apps/jsmdcui/src/cui/fence-events.mjs +144 -0
- package/initramfs/buninu/apps/jsmdcui/src/cui/heading-ids.mjs +1568 -0
- package/initramfs/buninu/apps/jsmdcui/src/cui/id-collision.mjs +111 -0
- package/initramfs/buninu/apps/jsmdcui/src/cui/identity.mjs +26 -0
- package/initramfs/buninu/apps/jsmdcui/src/cui/kitty-debug.mjs +25 -0
- package/initramfs/buninu/apps/jsmdcui/src/cui/kitty-images.mjs +280 -0
- package/initramfs/buninu/apps/jsmdcui/src/cui/kitty-mode.mjs +6 -0
- package/initramfs/buninu/apps/jsmdcui/src/cui/rerender-queue.mjs +66 -0
- package/initramfs/buninu/apps/jsmdcui/src/cui/rpc.mjs +1554 -0
- package/initramfs/buninu/apps/jsmdcui/src/cui/server.mjs +128 -0
- package/initramfs/buninu/apps/jsmdcui/src/cui/table-render.mjs +286 -0
- package/initramfs/buninu/apps/jsmdcui/src/cui/table-row-edit.mjs +226 -0
- package/initramfs/buninu/apps/jsmdcui/src/cui/task-checkbox.mjs +60 -0
- package/initramfs/buninu/apps/jsmdcui/src/cui/template-components.mjs +253 -0
- package/initramfs/buninu/apps/jsmdcui/src/cui/text-block-resize.mjs +177 -0
- package/initramfs/buninu/apps/jsmdcui/src/cui/tui-links.mjs +560 -0
- package/initramfs/buninu/apps/jsmdcui/src/display/ansi-style.js +60 -0
- package/initramfs/buninu/apps/jsmdcui/src/highlight/highlighter.js +243 -0
- package/initramfs/buninu/apps/jsmdcui/src/highlight/parser.js +225 -0
- package/initramfs/buninu/apps/jsmdcui/src/index.js +9586 -0
- package/initramfs/buninu/apps/jsmdcui/src/lua/engine.js +68 -0
- package/initramfs/buninu/apps/jsmdcui/src/platform/archive.js +50 -0
- package/initramfs/buninu/apps/jsmdcui/src/platform/clipboard.js +278 -0
- package/initramfs/buninu/apps/jsmdcui/src/platform/commands.js +221 -0
- package/initramfs/buninu/apps/jsmdcui/src/platform/terminal.js +5 -0
- package/initramfs/buninu/apps/jsmdcui/src/plugins/js-bridge.js +3377 -0
- package/initramfs/buninu/apps/jsmdcui/src/plugins/manager.js +674 -0
- package/initramfs/buninu/apps/jsmdcui/src/runtime/encodings.js +10 -0
- package/initramfs/buninu/apps/jsmdcui/src/runtime/registry.js +134 -0
- package/initramfs/buninu/apps/jsmdcui/src/screen/cell-buffer.js +81 -0
- package/initramfs/buninu/apps/jsmdcui/src/screen/events.js +263 -0
- package/initramfs/buninu/apps/jsmdcui/src/screen/screen.js +249 -0
- package/initramfs/buninu/apps/jsmdcui/src/screen/vt100.js +571 -0
- package/initramfs/buninu/apps/jsmdcui/src/shell/shell.js +70 -0
- package/initramfs/buninu/apps/jsmdcui/testapp.md +78 -0
- package/initramfs/buninu/apps/jsmdcui/tests/assets-helper.test.js +150 -0
- package/initramfs/buninu/apps/jsmdcui/tests/backup.test.js +158 -0
- package/initramfs/buninu/apps/jsmdcui/tests/cat-markdown.test.js +139 -0
- package/initramfs/buninu/apps/jsmdcui/tests/cdp-security.test.js +32 -0
- package/initramfs/buninu/apps/jsmdcui/tests/cdp-websocket-test.html +46 -0
- package/initramfs/buninu/apps/jsmdcui/tests/cmphex3b64.js +95 -0
- package/initramfs/buninu/apps/jsmdcui/tests/compiled-runtime.test.js +139 -0
- package/initramfs/buninu/apps/jsmdcui/tests/config-settings.test.js +52 -0
- package/initramfs/buninu/apps/jsmdcui/tests/demo.test.js +448 -0
- package/initramfs/buninu/apps/jsmdcui/tests/docs-sync.test.js +14 -0
- package/initramfs/buninu/apps/jsmdcui/tests/fence-events.test.js +1293 -0
- package/initramfs/buninu/apps/jsmdcui/tests/heading-ids.test.js +559 -0
- package/initramfs/buninu/apps/jsmdcui/tests/heading-list-selector.test.js +2393 -0
- package/initramfs/buninu/apps/jsmdcui/tests/id-collision.test.js +514 -0
- package/initramfs/buninu/apps/jsmdcui/tests/jmigt.js +16 -0
- package/initramfs/buninu/apps/jsmdcui/tests/js-plugin-prompts.test.js +110 -0
- package/initramfs/buninu/apps/jsmdcui/tests/key-event.md +10 -0
- package/initramfs/buninu/apps/jsmdcui/tests/kitty-demo.md +184 -0
- package/initramfs/buninu/apps/jsmdcui/tests/kitty-images.test.js +288 -0
- package/initramfs/buninu/apps/jsmdcui/tests/kitty-mode.test.js +14 -0
- package/initramfs/buninu/apps/jsmdcui/tests/platform-commands.test.js +18 -0
- package/initramfs/buninu/apps/jsmdcui/tests/platform-terminal.test.js +8 -0
- package/initramfs/buninu/apps/jsmdcui/tests/pty-demo.js +492 -0
- package/initramfs/buninu/apps/jsmdcui/tests/rerender-queue.test.js +130 -0
- package/initramfs/buninu/apps/jsmdcui/tests/table-render.test.js +150 -0
- package/initramfs/buninu/apps/jsmdcui/tests/table-row-edit.test.js +138 -0
- package/initramfs/buninu/apps/jsmdcui/tests/task-checkbox.test.js +33 -0
- package/initramfs/buninu/apps/jsmdcui/tests/template-components.test.js +422 -0
- package/initramfs/buninu/apps/jsmdcui/tests/text-block-resize.test.js +222 -0
- package/initramfs/buninu/apps/jsmdcui/tests/textarea.md +8 -0
- package/initramfs/buninu/apps/jsmdcui/tests/tui-links.test.js +298 -0
- package/initramfs/buninu/apps/jsmdcui/tests/wui-responsive-images.test.js +60 -0
- package/initramfs/buninu/apps/jsmdcui/tests/wui.test.js +108 -0
- package/initramfs/buninu/apps/jsmdcui/tests/wv-client.js +96 -0
- package/initramfs/buninu/apps/jsmdcui/tui +7 -0
- package/initramfs/buninu/apps/jsmdcui/wui +9 -0
- package/initramfs/buninu/apps/musl-la/LICENSES/GPL-3.0.txt +674 -0
- package/initramfs/buninu/apps/musl-la/LICENSES/gcc_runtime_exception.txt +73 -0
- package/initramfs/buninu/apps/musl-la/LICENSE_musl.txt +193 -0
- package/initramfs/buninu/apps/musl-la/NOTICE +41 -0
- package/initramfs/buninu/apps/musl-la/ld-musl-aarch64.so.1 +0 -0
- package/initramfs/buninu/apps/musl-la/libgcc_s.so.1 +0 -0
- package/initramfs/buninu/apps/musl-la/libstdc++.so.6 +0 -0
- package/initramfs/buninu/apps/musl-la/musl-la.sh +36 -0
- package/initramfs/buninu/apps/native-bridge/native-bridge.js +199 -0
- package/initramfs/buninu/apps/native-bridge/package.json +8 -0
- package/initramfs/buninu/apps/tts/tts.js +214 -0
- package/initramfs/buninu/apps/xclip/xclip.js +121 -0
- package/initramfs/buninu/apps/xdg-open/xdg-open.js +151 -0
- package/initramfs/buninu/bin/bun.bat +37 -0
- package/initramfs/buninu/bin/bun.sh +57 -0
- package/initramfs/buninu/bin/buninu-help.bat +4 -0
- package/initramfs/buninu/bin/buninu-help.sh +7 -0
- package/initramfs/buninu/bin/bunmsh.bat +3 -0
- package/initramfs/buninu/bin/bunmsh.sh +5 -0
- package/initramfs/buninu/bin/bunx.bat +3 -0
- package/initramfs/buninu/bin/glow.bat +3 -0
- package/initramfs/buninu/bin/glow.sh +5 -0
- package/initramfs/buninu/bin/init.js +779 -0
- package/initramfs/buninu/bin/install.js +570 -0
- package/initramfs/buninu/bin/jmi.bat +3 -0
- package/initramfs/buninu/bin/jmi.sh +5 -0
- package/initramfs/buninu/bin/jsgotty.bat +3 -0
- package/initramfs/buninu/bin/jsgotty.sh +5 -0
- package/initramfs/buninu/bin/jsmdcui.bat +11 -0
- package/initramfs/buninu/bin/libsh-loader.c +135 -0
- package/initramfs/buninu/bin/libsh-loader.so +0 -0
- package/initramfs/buninu/bin/multicall.sh +103 -0
- package/initramfs/buninu/bin/native-bridge.bat +3 -0
- package/initramfs/buninu/bin/rz.bat +3 -0
- package/initramfs/buninu/bin/rz.sh +5 -0
- package/initramfs/buninu/bin/shc.js +5 -0
- package/initramfs/buninu/bin/showimg.bat +3 -0
- package/initramfs/buninu/bin/showimg.sh +5 -0
- package/initramfs/buninu/bin/switch_to_android.sh +9 -0
- package/initramfs/buninu/bin/switch_to_linux.sh +7 -0
- package/initramfs/buninu/bin/sz.bat +3 -0
- package/initramfs/buninu/bin/sz.sh +5 -0
- package/initramfs/buninu/bin/tts.bat +3 -0
- package/initramfs/buninu/bin/xclip.bat +3 -0
- package/initramfs/buninu/bin/xdg-open.bat +3 -0
- package/initramfs/buninu/demo-server.js +64 -0
- package/initramfs/buninu/icon.png +0 -0
- package/initramfs/buninu/package.json +59 -0
- package/initramfs/etc/resolv.conf +1 -0
- package/initramfs/init.js +339 -0
- package/initramfs/lib/ld-musl-x86_64.so.1 +0 -0
- package/initramfs/lib/libc.musl-x86_64.so.1 +0 -0
- package/initramfs/lib/libgcc_s.so.1 +0 -0
- package/initramfs/lib/libstdc++.so.6 +0 -0
- package/initramfs/usr/bin/env +7 -0
- package/package.json +42 -0
- package/run-qemu.sh +44 -0
- package/scripts/fetch.sh +26 -0
- package/scripts/pack-initramfs.sh +41 -0
- package/test/build-init-bootstrap.sh +23 -0
- package/test/init-bootstrap.c +55 -0
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
const fs = require("fs");
|
|
4
|
+
const path = require("path");
|
|
5
|
+
const {
|
|
6
|
+
basenameSafe,
|
|
7
|
+
loadZmodem,
|
|
8
|
+
restoreStdin,
|
|
9
|
+
setRawStdin,
|
|
10
|
+
stderr,
|
|
11
|
+
appendDebugLog,
|
|
12
|
+
writeOctets,
|
|
13
|
+
} = require("./zmodem-node");
|
|
14
|
+
const {
|
|
15
|
+
BridgeInputParser,
|
|
16
|
+
emitBridgeMessage,
|
|
17
|
+
} = require("./windows-bridge-node");
|
|
18
|
+
|
|
19
|
+
async function main() {
|
|
20
|
+
if (process.argv.includes("-h") || process.argv.includes("--help")) {
|
|
21
|
+
stderr("usage: node rz.js [target-dir]");
|
|
22
|
+
process.exitCode = 0;
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
const targetDir = process.argv[2] ? path.resolve(process.argv[2]) : process.cwd();
|
|
27
|
+
fs.mkdirSync(targetDir, { recursive: true });
|
|
28
|
+
|
|
29
|
+
if (process.platform === "win32") {
|
|
30
|
+
await runWindowsBridge(targetDir);
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
const Zmodem = await loadZmodem();
|
|
35
|
+
const session = new Zmodem.Session.Receive();
|
|
36
|
+
let ending = false;
|
|
37
|
+
const completedUploads = [];
|
|
38
|
+
|
|
39
|
+
const finish = (code, error) => {
|
|
40
|
+
if (ending) {
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
ending = true;
|
|
44
|
+
restoreStdin();
|
|
45
|
+
if (error) {
|
|
46
|
+
stderr(String(error && error.stack ? error.stack : error));
|
|
47
|
+
} else if (code === 0) {
|
|
48
|
+
for (const file of completedUploads) {
|
|
49
|
+
stderr(`uploaded ${file.path} (${formatByteCount(file.size)})`);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
process.exitCode = code;
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
process.on("SIGINT", () => {
|
|
56
|
+
try {
|
|
57
|
+
if (!session.has_ended()) {
|
|
58
|
+
session.abort();
|
|
59
|
+
}
|
|
60
|
+
} catch {}
|
|
61
|
+
finish(130);
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
session.set_sender((octets) => {
|
|
65
|
+
void writeOctets(octets).catch((error) => finish(1, error));
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
session.on("offer", (offer) => {
|
|
69
|
+
void receiveOffer(offer, targetDir, completedUploads).catch((error) => {
|
|
70
|
+
try {
|
|
71
|
+
session.abort();
|
|
72
|
+
} catch {}
|
|
73
|
+
finish(1, error);
|
|
74
|
+
});
|
|
75
|
+
});
|
|
76
|
+
|
|
77
|
+
session.on("session_end", () => {
|
|
78
|
+
finish(0);
|
|
79
|
+
});
|
|
80
|
+
|
|
81
|
+
process.stdin.on("data", (chunk) => {
|
|
82
|
+
try {
|
|
83
|
+
session.consume(Array.from(chunk));
|
|
84
|
+
} catch (error) {
|
|
85
|
+
finish(1, error);
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
|
|
89
|
+
process.stdin.on("end", () => {
|
|
90
|
+
if (!ending) {
|
|
91
|
+
finish(session.has_ended() ? 0 : 1, session.has_ended() ? null : new Error("stdin ended before ZMODEM session completed"));
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
|
|
95
|
+
setRawStdin();
|
|
96
|
+
stderr(`rz ready: waiting for sender, target dir ${targetDir}`);
|
|
97
|
+
session.start();
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
async function runWindowsBridge(targetDir) {
|
|
101
|
+
const requestId = `${Date.now()}-${Math.random().toString(16).slice(2)}`;
|
|
102
|
+
let finished = false;
|
|
103
|
+
|
|
104
|
+
const finish = (code, error) => {
|
|
105
|
+
if (finished) {
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
108
|
+
finished = true;
|
|
109
|
+
if (error) {
|
|
110
|
+
stderr(String(error && error.stack ? error.stack : error));
|
|
111
|
+
}
|
|
112
|
+
restoreStdin();
|
|
113
|
+
process.exitCode = code;
|
|
114
|
+
};
|
|
115
|
+
|
|
116
|
+
const parser = new BridgeInputParser((message) => {
|
|
117
|
+
try {
|
|
118
|
+
if (!message || message.requestId !== requestId) {
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
if (message.op === "upload_cancel") {
|
|
123
|
+
finish(1, new Error("upload canceled"));
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
if (message.op === "upload_error") {
|
|
128
|
+
finish(1, new Error(String(message.message || "upload failed")));
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
if (message.op === "upload_finish") {
|
|
133
|
+
finish(0);
|
|
134
|
+
}
|
|
135
|
+
} catch (error) {
|
|
136
|
+
finish(1, error);
|
|
137
|
+
}
|
|
138
|
+
});
|
|
139
|
+
|
|
140
|
+
process.on("SIGINT", () => finish(130));
|
|
141
|
+
process.stdin.on("data", (chunk) => parser.consume(chunk));
|
|
142
|
+
process.stdin.on("end", () => {
|
|
143
|
+
if (!finished) {
|
|
144
|
+
finish(1, new Error("stdin ended before upload completed"));
|
|
145
|
+
}
|
|
146
|
+
});
|
|
147
|
+
|
|
148
|
+
setRawStdin();
|
|
149
|
+
stderr(`rz ready: waiting for sender, target dir ${targetDir}`);
|
|
150
|
+
emitBridgeMessage({
|
|
151
|
+
op: "upload_request",
|
|
152
|
+
requestId,
|
|
153
|
+
targetDir,
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
async function receiveOffer(offer, targetDir, completedUploads) {
|
|
158
|
+
const details = offer.get_details();
|
|
159
|
+
const originalName = details.name;
|
|
160
|
+
const localName = basenameSafe(originalName);
|
|
161
|
+
const outputPath = path.join(targetDir, localName);
|
|
162
|
+
const fd = fs.openSync(outputPath, "w", details.mode ? details.mode & 0o777 : 0o644);
|
|
163
|
+
let receivedBytes = 0;
|
|
164
|
+
|
|
165
|
+
debug(`receiving ${originalName} -> ${outputPath}`);
|
|
166
|
+
|
|
167
|
+
try {
|
|
168
|
+
await offer.accept({
|
|
169
|
+
on_input: (payload) => {
|
|
170
|
+
const buffer = Buffer.from(payload);
|
|
171
|
+
fs.writeSync(fd, buffer);
|
|
172
|
+
receivedBytes += buffer.length;
|
|
173
|
+
},
|
|
174
|
+
});
|
|
175
|
+
} finally {
|
|
176
|
+
fs.closeSync(fd);
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
if (details.mtime instanceof Date && !Number.isNaN(details.mtime.valueOf())) {
|
|
180
|
+
fs.utimesSync(outputPath, new Date(), details.mtime);
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
completedUploads.push({ path: outputPath, size: receivedBytes });
|
|
184
|
+
debug(`received ${outputPath}`);
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
function debug(message) {
|
|
188
|
+
appendDebugLog(message);
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
function formatByteCount(bytes) {
|
|
192
|
+
return `${Number(bytes || 0).toLocaleString()} bytes`;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
main().catch((error) => {
|
|
196
|
+
restoreStdin();
|
|
197
|
+
stderr(String(error && error.stack ? error.stack : error));
|
|
198
|
+
process.exitCode = 1;
|
|
199
|
+
});
|
|
@@ -0,0 +1,384 @@
|
|
|
1
|
+
# Single-file executable bootstrap
|
|
2
|
+
|
|
3
|
+
Bundles a project's runtime assets into one `bun build --compile` binary, so
|
|
4
|
+
the executable carries its own `static/`, templates, documentation and so on.
|
|
5
|
+
|
|
6
|
+
Assets are declared once, in `package.json`:
|
|
7
|
+
|
|
8
|
+
```json
|
|
9
|
+
{
|
|
10
|
+
"assets": ["static", "README.md", "README.en.md"]
|
|
11
|
+
}
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
Paths are relative to the project root. Folders are packed recursively; only
|
|
15
|
+
regular files are stored, so symlinks and empty folders leave no trace.
|
|
16
|
+
|
|
17
|
+
## The two back ends
|
|
18
|
+
|
|
19
|
+
The default packs everything into a gzipped `assets.tar` that is embedded as a
|
|
20
|
+
single file and unpacked into memory at startup. Setting `ASSETS_BUNFS=1` at
|
|
21
|
+
build time switches to `bun build --compile --asset`, which stores the files
|
|
22
|
+
individually inside the binary's virtual filesystem instead.
|
|
23
|
+
|
|
24
|
+
Reading code never sees the difference — `assetsHelper` answers the same keys
|
|
25
|
+
either way. The trade is binary size against startup cost:
|
|
26
|
+
|
|
27
|
+
| | tar (default) | `ASSETS_BUNFS=1` |
|
|
28
|
+
| --- | --- | --- |
|
|
29
|
+
| Stored as | one gzipped archive | individual files, uncompressed |
|
|
30
|
+
| Size, for jsgotty's 3.45 MB of assets | **0.70 MB** | 3.45 MB |
|
|
31
|
+
| Work before `main` runs | decode the archive, copy every file into memory | **none** |
|
|
32
|
+
| Startup cost, same assets | ~16 ms | **0 ms** |
|
|
33
|
+
| Resident memory | whole payload, always | only what is read |
|
|
34
|
+
| Maturity | in use | experimental |
|
|
35
|
+
|
|
36
|
+
Text compresses well, so the tar usually wins on size by a wide margin — for
|
|
37
|
+
jsgotty most of the payload is `static/`, whose JavaScript and CSS shrink to a
|
|
38
|
+
fifth. What it costs is paid on every run, whether or not the program touches a
|
|
39
|
+
single asset. Reach for `ASSETS_BUNFS=1` when that startup work, or holding the
|
|
40
|
+
whole payload in memory, matters more than the extra megabytes on disk.
|
|
41
|
+
|
|
42
|
+
## Adopting it in another project
|
|
43
|
+
|
|
44
|
+
Copy `single-exe/` to the project root. Nothing inside it hard-codes its own
|
|
45
|
+
name or depth, so it can be renamed or moved — but the importing code has to
|
|
46
|
+
follow, so staying at the root is the easy path. Three edits point it at the
|
|
47
|
+
project around it.
|
|
48
|
+
|
|
49
|
+
1. **`assetsPacker.js`, the first two lines.** They are the only place the
|
|
50
|
+
asset root is written down, and a static import specifier cannot be
|
|
51
|
+
computed, so both must be literal:
|
|
52
|
+
|
|
53
|
+
```js
|
|
54
|
+
import pkg from "../package.json" with { type: "json" };
|
|
55
|
+
export const ASSETS_ROOT = "..";
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
2. **`entry.mjs`, the import of the program.** It names what to start, and
|
|
59
|
+
entry.mjs is the compiled entry point in both back ends:
|
|
60
|
+
|
|
61
|
+
```js
|
|
62
|
+
await import("../src/index.js");
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
**Keep the `await`.** It reads like a formality — nothing here needs the
|
|
66
|
+
module object — but together with the `await globalThis.assetsLoaderPromise`
|
|
67
|
+
line above it, it is the only top-level `await` the compiled program writes
|
|
68
|
+
anywhere, and `--bytecode` reads exactly that to decide the program starts
|
|
69
|
+
asynchronously. Turn both into `.then(…)` and the build produces an
|
|
70
|
+
executable that exits 0 without running a line.
|
|
71
|
+
[Why](#the-await-in-entrymjs-is-load-bearing) explains the trap.
|
|
72
|
+
|
|
73
|
+
3. **`package.json`.** Add the `assets` array shown above.
|
|
74
|
+
|
|
75
|
+
Everything else — `compiled.js`, `assetsHelper.js`, `assetsLoader.mjs` — is
|
|
76
|
+
project independent, with one exception: `buildHtmlBundleImageMap` defaults its
|
|
77
|
+
attribute name to jsmdcui's `data-mdcui-src`, so pass your own.
|
|
78
|
+
|
|
79
|
+
Node's own entry path must not import `assetsLoader.mjs` or `entry.mjs`; those
|
|
80
|
+
are Bun only. `assetsHelper.js` and `compiled.js` run under Node 20.11+.
|
|
81
|
+
|
|
82
|
+
## Reading assets
|
|
83
|
+
|
|
84
|
+
Import from `assetsHelper.js`. Keys are the same package-relative paths that
|
|
85
|
+
appear in `package.json`.
|
|
86
|
+
|
|
87
|
+
| Function | Returns |
|
|
88
|
+
| --- | --- |
|
|
89
|
+
| `readInternalAssetText(path)` | string, or `null` when not embedded |
|
|
90
|
+
| `readInternalAssetBytes(path)` | `Uint8Array`, or `null` |
|
|
91
|
+
| `readAssetText(path)` | string, falling back to the file on disk |
|
|
92
|
+
| `readAssetBytes(path)` | `Uint8Array`, same fallback |
|
|
93
|
+
| `hasInternalAssets()` | whether this package has anything embedded |
|
|
94
|
+
| `listInternalAssetPaths(prefix?)` | every embedded path under `prefix` |
|
|
95
|
+
| `listInternalAssetDirs(prefix?)` | the immediate child names under `prefix` |
|
|
96
|
+
| `assetPath(...parts)` | joins parts into a key |
|
|
97
|
+
| `getAssetKey(path)` | the key as stored, namespace included |
|
|
98
|
+
| `assetDiskPath(path)` | where the disk fallback reads that key from |
|
|
99
|
+
| `SELF` | this package's namespace, `assets/<name>@<version>` |
|
|
100
|
+
|
|
101
|
+
The read functions are synchronous for embedded assets on both back ends.
|
|
102
|
+
`readAssetText` / `readAssetBytes` are async only because of the disk
|
|
103
|
+
fallback, which is what makes the same code work from a source checkout.
|
|
104
|
+
|
|
105
|
+
**Only the read functions fall back to disk.** The listing functions report
|
|
106
|
+
what is embedded and nothing else, so from a source checkout they return an
|
|
107
|
+
empty array. Branch on `hasInternalAssets()` and read the directory yourself:
|
|
108
|
+
|
|
109
|
+
```js
|
|
110
|
+
import { readdirSync } from "node:fs";
|
|
111
|
+
import { join } from "node:path";
|
|
112
|
+
import { readAssetText, hasInternalAssets, listInternalAssetDirs } from "../single-exe/assetsHelper.js";
|
|
113
|
+
import { REPO_ROOT } from "../single-exe/compiled.js";
|
|
114
|
+
|
|
115
|
+
// Embedded or on disk, this one already works either way.
|
|
116
|
+
const index = await readAssetText("static/index.html");
|
|
117
|
+
|
|
118
|
+
// Listing does not, so pick the source.
|
|
119
|
+
const staticDirs = hasInternalAssets()
|
|
120
|
+
? listInternalAssetDirs("static")
|
|
121
|
+
: readdirSync(join(REPO_ROOT, "static"));
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
## Building
|
|
125
|
+
|
|
126
|
+
`compiled.js` exports the build entry points. Wire `buildEarlyExit` into the
|
|
127
|
+
CLI and it handles `--build-exe` and `--build-for <target>`:
|
|
128
|
+
|
|
129
|
+
```js
|
|
130
|
+
import { buildEarlyExit, IS_COMPILED, REPO_ROOT } from "./single-exe/compiled.js";
|
|
131
|
+
|
|
132
|
+
await buildEarlyExit(process.argv, "myapp");
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
`REPO_ROOT` is the project root in a checkout and the executable's own folder
|
|
136
|
+
once compiled, which is where `--assets-extract` writes. `IS_COMPILED` tells
|
|
137
|
+
the two apart.
|
|
138
|
+
|
|
139
|
+
### Chaining file/folder assets across dependencies
|
|
140
|
+
|
|
141
|
+
A build first bundles once to write a metafile, then treats every
|
|
142
|
+
`assetsPacker.js` appearing in its `inputs` as a participant. Each package
|
|
143
|
+
vendors its own `single-exe/`, and its `assetsHelper` imports its
|
|
144
|
+
`assetsPacker`, so a packer lands in that graph exactly when the package is
|
|
145
|
+
reachable from the entry point. There is no registration step, and anything
|
|
146
|
+
tree-shaken away brings nothing with it.
|
|
147
|
+
|
|
148
|
+
The packers then run one after another, each adding its files under its own
|
|
149
|
+
`assets/<name>@<version>/` namespace — appending into the shared `assets.tar`
|
|
150
|
+
by default, or copying into the shared `build/assets` tree under
|
|
151
|
+
`ASSETS_BUNFS=1`. Only once every packer has finished does the real compile
|
|
152
|
+
run, so the archive is complete and, by default, compressed by then.
|
|
153
|
+
|
|
154
|
+
That namespace is why `ASSETS_BUNFS=1` stages every package into one fixed
|
|
155
|
+
`build/assets`. `--asset` keeps only the **basename** of the path it is given
|
|
156
|
+
and preserves everything below it, so the folder's own name becomes the root
|
|
157
|
+
inside the binary:
|
|
158
|
+
|
|
159
|
+
```
|
|
160
|
+
--asset ./build/assets with build/assets/jsgotty@1.1.6/static/index.html
|
|
161
|
+
-> assets/jsgotty@1.1.6/static/index.html
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
Pass `./build/assets/jsgotty@1.1.6` instead and `build/assets/` is gone: the
|
|
165
|
+
files land at `jsgotty@1.1.6/...` and every package gets its own root. One
|
|
166
|
+
folder named `assets`, everyone copying into it, is what makes the keys come
|
|
167
|
+
out the same as the ones the tar back end writes.
|
|
168
|
+
|
|
169
|
+
`assetsPacker.js` also runs standalone; `--help` documents its flags.
|
|
170
|
+
|
|
171
|
+
## Why the loader hands over a Promise
|
|
172
|
+
|
|
173
|
+
`entry.mjs` imports `assetsLoader.mjs`, awaits `globalThis.assetsLoaderPromise`,
|
|
174
|
+
and only then imports the main program. The indirection is deliberate: the
|
|
175
|
+
loader carries a Bun-only import,
|
|
176
|
+
|
|
177
|
+
```js
|
|
178
|
+
import assets from "./assets.tar" with { type: "file" };
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
and if the main program imported the loader, that dependency would land in its
|
|
182
|
+
module graph. Node could then no longer load the program at all — not even to
|
|
183
|
+
fall back to reading the assets from disk.
|
|
184
|
+
|
|
185
|
+
Keeping the loader behind `entry.mjs` means the main program never mentions it,
|
|
186
|
+
so Node 20.11+ runs the same file directly against on-disk assets while Bun
|
|
187
|
+
runs it through the bootstrap. The Promise is that boundary, not a workaround
|
|
188
|
+
for missing top-level await.
|
|
189
|
+
|
|
190
|
+
`ASSETS_BUNFS=1` sidesteps the question: there is no tar to load, so the build
|
|
191
|
+
writes `.bunfs-entry.mjs` next to `entry.mjs` — the same file with the loader
|
|
192
|
+
import removed — compiles that, and deletes it afterwards. A copy rather than a
|
|
193
|
+
stub, because entry.mjs may do more than import the program: a CommonJS main
|
|
194
|
+
that starts itself from `require.main === module` needs the exported starter
|
|
195
|
+
called instead, and that call has to survive. jsgotty is exactly that case; see
|
|
196
|
+
[below](#the-entry-import-calls-an-exported-starter).
|
|
197
|
+
|
|
198
|
+
## The `await` in entry.mjs is load-bearing
|
|
199
|
+
|
|
200
|
+
`--bytecode` decides whether a program starts asynchronously by looking for a
|
|
201
|
+
top-level `await` **written in some file's own source**. The bundler moves a
|
|
202
|
+
module into a lazy init function whenever something dynamically imports it, and
|
|
203
|
+
a module moved that way takes its top-level `await` with it — what stays behind
|
|
204
|
+
is an `await init_x()` the bundler wrote itself, which does not count. If no
|
|
205
|
+
file wrote one, the executable is evaluated on the synchronous path, its
|
|
206
|
+
suspended startup is dropped, and it exits 0 having run nothing. No error, at
|
|
207
|
+
any `--minify` setting, however small the program.
|
|
208
|
+
|
|
209
|
+
`entry.mjs` is immune because it writes its own, and one is enough. Every other
|
|
210
|
+
`await` in the graph — all of `assetsLoader.mjs`'s, for one — sits inside a
|
|
211
|
+
function and cannot help. It is also why bunfs builds compile a copy of that
|
|
212
|
+
file rather than handing the main program to `bun build` directly: a main
|
|
213
|
+
program that reaches top-level await only through its imports writes none of
|
|
214
|
+
its own.
|
|
215
|
+
|
|
216
|
+
Upstream: `src/bundler/linker_context/postProcessJSChunk.rs` skips exactly the
|
|
217
|
+
modules the bundler moved, still true on oven-sh/bun `main` at 8eb5b6e2b5
|
|
218
|
+
(2026-08-22). Until that changes, treat entry.mjs's `await`s as API.
|
|
219
|
+
|
|
220
|
+
## Environment variables
|
|
221
|
+
|
|
222
|
+
| Variable | When | Effect |
|
|
223
|
+
| --- | --- | --- |
|
|
224
|
+
| `ASSETS_BUNFS=1` | build | use `--asset` instead of the tar |
|
|
225
|
+
| `ASSETS_NO_GZIP=1` | build | leave `assets.tar` uncompressed |
|
|
226
|
+
| `ASSETS_DEBUG=1` | run | print how long unpacking took |
|
|
227
|
+
|
|
228
|
+
## Runtime flags
|
|
229
|
+
|
|
230
|
+
| Flag | Effect |
|
|
231
|
+
| --- | --- |
|
|
232
|
+
| `--assets-list` | print every embedded path and exit |
|
|
233
|
+
| `--assets-extract` | write the assets next to the executable and exit |
|
|
234
|
+
| `--assets-external` | ignore embedded assets and read from disk |
|
|
235
|
+
|
|
236
|
+
These are handled by `assetsLoader.mjs`, so they exist in tar builds only.
|
|
237
|
+
|
|
238
|
+
## Advanced usage
|
|
239
|
+
|
|
240
|
+
### Forwarding arguments to `bun build`
|
|
241
|
+
|
|
242
|
+
Anything after `--build-exe`, or after the target given to `--build-for`, is
|
|
243
|
+
passed straight through to `bun build`:
|
|
244
|
+
|
|
245
|
+
```shell
|
|
246
|
+
bun ./gotty.js --build-exe --sourcemap
|
|
247
|
+
bun ./gotty.js --build-for bun-linux-x64 --sourcemap
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
Order matters. The flags have to come after the build switch, or Bun consumes
|
|
251
|
+
them before the program ever starts:
|
|
252
|
+
|
|
253
|
+
```shell
|
|
254
|
+
# Wrong: Bun parses this define before any of your code runs
|
|
255
|
+
bun --define MY_APP=../app.md ./gotty.js --build-exe
|
|
256
|
+
|
|
257
|
+
# Right
|
|
258
|
+
bun ./gotty.js --build-exe --define MY_APP=../app.md
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
### `--define` with a string value
|
|
262
|
+
|
|
263
|
+
**Bun expects `--define` values to be JSON literals, so a string has to arrive
|
|
264
|
+
already quoted.** A bare path is read as an identifier and the build fails or
|
|
265
|
+
inlines something unintended. Quoting it through a shell is awkward, so
|
|
266
|
+
`compiled.js` exports a helper that does it:
|
|
267
|
+
|
|
268
|
+
```js
|
|
269
|
+
import { buildEarlyExit, stringifyNonPrimitiveDefineValues } from "./single-exe/compiled.js";
|
|
270
|
+
|
|
271
|
+
stringifyNonPrimitiveDefineValues(process.argv, "MY_APP");
|
|
272
|
+
await buildEarlyExit(process.argv, "my-bin");
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
Call it before `buildEarlyExit`, once per define name you want treated as a
|
|
276
|
+
string. It rewrites the value in place:
|
|
277
|
+
|
|
278
|
+
```js
|
|
279
|
+
["--define", "MY_APP=../app.md"] // what the user typed
|
|
280
|
+
["--define", 'MY_APP="../app.md"'] // what Bun receives
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
`--define=MY_APP=../app.md` works the same way. Numbers, booleans, `null` and
|
|
284
|
+
`undefined` are left alone, so only genuine strings get quoted.
|
|
285
|
+
|
|
286
|
+
### Images from an imported HTML bundle
|
|
287
|
+
|
|
288
|
+
A compiled binary exposes an imported HTML entry as a `homepage` object:
|
|
289
|
+
`homepage.index` is the compiled HTML and `homepage.files` lists the
|
|
290
|
+
content-hashed assets by their path inside the binary. `assetsHelper` can map
|
|
291
|
+
the *original* image references back to those paths, without copying any image
|
|
292
|
+
bytes into memory.
|
|
293
|
+
|
|
294
|
+
Bun rewrites `src` during the build, so keep the original reference in a custom
|
|
295
|
+
attribute of your own choosing:
|
|
296
|
+
|
|
297
|
+
```html
|
|
298
|
+
<!-- source -->
|
|
299
|
+
<img src="./images/photo.jpg" data-original-image="./images/photo.jpg">
|
|
300
|
+
|
|
301
|
+
<!-- compiled -->
|
|
302
|
+
<img src="/photo-abcd1234.jpg" data-original-image="./images/photo.jpg">
|
|
303
|
+
```
|
|
304
|
+
|
|
305
|
+
Then build the map once, in a compiled binary only:
|
|
306
|
+
|
|
307
|
+
```js
|
|
308
|
+
import { buildHtmlBundleImageMap, canonicalHtmlBundleImageHref } from "../single-exe/assetsHelper.js";
|
|
309
|
+
import { IS_COMPILED } from "../single-exe/compiled.js";
|
|
310
|
+
|
|
311
|
+
const images = IS_COMPILED
|
|
312
|
+
? await buildHtmlBundleImageMap(homepage, "data-original-image")
|
|
313
|
+
: null;
|
|
314
|
+
|
|
315
|
+
const path = images?.get(canonicalHtmlBundleImageHref(originalHref));
|
|
316
|
+
const bytes = path ? await Bun.file(path).bytes() : null;
|
|
317
|
+
```
|
|
318
|
+
|
|
319
|
+
`buildHtmlBundleImageMap` returns a `Map` from canonical original reference to
|
|
320
|
+
the path inside the binary; it decodes HTML entities and percent encoding so a
|
|
321
|
+
reference written either way still matches. Reading stays lazy — the bytes are
|
|
322
|
+
only touched when you use the returned path.
|
|
323
|
+
|
|
324
|
+
Lower level, if you already hold a rewritten public path such as
|
|
325
|
+
`/photo-abcd1234.jpg`: `findHtmlBundleAsset(homepage, publicPath, options)`
|
|
326
|
+
finds its `homepage.files` entry, `findHtmlBundleImageAsset()` restricts that
|
|
327
|
+
to `image/*`, and `htmlBundleImageAssetPath()` returns just the path.
|
|
328
|
+
|
|
329
|
+
Never hard-code `/$bunfs/root/` or `B:/~BUN/`; always use the path that
|
|
330
|
+
`homepage.files` reports.
|
|
331
|
+
|
|
332
|
+
## jsgotty specifics
|
|
333
|
+
|
|
334
|
+
The rest of this file is generic. These names belong to jsgotty itself and are
|
|
335
|
+
not reserved by the bootstrap — an adopting project picks its own.
|
|
336
|
+
|
|
337
|
+
Building is optional; running `bun gotty.js` from a checkout, as the root
|
|
338
|
+
`README.md` describes, remains the usual way to run jsgotty.
|
|
339
|
+
|
|
340
|
+
```shell
|
|
341
|
+
bun ./gotty.js --build-exe
|
|
342
|
+
bun ./gotty.js --build-for bun-linux-x64
|
|
343
|
+
```
|
|
344
|
+
|
|
345
|
+
Both produce `jsgt`: `gotty.js` calls `buildEarlyExit(process.argv, "jsgt")`
|
|
346
|
+
from `bootstrap()`, before any CLI parsing, so the build switches exit before
|
|
347
|
+
a server is ever started. Neither works from an already compiled binary.
|
|
348
|
+
|
|
349
|
+
The three packed entries — `static`, `README.md`, `README.en.md` — are what the
|
|
350
|
+
HTTP server hands out: `index.html`, `manifest.json`, `help.md`, the frontend
|
|
351
|
+
JavaScript and CSS, and the two READMEs behind the help pages.
|
|
352
|
+
|
|
353
|
+
### The entry import calls an exported starter
|
|
354
|
+
|
|
355
|
+
`gotty.js` is CommonJS and starts itself from `require.main === module`. With
|
|
356
|
+
`entry.mjs` as the bundle's entry point that guard is inlined to `false`, so
|
|
357
|
+
the import cannot rely on it and calls the export instead:
|
|
358
|
+
|
|
359
|
+
```js
|
|
360
|
+
const { bootstrap } = await import("../gotty.js");
|
|
361
|
+
|
|
362
|
+
await bootstrap();
|
|
363
|
+
```
|
|
364
|
+
|
|
365
|
+
Both back ends go through it: `ASSETS_BUNFS=1` compiles a copy of `entry.mjs`,
|
|
366
|
+
so `gotty.js` is never the entry point and the guard stays `false` in either
|
|
367
|
+
mode. Handing `gotty.js` to `bun build` directly instead would compile it as
|
|
368
|
+
the entry, Bun would rewrite the guard to `import.meta.main` — true — and it
|
|
369
|
+
would start itself; that path is not taken, and `bootstrap` is what starts the
|
|
370
|
+
program in both builds.
|
|
371
|
+
|
|
372
|
+
### `packAssets.sh`
|
|
373
|
+
|
|
374
|
+
The original implementation, kept as a reference: a hand-written tar of the
|
|
375
|
+
three asset entries, from before `assetsPacker.js` and its `package.json`
|
|
376
|
+
declaration existed. `buildExecutable()` in `compiled.js` is the matching
|
|
377
|
+
build path and still runs it, but `buildExe` now points at `buildExeAssets`,
|
|
378
|
+
so nothing in the current flow calls either. It is the shortest way to see
|
|
379
|
+
what the packer produces, and it still packs an `assets.tar` by hand:
|
|
380
|
+
|
|
381
|
+
```shell
|
|
382
|
+
bun ./single-exe/packAssets.sh
|
|
383
|
+
bun build --compile --bytecode --minify ./single-exe/entry.mjs --outfile=jsgt
|
|
384
|
+
```
|