@bud.sh/app 0.1.0 → 0.3.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.
- package/dist/client/assets/{index-sj6mWw9-.js → index-GPPa1XPO.js} +2 -2
- package/dist/client/assets/workspace-CznMN7F6.js +2 -0
- package/dist/client/index.html +1 -1
- package/dist/hosted/hosted.js +233 -38
- package/dist/node/index.js +95 -0
- package/dist/node-host/assets/abap-LtYK6g-v.js +3 -0
- package/dist/node-host/assets/actionscript-3-CfsDl31I.js +3 -0
- package/dist/node-host/assets/ada-CvTdxb4T.js +3 -0
- package/dist/node-host/assets/ahk-HN_I_y_3.js +3 -0
- package/dist/node-host/assets/ahk2-bJ5Wm9-K.js +3 -0
- package/dist/node-host/assets/andromeeda-BASpqCeJ.js +4 -0
- package/dist/node-host/assets/angular-html-C4SmZqv0.js +33 -0
- package/dist/node-host/assets/angular-ts-X1i_WOxI.js +27 -0
- package/dist/node-host/assets/apache-BIl2qPOf.js +3 -0
- package/dist/node-host/assets/apex-CybrBQ0z.js +3 -0
- package/dist/node-host/assets/api_vite-DSBC5Nzy.js +5 -0
- package/dist/node-host/assets/apl-CDTyNgE2.js +17 -0
- package/dist/node-host/assets/applescript-CJ80B5XJ.js +3 -0
- package/dist/node-host/assets/ara-IxnQjO6j.js +3 -0
- package/dist/node-host/assets/asciidoc-xKuVlNk6.js +3 -0
- package/dist/node-host/assets/asm-wBDSgBbA.js +3 -0
- package/dist/node-host/assets/astro-BiZFCPSt.js +19 -0
- package/dist/node-host/assets/aurora-x-DugsLcii.js +4 -0
- package/dist/node-host/assets/awk-D6dA05Ye.js +3 -0
- package/dist/node-host/assets/ayu-dark-BT3qdi3o.js +4 -0
- package/dist/node-host/assets/ayu-light-BVZyHoh9.js +4 -0
- package/dist/node-host/assets/ayu-mirage-XFwUVZQZ.js +4 -0
- package/dist/node-host/assets/ballerina-DIdXD2KH.js +3 -0
- package/dist/node-host/assets/bat-Dx8nnxXE.js +3 -0
- package/dist/node-host/assets/beancount-BG2UQN2D.js +3 -0
- package/dist/node-host/assets/berry-CgA2ea0_.js +3 -0
- package/dist/node-host/assets/bibtex-BzgdqG3s.js +3 -0
- package/dist/node-host/assets/bicep-CZ338dSk.js +3 -0
- package/dist/node-host/assets/bird2-BMprQDNV.js +3 -0
- package/dist/node-host/assets/blade-cZjv4Qad.js +21 -0
- package/dist/node-host/assets/bsl-Bh8bzcoy.js +6 -0
- package/dist/node-host/assets/build-Dn-L17Oj.js +5372 -0
- package/dist/node-host/assets/c-BXsbGxlp.js +6 -0
- package/dist/node-host/assets/c3-u0qNrniV.js +3 -0
- package/dist/node-host/assets/cadence-B1ELWULD.js +3 -0
- package/dist/node-host/assets/cairo-BsQhEq3R.js +6 -0
- package/dist/node-host/assets/canvas-BZhzizzt.js +1066 -0
- package/dist/node-host/assets/catppuccin-frappe-D20KODDN.js +4 -0
- package/dist/node-host/assets/catppuccin-latte-eGLVHIUJ.js +4 -0
- package/dist/node-host/assets/catppuccin-macchiato-bQGch4PY.js +4 -0
- package/dist/node-host/assets/catppuccin-mocha-Bes8-0Mr.js +4 -0
- package/dist/node-host/assets/chapel-cEZNBFmv.js +6 -0
- package/dist/node-host/assets/clarity-BkOxTQMf.js +3 -0
- package/dist/node-host/assets/clojure-DDsQ0FaV.js +3 -0
- package/dist/node-host/assets/cloneFileDiffMetadata-C1BcNpxN.js +3075 -0
- package/dist/node-host/assets/cmake-DPsCB_V6.js +3 -0
- package/dist/node-host/assets/cobol-BpMD18Rr.js +11 -0
- package/dist/node-host/assets/codeowners-CxEKPWu0.js +3 -0
- package/dist/node-host/assets/codeql-BwdvwJnv.js +3 -0
- package/dist/node-host/assets/coffee-BX_u-2R1.js +6 -0
- package/dist/node-host/assets/comment-data-nUlI0szN.js +92501 -0
- package/dist/node-host/assets/common-lisp-DJtwvW4V.js +3 -0
- package/dist/node-host/assets/coq-Byd42hNw.js +3 -0
- package/dist/node-host/assets/cpp-DjJRL98I.js +22 -0
- package/dist/node-host/assets/crystal-Cz-dKioR.js +19 -0
- package/dist/node-host/assets/csharp-Cx443ZdC.js +3 -0
- package/dist/node-host/assets/css-CWNyyZRg.js +6 -0
- package/dist/node-host/assets/csv-DqIVFkK7.js +3 -0
- package/dist/node-host/assets/cue-B5KneM5p.js +3 -0
- package/dist/node-host/assets/cypher-D8Bb8Cq2.js +3 -0
- package/dist/node-host/assets/d-BQY8TDgQ.js +3 -0
- package/dist/node-host/assets/dark-plus-BGuiqa1B.js +4 -0
- package/dist/node-host/assets/dart-BZ3YsgDB.js +3 -0
- package/dist/node-host/assets/dax-S-Noo-ku.js +3 -0
- package/dist/node-host/assets/desktop-BgOb7Aj4.js +3 -0
- package/dist/node-host/assets/diff-Blb4MjsC.js +3 -0
- package/dist/node-host/assets/dist-CVXhIZqO.js +6659 -0
- package/dist/node-host/assets/docker-PC1tuYpa.js +3 -0
- package/dist/node-host/assets/dotenv-BNWDqzYB.js +3 -0
- package/dist/node-host/assets/dracula-0CVA2XY5.js +4 -0
- package/dist/node-host/assets/dracula-soft-Dk9bpbVU.js +4 -0
- package/dist/node-host/assets/dream-maker-CngiPd8U.js +3 -0
- package/dist/node-host/assets/edge-D1_nghia.js +13 -0
- package/dist/node-host/assets/edit-DjpTbnEc.js +9788 -0
- package/dist/node-host/assets/elixir-x6BMZ6zW.js +6 -0
- package/dist/node-host/assets/elm-CiAjb3qf.js +6 -0
- package/dist/node-host/assets/emacs-lisp-DPCJASlD.js +3 -0
- package/dist/node-host/assets/erb-DzXTnEFa.js +11 -0
- package/dist/node-host/assets/erlang-DALBVNgL.js +6 -0
- package/dist/node-host/assets/everforest-dark-CRjTbhh5.js +4 -0
- package/dist/node-host/assets/everforest-light-CEeYFLn8.js +4 -0
- package/dist/node-host/assets/fennel-B3wtZRne.js +3 -0
- package/dist/node-host/assets/files-CTzcWGjb.js +3771 -0
- package/dist/node-host/assets/fish-D7qAeWQz.js +3 -0
- package/dist/node-host/assets/fluent-BjfpB34g.js +3 -0
- package/dist/node-host/assets/fortran-fixed-form-BbzsUHx4.js +6 -0
- package/dist/node-host/assets/fortran-free-form-yxJ7igsv.js +3 -0
- package/dist/node-host/assets/fsharp-D2o1Vyx0.js +6 -0
- package/dist/node-host/assets/gdresource-aTcOcjSd.js +11 -0
- package/dist/node-host/assets/gdscript-CSSSWtkL.js +3 -0
- package/dist/node-host/assets/gdshader-D7JfdFV3.js +3 -0
- package/dist/node-host/assets/genie-DnK2KWIP.js +3 -0
- package/dist/node-host/assets/gherkin-D6Lr12YQ.js +3 -0
- package/dist/node-host/assets/git-commit-BU1ZeqU-.js +6 -0
- package/dist/node-host/assets/git-rebase-BBwLmuqc.js +6 -0
- package/dist/node-host/assets/github-dark-BXgKmOw_.js +4 -0
- package/dist/node-host/assets/github-dark-default-DzJQXksd.js +4 -0
- package/dist/node-host/assets/github-dark-dimmed-B1pEmGtS.js +4 -0
- package/dist/node-host/assets/github-dark-high-contrast-BkHIa6jc.js +4 -0
- package/dist/node-host/assets/github-light-BKRlUbaB.js +4 -0
- package/dist/node-host/assets/github-light-default-BU3eYkzs.js +4 -0
- package/dist/node-host/assets/github-light-high-contrast-B3MumDcI.js +4 -0
- package/dist/node-host/assets/gleam-CTllUdfC.js +3 -0
- package/dist/node-host/assets/glimmer-js-Cr4KUylv.js +15 -0
- package/dist/node-host/assets/glimmer-ts-W_3bhuUU.js +15 -0
- package/dist/node-host/assets/glsl-CV8OarLe.js +8 -0
- package/dist/node-host/assets/gn-CpIn4Dcw.js +3 -0
- package/dist/node-host/assets/gnuplot-DgWvVXI8.js +3 -0
- package/dist/node-host/assets/go-aXtTCanQ.js +3 -0
- package/dist/node-host/assets/graphql-BzQEBhBd.js +17 -0
- package/dist/node-host/assets/groovy-Bw2Ku4bU.js +3 -0
- package/dist/node-host/assets/gruvbox-dark-hard-B0ecF443.js +4 -0
- package/dist/node-host/assets/gruvbox-dark-medium-BQnpC39k.js +4 -0
- package/dist/node-host/assets/gruvbox-dark-soft-DFZUgESr.js +4 -0
- package/dist/node-host/assets/gruvbox-light-hard-CuB_LOJr.js +4 -0
- package/dist/node-host/assets/gruvbox-light-medium-idDHgxjs.js +4 -0
- package/dist/node-host/assets/gruvbox-light-soft-CfWH49MY.js +4 -0
- package/dist/node-host/assets/hack-DhYZEMlu.js +11 -0
- package/dist/node-host/assets/haml-CRid5kR3.js +13 -0
- package/dist/node-host/assets/handlebars-Sm6kCGmL.js +15 -0
- package/dist/node-host/assets/haskell-CfGsE1Cf.js +3 -0
- package/dist/node-host/assets/haxe-QaqXWmIB.js +3 -0
- package/dist/node-host/assets/hcl-DHg_Osgo.js +3 -0
- package/dist/node-host/assets/hjson-Cuaphql8.js +3 -0
- package/dist/node-host/assets/hlsl-BJLUNfne.js +3 -0
- package/dist/node-host/assets/horizon-bright-Ba6M8QSV.js +4 -0
- package/dist/node-host/assets/horizon-h92C5OlZ.js +4 -0
- package/dist/node-host/assets/houston-EQnPegWq.js +4 -0
- package/dist/node-host/assets/html-derivative-Cm8plTfc.js +6 -0
- package/dist/node-host/assets/html-j1vihRKA.js +13 -0
- package/dist/node-host/assets/http-BZNc4yhO.js +15 -0
- package/dist/node-host/assets/hurl-O8ckTHPH.js +13 -0
- package/dist/node-host/assets/hxml-9hvSHCPQ.js +6 -0
- package/dist/node-host/assets/hy-CJKxDzbh.js +3 -0
- package/dist/node-host/assets/imba-96qKoJCa.js +3 -0
- package/dist/node-host/assets/ini-C24lZfdM.js +3 -0
- package/dist/node-host/assets/java-CFxSaKyu.js +6 -0
- package/dist/node-host/assets/javascript-D44WgUBn.js +6 -0
- package/dist/node-host/assets/jinja-BkVH86If.js +10 -0
- package/dist/node-host/assets/jison-DOInKsmT.js +6 -0
- package/dist/node-host/assets/jiti-CjBwKumX.js +5461 -0
- package/dist/node-host/assets/json-CnGl9idC.js +6 -0
- package/dist/node-host/assets/json5-xULSgPQI.js +3 -0
- package/dist/node-host/assets/jsonc-Cu6rqcrJ.js +3 -0
- package/dist/node-host/assets/jsonl-Bp0qqr10.js +3 -0
- package/dist/node-host/assets/jsonnet-BafgE6cE.js +3 -0
- package/dist/node-host/assets/jssm-Dx5A5sBR.js +3 -0
- package/dist/node-host/assets/jsx-Dv6553c2.js +6 -0
- package/dist/node-host/assets/julia-CnoY-eZu.js +17 -0
- package/dist/node-host/assets/just-rCgUmVkD.js +19 -0
- package/dist/node-host/assets/kanagawa-dragon-DgDvwi3B.js +4 -0
- package/dist/node-host/assets/kanagawa-lotus-BgoQro20.js +4 -0
- package/dist/node-host/assets/kanagawa-wave-DgXEowHs.js +4 -0
- package/dist/node-host/assets/kdl-DkTyxPcj.js +3 -0
- package/dist/node-host/assets/kotlin-BHE8CoV9.js +3 -0
- package/dist/node-host/assets/kusto-6FdaWTzR.js +3 -0
- package/dist/node-host/assets/laserwave-IxBH_3yW.js +4 -0
- package/dist/node-host/assets/latex-DTvJHHg_.js +6 -0
- package/dist/node-host/assets/lean-BwOKScIt.js +3 -0
- package/dist/node-host/assets/less-BzbdhFUi.js +3 -0
- package/dist/node-host/assets/lib-BzDu3tbz.js +17484 -0
- package/dist/node-host/assets/light-plus-S8JBx6is.js +4 -0
- package/dist/node-host/assets/liquid-praBF2DO.js +15 -0
- package/dist/node-host/assets/llvm-ZNG_yAr9.js +3 -0
- package/dist/node-host/assets/log-Dad54gsi.js +3 -0
- package/dist/node-host/assets/logo-DTXV8SKw.js +3 -0
- package/dist/node-host/assets/lru-C0_oUet4.js +134 -0
- package/dist/node-host/assets/lua-CiYoSQn2.js +8 -0
- package/dist/node-host/assets/luau-DlImmvOM.js +3 -0
- package/dist/node-host/assets/main-D0ab5M4V.js +2353 -0
- package/dist/node-host/assets/make-B2ukzWs3.js +3 -0
- package/dist/node-host/assets/markdown-CkmxmzqY.js +3 -0
- package/dist/node-host/assets/marko-Din1W3ot.js +15 -0
- package/dist/node-host/assets/material-theme-D1f3HBq-.js +4 -0
- package/dist/node-host/assets/material-theme-darker-ExzYhT0j.js +4 -0
- package/dist/node-host/assets/material-theme-lighter-D6gH9nnA.js +4 -0
- package/dist/node-host/assets/material-theme-ocean-D1w5BPAa.js +4 -0
- package/dist/node-host/assets/material-theme-palenight-CkqWmVpF.js +4 -0
- package/dist/node-host/assets/matlab-CfRK6IMC.js +3 -0
- package/dist/node-host/assets/mdc-DrUS0kOP.js +13 -0
- package/dist/node-host/assets/mdx-BK9ZufRc.js +3 -0
- package/dist/node-host/assets/mermaid-ItFqCK9s.js +3 -0
- package/dist/node-host/assets/min-dark-npsJH98j.js +4 -0
- package/dist/node-host/assets/min-light-DUk1XsVt.js +4 -0
- package/dist/node-host/assets/mipsasm-EL46Y4Xg.js +3 -0
- package/dist/node-host/assets/mojo-CsUSYzsu.js +3 -0
- package/dist/node-host/assets/monokai-CfFRWUNl.js +4 -0
- package/dist/node-host/assets/moonbit-BuY4M1CG.js +3 -0
- package/dist/node-host/assets/move-B-o8dn0N.js +3 -0
- package/dist/node-host/assets/narrat-D9rrR0H5.js +3 -0
- package/dist/node-host/assets/nextflow-ByPelpfh.js +6 -0
- package/dist/node-host/assets/nextflow-groovy-kiH-pxwE.js +3 -0
- package/dist/node-host/assets/nginx-CqxQjy7t.js +6 -0
- package/dist/node-host/assets/night-owl-BS7V-av_.js +4 -0
- package/dist/node-host/assets/night-owl-light-CZtRawYE.js +4 -0
- package/dist/node-host/assets/nim-BJfyW_Eo.js +21 -0
- package/dist/node-host/assets/nix-NHxlegoK.js +7 -0
- package/dist/node-host/assets/node-CaLaDAar.js +783 -0
- package/dist/node-host/assets/nord-BFh54Nqz.js +4 -0
- package/dist/node-host/assets/nsis-C3tUpeAt.js +3 -0
- package/dist/node-host/assets/nushell-Dx3871HW.js +3 -0
- package/dist/node-host/assets/objective-c-6dJF64Dt.js +3 -0
- package/dist/node-host/assets/objective-cpp-_ooRQ-PY.js +3 -0
- package/dist/node-host/assets/ocaml-vm1Y8An6.js +3 -0
- package/dist/node-host/assets/odin-vjOJSyfV.js +3 -0
- package/dist/node-host/assets/one-dark-pro-zDovGosB.js +4 -0
- package/dist/node-host/assets/one-light-gmHK3iK6.js +4 -0
- package/dist/node-host/assets/openscad-jn-f1Ocl.js +3 -0
- package/dist/node-host/assets/org-kbyZnkNe.js +101 -0
- package/dist/node-host/assets/pages-0aWH7z1j.js +578 -0
- package/dist/node-host/assets/pascal-D8-gNZ2I.js +3 -0
- package/dist/node-host/assets/perl-Ck21ZEIA.js +17 -0
- package/dist/node-host/assets/php-BI2xxNig.js +19 -0
- package/dist/node-host/assets/pierre-dark-DDWDl8g6.js +4 -0
- package/dist/node-host/assets/pierre-dark-protanopia-deuteranopia-C35UMuvO.js +4 -0
- package/dist/node-host/assets/pierre-dark-soft-Bb-4-biO.js +4 -0
- package/dist/node-host/assets/pierre-dark-tritanopia-CIJISGWF.js +4 -0
- package/dist/node-host/assets/pierre-dark-vibrant-8oZzB3gw.js +4 -0
- package/dist/node-host/assets/pierre-light-CWhW4NrH.js +4 -0
- package/dist/node-host/assets/pierre-light-protanopia-deuteranopia-u0U7N4Hn.js +4 -0
- package/dist/node-host/assets/pierre-light-soft-BCU6fuhO.js +4 -0
- package/dist/node-host/assets/pierre-light-tritanopia-3c8Yx3co.js +4 -0
- package/dist/node-host/assets/pierre-light-vibrant-Cwh332o_.js +4 -0
- package/dist/node-host/assets/pkl-C7lWzykI.js +3 -0
- package/dist/node-host/assets/plastic-DtdaCjub.js +4 -0
- package/dist/node-host/assets/plsql-DCNXypXO.js +3 -0
- package/dist/node-host/assets/po-IjpR1yHO.js +3 -0
- package/dist/node-host/assets/poimandres-Hdda6aHK.js +4 -0
- package/dist/node-host/assets/polar-4pN1JrJ8.js +3 -0
- package/dist/node-host/assets/postcss-0FnF2XR3.js +5833 -0
- package/dist/node-host/assets/postcss-D1gKt4z_.js +3 -0
- package/dist/node-host/assets/postcss-import-D5DErX4i.js +445 -0
- package/dist/node-host/assets/powerquery-SrvS_NBM.js +3 -0
- package/dist/node-host/assets/powershell-DvPkO2jl.js +3 -0
- package/dist/node-host/assets/prisma-4G_BaF_i.js +3 -0
- package/dist/node-host/assets/project-branches-1zs_0J_y.js +600 -0
- package/dist/node-host/assets/project-thread-links-LpUAGcDr.js +241 -0
- package/dist/node-host/assets/prolog-Bacii3Ue.js +3 -0
- package/dist/node-host/assets/prompt-CH6TK0bC-ZEO69UbU.js +885 -0
- package/dist/node-host/assets/proto-ClkOcAW0.js +3 -0
- package/dist/node-host/assets/pug-Du-dOfS3.js +13 -0
- package/dist/node-host/assets/puppet-CQlPp728.js +3 -0
- package/dist/node-host/assets/purescript-CLpaGMbw.js +3 -0
- package/dist/node-host/assets/python-BjnOIxPe.js +3 -0
- package/dist/node-host/assets/qml-BcFatdsQ.js +6 -0
- package/dist/node-host/assets/qmldir-Dz8ttxjf.js +3 -0
- package/dist/node-host/assets/qss-Iltvkn1C.js +3 -0
- package/dist/node-host/assets/r-DvDYa_8Q.js +6 -0
- package/dist/node-host/assets/racket-DRv7j6nv.js +3 -0
- package/dist/node-host/assets/raku-DI9yGpeW.js +3 -0
- package/dist/node-host/assets/razor-vGjCiVYw.js +11 -0
- package/dist/node-host/assets/rbs-D_4FkXDS.js +3 -0
- package/dist/node-host/assets/red-VqZFRByZ.js +4 -0
- package/dist/node-host/assets/reg-DpJf71oO.js +3 -0
- package/dist/node-host/assets/regexp-CE_3vZDh.js +6 -0
- package/dist/node-host/assets/rel-BT0iIKKw.js +3 -0
- package/dist/node-host/assets/riscv-CvzikGLb.js +3 -0
- package/dist/node-host/assets/rolldown-runtime-DktXgydw.js +35 -0
- package/dist/node-host/assets/ron-DzAo6FTJ.js +3 -0
- package/dist/node-host/assets/rose-pine-DiTkEueR.js +4 -0
- package/dist/node-host/assets/rose-pine-dawn-tfo5y2X0.js +4 -0
- package/dist/node-host/assets/rose-pine-moon-C0gON9XN.js +4 -0
- package/dist/node-host/assets/rosmsg-CyYq6XdT.js +3 -0
- package/dist/node-host/assets/rst-BqrTc4by.js +23 -0
- package/dist/node-host/assets/ruby-DLXfYriJ.js +31 -0
- package/dist/node-host/assets/rust-CaJo2YYS.js +3 -0
- package/dist/node-host/assets/sas-DJAJgMrq.js +6 -0
- package/dist/node-host/assets/sass-DI2zJwx7.js +3 -0
- package/dist/node-host/assets/scala-pMGZAs9j.js +3 -0
- package/dist/node-host/assets/scheme-D3A2QBtM.js +3 -0
- package/dist/node-host/assets/screen-DQoTOWYR.js +494 -0
- package/dist/node-host/assets/scss-n4nz8dJI.js +8 -0
- package/dist/node-host/assets/sdbl-CdQg5gu1.js +3 -0
- package/dist/node-host/assets/shaderlab-5KHT7nQ3.js +6 -0
- package/dist/node-host/assets/shellscript-BfuVOb-a.js +6 -0
- package/dist/node-host/assets/shellsession-hT9eQUDu.js +6 -0
- package/dist/node-host/assets/slack-dark-v8P_eXr6.js +4 -0
- package/dist/node-host/assets/slack-ochin-D8SyEdKz.js +4 -0
- package/dist/node-host/assets/smalltalk-D4IpSogw.js +3 -0
- package/dist/node-host/assets/smithy-BRyN83Yn.js +3 -0
- package/dist/node-host/assets/snazzy-light-BtkQkvXb.js +4 -0
- package/dist/node-host/assets/solarized-dark-B8nAdMfM.js +4 -0
- package/dist/node-host/assets/solarized-light-B-3F1INj.js +4 -0
- package/dist/node-host/assets/solidity-DPVu0wkJ.js +3 -0
- package/dist/node-host/assets/soy-Cbnz3v4z.js +6 -0
- package/dist/node-host/assets/sparql-cTZV4yOr.js +6 -0
- package/dist/node-host/assets/splunk-xP_ZjUH2.js +3 -0
- package/dist/node-host/assets/sql-DEvbt_rU.js +6 -0
- package/dist/node-host/assets/ssh-config-DXFPABYp.js +3 -0
- package/dist/node-host/assets/stata-0wnAnxv2.js +6 -0
- package/dist/node-host/assets/stylus-ZZDn1yUO.js +3 -0
- package/dist/node-host/assets/surrealql-70--UPGf.js +6 -0
- package/dist/node-host/assets/svelte-COI8WXVC.js +15 -0
- package/dist/node-host/assets/swift-DWmMn3lF.js +3 -0
- package/dist/node-host/assets/synthwave-84-DcsXCF_c.js +4 -0
- package/dist/node-host/assets/system-verilog-DW0KSMVO.js +3 -0
- package/dist/node-host/assets/systemd-DFbUltlW.js +3 -0
- package/dist/node-host/assets/talonscript-CLxaFu-b.js +3 -0
- package/dist/node-host/assets/tasks-C0WqnM7Q.js +644 -0
- package/dist/node-host/assets/tasks-request-Bwky5ORf.js +114 -0
- package/dist/node-host/assets/tasl-_AAbKiWM.js +3 -0
- package/dist/node-host/assets/tcl-DLe0Tsfm.js +3 -0
- package/dist/node-host/assets/templ-Bd0jzThC.js +13 -0
- package/dist/node-host/assets/terraform-v0KN9QQh.js +3 -0
- package/dist/node-host/assets/tex-C1Wtngrr.js +8 -0
- package/dist/node-host/assets/tokyo-night-Bvpqduda.js +4 -0
- package/dist/node-host/assets/toml-B7BHZIqX.js +3 -0
- package/dist/node-host/assets/ts-tags-BSGaPI18.js +59 -0
- package/dist/node-host/assets/tsv-BorGVq2Z.js +3 -0
- package/dist/node-host/assets/tsx-BxnCmyTp.js +6 -0
- package/dist/node-host/assets/turtle-BEG5g_eT.js +3 -0
- package/dist/node-host/assets/twig-BJG2k0MA.js +19 -0
- package/dist/node-host/assets/typescript-Cr5OHcug.js +6 -0
- package/dist/node-host/assets/typespec--jp0a8Qj.js +3 -0
- package/dist/node-host/assets/typst-BAvHLpwp.js +121 -0
- package/dist/node-host/assets/v-DBTjbKF9.js +3 -0
- package/dist/node-host/assets/vala-BnnASFsX.js +3 -0
- package/dist/node-host/assets/vb-eGVhCUXq.js +3 -0
- package/dist/node-host/assets/verilog-Ma7yBE30.js +3 -0
- package/dist/node-host/assets/vesper-CfxmMOy3.js +4 -0
- package/dist/node-host/assets/vhdl-Co2XFKY7.js +3 -0
- package/dist/node-host/assets/viml-BReTXeDA.js +3 -0
- package/dist/node-host/assets/vitesse-black-D9-_1mjV.js +4 -0
- package/dist/node-host/assets/vitesse-dark-DlSMLlr9.js +4 -0
- package/dist/node-host/assets/vitesse-light-KRWWWztf.js +4 -0
- package/dist/node-host/assets/vue-C3fWU2fi.js +31 -0
- package/dist/node-host/assets/vue-html-DxOM9wex.js +6 -0
- package/dist/node-host/assets/vue-vine-OKzSGBlX.js +19 -0
- package/dist/node-host/assets/vyper-C6KGx0YU.js +3 -0
- package/dist/node-host/assets/wasm-CvHAs-FG.js +7 -0
- package/dist/node-host/assets/wasm-gNIKwGlD.js +3 -0
- package/dist/node-host/assets/wenyan-BeysbCrW.js +3 -0
- package/dist/node-host/assets/wgsl-1s5rV5xS.js +3 -0
- package/dist/node-host/assets/wikitext-wjhjmmzD.js +3 -0
- package/dist/node-host/assets/wit-CeQiCbz_.js +3 -0
- package/dist/node-host/assets/wolfram-CcZPfnLd.js +3 -0
- package/dist/node-host/assets/worker-factory-C80HGMWf.js +14 -0
- package/dist/node-host/assets/xml-BsBjJrlv.js +8 -0
- package/dist/node-host/assets/xsl-BYwWzvT_.js +6 -0
- package/dist/node-host/assets/yaml-BRgACZP0.js +6 -0
- package/dist/node-host/assets/zenscript-BoijL7rl.js +3 -0
- package/dist/node-host/assets/zig-lTQvxhLD.js +3 -0
- package/dist/node-host/node-host.js +41511 -0
- package/dist/server/assets/{branch-previews-C_TVt_HQ.js → branch-previews-BryeA_kA.js} +112 -3
- package/dist/server/assets/{listener-BVbFsnmX.js → listener-oKd5ETMj.js} +3 -3
- package/dist/server/assets/{server-DUBjmaBw.js → server-DN5uwE4k.js} +1 -1
- package/dist/server/assets/{services-Og5rcF50.js → services-Ber8opFE.js} +2 -2
- package/dist/server/capture.js +1 -1
- package/dist/server/migration.js +3 -3
- package/dist/server/runtime.js +4 -4
- package/dist/server/server.js +3 -3
- package/dist/types/assets/{config-BzzRLcL-.d.ts → config-Cuauq8xY.d.ts} +24 -1
- package/dist/types/assets/contract-BsCQbbxD.d.ts +111 -0
- package/dist/types/companion.d.ts +1 -1
- package/dist/types/hosted.d.ts +3 -99
- package/dist/types/index.d.ts +1 -1
- package/dist/types/node-host.d.ts +46 -0
- package/dist/types/screen.d.ts +1 -1
- package/package.json +6 -2
- package/dist/client/assets/workspace-9KxFcfyV.js +0 -2
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/workspace-
|
|
2
|
-
import{t as e}from"./run-B2H4brp5.js";import{t}from"./preload-helper-BLdHbfdN.js";(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),t.credentials=e.crossOrigin===`use-credentials`?`include`:e.crossOrigin===`anonymous`?`omit`:`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();function n(e=document,t){let n=!1,r=e.defaultView?.HTMLElement??HTMLElement,i={capture:!0,signal:t};e.addEventListener(`keydown`,e=>{!e.metaKey&&!e.ctrlKey&&!e.altKey&&(n=!0)},i),e.addEventListener(`pointerdown`,()=>{n=!1,e.activeElement?.removeAttribute(`data-focus-method`)},i),e.addEventListener(`focusin`,e=>{n&&e.target instanceof r&&(e.target.dataset.focusMethod=`keyboard`)},i),e.addEventListener(`focusout`,e=>{e.target instanceof r&&delete e.target.dataset.focusMethod},i)}n();var r=e({async loadModule(e,n){if(e===`bud:workspace`&&n===`Workspace`){let{Workspace:e}=await t(async()=>{let{Workspace:e}=await import(`./workspace-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/workspace-CznMN7F6.js","assets/jsx-B4XNFIzB.js","assets/on-mixin-iWnqUzq5.js","assets/component-DWct-Tq6.js","assets/children-N0l0v7XI.js","assets/run-B2H4brp5.js","assets/frame-D6XmK4Df.js","assets/attrs-mixin-CmlG_FtV.js","assets/create-element--E6NJ0nh.js","assets/preload-helper-BLdHbfdN.js","assets/loader-Q6-HPKft.js","assets/task-design-bktfn_Ok.js","assets/lru-BkhKJhvt.js","assets/method-DybmO5PB.js","assets/project-threads-DezXiVK6.js","assets/cloneFileDiffMetadata-CWfw01dG.js","assets/project-work-CB1JHqGW.js","assets/tasks-request-mWMk9pBo.js","assets/workspace-tab-Bg2MFdMB.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{t as e}from"./run-B2H4brp5.js";import{t}from"./preload-helper-BLdHbfdN.js";(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),t.credentials=e.crossOrigin===`use-credentials`?`include`:e.crossOrigin===`anonymous`?`omit`:`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();function n(e=document,t){let n=!1,r=e.defaultView?.HTMLElement??HTMLElement,i={capture:!0,signal:t};e.addEventListener(`keydown`,e=>{!e.metaKey&&!e.ctrlKey&&!e.altKey&&(n=!0)},i),e.addEventListener(`pointerdown`,()=>{n=!1,e.activeElement?.removeAttribute(`data-focus-method`)},i),e.addEventListener(`focusin`,e=>{n&&e.target instanceof r&&(e.target.dataset.focusMethod=`keyboard`)},i),e.addEventListener(`focusout`,e=>{e.target instanceof r&&delete e.target.dataset.focusMethod},i)}n();var r=e({async loadModule(e,n){if(e===`bud:workspace`&&n===`Workspace`){let{Workspace:e}=await t(async()=>{let{Workspace:e}=await import(`./workspace-CznMN7F6.js`);return{Workspace:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18]));return e}throw Error(`Unknown client entry: ${e}#${n}`)}});r.addEventListener(`error`,e=>{console.error(`Remix component error:`,e.error)}),await r.ready();
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/pages-BVrTX_Eq.js","assets/jsx-B4XNFIzB.js","assets/component-DWct-Tq6.js","assets/on-mixin-iWnqUzq5.js","assets/children-N0l0v7XI.js","assets/attrs-mixin-CmlG_FtV.js","assets/create-element--E6NJ0nh.js","assets/loader-Q6-HPKft.js","assets/screen-Dfvzj6n2.js","assets/task-design-bktfn_Ok.js","assets/lru-BkhKJhvt.js","assets/method-DybmO5PB.js","assets/project-threads-DezXiVK6.js","assets/frame-D6XmK4Df.js","assets/preload-helper-BLdHbfdN.js","assets/cloneFileDiffMetadata-CWfw01dG.js","assets/project-comments-D897aU5O.js","assets/workspace-tab-Bg2MFdMB.js","assets/project-branches-DpxQx-T4.js","assets/canvas-DxaIItAs.js","assets/project-thread-links-Bp_TseD0.js","assets/tasks-request-mWMk9pBo.js","assets/tasks-Cqfj4fQN.js","assets/project-work-CB1JHqGW.js","assets/files-C-7xoSt4.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{t as e}from"./jsx-B4XNFIzB.js";import{n as t}from"./on-mixin-iWnqUzq5.js";import{n}from"./run-B2H4brp5.js";import{n as r}from"./attrs-mixin-CmlG_FtV.js";import{t as i}from"./preload-helper-BLdHbfdN.js";import{c as a,i as o,l as s,o as c,r as l,t as ee}from"./loader-Q6-HPKft.js";import{Et as u,Fn as d,Gn as f,Hn as p,In as m,Kn as h,Ln as g,Mn as _,Nn as v,Ot as y,Pn as b,Q as x,Un as S,Vn as C,jn as w,yt as T}from"./task-design-bktfn_Ok.js";import{$ as te,At as ne,Dt as re,J as E,Ot as D,Q as O,X as ie,Y as ae,Z as oe,b as k,dt as A,et as j,jt as se,kt as ce,nt as le,ot as M,rt as ue,t as N,tt as de,v as P,y as fe}from"./project-threads-DezXiVK6.js";import{d as pe}from"./method-DybmO5PB.js";import{t as me}from"./project-work-CB1JHqGW.js";import{n as he}from"./workspace-tab-Bg2MFdMB.js";function ge(t){let n=`connecting`,i=r((e,r)=>{let{project:i}=t.props;me(i),N(i);let a=fe(i.token);n=a.status;let o=a.watchStatus(e=>{n=e,t.update()});r.addEventListener(`abort`,o,{once:!0}),t.update()});return()=>e(`span`,{class:`contents`,mix:i,children:e(D,{status:n})})}var _e=new WeakMap;function F(e,t){let n=f(e,t,{abortEarly:!0});if(n.success)return n.value;let r=n.issues[0];throw _e.get(r)??Error(r.message)}function I(e,t){return b((n,r)=>{let i=e[`~run`](n,r);return i.issues?g(t,r.path):i})}function L(e,t){return b((n,r)=>{let i=e[`~run`](n,r);if(i.issues)return i;let a=t(i.value);return a===void 0?i:g(a,r.path)})}function R(e,t){return b((n,r)=>{let i=e[`~run`](n,r);if(i.issues)return i;try{return{value:t(i.value)}}catch(e){if(!(e instanceof Error))throw e;let t=g(e.message,r.path);return _e.set(t.issues[0],e),t}})}function ve(e){return b((t,n)=>e(t)[`~run`](t,n))}function z(e,t){return b((n,r)=>n==null?{value:t()}:e[`~run`](n,r))}function B(e,t){let n=p(t);return b((r,i)=>{if(!r||typeof r!=`object`||Array.isArray(r))return g(`${e} must be an object.`,i.path);for(let n of Object.keys(r))if(!Object.hasOwn(t,n))return g(`${e}.${n} is not a supported setting.`,[...i.path,n]);return n[`~run`](r,i)})}function ye(e,t,n=0){let r=_(e);return b((e,i)=>!Array.isArray(e)||e.length<n?g(t,i.path):r[`~run`](e,i))}var be=d(B(`files`,{edit:z(I(v(),`files.edit must be true or false.`),()=>!0)}),()=>({edit:!0})),V=`flows must be [{ id, title, start, script, steps: [{ id, title }], block? }] with short ids, local paths and unique steps.`,xe=e=>typeof e==`string`&&/^[a-z0-9][a-z0-9-]{0,62}$/.test(e),H=e=>typeof e==`string`&&e.trim()!==``&&e.length<=200;function Se(e){if(!e||typeof e!=`object`||Array.isArray(e))return null;let{id:t,title:n,start:r,script:i,steps:a,block:o=[]}=e;if(!xe(t)||!H(n)||!H(i)||i.includes(`\0`)||typeof r!=`string`||!r.startsWith(`/`)||r.startsWith(`//`)||new URL(r,`http://bud.invalid`).origin!==`http://bud.invalid`||!Array.isArray(a)||!a.length||a.length>50)return null;let s=a.map(e=>{let{id:t,title:n}=e??{};return xe(t)&&H(n)?{id:t,title:n.trim()}:null});if(s.some(e=>!e))return null;let c=s.map(e=>e.id);return new Set(c).size!==c.length||!Array.isArray(o)||o.some(e=>!H(e))?null:{id:t,title:n.trim(),start:r,script:i.trim(),steps:s,block:o}}var Ce=b((e,t)=>{if(e===void 0)return{value:[]};if(!Array.isArray(e))return g(V,t.path);let n=e.map(Se);if(n.some(e=>!e))return g(V,t.path);let r=n.map(e=>e.id);return new Set(r).size===r.length?{value:n}:g(V,t.path)});function we(e,t){return{id:`${e.id}/${t.id}`,path:`${e.start.replace(/#.*$/,``)}#${e.id}-${t.id}`,title:t.title,group:e.title,flow:{id:e.id,step:t.id}}}var Te=Object.freeze({".svg":`image/svg+xml`,".png":`image/png`,".webp":`image/webp`,".jpg":`image/jpeg`,".jpeg":`image/jpeg`,".gif":`image/gif`,".ico":`image/x-icon`}),Ee=`logo must be an image path inside the project (.svg, .png, .webp, .jpg, .gif or .ico), or { light, dark }.`;function De(e){if(typeof e!=`string`||e.length>1024||e.includes(`\0`))return null;let t=e.trim().replaceAll(`\\`,`/`);if(!t||t.startsWith(`/`)||/^[a-z]:/i.test(t)||t.split(`/`).includes(`..`))return null;let n=t.slice(t.lastIndexOf(`.`)).toLowerCase();return Object.hasOwn(Te,n)?t:null}var Oe=b((e,t)=>{if(e===void 0)return{value:null};let n=De(typeof e==`object`&&e?e.light:e),r=typeof e==`object`&&e?e.dark:void 0,i=r===void 0?null:De(r),a=typeof e==`object`&&e?Object.keys(e):[];return n&&(r===void 0||i)&&a.every(e=>e===`light`||e===`dark`)?{value:{light:n,dark:i}}:g(Ee,t.path)}),ke=Object.freeze(`background.shell.main.canvas.panel.board.editor.editor-tabs.foreground.muted.primary.primary-hover.primary-foreground.border.tab-divider.hover.selected.control.control-active.control-selected.card.menu.menu-hover.card-frame.card-surface.card-border.card-frame-border.card-badge.overlay-shadow.tooltip.board-control.board-control-hover.board-card.control-elevation.board-elevation.board-card-elevation.card-elevation.board-card-lift.frame-control.modal-elevation.segment-elevation.control-open-elevation.board-segment.scrollbar.focus.scrollbar-hover.tooltip-border.tooltip-shadow`.split(`.`)),U=`theme must be { light, dark }, each mapping Bud's tokens (${ke.slice(0,3).join(`, `)}, …) to CSS colors or shadows.`;function Ae(e){if(typeof e!=`string`)return null;let t=e.trim();return!t||t.length>300||!/^[#a-zA-Z0-9(),.%\s/+-]+$/.test(t)||/url\s*\(/i.test(t)?null:t}function W(e){if(e===void 0)return{};if(!e||typeof e!=`object`||Array.isArray(e))return null;let t={};for(let[n,r]of Object.entries(e)){let e=Ae(r);if(!ke.includes(n)||e===null)return null;t[n]=e}return Object.freeze(t)}var je=b((e,t)=>{if(e===void 0)return{value:{light:{},dark:{}}};if(!e||typeof e!=`object`||Array.isArray(e))return g(U,t.path);let{light:n,dark:r,...i}=e,a={light:W(n),dark:W(r)};return Object.keys(i).length||!a.light||!a.dark?g(U,t.path):{value:{light:a.light,dark:a.dark}}}),G=`branches must be { main?, build?: { install?, build?, serve? } } with a branch name and nonempty shell commands.`;function Me(e){return typeof e==`string`&&e.length<=255&&/^[A-Za-z0-9._/-]+$/.test(e)&&!e.startsWith(`-`)&&!e.startsWith(`/`)&&!e.endsWith(`/`)&&!e.endsWith(`.lock`)&&!e.includes(`..`)&&!e.includes(`//`)?e:null}function K(e){return typeof e==`string`&&e.trim()&&e.length<=4096&&!e.includes(`\0`)?e.trim():null}var Ne=b((e,t)=>{let n={main:null,install:null,build:null,serve:null};if(e===void 0)return{value:n};if(!e||typeof e!=`object`||Array.isArray(e))return g(G,t.path);let r=e,i=r.build??{};if(!i||typeof i!=`object`||Array.isArray(i)||Object.keys(r).some(e=>e!==`main`&&e!==`build`))return g(G,t.path);let a=i;if(Object.keys(a).some(e=>![`install`,`build`,`serve`].includes(e)))return g(G,t.path);let o={main:r.main===void 0?null:Me(r.main),install:a.install===void 0?null:K(a.install),build:a.build===void 0?null:K(a.build),serve:a.serve===void 0?null:K(a.serve)};return r.main!==void 0&&!o.main||[`install`,`build`,`serve`].some(e=>a[e]!==void 0&&!o[e])?g(G,t.path):{value:o}});function q(e,t,n){let r=t?/\.server\.ts$/:/\.(?:ts|tsx|js|jsx)$/;return I(h().refine(e=>e.length<=1024&&e.startsWith(`./`)&&!/[\u0000-\u001f\u007f\\?#%]/.test(e)&&r.test(e)&&(t||!/\.server\.[cm]?[jt]sx?$/.test(e))&&!e.slice(2).split(`/`).some(e=>!e||e===`.`||e===`..`||e===`node_modules`)),n??(t?`${e} must be a built-in adapter or a ./ module ending in .server.ts inside the project.`:`${e} must be bud:beads or a ./ browser module ending in .ts, .tsx, .js or .jsx inside the project.`))}var Pe=m([!1,`bud:beads`,`bud:memory`,`bud:git-comments`]);function Fe(e){let t=q(`storage.${e}`,!0);return d(L(ve(e=>e===!1||e===`bud:beads`||e===`bud:memory`||e===`bud:git-comments`?Pe:t),t=>e===`work`&&t===`bud:git-comments`?`storage.work cannot use bud:git-comments; it only stores threads.`:void 0),`bud:beads`)}var Ie=d(B(`storage`,{work:Fe(`work`),threads:Fe(`threads`)}),()=>({work:`bud:beads`,threads:`bud:beads`})),Le=d(B(`designs`,{tasks:d(ve(e=>e===`bud:beads`?m([`bud:beads`]):q(`designs.tasks`,!1)),`bud:beads`),pages:d(m([`path`,`title`]),`path`)}),()=>({tasks:`bud:beads`,pages:`path`})),Re=new Set([`bud:dom`,`bud:react`,`bud:react-grab`]),ze=q(`picker`,!1,`picker must be bud:dom, bud:react, bud:react-grab or a ./ browser module ending in .ts, .tsx, .js or .jsx inside the project.`),Be=b((e,t)=>{if(e===void 0)return{value:{name:`bud:dom`,module:null}};if(typeof e==`string`&&Re.has(e))return{value:{name:e,module:null}};let n=ze[`~run`](e,t);return n.issues?n:{value:{name:n.value,module:n.value}}}),Ve=`ready must be a CSS selector, { selector } or { expression }.`,J=b((e,t)=>{let n=typeof e==`string`?{selector:e}:e;if(n&&typeof n==`object`&&!Array.isArray(n)){let e=Object.entries(n),[t,r]=e[0]??[];if(e.length===1&&(t===`selector`||t===`expression`)&&typeof r==`string`&&r.trim()&&r.length<=4096)return{value:t===`selector`?{selector:r.trim()}:{expression:r.trim()}}}return g(Ve,t.path)}),He=()=>[`light`,`dark`],Ue=()=>[{id:`desktop`,name:`Desktop`,width:1440,height:900,mobile:!1}],Y=`previews.viewports must list up to 4 { name, width, height?, mobile? } with distinct names, widths from 240 to 3840 and heights from 240 to 4000.`;function We(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,`-`).replace(/^-+|-+$/g,``).slice(0,32)}var Ge=b((e,t)=>{if(!Array.isArray(e)||e.length===0||e.length>4)return g(Y,t.path);let n=[];for(let r of e){if(!r||typeof r!=`object`||Array.isArray(r))return g(Y,t.path);let{name:e,width:i,height:a,mobile:o,...s}=r,c=(e,t,n)=>typeof e==`number`&&Number.isInteger(e)&&e>=t&&e<=n;if(Object.keys(s).length||typeof e!=`string`||!e.trim()||e.length>40||!We(e)||!c(i,240,3840)||a!==void 0&&!c(a,240,4e3)||o!==void 0&&typeof o!=`boolean`)return g(Y,t.path);let l=o??i<800;n.push({id:We(e),name:e.trim(),width:i,height:a??(l?Math.round(i*844/390):900),mobile:l})}return new Set(n.map(e=>e.id)).size===n.length?{value:n}:g(Y,t.path)}),Ke=d(B(`previews`,{scale:z(I(C().refine(e=>Number.isInteger(e)&&e>=1&&e<=3),`previews.scale must be 1, 2 or 3.`),()=>2),themes:z(I(_(m([`light`,`dark`])).refine(e=>e.length>0&&new Set(e).size===e.length),`previews.themes must list light, dark or both, once each.`),He),viewports:z(Ge,Ue),ready:z(J,()=>null),readyTimeout:z(I(C().refine(e=>Number.isInteger(e)&&e>=1e3&&e<=6e5),`previews.readyTimeout must be whole milliseconds from 1000 to 600000.`),()=>6e4),css:z(I(h().refine(e=>e.length<=2e4&&!e.includes(`<`)),`previews.css must be CSS text without <, up to 20000 characters.`),()=>``)}),()=>({scale:2,themes:He(),viewports:Ue(),ready:null,readyTimeout:6e4,css:``}));function qe(e,t){let n=[],r=new Set;function i(e,a){if(!e||typeof e!=`object`||Array.isArray(e)||r.has(e))throw Error(`Screen routes must be a Remix route map.`);r.add(e);for(let[r,o]of Object.entries(e)){let e=a?`${a}.${r}`:r;if(!o||typeof o!=`object`)throw Error(`Screen route ${e} must be a Remix route.`);if(!(`pattern`in o)){i(o,e);continue}if(![`GET`,`ANY`].includes(o.method)||typeof o.href!=`function`||typeof o.pattern?.source!=`string`)throw Error(`Screen route ${e} must be a GET route.`);let s=pe.parse(o.pattern.source),c=s.toJSON(),l=`/${c.pathname}`;if(c.protocol||c.hostname||c.port||c.pathname.split(`/`).some(e=>/^\.{1,2}$/.test(decodeURIComponent(e)))||l!==t&&!l.startsWith(`${t}/`)&&!l.startsWith(`${t}(/`))throw Error(`Screen route ${e} must stay under ${t}.`);n.push({name:e,pattern:s.source})}r.delete(e)}if(i(e,``),!n.length)throw Error(`Screen routes must contain at least one route.`);return n}function Je(){return{id:`pages`,label:`Pages`,icon:`browser`,path:`/pages`,module:`bud:pages`}}function Ye(){return{id:`canvas`,label:`Canvas`,icon:`grid`,path:`/canvas`,module:`bud:canvas`}}function Xe(){return{id:`tasks`,label:`Tasks`,icon:`tasks`,path:`/tasks`,module:`bud:tasks`}}function Ze(){return{id:`files`,label:`Files`,icon:`files`,path:`/files`,module:`bud:files`}}var X=[Je(),Ye(),Xe(),Ze()],Z=new Map(X.map(e=>[e.module,e])),Qe=[`/comments`,...X.map(e=>e.path),`/api`,`/health`,`/__bud`,`/assets`,`/app`,`/src`,`/node_modules`,`/agents`,`/brand`,`/fonts`,`/frameworks`,`/licenses`],$e=L(I(w().refine(e=>!!e&&typeof e==`object`),`Each screen must be an object.`),({id:e,label:t,icon:n=`layers`,module:r,path:i})=>{if(typeof e!=`string`||!/^[a-z][a-z0-9-]{0,31}$/.test(e))return`Screen ids are 1-32 lowercase letters, digits and hyphens.`;if(typeof t!=`string`||!t.trim())return`Screen ${e} needs a label.`;if(typeof n!=`string`||!n)return`Screen ${e} needs an icon name.`;if(typeof r!=`string`)return`Screen ${e} needs a module.`;let a=Z.get(r);if(i??=a?.path??`/${e}`,a)return e!==a.id||i!==a.path?`${r} keeps id "${a.id}" and path "${a.path}".`:void 0;if(!/^\.\/[^\0\\]+\.(?:ts|tsx|js|jsx)$/.test(r))return`Screen ${e} must be a ./ module ending in .ts, .tsx, .js or .jsx.`;if(typeof i!=`string`||!/^\/[a-z0-9][a-z0-9-]*$/.test(i))return`Screen ${e} needs one static path segment, such as /${e}.`;if(X.some(t=>t.id===e))return`Screen id "${e}" is reserved for a built-in screen.`;if(Qe.includes(i))return`Bud reserves the path ${i}.`}),et=d(R(I(_(w()).refine(e=>e.length>0),`screens must list at least one screen.`),e=>{let t=new Set,n=new Set;return e.map(e=>{let r=F($e,e),{id:i,label:a,icon:o=`layers`,module:s}=r,c=r.path??Z.get(s)?.path??`/${i}`;if(t.has(i)||n.has(c))throw Error(`Screen ids and paths must be unique.`);return t.add(i),n.add(c),r.routes!==void 0&&qe(r.routes,c),{id:i,label:a,icon:o,path:c,module:s,...r.routes===void 0?{}:{routes:r.routes}}})}),()=>X.map(e=>({...e}))),tt=e=>!!e&&typeof e==`object`;function Q(e,t){let n=p(t);return b((t,r)=>tt(t)?n[`~run`](Array.isArray(t)?{...t}:t,r):g(e,r.path))}var nt=L(Q(`Bud config must export an object.`,{routes:I(_(w()).refine(e=>e.length>0),`bud.config must define at least one route.`),name:S(I(h().refine(e=>!!e.trim()),`name must be a nonempty string.`)),target:S(Q(`target must be an object.`,{origin:w(),port:w()})),comments:S(Q(`comments must be an object.`,{remote:w()})),port:w(),screens:w(),storage:w(),designs:w(),previews:w(),files:w(),logo:w(),theme:w(),picker:w(),branches:w(),flows:w()}),({target:e})=>{if(e?.port===0)return`target.port must be a listening port, not zero.`;if(e?.origin!==void 0&&(typeof e.origin!=`string`||!e.origin.trim()))return`target.origin must be an HTTP(S) origin.`}),rt=L(w().transform(e=>typeof e==`string`?{path:e,title:e===`/`?`Home`:e}:e),e=>{if(!e||typeof e.path!=`string`||!e.path.startsWith(`/`)||e.path.startsWith(`//`))return`Canvas routes must be local paths beginning with a single /.`;if(new URL(e.path,`http://bud.invalid`).origin!==`http://bud.invalid`||e.path.includes(`\\`))return`Canvas routes must stay on the target origin.`;let t=e.id??it(e.path);if(typeof t!=`string`||!t.trim())return`Canvas route IDs and paths must be unique.`;if(typeof e.title!=`string`||!e.title.trim())return`Each route needs a title.`;if(e.pattern!==void 0&&(typeof e.pattern!=`string`||!e.pattern.startsWith(`/`)))return`A route pattern must be a path beginning with /.`;if(e.group!==void 0&&(typeof e.group!=`string`||!e.group.trim()||e.group.length>120))return`A route group must be a short name.`;if(e.ready!==void 0&&e.ready!==!1&&!f(J,e.ready).success)return`A route ready must be false, a CSS selector, { selector } or { expression }.`}).transform(e=>{let t=it(e.path);return{id:e.id??t,path:t,title:e.title,...e.pattern===void 0?{}:{pattern:e.pattern},...e.group===void 0?{}:{group:e.group.trim()},...e.ready===void 0?{}:{ready:e.ready===!1?null:F(J,e.ready)}}});function it(e){let t=new URL(e,`http://bud.invalid`),n=t.searchParams.toString();return`${t.pathname}${n?`?${n}`:``}${t.hash}`}var at=L(ye(rt,`bud.config must define at least one route.`,1),e=>new Set(e.map(e=>e.id)).size!==e.length||new Set(e.map(e=>e.path)).size!==e.length?`Canvas route IDs and paths must be unique.`:void 0),ot=e=>e===void 0||Number.isInteger(e)&&e>=0&&e<=65535,st=e=>typeof e==`string`&&/^[a-zA-Z0-9][a-zA-Z0-9._-]*$/.test(e);R(L(R(L(R(L(R(nt,e=>({...e,routes:F(at,e.routes)})),({port:e,target:t})=>ot(e??0)&&ot(t?.port)?void 0:`Ports must be integers between 0 and 65535.`),({target:e,...t})=>{let n=e?.origin??(e?.port?`http://127.0.0.1:${e.port}`:void 0);return{...t,targetOrigin:n&&ct(n,`target.origin must be an HTTP(S) origin without a path or credentials.`)}}),({comments:e})=>st(e?.remote??`origin`)?void 0:`comments.remote must be a Git remote name.`),e=>{let t=F(Ce,e.flows),n=t.flatMap(e=>e.steps.map(t=>we(e,t))),r=e.routes.findIndex(e=>e.path===`/`)+1;return{...e,flows:t,routes:[...e.routes.slice(0,r),...n,...e.routes.slice(r)]}}),({routes:e})=>new Set(e.map(e=>e.id)).size!==e.length||new Set(e.map(e=>e.path)).size!==e.length?`A flow step must not reuse a route’s id or path.`:void 0),e=>({name:e.name??`Your project`,routes:e.routes,flows:e.flows,port:e.port??0,targetOrigin:e.targetOrigin,remote:e.comments?.remote??`origin`,screens:F(et,e.screens),storage:F(Ie,e.storage),designs:F(Le,e.designs),previews:F(Ke,e.previews),files:F(be,e.files),logo:F(Oe,e.logo),theme:F(je,e.theme),picker:F(Be,e.picker),branches:F(Ne,e.branches)}));function ct(e,t){let n=new URL(e);if(![`http:`,`https:`].includes(n.protocol)||n.username||n.password||n.pathname!==`/`||n.search||n.hash)throw Error(t);return n.origin}function $(e,t){let n=T();for(let t of e)n.add(t.pattern,t.name);let r=n.match(t,{baseURL:`http://bud.invalid`});return r?{route:r.data,params:r.params}:null}function lt(e,t){let n=e?$(qe(e,t.path),t.url):{route:null,params:{}};if(!n)throw Error(`No screen route matches ${t.url.pathname}.`);return{...t,...n}}var ut={"bud:pages":()=>i(()=>import(`./pages-BVrTX_Eq.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18])),"bud:canvas":()=>i(()=>import(`./canvas-DxaIItAs.js`),__vite__mapDeps([19,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,18,20,21])),"bud:tasks":()=>i(()=>import(`./tasks-Cqfj4fQN.js`),__vite__mapDeps([22,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,21,23,20])),"bud:files":()=>i(()=>import(`./files-C-7xoSt4.js`),__vite__mapDeps([24,10,1,5,3,2,4,6,14,7,8,9,11,15,12,13,16,20,21]))};function dt(e){return Object.hasOwn(ut,e)?ut[e]():i(()=>import(e),[])}async function ft(e,t,n=dt){let r=(await n(e)).default;if(typeof r?.render!=`function`)throw Error(`A screen module must export defineScreen({ render }) as its default.`);let i=await r.load?.(lt(r.routes,t));return t.signal.throwIfAborted(),{screen:r,data:i}}async function pt(e,t,n=e=>i(()=>import(e),[])){if(t.throwIfAborted(),!e)return;if(`error`in e)throw Error(e.error);let r=await n(e.url);return t.throwIfAborted(),x(r.default)}function mt(n){let i,u=``;async function d(){let{module:e,project:t,label:r}=n.props;i=void 0,u=``,n.update();let{location:a}=n.props,o={project:t,signal:n.signal,path:a.path,url:new URL(a.href,window.location.origin),active:n.props.active,conversation:a.conversation,route:null,params:{}};try{if(`error`in e)throw Error(e.error);o.taskDesign=await pt(n.props.taskDesign,n.signal),i={...await ft(e.url,o),context:o}}catch(e){if(n.signal.aborted)return;console.error(e),u=e instanceof Error&&e.message?e.message:`Could not open ${r}.`}n.update()}let f=r(()=>{d()});return()=>{let{label:r,module:p,location:m}=n.props,h=i?.context,g=``;if(i&&h)try{if(m.routes&&!$(m.routes,m.href))throw Error(`No screen route matches ${m.href}.`);h=lt(i.screen.routes,{...h,active:n.props.active,conversation:m.conversation,url:new URL(m.href,h.url.origin)})}catch(e){g=e instanceof Error?e.message:`This screen route is invalid.`}return e(`div`,{class:`h-full min-h-0`,mix:f,children:g?e(`div`,{class:`p-3 md:p-4`,children:e(s,{role:`alert`,children:g})}):i&&h?i.screen.render(i.data,h):u?e(`div`,{class:`h-full overflow-y-auto p-3 md:p-4`,children:e(l,{class:`max-w-2xl`,role:`alert`,children:[e(c,{title:`${r} didn't open`,subtitle:u}),e(o,{class:`flex-col items-start gap-3`,children:[e(s,{as:`p`,variant:`ui`,tone:`muted`,children:`Fix the screen and retry. Details are in the browser console.`}),e(a,{mix:t(`click`,()=>{`error`in p||n.props.taskDesign&&`error`in n.props.taskDesign?window.location.reload():d()}),children:`Retry`})]})]})}):e(ee,{label:`Loading ${r}…`})})}}async function ht(e,t,n,r,i=fetch){e=y(e);let a=await P(k.comments.get.href({id:e}),n,r,u,i);if(r.throwIfAborted(),a.id!==e)throw Error(`The comments service returned another discussion.`);let o=M(a),s=t.find(e=>e.module===o.module);if(!s)throw Error(`Enable the screen that owns this discussion to open it.`);if(s.routes&&!$(s.routes,o.href))throw Error(`The discussion location is not available in this screen.`);return{active:s.id,module:{url:s.module},location:{path:s.path,href:o.href,...s.routes?{routes:s.routes}:{},conversation:{id:e,original:o.original}}}}function gt(i){let u=new Map,d=i.props,f=``,p=i.props.conversation,m,h=!!p,g=``,_=!1;function v(){i.signal.aborted||i.update()}async function y(e){if(p!==e)return;m?.abort();let t=new AbortController;m=t;let n=AbortSignal.any([i.signal,t.signal]);h=!0,g=``,v();try{let t=i.props.project;if(!t)throw Error(`Connect a project to open this discussion.`);let r=await ht(e,i.props.conversationTargets??[],t.token,n);!n.aborted&&p===e&&(d=r,b.set(r.active,window.location.pathname))}catch(e){n.aborted||(g=e instanceof Error?e.message:`Could not open this discussion.`)}finally{m===t&&!n.aborted&&(h=!1,v())}}let b=new Map,x,S,C=()=>`bud:tabs:${i.props.project?.id}:v1`,w=()=>`${window.location.pathname}${window.location.search}${window.location.hash}`;function T(e){x=e,se(C(),e);let t=i.props.project;t&&(document.cookie=`${de(t.id)}=${le(e)}; Path=/; Max-Age=31536000; SameSite=Strict`),v()}function D(){if(!x)return;let e=w();S===e?S=void 0:j(E(x))!==e&&T(ue(x,e))}function M(e){let t=j(E(e));T(e),t!==w()&&(S=t,n(t,{history:`replace`,resetScroll:!1}))}function N(e){let{pathname:t}=new URL(e,`http://bud.local`);if(A(e))return{href:e,title:`Discussion`,icon:`message`};let n=i.props.screens.map(e=>({item:e,root:new URL(e.href,`http://bud.local`).pathname})).filter(({root:e})=>e===`/`||t===e||t.startsWith(`${e}/`)).sort((e,t)=>t.root.length-e.root.length)[0],r=n?.item??i.props.screens[0];if(r.id===`pages`&&n&&t.startsWith(`${n.root}/`)){let a=t.slice(n.root.length);return{href:e,title:i.props.project?.routes.find(e=>e.path===a)?.title??a,icon:r.icon}}let a=(n&&n.root!==`/`?t.slice(n.root.length):t).split(`/`).filter(Boolean).at(-1);return{href:e,title:(a&&n?.root!==`/`?decodeURIComponent(a):void 0)??r.label,icon:r.icon}}let P=r((e,t)=>{_=!0,p&&y(p);function r(){let{pathname:e,search:t,hash:n}=window.location,r=`${e}${t}${n}`,i=A(r);if(i)return i!==p&&(p=i,y(i)),d.location.conversation?.id===i&&b.set(d.active,r),!0;let a=u.get(d.active);if(!a)return!1;let o=a.location.path;return e!==o&&(o===`/`||!e.startsWith(`${o}/`))?!1:(m?.abort(),p=void 0,h=!1,g=``,b.set(d.active,r),a.location={...a.location,href:r,conversation:void 0},d={...d,location:a.location},!0)}r(),i.props.project&&T(O(ne(C()),w(),crypto.randomUUID())),i.update(),window.addEventListener(`click`,e=>{if(!x||!(e.metaKey||e.ctrlKey)||e.shiftKey||e.button!==0)return;let t=e.target?.closest?.(`a[href]`);if(!(t instanceof HTMLAnchorElement)||t.target||t.hasAttribute(`download`))return;let n=new URL(t.href);n.origin!==window.location.origin||n.pathname.startsWith(`/api/`)||(e.preventDefault(),e.stopPropagation(),T(oe(x,`${n.pathname}${n.search}${n.hash}`,crypto.randomUUID(),!1)))},{capture:!0,signal:t}),window.addEventListener(`popstate`,()=>{!r()&&!window.navigation?.currentEntry?.getState()&&n(window.location.href,{history:`replace`,resetScroll:!1}),window.navigation||D(),i.update()},{signal:t}),window.navigation?.addEventListener(`navigate`,r,{signal:t}),window.navigation?.addEventListener(`currententrychange`,()=>{r(),D(),i.update()},{signal:t}),window.navigation?.addEventListener(`navigatesuccess`,()=>{r(),i.update()},{signal:t})});return()=>{let{screens:r,project:v,taskDesign:C}=i.props,w=JSON.stringify([i.props.active,i.props.location.href,i.props.conversation]);if(f!==w){if(f=w,p=i.props.conversation,m?.abort(),g=``,h=!!p,p){let e=p;_&&i.queueTask(()=>{y(e)})}else d=i.props}let{active:T,module:ne,location:D}=d,O=r.find(e=>e.id===T)??r[0];v&&!h&&!g&&u.set(O.id,{module:ne,location:D,taskDesign:O.id===`tasks`?C:void 0});let A=x??i.props.initialTabs??(v?ie(D.href,`current`):void 0);A&&i.queueTask(()=>he(A.active));let se=r.map(e=>e.id===O.id?e:{...e,href:b.get(e.id)??e.href});return e(ce,{items:se,activeId:O.id,title:O.label,canvas:!!v,logo:v?.logo?{light:k.logo.href({theme:`light`}),dark:v.logo.dark?k.logo.href({theme:`dark`}):void 0,label:v.name}:void 0,status:v?e(ge,{project:v}):void 0,tabs:v&&A?e(re,{tabs:A.tabs.map(e=>({id:e.id,...N(j(e))})),active:A.active,recent:E(A).recent.filter(e=>e!==j(E(A))).map(N),canBack:E(A).index>0,canForward:E(A).index<E(A).entries.length-1,onSelect:e=>M({...A,active:e}),onClose:e=>M(ae(A,e)),onBack:()=>M(te(A,-1)),onForward:()=>M(te(A,1)),onNew:()=>M(oe(A,r[0]?.href??`/`,crypto.randomUUID(),!0)),onOpen:e=>{S=void 0,n(e)}}):void 0,children:v?e(`div`,{class:`h-full min-h-0`,mix:P,children:[h?e(ee,{label:`Opening discussion…`}):g?e(`div`,{class:`p-3 md:p-4`,children:e(l,{class:`max-w-2xl`,role:`alert`,children:[e(c,{title:`Discussion didn't open`,subtitle:g}),e(o,{children:e(a,{mix:t(`click`,()=>{p&&y(p)}),children:`Retry`})})]})}):null,[...u].map(([t,{module:n,taskDesign:i,location:a}])=>e(`div`,{class:`h-full min-h-0`,hidden:h||!!g||t!==O.id,children:e(mt,{label:r.find(e=>e.id===t)?.label??t,module:n,taskDesign:i,project:v,location:a,active:!h&&!g&&t===O.id})},`${t}:${v.token}`))]}):e(l,{class:`max-w-2xl`,children:[e(c,{title:`Your project, side by side.`,subtitle:`Open Bud beside a local project to review its pages, files and tasks.`}),e(o,{children:e(s,{as:`p`,variant:`ui`,children:`Start your project with the Bud Vite plugin, or run Bud from its directory. Its screens appear here when the companion connects.`})})]})})}}export{gt as Workspace};
|
package/dist/client/index.html
CHANGED
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
</script>
|
|
34
34
|
<!--bud-import-map-->
|
|
35
35
|
<title>bud.sh</title>
|
|
36
|
-
<script data-rmx-preserve-dom type="module" crossorigin src="/assets/index-
|
|
36
|
+
<script data-rmx-preserve-dom type="module" crossorigin src="/assets/index-GPPa1XPO.js"></script>
|
|
37
37
|
<link data-rmx-preserve-dom rel="modulepreload" crossorigin href="/assets/component-DWct-Tq6.js">
|
|
38
38
|
<link data-rmx-preserve-dom rel="modulepreload" crossorigin href="/assets/jsx-B4XNFIzB.js">
|
|
39
39
|
<link data-rmx-preserve-dom rel="modulepreload" crossorigin href="/assets/children-N0l0v7XI.js">
|
package/dist/hosted/hosted.js
CHANGED
|
@@ -6507,7 +6507,7 @@ var provideContext$1 = /*#__PURE__*/ dual(2, (self, context) => {
|
|
|
6507
6507
|
return updateContext(self, merge$3(context));
|
|
6508
6508
|
});
|
|
6509
6509
|
/** @internal */
|
|
6510
|
-
var provideService = function() {
|
|
6510
|
+
var provideService$1 = function() {
|
|
6511
6511
|
if (arguments.length === 1) return dual(2, (self, impl) => provideServiceImpl(self, arguments[0], impl));
|
|
6512
6512
|
return dual(3, (self, service, impl) => provideServiceImpl(self, service, impl)).apply(this, arguments);
|
|
6513
6513
|
};
|
|
@@ -6760,7 +6760,7 @@ var constScopeEmpty = { _tag: "Empty" };
|
|
|
6760
6760
|
/** @internal */
|
|
6761
6761
|
var scope = scopeTag;
|
|
6762
6762
|
/** @internal */
|
|
6763
|
-
var provideScope = /*#__PURE__*/ provideService(scopeTag);
|
|
6763
|
+
var provideScope = /*#__PURE__*/ provideService$1(scopeTag);
|
|
6764
6764
|
/** @internal */
|
|
6765
6765
|
var scoped$1 = (self) => withFiber$1((fiber) => {
|
|
6766
6766
|
const prev = fiber.context;
|
|
@@ -7493,7 +7493,7 @@ var logWithLevel$1 = (level) => (...message) => {
|
|
|
7493
7493
|
return void_$2;
|
|
7494
7494
|
});
|
|
7495
7495
|
};
|
|
7496
|
-
var colors = {
|
|
7496
|
+
var colors$1 = {
|
|
7497
7497
|
bold: "1",
|
|
7498
7498
|
red: "31",
|
|
7499
7499
|
green: "32",
|
|
@@ -7505,7 +7505,7 @@ var colors = {
|
|
|
7505
7505
|
black: "30",
|
|
7506
7506
|
bgBrightRed: "101"
|
|
7507
7507
|
};
|
|
7508
|
-
colors.gray, colors.blue, colors.green, colors.yellow, colors.red, colors.bgBrightRed, colors.black;
|
|
7508
|
+
colors$1.gray, colors$1.blue, colors$1.green, colors$1.yellow, colors$1.red, colors$1.bgBrightRed, colors$1.black;
|
|
7509
7509
|
var defaultDateFormat = (date) => `${date.getHours().toString().padStart(2, "0")}:${date.getMinutes().toString().padStart(2, "0")}:${date.getSeconds().toString().padStart(2, "0")}.${date.getMilliseconds().toString().padStart(3, "0")}`;
|
|
7510
7510
|
/** @internal */
|
|
7511
7511
|
var defaultLogger = /*#__PURE__*/ loggerMake(({ cause, date, fiber, logLevel, message }) => {
|
|
@@ -8601,7 +8601,7 @@ var CurrentMemoMap = class CurrentMemoMap extends (/*#__PURE__*/ Service()("effe
|
|
|
8601
8601
|
* @category destructors
|
|
8602
8602
|
* @since 2.0.0
|
|
8603
8603
|
*/
|
|
8604
|
-
var buildWithMemoMap = /*#__PURE__*/ dual(3, (self, memoMap, scope) => provideService(map$4(suspend$3(() => self.build(memoMap, scope)), add(CurrentMemoMap, memoMap)), CurrentMemoMap, memoMap));
|
|
8604
|
+
var buildWithMemoMap = /*#__PURE__*/ dual(3, (self, memoMap, scope) => provideService$1(map$4(suspend$3(() => self.build(memoMap, scope)), add(CurrentMemoMap, memoMap)), CurrentMemoMap, memoMap));
|
|
8605
8605
|
/**
|
|
8606
8606
|
* Builds a layer into a scoped value.
|
|
8607
8607
|
*
|
|
@@ -10385,7 +10385,7 @@ var findErrorOnly = (cause) => cause.reasons.every(isFailReason$1) ? findError$1
|
|
|
10385
10385
|
var retryOrElse = /*#__PURE__*/ dual(3, (self, policy, orElse) => flatMap$3(toStepWithMetadata(policy), (step) => {
|
|
10386
10386
|
let meta = CurrentMetadata.defaultValue();
|
|
10387
10387
|
let lastError;
|
|
10388
|
-
const loop = catchCauseFilter$1(suspend$3(() => provideService(self, CurrentMetadata, meta)), findErrorOnly, (error) => {
|
|
10388
|
+
const loop = catchCauseFilter$1(suspend$3(() => provideService$1(self, CurrentMetadata, meta)), findErrorOnly, (error) => {
|
|
10389
10389
|
lastError = error;
|
|
10390
10390
|
return flatMap$3(step(error), (meta_) => {
|
|
10391
10391
|
meta = meta_;
|
|
@@ -12495,6 +12495,55 @@ var provideContext = provideContext$1;
|
|
|
12495
12495
|
*/
|
|
12496
12496
|
var serviceOption = serviceOption$1;
|
|
12497
12497
|
/**
|
|
12498
|
+
* Provides one concrete service implementation to an effect.
|
|
12499
|
+
*
|
|
12500
|
+
* **When to use**
|
|
12501
|
+
*
|
|
12502
|
+
* Use to satisfy one service requirement with an already-built implementation.
|
|
12503
|
+
*
|
|
12504
|
+
* **Details**
|
|
12505
|
+
*
|
|
12506
|
+
* The service requirement identified by the `Context.Key` is removed from the
|
|
12507
|
+
* effect requirements after the implementation is provided.
|
|
12508
|
+
*
|
|
12509
|
+
* **Example** (Providing a service value)
|
|
12510
|
+
*
|
|
12511
|
+
* ```ts import.meta.vitest
|
|
12512
|
+
* import { Context, Effect } from "effect"
|
|
12513
|
+
* const output: Array<unknown> = []
|
|
12514
|
+
*
|
|
12515
|
+
* // Define a service for configuration
|
|
12516
|
+
* const Config = Context.Service<{
|
|
12517
|
+
* apiUrl: string
|
|
12518
|
+
* timeout: number
|
|
12519
|
+
* }>("Config")
|
|
12520
|
+
*
|
|
12521
|
+
* const fetchData = Effect.gen(function*() {
|
|
12522
|
+
* const config = yield* Effect.service(Config)
|
|
12523
|
+
* yield* Effect.sync(() => { output.push(`Fetching from: ${config.apiUrl}`) })
|
|
12524
|
+
* yield* Effect.sync(() => { output.push(`Timeout: ${config.timeout}ms`) })
|
|
12525
|
+
* return "data"
|
|
12526
|
+
* })
|
|
12527
|
+
*
|
|
12528
|
+
* // Provide the service implementation
|
|
12529
|
+
* const program = Effect.provideService(fetchData, Config, {
|
|
12530
|
+
* apiUrl: "https://api.example.com",
|
|
12531
|
+
* timeout: 5000
|
|
12532
|
+
* })
|
|
12533
|
+
*
|
|
12534
|
+
* void output.push(Effect.runSync(program))
|
|
12535
|
+
* output // => ["Fetching from: https://api.example.com", "Timeout: 5000ms", "data"]
|
|
12536
|
+
* ```
|
|
12537
|
+
*
|
|
12538
|
+
* @see {@link provide} for providing multiple layers to an effect.
|
|
12539
|
+
* @see {@link provideServiceEffect} for acquiring the service implementation effectfully.
|
|
12540
|
+
* @see {@link provideContext} for providing a complete context.
|
|
12541
|
+
* @stability stable
|
|
12542
|
+
* @category providing services
|
|
12543
|
+
* @since 2.0.0
|
|
12544
|
+
*/
|
|
12545
|
+
var provideService = provideService$1;
|
|
12546
|
+
/**
|
|
12498
12547
|
* Runs an effect with a scope that closes when the effect completes.
|
|
12499
12548
|
*
|
|
12500
12549
|
* **When to use**
|
|
@@ -25225,6 +25274,11 @@ async function readMeta(db) {
|
|
|
25225
25274
|
}
|
|
25226
25275
|
//#endregion
|
|
25227
25276
|
//#region ../beads-d1/src/server/store.ts
|
|
25277
|
+
/**
|
|
25278
|
+
* Who the current operation's claims and task edits are attributed to, when a host serves several
|
|
25279
|
+
* people from one store: provided per request, it takes the place of `actor`.
|
|
25280
|
+
*/
|
|
25281
|
+
var BeadsActor = Reference("@bud.sh/beads-d1/BeadsActor", { defaultValue: () => void 0 });
|
|
25228
25282
|
var D1_VERSION = `d1-1`;
|
|
25229
25283
|
var unreachable = "Bud could not reach the D1 task store.";
|
|
25230
25284
|
var encoder$3 = new TextEncoder();
|
|
@@ -25372,11 +25426,11 @@ function makeD1BeadsStore(options) {
|
|
|
25372
25426
|
message: selected.connection.message
|
|
25373
25427
|
}))));
|
|
25374
25428
|
}
|
|
25375
|
-
function core(prefix, mutation) {
|
|
25429
|
+
function core(prefix, mutation, current) {
|
|
25376
25430
|
return {
|
|
25377
25431
|
db: database,
|
|
25378
25432
|
prefix,
|
|
25379
|
-
actor,
|
|
25433
|
+
actor: current?.trim() || actor,
|
|
25380
25434
|
now: nativeNow,
|
|
25381
25435
|
writing: () => {
|
|
25382
25436
|
if (mutation) mutation.started = true;
|
|
@@ -25472,10 +25526,17 @@ function makeD1BeadsStore(options) {
|
|
|
25472
25526
|
};
|
|
25473
25527
|
return yield* reader(selected.connection, core(selected.prefix)).snapshot;
|
|
25474
25528
|
})),
|
|
25475
|
-
read: (_root, operation) => bounded(
|
|
25529
|
+
read: (_root, operation) => bounded(gen(function* () {
|
|
25530
|
+
let { connection, prefix } = yield* ready();
|
|
25531
|
+
return yield* operation(reader(connection, core(prefix, void 0, yield* BeadsActor)));
|
|
25532
|
+
})),
|
|
25476
25533
|
change: (_root, operation) => suspend$2(() => {
|
|
25477
25534
|
let mutation = { started: false };
|
|
25478
|
-
return bounded(writes.withPermit(
|
|
25535
|
+
return bounded(writes.withPermit(gen(function* () {
|
|
25536
|
+
let { connection, prefix } = yield* ready();
|
|
25537
|
+
let current = yield* BeadsActor;
|
|
25538
|
+
return yield* operation(writer(connection, core(prefix, mutation, current), mutation));
|
|
25539
|
+
})), mutation);
|
|
25479
25540
|
}),
|
|
25480
25541
|
watch: () => fromPubSub(changes)
|
|
25481
25542
|
};
|
|
@@ -36299,6 +36360,113 @@ var BudLogoSchema = createSchema((value, context) => {
|
|
|
36299
36360
|
return fail$11(logoMessage, context.path);
|
|
36300
36361
|
});
|
|
36301
36362
|
//#endregion
|
|
36363
|
+
//#region ../project/src/lib/theme.ts
|
|
36364
|
+
/**
|
|
36365
|
+
* Bud's colors and shadows a theme may set, as `--bud-<name>` in its styles. Everything else
|
|
36366
|
+
* Bud derives from them.
|
|
36367
|
+
*/
|
|
36368
|
+
var THEME_TOKENS = Object.freeze([
|
|
36369
|
+
"background",
|
|
36370
|
+
"shell",
|
|
36371
|
+
"main",
|
|
36372
|
+
"canvas",
|
|
36373
|
+
"panel",
|
|
36374
|
+
"board",
|
|
36375
|
+
"editor",
|
|
36376
|
+
"editor-tabs",
|
|
36377
|
+
"foreground",
|
|
36378
|
+
"muted",
|
|
36379
|
+
"primary",
|
|
36380
|
+
"primary-hover",
|
|
36381
|
+
"primary-foreground",
|
|
36382
|
+
"border",
|
|
36383
|
+
"tab-divider",
|
|
36384
|
+
"hover",
|
|
36385
|
+
"selected",
|
|
36386
|
+
"control",
|
|
36387
|
+
"control-active",
|
|
36388
|
+
"control-selected",
|
|
36389
|
+
"card",
|
|
36390
|
+
"menu",
|
|
36391
|
+
"menu-hover",
|
|
36392
|
+
"card-frame",
|
|
36393
|
+
"card-surface",
|
|
36394
|
+
"card-border",
|
|
36395
|
+
"card-frame-border",
|
|
36396
|
+
"card-badge",
|
|
36397
|
+
"overlay-shadow",
|
|
36398
|
+
"tooltip",
|
|
36399
|
+
"board-control",
|
|
36400
|
+
"board-control-hover",
|
|
36401
|
+
"board-card",
|
|
36402
|
+
"control-elevation",
|
|
36403
|
+
"board-elevation",
|
|
36404
|
+
"board-card-elevation",
|
|
36405
|
+
"card-elevation",
|
|
36406
|
+
"board-card-lift",
|
|
36407
|
+
"frame-control",
|
|
36408
|
+
"modal-elevation",
|
|
36409
|
+
"segment-elevation",
|
|
36410
|
+
"control-open-elevation",
|
|
36411
|
+
"board-segment",
|
|
36412
|
+
"scrollbar",
|
|
36413
|
+
"focus",
|
|
36414
|
+
"scrollbar-hover",
|
|
36415
|
+
"tooltip-border",
|
|
36416
|
+
"tooltip-shadow"
|
|
36417
|
+
]);
|
|
36418
|
+
var themeMessage = `theme must be { light, dark }, each mapping Bud's tokens (${THEME_TOKENS.slice(0, 3).join(", ")}, …) to CSS colors or shadows.`;
|
|
36419
|
+
function cssValue(value) {
|
|
36420
|
+
if (typeof value !== "string") return null;
|
|
36421
|
+
let trimmed = value.trim();
|
|
36422
|
+
if (!trimmed || trimmed.length > 300) return null;
|
|
36423
|
+
if (!/^[#a-zA-Z0-9(),.%\s/+-]+$/.test(trimmed) || /url\s*\(/i.test(trimmed)) return null;
|
|
36424
|
+
return trimmed;
|
|
36425
|
+
}
|
|
36426
|
+
function colors(value) {
|
|
36427
|
+
if (value === void 0) return {};
|
|
36428
|
+
if (!value || typeof value !== "object" || Array.isArray(value)) return null;
|
|
36429
|
+
let result = {};
|
|
36430
|
+
for (let [name, raw] of Object.entries(value)) {
|
|
36431
|
+
let checked = cssValue(raw);
|
|
36432
|
+
if (!THEME_TOKENS.includes(name) || checked === null) return null;
|
|
36433
|
+
result[name] = checked;
|
|
36434
|
+
}
|
|
36435
|
+
return Object.freeze(result);
|
|
36436
|
+
}
|
|
36437
|
+
/** A theme in its one resolved form; Bud's own colors when absent. */
|
|
36438
|
+
var BudThemeSchema = createSchema((value, context) => {
|
|
36439
|
+
if (value === void 0) return { value: {
|
|
36440
|
+
light: {},
|
|
36441
|
+
dark: {}
|
|
36442
|
+
} };
|
|
36443
|
+
if (!value || typeof value !== "object" || Array.isArray(value)) return fail$11(themeMessage, context.path);
|
|
36444
|
+
let { light, dark, ...rest } = value;
|
|
36445
|
+
let resolved = {
|
|
36446
|
+
light: colors(light),
|
|
36447
|
+
dark: colors(dark)
|
|
36448
|
+
};
|
|
36449
|
+
if (Object.keys(rest).length || !resolved.light || !resolved.dark) return fail$11(themeMessage, context.path);
|
|
36450
|
+
return { value: {
|
|
36451
|
+
light: resolved.light,
|
|
36452
|
+
dark: resolved.dark
|
|
36453
|
+
} };
|
|
36454
|
+
});
|
|
36455
|
+
/**
|
|
36456
|
+
* The theme as styles that follow Bud's own, so its tokens win in each color scheme.
|
|
36457
|
+
* @param theme - The resolved theme.
|
|
36458
|
+
* @returns A `<style>` element, or an empty string for Bud's own colors.
|
|
36459
|
+
*/
|
|
36460
|
+
function themeStyle(theme) {
|
|
36461
|
+
let block = (selector, values) => {
|
|
36462
|
+
let entries = Object.entries(values);
|
|
36463
|
+
if (!entries.length) return "";
|
|
36464
|
+
return `${selector}{${entries.map(([name, value]) => `--bud-${name}:${value};`).join("")}}`;
|
|
36465
|
+
};
|
|
36466
|
+
let css = block(":root:not([data-theme='dark'])", theme.light) + block(":root[data-theme='dark']", theme.dark);
|
|
36467
|
+
return css ? `<style data-bud-theme>${css}</style>` : "";
|
|
36468
|
+
}
|
|
36469
|
+
//#endregion
|
|
36302
36470
|
//#region ../project/src/lib/branches.ts
|
|
36303
36471
|
var message = "branches must be { main?, build?: { install?, build?, serve? } } with a branch name and nonempty shell commands.";
|
|
36304
36472
|
function branch(value) {
|
|
@@ -36639,6 +36807,7 @@ var ConfigFields = check(section("Bud config must export an object.", {
|
|
|
36639
36807
|
previews: any(),
|
|
36640
36808
|
files: any(),
|
|
36641
36809
|
logo: any(),
|
|
36810
|
+
theme: any(),
|
|
36642
36811
|
picker: any(),
|
|
36643
36812
|
branches: any(),
|
|
36644
36813
|
flows: any()
|
|
@@ -36714,6 +36883,7 @@ var BudConfigSchema = delegate(check(delegate(check(delegate(check(delegate(Conf
|
|
|
36714
36883
|
previews: parseConfig(BudPreviewsSchema, config.previews),
|
|
36715
36884
|
files: parseConfig(BudFilesSchema, config.files),
|
|
36716
36885
|
logo: parseConfig(BudLogoSchema, config.logo),
|
|
36886
|
+
theme: parseConfig(BudThemeSchema, config.theme),
|
|
36717
36887
|
picker: parseConfig(BudPickerSchema, config.picker),
|
|
36718
36888
|
branches: parseConfig(BudBranchesSchema, config.branches)
|
|
36719
36889
|
}));
|
|
@@ -39239,7 +39409,7 @@ function createAppController(template, project, runtime) {
|
|
|
39239
39409
|
let title = (conversation ? "Discussion" : screen.label).replace(/[&<>]/g, (character) => `&#${character.charCodeAt(0)};`);
|
|
39240
39410
|
let logo = project?.config.logo;
|
|
39241
39411
|
let shell = logo ? withLogoIcons(template, logo, (theme) => routes.logo.href({ theme })) : template;
|
|
39242
|
-
return new Response(shell.replace("<title>bud.sh</title>", () => `<title>${title} · bud.sh</title>`).replace("<!--app-html-->", () => content), { headers: { "Content-Type": "text/html; charset=utf-8" } });
|
|
39412
|
+
return new Response(shell.replace("<title>bud.sh</title>", () => `<title>${title} · bud.sh</title>`).replace("</head>", () => project ? `${themeStyle(project.config.theme)}</head>` : "</head>").replace("<!--app-html-->", () => content), { headers: { "Content-Type": "text/html; charset=utf-8" } });
|
|
39243
39413
|
}
|
|
39244
39414
|
return createController(routes, { actions: {
|
|
39245
39415
|
conversation({ params, request }) {
|
|
@@ -42387,6 +42557,7 @@ var root = "/project";
|
|
|
42387
42557
|
function unavailable(operation) {
|
|
42388
42558
|
return die(/* @__PURE__ */ new Error(`A hosted Bud has no checkout to ${operation}.`));
|
|
42389
42559
|
}
|
|
42560
|
+
var RequestAuthor = Reference("@bud.sh/app/RequestAuthor", { defaultValue: () => void 0 });
|
|
42390
42561
|
function gitLayer(author) {
|
|
42391
42562
|
let repository = new Proxy({
|
|
42392
42563
|
info: {
|
|
@@ -42396,7 +42567,9 @@ function gitLayer(author) {
|
|
|
42396
42567
|
objectFormat: "sha1",
|
|
42397
42568
|
bare: false
|
|
42398
42569
|
},
|
|
42399
|
-
identity:
|
|
42570
|
+
identity: gen(function* () {
|
|
42571
|
+
return (yield* RequestAuthor) ?? author;
|
|
42572
|
+
})
|
|
42400
42573
|
}, { get(target, key) {
|
|
42401
42574
|
if (key in target) return target[key];
|
|
42402
42575
|
return typeof key === "string" ? () => unavailable(key) : void 0;
|
|
@@ -42452,6 +42625,16 @@ function hostedLayer(project, options) {
|
|
|
42452
42625
|
yield* activity.writes("threads").pipe(debounce("300 millis"), runForEach(() => sync(() => anchors.invalidate()).pipe(andThen(list.relocate))), ignore$2, forkScoped);
|
|
42453
42626
|
})), mergeAll$1(branches, storeActivityLayer))), previews, screensLayer), registry);
|
|
42454
42627
|
}
|
|
42628
|
+
function hostedAuthor(author) {
|
|
42629
|
+
if (!author) return void 0;
|
|
42630
|
+
let name = typeof author.name === "string" ? author.name.trim() : "";
|
|
42631
|
+
let email = typeof author.email === "string" ? author.email.trim() : "";
|
|
42632
|
+
if (!name || !email || name.length > 256 || email.length > 320 || !email.includes("@")) throw new TypeError("A request's author needs a name and an email address.");
|
|
42633
|
+
return {
|
|
42634
|
+
name,
|
|
42635
|
+
email
|
|
42636
|
+
};
|
|
42637
|
+
}
|
|
42455
42638
|
/**
|
|
42456
42639
|
* Creates a hosted Bud: the app's own routes for the canvas and tasks on the hosted services.
|
|
42457
42640
|
* @param options - The project, its stores and the shell.
|
|
@@ -42473,35 +42656,47 @@ function createHostedApp$1(options) {
|
|
|
42473
42656
|
}
|
|
42474
42657
|
};
|
|
42475
42658
|
let runtime = make(hostedLayer(project, options));
|
|
42476
|
-
let requests = { runPromise: (program, runOptions) => runtime.runPromise(program, runOptions) };
|
|
42477
|
-
let router = createRouter({ middleware: [async ({ request }, next) => {
|
|
42478
|
-
let hash = /^\/api\/previews\/images\/([a-f0-9]{64})\.jpg$/.exec(new URL(request.url).pathname)?.[1];
|
|
42479
|
-
if (!hash || request.method !== "GET" || !options.storage.stream) return next();
|
|
42480
|
-
let denied = projectRequestDenied(request, project);
|
|
42481
|
-
if (denied) return denied;
|
|
42482
|
-
let body = await options.storage.stream(`${hash}.jpg`);
|
|
42483
|
-
if (!body) return next();
|
|
42484
|
-
return new Response(body, { headers: {
|
|
42485
|
-
"Content-Type": "image/jpeg",
|
|
42486
|
-
"Cache-Control": "private, max-age=31536000, immutable"
|
|
42487
|
-
} });
|
|
42488
|
-
}, async (_context, next) => {
|
|
42489
|
-
let response = await next();
|
|
42490
|
-
response.headers.set("Referrer-Policy", "no-referrer");
|
|
42491
|
-
response.headers.set("X-Frame-Options", "DENY");
|
|
42492
|
-
response.headers.set("Cache-Control", "no-store");
|
|
42493
|
-
return response;
|
|
42494
|
-
}] });
|
|
42495
42659
|
let importMap = `<script type="importmap">${JSON.stringify({ imports: sharedModules })}<\/script>`;
|
|
42496
42660
|
let template = options.template.replace("<!--bud-import-map-->", () => importMap);
|
|
42497
|
-
|
|
42498
|
-
|
|
42499
|
-
|
|
42500
|
-
|
|
42501
|
-
|
|
42502
|
-
|
|
42661
|
+
let makeRouter = (requests) => {
|
|
42662
|
+
let router = createRouter({ middleware: [async ({ request }, next) => {
|
|
42663
|
+
let hash = /^\/api\/previews\/images\/([a-f0-9]{64})\.jpg$/.exec(new URL(request.url).pathname)?.[1];
|
|
42664
|
+
if (!hash || request.method !== "GET" || !options.storage.stream) return next();
|
|
42665
|
+
let denied = projectRequestDenied(request, project);
|
|
42666
|
+
if (denied) return denied;
|
|
42667
|
+
let body = await options.storage.stream(`${hash}.jpg`);
|
|
42668
|
+
if (!body) return next();
|
|
42669
|
+
return new Response(body, { headers: {
|
|
42670
|
+
"Content-Type": "image/jpeg",
|
|
42671
|
+
"Cache-Control": "private, max-age=31536000, immutable"
|
|
42672
|
+
} });
|
|
42673
|
+
}, async (_context, next) => {
|
|
42674
|
+
let response = await next();
|
|
42675
|
+
response.headers.set("Referrer-Policy", "no-referrer");
|
|
42676
|
+
response.headers.set("X-Frame-Options", "DENY");
|
|
42677
|
+
response.headers.set("Cache-Control", "no-store");
|
|
42678
|
+
return response;
|
|
42679
|
+
}] });
|
|
42680
|
+
router.map(routes, createAppController(template, project, requests));
|
|
42681
|
+
router.map(routes.comments, createCommentsController(project, requests));
|
|
42682
|
+
router.map(routes.tasksApi, createTasksController(project, requests));
|
|
42683
|
+
router.map(routes.liveApi, createLiveController(project, requests));
|
|
42684
|
+
router.map(routes.previewsApi, createPreviewsController(project, requests));
|
|
42685
|
+
router.map(routes.branchesApi, createBranchesController(project, requests));
|
|
42686
|
+
return router;
|
|
42687
|
+
};
|
|
42688
|
+
let routers = /* @__PURE__ */ new Map();
|
|
42689
|
+
let routerFor = (author) => {
|
|
42690
|
+
let key = author ? `${author.name}\0${author.email}` : "";
|
|
42691
|
+
let existing = routers.get(key);
|
|
42692
|
+
if (existing) return existing;
|
|
42693
|
+
let made = makeRouter({ runPromise: (program, runOptions) => runtime.runPromise(author ? program.pipe(provideService(RequestAuthor, author), provideService(BeadsActor, author.name)) : program, runOptions) });
|
|
42694
|
+
routers.set(key, made);
|
|
42695
|
+
if (routers.size > 256) routers.delete(routers.keys().next().value);
|
|
42696
|
+
return made;
|
|
42697
|
+
};
|
|
42503
42698
|
return {
|
|
42504
|
-
fetch: async (request) =>
|
|
42699
|
+
fetch: async (request, context) => routerFor(hostedAuthor(context?.author)).fetch(request),
|
|
42505
42700
|
dispose: () => runtime.dispose()
|
|
42506
42701
|
};
|
|
42507
42702
|
}
|
package/dist/node/index.js
CHANGED
|
@@ -202,6 +202,99 @@ var BudLogoSchema = createSchema((value, context) => {
|
|
|
202
202
|
return fail(logoMessage, context.path);
|
|
203
203
|
});
|
|
204
204
|
//#endregion
|
|
205
|
+
//#region ../project/src/lib/theme.ts
|
|
206
|
+
/**
|
|
207
|
+
* Bud's colors and shadows a theme may set, as `--bud-<name>` in its styles. Everything else
|
|
208
|
+
* Bud derives from them.
|
|
209
|
+
*/
|
|
210
|
+
var THEME_TOKENS = Object.freeze([
|
|
211
|
+
"background",
|
|
212
|
+
"shell",
|
|
213
|
+
"main",
|
|
214
|
+
"canvas",
|
|
215
|
+
"panel",
|
|
216
|
+
"board",
|
|
217
|
+
"editor",
|
|
218
|
+
"editor-tabs",
|
|
219
|
+
"foreground",
|
|
220
|
+
"muted",
|
|
221
|
+
"primary",
|
|
222
|
+
"primary-hover",
|
|
223
|
+
"primary-foreground",
|
|
224
|
+
"border",
|
|
225
|
+
"tab-divider",
|
|
226
|
+
"hover",
|
|
227
|
+
"selected",
|
|
228
|
+
"control",
|
|
229
|
+
"control-active",
|
|
230
|
+
"control-selected",
|
|
231
|
+
"card",
|
|
232
|
+
"menu",
|
|
233
|
+
"menu-hover",
|
|
234
|
+
"card-frame",
|
|
235
|
+
"card-surface",
|
|
236
|
+
"card-border",
|
|
237
|
+
"card-frame-border",
|
|
238
|
+
"card-badge",
|
|
239
|
+
"overlay-shadow",
|
|
240
|
+
"tooltip",
|
|
241
|
+
"board-control",
|
|
242
|
+
"board-control-hover",
|
|
243
|
+
"board-card",
|
|
244
|
+
"control-elevation",
|
|
245
|
+
"board-elevation",
|
|
246
|
+
"board-card-elevation",
|
|
247
|
+
"card-elevation",
|
|
248
|
+
"board-card-lift",
|
|
249
|
+
"frame-control",
|
|
250
|
+
"modal-elevation",
|
|
251
|
+
"segment-elevation",
|
|
252
|
+
"control-open-elevation",
|
|
253
|
+
"board-segment",
|
|
254
|
+
"scrollbar",
|
|
255
|
+
"focus",
|
|
256
|
+
"scrollbar-hover",
|
|
257
|
+
"tooltip-border",
|
|
258
|
+
"tooltip-shadow"
|
|
259
|
+
]);
|
|
260
|
+
var themeMessage = `theme must be { light, dark }, each mapping Bud's tokens (${THEME_TOKENS.slice(0, 3).join(", ")}, …) to CSS colors or shadows.`;
|
|
261
|
+
function cssValue(value) {
|
|
262
|
+
if (typeof value !== "string") return null;
|
|
263
|
+
let trimmed = value.trim();
|
|
264
|
+
if (!trimmed || trimmed.length > 300) return null;
|
|
265
|
+
if (!/^[#a-zA-Z0-9(),.%\s/+-]+$/.test(trimmed) || /url\s*\(/i.test(trimmed)) return null;
|
|
266
|
+
return trimmed;
|
|
267
|
+
}
|
|
268
|
+
function colors(value) {
|
|
269
|
+
if (value === void 0) return {};
|
|
270
|
+
if (!value || typeof value !== "object" || Array.isArray(value)) return null;
|
|
271
|
+
let result = {};
|
|
272
|
+
for (let [name, raw] of Object.entries(value)) {
|
|
273
|
+
let checked = cssValue(raw);
|
|
274
|
+
if (!THEME_TOKENS.includes(name) || checked === null) return null;
|
|
275
|
+
result[name] = checked;
|
|
276
|
+
}
|
|
277
|
+
return Object.freeze(result);
|
|
278
|
+
}
|
|
279
|
+
/** A theme in its one resolved form; Bud's own colors when absent. */
|
|
280
|
+
var BudThemeSchema = createSchema((value, context) => {
|
|
281
|
+
if (value === void 0) return { value: {
|
|
282
|
+
light: {},
|
|
283
|
+
dark: {}
|
|
284
|
+
} };
|
|
285
|
+
if (!value || typeof value !== "object" || Array.isArray(value)) return fail(themeMessage, context.path);
|
|
286
|
+
let { light, dark, ...rest } = value;
|
|
287
|
+
let resolved = {
|
|
288
|
+
light: colors(light),
|
|
289
|
+
dark: colors(dark)
|
|
290
|
+
};
|
|
291
|
+
if (Object.keys(rest).length || !resolved.light || !resolved.dark) return fail(themeMessage, context.path);
|
|
292
|
+
return { value: {
|
|
293
|
+
light: resolved.light,
|
|
294
|
+
dark: resolved.dark
|
|
295
|
+
} };
|
|
296
|
+
});
|
|
297
|
+
//#endregion
|
|
205
298
|
//#region ../project/src/lib/branches.ts
|
|
206
299
|
var message = "branches must be { main?, build?: { install?, build?, serve? } } with a branch name and nonempty shell commands.";
|
|
207
300
|
function branch(value) {
|
|
@@ -550,6 +643,7 @@ var ConfigFields = check(section("Bud config must export an object.", {
|
|
|
550
643
|
previews: any(),
|
|
551
644
|
files: any(),
|
|
552
645
|
logo: any(),
|
|
646
|
+
theme: any(),
|
|
553
647
|
picker: any(),
|
|
554
648
|
branches: any(),
|
|
555
649
|
flows: any()
|
|
@@ -624,6 +718,7 @@ delegate(check(delegate(check(delegate(check(delegate(ConfigFields, (config) =>
|
|
|
624
718
|
previews: parseConfig(BudPreviewsSchema, config.previews),
|
|
625
719
|
files: parseConfig(BudFilesSchema, config.files),
|
|
626
720
|
logo: parseConfig(BudLogoSchema, config.logo),
|
|
721
|
+
theme: parseConfig(BudThemeSchema, config.theme),
|
|
627
722
|
picker: parseConfig(BudPickerSchema, config.picker),
|
|
628
723
|
branches: parseConfig(BudBranchesSchema, config.branches)
|
|
629
724
|
}));
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
var abap_default = [Object.freeze(JSON.parse("{\"displayName\":\"ABAP\",\"fileTypes\":[\"abap\",\"ABAP\"],\"foldingStartMarker\":\"/\\\\*\\\\*|\\\\{\\\\s*$\",\"foldingStopMarker\":\"\\\\*\\\\*/|^\\\\s*}\",\"name\":\"abap\",\"patterns\":[{\"captures\":{\"1\":{\"name\":\"punctuation.definition.comment.abap\"}},\"match\":\"^\\\\*.*\\\\n?\",\"name\":\"comment.line.full.abap\"},{\"captures\":{\"1\":{\"name\":\"punctuation.definition.comment.abap\"}},\"match\":\"\\\".*\\\\n?\",\"name\":\"comment.line.partial.abap\"},{\"match\":\"(?<!\\\\S)##.*?(?=([,.:\\\\s]))\",\"name\":\"comment.line.pragma.abap\"},{\"match\":\"(?i)(?<=[-~\\\\s])(?<=[-=]>)([/_a-z][/-9_a-z]*)(?=\\\\s+(?:|[-*+/]|&&?)=\\\\s+)\",\"name\":\"variable.other.abap\"},{\"match\":\"\\\\b[0-9]+(\\\\b|[,.])\",\"name\":\"constant.numeric.abap\"},{\"match\":\"(?i)(^|\\\\s+)((P(?:UBLIC|RIVATE|ROTECTED))\\\\sSECTION)(?=\\\\s+|[.:])\",\"name\":\"storage.modifier.class.abap\"},{\"begin\":\"(?<!\\\\\\\\)(\\\\|)(.*?)\",\"beginCaptures\":{\"1\":{\"name\":\"constant.character.escape.abap\"}},\"end\":\"(?<!\\\\\\\\)(\\\\||(\\\\\\\\\\\\\\\\\\\\|))\",\"endCaptures\":{\"1\":{\"name\":\"constant.character.escape.abap\"}},\"name\":\"string.interpolated.abap\",\"patterns\":[{\"match\":\"(\\\\{ )|( })\",\"name\":\"constant.character.escape\"},{\"match\":\"\\\\\\\\\\\\|\",\"name\":\"constant.character.escape.abap\"},{\"match\":\"(?i)(?<=\\\\s)(align|alpha|case|country|currency|date|decimals|exponent|number|pad|sign|style|time|timestamp|timezone|width|xsd|zero)(?=\\\\s=)\",\"name\":\"entity.name.property.stringtemplate.abap\"},{\"match\":\"(?i)(?<==\\\\s)(center|engineering|environment|in|iso|left|leftplus|leftspace|lower|no|out|raw|right|rightplus|rightspace|scale_preserving|scale_preserving_scientific|scientific|scientific_with_leading_zero|sign_as_postfix|simple|space|upper|user|yes)(?=\\\\s)\",\"name\":\"entity.value.property.stringtemplate.abap\"}]},{\"begin\":\"'\",\"end\":\"'\",\"name\":\"string.quoted.single.abap\",\"patterns\":[{\"match\":\"''\",\"name\":\"constant.character.escape.abap\"}]},{\"begin\":\"`\",\"end\":\"`\",\"name\":\"string.quoted.single.abap\",\"patterns\":[{\"match\":\"``\",\"name\":\"constant.character.escape.abap\"}]},{\"begin\":\"(?i)^\\\\s*(class)\\\\s([/_a-z][/-9_a-z]*)\",\"beginCaptures\":{\"1\":{\"name\":\"storage.type.block.abap\"},\"2\":{\"name\":\"entity.name.type.block.abap\"}},\"end\":\"\\\\s*\\\\.\\\\s*\\\\n?\",\"name\":\"meta.block.begin.implementation.abap\",\"patterns\":[{\"match\":\"(?i)(^|\\\\s+)(definition|implementation|public|inheriting\\\\s+from|final|deferred|abstract|shared\\\\s+memory\\\\s+enabled|(global|local)*\\\\s*friends|(create\\\\s+(p(?:ublic|rotected|rivate)))|for\\\\s+behavior\\\\s+of|for\\\\s+testing|risk\\\\s+level\\\\s+(critical|dangerous|harmless))|duration\\\\s(short|medium|long)(?=\\\\s+|\\\\.)\",\"name\":\"storage.modifier.class.abap\"},{\"begin\":\"(?=[A-Z_a-z][0-9A-Z_a-z]*)\",\"contentName\":\"entity.name.type.block.abap\",\"end\":\"(?![0-9A-Z_a-z])\",\"patterns\":[{\"include\":\"#generic_names\"}]}]},{\"begin\":\"(?i)^\\\\s*(method)\\\\s(?:([/_a-z][/-9_a-z]*)~)?([/_a-z][/-9_a-z]*)\",\"beginCaptures\":{\"1\":{\"name\":\"storage.type.block.abap\"},\"2\":{\"name\":\"entity.name.type.abap\"},\"3\":{\"name\":\"entity.name.function.abap\"}},\"end\":\"\\\\s*\\\\.\\\\s*\\\\n?\",\"patterns\":[{\"match\":\"(?i)(?<=^|\\\\s)(BY(?:\\\\s+DATABASE(\\\\s+PROCEDURE|\\\\s+FUNCTION|\\\\s+GRAPH\\\\s+WORKSPACE)|\\\\s+KERNEL\\\\s+MODULE))(?=\\\\s+|\\\\.)\",\"name\":\"storage.modifier.method.abap\"},{\"match\":\"(?i)(?<=^|\\\\s)(FOR\\\\s+(HDB|LLANG))(?=\\\\s+|\\\\.)\",\"name\":\"storage.modifier.method.abap\"},{\"match\":\"(?i)(?<=\\\\s)(OPTIONS\\\\s+(READ-ONLY|DETERMINISTIC|SUPPRESS\\\\s+SYNTAX\\\\s+ERRORS))(?=\\\\s+|\\\\.)\",\"name\":\"storage.modifier.method.abap\"},{\"match\":\"(?i)(?<=^|\\\\s)(LANGUAGE\\\\s+(SQLSCRIPT|SQL|GRAPH))(?=\\\\s+|\\\\.)\",\"name\":\"storage.modifier.method.abap\"},{\"captures\":{\"1\":{\"name\":\"storage.modifier.method.abap\"}},\"match\":\"(?i)(?<=\\\\s)(USING)\\\\s+([/_a-z][/-9=>_a-z]*)+(?=\\\\s+|\\\\.)\"},{\"begin\":\"(?=[A-Z_a-z][0-9A-Z_a-z]*)\",\"end\":\"(?![0-9A-Z_a-z])\",\"patterns\":[{\"include\":\"#generic_names\"}]}]},{\"begin\":\"(?i)^\\\\s*(INTERFACE)\\\\s([/_a-z][/-9_a-z]*)\",\"beginCaptures\":{\"1\":{\"name\":\"storage.type.block.abap\"},\"2\":{\"name\":\"entity.name.type.abap\"}},\"end\":\"\\\\s*\\\\.\\\\s*\\\\n?\",\"patterns\":[{\"match\":\"(?i)(?<=^|\\\\s)(DEFERRED|PUBLIC)(?=\\\\s+|\\\\.)\",\"name\":\"storage.modifier.method.abap\"}]},{\"begin\":\"(?i)^\\\\s*(FORM)\\\\s([/_a-z][-/-9?_a-z]*)\",\"beginCaptures\":{\"1\":{\"name\":\"storage.type.block.abap\"},\"2\":{\"name\":\"entity.name.type.abap\"}},\"end\":\"\\\\s*\\\\.\\\\s*\\\\n?\",\"patterns\":[{\"match\":\"(?i)(?<=^|\\\\s)(USING|TABLES|CHANGING|RAISING|IMPLEMENTATION|DEFINITION)(?=\\\\s+|\\\\.)\",\"name\":\"storage.modifier.form.abap\"},{\"include\":\"#abaptypes\"},{\"include\":\"#keywords_followed_by_braces\"}]},{\"match\":\"(?i)(end(?:class|method|form|interface))\",\"name\":\"storage.type.block.end.abap\"},{\"match\":\"(?i)(<[A-Z_a-z][0-9A-Z_a-z]*>)\",\"name\":\"variable.other.field.symbol.abap\"},{\"include\":\"#keywords\"},{\"include\":\"#abap_constants\"},{\"include\":\"#reserved_names\"},{\"include\":\"#operators\"},{\"include\":\"#builtin_functions\"},{\"include\":\"#abaptypes\"},{\"include\":\"#system_fields\"},{\"include\":\"#sql_functions\"},{\"include\":\"#sql_types\"}],\"repository\":{\"abap_constants\":{\"match\":\"(?i)(?<=\\\\s)(initial|null|@?space|@?abap_true|@?abap_false|@?abap_undefined|table_line|%_final|%_hints|%_predefined|col_background|col_group|col_heading|col_key|col_negative|col_normal|col_positive|col_total|adabas|as400|db2|db6|hdb|oracle|sybase|mssqlnt|pos_low|pos_high)(?=[,.\\\\s])\",\"name\":\"constant.language.abap\"},\"abaptypes\":{\"patterns\":[{\"match\":\"(?i)\\\\s(abap_bool|string|xstring|any|clike|csequence|numeric|xsequence|decfloat|decfloat16|decfloat34|utclong|simple|int8|[cdfinptx])(?=[,.\\\\s])\",\"name\":\"support.type.abap\"},{\"match\":\"(?i)\\\\s(TYPE|REF|TO|LIKE|LINE|OF|STRUCTURE|STANDARD|SORTED|HASHED|INDEX|TABLE|WITH|UNIQUE|NON-UNIQUE|SECONDARY|DEFAULT|KEY)(?=[,.\\\\s])\",\"name\":\"keyword.control.simple.abap\"}]},\"arithmetic_operator\":{\"match\":\"(?i)(?<=\\\\s)([-*+]|\\\\*\\\\*|[%/]|DIV|MOD|BIT-AND|BIT-OR|BIT-XOR|BIT-NOT)(?=\\\\s)\",\"name\":\"keyword.control.simple.abap\"},\"builtin_functions\":{\"match\":\"(?i)(?<=\\\\s)(abs|sign|ceil|floor|trunc|frac|acos|asin|atan|cos|sin|tan|cosh|sinh|tanh|exp|log|log10|sqrt|strlen|xstrlen|charlen|lines|numofchar|dbmaxlen|round|rescale|nmax|nmin|cmax|cmin|boolc|boolx|xsdbool|contains|contains_any_of|contains_any_not_of|matches|line_exists|ipow|char_off|count|count_any_of|count_any_not_of|distance|condense|concat_lines_of|escape|find|find_end|find_any_of|find_any_not_of|insert|match|repeat|replace|reverse|segment|shift_left|shift_right|substring|substring_after|substring_from|substring_before|substring_to|to_upper|to_lower|to_mixed|from_mixed|translate|bit-set|line_index)(?=\\\\()\",\"name\":\"entity.name.function.builtin.abap\"},\"comparison_operator\":{\"match\":\"(?i)(?<=\\\\s)([<>]|<=|>=|=|<>|eq|ne|lt|le|gt|ge|cs|cp|co|cn|ca|na|ns|np|byte-co|byte-cn|byte-ca|byte-na|byte-cs|byte-ns|[moz])(?=\\\\s)\",\"name\":\"keyword.control.simple.abap\"},\"control_keywords\":{\"match\":\"(?i)(^|\\\\s)(at|case|catch|continue|do|elseif|else|endat|endcase|endcatch|enddo|endif|endloop|endon|endtry|endwhile|if|loop|on|raise|try|while)(?=[.:\\\\s])\",\"name\":\"keyword.control.flow.abap\"},\"generic_names\":{\"match\":\"[A-Z_a-z][0-9A-Z_a-z]*\"},\"keywords\":{\"patterns\":[{\"include\":\"#main_keywords\"},{\"include\":\"#text_symbols\"},{\"include\":\"#control_keywords\"},{\"include\":\"#keywords_followed_by_braces\"}]},\"keywords_followed_by_braces\":{\"captures\":{\"1\":{\"name\":\"keyword.control.simple.abap\"},\"2\":{\"name\":\"variable.other.abap\"}},\"match\":\"(?i)\\\\b(data|value|field-symbol|final|reference|resumable)\\\\((<?[/_a-z][/-9_a-z]*>?)\\\\)\"},\"logical_operator\":{\"match\":\"(?i)(?<=\\\\s)(not|or|and)(?=\\\\s)\",\"name\":\"keyword.control.simple.abap\"},\"main_keywords\":{\"match\":\"(?i)(?<=^|\\\\s)(abap-source|abstract|accept|accepting|access|according|action|activation|actual|add|add-corresponding|adjacent|after|alias|aliases|all|allocate|amdp|analysis|analyzer|append|appending|application|archive|area|arithmetic|as|ascending|assert|assign|assigned|assigning|association|asynchronous|at|attributes|authority|authority-check|authorization|auto|back|background|backward|badi|base|before|begin|behavior|between|binary|bit|blanks??|blocks??|bound|boundaries|bounds|boxed|break|break-point|buffer|by|bypassing|byte|byte-order|call|calling|cast|casting|cds|centered|change|changing|channels|char-to-hex|character|check|checkbox|cid|circular|class|class-data|class-events|class-methods??|class-pool|cleanup|clear|clients??|clock|clone|close|cnt|code|collect|color|column|comments??|commit|common|communication|comparing|components??|compression|compute|concatenate|cond|condense|condition|connection|constants??|contexts??|controls??|conv|conversion|convert|copy|corresponding|count|country|cover|create|currency|current|cursor|customer-function|data|database|datainfo|dataset|date|daylight|ddl|deallocate|decimals|declarations|deep|default|deferred|define|delete|deleting|demand|descending|describe|destination|detail|determine|dialog|did|directory|discarding|display|display-mode|distance|distinct|divide|divide-corresponding|dummy|duplicates??|duration|during|dynpro|edit|editor-call|empty|enabled|enabling|encoding|end|end-enhancement-section|end-of-definition|end-of-page|end-of-selection|end-test-injection|end-test-seam|endenhancement|endexec|endfunction|endian|ending|endmodule|endprovide|endselect|endwith|enhancement|enhancement-point|enhancement-section|enhancements|entities|entity|entries|entry|enum|equiv|errors|escape|escaping|events??|exact|except|exception|exception-table|exceptions|excluding|exec|execute|exists|exit|exit-command|expanding|explicit|exponent|export|exporting|extended|extension|extract|fail|failed|features|fetch|field|field-groups|field-symbols|fields|file|fill|filters??|final|find|first|first-line|fixed-point|flush|following|for|format|forward|found|frames??|free|from|full|function|function-pool|generate|get|giving|graph|groups??|handler??|hashed|having|headers??|heading|help-id|help-request|hide|hint|hold|hotspot|icon|id|identification|identifier|ignore|ignoring|immediately|implemented|implicit|import|importing|in|inactive|incl|includes??|including|increment|index|index-line|indicators|infotypes|inheriting|init|initial|initialization|inner|input|insert|instances??|intensified|interface|interface-pool|interfaces|internal|intervals|into|inverse|inverted-date|is|job|join|keep|keeping|kernel|keys??|keywords|kind|language|last|late|layout|leading|leave|left|left-justified|legacy|length|let|levels??|like|line|line-count|line-selection|line-size|linefeed|lines|link|list|list-processing|listbox|load|load-of-program|locale??|locks??|log-point|logical|lower|mapped|mapping|margin|mark|mask|match|matchcode|maximum|members|memory|mesh|message|message-id|messages|messaging|methods??|mode|modif|modifier|modify|module|move|move-corresponding|multiply|multiply-corresponding|name|nametab|native|nested|nesting|new|new-line|new-page|new-section|next|no-display|no-extension|no-gaps??|no-grouping|no-heading|no-scrolling|no-sign|no-title|no-zero|nodes|non-unicode|non-unique|number|objects??|objmgr|obligatory|occurences??|occurrences??|occurs|of|offset|on|only|open|optional|options??|order|others|out|outer|output|output-length|overflow|overlay|pack|package|padding|page|parameter|parameter-table|parameters|part|partially|pcre|perform|performing|permissions|pf-status|places|pool|position|pragmas|preceding|precompiled|preferred|preserving|primary|print|print-control|private|privileged|procedure|process|program|property|protected|provide|push|pushbutton|put|query|queue-only|queueonly|quickinfo|radiobutton|raising|ranges??|read|read-only|received??|receiving|redefinition|reduce|ref|reference|refresh|regex|reject|renaming|replace|replacement|replacing|report|reported|request|requested|required|reserve|reset|resolution|respecting|response|restore|results??|resumable|resume|retry|return|returning|right|right-justified|rollback|rows|rp-provide-from-last|run|sap|sap-spool|save|saving|scan|screen|scroll|scroll-boundary|scrolling|search|seconds|section|select|select-options|selection|selection-screen|selection-sets??|selection-table|selections|send|separated??|session|set|shared|shift|shortdump|shortdump-id|sign|simple|simulation|single|size|skip|skipping|smart|some|sort|sortable|sorted|source|specified|split|spool|spots|sql|stable|stamp|standard|start-of-selection|starting|state|statements??|statics??|statusinfo|step|step-loop|stop|structures??|style|subkey|submatches|submit|subroutine|subscreen|substring|subtract|subtract-corresponding|suffix|sum|summary|supplied|supply|suppress|switch|symbol|syntax-check|syntax-trace|system-call|system-exceptions|tab|tabbed|tables??|tableview|tabstrip|target|tasks??|test|test-injection|test-seam|testing|text|textpool|then|throw|times??|title|titlebar|to|tokens|top-lines|top-of-page|trace-file|trace-table|trailing|transaction|transfer|transformation|translate|transporting|trmac|truncate|truncation|type|type-pools??|types|uline|unassign|unbounded|under|unicode|union|unique|unit|unix|unpack|until|unwind|up|update|upper|user|user-command|using|utf-8|uuid|valid|validate|value|value-request|values|vary|varying|version|via|visible|wait|when|where|windows??|with|with-heading|with-title|without|word|work|workspace|write|xml|zone)(?=[,.:\\\\s])\",\"name\":\"keyword.control.simple.abap\"},\"operators\":{\"patterns\":[{\"include\":\"#other_operator\"},{\"include\":\"#arithmetic_operator\"},{\"include\":\"#comparison_operator\"},{\"include\":\"#logical_operator\"}]},\"other_operator\":{\"match\":\"(?<=\\\\s)(&&?|\\\\?=|\\\\+=|-=|/=|\\\\*=|&&=|&=)(?=\\\\s)\",\"name\":\"keyword.control.simple.abap\"},\"reserved_names\":{\"match\":\"(?i)(?<=\\\\s)(me|super)(?=[,.\\\\s]|->)\",\"name\":\"constant.language.abap\"},\"sql_functions\":{\"match\":\"(?i)(?<=\\\\s)(abap_system_timezone|abap_user_timezone|abs|add_days|add_months|allow_precision_loss|as_geo_json|avg|bintohex|cast|ceil|coalesce|concat_with_space|concat|corr_spearman|corr|count|currency_conversion|datn_add_days|datn_add_months|datn_days_between|dats_add_days|dats_add_months|dats_days_between|dats_from_datn|dats_is_valid|dats_tims_to_tstmp|dats_to_datn|dayname|days_between|dense_rank|division|div|extract_day|extract_hour|extract_minute|extract_month|extract_second|extract_year|first_value|floor|grouping|hextobin|initcap|instr|is_valid|lag|last_value|lead|left|length|like_regexpr|locate_regexpr_after|locate_regexpr|locate|lower|lpad|ltrim|max|median|min|mod|monthname|ntile|occurrences_regexpr|over|product|rank|replace_regexpr|replace|rigth|round|row_number|rpad|rtrim|stddev|string_agg|substring_regexpr|substring|sum|tims_from_timn|tims_is_valid|tims_to_timn|to_blob|to_clob|tstmp_add_seconds|tstmp_current_utctimestamp|tstmp_is_valid|tstmp_seconds_between|tstmp_to_dats|tstmp_to_dst|tstmp_to_tims|tstmpl_from_utcl|tstmpl_to_utcl|unit_conversion|upper|utcl_add_seconds|utcl_current|utcl_seconds_between|uuid|var|weekday)(?=\\\\()\",\"name\":\"entity.name.function.sql.abap\"},\"sql_types\":{\"match\":\"(?i)(?<=\\\\s)(char|clnt|cuky|curr|datn|dats|dec|decfloat16|decfloat34|fltp|int1|int2|int4|int8|lang|numc|quan|raw|sstring|timn|tims|unit|utclong)(?=[()\\\\s])\",\"name\":\"entity.name.type.sql.abap\"},\"system_fields\":{\"captures\":{\"1\":{\"name\":\"variable.language.abap\"},\"2\":{\"name\":\"variable.language.abap\"}},\"match\":\"(?i)\\\\b(sy)-(abcde|batch|binpt|calld|callr|colno|cpage|cprog|cucol|curow|datar|datlo|datum|dayst|dbcnt|dbnam|dbsysc|dyngr|dynnr|fdayw|fdpos|host|index|langu|ldbpg|lilli|linct|linno|linsz|lisel|listi|loopc|lsind|macol|mandt|marow|modno|msgid|msgli|msgno|msgty|msgv[1-4]|opsysc|pagno|pfkey|repid|saprl|scols|slset|spono|srows|staco|staro|stepl|subrc|sysid|tabix|tcode|tfill|timlo|title|tleng|tvar[0-9]|tzone|ucomm|uline|uname|uzeit|vline|wtitl|zonlo)(?=[.\\\\s])\"},\"text_symbols\":{\"captures\":{\"1\":{\"name\":\"keyword.control.simple.abap\"},\"2\":{\"name\":\"constant.numeric.abap\"}},\"match\":\"(?i)(?<=^|\\\\s)(text)-([0-9A-Z]{1,3})(?=[,.:\\\\s])\"}},\"scopeName\":\"source.abap\"}"))];
|
|
2
|
+
//#endregion
|
|
3
|
+
export { abap_default as default };
|