@luna_ui/astra 0.2.7 → 0.17.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 (352) hide show
  1. package/README.md +52 -0
  2. package/bin/astra.js +9 -0
  3. package/package.json +12 -37
  4. package/assets/scripts/loader.js +0 -1
  5. package/assets/scripts/sidebar.js +0 -29
  6. package/assets/scripts/theme.js +0 -25
  7. package/assets/scripts/toc.js +0 -41
  8. package/assets/scripts/wc-loader.js +0 -28
  9. package/assets/styles/main.css +0 -592
  10. package/assets/styles/markdown.css +0 -74
  11. package/bin/astra.mjs +0 -2
  12. package/dist/abap-4DRkXMJR.js +0 -1
  13. package/dist/actionscript-3-h0lqWyGv.js +0 -1
  14. package/dist/ada-B4-fQi6R.js +0 -1
  15. package/dist/andromeeda-DnfMDO_Y.js +0 -1
  16. package/dist/angular-html-CgTXg5Z6.js +0 -1
  17. package/dist/angular-html-d-0S-zLW.js +0 -1
  18. package/dist/angular-ts-CHhlLyrZ.js +0 -1
  19. package/dist/apache-CjmdmrNd.js +0 -1
  20. package/dist/apex-BQCmYrYs.js +0 -1
  21. package/dist/apl-BS7gisDH.js +0 -1
  22. package/dist/applescript-DmuENMYc.js +0 -1
  23. package/dist/ara-DSUvK8h0.js +0 -1
  24. package/dist/asciidoc-DtiaLqcg.js +0 -1
  25. package/dist/asm-vw4b_i9u.js +0 -1
  26. package/dist/astro-Cy9wZvxd.js +0 -1
  27. package/dist/aurora-x-LGMiQelM.js +0 -1
  28. package/dist/awk-CN3ZPsCY.js +0 -1
  29. package/dist/ayu-dark-8Z6NAin8.js +0 -1
  30. package/dist/ballerina-B4Fqjiam.js +0 -1
  31. package/dist/bat-DQvEQ0oY.js +0 -1
  32. package/dist/beancount-aKEgevoR.js +0 -1
  33. package/dist/berry-BOM3vuC7.js +0 -1
  34. package/dist/bibtex-CMp7yDWH.js +0 -1
  35. package/dist/bicep-BebJh39J.js +0 -1
  36. package/dist/blade-j7hZXB64.js +0 -1
  37. package/dist/bsl-DgkNvZZe.js +0 -1
  38. package/dist/c-87QmhLAV.js +0 -1
  39. package/dist/c-wmv-cFo9.js +0 -1
  40. package/dist/cadence-Cgd84A_0.js +0 -1
  41. package/dist/cairo-Dcrxjodq.js +0 -1
  42. package/dist/catppuccin-frappe-BpQ1lU1w.js +0 -1
  43. package/dist/catppuccin-latte-Cp48KXmS.js +0 -1
  44. package/dist/catppuccin-macchiato-Bpp0X-sF.js +0 -1
  45. package/dist/catppuccin-mocha-C2yaN9uG.js +0 -1
  46. package/dist/chunk-C91IYPK5.js +0 -1
  47. package/dist/clarity-pyieEWy3.js +0 -1
  48. package/dist/cli-BW7yFsYF.js +0 -637
  49. package/dist/cli.d.ts +0 -1
  50. package/dist/cli.js +0 -2
  51. package/dist/clojure-D2WDer8_.js +0 -1
  52. package/dist/cmake-CK9_JPOP.js +0 -1
  53. package/dist/cmake-Cdf80Fup.js +0 -1
  54. package/dist/cobol-DHzxMIfc.js +0 -1
  55. package/dist/codeowners-b6uQw4Jm.js +0 -1
  56. package/dist/codeql-04zjaa8t.js +0 -1
  57. package/dist/coffee-DCpHmt37.js +0 -1
  58. package/dist/common-lisp-DJpZd9nc.js +0 -1
  59. package/dist/coq-CqrhdPuQ.js +0 -1
  60. package/dist/cpp-DJwL1bmY.js +0 -1
  61. package/dist/cpp-bXmEu2fj.js +0 -1
  62. package/dist/crystal-QrrnajAZ.js +0 -1
  63. package/dist/csharp-CCkaXaBl.js +0 -1
  64. package/dist/csharp-DF2IH6Io.js +0 -1
  65. package/dist/css-B782H9QQ.js +0 -1
  66. package/dist/css-C3GPUY5d.js +0 -1
  67. package/dist/csv--xFxOZnZ.js +0 -1
  68. package/dist/csv-DwE9d_vs.js +0 -1
  69. package/dist/cue-Boddp5ou.js +0 -1
  70. package/dist/cypher-CJ-77cgQ.js +0 -1
  71. package/dist/d-D0I1dM2T.js +0 -1
  72. package/dist/dark-plus-BU3QBz56.js +0 -1
  73. package/dist/dart-BJ8cdcjB.js +0 -1
  74. package/dist/dax-flGRwOMk.js +0 -1
  75. package/dist/desktop-CKJBoUCX.js +0 -1
  76. package/dist/diff-D0R8227a.js +0 -1
  77. package/dist/diff-JYRIHEgk.js +0 -1
  78. package/dist/dist-Bx67DuWk.js +0 -12
  79. package/dist/docker-CaPT0nh2.js +0 -1
  80. package/dist/dotenv-Cl6daHtc.js +0 -1
  81. package/dist/dracula-Cw9IWaSN.js +0 -1
  82. package/dist/dracula-soft-BqgovASh.js +0 -1
  83. package/dist/dream-maker-B43zqZ9J.js +0 -1
  84. package/dist/edge-Ceyc3rVg.js +0 -1
  85. package/dist/elixir-Gvbortfm.js +0 -1
  86. package/dist/elm-DjLt6yAp.js +0 -1
  87. package/dist/emacs-lisp-D80T64tz.js +0 -1
  88. package/dist/erb-CXoLzZh0.js +0 -1
  89. package/dist/erlang-BogW8nFy.js +0 -1
  90. package/dist/everforest-dark-ogfM6sNR.js +0 -1
  91. package/dist/everforest-light-D6fPa5N4.js +0 -1
  92. package/dist/fennel-B2Zn_N77.js +0 -1
  93. package/dist/fish-COSG8aRZ.js +0 -1
  94. package/dist/fluent-D8gvH-iE.js +0 -1
  95. package/dist/fortran-fixed-form-D7puVArr.js +0 -1
  96. package/dist/fortran-free-form-AdpHkc55.js +0 -1
  97. package/dist/fortran-free-form-B-rZjaen.js +0 -1
  98. package/dist/fsharp-CFCe56st.js +0 -1
  99. package/dist/gdresource-CkuXen0_.js +0 -1
  100. package/dist/gdscript-B2-VFJAr.js +0 -1
  101. package/dist/gdscript-BgjbTSgo.js +0 -1
  102. package/dist/gdshader-CW5dzS3z.js +0 -1
  103. package/dist/gdshader-WTsPyo0L.js +0 -1
  104. package/dist/genie-C4I2dHj5.js +0 -1
  105. package/dist/gherkin-BqdToCRC.js +0 -1
  106. package/dist/git-commit-CtQHrkj3.js +0 -1
  107. package/dist/git-rebase-DZ7KYW5J.js +0 -1
  108. package/dist/github-dark-Dhw01-x_.js +0 -1
  109. package/dist/github-dark-default-DWGCwC0m.js +0 -1
  110. package/dist/github-dark-dimmed-euk1ld1c.js +0 -1
  111. package/dist/github-dark-high-contrast-BEHPWBGW.js +0 -1
  112. package/dist/github-light-DIH3R0Pp.js +0 -1
  113. package/dist/github-light-default-joSRi-P5.js +0 -1
  114. package/dist/github-light-high-contrast-BeJxmE-G.js +0 -1
  115. package/dist/gleam-ybdQKAnL.js +0 -1
  116. package/dist/glimmer-js-C7QvVTe0.js +0 -1
  117. package/dist/glimmer-ts-BtNjgeMZ.js +0 -1
  118. package/dist/glsl-Bl2rgVkF.js +0 -1
  119. package/dist/glsl-DK2LO5Ai.js +0 -1
  120. package/dist/gnuplot-DuihR3pv.js +0 -1
  121. package/dist/go-CafkwwfM.js +0 -1
  122. package/dist/go-DJYwhvJ3.js +0 -1
  123. package/dist/graphql-CWPKPXc6.js +0 -1
  124. package/dist/graphql-t4luSV8n.js +0 -1
  125. package/dist/groovy-ge4S-gf0.js +0 -1
  126. package/dist/gruvbox-dark-hard-Bn5BzspA.js +0 -1
  127. package/dist/gruvbox-dark-medium-c5nt2GVa.js +0 -1
  128. package/dist/gruvbox-dark-soft-CDQxnYqs.js +0 -1
  129. package/dist/gruvbox-light-hard-CYnE9iXs.js +0 -1
  130. package/dist/gruvbox-light-medium-Bib7X0I1.js +0 -1
  131. package/dist/gruvbox-light-soft-uNsFDxv8.js +0 -1
  132. package/dist/hack-CuBlwJsx.js +0 -1
  133. package/dist/haml-B8bmXhBu.js +0 -1
  134. package/dist/haml-DwxcKQb3.js +0 -1
  135. package/dist/handlebars-0vCF10JB.js +0 -1
  136. package/dist/haskell-BNCSquDI.js +0 -1
  137. package/dist/haxe-DCnwBaYO.js +0 -1
  138. package/dist/haxe-G7UefS7i.js +0 -1
  139. package/dist/hcl-BFNNInwi.js +0 -1
  140. package/dist/hjson-Dvt_015e.js +0 -1
  141. package/dist/hlsl-B8f0y-cZ.js +0 -1
  142. package/dist/hlsl-BjMfZaun.js +0 -1
  143. package/dist/houston-pqjsYGpQ.js +0 -1
  144. package/dist/html-CMGi1hjb.js +0 -1
  145. package/dist/html-DmY_wHSX.js +0 -1
  146. package/dist/html-derivative-BqkAHwxw.js +0 -1
  147. package/dist/html-derivative-GfNAXNvy.js +0 -1
  148. package/dist/http-DSNmXPmD.js +0 -1
  149. package/dist/hurl-CkrB6eSq.js +0 -1
  150. package/dist/hxml-BqY1UbIj.js +0 -1
  151. package/dist/hy-D60OpFH3.js +0 -1
  152. package/dist/imba-ebgbSwGz.js +0 -1
  153. package/dist/index.d.ts +0 -1
  154. package/dist/index.js +0 -1
  155. package/dist/ini-BYj6RmKB.js +0 -1
  156. package/dist/java-Bi_Y8Bsw.js +0 -1
  157. package/dist/java-CaqIw_Rf.js +0 -1
  158. package/dist/javascript-CGOaYlKm.js +0 -1
  159. package/dist/javascript-u1vot5QS.js +0 -1
  160. package/dist/jinja-D4fgt2Cy.js +0 -1
  161. package/dist/jison-BupbRSBu.js +0 -1
  162. package/dist/json-DgrvHR2v.js +0 -1
  163. package/dist/json-IYFshA56.js +0 -1
  164. package/dist/json5-aE0VX-pu.js +0 -1
  165. package/dist/jsonc-CqRuzQuA.js +0 -1
  166. package/dist/jsonl-SOOkn7Sw.js +0 -1
  167. package/dist/jsonnet-DIfu6phf.js +0 -1
  168. package/dist/jssm-hV0pDTDQ.js +0 -1
  169. package/dist/jsx-C0SH37ly.js +0 -1
  170. package/dist/jsx-CaJZmrVS.js +0 -1
  171. package/dist/julia-BLM7eaiW.js +0 -1
  172. package/dist/kanagawa-dragon-CAUDhvmI.js +0 -1
  173. package/dist/kanagawa-lotus-Cw3RzpRs.js +0 -1
  174. package/dist/kanagawa-wave-CTd7QKuU.js +0 -1
  175. package/dist/kdl-3xrhyk5W.js +0 -1
  176. package/dist/kotlin-BHOgCkyf.js +0 -1
  177. package/dist/kusto-BM-oAYAb.js +0 -1
  178. package/dist/laserwave-CCurWjd8.js +0 -1
  179. package/dist/latex-Bvx9pcFA.js +0 -1
  180. package/dist/lean-D8IaoOiI.js +0 -1
  181. package/dist/less-CN_5Yw0a.js +0 -1
  182. package/dist/less-DV0aDiBa.js +0 -1
  183. package/dist/light-plus-D4kPJKWS.js +0 -1
  184. package/dist/liquid-sRlgGzf6.js +0 -1
  185. package/dist/llvm-CsnYorVw.js +0 -1
  186. package/dist/log-C_SMGL8n.js +0 -1
  187. package/dist/logo-CVzLzsP_.js +0 -1
  188. package/dist/lua-DOWHA_3v.js +0 -1
  189. package/dist/lua-DeAY9K4r.js +0 -1
  190. package/dist/luau-CzkleyTz.js +0 -1
  191. package/dist/make-B6JGcnpP.js +0 -1
  192. package/dist/markdown-CdC2l-IK.js +0 -1
  193. package/dist/markdown-DreHh8L0.js +0 -1
  194. package/dist/marko-BjGFov7R.js +0 -1
  195. package/dist/material-theme-DkzQiX4t.js +0 -1
  196. package/dist/material-theme-darker-DrS-0NxT.js +0 -1
  197. package/dist/material-theme-lighter-BwuKMVjk.js +0 -1
  198. package/dist/material-theme-ocean-9ZbppIGx.js +0 -1
  199. package/dist/material-theme-palenight-D-DAK9fg.js +0 -1
  200. package/dist/matlab-Dp2q9iPw.js +0 -1
  201. package/dist/mdc-CsADJoGH.js +0 -1
  202. package/dist/mdx-CLUcPDI-.js +0 -1
  203. package/dist/mermaid-DNEhkuYX.js +0 -1
  204. package/dist/min-dark-xNYg2MGl.js +0 -1
  205. package/dist/min-light-DUAH99TS.js +0 -1
  206. package/dist/mipsasm-DXT2tkbK.js +0 -1
  207. package/dist/mojo-COYWEKP9.js +0 -1
  208. package/dist/monokai-B-RSj3wm.js +0 -1
  209. package/dist/move-5RTvQ45f.js +0 -1
  210. package/dist/narrat-DuS5ChKX.js +0 -1
  211. package/dist/nextflow-dyA9sMUO.js +0 -1
  212. package/dist/nginx-dAQvnBBp.js +0 -1
  213. package/dist/night-owl-CKeRuZRJ.js +0 -1
  214. package/dist/nim-BUtsSKRR.js +0 -1
  215. package/dist/nix-BeX24OEZ.js +0 -1
  216. package/dist/nord-0qyAcvdD.js +0 -1
  217. package/dist/nushell-Du0Lbu-r.js +0 -1
  218. package/dist/objective-c-BDvn_PS7.js +0 -1
  219. package/dist/objective-cpp-BYVs_lNu.js +0 -1
  220. package/dist/ocaml-Buvqlhqm.js +0 -1
  221. package/dist/one-dark-pro-D9S4sFLi.js +0 -1
  222. package/dist/one-light-Bk0kqEFW.js +0 -1
  223. package/dist/openscad--GnqXwNf.js +0 -1
  224. package/dist/pascal-C9zC3WeM.js +0 -1
  225. package/dist/perl-BILVogJG.js +0 -1
  226. package/dist/php-Cmx4iIMY.js +0 -1
  227. package/dist/php-yQ5AQvPM.js +0 -1
  228. package/dist/pkl-D1JQCIjP.js +0 -1
  229. package/dist/plastic-5fWCgqtU.js +0 -1
  230. package/dist/plsql-DUnoIwFl.js +0 -1
  231. package/dist/po-C-FGioO2.js +0 -1
  232. package/dist/poimandres-DdrZqqhm.js +0 -1
  233. package/dist/polar-Chc9BaLJ.js +0 -1
  234. package/dist/postcss-Bnn_pAAb.js +0 -1
  235. package/dist/postcss-WBt22Dkz.js +0 -1
  236. package/dist/powerquery-DZe8qDfI.js +0 -1
  237. package/dist/powershell-B4WW0YF3.js +0 -1
  238. package/dist/prisma-Db0IWuIE.js +0 -1
  239. package/dist/prolog-CzOU4qVi.js +0 -1
  240. package/dist/proto-CnyvvDd1.js +0 -1
  241. package/dist/pug-XN1V80yZ.js +0 -1
  242. package/dist/puppet-Dts2NQhA.js +0 -1
  243. package/dist/purescript-pfjd9EKT.js +0 -1
  244. package/dist/python-CgkbEA7j.js +0 -1
  245. package/dist/python-DA5VdOjf.js +0 -1
  246. package/dist/qml-BUG6hecM.js +0 -1
  247. package/dist/qmldir-Btbp-SnF.js +0 -1
  248. package/dist/qss-NWGc7ENo.js +0 -1
  249. package/dist/r-ChmFPS6K.js +0 -1
  250. package/dist/r-DqnCeWey.js +0 -1
  251. package/dist/racket-BWT8W4iy.js +0 -1
  252. package/dist/raku-C4oZa0Mf.js +0 -1
  253. package/dist/razor-CwlmIXoZ.js +0 -1
  254. package/dist/red-CqUJW53F.js +0 -1
  255. package/dist/reg-TtWpd5d3.js +0 -1
  256. package/dist/regexp-BQ5u4y-4.js +0 -1
  257. package/dist/regexp-j35UYMaY.js +0 -1
  258. package/dist/rel-DIWiXQ72.js +0 -1
  259. package/dist/riscv-Dv-Wobwn.js +0 -1
  260. package/dist/rose-pine-DAkiUkt-.js +0 -1
  261. package/dist/rose-pine-dawn-C4hAh4xD.js +0 -1
  262. package/dist/rose-pine-moon-DLFvs1dY.js +0 -1
  263. package/dist/rosmsg-Dpq0E4Hf.js +0 -1
  264. package/dist/rst-ByEkqHpT.js +0 -1
  265. package/dist/ruby-BN2fsjPD.js +0 -1
  266. package/dist/ruby-CWJ7HOvL.js +0 -1
  267. package/dist/rust-DXMWrjIS.js +0 -1
  268. package/dist/sas-CFRgJxyH.js +0 -1
  269. package/dist/sass-Dkc8z2U_.js +0 -1
  270. package/dist/scala-Ccn4twDa.js +0 -1
  271. package/dist/scheme-ByS7Ufpv.js +0 -1
  272. package/dist/scss-B2HK8b_u.js +0 -1
  273. package/dist/scss-BtLJrQgO.js +0 -1
  274. package/dist/sdbl-CDZiUoGO.js +0 -1
  275. package/dist/sdbl-DWnpuOvU.js +0 -1
  276. package/dist/shaderlab-Bp6E8wU4.js +0 -1
  277. package/dist/shellscript-4OkiSN-h.js +0 -1
  278. package/dist/shellscript-C1F1sLPK.js +0 -1
  279. package/dist/shellsession-2D4oxU8o.js +0 -1
  280. package/dist/slack-dark-pkdzBKrI.js +0 -1
  281. package/dist/slack-ochin-CoDz9ko7.js +0 -1
  282. package/dist/smalltalk-Kx-oUZNN.js +0 -1
  283. package/dist/snazzy-light-CIl1jIJ6.js +0 -1
  284. package/dist/solarized-dark-DPAo1TQR.js +0 -1
  285. package/dist/solarized-light-ZikhFtV6.js +0 -1
  286. package/dist/solidity-B6e3Bet0.js +0 -1
  287. package/dist/soy-DzHQLVPv.js +0 -1
  288. package/dist/sparql-2EdL4sGD.js +0 -1
  289. package/dist/splunk-4bEiKJQJ.js +0 -1
  290. package/dist/sql-0D3m0WTO.js +0 -1
  291. package/dist/sql-COwkzdcc.js +0 -1
  292. package/dist/ssh-config-DNAYfpA0.js +0 -1
  293. package/dist/stata-Dc9CpOk_.js +0 -1
  294. package/dist/stylus-CU84eN7i.js +0 -1
  295. package/dist/stylus-DMy4Ib1_.js +0 -1
  296. package/dist/svelte-Dt1uHIEv.js +0 -1
  297. package/dist/swift-CAb5ZoTR.js +0 -1
  298. package/dist/synthwave-84-CGqBU60R.js +0 -1
  299. package/dist/system-verilog-D1zBPwIR.js +0 -1
  300. package/dist/systemd-CB-JNMU1.js +0 -1
  301. package/dist/talonscript-C44n0Z1I.js +0 -1
  302. package/dist/tasl-DFJ5DyKD.js +0 -1
  303. package/dist/tcl-Cn_vgD48.js +0 -1
  304. package/dist/templ-D6cgJQ93.js +0 -1
  305. package/dist/terraform-C0GDw5Yx.js +0 -1
  306. package/dist/tex--evcwRaO.js +0 -1
  307. package/dist/tex-DI7k1i5h.js +0 -1
  308. package/dist/tokyo-night-C9P-hOUs.js +0 -1
  309. package/dist/toml-DygwKWiG.js +0 -1
  310. package/dist/ts-tags-BMyJSDRW.js +0 -1
  311. package/dist/tsv-D1hoG1dc.js +0 -1
  312. package/dist/tsx-FaowoCNQ.js +0 -1
  313. package/dist/tsx-MSa_uj0f.js +0 -1
  314. package/dist/turtle-DTVOEVyA.js +0 -1
  315. package/dist/turtle-bFO7CguV.js +0 -1
  316. package/dist/twig-B5SDCRaG.js +0 -1
  317. package/dist/typescript-B56_2R5P.js +0 -1
  318. package/dist/typescript-C9arBFtN.js +0 -1
  319. package/dist/typespec-Xs3M-L3I.js +0 -1
  320. package/dist/typst-aZyRVVhS.js +0 -1
  321. package/dist/v-U-avXm9a.js +0 -1
  322. package/dist/vala-C9DtP-IN.js +0 -1
  323. package/dist/vb-BiBM73OI.js +0 -1
  324. package/dist/verilog-2KJ23lmQ.js +0 -1
  325. package/dist/vesper-QUZLl-KU.js +0 -1
  326. package/dist/vhdl-BM_G-wqS.js +0 -1
  327. package/dist/viml-D9Wfp7kC.js +0 -1
  328. package/dist/vitesse-black-DaRTa0zW.js +0 -1
  329. package/dist/vitesse-dark-CK3JAXrr.js +0 -1
  330. package/dist/vitesse-light-irHM-N9L.js +0 -1
  331. package/dist/vue-8Qq1O0KV.js +0 -1
  332. package/dist/vue-BhuSGEdZ.js +0 -1
  333. package/dist/vue-html-CjTCw3jB.js +0 -1
  334. package/dist/vue-vine-B8fLyaUV.js +0 -1
  335. package/dist/vyper-JxCydtCC.js +0 -1
  336. package/dist/wasm-CEYKmQJi.js +0 -1
  337. package/dist/wasm-CeIBK_Mv.js +0 -1
  338. package/dist/wenyan-C6IMLxb9.js +0 -1
  339. package/dist/wgsl-DcM0fO4C.js +0 -1
  340. package/dist/wikitext-CicqHi8l.js +0 -1
  341. package/dist/wit-DXZYezGF.js +0 -1
  342. package/dist/wolfram-LDaaEKo9.js +0 -1
  343. package/dist/worker.d.ts +0 -1
  344. package/dist/worker.js +0 -306
  345. package/dist/wrapper-DlUP6cCH.js +0 -6
  346. package/dist/xml-D4S4eOp-.js +0 -1
  347. package/dist/xml-DI-vKJVc.js +0 -1
  348. package/dist/xsl-BBtAEwui.js +0 -1
  349. package/dist/yaml-BYGefRa5.js +0 -1
  350. package/dist/yaml-ryeB2S83.js +0 -1
  351. package/dist/zenscript-C6nOigZg.js +0 -1
  352. package/dist/zig-BZAkN6e6.js +0 -1
