fatma-app 1.0.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/NodeSqliteClient-BgRtZPGk.cjs +159 -0
- package/dist/NodeSqliteClient-BgRtZPGk.cjs.map +1 -0
- package/dist/NodeSqliteClient-HpJMkQ8C.mjs +141 -0
- package/dist/NodeSqliteClient-HpJMkQ8C.mjs.map +1 -0
- package/dist/client/apple-touch-icon.png +0 -0
- package/dist/client/assets/DiffPanel-4ljXGXEy.js +1 -0
- package/dist/client/assets/abap-smLpETzL.js +1 -0
- package/dist/client/assets/actionscript-3-o-aRvjY5.js +1 -0
- package/dist/client/assets/ada-D5RRX1i4.js +1 -0
- package/dist/client/assets/andromeeda-N4z3YzmR.js +1 -0
- package/dist/client/assets/angular-html-BeDNkeew.js +1 -0
- package/dist/client/assets/angular-ts-CDLBgfkI.js +1 -0
- package/dist/client/assets/apache-DttKlSqg.js +1 -0
- package/dist/client/assets/apex-DL7j-a2n.js +1 -0
- package/dist/client/assets/apl-rgWDyKIv.js +1 -0
- package/dist/client/assets/applescript-DCbL_2FX.js +1 -0
- package/dist/client/assets/ara-DqheWJCe.js +1 -0
- package/dist/client/assets/asciidoc-BH2sf2K4.js +1 -0
- package/dist/client/assets/asm-rfjOMz3U.js +1 -0
- package/dist/client/assets/astro-PRqCm7Z1.js +1 -0
- package/dist/client/assets/aurora-x-CND-FqEb.js +1 -0
- package/dist/client/assets/awk-CMV5n9Z7.js +1 -0
- package/dist/client/assets/ayu-dark-on7xzq_B.js +1 -0
- package/dist/client/assets/ayu-light-DnGeGGc2.js +1 -0
- package/dist/client/assets/ayu-mirage-DG3LlYC_.js +1 -0
- package/dist/client/assets/ballerina-BjMqJjlr.js +1 -0
- package/dist/client/assets/bat-BaVbo_qw.js +1 -0
- package/dist/client/assets/beancount-DBt5Mbc_.js +1 -0
- package/dist/client/assets/berry-Cyjuxiss.js +1 -0
- package/dist/client/assets/bibtex-BV_0nsPq.js +1 -0
- package/dist/client/assets/bicep-C2gEwu4J.js +1 -0
- package/dist/client/assets/bird2-BRyaEJd0.js +1 -0
- package/dist/client/assets/blade-qEl5UKHS.js +1 -0
- package/dist/client/assets/bsl-B1qbqNES.js +1 -0
- package/dist/client/assets/c-DszpeTvX.js +1 -0
- package/dist/client/assets/c3-DTTbp5N2.js +1 -0
- package/dist/client/assets/cadence-CPz83cmI.js +1 -0
- package/dist/client/assets/cairo-BDj8wWhy.js +1 -0
- package/dist/client/assets/catppuccin-frappe-Dr22sraq.js +1 -0
- package/dist/client/assets/catppuccin-latte-C57EeX8c.js +1 -0
- package/dist/client/assets/catppuccin-macchiato-CpheI4uD.js +1 -0
- package/dist/client/assets/catppuccin-mocha-D8Lmdks_.js +1 -0
- package/dist/client/assets/clarity-CFJ2Yc3q.js +1 -0
- package/dist/client/assets/clojure-6R01QgJC.js +1 -0
- package/dist/client/assets/cmake-D5rSbMir.js +1 -0
- package/dist/client/assets/cobol-S9J5MM_j.js +1 -0
- package/dist/client/assets/codeowners-_3A-ClkN.js +1 -0
- package/dist/client/assets/codeql-DlIhJTR7.js +1 -0
- package/dist/client/assets/coffee-DwCTVthq.js +1 -0
- package/dist/client/assets/common-lisp-BvQzz173.js +1 -0
- package/dist/client/assets/coq-DTNXReIC.js +1 -0
- package/dist/client/assets/cpp-BdooxKsA.js +1 -0
- package/dist/client/assets/crystal-1CsEBBGb.js +1 -0
- package/dist/client/assets/csharp-BDKQY1K9.js +1 -0
- package/dist/client/assets/css-BrGAjp14.js +1 -0
- package/dist/client/assets/csv-DNUpVBxl.js +1 -0
- package/dist/client/assets/cue-DDdBc2s3.js +1 -0
- package/dist/client/assets/cypher-CguaznO2.js +1 -0
- package/dist/client/assets/d-CHcoyjv3.js +1 -0
- package/dist/client/assets/dark-plus-CqeW_0kH.js +1 -0
- package/dist/client/assets/dart-RM3aRphk.js +1 -0
- package/dist/client/assets/dax-nbnY1d79.js +1 -0
- package/dist/client/assets/desktop-BD76cvxT.js +1 -0
- package/dist/client/assets/diff-CdkWtnkL.js +1 -0
- package/dist/client/assets/docker-ZyPHc6zB.js +1 -0
- package/dist/client/assets/dotenv-BdJZEwA6.js +1 -0
- package/dist/client/assets/dracula-CtqCPLGa.js +1 -0
- package/dist/client/assets/dracula-soft-DmBpwRAy.js +1 -0
- package/dist/client/assets/dream-maker-BJL4qlg3.js +1 -0
- package/dist/client/assets/edge-QmAD8wW9.js +1 -0
- package/dist/client/assets/elixir-CLbLNgui.js +1 -0
- package/dist/client/assets/elm-CKNiO2TD.js +1 -0
- package/dist/client/assets/emacs-lisp-_LyYa2Ky.js +1 -0
- package/dist/client/assets/erb-Dx0_Rvba.js +1 -0
- package/dist/client/assets/erlang-Bc4hQuqa.js +1 -0
- package/dist/client/assets/everforest-dark-CrbyKk4n.js +1 -0
- package/dist/client/assets/everforest-light-DRbSh8Tm.js +1 -0
- package/dist/client/assets/fennel-CC2BkRsS.js +1 -0
- package/dist/client/assets/fish-D2ZCzqcE.js +1 -0
- package/dist/client/assets/fluent-DKAm3m7q.js +1 -0
- package/dist/client/assets/fortran-fixed-form-B02FOYI-.js +1 -0
- package/dist/client/assets/fortran-free-form-BPTf0lbT.js +1 -0
- package/dist/client/assets/fsharp-DhdR18vN.js +1 -0
- package/dist/client/assets/gdresource-DgnrMPIx.js +1 -0
- package/dist/client/assets/gdscript-CsadCSaZ.js +1 -0
- package/dist/client/assets/gdshader-PfnN_8tR.js +1 -0
- package/dist/client/assets/genie-Bj-orPAV.js +1 -0
- package/dist/client/assets/gherkin-COVWpJ-Q.js +1 -0
- package/dist/client/assets/git-commit-DGJi7qBD.js +1 -0
- package/dist/client/assets/git-rebase-CKuTZSJp.js +1 -0
- package/dist/client/assets/github-dark-default-DX3IG_X0.js +1 -0
- package/dist/client/assets/github-dark-dimmed-CH6p_7ez.js +1 -0
- package/dist/client/assets/github-dark-high-contrast-Bg2sSao5.js +1 -0
- package/dist/client/assets/github-dark-ipGuFGYC.js +1 -0
- package/dist/client/assets/github-light-BxjqOQl0.js +1 -0
- package/dist/client/assets/github-light-default-DwpDd1IQ.js +1 -0
- package/dist/client/assets/github-light-high-contrast-C0QeixPf.js +1 -0
- package/dist/client/assets/gleam-BF2NigGj.js +1 -0
- package/dist/client/assets/glimmer-js-COUwHYkl.js +1 -0
- package/dist/client/assets/glimmer-ts-GN6tmT_q.js +1 -0
- package/dist/client/assets/glsl-BEFBEpN8.js +1 -0
- package/dist/client/assets/gn-CMIt9roj.js +1 -0
- package/dist/client/assets/gnuplot-DgWlRTEj.js +1 -0
- package/dist/client/assets/go-DLnOLj8q.js +1 -0
- package/dist/client/assets/graphql-CKBUs7Bt.js +1 -0
- package/dist/client/assets/groovy-B9qLWIkE.js +1 -0
- package/dist/client/assets/gruvbox-dark-hard-BIMX9ePb.js +1 -0
- package/dist/client/assets/gruvbox-dark-medium-DxuwyVzM.js +1 -0
- package/dist/client/assets/gruvbox-dark-soft-ba2fjht0.js +1 -0
- package/dist/client/assets/gruvbox-light-hard-DAJK2PqC.js +1 -0
- package/dist/client/assets/gruvbox-light-medium-WRifDAJD.js +1 -0
- package/dist/client/assets/gruvbox-light-soft-B0dBOoVB.js +1 -0
- package/dist/client/assets/hack-Bpn_ah6c.js +1 -0
- package/dist/client/assets/haml-BPq03dJY.js +1 -0
- package/dist/client/assets/handlebars-ybi2YDm9.js +1 -0
- package/dist/client/assets/haskell-BaGpmm_c.js +1 -0
- package/dist/client/assets/haxe-DfXTCEOz.js +1 -0
- package/dist/client/assets/hcl-CbCtpSbi.js +1 -0
- package/dist/client/assets/hjson-_4-w-pHU.js +1 -0
- package/dist/client/assets/hlsl-DpuYn7pp.js +1 -0
- package/dist/client/assets/horizon-C5RtD1fY.js +1 -0
- package/dist/client/assets/horizon-bright-pEOice34.js +1 -0
- package/dist/client/assets/houston-A0zg9vNP.js +1 -0
- package/dist/client/assets/html-D5v2-ioG.js +1 -0
- package/dist/client/assets/html-derivative-D4jti6Gb.js +1 -0
- package/dist/client/assets/http-BUF-LKwS.js +1 -0
- package/dist/client/assets/hurl-DhiP7ERA.js +1 -0
- package/dist/client/assets/hxml-adC65L_J.js +1 -0
- package/dist/client/assets/hy-t9zDXBje.js +1 -0
- package/dist/client/assets/imba-Bxu-TDfw.js +1 -0
- package/dist/client/assets/index-BkyGebzB.js +1775 -0
- package/dist/client/assets/index-CumcHdQ5.css +1 -0
- package/dist/client/assets/ini-D-v34c8N.js +1 -0
- package/dist/client/assets/java-da_ScwWL.js +1 -0
- package/dist/client/assets/javascript-CuH_JrpP.js +1 -0
- package/dist/client/assets/jinja-DX_mzWaN.js +1 -0
- package/dist/client/assets/jison-BTXNBM32.js +1 -0
- package/dist/client/assets/json-DqEfI1be.js +1 -0
- package/dist/client/assets/json5-D0XL1D5m.js +1 -0
- package/dist/client/assets/jsonc-BBgf3TX3.js +1 -0
- package/dist/client/assets/jsonl-KrKLbtB7.js +1 -0
- package/dist/client/assets/jsonnet-B2ZwWMOt.js +1 -0
- package/dist/client/assets/jssm-ByRpI9-B.js +1 -0
- package/dist/client/assets/jsx-2dP948TK.js +1 -0
- package/dist/client/assets/julia-DM85LH1t.js +1 -0
- package/dist/client/assets/just-CzN4JwW_.js +1 -0
- package/dist/client/assets/kanagawa-dragon-CtPmcCMp.js +1 -0
- package/dist/client/assets/kanagawa-lotus-DpOXEGCa.js +1 -0
- package/dist/client/assets/kanagawa-wave-CLVCyc-n.js +1 -0
- package/dist/client/assets/kdl-6FPPEH4H.js +1 -0
- package/dist/client/assets/kotlin-D4L3Nd2D.js +1 -0
- package/dist/client/assets/kusto-D-mmc07O.js +1 -0
- package/dist/client/assets/laserwave-7fEj4XGb.js +1 -0
- package/dist/client/assets/latex-BHR1iNn3.js +1 -0
- package/dist/client/assets/lean-BMVMuP2E.js +1 -0
- package/dist/client/assets/less-C95PyOu0.js +1 -0
- package/dist/client/assets/light-plus-DHI2dh3p.js +1 -0
- package/dist/client/assets/liquid-BQeY0muT.js +1 -0
- package/dist/client/assets/llvm-Dy3qORTl.js +1 -0
- package/dist/client/assets/log-BQop7fzg.js +1 -0
- package/dist/client/assets/logo-DKtnYmrp.js +1 -0
- package/dist/client/assets/lua-C_OZ0gUd.js +1 -0
- package/dist/client/assets/luau-Dha4KG0q.js +1 -0
- package/dist/client/assets/make-DfmS6buu.js +1 -0
- package/dist/client/assets/markdown-BaI9LyM4.js +1 -0
- package/dist/client/assets/marko-JTAbciBh.js +1 -0
- package/dist/client/assets/material-theme-Dm6ETY8i.js +1 -0
- package/dist/client/assets/material-theme-darker-BeyjmM5Z.js +1 -0
- package/dist/client/assets/material-theme-lighter-CCOYYzKL.js +1 -0
- package/dist/client/assets/material-theme-ocean-CUtPiiX3.js +1 -0
- package/dist/client/assets/material-theme-palenight-2L4zMwIM.js +1 -0
- package/dist/client/assets/matlab-BT79Cq_j.js +1 -0
- package/dist/client/assets/mdc-B2a57uke.js +1 -0
- package/dist/client/assets/mdx-CxGBwLNt.js +1 -0
- package/dist/client/assets/mermaid-DLf3axBN.js +1 -0
- package/dist/client/assets/min-dark-B8TUPGHg.js +1 -0
- package/dist/client/assets/min-light-BDOoBxcA.js +1 -0
- package/dist/client/assets/mipsasm-DXuU_0cI.js +1 -0
- package/dist/client/assets/mojo-1Omp2pIo.js +1 -0
- package/dist/client/assets/monokai-E_VBmXGZ.js +1 -0
- package/dist/client/assets/moonbit-DZzq699o.js +1 -0
- package/dist/client/assets/move-DxDAOJVd.js +1 -0
- package/dist/client/assets/narrat-CxDcPPb9.js +1 -0
- package/dist/client/assets/nextflow-JEyYUlIq.js +1 -0
- package/dist/client/assets/nextflow-groovy-wvmJO4hi.js +1 -0
- package/dist/client/assets/nginx-562hoYcr.js +1 -0
- package/dist/client/assets/night-owl-DefhalNX.js +1 -0
- package/dist/client/assets/night-owl-light-byb3AbEn.js +1 -0
- package/dist/client/assets/nim-D0MApb5n.js +1 -0
- package/dist/client/assets/nix-DsFTDHWT.js +1 -0
- package/dist/client/assets/nord-D5rQzHT-.js +1 -0
- package/dist/client/assets/nushell-BQ_rO0AM.js +1 -0
- package/dist/client/assets/objective-c-BMq6JT_m.js +1 -0
- package/dist/client/assets/objective-cpp-DRwojuGv.js +1 -0
- package/dist/client/assets/ocaml-e4_gKO6E.js +1 -0
- package/dist/client/assets/odin-mdTPwYOg.js +1 -0
- package/dist/client/assets/one-dark-pro-DxXww9jg.js +1 -0
- package/dist/client/assets/one-light-D9c03w7t.js +1 -0
- package/dist/client/assets/openscad-D2aTdNfr.js +1 -0
- package/dist/client/assets/pascal-D4n_G8vj.js +1 -0
- package/dist/client/assets/perl-CEbuu_zA.js +1 -0
- package/dist/client/assets/php-qJEr5aGq.js +1 -0
- package/dist/client/assets/pierre-dark-Os0_Ccr_.js +1 -0
- package/dist/client/assets/pierre-light-BrTpOEi0.js +1 -0
- package/dist/client/assets/pkl-DcjhAp0L.js +1 -0
- package/dist/client/assets/plastic-uOsw7z1x.js +1 -0
- package/dist/client/assets/plsql-BSy3Ag0J.js +1 -0
- package/dist/client/assets/po-Be96RYkA.js +1 -0
- package/dist/client/assets/poimandres-CyO4HORD.js +1 -0
- package/dist/client/assets/polar-BmhMKWum.js +1 -0
- package/dist/client/assets/postcss-BTQso3H9.js +1 -0
- package/dist/client/assets/powerquery-DVyQv3M2.js +1 -0
- package/dist/client/assets/powershell-BmtCGJVD.js +1 -0
- package/dist/client/assets/prisma-CCFA9rEj.js +1 -0
- package/dist/client/assets/prolog-DWGEEo78.js +1 -0
- package/dist/client/assets/proto-C3eop1kM.js +1 -0
- package/dist/client/assets/pug-CGF-4hUu.js +1 -0
- package/dist/client/assets/puppet-C0_7Nv5A.js +1 -0
- package/dist/client/assets/purescript-Bv-B8yRw.js +1 -0
- package/dist/client/assets/python-CKg5r0C3.js +1 -0
- package/dist/client/assets/qml-D_dvBZaF.js +1 -0
- package/dist/client/assets/qmldir-Cqfb4Lox.js +1 -0
- package/dist/client/assets/qss-Csho9BH8.js +1 -0
- package/dist/client/assets/r-Rc4jUIYO.js +1 -0
- package/dist/client/assets/racket-D8-uWeQH.js +1 -0
- package/dist/client/assets/raku-Cj4JSa8p.js +1 -0
- package/dist/client/assets/razor-BsODFDki.js +1 -0
- package/dist/client/assets/red-z4H4llUY.js +1 -0
- package/dist/client/assets/reg-DXGFiJSl.js +1 -0
- package/dist/client/assets/regexp-BOoAUrS9.js +1 -0
- package/dist/client/assets/rel-CunnVTBK.js +1 -0
- package/dist/client/assets/riscv-C8BcOCkS.js +1 -0
- package/dist/client/assets/ron-DiDyR9oa.js +1 -0
- package/dist/client/assets/rose-pine-BADquuIH.js +1 -0
- package/dist/client/assets/rose-pine-dawn-BLcEeBoh.js +1 -0
- package/dist/client/assets/rose-pine-moon-BK_tLY1Y.js +1 -0
- package/dist/client/assets/rosmsg-CHmL1Uyj.js +1 -0
- package/dist/client/assets/rst-CFqSixrQ.js +1 -0
- package/dist/client/assets/ruby-DruxM7j3.js +1 -0
- package/dist/client/assets/rust-DjJFInu3.js +1 -0
- package/dist/client/assets/sas-9ezihlhg.js +1 -0
- package/dist/client/assets/sass-D3xZ5o-v.js +1 -0
- package/dist/client/assets/scala-B0IRml5w.js +1 -0
- package/dist/client/assets/scheme-BhwcV3Av.js +1 -0
- package/dist/client/assets/scss-DaRc0sgN.js +1 -0
- package/dist/client/assets/sdbl-BmWYR-pI.js +1 -0
- package/dist/client/assets/shaderlab-DZ3Lsiak.js +1 -0
- package/dist/client/assets/shellscript-CgpTO8jG.js +1 -0
- package/dist/client/assets/shellsession-CEp5wnQf.js +1 -0
- package/dist/client/assets/slack-dark-DOnVms5P.js +1 -0
- package/dist/client/assets/slack-ochin-DcRTft4q.js +1 -0
- package/dist/client/assets/smalltalk-DVQuUMII.js +1 -0
- package/dist/client/assets/snazzy-light-x9CLJ1W9.js +1 -0
- package/dist/client/assets/solarized-dark-BB1sh-pe.js +1 -0
- package/dist/client/assets/solarized-light-9-RPS998.js +1 -0
- package/dist/client/assets/solidity-gQ4WXILB.js +1 -0
- package/dist/client/assets/soy-DpiTT9lw.js +1 -0
- package/dist/client/assets/sparql-B9c85a_o.js +1 -0
- package/dist/client/assets/splunk-OB48_RcD.js +1 -0
- package/dist/client/assets/sql-Cj08003o.js +1 -0
- package/dist/client/assets/ssh-config-DA9YMRGV.js +1 -0
- package/dist/client/assets/stata-C1C8gjmE.js +1 -0
- package/dist/client/assets/stylus-sKwvsUaC.js +1 -0
- package/dist/client/assets/surrealql-D3WNB1zi.js +1 -0
- package/dist/client/assets/svelte-CRTCy5cF.js +1 -0
- package/dist/client/assets/swift-C72NbAtg.js +1 -0
- package/dist/client/assets/synthwave-84-eJ9uRN_S.js +1 -0
- package/dist/client/assets/system-verilog-CnWMF7Nq.js +1 -0
- package/dist/client/assets/systemd-DMzItW5N.js +1 -0
- package/dist/client/assets/talonscript-DopQCWDL.js +1 -0
- package/dist/client/assets/tasl-C28SYKbq.js +1 -0
- package/dist/client/assets/tcl-DHq7zmoF.js +1 -0
- package/dist/client/assets/templ-DJVELIN0.js +1 -0
- package/dist/client/assets/terraform-CogS1YKX.js +1 -0
- package/dist/client/assets/tex-8Utzn7kP.js +1 -0
- package/dist/client/assets/tokyo-night-B9N7LyrF.js +1 -0
- package/dist/client/assets/toml-BH_iPsgK.js +1 -0
- package/dist/client/assets/ts-tags-BPvJMw5l.js +1 -0
- package/dist/client/assets/tsv-BIkdBZX1.js +1 -0
- package/dist/client/assets/tsx-Uh_IEmuF.js +1 -0
- package/dist/client/assets/turtle-CqNXyJWZ.js +1 -0
- package/dist/client/assets/twig-DYUvKiL4.js +1 -0
- package/dist/client/assets/typescript-Dn8z5BA2.js +1 -0
- package/dist/client/assets/typespec-CQ9LYD_e.js +1 -0
- package/dist/client/assets/typst-T-Fsk-Sv.js +1 -0
- package/dist/client/assets/v-BhMEOw9x.js +1 -0
- package/dist/client/assets/vala-DzajMnwt.js +1 -0
- package/dist/client/assets/vb-7Xr8dEYW.js +1 -0
- package/dist/client/assets/verilog-AvXtwZir.js +1 -0
- package/dist/client/assets/vesper-CtgQQ2sf.js +1 -0
- package/dist/client/assets/vhdl-BHu0zg1P.js +1 -0
- package/dist/client/assets/viml-Di0QpLfC.js +1 -0
- package/dist/client/assets/vitesse-black-jXdfyqgD.js +1 -0
- package/dist/client/assets/vitesse-dark-B88PxG1r.js +1 -0
- package/dist/client/assets/vitesse-light-BXxZh2iV.js +1 -0
- package/dist/client/assets/vue-DhBfq31H.js +1 -0
- package/dist/client/assets/vue-html-Ci6sYcW-.js +1 -0
- package/dist/client/assets/vue-vine-C0EXOTsm.js +1 -0
- package/dist/client/assets/vyper-C3R5yXgx.js +1 -0
- package/dist/client/assets/wasm-CEUrWlVz.js +1 -0
- package/dist/client/assets/wasm-Chsuwt1A.js +1 -0
- package/dist/client/assets/wenyan-BonVcr2i.js +1 -0
- package/dist/client/assets/wgsl-D59WYmNq.js +1 -0
- package/dist/client/assets/wikitext-ariTI2Wk.js +1 -0
- package/dist/client/assets/wit-EA4fa3Dt.js +1 -0
- package/dist/client/assets/wolfram-DDp7LhyU.js +1 -0
- package/dist/client/assets/worker-Dg3uKCvJ.js +160 -0
- package/dist/client/assets/xml-BjYkUQ28.js +1 -0
- package/dist/client/assets/xsl-DXmW0o9V.js +1 -0
- package/dist/client/assets/yaml-CXtTCTZr.js +1 -0
- package/dist/client/assets/zenscript-4WaROUyc.js +1 -0
- package/dist/client/assets/zig-CJoLJGwV.js +1 -0
- package/dist/client/favicon-16x16.png +0 -0
- package/dist/client/favicon-32x32.png +0 -0
- package/dist/client/favicon.ico +0 -0
- package/dist/client/icon-192.png +0 -0
- package/dist/client/icon-512.png +0 -0
- package/dist/client/index.html +29 -0
- package/dist/client/manifest.webmanifest +32 -0
- package/dist/client/mockServiceWorker.js +349 -0
- package/dist/client/pwa-version.json +3 -0
- package/dist/client/sw.js +20 -0
- package/dist/index.cjs +17460 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.mjs +17415 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +28 -0
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
const require_index = require('./index.cjs');
|
|
4
|
+
let effect_Effect = require("effect/Effect");
|
|
5
|
+
effect_Effect = require_index.__toESM(effect_Effect);
|
|
6
|
+
let effect_Layer = require("effect/Layer");
|
|
7
|
+
effect_Layer = require_index.__toESM(effect_Layer);
|
|
8
|
+
let effect_unstable_sql_SqlClient = require("effect/unstable/sql/SqlClient");
|
|
9
|
+
effect_unstable_sql_SqlClient = require_index.__toESM(effect_unstable_sql_SqlClient);
|
|
10
|
+
let effect_Semaphore = require("effect/Semaphore");
|
|
11
|
+
effect_Semaphore = require_index.__toESM(effect_Semaphore);
|
|
12
|
+
let node_sqlite = require("node:sqlite");
|
|
13
|
+
let effect_Cache = require("effect/Cache");
|
|
14
|
+
effect_Cache = require_index.__toESM(effect_Cache);
|
|
15
|
+
let effect_Config = require("effect/Config");
|
|
16
|
+
effect_Config = require_index.__toESM(effect_Config);
|
|
17
|
+
let effect_Duration = require("effect/Duration");
|
|
18
|
+
effect_Duration = require_index.__toESM(effect_Duration);
|
|
19
|
+
let effect_Fiber = require("effect/Fiber");
|
|
20
|
+
effect_Fiber = require_index.__toESM(effect_Fiber);
|
|
21
|
+
let effect_Function = require("effect/Function");
|
|
22
|
+
let effect_Scope = require("effect/Scope");
|
|
23
|
+
effect_Scope = require_index.__toESM(effect_Scope);
|
|
24
|
+
let effect_ServiceMap = require("effect/ServiceMap");
|
|
25
|
+
effect_ServiceMap = require_index.__toESM(effect_ServiceMap);
|
|
26
|
+
let effect_Stream = require("effect/Stream");
|
|
27
|
+
effect_Stream = require_index.__toESM(effect_Stream);
|
|
28
|
+
let effect_unstable_reactivity_Reactivity = require("effect/unstable/reactivity/Reactivity");
|
|
29
|
+
effect_unstable_reactivity_Reactivity = require_index.__toESM(effect_unstable_reactivity_Reactivity);
|
|
30
|
+
let effect_unstable_sql_SqlError = require("effect/unstable/sql/SqlError");
|
|
31
|
+
let effect_unstable_sql_Statement = require("effect/unstable/sql/Statement");
|
|
32
|
+
effect_unstable_sql_Statement = require_index.__toESM(effect_unstable_sql_Statement);
|
|
33
|
+
|
|
34
|
+
//#region src/persistence/NodeSqliteClient.ts
|
|
35
|
+
/**
|
|
36
|
+
* Port of `@effect/sql-sqlite-node` that uses the native `node:sqlite`
|
|
37
|
+
* bindings instead of `better-sqlite3`.
|
|
38
|
+
*
|
|
39
|
+
* @module SqliteClient
|
|
40
|
+
*/
|
|
41
|
+
const ATTR_DB_SYSTEM_NAME = "db.system.name";
|
|
42
|
+
const TypeId = "~local/sqlite-node/SqliteClient";
|
|
43
|
+
/**
|
|
44
|
+
* SqliteClient - Effect service tag for the sqlite SQL client.
|
|
45
|
+
*/
|
|
46
|
+
const SqliteClient = effect_ServiceMap.Service("t3/persistence/NodeSqliteClient");
|
|
47
|
+
const makeWithDatabase = (options, openDatabase) => effect_Effect.gen(function* () {
|
|
48
|
+
const compiler = effect_unstable_sql_Statement.makeCompilerSqlite(options.transformQueryNames);
|
|
49
|
+
const transformRows = options.transformResultNames ? effect_unstable_sql_Statement.defaultTransforms(options.transformResultNames).array : void 0;
|
|
50
|
+
const makeConnection = effect_Effect.gen(function* () {
|
|
51
|
+
const scope = yield* effect_Effect.scope;
|
|
52
|
+
const db = openDatabase();
|
|
53
|
+
yield* effect_Scope.addFinalizer(scope, effect_Effect.sync(() => db.close()));
|
|
54
|
+
const statementReaderCache = /* @__PURE__ */ new WeakMap();
|
|
55
|
+
const hasRows = (statement) => {
|
|
56
|
+
const cached = statementReaderCache.get(statement);
|
|
57
|
+
if (cached !== void 0) return cached;
|
|
58
|
+
const value = statement.columns().length > 0;
|
|
59
|
+
statementReaderCache.set(statement, value);
|
|
60
|
+
return value;
|
|
61
|
+
};
|
|
62
|
+
const prepareCache = yield* effect_Cache.make({
|
|
63
|
+
capacity: options.prepareCacheSize ?? 200,
|
|
64
|
+
timeToLive: options.prepareCacheTTL ?? effect_Duration.minutes(10),
|
|
65
|
+
lookup: (sql) => effect_Effect.try({
|
|
66
|
+
try: () => db.prepare(sql),
|
|
67
|
+
catch: (cause) => new effect_unstable_sql_SqlError.SqlError({
|
|
68
|
+
cause,
|
|
69
|
+
message: "Failed to prepare statement"
|
|
70
|
+
})
|
|
71
|
+
})
|
|
72
|
+
});
|
|
73
|
+
const runStatement = (statement, params, raw) => effect_Effect.withFiber((fiber) => {
|
|
74
|
+
statement.setReadBigInts(Boolean(effect_ServiceMap.get(fiber.services, effect_unstable_sql_SqlClient.SafeIntegers)));
|
|
75
|
+
try {
|
|
76
|
+
if (hasRows(statement)) return effect_Effect.succeed(statement.all(...params));
|
|
77
|
+
const result = statement.run(...params);
|
|
78
|
+
return effect_Effect.succeed(raw ? result : []);
|
|
79
|
+
} catch (cause) {
|
|
80
|
+
return effect_Effect.fail(new effect_unstable_sql_SqlError.SqlError({
|
|
81
|
+
cause,
|
|
82
|
+
message: "Failed to execute statement"
|
|
83
|
+
}));
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
const run = (sql, params, raw = false) => effect_Effect.flatMap(effect_Cache.get(prepareCache, sql), (s) => runStatement(s, params, raw));
|
|
87
|
+
const runValues = (sql, params) => effect_Effect.acquireUseRelease(effect_Cache.get(prepareCache, sql), (statement) => effect_Effect.try({
|
|
88
|
+
try: () => {
|
|
89
|
+
if (hasRows(statement)) {
|
|
90
|
+
statement.setReturnArrays(true);
|
|
91
|
+
return statement.all(...params);
|
|
92
|
+
}
|
|
93
|
+
statement.run(...params);
|
|
94
|
+
return [];
|
|
95
|
+
},
|
|
96
|
+
catch: (cause) => new effect_unstable_sql_SqlError.SqlError({
|
|
97
|
+
cause,
|
|
98
|
+
message: "Failed to execute statement"
|
|
99
|
+
})
|
|
100
|
+
}), (statement) => effect_Effect.sync(() => {
|
|
101
|
+
if (hasRows(statement)) statement.setReturnArrays(false);
|
|
102
|
+
}));
|
|
103
|
+
return (0, effect_Function.identity)({
|
|
104
|
+
execute(sql, params, rowTransform) {
|
|
105
|
+
return rowTransform ? effect_Effect.map(run(sql, params), rowTransform) : run(sql, params);
|
|
106
|
+
},
|
|
107
|
+
executeRaw(sql, params) {
|
|
108
|
+
return run(sql, params, true);
|
|
109
|
+
},
|
|
110
|
+
executeValues(sql, params) {
|
|
111
|
+
return runValues(sql, params);
|
|
112
|
+
},
|
|
113
|
+
executeUnprepared(sql, params, rowTransform) {
|
|
114
|
+
const effect = runStatement(db.prepare(sql), params ?? [], false);
|
|
115
|
+
return rowTransform ? effect_Effect.map(effect, rowTransform) : effect;
|
|
116
|
+
},
|
|
117
|
+
executeStream(_sql, _params) {
|
|
118
|
+
return effect_Stream.die("executeStream not implemented");
|
|
119
|
+
}
|
|
120
|
+
});
|
|
121
|
+
});
|
|
122
|
+
const semaphore = yield* effect_Semaphore.make(1);
|
|
123
|
+
const connection = yield* makeConnection;
|
|
124
|
+
const acquirer = semaphore.withPermits(1)(effect_Effect.succeed(connection));
|
|
125
|
+
const transactionAcquirer = effect_Effect.uninterruptibleMask((restore) => {
|
|
126
|
+
const fiber = effect_Fiber.getCurrent();
|
|
127
|
+
const scope = effect_ServiceMap.getUnsafe(fiber.services, effect_Scope.Scope);
|
|
128
|
+
return effect_Effect.as(effect_Effect.tap(restore(semaphore.take(1)), () => effect_Scope.addFinalizer(scope, semaphore.release(1))), connection);
|
|
129
|
+
});
|
|
130
|
+
return yield* effect_unstable_sql_SqlClient.make({
|
|
131
|
+
acquirer,
|
|
132
|
+
compiler,
|
|
133
|
+
transactionAcquirer,
|
|
134
|
+
spanAttributes: [...options.spanAttributes ? Object.entries(options.spanAttributes) : [], [ATTR_DB_SYSTEM_NAME, "sqlite"]],
|
|
135
|
+
transformRows
|
|
136
|
+
});
|
|
137
|
+
});
|
|
138
|
+
const make = (options) => makeWithDatabase(options, () => new node_sqlite.DatabaseSync(options.filename, {
|
|
139
|
+
readOnly: options.readonly ?? false,
|
|
140
|
+
allowExtension: options.allowExtension ?? false
|
|
141
|
+
}));
|
|
142
|
+
const makeMemory = (config = {}) => makeWithDatabase({
|
|
143
|
+
...config,
|
|
144
|
+
filename: ":memory:",
|
|
145
|
+
readonly: false
|
|
146
|
+
}, () => {
|
|
147
|
+
return new node_sqlite.DatabaseSync(":memory:", { allowExtension: config.allowExtension ?? false });
|
|
148
|
+
});
|
|
149
|
+
const layerConfig = (config) => effect_Layer.effectServices(effect_Config.unwrap(config).asEffect().pipe(effect_Effect.flatMap(make), effect_Effect.map((client) => effect_ServiceMap.make(SqliteClient, client).pipe(effect_ServiceMap.add(effect_unstable_sql_SqlClient.SqlClient, client))))).pipe(effect_Layer.provide(effect_unstable_reactivity_Reactivity.layer));
|
|
150
|
+
const layer = (config) => effect_Layer.effectServices(effect_Effect.map(make(config), (client) => effect_ServiceMap.make(SqliteClient, client).pipe(effect_ServiceMap.add(effect_unstable_sql_SqlClient.SqlClient, client)))).pipe(effect_Layer.provide(effect_unstable_reactivity_Reactivity.layer));
|
|
151
|
+
const layerMemory = (config = {}) => effect_Layer.effectServices(effect_Effect.map(makeMemory(config), (client) => effect_ServiceMap.make(SqliteClient, client).pipe(effect_ServiceMap.add(effect_unstable_sql_SqlClient.SqlClient, client)))).pipe(effect_Layer.provide(effect_unstable_reactivity_Reactivity.layer));
|
|
152
|
+
|
|
153
|
+
//#endregion
|
|
154
|
+
exports.SqliteClient = SqliteClient;
|
|
155
|
+
exports.TypeId = TypeId;
|
|
156
|
+
exports.layer = layer;
|
|
157
|
+
exports.layerConfig = layerConfig;
|
|
158
|
+
exports.layerMemory = layerMemory;
|
|
159
|
+
//# sourceMappingURL=NodeSqliteClient-BgRtZPGk.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NodeSqliteClient-BgRtZPGk.cjs","names":["ServiceMap","Effect","Statement","Scope","Cache","Duration","SqlError","Client","Stream","Semaphore","Fiber","DatabaseSync","Layer","Config","Reactivity"],"sources":["../src/persistence/NodeSqliteClient.ts"],"sourcesContent":["/**\n * Port of `@effect/sql-sqlite-node` that uses the native `node:sqlite`\n * bindings instead of `better-sqlite3`.\n *\n * @module SqliteClient\n */\nimport { DatabaseSync, type StatementSync } from \"node:sqlite\";\n\nimport * as Cache from \"effect/Cache\";\nimport * as Config from \"effect/Config\";\nimport * as Duration from \"effect/Duration\";\nimport * as Effect from \"effect/Effect\";\nimport * as Fiber from \"effect/Fiber\";\nimport { identity } from \"effect/Function\";\nimport * as Layer from \"effect/Layer\";\nimport * as Scope from \"effect/Scope\";\nimport * as Semaphore from \"effect/Semaphore\";\nimport * as ServiceMap from \"effect/ServiceMap\";\nimport * as Stream from \"effect/Stream\";\nimport * as Reactivity from \"effect/unstable/reactivity/Reactivity\";\nimport * as Client from \"effect/unstable/sql/SqlClient\";\nimport type { Connection } from \"effect/unstable/sql/SqlConnection\";\nimport { SqlError } from \"effect/unstable/sql/SqlError\";\nimport * as Statement from \"effect/unstable/sql/Statement\";\n\nconst ATTR_DB_SYSTEM_NAME = \"db.system.name\";\n\nexport const TypeId: TypeId = \"~local/sqlite-node/SqliteClient\";\n\nexport type TypeId = \"~local/sqlite-node/SqliteClient\";\n\n/**\n * SqliteClient - Effect service tag for the sqlite SQL client.\n */\nexport const SqliteClient = ServiceMap.Service<Client.SqlClient>(\"t3/persistence/NodeSqliteClient\");\n\nexport interface SqliteClientConfig {\n readonly filename: string;\n readonly readonly?: boolean | undefined;\n readonly allowExtension?: boolean | undefined;\n readonly prepareCacheSize?: number | undefined;\n readonly prepareCacheTTL?: Duration.Input | undefined;\n readonly spanAttributes?: Record<string, unknown> | undefined;\n readonly transformResultNames?: ((str: string) => string) | undefined;\n readonly transformQueryNames?: ((str: string) => string) | undefined;\n}\n\nexport interface SqliteMemoryClientConfig extends Omit<\n SqliteClientConfig,\n \"filename\" | \"readonly\"\n> {}\n\nconst makeWithDatabase = (\n options: SqliteClientConfig,\n openDatabase: () => DatabaseSync,\n): Effect.Effect<Client.SqlClient, never, Scope.Scope | Reactivity.Reactivity> =>\n Effect.gen(function* () {\n const compiler = Statement.makeCompilerSqlite(options.transformQueryNames);\n const transformRows = options.transformResultNames\n ? Statement.defaultTransforms(options.transformResultNames).array\n : undefined;\n\n const makeConnection = Effect.gen(function* () {\n const scope = yield* Effect.scope;\n const db = openDatabase();\n yield* Scope.addFinalizer(\n scope,\n Effect.sync(() => db.close()),\n );\n\n const statementReaderCache = new WeakMap<StatementSync, boolean>();\n const hasRows = (statement: StatementSync): boolean => {\n const cached = statementReaderCache.get(statement);\n if (cached !== undefined) {\n return cached;\n }\n const value = statement.columns().length > 0;\n statementReaderCache.set(statement, value);\n return value;\n };\n\n const prepareCache = yield* Cache.make({\n capacity: options.prepareCacheSize ?? 200,\n timeToLive: options.prepareCacheTTL ?? Duration.minutes(10),\n lookup: (sql: string) =>\n Effect.try({\n try: () => db.prepare(sql),\n catch: (cause) => new SqlError({ cause, message: \"Failed to prepare statement\" }),\n }),\n });\n\n const runStatement = (\n statement: StatementSync,\n params: ReadonlyArray<unknown>,\n raw: boolean,\n ) =>\n Effect.withFiber<ReadonlyArray<any>, SqlError>((fiber) => {\n statement.setReadBigInts(Boolean(ServiceMap.get(fiber.services, Client.SafeIntegers)));\n try {\n if (hasRows(statement)) {\n return Effect.succeed(statement.all(...(params as any)));\n }\n const result = statement.run(...(params as any));\n return Effect.succeed(raw ? (result as unknown as ReadonlyArray<any>) : []);\n } catch (cause) {\n return Effect.fail(new SqlError({ cause, message: \"Failed to execute statement\" }));\n }\n });\n\n const run = (sql: string, params: ReadonlyArray<unknown>, raw = false) =>\n Effect.flatMap(Cache.get(prepareCache, sql), (s) => runStatement(s, params, raw));\n\n const runValues = (sql: string, params: ReadonlyArray<unknown>) =>\n Effect.acquireUseRelease(\n Cache.get(prepareCache, sql),\n (statement) =>\n Effect.try({\n try: () => {\n if (hasRows(statement)) {\n statement.setReturnArrays(true);\n // Safe to cast to array after we've setReturnArrays(true)\n return statement.all(...(params as any)) as unknown as ReadonlyArray<\n ReadonlyArray<unknown>\n >;\n }\n statement.run(...(params as any));\n return [];\n },\n catch: (cause) => new SqlError({ cause, message: \"Failed to execute statement\" }),\n }),\n (statement) =>\n Effect.sync(() => {\n if (hasRows(statement)) {\n statement.setReturnArrays(false);\n }\n }),\n );\n\n return identity<Connection>({\n execute(sql, params, rowTransform) {\n return rowTransform ? Effect.map(run(sql, params), rowTransform) : run(sql, params);\n },\n executeRaw(sql, params) {\n return run(sql, params, true);\n },\n executeValues(sql, params) {\n return runValues(sql, params);\n },\n executeUnprepared(sql, params, rowTransform) {\n const effect = runStatement(db.prepare(sql), params ?? [], false);\n return rowTransform ? Effect.map(effect, rowTransform) : effect;\n },\n executeStream(_sql, _params) {\n return Stream.die(\"executeStream not implemented\");\n },\n });\n });\n\n const semaphore = yield* Semaphore.make(1);\n const connection = yield* makeConnection;\n\n const acquirer = semaphore.withPermits(1)(Effect.succeed(connection));\n const transactionAcquirer = Effect.uninterruptibleMask((restore) => {\n const fiber = Fiber.getCurrent()!;\n const scope = ServiceMap.getUnsafe(fiber.services, Scope.Scope);\n return Effect.as(\n Effect.tap(restore(semaphore.take(1)), () =>\n Scope.addFinalizer(scope, semaphore.release(1)),\n ),\n connection,\n );\n });\n\n return yield* Client.make({\n acquirer,\n compiler,\n transactionAcquirer,\n spanAttributes: [\n ...(options.spanAttributes ? Object.entries(options.spanAttributes) : []),\n [ATTR_DB_SYSTEM_NAME, \"sqlite\"],\n ],\n transformRows,\n });\n });\n\nconst make = (\n options: SqliteClientConfig,\n): Effect.Effect<Client.SqlClient, never, Scope.Scope | Reactivity.Reactivity> =>\n makeWithDatabase(\n options,\n () =>\n new DatabaseSync(options.filename, {\n readOnly: options.readonly ?? false,\n allowExtension: options.allowExtension ?? false,\n }),\n );\n\nconst makeMemory = (\n config: SqliteMemoryClientConfig = {},\n): Effect.Effect<Client.SqlClient, never, Scope.Scope | Reactivity.Reactivity> =>\n makeWithDatabase(\n {\n ...config,\n filename: \":memory:\",\n readonly: false,\n },\n () => {\n const database = new DatabaseSync(\":memory:\", {\n allowExtension: config.allowExtension ?? false,\n });\n return database;\n },\n );\n\nexport const layerConfig = (\n config: Config.Wrap<SqliteClientConfig>,\n): Layer.Layer<Client.SqlClient, Config.ConfigError> =>\n Layer.effectServices(\n Config.unwrap(config)\n .asEffect()\n .pipe(\n Effect.flatMap(make),\n Effect.map((client) =>\n ServiceMap.make(SqliteClient, client).pipe(ServiceMap.add(Client.SqlClient, client)),\n ),\n ),\n ).pipe(Layer.provide(Reactivity.layer));\n\nexport const layer = (config: SqliteClientConfig): Layer.Layer<Client.SqlClient> =>\n Layer.effectServices(\n Effect.map(make(config), (client) =>\n ServiceMap.make(SqliteClient, client).pipe(ServiceMap.add(Client.SqlClient, client)),\n ),\n ).pipe(Layer.provide(Reactivity.layer));\n\nexport const layerMemory = (config: SqliteMemoryClientConfig = {}): Layer.Layer<Client.SqlClient> =>\n Layer.effectServices(\n Effect.map(makeMemory(config), (client) =>\n ServiceMap.make(SqliteClient, client).pipe(ServiceMap.add(Client.SqlClient, client)),\n ),\n ).pipe(Layer.provide(Reactivity.layer));\n"],"mappings":"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"}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
import * as Effect from "effect/Effect";
|
|
4
|
+
import * as Layer from "effect/Layer";
|
|
5
|
+
import * as Client from "effect/unstable/sql/SqlClient";
|
|
6
|
+
import * as Semaphore from "effect/Semaphore";
|
|
7
|
+
import { DatabaseSync } from "node:sqlite";
|
|
8
|
+
import * as Cache from "effect/Cache";
|
|
9
|
+
import * as Config from "effect/Config";
|
|
10
|
+
import * as Duration from "effect/Duration";
|
|
11
|
+
import * as Fiber from "effect/Fiber";
|
|
12
|
+
import { identity } from "effect/Function";
|
|
13
|
+
import * as Scope from "effect/Scope";
|
|
14
|
+
import * as ServiceMap from "effect/ServiceMap";
|
|
15
|
+
import * as Stream from "effect/Stream";
|
|
16
|
+
import * as Reactivity from "effect/unstable/reactivity/Reactivity";
|
|
17
|
+
import { SqlError } from "effect/unstable/sql/SqlError";
|
|
18
|
+
import * as Statement from "effect/unstable/sql/Statement";
|
|
19
|
+
|
|
20
|
+
//#region src/persistence/NodeSqliteClient.ts
|
|
21
|
+
/**
|
|
22
|
+
* Port of `@effect/sql-sqlite-node` that uses the native `node:sqlite`
|
|
23
|
+
* bindings instead of `better-sqlite3`.
|
|
24
|
+
*
|
|
25
|
+
* @module SqliteClient
|
|
26
|
+
*/
|
|
27
|
+
const ATTR_DB_SYSTEM_NAME = "db.system.name";
|
|
28
|
+
const TypeId = "~local/sqlite-node/SqliteClient";
|
|
29
|
+
/**
|
|
30
|
+
* SqliteClient - Effect service tag for the sqlite SQL client.
|
|
31
|
+
*/
|
|
32
|
+
const SqliteClient = ServiceMap.Service("t3/persistence/NodeSqliteClient");
|
|
33
|
+
const makeWithDatabase = (options, openDatabase) => Effect.gen(function* () {
|
|
34
|
+
const compiler = Statement.makeCompilerSqlite(options.transformQueryNames);
|
|
35
|
+
const transformRows = options.transformResultNames ? Statement.defaultTransforms(options.transformResultNames).array : void 0;
|
|
36
|
+
const makeConnection = Effect.gen(function* () {
|
|
37
|
+
const scope = yield* Effect.scope;
|
|
38
|
+
const db = openDatabase();
|
|
39
|
+
yield* Scope.addFinalizer(scope, Effect.sync(() => db.close()));
|
|
40
|
+
const statementReaderCache = /* @__PURE__ */ new WeakMap();
|
|
41
|
+
const hasRows = (statement) => {
|
|
42
|
+
const cached = statementReaderCache.get(statement);
|
|
43
|
+
if (cached !== void 0) return cached;
|
|
44
|
+
const value = statement.columns().length > 0;
|
|
45
|
+
statementReaderCache.set(statement, value);
|
|
46
|
+
return value;
|
|
47
|
+
};
|
|
48
|
+
const prepareCache = yield* Cache.make({
|
|
49
|
+
capacity: options.prepareCacheSize ?? 200,
|
|
50
|
+
timeToLive: options.prepareCacheTTL ?? Duration.minutes(10),
|
|
51
|
+
lookup: (sql) => Effect.try({
|
|
52
|
+
try: () => db.prepare(sql),
|
|
53
|
+
catch: (cause) => new SqlError({
|
|
54
|
+
cause,
|
|
55
|
+
message: "Failed to prepare statement"
|
|
56
|
+
})
|
|
57
|
+
})
|
|
58
|
+
});
|
|
59
|
+
const runStatement = (statement, params, raw) => Effect.withFiber((fiber) => {
|
|
60
|
+
statement.setReadBigInts(Boolean(ServiceMap.get(fiber.services, Client.SafeIntegers)));
|
|
61
|
+
try {
|
|
62
|
+
if (hasRows(statement)) return Effect.succeed(statement.all(...params));
|
|
63
|
+
const result = statement.run(...params);
|
|
64
|
+
return Effect.succeed(raw ? result : []);
|
|
65
|
+
} catch (cause) {
|
|
66
|
+
return Effect.fail(new SqlError({
|
|
67
|
+
cause,
|
|
68
|
+
message: "Failed to execute statement"
|
|
69
|
+
}));
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
const run = (sql, params, raw = false) => Effect.flatMap(Cache.get(prepareCache, sql), (s) => runStatement(s, params, raw));
|
|
73
|
+
const runValues = (sql, params) => Effect.acquireUseRelease(Cache.get(prepareCache, sql), (statement) => Effect.try({
|
|
74
|
+
try: () => {
|
|
75
|
+
if (hasRows(statement)) {
|
|
76
|
+
statement.setReturnArrays(true);
|
|
77
|
+
return statement.all(...params);
|
|
78
|
+
}
|
|
79
|
+
statement.run(...params);
|
|
80
|
+
return [];
|
|
81
|
+
},
|
|
82
|
+
catch: (cause) => new SqlError({
|
|
83
|
+
cause,
|
|
84
|
+
message: "Failed to execute statement"
|
|
85
|
+
})
|
|
86
|
+
}), (statement) => Effect.sync(() => {
|
|
87
|
+
if (hasRows(statement)) statement.setReturnArrays(false);
|
|
88
|
+
}));
|
|
89
|
+
return identity({
|
|
90
|
+
execute(sql, params, rowTransform) {
|
|
91
|
+
return rowTransform ? Effect.map(run(sql, params), rowTransform) : run(sql, params);
|
|
92
|
+
},
|
|
93
|
+
executeRaw(sql, params) {
|
|
94
|
+
return run(sql, params, true);
|
|
95
|
+
},
|
|
96
|
+
executeValues(sql, params) {
|
|
97
|
+
return runValues(sql, params);
|
|
98
|
+
},
|
|
99
|
+
executeUnprepared(sql, params, rowTransform) {
|
|
100
|
+
const effect = runStatement(db.prepare(sql), params ?? [], false);
|
|
101
|
+
return rowTransform ? Effect.map(effect, rowTransform) : effect;
|
|
102
|
+
},
|
|
103
|
+
executeStream(_sql, _params) {
|
|
104
|
+
return Stream.die("executeStream not implemented");
|
|
105
|
+
}
|
|
106
|
+
});
|
|
107
|
+
});
|
|
108
|
+
const semaphore = yield* Semaphore.make(1);
|
|
109
|
+
const connection = yield* makeConnection;
|
|
110
|
+
const acquirer = semaphore.withPermits(1)(Effect.succeed(connection));
|
|
111
|
+
const transactionAcquirer = Effect.uninterruptibleMask((restore) => {
|
|
112
|
+
const fiber = Fiber.getCurrent();
|
|
113
|
+
const scope = ServiceMap.getUnsafe(fiber.services, Scope.Scope);
|
|
114
|
+
return Effect.as(Effect.tap(restore(semaphore.take(1)), () => Scope.addFinalizer(scope, semaphore.release(1))), connection);
|
|
115
|
+
});
|
|
116
|
+
return yield* Client.make({
|
|
117
|
+
acquirer,
|
|
118
|
+
compiler,
|
|
119
|
+
transactionAcquirer,
|
|
120
|
+
spanAttributes: [...options.spanAttributes ? Object.entries(options.spanAttributes) : [], [ATTR_DB_SYSTEM_NAME, "sqlite"]],
|
|
121
|
+
transformRows
|
|
122
|
+
});
|
|
123
|
+
});
|
|
124
|
+
const make = (options) => makeWithDatabase(options, () => new DatabaseSync(options.filename, {
|
|
125
|
+
readOnly: options.readonly ?? false,
|
|
126
|
+
allowExtension: options.allowExtension ?? false
|
|
127
|
+
}));
|
|
128
|
+
const makeMemory = (config = {}) => makeWithDatabase({
|
|
129
|
+
...config,
|
|
130
|
+
filename: ":memory:",
|
|
131
|
+
readonly: false
|
|
132
|
+
}, () => {
|
|
133
|
+
return new DatabaseSync(":memory:", { allowExtension: config.allowExtension ?? false });
|
|
134
|
+
});
|
|
135
|
+
const layerConfig = (config) => Layer.effectServices(Config.unwrap(config).asEffect().pipe(Effect.flatMap(make), Effect.map((client) => ServiceMap.make(SqliteClient, client).pipe(ServiceMap.add(Client.SqlClient, client))))).pipe(Layer.provide(Reactivity.layer));
|
|
136
|
+
const layer = (config) => Layer.effectServices(Effect.map(make(config), (client) => ServiceMap.make(SqliteClient, client).pipe(ServiceMap.add(Client.SqlClient, client)))).pipe(Layer.provide(Reactivity.layer));
|
|
137
|
+
const layerMemory = (config = {}) => Layer.effectServices(Effect.map(makeMemory(config), (client) => ServiceMap.make(SqliteClient, client).pipe(ServiceMap.add(Client.SqlClient, client)))).pipe(Layer.provide(Reactivity.layer));
|
|
138
|
+
|
|
139
|
+
//#endregion
|
|
140
|
+
export { SqliteClient, TypeId, layer, layerConfig, layerMemory };
|
|
141
|
+
//# sourceMappingURL=NodeSqliteClient-HpJMkQ8C.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NodeSqliteClient-HpJMkQ8C.mjs","names":[],"sources":["../src/persistence/NodeSqliteClient.ts"],"sourcesContent":["/**\n * Port of `@effect/sql-sqlite-node` that uses the native `node:sqlite`\n * bindings instead of `better-sqlite3`.\n *\n * @module SqliteClient\n */\nimport { DatabaseSync, type StatementSync } from \"node:sqlite\";\n\nimport * as Cache from \"effect/Cache\";\nimport * as Config from \"effect/Config\";\nimport * as Duration from \"effect/Duration\";\nimport * as Effect from \"effect/Effect\";\nimport * as Fiber from \"effect/Fiber\";\nimport { identity } from \"effect/Function\";\nimport * as Layer from \"effect/Layer\";\nimport * as Scope from \"effect/Scope\";\nimport * as Semaphore from \"effect/Semaphore\";\nimport * as ServiceMap from \"effect/ServiceMap\";\nimport * as Stream from \"effect/Stream\";\nimport * as Reactivity from \"effect/unstable/reactivity/Reactivity\";\nimport * as Client from \"effect/unstable/sql/SqlClient\";\nimport type { Connection } from \"effect/unstable/sql/SqlConnection\";\nimport { SqlError } from \"effect/unstable/sql/SqlError\";\nimport * as Statement from \"effect/unstable/sql/Statement\";\n\nconst ATTR_DB_SYSTEM_NAME = \"db.system.name\";\n\nexport const TypeId: TypeId = \"~local/sqlite-node/SqliteClient\";\n\nexport type TypeId = \"~local/sqlite-node/SqliteClient\";\n\n/**\n * SqliteClient - Effect service tag for the sqlite SQL client.\n */\nexport const SqliteClient = ServiceMap.Service<Client.SqlClient>(\"t3/persistence/NodeSqliteClient\");\n\nexport interface SqliteClientConfig {\n readonly filename: string;\n readonly readonly?: boolean | undefined;\n readonly allowExtension?: boolean | undefined;\n readonly prepareCacheSize?: number | undefined;\n readonly prepareCacheTTL?: Duration.Input | undefined;\n readonly spanAttributes?: Record<string, unknown> | undefined;\n readonly transformResultNames?: ((str: string) => string) | undefined;\n readonly transformQueryNames?: ((str: string) => string) | undefined;\n}\n\nexport interface SqliteMemoryClientConfig extends Omit<\n SqliteClientConfig,\n \"filename\" | \"readonly\"\n> {}\n\nconst makeWithDatabase = (\n options: SqliteClientConfig,\n openDatabase: () => DatabaseSync,\n): Effect.Effect<Client.SqlClient, never, Scope.Scope | Reactivity.Reactivity> =>\n Effect.gen(function* () {\n const compiler = Statement.makeCompilerSqlite(options.transformQueryNames);\n const transformRows = options.transformResultNames\n ? Statement.defaultTransforms(options.transformResultNames).array\n : undefined;\n\n const makeConnection = Effect.gen(function* () {\n const scope = yield* Effect.scope;\n const db = openDatabase();\n yield* Scope.addFinalizer(\n scope,\n Effect.sync(() => db.close()),\n );\n\n const statementReaderCache = new WeakMap<StatementSync, boolean>();\n const hasRows = (statement: StatementSync): boolean => {\n const cached = statementReaderCache.get(statement);\n if (cached !== undefined) {\n return cached;\n }\n const value = statement.columns().length > 0;\n statementReaderCache.set(statement, value);\n return value;\n };\n\n const prepareCache = yield* Cache.make({\n capacity: options.prepareCacheSize ?? 200,\n timeToLive: options.prepareCacheTTL ?? Duration.minutes(10),\n lookup: (sql: string) =>\n Effect.try({\n try: () => db.prepare(sql),\n catch: (cause) => new SqlError({ cause, message: \"Failed to prepare statement\" }),\n }),\n });\n\n const runStatement = (\n statement: StatementSync,\n params: ReadonlyArray<unknown>,\n raw: boolean,\n ) =>\n Effect.withFiber<ReadonlyArray<any>, SqlError>((fiber) => {\n statement.setReadBigInts(Boolean(ServiceMap.get(fiber.services, Client.SafeIntegers)));\n try {\n if (hasRows(statement)) {\n return Effect.succeed(statement.all(...(params as any)));\n }\n const result = statement.run(...(params as any));\n return Effect.succeed(raw ? (result as unknown as ReadonlyArray<any>) : []);\n } catch (cause) {\n return Effect.fail(new SqlError({ cause, message: \"Failed to execute statement\" }));\n }\n });\n\n const run = (sql: string, params: ReadonlyArray<unknown>, raw = false) =>\n Effect.flatMap(Cache.get(prepareCache, sql), (s) => runStatement(s, params, raw));\n\n const runValues = (sql: string, params: ReadonlyArray<unknown>) =>\n Effect.acquireUseRelease(\n Cache.get(prepareCache, sql),\n (statement) =>\n Effect.try({\n try: () => {\n if (hasRows(statement)) {\n statement.setReturnArrays(true);\n // Safe to cast to array after we've setReturnArrays(true)\n return statement.all(...(params as any)) as unknown as ReadonlyArray<\n ReadonlyArray<unknown>\n >;\n }\n statement.run(...(params as any));\n return [];\n },\n catch: (cause) => new SqlError({ cause, message: \"Failed to execute statement\" }),\n }),\n (statement) =>\n Effect.sync(() => {\n if (hasRows(statement)) {\n statement.setReturnArrays(false);\n }\n }),\n );\n\n return identity<Connection>({\n execute(sql, params, rowTransform) {\n return rowTransform ? Effect.map(run(sql, params), rowTransform) : run(sql, params);\n },\n executeRaw(sql, params) {\n return run(sql, params, true);\n },\n executeValues(sql, params) {\n return runValues(sql, params);\n },\n executeUnprepared(sql, params, rowTransform) {\n const effect = runStatement(db.prepare(sql), params ?? [], false);\n return rowTransform ? Effect.map(effect, rowTransform) : effect;\n },\n executeStream(_sql, _params) {\n return Stream.die(\"executeStream not implemented\");\n },\n });\n });\n\n const semaphore = yield* Semaphore.make(1);\n const connection = yield* makeConnection;\n\n const acquirer = semaphore.withPermits(1)(Effect.succeed(connection));\n const transactionAcquirer = Effect.uninterruptibleMask((restore) => {\n const fiber = Fiber.getCurrent()!;\n const scope = ServiceMap.getUnsafe(fiber.services, Scope.Scope);\n return Effect.as(\n Effect.tap(restore(semaphore.take(1)), () =>\n Scope.addFinalizer(scope, semaphore.release(1)),\n ),\n connection,\n );\n });\n\n return yield* Client.make({\n acquirer,\n compiler,\n transactionAcquirer,\n spanAttributes: [\n ...(options.spanAttributes ? Object.entries(options.spanAttributes) : []),\n [ATTR_DB_SYSTEM_NAME, \"sqlite\"],\n ],\n transformRows,\n });\n });\n\nconst make = (\n options: SqliteClientConfig,\n): Effect.Effect<Client.SqlClient, never, Scope.Scope | Reactivity.Reactivity> =>\n makeWithDatabase(\n options,\n () =>\n new DatabaseSync(options.filename, {\n readOnly: options.readonly ?? false,\n allowExtension: options.allowExtension ?? false,\n }),\n );\n\nconst makeMemory = (\n config: SqliteMemoryClientConfig = {},\n): Effect.Effect<Client.SqlClient, never, Scope.Scope | Reactivity.Reactivity> =>\n makeWithDatabase(\n {\n ...config,\n filename: \":memory:\",\n readonly: false,\n },\n () => {\n const database = new DatabaseSync(\":memory:\", {\n allowExtension: config.allowExtension ?? false,\n });\n return database;\n },\n );\n\nexport const layerConfig = (\n config: Config.Wrap<SqliteClientConfig>,\n): Layer.Layer<Client.SqlClient, Config.ConfigError> =>\n Layer.effectServices(\n Config.unwrap(config)\n .asEffect()\n .pipe(\n Effect.flatMap(make),\n Effect.map((client) =>\n ServiceMap.make(SqliteClient, client).pipe(ServiceMap.add(Client.SqlClient, client)),\n ),\n ),\n ).pipe(Layer.provide(Reactivity.layer));\n\nexport const layer = (config: SqliteClientConfig): Layer.Layer<Client.SqlClient> =>\n Layer.effectServices(\n Effect.map(make(config), (client) =>\n ServiceMap.make(SqliteClient, client).pipe(ServiceMap.add(Client.SqlClient, client)),\n ),\n ).pipe(Layer.provide(Reactivity.layer));\n\nexport const layerMemory = (config: SqliteMemoryClientConfig = {}): Layer.Layer<Client.SqlClient> =>\n Layer.effectServices(\n Effect.map(makeMemory(config), (client) =>\n ServiceMap.make(SqliteClient, client).pipe(ServiceMap.add(Client.SqlClient, client)),\n ),\n ).pipe(Layer.provide(Reactivity.layer));\n"],"mappings":"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"}
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{$ as e,A as t,B as n,C as r,D as i,E as a,F as o,G as s,H as c,I as l,J as u,K as d,L as f,M as p,N as m,O as h,P as g,Q as _,R as v,S as y,T as b,U as x,V as S,W as C,X as w,Y as T,Z as E,_t as D,a as O,at as k,b as A,c as j,ct as M,d as N,dt as P,et as F,f as I,ft as L,g as R,gt as z,h as B,ht as ee,i as te,it as ne,j as re,k as ie,l as V,lt as ae,m as H,mt as oe,n as se,nt as U,o as ce,ot as W,p as le,pt as ue,q as de,r as fe,rt as pe,s as me,st as G,t as K,tt as q,u as J,ut as Y,v as he,w as X,x as ge,y as Z,yt as _e,z as ve}from"./index-BkyGebzB.js";var ye=n(`columns-2`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`path`,{d:`M12 3v18`,key:`108xh3`}]]),be=n(`rows-3`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`path`,{d:`M21 9H3`,key:`1338ky`}],[`path`,{d:`M21 15H3`,key:`9uk58r`}]]);function xe(e){return e==null||e.hasAttribute(`disabled`)||e.getAttribute(`aria-disabled`)===`true`}var Q=_e(D()),Se=[];function Ce(t){let{itemSizes:n,cols:i=1,loopFocus:a=!0,dense:o=!1,orientation:s=`both`,direction:c,highlightedIndex:l,onHighlightedIndexChange:f,rootRef:p,enableHomeAndEndKeys:m=!1,stopEventPropagation:h=!1,disabledIndices:g,modifierKeys:v=Se}=t,[b,x]=Q.useState(0),S=i>1,C=Q.useRef(null),D=M(C,p),O=Q.useRef([]),k=Q.useRef(!1),A=l??b,j=q((e,t=!1)=>{if((f??x)(e),t){let t=O.current[e];X(C.current,t,c,s)}}),P=q(e=>{if(e.size===0||k.current)return;k.current=!0;let t=Array.from(e.keys()),n=t.find(e=>e?.hasAttribute(`data-composite-item-active`))??null,r=n?t.indexOf(n):-1;r!==-1&&j(r),X(C.current,n,c,s)}),L=Q.useMemo(()=>({"aria-orientation":s===`both`?void 0:s,ref:D,onFocus(e){!C.current||!r(e.target)||e.target.setSelectionRange(0,e.target.value.length??0)},onKeyDown(t){let l=m?N:le;if(!l.has(t.key)||we(t,v)||!C.current)return;let f=c===`rtl`,p=f?H:B,b={horizontal:p,vertical:I,both:p}[s],x=f?B:H,D={horizontal:x,vertical:R,both:x}[s];if(r(t.target)&&!xe(t.target)){let e=t.target.selectionStart,n=t.target.selectionEnd,r=t.target.value??``;if(e==null||t.shiftKey||e!==n||t.key!==D&&e<r.length||t.key!==b&&e>0)return}let k=A,M=_(O,g),P=E(O,g);if(S){let e=n||Array.from({length:O.current.length},()=>({width:1,height:1})),r=d(e,i,o),c=r.findIndex(e=>e!=null&&!F(O,e,g)),l=r.reduce((e,t,n)=>t!=null&&!F(O,t,g)?n:e,-1);k=r[w({current:r.map(e=>e?O.current[e]:null)},{event:t,orientation:s,loopFocus:a,cols:i,disabledIndices:T([...g||O.current.map((e,t)=>F(O,t)?t:void 0),void 0],r),minIndex:c,maxIndex:l,prevIndex:u(A>P?M:A,e,r,i,t.key===`ArrowDown`?`bl`:t.key===`ArrowRight`?`tr`:`tl`),rtl:f})]}let L={horizontal:[p],vertical:[I],both:[p,I]}[s],z={horizontal:[x],vertical:[R],both:[x,R]}[s],ee=S?l:{horizontal:m?Z:he,vertical:m?y:ge,both:l}[s];m&&(t.key===`Home`?k=M:t.key===`End`&&(k=P)),k===A&&(L.includes(t.key)||z.includes(t.key))&&(k=a&&k===P&&L.includes(t.key)?M:a&&k===M&&z.includes(t.key)?P:de(O,{startingIndex:k,decrement:z.includes(t.key),disabledIndices:g})),k!==A&&!e(O,k)&&(h&&t.stopPropagation(),ee.has(t.key)&&t.preventDefault(),j(k,!0),queueMicrotask(()=>{O.current[k]?.focus()}))}}),[i,o,c,g,O,m,A,S,n,a,D,v,j,s,h]);return Q.useMemo(()=>({props:L,highlightedIndex:A,onHighlightedIndexChange:j,elementsRef:O,disabledIndices:g,onMapChange:P,relayKeyboardEvent:L.onKeyDown}),[L,A,j,O,g,P])}function we(e,t){for(let n of A.values())if(!t.includes(n)&&e.getModifierState(n))return!0;return!1}var $=z();function Te(e){let{render:t,className:n,refs:r=W,props:i=W,state:a=G,stateAttributesMapping:o,highlightedIndex:c,onHighlightedIndexChange:l,orientation:u,dense:d,itemSizes:f,loopFocus:p,cols:m,enableHomeAndEndKeys:h,onMapChange:g,stopEventPropagation:_=!0,rootRef:v,disabledIndices:y,modifierKeys:b,highlightItemOnHover:x=!1,tag:C=`div`,...w}=e,{props:T,highlightedIndex:E,onHighlightedIndexChange:D,elementsRef:O,onMapChange:A,relayKeyboardEvent:j}=Ce({itemSizes:f,cols:m,loopFocus:p,dense:d,orientation:u,highlightedIndex:c,onHighlightedIndexChange:l,rootRef:v,stopEventPropagation:_,enableHomeAndEndKeys:h,direction:S(),disabledIndices:y,modifierKeys:b}),M=k(C,e,{state:a,ref:r,props:[T,...i,w],stateAttributesMapping:o}),N=Q.useMemo(()=>({highlightedIndex:E,onHighlightedIndexChange:D,highlightItemOnHover:x,relayKeyboardEvent:j}),[E,D,x,j]);return(0,$.jsx)(s.Provider,{value:N,children:(0,$.jsx)(J,{elementsRef:O,onMapChange:e=>{g?.(e),A(e)},children:M})})}const Ee=Q.createContext(void 0);function De(e=!0){let t=Q.useContext(Ee);if(t===void 0&&!e)throw Error(ae(7));return t}let Oe=function(e){return e.disabled=`data-disabled`,e.orientation=`data-orientation`,e.multiple=`data-multiple`,e}({});var ke={multiple(e){return e?{[Oe.multiple]:``}:null}};const Ae=Q.forwardRef(function(e,t){let{defaultValue:n,disabled:r=!1,loopFocus:i=!0,onValueChange:o,orientation:s=`horizontal`,multiple:c=!1,value:l,className:u,render:d,...f}=e,p=V(!0),m=Q.useMemo(()=>{if(l===void 0)return n??[]},[l,n]),h=Q.useMemo(()=>l!==void 0||n!==void 0,[l,n]),g=(p?.disabled??!1)||r,[_,v]=a({controlled:l,default:m,name:`ToggleGroup`,state:`value`}),y=q((e,t,n)=>{let r;if(c?(r=_.slice(),t?r.push(e):r.splice(_.indexOf(e),1)):r=t?[e]:[],Array.isArray(r)){if(o?.(r,n),n.isCanceled)return;v(r)}}),b={disabled:g,multiple:c,orientation:s},x=Q.useMemo(()=>({disabled:g,orientation:s,setGroupValue:y,value:_,isValueInitialized:h}),[g,s,y,_,h]),S={role:`group`},C=k(`div`,e,{enabled:!!p,state:b,ref:t,props:[S,f],stateAttributesMapping:ke});return(0,$.jsx)(Ee.Provider,{value:x,children:p?C:(0,$.jsx)(Te,{render:d,className:u,state:b,refs:[t],props:[S,f],stateAttributesMapping:ke,loopFocus:i,enableHomeAndEndKeys:!0})})}),je=Q.forwardRef(function(e,t){let{className:n,defaultPressed:r=!1,disabled:i=!1,form:o,onPressedChange:s,pressed:l,render:u,type:d,value:f,nativeButton:p=!0,...m}=e,h=b(f||void 0),g=De(),_=g?.value??[],v=g?void 0:r,y=(i||g?.disabled)??!1,[S,w]=a({controlled:g?h!==void 0&&_.indexOf(h)>-1:l,default:v,name:`Toggle`,state:`pressed`}),T=q((e,t)=>{h&&g?.setGroupValue?.(h,e,t),s?.(e,t)}),{getButtonProps:E,buttonRef:D}=C({disabled:y,native:p}),O={disabled:y,pressed:S},A=[D,t],j=[{"aria-pressed":S,onClick(e){let t=!S,n=c(x,e.nativeEvent);T(t,n),!n.isCanceled&&w(t)}},m,E],M=k(`button`,e,{enabled:!g,state:O,ref:A,props:j});return g?(0,$.jsx)(K,{tag:`button`,render:u,className:n,state:O,refs:A,props:j}):M});var Me=Y(),Ne=ne(`[&_svg]:-mx-0.5 relative inline-flex shrink-0 cursor-pointer select-none items-center justify-center gap-2 whitespace-nowrap rounded-lg border font-medium text-base text-foreground outline-none transition-shadow before:pointer-events-none before:absolute before:inset-0 before:rounded-[calc(var(--radius-lg)-1px)] pointer-coarse:after:absolute pointer-coarse:after:size-full pointer-coarse:after:min-h-11 pointer-coarse:after:min-w-11 hover:bg-accent focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1 focus-visible:ring-offset-background disabled:pointer-events-none disabled:opacity-64 data-pressed:bg-input/64 data-pressed:text-accent-foreground sm:text-sm [&_svg:not([class*='opacity-'])]:opacity-80 [&_svg:not([class*='size-'])]:size-4.5 sm:[&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0`,{defaultVariants:{size:`default`,variant:`default`},variants:{size:{default:`h-9 min-w-9 px-[calc(--spacing(2)-1px)] sm:h-8 sm:min-w-8`,lg:`h-10 min-w-10 px-[calc(--spacing(2.5)-1px)] sm:h-9 sm:min-w-9`,sm:`h-8 min-w-8 px-[calc(--spacing(1.5)-1px)] sm:h-7 sm:min-w-7`,xs:`h-7 min-w-7 px-[calc(--spacing(1)-1px)] sm:h-6 sm:min-w-6 rounded-md`},variant:{default:`border-transparent`,outline:`border-input bg-background not-dark:bg-clip-padding shadow-xs/5 not-disabled:not-active:not-data-pressed:before:shadow-[0_1px_--theme(--color-black/4%)] dark:bg-input/32 dark:data-pressed:bg-input dark:hover:bg-input/64 dark:not-disabled:not-active:not-data-pressed:before:shadow-[0_-1px_--theme(--color-white/6%)] dark:not-disabled:not-data-pressed:before:shadow-[0_-1px_--theme(--color-white/2%)] [:disabled,:active,[data-pressed]]:shadow-none`}}});function Pe(e){let t=(0,Me.c)(12),n,r,i,a;t[0]===e?(n=t[1],r=t[2],i=t[3],a=t[4]):({className:n,variant:a,size:i,...r}=e,t[0]=e,t[1]=n,t[2]=r,t[3]=i,t[4]=a);let o;t[5]!==n||t[6]!==i||t[7]!==a?(o=U(Ne({className:n,size:i,variant:a})),t[5]=n,t[6]=i,t[7]=a,t[8]=o):o=t[8];let s;return t[9]!==r||t[10]!==o?(s=(0,$.jsx)(je,{className:o,"data-slot":`toggle`,...r}),t[9]=r,t[10]=o,t[11]=s):s=t[11],s}var Fe=Q.createContext({size:`default`,variant:`default`});function Ie(e){let t=(0,Me.c)(24),n,r,i,a,o,s;t[0]===e?(n=t[1],r=t[2],i=t[3],a=t[4],o=t[5],s=t[6]):({className:r,variant:a,size:o,orientation:s,children:n,...i}=e,t[0]=e,t[1]=n,t[2]=r,t[3]=i,t[4]=a,t[5]=o,t[6]=s);let c=a===void 0?`default`:a,l=o===void 0?`default`:o,u=s===void 0?`horizontal`:s,d,f;t[7]!==l||t[8]!==c?(f={size:l,variant:c},t[7]=l,t[8]=c,t[9]=f):f=t[9],d=f;let p=d,m=u===`horizontal`?`*:pointer-coarse:after:min-w-auto`:`*:pointer-coarse:after:min-h-auto`,h=c===`default`?`gap-0.5`:u===`horizontal`?`*:not-first:not-data-[slot=separator]:before:-start-[0.5px] *:not-last:not-data-[slot=separator]:before:-end-[0.5px] *:not-first:rounded-s-none *:not-last:rounded-e-none *:not-first:border-s-0 *:not-last:border-e-0 *:not-first:before:rounded-s-none *:not-last:before:rounded-e-none`:`*:not-first:not-data-[slot=separator]:before:-top-[0.5px] *:not-last:not-data-[slot=separator]:before:-bottom-[0.5px] flex-col *:not-first:rounded-t-none *:not-last:rounded-b-none *:not-first:border-t-0 *:not-last:border-b-0 *:not-first:before:rounded-t-none *:not-last:before:rounded-b-none *:data-[slot=toggle]:not-last:before:hidden dark:*:last:before:hidden dark:*:first:before:block`,g;t[10]!==r||t[11]!==m||t[12]!==h?(g=U(`flex w-fit *:focus-visible:z-10 dark:*:[[data-slot=separator]:has(+[data-slot=toggle]:hover)]:before:bg-input/64 dark:*:[[data-slot=separator]:has(+[data-slot=toggle][data-pressed])]:before:bg-input dark:*:[[data-slot=toggle]:hover+[data-slot=separator]]:before:bg-input/64 dark:*:[[data-slot=toggle][data-pressed]+[data-slot=separator]]:before:bg-input`,m,h,r),t[10]=r,t[11]=m,t[12]=h,t[13]=g):g=t[13];let _;t[14]!==n||t[15]!==p?(_=(0,$.jsx)(Fe.Provider,{value:p,children:n}),t[14]=n,t[15]=p,t[16]=_):_=t[16];let v;return t[17]!==u||t[18]!==i||t[19]!==l||t[20]!==g||t[21]!==_||t[22]!==c?(v=(0,$.jsx)(Ae,{className:g,"data-size":l,"data-slot":`toggle-group`,"data-variant":c,orientation:u,...i,children:_}),t[17]=u,t[18]=i,t[19]=l,t[20]=g,t[21]=_,t[22]=c,t[23]=v):v=t[23],v}function Le(e){let t=(0,Me.c)(12),n,r,i,a,o;t[0]===e?(n=t[1],r=t[2],i=t[3],a=t[4],o=t[5]):({className:r,children:n,variant:o,size:a,...i}=e,t[0]=e,t[1]=n,t[2]=r,t[3]=i,t[4]=a,t[5]=o);let s=Q.useContext(Fe),c=o??s.variant,l=a??s.size,u;return t[6]!==n||t[7]!==r||t[8]!==i||t[9]!==l||t[10]!==c?(u=(0,$.jsx)(Pe,{className:r,"data-size":l,"data-variant":c,size:l,variant:c,...i,children:n}),t[6]=n,t[7]=r,t[8]=i,t[9]=l,t[10]=c,t[11]=u):u=t[11],u}function Re(e){return new Intl.DateTimeFormat(void 0,{hour:`numeric`,minute:`2-digit`}).format(new Date(e))}function ze({mode:e=`inline`}){let n=ue(),{resolvedTheme:r}=t(),[a,s]=(0,Q.useState)(`stacked`),c=(0,Q.useRef)(null),u=(0,Q.useRef)(null),[d,h]=(0,Q.useState)(!1),[_,y]=(0,Q.useState)(!1),b=ee({strict:!1,select:e=>e.threadId?pe.makeUnsafe(e.threadId):null}),x=oe({strict:!1,select:e=>me(e)}),S=b,C=l(e=>S?e.threads.find(e=>e.id===S):void 0),w=C?.projectId??null,T=l(e=>w?e.projects.find(e=>e.id===w):void 0),E=C?.worktreePath??T?.cwd,D=P(i(E??null)).data?.isRepo??!0,{turnDiffSummaries:k,inferredCheckpointTurnCountByTurnId:A}=ce(C),M=(0,Q.useMemo)(()=>[...k].toSorted((e,t)=>{let n=e.checkpointTurnCount??A[e.turnId]??0,r=t.checkpointTurnCount??A[t.turnId]??0;return n===r?t.completedAt.localeCompare(e.completedAt):r-n}),[A,k]),N=x.diffTurnId??null,F=N===null?null:x.diffFilePath??null,I=N===null?void 0:M.find(e=>e.turnId===N)??M[0],R=I&&(I.checkpointTurnCount??A[I.turnId]),z=(0,Q.useMemo)(()=>typeof R==`number`?{fromTurnCount:Math.max(0,R-1),toTurnCount:R}:null,[R]),B=(0,Q.useMemo)(()=>{let e=M.map(e=>e.checkpointTurnCount??A[e.turnId]).filter(e=>typeof e==`number`);if(e.length===0)return;let t=Math.max(...e);return t>0?t:void 0},[A,M]),ne=(0,Q.useMemo)(()=>!I&&typeof B==`number`?{fromTurnCount:0,toTurnCount:B}:null,[B,I]),V=I?z:ne,ae=(0,Q.useMemo)(()=>I||M.length===0?null:`conversation:${M.map(e=>e.turnId).join(`,`)}`,[M,I]),H=P(m({threadId:S,fromTurnCount:V?.fromTurnCount??null,toTurnCount:V?.toTurnCount??null,cacheScope:I?`turn:${I.turnId}`:ae,enabled:D})),W=I?H.data?.diff:void 0,le=I?void 0:H.data?.diff,de=H.isLoading,G=H.error instanceof Error?H.error.message:H.error?`Failed to load checkpoint diff.`:null,K=I?W:le,q=typeof K==`string`&&K.trim().length===0,J=(0,Q.useMemo)(()=>te(K,`diff-panel:${r}`),[r,K]),Y=(0,Q.useMemo)(()=>!J||J.kind!==`files`?[]:J.files.toSorted((e,t)=>O(e).localeCompare(O(t),void 0,{numeric:!0,sensitivity:`base`})),[J]);(0,Q.useEffect)(()=>{!F||!c.current||Array.from(c.current.querySelectorAll(`[data-diff-file-path]`)).find(e=>e.dataset.diffFilePath===F)?.scrollIntoView({block:`nearest`})},[F,Y]);let he=(0,Q.useCallback)(e=>{let t=f();if(!t)return;let n=E?o(e,E):e;t.shell.openInEditor(n,g()).catch(e=>{console.warn(`Failed to open diff file in editor.`,e)})},[E]),X=e=>{C&&n({to:`/$threadId`,params:{threadId:C.id},search:t=>({...j(t),diff:`1`,diffTurnId:e})})},ge=()=>{C&&n({to:`/$threadId`,params:{threadId:C.id},search:e=>({...j(e),diff:`1`})})},Z=(0,Q.useCallback)(()=>{let e=u.current;if(!e){h(!1),y(!1);return}let t=Math.max(0,e.scrollWidth-e.clientWidth);h(e.scrollLeft>4),y(e.scrollLeft<t-4)},[]),_e=(0,Q.useCallback)(e=>{let t=u.current;t&&t.scrollBy({left:e,behavior:`smooth`})},[]),xe=(0,Q.useCallback)(e=>{let t=u.current;t&&(t.scrollWidth<=t.clientWidth+1||Math.abs(e.deltaY)<=Math.abs(e.deltaX)||(e.preventDefault(),t.scrollBy({left:e.deltaY,behavior:`auto`})))},[]);(0,Q.useEffect)(()=>{let e=u.current;if(!e)return;let t=window.requestAnimationFrame(()=>Z()),n=()=>Z();e.addEventListener(`scroll`,n,{passive:!0});let r=new ResizeObserver(()=>Z());return r.observe(e),()=>{window.cancelAnimationFrame(t),e.removeEventListener(`scroll`,n),r.disconnect()}},[Z]),(0,Q.useEffect)(()=>{let e=window.requestAnimationFrame(()=>Z());return()=>{window.cancelAnimationFrame(e)}},[M,N,Z]),(0,Q.useEffect)(()=>{let e=u.current;e&&e.querySelector(`[data-turn-chip-selected='true']`)?.scrollIntoView({block:`nearest`,inline:`nearest`,behavior:`smooth`})},[I?.turnId,N]);let Se=L&&e!==`sheet`,Ce=(0,$.jsxs)($.Fragment,{children:[(0,$.jsxs)(`div`,{className:`relative min-w-0 flex-1 [-webkit-app-region:no-drag]`,children:[d&&(0,$.jsx)(`div`,{className:`pointer-events-none absolute inset-y-0 left-8 z-10 w-7 bg-linear-to-r from-card to-transparent`}),_&&(0,$.jsx)(`div`,{className:`pointer-events-none absolute inset-y-0 right-8 z-10 w-7 bg-linear-to-l from-card to-transparent`}),(0,$.jsx)(`button`,{type:`button`,className:U(`absolute left-0 top-1/2 z-20 inline-flex size-6 -translate-y-1/2 items-center justify-center rounded-md border bg-background/90 text-muted-foreground transition-colors`,d?`border-border/70 hover:border-border hover:text-foreground`:`cursor-not-allowed border-border/40 text-muted-foreground/40`),onClick:()=>_e(-180),disabled:!d,"aria-label":`Scroll turn list left`,children:(0,$.jsx)(ve,{className:`size-3.5`})}),(0,$.jsx)(`button`,{type:`button`,className:U(`absolute right-0 top-1/2 z-20 inline-flex size-6 -translate-y-1/2 items-center justify-center rounded-md border bg-background/90 text-muted-foreground transition-colors`,_?`border-border/70 hover:border-border hover:text-foreground`:`cursor-not-allowed border-border/40 text-muted-foreground/40`),onClick:()=>_e(180),disabled:!_,"aria-label":`Scroll turn list right`,children:(0,$.jsx)(v,{className:`size-3.5`})}),(0,$.jsxs)(`div`,{ref:u,className:`turn-chip-strip flex gap-1 overflow-x-auto px-8 py-0.5`,onWheel:xe,children:[(0,$.jsx)(`button`,{type:`button`,className:`shrink-0 rounded-md`,onClick:ge,"data-turn-chip-selected":N===null,children:(0,$.jsx)(`div`,{className:U(`rounded-md border px-2 py-1 text-left transition-colors`,N===null?`border-border bg-accent text-accent-foreground`:`border-border/70 bg-background/70 text-muted-foreground/80 hover:border-border hover:text-foreground/80`),children:(0,$.jsx)(`div`,{className:`text-[10px] leading-tight font-medium`,children:`All turns`})})}),M.map(e=>(0,$.jsx)(`button`,{type:`button`,className:`shrink-0 rounded-md`,onClick:()=>X(e.turnId),title:e.turnId,"data-turn-chip-selected":e.turnId===I?.turnId,children:(0,$.jsx)(`div`,{className:U(`rounded-md border px-2 py-1 text-left transition-colors`,e.turnId===I?.turnId?`border-border bg-accent text-accent-foreground`:`border-border/70 bg-background/70 text-muted-foreground/80 hover:border-border hover:text-foreground/80`),children:(0,$.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,$.jsxs)(`span`,{className:`text-[10px] leading-tight font-medium`,children:[`Turn`,` `,e.checkpointTurnCount??A[e.turnId]??`?`]}),(0,$.jsx)(`span`,{className:`text-[9px] leading-tight opacity-70`,children:Re(e.completedAt)})]})})},e.turnId))]})]}),(0,$.jsxs)(Ie,{className:`shrink-0 [-webkit-app-region:no-drag]`,variant:`outline`,size:`xs`,value:[a],onValueChange:e=>{let t=e[0];(t===`stacked`||t===`split`)&&s(t)},children:[(0,$.jsx)(Le,{"aria-label":`Stacked diff view`,value:`stacked`,children:(0,$.jsx)(be,{className:`size-3`})}),(0,$.jsx)(Le,{"aria-label":`Split diff view`,value:`split`,children:(0,$.jsx)(ye,{className:`size-3`})})]})]}),we=U(`flex items-center justify-between gap-2 px-4`,Se?`drag-region h-[52px] border-b border-border`:`h-12`);return(0,$.jsxs)(`div`,{className:U(`flex h-full min-w-0 flex-col bg-background`,e===`inline`?`w-[42vw] min-w-[360px] max-w-[560px] shrink-0 border-l border-border`:`w-full`),children:[Se?(0,$.jsx)(`div`,{className:we,children:Ce}):(0,$.jsx)(`div`,{className:`border-b border-border`,children:(0,$.jsx)(`div`,{className:we,children:Ce})}),C?D?M.length===0?(0,$.jsx)(`div`,{className:`flex flex-1 items-center justify-center px-5 text-center text-xs text-muted-foreground/70`,children:`No completed turns yet.`}):(0,$.jsx)($.Fragment,{children:(0,$.jsxs)(`div`,{ref:c,className:`diff-panel-viewport min-h-0 min-w-0 flex-1 overflow-hidden`,children:[G&&!J&&(0,$.jsx)(`div`,{className:`px-3`,children:(0,$.jsx)(`p`,{className:`mb-2 text-[11px] text-red-500/80`,children:G})}),J?J.kind===`files`?(0,$.jsx)(p,{className:`diff-render-surface h-full min-h-0 overflow-auto px-2 pb-2`,config:{overscrollSize:600,intersectionObserverMargin:1200},children:Y.map(e=>{let t=O(e),n=`${fe(e)}:${r}`;return(0,$.jsx)(`div`,{"data-diff-file-path":t,className:`diff-render-file mb-2 rounded-md first:mt-2 last:mb-0`,onClickCapture:e=>{(e.nativeEvent.composedPath?.()??[]).some(e=>e instanceof Element?e.hasAttribute(`data-title`):!1)&&he(t)},children:(0,$.jsx)(re,{fileDiff:e,options:{diffStyle:a===`split`?`split`:`unified`,lineDiffType:`none`,theme:ie(r),themeType:r,unsafeCSS:se}})},n)})}):(0,$.jsx)(`div`,{className:`h-full overflow-auto p-2`,children:(0,$.jsxs)(`div`,{className:`space-y-2`,children:[(0,$.jsx)(`p`,{className:`text-[11px] text-muted-foreground/75`,children:J.reason}),(0,$.jsx)(`pre`,{className:`max-h-[72vh] overflow-auto rounded-md border border-border/70 bg-background/70 p-3 font-mono text-[11px] leading-relaxed text-muted-foreground/90`,children:J.text})]})}):(0,$.jsx)(`div`,{className:`flex h-full items-center justify-center px-3 py-2 text-xs text-muted-foreground/70`,children:(0,$.jsx)(`p`,{children:de?`Loading checkpoint diff...`:q?`No net changes in this selection.`:`No patch available for this selection.`})})]})}):(0,$.jsx)(`div`,{className:`flex flex-1 items-center justify-center px-5 text-center text-xs text-muted-foreground/70`,children:`Turn diffs are unavailable because this project is not a git repository.`}):(0,$.jsx)(`div`,{className:`flex flex-1 items-center justify-center px-5 text-center text-xs text-muted-foreground/70`,children:`Select a thread to inspect turn diffs.`})]})}export{h as DiffWorkerPoolProvider,ze as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
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"}`))];export{e as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
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":"#primitive_functions"},{"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"}],"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":"#primitive_functions"},{"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"}]},"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":"#primitive_functions"},{"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"}]},"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"}]},"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":"#primitive_functions"},{"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"}]},"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":"#primitive_functions"},{"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"}]},"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":"#primitive_functions"},{"include":"#language_constants"},{"include":"#language_variables"},{"include":"#guess_type"},{"include":"#guess_constant"},{"include":"#array_access_operators"},{"include":"#vector_creation_operators"},{"include":"#functions"}]},"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"}`))];export{e as default};
|