@krelborn/markdown-review 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (167) hide show
  1. package/README.md +7 -6
  2. package/dist/cli.js +154 -27
  3. package/dist/web/assets/{abnfDiagram-YUKMZFIV-CK8RfoBl.js → abnfDiagram-YUKMZFIV-BZIJX5IM.js} +1 -1
  4. package/dist/web/assets/{angular-html-DeswjFqG.js → angular-html-CW7LdEF9.js} +1 -1
  5. package/dist/web/assets/{angular-ts-0_RRcACO.js → angular-ts-DMi4USZg.js} +1 -1
  6. package/dist/web/assets/{apl-CCY4uyn_.js → apl-Df6WGnpy.js} +1 -1
  7. package/dist/web/assets/{arc-BG4zBWWH.js → arc-ggKlY47U.js} +1 -1
  8. package/dist/web/assets/{architecture-WOLXFQ4H-Dd-YnaSX.js → architecture-WOLXFQ4H-BsQd6MbZ.js} +1 -1
  9. package/dist/web/assets/{architectureDiagram-47P4ROYG-DiUIBppB.js → architectureDiagram-47P4ROYG-BuE40WJv.js} +1 -1
  10. package/dist/web/assets/{astro-Cwc-oo5s.js → astro-D7eXRakI.js} +1 -1
  11. package/dist/web/assets/{blade-84wcXlDd.js → blade-3AkRFe2C.js} +1 -1
  12. package/dist/web/assets/{blockDiagram-E7TT5TSB-D97HQ8Sw.js → blockDiagram-E7TT5TSB-B5l0LLhP.js} +1 -1
  13. package/dist/web/assets/{c-DTQBoa6Q.js → c-Bkyx37Tk.js} +1 -1
  14. package/dist/web/assets/{c4Diagram-CRA5TL53-ClvVKHsZ.js → c4Diagram-CRA5TL53-D9Zc33S8.js} +1 -1
  15. package/dist/web/assets/channel-D96j5RGp.js +1 -0
  16. package/dist/web/assets/{chapel-CRMNarUY.js → chapel-DggUU-O6.js} +1 -1
  17. package/dist/web/assets/{chunk-2BW5OAIV-DSadrz5B.js → chunk-2BW5OAIV-ClRzBhwN.js} +1 -1
  18. package/dist/web/assets/{chunk-3YJQHVM4-D6ohwMAh.js → chunk-3YJQHVM4-CNLVyfxX.js} +1 -1
  19. package/dist/web/assets/{chunk-4EA7E6EY-BjuRiZLM.js → chunk-4EA7E6EY-aeSu9hGp.js} +1 -1
  20. package/dist/web/assets/{chunk-7TKQ45FW-CdSL2hss.js → chunk-7TKQ45FW-CwZK0ys_.js} +1 -1
  21. package/dist/web/assets/{chunk-AW2ZBBNX-BUkHB8w8.js → chunk-AW2ZBBNX-Do6yJgQr.js} +1 -1
  22. package/dist/web/assets/{chunk-DBDB3WZW-BmDVHoAq.js → chunk-DBDB3WZW-BGoybXAD.js} +1 -1
  23. package/dist/web/assets/{chunk-E2ZNV5FY-CHWL0yef.js → chunk-E2ZNV5FY-vMPrQ96W.js} +1 -1
  24. package/dist/web/assets/{chunk-EU5HNXII-TzfEw3rt.js → chunk-EU5HNXII-WT20ypGh.js} +1 -1
  25. package/dist/web/assets/{chunk-FVRAUYC3-Dea7fNxt.js → chunk-FVRAUYC3-B-JlGXnk.js} +1 -1
  26. package/dist/web/assets/{chunk-HJ2JQQFS-CsqlPveV.js → chunk-HJ2JQQFS-BpQT9yx5.js} +1 -1
  27. package/dist/web/assets/{chunk-HTAEGDNF-uOHLFUZ2.js → chunk-HTAEGDNF-uqZ4Sk_E.js} +1 -1
  28. package/dist/web/assets/{chunk-KQW6MTUR-DiKsme5W.js → chunk-KQW6MTUR-CGDbD7J1.js} +1 -1
  29. package/dist/web/assets/{chunk-NTY3LDVX-CmKaDw95.js → chunk-NTY3LDVX-BX1ZUg2I.js} +1 -1
  30. package/dist/web/assets/{chunk-VPRB5NB3-B00Cf0rw.js → chunk-VPRB5NB3-CKJwbb6W.js} +1 -1
  31. package/dist/web/assets/{chunk-XC4XBNZT-BDz8GHcg.js → chunk-XC4XBNZT-Cg0edyiW.js} +1 -1
  32. package/dist/web/assets/{chunk-XXDRQBXY-VdpKW56f.js → chunk-XXDRQBXY-B-il0kWV.js} +1 -1
  33. package/dist/web/assets/{classDiagram-v2-K4WV4PDN-gEKpA9iT.js → classDiagram-v2-K4WV4PDN-Bm1AjKhB.js} +1 -1
  34. package/dist/web/assets/{cobol-DzWF6gu0.js → cobol-eIQA5bMR.js} +1 -1
  35. package/dist/web/assets/{coffee-YFNN4OQT.js → coffee-Bcy46bJt.js} +1 -1
  36. package/dist/web/assets/{cose-bilkent-JH36ORCC-Bfuj49HT.js → cose-bilkent-JH36ORCC-BMuJXNcP.js} +1 -1
  37. package/dist/web/assets/{cpp-B_VbYR-1.js → cpp-BTCZX5Lq.js} +1 -1
  38. package/dist/web/assets/{crystal-29rZkanC.js → crystal-DSpaOPwo.js} +1 -1
  39. package/dist/web/assets/{css-Cs9-eEZt.js → css-DZY8fHzP.js} +1 -1
  40. package/dist/web/assets/{cynefin-EF2NZ3EQ-BdejMMtt.js → cynefin-EF2NZ3EQ-DwY3GCI9.js} +1 -1
  41. package/dist/web/assets/{cynefinDiagram-3GCD6N5R-B0Cf1Lu4.js → cynefinDiagram-3GCD6N5R-BYma0U6p.js} +1 -1
  42. package/dist/web/assets/{dagre-W4DXFKR2-CbG5K5pN.js → dagre-W4DXFKR2-DpaAT1xc.js} +1 -1
  43. package/dist/web/assets/{diagram-2UJZ2QOL-DnUMvh6f.js → diagram-2UJZ2QOL-eWEg0n4J.js} +1 -1
  44. package/dist/web/assets/{diagram-OVF4WLC6-DWaGIEvp.js → diagram-OVF4WLC6-BlhoyOe_.js} +1 -1
  45. package/dist/web/assets/{diagram-PFPMY2P6-D5-q1mxk.js → diagram-PFPMY2P6-Cx_sb8jV.js} +1 -1
  46. package/dist/web/assets/{diagram-UMYRVEAY-iaUg3gAk.js → diagram-UMYRVEAY-Dk00eK0U.js} +1 -1
  47. package/dist/web/assets/{diagram-YEKJPTXX-DJmReb1h.js → diagram-YEKJPTXX-wVxrnmMO.js} +1 -1
  48. package/dist/web/assets/{diagram-ZIFT7M5P-Sh7BjF9g.js → diagram-ZIFT7M5P-DkD6Ez5h.js} +1 -1
  49. package/dist/web/assets/{dist-B8fEp-qP.js → dist-DmWZBGGc.js} +1 -1
  50. package/dist/web/assets/{ebnfDiagram-VR2GEFS7-DI4sWEQu.js → ebnfDiagram-VR2GEFS7-DXjQVddY.js} +1 -1
  51. package/dist/web/assets/{edge-B_ygG8c6.js → edge-A6sjNBe6.js} +1 -1
  52. package/dist/web/assets/{elixir-CxJKtXuu.js → elixir-5kbR6ZAs.js} +1 -1
  53. package/dist/web/assets/{elk-IJKZMXRS-DCy8oS2y.js → elk-IJKZMXRS-Df8Ybidc.js} +1 -1
  54. package/dist/web/assets/{elm-04O0r0pA.js → elm-naNHE-Rt.js} +1 -1
  55. package/dist/web/assets/{erDiagram-O2IAPWRE-BEt6M0BG.js → erDiagram-O2IAPWRE-CWiXv2eJ.js} +1 -1
  56. package/dist/web/assets/{erb-9rS1Brsj.js → erb-VliMfn12.js} +1 -1
  57. package/dist/web/assets/{eventmodeling-K75KTNOO-CuoZYl3d.js → eventmodeling-K75KTNOO-HdXJzsd-.js} +1 -1
  58. package/dist/web/assets/flowDiagram-OXPTDLAJ-BBtXQXD5.js +1 -0
  59. package/dist/web/assets/{ganttDiagram-R7TSEDQI-BGP21iH1.js → ganttDiagram-R7TSEDQI-AkbsS9Oo.js} +1 -1
  60. package/dist/web/assets/{git-rebase-uf5u70dP.js → git-rebase-BEAI18h0.js} +1 -1
  61. package/dist/web/assets/{gitGraph-VSP46ZUC-DLEE7ZA1.js → gitGraph-VSP46ZUC-BHanG7Zi.js} +1 -1
  62. package/dist/web/assets/{gitGraphDiagram-XJZIOB7I-B364Tsss.js → gitGraphDiagram-XJZIOB7I-DiFINkpn.js} +1 -1
  63. package/dist/web/assets/{glimmer-js-CiBb6A2x.js → glimmer-js-CCFczyKx.js} +1 -1
  64. package/dist/web/assets/{glimmer-ts-D2lfhEnU.js → glimmer-ts-2gqimpYj.js} +1 -1
  65. package/dist/web/assets/{glsl-B0_NrykT.js → glsl-Cg9k-3G7.js} +1 -1
  66. package/dist/web/assets/{graphql-CagH_fy0.js → graphql-BCWNUo4d.js} +1 -1
  67. package/dist/web/assets/{hack-DZpi5MLs.js → hack-P7UtntxJ.js} +1 -1
  68. package/dist/web/assets/{haml-BXC9NiVp.js → haml-CluhvLjx.js} +1 -1
  69. package/dist/web/assets/{handlebars-BKcHNDUs.js → handlebars-oqVPUk2V.js} +1 -1
  70. package/dist/web/assets/{html-DZ111F_a.js → html-CcFED7nW.js} +1 -1
  71. package/dist/web/assets/{html-derivative-DwoYvsLD.js → html-derivative-8MKwl2kE.js} +1 -1
  72. package/dist/web/assets/{http-6X-ZAFMk.js → http-B-j5imi7.js} +1 -1
  73. package/dist/web/assets/{hurl-CFv0vwqV.js → hurl-EbdE4I5m.js} +1 -1
  74. package/dist/web/assets/index-D90DSXXX.css +1 -0
  75. package/dist/web/assets/index-DBPwT0qJ.js +256 -0
  76. package/dist/web/assets/{info-OHQRW6UA-BkLeneU8.js → info-OHQRW6UA-D8EeGtAZ.js} +1 -1
  77. package/dist/web/assets/{infoDiagram-5W2HQ5XZ-D5sUoBy9.js → infoDiagram-5W2HQ5XZ-BXakU7Bk.js} +1 -1
  78. package/dist/web/assets/{ishikawaDiagram-K3B6WC7H-D5Oe30A8.js → ishikawaDiagram-K3B6WC7H-BjrJYJdZ.js} +1 -1
  79. package/dist/web/assets/{java-Dd1Ai6aF.js → java-DdlG7Knc.js} +1 -1
  80. package/dist/web/assets/{javascript-C-JN5i9P.js → javascript-Dqf2fIHF.js} +1 -1
  81. package/dist/web/assets/{jinja-WZ65gNFf.js → jinja-o2b7TNPM.js} +1 -1
  82. package/dist/web/assets/{jison-Bg9NXAdk.js → jison-BFaMalob.js} +1 -1
  83. package/dist/web/assets/{journeyDiagram-COXZFDF6-WcVKvz_j.js → journeyDiagram-COXZFDF6-A2kOjbib.js} +1 -1
  84. package/dist/web/assets/{json-Hnqo41ms.js → json-rOV04JA5.js} +1 -1
  85. package/dist/web/assets/{jsx-D9aGArJK.js → jsx-f8aDzNJg.js} +1 -1
  86. package/dist/web/assets/{julia-Bn16XnNV.js → julia-BEQyLg2u.js} +1 -1
  87. package/dist/web/assets/{just-KiXY5riV.js → just-BQgCkdhV.js} +1 -1
  88. package/dist/web/assets/{kanban-definition-P3RFRI5V-q-zm7dfv.js → kanban-definition-P3RFRI5V-CoXFy4Ut.js} +1 -1
  89. package/dist/web/assets/{latex-i_9kRMgr.js → latex-Ca5Jf2Jd.js} +1 -1
  90. package/dist/web/assets/{line-DDhwvqef.js → line-C76_QaGr.js} +1 -1
  91. package/dist/web/assets/{linear-c8ViwBO3.js → linear-BuH_Zb4z.js} +1 -1
  92. package/dist/web/assets/{liquid-B1LRugeL.js → liquid-CSCRCgF3.js} +1 -1
  93. package/dist/web/assets/{lua-PLqxkaI5.js → lua-C4IZzkwc.js} +1 -1
  94. package/dist/web/assets/{marko-KKSzWszp.js → marko-BgEbfzVq.js} +1 -1
  95. package/dist/web/assets/{mdc-BkVjD0F4.js → mdc-DQkkC6Bm.js} +1 -1
  96. package/dist/web/assets/{mermaid-parser.core-vLmarQ1b.js → mermaid-parser.core-C6bK5onm.js} +3 -3
  97. package/dist/web/assets/{mermaid.core-CaSYqI02.js → mermaid.core-BlumzZwI.js} +4 -4
  98. package/dist/web/assets/{mindmap-definition-LZFPQGKD-DQUlG3eq.js → mindmap-definition-LZFPQGKD-DUZ9lkHi.js} +1 -1
  99. package/dist/web/assets/{nginx-BCxqweXv.js → nginx-C-nA8WcZ.js} +1 -1
  100. package/dist/web/assets/{nim-Bn4AK1z1.js → nim-CdJOam9_.js} +1 -1
  101. package/dist/web/assets/{org-BdePQpbO.js → org-gMZBqtyI.js} +1 -1
  102. package/dist/web/assets/{packet-JDAUHWVQ-B036XPve.js → packet-JDAUHWVQ-zILCc75J.js} +1 -1
  103. package/dist/web/assets/{pegDiagram-BGZESJAR-B5VSphc1.js → pegDiagram-BGZESJAR-MVi1ULP2.js} +1 -1
  104. package/dist/web/assets/{perl-DOKWME04.js → perl-C2-G_qAE.js} +1 -1
  105. package/dist/web/assets/{php-D1jKZSZS.js → php-DTPJPNpf.js} +1 -1
  106. package/dist/web/assets/{pie-XZMESJXO-B0mUrCvT.js → pie-XZMESJXO-fQA5AQHi.js} +1 -1
  107. package/dist/web/assets/{pieDiagram-CAPJLFHJ-C8xmyQ-z.js → pieDiagram-CAPJLFHJ-BK9l7w7g.js} +1 -1
  108. package/dist/web/assets/{pug-BJpuboRB.js → pug-DLUtfK-s.js} +1 -1
  109. package/dist/web/assets/{qml-CEJGh-Kq.js → qml-CRHnLnQC.js} +1 -1
  110. package/dist/web/assets/{quadrantDiagram-GDMTTRAM-D9H7_cMs.js → quadrantDiagram-GDMTTRAM-Duujn2Nw.js} +1 -1
  111. package/dist/web/assets/{r-D99YzVsv.js → r-BoPR6WG2.js} +1 -1
  112. package/dist/web/assets/{radar-ABXABTNO-BsvigTX1.js → radar-ABXABTNO-CKsYvVqz.js} +1 -1
  113. package/dist/web/assets/{railroad-I3PHUGI6-BniuGKI_.js → railroad-I3PHUGI6-B65B3uNN.js} +1 -1
  114. package/dist/web/assets/{railroad-abnf-LNEFI6M7-Dq8rfUcB.js → railroad-abnf-LNEFI6M7-3QHUBp4u.js} +1 -1
  115. package/dist/web/assets/{railroad-ebnf-DWYD2UWJ-eqGmJVi-.js → railroad-ebnf-DWYD2UWJ-FVhXeBSj.js} +1 -1
  116. package/dist/web/assets/{railroad-peg-JR7BVNR7-pKU4bxp7.js → railroad-peg-JR7BVNR7-Dm-KqLjB.js} +1 -1
  117. package/dist/web/assets/{railroadDiagram-SM67HX2B-BtmVYBDt.js → railroadDiagram-SM67HX2B-DF4ZGcIG.js} +1 -1
  118. package/dist/web/assets/{razor-V3YH92c-.js → razor-BuCV9tNu.js} +1 -1
  119. package/dist/web/assets/readFrontMatter-Mi8OcHvO.js +105 -0
  120. package/dist/web/assets/{regexp-zxy_MBYX.js → regexp-qKTqrnck.js} +1 -1
  121. package/dist/web/assets/{requirementDiagram-X7JNWC4A-BhsEMfWN.js → requirementDiagram-X7JNWC4A-DjRke5ii.js} +1 -1
  122. package/dist/web/assets/{rst-mDxKxoTF.js → rst-CRl5lm-Q.js} +1 -1
  123. package/dist/web/assets/{ruby-2fdsFnyL.js → ruby-B9hlbxxT.js} +1 -1
  124. package/dist/web/assets/{sankeyDiagram-UM26HJRW-Blo8vqk5.js → sankeyDiagram-UM26HJRW-CamOgrS8.js} +1 -1
  125. package/dist/web/assets/{sas-B9eZjlRt.js → sas-C8_XUAnK.js} +1 -1
  126. package/dist/web/assets/{scss-CzLxdZSp.js → scss-CXsBS0VG.js} +1 -1
  127. package/dist/web/assets/{sequenceDiagram-ZO4K6R2Y-DrzXts2L.js → sequenceDiagram-ZO4K6R2Y-B_TGH3Kb.js} +1 -1
  128. package/dist/web/assets/{shellscript-DjP-Cu--.js → shellscript-DWMstwWF.js} +1 -1
  129. package/dist/web/assets/{shellsession-CwreK3FS.js → shellsession-Btxe1tNF.js} +1 -1
  130. package/dist/web/assets/{soy-C5Ng8TEx.js → soy-mLggCgmX.js} +1 -1
  131. package/dist/web/assets/{sql-BfbMjUZp.js → sql-CQWaF3T9.js} +1 -1
  132. package/dist/web/assets/{src-zUDYm5ap.js → src-C7grwUMY.js} +1 -1
  133. package/dist/web/assets/{stata-d4tyAeP_.js → stata-CuWbLp-h.js} +1 -1
  134. package/dist/web/assets/{stateDiagram-v2-TBUQTH76-DjZ1vBcn.js → stateDiagram-v2-TBUQTH76-BZ8S3qm5.js} +1 -1
  135. package/dist/web/assets/{surrealql-DTHkj589.js → surrealql-C-vm0daZ.js} +1 -1
  136. package/dist/web/assets/{svelte-BuYW1eGR.js → svelte-CtDkvgD0.js} +1 -1
  137. package/dist/web/assets/{swimlanes-N4OXWK64-B01cawi9.js → swimlanes-N4OXWK64-BfATBQI8.js} +1 -1
  138. package/dist/web/assets/swimlanesDiagram-K3J5GTZL-DqMMLgX3.js +8 -0
  139. package/dist/web/assets/{templ-C2uBh9Ag.js → templ-H8UIFth7.js} +1 -1
  140. package/dist/web/assets/{tex-CM41T9FS.js → tex-CkbKsWZ8.js} +1 -1
  141. package/dist/web/assets/{timeline-definition-YOQAKGHF-DA3lBb9c.js → timeline-definition-YOQAKGHF-u2i5XlTn.js} +1 -1
  142. package/dist/web/assets/{treeView-D4JQ5SDB-BLlFhQyR.js → treeView-D4JQ5SDB-CqQ4lze0.js} +1 -1
  143. package/dist/web/assets/{treemap-SAJKECNS-DHDxrnYC.js → treemap-SAJKECNS-C8LB5E0F.js} +1 -1
  144. package/dist/web/assets/{ts-tags-CubWvvW8.js → ts-tags-Cu0aDIzl.js} +1 -1
  145. package/dist/web/assets/{tsx-BOJXRLTs.js → tsx-CAExLcKf.js} +1 -1
  146. package/dist/web/assets/{twig-DRJ5AsA3.js → twig-CsER03l2.js} +1 -1
  147. package/dist/web/assets/{typescript-BNgJ2FM9.js → typescript-5sYbFyp_.js} +1 -1
  148. package/dist/web/assets/{typst-DD5tA4KG.js → typst-xTMLS2uO.js} +1 -1
  149. package/dist/web/assets/{usecaseDiagram-VIAY4XPW-DMYZGaBl.js → usecaseDiagram-VIAY4XPW-DkNC7sDP.js} +1 -1
  150. package/dist/web/assets/{vennDiagram-BLWOH2XV-EufOoAyB.js → vennDiagram-BLWOH2XV-jyKf3LAy.js} +1 -1
  151. package/dist/web/assets/{vue-DodVQd5D.js → vue-COaEYbeF.js} +1 -1
  152. package/dist/web/assets/{vue-html-D8YdbzI8.js → vue-html-C0-x_Zbs.js} +1 -1
  153. package/dist/web/assets/{vue-vine-Daazu5-q.js → vue-vine-iVnGh9vX.js} +1 -1
  154. package/dist/web/assets/{wardley-7MLQ67FV-CXmW0Q5D.js → wardley-7MLQ67FV-BNNco9TK.js} +1 -1
  155. package/dist/web/assets/{wardleyDiagram-YMQ3BMBF-B5oI1vuE.js → wardleyDiagram-YMQ3BMBF-B7qnVbxX.js} +1 -1
  156. package/dist/web/assets/{xml-C00crbAK.js → xml-DCmPPgCS.js} +1 -1
  157. package/dist/web/assets/{xsl-DGdUfA8V.js → xsl-C95o3Y65.js} +1 -1
  158. package/dist/web/assets/{xychartDiagram-TAQBALBS-kVDrm0rh.js → xychartDiagram-TAQBALBS-ByDg_iLk.js} +1 -1
  159. package/dist/web/assets/{yaml-SvAgLt0R.js → yaml-6uUvTVqV.js} +1 -1
  160. package/dist/web/index.html +7 -2
  161. package/dist/web/licences.md +3365 -0
  162. package/package.json +9 -3
  163. package/dist/web/assets/channel-CPGqLD1P.js +0 -1
  164. package/dist/web/assets/flowDiagram-OXPTDLAJ-LJSf5aAK.js +0 -1
  165. package/dist/web/assets/index-DdkL6eTr.css +0 -1
  166. package/dist/web/assets/index-thDNjFvN.js +0 -235
  167. package/dist/web/assets/swimlanesDiagram-K3J5GTZL-CzwG903S.js +0 -8
