@hona/openeval 0.3.2 → 0.3.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -1
- package/package.json +1 -1
- package/src/app/input-fingerprints.ts +37 -7
- package/src/app/merge-runs.ts +1 -0
- package/src/app/read-results.ts +1 -0
- package/src/app/run-benchmark.ts +9 -1
- package/src/app/run-eval.ts +5 -1
- package/src/infra/containers/catalog.ts +70 -0
- package/src/infra/opencode/auth.ts +6 -2
- package/src/types.ts +4 -0
- package/src/view.ts +3 -0
- package/viewer/assets/{abnfDiagram-VCTEODGH-BD2a0nVg.js → abnfDiagram-VCTEODGH-Cl3HgjMn.js} +1 -1
- package/viewer/assets/{angular-html-DdVCwIK9.js → angular-html-DD_Qs90j.js} +1 -1
- package/viewer/assets/{angular-ts-CuqPbRgQ.js → angular-ts-C6uwolJ0.js} +1 -1
- package/viewer/assets/{apl-CtDG5Cje.js → apl-DXXNG1AP.js} +1 -1
- package/viewer/assets/{arc-wyqSIjyo.js → arc-VljIODVM.js} +1 -1
- package/viewer/assets/architecture-7GRP2DOG-cmvaWKJl.js +1 -0
- package/viewer/assets/{architectureDiagram-5GKGNRK7-BmPFNQC8.js → architectureDiagram-5GKGNRK7-BBPZQ1uU.js} +1 -1
- package/viewer/assets/{astro-D6G6kLSd.js → astro-DZiA762t.js} +1 -1
- package/viewer/assets/{blade-lg78flvd.js → blade-0_CSK9rb.js} +1 -1
- package/viewer/assets/{blockDiagram-I7D4REHJ-uc_S4CYt.js → blockDiagram-I7D4REHJ-C3jAen-I.js} +1 -1
- package/viewer/assets/{c-DnJ04u1N.js → c-Dr4MdHFU.js} +1 -1
- package/viewer/assets/{c4Diagram-7LVT6UL2-C6MKduOJ.js → c4Diagram-7LVT6UL2-x9-A2uwu.js} +1 -1
- package/viewer/assets/channel-BrXVTGcv.js +1 -0
- package/viewer/assets/{chapel-BXrX4Xy8.js → chapel-Bzsv5OV_.js} +1 -1
- package/viewer/assets/{chunk-4HAMMTFA-sUmS_B9_.js → chunk-4HAMMTFA-DhJ5vlqv.js} +1 -1
- package/viewer/assets/{chunk-75Z2AOVW-C-WwWkXY.js → chunk-75Z2AOVW-BiWuU3A8.js} +1 -1
- package/viewer/assets/{chunk-DU6HZSFF-BMoyWhsq.js → chunk-DU6HZSFF-DQsE2_KX.js} +1 -1
- package/viewer/assets/{chunk-F27PBJKO-CP5YX4kg.js → chunk-F27PBJKO-eYpvp3yv.js} +1 -1
- package/viewer/assets/{chunk-GMAD6QVW-DD4A7Z3L.js → chunk-GMAD6QVW-Cuv8q7cp.js} +1 -1
- package/viewer/assets/{chunk-GVQU2GXP-HCwJTvMX.js → chunk-GVQU2GXP-C80TX_-9.js} +1 -1
- package/viewer/assets/{chunk-IMKFNOWR-B-IMCCL2.js → chunk-IMKFNOWR-D6UIvU6O.js} +1 -1
- package/viewer/assets/{chunk-L3NEJ4N5-DggkuyxL.js → chunk-L3NEJ4N5-B97oN3Wz.js} +1 -1
- package/viewer/assets/{chunk-OSK3NFVY-DVlD89z7.js → chunk-OSK3NFVY-Dv9V7Vwg.js} +1 -1
- package/viewer/assets/{chunk-P2QGCYS3-BxVX7Csy.js → chunk-P2QGCYS3-CCWmLNYJ.js} +1 -1
- package/viewer/assets/{chunk-POPQ4Y6H-BAU1NKsx.js → chunk-POPQ4Y6H-B1p9ouPt.js} +1 -1
- package/viewer/assets/{chunk-PWAF6VOD-DMn6Wi7h.js → chunk-PWAF6VOD-DA8KGNWy.js} +1 -1
- package/viewer/assets/{chunk-SHT3W25Y-CgZcCWnM.js → chunk-SHT3W25Y-BrG5_y-x.js} +1 -1
- package/viewer/assets/{chunk-SVP7TREG-Bkhb6FAV.js → chunk-SVP7TREG-BfR4k1NG.js} +1 -1
- package/viewer/assets/{chunk-TICWLB2K-D2tOhmdF.js → chunk-TICWLB2K-Cl_FiqB8.js} +1 -1
- package/viewer/assets/{chunk-XXDRQBXY-fcL8PDvO.js → chunk-XXDRQBXY-D4qiShQC.js} +1 -1
- package/viewer/assets/classDiagram-ZZMXUADV-BsgTq0ME.js +1 -0
- package/viewer/assets/classDiagram-v2-VYDZK3BY-BsgTq0ME.js +1 -0
- package/viewer/assets/{cobol-CI6TrDxj.js → cobol-BnQBc2SA.js} +1 -1
- package/viewer/assets/{coffee-Ed3tsq0W.js → coffee-D8jvqPgZ.js} +1 -1
- package/viewer/assets/{cose-bilkent-JH36ORCC-BLw4c4lj.js → cose-bilkent-JH36ORCC-BcmCCZr6.js} +1 -1
- package/viewer/assets/{cpp-NAHlcPQh.js → cpp-MUcJROqQ.js} +1 -1
- package/viewer/assets/{crystal-BXGK-sOE.js → crystal-CFGJH8of.js} +1 -1
- package/viewer/assets/{css-BFp-qE9r.js → css-Z5Q-tnUN.js} +1 -1
- package/viewer/assets/{cynefin-OW5HDTMX-gzIP1VDo.js → cynefin-OW5HDTMX-Hu_taNlH.js} +1 -1
- package/viewer/assets/{cynefinDiagram-5FMLGOSQ-Czu3f68h.js → cynefinDiagram-5FMLGOSQ-DGCR5Bu-.js} +1 -1
- package/viewer/assets/{dagre-GXQ25YYZ-BAzeXsit.js → dagre-GXQ25YYZ-BONZK_72.js} +1 -1
- package/viewer/assets/{diagram-S7CK7UJ4-CxrIUY6C.js → diagram-S7CK7UJ4-B3PuH0gY.js} +1 -1
- package/viewer/assets/{diagram-UQ7AKVKN-D_JFHKr_.js → diagram-UQ7AKVKN-_nLXEPxU.js} +1 -1
- package/viewer/assets/{diagram-VSXAHHWV-PWTXzum8.js → diagram-VSXAHHWV-W8uCnJKR.js} +1 -1
- package/viewer/assets/{diagram-VX7I27RA-C_daaExL.js → diagram-VX7I27RA-Dw85ssfk.js} +1 -1
- package/viewer/assets/{diagram-Z3DM3KII-B-fVF8bU.js → diagram-Z3DM3KII-iT_nC6Ci.js} +1 -1
- package/viewer/assets/{dist-BsTox645.js → dist-CQ0iZX7g.js} +1 -1
- package/viewer/assets/{ebnfDiagram-PWID7BFC-AvlNOJnV.js → ebnfDiagram-PWID7BFC-CmB3I8gj.js} +1 -1
- package/viewer/assets/{edge-CJ-xiaut.js → edge-ChegMQD3.js} +1 -1
- package/viewer/assets/{elixir-DwyPuR-j.js → elixir-BIS6GmoK.js} +1 -1
- package/viewer/assets/{elm-Dq236SU3.js → elm-0b95WpPs.js} +1 -1
- package/viewer/assets/{erDiagram-RLTQ6QDP-CgD6jWsh.js → erDiagram-RLTQ6QDP-BdrQ4dDR.js} +1 -1
- package/viewer/assets/{erb-Bp546jL9.js → erb-B6AHMmNJ.js} +1 -1
- package/viewer/assets/eventmodeling-NTZA5JFV-D1Zwl9Cr.js +1 -0
- package/viewer/assets/flowDiagram-HODETNUW-Dfw-HgvJ.js +1 -0
- package/viewer/assets/{ganttDiagram-EL5Y4UJY-VPFwa9x1.js → ganttDiagram-EL5Y4UJY-CScNarbN.js} +1 -1
- package/viewer/assets/{git-rebase-D2PaLLH_.js → git-rebase-eLwqxn21.js} +1 -1
- package/viewer/assets/{gitGraph-4MIJSDKK-xi6qI7Z0.js → gitGraph-4MIJSDKK-DBJydFU4.js} +1 -1
- package/viewer/assets/{gitGraphDiagram-WWUBYQGX-BlZkClbr.js → gitGraphDiagram-WWUBYQGX-BNpJTag6.js} +1 -1
- package/viewer/assets/{glimmer-js-yehmMKoY.js → glimmer-js-BPUd-Hdw.js} +1 -1
- package/viewer/assets/{glimmer-ts-CcjA_qmM.js → glimmer-ts-BsY3Gaee.js} +1 -1
- package/viewer/assets/{glsl-Cp9eQ-AE.js → glsl-BgZlzkDK.js} +1 -1
- package/viewer/assets/{graphql-Cq1lEM8j.js → graphql-BNNbyKev.js} +1 -1
- package/viewer/assets/{hack-DPGfOK3S.js → hack-DXqsPyfj.js} +1 -1
- package/viewer/assets/{haml-DkQK82Gj.js → haml-CEIe07b8.js} +1 -1
- package/viewer/assets/{handlebars-DTZJdhbW.js → handlebars-4TLrUOf9.js} +1 -1
- package/viewer/assets/{html-DpTpgMiG.js → html-Dirc4JcS.js} +1 -1
- package/viewer/assets/{html-derivative-uhUUy5oC.js → html-derivative-lYLgmFdz.js} +1 -1
- package/viewer/assets/{http-B92AnJJ4.js → http-BhrBDOp-.js} +1 -1
- package/viewer/assets/{hurl-Dol2Yi-b.js → hurl-DWBDJqQR.js} +1 -1
- package/viewer/assets/{index-tgc7CLl2.js → index-LKycHUia.js} +76 -76
- package/viewer/assets/{index-DAuO1BM4.css → index-w8_YIakp.css} +1 -1
- package/viewer/assets/{info-A6RAGUB7-B4V2dCg0.js → info-A6RAGUB7-Cqp6XvkH.js} +1 -1
- package/viewer/assets/{infoDiagram-27XIBGKW-DEVrKQCK.js → infoDiagram-27XIBGKW-CCvdaWwj.js} +1 -1
- package/viewer/assets/{ishikawaDiagram-5VMMS53U-BHff_Dap.js → ishikawaDiagram-5VMMS53U-DQ4-h-VU.js} +1 -1
- package/viewer/assets/{java--cIN42Lc.js → java-CdPCMwep.js} +1 -1
- package/viewer/assets/{javascript-DyvSzR0T.js → javascript-CvM774KP.js} +1 -1
- package/viewer/assets/{jinja-BGYQ1xJZ.js → jinja-BGKKdTiv.js} +1 -1
- package/viewer/assets/{jison-ClYldt1W.js → jison-CXj9ikNa.js} +1 -1
- package/viewer/assets/{journeyDiagram-3NMN7TZE-tlsIEFNa.js → journeyDiagram-3NMN7TZE-DUzDc5Z8.js} +1 -1
- package/viewer/assets/{json-DEW4gudM.js → json-NHDEs7sd.js} +1 -1
- package/viewer/assets/{jsx-lokPhZBE.js → jsx-FNvyvbBd.js} +1 -1
- package/viewer/assets/{julia-Bo9paQzm.js → julia-B3kEyS8t.js} +1 -1
- package/viewer/assets/{just-DqqAsrxT.js → just-CpYQ-9KV.js} +1 -1
- package/viewer/assets/{kanban-definition-UXKFOSKX-CP8oZ9Q5.js → kanban-definition-UXKFOSKX-ChHjSmhz.js} +1 -1
- package/viewer/assets/{latex-CO3oZ8pK.js → latex-OWDJhn4l.js} +1 -1
- package/viewer/assets/{line-CWhya-77.js → line-DA6hWqrZ.js} +1 -1
- package/viewer/assets/{linear-BJzBzMzU.js → linear-UNQGDr0C.js} +1 -1
- package/viewer/assets/{liquid-CUbRj59y.js → liquid-PySKINiF.js} +1 -1
- package/viewer/assets/{lua-CXig6-_n.js → lua-DVWbE3Qa.js} +1 -1
- package/viewer/assets/{marko-DkQFFLti.js → marko-9EBuCkFn.js} +1 -1
- package/viewer/assets/{mdc-BFGAQDvL.js → mdc-BlHUSA6C.js} +1 -1
- package/viewer/assets/{mermaid-parser.core-DqMtuveo.js → mermaid-parser.core-86Qkc0ID.js} +3 -3
- package/viewer/assets/{mermaid.core-C6ANPM_a.js → mermaid.core-DaVdMmkQ.js} +4 -4
- package/viewer/assets/{mindmap-definition-YA3MSWOX-CMZQVws2.js → mindmap-definition-YA3MSWOX-oloAEnnx.js} +1 -1
- package/viewer/assets/{nginx-0b9CGIHO.js → nginx-CDJjPEvc.js} +1 -1
- package/viewer/assets/{nim-DplMSFX0.js → nim-DNAK-c_E.js} +1 -1
- package/viewer/assets/{org-DqGSm_ke.js → org-D6PZe7Hw.js} +1 -1
- package/viewer/assets/{packet-AYTQ26CC-DDCDKPAj.js → packet-AYTQ26CC-CF1AN50P.js} +1 -1
- package/viewer/assets/{pegDiagram-XKGWAZYB-DjPb-guT.js → pegDiagram-XKGWAZYB-DGz2-yRO.js} +1 -1
- package/viewer/assets/{perl-D3nVgYGh.js → perl-DIspB-Mg.js} +1 -1
- package/viewer/assets/{php-CbHf38Cn.js → php-BVepTqtk.js} +1 -1
- package/viewer/assets/{pie-WAS4IAKB-GN2C-_ew.js → pie-WAS4IAKB-Cx1FR1mr.js} +1 -1
- package/viewer/assets/{pieDiagram-E7YTZNPT-BCi2gkKC.js → pieDiagram-E7YTZNPT-BbbWhyZI.js} +1 -1
- package/viewer/assets/{pug-CZT1s20p.js → pug-DAPcGjX6.js} +1 -1
- package/viewer/assets/{qml-BkHbAs5e.js → qml-DWWtxGbA.js} +1 -1
- package/viewer/assets/{quadrantDiagram-AXDQQJYC-BnQPKfTn.js → quadrantDiagram-AXDQQJYC-DrUJjgA1.js} +1 -1
- package/viewer/assets/{r-Bs6brPiR.js → r-Mpv0S460.js} +1 -1
- package/viewer/assets/{radar-RG4KPBEZ-DX0KNp6-.js → radar-RG4KPBEZ-y9SAfPV_.js} +1 -1
- package/viewer/assets/{railroad-74A4TZTK-6asimRo7.js → railroad-74A4TZTK-Dfc0Q6_w.js} +1 -1
- package/viewer/assets/railroad-abnf-HS5TGJTU-CB_PJcK6.js +1 -0
- package/viewer/assets/railroad-ebnf-LZEXJU2U-Bwgt_HNz.js +1 -0
- package/viewer/assets/railroad-peg-WCYAUIDC-DkZKEvIQ.js +1 -0
- package/viewer/assets/{railroadDiagram-O6MQD6OU-BMqn2tiZ.js → railroadDiagram-O6MQD6OU-Koe-8k88.js} +1 -1
- package/viewer/assets/{razor-C2n7Xtyr.js → razor-1HRaok3B.js} +1 -1
- package/viewer/assets/{regexp-Bo6Pl_fZ.js → regexp-dtCIuY15.js} +1 -1
- package/viewer/assets/{requirementDiagram-BXWQKSXE-BUDP5axK.js → requirementDiagram-BXWQKSXE-BkisH0SS.js} +1 -1
- package/viewer/assets/{rst-xn9jHLsv.js → rst-DHb1VRTR.js} +1 -1
- package/viewer/assets/{ruby-uezBOJQA.js → ruby-BFIUXRbM.js} +1 -1
- package/viewer/assets/{sankeyDiagram-P5KCCOFB-BqF__G69.js → sankeyDiagram-P5KCCOFB-B7LDcgGb.js} +1 -1
- package/viewer/assets/{sas-BFNcactC.js → sas-CXVQStV2.js} +1 -1
- package/viewer/assets/{scss-DQctmtN5.js → scss-D1TWv7v-.js} +1 -1
- package/viewer/assets/{sequenceDiagram-WJ2MYXX4-COTwvRM0.js → sequenceDiagram-WJ2MYXX4-CVdRHXxu.js} +1 -1
- package/viewer/assets/{shellscript-b4scok3x.js → shellscript-BNxbdlcG.js} +1 -1
- package/viewer/assets/{shellsession-DhHx2Tve.js → shellsession-BPgWxeMC.js} +1 -1
- package/viewer/assets/{soy-CKEQyp4E.js → soy-xvxZ4puZ.js} +1 -1
- package/viewer/assets/{sql-BJIx5HBg.js → sql-mcloyhsl.js} +1 -1
- package/viewer/assets/{src-D9BxzP51.js → src-CEugxhjf.js} +1 -1
- package/viewer/assets/{stata-BxUsTnsL.js → stata-BH9WxX3M.js} +1 -1
- package/viewer/assets/{stateDiagram-D77RDMKH-CxPAUQG9.js → stateDiagram-D77RDMKH-DCe7c0bj.js} +1 -1
- package/viewer/assets/stateDiagram-v2-MP3YSRHH-DAiJpzC0.js +1 -0
- package/viewer/assets/{surrealql-Db9C_syE.js → surrealql-DT6z9HjU.js} +1 -1
- package/viewer/assets/{svelte-Bdum9H2e.js → svelte-DhMjoL5f.js} +1 -1
- package/viewer/assets/{swimlanes-42K2YHIH-DgVSbM2N.js → swimlanes-42K2YHIH-0HmmIS3k.js} +1 -1
- package/viewer/assets/swimlanesDiagram-VR7AAH4N-rLdQ1dbD.js +8 -0
- package/viewer/assets/{templ-CPd8XvAU.js → templ-DommSy4z.js} +1 -1
- package/viewer/assets/{tex-ugtfHkTM.js → tex-CaFWJFN-.js} +1 -1
- package/viewer/assets/{timeline-definition-24CTP7MA-C-uRF487.js → timeline-definition-24CTP7MA-od0g4NnC.js} +1 -1
- package/viewer/assets/{treeView-Q6P3EWNA-BmAs0zGR.js → treeView-Q6P3EWNA-BI6VSGO-.js} +1 -1
- package/viewer/assets/{treemap-WGGIJYW6-BbMlmxPC.js → treemap-WGGIJYW6-Bk8N6Y68.js} +1 -1
- package/viewer/assets/{ts-tags-CVfSxSrq.js → ts-tags-BYVx2WcX.js} +1 -1
- package/viewer/assets/{tsx-DziBqK0e.js → tsx-nHQYkkGG.js} +1 -1
- package/viewer/assets/{twig-XWBVDqQT.js → twig-Cw-lWIlb.js} +1 -1
- package/viewer/assets/{typescript-BQaQFWJj.js → typescript-DygBWTVv.js} +1 -1
- package/viewer/assets/{typst-CKAqlUvq.js → typst-CGHo10wY.js} +1 -1
- package/viewer/assets/{vennDiagram-4TSXK5OY-f5gjsolQ.js → vennDiagram-4TSXK5OY-DH3Uf812.js} +1 -1
- package/viewer/assets/{vue-Bi21UrIJ.js → vue-CX1DrRJy.js} +1 -1
- package/viewer/assets/{vue-html-BXbrkthZ.js → vue-html-c2PT7ajU.js} +1 -1
- package/viewer/assets/{vue-vine-BizJO_Ju.js → vue-vine-R8BVuMuN.js} +1 -1
- package/viewer/assets/{wardley-WFR3VGLG-C1G-q39u.js → wardley-WFR3VGLG-DaBE6t7F.js} +1 -1
- package/viewer/assets/{wardleyDiagram-VM6X3IG4-4Okmn6Ky.js → wardleyDiagram-VM6X3IG4-CpuxvD_D.js} +1 -1
- package/viewer/assets/{xml-f1bGPKhD.js → xml-CtozFVgZ.js} +1 -1
- package/viewer/assets/{xsl-BiaU5ESx.js → xsl-Bywa5lsK.js} +1 -1
- package/viewer/assets/{xychartDiagram-S5SC5T6Z-B5TiTNm-.js → xychartDiagram-S5SC5T6Z-CIooxwr4.js} +1 -1
- package/viewer/assets/{yaml-ChWybZ9g.js → yaml-m1ZbeIKu.js} +1 -1
- package/viewer/index.html +3 -3
- package/viewer/assets/architecture-7GRP2DOG-BIR2L0CZ.js +0 -1
- package/viewer/assets/channel-BtIqrdXz.js +0 -1
- package/viewer/assets/classDiagram-ZZMXUADV-Fm1xUxjv.js +0 -1
- package/viewer/assets/classDiagram-v2-VYDZK3BY-Fm1xUxjv.js +0 -1
- package/viewer/assets/eventmodeling-NTZA5JFV-DjF7f3nw.js +0 -1
- package/viewer/assets/flowDiagram-HODETNUW-COsUd-GC.js +0 -1
- package/viewer/assets/railroad-abnf-HS5TGJTU-DYq0sKms.js +0 -1
- package/viewer/assets/railroad-ebnf-LZEXJU2U-Ua2mHJlY.js +0 -1
- package/viewer/assets/railroad-peg-WCYAUIDC-D39Fr79_.js +0 -1
- package/viewer/assets/stateDiagram-v2-MP3YSRHH-Cd1sSziE.js +0 -1
- package/viewer/assets/swimlanesDiagram-VR7AAH4N-D4gI-oVS.js +0 -8
package/README.md
CHANGED
|
@@ -211,13 +211,21 @@ await runBenchmark("./my-benchmark", {
|
|
|
211
211
|
|
|
212
212
|
## Write evals with an agent
|
|
213
213
|
|
|
214
|
+
Copy the **Agent prompt** at [openev.al](https://openev.al), or use
|
|
215
|
+
[agent-start.md](https://github.com/Hona/openeval/blob/main/agent-start.md). It walks through project selection,
|
|
216
|
+
prerequisites, the writing skill, one eval, models, and an optional first run.
|
|
217
|
+
The prompt starts from [llms.txt](https://openev.al/llms.txt); documentation pages
|
|
218
|
+
also support Markdown fetches and direct `index.md` URLs.
|
|
219
|
+
|
|
214
220
|
Use the public [Eval Writing skill](https://github.com/Hona/openeval/tree/main/.opencode/skills/eval-writing)
|
|
215
221
|
to turn a real failure into an eval, review a rubric, or investigate misleading
|
|
216
222
|
scores. It guides an agent through concrete false-pass/false-failure examples,
|
|
217
223
|
accepted alternatives, evidence requirements, and human-reviewed calibration.
|
|
218
224
|
|
|
219
225
|
Copy the whole `.opencode/skills/eval-writing/` directory, including `references/`,
|
|
220
|
-
into the same path in your project
|
|
226
|
+
into the same path in your project, or extract the
|
|
227
|
+
[project skill ZIP](https://openev.al/eval-writing.zip) into your project root.
|
|
228
|
+
For global use, copy it to
|
|
221
229
|
`~/.config/opencode/skills/eval-writing/`. Then run **`/eval-writing`** in OpenCode.
|
|
222
230
|
|
|
223
231
|
> Use eval-writing to review this task and rubric. Show me the strongest false
|
package/package.json
CHANGED
|
@@ -3,11 +3,46 @@ import type {
|
|
|
3
3
|
BenchmarkRun,
|
|
4
4
|
ModelRef,
|
|
5
5
|
JudgeRunInput,
|
|
6
|
+
ProviderDefinitions,
|
|
6
7
|
} from "../types";
|
|
7
8
|
import { fingerprint } from "../infra/files";
|
|
8
9
|
import { JUDGE_PROTOCOL } from "../judgment";
|
|
9
10
|
import { JUDGE_AGENT } from "../infra/judging/agent";
|
|
10
11
|
|
|
12
|
+
/** The candidate's own provider settings and model override; other entries do not apply to it. */
|
|
13
|
+
function providerScope(
|
|
14
|
+
providers: ProviderDefinitions | undefined,
|
|
15
|
+
model: ModelRef,
|
|
16
|
+
) {
|
|
17
|
+
const [name] = model.split("#"),
|
|
18
|
+
slash = name.indexOf("/"),
|
|
19
|
+
id = name.slice(0, slash),
|
|
20
|
+
modelId = name.slice(slash + 1);
|
|
21
|
+
const { models, ...settings } = providers?.[id] ?? {};
|
|
22
|
+
const override = models?.[modelId];
|
|
23
|
+
return override || Object.keys(settings).length
|
|
24
|
+
? { id, modelId, settings, override }
|
|
25
|
+
: undefined;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/** Provider configuration installed in one candidate container. */
|
|
29
|
+
export function candidateProviders(
|
|
30
|
+
providers: ProviderDefinitions | undefined,
|
|
31
|
+
model: ModelRef,
|
|
32
|
+
): ProviderDefinitions | undefined {
|
|
33
|
+
const scope = providerScope(providers, model);
|
|
34
|
+
return scope
|
|
35
|
+
? {
|
|
36
|
+
[scope.id]: {
|
|
37
|
+
...scope.settings,
|
|
38
|
+
...(scope.override
|
|
39
|
+
? { models: { [scope.modelId]: scope.override } }
|
|
40
|
+
: {}),
|
|
41
|
+
},
|
|
42
|
+
}
|
|
43
|
+
: undefined;
|
|
44
|
+
}
|
|
45
|
+
|
|
11
46
|
/** Declared, candidate-visible inputs. Harness implementation hashes are provenance. */
|
|
12
47
|
export function candidateFingerprint(
|
|
13
48
|
definition: BenchmarkDefinition,
|
|
@@ -16,10 +51,7 @@ export function candidateFingerprint(
|
|
|
16
51
|
runtime: BenchmarkRun["runtime"],
|
|
17
52
|
) {
|
|
18
53
|
const item = definition.evals.find((item) => item.id === evalId)!;
|
|
19
|
-
const
|
|
20
|
-
slash = name.indexOf("/");
|
|
21
|
-
const provider = definition.candidate.providers?.[name.slice(0, slash)];
|
|
22
|
-
const { models, ...settings } = provider ?? {};
|
|
54
|
+
const scope = providerScope(definition.candidate.providers, model);
|
|
23
55
|
return fingerprint({
|
|
24
56
|
prompt: item.prompt,
|
|
25
57
|
source: item.sourceHash,
|
|
@@ -28,9 +60,7 @@ export function candidateFingerprint(
|
|
|
28
60
|
candidate: {
|
|
29
61
|
timeoutMs: definition.candidate.timeoutMs,
|
|
30
62
|
websearch: definition.candidate.websearch,
|
|
31
|
-
provider:
|
|
32
|
-
? { ...settings, model: models?.[name.slice(slash + 1)] }
|
|
33
|
-
: undefined,
|
|
63
|
+
provider: scope && { ...scope.settings, model: scope.override },
|
|
34
64
|
},
|
|
35
65
|
container: {
|
|
36
66
|
engine: definition.container.engine,
|
package/src/app/merge-runs.ts
CHANGED
package/src/app/read-results.ts
CHANGED
|
@@ -315,6 +315,7 @@ export class ResultReader {
|
|
|
315
315
|
evalNames: Object.fromEntries(
|
|
316
316
|
evals.map((item) => [item.id, item.name]),
|
|
317
317
|
),
|
|
318
|
+
modelNames: run.modelNames ?? {},
|
|
318
319
|
cost: evalId ? evalCosts[evalId] : sumCosts(Object.values(evalCosts)),
|
|
319
320
|
evalCosts,
|
|
320
321
|
runtime,
|
package/src/app/run-benchmark.ts
CHANGED
|
@@ -10,6 +10,7 @@ import type {
|
|
|
10
10
|
} from "../types";
|
|
11
11
|
import { Results } from "../infra/sqlite";
|
|
12
12
|
import { runtimeFingerprint } from "../infra/containers/oci";
|
|
13
|
+
import { readModelNames } from "../infra/containers/catalog";
|
|
13
14
|
import { prepareWorkspace } from "../infra/containers/workspace";
|
|
14
15
|
import { fingerprint, errorMessage } from "../infra/files";
|
|
15
16
|
import { loadBenchmark, modelRef } from "./load-benchmark";
|
|
@@ -215,11 +216,17 @@ export async function runBenchmark(
|
|
|
215
216
|
(item) => item.action === "candidate" || item.action === "judge",
|
|
216
217
|
);
|
|
217
218
|
const previous = results.benchmark;
|
|
219
|
+
const modelNames = {
|
|
220
|
+
...previous?.modelNames,
|
|
221
|
+
// Names are display metadata; an unavailable catalog keeps the recorded names.
|
|
222
|
+
...(await readModelNames(definition, runtime.imageId).catch(() => ({}))),
|
|
223
|
+
};
|
|
218
224
|
if (
|
|
219
225
|
!work.length &&
|
|
220
226
|
previous &&
|
|
221
227
|
fingerprint(previous.definition) === fingerprint(definition) &&
|
|
222
|
-
fingerprint(previous.runtime) === fingerprint(runtime)
|
|
228
|
+
fingerprint(previous.runtime) === fingerprint(runtime) &&
|
|
229
|
+
fingerprint(previous.modelNames ?? {}) === fingerprint(modelNames)
|
|
223
230
|
)
|
|
224
231
|
return { directory, plan, estimate, benchmark: previous };
|
|
225
232
|
const benchmark: BenchmarkRun = {
|
|
@@ -232,6 +239,7 @@ export async function runBenchmark(
|
|
|
232
239
|
scheduledSlotIds: work.map((item) => item.slot.id),
|
|
233
240
|
definition,
|
|
234
241
|
runtime,
|
|
242
|
+
modelNames,
|
|
235
243
|
sources: previous?.sources,
|
|
236
244
|
execution: {
|
|
237
245
|
startedAt: now,
|
package/src/app/run-eval.ts
CHANGED
|
@@ -5,6 +5,7 @@ import { executeCandidate } from "../infra/containers/candidate";
|
|
|
5
5
|
import type { EvidenceFeed } from "../evidence";
|
|
6
6
|
import { CandidateEvidence } from "../infra/evidence";
|
|
7
7
|
import { measureRecording } from "../infra/recording/metrics";
|
|
8
|
+
import { candidateProviders } from "./input-fingerprints";
|
|
8
9
|
|
|
9
10
|
/** The normal candidate use case: record its inputs, execute, finalize its evidence. */
|
|
10
11
|
export async function runEval(
|
|
@@ -42,7 +43,10 @@ export async function runEval(
|
|
|
42
43
|
websearch: context.definition.candidate.websearch,
|
|
43
44
|
container: context.definition.container,
|
|
44
45
|
imageId: context.runtime.imageId,
|
|
45
|
-
providers:
|
|
46
|
+
providers: candidateProviders(
|
|
47
|
+
context.definition.candidate.providers,
|
|
48
|
+
slot.model,
|
|
49
|
+
),
|
|
46
50
|
},
|
|
47
51
|
directory,
|
|
48
52
|
(event) => {
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { mkdir, mkdtemp, rm } from "node:fs/promises";
|
|
2
|
+
import { tmpdir } from "node:os";
|
|
3
|
+
import { resolve } from "node:path";
|
|
4
|
+
import type { BenchmarkDefinition, ModelNames } from "../../types";
|
|
5
|
+
import { CandidateContainer } from "./oci";
|
|
6
|
+
import { createSessionDatabase } from "../opencode/host";
|
|
7
|
+
import { createCredentialSnapshot, integrationFor } from "../opencode/auth";
|
|
8
|
+
import { clientFor, parseModel } from "../opencode/session";
|
|
9
|
+
|
|
10
|
+
const CATALOG_TIMEOUT_MS = 60_000;
|
|
11
|
+
|
|
12
|
+
/** Display names from the candidates' OpenCode catalog, including declared provider overrides. */
|
|
13
|
+
export async function readModelNames(
|
|
14
|
+
definition: Pick<BenchmarkDefinition, "models" | "candidate" | "container">,
|
|
15
|
+
imageId: string,
|
|
16
|
+
): Promise<ModelNames> {
|
|
17
|
+
const staging = await mkdtemp(
|
|
18
|
+
resolve(process.env.TMP ?? tmpdir(), "catalog-"),
|
|
19
|
+
);
|
|
20
|
+
try {
|
|
21
|
+
const workspace = resolve(staging, "workspace"),
|
|
22
|
+
database = resolve(staging, "opencode.db");
|
|
23
|
+
await mkdir(workspace);
|
|
24
|
+
await createSessionDatabase(
|
|
25
|
+
database,
|
|
26
|
+
createCredentialSnapshot(undefined, [
|
|
27
|
+
...new Set(definition.models.map(integrationFor)),
|
|
28
|
+
]),
|
|
29
|
+
);
|
|
30
|
+
await using container = await CandidateContainer.create(
|
|
31
|
+
definition.container,
|
|
32
|
+
imageId,
|
|
33
|
+
);
|
|
34
|
+
await container.prepare(
|
|
35
|
+
workspace,
|
|
36
|
+
database,
|
|
37
|
+
false,
|
|
38
|
+
[],
|
|
39
|
+
staging,
|
|
40
|
+
definition.candidate.providers,
|
|
41
|
+
);
|
|
42
|
+
const client = clientFor(
|
|
43
|
+
await container.start(CATALOG_TIMEOUT_MS),
|
|
44
|
+
container.password,
|
|
45
|
+
);
|
|
46
|
+
const location = { directory: "/workspace" };
|
|
47
|
+
await client.plugin.awaitActivation({ location });
|
|
48
|
+
const listed = (await client.model.list({ location })).data;
|
|
49
|
+
return Object.fromEntries(
|
|
50
|
+
definition.models.flatMap((model) => {
|
|
51
|
+
const selected = parseModel(model),
|
|
52
|
+
found = listed.find(
|
|
53
|
+
(item) =>
|
|
54
|
+
item.providerID === selected.providerID &&
|
|
55
|
+
item.id === selected.id,
|
|
56
|
+
);
|
|
57
|
+
return found?.name
|
|
58
|
+
? [[`${selected.providerID}/${selected.id}`, found.name]]
|
|
59
|
+
: [];
|
|
60
|
+
}),
|
|
61
|
+
);
|
|
62
|
+
} finally {
|
|
63
|
+
await rm(staging, {
|
|
64
|
+
recursive: true,
|
|
65
|
+
force: true,
|
|
66
|
+
maxRetries: 5,
|
|
67
|
+
retryDelay: 100,
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
}
|
|
@@ -55,9 +55,13 @@ export function createCredentialSnapshot(
|
|
|
55
55
|
db.close(true);
|
|
56
56
|
}
|
|
57
57
|
}
|
|
58
|
-
|
|
58
|
+
/** Console-routed providers authenticate through the OpenCode connection. */
|
|
59
|
+
export const integrationFor = (model: ModelRef) => {
|
|
59
60
|
const provider = model.split("/")[0];
|
|
60
|
-
|
|
61
|
+
return provider.startsWith("console-") ? "opencode" : provider;
|
|
62
|
+
};
|
|
63
|
+
export const credentialsFor = (model: ModelRef, websearch: "exa" | false) => {
|
|
64
|
+
const integration = integrationFor(model);
|
|
61
65
|
const required = [
|
|
62
66
|
...new Set([integration, ...(websearch ? ["opencode", "exa"] : [])]),
|
|
63
67
|
];
|
package/src/types.ts
CHANGED
|
@@ -276,6 +276,8 @@ export type Slot = {
|
|
|
276
276
|
judgeRunId: string | null;
|
|
277
277
|
active: boolean;
|
|
278
278
|
};
|
|
279
|
+
/** OpenCode catalog display names keyed by `provider/model`, without the variant. */
|
|
280
|
+
export type ModelNames = Record<string, string>;
|
|
279
281
|
export type BenchmarkRun = {
|
|
280
282
|
id: string;
|
|
281
283
|
name: string;
|
|
@@ -288,6 +290,8 @@ export type BenchmarkRun = {
|
|
|
288
290
|
scheduledSlotIds: readonly string[];
|
|
289
291
|
definition: BenchmarkDefinition;
|
|
290
292
|
runtime: { imageId: string; candidateHash: string; judgeHash: string };
|
|
293
|
+
/** Display metadata read from the candidate image's catalog; never part of input fingerprints. */
|
|
294
|
+
modelNames?: ModelNames;
|
|
291
295
|
error?: string;
|
|
292
296
|
mergedInto?: string;
|
|
293
297
|
sources?: Array<{
|
package/src/view.ts
CHANGED
|
@@ -12,11 +12,13 @@ import type {
|
|
|
12
12
|
JudgeRun,
|
|
13
13
|
CriterionDefinition,
|
|
14
14
|
Judgment,
|
|
15
|
+
ModelNames,
|
|
15
16
|
} from "./types";
|
|
16
17
|
import type { RunMetrics } from "./judge-context";
|
|
17
18
|
import { runtimeMs, type RuntimeInterval } from "./runtime";
|
|
18
19
|
export { mergeRuntime, runtimeMs, runtimeClock } from "./runtime";
|
|
19
20
|
export type { RuntimeInterval } from "./runtime";
|
|
21
|
+
export type { ModelNames } from "./types";
|
|
20
22
|
|
|
21
23
|
export type ScoreBounds = { lower: number; upper: number; coverage: number };
|
|
22
24
|
export type ModelScore = {
|
|
@@ -144,6 +146,7 @@ export type Overview = {
|
|
|
144
146
|
scores: ModelScore[];
|
|
145
147
|
evals: string[];
|
|
146
148
|
evalNames: Record<string, string>;
|
|
149
|
+
modelNames: ModelNames;
|
|
147
150
|
cost: Cost;
|
|
148
151
|
evalCosts: Record<string, Cost>;
|
|
149
152
|
runtime: RuntimeInterval[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{m as e,t}from"./mermaid-parser.core-
|
|
1
|
+
import{m as e,t}from"./mermaid-parser.core-86Qkc0ID.js";import{n}from"./chunk-Y2CYZVJY-DsF7k-Jl.js";import{m as r}from"./src-CEugxhjf.js";import"./chunk-DU6HZSFF-DQsE2_KX.js";import{n as i,r as a,t as o}from"./chunk-SVP7TREG-BfR4k1NG.js";import{t as s}from"./chunk-JWPE2WC7-DVXcaiue.js";import"./mermaid.core-DaVdMmkQ.js";var c=e().RailroadAbnf.parser.LangiumParser,l=n(e=>{let t=e.alternatives.map(u);return t.length===1?t[0]:{type:`choice`,alternatives:t}},`transformAlternation`),u=n(e=>{let t=e.elements.map(f);return t.length===1?t[0]:{type:`sequence`,elements:t}},`transformConcatenation`),d=n(e=>{if(e.includes(`*`)){let[t,n]=e.split(`*`);return{min:t?parseInt(t,10):0,max:n?parseInt(n,10):1/0}}let t=parseInt(e,10);return{min:t,max:t}},`parseRepeat`),f=n(e=>{let t=p(e.primary);if(!e.repeat)return t;let{min:n,max:r}=d(e.repeat);return n===0&&r===1?{type:`optional`,element:t}:{type:`repetition`,element:t,min:n,max:r}},`transformElement`),p=n(e=>{switch(e.$type){case`AbnfStringLiteral`:return{type:`terminal`,value:e.value};case`AbnfNumVal`:return{type:`terminal`,value:e.value};case`AbnfRuleName`:return{type:`nonterminal`,name:e.name};case`AbnfGroup`:return l(e.element);case`AbnfOptionalGroup`:return{type:`optional`,element:l(e.element)};default:throw Error(`Unsupported ABNF primary node: ${e.$type}`)}},`transformPrimary`),m=n(e=>({name:e.name,definition:l(e.definition)}),`transformRule`),h=n(e=>{s(e,o),e.title&&o.setTitle(e.title),e.rules.map(e=>o.addRule(m(e)))},`populateDb`),g={parser:{parse:n(e=>{o.clear(),r.debug(`[ABNF Parser] Starting Langium parse`);let n=c.parse(e);if(n.lexerErrors.length>0||n.parserErrors.length>0)throw new t(n);let i=n.value;r.debug(`[ABNF Parser] Parsed rules:`,i.rules.length),h(i),r.debug(`[ABNF Parser] Parse complete`)},`parse`),parser:{yy:o}},db:o,renderer:a,styles:i};export{g as diagram};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as e}from"./index-tgc7CLl2.js";import{t}from"./html-DpTpgMiG.js";var n=[Object.freeze(JSON.parse('{"injectionSelector":"L:text.html -comment","name":"angular-expression","patterns":[{"include":"#ngExpression"}],"repository":{"arrayLiteral":{"begin":"\\\\[","beginCaptures":{"0":{"name":"meta.brace.square.ts"}},"end":"]","endCaptures":{"0":{"name":"meta.brace.square.ts"}},"name":"meta.array.literal.ts","patterns":[{"include":"#ngExpression"},{"include":"#punctuationComma"}]},"booleanLiteral":{"patterns":[{"match":"(?<![$.])\\\\btrue\\\\b(?!\\\\$)","name":"constant.language.boolean.true.ts"},{"match":"(?<![$.])\\\\bfalse\\\\b(?!\\\\$)","name":"constant.language.boolean.false.ts"}]},"expressionOperator":{"patterns":[{"captures":{"1":{"name":"keyword.operator.logical.ts"},"2":{"name":"entity.name.function.pipe.ng"}},"match":"((?<!\\\\|)\\\\|(?!\\\\|))\\\\s?([-$0-9A-Z_a-z]*)"},{"match":"(?<![$.])\\\\b(let)\\\\b(?!\\\\$)","name":"storage.type.ts"},{"match":"(?<![$.])\\\\b(await)\\\\b(?!\\\\$)","name":"keyword.control.flow.ts"},{"match":"(?<![$.])\\\\bdelete\\\\b(?!\\\\$)","name":"keyword.operator.expression.delete.ts"},{"match":"(?<![$.])\\\\bin\\\\b(?!\\\\$)","name":"keyword.operator.expression.in.ts"},{"match":"(?<![$.])\\\\bof\\\\b(?!\\\\$)","name":"keyword.operator.expression.of.ts"},{"match":"(?<![$.])\\\\bif\\\\b(?!\\\\$)","name":"keyword.control.if.ts"},{"match":"(?<![$.])\\\\belse\\\\b(?!\\\\$)","name":"keyword.control.else.ts"},{"match":"(?<![$.])\\\\bthen\\\\b(?!\\\\$)","name":"keyword.control.then.ts"},{"match":"(?<![$.])\\\\binstanceof\\\\b(?!\\\\$)","name":"keyword.operator.expression.instanceof.ts"},{"match":"(?<![$.])\\\\bnew\\\\b(?!\\\\$)","name":"keyword.operator.new.ts"},{"match":"(?<![$.])\\\\bvoid\\\\b(?!\\\\$)","name":"keyword.operator.expression.void.ts"},{"begin":"(?<![$.])\\\\bas\\\\b(?!\\\\$)","beginCaptures":{"0":{"name":"storage.type.as.ts"}},"end":"(?=$|[]\\"\'),:;}])","patterns":[{"include":"#type"}]},{"match":"(?:\\\\*|(?<!\\\\()/|[-%+])=","name":"keyword.operator.assignment.compound.ts"},{"match":"(?:[\\\\&^]|<<|>>>??|\\\\|)=","name":"keyword.operator.assignment.compound.bitwise.ts"},{"match":"<<|>>>?","name":"keyword.operator.bitwise.shift.ts"},{"match":"[!=]==?","name":"keyword.operator.comparison.ts"},{"match":"<=|>=|<>|[<>]","name":"keyword.operator.relational.ts"},{"match":"!|&&|\\\\?\\\\?|\\\\|\\\\|","name":"keyword.operator.logical.ts"},{"match":"[\\\\&^|~]","name":"keyword.operator.bitwise.ts"},{"match":"=","name":"keyword.operator.assignment.ts"},{"match":"--","name":"keyword.operator.decrement.ts"},{"match":"\\\\+\\\\+","name":"keyword.operator.increment.ts"},{"match":"[-%*+/]","name":"keyword.operator.arithmetic.ts"},{"captures":{"1":{"name":"keyword.operator.arithmetic.ts"}},"match":"(?<=[$_[:alnum:]])\\\\s*(/)(?![*/])"},{"include":"#typeofOperator"}]},"functionCall":{"begin":"(?=(\\\\??\\\\.\\\\s*)?([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(<([^<>]|<[^<>]+>)+>\\\\s*)?\\\\()","end":"(?<=\\\\))(?!(\\\\??\\\\.\\\\s*)?([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(<([^<>]|<[^<>]+>)+>\\\\s*)?\\\\()","patterns":[{"match":"\\\\?","name":"punctuation.accessor.ts"},{"match":"\\\\.","name":"punctuation.accessor.ts"},{"match":"([$_[:alpha:]][$_[:alnum:]]*)","name":"entity.name.function.ts"},{"begin":"<","beginCaptures":{"0":{"name":"punctuation.definition.typeparameters.begin.ts"}},"end":">","endCaptures":{"0":{"name":"punctuation.definition.typeparameters.end.ts"}},"name":"meta.type.parameters.ts","patterns":[{"include":"#type"},{"include":"#punctuationComma"}]},{"include":"#parenExpression"}]},"functionParameters":{"begin":"\\\\(","beginCaptures":{"0":{"name":"punctuation.definition.parameters.begin.ts"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.definition.parameters.end.ts"}},"name":"meta.parameters.ts","patterns":[{"include":"#decorator"},{"include":"#parameterName"},{"include":"#variableInitializer"},{"match":",","name":"punctuation.separator.parameter.ts"}]},"identifiers":{"patterns":[{"match":"([$_[:alpha:]][$_[:alnum:]]*)(?=\\\\s*\\\\.\\\\s*prototype\\\\b(?!\\\\$))","name":"support.class.ts"},{"captures":{"1":{"name":"punctuation.accessor.ts"},"2":{"name":"constant.other.object.property.ts"},"3":{"name":"variable.other.object.property.ts"}},"match":"([!?]?\\\\.)\\\\s*(?:(\\\\p{upper}[$_\\\\d[:upper:]]*)|([$_[:alpha:]][$_[:alnum:]]*))(?=\\\\s*\\\\.\\\\s*[$_[:alpha:]][$_[:alnum:]]*)"},{"captures":{"1":{"name":"punctuation.accessor.ts"},"2":{"name":"entity.name.function.ts"}},"match":"(?:([!?]?\\\\.)\\\\s*)?([$_[:alpha:]][$_[:alnum:]]*)(?=\\\\s*=\\\\s*((async\\\\s+)|(function\\\\s*[(<])|(function\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\s*=>)|((<([^<>]|<[^<>]+>)+>\\\\s*)?\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)(\\\\s*:\\\\s*(.)*)?\\\\s*=>)))"},{"captures":{"1":{"name":"punctuation.accessor.ts"},"2":{"name":"constant.other.property.ts"}},"match":"([!?]?\\\\.)\\\\s*(\\\\p{upper}[$_\\\\d[:upper:]]*)(?![$_[:alnum:]])"},{"captures":{"1":{"name":"punctuation.accessor.ts"},"2":{"name":"variable.other.property.ts"}},"match":"([!?]?\\\\.)\\\\s*([$_[:alpha:]][$_[:alnum:]]*)"},{"captures":{"1":{"name":"constant.other.object.ts"},"2":{"name":"variable.other.object.ts"}},"match":"(?:(\\\\p{upper}[$_\\\\d[:upper:]]*)|([$_[:alpha:]][$_[:alnum:]]*))(?=\\\\s*\\\\.\\\\s*[$_[:alpha:]][$_[:alnum:]]*)"},{"match":"(\\\\p{upper}[$_\\\\d[:upper:]]*)(?![$_[:alnum:]])","name":"constant.character.other"},{"match":"[$_[:alpha:]][$_[:alnum:]]*","name":"variable.other.readwrite.ts"}]},"literal":{"name":"literal.ts","patterns":[{"include":"#numericLiteral"},{"include":"#booleanLiteral"},{"include":"#nullLiteral"},{"include":"#undefinedLiteral"},{"include":"#numericConstantLiteral"},{"include":"#arrayLiteral"},{"include":"#thisLiteral"}]},"ngExpression":{"name":"meta.expression.ng","patterns":[{"include":"#string"},{"include":"#literal"},{"include":"#ternaryExpression"},{"include":"#expressionOperator"},{"include":"#functionCall"},{"include":"#identifiers"},{"include":"#parenExpression"},{"include":"#punctuationComma"},{"include":"#punctuationSemicolon"},{"include":"#punctuationAccessor"}]},"nullLiteral":{"match":"(?<![$.])\\\\bnull\\\\b(?!\\\\$)","name":"constant.language.null.ts"},"numericConstantLiteral":{"patterns":[{"match":"(?<![$.])\\\\bNaN\\\\b(?!\\\\$)","name":"constant.language.nan.ts"},{"match":"(?<![$.])\\\\bInfinity\\\\b(?!\\\\$)","name":"constant.language.infinity.ts"}]},"numericLiteral":{"patterns":[{"match":"\\\\b(?<!\\\\$)0([Xx])\\\\h+\\\\b(?!\\\\$)","name":"constant.numeric.hex.ts"},{"match":"\\\\b(?<!\\\\$)0([Bb])[01]+\\\\b(?!\\\\$)","name":"constant.numeric.binary.ts"},{"match":"\\\\\\\\b(?<!\\\\$)0([Oo])?[0-7]+\\\\b(?!\\\\$)","name":"constant.numeric.octal.ts"},{"captures":{"0":{"name":"constant.numeric.decimal.ts"},"1":{"name":"meta.delimiter.decimal.period.ts"},"2":{"name":"meta.delimiter.decimal.period.ts"},"3":{"name":"meta.delimiter.decimal.period.ts"},"4":{"name":"meta.delimiter.decimal.period.ts"},"5":{"name":"meta.delimiter.decimal.period.ts"},"6":{"name":"meta.delimiter.decimal.period.ts"}},"match":"(?<!\\\\$)(?:\\\\b[0-9]+(\\\\.)[0-9]+[Ee][-+]?[0-9]+\\\\b|\\\\b[0-9]+(\\\\.)[Ee][-+]?[0-9]+\\\\b|\\\\B(\\\\.)[0-9]+[Ee][-+]?[0-9]+\\\\b|\\\\b[0-9]+[Ee][-+]?[0-9]+\\\\b|\\\\b[0-9]+(\\\\.)\\\\B|\\\\B(\\\\.)[0-9]+\\\\b|\\\\b[0-9]+\\\\b(?!\\\\.))(?!\\\\$)"}]},"parameterName":{"patterns":[{"captures":{"1":{"name":"storage.modifier.ts"},"2":{"name":"storage.modifier.ts"},"3":{"name":"keyword.operator.rest.ts"},"4":{"name":"entity.name.function.ts"},"5":{"name":"keyword.operator.optional.ts"}},"match":"(?:\\\\s*\\\\b(readonly)\\\\s+)?(?:\\\\s*\\\\b(p(?:ublic|rivate|rotected))\\\\s+)?(\\\\.\\\\.\\\\.)?\\\\s*(?<![:=])([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(\\\\??)(?=\\\\s*(=\\\\s*((async\\\\s+)|(function\\\\s*[(<])|(function\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\s*=>)|((<([^<>]|<[^<>]+>)+>\\\\s*)?\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)(\\\\s*:\\\\s*(.)*)?\\\\s*=>)))|(:\\\\s*((<)|(\\\\(\\\\s*((\\\\))|(\\\\.\\\\.\\\\.)|([$_[:alnum:]]+\\\\s*(([,:=?])|(\\\\)\\\\s*=>))))))))"},{"captures":{"1":{"name":"storage.modifier.ts"},"2":{"name":"storage.modifier.ts"},"3":{"name":"keyword.operator.rest.ts"},"4":{"name":"variable.parameter.ts"},"5":{"name":"keyword.operator.optional.ts"}},"match":"(?:\\\\s*\\\\b(readonly)\\\\s+)?(?:\\\\s*\\\\b(p(?:ublic|rivate|rotected))\\\\s+)?(\\\\.\\\\.\\\\.)?\\\\s*(?<![:=])([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(\\\\??)"}]},"parenExpression":{"begin":"\\\\(","beginCaptures":{"0":{"name":"meta.brace.round.ts"}},"end":"\\\\)","endCaptures":{"0":{"name":"meta.brace.round.ts"}},"patterns":[{"include":"#ngExpression"},{"include":"#punctuationComma"}]},"punctuationAccessor":{"match":"(?:\\\\?|!?)\\\\.","name":"punctuation.accessor.ts"},"punctuationComma":{"match":",","name":"punctuation.separator.comma.ts"},"punctuationSemicolon":{"match":";","name":"punctuation.terminator.statement.ts"},"qstringDouble":{"begin":"\\"","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.ts"}},"end":"(\\")|([^\\\\n\\\\\\\\])$","endCaptures":{"1":{"name":"punctuation.definition.string.end.ts"},"2":{"name":"invalid.illegal.newline.ts"}},"name":"string.quoted.double.ts","patterns":[{"include":"#stringCharacterEscape"}]},"qstringSingle":{"begin":"\'","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.ts"}},"end":"(\')|([^\\\\n\\\\\\\\])$","endCaptures":{"1":{"name":"punctuation.definition.string.end.ts"},"2":{"name":"invalid.illegal.newline.ts"}},"name":"string.quoted.single.ts","patterns":[{"include":"#stringCharacterEscape"}]},"string":{"patterns":[{"include":"#qstringSingle"},{"include":"#qstringDouble"},{"include":"#templateLiteral"}]},"stringCharacterEscape":{"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.ts"},"templateLiteral":{"patterns":[{"include":"#templateLiteralCall"},{"begin":"([$_[:alpha:]][$_[:alnum:]]*)?(`)","beginCaptures":{"1":{"name":"entity.name.function.tagged-template.ts"},"2":{"name":"string.template.ts punctuation.definition.string.template.begin.ts"}},"contentName":"string.template.ts","end":"`","endCaptures":{"0":{"name":"string.template.ts punctuation.definition.string.template.end.ts"}},"patterns":[{"include":"#templateLiteralSubstitutionElement"},{"include":"#stringCharacterEscape"}]}]},"templateLiteralCall":{"patterns":[{"begin":"(?=(([$_[:alpha:]][$_[:alnum:]]*\\\\s*\\\\??\\\\.\\\\s*)*|(\\\\??\\\\.\\\\s*)?)([$_[:alpha:]][$_[:alnum:]]*)(<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))(([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\s*)?`)","end":"(?=`)","patterns":[{"begin":"(?=(([$_[:alpha:]][$_[:alnum:]]*\\\\s*\\\\??\\\\.\\\\s*)*|(\\\\??\\\\.\\\\s*)?)([$_[:alpha:]][$_[:alnum:]]*))","end":"(?=(<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))(([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\s*)?`)","patterns":[{"include":"#support-function-call-identifiers"},{"match":"([$_[:alpha:]][$_[:alnum:]]*)","name":"entity.name.function.tagged-template.ts"}]},{"include":"#typeArguments"}]},{"begin":"([$_[:alpha:]][$_[:alnum:]]*)?\\\\s*(?=(<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))(([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\s*)`)","beginCaptures":{"1":{"name":"entity.name.function.tagged-template.ts"}},"end":"(?=`)","patterns":[{"include":"#typeArguments"}]}]},"templateLiteralSubstitutionElement":{"begin":"\\\\$\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.template-expression.begin.ts"}},"contentName":"meta.embedded.line.ts","end":"}","endCaptures":{"0":{"name":"punctuation.definition.template-expression.end.ts"}},"name":"meta.template.expression.ts","patterns":[{"include":"#ngExpression"}]},"ternaryExpression":{"begin":"(?!\\\\?\\\\.\\\\s*\\\\D)(\\\\?)(?!\\\\?)","beginCaptures":{"1":{"name":"keyword.operator.ternary.ts"}},"end":"\\\\s*(:)","endCaptures":{"1":{"name":"keyword.operator.ternary.ts"}},"patterns":[{"include":"#ngExpression"}]},"thisLiteral":{"match":"(?<![$.])\\\\bthis\\\\b(?!\\\\$)","name":"variable.language.this.ts"},"type":{"name":"meta.type.ts","patterns":[{"include":"#string"},{"include":"#numericLiteral"},{"include":"#typeBuiltinLiterals"},{"include":"#typeTuple"},{"include":"#typeObject"},{"include":"#typeOperators"},{"include":"#typeFnTypeParameters"},{"include":"#typeParenOrFunctionParameters"},{"include":"#typeName"}]},"typeAnnotation":{"begin":":","beginCaptures":{"0":{"name":"keyword.operator.type.annotation.ts"}},"end":"(?=$|[]),;}]|//|\\")|(?==[^>])|(?<=[]$)>_}[:alpha:]])\\\\s*(?=\\\\{)","name":"meta.type.annotation.ts","patterns":[{"include":"#type"}]},"typeArguments":{"begin":"<","beginCaptures":{"0":{"name":"punctuation.definition.typeparameters.begin.ts"}},"end":">","endCaptures":{"0":{"name":"punctuation.definition.typeparameters.end.ts"}},"name":"meta.type.parameters.ts","patterns":[{"include":"#typeArgumentsBody"}]},"typeArgumentsBody":{"patterns":[{"captures":{"0":{"name":"keyword.operator.type.ts"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(_)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))"},{"include":"#type"},{"include":"#punctuationComma"}]},"typeBuiltinLiterals":{"match":"(?<![$.])\\\\b(this|true|false|undefined|null)\\\\b(?!\\\\$)","name":"support.type.builtin.ts"},"typeFnTypeParameters":{"patterns":[{"captures":{"1":{"name":"keyword.control.new.ts"}},"match":"(?<![$.])\\\\b(new)\\\\b(?=\\\\s*<)","name":"meta.type.constructor.ts"},{"begin":"(?<![$.])\\\\b(new)\\\\b\\\\s*(?=\\\\()","beginCaptures":{"1":{"name":"keyword.control.new.ts"}},"end":"(?<=\\\\))","name":"meta.type.constructor.ts","patterns":[{"include":"#functionParameters"}]},{"begin":"(?<=>)\\\\s*(?=\\\\()","end":"(?<=\\\\))","include":"#typeofOperator","name":"meta.type.function.ts","patterns":[{"include":"#functionParameters"}]},{"begin":"((?=\\\\(\\\\s*((\\\\))|(\\\\.\\\\.\\\\.)|([$_[:alnum:]]+\\\\s*(([,:=?])|(\\\\)\\\\s*=>))))))","end":"(?<=\\\\))","name":"meta.type.function.ts","patterns":[{"include":"#functionParameters"}]}]},"typeName":{"patterns":[{"captures":{"1":{"name":"entity.name.type.module.ts"},"2":{"name":"punctuation.accessor.ts"}},"match":"([$_[:alpha:]][$_[:alnum:]]*)\\\\s*([!?]?\\\\.)"},{"match":"[$_[:alpha:]][$_[:alnum:]]*","name":"entity.name.type.ts"}]},"typeObject":{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.block.ts"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.block.ts"}},"name":"meta.object.type.ts","patterns":[{"include":"#typeObjectMembers"}]},"typeObjectMembers":{"patterns":[{"include":"#typeAnnotation"},{"include":"#punctuationComma"},{"include":"#punctuationSemicolon"}]},"typeOperators":{"patterns":[{"include":"#typeofOperator"},{"match":"[\\\\&|]","name":"keyword.operator.type.ts"},{"match":"(?<![$.])\\\\bkeyof\\\\b(?!\\\\$)","name":"keyword.operator.expression.keyof.ts"}]},"typeParenOrFunctionParameters":{"begin":"\\\\(","beginCaptures":{"0":{"name":"meta.brace.round.ts"}},"end":"\\\\)","endCaptures":{"0":{"name":"meta.brace.round.ts"}},"name":"meta.type.paren.cover.ts","patterns":[{"include":"#type"},{"include":"#functionParameters"}]},"typeTuple":{"begin":"\\\\[","beginCaptures":{"0":{"name":"meta.brace.square.ts"}},"end":"]","endCaptures":{"0":{"name":"meta.brace.square.ts"}},"name":"meta.type.tuple.ts","patterns":[{"include":"#type"},{"include":"#punctuationComma"}]},"typeofOperator":{"match":"(?<![$.])\\\\btypeof\\\\b(?!\\\\$)","name":"keyword.operator.expression.typeof.ts"},"undefinedLiteral":{"match":"(?<![$.])\\\\bundefined\\\\b(?!\\\\$)","name":"constant.language.undefined.ts"},"variableInitializer":{"begin":"(?<![!=])(=)(?!=)","beginCaptures":{"1":{"name":"keyword.operator.assignment.ts"}},"end":"(?=$|[]),;}])","patterns":[{"include":"#ngExpression"}]}},"scopeName":"expression.ng"}'))],r=Object.freeze(JSON.parse(`{"injectTo":["text.html.derivative","text.html.derivative.ng","source.ts.ng"],"injectionSelector":"L:text.html -comment -expression.ng -meta.tag -source.css -source.js","name":"angular-let-declaration","patterns":[{"include":"#letDeclaration"}],"repository":{"letDeclaration":{"begin":"(@let)\\\\s+([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(=)?","beginCaptures":{"1":{"name":"storage.type.ng"},"2":{"name":"variable.other.constant.ng"},"3":{"name":"keyword.operator.assignment.ng"}},"end":"(?<=;)","name":"meta.definition.variable.ng","patterns":[{"include":"#letInitializer"}]},"letInitializer":{"begin":"\\\\s*","beginCaptures":{"0":{"name":"keyword.operator.assignment.ng"}},"contentName":"meta.definition.variable.initializer.ng","end":";","endCaptures":{"0":{"name":"punctuation.terminator.statement.ng"}},"patterns":[{"include":"expression.ng"}]}},"scopeName":"template.let.ng","embeddedLangs":["angular-expression"]}`)),i=[...n,r],a=Object.freeze(JSON.parse(`{"injectTo":["text.html.derivative","text.html.derivative.ng","source.ts.ng"],"injectionSelector":"L:text.html -comment","name":"angular-template","patterns":[{"include":"#interpolation"}],"repository":{"interpolation":{"begin":"\\\\{\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.block.ts"}},"contentName":"expression.ng","end":"}}","endCaptures":{"0":{"name":"punctuation.definition.block.ts"}},"patterns":[{"include":"expression.ng"}]}},"scopeName":"template.ng","embeddedLangs":["angular-expression"]}`)),o=[...n,a],s=Object.freeze(JSON.parse(`{"injectTo":["text.html.derivative","text.html.derivative.ng","source.ts.ng"],"injectionSelector":"L:text.html -comment -expression.ng -meta.tag -source.css -source.js","name":"angular-template-blocks","patterns":[{"include":"#block"}],"repository":{"block":{"begin":"(@)(if|else if|else|defer|placeholder|loading|error|switch|case|default|for|empty)\\\\s*","beginCaptures":{"1":{"patterns":[{"include":"#transition"}]},"2":{"name":"keyword.control.block.kind.ng"}},"end":"(?<=})","name":"control.block.ng","patterns":[{"include":"#blockExpression"},{"include":"#blockBody"}]},"blockBody":{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.block.ts"}},"contentName":"control.block.body.ng","end":"}","endCaptures":{"0":{"name":"punctuation.definition.block.ts"}},"patterns":[{"include":"text.html.derivative.ng"},{"include":"template.ng"}]},"blockExpression":{"begin":"\\\\(","beginCaptures":{"0":{"name":"meta.brace.round.ts"}},"contentName":"control.block.expression.ng","end":"\\\\)","endCaptures":{"0":{"name":"meta.brace.round.ts"}},"patterns":[{"include":"#blockExpressionOfClause"},{"include":"#blockExpressionLetBinding"},{"include":"#blockExpressionTrackClause"},{"include":"expression.ng"}]},"blockExpressionLetBinding":{"begin":"\\\\blet\\\\b","beginCaptures":{"0":{"name":"storage.type.ng"}},"end":"(?=[$)])|(?<=;)","patterns":[{"include":"expression.ng"}]},"blockExpressionOfClause":{"begin":"([$_[:alpha:]][$_[:alnum:]]*)\\\\s+(of)\\\\b","beginCaptures":{"1":{"name":"variable.other.constant.ng"},"2":{"name":"keyword.operator.expression.of.ng"}},"end":"(?=[$)])|(?<=;)","patterns":[{"include":"expression.ng"}]},"blockExpressionTrackClause":{"begin":"\\\\btrack\\\\b","beginCaptures":{"0":{"name":"keyword.control.track.ng"}},"end":"(?=[$)])|(?<=;)","patterns":[{"include":"expression.ng"}]},"transition":{"match":"@","name":"keyword.control.block.transition.ng"}},"scopeName":"template.blocks.ng","embeddedLangs":["angular-expression","angular-template"]}`)),c=[...n,...o,s],l=e({default:()=>d}),u=Object.freeze(JSON.parse(`{"displayName":"Angular HTML","injections":{"R:text.html - (comment.block, text.html meta.embedded, meta.tag.*.*.html, meta.tag.*.*.*.html, meta.tag.*.*.*.*.html)":{"patterns":[{"match":"<","name":"invalid.illegal.bad-angle-bracket.html"}]}},"name":"angular-html","patterns":[{"include":"text.html.basic#core-minus-invalid"},{"begin":"(</?)(\\\\w[^>\\\\s]*)(?<!/)","beginCaptures":{"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"}},"end":"((?: ?/)?>)","endCaptures":{"1":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.tag.other.unrecognized.html.derivative","patterns":[{"include":"text.html.basic#attribute"}]}],"scopeName":"text.html.derivative.ng","embeddedLangs":["html","angular-expression","angular-let-declaration","angular-template","angular-template-blocks"]}`)),d=[...t,...n,...i,...o,...c,u];export{i as a,o as i,l as n,n as o,c as r,d as t};
|
|
1
|
+
import{r as e}from"./index-LKycHUia.js";import{t}from"./html-Dirc4JcS.js";var n=[Object.freeze(JSON.parse('{"injectionSelector":"L:text.html -comment","name":"angular-expression","patterns":[{"include":"#ngExpression"}],"repository":{"arrayLiteral":{"begin":"\\\\[","beginCaptures":{"0":{"name":"meta.brace.square.ts"}},"end":"]","endCaptures":{"0":{"name":"meta.brace.square.ts"}},"name":"meta.array.literal.ts","patterns":[{"include":"#ngExpression"},{"include":"#punctuationComma"}]},"booleanLiteral":{"patterns":[{"match":"(?<![$.])\\\\btrue\\\\b(?!\\\\$)","name":"constant.language.boolean.true.ts"},{"match":"(?<![$.])\\\\bfalse\\\\b(?!\\\\$)","name":"constant.language.boolean.false.ts"}]},"expressionOperator":{"patterns":[{"captures":{"1":{"name":"keyword.operator.logical.ts"},"2":{"name":"entity.name.function.pipe.ng"}},"match":"((?<!\\\\|)\\\\|(?!\\\\|))\\\\s?([-$0-9A-Z_a-z]*)"},{"match":"(?<![$.])\\\\b(let)\\\\b(?!\\\\$)","name":"storage.type.ts"},{"match":"(?<![$.])\\\\b(await)\\\\b(?!\\\\$)","name":"keyword.control.flow.ts"},{"match":"(?<![$.])\\\\bdelete\\\\b(?!\\\\$)","name":"keyword.operator.expression.delete.ts"},{"match":"(?<![$.])\\\\bin\\\\b(?!\\\\$)","name":"keyword.operator.expression.in.ts"},{"match":"(?<![$.])\\\\bof\\\\b(?!\\\\$)","name":"keyword.operator.expression.of.ts"},{"match":"(?<![$.])\\\\bif\\\\b(?!\\\\$)","name":"keyword.control.if.ts"},{"match":"(?<![$.])\\\\belse\\\\b(?!\\\\$)","name":"keyword.control.else.ts"},{"match":"(?<![$.])\\\\bthen\\\\b(?!\\\\$)","name":"keyword.control.then.ts"},{"match":"(?<![$.])\\\\binstanceof\\\\b(?!\\\\$)","name":"keyword.operator.expression.instanceof.ts"},{"match":"(?<![$.])\\\\bnew\\\\b(?!\\\\$)","name":"keyword.operator.new.ts"},{"match":"(?<![$.])\\\\bvoid\\\\b(?!\\\\$)","name":"keyword.operator.expression.void.ts"},{"begin":"(?<![$.])\\\\bas\\\\b(?!\\\\$)","beginCaptures":{"0":{"name":"storage.type.as.ts"}},"end":"(?=$|[]\\"\'),:;}])","patterns":[{"include":"#type"}]},{"match":"(?:\\\\*|(?<!\\\\()/|[-%+])=","name":"keyword.operator.assignment.compound.ts"},{"match":"(?:[\\\\&^]|<<|>>>??|\\\\|)=","name":"keyword.operator.assignment.compound.bitwise.ts"},{"match":"<<|>>>?","name":"keyword.operator.bitwise.shift.ts"},{"match":"[!=]==?","name":"keyword.operator.comparison.ts"},{"match":"<=|>=|<>|[<>]","name":"keyword.operator.relational.ts"},{"match":"!|&&|\\\\?\\\\?|\\\\|\\\\|","name":"keyword.operator.logical.ts"},{"match":"[\\\\&^|~]","name":"keyword.operator.bitwise.ts"},{"match":"=","name":"keyword.operator.assignment.ts"},{"match":"--","name":"keyword.operator.decrement.ts"},{"match":"\\\\+\\\\+","name":"keyword.operator.increment.ts"},{"match":"[-%*+/]","name":"keyword.operator.arithmetic.ts"},{"captures":{"1":{"name":"keyword.operator.arithmetic.ts"}},"match":"(?<=[$_[:alnum:]])\\\\s*(/)(?![*/])"},{"include":"#typeofOperator"}]},"functionCall":{"begin":"(?=(\\\\??\\\\.\\\\s*)?([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(<([^<>]|<[^<>]+>)+>\\\\s*)?\\\\()","end":"(?<=\\\\))(?!(\\\\??\\\\.\\\\s*)?([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(<([^<>]|<[^<>]+>)+>\\\\s*)?\\\\()","patterns":[{"match":"\\\\?","name":"punctuation.accessor.ts"},{"match":"\\\\.","name":"punctuation.accessor.ts"},{"match":"([$_[:alpha:]][$_[:alnum:]]*)","name":"entity.name.function.ts"},{"begin":"<","beginCaptures":{"0":{"name":"punctuation.definition.typeparameters.begin.ts"}},"end":">","endCaptures":{"0":{"name":"punctuation.definition.typeparameters.end.ts"}},"name":"meta.type.parameters.ts","patterns":[{"include":"#type"},{"include":"#punctuationComma"}]},{"include":"#parenExpression"}]},"functionParameters":{"begin":"\\\\(","beginCaptures":{"0":{"name":"punctuation.definition.parameters.begin.ts"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.definition.parameters.end.ts"}},"name":"meta.parameters.ts","patterns":[{"include":"#decorator"},{"include":"#parameterName"},{"include":"#variableInitializer"},{"match":",","name":"punctuation.separator.parameter.ts"}]},"identifiers":{"patterns":[{"match":"([$_[:alpha:]][$_[:alnum:]]*)(?=\\\\s*\\\\.\\\\s*prototype\\\\b(?!\\\\$))","name":"support.class.ts"},{"captures":{"1":{"name":"punctuation.accessor.ts"},"2":{"name":"constant.other.object.property.ts"},"3":{"name":"variable.other.object.property.ts"}},"match":"([!?]?\\\\.)\\\\s*(?:(\\\\p{upper}[$_\\\\d[:upper:]]*)|([$_[:alpha:]][$_[:alnum:]]*))(?=\\\\s*\\\\.\\\\s*[$_[:alpha:]][$_[:alnum:]]*)"},{"captures":{"1":{"name":"punctuation.accessor.ts"},"2":{"name":"entity.name.function.ts"}},"match":"(?:([!?]?\\\\.)\\\\s*)?([$_[:alpha:]][$_[:alnum:]]*)(?=\\\\s*=\\\\s*((async\\\\s+)|(function\\\\s*[(<])|(function\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\s*=>)|((<([^<>]|<[^<>]+>)+>\\\\s*)?\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)(\\\\s*:\\\\s*(.)*)?\\\\s*=>)))"},{"captures":{"1":{"name":"punctuation.accessor.ts"},"2":{"name":"constant.other.property.ts"}},"match":"([!?]?\\\\.)\\\\s*(\\\\p{upper}[$_\\\\d[:upper:]]*)(?![$_[:alnum:]])"},{"captures":{"1":{"name":"punctuation.accessor.ts"},"2":{"name":"variable.other.property.ts"}},"match":"([!?]?\\\\.)\\\\s*([$_[:alpha:]][$_[:alnum:]]*)"},{"captures":{"1":{"name":"constant.other.object.ts"},"2":{"name":"variable.other.object.ts"}},"match":"(?:(\\\\p{upper}[$_\\\\d[:upper:]]*)|([$_[:alpha:]][$_[:alnum:]]*))(?=\\\\s*\\\\.\\\\s*[$_[:alpha:]][$_[:alnum:]]*)"},{"match":"(\\\\p{upper}[$_\\\\d[:upper:]]*)(?![$_[:alnum:]])","name":"constant.character.other"},{"match":"[$_[:alpha:]][$_[:alnum:]]*","name":"variable.other.readwrite.ts"}]},"literal":{"name":"literal.ts","patterns":[{"include":"#numericLiteral"},{"include":"#booleanLiteral"},{"include":"#nullLiteral"},{"include":"#undefinedLiteral"},{"include":"#numericConstantLiteral"},{"include":"#arrayLiteral"},{"include":"#thisLiteral"}]},"ngExpression":{"name":"meta.expression.ng","patterns":[{"include":"#string"},{"include":"#literal"},{"include":"#ternaryExpression"},{"include":"#expressionOperator"},{"include":"#functionCall"},{"include":"#identifiers"},{"include":"#parenExpression"},{"include":"#punctuationComma"},{"include":"#punctuationSemicolon"},{"include":"#punctuationAccessor"}]},"nullLiteral":{"match":"(?<![$.])\\\\bnull\\\\b(?!\\\\$)","name":"constant.language.null.ts"},"numericConstantLiteral":{"patterns":[{"match":"(?<![$.])\\\\bNaN\\\\b(?!\\\\$)","name":"constant.language.nan.ts"},{"match":"(?<![$.])\\\\bInfinity\\\\b(?!\\\\$)","name":"constant.language.infinity.ts"}]},"numericLiteral":{"patterns":[{"match":"\\\\b(?<!\\\\$)0([Xx])\\\\h+\\\\b(?!\\\\$)","name":"constant.numeric.hex.ts"},{"match":"\\\\b(?<!\\\\$)0([Bb])[01]+\\\\b(?!\\\\$)","name":"constant.numeric.binary.ts"},{"match":"\\\\\\\\b(?<!\\\\$)0([Oo])?[0-7]+\\\\b(?!\\\\$)","name":"constant.numeric.octal.ts"},{"captures":{"0":{"name":"constant.numeric.decimal.ts"},"1":{"name":"meta.delimiter.decimal.period.ts"},"2":{"name":"meta.delimiter.decimal.period.ts"},"3":{"name":"meta.delimiter.decimal.period.ts"},"4":{"name":"meta.delimiter.decimal.period.ts"},"5":{"name":"meta.delimiter.decimal.period.ts"},"6":{"name":"meta.delimiter.decimal.period.ts"}},"match":"(?<!\\\\$)(?:\\\\b[0-9]+(\\\\.)[0-9]+[Ee][-+]?[0-9]+\\\\b|\\\\b[0-9]+(\\\\.)[Ee][-+]?[0-9]+\\\\b|\\\\B(\\\\.)[0-9]+[Ee][-+]?[0-9]+\\\\b|\\\\b[0-9]+[Ee][-+]?[0-9]+\\\\b|\\\\b[0-9]+(\\\\.)\\\\B|\\\\B(\\\\.)[0-9]+\\\\b|\\\\b[0-9]+\\\\b(?!\\\\.))(?!\\\\$)"}]},"parameterName":{"patterns":[{"captures":{"1":{"name":"storage.modifier.ts"},"2":{"name":"storage.modifier.ts"},"3":{"name":"keyword.operator.rest.ts"},"4":{"name":"entity.name.function.ts"},"5":{"name":"keyword.operator.optional.ts"}},"match":"(?:\\\\s*\\\\b(readonly)\\\\s+)?(?:\\\\s*\\\\b(p(?:ublic|rivate|rotected))\\\\s+)?(\\\\.\\\\.\\\\.)?\\\\s*(?<![:=])([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(\\\\??)(?=\\\\s*(=\\\\s*((async\\\\s+)|(function\\\\s*[(<])|(function\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\s*=>)|((<([^<>]|<[^<>]+>)+>\\\\s*)?\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)(\\\\s*:\\\\s*(.)*)?\\\\s*=>)))|(:\\\\s*((<)|(\\\\(\\\\s*((\\\\))|(\\\\.\\\\.\\\\.)|([$_[:alnum:]]+\\\\s*(([,:=?])|(\\\\)\\\\s*=>))))))))"},{"captures":{"1":{"name":"storage.modifier.ts"},"2":{"name":"storage.modifier.ts"},"3":{"name":"keyword.operator.rest.ts"},"4":{"name":"variable.parameter.ts"},"5":{"name":"keyword.operator.optional.ts"}},"match":"(?:\\\\s*\\\\b(readonly)\\\\s+)?(?:\\\\s*\\\\b(p(?:ublic|rivate|rotected))\\\\s+)?(\\\\.\\\\.\\\\.)?\\\\s*(?<![:=])([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(\\\\??)"}]},"parenExpression":{"begin":"\\\\(","beginCaptures":{"0":{"name":"meta.brace.round.ts"}},"end":"\\\\)","endCaptures":{"0":{"name":"meta.brace.round.ts"}},"patterns":[{"include":"#ngExpression"},{"include":"#punctuationComma"}]},"punctuationAccessor":{"match":"(?:\\\\?|!?)\\\\.","name":"punctuation.accessor.ts"},"punctuationComma":{"match":",","name":"punctuation.separator.comma.ts"},"punctuationSemicolon":{"match":";","name":"punctuation.terminator.statement.ts"},"qstringDouble":{"begin":"\\"","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.ts"}},"end":"(\\")|([^\\\\n\\\\\\\\])$","endCaptures":{"1":{"name":"punctuation.definition.string.end.ts"},"2":{"name":"invalid.illegal.newline.ts"}},"name":"string.quoted.double.ts","patterns":[{"include":"#stringCharacterEscape"}]},"qstringSingle":{"begin":"\'","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.ts"}},"end":"(\')|([^\\\\n\\\\\\\\])$","endCaptures":{"1":{"name":"punctuation.definition.string.end.ts"},"2":{"name":"invalid.illegal.newline.ts"}},"name":"string.quoted.single.ts","patterns":[{"include":"#stringCharacterEscape"}]},"string":{"patterns":[{"include":"#qstringSingle"},{"include":"#qstringDouble"},{"include":"#templateLiteral"}]},"stringCharacterEscape":{"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.ts"},"templateLiteral":{"patterns":[{"include":"#templateLiteralCall"},{"begin":"([$_[:alpha:]][$_[:alnum:]]*)?(`)","beginCaptures":{"1":{"name":"entity.name.function.tagged-template.ts"},"2":{"name":"string.template.ts punctuation.definition.string.template.begin.ts"}},"contentName":"string.template.ts","end":"`","endCaptures":{"0":{"name":"string.template.ts punctuation.definition.string.template.end.ts"}},"patterns":[{"include":"#templateLiteralSubstitutionElement"},{"include":"#stringCharacterEscape"}]}]},"templateLiteralCall":{"patterns":[{"begin":"(?=(([$_[:alpha:]][$_[:alnum:]]*\\\\s*\\\\??\\\\.\\\\s*)*|(\\\\??\\\\.\\\\s*)?)([$_[:alpha:]][$_[:alnum:]]*)(<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))(([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\s*)?`)","end":"(?=`)","patterns":[{"begin":"(?=(([$_[:alpha:]][$_[:alnum:]]*\\\\s*\\\\??\\\\.\\\\s*)*|(\\\\??\\\\.\\\\s*)?)([$_[:alpha:]][$_[:alnum:]]*))","end":"(?=(<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))(([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\s*)?`)","patterns":[{"include":"#support-function-call-identifiers"},{"match":"([$_[:alpha:]][$_[:alnum:]]*)","name":"entity.name.function.tagged-template.ts"}]},{"include":"#typeArguments"}]},{"begin":"([$_[:alpha:]][$_[:alnum:]]*)?\\\\s*(?=(<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))(([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\s*)`)","beginCaptures":{"1":{"name":"entity.name.function.tagged-template.ts"}},"end":"(?=`)","patterns":[{"include":"#typeArguments"}]}]},"templateLiteralSubstitutionElement":{"begin":"\\\\$\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.template-expression.begin.ts"}},"contentName":"meta.embedded.line.ts","end":"}","endCaptures":{"0":{"name":"punctuation.definition.template-expression.end.ts"}},"name":"meta.template.expression.ts","patterns":[{"include":"#ngExpression"}]},"ternaryExpression":{"begin":"(?!\\\\?\\\\.\\\\s*\\\\D)(\\\\?)(?!\\\\?)","beginCaptures":{"1":{"name":"keyword.operator.ternary.ts"}},"end":"\\\\s*(:)","endCaptures":{"1":{"name":"keyword.operator.ternary.ts"}},"patterns":[{"include":"#ngExpression"}]},"thisLiteral":{"match":"(?<![$.])\\\\bthis\\\\b(?!\\\\$)","name":"variable.language.this.ts"},"type":{"name":"meta.type.ts","patterns":[{"include":"#string"},{"include":"#numericLiteral"},{"include":"#typeBuiltinLiterals"},{"include":"#typeTuple"},{"include":"#typeObject"},{"include":"#typeOperators"},{"include":"#typeFnTypeParameters"},{"include":"#typeParenOrFunctionParameters"},{"include":"#typeName"}]},"typeAnnotation":{"begin":":","beginCaptures":{"0":{"name":"keyword.operator.type.annotation.ts"}},"end":"(?=$|[]),;}]|//|\\")|(?==[^>])|(?<=[]$)>_}[:alpha:]])\\\\s*(?=\\\\{)","name":"meta.type.annotation.ts","patterns":[{"include":"#type"}]},"typeArguments":{"begin":"<","beginCaptures":{"0":{"name":"punctuation.definition.typeparameters.begin.ts"}},"end":">","endCaptures":{"0":{"name":"punctuation.definition.typeparameters.end.ts"}},"name":"meta.type.parameters.ts","patterns":[{"include":"#typeArgumentsBody"}]},"typeArgumentsBody":{"patterns":[{"captures":{"0":{"name":"keyword.operator.type.ts"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(_)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))"},{"include":"#type"},{"include":"#punctuationComma"}]},"typeBuiltinLiterals":{"match":"(?<![$.])\\\\b(this|true|false|undefined|null)\\\\b(?!\\\\$)","name":"support.type.builtin.ts"},"typeFnTypeParameters":{"patterns":[{"captures":{"1":{"name":"keyword.control.new.ts"}},"match":"(?<![$.])\\\\b(new)\\\\b(?=\\\\s*<)","name":"meta.type.constructor.ts"},{"begin":"(?<![$.])\\\\b(new)\\\\b\\\\s*(?=\\\\()","beginCaptures":{"1":{"name":"keyword.control.new.ts"}},"end":"(?<=\\\\))","name":"meta.type.constructor.ts","patterns":[{"include":"#functionParameters"}]},{"begin":"(?<=>)\\\\s*(?=\\\\()","end":"(?<=\\\\))","include":"#typeofOperator","name":"meta.type.function.ts","patterns":[{"include":"#functionParameters"}]},{"begin":"((?=\\\\(\\\\s*((\\\\))|(\\\\.\\\\.\\\\.)|([$_[:alnum:]]+\\\\s*(([,:=?])|(\\\\)\\\\s*=>))))))","end":"(?<=\\\\))","name":"meta.type.function.ts","patterns":[{"include":"#functionParameters"}]}]},"typeName":{"patterns":[{"captures":{"1":{"name":"entity.name.type.module.ts"},"2":{"name":"punctuation.accessor.ts"}},"match":"([$_[:alpha:]][$_[:alnum:]]*)\\\\s*([!?]?\\\\.)"},{"match":"[$_[:alpha:]][$_[:alnum:]]*","name":"entity.name.type.ts"}]},"typeObject":{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.block.ts"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.block.ts"}},"name":"meta.object.type.ts","patterns":[{"include":"#typeObjectMembers"}]},"typeObjectMembers":{"patterns":[{"include":"#typeAnnotation"},{"include":"#punctuationComma"},{"include":"#punctuationSemicolon"}]},"typeOperators":{"patterns":[{"include":"#typeofOperator"},{"match":"[\\\\&|]","name":"keyword.operator.type.ts"},{"match":"(?<![$.])\\\\bkeyof\\\\b(?!\\\\$)","name":"keyword.operator.expression.keyof.ts"}]},"typeParenOrFunctionParameters":{"begin":"\\\\(","beginCaptures":{"0":{"name":"meta.brace.round.ts"}},"end":"\\\\)","endCaptures":{"0":{"name":"meta.brace.round.ts"}},"name":"meta.type.paren.cover.ts","patterns":[{"include":"#type"},{"include":"#functionParameters"}]},"typeTuple":{"begin":"\\\\[","beginCaptures":{"0":{"name":"meta.brace.square.ts"}},"end":"]","endCaptures":{"0":{"name":"meta.brace.square.ts"}},"name":"meta.type.tuple.ts","patterns":[{"include":"#type"},{"include":"#punctuationComma"}]},"typeofOperator":{"match":"(?<![$.])\\\\btypeof\\\\b(?!\\\\$)","name":"keyword.operator.expression.typeof.ts"},"undefinedLiteral":{"match":"(?<![$.])\\\\bundefined\\\\b(?!\\\\$)","name":"constant.language.undefined.ts"},"variableInitializer":{"begin":"(?<![!=])(=)(?!=)","beginCaptures":{"1":{"name":"keyword.operator.assignment.ts"}},"end":"(?=$|[]),;}])","patterns":[{"include":"#ngExpression"}]}},"scopeName":"expression.ng"}'))],r=Object.freeze(JSON.parse(`{"injectTo":["text.html.derivative","text.html.derivative.ng","source.ts.ng"],"injectionSelector":"L:text.html -comment -expression.ng -meta.tag -source.css -source.js","name":"angular-let-declaration","patterns":[{"include":"#letDeclaration"}],"repository":{"letDeclaration":{"begin":"(@let)\\\\s+([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(=)?","beginCaptures":{"1":{"name":"storage.type.ng"},"2":{"name":"variable.other.constant.ng"},"3":{"name":"keyword.operator.assignment.ng"}},"end":"(?<=;)","name":"meta.definition.variable.ng","patterns":[{"include":"#letInitializer"}]},"letInitializer":{"begin":"\\\\s*","beginCaptures":{"0":{"name":"keyword.operator.assignment.ng"}},"contentName":"meta.definition.variable.initializer.ng","end":";","endCaptures":{"0":{"name":"punctuation.terminator.statement.ng"}},"patterns":[{"include":"expression.ng"}]}},"scopeName":"template.let.ng","embeddedLangs":["angular-expression"]}`)),i=[...n,r],a=Object.freeze(JSON.parse(`{"injectTo":["text.html.derivative","text.html.derivative.ng","source.ts.ng"],"injectionSelector":"L:text.html -comment","name":"angular-template","patterns":[{"include":"#interpolation"}],"repository":{"interpolation":{"begin":"\\\\{\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.block.ts"}},"contentName":"expression.ng","end":"}}","endCaptures":{"0":{"name":"punctuation.definition.block.ts"}},"patterns":[{"include":"expression.ng"}]}},"scopeName":"template.ng","embeddedLangs":["angular-expression"]}`)),o=[...n,a],s=Object.freeze(JSON.parse(`{"injectTo":["text.html.derivative","text.html.derivative.ng","source.ts.ng"],"injectionSelector":"L:text.html -comment -expression.ng -meta.tag -source.css -source.js","name":"angular-template-blocks","patterns":[{"include":"#block"}],"repository":{"block":{"begin":"(@)(if|else if|else|defer|placeholder|loading|error|switch|case|default|for|empty)\\\\s*","beginCaptures":{"1":{"patterns":[{"include":"#transition"}]},"2":{"name":"keyword.control.block.kind.ng"}},"end":"(?<=})","name":"control.block.ng","patterns":[{"include":"#blockExpression"},{"include":"#blockBody"}]},"blockBody":{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.block.ts"}},"contentName":"control.block.body.ng","end":"}","endCaptures":{"0":{"name":"punctuation.definition.block.ts"}},"patterns":[{"include":"text.html.derivative.ng"},{"include":"template.ng"}]},"blockExpression":{"begin":"\\\\(","beginCaptures":{"0":{"name":"meta.brace.round.ts"}},"contentName":"control.block.expression.ng","end":"\\\\)","endCaptures":{"0":{"name":"meta.brace.round.ts"}},"patterns":[{"include":"#blockExpressionOfClause"},{"include":"#blockExpressionLetBinding"},{"include":"#blockExpressionTrackClause"},{"include":"expression.ng"}]},"blockExpressionLetBinding":{"begin":"\\\\blet\\\\b","beginCaptures":{"0":{"name":"storage.type.ng"}},"end":"(?=[$)])|(?<=;)","patterns":[{"include":"expression.ng"}]},"blockExpressionOfClause":{"begin":"([$_[:alpha:]][$_[:alnum:]]*)\\\\s+(of)\\\\b","beginCaptures":{"1":{"name":"variable.other.constant.ng"},"2":{"name":"keyword.operator.expression.of.ng"}},"end":"(?=[$)])|(?<=;)","patterns":[{"include":"expression.ng"}]},"blockExpressionTrackClause":{"begin":"\\\\btrack\\\\b","beginCaptures":{"0":{"name":"keyword.control.track.ng"}},"end":"(?=[$)])|(?<=;)","patterns":[{"include":"expression.ng"}]},"transition":{"match":"@","name":"keyword.control.block.transition.ng"}},"scopeName":"template.blocks.ng","embeddedLangs":["angular-expression","angular-template"]}`)),c=[...n,...o,s],l=e({default:()=>d}),u=Object.freeze(JSON.parse(`{"displayName":"Angular HTML","injections":{"R:text.html - (comment.block, text.html meta.embedded, meta.tag.*.*.html, meta.tag.*.*.*.html, meta.tag.*.*.*.*.html)":{"patterns":[{"match":"<","name":"invalid.illegal.bad-angle-bracket.html"}]}},"name":"angular-html","patterns":[{"include":"text.html.basic#core-minus-invalid"},{"begin":"(</?)(\\\\w[^>\\\\s]*)(?<!/)","beginCaptures":{"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"}},"end":"((?: ?/)?>)","endCaptures":{"1":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.tag.other.unrecognized.html.derivative","patterns":[{"include":"text.html.basic#attribute"}]}],"scopeName":"text.html.derivative.ng","embeddedLangs":["html","angular-expression","angular-let-declaration","angular-template","angular-template-blocks"]}`)),d=[...t,...n,...i,...o,...c,u];export{i as a,o as i,l as n,n as o,c as r,d as t};
|