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.
Files changed (621) hide show
  1. package/LICENSE +21 -0
  2. package/LICENSES/Bun-LICENSE.md +84 -0
  3. package/LICENSES/GCC-Runtime-Library-Exception-3.1.txt +73 -0
  4. package/LICENSES/GPL-2.0.txt +338 -0
  5. package/LICENSES/GPL-3.0.txt +674 -0
  6. package/LICENSES/LGPL-2.1.txt +501 -0
  7. package/LICENSES/Linux-syscall-note.txt +25 -0
  8. package/LICENSES/musl-COPYRIGHT.txt +193 -0
  9. package/NOTICE.md +184 -0
  10. package/README.md +537 -0
  11. package/build-image.sh +44 -0
  12. package/build-uki.sh +75 -0
  13. package/fetch-alpine.sh +80 -0
  14. package/fetch-bun.sh +41 -0
  15. package/fetch-plus-build.sh +11 -0
  16. package/hello/build-hello.sh +14 -0
  17. package/hello/hello.c +50 -0
  18. package/index.js +235 -0
  19. package/initramfs/bin/sh +3 -0
  20. package/initramfs/buninu/.bashrc +11 -0
  21. package/initramfs/buninu/ARCHITECTURE.md +452 -0
  22. package/initramfs/buninu/CHANGELOG.md +580 -0
  23. package/initramfs/buninu/LICENSE +21 -0
  24. package/initramfs/buninu/README.md +1161 -0
  25. package/initramfs/buninu/apps/bun/make-bunBin.sh +99 -0
  26. package/initramfs/buninu/apps/bunmsh/CHANGELOG.md +493 -0
  27. package/initramfs/buninu/apps/bunmsh/LICENSE +21 -0
  28. package/initramfs/buninu/apps/bunmsh/LICENSE-MICRO +58 -0
  29. package/initramfs/buninu/apps/bunmsh/LICENSE-MKSH +295 -0
  30. package/initramfs/buninu/apps/bunmsh/PORTING.md +192 -0
  31. package/initramfs/buninu/apps/bunmsh/README.md +1042 -0
  32. package/initramfs/buninu/apps/bunmsh/bunmsh +7 -0
  33. package/initramfs/buninu/apps/bunmsh/bunshell.md +61 -0
  34. package/initramfs/buninu/apps/bunmsh/help/README.md +2237 -0
  35. package/initramfs/buninu/apps/bunmsh/help/alias.md +22 -0
  36. package/initramfs/buninu/apps/bunmsh/help/basename.md +38 -0
  37. package/initramfs/buninu/apps/bunmsh/help/builtin.md +25 -0
  38. package/initramfs/buninu/apps/bunmsh/help/bun.md +27 -0
  39. package/initramfs/buninu/apps/bunmsh/help/bunmsh.md +47 -0
  40. package/initramfs/buninu/apps/bunmsh/help/cat.md +31 -0
  41. package/initramfs/buninu/apps/bunmsh/help/catfancy.md +35 -0
  42. package/initramfs/buninu/apps/bunmsh/help/cd.md +22 -0
  43. package/initramfs/buninu/apps/bunmsh/help/chmod.md +27 -0
  44. package/initramfs/buninu/apps/bunmsh/help/clear.md +21 -0
  45. package/initramfs/buninu/apps/bunmsh/help/colon.md +22 -0
  46. package/initramfs/buninu/apps/bunmsh/help/command.md +27 -0
  47. package/initramfs/buninu/apps/bunmsh/help/cp.md +28 -0
  48. package/initramfs/buninu/apps/bunmsh/help/curl.md +181 -0
  49. package/initramfs/buninu/apps/bunmsh/help/cut.md +25 -0
  50. package/initramfs/buninu/apps/bunmsh/help/date.md +25 -0
  51. package/initramfs/buninu/apps/bunmsh/help/dirname.md +25 -0
  52. package/initramfs/buninu/apps/bunmsh/help/echo.md +25 -0
  53. package/initramfs/buninu/apps/bunmsh/help/env.md +27 -0
  54. package/initramfs/buninu/apps/bunmsh/help/eval.md +22 -0
  55. package/initramfs/buninu/apps/bunmsh/help/exec.md +22 -0
  56. package/initramfs/buninu/apps/bunmsh/help/exit.md +21 -0
  57. package/initramfs/buninu/apps/bunmsh/help/export.md +22 -0
  58. package/initramfs/buninu/apps/bunmsh/help/false.md +22 -0
  59. package/initramfs/buninu/apps/bunmsh/help/find.md +33 -0
  60. package/initramfs/buninu/apps/bunmsh/help/getopts.md +28 -0
  61. package/initramfs/buninu/apps/bunmsh/help/grep.md +34 -0
  62. package/initramfs/buninu/apps/bunmsh/help/head.md +27 -0
  63. package/initramfs/buninu/apps/bunmsh/help/kill.md +43 -0
  64. package/initramfs/buninu/apps/bunmsh/help/ln.md +28 -0
  65. package/initramfs/buninu/apps/bunmsh/help/ls.md +37 -0
  66. package/initramfs/buninu/apps/bunmsh/help/lsbun.md +29 -0
  67. package/initramfs/buninu/apps/bunmsh/help/lsfancy.md +37 -0
  68. package/initramfs/buninu/apps/bunmsh/help/md5sum.md +21 -0
  69. package/initramfs/buninu/apps/bunmsh/help/mkdir.md +27 -0
  70. package/initramfs/buninu/apps/bunmsh/help/mktemp.md +26 -0
  71. package/initramfs/buninu/apps/bunmsh/help/mv.md +26 -0
  72. package/initramfs/buninu/apps/bunmsh/help/print.md +30 -0
  73. package/initramfs/buninu/apps/bunmsh/help/printf.md +25 -0
  74. package/initramfs/buninu/apps/bunmsh/help/pspa.md +38 -0
  75. package/initramfs/buninu/apps/bunmsh/help/pspac.md +57 -0
  76. package/initramfs/buninu/apps/bunmsh/help/pwd.md +21 -0
  77. package/initramfs/buninu/apps/bunmsh/help/read.md +27 -0
  78. package/initramfs/buninu/apps/bunmsh/help/readonly.md +27 -0
  79. package/initramfs/buninu/apps/bunmsh/help/realpath.md +21 -0
  80. package/initramfs/buninu/apps/bunmsh/help/rm.md +33 -0
  81. package/initramfs/buninu/apps/bunmsh/help/rmdir.md +27 -0
  82. package/initramfs/buninu/apps/bunmsh/help/sed.md +29 -0
  83. package/initramfs/buninu/apps/bunmsh/help/seq.md +29 -0
  84. package/initramfs/buninu/apps/bunmsh/help/serve.md +50 -0
  85. package/initramfs/buninu/apps/bunmsh/help/set.md +26 -0
  86. package/initramfs/buninu/apps/bunmsh/help/sha256sum.md +21 -0
  87. package/initramfs/buninu/apps/bunmsh/help/shift.md +23 -0
  88. package/initramfs/buninu/apps/bunmsh/help/sleep.md +25 -0
  89. package/initramfs/buninu/apps/bunmsh/help/sort.md +29 -0
  90. package/initramfs/buninu/apps/bunmsh/help/source.md +23 -0
  91. package/initramfs/buninu/apps/bunmsh/help/tab.md +30 -0
  92. package/initramfs/buninu/apps/bunmsh/help/tac.md +29 -0
  93. package/initramfs/buninu/apps/bunmsh/help/tail.md +27 -0
  94. package/initramfs/buninu/apps/bunmsh/help/tee.md +25 -0
  95. package/initramfs/buninu/apps/bunmsh/help/test.md +30 -0
  96. package/initramfs/buninu/apps/bunmsh/help/time.md +29 -0
  97. package/initramfs/buninu/apps/bunmsh/help/touch.md +26 -0
  98. package/initramfs/buninu/apps/bunmsh/help/tr.md +26 -0
  99. package/initramfs/buninu/apps/bunmsh/help/true.md +22 -0
  100. package/initramfs/buninu/apps/bunmsh/help/type.md +21 -0
  101. package/initramfs/buninu/apps/bunmsh/help/umask.md +22 -0
  102. package/initramfs/buninu/apps/bunmsh/help/unalias.md +28 -0
  103. package/initramfs/buninu/apps/bunmsh/help/uname.md +31 -0
  104. package/initramfs/buninu/apps/bunmsh/help/unset.md +28 -0
  105. package/initramfs/buninu/apps/bunmsh/help/wc.md +27 -0
  106. package/initramfs/buninu/apps/bunmsh/help/whence.md +26 -0
  107. package/initramfs/buninu/apps/bunmsh/help/which.md +41 -0
  108. package/initramfs/buninu/apps/bunmsh/help/yes.md +23 -0
  109. package/initramfs/buninu/apps/bunmsh/index.js +7 -0
  110. package/initramfs/buninu/apps/bunmsh/package.json +30 -0
  111. package/initramfs/buninu/apps/bunmsh/serve.js +468 -0
  112. package/initramfs/buninu/apps/bunmsh/single-exe/README.md +402 -0
  113. package/initramfs/buninu/apps/bunmsh/single-exe/assetsHelper.js +371 -0
  114. package/initramfs/buninu/apps/bunmsh/single-exe/assetsLoader.mjs +85 -0
  115. package/initramfs/buninu/apps/bunmsh/single-exe/assetsPacker.js +218 -0
  116. package/initramfs/buninu/apps/bunmsh/single-exe/compiled.js +527 -0
  117. package/initramfs/buninu/apps/bunmsh/single-exe/entry.mjs +17 -0
  118. package/initramfs/buninu/apps/bunmsh/src/cat-fancy.js +117 -0
  119. package/initramfs/buninu/apps/bunmsh/src/cat-operands.js +31 -0
  120. package/initramfs/buninu/apps/bunmsh/src/completion.js +363 -0
  121. package/initramfs/buninu/apps/bunmsh/src/curl.js +1191 -0
  122. package/initramfs/buninu/apps/bunmsh/src/environment.js +61 -0
  123. package/initramfs/buninu/apps/bunmsh/src/fancy-ls.js +186 -0
  124. package/initramfs/buninu/apps/bunmsh/src/find.js +119 -0
  125. package/initramfs/buninu/apps/bunmsh/src/history.js +198 -0
  126. package/initramfs/buninu/apps/bunmsh/src/main.js +850 -0
  127. package/initramfs/buninu/apps/bunmsh/src/mouse.js +103 -0
  128. package/initramfs/buninu/apps/bunmsh/src/shell.js +3932 -0
  129. package/initramfs/buninu/apps/bunmsh/test/catfancy.test.js +102 -0
  130. package/initramfs/buninu/apps/bunmsh/test/curl.test.js +335 -0
  131. package/initramfs/buninu/apps/bunmsh/test/reference-source.sh +1 -0
  132. package/initramfs/buninu/apps/bunmsh/test/reference.test.js +817 -0
  133. package/initramfs/buninu/apps/bunmsh/test/serve/README.md +3 -0
  134. package/initramfs/buninu/apps/bunmsh/test/serve/bad.json +1 -0
  135. package/initramfs/buninu/apps/bunmsh/test/serve/data.json +1 -0
  136. package/initramfs/buninu/apps/bunmsh/test/serve/data.json5 +1 -0
  137. package/initramfs/buninu/apps/bunmsh/test/serve/data.jsonc +2 -0
  138. package/initramfs/buninu/apps/bunmsh/test/serve/data.jsonl +2 -0
  139. package/initramfs/buninu/apps/bunmsh/test/serve/data.ndjson +1 -0
  140. package/initramfs/buninu/apps/bunmsh/test/serve/data.toml +3 -0
  141. package/initramfs/buninu/apps/bunmsh/test/serve/data.ts +15 -0
  142. package/initramfs/buninu/apps/bunmsh/test/serve/data.xml +1 -0
  143. package/initramfs/buninu/apps/bunmsh/test/serve/data.yaml +3 -0
  144. package/initramfs/buninu/apps/bunmsh/test/serve/data.yml +1 -0
  145. package/initramfs/buninu/apps/bunmsh/test/serve.test.js +241 -0
  146. package/initramfs/buninu/apps/bunmsh/test/shell.test.js +2092 -0
  147. package/initramfs/buninu/apps/bunmsh/test/shell1.test.js +1087 -0
  148. package/initramfs/buninu/apps/bunmsh/test/shell2.test.js +457 -0
  149. package/initramfs/buninu/apps/bunmsh/test/shell3.test.js +741 -0
  150. package/initramfs/buninu/apps/bunmsh/test/t.sh +12 -0
  151. package/initramfs/buninu/apps/bunx/bunx.js +172 -0
  152. package/initramfs/buninu/apps/cmdlist +48 -0
  153. package/initramfs/buninu/apps/jsgotty/LICENSE +23 -0
  154. package/initramfs/buninu/apps/jsgotty/LICENSES/Apache-2.0-zmodem.js.txt +201 -0
  155. package/initramfs/buninu/apps/jsgotty/NOTICE +21 -0
  156. package/initramfs/buninu/apps/jsgotty/README.en.md +294 -0
  157. package/initramfs/buninu/apps/jsgotty/README.md +296 -0
  158. package/initramfs/buninu/apps/jsgotty/client.mjs +700 -0
  159. package/initramfs/buninu/apps/jsgotty/env.sh +2 -0
  160. package/initramfs/buninu/apps/jsgotty/gotty.js +3334 -0
  161. package/initramfs/buninu/apps/jsgotty/node_modules/.package-lock.json +35 -0
  162. package/initramfs/buninu/apps/jsgotty/node_modules/node-addon-api/LICENSE.md +9 -0
  163. package/initramfs/buninu/apps/jsgotty/node_modules/node-addon-api/README.md +319 -0
  164. package/initramfs/buninu/apps/jsgotty/node_modules/node-addon-api/common.gypi +20 -0
  165. package/initramfs/buninu/apps/jsgotty/node_modules/node-addon-api/except.gypi +25 -0
  166. package/initramfs/buninu/apps/jsgotty/node_modules/node-addon-api/index.js +12 -0
  167. package/initramfs/buninu/apps/jsgotty/node_modules/node-addon-api/napi-inl.deprecated.h +186 -0
  168. package/initramfs/buninu/apps/jsgotty/node_modules/node-addon-api/napi-inl.h +6607 -0
  169. package/initramfs/buninu/apps/jsgotty/node_modules/node-addon-api/napi.h +3201 -0
  170. package/initramfs/buninu/apps/jsgotty/node_modules/node-addon-api/node_addon_api.gyp +32 -0
  171. package/initramfs/buninu/apps/jsgotty/node_modules/node-addon-api/node_api.gyp +9 -0
  172. package/initramfs/buninu/apps/jsgotty/node_modules/node-addon-api/noexcept.gypi +26 -0
  173. package/initramfs/buninu/apps/jsgotty/node_modules/node-addon-api/nothing.c +0 -0
  174. package/initramfs/buninu/apps/jsgotty/node_modules/node-addon-api/package-support.json +21 -0
  175. package/initramfs/buninu/apps/jsgotty/node_modules/node-addon-api/package.json +480 -0
  176. package/initramfs/buninu/apps/jsgotty/node_modules/node-addon-api/tools/README.md +73 -0
  177. package/initramfs/buninu/apps/jsgotty/node_modules/node-addon-api/tools/check-napi.js +99 -0
  178. package/initramfs/buninu/apps/jsgotty/node_modules/node-addon-api/tools/clang-format.js +71 -0
  179. package/initramfs/buninu/apps/jsgotty/node_modules/node-addon-api/tools/conversion.js +301 -0
  180. package/initramfs/buninu/apps/jsgotty/node_modules/node-addon-api/tools/eslint-format.js +79 -0
  181. package/initramfs/buninu/apps/jsgotty/node_modules/ws/LICENSE +20 -0
  182. package/initramfs/buninu/apps/jsgotty/node_modules/ws/README.md +548 -0
  183. package/initramfs/buninu/apps/jsgotty/node_modules/ws/browser.js +8 -0
  184. package/initramfs/buninu/apps/jsgotty/node_modules/ws/index.js +22 -0
  185. package/initramfs/buninu/apps/jsgotty/node_modules/ws/lib/buffer-util.js +131 -0
  186. package/initramfs/buninu/apps/jsgotty/node_modules/ws/lib/constants.js +19 -0
  187. package/initramfs/buninu/apps/jsgotty/node_modules/ws/lib/event-target.js +292 -0
  188. package/initramfs/buninu/apps/jsgotty/node_modules/ws/lib/extension.js +203 -0
  189. package/initramfs/buninu/apps/jsgotty/node_modules/ws/lib/limiter.js +55 -0
  190. package/initramfs/buninu/apps/jsgotty/node_modules/ws/lib/permessage-deflate.js +528 -0
  191. package/initramfs/buninu/apps/jsgotty/node_modules/ws/lib/receiver.js +760 -0
  192. package/initramfs/buninu/apps/jsgotty/node_modules/ws/lib/sender.js +607 -0
  193. package/initramfs/buninu/apps/jsgotty/node_modules/ws/lib/stream.js +161 -0
  194. package/initramfs/buninu/apps/jsgotty/node_modules/ws/lib/subprotocol.js +62 -0
  195. package/initramfs/buninu/apps/jsgotty/node_modules/ws/lib/validation.js +152 -0
  196. package/initramfs/buninu/apps/jsgotty/node_modules/ws/lib/websocket-server.js +562 -0
  197. package/initramfs/buninu/apps/jsgotty/node_modules/ws/lib/websocket.js +1407 -0
  198. package/initramfs/buninu/apps/jsgotty/node_modules/ws/package.json +70 -0
  199. package/initramfs/buninu/apps/jsgotty/node_modules/ws/wrapper.mjs +21 -0
  200. package/initramfs/buninu/apps/jsgotty/package-lock.json +46 -0
  201. package/initramfs/buninu/apps/jsgotty/package.json +19 -0
  202. package/initramfs/buninu/apps/jsgotty/patches/windowsPtyAgent.js +326 -0
  203. package/initramfs/buninu/apps/jsgotty/patches/windowsTerminal.js +204 -0
  204. package/initramfs/buninu/apps/jsgotty/rz.js +199 -0
  205. package/initramfs/buninu/apps/jsgotty/single-exe/README.md +384 -0
  206. package/initramfs/buninu/apps/jsgotty/single-exe/assetsHelper.js +371 -0
  207. package/initramfs/buninu/apps/jsgotty/single-exe/assetsLoader.mjs +85 -0
  208. package/initramfs/buninu/apps/jsgotty/single-exe/assetsPacker.js +218 -0
  209. package/initramfs/buninu/apps/jsgotty/single-exe/compiled.js +498 -0
  210. package/initramfs/buninu/apps/jsgotty/single-exe/entry.mjs +23 -0
  211. package/initramfs/buninu/apps/jsgotty/single-exe/packAssets.sh +7 -0
  212. package/initramfs/buninu/apps/jsgotty/static/css/index.css +13 -0
  213. package/initramfs/buninu/apps/jsgotty/static/css/kitty.css +61 -0
  214. package/initramfs/buninu/apps/jsgotty/static/css/xterm.css +218 -0
  215. package/initramfs/buninu/apps/jsgotty/static/css/xterm_customize.css +35 -0
  216. package/initramfs/buninu/apps/jsgotty/static/favicon.ico +0 -0
  217. package/initramfs/buninu/apps/jsgotty/static/help.md +125 -0
  218. package/initramfs/buninu/apps/jsgotty/static/icon.svg +66 -0
  219. package/initramfs/buninu/apps/jsgotty/static/icon_192.png +0 -0
  220. package/initramfs/buninu/apps/jsgotty/static/index.html +164 -0
  221. package/initramfs/buninu/apps/jsgotty/static/js/gotty.js +31537 -0
  222. package/initramfs/buninu/apps/jsgotty/static/js/gotty.js.LICENSE.txt +7 -0
  223. package/initramfs/buninu/apps/jsgotty/static/js/gotty.js.map +1 -0
  224. package/initramfs/buninu/apps/jsgotty/static/js/gotty.licenses.txt +650 -0
  225. package/initramfs/buninu/apps/jsgotty/static/js/kitty.js +1101 -0
  226. package/initramfs/buninu/apps/jsgotty/static/js/windows_bridge.js +194 -0
  227. package/initramfs/buninu/apps/jsgotty/static/js/xterm-addon-unicode11.js +2 -0
  228. package/initramfs/buninu/apps/jsgotty/static/js/zmodem.js +1 -0
  229. package/initramfs/buninu/apps/jsgotty/static/manifest.json +15 -0
  230. package/initramfs/buninu/apps/jsgotty/sz.js +273 -0
  231. package/initramfs/buninu/apps/jsgotty/tests/kitty-order.test.js +58 -0
  232. package/initramfs/buninu/apps/jsgotty/tests/websocket-origin.test.js +54 -0
  233. package/initramfs/buninu/apps/jsgotty/viu.mjs +422 -0
  234. package/initramfs/buninu/apps/jsgotty/wgotty +62 -0
  235. package/initramfs/buninu/apps/jsgotty/windows-bridge-node.js +60 -0
  236. package/initramfs/buninu/apps/jsgotty/zmodem-node.js +262 -0
  237. package/initramfs/buninu/apps/jsmdcui/CHANGELOG.md +1118 -0
  238. package/initramfs/buninu/apps/jsmdcui/LICENSE +22 -0
  239. package/initramfs/buninu/apps/jsmdcui/README.md +1283 -0
  240. package/initramfs/buninu/apps/jsmdcui/cdp-maze.js +141 -0
  241. package/initramfs/buninu/apps/jsmdcui/clean.sh +9 -0
  242. package/initramfs/buninu/apps/jsmdcui/demos/basic.jpg +0 -0
  243. package/initramfs/buninu/apps/jsmdcui/demos/chinese.md +32 -0
  244. package/initramfs/buninu/apps/jsmdcui/demos/event.md +170 -0
  245. package/initramfs/buninu/apps/jsmdcui/demos/good.jpg +0 -0
  246. package/initramfs/buninu/apps/jsmdcui/demos/image-processor.md +366 -0
  247. package/initramfs/buninu/apps/jsmdcui/demos/image-processor.zh-TW.md +366 -0
  248. package/initramfs/buninu/apps/jsmdcui/demos/img-change.md +73 -0
  249. package/initramfs/buninu/apps/jsmdcui/demos/imgtool-zh.md +298 -0
  250. package/initramfs/buninu/apps/jsmdcui/demos/imgtool.md +298 -0
  251. package/initramfs/buninu/apps/jsmdcui/demos/maze.md +149 -0
  252. package/initramfs/buninu/apps/jsmdcui/demos/reactive.md +40 -0
  253. package/initramfs/buninu/apps/jsmdcui/demos/reader.md +513 -0
  254. package/initramfs/buninu/apps/jsmdcui/demos/select.md +63 -0
  255. package/initramfs/buninu/apps/jsmdcui/demos/todo-zh.md +190 -0
  256. package/initramfs/buninu/apps/jsmdcui/demos/todo.md +191 -0
  257. package/initramfs/buninu/apps/jsmdcui/edit +9 -0
  258. package/initramfs/buninu/apps/jsmdcui/jsmdcui.sh +16 -0
  259. package/initramfs/buninu/apps/jsmdcui/llm-maze.txt +94 -0
  260. package/initramfs/buninu/apps/jsmdcui/package.json +29 -0
  261. package/initramfs/buninu/apps/jsmdcui/project_structure.txt +35 -0
  262. package/initramfs/buninu/apps/jsmdcui/runmd.mjs +1140 -0
  263. package/initramfs/buninu/apps/jsmdcui/runtime/colorschemes/atom-dark.micro +33 -0
  264. package/initramfs/buninu/apps/jsmdcui/runtime/colorschemes/bubblegum.micro +31 -0
  265. package/initramfs/buninu/apps/jsmdcui/runtime/colorschemes/cmc-16.micro +47 -0
  266. package/initramfs/buninu/apps/jsmdcui/runtime/colorschemes/cmc-tc.micro +43 -0
  267. package/initramfs/buninu/apps/jsmdcui/runtime/colorschemes/darcula.micro +34 -0
  268. package/initramfs/buninu/apps/jsmdcui/runtime/colorschemes/default.micro +1 -0
  269. package/initramfs/buninu/apps/jsmdcui/runtime/colorschemes/dracula-tc.micro +49 -0
  270. package/initramfs/buninu/apps/jsmdcui/runtime/colorschemes/dukedark-tc.micro +38 -0
  271. package/initramfs/buninu/apps/jsmdcui/runtime/colorschemes/dukelight-tc.micro +38 -0
  272. package/initramfs/buninu/apps/jsmdcui/runtime/colorschemes/dukeubuntu-tc.micro +38 -0
  273. package/initramfs/buninu/apps/jsmdcui/runtime/colorschemes/geany.micro +29 -0
  274. package/initramfs/buninu/apps/jsmdcui/runtime/colorschemes/gotham.micro +29 -0
  275. package/initramfs/buninu/apps/jsmdcui/runtime/colorschemes/gruvbox-tc.micro +29 -0
  276. package/initramfs/buninu/apps/jsmdcui/runtime/colorschemes/gruvbox.micro +26 -0
  277. package/initramfs/buninu/apps/jsmdcui/runtime/colorschemes/material-tc.micro +36 -0
  278. package/initramfs/buninu/apps/jsmdcui/runtime/colorschemes/monokai-dark.micro +28 -0
  279. package/initramfs/buninu/apps/jsmdcui/runtime/colorschemes/monokai.micro +34 -0
  280. package/initramfs/buninu/apps/jsmdcui/runtime/colorschemes/one-dark.micro +39 -0
  281. package/initramfs/buninu/apps/jsmdcui/runtime/colorschemes/railscast.micro +37 -0
  282. package/initramfs/buninu/apps/jsmdcui/runtime/colorschemes/simple.micro +33 -0
  283. package/initramfs/buninu/apps/jsmdcui/runtime/colorschemes/solarized-tc.micro +31 -0
  284. package/initramfs/buninu/apps/jsmdcui/runtime/colorschemes/solarized.micro +30 -0
  285. package/initramfs/buninu/apps/jsmdcui/runtime/colorschemes/sunny-day.micro +29 -0
  286. package/initramfs/buninu/apps/jsmdcui/runtime/colorschemes/twilight.micro +40 -0
  287. package/initramfs/buninu/apps/jsmdcui/runtime/colorschemes/zenburn.micro +30 -0
  288. package/initramfs/buninu/apps/jsmdcui/runtime/help/actions.md +161 -0
  289. package/initramfs/buninu/apps/jsmdcui/runtime/help/cdp.md +130 -0
  290. package/initramfs/buninu/apps/jsmdcui/runtime/help/colors.md +421 -0
  291. package/initramfs/buninu/apps/jsmdcui/runtime/help/commands.md +161 -0
  292. package/initramfs/buninu/apps/jsmdcui/runtime/help/copypaste.md +149 -0
  293. package/initramfs/buninu/apps/jsmdcui/runtime/help/defaultkeys.md +148 -0
  294. package/initramfs/buninu/apps/jsmdcui/runtime/help/help.md +1283 -0
  295. package/initramfs/buninu/apps/jsmdcui/runtime/help/keybindings.md +355 -0
  296. package/initramfs/buninu/apps/jsmdcui/runtime/help/linter.md +90 -0
  297. package/initramfs/buninu/apps/jsmdcui/runtime/help/options.md +709 -0
  298. package/initramfs/buninu/apps/jsmdcui/runtime/help/plugins.md +544 -0
  299. package/initramfs/buninu/apps/jsmdcui/runtime/help/tutorial.md +112 -0
  300. package/initramfs/buninu/apps/jsmdcui/runtime/jsplugins/cdp/cdp-server.js +1263 -0
  301. package/initramfs/buninu/apps/jsmdcui/runtime/jsplugins/cdp/cdp.js +203 -0
  302. package/initramfs/buninu/apps/jsmdcui/runtime/jsplugins/chapter/chapter.js +111 -0
  303. package/initramfs/buninu/apps/jsmdcui/runtime/jsplugins/diff/diff.js +46 -0
  304. package/initramfs/buninu/apps/jsmdcui/runtime/jsplugins/example/example.js +117 -0
  305. package/initramfs/buninu/apps/jsmdcui/runtime/jsplugins/linter/linter.js +281 -0
  306. package/initramfs/buninu/apps/jsmdcui/runtime/plugins/autoclose/autoclose.lua +75 -0
  307. package/initramfs/buninu/apps/jsmdcui/runtime/plugins/ftoptions/ftoptions.lua +17 -0
  308. package/initramfs/buninu/apps/jsmdcui/runtime/plugins/literate/README.md +5 -0
  309. package/initramfs/buninu/apps/jsmdcui/runtime/plugins/literate/literate.lua +55 -0
  310. package/initramfs/buninu/apps/jsmdcui/runtime/plugins/status/help/status.md +21 -0
  311. package/initramfs/buninu/apps/jsmdcui/runtime/plugins/status/status.lua +62 -0
  312. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/LICENSE +22 -0
  313. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/PowerShell.yaml +128 -0
  314. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/README.md +63 -0
  315. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/ada.yaml +43 -0
  316. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/apacheconf.yaml +59 -0
  317. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/arduino.yaml +101 -0
  318. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/asciidoc.yaml +51 -0
  319. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/asm.yaml +123 -0
  320. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/ats.yaml +99 -0
  321. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/awk.yaml +44 -0
  322. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/b.yaml +87 -0
  323. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/bat.yaml +57 -0
  324. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/c.yaml +60 -0
  325. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/caddyfile.yaml +23 -0
  326. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/cake.yaml +7 -0
  327. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/clojure.yaml +38 -0
  328. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/cmake.yaml +42 -0
  329. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/coffeescript.yaml +56 -0
  330. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/colortest.yaml +19 -0
  331. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/conky.yaml +17 -0
  332. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/cpp.yaml +91 -0
  333. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/crontab.yaml +36 -0
  334. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/crystal.yaml +72 -0
  335. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/csharp.yaml +52 -0
  336. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/css.yaml +44 -0
  337. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/csx.yaml +8 -0
  338. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/cuda.yaml +68 -0
  339. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/cython.yaml +52 -0
  340. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/d.yaml +121 -0
  341. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/dart.yaml +46 -0
  342. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/default.yaml +10 -0
  343. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/dockerfile.yaml +36 -0
  344. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/dot.yaml +29 -0
  345. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/elixir.yaml +30 -0
  346. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/elm.yaml +38 -0
  347. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/erb.yaml +42 -0
  348. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/erlang.yaml +45 -0
  349. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/fish.yaml +48 -0
  350. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/forth.yaml +34 -0
  351. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/fortran.yaml +64 -0
  352. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/freebsd-kernel.yaml +14 -0
  353. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/fsharp.yaml +48 -0
  354. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/gdscript.yaml +61 -0
  355. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/gemini.yaml +19 -0
  356. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/gentoo-ebuild.yaml +48 -0
  357. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/gentoo-etc-portage.yaml +23 -0
  358. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/git-commit.yaml +35 -0
  359. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/git-config.yaml +14 -0
  360. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/git-rebase-todo.yaml +19 -0
  361. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/gleam.yaml +69 -0
  362. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/glsl.yaml +26 -0
  363. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/gnuplot.yaml +15 -0
  364. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/go.yaml +62 -0
  365. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/godoc.yaml +17 -0
  366. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/golo.yaml +73 -0
  367. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/gomod.yaml +31 -0
  368. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/graphql.yaml +47 -0
  369. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/groff.yaml +30 -0
  370. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/groovy.yaml +111 -0
  371. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/haml.yaml +16 -0
  372. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/hare.yaml +52 -0
  373. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/haskell.yaml +52 -0
  374. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/hc.yaml +52 -0
  375. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/html.yaml +70 -0
  376. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/html4.yaml +25 -0
  377. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/html5.yaml +25 -0
  378. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/ini.yaml +23 -0
  379. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/inputrc.yaml +14 -0
  380. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/java.yaml +37 -0
  381. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/javascript.yaml +124 -0
  382. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/jinja2.yaml +19 -0
  383. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/json.yaml +39 -0
  384. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/jsonnet.yaml +92 -0
  385. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/julia.yaml +57 -0
  386. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/justfile.yaml +40 -0
  387. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/keymap.yaml +27 -0
  388. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/kickstart.yaml +16 -0
  389. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/kotlin.yaml +66 -0
  390. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/kvlang.yaml +67 -0
  391. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/ledger.yaml +14 -0
  392. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/lfe.yaml +17 -0
  393. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/lilypond.yaml +26 -0
  394. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/lisp.yaml +17 -0
  395. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/log.yaml +92 -0
  396. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/lua.yaml +111 -0
  397. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/mail.yaml +25 -0
  398. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/makefile.yaml +38 -0
  399. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/man.yaml +12 -0
  400. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/markdown.yaml +65 -0
  401. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/mc.yaml +23 -0
  402. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/meson.yaml +51 -0
  403. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/micro.yaml +34 -0
  404. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/mpdconf.yaml +13 -0
  405. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/msbuild.yaml +6 -0
  406. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/nanorc.yaml +16 -0
  407. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/nftables.yaml +30 -0
  408. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/nginx.yaml +22 -0
  409. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/nim.yaml +27 -0
  410. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/nix.yaml +32 -0
  411. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/nu.yaml +114 -0
  412. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/objc.yaml +60 -0
  413. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/ocaml.yaml +43 -0
  414. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/octave.yaml +83 -0
  415. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/odin.yaml +64 -0
  416. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/pascal.yaml +45 -0
  417. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/patch.yaml +14 -0
  418. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/peg.yaml +16 -0
  419. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/perl.yaml +58 -0
  420. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/php.yaml +60 -0
  421. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/pkg-config.yaml +12 -0
  422. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/po.yaml +12 -0
  423. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/pony.yaml +37 -0
  424. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/pov.yaml +21 -0
  425. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/privoxy-action.yaml +14 -0
  426. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/privoxy-config.yaml +10 -0
  427. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/privoxy-filter.yaml +12 -0
  428. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/proto.yaml +40 -0
  429. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/prql.yaml +84 -0
  430. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/puppet.yaml +22 -0
  431. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/python2.yaml +60 -0
  432. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/python3.yaml +80 -0
  433. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/r.yaml +32 -0
  434. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/raku.yaml +42 -0
  435. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/reST.yaml +18 -0
  436. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/renpy.yaml +15 -0
  437. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/rpmspec.yaml +43 -0
  438. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/ruby.yaml +73 -0
  439. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/rust.yaml +78 -0
  440. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/sage.yaml +60 -0
  441. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/scad.yaml +53 -0
  442. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/scala.yaml +33 -0
  443. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/sed.yaml +13 -0
  444. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/sh.yaml +69 -0
  445. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/sls.yaml +15 -0
  446. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/smalltalk.yaml +55 -0
  447. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/solidity.yaml +41 -0
  448. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/sql.yaml +35 -0
  449. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/stata.yaml +67 -0
  450. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/svelte.yaml +27 -0
  451. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/swift.yaml +103 -0
  452. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/systemd.yaml +16 -0
  453. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/tcl.yaml +18 -0
  454. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/terraform.yaml +87 -0
  455. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/tex.yaml +32 -0
  456. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/toml.yaml +56 -0
  457. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/twig.yaml +55 -0
  458. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/typescript.yaml +49 -0
  459. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/v.yaml +80 -0
  460. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/vala.yaml +26 -0
  461. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/verilog.yaml +60 -0
  462. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/vhdl.yaml +37 -0
  463. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/vi.yaml +31 -0
  464. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/vue.yaml +64 -0
  465. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/xml.yaml +37 -0
  466. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/xresources.yaml +14 -0
  467. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/yaml.yaml +34 -0
  468. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/yum.yaml +12 -0
  469. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/zig.yaml +52 -0
  470. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/zscript.yaml +72 -0
  471. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/zsh.yaml +52 -0
  472. package/initramfs/buninu/apps/jsmdcui/single-exe/README.md +396 -0
  473. package/initramfs/buninu/apps/jsmdcui/single-exe/assetsHelper.js +371 -0
  474. package/initramfs/buninu/apps/jsmdcui/single-exe/assetsLoader.mjs +85 -0
  475. package/initramfs/buninu/apps/jsmdcui/single-exe/assetsPacker.js +218 -0
  476. package/initramfs/buninu/apps/jsmdcui/single-exe/compiled.js +498 -0
  477. package/initramfs/buninu/apps/jsmdcui/single-exe/entry.mjs +17 -0
  478. package/initramfs/buninu/apps/jsmdcui/single-exe/packAssets.sh +7 -0
  479. package/initramfs/buninu/apps/jsmdcui/src/MDCUI_DEFAULT_EDIT +0 -0
  480. package/initramfs/buninu/apps/jsmdcui/src/buffer/backup.js +165 -0
  481. package/initramfs/buninu/apps/jsmdcui/src/buffer/buffer.js +126 -0
  482. package/initramfs/buninu/apps/jsmdcui/src/buffer/fixed3-codec.js +140 -0
  483. package/initramfs/buninu/apps/jsmdcui/src/buffer/loc.js +38 -0
  484. package/initramfs/buninu/apps/jsmdcui/src/buffer/message.js +29 -0
  485. package/initramfs/buninu/apps/jsmdcui/src/build-args.js +40 -0
  486. package/initramfs/buninu/apps/jsmdcui/src/config/clean.js +172 -0
  487. package/initramfs/buninu/apps/jsmdcui/src/config/colorscheme.js +99 -0
  488. package/initramfs/buninu/apps/jsmdcui/src/config/config.js +125 -0
  489. package/initramfs/buninu/apps/jsmdcui/src/config/defaults.js +109 -0
  490. package/initramfs/buninu/apps/jsmdcui/src/cui/fence-events.mjs +144 -0
  491. package/initramfs/buninu/apps/jsmdcui/src/cui/heading-ids.mjs +1568 -0
  492. package/initramfs/buninu/apps/jsmdcui/src/cui/id-collision.mjs +111 -0
  493. package/initramfs/buninu/apps/jsmdcui/src/cui/identity.mjs +26 -0
  494. package/initramfs/buninu/apps/jsmdcui/src/cui/kitty-debug.mjs +25 -0
  495. package/initramfs/buninu/apps/jsmdcui/src/cui/kitty-images.mjs +280 -0
  496. package/initramfs/buninu/apps/jsmdcui/src/cui/kitty-mode.mjs +6 -0
  497. package/initramfs/buninu/apps/jsmdcui/src/cui/rerender-queue.mjs +66 -0
  498. package/initramfs/buninu/apps/jsmdcui/src/cui/rpc.mjs +1554 -0
  499. package/initramfs/buninu/apps/jsmdcui/src/cui/server.mjs +128 -0
  500. package/initramfs/buninu/apps/jsmdcui/src/cui/table-render.mjs +286 -0
  501. package/initramfs/buninu/apps/jsmdcui/src/cui/table-row-edit.mjs +226 -0
  502. package/initramfs/buninu/apps/jsmdcui/src/cui/task-checkbox.mjs +60 -0
  503. package/initramfs/buninu/apps/jsmdcui/src/cui/template-components.mjs +253 -0
  504. package/initramfs/buninu/apps/jsmdcui/src/cui/text-block-resize.mjs +177 -0
  505. package/initramfs/buninu/apps/jsmdcui/src/cui/tui-links.mjs +560 -0
  506. package/initramfs/buninu/apps/jsmdcui/src/display/ansi-style.js +60 -0
  507. package/initramfs/buninu/apps/jsmdcui/src/highlight/highlighter.js +243 -0
  508. package/initramfs/buninu/apps/jsmdcui/src/highlight/parser.js +225 -0
  509. package/initramfs/buninu/apps/jsmdcui/src/index.js +9586 -0
  510. package/initramfs/buninu/apps/jsmdcui/src/lua/engine.js +68 -0
  511. package/initramfs/buninu/apps/jsmdcui/src/platform/archive.js +50 -0
  512. package/initramfs/buninu/apps/jsmdcui/src/platform/clipboard.js +278 -0
  513. package/initramfs/buninu/apps/jsmdcui/src/platform/commands.js +221 -0
  514. package/initramfs/buninu/apps/jsmdcui/src/platform/terminal.js +5 -0
  515. package/initramfs/buninu/apps/jsmdcui/src/plugins/js-bridge.js +3377 -0
  516. package/initramfs/buninu/apps/jsmdcui/src/plugins/manager.js +674 -0
  517. package/initramfs/buninu/apps/jsmdcui/src/runtime/encodings.js +10 -0
  518. package/initramfs/buninu/apps/jsmdcui/src/runtime/registry.js +134 -0
  519. package/initramfs/buninu/apps/jsmdcui/src/screen/cell-buffer.js +81 -0
  520. package/initramfs/buninu/apps/jsmdcui/src/screen/events.js +263 -0
  521. package/initramfs/buninu/apps/jsmdcui/src/screen/screen.js +249 -0
  522. package/initramfs/buninu/apps/jsmdcui/src/screen/vt100.js +571 -0
  523. package/initramfs/buninu/apps/jsmdcui/src/shell/shell.js +70 -0
  524. package/initramfs/buninu/apps/jsmdcui/testapp.md +78 -0
  525. package/initramfs/buninu/apps/jsmdcui/tests/assets-helper.test.js +150 -0
  526. package/initramfs/buninu/apps/jsmdcui/tests/backup.test.js +158 -0
  527. package/initramfs/buninu/apps/jsmdcui/tests/cat-markdown.test.js +139 -0
  528. package/initramfs/buninu/apps/jsmdcui/tests/cdp-security.test.js +32 -0
  529. package/initramfs/buninu/apps/jsmdcui/tests/cdp-websocket-test.html +46 -0
  530. package/initramfs/buninu/apps/jsmdcui/tests/cmphex3b64.js +95 -0
  531. package/initramfs/buninu/apps/jsmdcui/tests/compiled-runtime.test.js +139 -0
  532. package/initramfs/buninu/apps/jsmdcui/tests/config-settings.test.js +52 -0
  533. package/initramfs/buninu/apps/jsmdcui/tests/demo.test.js +448 -0
  534. package/initramfs/buninu/apps/jsmdcui/tests/docs-sync.test.js +14 -0
  535. package/initramfs/buninu/apps/jsmdcui/tests/fence-events.test.js +1293 -0
  536. package/initramfs/buninu/apps/jsmdcui/tests/heading-ids.test.js +559 -0
  537. package/initramfs/buninu/apps/jsmdcui/tests/heading-list-selector.test.js +2393 -0
  538. package/initramfs/buninu/apps/jsmdcui/tests/id-collision.test.js +514 -0
  539. package/initramfs/buninu/apps/jsmdcui/tests/jmigt.js +16 -0
  540. package/initramfs/buninu/apps/jsmdcui/tests/js-plugin-prompts.test.js +110 -0
  541. package/initramfs/buninu/apps/jsmdcui/tests/key-event.md +10 -0
  542. package/initramfs/buninu/apps/jsmdcui/tests/kitty-demo.md +184 -0
  543. package/initramfs/buninu/apps/jsmdcui/tests/kitty-images.test.js +288 -0
  544. package/initramfs/buninu/apps/jsmdcui/tests/kitty-mode.test.js +14 -0
  545. package/initramfs/buninu/apps/jsmdcui/tests/platform-commands.test.js +18 -0
  546. package/initramfs/buninu/apps/jsmdcui/tests/platform-terminal.test.js +8 -0
  547. package/initramfs/buninu/apps/jsmdcui/tests/pty-demo.js +492 -0
  548. package/initramfs/buninu/apps/jsmdcui/tests/rerender-queue.test.js +130 -0
  549. package/initramfs/buninu/apps/jsmdcui/tests/table-render.test.js +150 -0
  550. package/initramfs/buninu/apps/jsmdcui/tests/table-row-edit.test.js +138 -0
  551. package/initramfs/buninu/apps/jsmdcui/tests/task-checkbox.test.js +33 -0
  552. package/initramfs/buninu/apps/jsmdcui/tests/template-components.test.js +422 -0
  553. package/initramfs/buninu/apps/jsmdcui/tests/text-block-resize.test.js +222 -0
  554. package/initramfs/buninu/apps/jsmdcui/tests/textarea.md +8 -0
  555. package/initramfs/buninu/apps/jsmdcui/tests/tui-links.test.js +298 -0
  556. package/initramfs/buninu/apps/jsmdcui/tests/wui-responsive-images.test.js +60 -0
  557. package/initramfs/buninu/apps/jsmdcui/tests/wui.test.js +108 -0
  558. package/initramfs/buninu/apps/jsmdcui/tests/wv-client.js +96 -0
  559. package/initramfs/buninu/apps/jsmdcui/tui +7 -0
  560. package/initramfs/buninu/apps/jsmdcui/wui +9 -0
  561. package/initramfs/buninu/apps/musl-la/LICENSES/GPL-3.0.txt +674 -0
  562. package/initramfs/buninu/apps/musl-la/LICENSES/gcc_runtime_exception.txt +73 -0
  563. package/initramfs/buninu/apps/musl-la/LICENSE_musl.txt +193 -0
  564. package/initramfs/buninu/apps/musl-la/NOTICE +41 -0
  565. package/initramfs/buninu/apps/musl-la/ld-musl-aarch64.so.1 +0 -0
  566. package/initramfs/buninu/apps/musl-la/libgcc_s.so.1 +0 -0
  567. package/initramfs/buninu/apps/musl-la/libstdc++.so.6 +0 -0
  568. package/initramfs/buninu/apps/musl-la/musl-la.sh +36 -0
  569. package/initramfs/buninu/apps/native-bridge/native-bridge.js +199 -0
  570. package/initramfs/buninu/apps/native-bridge/package.json +8 -0
  571. package/initramfs/buninu/apps/tts/tts.js +214 -0
  572. package/initramfs/buninu/apps/xclip/xclip.js +121 -0
  573. package/initramfs/buninu/apps/xdg-open/xdg-open.js +151 -0
  574. package/initramfs/buninu/bin/bun.bat +37 -0
  575. package/initramfs/buninu/bin/bun.sh +57 -0
  576. package/initramfs/buninu/bin/buninu-help.bat +4 -0
  577. package/initramfs/buninu/bin/buninu-help.sh +7 -0
  578. package/initramfs/buninu/bin/bunmsh.bat +3 -0
  579. package/initramfs/buninu/bin/bunmsh.sh +5 -0
  580. package/initramfs/buninu/bin/bunx.bat +3 -0
  581. package/initramfs/buninu/bin/glow.bat +3 -0
  582. package/initramfs/buninu/bin/glow.sh +5 -0
  583. package/initramfs/buninu/bin/init.js +779 -0
  584. package/initramfs/buninu/bin/install.js +570 -0
  585. package/initramfs/buninu/bin/jmi.bat +3 -0
  586. package/initramfs/buninu/bin/jmi.sh +5 -0
  587. package/initramfs/buninu/bin/jsgotty.bat +3 -0
  588. package/initramfs/buninu/bin/jsgotty.sh +5 -0
  589. package/initramfs/buninu/bin/jsmdcui.bat +11 -0
  590. package/initramfs/buninu/bin/libsh-loader.c +135 -0
  591. package/initramfs/buninu/bin/libsh-loader.so +0 -0
  592. package/initramfs/buninu/bin/multicall.sh +103 -0
  593. package/initramfs/buninu/bin/native-bridge.bat +3 -0
  594. package/initramfs/buninu/bin/rz.bat +3 -0
  595. package/initramfs/buninu/bin/rz.sh +5 -0
  596. package/initramfs/buninu/bin/shc.js +5 -0
  597. package/initramfs/buninu/bin/showimg.bat +3 -0
  598. package/initramfs/buninu/bin/showimg.sh +5 -0
  599. package/initramfs/buninu/bin/switch_to_android.sh +9 -0
  600. package/initramfs/buninu/bin/switch_to_linux.sh +7 -0
  601. package/initramfs/buninu/bin/sz.bat +3 -0
  602. package/initramfs/buninu/bin/sz.sh +5 -0
  603. package/initramfs/buninu/bin/tts.bat +3 -0
  604. package/initramfs/buninu/bin/xclip.bat +3 -0
  605. package/initramfs/buninu/bin/xdg-open.bat +3 -0
  606. package/initramfs/buninu/demo-server.js +64 -0
  607. package/initramfs/buninu/icon.png +0 -0
  608. package/initramfs/buninu/package.json +59 -0
  609. package/initramfs/etc/resolv.conf +1 -0
  610. package/initramfs/init.js +339 -0
  611. package/initramfs/lib/ld-musl-x86_64.so.1 +0 -0
  612. package/initramfs/lib/libc.musl-x86_64.so.1 +0 -0
  613. package/initramfs/lib/libgcc_s.so.1 +0 -0
  614. package/initramfs/lib/libstdc++.so.6 +0 -0
  615. package/initramfs/usr/bin/env +7 -0
  616. package/package.json +42 -0
  617. package/run-qemu.sh +44 -0
  618. package/scripts/fetch.sh +26 -0
  619. package/scripts/pack-initramfs.sh +41 -0
  620. package/test/build-init-bootstrap.sh +23 -0
  621. package/test/init-bootstrap.c +55 -0