package/README.md CHANGED
@@ -19,7 +19,7 @@ Markdown Review is a local tool. It is one CLI that starts a small server for ea
19
19
 
20
20
  - Node.js 22.22.2 or later in the 22 line, 24.15.0 or later in the 24 line, or 26 and later
21
21
  - macOS or Linux
22
- - A current version of Chrome, Firefox or Safari (at least Chrome 105, Firefox 140 or Safari 17.2)
22
+ - A current version of Chrome, Firefox or Safari (at least Chrome 123, Firefox 140 or Safari 17.5)
23
23
 
24
24
  The tool works best inside a git repository, where the repository root is the scope of the review. Outside one, it uses the current directory.
25
25
 
@@ -76,19 +76,20 @@ markdown-review open docs/plan.md
76
76
 
77
77
  - **Comment on a passage:** select text, including across paragraphs, and click **Comment**.
78
78
  - **Comment on a block:** hover over a block and click the **+** in the left margin. Use this for code blocks, tables, diagrams and HTML.
79
- - **Comment on a doc:** click **Comment on this doc** under its first heading.
80
- - **Comment on the whole review:** use the box at the top of the sidebar.
79
+ - **Comment on a doc or on the whole review:** click **+ Comment** at the top of the comments and choose **On this doc** or **On the whole review**.
81
80
 
