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,371 @@
1
+ import { join, posix, sep } from "node:path";
2
+ import { existsSync, readdirSync, readFileSync, statSync } from "node:fs";
3
+ import { readFile } from "node:fs/promises";
4
+ import { IS_COMPILED, REPO_ROOT } from "./compiled.js";
5
+ import { pkg } from "./assetsPacker.js";
6
+
7
+ const textDecoder = new TextDecoder();
8
+ const textEncoder = new TextEncoder();
9
+
10
+ // This package own namespace inside a shared archive. Matches what
11
+ // `assetsPacker -p` writes, and what `--asset ./build/assets` lands at
12
+ // under /$bunfs/root, so one key reaches either back end.
13
+ export const SELF = `assets/${pkg.name}@${pkg.version}`;
14
+
15
+ // "" when this build packed flat keys, SELF when it packed namespaced
16
+ // ones. Detected from what is actually there rather than declared by a
17
+ // build flag, which can disagree with the packer and fail silently.
18
+ //
19
+ // NOTE: nothing reads this yet; the lookups below are still flat.
20
+ //
21
+ // Lazy because the tar back end fills globalThis.internalAssets
22
+ // asynchronously, so module-load time is too early to look.
23
+ let detectedPrefix;
24
+
25
+ export function assetPrefix() {
26
+ if (detectedPrefix === undefined) detectedPrefix = detectPrefix();
27
+ return detectedPrefix;
28
+ }
29
+
30
+ function detectPrefix() {
31
+ const store = getAssetStore();
32
+
33
+ if (store) {
34
+ const keys = store instanceof Map ? store.keys() : Object.keys(store);
35
+ for (const key of keys) if (key.startsWith(SELF + "/")) return SELF;
36
+ }
37
+
38
+ const base = bunfsBase();
39
+ if (base && existsSync(join(base, SELF))) return SELF;
40
+
41
+ return "";
42
+ }
43
+
44
+ // `--assets-external` means "ignore what is embedded". The tar loader
45
+ // signals it by setting the store to null; with no loader in the graph
46
+ // (the --asset back end) it stays undefined, so only null counts.
47
+ //
48
+ // Without this the bunfs branch below stayed live in tar builds too, and
49
+ // since it is rooted at the binary's own /$bunfs/root, an external run
50
+ // enumerated the executable and its embedded tar as if they were assets.
51
+ function externalAssets() {
52
+ return globalThis.internalAssets === null;
53
+ }
54
+
55
+ // Whether THIS package has anything embedded. A bare store check was
56
+ // true even for an empty one, which sent every caller down the internal
57
+ // branch to find nothing and never try the disk fallback.
58
+ export function hasInternalAssets() {
59
+ return listInternalAssetPaths().length > 0;
60
+ }
61
+
62
+ export function assetPath(...parts) {
63
+ return parts
64
+ .flatMap((part) => String(part).split(/[\\/]+/))
65
+ .filter(Boolean)
66
+ .join("/");
67
+ }
68
+
69
+ export function decodeHtmlAttribute(value) {
70
+ return String(value ?? "").replace(
71
+ /&(?:amp|quot|apos|lt|gt|#39|#x27|#\d+|#x[\da-f]+);/gi,
72
+ (entity) => {
73
+ const named = {
74
+ "&": "&",
75
+ """: "\"",
76
+ "'": "'",
77
+ "&lt;": "<",
78
+ "&gt;": ">",
79
+ "&#39;": "'",
80
+ "&#x27;": "'",
81
+ }[entity.toLowerCase()];
82
+ if (named != null) return named;
83
+ const hex = /^&#x([\da-f]+);$/i.exec(entity);
84
+ const decimal = /^&#(\d+);$/.exec(entity);
85
+ const codePoint = Number.parseInt(hex?.[1] ?? decimal?.[1] ?? "", hex ? 16 : 10);
86
+ try {
87
+ return Number.isInteger(codePoint) ? String.fromCodePoint(codePoint) : entity;
88
+ } catch {
89
+ return entity;
90
+ }
91
+ },
92
+ );
93
+ }
94
+
95
+ export function canonicalHtmlBundleImageHref(input, { htmlAttribute = false } = {}) {
96
+ let value = String(input ?? "");
97
+ if (htmlAttribute) value = decodeHtmlAttribute(value);
98
+ try {
99
+ return decodeURIComponent(value);
100
+ } catch {
101
+ return value;
102
+ }
103
+ }
104
+
105
+ export function findHtmlBundleAsset(homepage, publicPath, {
106
+ contentTypePrefix = "",
107
+ } = {}) {
108
+ if (!Array.isArray(homepage?.files)) return null;
109
+ const name = posix.basename(String(publicPath ?? "").replace(/[?#].*$/, ""));
110
+ for (const file of homepage.files) {
111
+ if (file?.loader !== "file") continue;
112
+ const contentType = String(file.headers?.["content-type"] ?? "");
113
+ if (contentTypePrefix && !contentType.startsWith(contentTypePrefix)) continue;
114
+ if (posix.basename(String(file.path ?? "")) === name) return file;
115
+ }
116
+ return null;
117
+ }
118
+
119
+ export function findHtmlBundleImageAsset(homepage, publicPath) {
120
+ return findHtmlBundleAsset(homepage, publicPath, {
121
+ contentTypePrefix: "image/",
122
+ });
123
+ }
124
+
125
+ export function htmlBundleImageAssetPath(homepage, publicPath) {
126
+ return findHtmlBundleImageAsset(homepage, publicPath)?.path ?? null;
127
+ }
128
+
129
+ export async function buildHtmlBundleImageMap(
130
+ homepage,
131
+ sourceAttribute = "data-mdcui-src",
132
+ ) {
133
+ const images = new Map();
134
+ if (!homepage?.index || !Array.isArray(homepage.files)) return images;
135
+ const html = await Bun.file(homepage.index).text();
136
+ for (const tag of html.match(/<img\b[^>]*>/gi) ?? []) {
137
+ const rawHref = htmlTagAttribute(tag, sourceAttribute);
138
+ const publicPath = htmlTagAttribute(tag, "src");
139
+ if (rawHref == null || publicPath == null) continue;
140
+ const bundledPath = htmlBundleImageAssetPath(homepage, decodeHtmlAttribute(publicPath));
141
+ if (!bundledPath) continue;
142
+ images.set(
143
+ canonicalHtmlBundleImageHref(rawHref, { htmlAttribute: true }),
144
+ bundledPath,
145
+ );
146
+ }
147
+ return images;
148
+ }
149
+
150
+ // `bun build --compile --asset` puts the files at real paths under
151
+ // import.meta.dir instead of into the tar map. Only in a compiled
152
+ // binary: in the source tree this file sits in single-exe/, which is
153
+ // not the asset root.
154
+ function bunfsBase() {
155
+ return IS_COMPILED && !externalAssets() ? import.meta.dir : null;
156
+ }
157
+
158
+ // Store-space keys for every regular file under <base>/<sub>.
159
+ //
160
+ // NOTE: with no namespace, <sub> is "" and the scan starts at
161
+ // /$bunfs/root, which also holds the executable and any file-loader
162
+ // assets. Nothing marks those apart from real assets, so pack with -p
163
+ // when the --asset back end is in play.
164
+ function walkBunfs(base, sub) {
165
+ const dir = sub ? join(base, sub) : base;
166
+
167
+ let names;
168
+ try {
169
+ names = readdirSync(dir, { recursive: true });
170
+ } catch {
171
+ return [];
172
+ }
173
+
174
+ const out = [];
175
+
176
+ for (const name of names) {
177
+ const rel = String(name).split(sep).join("/");
178
+
179
+ try {
180
+ if (!statSync(join(dir, String(name))).isFile()) continue;
181
+ } catch {
182
+ continue;
183
+ }
184
+
185
+ out.push(sub ? `${sub}/${rel}` : rel);
186
+ }
187
+
188
+ return out;
189
+ }
190
+
191
+ // Callers always speak package-relative keys. This is the one place
192
+ // those become store keys, so the namespace stays invisible to them.
193
+ // Exported because a caller rolling its own fallback needs the same
194
+ // answer — `--assets-extract` writes the archive under these keys.
195
+ export function getAssetKey(path) {
196
+ const key = assetPath(path);
197
+ const at = assetPrefix();
198
+ return at ? (key ? `${at}/${key}` : at) : key;
199
+ }
200
+
201
+ // Where the disk fallback looks for a package-relative key.
202
+ //
203
+ // A source checkout has the plain path. A compiled binary does not:
204
+ // `--assets-extract` writes the archive exactly as packed, namespace
205
+ // included, so the extracted `README.md` lands at
206
+ // `<exe dir>/assets/<name>@<version>/README.md` and the plain join
207
+ // misses it. `assetPrefix()` cannot answer this — with
208
+ // `--assets-external` there is no store to detect it from, which is
209
+ // precisely when the fallback runs — so try SELF and keep the plain
210
+ // path for archives that were packed flat.
211
+ export function assetDiskPath(path) {
212
+ const key = assetPath(path);
213
+ const plain = join(REPO_ROOT, key);
214
+
215
+ if (!IS_COMPILED) return plain;
216
+
217
+ const namespaced = join(REPO_ROOT, SELF, key);
218
+ return existsSync(namespaced) ? namespaced : plain;
219
+ }
220
+
221
+ export function listInternalAssetPaths(prefix = "") {
222
+ const at = assetPrefix();
223
+ const wanted = getAssetKey(prefix);
224
+ const store = getAssetStore();
225
+ const found = new Set();
226
+
227
+ if (store) for (const key of iterateAssetKeys(store)) found.add(key);
228
+
229
+ const base = bunfsBase();
230
+ if (base) for (const key of walkBunfs(base, wanted)) found.add(key);
231
+
232
+ let entries = [...found];
233
+
234
+ if (wanted) {
235
+ const base = `${wanted}/`;
236
+ entries = entries.filter((path) => path === wanted || path.startsWith(base));
237
+ }
238
+
239
+ // Hand the namespace back off on the way out, or every caller that
240
+ // matches on the returned paths would have to know about it.
241
+ if (at) {
242
+ const cut = at.length + 1;
243
+ entries = entries.filter((path) => path.startsWith(at + "/")).map((path) => path.slice(cut));
244
+ }
245
+
246
+ return entries.sort();
247
+ }
248
+
249
+ export function listInternalAssetDirs(prefix = "") {
250
+ const normalizedPrefix = assetPath(prefix);
251
+ const base = normalizedPrefix ? `${normalizedPrefix}/` : "";
252
+ const dirs = new Set();
253
+
254
+ for (const path of listInternalAssetPaths(prefix)) {
255
+ const rest = normalizedPrefix ? path.slice(base.length) : path;
256
+ const [dir] = rest.split("/");
257
+ if (dir) dirs.add(dir);
258
+ }
259
+
260
+ return [...dirs].sort();
261
+ }
262
+
263
+ export function getInternalAsset(path) {
264
+ const key = getAssetKey(path);
265
+
266
+ const store = getAssetStore();
267
+ if (store) {
268
+ const hit = store instanceof Map ? store.get(key) : (store[key] ?? store[path]);
269
+ if (hit != null) return hit;
270
+ }
271
+
272
+ // Tar first so an existing build keeps its exact behaviour; the
273
+ // --asset back end answers whatever the tar does not hold.
274
+ const base = bunfsBase();
275
+ if (base) {
276
+ try {
277
+ return readFileSync(join(base, key));
278
+ } catch {}
279
+ }
280
+
281
+ return null;
282
+ }
283
+
284
+ export function readInternalAssetBytes(path) {
285
+ const value = getInternalAsset(path);
286
+ if (value == null) return null;
287
+ if (value instanceof Uint8Array) return value;
288
+ if (ArrayBuffer.isView(value)) {
289
+ return new Uint8Array(value.buffer, value.byteOffset, value.byteLength);
290
+ }
291
+ if (value instanceof ArrayBuffer) return new Uint8Array(value);
292
+ if (typeof value === "string") return textEncoder.encode(value);
293
+ return textEncoder.encode(String(value));
294
+ }
295
+
296
+ export function readInternalAssetText(path) {
297
+ const bytes = readInternalAssetBytes(path);
298
+ if (!bytes) return null;
299
+ return textDecoder.decode(bytes);
300
+ }
301
+
302
+ // The fallback reads through node:fs so the same call works under plain
303
+ // Node, which is the whole point of keeping the loader out of the main
304
+ // program's module graph.
305
+ export async function readAssetText(path) {
306
+ const internal = readInternalAssetText(path);
307
+ if (internal != null) return internal;
308
+
309
+ // TextDecoder drops a leading BOM, so the embedded path never returns
310
+ // one; readFile keeps it. Strip it here or the same file reads
311
+ // differently depending on whether it was embedded.
312
+ return (await readFile(assetDiskPath(path), "utf8")).replace(/^\uFEFF/, "");
313
+ }
314
+
315
+ export async function readAssetBytes(path) {
316
+ const internal = readInternalAssetBytes(path);
317
+ if (internal) return internal;
318
+
319
+ const buf = await readFile(assetDiskPath(path));
320
+
321
+ // Buffer is a Uint8Array, but hand back a plain one so callers cannot
322
+ // come to depend on the Buffer-only methods.
323
+ return new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength);
324
+ }
325
+
326
+ // Sync twins of readAssetText / readAssetBytes, for callers that cannot
327
+ // await — argument parsing, module init, CommonJS programs. Same lookup
328
+ // and same fallback; only the disk read differs (node:fs sync).
329
+ export function readAssetTextSync(path) {
330
+ const internal = readInternalAssetText(path);
331
+ if (internal != null) return internal;
332
+
333
+ return readFileSync(assetDiskPath(path), "utf8").replace(/^\uFEFF/, "");
334
+ }
335
+
336
+ export function readAssetBytesSync(path) {
337
+ const internal = readInternalAssetBytes(path);
338
+ if (internal) return internal;
339
+
340
+ const buf = readFileSync(assetDiskPath(path));
341
+ return new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength);
342
+ }
343
+
344
+ export function internalAssetSource(path) {
345
+ return {
346
+ name: path.split("/").pop() ?? path,
347
+ path,
348
+ async text() {
349
+ return readInternalAssetText(path) ?? "";
350
+ },
351
+ };
352
+ }
353
+
354
+ function getAssetStore() {
355
+ const store = globalThis.internalAssets;
356
+ if (!store) return null;
357
+ if (store instanceof Map) return store;
358
+ if (typeof store === "object") return store;
359
+ return null;
360
+ }
361
+
362
+ function iterateAssetKeys(store) {
363
+ if (store instanceof Map) return [...store.keys()].map(String);
364
+ return Object.keys(store);
365
+ }
366
+
367
+ function htmlTagAttribute(tag, name) {
368
+ const escapedName = String(name).replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
369
+ const match = String(tag).match(new RegExp(`\\b${escapedName}\\s*=\\s*([\"'])(.*?)\\1`, "i"));
370
+ return match?.[2] ?? null;
371
+ }
@@ -0,0 +1,85 @@
1
+ import assets from "./assets.tar" with { type: "file" };
2
+ import { getExeDirname, isCompiledBinary } from "./compiled.js";
3
+
4
+ const forceExternalAssets = process.argv.includes("--assets-external");
5
+ const debugAssetsLoader = Boolean(process.env.ASSETS_DEBUG);
6
+ if (forceExternalAssets) {
7
+ const flagIndex = process.argv.indexOf("--assets-external");
8
+ if (flagIndex >= 0) process.argv.splice(flagIndex, 1);
9
+ }
10
+
11
+ globalThis.internalAssets = forceExternalAssets ? null : Object.create(null);
12
+ globalThis.assetsLoaderPromise = main(process.argv).catch((error) => {
13
+ console.error("# assets loader failed");
14
+ console.error(error);
15
+ return globalThis.internalAssets;
16
+ });
17
+
18
+ async function main(argv) {
19
+
20
+ if (forceExternalAssets &&
21
+ !argv.includes("--assets-list") &&
22
+ !argv.includes("--assets-extract")) {
23
+ return null;
24
+ }
25
+
26
+ const startedAt = debugAssetsLoader ? Bun.nanoseconds() : 0;
27
+
28
+ const tarball = await Bun.file(assets).bytes();
29
+ const archive = new Bun.Archive(tarball);
30
+
31
+ await cliEarlyExit(archive, argv);
32
+
33
+ const files = await archive.files();
34
+ const entries = [...files.entries()];
35
+ const assetsByPath = Object.create(null);
36
+ const errors = [];
37
+
38
+ for (const [path, file] of entries) {
39
+ try {
40
+ assetsByPath[path] = await file.bytes();
41
+ } catch (reason) {
42
+ errors.push({ path, reason });
43
+ }
44
+ }
45
+
46
+ if (errors.length > 0) {
47
+ console.error(`# Failed to load ${errors.length} bundled asset(s):`);
48
+ for (const { path, reason } of errors) {
49
+ console.error(`- ${path}`);
50
+ if (reason) {
51
+ console.error(reason);
52
+ }
53
+ }
54
+ }
55
+ if (debugAssetsLoader) {
56
+ const elapsedMs = (Bun.nanoseconds() - startedAt) / 1e6;
57
+ console.error(`Loaded assets: ${elapsedMs.toFixed(3)} ms`);
58
+ }
59
+
60
+ globalThis.internalAssets = assetsByPath;
61
+ return assetsByPath;
62
+ }
63
+
64
+ async function cliEarlyExit(archive, argv) {
65
+ if (argv.includes("--assets-list")) {
66
+ const files = await archive.files();
67
+ for (const path of [...files.keys()].sort()) {
68
+ console.log(path);
69
+ }
70
+ process.exit(0);
71
+ }
72
+
73
+ if (argv.includes("--assets-extract")) {
74
+ if (isCompiledBinary())
75
+ {
76
+ const targetDir = getExeDirname();
77
+ const extracted = await archive.extract(targetDir);
78
+ console.log(`Extracted ${extracted} asset(s) to ${targetDir}`);
79
+ } // if isCompiled
80
+ else
81
+ console.log("Assets extraction should only be used in a Bun compiled single-file executable");
82
+
83
+ process.exit(0);
84
+ }
85
+ }
@@ -0,0 +1,218 @@
1
+ #!/usr/bin/env bun
2
+
3
+ // Change these 2 lines for
4
+ // the relative assets root if needed
5
+ import pkg from "../package.json" with { type: "json" };
6
+ export { pkg };
7
+ export const ASSETS_ROOT = "..";
8
+
9
+ import path from "node:path";
10
+ import { existsSync } from "node:fs";
11
+ import { cpSync, mkdirSync, readdirSync, rmSync, statSync } from "node:fs";
12
+
13
+ const PKG_ROOT = path.resolve(import.meta.dirname, ASSETS_ROOT);
14
+
15
+ if (import.meta.main) {
16
+ if (process.argv.includes("-h") || process.argv.includes("--help")) {
17
+ const help = `
18
+ # Single-file executable assets packer
19
+
20
+ Packs the \`assets\` list from \`package.json\`, folders recursively.
21
+ Reads \`${pkg.name}@${pkg.version}\` from \`../package.json\`.
22
+
23
+ ## Options
24
+
25
+ - \`-f PATH\` — where to pack to. Defaults to \`./assets.tar\`
26
+ - a \`.tar\` file picks tar mode
27
+ - an existing folder picks folder mode
28
+ - \`-r\` \`--append\` — merge into an existing archive instead of replacing it
29
+ - a repacked path *replaces* its member rather than duplicating it,
30
+ unlike real \`tar -r\`
31
+ - use it for every step of a multi-package relay
32
+ - \`-p [PREFIX]\` — namespace this package's members inside a shared archive
33
+ - bare \`-p\` means \`assets/${pkg.name}@${pkg.version}\`
34
+ - omit it for a single-project build, which keeps the flat key space
35
+ - \`--dry\` — print the resolved settings and exit without writing
36
+ - \`-h\` \`--help\` — this text
37
+
38
+ ## Two modes, one key space
39
+
40
+ - **tar mode** feeds \`import x from "./assets.tar" with { type: "file" }\`
41
+ - **folder mode** feeds \`bun build --compile --asset ./build/assets\`
42
+ - the folder must already exist
43
+ - \`--asset\` keeps only the basename of the path it is given, so pass the
44
+ assets root itself: \`-f /path/to/build/assets\` puts this package under
45
+ \`build/assets/${pkg.name}@${pkg.version}/\`
46
+
47
+ tar mode with \`-p\` and folder mode into \`build/assets\` produce the same keys,
48
+ so \`assetsHelper\` reads either back end with one set of paths.
49
+ `;
50
+
51
+ console.log(Bun?.markdown?.ansi?.(help) ?? help);
52
+ } else {
53
+ await main();
54
+ }
55
+ }
56
+
57
+ export async function main(argv = process.argv) {
58
+ console.log("Packing", pkg.name + "@" + pkg.version);
59
+
60
+ let aindex = argv.indexOf("-f");
61
+
62
+ const appendMode = argv.includes("-r") || argv.includes("--append");
63
+
64
+ // Namespace for this package's members inside a shared archive.
65
+ // "-p" alone means `assets/<name>@<version>`, matching what
66
+ // `bun build --compile --asset ./build/assets` puts in /$bunfs/root
67
+ // (that flag keeps only the basename of the path it is given), so
68
+ // both back ends answer to the same keys. Empty (the default) keeps
69
+ // the flat key space a single-project build expects.
70
+ let pindex = argv.indexOf("-p");
71
+ if (pindex == -1) pindex = argv.indexOf("--prefix");
72
+
73
+ const prefix =
74
+ pindex == -1
75
+ ? ""
76
+ : (argv[pindex + 1] ?? "").startsWith("-") || argv[pindex + 1] == null
77
+ ? `assets/${pkg.name}@${pkg.version}`
78
+ : argv[pindex + 1];
79
+
80
+ // A missing value would silently resolve the next flag as a filename
81
+ // ("-f -r" -> <cwd>/-r), so refuse it rather than pack somewhere odd.
82
+ if (aindex != -1 && (argv[aindex + 1] == null || argv[aindex + 1].startsWith("-"))) {
83
+ console.error("-f needs a file or folder path");
84
+ return 2;
85
+ }
86
+
87
+ // Resolved against the caller's cwd so every later consumer agrees on
88
+ // what it points at: `mkdir` runs in the process cwd while the copy
89
+ // loop runs in PKG_ROOT, and a relative -f would mean two places.
90
+ const archive = aindex == -1 ? path.join(import.meta.dir, "assets.tar") : path.resolve(argv[aindex + 1]);
91
+
92
+ const folderMode = existsSync(archive) && !(await Bun.file(archive).exists());
93
+
94
+ const folderPath = folderMode ? path.join(archive, pkg.name + "@" + pkg.version) : "";
95
+
96
+ console.log({
97
+ appendMode,
98
+ archive,
99
+ prefix,
100
+ folderMode,
101
+ folderPath,
102
+ PKG_ROOT,
103
+ assets: pkg.assets,
104
+ });
105
+
106
+ if (argv.includes("--dry")) return 0;
107
+
108
+ if (folderMode) await Bun.$`mkdir -p ${folderPath}`;
109
+
110
+ // No assets field in package.json
111
+ if (!Array.isArray(pkg.assets) || pkg.assets.length == 0) {
112
+ console.error("Nothing to pack!");
113
+
114
+ if (folderMode) {
115
+ console.error("Defaults to package.json");
116
+ await Bun.write(path.join(folderPath, "package.json"), JSON.stringify(pkg, null, 1));
117
+ } // assets.tar mode
118
+ else {
119
+ const file = Bun.file(archive);
120
+
121
+ // Leave a real archive alone; only stand one up when it is
122
+ // missing (or the zero-byte file that is not a valid tar), so
123
+ // entry.mjs's `with { type: "file" }` import still resolves.
124
+ if ((await file.exists()) && file.size > 0) return 0;
125
+
126
+ console.error("Writing a placeholder assets tar");
127
+
128
+ await Bun.Archive.write(archive, {
129
+ [`assets/${pkg.name}@${pkg.version}/package.json`]: JSON.stringify(pkg, null, 1),
130
+ });
131
+ }
132
+ } // assets present in package.json
133
+ else {
134
+ if (folderMode) {
135
+ // Mirror the asset's own relative path, so the folder layout
136
+ // matches the tar layout. `cp -R src/cui/server.mjs <dir>` would
137
+ // drop the src/cui/ prefix and land it as <dir>/server.mjs.
138
+ for (let i of pkg.assets) {
139
+ const dest = path.join(folderPath, i);
140
+
141
+ mkdirSync(path.dirname(dest), { recursive: true });
142
+ cpSync(path.join(PKG_ROOT, i), dest, { recursive: true });
143
+
144
+ console.log(i);
145
+ }
146
+ } // tar mode
147
+ else {
148
+ // Everything goes through Bun.Archive: system tar is not portable
149
+ // enough here (toybox has no -r at all, and its --xform exits 0
150
+ // while writing a corrupt file). Creating is appending to nothing.
151
+ if (!appendMode) rmSync(archive, { force: true });
152
+
153
+ return await tar_rvf(archive, pkg.assets, PKG_ROOT, prefix);
154
+ }
155
+ }
156
+ } // end of main
157
+
158
+ // Stands in for `tar -rvf`, which toybox tar does not implement.
159
+ // Reads the existing members, adds `filesArray` (paths relative to
160
+ // `cwd`, folders walked recursively), and writes the archive back.
161
+ // Unlike real tar -r, a repacked path replaces its member instead of
162
+ // becoming a second one with the same name.
163
+ //
164
+ // `prefix` is prepended to every member name. Member names are built
165
+ // here as plain strings, so this does not depend on tar's --transform
166
+ // (toybox's --xform is broken: it exits 0 and writes a corrupt file).
167
+ export async function tar_rvf(archive, filesArray, cwd, prefix = "") {
168
+ const entries = new Map();
169
+ const file = Bun.file(archive);
170
+ const at = prefix ? prefix.replace(/[\\/]+$/, "") + "/" : "";
171
+
172
+ if (await file.exists()) {
173
+ const bytes = await file.bytes();
174
+
175
+ if (bytes.byteLength > 0)
176
+ for (const [member, blob] of await new Bun.Archive(bytes).files()) entries.set(member, await blob.bytes());
177
+ }
178
+
179
+ for (const asset of filesArray) {
180
+ const full = path.join(cwd, asset);
181
+
182
+ // One unreadable path must not take the whole relay down.
183
+ let stat;
184
+ try {
185
+ stat = statSync(full);
186
+ } catch {
187
+ console.error(`Skipping unreadable asset: ${asset}`);
188
+ continue;
189
+ }
190
+
191
+ if (!stat.isDirectory()) {
192
+ entries.set(at + asset, await Bun.file(full).bytes());
193
+ console.log(at + asset);
194
+ continue;
195
+ }
196
+
197
+ for (const rel of readdirSync(full, { recursive: true })) {
198
+ const child = path.join(full, String(rel));
199
+
200
+ // statSync follows symlinks, so a dangling one throws here.
201
+ let childStat;
202
+ try {
203
+ childStat = statSync(child);
204
+ } catch {
205
+ continue;
206
+ }
207
+ if (!childStat.isFile()) continue;
208
+
209
+ const member = at + asset + "/" + String(rel).split(path.sep).join("/");
210
+ entries.set(member, await Bun.file(child).bytes());
211
+ console.log(member);
212
+ }
213
+ }
214
+
215
+ await Bun.Archive.write(archive, Object.fromEntries(entries));
216
+
217
+ return 0;
218
+ }