folderview 0.0.0-stage → 0.1.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/LICENSE +21 -0
- package/README.md +270 -2
- package/dist/cli.js +115 -0
- package/dist/client/assets/app.css +1 -0
- package/dist/client/assets/chunks/abap-EINPUMCJ.js +1 -0
- package/dist/client/assets/chunks/abnfDiagram-S7VZAUFO-W2CM2W6D.js +1 -0
- package/dist/client/assets/chunks/actionscript-3-O776AQUO.js +1 -0
- package/dist/client/assets/chunks/ada-WLOTXRTV.js +1 -0
- package/dist/client/assets/chunks/ahk-EF37A2DY.js +1 -0
- package/dist/client/assets/chunks/ahk2-FH4K3CKT.js +1 -0
- package/dist/client/assets/chunks/angular-html-ZALQFV2H.js +1 -0
- package/dist/client/assets/chunks/angular-ts-4IWMF7QO.js +1 -0
- package/dist/client/assets/chunks/apache-44AYOEWM.js +1 -0
- package/dist/client/assets/chunks/apex-XRYPID42.js +1 -0
- package/dist/client/assets/chunks/apl-5HBALFOI.js +1 -0
- package/dist/client/assets/chunks/applescript-2DZEHZEC.js +1 -0
- package/dist/client/assets/chunks/ara-ZGZQBLXL.js +1 -0
- package/dist/client/assets/chunks/architecture-WOLXFQ4H-EJGENNRL.js +1 -0
- package/dist/client/assets/chunks/architectureDiagram-YGSQEFNW-2VHWSKO6.js +36 -0
- package/dist/client/assets/chunks/asciidoc-GSQAKCPO.js +1 -0
- package/dist/client/assets/chunks/asm-BFURM5BK.js +1 -0
- package/dist/client/assets/chunks/astro-VJORWDZJ.js +1 -0
- package/dist/client/assets/chunks/awk-BSHTWXXX.js +1 -0
- package/dist/client/assets/chunks/ballerina-HAOQJ4B2.js +1 -0
- package/dist/client/assets/chunks/bat-OSH45EOF.js +1 -0
- package/dist/client/assets/chunks/beancount-RBATIHOV.js +1 -0
- package/dist/client/assets/chunks/berry-CZUIOUM4.js +1 -0
- package/dist/client/assets/chunks/bibtex-KCL2UWHE.js +1 -0
- package/dist/client/assets/chunks/bicep-SZJZB3SG.js +1 -0
- package/dist/client/assets/chunks/bird2-XBF5YQQV.js +1 -0
- package/dist/client/assets/chunks/blade-Q24LEVFC.js +1 -0
- package/dist/client/assets/chunks/blockDiagram-APKKGZFW-53LXSOOT.js +140 -0
- package/dist/client/assets/chunks/bpmnIcons-APHXDYXF-FMBRQNTY.js +1 -0
- package/dist/client/assets/chunks/bsl-TI44NWFB.js +1 -0
- package/dist/client/assets/chunks/c-NLHY4Y4N.js +1 -0
- package/dist/client/assets/chunks/c3-BUTEM6PO.js +1 -0
- package/dist/client/assets/chunks/c4Diagram-KJ2TOQU5-O53G4GQH.js +38 -0
- package/dist/client/assets/chunks/cadence-JIRTEU64.js +1 -0
- package/dist/client/assets/chunks/cairo-3W6NVDNW.js +1 -0
- package/dist/client/assets/chunks/chapel-BPBJ2E7K.js +1 -0
- package/dist/client/assets/chunks/chunk-25KVF5ZE.js +1 -0
- package/dist/client/assets/chunks/chunk-2CJKSQOI.js +1 -0
- package/dist/client/assets/chunks/chunk-2QIJRTWR.js +1 -0
- package/dist/client/assets/chunks/chunk-2ZCRJZGF.js +2 -0
- package/dist/client/assets/chunks/chunk-3ILNDZNY.js +213 -0
- package/dist/client/assets/chunks/chunk-3M2OOQ7S.js +1 -0
- package/dist/client/assets/chunks/chunk-3M57NTNK.js +1 -0
- package/dist/client/assets/chunks/chunk-3MR6DCZJ.js +1 -0
- package/dist/client/assets/chunks/chunk-3WGHS7F7.js +1 -0
- package/dist/client/assets/chunks/chunk-4JK75V33.js +1 -0
- package/dist/client/assets/chunks/chunk-4NXNVEWK.js +1 -0
- package/dist/client/assets/chunks/chunk-4RNNBDFQ.js +1 -0
- package/dist/client/assets/chunks/chunk-4T4NVH7V.js +1 -0
- package/dist/client/assets/chunks/chunk-4TFFBC35.js +1 -0
- package/dist/client/assets/chunks/chunk-4WYBE67P.js +1 -0
- package/dist/client/assets/chunks/chunk-56ITEUFA.js +1 -0
- package/dist/client/assets/chunks/chunk-5DXRE7IH.js +1 -0
- package/dist/client/assets/chunks/chunk-5IMADCNU.js +1 -0
- package/dist/client/assets/chunks/chunk-5XZPGKN4.js +1 -0
- package/dist/client/assets/chunks/chunk-6O32UKSP.js +1 -0
- package/dist/client/assets/chunks/chunk-7BAEB64Q.js +1 -0
- package/dist/client/assets/chunks/chunk-7FMWBHZO.js +1 -0
- package/dist/client/assets/chunks/chunk-7GFDITUT.js +1 -0
- package/dist/client/assets/chunks/chunk-7H4MLBHI.js +1 -0
- package/dist/client/assets/chunks/chunk-7OJ4MEEB.js +1 -0
- package/dist/client/assets/chunks/chunk-7RSEISFE.js +1 -0
- package/dist/client/assets/chunks/chunk-7YNZZQVT.js +1 -0
- package/dist/client/assets/chunks/chunk-AB7TIL2G.js +1 -0
- package/dist/client/assets/chunks/chunk-ADDF76FL.js +1 -0
- package/dist/client/assets/chunks/chunk-AF6UTCD4.js +321 -0
- package/dist/client/assets/chunks/chunk-AJ2K6ASU.js +1 -0
- package/dist/client/assets/chunks/chunk-AUBAENQZ.js +1 -0
- package/dist/client/assets/chunks/chunk-BJEYVZ65.js +1 -0
- package/dist/client/assets/chunks/chunk-BLRM6LXA.js +1 -0
- package/dist/client/assets/chunks/chunk-BOCTYCDZ.js +1 -0
- package/dist/client/assets/chunks/chunk-BU4VRYN7.js +1 -0
- package/dist/client/assets/chunks/chunk-CALYHV7D.js +1 -0
- package/dist/client/assets/chunks/chunk-CF4W3RZ4.js +1 -0
- package/dist/client/assets/chunks/chunk-DCZ2OBSL.js +1 -0
- package/dist/client/assets/chunks/chunk-DUFPBTHD.js +1 -0
- package/dist/client/assets/chunks/chunk-DUICIQBC.js +88 -0
- package/dist/client/assets/chunks/chunk-EH2N475V.js +1 -0
- package/dist/client/assets/chunks/chunk-EHLLNPZT.js +1 -0
- package/dist/client/assets/chunks/chunk-EIBFAW37.js +1 -0
- package/dist/client/assets/chunks/chunk-EO3ER3GN.js +1 -0
- package/dist/client/assets/chunks/chunk-FH24BIIA.js +1 -0
- package/dist/client/assets/chunks/chunk-FNOXGAL5.js +2 -0
- package/dist/client/assets/chunks/chunk-FTY6WLQF.js +3 -0
- package/dist/client/assets/chunks/chunk-FZFME6UK.js +1 -0
- package/dist/client/assets/chunks/chunk-FZJZZYYO.js +1 -0
- package/dist/client/assets/chunks/chunk-G4Z6L7OO.js +1 -0
- package/dist/client/assets/chunks/chunk-GNCEAN2B.js +1 -0
- package/dist/client/assets/chunks/chunk-GQJIKV3T.js +1 -0
- package/dist/client/assets/chunks/chunk-GUMNOKT2.js +1 -0
- package/dist/client/assets/chunks/chunk-GXRORAF3.js +1 -0
- package/dist/client/assets/chunks/chunk-H36ABDKY.js +1 -0
- package/dist/client/assets/chunks/chunk-HAR5NYVW.js +1 -0
- package/dist/client/assets/chunks/chunk-HIGPS4L2.js +1 -0
- package/dist/client/assets/chunks/chunk-HMOBGTME.js +1 -0
- package/dist/client/assets/chunks/chunk-HNO6SQ7M.js +1 -0
- package/dist/client/assets/chunks/chunk-HYVZ3GYN.js +1 -0
- package/dist/client/assets/chunks/chunk-I6TGFOQS.js +1 -0
- package/dist/client/assets/chunks/chunk-IHIOJK7I.js +1 -0
- package/dist/client/assets/chunks/chunk-IHJNUMSC.js +1 -0
- package/dist/client/assets/chunks/chunk-IP7PB2OC.js +1 -0
- package/dist/client/assets/chunks/chunk-ISDTMH2Y.js +1 -0
- package/dist/client/assets/chunks/chunk-J65M2LNT.js +1 -0
- package/dist/client/assets/chunks/chunk-JCWYZ7X2.js +62 -0
- package/dist/client/assets/chunks/chunk-JENWYTLI.js +1 -0
- package/dist/client/assets/chunks/chunk-JJ6YWJQS.js +1 -0
- package/dist/client/assets/chunks/chunk-JMUVGGX7.js +32 -0
- package/dist/client/assets/chunks/chunk-JNQUFMM4.js +1 -0
- package/dist/client/assets/chunks/chunk-JPTECOAL.js +1 -0
- package/dist/client/assets/chunks/chunk-JZNK4LKS.js +1 -0
- package/dist/client/assets/chunks/chunk-KPNXJBIW.js +1 -0
- package/dist/client/assets/chunks/chunk-KZO2GZL7.js +1 -0
- package/dist/client/assets/chunks/chunk-L2REESOQ.js +1 -0
- package/dist/client/assets/chunks/chunk-LJPJXR7R.js +1 -0
- package/dist/client/assets/chunks/chunk-LOEZMLCI.js +1 -0
- package/dist/client/assets/chunks/chunk-MLYC6FSE.js +1 -0
- package/dist/client/assets/chunks/chunk-MMDGEZYU.js +1 -0
- package/dist/client/assets/chunks/chunk-MYXE7CGE.js +1 -0
- package/dist/client/assets/chunks/chunk-NBH7YOBD.js +15 -0
- package/dist/client/assets/chunks/chunk-NCOVM3YF.js +1 -0
- package/dist/client/assets/chunks/chunk-NCWOBVU7.js +1 -0
- package/dist/client/assets/chunks/chunk-NLRIHHEH.js +1 -0
- package/dist/client/assets/chunks/chunk-NUPEOYK6.js +1 -0
- package/dist/client/assets/chunks/chunk-O4MVOA7X.js +1 -0
- package/dist/client/assets/chunks/chunk-OBHQQZ4H.js +1 -0
- package/dist/client/assets/chunks/chunk-OKPNJIIR.js +1 -0
- package/dist/client/assets/chunks/chunk-OLMPB57R.js +1 -0
- package/dist/client/assets/chunks/chunk-P2FYOAEV.js +1 -0
- package/dist/client/assets/chunks/chunk-PI3SNP4C.js +1 -0
- package/dist/client/assets/chunks/chunk-PRDTEROB.js +1 -0
- package/dist/client/assets/chunks/chunk-PZELHD2H.js +136 -0
- package/dist/client/assets/chunks/chunk-QR2Q34LM.js +1 -0
- package/dist/client/assets/chunks/chunk-R4GIXL6S.js +1 -0
- package/dist/client/assets/chunks/chunk-RORF4F5V.js +1 -0
- package/dist/client/assets/chunks/chunk-S73BYTLL.js +1 -0
- package/dist/client/assets/chunks/chunk-SFC5MRYR.js +1 -0
- package/dist/client/assets/chunks/chunk-SVM2H22K.js +2 -0
- package/dist/client/assets/chunks/chunk-SZ6UCGVD.js +1 -0
- package/dist/client/assets/chunks/chunk-SZYM6GIJ.js +127 -0
- package/dist/client/assets/chunks/chunk-TT5KJZKM.js +1 -0
- package/dist/client/assets/chunks/chunk-UFBKUYNH.js +1 -0
- package/dist/client/assets/chunks/chunk-UL57AD4T.js +1 -0
- package/dist/client/assets/chunks/chunk-UNEI7LMM.js +1 -0
- package/dist/client/assets/chunks/chunk-VNQBBFIY.js +1 -0
- package/dist/client/assets/chunks/chunk-WGVITPII.js +1 -0
- package/dist/client/assets/chunks/chunk-WRA6KJHX.js +10 -0
- package/dist/client/assets/chunks/chunk-WS5EHW43.js +1 -0
- package/dist/client/assets/chunks/chunk-XE6SLBBE.js +3 -0
- package/dist/client/assets/chunks/chunk-XF5T2P7U.js +72 -0
- package/dist/client/assets/chunks/chunk-XFRY5WKO.js +1 -0
- package/dist/client/assets/chunks/chunk-XWYV4OPA.js +1 -0
- package/dist/client/assets/chunks/chunk-YCE5ECKY.js +1 -0
- package/dist/client/assets/chunks/chunk-YIN5CSIF.js +1 -0
- package/dist/client/assets/chunks/chunk-YLFUX6XH.js +1 -0
- package/dist/client/assets/chunks/chunk-YNXJICZM.js +1 -0
- package/dist/client/assets/chunks/chunk-YOHF7NGD.js +1 -0
- package/dist/client/assets/chunks/chunk-YORIST7Z.js +1 -0
- package/dist/client/assets/chunks/chunk-YUL7CG4R.js +1 -0
- package/dist/client/assets/chunks/chunk-YUN7JSFJ.js +2 -0
- package/dist/client/assets/chunks/chunk-YZ7D2IT7.js +1 -0
- package/dist/client/assets/chunks/chunk-Z7LAPMFJ.js +1 -0
- package/dist/client/assets/chunks/chunk-ZE325LPC.js +1 -0
- package/dist/client/assets/chunks/chunk-ZN7TN6PO.js +1 -0
- package/dist/client/assets/chunks/chunk-ZST3EVPO.js +1 -0
- package/dist/client/assets/chunks/chunk-ZZHMDDZN.js +1 -0
- package/dist/client/assets/chunks/clarity-RKRYQ7WF.js +1 -0
- package/dist/client/assets/chunks/classDiagram-v2-L25IHNXF-Y67HVDZV.js +217 -0
- package/dist/client/assets/chunks/clojure-2X2DQECJ.js +1 -0
- package/dist/client/assets/chunks/cmake-LH5524XE.js +1 -0
- package/dist/client/assets/chunks/cobol-7DALQF3W.js +1 -0
- package/dist/client/assets/chunks/codeowners-52SZU5P5.js +1 -0
- package/dist/client/assets/chunks/codeql-EISH3KUP.js +1 -0
- package/dist/client/assets/chunks/coffee-VAWSGA7Y.js +1 -0
- package/dist/client/assets/chunks/common-lisp-4MVK2AN6.js +1 -0
- package/dist/client/assets/chunks/coq-4VRYZRZV.js +1 -0
- package/dist/client/assets/chunks/core-BRBMZSD2.js +12 -0
- package/dist/client/assets/chunks/cose-bilkent-JH36ORCC-BIOOHSAA.js +1 -0
- package/dist/client/assets/chunks/cpp-RFECMSKD.js +1 -0
- package/dist/client/assets/chunks/crystal-ZBGGFAOI.js +1 -0
- package/dist/client/assets/chunks/csharp-BZDPMKKW.js +1 -0
- package/dist/client/assets/chunks/css-3WWGM6UD.js +1 -0
- package/dist/client/assets/chunks/csv-AB4GNWSB.js +1 -0
- package/dist/client/assets/chunks/cue-2E46MZP2.js +1 -0
- package/dist/client/assets/chunks/cynefin-EF2NZ3EQ-TLFQLWUN.js +1 -0
- package/dist/client/assets/chunks/cynefinDiagram-L36ESFBY-FLPXCSSG.js +62 -0
- package/dist/client/assets/chunks/cypher-HR3ILFOL.js +1 -0
- package/dist/client/assets/chunks/d-TARSZPOL.js +1 -0
- package/dist/client/assets/chunks/dagre-SPEB5RXH-7EGEINJ2.js +4 -0
- package/dist/client/assets/chunks/dart-SALLJHVI.js +1 -0
- package/dist/client/assets/chunks/dax-WYMRGMXC.js +1 -0
- package/dist/client/assets/chunks/desktop-ND5CGLLJ.js +1 -0
- package/dist/client/assets/chunks/diagram-3B7GL73J-6USY4HZX.js +200 -0
- package/dist/client/assets/chunks/diagram-DNEMPZML-BNSOC4VW.js +24 -0
- package/dist/client/assets/chunks/diagram-L3MUGCDN-5V5FZYIG.js +41 -0
- package/dist/client/assets/chunks/diagram-LA4NIPWU-25VLY2CO.js +24 -0
- package/dist/client/assets/chunks/diagram-MHCOC4E2-G2LFP3JU.js +3 -0
- package/dist/client/assets/chunks/diagram-XPFHEONP-E6HBBIBV.js +30 -0
- package/dist/client/assets/chunks/diff-PWYGPM7B.js +1 -0
- package/dist/client/assets/chunks/docker-A4D7DT7W.js +1 -0
- package/dist/client/assets/chunks/dotenv-VWQWV2DY.js +1 -0
- package/dist/client/assets/chunks/dream-maker-M5YDQS35.js +1 -0
- package/dist/client/assets/chunks/ebnfDiagram-UZSYDL2S-BMXXZZPI.js +1 -0
- package/dist/client/assets/chunks/edge-3QXIDJHI.js +1 -0
- package/dist/client/assets/chunks/elixir-3OX2UHIZ.js +1 -0
- package/dist/client/assets/chunks/elk-XV6XMXQE-IPR65FON.js +27 -0
- package/dist/client/assets/chunks/elm-CTS65NCT.js +1 -0
- package/dist/client/assets/chunks/emacs-lisp-HHS2IDO7.js +1 -0
- package/dist/client/assets/chunks/engine-javascript-DNHSF67B.js +141 -0
- package/dist/client/assets/chunks/erDiagram-EYBAPDEH-3GEHFWHG.js +99 -0
- package/dist/client/assets/chunks/erb-ICYWK6HS.js +1 -0
- package/dist/client/assets/chunks/erlang-BDQPNCKX.js +1 -0
- package/dist/client/assets/chunks/eventmodeling-K75KTNOO-B27BJTZL.js +1 -0
- package/dist/client/assets/chunks/fennel-4ONBA2PH.js +1 -0
- package/dist/client/assets/chunks/fish-ATLPBZSD.js +1 -0
- package/dist/client/assets/chunks/flowDiagram-MALGAFMO-5PCLR4AE.js +1 -0
- package/dist/client/assets/chunks/fluent-GGMONBVW.js +1 -0
- package/dist/client/assets/chunks/fortran-fixed-form-5MSBDRWQ.js +1 -0
- package/dist/client/assets/chunks/fortran-free-form-TT3RBL75.js +1 -0
- package/dist/client/assets/chunks/fsharp-PAGHNW4O.js +1 -0
- package/dist/client/assets/chunks/ganttDiagram-23REXITY-VE5MVBTO.js +292 -0
- package/dist/client/assets/chunks/gdresource-5OTP326D.js +1 -0
- package/dist/client/assets/chunks/gdscript-VPWHSCLF.js +1 -0
- package/dist/client/assets/chunks/gdshader-FYLPXFE5.js +1 -0
- package/dist/client/assets/chunks/genie-UYMEEMA2.js +1 -0
- package/dist/client/assets/chunks/gherkin-SU7D5DMY.js +1 -0
- package/dist/client/assets/chunks/git-commit-5CF5QAG7.js +1 -0
- package/dist/client/assets/chunks/git-rebase-X72BAUZI.js +1 -0
- package/dist/client/assets/chunks/gitGraph-VSP46ZUC-J6CJ5YZF.js +1 -0
- package/dist/client/assets/chunks/gitGraphDiagram-STJD7YCW-7YJGT6ZP.js +106 -0
- package/dist/client/assets/chunks/gleam-LR42YRKO.js +1 -0
- package/dist/client/assets/chunks/glimmer-js-JPF67FJU.js +1 -0
- package/dist/client/assets/chunks/glimmer-ts-BYPAVIZT.js +1 -0
- package/dist/client/assets/chunks/glsl-GTGUULBN.js +1 -0
- package/dist/client/assets/chunks/gn-NMDQA4K3.js +1 -0
- package/dist/client/assets/chunks/gnuplot-UUAMYBCZ.js +1 -0
- package/dist/client/assets/chunks/go-4RERSTNP.js +1 -0
- package/dist/client/assets/chunks/graphql-5A6RK6YF.js +1 -0
- package/dist/client/assets/chunks/groovy-O7BJONCU.js +1 -0
- package/dist/client/assets/chunks/hack-7QGTNPDP.js +1 -0
- package/dist/client/assets/chunks/haml-ON5GAWN4.js +1 -0
- package/dist/client/assets/chunks/handlebars-6UOQSUBP.js +1 -0
- package/dist/client/assets/chunks/haskell-OIZXZ26Y.js +1 -0
- package/dist/client/assets/chunks/haxe-7FFVS4FO.js +1 -0
- package/dist/client/assets/chunks/hcl-XFUFQJHV.js +1 -0
- package/dist/client/assets/chunks/hjson-QDBHMTD5.js +1 -0
- package/dist/client/assets/chunks/hlsl-4LP25FFN.js +1 -0
- package/dist/client/assets/chunks/html-7RNQXAAV.js +1 -0
- package/dist/client/assets/chunks/html-derivative-ESOY72Q2.js +1 -0
- package/dist/client/assets/chunks/http-SAD4PMBD.js +1 -0
- package/dist/client/assets/chunks/hurl-ZSJJXPQH.js +1 -0
- package/dist/client/assets/chunks/hxml-HJCC37RK.js +1 -0
- package/dist/client/assets/chunks/hy-CLDE3P4K.js +1 -0
- package/dist/client/assets/chunks/imba-REB34U5V.js +1 -0
- package/dist/client/assets/chunks/info-OHQRW6UA-EQQKXR77.js +1 -0
- package/dist/client/assets/chunks/infoDiagram-KBXO4MBG-F6KGZCGS.js +2 -0
- package/dist/client/assets/chunks/ini-PDFEMGRA.js +1 -0
- package/dist/client/assets/chunks/ishikawaDiagram-M35NCXHK-5D6ZOZ34.js +70 -0
- package/dist/client/assets/chunks/java-KB6XENAD.js +1 -0
- package/dist/client/assets/chunks/javascript-3JX5T423.js +1 -0
- package/dist/client/assets/chunks/jinja-V4UNU6K4.js +1 -0
- package/dist/client/assets/chunks/jison-KH5XNLJP.js +1 -0
- package/dist/client/assets/chunks/journeyDiagram-OPLOXDXO-ANDOJZKW.js +139 -0
- package/dist/client/assets/chunks/json-HPXFRRPY.js +1 -0
- package/dist/client/assets/chunks/json5-LJM6TXWM.js +1 -0
- package/dist/client/assets/chunks/jsonc-UZWRU3JV.js +1 -0
- package/dist/client/assets/chunks/jsonl-RFZD5UN4.js +1 -0
- package/dist/client/assets/chunks/jsonnet-GFZABBL6.js +1 -0
- package/dist/client/assets/chunks/jssm-2YIGBISJ.js +1 -0
- package/dist/client/assets/chunks/jsx-KLV2ZWUT.js +1 -0
- package/dist/client/assets/chunks/julia-3TZDIPPO.js +1 -0
- package/dist/client/assets/chunks/just-UHCONBQS.js +1 -0
- package/dist/client/assets/chunks/kanban-definition-BZKZHSQY-GF5I5NVD.js +89 -0
- package/dist/client/assets/chunks/katex-PIN72PQZ.js +257 -0
- package/dist/client/assets/chunks/kdl-DARTFOCL.js +1 -0
- package/dist/client/assets/chunks/kotlin-7KT5DW6Y.js +1 -0
- package/dist/client/assets/chunks/kusto-EKYXZTC5.js +1 -0
- package/dist/client/assets/chunks/langs-GO3UQR4H.js +1 -0
- package/dist/client/assets/chunks/latex-T57MIHR5.js +1 -0
- package/dist/client/assets/chunks/lean-5QVPRMV6.js +1 -0
- package/dist/client/assets/chunks/less-K6QEH5TN.js +1 -0
- package/dist/client/assets/chunks/liquid-3LCNNEIV.js +1 -0
- package/dist/client/assets/chunks/llvm-O32ZIVRF.js +1 -0
- package/dist/client/assets/chunks/log-C4YPJ5BB.js +1 -0
- package/dist/client/assets/chunks/logo-JPMO43A6.js +1 -0
- package/dist/client/assets/chunks/lua-YKVSOG7K.js +1 -0
- package/dist/client/assets/chunks/luau-K4EECYSO.js +1 -0
- package/dist/client/assets/chunks/make-VHSYMHHW.js +1 -0
- package/dist/client/assets/chunks/markdown-GC5J46H4.js +1 -0
- package/dist/client/assets/chunks/marko-U45YFADC.js +1 -0
- package/dist/client/assets/chunks/matlab-AMOKC4LU.js +1 -0
- package/dist/client/assets/chunks/mdc-DIGA2UXP.js +1 -0
- package/dist/client/assets/chunks/mdx-BZUGCKQA.js +1 -0
- package/dist/client/assets/chunks/mermaid-WHDP6ZPA.js +1 -0
- package/dist/client/assets/chunks/mermaid.core-SQMPMUDN.js +10 -0
- package/dist/client/assets/chunks/mindmap-definition-I2QAS2VK-4NH5S56C.js +98 -0
- package/dist/client/assets/chunks/mipsasm-2S4CUGQV.js +1 -0
- package/dist/client/assets/chunks/mojo-ZOL2PNKT.js +1 -0
- package/dist/client/assets/chunks/moonbit-U3BDAIFE.js +1 -0
- package/dist/client/assets/chunks/move-YSXALBWA.js +1 -0
- package/dist/client/assets/chunks/narrat-DHFIAUJH.js +1 -0
- package/dist/client/assets/chunks/nextflow-ESAKNTI3.js +1 -0
- package/dist/client/assets/chunks/nextflow-groovy-FKDSPJUI.js +1 -0
- package/dist/client/assets/chunks/nginx-XYAYERLO.js +1 -0
- package/dist/client/assets/chunks/nim-XOWBVFDH.js +1 -0
- package/dist/client/assets/chunks/nix-RVSTQSHC.js +1 -0
- package/dist/client/assets/chunks/nsis-KMDUKQRL.js +1 -0
- package/dist/client/assets/chunks/nushell-SKJHHZ7U.js +1 -0
- package/dist/client/assets/chunks/objective-c-3B3KXQ7Q.js +1 -0
- package/dist/client/assets/chunks/objective-cpp-6JDULPJS.js +1 -0
- package/dist/client/assets/chunks/ocaml-TMRFXBVO.js +1 -0
- package/dist/client/assets/chunks/odin-IN3PLCK7.js +1 -0
- package/dist/client/assets/chunks/openscad-P52IKPNH.js +1 -0
- package/dist/client/assets/chunks/org-N3SJ2PIA.js +1 -0
- package/dist/client/assets/chunks/packet-JDAUHWVQ-4SWIKSKP.js +1 -0
- package/dist/client/assets/chunks/pascal-T7CUWCQ4.js +1 -0
- package/dist/client/assets/chunks/pegDiagram-FD4XPPHP-WDKZSEGN.js +1 -0
- package/dist/client/assets/chunks/perl-LCZ4KODH.js +1 -0
- package/dist/client/assets/chunks/php-4XHMBVR5.js +1 -0
- package/dist/client/assets/chunks/pie-XZMESJXO-PSSWOWGV.js +1 -0
- package/dist/client/assets/chunks/pieDiagram-J4AKIIQI-BDW5I5ON.js +39 -0
- package/dist/client/assets/chunks/pkl-OACG5B67.js +1 -0
- package/dist/client/assets/chunks/plsql-7E5C7CJX.js +1 -0
- package/dist/client/assets/chunks/po-ZSREFRRP.js +1 -0
- package/dist/client/assets/chunks/polar-4GBINVA7.js +1 -0
- package/dist/client/assets/chunks/postcss-B7RPVGFW.js +1 -0
- package/dist/client/assets/chunks/powerquery-6UFMTY4G.js +1 -0
- package/dist/client/assets/chunks/powershell-3STRPCNT.js +1 -0
- package/dist/client/assets/chunks/prisma-4TPSPIZ5.js +1 -0
- package/dist/client/assets/chunks/prolog-HEAYPKQW.js +1 -0
- package/dist/client/assets/chunks/proto-Y3Y3VKXM.js +1 -0
- package/dist/client/assets/chunks/pug-7PBPMG3M.js +1 -0
- package/dist/client/assets/chunks/puppet-FR35R4OI.js +1 -0
- package/dist/client/assets/chunks/purescript-OUHXQAOW.js +1 -0
- package/dist/client/assets/chunks/python-SNDG7FNU.js +1 -0
- package/dist/client/assets/chunks/qml-UVIOSWP4.js +1 -0
- package/dist/client/assets/chunks/qmldir-6JGUNYL5.js +1 -0
- package/dist/client/assets/chunks/qss-ZCC466IZ.js +1 -0
- package/dist/client/assets/chunks/quadrantDiagram-XTYBLID2-5VKXWVJ6.js +7 -0
- package/dist/client/assets/chunks/r-4XW4O3ZF.js +1 -0
- package/dist/client/assets/chunks/racket-YJAYXOOG.js +1 -0
- package/dist/client/assets/chunks/radar-ABXABTNO-3AXZCEY2.js +1 -0
- package/dist/client/assets/chunks/railroad-I3PHUGI6-2PLXYPOT.js +1 -0
- package/dist/client/assets/chunks/railroad-abnf-LNEFI6M7-M4DGICQX.js +1 -0
- package/dist/client/assets/chunks/railroad-ebnf-DWYD2UWJ-UEIHQMSZ.js +1 -0
- package/dist/client/assets/chunks/railroad-peg-JR7BVNR7-I7VLIBXM.js +1 -0
- package/dist/client/assets/chunks/railroadDiagram-MRQ6NCDL-Y6IYWEFL.js +1 -0
- package/dist/client/assets/chunks/raku-63NEL5JK.js +1 -0
- package/dist/client/assets/chunks/razor-J3CJP523.js +1 -0
- package/dist/client/assets/chunks/rbs-6GQLT7NW.js +1 -0
- package/dist/client/assets/chunks/reg-6Q3OEC2C.js +1 -0
- package/dist/client/assets/chunks/regexp-LPIMILT3.js +1 -0
- package/dist/client/assets/chunks/rel-TOQGUTHB.js +1 -0
- package/dist/client/assets/chunks/requirementDiagram-Y7LWUY3S-CIWXVVWJ.js +84 -0
- package/dist/client/assets/chunks/riscv-UELGBOXE.js +1 -0
- package/dist/client/assets/chunks/ron-FW7LCJJH.js +1 -0
- package/dist/client/assets/chunks/rosmsg-O63VHE3L.js +1 -0
- package/dist/client/assets/chunks/rst-3WJXGLA7.js +1 -0
- package/dist/client/assets/chunks/ruby-7S7L6JTH.js +1 -0
- package/dist/client/assets/chunks/rust-LIK4HRRI.js +1 -0
- package/dist/client/assets/chunks/sankeyDiagram-WGJFYUXA-OGNQPX5V.js +40 -0
- package/dist/client/assets/chunks/sas-FHDPZ2JH.js +1 -0
- package/dist/client/assets/chunks/sass-UI4HW2FN.js +1 -0
- package/dist/client/assets/chunks/scala-KN7RQSUJ.js +1 -0
- package/dist/client/assets/chunks/scheme-5R527YZ5.js +1 -0
- package/dist/client/assets/chunks/scss-KZ6DRE4A.js +1 -0
- package/dist/client/assets/chunks/sdbl-FHOCL5SL.js +1 -0
- package/dist/client/assets/chunks/sequenceDiagram-5NDRBG5M-QX2V24ZU.js +169 -0
- package/dist/client/assets/chunks/shaderlab-2TLHUS2H.js +1 -0
- package/dist/client/assets/chunks/shellscript-PIB6ZBDM.js +1 -0
- package/dist/client/assets/chunks/shellsession-5KL7NFNN.js +1 -0
- package/dist/client/assets/chunks/sizeCapture-INFHLROL-LCS2PIHM.js +1 -0
- package/dist/client/assets/chunks/smalltalk-JFLFU247.js +1 -0
- package/dist/client/assets/chunks/smithy-HONEXZAM.js +1 -0
- package/dist/client/assets/chunks/solidity-SJ3INJFZ.js +1 -0
- package/dist/client/assets/chunks/soy-ND4SWTM2.js +1 -0
- package/dist/client/assets/chunks/sparql-YB2JQBZD.js +1 -0
- package/dist/client/assets/chunks/splunk-UXIDDAWL.js +1 -0
- package/dist/client/assets/chunks/sql-K6OMG7SQ.js +1 -0
- package/dist/client/assets/chunks/ssh-config-I7KJY3KQ.js +1 -0
- package/dist/client/assets/chunks/stata-DNZ3DTFJ.js +1 -0
- package/dist/client/assets/chunks/stateDiagram-v2-FJ4FJNEA-LVAUWF3A.js +291 -0
- package/dist/client/assets/chunks/stylus-GWPR6IQY.js +1 -0
- package/dist/client/assets/chunks/surrealql-KQNHBWLC.js +1 -0
- package/dist/client/assets/chunks/svelte-YQKF25S4.js +1 -0
- package/dist/client/assets/chunks/swift-ZCIZUJXA.js +1 -0
- package/dist/client/assets/chunks/swimlanes-UMQ2AFYF-B3RQOARQ.js +1 -0
- package/dist/client/assets/chunks/swimlanesDiagram-OMPLPG4O-JOE33EOV.js +8 -0
- package/dist/client/assets/chunks/system-verilog-Y7E6FIO3.js +1 -0
- package/dist/client/assets/chunks/systemd-WHC7NBZP.js +1 -0
- package/dist/client/assets/chunks/talonscript-WC7SODAH.js +1 -0
- package/dist/client/assets/chunks/tasl-QHY2GTCB.js +1 -0
- package/dist/client/assets/chunks/tcl-VAMIL5PJ.js +1 -0
- package/dist/client/assets/chunks/temml-ISNSX3VV.js +96 -0
- package/dist/client/assets/chunks/templ-B3BHKWV4.js +1 -0
- package/dist/client/assets/chunks/terraform-Q4UEK6FK.js +1 -0
- package/dist/client/assets/chunks/tex-63OWCYAB.js +1 -0
- package/dist/client/assets/chunks/timeline-definition-SEUHKTQE-FDFTVAJG.js +120 -0
- package/dist/client/assets/chunks/toml-7Z4IPGES.js +1 -0
- package/dist/client/assets/chunks/treeView-D4JQ5SDB-ABSGRAGI.js +1 -0
- package/dist/client/assets/chunks/treemap-SAJKECNS-MYX2CBJN.js +1 -0
- package/dist/client/assets/chunks/ts-tags-DT62HE52.js +1 -0
- package/dist/client/assets/chunks/tsv-RTXHWADP.js +1 -0
- package/dist/client/assets/chunks/tsx-UANUBOC7.js +1 -0
- package/dist/client/assets/chunks/turtle-QVOUNUUL.js +1 -0
- package/dist/client/assets/chunks/twig-ZPC4BPDA.js +1 -0
- package/dist/client/assets/chunks/typescript-WGWKIMMW.js +1 -0
- package/dist/client/assets/chunks/typespec-TYCVR32J.js +1 -0
- package/dist/client/assets/chunks/typst-PIBFYUO6.js +1 -0
- package/dist/client/assets/chunks/usecaseDiagram-AFA6YXN4-KW7ADINR.js +370 -0
- package/dist/client/assets/chunks/v-3ERNWBSP.js +1 -0
- package/dist/client/assets/chunks/vala-UCBCT2GS.js +1 -0
- package/dist/client/assets/chunks/vb-DGI3VTPA.js +1 -0
- package/dist/client/assets/chunks/vennDiagram-NNMJR3RB-RDGLGOGM.js +34 -0
- package/dist/client/assets/chunks/verilog-G72NZROS.js +1 -0
- package/dist/client/assets/chunks/vhdl-PYGA77XE.js +1 -0
- package/dist/client/assets/chunks/viml-OOC5B5UU.js +1 -0
- package/dist/client/assets/chunks/vue-GTNHIOPG.js +1 -0
- package/dist/client/assets/chunks/vue-html-DKAMJV55.js +1 -0
- package/dist/client/assets/chunks/vue-vine-WTM5HREV.js +1 -0
- package/dist/client/assets/chunks/vyper-RHYEHOJM.js +1 -0
- package/dist/client/assets/chunks/wardley-7MLQ67FV-QJL2HSBT.js +1 -0
- package/dist/client/assets/chunks/wardleyDiagram-S7YFUSEH-A4XX3UJR.js +78 -0
- package/dist/client/assets/chunks/wasm-ZMM2Z5XV.js +1 -0
- package/dist/client/assets/chunks/wenyan-HF5UTKSJ.js +1 -0
- package/dist/client/assets/chunks/wgsl-O7D7OPO7.js +1 -0
- package/dist/client/assets/chunks/wikitext-T7BSWSKQ.js +1 -0
- package/dist/client/assets/chunks/wit-TKCHPPT6.js +1 -0
- package/dist/client/assets/chunks/wolfram-7MN66A7N.js +1 -0
- package/dist/client/assets/chunks/xml-NLTLAWOD.js +1 -0
- package/dist/client/assets/chunks/xsl-NZ4ECK3P.js +1 -0
- package/dist/client/assets/chunks/xychartDiagram-GGNKY7IX-OXJILWHR.js +7 -0
- package/dist/client/assets/chunks/yaml-HRJLEV3V.js +1 -0
- package/dist/client/assets/chunks/zenscript-4LLRSLPI.js +1 -0
- package/dist/client/assets/chunks/zig-Y7MUQFUO.js +1 -0
- package/dist/client/assets/main.js +169 -0
- package/dist/client/index.html +48 -0
- package/dist/config.js +322 -0
- package/dist/files.js +178 -0
- package/dist/git.js +232 -0
- package/dist/glob.js +89 -0
- package/dist/review.js +261 -0
- package/dist/search.js +136 -0
- package/dist/server.js +420 -0
- package/dist/watch.js +69 -0
- package/dist/zip.js +100 -0
- package/package.json +61 -4
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 ClickerMonkey
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,3 +1,271 @@
|
|
|
1
|
-
#
|
|
1
|
+
# folderview
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Browse, search and review any folder in your browser, on your computer or your phone.
|
|
4
|
+
|
|
5
|
+
```sh
|
|
6
|
+
npx folderview # the current folder, on http://localhost:4190
|
|
7
|
+
npx folderview ~/my-app --lan --open # another folder, reachable from your phone too
|
|
8
|
+
```
|
|
9
|
+
|
|
10
|
+
Or install it once with `npm i -g folderview`, then run `folderview`.
|
|
11
|
+
|
|
12
|
+
You get:
|
|
13
|
+
|
|
14
|
+
- **Code**, highlighted by Shiki, with line numbers and git change bars.
|
|
15
|
+
- **Markdown**, rendered the way GitHub renders it, plus **Mermaid diagrams** and **math**.
|
|
16
|
+
- **Previews** for images, audio, video, PDF, CSV, JSON, notebooks and fonts.
|
|
17
|
+
- **Git:** status colours, diffs and history.
|
|
18
|
+
- **Search** across files, and a fuzzy **Go to file**.
|
|
19
|
+
- **Downloads**, for single files and for whole folders as a zip.
|
|
20
|
+
- A **review mode**. Your comments on lines are saved to a file that an LLM agent can read and work through. Its
|
|
21
|
+
replies show up in your browser as it works.
|
|
22
|
+
|
|
23
|
+
The screenshots show folderview at phone size, open on a small demo repository (`npm run screenshots` builds it).
|
|
24
|
+
|
|
25
|
+
| | | |
|
|
26
|
+
|:-:|:-:|:-:|
|
|
27
|
+
|  |  |  |
|
|
28
|
+
| **Folders** with git colours | **Code**, with change bars | **Changes** for one file |
|
|
29
|
+
|  |  |  |
|
|
30
|
+
| **Review** comments on lines | Every comment, for an **agent** | **Markdown** |
|
|
31
|
+
|  |  |  |
|
|
32
|
+
| **Mermaid** diagrams | **Math** and code, dark mode | **All changes** |
|
|
33
|
+
|  |  |  |
|
|
34
|
+
| **Search** in files | **Go to file** | **Thumbnails** |
|
|
35
|
+
|  |  |  |
|
|
36
|
+
| **Images**: before and after | **History** | **JSON** tree |
|
|
37
|
+
|  |  |  |
|
|
38
|
+
| **CSV** as a table | **Dark mode** | **Settings** |
|
|
39
|
+
|
|
40
|
+
[docs/examples/markdown.md](docs/examples/markdown.md) shows everything the markdown view can draw.
|
|
41
|
+
|
|
42
|
+
## Viewing files
|
|
43
|
+
|
|
44
|
+
Each kind of file gets its own view. Files with source text also get a **Source** tab:
|
|
45
|
+
|
|
46
|
+
| Files | Shown as |
|
|
47
|
+
|---|---|
|
|
48
|
+
| Code and text (200+ languages) | Highlighted, with line numbers, change bars from git, wrap, copy, download, and links to a line (`#…&line=12` or `12-20`). |
|
|
49
|
+
| Markdown | Rendered GitHub-style: tables, task lists, `> [!NOTE]` alerts, footnotes, heading anchors, front matter, sanitised inline HTML, Mermaid (` ```mermaid `), math (`$…$`, `$$…$$`, ` ```math `). Relative links open in the viewer, and relative images load from the folder. |
|
|
50
|
+
| `.mmd`, `.mermaid` | The diagram |
|
|
51
|
+
| Images, SVG | The image and its size. Tap for full size. |
|
|
52
|
+
| Audio, video | A player that can seek |
|
|
53
|
+
| PDF | The browser's PDF viewer |
|
|
54
|
+
| HTML | A sandboxed preview where scripts don't run |
|
|
55
|
+
| CSV, TSV | A table you can sort and filter |
|
|
56
|
+
| JSON | A collapsible tree |
|
|
57
|
+
| Jupyter notebooks | Cells, outputs and plots |
|
|
58
|
+
| Fonts | Samples at several sizes, in your own text |
|
|
59
|
+
| Anything else | A hex dump of the first bytes |
|
|
60
|
+
|
|
61
|
+
Every file has a **Download** button. Every folder has one too, which downloads the folder as a `.zip` of what the
|
|
62
|
+
listing shows.
|
|
63
|
+
|
|
64
|
+
## Git
|
|
65
|
+
|
|
66
|
+
When the folder is in a git repository:
|
|
67
|
+
|
|
68
|
+
- **Colours:** names are coloured by state. Green is new or added, orange is changed, red is deleted, blue is
|
|
69
|
+
renamed, purple is a conflict. Ignored files are dimmed, or hidden if you choose.
|
|
70
|
+
- **Folders:** each folder has a dot for the most important change inside it.
|
|
71
|
+
- **Deleted files** still show, struck through, so you can open what they were.
|
|
72
|
+
- **Branch:** the top bar shows the branch, its commit, and how far it is ahead of or behind its upstream.
|
|
73
|
+
- **Changes:** lists every changed file with lines added and removed, and whether it's staged. It can also show
|
|
74
|
+
every diff on one page.
|
|
75
|
+
- **Each file** has **Changes** (its diff against the last commit) and **History** (its commits; tap one to see what
|
|
76
|
+
it changed). Images also get **Compare**: before and after, side by side.
|
|
77
|
+
|
|
78
|
+
## Search
|
|
79
|
+
|
|
80
|
+
- **Search in files:** press <kbd>/</kbd> or tap the search bar.
|
|
81
|
+
- Search everywhere, or only in the open folder.
|
|
82
|
+
- Turn on match case, whole word, or regular expression.
|
|
83
|
+
- Narrow it to some files with patterns like `*.ts, src/**, !*.test.ts`.
|
|
84
|
+
- In a git repository it uses `git grep` to find candidate files first, so it's quick on big repositories.
|
|
85
|
+
- It skips ignored files, excluded files, secrets and binaries.
|
|
86
|
+
- **Go to file:** press <kbd>Ctrl</kbd> <kbd>P</kbd> (or <kbd>Ctrl</kbd> <kbd>K</kbd>), or tap the file icon. Type
|
|
87
|
+
any part of a file or folder name. Start with `?` to search inside files instead.
|
|
88
|
+
|
|
89
|
+
## Live
|
|
90
|
+
|
|
91
|
+
When a file changes on disk, open pages update by themselves: the listing, the git colours, and the open file.
|
|
92
|
+
|
|
93
|
+
## Review mode: comments an agent can work through
|
|
94
|
+
|
|
95
|
+
1. **Comment.** Tap a line number (Shift-click for a range), then **Comment**. The comment button in a file's header
|
|
96
|
+
comments on the whole file. You can comment on diff lines too. Turn on **Review mode** in Settings and a single
|
|
97
|
+
tap on any line starts a comment.
|
|
98
|
+
2. **Saved.** Comments are saved to `.review/comments.json`. Each one keeps the quoted lines and the commit it was
|
|
99
|
+
left on. The same comments are written to `.review/REVIEW.md`, grouped by file, with instructions for an agent.
|
|
100
|
+
3. **Hand it to your agent.** The Review page has **Copy prompt for an agent**. Paste it into Claude Code (or any
|
|
101
|
+
coding agent). The agent reads `REVIEW.md`, makes the changes, then sets each comment to `"resolved"` in
|
|
102
|
+
`comments.json` and adds a reply.
|
|
103
|
+
4. **Watch it work.** folderview watches `comments.json`, so the agent's replies and resolutions appear in your
|
|
104
|
+
browser as they happen.
|
|
105
|
+
|
|
106
|
+
### Where to look for feedback
|
|
107
|
+
|
|
108
|
+
folderview points you, or your agent, at the feedback in three places:
|
|
109
|
+
|
|
110
|
+
- **When it starts:** the terminal shows where comments are saved, plus an instruction you can paste into an agent:
|
|
111
|
+
|
|
112
|
+
```
|
|
113
|
+
Review feedback is saved to .review/REVIEW.md (and .review/comments.json).
|
|
114
|
+
For an agent: "Read .review/REVIEW.md. It lists review comments on files in this folder ..."
|
|
115
|
+
There are 2 open comments waiting: npx folderview review
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
- **While it runs:** each time the comments change, it prints a line. An agent that started folderview in the
|
|
119
|
+
background sees these in its output:
|
|
120
|
+
|
|
121
|
+
```
|
|
122
|
+
[9:16:04 PM] review: 2 open comments (of 2) → .review/REVIEW.md (or run: npx folderview review)
|
|
123
|
+
[9:16:24 PM] review: no open comments (2 resolved)
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
- **Any time:** `folderview review` prints the open comments in the folder (the same text as `REVIEW.md`), even when
|
|
127
|
+
folderview isn't running. Add `--all` to include resolved ones, or `--json` for a script.
|
|
128
|
+
|
|
129
|
+
```sh
|
|
130
|
+
npx folderview review # what's open, with instructions for an agent
|
|
131
|
+
npx folderview review ../app --all --json
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
To make an agent check on its own, add a line to its instructions file (`CLAUDE.md`, `AGENTS.md`, …):
|
|
135
|
+
|
|
136
|
+
```md
|
|
137
|
+
Before finishing a task, run `npx folderview review` and work through any open review comments.
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
Comments have replies, editing, resolve and reopen, and delete. Agents and scripts can also use the
|
|
141
|
+
[API](#the-api) directly.
|
|
142
|
+
|
|
143
|
+
## Options
|
|
144
|
+
|
|
145
|
+
```
|
|
146
|
+
folderview [folder] [options]
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
| Option | Environment variable | Default | |
|
|
150
|
+
|---|---|---|---|
|
|
151
|
+
| `folder` | `FOLDERVIEW_ROOT` | the current folder | The folder to serve |
|
|
152
|
+
| `-p, --port <n>` | `FOLDERVIEW_PORT` | `4190` | The port to try first; the next free one is used |
|
|
153
|
+
| `-H, --host <addr>` | `FOLDERVIEW_HOST` | `127.0.0.1` | The address to listen on |
|
|
154
|
+
| `--lan` | | | Same as `--host 0.0.0.0`: reachable from your phone and other devices |
|
|
155
|
+
| `--base <path>` | `FOLDERVIEW_BASE` | `/` | Serve under a URL path, such as `/code/`, behind a reverse proxy |
|
|
156
|
+
| `-o, --open` | `FOLDERVIEW_OPEN` | off | Open it in your browser |
|
|
157
|
+
| `-x, --exclude <globs>` | `FOLDERVIEW_EXCLUDE` | | Never show, serve, search or zip these. Comma-separated and repeatable. See [Excluding files](#excluding-files). |
|
|
158
|
+
| `--hide <names>` | `FOLDERVIEW_HIDE` | | Exact names to hide everywhere (`.git` always is) |
|
|
159
|
+
| `--show-secrets` | `FOLDERVIEW_SHOW_SECRETS` | off | Show `.env*`, `*.key`, `*.pem` and `id_rsa`-style files |
|
|
160
|
+
| `--token <t>` | `FOLDERVIEW_TOKEN` | | Require a token. Open `?token=…` once and it's kept as a cookie. |
|
|
161
|
+
| `--allow-host <h>` | `FOLDERVIEW_ALLOW_HOSTS` | | Also accept this host name, such as a tunnel's (`*` for any) |
|
|
162
|
+
| `--review-dir <dir>` | `FOLDERVIEW_REVIEW_DIR` | `.review` | Where comments are saved |
|
|
163
|
+
| `--title <name>` | `FOLDERVIEW_TITLE` | the folder's name | The name at the top of the page |
|
|
164
|
+
| `--author <name>` | `FOLDERVIEW_AUTHOR` | git `user.name` | The default name on comments |
|
|
165
|
+
| `--max-file-mb <n>` | `FOLDERVIEW_MAX_FILE_MB` | `5` | Larger files aren't shown as text or searched (download still works) |
|
|
166
|
+
| `--read-only` | `FOLDERVIEW_READ_ONLY` | off | Nobody can add comments |
|
|
167
|
+
| `--no-git` | `FOLDERVIEW_GIT=false` | git on | Don't use git |
|
|
168
|
+
| `--no-watch` | `FOLDERVIEW_WATCH=false` | watch on | No live updates |
|
|
169
|
+
| `--print-config` | | | Print the settings and where each came from, then exit |
|
|
170
|
+
|
|
171
|
+
Settings come from these places, highest first:
|
|
172
|
+
|
|
173
|
+
1. **Flags** on the command line.
|
|
174
|
+
2. **Environment variables.**
|
|
175
|
+
3. **`.folderviewrc.json`** in the folder.
|
|
176
|
+
4. **Your config file**, `~/.config/folderview/config.json`. `$XDG_CONFIG_HOME` moves it, or set `FOLDERVIEW_CONFIG` to
|
|
177
|
+
any path.
|
|
178
|
+
5. **The defaults.**
|
|
179
|
+
|
|
180
|
+
For true/false variables, `0`, `false`, `no` and `off` all mean off.
|
|
181
|
+
|
|
182
|
+
Both config files use the option names in camelCase:
|
|
183
|
+
|
|
184
|
+
```json
|
|
185
|
+
{
|
|
186
|
+
"port": 4300,
|
|
187
|
+
"exclude": ["*.log", "coverage/", "**/*.min.js"],
|
|
188
|
+
"title": "My app",
|
|
189
|
+
"readOnly": false
|
|
190
|
+
}
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
## Excluding files
|
|
194
|
+
|
|
195
|
+
Exclude patterns add up from every source: your config file, `.folderviewrc.json`, `FOLDERVIEW_EXCLUDE`, `--exclude`,
|
|
196
|
+
and a **`.folderviewignore`** file in the folder (one pattern per line, `#` for comments). They use `.gitignore`
|
|
197
|
+
syntax:
|
|
198
|
+
|
|
199
|
+
| Pattern | Excludes |
|
|
200
|
+
|---|---|
|
|
201
|
+
| `*.log` | Any `.log` file, in any folder |
|
|
202
|
+
| `dist/` | Any folder named `dist`, and everything in it |
|
|
203
|
+
| `/secrets` | Only `secrets` at the top of the folder |
|
|
204
|
+
| `docs/**/*.tmp` | `.tmp` files anywhere under `docs` |
|
|
205
|
+
| `!keep.log` | An exception to an earlier pattern |
|
|
206
|
+
|
|
207
|
+
An excluded file can't be listed, opened, downloaded, searched or zipped, even by URL.
|
|
208
|
+
|
|
209
|
+
These are hidden even without any patterns:
|
|
210
|
+
|
|
211
|
+
- `.git`.
|
|
212
|
+
- **Secrets:** `.env*` (except `.env.example` and `.env.sample`), `*.key`, `*.pem`, `*.p12`, `*.pfx` and `id_rsa`-style
|
|
213
|
+
keys. `--show-secrets` shows these.
|
|
214
|
+
|
|
215
|
+
Git-ignored files (like `node_modules`) are shown dimmed, and search skips them.
|
|
216
|
+
|
|
217
|
+
## Safety
|
|
218
|
+
|
|
219
|
+
- **Local by default.** It listens on `127.0.0.1` unless you pass `--lan` or `--host`. Anyone who can reach the port
|
|
220
|
+
can read every file that isn't hidden or excluded. On a shared network, add `--token` (or `FOLDERVIEW_TOKEN`).
|
|
221
|
+
- **Nothing outside the folder** is served, even through symlinks.
|
|
222
|
+
- **DNS rebinding:** requests for unknown host names are refused. Use `--allow-host` for a tunnel or proxy name.
|
|
223
|
+
- **Writes** (comments) must come from the page itself. Posts from other sites are refused.
|
|
224
|
+
- **No scripts from your files:**
|
|
225
|
+
- Files are served with a strict Content-Security-Policy, so an SVG or HTML file can't run script.
|
|
226
|
+
- HTML previews are sandboxed.
|
|
227
|
+
- Markdown is sanitised.
|
|
228
|
+
- Mermaid runs in strict mode and is drawn as an image.
|
|
229
|
+
- **Writes nothing else.** The only files folderview writes are in the review folder.
|
|
230
|
+
|
|
231
|
+
## The API
|
|
232
|
+
|
|
233
|
+
Everything the page does goes through a small JSON API (under `--base`, if set):
|
|
234
|
+
|
|
235
|
+
| Request | Gives |
|
|
236
|
+
|---|---|
|
|
237
|
+
| `GET api/info` | The folder's name, git, the review files, settings the page needs |
|
|
238
|
+
| `GET api/list?p=<folder>` | A folder's entries |
|
|
239
|
+
| `GET raw/<path>` | A file (supports `Range`). Add `?download=1` to download it. |
|
|
240
|
+
| `GET api/zip?p=<folder>` | A folder as a `.zip` |
|
|
241
|
+
| `GET api/files` | Every file (git-aware) |
|
|
242
|
+
| `GET api/search?q=&scope=®ex=1&case=1&word=1&include=` | Matches by file and line |
|
|
243
|
+
| `GET api/git/status` | Branch, ahead/behind, each change with +/− |
|
|
244
|
+
| `GET api/git/diff?p=` | A file's diff against the last commit |
|
|
245
|
+
| `GET api/git/log?p=` | A file's history |
|
|
246
|
+
| `GET api/git/show?p=&rev=` | A file at a commit |
|
|
247
|
+
| `GET api/comments` | Every comment |
|
|
248
|
+
| `POST api/comments` | Add one: `{ path, line?, endLine?, body, author? }` |
|
|
249
|
+
| `PATCH api/comments/<id>` | `{ status: "resolved" }` or `{ body }` |
|
|
250
|
+
| `POST api/comments/<id>/replies` | `{ body, author }` |
|
|
251
|
+
| `DELETE api/comments/<id>` | Delete one |
|
|
252
|
+
| `GET api/review.md` | The agent-ready summary |
|
|
253
|
+
| `GET api/events` | Server-sent events: `change` (files, git) and `comments` |
|
|
254
|
+
|
|
255
|
+
With a token set, send `Authorization: Bearer <token>`.
|
|
256
|
+
|
|
257
|
+
## Develop
|
|
258
|
+
|
|
259
|
+
```sh
|
|
260
|
+
npm install
|
|
261
|
+
npm run dev -- ../some-folder # build everything and serve a folder
|
|
262
|
+
npm run watch:client # rebuild the page as you edit client/ (run the server separately)
|
|
263
|
+
npm test # build, then run the tests
|
|
264
|
+
npm run screenshots # retake docs/screenshots at phone size, on a fresh demo repository
|
|
265
|
+
# (needs: npx playwright install chromium)
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
- **The server** is TypeScript in `src/`. It needs Node 20 or newer and has no runtime dependencies.
|
|
269
|
+
- **The page** is plain JavaScript in `client/`. esbuild bundles it into `dist/client` and splits out what loads
|
|
270
|
+
only when needed: Shiki's grammars, Mermaid and the math renderer.
|
|
271
|
+
- **The look** is one set of design tokens: one indigo accent, calm neutrals, and light and dark modes.
|
package/dist/cli.js
ADDED
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// folderview [folder] [options]: browse, search and review a folder in the browser.
|
|
3
|
+
// folderview review [folder] [--all] [--json]: print the review comments left in it (for you, or for an agent).
|
|
4
|
+
import os from 'node:os';
|
|
5
|
+
import path from 'node:path';
|
|
6
|
+
import fs from 'node:fs';
|
|
7
|
+
import { spawn } from 'node:child_process';
|
|
8
|
+
import { ConfigError, HELP, describe, resolve } from './config.js';
|
|
9
|
+
import { start } from './server.js';
|
|
10
|
+
import { Review, agentPrompt, toMarkdown } from './review.js';
|
|
11
|
+
function fail(msg) {
|
|
12
|
+
console.error(`folderview: ${msg}`);
|
|
13
|
+
process.exit(1);
|
|
14
|
+
}
|
|
15
|
+
const argv = process.argv.slice(2);
|
|
16
|
+
const reviewCommand = argv[0] === 'review';
|
|
17
|
+
const all = reviewCommand && argv.includes('--all');
|
|
18
|
+
const asJson = reviewCommand && argv.includes('--json');
|
|
19
|
+
const args = reviewCommand ? argv.slice(1).filter((a) => a !== '--all' && a !== '--json') : argv;
|
|
20
|
+
let parsed;
|
|
21
|
+
try {
|
|
22
|
+
parsed = resolve(args);
|
|
23
|
+
}
|
|
24
|
+
catch (e) {
|
|
25
|
+
fail(e instanceof ConfigError ? e.message : String(e));
|
|
26
|
+
}
|
|
27
|
+
if (parsed.help) {
|
|
28
|
+
console.log(HELP);
|
|
29
|
+
process.exit(0);
|
|
30
|
+
}
|
|
31
|
+
if (parsed.version) {
|
|
32
|
+
console.log(JSON.parse(fs.readFileSync(new URL('../package.json', import.meta.url), 'utf8')).version);
|
|
33
|
+
process.exit(0);
|
|
34
|
+
}
|
|
35
|
+
const s = parsed.settings;
|
|
36
|
+
if (parsed.printConfig) {
|
|
37
|
+
console.log(describe(s));
|
|
38
|
+
console.log(s.configFiles.length ? ` read: ${s.configFiles.join(', ')}` : ' (no config files)');
|
|
39
|
+
process.exit(0);
|
|
40
|
+
}
|
|
41
|
+
const rel = (p) => {
|
|
42
|
+
const r = path.relative(s.root, p);
|
|
43
|
+
return r && !r.startsWith('..') && !path.isAbsolute(r) ? r.split(path.sep).join('/') : p;
|
|
44
|
+
};
|
|
45
|
+
const reviewDir = path.resolve(s.root, s.reviewDir);
|
|
46
|
+
const mdRel = rel(path.join(reviewDir, 'REVIEW.md'));
|
|
47
|
+
const jsonRel = rel(path.join(reviewDir, 'comments.json'));
|
|
48
|
+
// `folderview review`: the comments, as an agent should read them, and nothing else
|
|
49
|
+
if (reviewCommand) {
|
|
50
|
+
const comments = new Review(reviewDir, s.root).all();
|
|
51
|
+
const shown = all ? comments : comments.filter((c) => c.status === 'open');
|
|
52
|
+
if (asJson)
|
|
53
|
+
console.log(JSON.stringify({ comments: shown, file: jsonRel, instructions: agentPrompt(mdRel, jsonRel) }, null, 2));
|
|
54
|
+
else if (!shown.length)
|
|
55
|
+
console.log(comments.length ? `No open review comments (${comments.length} resolved, in ${jsonRel}).` : 'No review comments yet.');
|
|
56
|
+
else
|
|
57
|
+
console.log(toMarkdown(shown, jsonRel, { openOnly: !all }));
|
|
58
|
+
process.exit(0);
|
|
59
|
+
}
|
|
60
|
+
function lanAddresses() {
|
|
61
|
+
return Object.values(os.networkInterfaces())
|
|
62
|
+
.flat()
|
|
63
|
+
.filter((n) => !!n && n.family === 'IPv4' && !n.internal)
|
|
64
|
+
.map((n) => n.address);
|
|
65
|
+
}
|
|
66
|
+
function openBrowser(url) {
|
|
67
|
+
const cmd = process.platform === 'win32' ? 'cmd' : process.platform === 'darwin' ? 'open' : 'xdg-open';
|
|
68
|
+
const args = process.platform === 'win32' ? ['/c', 'start', '', url.replace(/&/g, '^&')] : [url];
|
|
69
|
+
spawn(cmd, args, { stdio: 'ignore', detached: true, windowsHide: true }).on('error', () => undefined).unref();
|
|
70
|
+
}
|
|
71
|
+
let lastOpen = -1;
|
|
72
|
+
const running = await start({
|
|
73
|
+
...s,
|
|
74
|
+
// while it runs, say when there's feedback to read: whoever (or whatever) started it sees it here
|
|
75
|
+
onReviewChange: (open, total) => {
|
|
76
|
+
if (open === lastOpen)
|
|
77
|
+
return;
|
|
78
|
+
lastOpen = open;
|
|
79
|
+
const time = new Date().toLocaleTimeString();
|
|
80
|
+
if (open)
|
|
81
|
+
console.log(`[${time}] review: ${open} open comment${open === 1 ? '' : 's'} (of ${total}) → ${mdRel} (or run: npx folderview review)`);
|
|
82
|
+
else
|
|
83
|
+
console.log(`[${time}] review: no open comments (${total} resolved)`);
|
|
84
|
+
},
|
|
85
|
+
}).catch((err) => fail(err instanceof Error ? err.message : String(err)));
|
|
86
|
+
const suffix = s.base + (s.token ? `?token=${encodeURIComponent(s.token)}` : '');
|
|
87
|
+
const everywhere = s.host === '0.0.0.0' || s.host === '::';
|
|
88
|
+
const hostShown = everywhere || s.host === '127.0.0.1' || s.host === '::1' ? 'localhost' : s.host;
|
|
89
|
+
console.log(`folderview ${s.root}`);
|
|
90
|
+
console.log(` http://${hostShown}:${running.port}${suffix}`);
|
|
91
|
+
if (everywhere)
|
|
92
|
+
for (const ip of lanAddresses())
|
|
93
|
+
console.log(` http://${ip}:${running.port}${suffix}`);
|
|
94
|
+
else if (s.host === '127.0.0.1')
|
|
95
|
+
console.log(' (add --lan to open it from other devices)');
|
|
96
|
+
if (s.exclude.length)
|
|
97
|
+
console.log(` excluding: ${s.exclude.join(', ')}`);
|
|
98
|
+
console.log('');
|
|
99
|
+
console.log(` Review feedback is saved to ${mdRel} (and ${jsonRel}).`);
|
|
100
|
+
console.log(' For an agent: "' + agentPrompt(mdRel, jsonRel) + '"');
|
|
101
|
+
{
|
|
102
|
+
const existing = new Review(reviewDir, s.root).all();
|
|
103
|
+
const open = existing.filter((c) => c.status === 'open').length;
|
|
104
|
+
lastOpen = open;
|
|
105
|
+
if (open)
|
|
106
|
+
console.log(` There ${open === 1 ? 'is 1 open comment' : `are ${open} open comments`} waiting: npx folderview review`);
|
|
107
|
+
}
|
|
108
|
+
if (s.open)
|
|
109
|
+
openBrowser(`http://localhost:${running.port}${suffix}`);
|
|
110
|
+
const stop = () => {
|
|
111
|
+
void running.close().finally(() => process.exit(0));
|
|
112
|
+
setTimeout(() => process.exit(0), 1500).unref();
|
|
113
|
+
};
|
|
114
|
+
process.on('SIGINT', stop);
|
|
115
|
+
process.on('SIGTERM', stop);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
:root{color-scheme:light dark;--accent: light-dark(oklch(.55 .17 268), oklch(.7 .14 268));--accent-hover: light-dark(oklch(.5 .18 268), oklch(.75 .13 268));--accent-soft: light-dark(oklch(.55 .17 268 / .1), oklch(.7 .14 268 / .16));--accent-soft-strong: light-dark(oklch(.55 .17 268 / .18), oklch(.7 .14 268 / .26));--on-accent: light-dark(#ffffff, oklch(.18 .03 268));--bg: light-dark(oklch(.985 .002 270), oklch(.16 .006 270));--surface: light-dark(#ffffff, oklch(.2 .007 270));--surface-2: light-dark(oklch(.965 .003 270), oklch(.235 .008 270));--surface-3: light-dark(oklch(.935 .004 270), oklch(.28 .009 270));--overlay: light-dark(oklch(.2 .01 270 / .32), oklch(.05 .01 270 / .6));--text: light-dark(oklch(.22 .01 270), oklch(.94 .004 270));--text-dim: light-dark(oklch(.45 .012 270), oklch(.74 .01 270));--text-faint: light-dark(oklch(.58 .01 270), oklch(.6 .01 270));--border: light-dark(oklch(.91 .004 270), oklch(.3 .008 270));--border-strong: light-dark(oklch(.84 .006 270), oklch(.38 .01 270));--ok: light-dark(oklch(.52 .13 155), oklch(.74 .14 155));--ok-soft: light-dark(oklch(.52 .13 155 / .12), oklch(.74 .14 155 / .16));--warn: light-dark(oklch(.55 .13 70), oklch(.8 .13 80));--warn-soft: light-dark(oklch(.7 .14 75 / .16), oklch(.8 .13 80 / .16));--danger: light-dark(oklch(.55 .19 22), oklch(.72 .16 22));--danger-soft: light-dark(oklch(.55 .19 22 / .1), oklch(.72 .16 22 / .16));--code-bg: light-dark(oklch(.97 .004 270), oklch(.18 .007 270));--selection: var(--accent-soft-strong);--g-new: var(--ok);--g-mod: var(--warn);--g-del: var(--danger);--g-ren: light-dark(oklch(.55 .15 240), oklch(.75 .12 240));--g-conf: light-dark(oklch(.55 .18 310), oklch(.75 .14 310));--add-bg: light-dark(oklch(.52 .13 155 / .1), oklch(.74 .14 155 / .1));--del-bg: light-dark(oklch(.55 .19 22 / .08), oklch(.72 .16 22 / .1));--tok-string: light-dark(oklch(.5 .13 150), oklch(.78 .12 150));--tok-number: light-dark(oklch(.55 .15 50), oklch(.8 .12 60));--tok-keyword: var(--accent);--tok-comment: var(--text-faint);--font: ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", sans-serif;--mono: ui-monospace, "Cascadia Code", "SF Mono", Menlo, Consolas, monospace;--text-xs: 12px;--text-sm: 13px;--text-md: 15px;--text-lg: 17px;--text-xl: 20px;--text-2xl: 26px;--leading: 1.55;--weight-medium: 550;--weight-strong: 650;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 24px;--space-6: 32px;--radius-sm: 6px;--radius: 10px;--radius-lg: 14px;--radius-full: 999px;--control-sm: 32px;--control: 40px;--shadow-color: light-dark(oklch(.25 .02 270 / .08), oklch(0 0 0 / .45));--shadow: 0 1px 2px var(--shadow-color), 0 4px 16px var(--shadow-color);--shadow-lg: 0 2px 6px var(--shadow-color), 0 16px 48px var(--shadow-color);--ring: 0 0 0 3px var(--accent-soft-strong);--fast: .12s;--medium: .2s;--ease: cubic-bezier(.2, .8, .2, 1);--bar-h: 57px;--safe-bottom: env(safe-area-inset-bottom, 0px)}:root[data-theme=light]{color-scheme:light}:root[data-theme=dark]{color-scheme:dark}@media(prefers-reduced-motion:reduce){:root{--fast: 0ms;--medium: 0ms}}*,*:before,*:after{box-sizing:border-box}[hidden]{display:none!important}html{-webkit-text-size-adjust:100%;text-size-adjust:100%}html,body{margin:0}body{background:var(--bg);color:var(--text);font:var(--text-sm) / var(--leading) var(--font);-webkit-font-smoothing:antialiased;overflow-wrap:break-word}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline;text-underline-offset:2px}code,kbd,pre,.code,.qo-item{font-family:var(--mono);font-variant-ligatures:none;font-feature-settings:"calt" 0,"liga" 0}::selection{background:var(--selection)}:focus{outline:none}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}*{scrollbar-width:thin;scrollbar-color:var(--border-strong) transparent}.i{flex:none;display:block}kbd{font-size:11px;padding:1px 6px;border:1px solid var(--border-strong);border-bottom-width:2px;border-radius:5px;background:var(--surface)}.faint{color:var(--text-faint)}.dim{color:var(--text-dim)}.grow{flex:1}.plus{color:var(--g-new)}.minus{color:var(--g-del)}.bar{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);background:color-mix(in oklab,var(--bg) 88%,transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--border);min-width:0;z-index:20}.brand{display:flex;align-items:center;gap:var(--space-2);border:0;background:none;padding:6px 8px;border-radius:var(--radius-sm);min-width:0;max-width:28ch;font-size:var(--text-md);font-weight:var(--weight-strong)}.brand .logo{display:grid;place-items:center;width:26px;height:26px;border-radius:8px;background:var(--accent);color:var(--on-accent);flex:none}.brand b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.brand:hover{background:var(--surface-2)}.branch{display:inline-flex;align-items:center;gap:6px;font:var(--text-xs) var(--mono);color:var(--text-dim);white-space:nowrap;padding:3px 10px 3px 8px;border:1px solid var(--border);border-radius:var(--radius-full);background:var(--surface)}.branch .sync{color:var(--accent)}.search{flex:1;display:flex;align-items:center;gap:6px;min-width:120px;max-width:560px;height:var(--control-sm);padding:0 4px 0 10px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);color:var(--text-faint);transition:border-color var(--fast) var(--ease),box-shadow var(--fast) var(--ease)}.search:focus-within{border-color:var(--accent);box-shadow:var(--ring)}.search input{flex:1;min-width:0;border:0;background:none;padding:0;outline:none;color:var(--text);font-size:16px}@media(min-width:760px){.search input{font-size:var(--text-sm)}}.chip{border:0;border-radius:var(--radius-sm);padding:3px 8px;font-size:var(--text-xs);background:var(--surface-2);color:var(--text-dim);white-space:nowrap;max-width:18ch;overflow:hidden;text-overflow:ellipsis}.chip.on{background:var(--accent-soft-strong);color:var(--text)}.bar-acts{display:flex;align-items:center;gap:6px;margin-left:auto}.count{min-width:20px;height:20px;padding:0 6px;border-radius:var(--radius-full);font-size:11px;font-weight:var(--weight-strong);line-height:20px;background:var(--surface-3);color:var(--text);text-align:center}.count.warn{background:var(--accent);color:var(--on-accent)}.live{width:8px;height:8px;border-radius:50%;background:var(--border-strong);flex:none}.live.on{background:var(--ok);box-shadow:0 0 0 3px var(--ok-soft)}@media(min-width:760px){body{overflow:hidden}.shell{display:grid;grid-template-rows:auto minmax(0,1fr);height:100vh;height:100dvh}.tree,.main,.file{min-height:0;overflow:auto;overscroll-behavior:contain}}.app{display:grid;grid-template-columns:minmax(0,1fr);min-height:0}.app.rail{grid-template-columns:var(--tree, 280px) 6px minmax(0,1fr)}.app.split{grid-template-columns:minmax(0,1fr) minmax(460px,1.35fr)}.app.rail.split{grid-template-columns:var(--tree, 280px) 6px minmax(0,1fr) minmax(460px,1.35fr)}.tree,.main,.file{min-width:0}.tree{background:var(--surface);border-right:1px solid var(--border);padding:var(--space-3) var(--space-2) var(--space-5)}.app:not(.rail) .tree,.app:not(.rail) .splitter-wrap{display:none}.splitter-wrap{display:flex;justify-content:center;min-height:0;margin-left:-6px;position:relative;z-index:2}.splitter{cursor:col-resize;width:6px;height:100%}.splitter:hover{background:var(--accent-soft-strong)}.main{padding:var(--space-4) var(--space-5) var(--space-6);display:grid;grid-template-columns:minmax(0,1fr);align-content:start;gap:var(--space-3)}.file{padding:0 var(--space-5) var(--space-6);border-left:1px solid var(--border);display:grid;grid-template-columns:minmax(0,1fr);align-content:start;gap:var(--space-3);background:var(--bg)}@media(max-width:759px){.bar{background:var(--bg);-webkit-backdrop-filter:none;backdrop-filter:none;position:sticky;top:0;flex-wrap:wrap;padding:var(--space-2);row-gap:var(--space-2)}.search{order:5;flex-basis:100%;max-width:none;height:var(--control)}.hide-sm,#branch{display:none!important}.main{padding:var(--space-3) var(--space-3) calc(var(--space-6) + var(--safe-bottom))}.file{padding:0 var(--space-3) calc(var(--space-6) + var(--safe-bottom));border-left:0}.file-head{top:var(--bar-h)!important;margin:0 calc(-1 * var(--space-3))!important;padding:var(--space-2) var(--space-3)!important}}ul.level,ul.roots{list-style:none;margin:0;padding:0}ul.level{padding-left:12px}.item{display:flex;align-items:center;min-width:0}.twist{width:22px;height:30px;flex:none;display:grid;place-items:center;border:0;background:none;color:var(--text-faint);border-radius:var(--radius-sm);padding:0}.twist .i{transition:transform var(--fast) var(--ease)}.twist[aria-expanded=true] .i{transform:rotate(90deg)}.twist:hover{color:var(--text)}.node{display:flex;align-items:center;gap:7px;flex:1;min-width:0;min-height:30px;padding:0 8px;border:0;border-radius:var(--radius-sm);background:none;color:var(--text-dim);text-align:left}.node .i{color:var(--text-faint)}.node:hover{background:var(--surface-2);color:var(--text)}.node.chosen{background:var(--accent-soft);color:var(--text);font-weight:var(--weight-medium)}.node.chosen .i{color:var(--accent)}.node .nm{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}.s-new .nm,.s-added .nm{color:var(--g-new)}.s-modified .nm{color:var(--g-mod)}.s-deleted .nm{color:var(--g-del)}.s-renamed .nm{color:var(--g-ren)}.s-conflict .nm{color:var(--g-conf)}.s-ignored{opacity:.55}.ghost .nm{text-decoration:line-through}.badge{display:inline-grid;place-items:center;min-width:18px;height:18px;padding:0 4px;border-radius:5px;font:700 10.5px/1 var(--font);flex:none}.badge.s-new,.badge.s-added{color:var(--g-new);background:color-mix(in oklab,var(--g-new) 16%,transparent)}.badge.s-modified{color:var(--g-mod);background:color-mix(in oklab,var(--g-mod) 18%,transparent)}.badge.s-deleted{color:var(--g-del);background:color-mix(in oklab,var(--g-del) 16%,transparent)}.badge.s-renamed{color:var(--g-ren);background:color-mix(in oklab,var(--g-ren) 16%,transparent)}.badge.s-conflict{color:var(--g-conf);background:color-mix(in oklab,var(--g-conf) 16%,transparent)}.badge.s-ignored{color:var(--text-faint);background:var(--surface-2)}.dot{width:7px;height:7px;border-radius:50%;flex:none}.dot.s-new,.dot.s-added{background:var(--g-new)}.dot.s-modified{background:var(--g-mod)}.dot.s-deleted{background:var(--g-del)}.dot.s-renamed{background:var(--g-ren)}.dot.s-conflict{background:var(--g-conf)}.pill{display:inline-flex;align-items:center;gap:4px;height:20px;padding:0 8px;border-radius:var(--radius-full);font-size:11.5px;background:var(--surface-2);color:var(--text-dim);white-space:nowrap;text-decoration:none;flex:none}.pill .i{width:12px;height:12px}.pill.warn{background:var(--accent-soft-strong);color:var(--text)}.pill.ok{background:var(--ok-soft);color:var(--ok)}.legend{display:inline-flex;align-items:center;gap:5px;font-size:var(--text-xs);color:var(--text-dim)}.head{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap}.page-title{display:flex;align-items:center;gap:var(--space-2);margin:0;font-size:var(--text-lg);font-weight:var(--weight-strong)}.lede{margin:0;color:var(--text-dim);max-width:72ch}.crumbs{display:flex;align-items:center;flex-wrap:wrap;gap:2px;flex:1;min-width:0;font-size:var(--text-md)}.crumb{padding:3px 7px;border:0;border-radius:var(--radius-sm);background:none;color:var(--accent);overflow-wrap:anywhere}.crumb:hover{background:var(--surface-2)}.crumb.current{color:var(--text);font-weight:var(--weight-strong);cursor:default;background:none}.sep{color:var(--text-faint)}.tools,.tabs{display:flex;gap:6px;align-items:center;flex-wrap:wrap}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:var(--control-sm);padding:0 12px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--text-dim);text-decoration:none;white-space:nowrap;font-weight:var(--weight-medium);transition:background var(--fast) var(--ease),border-color var(--fast) var(--ease),color var(--fast) var(--ease)}.btn:hover{color:var(--text);border-color:var(--border-strong);background:var(--surface-2);text-decoration:none}.btn.on{color:var(--accent);border-color:color-mix(in oklab,var(--accent) 45%,var(--border));background:var(--accent-soft)}.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}.btn.primary:hover{background:var(--accent-hover)}.btn.small{height:28px;padding:0 9px;font-size:var(--text-xs)}.btn:disabled{opacity:.6;cursor:default}select.btn{padding-right:6px}.seg{display:inline-flex;padding:2px;gap:2px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-2)}.seg .btn{height:26px;border:0;background:none;padding:0 8px}.seg .btn.on{background:var(--surface);color:var(--text);box-shadow:0 1px 2px var(--shadow-color)}.mini{display:inline-flex;align-items:center;gap:4px;border:0;background:none;color:var(--text-faint);padding:3px 6px;border-radius:5px;font-size:var(--text-xs)}.mini:hover{color:var(--text);background:var(--surface-2)}.icon-btn{width:var(--control-sm);height:var(--control-sm);flex:none;border:1px solid transparent;border-radius:var(--radius-sm);background:none;color:var(--text-dim);display:inline-grid;place-items:center;text-decoration:none;position:relative}.icon-btn:hover{color:var(--text);background:var(--surface-2);text-decoration:none}.icon-btn.on{color:var(--accent);background:var(--accent-soft)}.icon-btn .count{position:absolute;top:-4px;right:-6px;min-width:17px;height:17px;line-height:17px;font-size:10px;padding:0 4px}@media(pointer:coarse){.icon-btn,.btn{min-height:40px;min-width:40px}.btn.small{min-height:34px}}.filter{flex:1 1 180px;min-width:0;max-width:360px;height:var(--control-sm);padding:0 12px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--text)}.filter:focus{border-color:var(--accent);box-shadow:var(--ring)}@media(pointer:coarse){.filter{height:var(--control);font-size:16px}}.meta{color:var(--text-faint);font-size:var(--text-xs)}.rows{display:grid;border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;background:var(--surface)}.row{display:grid;grid-template-columns:22px minmax(0,1fr) auto 72px 92px;align-items:center;gap:10px;min-height:40px;padding:0 var(--space-4);border:0;border-top:1px solid var(--border);background:none;text-align:left;color:var(--text);text-decoration:none}.row:first-child{border-top:0}.row:hover{background:var(--surface-2);text-decoration:none}.row.open{background:var(--accent-soft)}.row .nm{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.row .marks{display:flex;gap:6px;align-items:center;justify-content:flex-end}.row .sz,.row .tm{color:var(--text-faint);font-size:var(--text-xs);text-align:right;white-space:nowrap}.ico{width:22px;height:22px;display:grid;place-items:center;border-radius:5px;color:var(--text-faint);overflow:hidden}.ico.folder{color:var(--accent)}.ico img{width:100%;height:100%;object-fit:cover;border-radius:4px}.ico .ext{font:700 8.5px/1 var(--mono);letter-spacing:-.02em;color:var(--text-dim);background:var(--surface-3);border-radius:4px;padding:3px 2px;min-width:20px;text-align:center}.ico.lang-ts .ext,.ico.lang-tsx .ext{color:#fff;background:#3178c6}.ico.lang-js .ext,.ico.lang-mjs .ext,.ico.lang-cjs .ext,.ico.lang-jsx .ext{color:#222;background:#e8c93a}.ico.lang-md .ext,.ico.lang-mdx .ext{color:#fff;background:#3d7a64}.ico.lang-json .ext{color:#fff;background:#8a7535}.ico.lang-css .ext,.ico.lang-scss .ext{color:#fff;background:#6b4bd6}.ico.lang-html .ext,.ico.lang-vue .ext{color:#fff;background:#d2552b}.ico.lang-py .ext{color:#fff;background:#3572a5}.ico.lang-rs .ext{color:#fff;background:#b7410e}.ico.lang-go .ext{color:#fff;background:#00a3cc}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:var(--space-3)}.tile{display:grid;gap:6px;padding:8px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);text-align:left;min-width:0}.tile:hover{border-color:var(--border-strong)}.tile.open{border-color:var(--accent);box-shadow:var(--ring)}.thumb{position:relative;aspect-ratio:4/3;border-radius:var(--radius-sm);display:grid;place-items:center;overflow:hidden;background:repeating-conic-gradient(#0000 0 25%,#8881 0 50%) 0 0/16px 16px,var(--surface-2);color:var(--accent)}.thumb img{width:100%;height:100%;object-fit:contain}.thumb .badge,.thumb .dot{position:absolute;top:6px;right:6px}.thumb .ext{font:700 14px var(--mono);color:var(--text-dim)}.tile .nm{font-size:var(--text-xs);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.empty,.note{color:var(--text-faint);padding:var(--space-4);text-align:center;margin:0}.hint{margin:0;font-size:var(--text-xs)}.card{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);overflow:hidden}.card-head{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);border-bottom:1px solid var(--border);font-weight:var(--weight-medium);font-size:var(--text-xs);color:var(--text-dim)}.readme .md{padding:var(--space-4) var(--space-5) var(--space-5)}.md.card{padding:var(--space-4) var(--space-5);max-width:none}@media(max-width:759px){.row{grid-template-columns:22px minmax(0,1fr) auto 58px;padding:0 var(--space-3);min-height:46px}.row .tm{display:none}.grid{grid-template-columns:repeat(auto-fill,minmax(104px,1fr));gap:var(--space-2)}.readme .md{padding:var(--space-3) var(--space-4) var(--space-4)}}.file-head{display:flex;align-items:center;gap:4px;min-width:0;position:sticky;top:0;margin:0 calc(-1 * var(--space-5));padding:var(--space-2) var(--space-5);background:color-mix(in oklab,var(--bg) 90%,transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--border);z-index:6}.split .file-head .back{display:none}.file-name{min-width:0;font-weight:var(--weight-strong);font-size:var(--text-md);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin:0 4px}#file-threads:empty{display:none}#file-threads{display:grid;gap:var(--space-2)}.stage{display:grid;place-items:center;border-radius:var(--radius);border:1px solid var(--border);padding:var(--space-3);background:repeating-conic-gradient(#0000 0 25%,#8881 0 50%) 0 0/20px 20px,var(--surface);min-width:0}.stage img{max-width:100%;max-height:75vh;cursor:zoom-in}.stage.actual{place-items:start;overflow:auto;max-height:80vh}.stage.actual img{max-width:none;max-height:none;cursor:zoom-out}.stage video,.stage audio{max-width:100%}.stage audio{width:100%}.stage iframe{width:100%;height:78vh;border:0;background:#fff;border-radius:var(--radius-sm)}.stage.diagram{background:var(--surface);overflow:auto}.compare{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-3)}.compare figure{margin:0;display:grid;gap:6px}.compare figcaption{font-size:var(--text-xs);color:var(--text-dim)}@media(max-width:759px){.compare{grid-template-columns:1fr}}.ui-code{margin:0;min-width:0;border:1px solid var(--border);border-radius:var(--radius);background:var(--code-bg);overflow:hidden}.ui-code>.cbar{display:flex;align-items:center;gap:var(--space-2);min-height:36px;padding:0 var(--space-1) 0 var(--space-3);border-bottom:1px solid var(--border)}.cbar .caption{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text-faint);font:var(--text-xs) var(--mono)}.cbar .ctools{display:flex;gap:2px}.cbar .icon-btn{width:28px;height:28px}.cbar .copied{color:var(--ok)}.code{margin:0;overflow:auto;font:13px/1.6 var(--mono);tab-size:2;padding:var(--space-2) 0;color:var(--text)}.code:focus-visible{outline:none;box-shadow:inset var(--ring)}.ln{display:flex;min-width:max-content}.code.wrap .ln{min-width:0}.gut{flex:none;width:54px;padding-right:var(--space-3);text-align:right;color:var(--text-faint);-webkit-user-select:none;user-select:none;text-decoration:none;position:sticky;left:0;background:var(--code-bg);z-index:1}.gut:hover{color:var(--text);text-decoration:none}.code.review .gut:hover:before{content:"+";position:absolute;left:6px;top:3px;width:16px;height:16px;line-height:16px;text-align:center;border-radius:4px;background:var(--accent);color:var(--on-accent);font-weight:700}.ln.has-c .gut{color:var(--accent);font-weight:700}.ln.has-open .gut:after{content:"";position:absolute;left:8px;top:50%;width:6px;height:6px;margin-top:-3px;border-radius:50%;background:var(--accent)}.mk{flex:none;width:3px;margin-right:var(--space-3);position:sticky;left:54px;z-index:1;background:var(--code-bg)}.mk.add{background:var(--g-new)}.mk.mod{background:var(--g-mod)}.mk.del{background:linear-gradient(var(--g-del) 0 35%,var(--code-bg) 35%)}.src{white-space:pre;padding-right:var(--space-4)}.code.wrap .src{white-space:pre-wrap;overflow-wrap:anywhere;min-width:0}.ln.sel,.ln.sel .gut,.ln.sel .mk:not(.add):not(.mod):not(.del){background:var(--accent-soft)}.ln.sel .gut{background:color-mix(in oklab,var(--accent) 14%,var(--code-bg));color:var(--accent)}.code.review .ln:hover{background:var(--accent-soft);cursor:pointer}.selbar{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin:6px var(--space-3) 6px 66px;padding:6px 8px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);box-shadow:var(--shadow);font-family:var(--font);position:sticky;left:66px;max-width:calc(100% - 78px);white-space:normal}.tok-comment{color:var(--tok-comment);font-style:italic}.tok-string{color:var(--tok-string)}.tok-number,.tok-literal{color:var(--tok-number)}.tok-keyword{color:var(--tok-keyword)}.code-foot{display:flex;align-items:center;gap:var(--space-2);font-size:var(--text-xs)}@media(max-width:759px){.gut{width:42px;padding-right:8px}.mk{left:42px;margin-right:8px}.code{font-size:12.5px}}.diff{padding:0}.dh{display:flex;gap:var(--space-3);padding:4px var(--space-3);background:var(--accent-soft);color:var(--text-dim);min-width:max-content;font-size:var(--text-xs)}.dl{display:flex;min-width:max-content}.dl .on,.dl .nn{flex:none;width:44px;padding-right:8px;text-align:right;color:var(--text-faint);-webkit-user-select:none;user-select:none}.dl .nn .gut{width:auto;padding:0;position:static;background:none}.dl .dsrc{white-space:pre;padding:0 var(--space-4) 0 var(--space-2)}.dl .dsrc i{font-style:normal;color:var(--text-faint);display:inline-block;width:14px}.dl.add{background:var(--add-bg)}.dl.add .dsrc i{color:var(--g-new)}.dl.del{background:var(--del-bg)}.dl.del .dsrc i{color:var(--g-del)}.code.wrap .dl{min-width:0}.code.wrap .dl .dsrc{white-space:pre-wrap;overflow-wrap:anywhere}@media(max-width:759px){.dl .on,.dl .nn{width:32px;padding-right:4px}}.commit-head{margin:0;padding:var(--space-3);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);white-space:pre-wrap;font-size:var(--text-xs)}.commits{display:grid;border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;background:var(--surface)}.commit{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:10px;align-items:center;padding:8px var(--space-3);border:0;border-top:1px solid var(--border);background:none;text-align:left}.commit:first-child{border-top:0}.commit:hover,.commit.on{background:var(--surface-2)}.commit code{color:var(--accent);font-size:var(--text-xs)}.commit .subj{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.commit .faint{font-size:var(--text-xs)}@media(max-width:759px){.commit{grid-template-columns:auto minmax(0,1fr)}.commit .faint{grid-column:2}}.group-title{display:flex;align-items:center;gap:var(--space-2);margin:var(--space-3) 0 var(--space-1);font:var(--weight-strong) var(--text-sm) var(--mono);min-width:0}.group-title a{color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.group-title a:hover{color:var(--accent)}.diff-file{display:grid;gap:var(--space-1)}.hex{margin:0;padding:var(--space-3);border:1px solid var(--border);border-radius:var(--radius);background:var(--code-bg);overflow:auto;font-size:12px}.font{display:grid;gap:4px;overflow:hidden}.font p{margin:0;line-height:1.25;overflow-wrap:anywhere}.font-sample{font-family:var(--font);height:var(--control);padding:0 12px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);margin-bottom:var(--space-3);font-size:16px}.tablewrap{overflow:auto;max-height:78vh;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface)}.grid-table{border-collapse:collapse;font-size:var(--text-xs)}.grid-table th,.grid-table td{border-bottom:1px solid var(--border);border-right:1px solid var(--border);padding:6px 10px;text-align:left;white-space:nowrap;max-width:420px;overflow:hidden;text-overflow:ellipsis}.grid-table th{position:sticky;top:0;background:var(--surface-2);font-weight:var(--weight-medium);cursor:pointer}.grid-table th[data-sort]:not([data-sort=""]):after{content:" " attr(data-sort);color:var(--accent)}.grid-table td.num{text-align:right;font-family:var(--mono)}.jtree{font:13px/1.6 var(--mono);padding:var(--space-3) var(--space-4);border:1px solid var(--border);border-radius:var(--radius);background:var(--code-bg);overflow:auto}.jtree details>summary{cursor:pointer;color:var(--text-faint);display:inline;list-style:none}.jtree details>summary:before{content:"\25b8 "}.jtree details[open]>summary:before{content:"\25be "}.jtree details[open]>summary{display:block}.jkids{padding-left:18px;border-left:1px dashed var(--border-strong);margin-left:4px}.jrow{white-space:pre-wrap;overflow-wrap:anywhere}.jrow>details{display:inline}.jrow>details[open]{display:block}.jkey{color:var(--text-dim)}.nb{display:grid;gap:var(--space-3)}.nb-cell{display:grid;grid-template-columns:40px minmax(0,1fr);gap:6px}.nb-n{font:var(--text-xs) var(--mono);padding-top:10px;text-align:right}.nb-out{margin:6px 0 0;padding:var(--space-2) var(--space-3);border:1px dashed var(--border-strong);border-radius:var(--radius-sm);overflow:auto;font-size:var(--text-xs)}.nb-out.err{color:var(--danger)}.nb-img{max-width:100%;margin-top:6px;background:#fff;border-radius:var(--radius-sm)}.nb-md{padding-left:46px}.md{max-width:80ch;min-width:0;overflow-wrap:anywhere;line-height:var(--leading);font-size:var(--text-md)}.md>:first-child{margin-top:0}.md>:last-child{margin-bottom:0}.md p,.md ul,.md ol,.md blockquote,.md .ui-code,.md .md-table,.md .md-diagram,.md details,.md .md-math-wrap,.md .front{margin:0 0 var(--space-3)}.md h1,.md h2,.md h3,.md h4,.md h5,.md h6{margin:var(--space-5) 0 var(--space-2);font-weight:var(--weight-strong);line-height:1.25;letter-spacing:-.012em;position:relative}.md h1{font-size:var(--text-2xl)}.md h2{font-size:var(--text-xl);padding-bottom:6px;border-bottom:1px solid var(--border)}.md h3{font-size:var(--text-lg)}.md h4,.md h5,.md h6{font-size:var(--text-md)}.md .anchor{margin-left:6px;color:var(--text-faint);opacity:0;text-decoration:none;font-weight:400}.md h1:hover .anchor,.md h2:hover .anchor,.md h3:hover .anchor,.md h4:hover .anchor{opacity:1}.md ul,.md ol{padding-left:1.5em}.md li{margin:2px 0}.md li>p{margin:0}.md li>ul,.md li>ol{margin:2px 0 0}.md li:has(>input[type=checkbox]){list-style:none;margin-left:-1.3em}.md input[type=checkbox]{accent-color:var(--accent);margin:0 6px 0 0;transform:translateY(1px)}.md blockquote{padding:2px 0 2px var(--space-4);border-left:3px solid var(--border-strong);color:var(--text-dim);margin-left:0;margin-right:0}.md blockquote.alert{padding:var(--space-2) var(--space-3);border:1px solid color-mix(in oklab,var(--al) 35%,var(--border));border-left:3px solid var(--al);border-radius:var(--radius-sm);background:color-mix(in oklab,var(--al) 7%,transparent);color:var(--text)}.md blockquote.alert>p:last-child{margin-bottom:0}.md .alert-title{display:flex;align-items:center;gap:6px;font-weight:var(--weight-strong);color:var(--al);margin-bottom:4px}.md .alert.note{--al: var(--accent)}.md .alert.tip{--al: var(--ok)}.md .alert.important{--al: var(--g-conf)}.md .alert.warning{--al: var(--warn)}.md .alert.caution{--al: var(--danger)}.md hr{margin:var(--space-5) 0;border:0;border-top:1px solid var(--border)}.md :not(pre)>code{padding:1px 5px;border-radius:5px;background:var(--surface-3);font-size:.86em}.md a{text-decoration:underline;text-decoration-color:color-mix(in oklab,var(--accent) 40%,transparent);text-underline-offset:2px}.md a:hover{text-decoration-color:var(--accent)}.md img{max-width:100%;height:auto;border-radius:var(--radius-sm)}.md .md-table{max-width:100%;overflow-x:auto;border:1px solid var(--border);border-radius:var(--radius)}.md table{width:100%;border-collapse:collapse;font-size:var(--text-sm);overflow-wrap:normal}.md th,.md td{padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--border);text-align:left;vertical-align:top}.md th{background:var(--surface-2);font-weight:var(--weight-medium);white-space:nowrap}.md tr:last-child td{border-bottom:0}.md details{border:1px solid var(--border);border-radius:var(--radius-sm);padding:var(--space-2) var(--space-3);background:var(--surface)}.md summary{cursor:pointer;font-weight:var(--weight-medium)}.md kbd{font-size:.8em}.md .ui-code .code{font-size:12.5px;padding:var(--space-3) var(--space-4);white-space:pre}.md .ui-code.wrapped .code{white-space:pre-wrap;overflow-wrap:anywhere}.md .md-diagram{display:grid;place-items:center;padding:var(--space-3);border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);overflow-x:auto}.md-diagram img,.stage.diagram img{max-width:none;height:auto;cursor:zoom-in;margin:0 auto}.md .md-diagram,.stage.diagram{display:block;overflow-x:auto;text-align:center}.md-diagram .problem{color:var(--danger);font-size:var(--text-xs)}.md .md-math-wrap{max-width:100%;overflow-x:auto;padding:var(--space-2) 0}.md .md-math-block{font-size:1.15em}.md .footnotes{font-size:var(--text-sm);color:var(--text-dim);border-top:1px solid var(--border);margin-top:var(--space-5);padding-top:var(--space-3)}.md .footnotes h2{font-size:var(--text-sm);border:0;margin-top:0}.md sup a{text-decoration:none}.md .front{font-size:var(--text-xs)}.md .front td:first-child{color:var(--text-faint);white-space:nowrap;font-family:var(--mono)}@media(max-width:759px){.md{font-size:15px}.md h1{font-size:23px}.md h2{font-size:19px}}.threads{display:grid;gap:var(--space-2);padding:var(--space-2) var(--space-3) var(--space-2) 66px;font-family:var(--font);font-size:var(--text-sm);line-height:1.5;position:sticky;left:0;max-width:min(100%,860px);white-space:normal}.diff .threads{padding-left:100px}.thread{display:grid;gap:4px}.thread-where{font-size:11.5px;color:var(--text-faint)}.cmt{border:1px solid var(--border);border-left:3px solid var(--accent);border-radius:var(--radius-sm);background:var(--surface);box-shadow:0 1px 2px var(--shadow-color);padding:var(--space-2) var(--space-3);display:grid;gap:4px}.cmt.resolved{border-left-color:var(--ok);opacity:.8}.cmt-head{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap;font-size:var(--text-xs)}.cmt-acts{margin-left:auto;display:flex;gap:2px}.cmt-body.md{font-size:var(--text-sm);max-width:none}.cmt-body p{margin:.2em 0}.reply{border-top:1px dashed var(--border);padding-top:6px;margin-top:2px}.reply-form{display:flex;gap:6px;align-items:flex-start;margin-top:4px}.reply-form textarea,.composer textarea,.edit-form textarea{flex:1;width:100%;min-height:32px;resize:vertical;padding:6px 10px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg);font:var(--text-sm) / 1.45 var(--font)}@media(pointer:coarse){.reply-form textarea,.composer textarea,.edit-form textarea{font-size:16px}}.reply-form textarea:focus,.composer textarea:focus,.edit-form textarea:focus{border-color:var(--accent);box-shadow:var(--ring)}.composer{display:grid;gap:6px;margin:6px var(--space-3) var(--space-2) 66px;padding:var(--space-3);border:1px solid var(--accent);border-radius:var(--radius-sm);background:var(--surface);box-shadow:var(--shadow);font-family:var(--font);position:sticky;left:0;max-width:min(calc(100% - 78px),720px);white-space:normal}#file-threads .composer{margin:0;max-width:none}.composer-head{font-size:var(--text-xs);font-weight:var(--weight-strong)}.composer-acts{display:flex;gap:6px}.edit-form{display:grid;gap:6px}@media(max-width:759px){.threads,.diff .threads{padding-left:var(--space-2);padding-right:var(--space-2)}.composer,.selbar{margin-left:var(--space-2);margin-right:var(--space-2);left:0;max-width:calc(100vw - 2 * var(--space-3) - 2 * var(--space-2) - 2px)}}.switch{display:inline-flex;align-items:center;gap:8px;margin-left:auto;cursor:pointer;color:var(--text-dim)}.switch input{accent-color:var(--accent);width:16px;height:16px}.rgroup{display:grid;gap:var(--space-2)}.rcard{display:grid;gap:6px;padding:var(--space-3);border:1px solid var(--border);border-radius:var(--radius);background:var(--surface)}.rwhere{display:flex;gap:var(--space-2);align-items:center;font-size:var(--text-xs)}.quote{margin:0;padding:6px 10px;border-radius:var(--radius-sm);background:var(--code-bg);border:1px solid var(--border);font-size:var(--text-xs);overflow:auto;max-height:220px}.search-opts .filter{max-width:380px}.sfile{display:grid;gap:2px}.slines{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--code-bg);overflow:hidden}.sline{display:grid;grid-template-columns:48px minmax(0,1fr);gap:10px;padding:3px var(--space-3) 3px 0;border-top:1px solid var(--border);color:var(--text);text-decoration:none;font-size:var(--text-xs)}.sline:first-child{border-top:0}.sline:hover{background:var(--accent-soft);text-decoration:none}.sline .sn{text-align:right;color:var(--text-faint);font:var(--text-xs) var(--mono);padding-top:1px}.sline code{white-space:pre-wrap;overflow-wrap:anywhere}mark{background:light-dark(oklch(.88 .14 95),oklch(.55 .12 85 / .55));color:inherit;border-radius:3px;padding:0 1px}.modal-back{position:fixed;inset:0;background:var(--overlay);z-index:50;display:flex;justify-content:center;align-items:flex-start;padding:10vh var(--space-3) 0;animation:fade var(--medium) var(--ease)}.modal{width:min(680px,100%);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);overflow:hidden;display:grid;animation:pop var(--medium) var(--ease)}@keyframes fade{0%{opacity:0}}@keyframes pop{0%{opacity:0;transform:translateY(-6px) scale(.98)}}.qo-in{display:flex;align-items:center;gap:var(--space-2);padding:0 var(--space-4);border-bottom:1px solid var(--border);color:var(--text-faint)}.qo-in input{flex:1;border:0;background:none;padding:14px 0;font-size:16px;outline:none;color:var(--text)}.qo-list{max-height:56vh;overflow:auto;padding:6px}.qo-item{display:flex;align-items:center;gap:var(--space-2);width:100%;border:0;background:none;text-align:left;padding:7px 10px;border-radius:var(--radius-sm);font-size:var(--text-sm);color:var(--text-dim)}.qo-item .nm{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.qo-item b{color:var(--accent)}.qo-item.on{background:var(--accent-soft);color:var(--text)}.qo-foot{padding:var(--space-2) var(--space-4);border-top:1px solid var(--border);font-size:var(--text-xs)}@media(pointer:coarse){.qo-foot{display:none}.qo-item{min-height:44px}}.pop{position:fixed;top:calc(var(--bar-h) + 6px);right:var(--space-3);z-index:40;width:min(340px,calc(100vw - 24px));max-height:calc(100dvh - var(--bar-h) - 20px);overflow:auto;padding:var(--space-3) var(--space-4) var(--space-4);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);display:grid;gap:var(--space-3);animation:pop var(--medium) var(--ease)}.pop h3{margin:4px 0 0;font-size:var(--text-xs);color:var(--text-faint);text-transform:uppercase;letter-spacing:.06em}.pop label{display:grid;gap:4px;font-size:var(--text-sm)}.pop label.check{display:flex;align-items:center;gap:8px}.pop label.check input{accent-color:var(--accent)}.pop select,.pop input:not([type=checkbox]){height:var(--control-sm);padding:0 8px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg)}.pop p{margin:0;font-size:var(--text-xs);overflow-wrap:anywhere}.keys{display:grid;grid-template-columns:auto 1fr;gap:6px 12px;margin:0;font-size:var(--text-xs)}.keys dd{margin:0;color:var(--text-dim)}.toast{position:fixed;left:50%;bottom:calc(24px + var(--safe-bottom));transform:translate(-50%,20px);padding:8px 16px;border-radius:var(--radius-full);background:var(--text);color:var(--bg);font-size:var(--text-sm);opacity:0;pointer-events:none;transition:opacity var(--medium) var(--ease),transform var(--medium) var(--ease);z-index:60}.toast.show{opacity:1;transform:translate(-50%)}.skeleton{height:14px;border-radius:6px;background:linear-gradient(90deg,var(--surface-2),var(--surface-3),var(--surface-2));background-size:200% 100%;animation:shimmer 1.2s linear infinite}@keyframes shimmer{to{background-position:-200% 0}}@media(max-width:759px){.md.card{padding:var(--space-3) var(--space-4)}}.code,.code *,pre,code,.qo-item{font-variant-ligatures:none!important;font-feature-settings:"calt" 0,"liga" 0!important}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import"./chunk-7FMWBHZO.js";var e=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"}')),a=[e];export{a as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a,b as u,c as f}from"./chunk-DUICIQBC.js";import{a as m}from"./chunk-NCOVM3YF.js";import{b as p}from"./chunk-XE6SLBBE.js";import"./chunk-HNO6SQ7M.js";import"./chunk-4NXNVEWK.js";import"./chunk-P2FYOAEV.js";import"./chunk-FZFME6UK.js";import"./chunk-CALYHV7D.js";import"./chunk-7BAEB64Q.js";import"./chunk-SVM2H22K.js";import"./chunk-YUN7JSFJ.js";import{b as l}from"./chunk-4RNNBDFQ.js";import"./chunk-2ZCRJZGF.js";import"./chunk-ZZHMDDZN.js";import"./chunk-56ITEUFA.js";import"./chunk-RORF4F5V.js";import"./chunk-KPNXJBIW.js";import"./chunk-ADDF76FL.js";import"./chunk-JJ6YWJQS.js";import"./chunk-PZELHD2H.js";import"./chunk-SZYM6GIJ.js";import{b as s}from"./chunk-5XZPGKN4.js";import{a as t}from"./chunk-EIBFAW37.js";import"./chunk-FTY6WLQF.js";import"./chunk-7FMWBHZO.js";var v=l().RailroadAbnf.parser.LangiumParser,i=t(e=>{let r=e.alternatives.map(g);return r.length===1?r[0]:{type:"choice",alternatives:r}},"transformAlternation"),g=t(e=>{let r=e.elements.map(y);return r.length===1?r[0]:{type:"sequence",elements:r}},"transformConcatenation"),b=t(e=>{if(e.includes("*")){let[n,o]=e.split("*"),c=n?parseInt(n,10):0,d=o?parseInt(o,10):1/0;return{min:c,max:d}}let r=parseInt(e,10);return{min:r,max:r}},"parseRepeat"),y=t(e=>{let r=A(e.primary);if(!e.repeat)return r;let{min:n,max:o}=b(e.repeat);return n===0&&o===1?{type:"optional",element:r}:{type:"repetition",element:r,min:n,max:o}},"transformElement"),A=t(e=>{switch(e.$type){case"AbnfStringLiteral":return{type:"terminal",value:e.value};case"AbnfNumVal":return{type:"terminal",value:e.value};case"AbnfRuleName":return{type:"nonterminal",name:e.name};case"AbnfGroup":return i(e.element);case"AbnfOptionalGroup":return{type:"optional",element:i(e.element)};default:throw new Error(`Unsupported ABNF primary node: ${e.$type}`)}},"transformPrimary"),P=t(e=>({name:e.name,definition:i(e.definition)}),"transformRule"),h=t(e=>{m(e,a),e.title&&a.setTitle(e.title),e.rules.map(r=>a.addRule(P(r)))},"populateDb"),R={parse:t(e=>{a.clear(),s.debug("[ABNF Parser] Starting Langium parse");let r=v.parse(e);if(r.lexerErrors.length>0||r.parserErrors.length>0)throw new p(r);let n=r.value;s.debug("[ABNF Parser] Parsed rules:",n.rules.length),h(n),s.debug("[ABNF Parser] Parse complete")},"parse"),parser:{yy:a}},I={parser:R,db:a,renderer:f,styles:u};export{I as diagram};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import"./chunk-7FMWBHZO.js";var e=Object.freeze(JSON.parse(`{"displayName":"ActionScript","fileTypes":["as"],"name":"actionscript-3","patterns":[{"include":"#comments"},{"include":"#package"},{"include":"#class"},{"include":"#interface"},{"include":"#namespace_declaration"},{"include":"#import"},{"include":"#mxml"},{"include":"#strings"},{"include":"#regexp"},{"include":"#variable_declaration"},{"include":"#numbers"},{"include":"#primitive_types"},{"include":"#primitive_error_types"},{"include":"#dynamic_type"},{"include":"#language_constants"},{"include":"#language_variables"},{"include":"#guess_type"},{"include":"#guess_constant"},{"include":"#other_operators"},{"include":"#arithmetic_operators"},{"include":"#logical_operators"},{"include":"#array_access_operators"},{"include":"#vector_creation_operators"},{"include":"#control_keywords"},{"include":"#other_keywords"},{"include":"#use_namespace"},{"include":"#functions"},{"include":"#primitive_functions"},{"include":"#function_call"}],"repository":{"arithmetic_operators":{"match":"([-%+/]|(?<!:)\\\\*)","name":"keyword.operator.actionscript.3"},"array_access_operators":{"match":"([]\\\\[])","name":"keyword.operator.actionscript.3"},"class":{"begin":"(^|\\\\s+|;)(\\\\b(dynamic|final|abstract)\\\\b\\\\s+)?(\\\\b(internal|public)\\\\b\\\\s+)?(\\\\b(dynamic|final|abstract)\\\\b\\\\s+)?(?=\\\\bclass\\\\b)","beginCaptures":{"3":{"name":"storage.modifier.actionscript.3"},"5":{"name":"storage.modifier.actionscript.3"},"7":{"name":"storage.modifier.actionscript.3"}},"end":"}","name":"meta.class.actionscript.3","patterns":[{"include":"#class_declaration"},{"include":"#declaration_code_block"},{"include":"#metadata"},{"include":"#method"},{"include":"#comments"},{"include":"#strings"},{"include":"#regexp"},{"include":"#numbers"},{"include":"#primitive_types"},{"include":"#primitive_error_types"},{"include":"#dynamic_type"},{"include":"#language_constants"},{"include":"#language_variables"},{"include":"#other_operators"},{"include":"#other_keywords"},{"include":"#use_namespace"},{"include":"#guess_type"},{"include":"#guess_constant"},{"include":"#arithmetic_operators"},{"include":"#array_access_operators"},{"include":"#vector_creation_operators"},{"include":"#variable_declaration"},{"include":"#object_literal"},{"include":"#conditional_compilation"},{"include":"#primitive_functions"},{"include":"#function_call"}]},"class_declaration":{"begin":"\\\\b(class)\\\\b\\\\s+([$.0-9A-Z_a-z]+|\\\\*)","beginCaptures":{"1":{"name":"storage.type.class.actionscript.3"},"2":{"name":"entity.name.class.actionscript.3"}},"end":"\\\\{","name":"meta.class_declaration.actionscript.3","patterns":[{"include":"#extends"},{"include":"#implements"},{"include":"#comments"}]},"comments":{"patterns":[{"begin":"/\\\\*\\\\*(?!/)","end":"\\\\*/","name":"comment.block.documentation.actionscript.3","patterns":[{"match":"@(copy|default|eventType|example|exampleText|includeExample|inheritDoc|internal|param|private|return|see|since|throws)\\\\b","name":"keyword.other.documentation.actionscript.3.asdoc"}]},{"begin":"/\\\\*","end":"\\\\*/","name":"comment.block.actionscript.3"},{"match":"//.*","name":"comment.line.actionscript.3"}]},"conditional_compilation":{"captures":{"2":{"name":"constant.other.actionscript.3"},"3":{"name":"constant.other.actionscript.3"}},"match":"(^|\\\\s+|;)\\\\b(\\\\w+)\\\\b::\\\\b(\\\\w+)\\\\b","name":"meta.conditional.actionscript.3"},"control_keywords":{"match":"\\\\b(if|else|do|while|for|each|continue|return|switch|case|default|break|try|catch|finally|throw|with)\\\\b","name":"keyword.control.actionscript.3"},"declaration_code_block":{"begin":"\\\\{","end":"}","name":"meta.code_block.actionscript.3","patterns":[{"include":"#method"},{"include":"#variable_declaration"},{"include":"#comments"},{"include":"#strings"},{"include":"#regexp"},{"include":"#numbers"},{"include":"#primitive_types"},{"include":"#primitive_error_types"},{"include":"#dynamic_type"},{"include":"#language_constants"},{"include":"#language_variables"},{"include":"#guess_type"},{"include":"#guess_constant"},{"include":"#other_operators"},{"include":"#arithmetic_operators"},{"include":"#logical_operators"},{"include":"#array_access_operators"},{"include":"#vector_creation_operators"},{"include":"#control_keywords"},{"include":"#other_keywords"},{"include":"#use_namespace"},{"include":"#functions"},{"include":"#import"},{"include":"#primitive_functions"},{"include":"#function_call"}]},"dynamic_type":{"captures":{"1":{"name":"support.type.actionscript.3"}},"match":"(?<=:)\\\\s*(\\\\*)"},"escapes":{"match":"\\\\\\\\(x\\\\h{2}|[012][0-7]{0,2}|3[0-6][0-7]|37[0-7]?|[4-7][0-7]?|.)","name":"constant.character.escape.actionscript.3"},"extends":{"captures":{"1":{"name":"keyword.other.actionscript.3"},"2":{"name":"entity.other.inherited-class.actionscript.3"},"3":{"name":"entity.other.inherited-class.actionscript.3"}},"match":"\\\\b(extends)\\\\b\\\\s+([$.0-9A-Z_a-z]+)\\\\s*(?:,\\\\s*([$.0-9A-Z_a-z]+))*\\\\s*","name":"meta.extends.actionscript.3"},"function_arguments":{"begin":"\\\\(","end":"\\\\)","name":"meta.function_arguments.actionscript.3","patterns":[{"include":"#parameters"},{"include":"#comments"}]},"function_call":{"captures":{"1":{"name":"entity.name.function.actionscript.3"}},"match":"\\\\b([$0-9A-Z_a-z]+)(?=\\\\s*\\\\()"},"functions":{"begin":"\\\\b(function)\\\\b(?:\\\\s+\\\\b([gs]et)\\\\b\\\\s+)?\\\\s*([$0-9A-Z_a-z]+\\\\b)?","beginCaptures":{"1":{"name":"storage.type.function.actionscript.3"},"2":{"name":"storage.modifier.actionscript.3"},"3":{"name":"entity.name.function.actionscript.3"}},"end":"($|;|(?=\\\\{))","name":"meta.function.actionscript.3","patterns":[{"include":"#function_arguments"},{"include":"#return_type"},{"include":"#comments"}]},"guess_constant":{"captures":{"1":{"name":"constant.other.actionscript.3"}},"match":"\\\\b([$A-Z][0-9A-Z_]+)\\\\b"},"guess_type":{"captures":{"1":{"name":"support.type.actionscript.3"}},"match":"\\\\b((?:[$0-9A-Z_a-z]+\\\\.)*[A-Z][0-9A-Z]*[a-z]+[$0-9A-Z_a-z]*)\\\\b"},"implements":{"captures":{"1":{"name":"keyword.other.actionscript.3"},"2":{"name":"entity.other.inherited-class.actionscript.3"},"3":{"name":"entity.other.inherited-class.actionscript.3"}},"match":"\\\\b(implements)\\\\b\\\\s+([$.0-9A-Z_a-z]+)\\\\s*(?:,\\\\s*([$.0-9A-Z_a-z]+))*\\\\s*","name":"meta.implements.actionscript.3"},"import":{"captures":{"2":{"name":"keyword.control.import.actionscript.3"},"3":{"name":"support.type.actionscript.3"}},"match":"(^|\\\\s+|;)\\\\b(import)\\\\b\\\\s+([$.0-9A-Z_a-z]+(?:\\\\.\\\\*)?)\\\\s*(?=;|$)","name":"meta.import.actionscript.3"},"interface":{"begin":"(^|\\\\s+|;)(\\\\b(internal|public)\\\\b\\\\s+)?(?=\\\\binterface\\\\b)","beginCaptures":{"3":{"name":"storage.modifier.actionscript.3"}},"end":"}","name":"meta.interface.actionscript.3","patterns":[{"include":"#interface_declaration"},{"include":"#metadata"},{"include":"#functions"},{"include":"#comments"}]},"interface_declaration":{"begin":"\\\\b(interface)\\\\b\\\\s+([$.0-9A-Z_a-z]+)","beginCaptures":{"1":{"name":"storage.type.interface.actionscript.3"},"2":{"name":"entity.name.class.actionscript.3"}},"end":"\\\\{","name":"meta.class_declaration.actionscript.3","patterns":[{"include":"#extends"},{"include":"#comments"}]},"language_constants":{"match":"\\\\b(true|false|null|Infinity|-Infinity|NaN|undefined)\\\\b","name":"constant.language.actionscript.3"},"language_variables":{"match":"\\\\b(super|this|arguments)\\\\b","name":"variable.language.actionscript.3"},"local_code_block":{"begin":"\\\\{","end":"}","name":"meta.code_block.actionscript.3","patterns":[{"include":"#local_code_block"},{"include":"#comments"},{"include":"#strings"},{"include":"#regexp"},{"include":"#variable_declaration"},{"include":"#numbers"},{"include":"#primitive_types"},{"include":"#primitive_error_types"},{"include":"#dynamic_type"},{"include":"#language_constants"},{"include":"#language_variables"},{"include":"#guess_type"},{"include":"#guess_constant"},{"include":"#other_operators"},{"include":"#arithmetic_operators"},{"include":"#logical_operators"},{"include":"#array_access_operators"},{"include":"#vector_creation_operators"},{"include":"#control_keywords"},{"include":"#other_keywords"},{"include":"#use_namespace"},{"include":"#functions"},{"include":"#import"},{"include":"#primitive_functions"},{"include":"#function_call"}]},"logical_operators":{"match":"([!\\\\&<>?^|~])","name":"keyword.operator.actionscript.3"},"metadata":{"begin":"(?<=(?:^|[;{}]|\\\\*/)\\\\s*)\\\\[\\\\s*\\\\b([$A-Z_a-z][$0-9A-Z_a-z]+)\\\\b","beginCaptures":{"1":{"name":"keyword.other.actionscript.3"}},"end":"]","name":"meta.metadata_info.actionscript.3","patterns":[{"include":"#metadata_info"}]},"metadata_info":{"begin":"\\\\(","end":"\\\\)","patterns":[{"include":"#strings"},{"captures":{"1":{"name":"variable.parameter.actionscript.3"},"2":{"name":"keyword.operator.actionscript.3"}},"match":"(\\\\w+)\\\\s*(=)"}]},"method":{"begin":"(^|\\\\s+)((\\\\w+)\\\\s+)?((\\\\w+)\\\\s+)?((\\\\w+)\\\\s+)?((\\\\w+)\\\\s+)?(?=\\\\bfunction\\\\b)","beginCaptures":{"3":{"name":"storage.modifier.actionscript.3"},"5":{"name":"storage.modifier.actionscript.3"},"7":{"name":"storage.modifier.actionscript.3"},"8":{"name":"storage.modifier.actionscript.3"}},"end":"(?<=([;}]))","name":"meta.method.actionscript.3","patterns":[{"include":"#functions"},{"include":"#local_code_block"}]},"mxml":{"begin":"<!\\\\[CDATA\\\\[","end":"]]>","name":"meta.cdata.actionscript.3","patterns":[{"include":"#comments"},{"include":"#import"},{"include":"#metadata"},{"include":"#class"},{"include":"#namespace_declaration"},{"include":"#use_namespace"},{"include":"#class_declaration"},{"include":"#method"},{"include":"#comments"},{"include":"#strings"},{"include":"#regexp"},{"include":"#numbers"},{"include":"#primitive_types"},{"include":"#primitive_error_types"},{"include":"#dynamic_type"},{"include":"#language_constants"},{"include":"#language_variables"},{"include":"#other_keywords"},{"include":"#guess_type"},{"include":"#guess_constant"},{"include":"#other_operators"},{"include":"#arithmetic_operators"},{"include":"#array_access_operators"},{"include":"#vector_creation_operators"},{"include":"#variable_declaration"},{"include":"#primitive_functions"},{"include":"#function_call"}]},"namespace_declaration":{"captures":{"2":{"name":"storage.modifier.actionscript.3"},"3":{"name":"storage.modifier.actionscript.3"}},"match":"((\\\\w+)\\\\s+)?(namespace)\\\\s+[$0-9A-Z_a-z]+","name":"meta.namespace_declaration.actionscript.3"},"numbers":{"match":"\\\\b((0([Xx])\\\\h*)|(([0-9]+\\\\.?[0-9]*)|(\\\\.[0-9]+))(([Ee])([-+])?[0-9]+)?)([Ll]|UL|ul|[FUfu])?\\\\b","name":"constant.numeric.actionscript.3"},"object_literal":{"begin":"\\\\{","end":"}","name":"meta.object_literal.actionscript.3","patterns":[{"include":"#object_literal"},{"include":"#comments"},{"include":"#strings"},{"include":"#regexp"},{"include":"#numbers"},{"include":"#primitive_types"},{"include":"#primitive_error_types"},{"include":"#dynamic_type"},{"include":"#language_constants"},{"include":"#language_variables"},{"include":"#guess_type"},{"include":"#guess_constant"},{"include":"#array_access_operators"},{"include":"#vector_creation_operators"},{"include":"#functions"},{"include":"#primitive_functions"},{"include":"#function_call"}]},"other_keywords":{"match":"\\\\b(as|delete|in|instanceof|is|native|new|to|typeof)\\\\b","name":"keyword.other.actionscript.3"},"other_operators":{"match":"([.=])","name":"keyword.operator.actionscript.3"},"package":{"begin":"(^|\\\\s+)(package)\\\\b","beginCaptures":{"2":{"name":"keyword.other.actionscript.3"}},"end":"}","name":"meta.package.actionscript.3","patterns":[{"include":"#package_name"},{"include":"#variable_declaration"},{"include":"#method"},{"include":"#comments"},{"include":"#return_type"},{"include":"#import"},{"include":"#use_namespace"},{"include":"#strings"},{"include":"#numbers"},{"include":"#language_constants"},{"include":"#metadata"},{"include":"#class"},{"include":"#interface"},{"include":"#namespace_declaration"}]},"package_name":{"begin":"(?<=package)\\\\s+([._\\\\w]*)\\\\b","end":"\\\\{","name":"meta.package_name.actionscript.3"},"parameters":{"begin":"(\\\\.\\\\.\\\\.)?\\\\s*([$A-Z_a-z][$0-9A-Z_a-z]*)(?:\\\\s*(:)\\\\s*(?:([$A-Za-z][$0-9A-Z_a-z]+(?:\\\\.[$A-Za-z][$0-9A-Z_a-z]+)*)(?:\\\\.<([$A-Za-z][$0-9A-Z_a-z]+(?:\\\\.[$A-Za-z][$0-9A-Z_a-z]+)*)>)?|(\\\\*)))?(?:\\\\s*(=))?","beginCaptures":{"1":{"name":"keyword.operator.actionscript.3"},"2":{"name":"variable.parameter.actionscript.3"},"3":{"name":"keyword.operator.actionscript.3"},"4":{"name":"support.type.actionscript.3"},"5":{"name":"support.type.actionscript.3"},"6":{"name":"support.type.actionscript.3"},"7":{"name":"keyword.operator.actionscript.3"}},"end":",|(?=\\\\))","patterns":[{"include":"#strings"},{"include":"#numbers"},{"include":"#language_constants"},{"include":"#comments"},{"include":"#primitive_types"},{"include":"#primitive_error_types"},{"include":"#dynamic_type"},{"include":"#guess_type"},{"include":"#guess_constant"}]},"primitive_error_types":{"captures":{"1":{"name":"support.class.error.actionscript.3"}},"match":"\\\\b((Argument|Definition|Eval|Internal|Range|Reference|Security|Syntax|Type|URI|Verify)?Error)\\\\b"},"primitive_functions":{"captures":{"1":{"name":"support.function.actionscript.3"}},"match":"\\\\b(decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|escape|isFinite|isNaN|isXMLName|parseFloat|parseInt|trace|unescape)(?=\\\\s*\\\\()"},"primitive_types":{"captures":{"1":{"name":"support.class.builtin.actionscript.3"}},"match":"\\\\b(Array|Boolean|Class|Date|Function|int|JSON|Math|Namespace|Number|Object|QName|RegExp|String|uint|Vector|XML|XMLList|\\\\*(?<=a))\\\\b"},"regexp":{"begin":"(?<=[(,:=\\\\[]|^|return|&&|\\\\|\\\\||!)\\\\s*(/)(?![*+/?{}])","end":"$|(/)[gim]*","name":"string.regex.actionscript.3","patterns":[{"match":"\\\\\\\\.","name":"constant.character.escape.actionscript.3"},{"match":"\\\\[(\\\\\\\\]|[^]])*]","name":"constant.character.class.actionscript.3"}]},"return_type":{"captures":{"1":{"name":"keyword.operator.actionscript.3"},"2":{"name":"support.type.actionscript.3"},"3":{"name":"support.type.actionscript.3"},"4":{"name":"support.type.actionscript.3"}},"match":"(:)\\\\s*([$A-Za-z][$0-9A-Z_a-z]+(?:\\\\.[$A-Za-z][$0-9A-Z_a-z]+)*)(?:\\\\.<([$A-Za-z][$0-9A-Z_a-z]+(?:\\\\.[$A-Za-z][$0-9A-Z_a-z]+)*)>)?|(\\\\*)"},"strings":{"patterns":[{"begin":"@\\"","end":"\\"","name":"string.quoted.verbatim.actionscript.3"},{"begin":"\\"","end":"\\"","name":"string.quoted.double.actionscript.3","patterns":[{"include":"#escapes"}]},{"begin":"'","end":"'","name":"string.quoted.single.actionscript.3","patterns":[{"include":"#escapes"}]}]},"use_namespace":{"captures":{"2":{"name":"keyword.other.actionscript.3"},"3":{"name":"keyword.other.actionscript.3"},"4":{"name":"storage.modifier.actionscript.3"}},"match":"(^|\\\\s+|;)(use\\\\s+)?(namespace)\\\\s+(\\\\w+)\\\\s*(;|$)"},"variable_declaration":{"captures":{"2":{"name":"storage.modifier.actionscript.3"},"4":{"name":"storage.modifier.actionscript.3"},"6":{"name":"storage.modifier.actionscript.3"},"7":{"name":"storage.modifier.actionscript.3"},"8":{"name":"keyword.operator.actionscript.3"}},"match":"((static)\\\\s+)?((\\\\w+)\\\\s+)?((static)\\\\s+)?(const|var)\\\\s+[$0-9A-Z_a-z]+(?:\\\\s*(:))?","name":"meta.variable_declaration.actionscript.3"},"vector_creation_operators":{"match":"([<>])","name":"keyword.operator.actionscript.3"}},"scopeName":"source.actionscript.3","aliases":["actionscript","as3"]}`)),t=[e];export{t as default};
|