package/README.md ADDED
@@ -0,0 +1,52 @@
1
+ # @luna_ui/astra
2
+
3
+ CLI wrapper for **Astra**, the SSG / static-export companion for
4
+ [Sol](../sol/).
5
+
6
+ This package ships the `astra` command. The MoonBit-side library lives
7
+ in the same repository under `astra/`.
8
+
9
+ ## Install
10
+
11
+ The **primary** install path is `moon install`; it drops a real binary
12
+ into `$MOON_HOME/bin/`:
13
+
14
+ ```sh
15
+ moon install mizchi/astra/cmd/astra
16
+ ```
17
+
18
+ This npm package is a **secondary** distribution channel for users who
19
+ already have node but not moon:
20
+
21
+ ```sh
22
+ pnpm add -g @luna_ui/astra
23
+ # or
24
+ npm i -g @luna_ui/astra
25
+ ```
26
+
27
+ Either one exposes the same `astra` command with the same surface.
28
+
29
+ ## Usage
30
+
31
+ ```sh
32
+ astra --help
33
+ astra build # crawl a Sol app and dump every URL to disk
34
+ astra dev # serve the same crawl at runtime for parity testing
35
+ ```
36
+
37
+ Run `astra <command> --help` for command-specific options.
38
+
39
+ ## What is Astra?
40
+
41
+ Astra is mountable Mars middleware for static site generation. Point
42
+ it at a Sol-compatible Hono app, declare which routes you want
43
+ materialised, and Astra will walk and snapshot them — verifying that
44
+ build-output and runtime-served HTML stay byte-for-byte identical
45
+ (see `astra/e2e/build_dev_parity.test.js`).
46
+
47
+ For library use in MoonBit, depend on `mizchi/astra`. For CLI-only
48
+ usage, `moon install mizchi/astra/cmd/astra` is the smaller install.
49
+
50
+ ## License
51
+
52
+ MIT
package/bin/astra.js ADDED
@@ -0,0 +1,9 @@
1
+ #!/usr/bin/env node
2
+ // Workspace dev shim. js/astra/bin/astra.js -> three levels up to
3
+ // workspace root, then into _build/js/release/build/mizchi/astra/cmd/astra/astra.js.
4
+ //
5
+ // Primary install path is `moon install mizchi/astra/cmd/astra`; this
6
+ // npm wrapper exists for users who already have node but not moon.
7
+ // Published npm builds bundle the moonbit CLI output into ./dist/ via
8
+ // js/astra/scripts/build-release.mjs (TODO).
9
+ import "../../../_build/js/release/build/mizchi/astra/cmd/astra/astra.js";
package/package.json CHANGED
@@ -1,49 +1,24 @@
1
1
  {
2
2
  "name": "@luna_ui/astra",
3
- "version": "0.2.7",
3
+ "version": "0.17.0",
4
+ "private": false,
4
5
  "type": "module",
5
- "description": "MoonBit Island Architecture SSG Framework",
6
- "main": "./dist/index.js",
7
- "types": "./dist/index.d.ts",
8
- "exports": {
9
- ".": {
10
- "types": "./dist/index.d.ts",
11
- "import": "./dist/index.js"
12
- }
13
- },
14
6
  "bin": {
15
- "astra": "./bin/astra.mjs"
16
- },
17
- "scripts": {
18
- "prepublishOnly": "pnpm build",
19
- "build": "tsdown"
7
+ "astra": "./bin/astra.js"
20
8
  },
9
+ "main": "./bin/astra.js",
21
10
  "files": [
22
- "bin",
23
- "dist",
24
- "assets"
11
+ "bin/",
12
+ "README.md"
25
13
  ],
26
- "keywords": [
27
- "luna",
28
- "moonbit",
29
- "island",
30
- "ssg",
31
- "astra"
32
- ],
33
- "author": "mizchi",
14
+ "description": "Astra — SSG / static-export companion for Sol (CLI wrapper)",
34
15
  "license": "MIT",
35
16
  "repository": {
36
- "directory": "js/astra",
37
- "url": "https://github.com/mizchi/luna.mbt"
38
- },
39
- "dependencies": {
40
- "@hono/node-server": "^1.14.0",
41
- "colorette": "^2.0.20",
42
- "gray-matter": "^4.0.3",
43
- "hono": "^4.7.0",
44
- "marked": "^15.0.0"
17
+ "type": "git",
18
+ "url": "git+https://github.com/mizchi/luna.mbt.git",
19
+ "directory": "js/astra"
45
20
  },
46
- "devDependencies": {
47
- "tsdown": "^0.18.2"
21
+ "publishConfig": {
22
+ "access": "public"
48
23
  }
49
24
  }
@@ -1 +0,0 @@
1
- (function(){function setupTrigger(e,t,n){if(t==="load")document.readyState==="loading"?document.addEventListener("DOMContentLoaded",()=>n(),{once:true}):n();else if(t==="idle")requestIdleCallback(()=>n());else if(t[0]==="v")new IntersectionObserver((r,o)=>{r.some(i=>i.isIntersecting)&&(o.disconnect(),n())},{rootMargin:"50px"}).observe(e);else if(t[0]==="m"){const r=matchMedia(t.slice(6)),o=()=>{r.matches&&(r.removeEventListener("change",o),n())};r.matches?n():r.addEventListener("change",o)}}function onReady(e){document.readyState==="loading"?document.addEventListener("DOMContentLoaded",e,{once:true}):e()}function observeAdditions(e,t){new MutationObserver(n=>n.forEach(r=>r.addedNodes.forEach(o=>{o.nodeType===1&&e(o)&&t(o)}))).observe(document.body??document.documentElement,{childList:true,subtree:true})}function createLoadedTracker(){const e=new Set;return{loaded:e,unload:t=>e.delete(t),clear:()=>e.clear()}}const d=document,w=window,S={},{loaded,unload,clear}=createLoadedTracker(),parseState=async e=>{const t=e.getAttribute("luna:state");if(t){if(t[0]==="#")return JSON.parse(d.getElementById(t.slice(1))?.textContent??"null");try{return JSON.parse(t)}catch{}}},hydrate=async e=>{const t=e.getAttribute("luna:id");if(!t||loaded.has(t))return;loaded.add(t);const n=e.getAttribute("luna:url");if(!n)return;S[t]=await parseState(e);const r=await import(n),o=e.getAttribute("luna:export");(o?r[o]:r.hydrate??r.default)?.(e,S[t],t)},setup=e=>{setupTrigger(e,e.getAttribute("luna:client-trigger")??"load",()=>hydrate(e))},scan=()=>{d.querySelectorAll("[luna\\:id]").forEach(setup)};d.querySelectorAll('script[type="luna/json"]').forEach(e=>{e.id&&(S[e.id]=JSON.parse(e.textContent??"{}"))});onReady(scan);observeAdditions(e=>e.hasAttribute("luna:id"),setup);const unloadAll=(e=d.body)=>{e.querySelectorAll("[luna\\:id]").forEach(t=>{const n=t.getAttribute("luna:id");n&&loaded.delete(n)})};w.__LUNA_STATE__=S;w.__LUNA_HYDRATE__=hydrate;w.__LUNA_SCAN__=scan;w.__LUNA_UNLOAD__=unload;w.__LUNA_UNLOAD_ALL__=unloadAll;w.__LUNA_CLEAR_LOADED__=clear})();
@@ -1,29 +0,0 @@
1
- (function(){
2
- var STORAGE_KEY = 'astra-sidebar-state';
3
- function loadState() {
4
- try { return JSON.parse(localStorage.getItem(STORAGE_KEY)) || {}; } catch { return {}; }
5
- }
6
- function saveState(state) {
7
- try { localStorage.setItem(STORAGE_KEY, JSON.stringify(state)); } catch {}
8
- }
9
- function initSidebar() {
10
- var state = loadState();
11
- document.querySelectorAll('[data-sidebar-group]').forEach(function(el) {
12
- var key = el.dataset.sidebarGroup;
13
- if (key && state[key] !== undefined) {
14
- el.open = state[key];
15
- }
16
- el.addEventListener('toggle', function() {
17
- var s = loadState();
18
- s[key] = el.open;
19
- saveState(s);
20
- });
21
- });
22
- }
23
- if (document.readyState === 'loading') {
24
- document.addEventListener('DOMContentLoaded', initSidebar);
25
- } else {
26
- initSidebar();
27
- }
28
- window.__ASTRA_INIT_SIDEBAR__ = initSidebar;
29
- })();
@@ -1,25 +0,0 @@
1
- (function(){
2
- var theme = localStorage.getItem('theme');
3
- var prefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches;
4
- var isDark = theme === 'dark' || (theme !== 'light' && prefersDark);
5
- if (isDark) {
6
- document.documentElement.classList.add('dark');
7
- document.documentElement.classList.remove('light');
8
- } else {
9
- document.documentElement.classList.add('light');
10
- document.documentElement.classList.remove('dark');
11
- }
12
- window.toggleTheme = function() {
13
- var html = document.documentElement;
14
- var wasDark = html.classList.contains('dark');
15
- if (wasDark) {
16
- html.classList.remove('dark');
17
- html.classList.add('light');
18
- localStorage.setItem('theme', 'light');
19
- } else {
20
- html.classList.add('dark');
21
- html.classList.remove('light');
22
- localStorage.setItem('theme', 'dark');
23
- }
24
- };
25
- })();
@@ -1,41 +0,0 @@
1
- (function(){
2
- var observer = null;
3
- var tocLinks = [];
4
- var headings = [];
5
- function initTocSpy() {
6
- if (observer) observer.disconnect();
7
- tocLinks = Array.from(document.querySelectorAll('.toc-item a'));
8
- headings = tocLinks.map(function(link) {
9
- var id = link.getAttribute('href')?.slice(1);
10
- return id ? document.getElementById(id) : null;
11
- }).filter(Boolean);
12
- if (!headings.length) return;
13
- var current = null;
14
- observer = new IntersectionObserver(function(entries) {
15
- entries.forEach(function(entry) {
16
- if (entry.isIntersecting) current = entry.target;
17
- });
18
- if (!current) {
19
- var scrollY = window.scrollY + 100;
20
- for (var i = headings.length - 1; i >= 0; i--) {
21
- if (headings[i].offsetTop <= scrollY) { current = headings[i]; break; }
22
- }
23
- }
24
- tocLinks.forEach(function(link) {
25
- var id = link.getAttribute('href')?.slice(1);
26
- if (current && id === current.id) {
27
- link.classList.add('active');
28
- } else {
29
- link.classList.remove('active');
30
- }
31
- });
32
- }, { rootMargin: '-60px 0px -70% 0px', threshold: 0 });
33
- headings.forEach(function(h) { observer.observe(h); });
34
- }
35
- if (document.readyState === 'loading') {
36
- document.addEventListener('DOMContentLoaded', initTocSpy);
37
- } else {
38
- initTocSpy();
39
- }
40
- window.__ASTRA_INIT_TOC_SPY__ = initTocSpy;
41
- })();
@@ -1,28 +0,0 @@
1
- (function(){
2
- function setupTrigger(el, t, cb) {
3
- if (t === 'load') document.readyState === 'loading' ? document.addEventListener('DOMContentLoaded', cb, {once:true}) : cb();
4
- else if (t === 'idle') requestIdleCallback(cb);
5
- else if (t[0] === 'v') new IntersectionObserver((e,o) => { if(e.some(x=>x.isIntersecting)){o.disconnect();cb();}}, {rootMargin:'50px'}).observe(el);
6
- else if (t[0] === 'm') { var mq = matchMedia(t.slice(6)); var h = () => { if(mq.matches){mq.removeEventListener('change',h);cb();}}; mq.matches ? cb() : mq.addEventListener('change',h);}
7
- }
8
- var loaded = new Set();
9
- async function hydrate(el) {
10
- var name = el.tagName.toLowerCase();
11
- if (loaded.has(name)) return;
12
- var url = el.getAttribute('luna:wc-url');
13
- if (!url) return;
14
- loaded.add(name);
15
- try {
16
- var mod = await import(url);
17
- var fn = mod.hydrate || mod.default;
18
- if (typeof fn === 'function') fn(el, {}, name);
19
- } catch(e) { console.error('[wc] Failed:', name, e); }
20
- }
21
- function setup(el) { setupTrigger(el, el.getAttribute('luna:wc-trigger') || 'load', () => hydrate(el)); }
22
- function scan() { document.querySelectorAll('[luna\\:wc-url]').forEach(setup); }
23
- if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', scan, {once:true});
24
- else scan();
25
- new MutationObserver(m => m.forEach(x => x.addedNodes.forEach(n => { if(n.nodeType === 1 && n.hasAttribute('luna:wc-url')) setup(n); }))).observe(document.body || document.documentElement, {childList:true,subtree:true});
26
- window.__LUNA_WC_SCAN__ = scan;
27
- window.__LUNA_WC_CLEAR_LOADED__ = () => loaded.clear();
28
- })();