82
- Comments start as drafts. When you are ready, click **Submit** at the foot of the comments and choose:
81
+ You write one comment at a time. If you start another while the open one has text you haven't saved, it asks whether to save or discard that text first. Press Cmd+Enter (Ctrl+Enter on Windows and Linux) to save, and Escape to close.
82
+
83
+ Saved comments are drafts, marked with a Draft badge, until you submit them. Click **Edit** to change one. When you are ready, click **Submit** at the foot of the comments. It shows how many drafts it will send and which docs they are on. Choose:
83
84
 
84
85
  - **Request changes**, to send your drafts to the agent and wait for its answers.
85
86
  - **Approve**, to end the review. Any drafts are sent with the approval, and the agent addresses them before carrying on.
86
87
 
87
- The sidebar groups threads into Drafts, Open, Outdated and Resolved. Its **This doc / All docs** toggle shows every thread across the repository, so you can review a set of docs together. Click a thread to jump to its passage, or click highlighted text to find its thread. Reply to a resolved thread to reopen it. A thread becomes outdated when the agent's edits remove the text it was on.
88
+ The comments are grouped into Drafts, Open, Outdated and Resolved. When other docs have comments too, **This doc** and **All docs** tabs at the top switch between this doc's comments and every doc's, so you can review a set of docs together. Click a thread's location to jump to its passage, or click highlighted text to find its thread. Reply to a resolved thread to reopen it. A thread becomes outdated when the agent's edits remove the text it was on.
88
89
 
