@bytespell/shella 0.1.18 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +278 -0
- package/dist/bin/shella-daemon.d.ts +3 -0
- package/dist/bin/shella-daemon.d.ts.map +1 -0
- package/dist/bin/shella-daemon.js +8 -0
- package/dist/bin/shella-daemon.js.map +1 -0
- package/dist/bin/shella-init.d.ts +3 -0
- package/dist/bin/shella-init.d.ts.map +1 -0
- package/dist/bin/shella-init.js +234 -0
- package/dist/bin/shella-init.js.map +1 -0
- package/dist/src/api.d.ts +3 -0
- package/dist/src/api.d.ts.map +1 -0
- package/dist/src/api.js +201 -0
- package/dist/src/api.js.map +1 -0
- package/dist/src/index.d.ts +2 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +70 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/logger.d.ts +4 -0
- package/dist/src/logger.d.ts.map +1 -0
- package/dist/src/logger.js +24 -0
- package/dist/src/logger.js.map +1 -0
- package/dist/src/paths.d.ts +17 -0
- package/dist/src/paths.d.ts.map +1 -0
- package/dist/src/paths.js +34 -0
- package/dist/src/paths.js.map +1 -0
- package/dist/src/plugin-manager.d.ts +24 -0
- package/dist/src/plugin-manager.d.ts.map +1 -0
- package/dist/src/plugin-manager.js +379 -0
- package/dist/src/plugin-manager.js.map +1 -0
- package/dist/src/port-allocator.d.ts +11 -0
- package/dist/src/port-allocator.d.ts.map +1 -0
- package/dist/src/port-allocator.js +51 -0
- package/dist/src/port-allocator.js.map +1 -0
- package/dist/src/registry.d.ts +22 -0
- package/dist/src/registry.d.ts.map +1 -0
- package/dist/src/registry.js +176 -0
- package/dist/src/registry.js.map +1 -0
- package/dist/src/types.d.ts +62 -0
- package/dist/src/types.d.ts.map +1 -0
- package/dist/src/types.js +4 -0
- package/dist/src/types.js.map +1 -0
- package/dist/src/watcher.d.ts +11 -0
- package/dist/src/watcher.d.ts.map +1 -0
- package/dist/src/watcher.js +111 -0
- package/dist/src/watcher.js.map +1 -0
- package/package.json +46 -74
- package/templates/express/package.json +11 -0
- package/templates/express/public/index.html +64 -0
- package/templates/express/server.js +37 -0
- package/templates/shadcn/README.md +3 -0
- package/templates/shadcn/components.json +24 -0
- package/templates/shadcn/eslint.config.js +23 -0
- package/templates/shadcn/index.html +13 -0
- package/templates/shadcn/package.json +43 -0
- package/templates/shadcn/public/vite.svg +1 -0
- package/templates/shadcn/server.js +59 -0
- package/templates/shadcn/src/App.tsx +35 -0
- package/templates/shadcn/src/assets/react.svg +1 -0
- package/templates/shadcn/src/components/ui/alert-dialog.tsx +182 -0
- package/templates/shadcn/src/components/ui/badge.tsx +45 -0
- package/templates/shadcn/src/components/ui/button.tsx +60 -0
- package/templates/shadcn/src/components/ui/card.tsx +94 -0
- package/templates/shadcn/src/components/ui/combobox.tsx +294 -0
- package/templates/shadcn/src/components/ui/dropdown-menu.tsx +253 -0
- package/templates/shadcn/src/components/ui/field.tsx +225 -0
- package/templates/shadcn/src/components/ui/input-group.tsx +147 -0
- package/templates/shadcn/src/components/ui/input.tsx +19 -0
- package/templates/shadcn/src/components/ui/label.tsx +24 -0
- package/templates/shadcn/src/components/ui/select.tsx +185 -0
- package/templates/shadcn/src/components/ui/separator.tsx +26 -0
- package/templates/shadcn/src/components/ui/textarea.tsx +18 -0
- package/templates/shadcn/src/index.css +129 -0
- package/templates/shadcn/src/lib/utils.ts +6 -0
- package/templates/shadcn/src/main.tsx +11 -0
- package/templates/shadcn/tsconfig.app.json +32 -0
- package/templates/shadcn/tsconfig.json +13 -0
- package/templates/shadcn/tsconfig.node.json +26 -0
- package/templates/shadcn/vite.config.ts +14 -0
- package/templates/vanilla/package.json +8 -0
- package/templates/vanilla/public/index.html +64 -0
- package/templates/vanilla/server.js +54 -0
- package/dist/bin/cli.js +0 -12203
- package/dist/bin/cli.js.map +0 -1
- package/dist/index.js +0 -12123
- package/dist/index.js.map +0 -1
- package/dist/public/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
- package/dist/public/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
- package/dist/public/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
- package/dist/public/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
- package/dist/public/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
- package/dist/public/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
- package/dist/public/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
- package/dist/public/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
- package/dist/public/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
- package/dist/public/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
- package/dist/public/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
- package/dist/public/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
- package/dist/public/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
- package/dist/public/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
- package/dist/public/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
- package/dist/public/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
- package/dist/public/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
- package/dist/public/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
- package/dist/public/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
- package/dist/public/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
- package/dist/public/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
- package/dist/public/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
- package/dist/public/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
- package/dist/public/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
- package/dist/public/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
- package/dist/public/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
- package/dist/public/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
- package/dist/public/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
- package/dist/public/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
- package/dist/public/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
- package/dist/public/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
- package/dist/public/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
- package/dist/public/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
- package/dist/public/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
- package/dist/public/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
- package/dist/public/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
- package/dist/public/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
- package/dist/public/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
- package/dist/public/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
- package/dist/public/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
- package/dist/public/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
- package/dist/public/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
- package/dist/public/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
- package/dist/public/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
- package/dist/public/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
- package/dist/public/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
- package/dist/public/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
- package/dist/public/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
- package/dist/public/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
- package/dist/public/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
- package/dist/public/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
- package/dist/public/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
- package/dist/public/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
- package/dist/public/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
- package/dist/public/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
- package/dist/public/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
- package/dist/public/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
- package/dist/public/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
- package/dist/public/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
- package/dist/public/assets/_baseUniq-ByOyfTSt.js +0 -1
- package/dist/public/assets/abap-BdImnpbu.js +0 -1
- package/dist/public/assets/actionscript-3-CfeIJUat.js +0 -1
- package/dist/public/assets/ada-bCR0ucgS.js +0 -1
- package/dist/public/assets/andromeeda-C-Jbm3Hp.js +0 -1
- package/dist/public/assets/angular-html-CU67Zn6k.js +0 -1
- package/dist/public/assets/angular-ts-BwZT4LLn.js +0 -1
- package/dist/public/assets/apache-Pmp26Uib.js +0 -1
- package/dist/public/assets/apex-D8_7TLub.js +0 -1
- package/dist/public/assets/apl-dKokRX4l.js +0 -1
- package/dist/public/assets/applescript-Co6uUVPk.js +0 -1
- package/dist/public/assets/ara-BRHolxvo.js +0 -1
- package/dist/public/assets/arc-DskGrXLH.js +0 -1
- package/dist/public/assets/architectureDiagram-VXUJARFQ-WbUu03xi.js +0 -36
- package/dist/public/assets/asciidoc-Dv7Oe6Be.js +0 -1
- package/dist/public/assets/asm-D_Q5rh1f.js +0 -1
- package/dist/public/assets/astro-CbQHKStN.js +0 -1
- package/dist/public/assets/aurora-x-D-2ljcwZ.js +0 -1
- package/dist/public/assets/awk-DMzUqQB5.js +0 -1
- package/dist/public/assets/ayu-dark-CmMr59Fi.js +0 -1
- package/dist/public/assets/ballerina-BFfxhgS-.js +0 -1
- package/dist/public/assets/bat-BkioyH1T.js +0 -1
- package/dist/public/assets/beancount-k_qm7-4y.js +0 -1
- package/dist/public/assets/berry-uYugtg8r.js +0 -1
- package/dist/public/assets/bibtex-CHM0blh-.js +0 -1
- package/dist/public/assets/bicep-Bmn6On1c.js +0 -1
- package/dist/public/assets/blade-D4QpJJKB.js +0 -1
- package/dist/public/assets/blockDiagram-VD42YOAC-4KVAiSxZ.js +0 -122
- package/dist/public/assets/bsl-BO_Y6i37.js +0 -1
- package/dist/public/assets/c-BIGW1oBm.js +0 -1
- package/dist/public/assets/c3-VCDPK7BO.js +0 -1
- package/dist/public/assets/c4Diagram-YG6GDRKO-JcXJu5BS.js +0 -10
- package/dist/public/assets/cadence-Bv_4Rxtq.js +0 -1
- package/dist/public/assets/cairo-KRGpt6FW.js +0 -1
- package/dist/public/assets/catppuccin-frappe-DFWUc33u.js +0 -1
- package/dist/public/assets/catppuccin-latte-C9dUb6Cb.js +0 -1
- package/dist/public/assets/catppuccin-macchiato-DQyhUUbL.js +0 -1
- package/dist/public/assets/catppuccin-mocha-D87Tk5Gz.js +0 -1
- package/dist/public/assets/channel-BdAgzAMp.js +0 -1
- package/dist/public/assets/chunk-4BX2VUAB-CqfDS9Sf.js +0 -1
- package/dist/public/assets/chunk-55IACEB6-UUyu6Y64.js +0 -1
- package/dist/public/assets/chunk-B4BG7PRW-C0F414xz.js +0 -165
- package/dist/public/assets/chunk-DI55MBZ5--p_STlY7.js +0 -220
- package/dist/public/assets/chunk-FMBD7UC4-CB48BS8a.js +0 -15
- package/dist/public/assets/chunk-QN33PNHL-vwkXbKVH.js +0 -1
- package/dist/public/assets/chunk-QZHKN3VN-B33xbk2M.js +0 -1
- package/dist/public/assets/chunk-TZMSLE5B-CLiEWPPK.js +0 -1
- package/dist/public/assets/clarity-D53aC0YG.js +0 -1
- package/dist/public/assets/classDiagram-2ON5EDUG-DFl0tfxs.js +0 -1
- package/dist/public/assets/classDiagram-v2-WZHVMYZB-DFl0tfxs.js +0 -1
- package/dist/public/assets/clojure-P80f7IUj.js +0 -1
- package/dist/public/assets/clone-C0W1RDRM.js +0 -1
- package/dist/public/assets/cmake-D1j8_8rp.js +0 -1
- package/dist/public/assets/cobol-nwyudZeR.js +0 -1
- package/dist/public/assets/code-block-IT6T5CEO-B7sxiU38.js +0 -2
- package/dist/public/assets/codeowners-Bp6g37R7.js +0 -1
- package/dist/public/assets/codeql-DsOJ9woJ.js +0 -1
- package/dist/public/assets/coffee-Ch7k5sss.js +0 -1
- package/dist/public/assets/common-lisp-Cg-RD9OK.js +0 -1
- package/dist/public/assets/coq-DkFqJrB1.js +0 -1
- package/dist/public/assets/cose-bilkent-S5V4N54A-DXzclefE.js +0 -1
- package/dist/public/assets/cpp-CofmeUqb.js +0 -1
- package/dist/public/assets/crystal-tKQVLTB8.js +0 -1
- package/dist/public/assets/csharp-K5feNrxe.js +0 -1
- package/dist/public/assets/css-DPfMkruS.js +0 -1
- package/dist/public/assets/csv-fuZLfV_i.js +0 -1
- package/dist/public/assets/cue-D82EKSYY.js +0 -1
- package/dist/public/assets/cypher-COkxafJQ.js +0 -1
- package/dist/public/assets/cytoscape.esm-5J0xJHOV.js +0 -321
- package/dist/public/assets/d-85-TOEBH.js +0 -1
- package/dist/public/assets/dagre-6UL2VRFP-BsdG-n7L.js +0 -4
- package/dist/public/assets/dark-plus-C3mMm8J8.js +0 -1
- package/dist/public/assets/dart-CF10PKvl.js +0 -1
- package/dist/public/assets/dax-CEL-wOlO.js +0 -1
- package/dist/public/assets/defaultLocale-C4B-KCzX.js +0 -1
- package/dist/public/assets/demo.svg +0 -1
- package/dist/public/assets/desktop-BmXAJ9_W.js +0 -1
- package/dist/public/assets/diagram-PSM6KHXK-QgD_inp5.js +0 -24
- package/dist/public/assets/diagram-QEK2KX5R-wzLRdwrU.js +0 -43
- package/dist/public/assets/diagram-S2PKOQOG-CuUvB9bN.js +0 -24
- package/dist/public/assets/diff-D97Zzqfu.js +0 -1
- package/dist/public/assets/docker-BcOcwvcX.js +0 -1
- package/dist/public/assets/dotenv-Da5cRb03.js +0 -1
- package/dist/public/assets/dracula-BzJJZx-M.js +0 -1
- package/dist/public/assets/dracula-soft-BXkSAIEj.js +0 -1
- package/dist/public/assets/dream-maker-BtqSS_iP.js +0 -1
- package/dist/public/assets/edge-BkV0erSs.js +0 -1
- package/dist/public/assets/elixir-CDX3lj18.js +0 -1
- package/dist/public/assets/elm-DbKCFpqz.js +0 -1
- package/dist/public/assets/emacs-lisp-C9XAeP06.js +0 -1
- package/dist/public/assets/erDiagram-Q2GNP2WA-CGklTYeV.js +0 -60
- package/dist/public/assets/erb-BOJIQeun.js +0 -1
- package/dist/public/assets/erlang-DsQrWhSR.js +0 -1
- package/dist/public/assets/everforest-dark-BgDCqdQA.js +0 -1
- package/dist/public/assets/everforest-light-C8M2exoo.js +0 -1
- package/dist/public/assets/fennel-BYunw83y.js +0 -1
- package/dist/public/assets/fish-BvzEVeQv.js +0 -1
- package/dist/public/assets/flowDiagram-NV44I4VS-CxjU7AVg.js +0 -162
- package/dist/public/assets/fluent-C4IJs8-o.js +0 -1
- package/dist/public/assets/fortran-fixed-form-CkoXwp7k.js +0 -1
- package/dist/public/assets/fortran-free-form-BxgE0vQu.js +0 -1
- package/dist/public/assets/fsharp-CXgrBDvD.js +0 -1
- package/dist/public/assets/ganttDiagram-JELNMOA3-CYpYrSPR.js +0 -267
- package/dist/public/assets/gdresource-B7Tvp0Sc.js +0 -1
- package/dist/public/assets/gdscript-DTMYz4Jt.js +0 -1
- package/dist/public/assets/gdshader-DkwncUOv.js +0 -1
- package/dist/public/assets/genie-D0YGMca9.js +0 -1
- package/dist/public/assets/gherkin-DyxjwDmM.js +0 -1
- package/dist/public/assets/git-commit-F4YmCXRG.js +0 -1
- package/dist/public/assets/git-rebase-r7XF79zn.js +0 -1
- package/dist/public/assets/gitGraphDiagram-NY62KEGX-DVNwWIcr.js +0 -65
- package/dist/public/assets/github-dark-DHJKELXO.js +0 -1
- package/dist/public/assets/github-dark-default-Cuk6v7N8.js +0 -1
- package/dist/public/assets/github-dark-dimmed-DH5Ifo-i.js +0 -1
- package/dist/public/assets/github-dark-high-contrast-E3gJ1_iC.js +0 -1
- package/dist/public/assets/github-light-DAi9KRSo.js +0 -1
- package/dist/public/assets/github-light-default-D7oLnXFd.js +0 -1
- package/dist/public/assets/github-light-high-contrast-BfjtVDDH.js +0 -1
- package/dist/public/assets/gleam-BspZqrRM.js +0 -1
- package/dist/public/assets/glimmer-js-Rg0-pVw9.js +0 -1
- package/dist/public/assets/glimmer-ts-U6CK756n.js +0 -1
- package/dist/public/assets/glsl-DplSGwfg.js +0 -1
- package/dist/public/assets/gn-n2N0HUVH.js +0 -1
- package/dist/public/assets/gnuplot-DdkO51Og.js +0 -1
- package/dist/public/assets/go-Dn2_MT6a.js +0 -1
- package/dist/public/assets/graph-pflBUROZ.js +0 -1
- package/dist/public/assets/graphql-ChdNCCLP.js +0 -1
- package/dist/public/assets/groovy-gcz8RCvz.js +0 -1
- package/dist/public/assets/gruvbox-dark-hard-CFHQjOhq.js +0 -1
- package/dist/public/assets/gruvbox-dark-medium-GsRaNv29.js +0 -1
- package/dist/public/assets/gruvbox-dark-soft-CVdnzihN.js +0 -1
- package/dist/public/assets/gruvbox-light-hard-CH1njM8p.js +0 -1
- package/dist/public/assets/gruvbox-light-medium-DRw_LuNl.js +0 -1
- package/dist/public/assets/gruvbox-light-soft-hJgmCMqR.js +0 -1
- package/dist/public/assets/hack-CaT9iCJl.js +0 -1
- package/dist/public/assets/haml-B8DHNrY2.js +0 -1
- package/dist/public/assets/handlebars-BL8al0AC.js +0 -1
- package/dist/public/assets/haskell-Df6bDoY_.js +0 -1
- package/dist/public/assets/haxe-CzTSHFRz.js +0 -1
- package/dist/public/assets/hcl-BWvSN4gD.js +0 -1
- package/dist/public/assets/hjson-D5-asLiD.js +0 -1
- package/dist/public/assets/hlsl-D3lLCCz7.js +0 -1
- package/dist/public/assets/houston-DnULxvSX.js +0 -1
- package/dist/public/assets/html-GMplVEZG.js +0 -1
- package/dist/public/assets/html-derivative-BFtXZ54Q.js +0 -1
- package/dist/public/assets/http-jrhK8wxY.js +0 -1
- package/dist/public/assets/hurl-irOxFIW8.js +0 -1
- package/dist/public/assets/hxml-Bvhsp5Yf.js +0 -1
- package/dist/public/assets/hy-DFXneXwc.js +0 -1
- package/dist/public/assets/imba-DGztddWO.js +0 -1
- package/dist/public/assets/index-C2YNSdOx.js +0 -1781
- package/dist/public/assets/index-C7JP9qmQ.css +0 -1
- package/dist/public/assets/index-DkE6H0eh.js +0 -23
- package/dist/public/assets/infoDiagram-WHAUD3N6-CrSA2woO.js +0 -2
- package/dist/public/assets/ini-BEwlwnbL.js +0 -1
- package/dist/public/assets/init-Gi6I4Gst.js +0 -1
- package/dist/public/assets/inter-cyrillic-400-normal-HOLc17fK.woff +0 -0
- package/dist/public/assets/inter-cyrillic-400-normal-obahsSVq.woff2 +0 -0
- package/dist/public/assets/inter-cyrillic-ext-400-normal-BQZuk6qB.woff2 +0 -0
- package/dist/public/assets/inter-cyrillic-ext-400-normal-DQukG94-.woff +0 -0
- package/dist/public/assets/inter-greek-400-normal-B4URO6DV.woff2 +0 -0
- package/dist/public/assets/inter-greek-400-normal-q2sYcFCs.woff +0 -0
- package/dist/public/assets/inter-greek-ext-400-normal-DGGRlc-M.woff2 +0 -0
- package/dist/public/assets/inter-greek-ext-400-normal-KugGGMne.woff +0 -0
- package/dist/public/assets/inter-latin-400-normal-C38fXH4l.woff2 +0 -0
- package/dist/public/assets/inter-latin-400-normal-CyCys3Eg.woff +0 -0
- package/dist/public/assets/inter-latin-ext-400-normal-77YHD8bZ.woff +0 -0
- package/dist/public/assets/inter-latin-ext-400-normal-C1nco2VV.woff2 +0 -0
- package/dist/public/assets/inter-vietnamese-400-normal-Bbgyi5SW.woff +0 -0
- package/dist/public/assets/inter-vietnamese-400-normal-DMkecbls.woff2 +0 -0
- package/dist/public/assets/java-CylS5w8V.js +0 -1
- package/dist/public/assets/javascript-wDzz0qaB.js +0 -1
- package/dist/public/assets/jinja-4LBKfQ-Z.js +0 -1
- package/dist/public/assets/jison-wvAkD_A8.js +0 -1
- package/dist/public/assets/journeyDiagram-XKPGCS4Q-CZ4u0wMW.js +0 -139
- package/dist/public/assets/json-Cp-IABpG.js +0 -1
- package/dist/public/assets/json5-C9tS-k6U.js +0 -1
- package/dist/public/assets/jsonc-Des-eS-w.js +0 -1
- package/dist/public/assets/jsonl-DcaNXYhu.js +0 -1
- package/dist/public/assets/jsonnet-DFQXde-d.js +0 -1
- package/dist/public/assets/jssm-C2t-YnRu.js +0 -1
- package/dist/public/assets/jsx-g9-lgVsj.js +0 -1
- package/dist/public/assets/julia-CxzCAyBv.js +0 -1
- package/dist/public/assets/kanagawa-dragon-CkXjmgJE.js +0 -1
- package/dist/public/assets/kanagawa-lotus-CfQXZHmo.js +0 -1
- package/dist/public/assets/kanagawa-wave-DWedfzmr.js +0 -1
- package/dist/public/assets/kanban-definition-3W4ZIXB7-B_CeXxO7.js +0 -89
- package/dist/public/assets/katex-DvXFAOB1.css +0 -1
- package/dist/public/assets/kdl-DV7GczEv.js +0 -1
- package/dist/public/assets/kotlin-BdnUsdx6.js +0 -1
- package/dist/public/assets/kusto-DZf3V79B.js +0 -1
- package/dist/public/assets/laserwave-DUszq2jm.js +0 -1
- package/dist/public/assets/latex-B4uzh10-.js +0 -1
- package/dist/public/assets/layout-D5ppmRxC.js +0 -1
- package/dist/public/assets/lean-BZvkOJ9d.js +0 -1
- package/dist/public/assets/less-B1dDrJ26.js +0 -1
- package/dist/public/assets/light-plus-B7mTdjB0.js +0 -1
- package/dist/public/assets/linear-CMueD_Vx.js +0 -1
- package/dist/public/assets/liquid-DYVedYrR.js +0 -1
- package/dist/public/assets/llvm-BtvRca6l.js +0 -1
- package/dist/public/assets/log-2UxHyX5q.js +0 -1
- package/dist/public/assets/logo-BtOb2qkB.js +0 -1
- package/dist/public/assets/lua-BbnMAYS6.js +0 -1
- package/dist/public/assets/luau-C-HG3fhB.js +0 -1
- package/dist/public/assets/make-CHLpvVh8.js +0 -1
- package/dist/public/assets/markdown-Cvjx9yec.js +0 -1
- package/dist/public/assets/marko-DZsq8hO1.js +0 -1
- package/dist/public/assets/material-theme-D5KoaKCx.js +0 -1
- package/dist/public/assets/material-theme-darker-BfHTSMKl.js +0 -1
- package/dist/public/assets/material-theme-lighter-B0m2ddpp.js +0 -1
- package/dist/public/assets/material-theme-ocean-CyktbL80.js +0 -1
- package/dist/public/assets/material-theme-palenight-Csfq5Kiy.js +0 -1
- package/dist/public/assets/matlab-D7o27uSR.js +0 -1
- package/dist/public/assets/mdc-DUICxH0z.js +0 -1
- package/dist/public/assets/mdx-Cmh6b_Ma.js +0 -1
- package/dist/public/assets/mermaid-mWjccvbQ.js +0 -1
- package/dist/public/assets/mermaid.core-TRKy42Tp.js +0 -191
- package/dist/public/assets/min-DXLf4jfm.js +0 -1
- package/dist/public/assets/min-dark-CafNBF8u.js +0 -1
- package/dist/public/assets/min-light-CTRr51gU.js +0 -1
- package/dist/public/assets/mindmap-definition-VGOIOE7T-Bz9UxRPS.js +0 -68
- package/dist/public/assets/mipsasm-CKIfxQSi.js +0 -1
- package/dist/public/assets/mojo-B93PlW-d.js +0 -1
- package/dist/public/assets/monokai-D4h5O-jR.js +0 -1
- package/dist/public/assets/moonbit-Ba13S78F.js +0 -1
- package/dist/public/assets/move-Bu9oaDYs.js +0 -1
- package/dist/public/assets/narrat-DRg8JJMk.js +0 -1
- package/dist/public/assets/nextflow-BrzmwbiE.js +0 -1
- package/dist/public/assets/nginx-DknmC5AR.js +0 -1
- package/dist/public/assets/night-owl-C39BiMTA.js +0 -1
- package/dist/public/assets/nim-CVrawwO9.js +0 -1
- package/dist/public/assets/nix-CwoSXNpI.js +0 -1
- package/dist/public/assets/nord-Ddv68eIx.js +0 -1
- package/dist/public/assets/nushell-C-sUppwS.js +0 -1
- package/dist/public/assets/objective-c-DXmwc3jG.js +0 -1
- package/dist/public/assets/objective-cpp-CLxacb5B.js +0 -1
- package/dist/public/assets/ocaml-C0hk2d4L.js +0 -1
- package/dist/public/assets/one-dark-pro-DVMEJ2y_.js +0 -1
- package/dist/public/assets/one-light-PoHY5YXO.js +0 -1
- package/dist/public/assets/openscad-C4EeE6gA.js +0 -1
- package/dist/public/assets/ordinal-Cboi1Yqb.js +0 -1
- package/dist/public/assets/pascal-D93ZcfNL.js +0 -1
- package/dist/public/assets/perl-C0TMdlhV.js +0 -1
- package/dist/public/assets/php-CDn_0X-4.js +0 -1
- package/dist/public/assets/pieDiagram-ADFJNKIX-B__3BI2u.js +0 -30
- package/dist/public/assets/pierre-dark-BXuwtOqb.js +0 -1
- package/dist/public/assets/pierre-light-dckrK0oj.js +0 -1
- package/dist/public/assets/pkl-u5AG7uiY.js +0 -1
- package/dist/public/assets/plastic-3e1v2bzS.js +0 -1
- package/dist/public/assets/plsql-ChMvpjG-.js +0 -1
- package/dist/public/assets/po-BTJTHyun.js +0 -1
- package/dist/public/assets/poimandres-CS3Unz2-.js +0 -1
- package/dist/public/assets/polar-C0HS_06l.js +0 -1
- package/dist/public/assets/postcss-CXtECtnM.js +0 -1
- package/dist/public/assets/powerquery-CEu0bR-o.js +0 -1
- package/dist/public/assets/powershell-Dpen1YoG.js +0 -1
- package/dist/public/assets/prisma-Dd19v3D-.js +0 -1
- package/dist/public/assets/prolog-CbFg5uaA.js +0 -1
- package/dist/public/assets/proto-C7zT0LnQ.js +0 -1
- package/dist/public/assets/pug-CGlum2m_.js +0 -1
- package/dist/public/assets/puppet-BMWR74SV.js +0 -1
- package/dist/public/assets/purescript-CklMAg4u.js +0 -1
- package/dist/public/assets/python-B6aJPvgy.js +0 -1
- package/dist/public/assets/qml-3beO22l8.js +0 -1
- package/dist/public/assets/qmldir-C8lEn-DE.js +0 -1
- package/dist/public/assets/qss-IeuSbFQv.js +0 -1
- package/dist/public/assets/quadrantDiagram-AYHSOK5B-KinE0zs-.js +0 -7
- package/dist/public/assets/r-Dspwwk_N.js +0 -1
- package/dist/public/assets/racket-BqYA7rlc.js +0 -1
- package/dist/public/assets/raku-DXvB9xmW.js +0 -1
- package/dist/public/assets/razor-C1TweQQi.js +0 -1
- package/dist/public/assets/red-bN70gL4F.js +0 -1
- package/dist/public/assets/reg-C-SQnVFl.js +0 -1
- package/dist/public/assets/regexp-CDVJQ6XC.js +0 -1
- package/dist/public/assets/rel-C3B-1QV4.js +0 -1
- package/dist/public/assets/requirementDiagram-UZGBJVZJ-BsmhVLvc.js +0 -64
- package/dist/public/assets/riscv-BM1_JUlF.js +0 -1
- package/dist/public/assets/rose-pine-dawn-DHQR4-dF.js +0 -1
- package/dist/public/assets/rose-pine-moon-D4_iv3hh.js +0 -1
- package/dist/public/assets/rose-pine-qdsjHGoJ.js +0 -1
- package/dist/public/assets/rosmsg-BJDFO7_C.js +0 -1
- package/dist/public/assets/rst-B0xPkSld.js +0 -1
- package/dist/public/assets/ruby-BvKwtOVI.js +0 -1
- package/dist/public/assets/rust-B1yitclQ.js +0 -1
- package/dist/public/assets/sankeyDiagram-TZEHDZUN-BsWL3jC9.js +0 -10
- package/dist/public/assets/sas-cz2c8ADy.js +0 -1
- package/dist/public/assets/sass-Cj5Yp3dK.js +0 -1
- package/dist/public/assets/scala-C151Ov-r.js +0 -1
- package/dist/public/assets/scheme-C98Dy4si.js +0 -1
- package/dist/public/assets/scss-OYdSNvt2.js +0 -1
- package/dist/public/assets/sdbl-DVxCFoDh.js +0 -1
- package/dist/public/assets/sequenceDiagram-WL72ISMW-D7F2tlFl.js +0 -145
- package/dist/public/assets/shaderlab-Dg9Lc6iA.js +0 -1
- package/dist/public/assets/shellscript-Yzrsuije.js +0 -1
- package/dist/public/assets/shellsession-BADoaaVG.js +0 -1
- package/dist/public/assets/slack-dark-BthQWCQV.js +0 -1
- package/dist/public/assets/slack-ochin-DqwNpetd.js +0 -1
- package/dist/public/assets/smalltalk-BERRCDM3.js +0 -1
- package/dist/public/assets/snazzy-light-Bw305WKR.js +0 -1
- package/dist/public/assets/solarized-dark-DXbdFlpD.js +0 -1
- package/dist/public/assets/solarized-light-L9t79GZl.js +0 -1
- package/dist/public/assets/solidity-rGO070M0.js +0 -1
- package/dist/public/assets/soy-Brmx7dQM.js +0 -1
- package/dist/public/assets/sparql-rVzFXLq3.js +0 -1
- package/dist/public/assets/splunk-BtCnVYZw.js +0 -1
- package/dist/public/assets/sql-BLtJtn59.js +0 -1
- package/dist/public/assets/ssh-config-_ykCGR6B.js +0 -1
- package/dist/public/assets/stata-BH5u7GGu.js +0 -1
- package/dist/public/assets/stateDiagram-FKZM4ZOC-ChtT7kWx.js +0 -1
- package/dist/public/assets/stateDiagram-v2-4FDKWEC3-owa6FG7W.js +0 -1
- package/dist/public/assets/stylus-BEDo0Tqx.js +0 -1
- package/dist/public/assets/svelte-zxCyuUbr.js +0 -1
- package/dist/public/assets/swift-Dg5xB15N.js +0 -1
- package/dist/public/assets/synthwave-84-CbfX1IO0.js +0 -1
- package/dist/public/assets/system-verilog-CnnmHF94.js +0 -1
- package/dist/public/assets/systemd-4A_iFExJ.js +0 -1
- package/dist/public/assets/talonscript-CkByrt1z.js +0 -1
- package/dist/public/assets/tasl-QIJgUcNo.js +0 -1
- package/dist/public/assets/tcl-dwOrl1Do.js +0 -1
- package/dist/public/assets/templ-W15q3VgB.js +0 -1
- package/dist/public/assets/terraform-BETggiCN.js +0 -1
- package/dist/public/assets/tex-CvyZ59Mk.js +0 -1
- package/dist/public/assets/timeline-definition-IT6M3QCI-B0yUYz0D.js +0 -61
- package/dist/public/assets/tokyo-night-hegEt444.js +0 -1
- package/dist/public/assets/toml-vGWfd6FD.js +0 -1
- package/dist/public/assets/treemap-KMMF4GRG-8kxwYcwm.js +0 -128
- package/dist/public/assets/ts-tags-zn1MmPIZ.js +0 -1
- package/dist/public/assets/tsv-B_m7g4N7.js +0 -1
- package/dist/public/assets/tsx-COt5Ahok.js +0 -1
- package/dist/public/assets/turtle-BsS91CYL.js +0 -1
- package/dist/public/assets/twig-CO9l9SDP.js +0 -1
- package/dist/public/assets/typescript-BPQ3VLAy.js +0 -1
- package/dist/public/assets/typespec-BGHnOYBU.js +0 -1
- package/dist/public/assets/typst-DHCkPAjA.js +0 -1
- package/dist/public/assets/v-BcVCzyr7.js +0 -1
- package/dist/public/assets/vala-CsfeWuGM.js +0 -1
- package/dist/public/assets/vb-D17OF-Vu.js +0 -1
- package/dist/public/assets/verilog-BQ8w6xss.js +0 -1
- package/dist/public/assets/vesper-DU1UobuO.js +0 -1
- package/dist/public/assets/vhdl-CeAyd5Ju.js +0 -1
- package/dist/public/assets/viml-CJc9bBzg.js +0 -1
- package/dist/public/assets/vitesse-black-Bkuqu6BP.js +0 -1
- package/dist/public/assets/vitesse-dark-D0r3Knsf.js +0 -1
- package/dist/public/assets/vitesse-light-CVO1_9PV.js +0 -1
- package/dist/public/assets/vue-DN_0RTcg.js +0 -1
- package/dist/public/assets/vue-html-AaS7Mt5G.js +0 -1
- package/dist/public/assets/vue-vine-CQOfvN7w.js +0 -1
- package/dist/public/assets/vyper-CDx5xZoG.js +0 -1
- package/dist/public/assets/wasm-CG6Dc4jp.js +0 -1
- package/dist/public/assets/wasm-MzD3tlZU.js +0 -1
- package/dist/public/assets/wenyan-BV7otONQ.js +0 -1
- package/dist/public/assets/wgsl-Dx-B1_4e.js +0 -1
- package/dist/public/assets/wikitext-BhOHFoWU.js +0 -1
- package/dist/public/assets/wit-5i3qLPDT.js +0 -1
- package/dist/public/assets/wolfram-lXgVvXCa.js +0 -1
- package/dist/public/assets/xml-sdJ4AIDG.js +0 -1
- package/dist/public/assets/xsl-CtQFsRM5.js +0 -1
- package/dist/public/assets/xychartDiagram-PRI3JC2R-Bm8prpCy.js +0 -7
- package/dist/public/assets/yaml-Buea-lGh.js +0 -1
- package/dist/public/assets/zenscript-DVFEvuxE.js +0 -1
- package/dist/public/assets/zig-VOosw3JB.js +0 -1
- package/dist/public/favicon-16.ico +0 -0
- package/dist/public/favicon-32.ico +0 -0
- package/dist/public/favicon-48.ico +0 -0
- package/dist/public/favicon.svg +0 -4
- package/dist/public/index.html +0 -33
- package/dist/public/logo-1024.png +0 -0
- package/dist/public/logo-128.png +0 -0
- package/dist/public/logo-16.png +0 -0
- package/dist/public/logo-256.png +0 -0
- package/dist/public/logo-32.png +0 -0
- package/dist/public/logo-48.png +0 -0
- package/dist/public/logo-512.png +0 -0
- package/dist/public/logo-64.png +0 -0
- package/public/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
- package/public/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
- package/public/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
- package/public/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
- package/public/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
- package/public/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
- package/public/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
- package/public/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
- package/public/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
- package/public/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
- package/public/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
- package/public/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
- package/public/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
- package/public/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
- package/public/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
- package/public/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
- package/public/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
- package/public/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
- package/public/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
- package/public/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
- package/public/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
- package/public/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
- package/public/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
- package/public/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
- package/public/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
- package/public/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
- package/public/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
- package/public/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
- package/public/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
- package/public/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
- package/public/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
- package/public/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
- package/public/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
- package/public/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
- package/public/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
- package/public/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
- package/public/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
- package/public/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
- package/public/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
- package/public/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
- package/public/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
- package/public/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
- package/public/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
- package/public/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
- package/public/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
- package/public/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
- package/public/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
- package/public/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
- package/public/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
- package/public/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
- package/public/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
- package/public/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
- package/public/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
- package/public/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
- package/public/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
- package/public/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
- package/public/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
- package/public/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
- package/public/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
- package/public/assets/_baseUniq-ByOyfTSt.js +0 -1
- package/public/assets/abap-BdImnpbu.js +0 -1
- package/public/assets/actionscript-3-CfeIJUat.js +0 -1
- package/public/assets/ada-bCR0ucgS.js +0 -1
- package/public/assets/andromeeda-C-Jbm3Hp.js +0 -1
- package/public/assets/angular-html-CU67Zn6k.js +0 -1
- package/public/assets/angular-ts-BwZT4LLn.js +0 -1
- package/public/assets/apache-Pmp26Uib.js +0 -1
- package/public/assets/apex-D8_7TLub.js +0 -1
- package/public/assets/apl-dKokRX4l.js +0 -1
- package/public/assets/applescript-Co6uUVPk.js +0 -1
- package/public/assets/ara-BRHolxvo.js +0 -1
- package/public/assets/arc-DskGrXLH.js +0 -1
- package/public/assets/architectureDiagram-VXUJARFQ-WbUu03xi.js +0 -36
- package/public/assets/asciidoc-Dv7Oe6Be.js +0 -1
- package/public/assets/asm-D_Q5rh1f.js +0 -1
- package/public/assets/astro-CbQHKStN.js +0 -1
- package/public/assets/aurora-x-D-2ljcwZ.js +0 -1
- package/public/assets/awk-DMzUqQB5.js +0 -1
- package/public/assets/ayu-dark-CmMr59Fi.js +0 -1
- package/public/assets/ballerina-BFfxhgS-.js +0 -1
- package/public/assets/bat-BkioyH1T.js +0 -1
- package/public/assets/beancount-k_qm7-4y.js +0 -1
- package/public/assets/berry-uYugtg8r.js +0 -1
- package/public/assets/bibtex-CHM0blh-.js +0 -1
- package/public/assets/bicep-Bmn6On1c.js +0 -1
- package/public/assets/blade-D4QpJJKB.js +0 -1
- package/public/assets/blockDiagram-VD42YOAC-4KVAiSxZ.js +0 -122
- package/public/assets/bsl-BO_Y6i37.js +0 -1
- package/public/assets/c-BIGW1oBm.js +0 -1
- package/public/assets/c3-VCDPK7BO.js +0 -1
- package/public/assets/c4Diagram-YG6GDRKO-JcXJu5BS.js +0 -10
- package/public/assets/cadence-Bv_4Rxtq.js +0 -1
- package/public/assets/cairo-KRGpt6FW.js +0 -1
- package/public/assets/catppuccin-frappe-DFWUc33u.js +0 -1
- package/public/assets/catppuccin-latte-C9dUb6Cb.js +0 -1
- package/public/assets/catppuccin-macchiato-DQyhUUbL.js +0 -1
- package/public/assets/catppuccin-mocha-D87Tk5Gz.js +0 -1
- package/public/assets/channel-BdAgzAMp.js +0 -1
- package/public/assets/chunk-4BX2VUAB-CqfDS9Sf.js +0 -1
- package/public/assets/chunk-55IACEB6-UUyu6Y64.js +0 -1
- package/public/assets/chunk-B4BG7PRW-C0F414xz.js +0 -165
- package/public/assets/chunk-DI55MBZ5--p_STlY7.js +0 -220
- package/public/assets/chunk-FMBD7UC4-CB48BS8a.js +0 -15
- package/public/assets/chunk-QN33PNHL-vwkXbKVH.js +0 -1
- package/public/assets/chunk-QZHKN3VN-B33xbk2M.js +0 -1
- package/public/assets/chunk-TZMSLE5B-CLiEWPPK.js +0 -1
- package/public/assets/clarity-D53aC0YG.js +0 -1
- package/public/assets/classDiagram-2ON5EDUG-DFl0tfxs.js +0 -1
- package/public/assets/classDiagram-v2-WZHVMYZB-DFl0tfxs.js +0 -1
- package/public/assets/clojure-P80f7IUj.js +0 -1
- package/public/assets/clone-C0W1RDRM.js +0 -1
- package/public/assets/cmake-D1j8_8rp.js +0 -1
- package/public/assets/cobol-nwyudZeR.js +0 -1
- package/public/assets/code-block-IT6T5CEO-B7sxiU38.js +0 -2
- package/public/assets/codeowners-Bp6g37R7.js +0 -1
- package/public/assets/codeql-DsOJ9woJ.js +0 -1
- package/public/assets/coffee-Ch7k5sss.js +0 -1
- package/public/assets/common-lisp-Cg-RD9OK.js +0 -1
- package/public/assets/coq-DkFqJrB1.js +0 -1
- package/public/assets/cose-bilkent-S5V4N54A-DXzclefE.js +0 -1
- package/public/assets/cpp-CofmeUqb.js +0 -1
- package/public/assets/crystal-tKQVLTB8.js +0 -1
- package/public/assets/csharp-K5feNrxe.js +0 -1
- package/public/assets/css-DPfMkruS.js +0 -1
- package/public/assets/csv-fuZLfV_i.js +0 -1
- package/public/assets/cue-D82EKSYY.js +0 -1
- package/public/assets/cypher-COkxafJQ.js +0 -1
- package/public/assets/cytoscape.esm-5J0xJHOV.js +0 -321
- package/public/assets/d-85-TOEBH.js +0 -1
- package/public/assets/dagre-6UL2VRFP-BsdG-n7L.js +0 -4
- package/public/assets/dark-plus-C3mMm8J8.js +0 -1
- package/public/assets/dart-CF10PKvl.js +0 -1
- package/public/assets/dax-CEL-wOlO.js +0 -1
- package/public/assets/defaultLocale-C4B-KCzX.js +0 -1
- package/public/assets/demo.svg +0 -1
- package/public/assets/desktop-BmXAJ9_W.js +0 -1
- package/public/assets/diagram-PSM6KHXK-QgD_inp5.js +0 -24
- package/public/assets/diagram-QEK2KX5R-wzLRdwrU.js +0 -43
- package/public/assets/diagram-S2PKOQOG-CuUvB9bN.js +0 -24
- package/public/assets/diff-D97Zzqfu.js +0 -1
- package/public/assets/docker-BcOcwvcX.js +0 -1
- package/public/assets/dotenv-Da5cRb03.js +0 -1
- package/public/assets/dracula-BzJJZx-M.js +0 -1
- package/public/assets/dracula-soft-BXkSAIEj.js +0 -1
- package/public/assets/dream-maker-BtqSS_iP.js +0 -1
- package/public/assets/edge-BkV0erSs.js +0 -1
- package/public/assets/elixir-CDX3lj18.js +0 -1
- package/public/assets/elm-DbKCFpqz.js +0 -1
- package/public/assets/emacs-lisp-C9XAeP06.js +0 -1
- package/public/assets/erDiagram-Q2GNP2WA-CGklTYeV.js +0 -60
- package/public/assets/erb-BOJIQeun.js +0 -1
- package/public/assets/erlang-DsQrWhSR.js +0 -1
- package/public/assets/everforest-dark-BgDCqdQA.js +0 -1
- package/public/assets/everforest-light-C8M2exoo.js +0 -1
- package/public/assets/fennel-BYunw83y.js +0 -1
- package/public/assets/fish-BvzEVeQv.js +0 -1
- package/public/assets/flowDiagram-NV44I4VS-CxjU7AVg.js +0 -162
- package/public/assets/fluent-C4IJs8-o.js +0 -1
- package/public/assets/fortran-fixed-form-CkoXwp7k.js +0 -1
- package/public/assets/fortran-free-form-BxgE0vQu.js +0 -1
- package/public/assets/fsharp-CXgrBDvD.js +0 -1
- package/public/assets/ganttDiagram-JELNMOA3-CYpYrSPR.js +0 -267
- package/public/assets/gdresource-B7Tvp0Sc.js +0 -1
- package/public/assets/gdscript-DTMYz4Jt.js +0 -1
- package/public/assets/gdshader-DkwncUOv.js +0 -1
- package/public/assets/genie-D0YGMca9.js +0 -1
- package/public/assets/gherkin-DyxjwDmM.js +0 -1
- package/public/assets/git-commit-F4YmCXRG.js +0 -1
- package/public/assets/git-rebase-r7XF79zn.js +0 -1
- package/public/assets/gitGraphDiagram-NY62KEGX-DVNwWIcr.js +0 -65
- package/public/assets/github-dark-DHJKELXO.js +0 -1
- package/public/assets/github-dark-default-Cuk6v7N8.js +0 -1
- package/public/assets/github-dark-dimmed-DH5Ifo-i.js +0 -1
- package/public/assets/github-dark-high-contrast-E3gJ1_iC.js +0 -1
- package/public/assets/github-light-DAi9KRSo.js +0 -1
- package/public/assets/github-light-default-D7oLnXFd.js +0 -1
- package/public/assets/github-light-high-contrast-BfjtVDDH.js +0 -1
- package/public/assets/gleam-BspZqrRM.js +0 -1
- package/public/assets/glimmer-js-Rg0-pVw9.js +0 -1
- package/public/assets/glimmer-ts-U6CK756n.js +0 -1
- package/public/assets/glsl-DplSGwfg.js +0 -1
- package/public/assets/gn-n2N0HUVH.js +0 -1
- package/public/assets/gnuplot-DdkO51Og.js +0 -1
- package/public/assets/go-Dn2_MT6a.js +0 -1
- package/public/assets/graph-pflBUROZ.js +0 -1
- package/public/assets/graphql-ChdNCCLP.js +0 -1
- package/public/assets/groovy-gcz8RCvz.js +0 -1
- package/public/assets/gruvbox-dark-hard-CFHQjOhq.js +0 -1
- package/public/assets/gruvbox-dark-medium-GsRaNv29.js +0 -1
- package/public/assets/gruvbox-dark-soft-CVdnzihN.js +0 -1
- package/public/assets/gruvbox-light-hard-CH1njM8p.js +0 -1
- package/public/assets/gruvbox-light-medium-DRw_LuNl.js +0 -1
- package/public/assets/gruvbox-light-soft-hJgmCMqR.js +0 -1
- package/public/assets/hack-CaT9iCJl.js +0 -1
- package/public/assets/haml-B8DHNrY2.js +0 -1
- package/public/assets/handlebars-BL8al0AC.js +0 -1
- package/public/assets/haskell-Df6bDoY_.js +0 -1
- package/public/assets/haxe-CzTSHFRz.js +0 -1
- package/public/assets/hcl-BWvSN4gD.js +0 -1
- package/public/assets/hjson-D5-asLiD.js +0 -1
- package/public/assets/hlsl-D3lLCCz7.js +0 -1
- package/public/assets/houston-DnULxvSX.js +0 -1
- package/public/assets/html-GMplVEZG.js +0 -1
- package/public/assets/html-derivative-BFtXZ54Q.js +0 -1
- package/public/assets/http-jrhK8wxY.js +0 -1
- package/public/assets/hurl-irOxFIW8.js +0 -1
- package/public/assets/hxml-Bvhsp5Yf.js +0 -1
- package/public/assets/hy-DFXneXwc.js +0 -1
- package/public/assets/imba-DGztddWO.js +0 -1
- package/public/assets/index-C2YNSdOx.js +0 -1781
- package/public/assets/index-C7JP9qmQ.css +0 -1
- package/public/assets/index-DkE6H0eh.js +0 -23
- package/public/assets/infoDiagram-WHAUD3N6-CrSA2woO.js +0 -2
- package/public/assets/ini-BEwlwnbL.js +0 -1
- package/public/assets/init-Gi6I4Gst.js +0 -1
- package/public/assets/inter-cyrillic-400-normal-HOLc17fK.woff +0 -0
- package/public/assets/inter-cyrillic-400-normal-obahsSVq.woff2 +0 -0
- package/public/assets/inter-cyrillic-ext-400-normal-BQZuk6qB.woff2 +0 -0
- package/public/assets/inter-cyrillic-ext-400-normal-DQukG94-.woff +0 -0
- package/public/assets/inter-greek-400-normal-B4URO6DV.woff2 +0 -0
- package/public/assets/inter-greek-400-normal-q2sYcFCs.woff +0 -0
- package/public/assets/inter-greek-ext-400-normal-DGGRlc-M.woff2 +0 -0
- package/public/assets/inter-greek-ext-400-normal-KugGGMne.woff +0 -0
- package/public/assets/inter-latin-400-normal-C38fXH4l.woff2 +0 -0
- package/public/assets/inter-latin-400-normal-CyCys3Eg.woff +0 -0
- package/public/assets/inter-latin-ext-400-normal-77YHD8bZ.woff +0 -0
- package/public/assets/inter-latin-ext-400-normal-C1nco2VV.woff2 +0 -0
- package/public/assets/inter-vietnamese-400-normal-Bbgyi5SW.woff +0 -0
- package/public/assets/inter-vietnamese-400-normal-DMkecbls.woff2 +0 -0
- package/public/assets/java-CylS5w8V.js +0 -1
- package/public/assets/javascript-wDzz0qaB.js +0 -1
- package/public/assets/jinja-4LBKfQ-Z.js +0 -1
- package/public/assets/jison-wvAkD_A8.js +0 -1
- package/public/assets/journeyDiagram-XKPGCS4Q-CZ4u0wMW.js +0 -139
- package/public/assets/json-Cp-IABpG.js +0 -1
- package/public/assets/json5-C9tS-k6U.js +0 -1
- package/public/assets/jsonc-Des-eS-w.js +0 -1
- package/public/assets/jsonl-DcaNXYhu.js +0 -1
- package/public/assets/jsonnet-DFQXde-d.js +0 -1
- package/public/assets/jssm-C2t-YnRu.js +0 -1
- package/public/assets/jsx-g9-lgVsj.js +0 -1
- package/public/assets/julia-CxzCAyBv.js +0 -1
- package/public/assets/kanagawa-dragon-CkXjmgJE.js +0 -1
- package/public/assets/kanagawa-lotus-CfQXZHmo.js +0 -1
- package/public/assets/kanagawa-wave-DWedfzmr.js +0 -1
- package/public/assets/kanban-definition-3W4ZIXB7-B_CeXxO7.js +0 -89
- package/public/assets/katex-DvXFAOB1.css +0 -1
- package/public/assets/kdl-DV7GczEv.js +0 -1
- package/public/assets/kotlin-BdnUsdx6.js +0 -1
- package/public/assets/kusto-DZf3V79B.js +0 -1
- package/public/assets/laserwave-DUszq2jm.js +0 -1
- package/public/assets/latex-B4uzh10-.js +0 -1
- package/public/assets/layout-D5ppmRxC.js +0 -1
- package/public/assets/lean-BZvkOJ9d.js +0 -1
- package/public/assets/less-B1dDrJ26.js +0 -1
- package/public/assets/light-plus-B7mTdjB0.js +0 -1
- package/public/assets/linear-CMueD_Vx.js +0 -1
- package/public/assets/liquid-DYVedYrR.js +0 -1
- package/public/assets/llvm-BtvRca6l.js +0 -1
- package/public/assets/log-2UxHyX5q.js +0 -1
- package/public/assets/logo-BtOb2qkB.js +0 -1
- package/public/assets/lua-BbnMAYS6.js +0 -1
- package/public/assets/luau-C-HG3fhB.js +0 -1
- package/public/assets/make-CHLpvVh8.js +0 -1
- package/public/assets/markdown-Cvjx9yec.js +0 -1
- package/public/assets/marko-DZsq8hO1.js +0 -1
- package/public/assets/material-theme-D5KoaKCx.js +0 -1
- package/public/assets/material-theme-darker-BfHTSMKl.js +0 -1
- package/public/assets/material-theme-lighter-B0m2ddpp.js +0 -1
- package/public/assets/material-theme-ocean-CyktbL80.js +0 -1
- package/public/assets/material-theme-palenight-Csfq5Kiy.js +0 -1
- package/public/assets/matlab-D7o27uSR.js +0 -1
- package/public/assets/mdc-DUICxH0z.js +0 -1
- package/public/assets/mdx-Cmh6b_Ma.js +0 -1
- package/public/assets/mermaid-mWjccvbQ.js +0 -1
- package/public/assets/mermaid.core-TRKy42Tp.js +0 -191
- package/public/assets/min-DXLf4jfm.js +0 -1
- package/public/assets/min-dark-CafNBF8u.js +0 -1
- package/public/assets/min-light-CTRr51gU.js +0 -1
- package/public/assets/mindmap-definition-VGOIOE7T-Bz9UxRPS.js +0 -68
- package/public/assets/mipsasm-CKIfxQSi.js +0 -1
- package/public/assets/mojo-B93PlW-d.js +0 -1
- package/public/assets/monokai-D4h5O-jR.js +0 -1
- package/public/assets/moonbit-Ba13S78F.js +0 -1
- package/public/assets/move-Bu9oaDYs.js +0 -1
- package/public/assets/narrat-DRg8JJMk.js +0 -1
- package/public/assets/nextflow-BrzmwbiE.js +0 -1
- package/public/assets/nginx-DknmC5AR.js +0 -1
- package/public/assets/night-owl-C39BiMTA.js +0 -1
- package/public/assets/nim-CVrawwO9.js +0 -1
- package/public/assets/nix-CwoSXNpI.js +0 -1
- package/public/assets/nord-Ddv68eIx.js +0 -1
- package/public/assets/nushell-C-sUppwS.js +0 -1
- package/public/assets/objective-c-DXmwc3jG.js +0 -1
- package/public/assets/objective-cpp-CLxacb5B.js +0 -1
- package/public/assets/ocaml-C0hk2d4L.js +0 -1
- package/public/assets/one-dark-pro-DVMEJ2y_.js +0 -1
- package/public/assets/one-light-PoHY5YXO.js +0 -1
- package/public/assets/openscad-C4EeE6gA.js +0 -1
- package/public/assets/ordinal-Cboi1Yqb.js +0 -1
- package/public/assets/pascal-D93ZcfNL.js +0 -1
- package/public/assets/perl-C0TMdlhV.js +0 -1
- package/public/assets/php-CDn_0X-4.js +0 -1
- package/public/assets/pieDiagram-ADFJNKIX-B__3BI2u.js +0 -30
- package/public/assets/pierre-dark-BXuwtOqb.js +0 -1
- package/public/assets/pierre-light-dckrK0oj.js +0 -1
- package/public/assets/pkl-u5AG7uiY.js +0 -1
- package/public/assets/plastic-3e1v2bzS.js +0 -1
- package/public/assets/plsql-ChMvpjG-.js +0 -1
- package/public/assets/po-BTJTHyun.js +0 -1
- package/public/assets/poimandres-CS3Unz2-.js +0 -1
- package/public/assets/polar-C0HS_06l.js +0 -1
- package/public/assets/postcss-CXtECtnM.js +0 -1
- package/public/assets/powerquery-CEu0bR-o.js +0 -1
- package/public/assets/powershell-Dpen1YoG.js +0 -1
- package/public/assets/prisma-Dd19v3D-.js +0 -1
- package/public/assets/prolog-CbFg5uaA.js +0 -1
- package/public/assets/proto-C7zT0LnQ.js +0 -1
- package/public/assets/pug-CGlum2m_.js +0 -1
- package/public/assets/puppet-BMWR74SV.js +0 -1
- package/public/assets/purescript-CklMAg4u.js +0 -1
- package/public/assets/python-B6aJPvgy.js +0 -1
- package/public/assets/qml-3beO22l8.js +0 -1
- package/public/assets/qmldir-C8lEn-DE.js +0 -1
- package/public/assets/qss-IeuSbFQv.js +0 -1
- package/public/assets/quadrantDiagram-AYHSOK5B-KinE0zs-.js +0 -7
- package/public/assets/r-Dspwwk_N.js +0 -1
- package/public/assets/racket-BqYA7rlc.js +0 -1
- package/public/assets/raku-DXvB9xmW.js +0 -1
- package/public/assets/razor-C1TweQQi.js +0 -1
- package/public/assets/red-bN70gL4F.js +0 -1
- package/public/assets/reg-C-SQnVFl.js +0 -1
- package/public/assets/regexp-CDVJQ6XC.js +0 -1
- package/public/assets/rel-C3B-1QV4.js +0 -1
- package/public/assets/requirementDiagram-UZGBJVZJ-BsmhVLvc.js +0 -64
- package/public/assets/riscv-BM1_JUlF.js +0 -1
- package/public/assets/rose-pine-dawn-DHQR4-dF.js +0 -1
- package/public/assets/rose-pine-moon-D4_iv3hh.js +0 -1
- package/public/assets/rose-pine-qdsjHGoJ.js +0 -1
- package/public/assets/rosmsg-BJDFO7_C.js +0 -1
- package/public/assets/rst-B0xPkSld.js +0 -1
- package/public/assets/ruby-BvKwtOVI.js +0 -1
- package/public/assets/rust-B1yitclQ.js +0 -1
- package/public/assets/sankeyDiagram-TZEHDZUN-BsWL3jC9.js +0 -10
- package/public/assets/sas-cz2c8ADy.js +0 -1
- package/public/assets/sass-Cj5Yp3dK.js +0 -1
- package/public/assets/scala-C151Ov-r.js +0 -1
- package/public/assets/scheme-C98Dy4si.js +0 -1
- package/public/assets/scss-OYdSNvt2.js +0 -1
- package/public/assets/sdbl-DVxCFoDh.js +0 -1
- package/public/assets/sequenceDiagram-WL72ISMW-D7F2tlFl.js +0 -145
- package/public/assets/shaderlab-Dg9Lc6iA.js +0 -1
- package/public/assets/shellscript-Yzrsuije.js +0 -1
- package/public/assets/shellsession-BADoaaVG.js +0 -1
- package/public/assets/slack-dark-BthQWCQV.js +0 -1
- package/public/assets/slack-ochin-DqwNpetd.js +0 -1
- package/public/assets/smalltalk-BERRCDM3.js +0 -1
- package/public/assets/snazzy-light-Bw305WKR.js +0 -1
- package/public/assets/solarized-dark-DXbdFlpD.js +0 -1
- package/public/assets/solarized-light-L9t79GZl.js +0 -1
- package/public/assets/solidity-rGO070M0.js +0 -1
- package/public/assets/soy-Brmx7dQM.js +0 -1
- package/public/assets/sparql-rVzFXLq3.js +0 -1
- package/public/assets/splunk-BtCnVYZw.js +0 -1
- package/public/assets/sql-BLtJtn59.js +0 -1
- package/public/assets/ssh-config-_ykCGR6B.js +0 -1
- package/public/assets/stata-BH5u7GGu.js +0 -1
- package/public/assets/stateDiagram-FKZM4ZOC-ChtT7kWx.js +0 -1
- package/public/assets/stateDiagram-v2-4FDKWEC3-owa6FG7W.js +0 -1
- package/public/assets/stylus-BEDo0Tqx.js +0 -1
- package/public/assets/svelte-zxCyuUbr.js +0 -1
- package/public/assets/swift-Dg5xB15N.js +0 -1
- package/public/assets/synthwave-84-CbfX1IO0.js +0 -1
- package/public/assets/system-verilog-CnnmHF94.js +0 -1
- package/public/assets/systemd-4A_iFExJ.js +0 -1
- package/public/assets/talonscript-CkByrt1z.js +0 -1
- package/public/assets/tasl-QIJgUcNo.js +0 -1
- package/public/assets/tcl-dwOrl1Do.js +0 -1
- package/public/assets/templ-W15q3VgB.js +0 -1
- package/public/assets/terraform-BETggiCN.js +0 -1
- package/public/assets/tex-CvyZ59Mk.js +0 -1
- package/public/assets/timeline-definition-IT6M3QCI-B0yUYz0D.js +0 -61
- package/public/assets/tokyo-night-hegEt444.js +0 -1
- package/public/assets/toml-vGWfd6FD.js +0 -1
- package/public/assets/treemap-KMMF4GRG-8kxwYcwm.js +0 -128
- package/public/assets/ts-tags-zn1MmPIZ.js +0 -1
- package/public/assets/tsv-B_m7g4N7.js +0 -1
- package/public/assets/tsx-COt5Ahok.js +0 -1
- package/public/assets/turtle-BsS91CYL.js +0 -1
- package/public/assets/twig-CO9l9SDP.js +0 -1
- package/public/assets/typescript-BPQ3VLAy.js +0 -1
- package/public/assets/typespec-BGHnOYBU.js +0 -1
- package/public/assets/typst-DHCkPAjA.js +0 -1
- package/public/assets/v-BcVCzyr7.js +0 -1
- package/public/assets/vala-CsfeWuGM.js +0 -1
- package/public/assets/vb-D17OF-Vu.js +0 -1
- package/public/assets/verilog-BQ8w6xss.js +0 -1
- package/public/assets/vesper-DU1UobuO.js +0 -1
- package/public/assets/vhdl-CeAyd5Ju.js +0 -1
- package/public/assets/viml-CJc9bBzg.js +0 -1
- package/public/assets/vitesse-black-Bkuqu6BP.js +0 -1
- package/public/assets/vitesse-dark-D0r3Knsf.js +0 -1
- package/public/assets/vitesse-light-CVO1_9PV.js +0 -1
- package/public/assets/vue-DN_0RTcg.js +0 -1
- package/public/assets/vue-html-AaS7Mt5G.js +0 -1
- package/public/assets/vue-vine-CQOfvN7w.js +0 -1
- package/public/assets/vyper-CDx5xZoG.js +0 -1
- package/public/assets/wasm-CG6Dc4jp.js +0 -1
- package/public/assets/wasm-MzD3tlZU.js +0 -1
- package/public/assets/wenyan-BV7otONQ.js +0 -1
- package/public/assets/wgsl-Dx-B1_4e.js +0 -1
- package/public/assets/wikitext-BhOHFoWU.js +0 -1
- package/public/assets/wit-5i3qLPDT.js +0 -1
- package/public/assets/wolfram-lXgVvXCa.js +0 -1
- package/public/assets/xml-sdJ4AIDG.js +0 -1
- package/public/assets/xsl-CtQFsRM5.js +0 -1
- package/public/assets/xychartDiagram-PRI3JC2R-Bm8prpCy.js +0 -7
- package/public/assets/yaml-Buea-lGh.js +0 -1
- package/public/assets/zenscript-DVFEvuxE.js +0 -1
- package/public/assets/zig-VOosw3JB.js +0 -1
- package/public/favicon-16.ico +0 -0
- package/public/favicon-32.ico +0 -0
- package/public/favicon-48.ico +0 -0
- package/public/favicon.svg +0 -4
- package/public/index.html +0 -33
- package/public/logo-1024.png +0 -0
- package/public/logo-128.png +0 -0
- package/public/logo-16.png +0 -0
- package/public/logo-256.png +0 -0
- package/public/logo-32.png +0 -0
- package/public/logo-48.png +0 -0
- package/public/logo-512.png +0 -0
- package/public/logo-64.png +0 -0
|
@@ -0,0 +1,379 @@
|
|
|
1
|
+
import { spawn, execSync } from 'node:child_process';
|
|
2
|
+
import * as fs from 'node:fs/promises';
|
|
3
|
+
import * as path from 'node:path';
|
|
4
|
+
import { logger, createPluginLogger } from './logger.js';
|
|
5
|
+
import { portAllocator } from './port-allocator.js';
|
|
6
|
+
import { registry } from './registry.js';
|
|
7
|
+
export class PluginManager {
|
|
8
|
+
plugins = new Map();
|
|
9
|
+
async discoverPlugins() {
|
|
10
|
+
const pluginsDir = registry.getPluginsDir();
|
|
11
|
+
const discovered = [];
|
|
12
|
+
try {
|
|
13
|
+
const entries = await fs.readdir(pluginsDir, { withFileTypes: true });
|
|
14
|
+
for (const entry of entries) {
|
|
15
|
+
if (!entry.isDirectory() || entry.name.startsWith('.')) {
|
|
16
|
+
continue;
|
|
17
|
+
}
|
|
18
|
+
const pluginPath = path.join(pluginsDir, entry.name);
|
|
19
|
+
const packageJsonPath = path.join(pluginPath, 'package.json');
|
|
20
|
+
try {
|
|
21
|
+
await fs.access(packageJsonPath);
|
|
22
|
+
discovered.push(entry.name);
|
|
23
|
+
}
|
|
24
|
+
catch {
|
|
25
|
+
logger.debug({ plugin: entry.name }, 'Skipping directory without package.json');
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
catch (err) {
|
|
30
|
+
logger.error({ err }, 'Failed to read plugins directory');
|
|
31
|
+
}
|
|
32
|
+
return discovered;
|
|
33
|
+
}
|
|
34
|
+
async readPackageJson(pluginPath) {
|
|
35
|
+
try {
|
|
36
|
+
const content = await fs.readFile(path.join(pluginPath, 'package.json'), 'utf-8');
|
|
37
|
+
return JSON.parse(content);
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
return null;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
async needsInstall(pluginPath) {
|
|
44
|
+
const nodeModulesPath = path.join(pluginPath, 'node_modules');
|
|
45
|
+
const packageJsonPath = path.join(pluginPath, 'package.json');
|
|
46
|
+
try {
|
|
47
|
+
const [nodeModulesStats, packageJsonStats] = await Promise.all([
|
|
48
|
+
fs.stat(nodeModulesPath),
|
|
49
|
+
fs.stat(packageJsonPath),
|
|
50
|
+
]);
|
|
51
|
+
// If package.json is newer than node_modules, need install
|
|
52
|
+
return packageJsonStats.mtimeMs > nodeModulesStats.mtimeMs;
|
|
53
|
+
}
|
|
54
|
+
catch {
|
|
55
|
+
// node_modules doesn't exist
|
|
56
|
+
return true;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
runNpmInstall(pluginName, pluginPath) {
|
|
60
|
+
const pluginLog = createPluginLogger(pluginName);
|
|
61
|
+
pluginLog.info('Running npm install');
|
|
62
|
+
try {
|
|
63
|
+
execSync('npm install', {
|
|
64
|
+
cwd: pluginPath,
|
|
65
|
+
stdio: 'pipe',
|
|
66
|
+
timeout: 120000, // 2 minute timeout
|
|
67
|
+
});
|
|
68
|
+
pluginLog.info('npm install completed');
|
|
69
|
+
return true;
|
|
70
|
+
}
|
|
71
|
+
catch (err) {
|
|
72
|
+
pluginLog.error({ err }, 'npm install failed');
|
|
73
|
+
return false;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
updateInstanceStatus(name, instanceId, status, error) {
|
|
77
|
+
const plugin = this.plugins.get(name);
|
|
78
|
+
if (plugin === undefined) {
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
const instance = plugin.info.instances.find((i) => i.id === instanceId);
|
|
82
|
+
if (instance !== undefined) {
|
|
83
|
+
instance.status = status;
|
|
84
|
+
if (error !== undefined) {
|
|
85
|
+
instance.error = error;
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
delete instance.error;
|
|
89
|
+
}
|
|
90
|
+
registry.updatePlugin(plugin.info);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
async ensurePluginExists(name) {
|
|
94
|
+
const pluginsDir = registry.getPluginsDir();
|
|
95
|
+
const pluginPath = path.join(pluginsDir, name);
|
|
96
|
+
const existing = this.plugins.get(name);
|
|
97
|
+
if (existing !== undefined) {
|
|
98
|
+
return existing;
|
|
99
|
+
}
|
|
100
|
+
const packageJson = await this.readPackageJson(pluginPath);
|
|
101
|
+
if (packageJson === null) {
|
|
102
|
+
return null;
|
|
103
|
+
}
|
|
104
|
+
const main = packageJson.main ?? 'index.js';
|
|
105
|
+
const displayName = packageJson.shella?.displayName ?? packageJson.name ?? name;
|
|
106
|
+
const devCommand = packageJson.shella?.devCommand;
|
|
107
|
+
const info = {
|
|
108
|
+
name,
|
|
109
|
+
displayName,
|
|
110
|
+
path: pluginPath,
|
|
111
|
+
main,
|
|
112
|
+
instances: [],
|
|
113
|
+
};
|
|
114
|
+
if (devCommand) {
|
|
115
|
+
info.devCommand = devCommand;
|
|
116
|
+
}
|
|
117
|
+
const pluginProcess = {
|
|
118
|
+
info,
|
|
119
|
+
processes: new Map(),
|
|
120
|
+
nextInstanceId: 1,
|
|
121
|
+
};
|
|
122
|
+
this.plugins.set(name, pluginProcess);
|
|
123
|
+
registry.updatePlugin(info);
|
|
124
|
+
return pluginProcess;
|
|
125
|
+
}
|
|
126
|
+
async startPlugin(name, devMode = true) {
|
|
127
|
+
const pluginsDir = registry.getPluginsDir();
|
|
128
|
+
const pluginPath = path.join(pluginsDir, name);
|
|
129
|
+
const pluginLog = createPluginLogger(name);
|
|
130
|
+
const pluginProcess = await this.ensurePluginExists(name);
|
|
131
|
+
if (pluginProcess === null) {
|
|
132
|
+
pluginLog.error('Failed to read package.json');
|
|
133
|
+
return null;
|
|
134
|
+
}
|
|
135
|
+
// If dev mode requested but no devCommand, silently fall back to production
|
|
136
|
+
const useDevMode = devMode && !!pluginProcess.info.devCommand;
|
|
137
|
+
// Check if npm install is needed (only if no instances are running)
|
|
138
|
+
if (pluginProcess.processes.size === 0 && (await this.needsInstall(pluginPath))) {
|
|
139
|
+
const installSuccess = this.runNpmInstall(name, pluginPath);
|
|
140
|
+
if (!installSuccess) {
|
|
141
|
+
return null;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
// Allocate port for new instance
|
|
145
|
+
let port;
|
|
146
|
+
try {
|
|
147
|
+
port = await portAllocator.allocate();
|
|
148
|
+
}
|
|
149
|
+
catch (err) {
|
|
150
|
+
pluginLog.error({ err }, 'Failed to allocate port');
|
|
151
|
+
return null;
|
|
152
|
+
}
|
|
153
|
+
// Create new instance
|
|
154
|
+
const instanceId = String(pluginProcess.nextInstanceId++);
|
|
155
|
+
const instance = {
|
|
156
|
+
id: instanceId,
|
|
157
|
+
status: 'starting',
|
|
158
|
+
port,
|
|
159
|
+
pid: null,
|
|
160
|
+
url: `http://localhost:${port}`,
|
|
161
|
+
};
|
|
162
|
+
if (useDevMode) {
|
|
163
|
+
instance.devMode = true;
|
|
164
|
+
}
|
|
165
|
+
pluginProcess.info.instances.push(instance);
|
|
166
|
+
registry.updatePlugin(pluginProcess.info);
|
|
167
|
+
// Spawn the plugin process
|
|
168
|
+
let child;
|
|
169
|
+
if (useDevMode && pluginProcess.info.devCommand) {
|
|
170
|
+
// Run dev command with $PORT replaced
|
|
171
|
+
const devCmd = pluginProcess.info.devCommand.replace('$PORT', String(port));
|
|
172
|
+
const [cmd, ...args] = devCmd.split(' ');
|
|
173
|
+
pluginLog.info({ port, devCmd, instanceId }, 'Starting plugin in dev mode');
|
|
174
|
+
child = spawn(cmd ?? 'npm', args, {
|
|
175
|
+
cwd: pluginPath,
|
|
176
|
+
env: { ...process.env, PORT: String(port) },
|
|
177
|
+
stdio: ['ignore', 'pipe', 'pipe'],
|
|
178
|
+
detached: false,
|
|
179
|
+
shell: true,
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
else {
|
|
183
|
+
// Run main file directly
|
|
184
|
+
const mainFile = path.join(pluginPath, pluginProcess.info.main);
|
|
185
|
+
const isTypeScript = pluginProcess.info.main.endsWith('.ts');
|
|
186
|
+
const runtime = isTypeScript ? 'tsx' : 'node';
|
|
187
|
+
pluginLog.info({ port, mainFile, instanceId, runtime }, 'Starting plugin instance');
|
|
188
|
+
child = spawn(runtime, [mainFile], {
|
|
189
|
+
cwd: pluginPath,
|
|
190
|
+
env: { ...process.env, PORT: String(port) },
|
|
191
|
+
stdio: ['ignore', 'pipe', 'pipe'],
|
|
192
|
+
detached: false,
|
|
193
|
+
});
|
|
194
|
+
}
|
|
195
|
+
pluginProcess.processes.set(instanceId, child);
|
|
196
|
+
instance.pid = child.pid ?? null;
|
|
197
|
+
child.stdout?.on('data', (data) => {
|
|
198
|
+
pluginLog.info({ stdout: data.toString().trim(), instanceId }, 'Plugin output');
|
|
199
|
+
});
|
|
200
|
+
child.stderr?.on('data', (data) => {
|
|
201
|
+
pluginLog.warn({ stderr: data.toString().trim(), instanceId }, 'Plugin error output');
|
|
202
|
+
});
|
|
203
|
+
child.on('error', (err) => {
|
|
204
|
+
pluginLog.error({ err, instanceId }, 'Plugin process error');
|
|
205
|
+
this.handlePluginExit(name, instanceId, 1);
|
|
206
|
+
});
|
|
207
|
+
child.on('exit', (code, signal) => {
|
|
208
|
+
pluginLog.info({ code, signal, instanceId }, 'Plugin process exited');
|
|
209
|
+
this.handlePluginExit(name, instanceId, code ?? 1);
|
|
210
|
+
});
|
|
211
|
+
// Wait briefly to see if the process starts successfully
|
|
212
|
+
await new Promise((resolve) => setTimeout(resolve, 500));
|
|
213
|
+
if (child.exitCode !== null) {
|
|
214
|
+
// Process already exited
|
|
215
|
+
pluginLog.error({ exitCode: child.exitCode, instanceId }, 'Plugin failed to start');
|
|
216
|
+
return null;
|
|
217
|
+
}
|
|
218
|
+
this.updateInstanceStatus(name, instanceId, 'running');
|
|
219
|
+
await registry.save();
|
|
220
|
+
pluginLog.info({ port, pid: child.pid, instanceId }, 'Plugin instance started successfully');
|
|
221
|
+
return instance;
|
|
222
|
+
}
|
|
223
|
+
handlePluginExit(name, instanceId, code) {
|
|
224
|
+
const plugin = this.plugins.get(name);
|
|
225
|
+
if (plugin === undefined) {
|
|
226
|
+
return;
|
|
227
|
+
}
|
|
228
|
+
const instance = plugin.info.instances.find((i) => i.id === instanceId);
|
|
229
|
+
if (instance === undefined) {
|
|
230
|
+
return;
|
|
231
|
+
}
|
|
232
|
+
if (instance.port !== null) {
|
|
233
|
+
portAllocator.release(instance.port);
|
|
234
|
+
}
|
|
235
|
+
plugin.processes.delete(instanceId);
|
|
236
|
+
instance.pid = null;
|
|
237
|
+
// Determine status based on how it exited
|
|
238
|
+
if (instance.status === 'running') {
|
|
239
|
+
// Unexpected exit
|
|
240
|
+
instance.status = code === 0 ? 'stopped' : 'crashed';
|
|
241
|
+
if (code !== 0) {
|
|
242
|
+
instance.error = `Process exited with code ${code}`;
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
else {
|
|
246
|
+
// Expected stop
|
|
247
|
+
instance.status = 'stopped';
|
|
248
|
+
}
|
|
249
|
+
registry.updatePlugin(plugin.info);
|
|
250
|
+
void registry.save();
|
|
251
|
+
}
|
|
252
|
+
async stopInstance(name, instanceId) {
|
|
253
|
+
const plugin = this.plugins.get(name);
|
|
254
|
+
const pluginLog = createPluginLogger(name);
|
|
255
|
+
if (plugin === undefined) {
|
|
256
|
+
pluginLog.warn('Plugin not found');
|
|
257
|
+
return false;
|
|
258
|
+
}
|
|
259
|
+
const instance = plugin.info.instances.find((i) => i.id === instanceId);
|
|
260
|
+
if (instance === undefined) {
|
|
261
|
+
pluginLog.warn({ instanceId }, 'Instance not found');
|
|
262
|
+
return false;
|
|
263
|
+
}
|
|
264
|
+
const child = plugin.processes.get(instanceId);
|
|
265
|
+
if (child === undefined) {
|
|
266
|
+
pluginLog.debug({ instanceId }, 'Instance is not running');
|
|
267
|
+
// Remove the instance from the list
|
|
268
|
+
plugin.info.instances = plugin.info.instances.filter((i) => i.id !== instanceId);
|
|
269
|
+
registry.updatePlugin(plugin.info);
|
|
270
|
+
await registry.save();
|
|
271
|
+
return true;
|
|
272
|
+
}
|
|
273
|
+
this.updateInstanceStatus(name, instanceId, 'stopped');
|
|
274
|
+
plugin.processes.delete(instanceId);
|
|
275
|
+
return new Promise((resolve) => {
|
|
276
|
+
const timeout = setTimeout(() => {
|
|
277
|
+
pluginLog.warn({ instanceId }, 'Instance did not stop gracefully, sending SIGKILL');
|
|
278
|
+
child.kill('SIGKILL');
|
|
279
|
+
}, 5000);
|
|
280
|
+
child.once('exit', () => {
|
|
281
|
+
clearTimeout(timeout);
|
|
282
|
+
if (instance.port !== null) {
|
|
283
|
+
portAllocator.release(instance.port);
|
|
284
|
+
}
|
|
285
|
+
instance.pid = null;
|
|
286
|
+
// Remove the instance from the list
|
|
287
|
+
plugin.info.instances = plugin.info.instances.filter((i) => i.id !== instanceId);
|
|
288
|
+
registry.updatePlugin(plugin.info);
|
|
289
|
+
void registry.save();
|
|
290
|
+
pluginLog.info({ instanceId }, 'Instance stopped');
|
|
291
|
+
resolve(true);
|
|
292
|
+
});
|
|
293
|
+
child.kill('SIGTERM');
|
|
294
|
+
});
|
|
295
|
+
}
|
|
296
|
+
async stopAllInstances(name) {
|
|
297
|
+
const plugin = this.plugins.get(name);
|
|
298
|
+
if (plugin === undefined) {
|
|
299
|
+
return;
|
|
300
|
+
}
|
|
301
|
+
const instanceIds = [...plugin.processes.keys()];
|
|
302
|
+
await Promise.all(instanceIds.map((id) => this.stopInstance(name, id)));
|
|
303
|
+
}
|
|
304
|
+
getPlugin(name) {
|
|
305
|
+
return this.plugins.get(name)?.info;
|
|
306
|
+
}
|
|
307
|
+
getAllPlugins() {
|
|
308
|
+
return Array.from(this.plugins.values()).map((p) => p.info);
|
|
309
|
+
}
|
|
310
|
+
async startAllPlugins() {
|
|
311
|
+
const pluginNames = await this.discoverPlugins();
|
|
312
|
+
logger.info({ count: pluginNames.length }, 'Discovered plugins');
|
|
313
|
+
for (const name of pluginNames) {
|
|
314
|
+
await this.startPlugin(name);
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
async stopAllPlugins() {
|
|
318
|
+
const stopPromises = [];
|
|
319
|
+
for (const [name] of this.plugins) {
|
|
320
|
+
stopPromises.push(this.stopAllInstances(name));
|
|
321
|
+
}
|
|
322
|
+
await Promise.all(stopPromises);
|
|
323
|
+
}
|
|
324
|
+
killAllPluginsSync() {
|
|
325
|
+
// Synchronously kill all child processes - used during shutdown
|
|
326
|
+
for (const [name, plugin] of this.plugins) {
|
|
327
|
+
for (const [instanceId, child] of plugin.processes) {
|
|
328
|
+
const pluginLog = createPluginLogger(name);
|
|
329
|
+
pluginLog.info({ instanceId }, 'Killing plugin instance');
|
|
330
|
+
try {
|
|
331
|
+
child.kill('SIGTERM');
|
|
332
|
+
}
|
|
333
|
+
catch {
|
|
334
|
+
// Process may already be dead
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
async handleNewPlugin(name) {
|
|
340
|
+
logger.info({ plugin: name }, 'New plugin detected');
|
|
341
|
+
await this.startPlugin(name);
|
|
342
|
+
}
|
|
343
|
+
async refreshPluginMetadata(name) {
|
|
344
|
+
const pluginsDir = registry.getPluginsDir();
|
|
345
|
+
const pluginPath = path.join(pluginsDir, name);
|
|
346
|
+
const plugin = this.plugins.get(name);
|
|
347
|
+
if (plugin === undefined) {
|
|
348
|
+
return;
|
|
349
|
+
}
|
|
350
|
+
const packageJson = await this.readPackageJson(pluginPath);
|
|
351
|
+
if (packageJson === null) {
|
|
352
|
+
return;
|
|
353
|
+
}
|
|
354
|
+
const main = packageJson.main ?? 'index.js';
|
|
355
|
+
const displayName = packageJson.shella?.displayName ?? packageJson.name ?? name;
|
|
356
|
+
const devCommand = packageJson.shella?.devCommand;
|
|
357
|
+
// Update cached info
|
|
358
|
+
plugin.info.main = main;
|
|
359
|
+
plugin.info.displayName = displayName;
|
|
360
|
+
if (devCommand) {
|
|
361
|
+
plugin.info.devCommand = devCommand;
|
|
362
|
+
}
|
|
363
|
+
else {
|
|
364
|
+
delete plugin.info.devCommand;
|
|
365
|
+
}
|
|
366
|
+
registry.updatePlugin(plugin.info);
|
|
367
|
+
await registry.save();
|
|
368
|
+
logger.debug({ plugin: name, main, displayName, devCommand }, 'Refreshed plugin metadata');
|
|
369
|
+
}
|
|
370
|
+
async handleRemovedPlugin(name) {
|
|
371
|
+
logger.info({ plugin: name }, 'Plugin removed');
|
|
372
|
+
await this.stopAllInstances(name);
|
|
373
|
+
this.plugins.delete(name);
|
|
374
|
+
registry.removePlugin(name);
|
|
375
|
+
await registry.save();
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
export const pluginManager = new PluginManager();
|
|
379
|
+
//# sourceMappingURL=plugin-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin-manager.js","sourceRoot":"","sources":["../../src/plugin-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AASzC,MAAM,OAAO,aAAa;IAChB,OAAO,GAA+B,IAAI,GAAG,EAAE,CAAC;IAExD,KAAK,CAAC,eAAe;QACnB,MAAM,UAAU,GAAG,QAAQ,CAAC,aAAa,EAAE,CAAC;QAC5C,MAAM,UAAU,GAAa,EAAE,CAAC;QAEhC,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;YAEtE,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC5B,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;oBACvD,SAAS;gBACX,CAAC;gBAED,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;gBACrD,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;gBAE9D,IAAI,CAAC;oBACH,MAAM,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;oBACjC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC9B,CAAC;gBAAC,MAAM,CAAC;oBACP,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE,EAAE,yCAAyC,CAAC,CAAC;gBAClF,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,kCAAkC,CAAC,CAAC;QAC5D,CAAC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC;IAEO,KAAK,CAAC,eAAe,CAAC,UAAkB;QAC9C,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,CAAC;YAClF,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAgB,CAAC;QAC5C,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,YAAY,CAAC,UAAkB;QAC3C,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;QAC9D,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;QAE9D,IAAI,CAAC;YACH,MAAM,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;gBAC7D,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC;gBACxB,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC;aACzB,CAAC,CAAC;YAEH,2DAA2D;YAC3D,OAAO,gBAAgB,CAAC,OAAO,GAAG,gBAAgB,CAAC,OAAO,CAAC;QAC7D,CAAC;QAAC,MAAM,CAAC;YACP,6BAA6B;YAC7B,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAEO,aAAa,CAAC,UAAkB,EAAE,UAAkB;QAC1D,MAAM,SAAS,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC;QACjD,SAAS,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAEtC,IAAI,CAAC;YACH,QAAQ,CAAC,aAAa,EAAE;gBACtB,GAAG,EAAE,UAAU;gBACf,KAAK,EAAE,MAAM;gBACb,OAAO,EAAE,MAAM,EAAE,mBAAmB;aACrC,CAAC,CAAC;YACH,SAAS,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;YACxC,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,SAAS,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,oBAAoB,CAAC,CAAC;YAC/C,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAEO,oBAAoB,CAC1B,IAAY,EACZ,UAAkB,EAClB,MAAoB,EACpB,KAAc;QAEd,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,OAAO;QACT,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,CAAC;QACxE,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC;YACzB,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAC;YACzB,CAAC;iBAAM,CAAC;gBACN,OAAO,QAAQ,CAAC,KAAK,CAAC;YACxB,CAAC;YACD,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,kBAAkB,CAAC,IAAY;QAC3C,MAAM,UAAU,GAAG,QAAQ,CAAC,aAAa,EAAE,CAAC;QAC5C,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAE/C,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;QAC3D,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,IAAI,UAAU,CAAC;QAC5C,MAAM,WAAW,GAAG,WAAW,CAAC,MAAM,EAAE,WAAW,IAAI,WAAW,CAAC,IAAI,IAAI,IAAI,CAAC;QAChF,MAAM,UAAU,GAAG,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC;QAElD,MAAM,IAAI,GAAe;YACvB,IAAI;YACJ,WAAW;YACX,IAAI,EAAE,UAAU;YAChB,IAAI;YACJ,SAAS,EAAE,EAAE;SACd,CAAC;QACF,IAAI,UAAU,EAAE,CAAC;YACf,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC/B,CAAC;QAED,MAAM,aAAa,GAAkB;YACnC,IAAI;YACJ,SAAS,EAAE,IAAI,GAAG,EAAE;YACpB,cAAc,EAAE,CAAC;SAClB,CAAC;QAEF,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;QACtC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAE5B,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,IAAY,EAAE,OAAO,GAAG,IAAI;QAC5C,MAAM,UAAU,GAAG,QAAQ,CAAC,aAAa,EAAE,CAAC;QAC5C,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAC/C,MAAM,SAAS,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAE3C,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAC1D,IAAI,aAAa,KAAK,IAAI,EAAE,CAAC;YAC3B,SAAS,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;YAC/C,OAAO,IAAI,CAAC;QACd,CAAC;QAED,4EAA4E;QAC5E,MAAM,UAAU,GAAG,OAAO,IAAI,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC;QAE9D,oEAAoE;QACpE,IAAI,aAAa,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;YAChF,MAAM,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;YAC5D,IAAI,CAAC,cAAc,EAAE,CAAC;gBACpB,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QAED,iCAAiC;QACjC,IAAI,IAAY,CAAC;QACjB,IAAI,CAAC;YACH,IAAI,GAAG,MAAM,aAAa,CAAC,QAAQ,EAAE,CAAC;QACxC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,SAAS,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,yBAAyB,CAAC,CAAC;YACpD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,sBAAsB;QACtB,MAAM,UAAU,GAAG,MAAM,CAAC,aAAa,CAAC,cAAc,EAAE,CAAC,CAAC;QAC1D,MAAM,QAAQ,GAAmB;YAC/B,EAAE,EAAE,UAAU;YACd,MAAM,EAAE,UAAU;YAClB,IAAI;YACJ,GAAG,EAAE,IAAI;YACT,GAAG,EAAE,oBAAoB,IAAI,EAAE;SAChC,CAAC;QACF,IAAI,UAAU,EAAE,CAAC;YACf,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC;QAC1B,CAAC;QAED,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC5C,QAAQ,CAAC,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QAE1C,2BAA2B;QAC3B,IAAI,KAA+B,CAAC;QAEpC,IAAI,UAAU,IAAI,aAAa,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YAChD,sCAAsC;YACtC,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;YAC5E,MAAM,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACzC,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,6BAA6B,CAAC,CAAC;YAE5E,KAAK,GAAG,KAAK,CAAC,GAAG,IAAI,KAAK,EAAE,IAAI,EAAE;gBAChC,GAAG,EAAE,UAAU;gBACf,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE;gBAC3C,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;gBACjC,QAAQ,EAAE,KAAK;gBACf,KAAK,EAAE,IAAI;aACZ,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,yBAAyB;YACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChE,MAAM,YAAY,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAC7D,MAAM,OAAO,GAAG,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;YAC9C,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE,0BAA0B,CAAC,CAAC;YAEpF,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,EAAE;gBACjC,GAAG,EAAE,UAAU;gBACf,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE;gBAC3C,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;gBACjC,QAAQ,EAAE,KAAK;aAChB,CAAC,CAAC;QACL,CAAC;QAED,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QAC/C,QAAQ,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC;QAEjC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;YACxC,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,UAAU,EAAE,EAAE,eAAe,CAAC,CAAC;QAClF,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;YACxC,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,UAAU,EAAE,EAAE,qBAAqB,CAAC,CAAC;QACxF,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YACxB,SAAS,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,EAAE,sBAAsB,CAAC,CAAC;YAC7D,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;YAChC,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,uBAAuB,CAAC,CAAC;YACtE,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;QAEH,yDAAyD;QACzD,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;QAEzD,IAAI,KAAK,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;YAC5B,yBAAyB;YACzB,SAAS,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,UAAU,EAAE,EAAE,wBAAwB,CAAC,CAAC;YACpF,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;QACvD,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAEtB,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,UAAU,EAAE,EAAE,sCAAsC,CAAC,CAAC;QAC7F,OAAO,QAAQ,CAAC;IAClB,CAAC;IAEO,gBAAgB,CAAC,IAAY,EAAE,UAAkB,EAAE,IAAY;QACrE,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,OAAO;QACT,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,CAAC;QACxE,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,OAAO;QACT,CAAC;QAED,IAAI,QAAQ,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YAC3B,aAAa,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACvC,CAAC;QAED,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QACpC,QAAQ,CAAC,GAAG,GAAG,IAAI,CAAC;QAEpB,0CAA0C;QAC1C,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAClC,kBAAkB;YAClB,QAAQ,CAAC,MAAM,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;YACrD,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;gBACf,QAAQ,CAAC,KAAK,GAAG,4BAA4B,IAAI,EAAE,CAAC;YACtD,CAAC;QACH,CAAC;aAAM,CAAC;YACN,gBAAgB;YAChB,QAAQ,CAAC,MAAM,GAAG,SAAS,CAAC;QAC9B,CAAC;QAED,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACnC,KAAK,QAAQ,CAAC,IAAI,EAAE,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,IAAY,EAAE,UAAkB;QACjD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,SAAS,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAE3C,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,SAAS,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;YACnC,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,CAAC;QACxE,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,SAAS,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,EAAE,oBAAoB,CAAC,CAAC;YACrD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC/C,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,SAAS,CAAC,KAAK,CAAC,EAAE,UAAU,EAAE,EAAE,yBAAyB,CAAC,CAAC;YAC3D,oCAAoC;YACpC,MAAM,CAAC,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,CAAC;YACjF,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACnC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACtB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;QAEvD,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAEpC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC7B,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC9B,SAAS,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,EAAE,mDAAmD,CAAC,CAAC;gBACpF,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACxB,CAAC,EAAE,IAAI,CAAC,CAAC;YAET,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE;gBACtB,YAAY,CAAC,OAAO,CAAC,CAAC;gBACtB,IAAI,QAAQ,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;oBAC3B,aAAa,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBACvC,CAAC;gBACD,QAAQ,CAAC,GAAG,GAAG,IAAI,CAAC;gBACpB,oCAAoC;gBACpC,MAAM,CAAC,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,CAAC;gBACjF,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBACnC,KAAK,QAAQ,CAAC,IAAI,EAAE,CAAC;gBACrB,SAAS,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,EAAE,kBAAkB,CAAC,CAAC;gBACnD,OAAO,CAAC,IAAI,CAAC,CAAC;YAChB,CAAC,CAAC,CAAC;YAEH,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACxB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,IAAY;QACjC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,OAAO;QACT,CAAC;QAED,MAAM,WAAW,GAAG,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;QACjD,MAAM,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IAC1E,CAAC;IAED,SAAS,CAAC,IAAY;QACpB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC;IACtC,CAAC;IAED,aAAa;QACX,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC9D,CAAC;IAED,KAAK,CAAC,eAAe;QACnB,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;QACjD,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,EAAE,oBAAoB,CAAC,CAAC;QAEjE,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;YAC/B,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IAED,KAAK,CAAC,cAAc;QAClB,MAAM,YAAY,GAAoB,EAAE,CAAC;QAEzC,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAClC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;QACjD,CAAC;QAED,MAAM,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAClC,CAAC;IAED,kBAAkB;QAChB,gEAAgE;QAChE,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAC1C,KAAK,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;gBACnD,MAAM,SAAS,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;gBAC3C,SAAS,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,EAAE,yBAAyB,CAAC,CAAC;gBAC1D,IAAI,CAAC;oBACH,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBACxB,CAAC;gBAAC,MAAM,CAAC;oBACP,8BAA8B;gBAChC,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,IAAY;QAChC,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,qBAAqB,CAAC,CAAC;QACrD,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,qBAAqB,CAAC,IAAY;QACtC,MAAM,UAAU,GAAG,QAAQ,CAAC,aAAa,EAAE,CAAC;QAC5C,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAEtC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,OAAO;QACT,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;QAC3D,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;YACzB,OAAO;QACT,CAAC;QAED,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,IAAI,UAAU,CAAC;QAC5C,MAAM,WAAW,GAAG,WAAW,CAAC,MAAM,EAAE,WAAW,IAAI,WAAW,CAAC,IAAI,IAAI,IAAI,CAAC;QAChF,MAAM,UAAU,GAAG,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC;QAElD,qBAAqB;QACrB,MAAM,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACxB,MAAM,CAAC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QACtC,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,CAAC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QACtC,CAAC;aAAM,CAAC;YACN,OAAO,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;QAChC,CAAC;QAED,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACnC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAEtB,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,EAAE,2BAA2B,CAAC,CAAC;IAC7F,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,IAAY;QACpC,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,gBAAgB,CAAC,CAAC;QAChD,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC1B,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAC5B,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IACxB,CAAC;CACF;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export declare class PortAllocator {
|
|
2
|
+
private allocatedPorts;
|
|
3
|
+
isPortAvailable(port: number): Promise<boolean>;
|
|
4
|
+
allocate(): Promise<number>;
|
|
5
|
+
release(port: number): void;
|
|
6
|
+
isAllocated(port: number): boolean;
|
|
7
|
+
getAllocatedPorts(): number[];
|
|
8
|
+
clear(): void;
|
|
9
|
+
}
|
|
10
|
+
export declare const portAllocator: PortAllocator;
|
|
11
|
+
//# sourceMappingURL=port-allocator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"port-allocator.d.ts","sourceRoot":"","sources":["../../src/port-allocator.ts"],"names":[],"mappings":"AAIA,qBAAa,aAAa;IACxB,OAAO,CAAC,cAAc,CAA0B;IAE1C,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAkB/C,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC;IAiBjC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAO3B,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIlC,iBAAiB,IAAI,MAAM,EAAE;IAI7B,KAAK,IAAI,IAAI;CAGd;AAED,eAAO,MAAM,aAAa,eAAsB,CAAC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import * as net from 'node:net';
|
|
2
|
+
import { PLUGIN_PORT_MIN, PLUGIN_PORT_MAX } from './types.js';
|
|
3
|
+
import { logger } from './logger.js';
|
|
4
|
+
export class PortAllocator {
|
|
5
|
+
allocatedPorts = new Set();
|
|
6
|
+
async isPortAvailable(port) {
|
|
7
|
+
return new Promise((resolve) => {
|
|
8
|
+
const server = net.createServer();
|
|
9
|
+
server.once('error', () => {
|
|
10
|
+
resolve(false);
|
|
11
|
+
});
|
|
12
|
+
server.once('listening', () => {
|
|
13
|
+
server.close(() => {
|
|
14
|
+
resolve(true);
|
|
15
|
+
});
|
|
16
|
+
});
|
|
17
|
+
server.listen(port, '127.0.0.1');
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
async allocate() {
|
|
21
|
+
for (let port = PLUGIN_PORT_MIN; port <= PLUGIN_PORT_MAX; port++) {
|
|
22
|
+
if (this.allocatedPorts.has(port)) {
|
|
23
|
+
continue;
|
|
24
|
+
}
|
|
25
|
+
const available = await this.isPortAvailable(port);
|
|
26
|
+
if (available) {
|
|
27
|
+
this.allocatedPorts.add(port);
|
|
28
|
+
logger.debug({ port }, 'Allocated port');
|
|
29
|
+
return port;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
throw new Error(`No available ports in range ${PLUGIN_PORT_MIN}-${PLUGIN_PORT_MAX}`);
|
|
33
|
+
}
|
|
34
|
+
release(port) {
|
|
35
|
+
if (this.allocatedPorts.has(port)) {
|
|
36
|
+
this.allocatedPorts.delete(port);
|
|
37
|
+
logger.debug({ port }, 'Released port');
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
isAllocated(port) {
|
|
41
|
+
return this.allocatedPorts.has(port);
|
|
42
|
+
}
|
|
43
|
+
getAllocatedPorts() {
|
|
44
|
+
return Array.from(this.allocatedPorts);
|
|
45
|
+
}
|
|
46
|
+
clear() {
|
|
47
|
+
this.allocatedPorts.clear();
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
export const portAllocator = new PortAllocator();
|
|
51
|
+
//# sourceMappingURL=port-allocator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"port-allocator.js","sourceRoot":"","sources":["../../src/port-allocator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC9D,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,MAAM,OAAO,aAAa;IAChB,cAAc,GAAgB,IAAI,GAAG,EAAE,CAAC;IAEhD,KAAK,CAAC,eAAe,CAAC,IAAY;QAChC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC7B,MAAM,MAAM,GAAG,GAAG,CAAC,YAAY,EAAE,CAAC;YAElC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE;gBACxB,OAAO,CAAC,KAAK,CAAC,CAAC;YACjB,CAAC,CAAC,CAAC;YAEH,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE;gBAC5B,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE;oBAChB,OAAO,CAAC,IAAI,CAAC,CAAC;gBAChB,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,KAAK,IAAI,IAAI,GAAG,eAAe,EAAE,IAAI,IAAI,eAAe,EAAE,IAAI,EAAE,EAAE,CAAC;YACjE,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBAClC,SAAS;YACX,CAAC;YAED,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YACnD,IAAI,SAAS,EAAE,CAAC;gBACd,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAC9B,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,EAAE,gBAAgB,CAAC,CAAC;gBACzC,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,+BAA+B,eAAe,IAAI,eAAe,EAAE,CAAC,CAAC;IACvF,CAAC;IAED,OAAO,CAAC,IAAY;QAClB,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAClC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACjC,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,EAAE,eAAe,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IAED,WAAW,CAAC,IAAY;QACtB,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACvC,CAAC;IAED,iBAAiB;QACf,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACzC,CAAC;IAED,KAAK;QACH,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;IAC9B,CAAC;CACF;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { LayoutState, PluginInfo, RegistryData } from './types.js';
|
|
2
|
+
export declare class Registry {
|
|
3
|
+
private data;
|
|
4
|
+
ensureDirectories(): Promise<void>;
|
|
5
|
+
ensurePluginsDir(): Promise<void>;
|
|
6
|
+
getPluginsDir(): string;
|
|
7
|
+
load(): Promise<void>;
|
|
8
|
+
private isValidPanelNode;
|
|
9
|
+
private isValidLayout;
|
|
10
|
+
private isValidRegistryData;
|
|
11
|
+
save(): Promise<void>;
|
|
12
|
+
cleanup(): Promise<void>;
|
|
13
|
+
updatePlugin(plugin: PluginInfo): void;
|
|
14
|
+
removePlugin(name: string): void;
|
|
15
|
+
getPlugin(name: string): PluginInfo | undefined;
|
|
16
|
+
getAllPlugins(): PluginInfo[];
|
|
17
|
+
getLayout(): LayoutState;
|
|
18
|
+
setLayout(layout: LayoutState): void;
|
|
19
|
+
getData(): RegistryData;
|
|
20
|
+
}
|
|
21
|
+
export declare const registry: Registry;
|
|
22
|
+
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/registry.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAa,UAAU,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAGnF,qBAAa,QAAQ;IACnB,OAAO,CAAC,IAAI,CAIV;IAEI,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAYlC,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IASvC,aAAa,IAAI,MAAM;IAIjB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAkB3B,OAAO,CAAC,gBAAgB;IA8CxB,OAAO,CAAC,aAAa;IAcrB,OAAO,CAAC,mBAAmB;IAkCrB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAUrB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAS9B,YAAY,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;IAItC,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAKhC,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAI/C,aAAa,IAAI,UAAU,EAAE;IAI7B,SAAS,IAAI,WAAW;IAIxB,SAAS,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI;IAIpC,OAAO,IAAI,YAAY;CAGxB;AAED,eAAO,MAAM,QAAQ,UAAiB,CAAC"}
|