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,128 @@
1
+ #!/usr/bin/env bun
2
+
3
+ import { evalBack } from "./rpc.mjs";
4
+
5
+ const csl = console.log
6
+ const mda = Bun.markdown.ansi
7
+
8
+
9
+ import homepage from "./testapp.md.html"
10
+ import * as backmod from "./testapp.md.back.js";
11
+
12
+ export { homepage };
13
+
14
+ /*
15
+ // Wait until Bun fixes dynamic html import bundle
16
+
17
+ process.env.PUBLIC_MDPATH ||= "testapp.md"
18
+
19
+ const { default: homepage } =
20
+ await import(
21
+ "./" +
22
+ process.env.PUBLIC_MDPATH +
23
+ ".html"
24
+ ) ;
25
+
26
+ const backmod =
27
+ await import(
28
+ './' +
29
+ process.env.PUBLIC_MDPATH +
30
+ ".back.js"
31
+ ) ;
32
+
33
+ */
34
+
35
+
36
+ function json(data, init = {}) {
37
+ return Response.json(data, {
38
+ headers: {
39
+ "access-control-allow-origin": "*",
40
+ ...init.headers,
41
+ },
42
+ ...init,
43
+ });
44
+ }
45
+
46
+
47
+ export function main()
48
+ {
49
+
50
+
51
+
52
+ const basePath = "/" + crypto.randomUUID()
53
+ const pathname = basePath + "/"
54
+ const serverOptions = {
55
+ port: Number(process.env.PORT || 3000),
56
+ development: {
57
+ hmr: true,
58
+ console: true,
59
+ },
60
+ routes: {
61
+ [basePath]: (req) => Response.redirect(new URL(pathname, req.url), 308),
62
+ [pathname]: homepage,
63
+
64
+ [pathname + "rpc"]: async (req) => {
65
+ csl("\n"+mda("## "+req.method+" "+req.url))
66
+
67
+ if (req.method === "OPTIONS") {
68
+ return new Response(null, {
69
+ headers: {
70
+ "access-control-allow-origin": "*",
71
+ "access-control-allow-methods": "POST,OPTIONS",
72
+ "access-control-allow-headers": "content-type",
73
+ },
74
+ });
75
+ }
76
+
77
+ if (req.method !== "POST") {
78
+ csl('illegal method')
79
+ return new Response("Method Not Allowed", { status: 405 });
80
+ }
81
+
82
+ try {
83
+ const packet = await req.json();
84
+
85
+ csl('req json:',packet)
86
+
87
+ const result = await evalBack(backmod, packet);
88
+
89
+ return json(result ?? null);
90
+ } catch (error) {
91
+ return json(
92
+ {
93
+ ok: false,
94
+ error: error?.stack || String(error),
95
+ },
96
+ { status: 400 },
97
+ );
98
+ }
99
+ },
100
+ },
101
+
102
+ fetch() {
103
+ return new Response("Not Found", { status: 404 });
104
+ },
105
+ };
106
+
107
+ let server;
108
+ try {
109
+ server = Bun.serve(serverOptions);
110
+ } catch (error) {
111
+ const addressInUse = error?.code === "EADDRINUSE"
112
+ || error?.cause?.code === "EADDRINUSE"
113
+ || /EADDRINUSE|address already in use/i.test(String(error?.message || error));
114
+ if (serverOptions.port !== 3000 || !addressInUse) throw error;
115
+ server = Bun.serve({ ...serverOptions, port: 0 });
116
+ }
117
+
118
+ console.error(mda("- Bun RPC server listening on"));
119
+ console.log(`http://localhost:${server.port}${pathname}`);
120
+
121
+
122
+
123
+ return server
124
+
125
+ } // main
126
+
127
+ if(import.meta.main)
128
+ main()
@@ -0,0 +1,286 @@
1
+ import {
2
+ collectMarkdownHeadingDeclarations,
3
+ } from "./heading-ids.mjs";
4
+ import {
5
+ colorAnsiPlainRange,
6
+ replaceAnsiPlainRangePreservingControls,
7
+ } from "./table-row-edit.mjs";
8
+
9
+ function tableTopRange(line) {
10
+ const text = String(line ?? "");
11
+ const start = text.indexOf("┌");
12
+ const end = text.lastIndexOf("┐");
13
+ if (start < 0 || end <= start) return null;
14
+ const frame = text.slice(start, end + 1);
15
+ return /^┌─+(?:┬─+)*┐$/u.test(frame)
16
+ ? { start, end, frame, prefix: text.slice(0, start) }
17
+ : null;
18
+ }
19
+
20
+ function tableFrame(line, range) {
21
+ const text = String(line ?? "");
22
+ if (!text.startsWith(range.prefix)) return "";
23
+ return text.slice(range.prefix.length).trimEnd();
24
+ }
25
+
26
+ function isTableBottom(line, range) {
27
+ return /^└─+(?:┴─+)*┘$/u.test(tableFrame(line, range));
28
+ }
29
+
30
+ function isTableContentRow(line, range) {
31
+ return /^│ .* │$/u.test(tableFrame(line, range));
32
+ }
33
+
34
+ function isTableSeparator(line, range) {
35
+ return /^├─+(?:┼─+)*┤$/u.test(tableFrame(line, range));
36
+ }
37
+
38
+ function middleBorder(line, range) {
39
+ const text = String(line ?? "");
40
+ const frame = range.frame
41
+ .replace("┌", "├")
42
+ .replaceAll("┬", "┼")
43
+ .replace("┐", "┤");
44
+ return text.slice(0, range.start) + frame + text.slice(range.end + 1);
45
+ }
46
+
47
+ function unusedRowMarker(markdown) {
48
+ const candidates = [
49
+ "\u2060",
50
+ "\u200b",
51
+ "\u200c",
52
+ "\u2061",
53
+ "\u2062",
54
+ "\u2063",
55
+ "\ufeff",
56
+ ];
57
+ return candidates.find(marker => !markdown.includes(marker)) ?? null;
58
+ }
59
+
60
+ function tableDelimiter(line) {
61
+ return /^\s*(?:>\s*)*\|?\s*:?-{3,}:?\s*(?:\|\s*:?-{3,}:?\s*)+\|?\s*$/u
62
+ .test(String(line ?? ""));
63
+ }
64
+
65
+ function tableRow(line) {
66
+ const text = String(line ?? "");
67
+ return text.includes("|") && !/^\s*$/u.test(text);
68
+ }
69
+
70
+ function invisibleMarkerLine(line) {
71
+ return /^[\u200b\u200c\u2060-\u2063\ufeff]+$/u.test(
72
+ String(line ?? "").trim(),
73
+ );
74
+ }
75
+
76
+ function insertRowMarker(line, marker) {
77
+ const text = String(line ?? "");
78
+ const opening = /^(\s*(?:>\s*)*\|?\s*)/u.exec(text)?.[0] ?? "";
79
+ return text.slice(0, opening.length) + marker + text.slice(opening.length);
80
+ }
81
+
82
+ function markTableCheckboxPrefixes(line) {
83
+ return String(line ?? "").replace(
84
+ /(^|(?<!\\)\|)(\s*)\[( |x|X)\]/gu,
85
+ (_whole, boundary, whitespace, state) =>
86
+ `${boundary}${whitespace}${state === " " ? "☐" : "☒"}`,
87
+ );
88
+ }
89
+
90
+ export function markHeadingTableRows(markdown) {
91
+ const source = String(markdown ?? "");
92
+ const lines = source.split(/\r\n?|\n/u);
93
+ const token = unusedRowMarker(source);
94
+ const markers = [];
95
+ if (!token) return { markdown: source, markers, token: null };
96
+ let tableOrdinal = 0;
97
+
98
+ const headings = collectMarkdownHeadingDeclarations(source, {
99
+ includeEndLine: true,
100
+ });
101
+ for (const heading of headings) {
102
+ let header = Math.max(0, Number(heading.endLine) || heading.line);
103
+ while (
104
+ header < lines.length
105
+ && (!lines[header].trim() || invisibleMarkerLine(lines[header]))
106
+ ) header++;
107
+ const delimiter = header + 1;
108
+ if (
109
+ delimiter >= lines.length
110
+ || !tableRow(lines[header])
111
+ || !tableDelimiter(lines[delimiter])
112
+ ) continue;
113
+
114
+ const rows = [header];
115
+ for (let row = delimiter + 1; row < lines.length; row++) {
116
+ if (!tableRow(lines[row])) break;
117
+ rows.push(row);
118
+ }
119
+ if (rows.length < 2) continue;
120
+
121
+ for (const [rowOrdinal, lineIndex] of rows.entries()) {
122
+ lines[lineIndex] = markTableCheckboxPrefixes(lines[lineIndex]);
123
+ lines[lineIndex] = insertRowMarker(lines[lineIndex], token);
124
+ markers.push({
125
+ tableOrdinal,
126
+ rowOrdinal,
127
+ insertBefore: rowOrdinal > 1,
128
+ });
129
+ }
130
+ tableOrdinal++;
131
+ }
132
+
133
+ return { markdown: lines.join("\n"), markers, token };
134
+ }
135
+
136
+ export function addTuiTableRowSeparators(ansiText, plan) {
137
+ const markers = Array.isArray(plan?.markers) ? plan.markers : [];
138
+ if (markers.length === 0) return String(ansiText ?? "");
139
+
140
+ const ansiLines = String(ansiText ?? "").split("\n");
141
+ const plainLines = Bun.stripANSI(String(ansiText ?? "")).split("\n");
142
+ const output = [];
143
+ const token = String(plan?.token ?? "");
144
+ let markerOrdinal = 0;
145
+ let activeRange = null;
146
+ let activeTopLine = "";
147
+
148
+ for (let index = 0; index < ansiLines.length; index++) {
149
+ const top = tableTopRange(plainLines[index]);
150
+ if (top) {
151
+ activeRange = top;
152
+ activeTopLine = plainLines[index];
153
+ }
154
+
155
+ const found = token && plainLines[index].includes(token)
156
+ ? markers[markerOrdinal++]
157
+ : null;
158
+ if (found?.insertBefore && activeRange) {
159
+ output.push(
160
+ `\x1b[2m${middleBorder(activeTopLine, activeRange)}\x1b[0m`,
161
+ );
162
+ }
163
+ let line = ansiLines[index];
164
+ if (token) line = line.replaceAll(token, "");
165
+ output.push(line);
166
+
167
+ if (activeRange && isTableBottom(plainLines[index], activeRange)) {
168
+ activeRange = null;
169
+ activeTopLine = "";
170
+ }
171
+ }
172
+
173
+ return output.join("\n");
174
+ }
175
+
176
+ export function convertTuiTableCheckboxes(ansiText) {
177
+ const ansiLines = String(ansiText ?? "").split("\n");
178
+ const plainLines = Bun.stripANSI(String(ansiText ?? "")).split("\n");
179
+ let activeRange = null;
180
+
181
+ for (let row = 0; row < plainLines.length; row++) {
182
+ const top = tableTopRange(plainLines[row]);
183
+ if (top) activeRange = top;
184
+ if (!activeRange) continue;
185
+ if (isTableBottom(plainLines[row], activeRange)) {
186
+ activeRange = null;
187
+ continue;
188
+ }
189
+ if (!isTableContentRow(plainLines[row], activeRange)) continue;
190
+
191
+ const separators = [];
192
+ for (let index = activeRange.start; index <= activeRange.end; index++) {
193
+ if (plainLines[row][index] === "│") separators.push(index);
194
+ }
195
+ for (let col = 0; col + 1 < separators.length; col++) {
196
+ const start = separators[col] + 1;
197
+ const end = separators[col + 1];
198
+ const source = plainLines[row].slice(start, end);
199
+ const match = /^(\s*)(?:\[( |x|X)\]|(☐|☒))/u.exec(source);
200
+ if (!match) continue;
201
+ const glyph = match[3] ?? (match[2] === " " ? "☐" : "☒");
202
+ let replacement = source;
203
+ if (!match[3]) {
204
+ replacement =
205
+ source.slice(0, match[1].length)
206
+ + glyph
207
+ + source.slice(match[0].length);
208
+ const missing = Bun.stringWidth(source) - Bun.stringWidth(replacement);
209
+ const trailing = replacement.match(/\s*$/u)?.[0].length ?? 0;
210
+ replacement =
211
+ replacement.slice(0, replacement.length - trailing)
212
+ + " ".repeat(Math.max(0, missing))
213
+ + replacement.slice(replacement.length - trailing);
214
+ ansiLines[row] = replaceAnsiPlainRangePreservingControls(
215
+ ansiLines[row],
216
+ start,
217
+ end,
218
+ replacement,
219
+ );
220
+ }
221
+ if (glyph === "☒") {
222
+ const checkboxAt = start + match[1].length;
223
+ ansiLines[row] = colorAnsiPlainRange(
224
+ ansiLines[row],
225
+ checkboxAt,
226
+ checkboxAt + glyph.length,
227
+ glyph,
228
+ );
229
+ }
230
+ plainLines[row] =
231
+ plainLines[row].slice(0, start)
232
+ + replacement
233
+ + plainLines[row].slice(end);
234
+ }
235
+ }
236
+ return ansiLines.join("\n");
237
+ }
238
+
239
+ export function tuiTableStripeRows(lines) {
240
+ const input = Array.isArray(lines) ? lines : [];
241
+ const striped = new Set();
242
+
243
+ for (let index = 0; index < input.length; index++) {
244
+ const range = tableTopRange(input[index]);
245
+ if (!range) continue;
246
+ let body = false;
247
+ let bodyRow = 0;
248
+ for (let row = index + 1; row < input.length; row++) {
249
+ if (isTableBottom(input[row], range)) {
250
+ index = row;
251
+ break;
252
+ }
253
+ if (isTableSeparator(input[row], range)) {
254
+ if (!body) {
255
+ body = true;
256
+ bodyRow = 1;
257
+ } else {
258
+ bodyRow++;
259
+ }
260
+ continue;
261
+ }
262
+ if (!isTableContentRow(input[row], range)) continue;
263
+ if (!body) {
264
+ striped.add(row);
265
+ continue;
266
+ }
267
+ if (bodyRow % 2 === 0) striped.add(row);
268
+ }
269
+ }
270
+ return striped;
271
+ }
272
+
273
+ export function markTuiTableStripeStyles(styleLines, lines) {
274
+ if (!Array.isArray(styleLines) || !Array.isArray(lines)) return styleLines;
275
+ for (const row of tuiTableStripeRows(lines)) {
276
+ const line = String(lines[row] ?? "");
277
+ const styles = styleLines[row] ?? (styleLines[row] = []);
278
+ for (let index = 0; index < line.length; index++) {
279
+ styles[index] = {
280
+ ...(styles[index] ?? {}),
281
+ mdcuiTableStripe: true,
282
+ };
283
+ }
284
+ }
285
+ return styleLines;
286
+ }
@@ -0,0 +1,226 @@
1
+ const graphemeSegmenter = typeof Intl.Segmenter === "function"
2
+ ? new Intl.Segmenter(undefined, { granularity: "grapheme" })
3
+ : null;
4
+
5
+ export function isMdcuiTableRow(line) {
6
+ return /^\s*│ .* │\s*$/u.test(String(line ?? ""));
7
+ }
8
+
9
+ function graphemes(line) {
10
+ const text = String(line ?? "");
11
+ if (graphemeSegmenter) {
12
+ return [...graphemeSegmenter.segment(text)].map((item, index, items) => ({
13
+ text: item.segment,
14
+ start: item.index,
15
+ end: items[index + 1]?.index ?? text.length,
16
+ }));
17
+ }
18
+ const result = [];
19
+ for (let start = 0; start < text.length;) {
20
+ const codePoint = text.codePointAt(start);
21
+ const length = codePoint > 0xffff ? 2 : 1;
22
+ result.push({ text: text.slice(start, start + length), start, end: start + length });
23
+ start += length;
24
+ }
25
+ return result;
26
+ }
27
+
28
+ function stringWidth(text) {
29
+ return typeof globalThis.Bun?.stringWidth === "function"
30
+ ? Bun.stringWidth(String(text ?? ""))
31
+ : [...String(text ?? "")].length;
32
+ }
33
+
34
+ function replacementResult(line, target, replacement, cursor) {
35
+ const next = line.slice(0, target.start) + replacement + line.slice(target.end);
36
+ if (stringWidth(next) !== stringWidth(line)) return null;
37
+ return {
38
+ line: next,
39
+ cursor,
40
+ start: target.start,
41
+ end: target.end,
42
+ replacement,
43
+ };
44
+ }
45
+
46
+ function isTableSeparator(target) {
47
+ return target?.text === "│";
48
+ }
49
+
50
+ function isTablePadding(line, target) {
51
+ return target?.text === " " && (
52
+ line[target.start - 1] === "│"
53
+ || line[target.end] === "│"
54
+ );
55
+ }
56
+
57
+ export function backspaceMdcuiTableRow(line, cursor) {
58
+ const text = String(line ?? "");
59
+ if (!isMdcuiTableRow(text)) return null;
60
+ const target = graphemes(text)
61
+ .filter(item => item.end <= cursor)
62
+ .at(-1);
63
+ if (
64
+ !target
65
+ || isTableSeparator(target)
66
+ || isTablePadding(text, target)
67
+ ) return null;
68
+ return replacementResult(
69
+ text,
70
+ target,
71
+ " ".repeat(Math.max(1, stringWidth(target.text))),
72
+ target.start,
73
+ );
74
+ }
75
+
76
+ export function deleteMdcuiTableRow(line, cursor) {
77
+ const text = String(line ?? "");
78
+ if (!isMdcuiTableRow(text)) return null;
79
+ const target = graphemes(text)
80
+ .find(item => item.start >= cursor || (item.start < cursor && item.end > cursor));
81
+ if (!target || isTableSeparator(target)) return null;
82
+ return replacementResult(
83
+ text,
84
+ target,
85
+ " ".repeat(Math.max(1, stringWidth(target.text))),
86
+ target.start,
87
+ );
88
+ }
89
+
90
+ export function overwriteMdcuiTableRow(line, cursor, input) {
91
+ const text = String(line ?? "");
92
+ const value = String(input ?? "");
93
+ if (!isMdcuiTableRow(text) || !value || /\r|\n/u.test(value)) return null;
94
+ const inputWidth = stringWidth(value);
95
+ const items = graphemes(text);
96
+ const targetIndex = items.findIndex(
97
+ item => item.start >= cursor || (item.start < cursor && item.end > cursor),
98
+ );
99
+ const target = items[targetIndex];
100
+ if (
101
+ !target
102
+ || isTableSeparator(target)
103
+ || (isTablePadding(text, target) && value !== " ")
104
+ ) return null;
105
+ if (inputWidth <= 0) return null;
106
+
107
+ let end = target.end;
108
+ let targetWidth = stringWidth(target.text);
109
+ for (
110
+ let index = targetIndex + 1;
111
+ targetWidth < inputWidth && index < items.length;
112
+ index++
113
+ ) {
114
+ const next = items[index];
115
+ if (isTableSeparator(next) || isTablePadding(text, next)) return null;
116
+ targetWidth += stringWidth(next.text);
117
+ end = next.end;
118
+ }
119
+ if (inputWidth > targetWidth) return null;
120
+ const replacement = value + " ".repeat(targetWidth - inputWidth);
121
+ return replacementResult(
122
+ text,
123
+ { ...target, end },
124
+ replacement,
125
+ target.start + value.length,
126
+ );
127
+ }
128
+
129
+ function ansiControlEnd(input, start) {
130
+ if (input[start] !== "\x1b") return start;
131
+ if (input[start + 1] === "[") {
132
+ let index = start + 2;
133
+ while (index < input.length) {
134
+ const code = input.charCodeAt(index++);
135
+ if (code >= 0x40 && code <= 0x7e) break;
136
+ }
137
+ return index;
138
+ }
139
+ if (input[start + 1] === "]") {
140
+ const bel = input.indexOf("\x07", start + 2);
141
+ const st = input.indexOf("\x1b\\", start + 2);
142
+ if (bel < 0 && st < 0) return input.length;
143
+ return bel >= 0 && (st < 0 || bel < st) ? bel + 1 : st + 2;
144
+ }
145
+ return Math.min(input.length, start + 2);
146
+ }
147
+
148
+ function ansiRawOffset(input, target, controlsAtBoundary) {
149
+ let plain = 0;
150
+ for (let raw = 0; raw < input.length;) {
151
+ if (!controlsAtBoundary && plain >= target) return raw;
152
+ if (input[raw] === "\x1b") {
153
+ raw = ansiControlEnd(input, raw);
154
+ continue;
155
+ }
156
+ if (plain >= target) return raw;
157
+ const codePoint = input.codePointAt(raw);
158
+ const length = codePoint > 0xffff ? 2 : 1;
159
+ plain += length;
160
+ raw += length;
161
+ }
162
+ return input.length;
163
+ }
164
+
165
+ export function replaceAnsiPlainRange(ansiLine, start, end, replacement) {
166
+ const input = String(ansiLine ?? "");
167
+ const rawStart = ansiRawOffset(input, start, true);
168
+ const rawEnd = ansiRawOffset(input, end, false);
169
+ return input.slice(0, rawStart) + replacement + input.slice(rawEnd);
170
+ }
171
+
172
+ export function replaceAnsiPlainRangePreservingControls(
173
+ ansiLine,
174
+ start,
175
+ end,
176
+ replacement,
177
+ ) {
178
+ const input = String(ansiLine ?? "");
179
+ const rawStart = ansiRawOffset(input, start, true);
180
+ const rawEnd = ansiRawOffset(input, end, false);
181
+ const segment = input.slice(rawStart, rawEnd);
182
+ let controls = "";
183
+ let inserted = false;
184
+
185
+ for (let raw = 0; raw < segment.length;) {
186
+ if (segment[raw] === "\x1b") {
187
+ const controlEnd = ansiControlEnd(segment, raw);
188
+ controls += segment.slice(raw, controlEnd);
189
+ raw = controlEnd;
190
+ continue;
191
+ }
192
+ if (!inserted) {
193
+ controls += String(replacement ?? "");
194
+ inserted = true;
195
+ }
196
+ const codePoint = segment.codePointAt(raw);
197
+ raw += codePoint > 0xffff ? 2 : 1;
198
+ }
199
+ if (!inserted) controls += String(replacement ?? "");
200
+ return input.slice(0, rawStart) + controls + input.slice(rawEnd);
201
+ }
202
+
203
+ export function colorAnsiPlainRange(
204
+ ansiLine,
205
+ start,
206
+ end,
207
+ text,
208
+ sgr = "\x1b[32m",
209
+ ) {
210
+ const input = String(ansiLine ?? "");
211
+ const rawStart = ansiRawOffset(input, start, true);
212
+ const active = [];
213
+ for (const match of input.slice(0, rawStart).matchAll(/\x1b\[([0-9;]*)m/gu)) {
214
+ const parameters = match[1].split(";").filter(Boolean).map(Number);
215
+ if (parameters.length === 0 || parameters.includes(0)) active.length = 0;
216
+ active.push(match[0]);
217
+ }
218
+ const replacement =
219
+ sgr + String(text ?? "") + "\x1b[0m" + active.join("");
220
+ return replaceAnsiPlainRangePreservingControls(
221
+ input,
222
+ start,
223
+ end,
224
+ replacement,
225
+ );
226
+ }
@@ -0,0 +1,60 @@
1
+ export function toggleTaskCheckboxBeforeColumn(line, column) {
2
+ const text = String(line ?? "");
3
+ const end = Math.max(0, Math.min(text.length, Math.trunc(Number(column) || 0) + 1));
4
+ const prefix = text.slice(0, end);
5
+ const uncheckedAt = prefix.lastIndexOf("☐");
6
+ const checkedAt = prefix.lastIndexOf("☒");
7
+ const checkboxAt = Math.max(uncheckedAt, checkedAt);
8
+
9
+ if (checkboxAt < 0) return { line: text, toggled: false };
10
+
11
+ const replacement = text[checkboxAt] === "☐" ? "☒" : "☐";
12
+ return {
13
+ line: text.slice(0, checkboxAt) + replacement + text.slice(checkboxAt + 1),
14
+ toggled: true,
15
+ checkboxAt,
16
+ checked: replacement === "☒",
17
+ };
18
+ }
19
+
20
+ export function updateAnsiTaskCheckbox(ansiLine, checkboxAt, checked) {
21
+ const input = String(ansiLine ?? "");
22
+ const target = checked ? "☒" : "☐";
23
+ const sgr = `\x1b[${checked ? "32" : "2"}m`;
24
+ let plainIndex = 0;
25
+
26
+ for (let i = 0; i < input.length;) {
27
+ if (input[i] === "\x1b" && input[i + 1] === "[") {
28
+ let end = i + 2;
29
+ while (end < input.length) {
30
+ const code = input.charCodeAt(end);
31
+ if (code >= 0x40 && code <= 0x7e) { end++; break; }
32
+ end++;
33
+ }
34
+ i = end;
35
+ continue;
36
+ }
37
+ if (input[i] === "\x1b" && input[i + 1] === "]") {
38
+ const bel = input.indexOf("\x07", i + 2);
39
+ const st = input.indexOf("\x1b\\", i + 2);
40
+ if (bel < 0 && st < 0) break;
41
+ i = bel >= 0 && (st < 0 || bel < st) ? bel + 1 : st + 2;
42
+ continue;
43
+ }
44
+
45
+ const codePoint = input.codePointAt(i);
46
+ const charLength = codePoint > 0xffff ? 2 : 1;
47
+ if (plainIndex === checkboxAt && (input[i] === "☐" || input[i] === "☒")) {
48
+ const prefix = input.slice(0, i);
49
+ const immediateSgr = prefix.match(/\x1b\[[0-9;]*m$/);
50
+ const beforeStyle = immediateSgr
51
+ ? prefix.slice(0, prefix.length - immediateSgr[0].length) + sgr
52
+ : prefix;
53
+ return beforeStyle + target + input.slice(i + charLength);
54
+ }
55
+ plainIndex += charLength;
56
+ i += charLength;
57
+ }
58
+
59
+ return input;
60
+ }