@spikonado/sprocket 0.4.1 → 0.4.2
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 +4 -11
- package/THIRD_PARTY_NOTICES.md +14 -0
- package/lib/launcher.js +96 -46
- package/lib/native.js +57 -0
- package/lib/update.js +40 -15
- package/package.json +6 -6
- package/web/_app/immutable/{angular-html-4GjfXERL.js → angular-html-C20omHsE.js} +1 -1
- package/web/_app/immutable/{angular-ts-CMIe06P5.js → angular-ts-DzF16VU8.js} +1 -1
- package/web/_app/immutable/{apl-C_n2qsRM.js → apl-Bopwo-P_.js} +1 -1
- package/web/_app/immutable/apl-gfMMiTNf.js +1 -0
- package/web/_app/immutable/asciiarmor-C_eisQCp.js +1 -0
- package/web/_app/immutable/asn1-DCl_8MCW.js +1 -0
- package/web/_app/immutable/asterisk-BEn0Cwpx.js +1 -0
- package/web/_app/immutable/{astro-DVbyChwj.js → astro-CYomU0N_.js} +1 -1
- package/web/_app/immutable/{blade-fXxNj9V7.js → blade-CHAXU93U.js} +1 -1
- package/web/_app/immutable/brainfuck-D5EjA2JK.js +1 -0
- package/web/_app/immutable/{c-BN2Efy0k.js → c-Vn6ejSG8.js} +1 -1
- package/web/_app/immutable/{chapel-BRkNuByD.js → chapel-DmTJmwJp.js} +1 -1
- package/web/_app/immutable/clike-xvONpD0Z.js +1 -0
- package/web/_app/immutable/clojure-BflJGmDX.js +1 -0
- package/web/_app/immutable/cmake-84nbDH0I.js +1 -0
- package/web/_app/immutable/cobol-DHLQUbN7.js +1 -0
- package/web/_app/immutable/{cobol-C5lGhzFi.js → cobol-twYq0nKG.js} +1 -1
- package/web/_app/immutable/{code-highlighting-client-Kw4BuD-0.js → code-highlighting-client-CFnhHok6.js} +1 -1
- package/web/_app/immutable/{code-highlighting-worker-DggeS8YA.js → code-highlighting-worker-CrdU_PI0.js} +4 -4
- package/web/_app/immutable/{coffee-B6MzRpQ_.js → coffee-CM7N7KyB.js} +1 -1
- package/web/_app/immutable/coffeescript-De_zI4J0.js +1 -0
- package/web/_app/immutable/commonlisp-DgAKBe0r.js +1 -0
- package/web/_app/immutable/{cpp-DEVtvotx.js → cpp-Di9GpqBY.js} +1 -1
- package/web/_app/immutable/{crystal-DY2QsCJ5.js → crystal-8NOnHfUA.js} +1 -1
- package/web/_app/immutable/crystal-Bsdphhtm.js +1 -0
- package/web/_app/immutable/css-CnaYoQib.js +1 -0
- package/web/_app/immutable/{css-ButQfvJ9.js → css-ndguaaOL.js} +1 -1
- package/web/_app/immutable/cypher-p9eYesGn.js +1 -0
- package/web/_app/immutable/d-DWkQyNnU.js +1 -0
- package/web/_app/immutable/diff-ChtP43wD.js +1 -0
- package/web/_app/immutable/dist-9Huo6_io.js +1 -0
- package/web/_app/immutable/dist-BLfNihLx.js +9 -0
- package/web/_app/immutable/dist-BW-uqzJI.js +1 -0
- package/web/_app/immutable/dist-BZT89qLB.js +1 -0
- package/web/_app/immutable/dist-BZdq_joy.js +6 -0
- package/web/_app/immutable/dist-BbYNxbL_.js +1 -0
- package/web/_app/immutable/dist-BfBCUuTm.js +1 -0
- package/web/_app/immutable/dist-Bh0ebl-W.js +23 -0
- package/web/_app/immutable/dist-BlBqfmmv.js +1 -0
- package/web/_app/immutable/dist-BwGKucqO.js +1 -0
- package/web/_app/immutable/dist-C7DbTQb-.js +1 -0
- package/web/_app/immutable/dist-CC7L_HKl.js +11 -0
- package/web/_app/immutable/dist-CU3sfboa.js +1 -0
- package/web/_app/immutable/dist-CW1k1yYz.js +1 -0
- package/web/_app/immutable/dist-CyRevOBs.js +1 -0
- package/web/_app/immutable/dist-D2IDjEGT.js +1 -0
- package/web/_app/immutable/dist-DRen8gOr.js +2 -0
- package/web/_app/immutable/dist-DXvgx-fv.js +1 -0
- package/web/_app/immutable/dist-DoyuFT6b.js +1 -0
- package/web/_app/immutable/dist-Dxj34LDO.js +1 -0
- package/web/_app/immutable/dist-DyD8ayXh.js +1 -0
- package/web/_app/immutable/dist-wMY6Z_yW.js +1 -0
- package/web/_app/immutable/dockerfile-DJkHQgkl.js +1 -0
- package/web/_app/immutable/dtd-DTF72YNO.js +1 -0
- package/web/_app/immutable/dylan-S7ucR4pR.js +1 -0
- package/web/_app/immutable/ebnf-D4c0_ac3.js +1 -0
- package/web/_app/immutable/ecl-BVIeWmwY.js +1 -0
- package/web/_app/immutable/{edge-CUJd9T1a.js → edge-CZbv_n-U.js} +1 -1
- package/web/_app/immutable/eiffel-BEjRio4Q.js +1 -0
- package/web/_app/immutable/{elixir-DIdSb3yA.js → elixir-Cefx1i8D.js} +1 -1
- package/web/_app/immutable/{elm-M8_LX84X.js → elm-CNDuIlIO.js} +1 -1
- package/web/_app/immutable/elm-Cshzl8qu.js +1 -0
- package/web/_app/immutable/{erb-zGFWLWtt.js → erb-Cscw6dKF.js} +1 -1
- package/web/_app/immutable/erlang-BV0c4Hdn.js +1 -0
- package/web/_app/immutable/factor-LKH5gN8L.js +1 -0
- package/web/_app/immutable/fcl-ClOhbFR7.js +1 -0
- package/web/_app/immutable/forth-D6RzAl64.js +1 -0
- package/web/_app/immutable/fortran-Bt6PBEDR.js +1 -0
- package/web/_app/immutable/gas-BHEdbvp9.js +1 -0
- package/web/_app/immutable/gherkin-oBAE_ms0.js +1 -0
- package/web/_app/immutable/{git-rebase-CC2D0L3b.js → git-rebase-pzmKr7TV.js} +1 -1
- package/web/_app/immutable/{glimmer-js-BcY5kv6g.js → glimmer-js-D70IowcQ.js} +1 -1
- package/web/_app/immutable/{glimmer-ts-Di8deFFz.js → glimmer-ts-DB1_b6V0.js} +1 -1
- package/web/_app/immutable/{glsl-BRJcCqLP.js → glsl-Dnd6Jfn4.js} +1 -1
- package/web/_app/immutable/{graphql-C_JO00Ae.js → graphql-Bh8CEOJ1.js} +1 -1
- package/web/_app/immutable/groovy-CUpZ7dEl.js +1 -0
- package/web/_app/immutable/{hack-G3VVQMXb.js → hack-CDyPjqmy.js} +1 -1
- package/web/_app/immutable/{haml-D2MeFmBN.js → haml-DgPyDh2c.js} +1 -1
- package/web/_app/immutable/{handlebars-D90wEzz2.js → handlebars-DY59w9Zt.js} +1 -1
- package/web/_app/immutable/haskell-BRsoo5mP.js +1 -0
- package/web/_app/immutable/haxe-DjVOVvNP.js +1 -0
- package/web/_app/immutable/{html-Bh1WMhz0.js → html-D9VLXeeS.js} +1 -1
- package/web/_app/immutable/{html-derivative-PuQZwSU6.js → html-derivative-CoBDi6W1.js} +1 -1
- package/web/_app/immutable/{http-Ca96onGD.js → http-Bcrx42oV.js} +1 -1
- package/web/_app/immutable/http-CLVgA2GD.js +1 -0
- package/web/_app/immutable/{hurl-B6pjbC8I.js → hurl-CoCTOBkn.js} +1 -1
- package/web/_app/immutable/idl-BUZw3wgd.js +1 -0
- package/web/_app/immutable/index-CoMB7Dmc.css +1 -0
- package/web/_app/immutable/index-DSbp_RPr.js +1832 -0
- package/web/_app/immutable/{java-arvjb7dT.js → java-DOksgUAN.js} +1 -1
- package/web/_app/immutable/{javascript-BZ1jt5sy.js → javascript-B4fHYqKG.js} +1 -1
- package/web/_app/immutable/javascript-Bu8mWwtz.js +1 -0
- package/web/_app/immutable/{jinja-CpnHkcj3.js → jinja-DlPpy45a.js} +1 -1
- package/web/_app/immutable/{jison-BPHKadT3.js → jison-B6gNEleR.js} +1 -1
- package/web/_app/immutable/{json-DSjaFVfj.js → json-CYwPJhCu.js} +1 -1
- package/web/_app/immutable/{jsx-BUqYaOvu.js → jsx-DQ1GitDu.js} +1 -1
- package/web/_app/immutable/julia-CQfgDRfP.js +1 -0
- package/web/_app/immutable/{julia-BcfWwmw0.js → julia-Cj2ISyOE.js} +1 -1
- package/web/_app/immutable/{just-BXyEegjy.js → just-CXuOImRn.js} +1 -1
- package/web/_app/immutable/{latex-CU7LUjt5.js → latex-C9zWpp_6.js} +1 -1
- package/web/_app/immutable/{liquid-CRzX7bbg.js → liquid-CJws5Urp.js} +1 -1
- package/web/_app/immutable/livescript-BXxG0Yva.js +1 -0
- package/web/_app/immutable/lua-DPCEkfD_.js +1 -0
- package/web/_app/immutable/{lua-BSDiLMEb.js → lua-DzECmq2B.js} +1 -1
- package/web/_app/immutable/{marko-DnR7eH34.js → marko-DY53VURG.js} +1 -1
- package/web/_app/immutable/mathematica-u8YMmbU0.js +1 -0
- package/web/_app/immutable/mbox-BEMVcqjs.js +1 -0
- package/web/_app/immutable/{mdc-CcZh7-T1.js → mdc-B1BZSQO7.js} +1 -1
- package/web/_app/immutable/mirc-C9zpzAZU.js +1 -0
- package/web/_app/immutable/mllike-B45xgp2S.js +1 -0
- package/web/_app/immutable/modelica-CqHI_q-D.js +1 -0
- package/web/_app/immutable/mscgen-qgSLujhx.js +1 -0
- package/web/_app/immutable/mumps-BSzj6Xyz.js +1 -0
- package/web/_app/immutable/nginx-8H7HVH4w.js +1 -0
- package/web/_app/immutable/{nginx-BwbdCB4h.js → nginx-JNdgK5R6.js} +1 -1
- package/web/_app/immutable/{nim-xocOj6ZV.js → nim-DxIQj5-c.js} +1 -1
- package/web/_app/immutable/nsis-viPvXFiq.js +1 -0
- package/web/_app/immutable/ntriples-CzMBulkp.js +1 -0
- package/web/_app/immutable/octave-D2Q8cUp1.js +1 -0
- package/web/_app/immutable/{org-0-F7ov1Z.js → org-C_axAQFp.js} +1 -1
- package/web/_app/immutable/oz-BwTct_5T.js +1 -0
- package/web/_app/immutable/pascal-Dp_KdFgX.js +1 -0
- package/web/_app/immutable/perl-BkSkiI9m.js +1 -0
- package/web/_app/immutable/{perl-DeAhIPOw.js → perl-CmH3S23F.js} +1 -1
- package/web/_app/immutable/{php-kXpePHVd.js → php-CX5ZySYs.js} +1 -1
- package/web/_app/immutable/pig-AF4Hwhju.js +1 -0
- package/web/_app/immutable/powershell-D8WpQPaX.js +1 -0
- package/web/_app/immutable/properties-C357ku5U.js +1 -0
- package/web/_app/immutable/protobuf-D1ij_kNL.js +1 -0
- package/web/_app/immutable/{pug-BYrzANIX.js → pug-Do87ZXFS.js} +1 -1
- package/web/_app/immutable/pug-Dwd_FmgJ.js +1 -0
- package/web/_app/immutable/puppet-BZyAS7I4.js +1 -0
- package/web/_app/immutable/python-B_1Jd8HM.js +1 -0
- package/web/_app/immutable/q-B9NhS7L_.js +1 -0
- package/web/_app/immutable/{qml-CX-IPlpg.js → qml-PO_mFEPK.js} +1 -1
- package/web/_app/immutable/{r-B6Ii5NsL.js → r-BgEOZNPk.js} +1 -1
- package/web/_app/immutable/r-CxDmU1I4.js +1 -0
- package/web/_app/immutable/{razor-B-rT9_rK.js → razor-RqmQ3ngM.js} +1 -1
- package/web/_app/immutable/{regexp-DTgu7pRI.js → regexp-BmtAp960.js} +1 -1
- package/web/_app/immutable/rpm-gpDK5sbt.js +1 -0
- package/web/_app/immutable/{rst-9klPfdbW.js → rst-D8oMEcXw.js} +1 -1
- package/web/_app/immutable/ruby-ChfNwlCY.js +1 -0
- package/web/_app/immutable/{ruby-VdW5O0lU.js → ruby-OoN__8XM.js} +1 -1
- package/web/_app/immutable/{sas-BcoVW2jh.js → sas-Bvlb0Bob.js} +1 -1
- package/web/_app/immutable/sas-C2OyD2Y6.js +1 -0
- package/web/_app/immutable/scheme-D9qYN0V5.js +1 -0
- package/web/_app/immutable/{scss-CThZiyk2.js → scss-CVcKVU_v.js} +1 -1
- package/web/_app/immutable/shell-DwuoZtxw.js +1 -0
- package/web/_app/immutable/{shellscript-kDqMi17D.js → shellscript-CweRfVvC.js} +1 -1
- package/web/_app/immutable/{shellsession-DhVMa4wd.js → shellsession-B6dlQfc8.js} +1 -1
- package/web/_app/immutable/sieve-tLWDfEkZ.js +1 -0
- package/web/_app/immutable/simple-mode-DXiLM1-G.js +1 -0
- package/web/_app/immutable/smalltalk-BLp5-jwC.js +1 -0
- package/web/_app/immutable/solr-B78wSQJQ.js +1 -0
- package/web/_app/immutable/{soy-BRlK1riv.js → soy-BXoHw2KB.js} +1 -1
- package/web/_app/immutable/sparql-Dz-mlCAC.js +1 -0
- package/web/_app/immutable/spreadsheet-CTIncYxj.js +1 -0
- package/web/_app/immutable/sql-DuQMFDvy.js +1 -0
- package/web/_app/immutable/{sql-9_1rLYi9.js → sql-ze9wVaXg.js} +1 -1
- package/web/_app/immutable/{stata-CvZbhBNs.js → stata-BoFbKY4D.js} +1 -1
- package/web/_app/immutable/stex-DNzd62Q_.js +1 -0
- package/web/_app/immutable/stylus-BOVgKnng.js +1 -0
- package/web/_app/immutable/{surrealql-BLPIhFjZ.js → surrealql-dM__PJgH.js} +1 -1
- package/web/_app/immutable/{svelte-CXRnxaHV.js → svelte-ClSxXkyL.js} +1 -1
- package/web/_app/immutable/swift-DKB6_1j6.js +1 -0
- package/web/_app/immutable/tcl-BGfruO1u.js +1 -0
- package/web/_app/immutable/{templ-BIXbEjSv.js → templ-CqzzE9WX.js} +1 -1
- package/web/_app/immutable/{tex-CTC47p_4.js → tex-ClJ30QU-.js} +1 -1
- package/web/_app/immutable/textile-C4jVoHG1.js +1 -0
- package/web/_app/immutable/tiddlywiki-VlUiK86J.js +1 -0
- package/web/_app/immutable/tiki-DTszW0OQ.js +1 -0
- package/web/_app/immutable/toml-BPTmHmyx.js +1 -0
- package/web/_app/immutable/troff-C2dAgh7P.js +1 -0
- package/web/_app/immutable/{ts-tags-q6t1QP-k.js → ts-tags-MI0_89c8.js} +1 -1
- package/web/_app/immutable/{tsx-BACYK5_7.js → tsx-D-xUy4Xs.js} +1 -1
- package/web/_app/immutable/ttcn-PPSTk1ow.js +1 -0
- package/web/_app/immutable/ttcn-cfg-2b4Gb5sE.js +1 -0
- package/web/_app/immutable/turtle-Cx3rYX2g.js +1 -0
- package/web/_app/immutable/{twig-du-FAu_S.js → twig-C1N-sXjS.js} +1 -1
- package/web/_app/immutable/{typescript-UdazT59i.js → typescript-BPzkPzWf.js} +1 -1
- package/web/_app/immutable/{typst-CwQmdlPz.js → typst-BLmdxzG5.js} +1 -1
- package/web/_app/immutable/vb-BthdM_4N.js +1 -0
- package/web/_app/immutable/vbscript-D9f6rSsU.js +1 -0
- package/web/_app/immutable/velocity-CqftRsjg.js +1 -0
- package/web/_app/immutable/verilog-CjI9Y6RI.js +1 -0
- package/web/_app/immutable/vhdl-kS471soi.js +1 -0
- package/web/_app/immutable/{vue-Bl_ifCwv.js → vue-Cb-Oh7gL.js} +1 -1
- package/web/_app/immutable/{vue-html-Jt0TggoH.js → vue-html-CokEUcEZ.js} +1 -1
- package/web/_app/immutable/{vue-vine-BCOElGNY.js → vue-vine-C9qhSF4z.js} +1 -1
- package/web/_app/immutable/webidl-D5jiJvOU.js +1 -0
- package/web/_app/immutable/{xml-CwHcdUOz.js → xml-xaPpMw_l.js} +1 -1
- package/web/_app/immutable/xquery-BKJx4mf9.js +1 -0
- package/web/_app/immutable/{xsl-CR7B95n6.js → xsl-C_0yvEBX.js} +1 -1
- package/web/_app/immutable/yacas-CXXgtw0p.js +1 -0
- package/web/_app/immutable/{yaml-1d7XLDFm.js → yaml-Dccr9MS0.js} +1 -1
- package/web/_app/immutable/z80-Co3PbHdE.js +1 -0
- package/web/index.html +3 -3
- package/web/logo.svg +1 -0
- package/web/_app/immutable/index-D6bVq7o9.css +0 -1
- package/web/_app/immutable/index-Dn3e-0Et.js +0 -488
- package/web/favicon.png +0 -0
- package/web/logo.png +0 -0
package/README.md
CHANGED
|
@@ -1,17 +1,10 @@
|
|
|
1
1
|
# Sprocket
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
The best AI agent for hardware and software.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Sprocket designs electronics, tests code end-to-end, and buys parts or subscriptions for your project when asked.
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
- Retrieves best-in-class <ins>context from the web</ins> for everything it does, so it stays <ins>incredibly reliable</ins>.
|
|
9
|
-
- <ins>Buys anything from any website</ins> when you ask, from hardware parts to SaaS subscriptions.
|
|
10
|
-
- Makes <ins>beautifully detailed schematics</ins>, creates your <ins>BOM</ins>, and writes <ins>assembly instructions</ins>.
|
|
11
|
-
|
|
12
|
-
[Sprocket Demo](https://www.youtube.com/watch?v=E8KWO3Vh9YU)
|
|
13
|
-
|
|
14
|
-
[](https://www.youtube.com/watch?v=E8KWO3Vh9YU)
|
|
7
|
+
[](https://spikonado.com/sprocket)
|
|
15
8
|
|
|
16
9
|
## Using Sprocket
|
|
17
10
|
|
|
@@ -55,7 +48,7 @@ Update your CLI installation with `sprocket update`. Run `sprocket --help` for m
|
|
|
55
48
|
## Troubleshooting
|
|
56
49
|
|
|
57
50
|
- If `17731` is already occupied, set `SPROCKET_PORT` before launching.
|
|
58
|
-
-
|
|
51
|
+
- Sprocket uses your operating system credential service when available, and automatically falls back to an unencrypted private file when it is unavailable. Use `sprocket login --credential-store keyring` to require keyring storage, or `sprocket login --credential-store file` to require file storage.
|
|
59
52
|
- If `sprocket` opens the browser instead of the desktop app, install `sprocket-desktop` from [GitHub Releases](https://github.com/spikonado/sprocket/releases) onto `PATH`, or set `SPROCKET_DESKTOP_EXECUTABLE`.
|
|
60
53
|
- Unsigned macOS and Windows desktop builds may need a Gatekeeper / SmartScreen override the first time you open them.
|
|
61
54
|
- Contact [aarav@spikonado.com](mailto:aarav@spikonado.com) for help.
|
package/THIRD_PARTY_NOTICES.md
CHANGED
|
@@ -1 +1,15 @@
|
|
|
1
1
|
# Third-party notices
|
|
2
|
+
|
|
3
|
+
## Managed browser tools
|
|
4
|
+
|
|
5
|
+
Sprocket downloads unmodified native releases of
|
|
6
|
+
[agent-browser](https://github.com/vercel-labs/agent-browser) on demand. It is
|
|
7
|
+
copyright Vercel, Inc., and licensed under
|
|
8
|
+
[Apache-2.0](https://github.com/vercel-labs/agent-browser/blob/v0.39.1/LICENSE).
|
|
9
|
+
When serving agent-browser's dashboard, Sprocket changes its web assets to
|
|
10
|
+
offer only Chrome and hide AI chat, as listed in
|
|
11
|
+
`tools/agent-browser/dashboard-patches.json`.
|
|
12
|
+
|
|
13
|
+
Versions, release asset sizes, and SHA256 checksums are recorded in
|
|
14
|
+
`tools/agent-browser/releases.json`. Chromium downloaded by the
|
|
15
|
+
upstream installer retains its own third-party licenses and notices.
|
package/lib/launcher.js
CHANGED
|
@@ -1,50 +1,33 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
import { spawn } from 'node:child_process';
|
|
2
|
+
import { randomUUID } from 'node:crypto';
|
|
3
|
+
import { accessSync, chmodSync, constants, readFileSync, rmSync } from 'node:fs';
|
|
4
|
+
import { tmpdir } from 'node:os';
|
|
4
5
|
import path from 'node:path';
|
|
5
6
|
|
|
6
|
-
import {
|
|
7
|
+
import { resolveNativePackage } from './native.js';
|
|
8
|
+
import {
|
|
9
|
+
createHost,
|
|
10
|
+
PACKAGE_ROOT,
|
|
11
|
+
parseUpdateArgs,
|
|
12
|
+
runUpdateCli,
|
|
13
|
+
UPDATE_API_FILENAME
|
|
14
|
+
} from './update.js';
|
|
7
15
|
|
|
8
|
-
|
|
16
|
+
// Must match crates/sprocket-cli/src/main.rs.
|
|
17
|
+
export const RESTART_EXIT_CODE = 75;
|
|
9
18
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
const
|
|
13
|
-
TARGETS.map((target) => [`${target.os}:${target.cpu}`, [target.packageName, target.executable]])
|
|
14
|
-
);
|
|
15
|
-
|
|
16
|
-
export function nativePackage(platform = process.platform, arch = process.arch) {
|
|
17
|
-
return PLATFORM_PACKAGES.get(`${platform}:${arch}`);
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
export function resolveNativeBinary(platform = process.platform, arch = process.arch) {
|
|
21
|
-
const target = nativePackage(platform, arch);
|
|
22
|
-
|
|
23
|
-
if (!target) {
|
|
24
|
-
throw new Error(
|
|
25
|
-
`Sprocket does not provide a binary for ${platform}/${arch}. ` +
|
|
26
|
-
'Supported targets are Linux x64/arm64, macOS x64/arm64, and Windows x64.'
|
|
27
|
-
);
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
const [packageName, executable] = target;
|
|
31
|
-
let packageJson;
|
|
32
|
-
|
|
33
|
-
try {
|
|
34
|
-
packageJson = require.resolve(`${packageName}/package.json`);
|
|
35
|
-
} catch (error) {
|
|
36
|
-
if (error?.code !== 'MODULE_NOT_FOUND') {
|
|
37
|
-
throw error;
|
|
38
|
-
}
|
|
19
|
+
export function resolveNativeBinary() {
|
|
20
|
+
const native = resolveNativePackage();
|
|
21
|
+
const version = JSON.parse(readFileSync(path.join(PACKAGE_ROOT, 'package.json'), 'utf8')).version;
|
|
39
22
|
|
|
23
|
+
if (native.version !== version) {
|
|
40
24
|
throw new Error(
|
|
41
|
-
`
|
|
42
|
-
'
|
|
43
|
-
{ cause: error }
|
|
25
|
+
`Sprocket ${version} needs ${native.packageName}@${version}, but ${native.version} is ` +
|
|
26
|
+
'installed. Run `sprocket update` to repair the install.'
|
|
44
27
|
);
|
|
45
28
|
}
|
|
46
29
|
|
|
47
|
-
return
|
|
30
|
+
return native.binary;
|
|
48
31
|
}
|
|
49
32
|
|
|
50
33
|
export function ensureExecutable(binary) {
|
|
@@ -63,18 +46,49 @@ export function ensureExecutable(binary) {
|
|
|
63
46
|
}
|
|
64
47
|
}
|
|
65
48
|
|
|
66
|
-
export function run(binary, args, options = {}) {
|
|
67
|
-
const
|
|
49
|
+
export async function run(binary, args, options = {}) {
|
|
50
|
+
const child = (options.spawn ?? spawn)(binary, args, {
|
|
68
51
|
stdio: 'inherit',
|
|
69
52
|
env: options.env ?? process.env
|
|
70
53
|
});
|
|
71
54
|
|
|
72
|
-
|
|
73
|
-
|
|
55
|
+
let interrupted;
|
|
56
|
+
|
|
57
|
+
const handlers = new Map(
|
|
58
|
+
['SIGINT', 'SIGTERM'].map((signal) => [
|
|
59
|
+
signal,
|
|
60
|
+
() => {
|
|
61
|
+
interrupted ??= signal;
|
|
62
|
+
|
|
63
|
+
// Windows already sends Ctrl+C to both processes; child.kill would force termination.
|
|
64
|
+
if (process.platform !== 'win32' || signal !== 'SIGINT') {
|
|
65
|
+
child.kill(signal);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
])
|
|
69
|
+
);
|
|
70
|
+
|
|
71
|
+
for (const [signal, handler] of handlers) {
|
|
72
|
+
process.on(signal, handler);
|
|
74
73
|
}
|
|
75
74
|
|
|
76
|
-
|
|
77
|
-
|
|
75
|
+
let result;
|
|
76
|
+
|
|
77
|
+
try {
|
|
78
|
+
result = await new Promise((resolve, reject) => {
|
|
79
|
+
child.once('error', reject);
|
|
80
|
+
child.once('close', (status, signal) => resolve({ status, signal }));
|
|
81
|
+
});
|
|
82
|
+
} finally {
|
|
83
|
+
for (const [signal, handler] of handlers) {
|
|
84
|
+
process.off(signal, handler);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
const signal = result.signal ?? interrupted;
|
|
89
|
+
|
|
90
|
+
if (signal) {
|
|
91
|
+
process.kill(process.pid, signal);
|
|
78
92
|
|
|
79
93
|
return undefined;
|
|
80
94
|
}
|
|
@@ -95,6 +109,16 @@ export function nativeChildEnvironment(env, staticDir, updateNode, updateScript)
|
|
|
95
109
|
return next;
|
|
96
110
|
}
|
|
97
111
|
|
|
112
|
+
function readRestartLauncher(restartFile) {
|
|
113
|
+
try {
|
|
114
|
+
return readFileSync(restartFile, 'utf8');
|
|
115
|
+
} catch {
|
|
116
|
+
return null;
|
|
117
|
+
} finally {
|
|
118
|
+
rmSync(restartFile, { force: true });
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
|
|
98
122
|
export async function launch(args, options = {}) {
|
|
99
123
|
const env = { ...(options.env ?? process.env) };
|
|
100
124
|
delete env.SPROCKET_UPDATE_MANAGED;
|
|
@@ -112,16 +136,42 @@ export async function launch(args, options = {}) {
|
|
|
112
136
|
const staticDir = path.resolve(libDir, '../web');
|
|
113
137
|
const binary = (options.resolveBinary ?? resolveNativeBinary)();
|
|
114
138
|
(options.ensureExecutable ?? ensureExecutable)(binary);
|
|
115
|
-
|
|
139
|
+
const execPath = options.execPath ?? process.execPath;
|
|
140
|
+
// The native server clears SPROCKET_RESTARTED, so only a launcher started by a restarting
|
|
141
|
+
// launcher sees it and leaves the next restart to that parent.
|
|
142
|
+
const ownsRestart = !env.SPROCKET_RESTARTED;
|
|
143
|
+
|
|
144
|
+
if (ownsRestart) {
|
|
145
|
+
env.SPROCKET_RESTART_FILE = path.join(
|
|
146
|
+
options.tmpdir ?? tmpdir(),
|
|
147
|
+
`sprocket-restart-${randomUUID()}`
|
|
148
|
+
);
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
let code = await run(binary, args, {
|
|
116
152
|
env: nativeChildEnvironment(
|
|
117
153
|
env,
|
|
118
154
|
staticDir,
|
|
119
|
-
|
|
155
|
+
execPath,
|
|
120
156
|
path.resolve(libDir, UPDATE_API_FILENAME)
|
|
121
157
|
),
|
|
122
158
|
spawn: options.spawn
|
|
123
159
|
});
|
|
124
160
|
|
|
161
|
+
if (ownsRestart) {
|
|
162
|
+
while (code === RESTART_EXIT_CODE) {
|
|
163
|
+
const launcher = readRestartLauncher(env.SPROCKET_RESTART_FILE);
|
|
164
|
+
|
|
165
|
+
if (!launcher) break;
|
|
166
|
+
code = await run(execPath, [launcher, ...args], {
|
|
167
|
+
env: { ...env, SPROCKET_RESTARTED: '1' },
|
|
168
|
+
spawn: options.spawn
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
process.exitCode = code;
|
|
174
|
+
|
|
125
175
|
return process.exitCode;
|
|
126
176
|
} catch (error) {
|
|
127
177
|
console.error(`sprocket: ${error.message}`);
|
package/lib/native.js
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { readFileSync } from 'node:fs';
|
|
2
|
+
import { createRequire } from 'node:module';
|
|
3
|
+
import path from 'node:path';
|
|
4
|
+
|
|
5
|
+
const require = createRequire(import.meta.url);
|
|
6
|
+
|
|
7
|
+
const TARGETS = JSON.parse(readFileSync(path.join(import.meta.dirname, '../targets.json'), 'utf8'));
|
|
8
|
+
|
|
9
|
+
const PLATFORM_PACKAGES = new Map(
|
|
10
|
+
TARGETS.map((target) => [`${target.os}:${target.cpu}`, [target.packageName, target.executable]])
|
|
11
|
+
);
|
|
12
|
+
|
|
13
|
+
export function nativePackage(platform = process.platform, arch = process.arch) {
|
|
14
|
+
return PLATFORM_PACKAGES.get(`${platform}:${arch}`);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export function resolveNativePackage(platform = process.platform, arch = process.arch) {
|
|
18
|
+
const target = nativePackage(platform, arch);
|
|
19
|
+
|
|
20
|
+
if (!target) {
|
|
21
|
+
throw new Error(
|
|
22
|
+
`Sprocket does not provide a binary for ${platform}/${arch}. ` +
|
|
23
|
+
'Supported targets are Linux x64/arm64, macOS x64/arm64, and Windows x64.'
|
|
24
|
+
);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
const [packageName, executable] = target;
|
|
28
|
+
let packageJson;
|
|
29
|
+
|
|
30
|
+
try {
|
|
31
|
+
packageJson = require.resolve(`${packageName}/package.json`);
|
|
32
|
+
} catch (error) {
|
|
33
|
+
if (error?.code !== 'MODULE_NOT_FOUND') {
|
|
34
|
+
throw error;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
throw new Error(
|
|
38
|
+
`The native package ${packageName} is missing. Reinstall @spikonado/sprocket ` +
|
|
39
|
+
'without omitting optional dependencies.',
|
|
40
|
+
{ cause: error }
|
|
41
|
+
);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
return {
|
|
45
|
+
packageName,
|
|
46
|
+
version: JSON.parse(readFileSync(packageJson, 'utf8')).version,
|
|
47
|
+
binary: path.join(path.dirname(packageJson), 'bin', executable)
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
export function installedNativeVersion() {
|
|
52
|
+
try {
|
|
53
|
+
return resolveNativePackage().version;
|
|
54
|
+
} catch {
|
|
55
|
+
return '';
|
|
56
|
+
}
|
|
57
|
+
}
|
package/lib/update.js
CHANGED
|
@@ -4,14 +4,15 @@ import { promises as fsPromises, readFileSync, realpathSync, statSync } from 'no
|
|
|
4
4
|
import os from 'node:os';
|
|
5
5
|
import path from 'node:path';
|
|
6
6
|
|
|
7
|
+
import { installedNativeVersion } from './native.js';
|
|
8
|
+
|
|
7
9
|
export const PACKAGE_NAME = '@spikonado/sprocket';
|
|
8
10
|
|
|
9
11
|
export const UPDATE_API_FILENAME = 'update-api.js';
|
|
10
12
|
|
|
11
13
|
export const DEFAULT_REGISTRY = 'https://registry.npmjs.org';
|
|
12
14
|
|
|
13
|
-
export const RELAUNCH_MESSAGE =
|
|
14
|
-
'Wait for active agents to finish, then stop Sprocket and launch it again.';
|
|
15
|
+
export const RELAUNCH_MESSAGE = 'Update installed. Restart Sprocket to use it.';
|
|
15
16
|
|
|
16
17
|
export const UNSUPPORTED_MESSAGE =
|
|
17
18
|
'This copy of Sprocket was not installed globally with npm, bun, pnpm, or yarn, so it cannot be updated in place.';
|
|
@@ -476,6 +477,7 @@ export function createHost(overrides = {}) {
|
|
|
476
477
|
pid: overrides.pid ?? process.pid,
|
|
477
478
|
packageRoot,
|
|
478
479
|
currentVersion: overrides.currentVersion,
|
|
480
|
+
nativeVersion: overrides.nativeVersion ?? installedNativeVersion,
|
|
479
481
|
tmpdir: overrides.tmpdir ?? (() => os.tmpdir()),
|
|
480
482
|
homedir: overrides.homedir ?? (() => os.homedir()),
|
|
481
483
|
fetch: overrides.fetch ?? globalThis.fetch.bind(globalThis),
|
|
@@ -561,15 +563,15 @@ export async function checkForUpdate(host) {
|
|
|
561
563
|
const registryVersion = await fetchChannelVersion(host, channel, currentVersion);
|
|
562
564
|
const decision = channelUpdate(currentVersion, registryVersion);
|
|
563
565
|
|
|
564
|
-
if (decision.status === '
|
|
565
|
-
return makePayload({ status: '
|
|
566
|
+
if (decision.status === 'available') {
|
|
567
|
+
return makePayload({ status: 'available', currentVersion, version: decision.version });
|
|
566
568
|
}
|
|
567
569
|
|
|
568
|
-
|
|
569
|
-
status: 'available',
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
});
|
|
570
|
+
if (host.nativeVersion() !== currentVersion) {
|
|
571
|
+
return makePayload({ status: 'available', currentVersion, version: currentVersion });
|
|
572
|
+
}
|
|
573
|
+
|
|
574
|
+
return makePayload({ status: 'idle', currentVersion });
|
|
573
575
|
}
|
|
574
576
|
|
|
575
577
|
export async function installUpdate(host) {
|
|
@@ -621,6 +623,8 @@ export async function installUpdate(host) {
|
|
|
621
623
|
throw new Error('The installation location changed during the update check. Try again.');
|
|
622
624
|
}
|
|
623
625
|
|
|
626
|
+
const restartLauncher = path.resolve(globalPackageDir(install.globalRoot), 'bin/sprocket.js');
|
|
627
|
+
|
|
624
628
|
const result = await host.runCommand(
|
|
625
629
|
install.command,
|
|
626
630
|
[...install.argsPrefix, ...install.installArgs(checked.version)],
|
|
@@ -658,13 +662,34 @@ export async function installUpdate(host) {
|
|
|
658
662
|
};
|
|
659
663
|
}
|
|
660
664
|
|
|
665
|
+
const launcherCheck = await host.runCommand(host.execPath, [restartLauncher, '--version'], {
|
|
666
|
+
cwd: host.homedir(),
|
|
667
|
+
env: host.env,
|
|
668
|
+
platform: host.platform,
|
|
669
|
+
timeout: QUERY_TIMEOUT_MS
|
|
670
|
+
});
|
|
671
|
+
|
|
672
|
+
if (launcherCheck.timedOut || (launcherCheck.status ?? 1) !== 0) {
|
|
673
|
+
return {
|
|
674
|
+
payload: makePayload({
|
|
675
|
+
status: 'error',
|
|
676
|
+
currentVersion,
|
|
677
|
+
version: checked.version,
|
|
678
|
+
error: `Sprocket ${checked.version} was installed but cannot start: ${sanitize(launcherCheck.stderr) || 'the launcher check failed'}`
|
|
679
|
+
})
|
|
680
|
+
};
|
|
681
|
+
}
|
|
682
|
+
|
|
661
683
|
return {
|
|
662
|
-
payload:
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
684
|
+
payload: {
|
|
685
|
+
...makePayload({
|
|
686
|
+
status: 'installed',
|
|
687
|
+
currentVersion,
|
|
688
|
+
version: checked.version,
|
|
689
|
+
message: RELAUNCH_MESSAGE
|
|
690
|
+
}),
|
|
691
|
+
restartLauncher
|
|
692
|
+
}
|
|
668
693
|
};
|
|
669
694
|
});
|
|
670
695
|
} catch (error) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@spikonado/sprocket",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.2",
|
|
4
4
|
"description": "Agentic platform for streamlining hardware and software development",
|
|
5
5
|
"license": "FSL-1.1-ALv2",
|
|
6
6
|
"type": "module",
|
|
@@ -30,10 +30,10 @@
|
|
|
30
30
|
"access": "public"
|
|
31
31
|
},
|
|
32
32
|
"optionalDependencies": {
|
|
33
|
-
"@spikonado/sprocket-linux-x64-gnu": "0.4.
|
|
34
|
-
"@spikonado/sprocket-linux-arm64-gnu": "0.4.
|
|
35
|
-
"@spikonado/sprocket-darwin-x64": "0.4.
|
|
36
|
-
"@spikonado/sprocket-darwin-arm64": "0.4.
|
|
37
|
-
"@spikonado/sprocket-win32-x64-msvc": "0.4.
|
|
33
|
+
"@spikonado/sprocket-linux-x64-gnu": "0.4.2",
|
|
34
|
+
"@spikonado/sprocket-linux-arm64-gnu": "0.4.2",
|
|
35
|
+
"@spikonado/sprocket-darwin-x64": "0.4.2",
|
|
36
|
+
"@spikonado/sprocket-darwin-arm64": "0.4.2",
|
|
37
|
+
"@spikonado/sprocket-win32-x64-msvc": "0.4.2"
|
|
38
38
|
}
|
|
39
39
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./code-highlighting-worker-DggeS8YA.js";import{t}from"./html-Bh1WMhz0.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"}'))];const 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"]}`));var i=[...n,r];const 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"]}`));var o=[...n,a];const 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"]}`));var c=[...n,...o,s],l=/* @__PURE__ */ e({default:()=>d});const 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"]}`));var 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{t as e}from"./code-highlighting-worker-CrdU_PI0.js";import{t}from"./html-D9VLXeeS.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"}'))];const 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"]}`));var i=[...n,r];const 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"]}`));var o=[...n,a];const 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"]}`));var c=[...n,...o,s],l=/* @__PURE__ */ e({default:()=>d});const 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"]}`));var 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};
|