@@ -0,0 +1,527 @@
1
+ import { basename, dirname, resolve } from "node:path";
2
+ import { existsSync, mkdirSync, readFileSync, rmSync, writeFileSync } from "node:fs";
3
+ import { fileURLToPath } from "node:url";
4
+ import child_process from "node:child_process";
5
+ import { ASSETS_ROOT } from "./assetsPacker.js";
6
+
7
+
8
+ export const IS_COMPILED = isCompiledBinary();
9
+ export const REPO_ROOT = IS_COMPILED
10
+ ? getExeDirname()
11
+ : resolve(import.meta.dirname, ASSETS_ROOT);
12
+ // This file's own directory. Not derived from REPO_ROOT: the only user
13
+ // is buildExecutable(), which already refuses to run when IS_COMPILED,
14
+ // so REPO_ROOT there is always the source tree, and going back down
15
+ // through it would hard-code this folder name.
16
+ const SINGLE_EXE_DIR = import.meta.dirname;
17
+
18
+
19
+ export function isCompiledBinary(argv = process.argv) {
20
+ const entry = argv?.[1];
21
+ return Boolean(
22
+ entry?.startsWith?.("/$bunfs/") ||
23
+ entry?.startsWith?.("B:/~BUN")
24
+ );
25
+ }
26
+
27
+ export function getExeDirname() {
28
+ const argv = process.argv
29
+ const execPath = process.execPath
30
+
31
+ const bn = basename(execPath);
32
+ if (bn.startsWith("ld") ||
33
+ bn.startsWith("libld") ||
34
+ bn.startsWith("linker") ) {
35
+ const realArgv = readFileSync("/proc/self/cmdline", "utf8").match(/[^\0]+/g);
36
+ return dirname(realArgv?.[1] ?? execPath);
37
+ }
38
+ return dirname(execPath) || process.cwd();
39
+ }
40
+
41
+ export function getDirnameFromUrl(importMetaUrl) {
42
+ return dirname(fileURLToPath(importMetaUrl));
43
+ }
44
+
45
+
46
+ // Linker-preserving self-launch helpers. Kept together and separate from the
47
+ // original compiled-path API above so existing behavior remains untouched.
48
+ export function isLinkerPath(execPath) {
49
+ const bn = basename(execPath);
50
+ return bn.startsWith("ld-linux") || bn.startsWith("ld-musl") ||
51
+ bn.startsWith("libld") || /^linker(?:32|64)?$/.test(bn) ||
52
+ bn === "ld.so";
53
+ }
54
+
55
+ export function getExecutablePath(execPath = process.execPath, argv0 = process.argv0) {
56
+ if (!isLinkerPath(execPath)) return execPath;
57
+ let invoked = argv0;
58
+ try {
59
+ const realArgv = readFileSync("/proc/self/cmdline", "utf8").match(/[^\0]+/g);
60
+ invoked = realArgv?.[1] ?? invoked;
61
+ } catch {}
62
+ if (!invoked) return execPath;
63
+ return resolve(invoked);
64
+ }
65
+
66
+ export function getExecutableCommand(execPath = process.execPath, argv0 = process.argv0) {
67
+ const executable = getExecutablePath(execPath, argv0);
68
+ return isLinkerPath(execPath) ? [execPath, executable] : [executable];
69
+ }
70
+
71
+ export const EXECUTABLE_PATH = getExecutablePath();
72
+ export const EXECUTABLE_COMMAND = getExecutableCommand();
73
+
74
+ export function stringifyNonPrimitiveDefineValues(argv, name) {
75
+ const definePrefix = `${name}=`;
76
+ const numberLiteral = /^[+-]?(?:(?:0[xX][\dA-Fa-f](?:_?[\dA-Fa-f])*)|(?:0[bB][01](?:_?[01])*)|(?:0[oO][0-7](?:_?[0-7])*)|(?:(?:\d(?:_?\d)*)(?:\.(?:\d(?:_?\d)*)?)?|\.(?:\d(?:_?\d)*))(?:[eE][+-]?\d(?:_?\d)*)?)$/;
77
+
78
+ // Parse scalar literals as data. Never evaluate a user-provided expression.
79
+ const normalize = (definition) => {
80
+ if (!definition.startsWith(definePrefix)) return definition;
81
+ const source = definition.slice(definePrefix.length);
82
+ const trimmed = source.trim();
83
+ let value;
84
+ let parsed = false;
85
+
86
+ try {
87
+ value = JSON.parse(source);
88
+ parsed = true;
89
+ } catch {
90
+ try {
91
+ if (globalThis.Bun?.JSON5) {
92
+ value = globalThis.Bun.JSON5.parse(source);
93
+ parsed = true;
94
+ }
95
+ } catch {}
96
+ }
97
+
98
+ if (parsed && typeof value === "string") {
99
+ return definePrefix + JSON.stringify(value);
100
+ }
101
+ if (
102
+ (parsed && (
103
+ value === null
104
+ || typeof value === "number"
105
+ || typeof value === "boolean"
106
+ ))
107
+ || trimmed === "undefined"
108
+ || numberLiteral.test(trimmed)
109
+ ) {
110
+ return definition;
111
+ }
112
+ return definePrefix + JSON.stringify(source);
113
+ };
114
+
115
+ for (let i = 0; i < argv.length; i++) {
116
+ if (argv[i] === "--define" && typeof argv[i + 1] === "string") {
117
+ argv[i + 1] = normalize(argv[i + 1]);
118
+ } else if (argv[i]?.startsWith?.("--define=")) {
119
+ argv[i] = "--define="
120
+ + normalize(argv[i].slice("--define=".length));
121
+ }
122
+ }
123
+ return argv;
124
+ }
125
+
126
+ export async function buildExecutable(target = "",build_outfile="single.exe", bunArgs = []) {
127
+
128
+ let outfile = resolve(process.cwd(), build_outfile);
129
+ const normalizedTarget = String(target || "").trim();
130
+ const extraBunArgs = Array.from(bunArgs ?? [], String);
131
+ if(!globalThis.Bun || IS_COMPILED)
132
+ {
133
+ console.log("Build exe can only be run by Bun in the source tree");
134
+ return 1;
135
+ }
136
+
137
+ let bunBin=Bun.which('bun') || process.argv0;
138
+
139
+ const steps = [
140
+ {
141
+ label: "Pack assets",
142
+ cwd: SINGLE_EXE_DIR,
143
+ cmd: bunBin,
144
+ args: ["./packAssets.sh"],
145
+ },
146
+ {
147
+ label: "Compile executable",
148
+ cwd: SINGLE_EXE_DIR,
149
+ cmd: bunBin,
150
+ args: [
151
+ "build",
152
+ "--format=esm",
153
+ "--compile",
154
+ "--minify",
155
+ "--bytecode",
156
+ "./entry.mjs",
157
+ `--outfile=${outfile}`,
158
+ `--metafile-md=${outfile}.meta.md`,
159
+ ...(normalizedTarget ? [`--target=${normalizedTarget}`] : []),
160
+ ...extraBunArgs,
161
+ ],
162
+ },
163
+ ];
164
+
165
+ for (const step of steps) {
166
+
167
+ console.log('');
168
+ console.log(Bun?.markdown?.ansi?.('## '+step.label)||step.label);
169
+
170
+ console.log("Running: ",step.cmd,step.args)
171
+
172
+ const result = child_process.spawnSync(step.cmd, step.args, {
173
+ cwd: step.cwd,
174
+ stdio: "inherit",
175
+ env: process.env,
176
+ });
177
+
178
+ console.log("");
179
+ console.log(Bun?.markdown?.ansi?.(
180
+ '- Status: '+result.status+' for '+step.label
181
+ )||result.status);
182
+
183
+
184
+
185
+ if (result.error || result.status !== 0) {
186
+
187
+ if (result.error) {
188
+ console.error(result.error);
189
+ }
190
+
191
+ if (step.label == "Pack assets") {
192
+ console.log("Pack assets failed; continuing with the existing assets.tar if available");
193
+ }
194
+
195
+ }
196
+
197
+
198
+ } // for steps of build
199
+
200
+ const isWindows = normalizedTarget
201
+ ? normalizedTarget.toLowerCase().includes("windows")
202
+ : process.platform === "win32";
203
+ if (isWindows && !outfile.toLowerCase().endsWith(".exe")) {
204
+ outfile += ".exe";
205
+ }
206
+ if(await Bun.file(outfile).exists())
207
+ {
208
+ console.log(`Built executable: ${outfile}`);
209
+ return 0;
210
+ }
211
+ else
212
+ {
213
+ console.log(`Error while building executable: ${outfile}`);
214
+ return 1;
215
+ }
216
+ }
217
+
218
+ export const buildExe = buildExeAssets;
219
+
220
+ export async function buildEarlyExit(argv,build_outfile) {
221
+ argv = argv || process.argv
222
+
223
+ const buildExeIndex = argv.indexOf("--build-exe");
224
+ const buildForIndex = argv.indexOf("--build-for");
225
+
226
+ if (buildExeIndex === -1 && buildForIndex === -1) {
227
+ return false;
228
+ }
229
+
230
+ if (IS_COMPILED) {
231
+ console.error("--build-exe & --build-for are only available in the source tree");
232
+ process.exit(1);
233
+ }
234
+
235
+ if (buildForIndex !== -1) {
236
+ const target = argv[buildForIndex + 1];
237
+ if (!target || target.startsWith("-")) {
238
+ console.error("Missing target value for --build-for");
239
+ process.exit(2);
240
+ }
241
+ process.exit(await buildExe(target, build_outfile, argv.slice(buildForIndex + 2)));
242
+ }
243
+
244
+ process.exit(await buildExe(null, build_outfile, argv.slice(buildExeIndex + 1)));
245
+ }
246
+
247
+
248
+ // Multi-package variant of buildExecutable().
249
+ //
250
+ // Every package that ships assets vendors its own single-exe/, and its
251
+ // assetsHelper imports its assetsPacker, so a packer shows up in the
252
+ // bundle's module graph exactly when that package is actually reachable
253
+ // from this entry point. A scan build writes that graph to a metafile,
254
+ // and each packer found there appends its own namespaced members to one
255
+ // shared assets.tar before the real compile runs.
256
+ export async function buildExeAssets(target = "", build_outfile = "single.exe", bunArgs = []) {
257
+ let outfile = resolve(process.cwd(), build_outfile);
258
+ const normalizedTarget = String(target || "").trim();
259
+ const extraBunArgs = Array.from(bunArgs ?? [], String);
260
+
261
+ if (!globalThis.Bun || IS_COMPILED) {
262
+ console.log("Build exe can only be run by Bun in the source tree");
263
+ return 1;
264
+ }
265
+
266
+ const bunBin = Bun.which("bun") || process.argv0;
267
+ const ownPacker = resolve(SINGLE_EXE_DIR, "assetsPacker.js");
268
+ const archive = resolve(SINGLE_EXE_DIR, "assets.tar");
269
+ const metafile = `${outfile}.meta.json`;
270
+ const scanDir = `${outfile}.scan`;
271
+
272
+ // ASSETS_BUNFS swaps the tar for `--compile --asset`: every packer
273
+ // copies into one fixed build/assets, and --asset keeps only that
274
+ // folder's basename, so the members land at assets/<name>@<version>/
275
+ // exactly as the tar back end writes them.
276
+ const bunfs = Boolean(process.env.ASSETS_BUNFS);
277
+ const staging = resolve(REPO_ROOT, "build", "assets");
278
+
279
+ // Nothing loads a tar in bunfs mode, so the asset loader — and the
280
+ // `assets.tar` it imports — cannot be in the graph. Everything else in
281
+ // entry.mjs still has to run, so the compile entry is a generated copy
282
+ // of it with that one import removed.
283
+ //
284
+ // Handing the main program to `bun build` directly would be simpler and
285
+ // breaks two ways. Whatever entry.mjs does after the import is lost, and
286
+ // a CommonJS program relying on a `require.main` guard the bundler
287
+ // inlines to false would never start. Worse, `--bytecode` only marks the
288
+ // chunk as an async module when a top-level await appears in an
289
+ // unwrapped part's own source; a main program that reaches top-level
290
+ // await only through `__esm`-wrapped dependencies is then evaluated on
291
+ // the sync path, its suspended generator is dropped, and the binary
292
+ // exits 0 having run nothing. entry.mjs awaits in its own source, so the
293
+ // copy carries that flag the way the tar build always has.
294
+ const bunfsEntry = resolve(SINGLE_EXE_DIR, ".bunfs-entry.mjs");
295
+ const dropBunfsEntry = () => bunfs && rmSync(bunfsEntry, { force: true });
296
+
297
+ if (bunfs && !writeBunfsEntry(resolve(SINGLE_EXE_DIR, "entry.mjs"), bunfsEntry)) {
298
+ return 1;
299
+ }
300
+
301
+ const compileEntry = bunfs ? bunfsEntry : "./entry.mjs";
302
+
303
+ const step = (label, args, cwd) => {
304
+ console.log("");
305
+ console.log(Bun?.markdown?.ansi?.("## " + label) || label);
306
+ console.log("Running: ", bunBin, args);
307
+
308
+ const result = child_process.spawnSync(bunBin, args, {
309
+ cwd,
310
+ stdio: "inherit",
311
+ env: process.env,
312
+ });
313
+
314
+ console.log("");
315
+ console.log(Bun?.markdown?.ansi?.("- Status: " + result.status + " for " + label) || result.status);
316
+
317
+ if (result.error) console.error(result.error);
318
+ return result.status ?? 1;
319
+ };
320
+
321
+ // What each packer is told to write into, and in which mode.
322
+ const packInto = bunfs ? ["-f", staging] : ["-f", archive, "-p"];
323
+
324
+ if (bunfs) {
325
+ mkdirSync(staging, { recursive: true });
326
+ console.log("");
327
+ console.log(`Staging assets into ${staging}`);
328
+ } else if (step("Pack own assets", [ownPacker, ...packInto], SINGLE_EXE_DIR) !== 0) {
329
+ // Tar mode packs first: the scan below has to resolve entry.mjs's
330
+ // `with { type: "file" }` import of the archive.
331
+ console.error("Own assets failed to pack");
332
+ return 1;
333
+ }
334
+
335
+ // Bundle only. The binary is thrown away, so skip --compile, --minify
336
+ // and --bytecode; the module graph is the same and it is much faster.
337
+ if (step("Scan module graph", ["build", compileEntry, "--target=bun", `--metafile=${metafile}`, `--outdir=${scanDir}`], SINGLE_EXE_DIR) !== 0) {
338
+ console.error("Scan build failed");
339
+ dropBunfsEntry();
340
+ return 1;
341
+ }
342
+
343
+ const packers = findAssetPackers(metafile, SINGLE_EXE_DIR, bunfs ? "" : ownPacker);
344
+ rmSync(scanDir, { recursive: true, force: true });
345
+
346
+ console.log("");
347
+ console.log(`Found ${packers.length} asset packer(s) to run`);
348
+
349
+ for (const packer of packers) {
350
+ const name = dirname(dirname(packer)).split("/").pop();
351
+
352
+ // Tar mode appends to a shared archive; folder mode needs no -r
353
+ // because each package owns its own <name>@<version> subtree.
354
+ const args = bunfs ? [packer, ...packInto] : [packer, ...packInto, "-r"];
355
+
356
+ if (step(`Pack ${name}`, args, dirname(packer)) !== 0) {
357
+ console.error(`Failed to pack assets from ${packer}`);
358
+ dropBunfsEntry();
359
+ return 1;
360
+ }
361
+ }
362
+
363
+ // Compress last. Every packer above reads the archive and writes it
364
+ // back uncompressed, so this has to happen after the final append.
365
+ // libarchive sniffs the format on read, so assetsLoader needs no
366
+ // change to consume it. Nothing to compress in bunfs mode.
367
+ if (bunfs) {
368
+ // no archive in this mode
369
+ } else if (process.env.ASSETS_NO_GZIP) {
370
+ console.log("");
371
+ console.log("ASSETS_NO_GZIP is set, leaving the archive uncompressed");
372
+ } else {
373
+ console.log("");
374
+ console.log(Bun?.markdown?.ansi?.("## Compress assets") || "Compress assets");
375
+
376
+ try {
377
+ const raw = await Bun.file(archive).bytes();
378
+ const gzipped = Bun.gzipSync(raw, { level: 9 });
379
+
380
+ await Bun.write(archive, gzipped);
381
+
382
+ const pct = raw.byteLength ? Math.round((1 - gzipped.byteLength / raw.byteLength) * 100) : 0;
383
+ console.log(`${raw.byteLength} -> ${gzipped.byteLength} bytes (-${pct}%)`);
384
+ } catch (e) {
385
+ console.error("Could not compress the archive; continuing uncompressed");
386
+ console.error(e);
387
+ }
388
+ }
389
+
390
+ if (step("Compile executable", [
391
+ "build",
392
+ "--format=esm",
393
+ "--compile",
394
+ "--minify",
395
+ "--bytecode",
396
+ compileEntry,
397
+ ...(bunfs ? ["--asset", staging] : []),
398
+ `--outfile=${outfile}`,
399
+ `--metafile-md=${outfile}.meta.md`,
400
+ ...(normalizedTarget ? [`--target=${normalizedTarget}`] : []),
401
+ ...extraBunArgs,
402
+ ], SINGLE_EXE_DIR) !== 0) {
403
+ console.error("Compile failed");
404
+ }
405
+
406
+ dropBunfsEntry();
407
+
408
+ const isWindows = normalizedTarget ? normalizedTarget.toLowerCase().includes("windows") : process.platform === "win32";
409
+ if (isWindows && !outfile.toLowerCase().endsWith(".exe")) {
410
+ outfile += ".exe";
411
+ }
412
+
413
+ if (await Bun.file(outfile).exists()) {
414
+ console.log(`Built executable: ${outfile}`);
415
+ return 0;
416
+ }
417
+
418
+ console.log(`Error while building executable: ${outfile}`);
419
+ return 1;
420
+ }
421
+
422
+
423
+ // entry.mjs, minus the import of the asset loader, written to `outFile`
424
+ // as the compile entry for bunfs builds. Returns whether it was written.
425
+ //
426
+ // A textual copy, not a generated stub: entry.mjs may do more than import
427
+ // the main program, and all of it has to survive.
428
+ export function writeBunfsEntry(entryFile, outFile) {
429
+ let src;
430
+
431
+ try {
432
+ src = readFileSync(entryFile, "utf8");
433
+ } catch (e) {
434
+ console.error(`Could not read ${entryFile}`);
435
+ console.error(e);
436
+ return false;
437
+ }
438
+
439
+ // Whole-line side-effect import of the loader, in any of the shapes a
440
+ // project might have written it. Nothing else may reference it: the
441
+ // loader is what pulls in `assets.tar`, which no bunfs build produces.
442
+ const loaderImport = /^[ \t]*import\s+(?:[^"'\n]*\bfrom\s+)?["'][^"'\n]*assetsLoader\.mjs["'][ \t]*;?[ \t]*$/gm; // "
443
+ const stripped = src.replace(loaderImport, "");
444
+
445
+ if (stripped === src) {
446
+ console.log("");
447
+ console.log(`No assetsLoader import found in ${entryFile}; compiling it as is`);
448
+ }
449
+
450
+ const header =
451
+ "// Generated by single-exe/compiled.js for ASSETS_BUNFS=1 builds.\n"
452
+ + "// A copy of entry.mjs without the asset loader; edit entry.mjs.\n";
453
+
454
+ // A hashbang is only a hashbang on the first line; anywhere else it is
455
+ // a syntax error. Keep it there and put the header underneath, unless
456
+ // the file is nothing but a hashbang and there is no underneath.
457
+ const firstBreak = stripped.indexOf("\n");
458
+ const hasHashbang = stripped.startsWith("#!");
459
+ const hashbang = hasHashbang && firstBreak !== -1 ? stripped.slice(0, firstBreak + 1) : "";
460
+
461
+ try {
462
+ writeFileSync(
463
+ outFile,
464
+ hasHashbang && !hashbang
465
+ ? stripped
466
+ : hashbang + header + stripped.slice(hashbang.length),
467
+ );
468
+ } catch (e) {
469
+ console.error(`Could not write ${outFile}`);
470
+ console.error(e);
471
+ return false;
472
+ }
473
+
474
+ return true;
475
+ }
476
+
477
+
478
+ // The main program, as declared by the last import of entry.mjs. That
479
+ // file is already the one place an adopting project edits.
480
+ export function lastEntryImport(entryFile) {
481
+ let src;
482
+
483
+ try {
484
+ src = readFileSync(entryFile, "utf8");
485
+ } catch {
486
+ return "";
487
+ }
488
+
489
+ // Drop comments first, or a commented-out import would win.
490
+ src = src.replace(/\/\*[\s\S]*?\*\//g, "").replace(/^[ \t]*\/\/.*$/gm, "");
491
+
492
+ const re = /\bimport\b[^"'\n]*["']([^"']+)["']/g; // "
493
+ let last = "";
494
+
495
+ for (let m; (m = re.exec(src)) !== null; ) last = m[1];
496
+
497
+ return last;
498
+ }
499
+
500
+
501
+ // Absolute, de-duplicated paths of every assetsPacker.js in the metafile,
502
+ // minus `own`. Metafile input keys are relative to the build's cwd.
503
+ export function findAssetPackers(metafilePath, baseDir, own = "") {
504
+ if (!existsSync(metafilePath)) return [];
505
+
506
+ let meta;
507
+ try {
508
+ meta = JSON.parse(readFileSync(metafilePath, "utf8"));
509
+ } catch (e) {
510
+ console.error(`Could not read metafile ${metafilePath}`);
511
+ console.error(e);
512
+ return [];
513
+ }
514
+
515
+ const found = new Set();
516
+
517
+ for (const key of Object.keys(meta?.inputs ?? {})) {
518
+ if (basename(key) !== "assetsPacker.js") continue;
519
+
520
+ const abs = resolve(baseDir, key);
521
+ if (abs === own || !existsSync(abs)) continue;
522
+
523
+ found.add(abs);
524
+ }
525
+
526
+ return [...found].sort();
527
+ }
@@ -0,0 +1,17 @@
1
+ #!/usr/bin/env bun
2
+
3
+ // 1. Injects assets to global.internalAssets
4
+ // as { "./path/in/tar":file.bytes() }
5
+ // 2. Sets global.assetsLoaderPromise
6
+ // 3. Starts the main program only after the assets are ready
7
+ import "./assetsLoader.mjs";
8
+
9
+ // Keep these as `await`, not `.then()`. Besides the sequencing, they are
10
+ // the only top-level await this program writes anywhere, and `--bytecode`
11
+ // reads exactly that to decide the program starts asynchronously. With
12
+ // none written, the executable is evaluated synchronously, its suspended
13
+ // startup is dropped, and it exits 0 having run nothing — no error, at any
14
+ // size. Awaits the bundler generates for us do not count; see the README's
15
+ // "The await in entry.mjs is load-bearing".
16
+ await globalThis.assetsLoaderPromise;
17
+ await import("../src/main.js");
@@ -0,0 +1,117 @@
1
+ #!/usr/bin/env bun
2
+
3
+ import { isAbsolute, resolve } from "node:path";
4
+ import { parseCatOperands } from "./cat-operands.js";
5
+
6
+ const PARSERS = new Map([
7
+ ["json", JSON.parse],
8
+ ["json5", Bun.JSON5.parse],
9
+ ["jsonc", Bun.JSONC.parse],
10
+ ["jsonl", Bun.JSONL.parse],
11
+ ["ndjson", Bun.JSONL.parse],
12
+ ["yaml", Bun.YAML.parse],
13
+ ["yml", Bun.YAML.parse],
14
+ ["toml", Bun.TOML.parse],
15
+ ]);
16
+
17
+ if (typeof Bun.XML?.parse === "function") PARSERS.set("xml", Bun.XML.parse);
18
+
19
+ const RESET = "\x1b[0m";
20
+ const COLORS = {
21
+ key: Bun.color("#f92672", "ansi-16m"),
22
+ string: Bun.color("#e6db74", "ansi-16m"),
23
+ escape: Bun.color("#a6e22e", "ansi-16m"),
24
+ number: Bun.color("#ae81ff", "ansi-16m"),
25
+ constant: Bun.color("#66d9ef", "ansi-16m"),
26
+ };
27
+
28
+ const extension = (name) => {
29
+ const dot = name.lastIndexOf(".");
30
+ return dot > 0 ? name.slice(dot + 1).toLowerCase() : "";
31
+ };
32
+
33
+ const FENCE_LANGUAGES = new Map([
34
+ ["js", "javascript"],
35
+ ["mjs", "javascript"],
36
+ ["cjs", "javascript"],
37
+ ["jsx", "javascript"],
38
+ ["ts", "typescript"],
39
+ ["mts", "typescript"],
40
+ ["cts", "typescript"],
41
+ ["tsx", "typescript"],
42
+ ]);
43
+
44
+ // A fence has to be at least as long as the longest run of backticks already
45
+ // in the source, or that run would close it early (CommonMark's own rule for
46
+ // nesting a fenced block inside another).
47
+ export const fenceFor = (source) => {
48
+ const runs = source.match(/`+/g) ?? [];
49
+ const longest = runs.reduce((max, run) => Math.max(max, run.length), 0);
50
+ return "`".repeat(Math.max(3, longest + 1));
51
+ };
52
+
53
+ const pretty = (value) => {
54
+ try {
55
+ return JSON.stringify(value, (_key, item) =>
56
+ typeof item === "bigint" ? `${item}n` : item, 2) ?? String(value);
57
+ } catch {
58
+ return Bun.inspect(value, { colors: false, depth: Infinity });
59
+ }
60
+ };
61
+
62
+ export function colorJson(source) {
63
+ const input = String(source);
64
+ const token = /"(?:\\(?:u[\da-fA-F]{4}|.)|[^"\\])*"|-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?|\b(?:true|false|null)\b/g;
65
+ let output = "", cursor = 0, match;
66
+ while ((match = token.exec(input))) {
67
+ output += input.slice(cursor, match.index);
68
+ const value = match[0];
69
+ if (value.startsWith('"')) {
70
+ const key = /^\s*:/.test(input.slice(token.lastIndex));
71
+ let colored = value.replace(/\\(?:u[\da-fA-F]{4}|.)/g,
72
+ (escape) => `${RESET}${COLORS.escape}${escape}${RESET}${key ? COLORS.key : COLORS.string}`);
73
+ output += `${key ? COLORS.key : COLORS.string}${colored}${RESET}`;
74
+ } else if (value === "true" || value === "false" || value === "null") {
75
+ output += `${COLORS.constant}${value}${RESET}`;
76
+ } else {
77
+ output += `${COLORS.number}${value}${RESET}`;
78
+ }
79
+ cursor = token.lastIndex;
80
+ }
81
+ return output + input.slice(cursor);
82
+ }
83
+
84
+ export function renderFancy(source, name = "") {
85
+ const kind = extension(name);
86
+ if (kind === "md" || kind === "markdown")
87
+ return String(Bun.markdown.ansi(String(source), { hyperlinks: true }));
88
+ const fenceLanguage = FENCE_LANGUAGES.get(kind);
89
+ if (fenceLanguage) {
90
+ const text = String(source);
91
+ const fence = fenceFor(text);
92
+ return String(Bun.markdown.ansi(
93
+ `${fence}${fenceLanguage}\n${text}\n${fence}\n`, { hyperlinks: true }));
94
+ }
95
+ const parser = PARSERS.get(kind);
96
+ return parser ? `${colorJson(pretty(parser(String(source))))}\n` : String(source);
97
+ }
98
+
99
+ export async function main(argv, cwd = process.cwd(), input = Bun.stdin.stream()) {
100
+ const parsed = parseCatOperands(argv, "catfancy");
101
+ if (parsed.error) return { status: 1, stdout: "", stderr: parsed.error };
102
+ const operands = parsed.operands;
103
+
104
+ let status = 0, stdout = "", stderr = "";
105
+ for (const operand of operands) {
106
+ try {
107
+ const source = operand === "-"
108
+ ? await new Response(input).text()
109
+ : await Bun.file(isAbsolute(operand) ? operand : resolve(cwd, operand)).text();
110
+ stdout += renderFancy(source, operand === "-" ? "" : operand);
111
+ } catch (error) {
112
+ status = 1;
113
+ stderr += `bunmsh: catfancy: ${operand}: ${error.message}\n`;
114
+ }
115
+ }
116
+ return { status, stdout, stderr };
117
+ }
@@ -0,0 +1,31 @@
1
+ export function parseCatOperands(argv, name) {
2
+ const operands = [];
3
+ const excluded = [];
4
+ let options = true;
5
+
6
+ for (let i = 1; i < argv.length; i++) {
7
+ const value = argv[i];
8
+ if (options && value === "--") {
9
+ options = false;
10
+ } else if (options && value === "--exclude") {
11
+ if (i + 1 >= argv.length)
12
+ return { error: `bunmsh: ${name}: --exclude: missing file operand\n` };
13
+ excluded.push(argv[++i]);
14
+ } else if (options && value.startsWith("--exclude=")) {
15
+ excluded.push(value.slice("--exclude=".length));
16
+ } else if (options && value.startsWith("-") && value !== "-") {
17
+ return { error: `bunmsh: ${name}: ${value}: unknown option\n` };
18
+ } else {
19
+ operands.push(value);
20
+ }
21
+ }
22
+
23
+ if (operands.length === 0) return { operands: ["-"] };
24
+ const patterns = excluded.map((pattern) => new Bun.Glob(pattern.replaceAll("\\", "/")));
25
+ return {
26
+ operands: operands.filter((operand) => {
27
+ const path = operand.replaceAll("\\", "/");
28
+ return !patterns.some((pattern) => pattern.match(path));
29
+ }),
30
+ };
31
+ }