@typespec/compiler 0.41.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 (352) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +9 -0
  3. package/cmd/tsp-server.js +3 -0
  4. package/cmd/tsp.js +3 -0
  5. package/dist/cmd/runner.d.ts +9 -0
  6. package/dist/cmd/runner.d.ts.map +1 -0
  7. package/dist/cmd/runner.js +62 -0
  8. package/dist/cmd/runner.js.map +1 -0
  9. package/dist/config/config-interpolation.d.ts +11 -0
  10. package/dist/config/config-interpolation.d.ts.map +1 -0
  11. package/dist/config/config-interpolation.js +109 -0
  12. package/dist/config/config-interpolation.js.map +1 -0
  13. package/dist/config/config-loader.d.ts +25 -0
  14. package/dist/config/config-loader.d.ts.map +1 -0
  15. package/dist/config/config-loader.js +182 -0
  16. package/dist/config/config-loader.js.map +1 -0
  17. package/dist/config/config-schema.d.ts +4 -0
  18. package/dist/config/config-schema.d.ts.map +1 -0
  19. package/dist/config/config-schema.js +84 -0
  20. package/dist/config/config-schema.js.map +1 -0
  21. package/dist/config/index.d.ts +3 -0
  22. package/dist/config/index.d.ts.map +1 -0
  23. package/dist/config/index.js +3 -0
  24. package/dist/config/index.js.map +1 -0
  25. package/dist/config/types.d.ts +79 -0
  26. package/dist/config/types.d.ts.map +1 -0
  27. package/dist/config/types.js +2 -0
  28. package/dist/config/types.js.map +1 -0
  29. package/dist/core/binder.d.ts +29 -0
  30. package/dist/core/binder.d.ts.map +1 -0
  31. package/dist/core/binder.js +455 -0
  32. package/dist/core/binder.js.map +1 -0
  33. package/dist/core/charcode.d.ts +130 -0
  34. package/dist/core/charcode.d.ts.map +1 -0
  35. package/dist/core/charcode.js +115 -0
  36. package/dist/core/charcode.js.map +1 -0
  37. package/dist/core/checker.d.ts +138 -0
  38. package/dist/core/checker.d.ts.map +1 -0
  39. package/dist/core/checker.js +4070 -0
  40. package/dist/core/checker.js.map +1 -0
  41. package/dist/core/cli/args.d.ts +18 -0
  42. package/dist/core/cli/args.d.ts.map +1 -0
  43. package/dist/core/cli/args.js +108 -0
  44. package/dist/core/cli/args.js.map +1 -0
  45. package/dist/core/cli/cli.d.ts +2 -0
  46. package/dist/core/cli/cli.d.ts.map +1 -0
  47. package/dist/core/cli/cli.js +477 -0
  48. package/dist/core/cli/cli.js.map +1 -0
  49. package/dist/core/cli/index.d.ts +2 -0
  50. package/dist/core/cli/index.d.ts.map +1 -0
  51. package/dist/core/cli/index.js +2 -0
  52. package/dist/core/cli/index.js.map +1 -0
  53. package/dist/core/decorator-utils.d.ts +108 -0
  54. package/dist/core/decorator-utils.d.ts.map +1 -0
  55. package/dist/core/decorator-utils.js +326 -0
  56. package/dist/core/decorator-utils.js.map +1 -0
  57. package/dist/core/diagnostics.d.ts +93 -0
  58. package/dist/core/diagnostics.d.ts.map +1 -0
  59. package/dist/core/diagnostics.js +315 -0
  60. package/dist/core/diagnostics.js.map +1 -0
  61. package/dist/core/emitter-utils.d.ts +14 -0
  62. package/dist/core/emitter-utils.d.ts.map +1 -0
  63. package/dist/core/emitter-utils.js +16 -0
  64. package/dist/core/emitter-utils.js.map +1 -0
  65. package/dist/core/formatter-fs.d.ts +21 -0
  66. package/dist/core/formatter-fs.d.ts.map +1 -0
  67. package/dist/core/formatter-fs.js +79 -0
  68. package/dist/core/formatter-fs.js.map +1 -0
  69. package/dist/core/formatter.d.ts +10 -0
  70. package/dist/core/formatter.d.ts.map +1 -0
  71. package/dist/core/formatter.js +24 -0
  72. package/dist/core/formatter.js.map +1 -0
  73. package/dist/core/helpers/discriminator-utils.d.ts +14 -0
  74. package/dist/core/helpers/discriminator-utils.d.ts.map +1 -0
  75. package/dist/core/helpers/discriminator-utils.js +169 -0
  76. package/dist/core/helpers/discriminator-utils.js.map +1 -0
  77. package/dist/core/helpers/index.d.ts +6 -0
  78. package/dist/core/helpers/index.d.ts.map +1 -0
  79. package/dist/core/helpers/index.js +6 -0
  80. package/dist/core/helpers/index.js.map +1 -0
  81. package/dist/core/helpers/operation-utils.d.ts +15 -0
  82. package/dist/core/helpers/operation-utils.d.ts.map +1 -0
  83. package/dist/core/helpers/operation-utils.js +35 -0
  84. package/dist/core/helpers/operation-utils.js.map +1 -0
  85. package/dist/core/helpers/projected-names-utils.d.ts +20 -0
  86. package/dist/core/helpers/projected-names-utils.d.ts.map +1 -0
  87. package/dist/core/helpers/projected-names-utils.js +40 -0
  88. package/dist/core/helpers/projected-names-utils.js.map +1 -0
  89. package/dist/core/helpers/type-name-utils.d.ts +14 -0
  90. package/dist/core/helpers/type-name-utils.d.ts.map +1 -0
  91. package/dist/core/helpers/type-name-utils.js +122 -0
  92. package/dist/core/helpers/type-name-utils.js.map +1 -0
  93. package/dist/core/helpers/usage-resolver.d.ts +20 -0
  94. package/dist/core/helpers/usage-resolver.d.ts.map +1 -0
  95. package/dist/core/helpers/usage-resolver.js +108 -0
  96. package/dist/core/helpers/usage-resolver.js.map +1 -0
  97. package/dist/core/index.d.ts +26 -0
  98. package/dist/core/index.d.ts.map +1 -0
  99. package/dist/core/index.js +26 -0
  100. package/dist/core/index.js.map +1 -0
  101. package/dist/core/install.d.ts +2 -0
  102. package/dist/core/install.d.ts.map +1 -0
  103. package/dist/core/install.js +26 -0
  104. package/dist/core/install.js.map +1 -0
  105. package/dist/core/library.d.ts +34 -0
  106. package/dist/core/library.d.ts.map +1 -0
  107. package/dist/core/library.js +100 -0
  108. package/dist/core/library.js.map +1 -0
  109. package/dist/core/logger/console-sink.browser.d.ts +4 -0
  110. package/dist/core/logger/console-sink.browser.d.ts.map +1 -0
  111. package/dist/core/logger/console-sink.browser.js +14 -0
  112. package/dist/core/logger/console-sink.browser.js.map +1 -0
  113. package/dist/core/logger/console-sink.d.ts +9 -0
  114. package/dist/core/logger/console-sink.d.ts.map +1 -0
  115. package/dist/core/logger/console-sink.js +81 -0
  116. package/dist/core/logger/console-sink.js.map +1 -0
  117. package/dist/core/logger/index.d.ts +3 -0
  118. package/dist/core/logger/index.d.ts.map +1 -0
  119. package/dist/core/logger/index.js +3 -0
  120. package/dist/core/logger/index.js.map +1 -0
  121. package/dist/core/logger/logger.d.ts +7 -0
  122. package/dist/core/logger/logger.d.ts.map +1 -0
  123. package/dist/core/logger/logger.js +32 -0
  124. package/dist/core/logger/logger.js.map +1 -0
  125. package/dist/core/logger/tracer.d.ts +3 -0
  126. package/dist/core/logger/tracer.d.ts.map +1 -0
  127. package/dist/core/logger/tracer.js +91 -0
  128. package/dist/core/logger/tracer.js.map +1 -0
  129. package/dist/core/manifest.d.ts +21 -0
  130. package/dist/core/manifest.d.ts.map +1 -0
  131. package/dist/core/manifest.js +8 -0
  132. package/dist/core/manifest.js.map +1 -0
  133. package/dist/core/messages.d.ts +2253 -0
  134. package/dist/core/messages.d.ts.map +1 -0
  135. package/dist/core/messages.js +749 -0
  136. package/dist/core/messages.js.map +1 -0
  137. package/dist/core/module-resolver.d.ts +84 -0
  138. package/dist/core/module-resolver.d.ts.map +1 -0
  139. package/dist/core/module-resolver.js +170 -0
  140. package/dist/core/module-resolver.js.map +1 -0
  141. package/dist/core/node-host.browser.d.ts +2 -0
  142. package/dist/core/node-host.browser.d.ts.map +1 -0
  143. package/dist/core/node-host.browser.js +2 -0
  144. package/dist/core/node-host.browser.js.map +1 -0
  145. package/dist/core/node-host.d.ts +7 -0
  146. package/dist/core/node-host.d.ts.map +1 -0
  147. package/dist/core/node-host.js +43 -0
  148. package/dist/core/node-host.js.map +1 -0
  149. package/dist/core/nonascii.d.ts +2 -0
  150. package/dist/core/nonascii.d.ts.map +1 -0
  151. package/dist/core/nonascii.js +712 -0
  152. package/dist/core/nonascii.js.map +1 -0
  153. package/dist/core/options.d.ts +46 -0
  154. package/dist/core/options.d.ts.map +1 -0
  155. package/dist/core/options.js +2 -0
  156. package/dist/core/options.js.map +1 -0
  157. package/dist/core/parser.d.ts +17 -0
  158. package/dist/core/parser.d.ts.map +1 -0
  159. package/dist/core/parser.js +2561 -0
  160. package/dist/core/parser.js.map +1 -0
  161. package/dist/core/path-utils.d.ts +193 -0
  162. package/dist/core/path-utils.d.ts.map +1 -0
  163. package/dist/core/path-utils.js +427 -0
  164. package/dist/core/path-utils.js.map +1 -0
  165. package/dist/core/program.d.ts +104 -0
  166. package/dist/core/program.d.ts.map +1 -0
  167. package/dist/core/program.js +898 -0
  168. package/dist/core/program.js.map +1 -0
  169. package/dist/core/projection-members.d.ts +8 -0
  170. package/dist/core/projection-members.d.ts.map +1 -0
  171. package/dist/core/projection-members.js +387 -0
  172. package/dist/core/projection-members.js.map +1 -0
  173. package/dist/core/projector.d.ts +26 -0
  174. package/dist/core/projector.d.ts.map +1 -0
  175. package/dist/core/projector.js +523 -0
  176. package/dist/core/projector.js.map +1 -0
  177. package/dist/core/scanner.d.ts +125 -0
  178. package/dist/core/scanner.d.ts.map +1 -0
  179. package/dist/core/scanner.js +1012 -0
  180. package/dist/core/scanner.js.map +1 -0
  181. package/dist/core/schema-validator.d.ts +6 -0
  182. package/dist/core/schema-validator.d.ts.map +1 -0
  183. package/dist/core/schema-validator.js +38 -0
  184. package/dist/core/schema-validator.js.map +1 -0
  185. package/dist/core/semantic-walker.d.ts +53 -0
  186. package/dist/core/semantic-walker.d.ts.map +1 -0
  187. package/dist/core/semantic-walker.js +355 -0
  188. package/dist/core/semantic-walker.js.map +1 -0
  189. package/dist/core/type-utils.d.ts +49 -0
  190. package/dist/core/type-utils.d.ts.map +1 -0
  191. package/dist/core/type-utils.js +95 -0
  192. package/dist/core/type-utils.js.map +1 -0
  193. package/dist/core/types.d.ts +1345 -0
  194. package/dist/core/types.d.ts.map +1 -0
  195. package/dist/core/types.js +105 -0
  196. package/dist/core/types.js.map +1 -0
  197. package/dist/core/util.d.ts +150 -0
  198. package/dist/core/util.d.ts.map +1 -0
  199. package/dist/core/util.js +417 -0
  200. package/dist/core/util.js.map +1 -0
  201. package/dist/emitter-framework/asset-emitter.d.ts +5 -0
  202. package/dist/emitter-framework/asset-emitter.d.ts.map +1 -0
  203. package/dist/emitter-framework/asset-emitter.js +610 -0
  204. package/dist/emitter-framework/asset-emitter.js.map +1 -0
  205. package/dist/emitter-framework/builders/array-builder.d.ts +7 -0
  206. package/dist/emitter-framework/builders/array-builder.d.ts.map +1 -0
  207. package/dist/emitter-framework/builders/array-builder.js +45 -0
  208. package/dist/emitter-framework/builders/array-builder.js.map +1 -0
  209. package/dist/emitter-framework/builders/object-builder.d.ts +9 -0
  210. package/dist/emitter-framework/builders/object-builder.d.ts.map +1 -0
  211. package/dist/emitter-framework/builders/object-builder.js +30 -0
  212. package/dist/emitter-framework/builders/object-builder.js.map +1 -0
  213. package/dist/emitter-framework/builders/string-builder.d.ts +13 -0
  214. package/dist/emitter-framework/builders/string-builder.d.ts.map +1 -0
  215. package/dist/emitter-framework/builders/string-builder.js +98 -0
  216. package/dist/emitter-framework/builders/string-builder.js.map +1 -0
  217. package/dist/emitter-framework/custom-key-map.d.ts +29 -0
  218. package/dist/emitter-framework/custom-key-map.d.ts.map +1 -0
  219. package/dist/emitter-framework/custom-key-map.js +62 -0
  220. package/dist/emitter-framework/custom-key-map.js.map +1 -0
  221. package/dist/emitter-framework/index.d.ts +8 -0
  222. package/dist/emitter-framework/index.d.ts.map +1 -0
  223. package/dist/emitter-framework/index.js +8 -0
  224. package/dist/emitter-framework/index.js.map +1 -0
  225. package/dist/emitter-framework/placeholder.d.ts +12 -0
  226. package/dist/emitter-framework/placeholder.d.ts.map +1 -0
  227. package/dist/emitter-framework/placeholder.js +27 -0
  228. package/dist/emitter-framework/placeholder.js.map +1 -0
  229. package/dist/emitter-framework/type-emitter.d.ts +314 -0
  230. package/dist/emitter-framework/type-emitter.d.ts.map +1 -0
  231. package/dist/emitter-framework/type-emitter.js +612 -0
  232. package/dist/emitter-framework/type-emitter.js.map +1 -0
  233. package/dist/emitter-framework/types.d.ts +124 -0
  234. package/dist/emitter-framework/types.d.ts.map +1 -0
  235. package/dist/emitter-framework/types.js +39 -0
  236. package/dist/emitter-framework/types.js.map +1 -0
  237. package/dist/formatter/index.d.ts +11 -0
  238. package/dist/formatter/index.d.ts.map +1 -0
  239. package/dist/formatter/index.js +28 -0
  240. package/dist/formatter/index.js.map +1 -0
  241. package/dist/formatter/parser.d.ts +16 -0
  242. package/dist/formatter/parser.d.ts.map +1 -0
  243. package/dist/formatter/parser.js +23 -0
  244. package/dist/formatter/parser.js.map +1 -0
  245. package/dist/formatter/print/comment-handler.d.ts +7 -0
  246. package/dist/formatter/print/comment-handler.d.ts.map +1 -0
  247. package/dist/formatter/print/comment-handler.js +81 -0
  248. package/dist/formatter/print/comment-handler.js.map +1 -0
  249. package/dist/formatter/print/index.d.ts +3 -0
  250. package/dist/formatter/print/index.d.ts.map +1 -0
  251. package/dist/formatter/print/index.js +3 -0
  252. package/dist/formatter/print/index.js.map +1 -0
  253. package/dist/formatter/print/needs-parens.d.ts +10 -0
  254. package/dist/formatter/print/needs-parens.d.ts.map +1 -0
  255. package/dist/formatter/print/needs-parens.js +27 -0
  256. package/dist/formatter/print/needs-parens.js.map +1 -0
  257. package/dist/formatter/print/printer.d.ts +62 -0
  258. package/dist/formatter/print/printer.d.ts.map +1 -0
  259. package/dist/formatter/print/printer.js +1025 -0
  260. package/dist/formatter/print/printer.js.map +1 -0
  261. package/dist/formatter/print/types.d.ts +9 -0
  262. package/dist/formatter/print/types.d.ts.map +1 -0
  263. package/dist/formatter/print/types.js +2 -0
  264. package/dist/formatter/print/types.js.map +1 -0
  265. package/dist/init/index.d.ts +2 -0
  266. package/dist/init/index.d.ts.map +1 -0
  267. package/dist/init/index.js +2 -0
  268. package/dist/init/index.js.map +1 -0
  269. package/dist/init/init-template.d.ts +45 -0
  270. package/dist/init/init-template.d.ts.map +1 -0
  271. package/dist/init/init-template.js +45 -0
  272. package/dist/init/init-template.js.map +1 -0
  273. package/dist/init/init.d.ts +49 -0
  274. package/dist/init/init.d.ts.map +1 -0
  275. package/dist/init/init.js +224 -0
  276. package/dist/init/init.js.map +1 -0
  277. package/dist/lib/decorators.d.ts +222 -0
  278. package/dist/lib/decorators.d.ts.map +1 -0
  279. package/dist/lib/decorators.js +745 -0
  280. package/dist/lib/decorators.js.map +1 -0
  281. package/dist/lib/service.d.ts +38 -0
  282. package/dist/lib/service.d.ts.map +1 -0
  283. package/dist/lib/service.js +78 -0
  284. package/dist/lib/service.js.map +1 -0
  285. package/dist/manifest.js +4 -0
  286. package/dist/server/completion.d.ts +10 -0
  287. package/dist/server/completion.d.ts.map +1 -0
  288. package/dist/server/completion.js +207 -0
  289. package/dist/server/completion.js.map +1 -0
  290. package/dist/server/index.d.ts +3 -0
  291. package/dist/server/index.d.ts.map +1 -0
  292. package/dist/server/index.js +3 -0
  293. package/dist/server/index.js.map +1 -0
  294. package/dist/server/language-config.d.ts +195 -0
  295. package/dist/server/language-config.d.ts.map +1 -0
  296. package/dist/server/language-config.js +102 -0
  297. package/dist/server/language-config.js.map +1 -0
  298. package/dist/server/server.d.ts +2 -0
  299. package/dist/server/server.d.ts.map +1 -0
  300. package/dist/server/server.js +131 -0
  301. package/dist/server/server.js.map +1 -0
  302. package/dist/server/serverlib.d.ts +72 -0
  303. package/dist/server/serverlib.d.ts.map +1 -0
  304. package/dist/server/serverlib.js +1034 -0
  305. package/dist/server/serverlib.js.map +1 -0
  306. package/dist/server/symbol-structure.d.ts +4 -0
  307. package/dist/server/symbol-structure.d.ts.map +1 -0
  308. package/dist/server/symbol-structure.js +121 -0
  309. package/dist/server/symbol-structure.js.map +1 -0
  310. package/dist/server/tmlanguage.d.ts +3 -0
  311. package/dist/server/tmlanguage.d.ts.map +1 -0
  312. package/dist/server/tmlanguage.js +713 -0
  313. package/dist/server/tmlanguage.js.map +1 -0
  314. package/dist/server/type-details.d.ts +11 -0
  315. package/dist/server/type-details.d.ts.map +1 -0
  316. package/dist/server/type-details.js +72 -0
  317. package/dist/server/type-details.js.map +1 -0
  318. package/dist/server/type-signature.d.ts +2 -0
  319. package/dist/server/type-signature.d.ts.map +1 -0
  320. package/dist/server/type-signature.js +108 -0
  321. package/dist/server/type-signature.js.map +1 -0
  322. package/dist/testing/expect.d.ts +49 -0
  323. package/dist/testing/expect.d.ts.map +1 -0
  324. package/dist/testing/expect.js +83 -0
  325. package/dist/testing/expect.js.map +1 -0
  326. package/dist/testing/index.d.ts +6 -0
  327. package/dist/testing/index.d.ts.map +1 -0
  328. package/dist/testing/index.js +6 -0
  329. package/dist/testing/index.js.map +1 -0
  330. package/dist/testing/test-host.d.ts +14 -0
  331. package/dist/testing/test-host.d.ts.map +1 -0
  332. package/dist/testing/test-host.js +271 -0
  333. package/dist/testing/test-host.js.map +1 -0
  334. package/dist/testing/test-server-host.d.ts +39 -0
  335. package/dist/testing/test-server-host.d.ts.map +1 -0
  336. package/dist/testing/test-server-host.js +112 -0
  337. package/dist/testing/test-server-host.js.map +1 -0
  338. package/dist/testing/test-utils.d.ts +22 -0
  339. package/dist/testing/test-utils.d.ts.map +1 -0
  340. package/dist/testing/test-utils.js +60 -0
  341. package/dist/testing/test-utils.js.map +1 -0
  342. package/dist/testing/types.d.ts +69 -0
  343. package/dist/testing/types.d.ts.map +1 -0
  344. package/dist/testing/types.js +7 -0
  345. package/dist/testing/types.js.map +1 -0
  346. package/dist/typespec.tmLanguage +1760 -0
  347. package/lib/decorators.tsp +420 -0
  348. package/lib/lib.tsp +158 -0
  349. package/lib/main.tsp +4 -0
  350. package/lib/projected-names.tsp +94 -0
  351. package/lib/reflection.tsp +10 -0
  352. package/package.json +119 -0
