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,214 @@
1
+ #!/usr/bin/env bun
2
+
3
+ // Wraps native-bridge's raw speak()/ttsStatus() -- which never block, since
4
+ // TextToSpeech's completion signal is a callback the far side has no way to
5
+ // push to us over this protocol -- in the polling loop most callers actually
6
+ // want. Invoked as a subprocess this necessarily blocks the caller until
7
+ // speech finishes (or --async is given): that is expected, the same as any
8
+ // other CLI tool that waits for the thing it started.
9
+ import { speak, ttsStatus, available } from "../native-bridge/native-bridge.js"
10
+
11
+ // Buninu is cross-OS, not just Android: when native-bridge isn't available,
12
+ // fall back to a locally-spawned platform TTS command instead of just
13
+ // failing. This block is copied verbatim from jsmdcui's own
14
+ // src/index.js detectTtsCmd() (same pitch/speed/lang math, same command
15
+ // construction) rather than reimplemented, since the PowerShell quoting in
16
+ // the win32 branch is exactly the kind of thing that is easy to silently
17
+ // break by hand-retyping and hard to verify without a real Windows machine.
18
+ //
19
+ // One deliberate omission from the original: it ends with an
20
+ // `if (Bun.which("tts")) return {cmd:['tts'],via:'arg'}` fallback. Calling
21
+ // that from inside this exact script (also registered as Buninu's "tts"
22
+ // command, ahead of anything else named "tts" on PATH) would just be this
23
+ // script invoking itself -- the same self-reference risk xclip.js avoids
24
+ // around ClipboardManager's own "xclip" search, so it is left out here.
25
+ function detectTtsCmd(speed, pitch) {
26
+ const platform = process.platform;
27
+
28
+ const lang = process.env.TTS_LANG || 'zh-TW'
29
+ process.env.TTS_LANG = lang ;
30
+
31
+ if (platform === "android") {
32
+ if (Bun.which("termux-tts-speak"))
33
+ return { cmd: ["termux-tts-speak", "-p", String(pitch), "-r", String(speed)], via: "arg" };
34
+ }
35
+
36
+ if (platform === "darwin") {
37
+ // say -r <wpm>; pitch via [[pbas n]] embedded TTS command (0-127, 48 = normal)
38
+ const rate = Math.round(175 * speed);
39
+ const pitchN = Math.max(0, Math.min(127, Math.round(48 * pitch)));
40
+ return {
41
+ cmd: ["say", "-r", String(rate)],
42
+ via: "arg",
43
+ textTransform: pitchN !== 48 ? (t) => `[[pbas ${pitchN}]] ${t}` : null,
44
+ };
45
+ }
46
+
47
+ if (platform === "win32") {
48
+ // Rate property: -10 to 10 (0 = normal); pitch via SSML <prosody>
49
+ const rate = Math.max(-10, Math.min(10, Math.round((speed - 1) * 10)));
50
+ const pitchPct = Math.round((pitch - 1) * 100);
51
+ const pitchAttr = (pitchPct >= 0 ? "+" : "") + pitchPct + "%";
52
+ for (const shell of ["pwsh.exe", "powershell.exe"]) {
53
+ if (Bun.which(shell)) {
54
+ const psCmd =
55
+ "Add-Type -AssemblyName System.Speech; " +
56
+ `$s = New-Object System.Speech.Synthesis.SpeechSynthesizer; $s.Rate = ${rate}; ` +
57
+ `$t = [Console]::In.ReadToEnd(); ` +
58
+ `$x = [System.Security.SecurityElement]::Escape($t); ` +
59
+ `$s.SpeakSsml('<speak xml:lang="${lang}" version="1.0" xmlns="http://www.w3.org/2001/10/synthesis"><prosody pitch="${pitchAttr}">' + $x + '</prosody></speak>')`;
60
+ return { cmd: [shell, "-NoProfile", "-Command", psCmd], via: "stdin" };
61
+ }
62
+ }
63
+ }
64
+
65
+ // Linux / Android fallback: espeak-ng / espeak
66
+ // Speed: -s <wpm> (175 = normal), Pitch: -p <n> (0-99, 50 = normal)
67
+ for (const bin of ["espeak-ng", "espeak"]) {
68
+ if (Bun.which(bin)) {
69
+ const spd = Math.round(175 * speed);
70
+ const pit = Math.max(0, Math.min(99, Math.round(50 * pitch)));
71
+ return { cmd: [bin, '-s', spd, '-p', pit], via: "arg" };
72
+ }
73
+ }
74
+
75
+ return null;
76
+ }
77
+
78
+ // Also copied verbatim (as the spawn side of the same jsmdcui code path,
79
+ // runTts) other than operating on the whole text at once instead of
80
+ // per-sentence, since a CLI invocation has no buffer/cursor to highlight
81
+ // against sentence by sentence the way the jsmdcui TUI does.
82
+ async function speakViaPlatformCommand(text, cmd) {
83
+ const spawnOpts = { stdout: "ignore", stderr: "ignore", env: process.env };
84
+ spawnOpts.stdin = cmd.via === "stdin" ? new Blob([text]) : "ignore";
85
+
86
+ if (cmd.via === "arg") {
87
+ text = (text + "")
88
+ .replace(/^-+/, "")
89
+ .replaceAll("`", "")
90
+ .replaceAll("$", "");
91
+ if (cmd.textTransform) text = cmd.textTransform(text);
92
+ }
93
+ const args = cmd.via === "arg" ? [...cmd.cmd, text] : cmd.cmd;
94
+ const proc = Bun.spawn(args, spawnOpts);
95
+ return await proc.exited;
96
+ }
97
+
98
+ // Not too short: each tick is a full unix-socket round trip, and TTS
99
+ // utterances run several seconds at minimum, so polling faster just burns
100
+ // cycles without getting the answer any sooner.
101
+ const POLL_MS = 500
102
+
103
+ // No wall-clock cap by default. Real TTS tooling doesn't invent one: espeak-ng
104
+ // has no timeout concept at all (its man page documents speed/pitch/gaps but
105
+ // nothing about how long it may block), and Windows SAPI's WaitUntilDone
106
+ // treats -1 ("wait forever") as the documented default -- a fixed cap here
107
+ // would just mean this tool gives up early on long text, which has nothing
108
+ // to do with the host actually being broken. The loop below still can't hang
109
+ // on a genuinely dead host: each poll has call()'s own 5s timeout (throws,
110
+ // caught below), and the loop condition itself already exits the moment
111
+ // status leaves "speaking" -- "unknown"/"error" are the real failure signal,
112
+ // not a timer. Pass --timeout to opt into a bounded wait instead.
113
+ const argv = process.argv.slice(2)
114
+
115
+ if (argv.includes("--help") || argv.includes("-h")) {
116
+ console.log(`
117
+ Usage: tts <text>
118
+ tts "hello world"
119
+ tts -f "interrupt and say this instead"
120
+ tts -a "say this, don't wait for it to finish"
121
+ tts --timeout 30000 "give up after 30s if still speaking"
122
+ tts --pitch 1.2 --speed 0.8 "slower and higher-pitched"
123
+
124
+ -f, --flush interrupt whatever is currently speaking
125
+ -a, --async print the handle and exit immediately instead of polling
126
+ --timeout <ms> give up and exit non-zero after this long (default: none,
127
+ wait as long as it takes -- matches espeak-ng/SAPI)
128
+ --pitch <n> 1.0 is normal (default: $TTS_PITCH, or 1 if unset)
129
+ --speed <n> 1.0 is normal (default: $TTS_SPEED, or 1 if unset)
130
+ `)
131
+ process.exit(0)
132
+ }
133
+
134
+ const flush = argv.includes("-f") || argv.includes("--flush")
135
+ const isAsync = argv.includes("-a") || argv.includes("--async")
136
+
137
+ const optValue = (flag, envFallback) => {
138
+ const i = argv.indexOf(flag)
139
+ const raw = i !== -1 ? argv[i + 1] : process.env[envFallback]
140
+ const n = Number(raw)
141
+ return Number.isFinite(n) ? n : 1
142
+ }
143
+ const timeoutIdx = argv.indexOf("--timeout")
144
+ const maxWaitMs = timeoutIdx !== -1 ? Number(argv[timeoutIdx + 1]) : null
145
+ const pitch = optValue("--pitch", "TTS_PITCH")
146
+ const speed = optValue("--speed", "TTS_SPEED")
147
+
148
+ const valueFlags = new Set(["--timeout", "--pitch", "--speed"])
149
+ const text = argv.find((a, i) => !a.startsWith("-") && !valueFlags.has(argv[i - 1])) ?? ""
150
+
151
+ if (!available()) {
152
+ // No Android native bridge -- fall back to a local platform TTS command
153
+ // (see detectTtsCmd() above). flush/polling/handles are all native-bridge
154
+ // concepts specific to Android's async TextToSpeech callback; there is no
155
+ // equivalent "interrupt what's currently speaking" here, so -f/--flush is
156
+ // silently a no-op on this path.
157
+ const cmd = detectTtsCmd(speed, pitch)
158
+ if (!cmd) {
159
+ console.error("no TTS backend found: no native bridge, and no termux-tts-speak/say/PowerShell/espeak-ng/espeak on PATH")
160
+ process.exit(1)
161
+ }
162
+
163
+ if (isAsync) {
164
+ speakViaPlatformCommand(text, cmd)
165
+ process.exit(0)
166
+ }
167
+
168
+ const code = await speakViaPlatformCommand(text, cmd)
169
+ process.exit(code === 0 ? 0 : 1)
170
+ }
171
+
172
+ let handle
173
+ try {
174
+ handle = await speak(text, speed, pitch, flush)
175
+ } catch (e) {
176
+ console.error(`speak failed: ${e.message}`)
177
+ process.exit(1)
178
+ }
179
+
180
+ if (isAsync) {
181
+ console.log(handle)
182
+ process.exit(0)
183
+ }
184
+
185
+ const start = Date.now()
186
+ let status = "speaking"
187
+
188
+ while (status === "speaking") {
189
+ if (maxWaitMs != null && Date.now() - start > maxWaitMs) {
190
+ console.error(`tts: gave up waiting for "${handle}" after ${maxWaitMs}ms`)
191
+ process.exit(1)
192
+ }
193
+
194
+ await new Promise(resolve => setTimeout(resolve, POLL_MS))
195
+
196
+ try {
197
+ status = await ttsStatus(handle)
198
+ } catch (e) {
199
+ console.error(`ttsStatus failed: ${e.message}`)
200
+ process.exit(1)
201
+ }
202
+ }
203
+
204
+ if (status === "error") {
205
+ console.error(`tts: "${handle}" reported an error`)
206
+ process.exit(1)
207
+ }
208
+
209
+ if (status === "unknown") {
210
+ console.error(`tts: "${handle}" went unknown before finishing`)
211
+ process.exit(1)
212
+ }
213
+
214
+ process.exit(0)
@@ -0,0 +1,121 @@
1
+ #!/usr/bin/env bun
2
+
3
+ // Ported from ../tmpk/bin/xclip.sh (the DroidScript-era xclip). That version
4
+ // bridged to native only through DroidScript's dsapi.pipe; this one uses
5
+ // native-bridge instead. The core semantics are unchanged: "primary" is
6
+ // local-file-only (matches X11's mouse-selection clipboard, which xclip also
7
+ // keeps separate from the real clipboard), and only "-selection clipboard"
8
+ // (or its "-clip"/"-clipboard" shorthand) touches the real system clipboard.
9
+ import { getcb, setcb, available } from "../native-bridge/native-bridge.js"
10
+ import { ClipboardManager } from "../jsmdcui/src/platform/clipboard.js"
11
+
12
+ // Buninu is cross-OS, not just Android, so the "clipboard" register falls
13
+ // back through: native-bridge (Android) -> jsmdcui's own ClipboardManager
14
+ // (win32/darwin only, see below) -> wl-copy/wl-paste (Linux, Wayland).
15
+ //
16
+ // ClipboardManager is deliberately NOT used on Linux-like platforms
17
+ // (including Android): its own backend detection searches PATH for a binary
18
+ // literally named "xclip" there, and this script is itself registered as
19
+ // Buninu's "xclip" command, ahead of any real system xclip on PATH -- using
20
+ // it here would make this script shell out to itself. Its win32/darwin
21
+ // branches never search for "xclip" at all, so those two are safe.
22
+ let desktopClipboard = null
23
+ function getDesktopClipboard() {
24
+ if (process.platform !== "win32" && process.platform !== "darwin") return null
25
+ if (!desktopClipboard) desktopClipboard = new ClipboardManager()
26
+ return desktopClipboard
27
+ }
28
+
29
+ const wlAvailable = () => !!(Bun.which("wl-copy") && Bun.which("wl-paste"))
30
+ const wlRead = () => {
31
+ const proc = Bun.spawnSync(["wl-paste", "--no-newline"])
32
+ return proc.success ? new TextDecoder().decode(proc.stdout) : null
33
+ }
34
+ const wlWrite = (text) => Bun.spawnSync(["wl-copy"], { stdin: Buffer.from(text) }).success
35
+
36
+ const argv = process.argv.slice(2)
37
+
38
+ if (argv.includes("--help") || argv.includes("-h")) {
39
+ console.log(`
40
+ Usage: Paste/Copy
41
+ xclip -o [-selection clipboard]
42
+ xclip -o [-clip]
43
+ echo hello | xclip [-selection clipboard]
44
+ echo hello | xclip [-clip]
45
+
46
+ Uses primary by default(mouse selection)
47
+ `)
48
+ process.exit(0)
49
+ }
50
+
51
+ const selMatch = argv.join(" ").match(/-selection\s+(\S+)/)
52
+ const cb = selMatch ? selMatch[1]
53
+ : argv.some(a => a.includes("-clip")) ? "clipboard"
54
+ : "primary"
55
+
56
+ process.stderr.write(`\x1b[35mClipboard 剪貼板📋 : ${cb} \n\x1b[0m`)
57
+
58
+ const cbf = `${process.env.HOME}/.xclip.${cb}`
59
+ const useNative = cb !== "primary"
60
+ const desktop = useNative ? getDesktopClipboard() : null
61
+
62
+ if (useNative && !available() && !desktop && !wlAvailable())
63
+ process.stderr.write(`no system clipboard found (no native bridge, no ClipboardManager backend, no wl-copy/wl-paste)\nNo native clipboard now!\n`)
64
+
65
+ const isPaste = argv.some(a => a.toLowerCase() === "-o")
66
+
67
+ if (isPaste) {
68
+ process.stderr.write(`\x1b[33mPaste 貼上 📋 \n\x1b[0m`)
69
+
70
+ if (useNative) {
71
+ if (available()) {
72
+ try {
73
+ await Bun.write(cbf, (await getcb()) ?? "")
74
+ } catch (e) {
75
+ process.stderr.write(`getcb failed: ${e.message}\n`)
76
+ }
77
+ } else if (desktop) {
78
+ try {
79
+ await Bun.write(cbf, desktop.read("clipboard") ?? "")
80
+ } catch (e) {
81
+ process.stderr.write(`clipboard read failed: ${e.message}\n`)
82
+ }
83
+ } else if (wlAvailable()) {
84
+ const text = wlRead()
85
+ if (text != null) await Bun.write(cbf, text)
86
+ }
87
+ }
88
+
89
+ const file = Bun.file(cbf)
90
+ if (await file.exists()) process.stdout.write(new Uint8Array(await file.arrayBuffer()))
91
+ } else {
92
+ process.stderr.write(`\x1b[33mCopy 複製 ✂️ \n\x1b[0m`)
93
+
94
+ const input = await Bun.stdin.arrayBuffer()
95
+ await Bun.write(cbf, input)
96
+
97
+ if (useNative) {
98
+ if (available()) {
99
+ try {
100
+ await setcb(new TextDecoder().decode(input))
101
+ } catch (e) {
102
+ process.stderr.write(`setcb failed: ${e.message}\n`)
103
+ }
104
+ } else if (desktop) {
105
+ try {
106
+ desktop.write(new TextDecoder().decode(input), "clipboard")
107
+ } catch (e) {
108
+ process.stderr.write(`clipboard write failed: ${e.message}\n`)
109
+ }
110
+ } else if (wlAvailable()) {
111
+ wlWrite(new TextDecoder().decode(input))
112
+ }
113
+ }
114
+ }
115
+
116
+ // Explicit exit: call()'s own timeout race means every await above is
117
+ // guaranteed to settle, but a getcb()/setcb() that hit that timeout leaves
118
+ // an abandoned fetch running, which keeps Bun's event loop alive on its own.
119
+ // Without this, xclip could still hang after printing everything it needs
120
+ // to -- the shell would just never get its prompt back.
121
+ process.exit(0)
@@ -0,0 +1,151 @@
1
+ #!/usr/bin/env bun
2
+
3
+ // Android goes through native-bridge's xdgOpen (MainActivity.java validates
4
+ // the path stays under Buninu's home and serves it back out through a
5
+ // read-only content:// provider; a bare URL just goes to ACTION_VIEW). The
6
+ // other platforms each have their own "open with whatever the OS thinks is
7
+ // the default handler" mechanism -- macOS/Windows are real OS
8
+ // commands/APIs, but Linux's is conventionally *also* a command named
9
+ // xdg-open, so this script has to be careful not to find itself on PATH.
10
+ import {
11
+ xdgOpen as bridgeOpen, available, openWebView, showWebView,
12
+ } from "../native-bridge/native-bridge.js"
13
+ const fs = require("fs")
14
+
15
+ // MINAPK_WEBVIEW names *which* of the host app's WebViews to open into (0 is
16
+ // the console, 1 the app WebView, -1 whichever is in front); unset means the
17
+ // unchanged behavior of handing the target to the system's default handler.
18
+ // It is read here rather than being detected by the host, because it is an
19
+ // environment variable of this Bun process tree -- the host app's own process
20
+ // cannot see a value exported in this shell a moment ago, and the whole point
21
+ // of the variable is that it can be.
22
+ //
23
+ // Deliberately never Number()/parseInt(): Number("") is 0, and 0 is a
24
+ // perfectly valid WebView id, so an exported-but-empty MINAPK_WEBVIEW= (the
25
+ // usual way to switch something off) would come out meaning "open in the
26
+ // console" -- i.e. navigate the terminal away. parseInt would likewise turn
27
+ // "1x" into 1. Only a bare optionally-signed integer counts; anything else is
28
+ // reported and treated as unset.
29
+ function webViewIdFromEnv() {
30
+ const raw = (process.env.MINAPK_WEBVIEW ?? "").trim()
31
+ if (raw === "") return null
32
+ if (!/^-?\d+$/.test(raw)) {
33
+ process.stderr.write(
34
+ `xdg-open: ignoring MINAPK_WEBVIEW=${raw} (not an integer WebView id)\n`)
35
+ return null
36
+ }
37
+ return Number(raw)
38
+ }
39
+
40
+ // Only URLs. A filesystem path stays on the bridgeOpen path even when
41
+ // MINAPK_WEBVIEW is set: WebView's setAllowFileAccess defaults to false from
42
+ // API 30 on, so a file:// URL under Buninu's home would load as a blank page,
43
+ // whereas the host's xdgOpen already serves that file properly through its
44
+ // read-only content:// provider.
45
+ const isUrl = (target) => /^[a-zA-Z][a-zA-Z0-9+.-]*:\/\//.test(target)
46
+
47
+ // The host answers with the id it actually used -- a JSON number -- and with
48
+ // a string when something went wrong: "error: no such WebView: 9" from the
49
+ // dispatcher, or rpc.mjs's own "Unknown func ..." when the APK is older than
50
+ // these functions and does not list them in _discover. rpc.mjs also *resolves*
51
+ // to an Error object instead of throwing when the fetch itself fails. So
52
+ // success is checked as "is genuinely a number", never by parsing the result:
53
+ // see webViewIdFromEnv above for why a coercing parse is dangerous here.
54
+ //
55
+ // showWebView(-1) means "switch to the next one", not "the one just loaded",
56
+ // so the switch uses the id openWebView resolved and handed back, not the id
57
+ // that was asked for.
58
+ async function openInWebView(id, url) {
59
+ const opened = await openWebView(id, url)
60
+ if (typeof opened !== "number" || !Number.isInteger(opened)) {
61
+ process.stderr.write(
62
+ `xdg-open: MINAPK_WEBVIEW=${id}: ${opened?.message ?? opened}\n`)
63
+ return false
64
+ }
65
+
66
+ const shown = await showWebView(opened)
67
+ if (typeof shown !== "number" || !Number.isInteger(shown)) {
68
+ // Loaded but not brought to the front: say so rather than reporting
69
+ // success for something the user cannot see, but do not fall back to the
70
+ // system handler either -- the page really is loaded in that WebView.
71
+ process.stderr.write(
72
+ `xdg-open: loaded in WebView ${opened} but could not switch to it: ` +
73
+ `${shown?.message ?? shown}\n`)
74
+ }
75
+ return true
76
+ }
77
+
78
+ // Buninu's own bin/ is prepended to PATH ahead of any real system binary of
79
+ // the same name (same concern as xclip.js/tts.js), and this script is
80
+ // itself registered as Buninu's "xdg-open" command -- a naive PATH search
81
+ // would just find this file. Skip Buninu's own bin dir and keep looking
82
+ // further down PATH for wherever a real xdg-open actually lives.
83
+ function findSystemXdgOpen() {
84
+ const ownBinDir = process.env.BUNINU_HOME ? `${process.env.BUNINU_HOME}/bin` : null
85
+ for (const dir of (process.env.PATH || "").split(":").filter(Boolean)) {
86
+ if (dir === ownBinDir) continue
87
+ const candidate = `${dir}/xdg-open`
88
+ try {
89
+ fs.accessSync(candidate, fs.constants.X_OK)
90
+ return candidate
91
+ } catch {}
92
+ }
93
+ return null
94
+ }
95
+
96
+ async function runCommand(args) {
97
+ const proc = Bun.spawn(args, { stdout: "ignore", stderr: "ignore" })
98
+ return (await proc.exited) === 0
99
+ }
100
+
101
+ const argv = process.argv.slice(2)
102
+
103
+ if (argv.length === 0 || argv.includes("-h") || argv.includes("--help")) {
104
+ console.log("usage: xdg-open <file-or-url>")
105
+ process.exit(argv.length === 0 ? 1 : 0)
106
+ }
107
+
108
+ const target = argv[0]
109
+ let ok = false
110
+
111
+ try {
112
+ if (process.platform === "android") {
113
+ if (available()) {
114
+ const webViewId = webViewIdFromEnv()
115
+ // A failed WebView open falls back to the system handler rather than
116
+ // failing outright: the request was "open this", and MINAPK_WEBVIEW
117
+ // only says where it would be preferred. openInWebView has already
118
+ // explained on stderr why it could not.
119
+ ok = webViewId !== null && isUrl(target)
120
+ ? (await openInWebView(webViewId, target)) || (await bridgeOpen(target))
121
+ : await bridgeOpen(target)
122
+ } else if (Bun.which("termux-open")) {
123
+ // Plain Termux (no minapk) still reports platform "android" but has
124
+ // no PKG_BRIDGE_SOCK -- termux-open (Termux:API) does the same
125
+ // ACTION_VIEW-based open, same fallback relationship as tts.js's
126
+ // termux-tts-speak branch when native-bridge isn't available.
127
+ ok = await runCommand(["termux-open", target])
128
+ } else {
129
+ throw new Error("no native bridge and no termux-open (install termux-api, or run inside minapk's APK)")
130
+ }
131
+ } else if (process.platform === "darwin") {
132
+ ok = await runCommand(["open", target])
133
+ } else if (process.platform === "win32") {
134
+ // start is a cmd builtin, not a real executable, and needs an empty ""
135
+ // title argument first or it treats a quoted target as the title.
136
+ ok = await runCommand(["cmd", "/c", "start", "", target])
137
+ } else {
138
+ const real = findSystemXdgOpen()
139
+ if (!real) throw new Error("no system xdg-open found on PATH")
140
+ ok = await runCommand([real, target])
141
+ }
142
+ } catch (e) {
143
+ process.stderr.write(`xdg-open: ${e.message}\n`)
144
+ process.exit(1)
145
+ }
146
+
147
+ // Explicit exit: bridgeOpen() goes through native-bridge's call(), whose own
148
+ // timeout race leaves an abandoned fetch running the event loop on a
149
+ // timeout -- without this, xdg-open could hang after printing everything it
150
+ // needs to.
151
+ process.exit(ok ? 0 : 1)
@@ -0,0 +1,37 @@
1
+ @echo off
2
+ setlocal EnableExtensions EnableDelayedExpansion
3
+
4
+ set "BUNINU_BUN_ARCHIVE=%~dp0..\apps\bun\bunBin.tgz"
5
+ set "BUNINU_BUN_WX=%~dp0bun-wx.exe"
6
+ set "BUNINU_EXTRACT_BUN="
7
+
8
+ if exist "%BUNINU_BUN_ARCHIVE%" (
9
+ if not exist "%BUNINU_BUN_WX%" set "BUNINU_EXTRACT_BUN=1"
10
+
11
+ if exist "%BUNINU_BUN_WX%" if exist "%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" (
12
+ for /f "delims=" %%U in ('"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoLogo -NoProfile -NonInteractive -Command "if ((Get-Item -LiteralPath $env:BUNINU_BUN_ARCHIVE).LastWriteTimeUtc -gt (Get-Item -LiteralPath $env:BUNINU_BUN_WX).LastWriteTimeUtc) { '1' }"') do set "BUNINU_EXTRACT_BUN=%%U"
13
+ )
14
+ )
15
+
16
+ if defined BUNINU_EXTRACT_BUN (
17
+ tar -xzf "%BUNINU_BUN_ARCHIVE%" -C "%~dp0"
18
+ if errorlevel 1 (
19
+ echo Failed to extract Bun archive: %BUNINU_BUN_ARCHIVE% 1>&2
20
+ exit /b 1
21
+ )
22
+ )
23
+
24
+ if exist "%~dp0bun-wx.exe" (
25
+ "%~dp0bun-wx.exe" %*
26
+ exit /b !ERRORLEVEL!
27
+ )
28
+
29
+ for /f "delims=" %%B in ('where bun.exe 2^>nul') do (
30
+ if /I not "%%~dpB"=="%~dp0" (
31
+ "%%~fB" %*
32
+ exit /b !ERRORLEVEL!
33
+ )
34
+ )
35
+
36
+ echo Bun Binary not found: %~dp0bun-wx.exe ^(and no external bun.exe found in PATH^) 1>&2
37
+ exit /b 127
@@ -0,0 +1,57 @@
1
+ #!/bin/sh
2
+
3
+ sd=$(dirname "$(realpath "$0")")
4
+
5
+ bunBinTgz=$sd/../apps/bun/bunBin.tgz
6
+
7
+ annl=androidNativeLibs
8
+
9
+ if [ -f /system/bin/linker64 ] ; then
10
+ if [ -f "$sd"/$annl/libbun.so ] ; then
11
+ exec "$sd"/$annl/libbun.so "$@"
12
+ elif uname -m | grep -q aarch64 ; then
13
+ bunBin="$sd"/bun-la
14
+ else
15
+ bunBin="$sd"/bun-lx
16
+ fi
17
+ elif [ -d "$WINDIR" ] ; then
18
+ bunBin="$sd"/bun-wx.exe
19
+ elif uname -m | grep -q aarch64 ; then
20
+ bunBin="$sd"/bun-la
21
+ else
22
+ bunBin="$sd"/bun-lx
23
+ fi
24
+
25
+
26
+ if [ -f "$bunBinTgz" ] &&
27
+ [ "$bunBinTgz" -nt "$bunBin" ] ; then
28
+ tar -xzvf "$bunBinTgz" -C "$sd"
29
+ fi
30
+
31
+
32
+ if [ -f "$bunBin" ] ; then
33
+ exec "$bunBin" "$@"
34
+ fi
35
+
36
+ # The package bin directory can contain a `bun` symlink back to this script.
37
+ # Search PATH manually so that a system/user-installed Bun outside this
38
+ # directory can be used without recursively executing bun.sh again.
39
+ oldIFS=$IFS
40
+ IFS=:
41
+ for pathDir in ${PATH:-} ; do
42
+ [ -n "$pathDir" ] || pathDir=.
43
+ if [ "$(realpath "$pathDir" 2>/dev/null)" = "$sd" ] ; then
44
+ continue
45
+ fi
46
+
47
+ for externalBun in "$pathDir/bun" "$pathDir/bun.exe" ; do
48
+ if [ -f "$externalBun" ] && [ -x "$externalBun" ] ; then
49
+ IFS=$oldIFS
50
+ exec "$externalBun" "$@"
51
+ fi
52
+ done
53
+ done
54
+ IFS=$oldIFS
55
+
56
+ echo "Bun Binary not found: $bunBin (and no external Bun found in PATH)" 1>&2
57
+ exit 127
@@ -0,0 +1,4 @@
1
+ @echo off
2
+ call "%~dp0bun.bat" "%~dp0..\apps\jsmdcui\src\index.js" --cat "%~dp0..\README.md"
3
+ call "%~dp0bun.bat" "%~dp0..\apps\jsgotty\gotty.js" --viu "%~dp0..\icon.png"
4
+ exit /b %ERRORLEVEL%
@@ -0,0 +1,7 @@
1
+ #!/bin/sh
2
+
3
+ sd=$(dirname "$(realpath "$0")")
4
+ root=$sd/..
5
+
6
+ bun "$root"/apps/jsmdcui/src/index.js --cat "$root"/README.md
7
+ exec bun "$root"/apps/jsgotty/gotty.js --viu "$root"/icon.png
@@ -0,0 +1,3 @@
1
+ @echo off
2
+ call "%~dp0bun.bat" "%~dp0..\apps\bunmsh\bunmsh" %*
3
+ exit /b %ERRORLEVEL%
@@ -0,0 +1,5 @@
1
+ #!/bin/sh
2
+
3
+ sd=$(dirname "$(realpath "$0")")
4
+
5
+ exec bun "$sd"/../apps/bunmsh/index.js "$@"
@@ -0,0 +1,3 @@
1
+ @echo off
2
+ call "%~dp0bun.bat" "%~dp0..\apps\bunx\bunx.js" %*
3
+ exit /b %ERRORLEVEL%
@@ -0,0 +1,3 @@
1
+ @echo off
2
+ call "%~dp0bun.bat" "%~dp0..\apps\jsmdcui\src\index.js" --cat %*
3
+ exit /b %ERRORLEVEL%
@@ -0,0 +1,5 @@
1
+ #!/bin/sh
2
+
3
+ sd=$(dirname "$(realpath "$0")")
4
+
5
+ exec bun "$sd"/../apps/jsmdcui/src/index.js --cat "$@"