89
90
  The bar beneath the comments shows whether the agent is listening. If it is not, your comments wait in its inbox until it next looks; the **Submit** menu says which.
90
91
 
91
- Links between markdown docs in the repository open in the app. Docs render with GitHub-style tables, task lists, syntax-highlighted code and Mermaid diagrams.
92
+ Links between markdown docs in the repository open in the app. Docs render with GitHub-style tables, task lists, alerts, syntax-highlighted code and Mermaid diagrams. Frontmatter shows as a Properties panel at the top of the doc, and each heading has a link you can copy.
92
93
 
93
94
  ### Commands
94
95
 
package/dist/cli.js CHANGED
@@ -13,6 +13,7 @@ import { createServer } from "node:http";
13
13
  import { getRequestListener } from "@hono/node-server";
14
14
  import { Hono } from "hono";
15
15
  import { stream, streamSSE } from "hono/streaming";
16
+ import { alert } from "@mdit/plugin-alert";
16
17
  import { tasklist } from "@mdit/plugin-tasklist";
17
18
  import markdownIt from "markdown-it";
18
19
  import search from "approx-string-match";
@@ -42,8 +43,10 @@ function createProcessTerminal() {
42
43
  //#region src/server/runtime/packageVersion.ts
43
44
  var packageVersion = {
44
45
  name: "@krelborn/markdown-review",
45
- version: "0.1.0",
46
+ version: "0.2.0",
46
47
  description: "Review agent-written markdown in the browser and hand the comments back to the agent",
48
+ homepage: "https://github.com/Krelborn/markdown-review#readme",
49
+ bugs: { "url": "https://github.com/Krelborn/markdown-review/issues" },
47
50
  license: "MIT",
48
51
  repository: {
49
52
  "type": "git",
@@ -72,6 +75,7 @@ var packageVersion = {
72
75
  },
73
76
  dependencies: {
74
77
  "@hono/node-server": "^2.1.4",
78
+ "@mdit/plugin-alert": "^2.0.2",
75
79
  "@mdit/plugin-tasklist": "^1.1.3",
76
80
  "approx-string-match": "^2.0.0",
77
81
  "chokidar": "^5.0.0",
@@ -82,7 +86,7 @@ var packageVersion = {
82
86
  },
83
87
  devDependencies: {
84
88
  "@babel/core": "^8.0.7",
85
- "@krelborn/stylesui": "^0.2.1",
89
+ "@krelborn/stylesui": "^0.6.0",
86
90
  "@playwright/test": "^1.64.0",
87
91
  "@rolldown/plugin-babel": "^0.2.4",
88
92
  "@testing-library/dom": "^10.4.2",
@@ -109,7 +113,8 @@ var packageVersion = {
109
113
  "shiki": "^4.5.0",
110
114
  "typescript": "^7.0.2",
111
115
  "vite": "^8.3.3",
112
- "vitest": "^5.0.3"
116
+ "vitest": "^5.0.3",
117
+ "yaml": "^2.9.1"
113
118
  },
114
119
  engines: { "node": "^22.22.2 || ^24.15.0 || >=26.0.0" },
115
120
  packageManager: "pnpm@10.18.3"
@@ -1290,13 +1295,14 @@ var newThreadSchema = z.strictObject({
1290
1295
  //#endregion
1291
1296
  //#region src/server/store/hashSource.ts
1292
1297
  /**
1293
- * Fingerprints a doc's source so the store can tell when anchors were computed against an older version
1298
+ * Fingerprints a doc's source under the current canonical-text rules, so the store can tell when anchors were computed
1299
+ * against an older version of either
1294
1300
  *
1295
1301
  * @param source the markdown source
1296
- * @returns the SHA-256 of the source, as 64 lowercase hex digits
1302
+ * @returns the SHA-256 of the anchoring version, a newline and the source, as 64 lowercase hex digits
1297
1303
  */
1298
1304
  function hashSource(source) {
1299
- return createHash("sha256").update(source, "utf8").digest("hex");
1305
+ return createHash("sha256").update(`2\n${source}`, "utf8").digest("hex");
1300
1306
  }
1301
1307
  //#endregion
1302
1308
  //#region src/server/http/browserRoutes.ts
@@ -1628,6 +1634,48 @@ function isExpectedToken(authorization, token) {
1628
1634
  return actual.length === expected.length && timingSafeEqual(actual, expected);
1629
1635
  }
1630
1636
  //#endregion
1637
+ //#region src/shared/appearance/Appearance.ts
1638
+ var colorModeSchema = z.enum([
1639
+ "system",
1640
+ "light",
1641
+ "dark"
1642
+ ]);
1643
+ var paletteNameSchema = z.enum([
1644
+ "paper",
1645
+ "bright",
1646
+ "mist",
1647
+ "dusk"
1648
+ ]);
1649
+ var defaultAppearance = {
1650
+ mode: "system",
1651
+ palette: "paper"
1652
+ };
1653
+ //#endregion
1654
+ //#region src/shared/appearance/appearanceCookies.ts
1655
+ var cookieNames = {
1656
+ mode: "markdown-review-mode",
1657
+ palette: "markdown-review-palette"
1658
+ };
1659
+ /**
1660
+ * Reads the appearance settings the user has chosen from their cookies
1661
+ *
1662
+ * @param cookies a `Cookie` request header, or `document.cookie`
1663
+ * @returns each setting whose cookie holds a value on its list; a setting with no cookie, or an unknown value, is left
1664
+ * out
1665
+ */
1666
+ function readStoredAppearance(cookies) {
1667
+ const values = new Map(cookies.split(";").flatMap((cookie) => {
1668
+ const separator = cookie.indexOf("=");
1669
+ return separator === -1 ? [] : [[cookie.slice(0, separator).trim(), cookie.slice(separator + 1).trim()]];
1670
+ }));
1671
+ const stored = {};
1672
+ const mode = colorModeSchema.safeParse(values.get(cookieNames.mode));
1673
+ if (mode.success) stored.mode = mode.data;
1674
+ const palette = paletteNameSchema.safeParse(values.get(cookieNames.palette));
1675
+ if (palette.success) stored.palette = palette.data;
1676
+ return stored;
1677
+ }
1678
+ //#endregion
1631
1679
  //#region src/server/http/shellRoutes.ts
1632
1680
  var assetContentTypes = {
1633
1681
  ".css": "text/css; charset=utf-8",
@@ -1638,10 +1686,19 @@ function registerShellRoutes(app, { webDirectory }) {
1638
1686
  const serveShell = async (context) => {
1639
1687
  const html = await readTextFileOrNull(path.join(webDirectory, "index.html"));
1640
1688
  if (html === null) throw new HttpError(500, "missing-web-app", "This build of markdown-review has no web app");
1641
- return context.html(html, 200, { "Content-Security-Policy": contentSecurityPolicy });
1689
+ const appearance = {
1690
+ ...defaultAppearance,
1691
+ ...readStoredAppearance(context.req.header("cookie") ?? "")
1692
+ };
1693
+ return context.html(withAppearance(html, appearance), 200, { "Content-Security-Policy": contentSecurityPolicy });
1642
1694
  };
1643
1695
  app.get("/", serveShell);
1644
1696
  app.get("/document/*", serveShell);
1697
+ app.get("/licences", async (context) => {
1698
+ const licences = await readTextFileOrNull(path.join(webDirectory, "licences.md"));
1699
+ if (licences === null) throw new HttpError(404, "missing-file", "This build of markdown-review has no list of third-party licences");
1700
+ return context.text(licences, 200, { "X-Content-Type-Options": "nosniff" });
1701
+ });
1645
1702
  app.get("/assets/*", async (context) => {
1646
1703
  const name = context.req.path.slice(8);
1647
1704
  if (!isRepositoryRelativePath(name)) throw new HttpError(404, "missing-file", `${name} is not an asset`);
@@ -1658,6 +1715,12 @@ function registerShellRoutes(app, { webDirectory }) {
1658
1715
  });
1659
1716
  });
1660
1717
  }
1718
+ /**
1719
+ * Puts the appearance on the page's `<html>` element, so the page is drawn in it from the first frame
1720
+ */
1721
+ function withAppearance(html, { mode, palette }) {
1722
+ return html.replace("<html", `<html data-sui-mode="${mode}" data-sui-palette="${palette}"`);
1723
+ }
1661
1724
  //#endregion
1662
1725
  //#region src/server/http/createApp.ts
1663
1726
  var statusForStoreError = {
@@ -1748,6 +1811,7 @@ function fenceLanguage(info) {
1748
1811
  var leafBlockKinds = {
1749
1812
  code_block: "codeBlock",
1750
1813
  fence: "fence",
1814
+ front_matter: "frontMatter",
1751
1815
  heading_open: "inline",
1752
1816
  html_block: "htmlBlock",
1753
1817
  paragraph_open: "inline",
@@ -1783,6 +1847,38 @@ function lastLineWithText(sourceLines, lineBegin, lineEnd) {
1783
1847
  return endLine;
1784
1848
  }
1785
1849
  //#endregion
1850
+ //#region src/shared/markdown/frontMatterRule.ts
1851
+ var openingFence = "---";
1852
+ var closingFences = /* @__PURE__ */ new Set(["---", "..."]);
1853
+ /**
1854
+ * Recognises YAML frontmatter: a `---` line that starts the doc and is followed by a line that is not blank, through the
1855
+ * next `---` or `...` line
1856
+ *
1857
+ * @returns whether the doc starts with frontmatter; when it does and `silent` is false, the rule adds a `front_matter`
1858
+ * token holding the lines between the fences
1859
+ */
1860
+ function frontMatterRule(state, startLine, endLine, silent) {
1861
+ if (startLine !== 0 || state.parentType !== "root" || lineAt(state, 0).trimEnd() !== openingFence) return false;
1862
+ if (state.isEmpty(1)) return false;
1863
+ const closingLine = findClosingLine(state, endLine);
1864
+ if (closingLine === null) return false;
1865
+ if (!silent) {
1866
+ const token = state.push("front_matter", "", 0);
1867
+ token.content = state.getLines(1, closingLine, 0, true);
1868
+ token.map = [0, closingLine + 1];
1869
+ token.markup = openingFence;
1870
+ state.line = closingLine + 1;
1871
+ }
1872
+ return true;
1873
+ }
1874
+ function findClosingLine(state, endLine) {
1875
+ for (let line = 1; line < endLine; line++) if (closingFences.has(lineAt(state, line).trimEnd())) return line;
1876
+ return null;
1877
+ }
1878
+ function lineAt(state, line) {
1879
+ return state.getLines(line, line + 1, 0, false);
1880
+ }
1881
+ //#endregion
1786
1882
  //#region src/shared/markdown/tokenAt.ts
1787
1883
  /**
1788
1884
  * Reads a token that markdown-it guarantees is present, such as the token a render rule was called for
@@ -1817,25 +1913,33 @@ function withoutFinalNewline(content) {
1817
1913
  * @returns an instance whose rendered leaf block elements carry `data-md-block`, `data-md-start` and `data-md-end`
1818
1914
  */
1819
1915
  function createMarkdownIt({ highlight } = {}) {
1820
- const markdown = new markdownIt({ html: true }).use(tasklist);
1916
+ const markdown = new markdownIt({ html: true }).use(tasklist).use(alert, { titleRenderer: renderAlertTitle });
1821
1917
  const escapeHtml = markdown.utils.escapeHtml;
1822
1918
  const renderFence = (tokens, index, _options, _environment, renderer) => {
1823
1919
  const token = tokenAt(tokens, index);
1824
1920
  const code = withoutFinalNewline(token.content);
1825
1921
  const language = fenceLanguage(token.info);
1826
1922
  const languageClass = language === "" ? "" : ` class="language-${escapeHtml(language)}"`;
1923
+ const languageHeader = language === "" || language === "mermaid" ? "" : ` data-language="${escapeHtml(language)}"`;
1827
1924
  const highlighted = highlight?.(code, language) ?? `<pre><code${languageClass}>${escapeHtml(code)}</code></pre>`;
1828
- return `<div${renderer.renderAttrs(token)}>${highlighted}</div>\n`;
1925
+ return `<div${renderer.renderAttrs(token)}${languageHeader}>${highlighted}</div>\n`;
1829
1926
  };
1830
1927
  const renderCodeBlock = (tokens, index, _options, _environment, renderer) => {
1831
1928
  const token = tokenAt(tokens, index);
1832
1929
  return `<div${renderer.renderAttrs(token)}><pre><code>${escapeHtml(withoutFinalNewline(token.content))}</code></pre></div>\n`;
1833
1930
  };
1931
+ const renderFrontMatterBlock = (tokens, index, _options, _environment, renderer) => {
1932
+ const token = tokenAt(tokens, index);
1933
+ const yaml = escapeHtml(withoutFinalNewline(token.content));
1934
+ return `<div${renderer.renderAttrs(token)} data-front-matter=""><pre><code>${yaml}</code></pre></div>\n`;
1935
+ };
1936
+ markdown.block.ruler.before("table", "front_matter", frontMatterRule);
1834
1937
  markdown.core.ruler.push("tag_leaf_blocks", tagLeafBlocks);
1835
1938
  markdown.renderer.rules.paragraph_open = renderParagraphOpen;
1836
1939
  markdown.renderer.rules.paragraph_close = renderParagraphClose;
1837
1940
  markdown.renderer.rules.fence = renderFence;
1838
1941
  markdown.renderer.rules.code_block = renderCodeBlock;
1942
+ markdown.renderer.rules.front_matter = renderFrontMatterBlock;
1839
1943
  markdown.renderer.rules.html_block = renderHtmlBlock;
1840
1944
  return markdown;
1841
1945
  }
@@ -1855,6 +1959,17 @@ var renderHtmlBlock = (tokens, index, _options, _environment, renderer) => {
1855
1959
  const token = tokenAt(tokens, index);
1856
1960
  return `<div${renderer.renderAttrs(token)}>${token.content}</div>\n`;
1857
1961
  };
1962
+ var alertTitles = {
1963
+ caution: "Caution",
1964
+ important: "Important",
1965
+ note: "Note",
1966
+ tip: "Tip",
1967
+ warning: "Warning"
1968
+ };
1969
+ var renderAlertTitle = (tokens, index) => {
1970
+ const name = tokenAt(tokens, index).markup;
1971
+ return `<p class="markdown-alert-title" data-md-ignore="">${alertTitles[name] ?? name}</p>\n`;
1972
+ };
1858
1973
  //#endregion
1859
1974
  //#region src/shared/markdown/hasStructuralHtml.ts
1860
1975
  var phrasingTagNames = /* @__PURE__ */ new Set([
@@ -1961,24 +2076,7 @@ function toSourceTextBlock({ endLine, startLine }, sourceLines) {
1961
2076
  function toMarkdownBlock(tokens, leafBlock) {
1962
2077
  const { endLine, kind, startLine, token, tokenIndex } = leafBlock;
1963
2078
  switch (kind) {
1964
- case "inline": {
1965
- const children = tokenAt(tokens, tokenIndex + 1).children ?? [];
1966
- const { lineStartOffsets, text } = inlineText(children);
1967
- const lineOffsets = [0, ...lineStartOffsets].map((offset, index) => ({
1968
- line: startLine + index,
1969
- offset
1970
- }));
1971
- const isSetextHeading = token.markup === "=" || token.markup === "-";
1972
- const textLineCount = endLine - startLine + (isSetextHeading ? 0 : 1);
1973
- return {
1974
- endLine,
1975
- exactLines: lineOffsets.length === textLineCount,
1976
- lineOffsets,
1977
- startLine,
1978
- text,
1979
- wholeBlockOnly: hasStructuralHtml(children)
1980
- };
1981
- }
2079
+ case "inline": return toInlineBlock(tokens, leafBlock);
1982
2080
  case "tableRow": {
1983
2081
  const text = tableRowCells(tokens, tokenIndex).join(" ");
1984
2082
  return {
@@ -2005,6 +2103,17 @@ function toMarkdownBlock(tokens, leafBlock) {
2005
2103
  wholeBlockOnly
2006
2104
  };
2007
2105
  }
2106
+ case "frontMatter": {
2107
+ const text = withoutFinalNewline(token.content);
2108
+ return {
2109
+ endLine,
2110
+ exactLines: true,
2111
+ lineOffsets: codeLineOffsets(text, startLine + 1, endLine),
2112
+ startLine,
2113
+ text,
2114
+ wholeBlockOnly: true
2115
+ };
2116
+ }
2008
2117
  case "codeBlock":
2009
2118
  case "htmlBlock": {
2010
2119
  const text = withoutFinalNewline(token.content);
@@ -2020,6 +2129,24 @@ function toMarkdownBlock(tokens, leafBlock) {
2020
2129
  }
2021
2130
  }
2022
2131
  }
2132
+ function toInlineBlock(tokens, { endLine, startLine, token, tokenIndex }) {
2133
+ const children = tokenAt(tokens, tokenIndex + 1).children ?? [];
2134
+ const { lineStartOffsets, text } = inlineText(children);
2135
+ const lineOffsets = [0, ...lineStartOffsets].map((offset, index) => ({
2136
+ line: startLine + index,
2137
+ offset
2138
+ }));
2139
+ const isSetextHeading = token.markup === "=" || token.markup === "-";
2140
+ const textLineCount = endLine - startLine + (isSetextHeading ? 0 : 1);
2141
+ return {
2142
+ endLine,
2143
+ exactLines: lineOffsets.length === textLineCount,
2144
+ lineOffsets,
2145
+ startLine,
2146
+ text,
2147
+ wholeBlockOnly: hasStructuralHtml(children)
2148
+ };
2149
+ }
2023
2150
  function tableRowCells(tokens, rowTokenIndex) {
2024
2151
  const cells = [];
2025
2152
  for (let index = rowTokenIndex + 1; index < tokens.length; index++) {
@@ -1 +1 @@
1
- import{m as e,t}from"./mermaid-parser.core-vLmarQ1b.js";import{n}from"./chunk-Y2CYZVJY-DsF7k-Jl.js";import{m as r}from"./src-zUDYm5ap.js";import"./chunk-VPRB5NB3-B00Cf0rw.js";import{n as i,r as a,t as o}from"./chunk-AW2ZBBNX-BUkHB8w8.js";import{t as s}from"./chunk-JWPE2WC7-DVXcaiue.js";import"./mermaid.core-CaSYqI02.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
+ import{m as e,t}from"./mermaid-parser.core-C6bK5onm.js";import{n}from"./chunk-Y2CYZVJY-DsF7k-Jl.js";import{m as r}from"./src-C7grwUMY.js";import"./chunk-VPRB5NB3-CKJwbb6W.js";import{n as i,r as a,t as o}from"./chunk-AW2ZBBNX-Do6yJgQr.js";import{t as s}from"./chunk-JWPE2WC7-DVXcaiue.js";import"./mermaid.core-BlumzZwI.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{i as e}from"./index-thDNjFvN.js";import{t}from"./html-DZ111F_a.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{i as e}from"./index-DBPwT0qJ.js";import{t}from"./html-CcFED7nW.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};