@@ -0,0 +1,1760 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
+ <plist version="1.0">
4
+ <dict>
5
+ <key>$schema</key>
6
+ <string>https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json</string>
7
+ <key>name</key>
8
+ <string>TypeSpec</string>
9
+ <key>scopeName</key>
10
+ <string>source.tsp</string>
11
+ <key>fileTypes</key>
12
+ <array>
13
+ <string>.tsp</string>
14
+ </array>
15
+ <key>patterns</key>
16
+ <array>
17
+ <dict>
18
+ <key>include</key>
19
+ <string>#statement</string>
20
+ </dict>
21
+ </array>
22
+ <key>repository</key>
23
+ <dict>
24
+ <key>alias-statement</key>
25
+ <dict>
26
+ <key>name</key>
27
+ <string>meta.alias-statement.typespec</string>
28
+ <key>begin</key>
29
+ <string>\b(alias)\b</string>
30
+ <key>beginCaptures</key>
31
+ <dict>
32
+ <key>1</key>
33
+ <dict>
34
+ <key>name</key>
35
+ <string>keyword.other.tsp</string>
36
+ </dict>
37
+ </dict>
38
+ <key>end</key>
39
+ <string>(?=,|;|@|\)|\}|\b(?:extern)\b|\b(?:namespace|model|op|using|import|enum|alias|union|interface|dec|fn)\b)</string>
40
+ <key>patterns</key>
41
+ <array>
42
+ <dict>
43
+ <key>include</key>
44
+ <string>#type-parameters</string>
45
+ </dict>
46
+ <dict>
47
+ <key>include</key>
48
+ <string>#operator-assignment</string>
49
+ </dict>
50
+ <dict>
51
+ <key>include</key>
52
+ <string>#expression</string>
53
+ </dict>
54
+ </array>
55
+ </dict>
56
+ <key>augment-decorator-statement</key>
57
+ <dict>
58
+ <key>name</key>
59
+ <string>meta.augment-decorator-statement.typespec</string>
60
+ <key>begin</key>
61
+ <string>(@@\b[_$[:alpha:]]([_$[:alnum:]]|\.[_$[:alpha:]])*\b)</string>
62
+ <key>beginCaptures</key>
63
+ <dict>
64
+ <key>1</key>
65
+ <dict>
66
+ <key>name</key>
67
+ <string>entity.name.tag.tsp</string>
68
+ </dict>
69
+ </dict>
70
+ <key>end</key>
71
+ <string>(?=[_$[:alpha:]])|(?=,|;|@|\)|\}|\b(?:extern)\b|\b(?:namespace|model|op|using|import|enum|alias|union|interface|dec|fn)\b)</string>
72
+ <key>patterns</key>
73
+ <array>
74
+ <dict>
75
+ <key>include</key>
76
+ <string>#token</string>
77
+ </dict>
78
+ <dict>
79
+ <key>include</key>
80
+ <string>#parenthesized-expression</string>
81
+ </dict>
82
+ </array>
83
+ </dict>
84
+ <key>block-comment</key>
85
+ <dict>
86
+ <key>name</key>
87
+ <string>comment.block.tsp</string>
88
+ <key>begin</key>
89
+ <string>/\*</string>
90
+ <key>end</key>
91
+ <string>\*/</string>
92
+ </dict>
93
+ <key>boolean-literal</key>
94
+ <dict>
95
+ <key>name</key>
96
+ <string>constant.language.tsp</string>
97
+ <key>match</key>
98
+ <string>\b(true|false)\b</string>
99
+ </dict>
100
+ <key>decorator</key>
101
+ <dict>
102
+ <key>name</key>
103
+ <string>meta.decorator.typespec</string>
104
+ <key>begin</key>
105
+ <string>(@\b[_$[:alpha:]]([_$[:alnum:]]|\.[_$[:alpha:]])*\b)</string>
106
+ <key>beginCaptures</key>
107
+ <dict>
108
+ <key>1</key>
109
+ <dict>
110
+ <key>name</key>
111
+ <string>entity.name.tag.tsp</string>
112
+ </dict>
113
+ </dict>
114
+ <key>end</key>
115
+ <string>(?=[_$[:alpha:]])|(?=,|;|@|\)|\}|\b(?:extern)\b|\b(?:namespace|model|op|using|import|enum|alias|union|interface|dec|fn)\b)</string>
116
+ <key>patterns</key>
117
+ <array>
118
+ <dict>
119
+ <key>include</key>
120
+ <string>#token</string>
121
+ </dict>
122
+ <dict>
123
+ <key>include</key>
124
+ <string>#parenthesized-expression</string>
125
+ </dict>
126
+ </array>
127
+ </dict>
128
+ <key>decorator-declaration-statement</key>
129
+ <dict>
130
+ <key>name</key>
131
+ <string>meta.decorator-declaration-statement.typespec</string>
132
+ <key>begin</key>
133
+ <string>(?:(extern)\s+)?\b(dec)\b\s+(\b[_$[:alpha:]][_$[:alnum:]]*\b)</string>
134
+ <key>beginCaptures</key>
135
+ <dict>
136
+ <key>1</key>
137
+ <dict>
138
+ <key>name</key>
139
+ <string>keyword.other.tsp</string>
140
+ </dict>
141
+ <key>2</key>
142
+ <dict>
143
+ <key>name</key>
144
+ <string>keyword.other.tsp</string>
145
+ </dict>
146
+ <key>3</key>
147
+ <dict>
148
+ <key>name</key>
149
+ <string>entity.name.function.tsp</string>
150
+ </dict>
151
+ </dict>
152
+ <key>end</key>
153
+ <string>(?=,|;|@|\)|\}|\b(?:extern)\b|\b(?:namespace|model|op|using|import|enum|alias|union|interface|dec|fn)\b)</string>
154
+ <key>patterns</key>
155
+ <array>
156
+ <dict>
157
+ <key>include</key>
158
+ <string>#token</string>
159
+ </dict>
160
+ <dict>
161
+ <key>include</key>
162
+ <string>#operation-parameters</string>
163
+ </dict>
164
+ </array>
165
+ </dict>
166
+ <key>directive</key>
167
+ <dict>
168
+ <key>name</key>
169
+ <string>meta.directive.typespec</string>
170
+ <key>begin</key>
171
+ <string>\s*(#\b[_$[:alpha:]][_$[:alnum:]]*\b)</string>
172
+ <key>beginCaptures</key>
173
+ <dict>
174
+ <key>1</key>
175
+ <dict>
176
+ <key>name</key>
177
+ <string>keyword.directive.name.tsp</string>
178
+ </dict>
179
+ </dict>
180
+ <key>end</key>
181
+ <string>$|(?=,|;|@|\)|\}|\b(?:extern)\b|\b(?:namespace|model|op|using|import|enum|alias|union|interface|dec|fn)\b)</string>
182
+ <key>patterns</key>
183
+ <array>
184
+ <dict>
185
+ <key>include</key>
186
+ <string>#string-literal</string>
187
+ </dict>
188
+ <dict>
189
+ <key>include</key>
190
+ <string>#identifier-expression</string>
191
+ </dict>
192
+ </array>
193
+ </dict>
194
+ <key>else-expression</key>
195
+ <dict>
196
+ <key>name</key>
197
+ <string>meta.else-expression.typespec</string>
198
+ <key>begin</key>
199
+ <string>\b(else)\b</string>
200
+ <key>beginCaptures</key>
201
+ <dict>
202
+ <key>1</key>
203
+ <dict>
204
+ <key>name</key>
205
+ <string>keyword.other.tsp</string>
206
+ </dict>
207
+ </dict>
208
+ <key>end</key>
209
+ <string>((?&lt;=\})|(?=,|;|@|\)|\}|\b(?:extern)\b|\b(?:namespace|model|op|using|import|enum|alias|union|interface|dec|fn)\b))</string>
210
+ <key>patterns</key>
211
+ <array>
212
+ <dict>
213
+ <key>include</key>
214
+ <string>#projection-expression</string>
215
+ </dict>
216
+ <dict>
217
+ <key>include</key>
218
+ <string>#projection-body</string>
219
+ </dict>
220
+ </array>
221
+ </dict>
222
+ <key>else-if-expression</key>
223
+ <dict>
224
+ <key>name</key>
225
+ <string>meta.else-if-expression.typespec</string>
226
+ <key>begin</key>
227
+ <string>\b(else)\s+(if)\b</string>
228
+ <key>beginCaptures</key>
229
+ <dict>
230
+ <key>1</key>
231
+ <dict>
232
+ <key>name</key>
233
+ <string>keyword.other.tsp</string>
234
+ </dict>
235
+ <key>2</key>
236
+ <dict>
237
+ <key>name</key>
238
+ <string>keyword.other.tsp</string>
239
+ </dict>
240
+ </dict>
241
+ <key>end</key>
242
+ <string>((?&lt;=\})|(?=,|;|@|\)|\}|\b(?:extern)\b|\b(?:namespace|model|op|using|import|enum|alias|union|interface|dec|fn)\b))</string>
243
+ <key>patterns</key>
244
+ <array>
245
+ <dict>
246
+ <key>include</key>
247
+ <string>#projection-expression</string>
248
+ </dict>
249
+ <dict>
250
+ <key>include</key>
251
+ <string>#projection-body</string>
252
+ </dict>
253
+ </array>
254
+ </dict>
255
+ <key>enum-statement</key>
256
+ <dict>
257
+ <key>name</key>
258
+ <string>meta.enum-statement.typespec</string>
259
+ <key>begin</key>
260
+ <string>\b(enum)\b</string>
261
+ <key>beginCaptures</key>
262
+ <dict>
263
+ <key>1</key>
264
+ <dict>
265
+ <key>name</key>
266
+ <string>keyword.other.tsp</string>
267
+ </dict>
268
+ </dict>
269
+ <key>end</key>
270
+ <string>(?&lt;=\})|(?=,|;|@|\)|\}|\b(?:extern)\b|\b(?:namespace|model|op|using|import|enum|alias|union|interface|dec|fn)\b)</string>
271
+ <key>patterns</key>
272
+ <array>
273
+ <dict>
274
+ <key>include</key>
275
+ <string>#token</string>
276
+ </dict>
277
+ <dict>
278
+ <key>include</key>
279
+ <string>#expression</string>
280
+ </dict>
281
+ </array>
282
+ </dict>
283
+ <key>escape-character</key>
284
+ <dict>
285
+ <key>name</key>
286
+ <string>constant.character.escape.tsp</string>
287
+ <key>match</key>
288
+ <string>\\.</string>
289
+ </dict>
290
+ <key>expression</key>
291
+ <dict>
292
+ <key>patterns</key>
293
+ <array>
294
+ <dict>
295
+ <key>include</key>
296
+ <string>#token</string>
297
+ </dict>
298
+ <dict>
299
+ <key>include</key>
300
+ <string>#directive</string>
301
+ </dict>
302
+ <dict>
303
+ <key>include</key>
304
+ <string>#parenthesized-expression</string>
305
+ </dict>
306
+ <dict>
307
+ <key>include</key>
308
+ <string>#type-arguments</string>
309
+ </dict>
310
+ <dict>
311
+ <key>include</key>
312
+ <string>#tuple-expression</string>
313
+ </dict>
314
+ <dict>
315
+ <key>include</key>
316
+ <string>#model-expression</string>
317
+ </dict>
318
+ <dict>
319
+ <key>include</key>
320
+ <string>#identifier-expression</string>
321
+ </dict>
322
+ </array>
323
+ </dict>
324
+ <key>function-call</key>
325
+ <dict>
326
+ <key>name</key>
327
+ <string>meta.function-call.typespec</string>
328
+ <key>begin</key>
329
+ <string>(\b[_$[:alpha:]][_$[:alnum:]]*\b)\s*(\()</string>
330
+ <key>beginCaptures</key>
331
+ <dict>
332
+ <key>1</key>
333
+ <dict>
334
+ <key>name</key>
335
+ <string>entity.name.function.tsp</string>
336
+ </dict>
337
+ <key>2</key>
338
+ <dict>
339
+ <key>name</key>
340
+ <string>punctuation.parenthesis.open.tsp</string>
341
+ </dict>
342
+ </dict>
343
+ <key>end</key>
344
+ <string>\)</string>
345
+ <key>endCaptures</key>
346
+ <dict>
347
+ <key>0</key>
348
+ <dict>
349
+ <key>name</key>
350
+ <string>punctuation.parenthesis.close.tsp</string>
351
+ </dict>
352
+ </dict>
353
+ <key>patterns</key>
354
+ <array>
355
+ <dict>
356
+ <key>include</key>
357
+ <string>#expression</string>
358
+ </dict>
359
+ </array>
360
+ </dict>
361
+ <key>function-declaration-statement</key>
362
+ <dict>
363
+ <key>name</key>
364
+ <string>meta.function-declaration-statement.typespec</string>
365
+ <key>begin</key>
366
+ <string>(?:(extern)\s+)?\b(fn)\b\s+(\b[_$[:alpha:]][_$[:alnum:]]*\b)</string>
367
+ <key>beginCaptures</key>
368
+ <dict>
369
+ <key>1</key>
370
+ <dict>
371
+ <key>name</key>
372
+ <string>keyword.other.tsp</string>
373
+ </dict>
374
+ <key>2</key>
375
+ <dict>
376
+ <key>name</key>
377
+ <string>keyword.other.tsp</string>
378
+ </dict>
379
+ <key>3</key>
380
+ <dict>
381
+ <key>name</key>
382
+ <string>entity.name.function.tsp</string>
383
+ </dict>
384
+ </dict>
385
+ <key>end</key>
386
+ <string>(?=,|;|@|\)|\}|\b(?:extern)\b|\b(?:namespace|model|op|using|import|enum|alias|union|interface|dec|fn)\b)</string>
387
+ <key>patterns</key>
388
+ <array>
389
+ <dict>
390
+ <key>include</key>
391
+ <string>#token</string>
392
+ </dict>
393
+ <dict>
394
+ <key>include</key>
395
+ <string>#operation-parameters</string>
396
+ </dict>
397
+ <dict>
398
+ <key>include</key>
399
+ <string>#type-annotation</string>
400
+ </dict>
401
+ </array>
402
+ </dict>
403
+ <key>identifier-expression</key>
404
+ <dict>
405
+ <key>name</key>
406
+ <string>entity.name.type.tsp</string>
407
+ <key>match</key>
408
+ <string>\b[_$[:alpha:]][_$[:alnum:]]*\b</string>
409
+ </dict>
410
+ <key>if-expression</key>
411
+ <dict>
412
+ <key>name</key>
413
+ <string>meta.if-expression.typespec</string>
414
+ <key>begin</key>
415
+ <string>\b(if)\b</string>
416
+ <key>beginCaptures</key>
417
+ <dict>
418
+ <key>1</key>
419
+ <dict>
420
+ <key>name</key>
421
+ <string>keyword.other.tsp</string>
422
+ </dict>
423
+ </dict>
424
+ <key>end</key>
425
+ <string>((?&lt;=\})|(?=,|;|@|\)|\}|\b(?:extern)\b|\b(?:namespace|model|op|using|import|enum|alias|union|interface|dec|fn)\b))</string>
426
+ <key>patterns</key>
427
+ <array>
428
+ <dict>
429
+ <key>include</key>
430
+ <string>#projection-expression</string>
431
+ </dict>
432
+ <dict>
433
+ <key>include</key>
434
+ <string>#projection-body</string>
435
+ </dict>
436
+ </array>
437
+ </dict>
438
+ <key>import-statement</key>
439
+ <dict>
440
+ <key>name</key>
441
+ <string>meta.import-statement.typespec</string>
442
+ <key>begin</key>
443
+ <string>\b(import)\b</string>
444
+ <key>beginCaptures</key>
445
+ <dict>
446
+ <key>1</key>
447
+ <dict>
448
+ <key>name</key>
449
+ <string>keyword.other.tsp</string>
450
+ </dict>
451
+ </dict>
452
+ <key>end</key>
453
+ <string>(?=,|;|@|\)|\}|\b(?:extern)\b|\b(?:namespace|model|op|using|import|enum|alias|union|interface|dec|fn)\b)</string>
454
+ <key>patterns</key>
455
+ <array>
456
+ <dict>
457
+ <key>include</key>
458
+ <string>#token</string>
459
+ </dict>
460
+ </array>
461
+ </dict>
462
+ <key>interface-body</key>
463
+ <dict>
464
+ <key>name</key>
465
+ <string>meta.interface-body.typespec</string>
466
+ <key>begin</key>
467
+ <string>\{</string>
468
+ <key>beginCaptures</key>
469
+ <dict>
470
+ <key>0</key>
471
+ <dict>
472
+ <key>name</key>
473
+ <string>punctuation.curlybrace.open.tsp</string>
474
+ </dict>
475
+ </dict>
476
+ <key>end</key>
477
+ <string>\}</string>
478
+ <key>endCaptures</key>
479
+ <dict>
480
+ <key>0</key>
481
+ <dict>
482
+ <key>name</key>
483
+ <string>punctuation.curlybrace.close.tsp</string>
484
+ </dict>
485
+ </dict>
486
+ <key>patterns</key>
487
+ <array>
488
+ <dict>
489
+ <key>include</key>
490
+ <string>#token</string>
491
+ </dict>
492
+ <dict>
493
+ <key>include</key>
494
+ <string>#directive</string>
495
+ </dict>
496
+ <dict>
497
+ <key>include</key>
498
+ <string>#decorator</string>
499
+ </dict>
500
+ <dict>
501
+ <key>include</key>
502
+ <string>#interface-member</string>
503
+ </dict>
504
+ <dict>
505
+ <key>include</key>
506
+ <string>#punctuation-semicolon</string>
507
+ </dict>
508
+ </array>
509
+ </dict>
510
+ <key>interface-heritage</key>
511
+ <dict>
512
+ <key>name</key>
513
+ <string>meta.interface-heritage.typespec</string>
514
+ <key>begin</key>
515
+ <string>\b(extends)\b</string>
516
+ <key>beginCaptures</key>
517
+ <dict>
518
+ <key>1</key>
519
+ <dict>
520
+ <key>name</key>
521
+ <string>keyword.other.tsp</string>
522
+ </dict>
523
+ </dict>
524
+ <key>end</key>
525
+ <string>((?=\{)|(?=;|@|\)|\}|\b(?:extern)\b|\b(?:namespace|model|op|using|import|enum|alias|union|interface|dec|fn)\b))</string>
526
+ <key>patterns</key>
527
+ <array>
528
+ <dict>
529
+ <key>include</key>
530
+ <string>#expression</string>
531
+ </dict>
532
+ <dict>
533
+ <key>include</key>
534
+ <string>#punctuation-comma</string>
535
+ </dict>
536
+ </array>
537
+ </dict>
538
+ <key>interface-member</key>
539
+ <dict>
540
+ <key>name</key>
541
+ <string>meta.interface-member.typespec</string>
542
+ <key>begin</key>
543
+ <string>(?:\b(op)\b\s+)?(\b[_$[:alpha:]][_$[:alnum:]]*\b)</string>
544
+ <key>beginCaptures</key>
545
+ <dict>
546
+ <key>1</key>
547
+ <dict>
548
+ <key>name</key>
549
+ <string>keyword.other.tsp</string>
550
+ </dict>
551
+ <key>2</key>
552
+ <dict>
553
+ <key>name</key>
554
+ <string>entity.name.function.tsp</string>
555
+ </dict>
556
+ </dict>
557
+ <key>end</key>
558
+ <string>(?=,|;|@|\)|\}|\b(?:extern)\b|\b(?:namespace|model|op|using|import|enum|alias|union|interface|dec|fn)\b)</string>
559
+ <key>patterns</key>
560
+ <array>
561
+ <dict>
562
+ <key>include</key>
563
+ <string>#token</string>
564
+ </dict>
565
+ <dict>
566
+ <key>include</key>
567
+ <string>#operation-signature</string>
568
+ </dict>
569
+ </array>
570
+ </dict>
571
+ <key>interface-statement</key>
572
+ <dict>
573
+ <key>name</key>
574
+ <string>meta.interface-statement.typespec</string>
575
+ <key>begin</key>
576
+ <string>\b(interface)\b</string>
577
+ <key>beginCaptures</key>
578
+ <dict>
579
+ <key>1</key>
580
+ <dict>
581
+ <key>name</key>
582
+ <string>keyword.other.tsp</string>
583
+ </dict>
584
+ </dict>
585
+ <key>end</key>
586
+ <string>(?&lt;=\})|(?=,|;|@|\)|\}|\b(?:extern)\b|\b(?:namespace|model|op|using|import|enum|alias|union|interface|dec|fn)\b)</string>
587
+ <key>patterns</key>
588
+ <array>
589
+ <dict>
590
+ <key>include</key>
591
+ <string>#token</string>
592
+ </dict>
593
+ <dict>
594
+ <key>include</key>
595
+ <string>#interface-heritage</string>
596
+ </dict>
597
+ <dict>
598
+ <key>include</key>
599
+ <string>#interface-body</string>
600
+ </dict>
601
+ <dict>
602
+ <key>include</key>
603
+ <string>#expression</string>
604
+ </dict>
605
+ </array>
606
+ </dict>
607
+ <key>line-comment</key>
608
+ <dict>
609
+ <key>name</key>
610
+ <string>comment.line.double-slash.tsp</string>
611
+ <key>match</key>
612
+ <string>//.*$</string>
613
+ </dict>
614
+ <key>model-expression</key>
615
+ <dict>
616
+ <key>name</key>
617
+ <string>meta.model-expression.typespec</string>
618
+ <key>begin</key>
619
+ <string>\{</string>
620
+ <key>beginCaptures</key>
621
+ <dict>
622
+ <key>0</key>
623
+ <dict>
624
+ <key>name</key>
625
+ <string>punctuation.curlybrace.open.tsp</string>
626
+ </dict>
627
+ </dict>
628
+ <key>end</key>
629
+ <string>\}</string>
630
+ <key>endCaptures</key>
631
+ <dict>
632
+ <key>0</key>
633
+ <dict>
634
+ <key>name</key>
635
+ <string>punctuation.curlybrace.close.tsp</string>
636
+ </dict>
637
+ </dict>
638
+ <key>patterns</key>
639
+ <array>
640
+ <dict>
641
+ <key>include</key>
642
+ <string>#model-property</string>
643
+ </dict>
644
+ <dict>
645
+ <key>include</key>
646
+ <string>#token</string>
647
+ </dict>
648
+ <dict>
649
+ <key>include</key>
650
+ <string>#directive</string>
651
+ </dict>
652
+ <dict>
653
+ <key>include</key>
654
+ <string>#decorator</string>
655
+ </dict>
656
+ <dict>
657
+ <key>include</key>
658
+ <string>#model-spread-property</string>
659
+ </dict>
660
+ <dict>
661
+ <key>include</key>
662
+ <string>#punctuation-semicolon</string>
663
+ </dict>
664
+ </array>
665
+ </dict>
666
+ <key>model-heritage</key>
667
+ <dict>
668
+ <key>name</key>
669
+ <string>meta.model-heritage.typespec</string>
670
+ <key>begin</key>
671
+ <string>\b(extends|is)\b</string>
672
+ <key>beginCaptures</key>
673
+ <dict>
674
+ <key>1</key>
675
+ <dict>
676
+ <key>name</key>
677
+ <string>keyword.other.tsp</string>
678
+ </dict>
679
+ </dict>
680
+ <key>end</key>
681
+ <string>((?=\{)|(?=;|@|\)|\}|\b(?:extern)\b|\b(?:namespace|model|op|using|import|enum|alias|union|interface|dec|fn)\b))</string>
682
+ <key>patterns</key>
683
+ <array>
684
+ <dict>
685
+ <key>include</key>
686
+ <string>#expression</string>
687
+ </dict>
688
+ <dict>
689
+ <key>include</key>
690
+ <string>#punctuation-comma</string>
691
+ </dict>
692
+ </array>
693
+ </dict>
694
+ <key>model-property</key>
695
+ <dict>
696
+ <key>name</key>
697
+ <string>meta.model-property.typespec</string>
698
+ <key>begin</key>
699
+ <string>(?:(\b[_$[:alpha:]][_$[:alnum:]]*\b)|(\"(?:[^\"\\]|\\.)*\"))</string>
700
+ <key>beginCaptures</key>
701
+ <dict>
702
+ <key>1</key>
703
+ <dict>
704
+ <key>name</key>
705
+ <string>variable.name.tsp</string>
706
+ </dict>
707
+ <key>2</key>
708
+ <dict>
709
+ <key>name</key>
710
+ <string>string.quoted.double.tsp</string>
711
+ </dict>
712
+ </dict>
713
+ <key>end</key>
714
+ <string>(?=,|;|@|\)|\}|\b(?:extern)\b|\b(?:namespace|model|op|using|import|enum|alias|union|interface|dec|fn)\b)</string>
715
+ <key>patterns</key>
716
+ <array>
717
+ <dict>
718
+ <key>include</key>
719
+ <string>#token</string>
720
+ </dict>
721
+ <dict>
722
+ <key>include</key>
723
+ <string>#type-annotation</string>
724
+ </dict>
725
+ <dict>
726
+ <key>include</key>
727
+ <string>#operator-assignment</string>
728
+ </dict>
729
+ <dict>
730
+ <key>include</key>
731
+ <string>#expression</string>
732
+ </dict>
733
+ </array>
734
+ </dict>
735
+ <key>model-spread-property</key>
736
+ <dict>
737
+ <key>name</key>
738
+ <string>meta.model-spread-property.typespec</string>
739
+ <key>begin</key>
740
+ <string>\.\.\.</string>
741
+ <key>beginCaptures</key>
742
+ <dict>
743
+ <key>0</key>
744
+ <dict>
745
+ <key>name</key>
746
+ <string>keyword.operator.spread.tsp</string>
747
+ </dict>
748
+ </dict>
749
+ <key>end</key>
750
+ <string>(?=,|;|@|\)|\}|\b(?:extern)\b|\b(?:namespace|model|op|using|import|enum|alias|union|interface|dec|fn)\b)</string>
751
+ <key>patterns</key>
752
+ <array>
753
+ <dict>
754
+ <key>include</key>
755
+ <string>#expression</string>
756
+ </dict>
757
+ </array>
758
+ </dict>
759
+ <key>model-statement</key>
760
+ <dict>
761
+ <key>name</key>
762
+ <string>meta.model-statement.typespec</string>
763
+ <key>begin</key>
764
+ <string>\b(model)\b</string>
765
+ <key>beginCaptures</key>
766
+ <dict>
767
+ <key>1</key>
768
+ <dict>
769
+ <key>name</key>
770
+ <string>keyword.other.tsp</string>
771
+ </dict>
772
+ </dict>
773
+ <key>end</key>
774
+ <string>(?&lt;=\})|(?=,|;|@|\)|\}|\b(?:extern)\b|\b(?:namespace|model|op|using|import|enum|alias|union|interface|dec|fn)\b)</string>
775
+ <key>patterns</key>
776
+ <array>
777
+ <dict>
778
+ <key>include</key>
779
+ <string>#token</string>
780
+ </dict>
781
+ <dict>
782
+ <key>include</key>
783
+ <string>#type-parameters</string>
784
+ </dict>
785
+ <dict>
786
+ <key>include</key>
787
+ <string>#model-heritage</string>
788
+ </dict>
789
+ <dict>
790
+ <key>include</key>
791
+ <string>#expression</string>
792
+ </dict>
793
+ </array>
794
+ </dict>
795
+ <key>namespace-body</key>
796
+ <dict>
797
+ <key>name</key>
798
+ <string>meta.namespace-body.typespec</string>
799
+ <key>begin</key>
800
+ <string>\{</string>
801
+ <key>beginCaptures</key>
802
+ <dict>
803
+ <key>0</key>
804
+ <dict>
805
+ <key>name</key>
806
+ <string>punctuation.curlybrace.open.tsp</string>
807
+ </dict>
808
+ </dict>
809
+ <key>end</key>
810
+ <string>\}</string>
811
+ <key>endCaptures</key>
812
+ <dict>
813
+ <key>0</key>
814
+ <dict>
815
+ <key>name</key>
816
+ <string>punctuation.curlybrace.close.tsp</string>
817
+ </dict>
818
+ </dict>
819
+ <key>patterns</key>
820
+ <array>
821
+ <dict>
822
+ <key>include</key>
823
+ <string>#statement</string>
824
+ </dict>
825
+ </array>
826
+ </dict>
827
+ <key>namespace-name</key>
828
+ <dict>
829
+ <key>name</key>
830
+ <string>meta.namespace-name.typespec</string>
831
+ <key>begin</key>
832
+ <string>(?=[_$[:alpha:]])</string>
833
+ <key>end</key>
834
+ <string>((?=\{)|(?=,|;|@|\)|\}|\b(?:extern)\b|\b(?:namespace|model|op|using|import|enum|alias|union|interface|dec|fn)\b))</string>
835
+ <key>patterns</key>
836
+ <array>
837
+ <dict>
838
+ <key>include</key>
839
+ <string>#identifier-expression</string>
840
+ </dict>
841
+ <dict>
842
+ <key>include</key>
843
+ <string>#punctuation-accessor</string>
844
+ </dict>
845
+ </array>
846
+ </dict>
847
+ <key>namespace-statement</key>
848
+ <dict>
849
+ <key>name</key>
850
+ <string>meta.namespace-statement.typespec</string>
851
+ <key>begin</key>
852
+ <string>\b(namespace)\b</string>
853
+ <key>beginCaptures</key>
854
+ <dict>
855
+ <key>1</key>
856
+ <dict>
857
+ <key>name</key>
858
+ <string>keyword.other.tsp</string>
859
+ </dict>
860
+ </dict>
861
+ <key>end</key>
862
+ <string>((?&lt;=\})|(?=,|;|@|\)|\}|\b(?:extern)\b|\b(?:namespace|model|op|using|import|enum|alias|union|interface|dec|fn)\b))</string>
863
+ <key>patterns</key>
864
+ <array>
865
+ <dict>
866
+ <key>include</key>
867
+ <string>#token</string>
868
+ </dict>
869
+ <dict>
870
+ <key>include</key>
871
+ <string>#namespace-name</string>
872
+ </dict>
873
+ <dict>
874
+ <key>include</key>
875
+ <string>#namespace-body</string>
876
+ </dict>
877
+ </array>
878
+ </dict>
879
+ <key>numeric-literal</key>
880
+ <dict>
881
+ <key>name</key>
882
+ <string>constant.numeric.tsp</string>
883
+ <key>match</key>
884
+ <string>(?:\b(?&lt;!\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\b(?!\$)|\b(?&lt;!\$)0(?:b|B)[01][01_]*(n)?\b(?!\$)|(?&lt;!\$)(?:(?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)|(?:\b[0-9][0-9_]*(\.)[eE][+-]?[0-9][0-9_]*(n)?\b)|(?:\B(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)|(?:\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)|(?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*(n)?\b)|(?:\b[0-9][0-9_]*(\.)(n)?\B)|(?:\B(\.)[0-9][0-9_]*(n)?\b)|(?:\b[0-9][0-9_]*(n)?\b(?!\.)))(?!\$))</string>
885
+ </dict>
886
+ <key>operation-heritage</key>
887
+ <dict>
888
+ <key>name</key>
889
+ <string>meta.operation-heritage.typespec</string>
890
+ <key>begin</key>
891
+ <string>\b(is)\b</string>
892
+ <key>beginCaptures</key>
893
+ <dict>
894
+ <key>1</key>
895
+ <dict>
896
+ <key>name</key>
897
+ <string>keyword.other.tsp</string>
898
+ </dict>
899
+ </dict>
900
+ <key>end</key>
901
+ <string>(?=,|;|@|\)|\}|\b(?:extern)\b|\b(?:namespace|model|op|using|import|enum|alias|union|interface|dec|fn)\b)</string>
902
+ <key>patterns</key>
903
+ <array>
904
+ <dict>
905
+ <key>include</key>
906
+ <string>#expression</string>
907
+ </dict>
908
+ </array>
909
+ </dict>
910
+ <key>operation-parameters</key>
911
+ <dict>
912
+ <key>name</key>
913
+ <string>meta.operation-parameters.typespec</string>
914
+ <key>begin</key>
915
+ <string>\(</string>
916
+ <key>beginCaptures</key>
917
+ <dict>
918
+ <key>0</key>
919
+ <dict>
920
+ <key>name</key>
921
+ <string>punctuation.parenthesis.open.tsp</string>
922
+ </dict>
923
+ </dict>
924
+ <key>end</key>
925
+ <string>\)</string>
926
+ <key>endCaptures</key>
927
+ <dict>
928
+ <key>0</key>
929
+ <dict>
930
+ <key>name</key>
931
+ <string>punctuation.parenthesis.close.tsp</string>
932
+ </dict>
933
+ </dict>
934
+ <key>patterns</key>
935
+ <array>
936
+ <dict>
937
+ <key>include</key>
938
+ <string>#token</string>
939
+ </dict>
940
+ <dict>
941
+ <key>include</key>
942
+ <string>#decorator</string>
943
+ </dict>
944
+ <dict>
945
+ <key>include</key>
946
+ <string>#model-property</string>
947
+ </dict>
948
+ <dict>
949
+ <key>include</key>
950
+ <string>#model-spread-property</string>
951
+ </dict>
952
+ <dict>
953
+ <key>include</key>
954
+ <string>#punctuation-comma</string>
955
+ </dict>
956
+ </array>
957
+ </dict>
958
+ <key>operation-signature</key>
959
+ <dict>
960
+ <key>patterns</key>
961
+ <array>
962
+ <dict>
963
+ <key>include</key>
964
+ <string>#type-parameters</string>
965
+ </dict>
966
+ <dict>
967
+ <key>include</key>
968
+ <string>#operation-heritage</string>
969
+ </dict>
970
+ <dict>
971
+ <key>include</key>
972
+ <string>#operation-parameters</string>
973
+ </dict>
974
+ <dict>
975
+ <key>include</key>
976
+ <string>#type-annotation</string>
977
+ </dict>
978
+ </array>
979
+ </dict>
980
+ <key>operation-statement</key>
981
+ <dict>
982
+ <key>name</key>
983
+ <string>meta.operation-statement.typespec</string>
984
+ <key>begin</key>
985
+ <string>\b(op)\b\s+(\b[_$[:alpha:]][_$[:alnum:]]*\b)</string>
986
+ <key>beginCaptures</key>
987
+ <dict>
988
+ <key>1</key>
989
+ <dict>
990
+ <key>name</key>
991
+ <string>keyword.other.tsp</string>
992
+ </dict>
993
+ <key>2</key>
994
+ <dict>
995
+ <key>name</key>
996
+ <string>entity.name.function.tsp</string>
997
+ </dict>
998
+ </dict>
999
+ <key>end</key>
1000
+ <string>(?=,|;|@|\)|\}|\b(?:extern)\b|\b(?:namespace|model|op|using|import|enum|alias|union|interface|dec|fn)\b)</string>
1001
+ <key>patterns</key>
1002
+ <array>
1003
+ <dict>
1004
+ <key>include</key>
1005
+ <string>#token</string>
1006
+ </dict>
1007
+ <dict>
1008
+ <key>include</key>
1009
+ <string>#operation-signature</string>
1010
+ </dict>
1011
+ </array>
1012
+ </dict>
1013
+ <key>operator-assignment</key>
1014
+ <dict>
1015
+ <key>name</key>
1016
+ <string>keyword.operator.assignment.tsp</string>
1017
+ <key>match</key>
1018
+ <string>=</string>
1019
+ </dict>
1020
+ <key>parenthesized-expression</key>
1021
+ <dict>
1022
+ <key>name</key>
1023
+ <string>meta.parenthesized-expression.typespec</string>
1024
+ <key>begin</key>
1025
+ <string>\(</string>
1026
+ <key>beginCaptures</key>
1027
+ <dict>
1028
+ <key>0</key>
1029
+ <dict>
1030
+ <key>name</key>
1031
+ <string>punctuation.parenthesis.open.tsp</string>
1032
+ </dict>
1033
+ </dict>
1034
+ <key>end</key>
1035
+ <string>\)</string>
1036
+ <key>endCaptures</key>
1037
+ <dict>
1038
+ <key>0</key>
1039
+ <dict>
1040
+ <key>name</key>
1041
+ <string>punctuation.parenthesis.close.tsp</string>
1042
+ </dict>
1043
+ </dict>
1044
+ <key>patterns</key>
1045
+ <array>
1046
+ <dict>
1047
+ <key>include</key>
1048
+ <string>#expression</string>
1049
+ </dict>
1050
+ <dict>
1051
+ <key>include</key>
1052
+ <string>#punctuation-comma</string>
1053
+ </dict>
1054
+ </array>
1055
+ </dict>
1056
+ <key>projection</key>
1057
+ <dict>
1058
+ <key>name</key>
1059
+ <string>meta.projection.typespec</string>
1060
+ <key>begin</key>
1061
+ <string>(from|to)</string>
1062
+ <key>beginCaptures</key>
1063
+ <dict>
1064
+ <key>1</key>
1065
+ <dict>
1066
+ <key>name</key>
1067
+ <string>keyword.other.tsp</string>
1068
+ </dict>
1069
+ </dict>
1070
+ <key>end</key>
1071
+ <string>((?&lt;=\})|(?=,|;|@|\)|\}|\b(?:extern)\b|\b(?:namespace|model|op|using|import|enum|alias|union|interface|dec|fn)\b))</string>
1072
+ <key>patterns</key>
1073
+ <array>
1074
+ <dict>
1075
+ <key>include</key>
1076
+ <string>#projection-parameters</string>
1077
+ </dict>
1078
+ <dict>
1079
+ <key>include</key>
1080
+ <string>#projection-body</string>
1081
+ </dict>
1082
+ </array>
1083
+ </dict>
1084
+ <key>projection-body</key>
1085
+ <dict>
1086
+ <key>name</key>
1087
+ <string>meta.projection-body.typespec</string>
1088
+ <key>begin</key>
1089
+ <string>\{</string>
1090
+ <key>beginCaptures</key>
1091
+ <dict>
1092
+ <key>0</key>
1093
+ <dict>
1094
+ <key>name</key>
1095
+ <string>punctuation.curlybrace.open.tsp</string>
1096
+ </dict>
1097
+ </dict>
1098
+ <key>end</key>
1099
+ <string>\}</string>
1100
+ <key>endCaptures</key>
1101
+ <dict>
1102
+ <key>0</key>
1103
+ <dict>
1104
+ <key>name</key>
1105
+ <string>punctuation.curlybrace.close.tsp</string>
1106
+ </dict>
1107
+ </dict>
1108
+ <key>patterns</key>
1109
+ <array>
1110
+ <dict>
1111
+ <key>include</key>
1112
+ <string>#projection-expression</string>
1113
+ </dict>
1114
+ <dict>
1115
+ <key>include</key>
1116
+ <string>#punctuation-semicolon</string>
1117
+ </dict>
1118
+ </array>
1119
+ </dict>
1120
+ <key>projection-expression</key>
1121
+ <dict>
1122
+ <key>patterns</key>
1123
+ <array>
1124
+ <dict>
1125
+ <key>include</key>
1126
+ <string>#else-if-expression</string>
1127
+ </dict>
1128
+ <dict>
1129
+ <key>include</key>
1130
+ <string>#if-expression</string>
1131
+ </dict>
1132
+ <dict>
1133
+ <key>include</key>
1134
+ <string>#else-expression</string>
1135
+ </dict>
1136
+ <dict>
1137
+ <key>include</key>
1138
+ <string>#function-call</string>
1139
+ </dict>
1140
+ </array>
1141
+ </dict>
1142
+ <key>projection-parameter</key>
1143
+ <dict>
1144
+ <key>name</key>
1145
+ <string>meta.projection-parameter.typespec</string>
1146
+ <key>begin</key>
1147
+ <string>(\b[_$[:alpha:]][_$[:alnum:]]*\b)</string>
1148
+ <key>beginCaptures</key>
1149
+ <dict>
1150
+ <key>1</key>
1151
+ <dict>
1152
+ <key>name</key>
1153
+ <string>variable.name.tsp</string>
1154
+ </dict>
1155
+ </dict>
1156
+ <key>end</key>
1157
+ <string>(?=\))|(?=,|;|@|\)|\}|\b(?:extern)\b|\b(?:namespace|model|op|using|import|enum|alias|union|interface|dec|fn)\b)</string>
1158
+ <key>patterns</key>
1159
+ <array/>
1160
+ </dict>
1161
+ <key>projection-parameters</key>
1162
+ <dict>
1163
+ <key>name</key>
1164
+ <string>meta.projection-parameters.typespec</string>
1165
+ <key>begin</key>
1166
+ <string>\(</string>
1167
+ <key>beginCaptures</key>
1168
+ <dict>
1169
+ <key>0</key>
1170
+ <dict>
1171
+ <key>name</key>
1172
+ <string>punctuation.parenthesis.open.tsp</string>
1173
+ </dict>
1174
+ </dict>
1175
+ <key>end</key>
1176
+ <string>\)</string>
1177
+ <key>endCaptures</key>
1178
+ <dict>
1179
+ <key>0</key>
1180
+ <dict>
1181
+ <key>name</key>
1182
+ <string>punctuation.parenthesis.close.tsp</string>
1183
+ </dict>
1184
+ </dict>
1185
+ <key>patterns</key>
1186
+ <array>
1187
+ <dict>
1188
+ <key>include</key>
1189
+ <string>#token</string>
1190
+ </dict>
1191
+ <dict>
1192
+ <key>include</key>
1193
+ <string>#projection-parameter</string>
1194
+ </dict>
1195
+ </array>
1196
+ </dict>
1197
+ <key>projection-statement</key>
1198
+ <dict>
1199
+ <key>name</key>
1200
+ <string>meta.projection-statement.typespec</string>
1201
+ <key>begin</key>
1202
+ <string>\b(projection)\b\s+(\b[_$[:alpha:]][_$[:alnum:]]*\b)(#)(\b[_$[:alpha:]][_$[:alnum:]]*\b)</string>
1203
+ <key>beginCaptures</key>
1204
+ <dict>
1205
+ <key>1</key>
1206
+ <dict>
1207
+ <key>name</key>
1208
+ <string>keyword.other.tsp</string>
1209
+ </dict>
1210
+ <key>2</key>
1211
+ <dict>
1212
+ <key>name</key>
1213
+ <string>keyword.other.tsp</string>
1214
+ </dict>
1215
+ <key>3</key>
1216
+ <dict>
1217
+ <key>name</key>
1218
+ <string>keyword.operator.selector.tsp</string>
1219
+ </dict>
1220
+ <key>4</key>
1221
+ <dict>
1222
+ <key>name</key>
1223
+ <string>variable.name.tsp</string>
1224
+ </dict>
1225
+ </dict>
1226
+ <key>end</key>
1227
+ <string>((?&lt;=\})|(?=,|;|@|\)|\}|\b(?:extern)\b|\b(?:namespace|model|op|using|import|enum|alias|union|interface|dec|fn)\b))</string>
1228
+ <key>patterns</key>
1229
+ <array>
1230
+ <dict>
1231
+ <key>include</key>
1232
+ <string>#projection-statement-body</string>
1233
+ </dict>
1234
+ </array>
1235
+ </dict>
1236
+ <key>projection-statement-body</key>
1237
+ <dict>
1238
+ <key>name</key>
1239
+ <string>meta.projection-statement-body.typespec</string>
1240
+ <key>begin</key>
1241
+ <string>\{</string>
1242
+ <key>beginCaptures</key>
1243
+ <dict>
1244
+ <key>0</key>
1245
+ <dict>
1246
+ <key>name</key>
1247
+ <string>punctuation.curlybrace.open.tsp</string>
1248
+ </dict>
1249
+ </dict>
1250
+ <key>end</key>
1251
+ <string>\}</string>
1252
+ <key>endCaptures</key>
1253
+ <dict>
1254
+ <key>0</key>
1255
+ <dict>
1256
+ <key>name</key>
1257
+ <string>punctuation.curlybrace.close.tsp</string>
1258
+ </dict>
1259
+ </dict>
1260
+ <key>patterns</key>
1261
+ <array>
1262
+ <dict>
1263
+ <key>include</key>
1264
+ <string>#projection</string>
1265
+ </dict>
1266
+ </array>
1267
+ </dict>
1268
+ <key>punctuation-accessor</key>
1269
+ <dict>
1270
+ <key>name</key>
1271
+ <string>punctuation.accessor.tsp</string>
1272
+ <key>match</key>
1273
+ <string>\.</string>
1274
+ </dict>
1275
+ <key>punctuation-comma</key>
1276
+ <dict>
1277
+ <key>name</key>
1278
+ <string>punctuation.comma.tsp</string>
1279
+ <key>match</key>
1280
+ <string>,</string>
1281
+ </dict>
1282
+ <key>punctuation-semicolon</key>
1283
+ <dict>
1284
+ <key>name</key>
1285
+ <string>punctuation.terminator.statement.tsp</string>
1286
+ <key>match</key>
1287
+ <string>;</string>
1288
+ </dict>
1289
+ <key>scalar-extends</key>
1290
+ <dict>
1291
+ <key>name</key>
1292
+ <string>meta.scalar-extends.typespec</string>
1293
+ <key>begin</key>
1294
+ <string>\b(extends)\b</string>
1295
+ <key>beginCaptures</key>
1296
+ <dict>
1297
+ <key>1</key>
1298
+ <dict>
1299
+ <key>name</key>
1300
+ <string>keyword.other.tsp</string>
1301
+ </dict>
1302
+ </dict>
1303
+ <key>end</key>
1304
+ <string>(?=;|@|\)|\}|\b(?:extern)\b|\b(?:namespace|model|op|using|import|enum|alias|union|interface|dec|fn)\b)</string>
1305
+ <key>patterns</key>
1306
+ <array>
1307
+ <dict>
1308
+ <key>include</key>
1309
+ <string>#expression</string>
1310
+ </dict>
1311
+ <dict>
1312
+ <key>include</key>
1313
+ <string>#punctuation-comma</string>
1314
+ </dict>
1315
+ </array>
1316
+ </dict>
1317
+ <key>scalar-statement</key>
1318
+ <dict>
1319
+ <key>name</key>
1320
+ <string>meta.scalar-statement.typespec</string>
1321
+ <key>begin</key>
1322
+ <string>\b(scalar)\b</string>
1323
+ <key>beginCaptures</key>
1324
+ <dict>
1325
+ <key>1</key>
1326
+ <dict>
1327
+ <key>name</key>
1328
+ <string>keyword.other.tsp</string>
1329
+ </dict>
1330
+ </dict>
1331
+ <key>end</key>
1332
+ <string>(?=,|;|@|\)|\}|\b(?:extern)\b|\b(?:namespace|model|op|using|import|enum|alias|union|interface|dec|fn)\b)</string>
1333
+ <key>patterns</key>
1334
+ <array>
1335
+ <dict>
1336
+ <key>include</key>
1337
+ <string>#token</string>
1338
+ </dict>
1339
+ <dict>
1340
+ <key>include</key>
1341
+ <string>#type-parameters</string>
1342
+ </dict>
1343
+ <dict>
1344
+ <key>include</key>
1345
+ <string>#scalar-extends</string>
1346
+ </dict>
1347
+ <dict>
1348
+ <key>include</key>
1349
+ <string>#expression</string>
1350
+ </dict>
1351
+ </array>
1352
+ </dict>
1353
+ <key>statement</key>
1354
+ <dict>
1355
+ <key>patterns</key>
1356
+ <array>
1357
+ <dict>
1358
+ <key>include</key>
1359
+ <string>#token</string>
1360
+ </dict>
1361
+ <dict>
1362
+ <key>include</key>
1363
+ <string>#directive</string>
1364
+ </dict>
1365
+ <dict>
1366
+ <key>include</key>
1367
+ <string>#augment-decorator-statement</string>
1368
+ </dict>
1369
+ <dict>
1370
+ <key>include</key>
1371
+ <string>#decorator</string>
1372
+ </dict>
1373
+ <dict>
1374
+ <key>include</key>
1375
+ <string>#model-statement</string>
1376
+ </dict>
1377
+ <dict>
1378
+ <key>include</key>
1379
+ <string>#scalar-statement</string>
1380
+ </dict>
1381
+ <dict>
1382
+ <key>include</key>
1383
+ <string>#union-statement</string>
1384
+ </dict>
1385
+ <dict>
1386
+ <key>include</key>
1387
+ <string>#interface-statement</string>
1388
+ </dict>
1389
+ <dict>
1390
+ <key>include</key>
1391
+ <string>#enum-statement</string>
1392
+ </dict>
1393
+ <dict>
1394
+ <key>include</key>
1395
+ <string>#alias-statement</string>
1396
+ </dict>
1397
+ <dict>
1398
+ <key>include</key>
1399
+ <string>#namespace-statement</string>
1400
+ </dict>
1401
+ <dict>
1402
+ <key>include</key>
1403
+ <string>#operation-statement</string>
1404
+ </dict>
1405
+ <dict>
1406
+ <key>include</key>
1407
+ <string>#import-statement</string>
1408
+ </dict>
1409
+ <dict>
1410
+ <key>include</key>
1411
+ <string>#using-statement</string>
1412
+ </dict>
1413
+ <dict>
1414
+ <key>include</key>
1415
+ <string>#decorator-declaration-statement</string>
1416
+ </dict>
1417
+ <dict>
1418
+ <key>include</key>
1419
+ <string>#function-declaration-statement</string>
1420
+ </dict>
1421
+ <dict>
1422
+ <key>include</key>
1423
+ <string>#projection-statement</string>
1424
+ </dict>
1425
+ <dict>
1426
+ <key>include</key>
1427
+ <string>#punctuation-semicolon</string>
1428
+ </dict>
1429
+ </array>
1430
+ </dict>
1431
+ <key>string-literal</key>
1432
+ <dict>
1433
+ <key>name</key>
1434
+ <string>string.quoted.double.tsp</string>
1435
+ <key>begin</key>
1436
+ <string>"</string>
1437
+ <key>end</key>
1438
+ <string>"|$</string>
1439
+ <key>patterns</key>
1440
+ <array>
1441
+ <dict>
1442
+ <key>include</key>
1443
+ <string>#escape-character</string>
1444
+ </dict>
1445
+ </array>
1446
+ </dict>
1447
+ <key>token</key>
1448
+ <dict>
1449
+ <key>patterns</key>
1450
+ <array>
1451
+ <dict>
1452
+ <key>include</key>
1453
+ <string>#line-comment</string>
1454
+ </dict>
1455
+ <dict>
1456
+ <key>include</key>
1457
+ <string>#block-comment</string>
1458
+ </dict>
1459
+ <dict>
1460
+ <key>include</key>
1461
+ <string>#triple-quoted-string-literal</string>
1462
+ </dict>
1463
+ <dict>
1464
+ <key>include</key>
1465
+ <string>#string-literal</string>
1466
+ </dict>
1467
+ <dict>
1468
+ <key>include</key>
1469
+ <string>#boolean-literal</string>
1470
+ </dict>
1471
+ <dict>
1472
+ <key>include</key>
1473
+ <string>#numeric-literal</string>
1474
+ </dict>
1475
+ </array>
1476
+ </dict>
1477
+ <key>triple-quoted-string-literal</key>
1478
+ <dict>
1479
+ <key>name</key>
1480
+ <string>string.quoted.triple.tsp</string>
1481
+ <key>begin</key>
1482
+ <string>"""</string>
1483
+ <key>end</key>
1484
+ <string>"""</string>
1485
+ <key>patterns</key>
1486
+ <array>
1487
+ <dict>
1488
+ <key>include</key>
1489
+ <string>#escape-character</string>
1490
+ </dict>
1491
+ </array>
1492
+ </dict>
1493
+ <key>tuple-expression</key>
1494
+ <dict>
1495
+ <key>name</key>
1496
+ <string>meta.tuple-expression.typespec</string>
1497
+ <key>begin</key>
1498
+ <string>\[</string>
1499
+ <key>beginCaptures</key>
1500
+ <dict>
1501
+ <key>0</key>
1502
+ <dict>
1503
+ <key>name</key>
1504
+ <string>punctuation.squarebracket.open.tsp</string>
1505
+ </dict>
1506
+ </dict>
1507
+ <key>end</key>
1508
+ <string>\]</string>
1509
+ <key>endCaptures</key>
1510
+ <dict>
1511
+ <key>0</key>
1512
+ <dict>
1513
+ <key>name</key>
1514
+ <string>punctuation.squarebracket.close.tsp</string>
1515
+ </dict>
1516
+ </dict>
1517
+ <key>patterns</key>
1518
+ <array>
1519
+ <dict>
1520
+ <key>include</key>
1521
+ <string>#expression</string>
1522
+ </dict>
1523
+ </array>
1524
+ </dict>
1525
+ <key>type-annotation</key>
1526
+ <dict>
1527
+ <key>name</key>
1528
+ <string>meta.type-annotation.typespec</string>
1529
+ <key>begin</key>
1530
+ <string>\s*(\??)\s*(:)</string>
1531
+ <key>beginCaptures</key>
1532
+ <dict>
1533
+ <key>1</key>
1534
+ <dict>
1535
+ <key>name</key>
1536
+ <string>keyword.operator.optional.tsp</string>
1537
+ </dict>
1538
+ <key>2</key>
1539
+ <dict>
1540
+ <key>name</key>
1541
+ <string>keyword.operator.type.annotation.tsp</string>
1542
+ </dict>
1543
+ </dict>
1544
+ <key>end</key>
1545
+ <string>(?=,|;|@|\)|\}|=|\b(?:namespace|model|op|using|import|enum|alias|union|interface|dec|fn)\b)</string>
1546
+ <key>patterns</key>
1547
+ <array>
1548
+ <dict>
1549
+ <key>include</key>
1550
+ <string>#expression</string>
1551
+ </dict>
1552
+ </array>
1553
+ </dict>
1554
+ <key>type-arguments</key>
1555
+ <dict>
1556
+ <key>name</key>
1557
+ <string>meta.type-arguments.typespec</string>
1558
+ <key>begin</key>
1559
+ <string>&lt;</string>
1560
+ <key>beginCaptures</key>
1561
+ <dict>
1562
+ <key>0</key>
1563
+ <dict>
1564
+ <key>name</key>
1565
+ <string>punctuation.definition.typeparameters.begin.tsp</string>
1566
+ </dict>
1567
+ </dict>
1568
+ <key>end</key>
1569
+ <string>&gt;</string>
1570
+ <key>endCaptures</key>
1571
+ <dict>
1572
+ <key>0</key>
1573
+ <dict>
1574
+ <key>name</key>
1575
+ <string>punctuation.definition.typeparameters.end.tsp</string>
1576
+ </dict>
1577
+ </dict>
1578
+ <key>patterns</key>
1579
+ <array>
1580
+ <dict>
1581
+ <key>include</key>
1582
+ <string>#expression</string>
1583
+ </dict>
1584
+ <dict>
1585
+ <key>include</key>
1586
+ <string>#punctuation-comma</string>
1587
+ </dict>
1588
+ </array>
1589
+ </dict>
1590
+ <key>type-parameter</key>
1591
+ <dict>
1592
+ <key>name</key>
1593
+ <string>meta.type-parameter.typespec</string>
1594
+ <key>begin</key>
1595
+ <string>(\b[_$[:alpha:]][_$[:alnum:]]*\b)</string>
1596
+ <key>beginCaptures</key>
1597
+ <dict>
1598
+ <key>1</key>
1599
+ <dict>
1600
+ <key>name</key>
1601
+ <string>entity.name.type.tsp</string>
1602
+ </dict>
1603
+ </dict>
1604
+ <key>end</key>
1605
+ <string>(?=&gt;)|(?=,|;|@|\)|\}|\b(?:extern)\b|\b(?:namespace|model|op|using|import|enum|alias|union|interface|dec|fn)\b)</string>
1606
+ <key>patterns</key>
1607
+ <array>
1608
+ <dict>
1609
+ <key>include</key>
1610
+ <string>#type-parameter-constraint</string>
1611
+ </dict>
1612
+ <dict>
1613
+ <key>include</key>
1614
+ <string>#type-parameter-default</string>
1615
+ </dict>
1616
+ </array>
1617
+ </dict>
1618
+ <key>type-parameter-constraint</key>
1619
+ <dict>
1620
+ <key>name</key>
1621
+ <string>meta.type-parameter-constraint.typespec</string>
1622
+ <key>begin</key>
1623
+ <string>extends</string>
1624
+ <key>beginCaptures</key>
1625
+ <dict>
1626
+ <key>0</key>
1627
+ <dict>
1628
+ <key>name</key>
1629
+ <string>keyword.other.tsp</string>
1630
+ </dict>
1631
+ </dict>
1632
+ <key>end</key>
1633
+ <string>(?=&gt;)|(?=,|;|@|\)|\}|\b(?:extern)\b|\b(?:namespace|model|op|using|import|enum|alias|union|interface|dec|fn)\b)</string>
1634
+ <key>patterns</key>
1635
+ <array>
1636
+ <dict>
1637
+ <key>include</key>
1638
+ <string>#expression</string>
1639
+ </dict>
1640
+ </array>
1641
+ </dict>
1642
+ <key>type-parameter-default</key>
1643
+ <dict>
1644
+ <key>name</key>
1645
+ <string>meta.type-parameter-default.typespec</string>
1646
+ <key>begin</key>
1647
+ <string>=</string>
1648
+ <key>beginCaptures</key>
1649
+ <dict>
1650
+ <key>0</key>
1651
+ <dict>
1652
+ <key>name</key>
1653
+ <string>keyword.operator.assignment.tsp</string>
1654
+ </dict>
1655
+ </dict>
1656
+ <key>end</key>
1657
+ <string>(?=&gt;)|(?=,|;|@|\)|\}|\b(?:extern)\b|\b(?:namespace|model|op|using|import|enum|alias|union|interface|dec|fn)\b)</string>
1658
+ <key>patterns</key>
1659
+ <array>
1660
+ <dict>
1661
+ <key>include</key>
1662
+ <string>#expression</string>
1663
+ </dict>
1664
+ </array>
1665
+ </dict>
1666
+ <key>type-parameters</key>
1667
+ <dict>
1668
+ <key>name</key>
1669
+ <string>meta.type-parameters.typespec</string>
1670
+ <key>begin</key>
1671
+ <string>&lt;</string>
1672
+ <key>beginCaptures</key>
1673
+ <dict>
1674
+ <key>0</key>
1675
+ <dict>
1676
+ <key>name</key>
1677
+ <string>punctuation.definition.typeparameters.begin.tsp</string>
1678
+ </dict>
1679
+ </dict>
1680
+ <key>end</key>
1681
+ <string>&gt;</string>
1682
+ <key>endCaptures</key>
1683
+ <dict>
1684
+ <key>0</key>
1685
+ <dict>
1686
+ <key>name</key>
1687
+ <string>punctuation.definition.typeparameters.end.tsp</string>
1688
+ </dict>
1689
+ </dict>
1690
+ <key>patterns</key>
1691
+ <array>
1692
+ <dict>
1693
+ <key>include</key>
1694
+ <string>#type-parameter</string>
1695
+ </dict>
1696
+ <dict>
1697
+ <key>include</key>
1698
+ <string>#punctuation-comma</string>
1699
+ </dict>
1700
+ </array>
1701
+ </dict>
1702
+ <key>union-statement</key>
1703
+ <dict>
1704
+ <key>name</key>
1705
+ <string>meta.union-statement.typespec</string>
1706
+ <key>begin</key>
1707
+ <string>\b(union)\b</string>
1708
+ <key>beginCaptures</key>
1709
+ <dict>
1710
+ <key>1</key>
1711
+ <dict>
1712
+ <key>name</key>
1713
+ <string>keyword.other.tsp</string>
1714
+ </dict>
1715
+ </dict>
1716
+ <key>end</key>
1717
+ <string>(?&lt;=\})|(?=,|;|@|\)|\}|\b(?:extern)\b|\b(?:namespace|model|op|using|import|enum|alias|union|interface|dec|fn)\b)</string>
1718
+ <key>patterns</key>
1719
+ <array>
1720
+ <dict>
1721
+ <key>include</key>
1722
+ <string>#token</string>
1723
+ </dict>
1724
+ <dict>
1725
+ <key>include</key>
1726
+ <string>#expression</string>
1727
+ </dict>
1728
+ </array>
1729
+ </dict>
1730
+ <key>using-statement</key>
1731
+ <dict>
1732
+ <key>name</key>
1733
+ <string>meta.using-statement.typespec</string>
1734
+ <key>begin</key>
1735
+ <string>\b(using)\b</string>
1736
+ <key>beginCaptures</key>
1737
+ <dict>
1738
+ <key>1</key>
1739
+ <dict>
1740
+ <key>name</key>
1741
+ <string>keyword.other.tsp</string>
1742
+ </dict>
1743
+ </dict>
1744
+ <key>end</key>
1745
+ <string>(?=,|;|@|\)|\}|\b(?:extern)\b|\b(?:namespace|model|op|using|import|enum|alias|union|interface|dec|fn)\b)</string>
1746
+ <key>patterns</key>
1747
+ <array>
1748
+ <dict>
1749
+ <key>include</key>
1750
+ <string>#token</string>
1751
+ </dict>
1752
+ <dict>
1753
+ <key>include</key>
1754
+ <string>#identifier-expression</string>
1755
+ </dict>
1756
+ </array>
1757
+ </dict>
1758
+ </dict>
1759
+ </dict>
1760
+ </plist>