@typescript/native-preview 7.0.0-dev.20260421.2 → 7.0.0-dev.20260423.1

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 (327) hide show
  1. package/dist/api/async/api.d.ts +241 -0
  2. package/dist/api/async/api.d.ts.map +1 -0
  3. package/dist/api/async/api.js +810 -0
  4. package/dist/api/async/api.js.map +1 -0
  5. package/dist/api/async/client.d.ts +22 -0
  6. package/dist/api/async/client.d.ts.map +1 -0
  7. package/dist/api/async/client.js +140 -0
  8. package/dist/api/async/client.js.map +1 -0
  9. package/dist/api/async/types.d.ts +179 -0
  10. package/dist/api/async/types.d.ts.map +1 -0
  11. package/dist/api/async/types.js +2 -0
  12. package/dist/api/async/types.js.map +1 -0
  13. package/dist/api/fs.d.ts +23 -0
  14. package/dist/api/fs.d.ts.map +1 -0
  15. package/dist/api/fs.js +109 -0
  16. package/dist/api/fs.js.map +1 -0
  17. package/dist/api/node/encoder.d.ts +15 -0
  18. package/dist/api/node/encoder.d.ts.map +1 -0
  19. package/dist/api/node/encoder.generated.d.ts +5 -0
  20. package/dist/api/node/encoder.generated.d.ts.map +1 -0
  21. package/dist/api/node/encoder.generated.js +74 -0
  22. package/dist/api/node/encoder.generated.js.map +1 -0
  23. package/dist/api/node/encoder.js +304 -0
  24. package/dist/api/node/encoder.js.map +1 -0
  25. package/dist/api/node/msgpack.d.ts +32 -0
  26. package/dist/api/node/msgpack.d.ts.map +1 -0
  27. package/dist/api/node/msgpack.js +212 -0
  28. package/dist/api/node/msgpack.js.map +1 -0
  29. package/dist/api/node/node.d.ts +63 -0
  30. package/dist/api/node/node.d.ts.map +1 -0
  31. package/dist/api/node/node.generated.d.ts +172 -0
  32. package/dist/api/node/node.generated.d.ts.map +1 -0
  33. package/dist/api/node/node.generated.js +817 -0
  34. package/dist/api/node/node.generated.js.map +1 -0
  35. package/dist/api/node/node.infrastructure.d.ts +51 -0
  36. package/dist/api/node/node.infrastructure.d.ts.map +1 -0
  37. package/dist/api/node/node.infrastructure.js +122 -0
  38. package/dist/api/node/node.infrastructure.js.map +1 -0
  39. package/dist/api/node/node.js +201 -0
  40. package/dist/api/node/node.js.map +1 -0
  41. package/dist/api/node/protocol.d.ts +29 -0
  42. package/dist/api/node/protocol.d.ts.map +1 -0
  43. package/dist/api/node/protocol.generated.d.ts +4 -0
  44. package/dist/api/node/protocol.generated.d.ts.map +1 -0
  45. package/dist/api/node/protocol.generated.js +241 -0
  46. package/dist/api/node/protocol.generated.js.map +1 -0
  47. package/dist/api/node/protocol.js +30 -0
  48. package/dist/api/node/protocol.js.map +1 -0
  49. package/dist/api/objectRegistry.d.ts +38 -0
  50. package/dist/api/objectRegistry.d.ts.map +1 -0
  51. package/dist/api/objectRegistry.js +55 -0
  52. package/dist/api/objectRegistry.js.map +1 -0
  53. package/dist/api/options.d.ts +24 -0
  54. package/dist/api/options.d.ts.map +1 -0
  55. package/dist/api/options.js +11 -0
  56. package/dist/api/options.js.map +1 -0
  57. package/dist/api/path.d.ts +110 -0
  58. package/dist/api/path.d.ts.map +1 -0
  59. package/dist/api/path.js +508 -0
  60. package/dist/api/path.js.map +1 -0
  61. package/dist/api/proto.d.ts +152 -0
  62. package/dist/api/proto.d.ts.map +1 -0
  63. package/dist/api/proto.js +22 -0
  64. package/dist/api/proto.js.map +1 -0
  65. package/dist/api/sourceFileCache.d.ts +79 -0
  66. package/dist/api/sourceFileCache.d.ts.map +1 -0
  67. package/dist/api/sourceFileCache.js +169 -0
  68. package/dist/api/sourceFileCache.js.map +1 -0
  69. package/dist/api/sync/api.d.ts +241 -0
  70. package/dist/api/sync/api.d.ts.map +1 -0
  71. package/dist/api/sync/api.js +818 -0
  72. package/dist/api/sync/api.js.map +1 -0
  73. package/dist/api/sync/client.d.ts +13 -0
  74. package/dist/api/sync/client.d.ts.map +1 -0
  75. package/dist/api/sync/client.js +72 -0
  76. package/dist/api/sync/client.js.map +1 -0
  77. package/dist/api/sync/types.d.ts +179 -0
  78. package/dist/api/sync/types.d.ts.map +1 -0
  79. package/dist/api/sync/types.js +2 -0
  80. package/dist/api/sync/types.js.map +1 -0
  81. package/dist/api/syncChannel.d.ts +111 -0
  82. package/dist/api/syncChannel.d.ts.map +1 -0
  83. package/dist/api/syncChannel.js +488 -0
  84. package/dist/api/syncChannel.js.map +1 -0
  85. package/dist/ast/ast.d.ts +66 -0
  86. package/dist/ast/ast.d.ts.map +1 -0
  87. package/dist/ast/ast.generated.d.ts +1160 -0
  88. package/dist/ast/ast.generated.d.ts.map +1 -0
  89. package/dist/ast/ast.generated.js +4 -0
  90. package/dist/ast/ast.generated.js.map +1 -0
  91. package/dist/ast/ast.js +7 -0
  92. package/dist/ast/ast.js.map +1 -0
  93. package/dist/ast/astnav.d.ts +19 -0
  94. package/dist/ast/astnav.d.ts.map +1 -0
  95. package/dist/ast/astnav.js +596 -0
  96. package/dist/ast/astnav.js.map +1 -0
  97. package/dist/ast/clone.d.ts +16 -0
  98. package/dist/ast/clone.d.ts.map +1 -0
  99. package/dist/ast/clone.js +104 -0
  100. package/dist/ast/clone.js.map +1 -0
  101. package/dist/ast/factory.generated.d.ts +513 -0
  102. package/dist/ast/factory.generated.d.ts.map +1 -0
  103. package/dist/ast/factory.generated.js +3026 -0
  104. package/dist/ast/factory.generated.js.map +1 -0
  105. package/dist/ast/index.d.ts +18 -0
  106. package/dist/ast/index.d.ts.map +1 -0
  107. package/dist/ast/index.js +18 -0
  108. package/dist/ast/index.js.map +1 -0
  109. package/dist/ast/is.d.ts +34 -0
  110. package/dist/ast/is.d.ts.map +1 -0
  111. package/dist/ast/is.generated.d.ts +328 -0
  112. package/dist/ast/is.generated.d.ts.map +1 -0
  113. package/dist/ast/is.generated.js +1101 -0
  114. package/dist/ast/is.generated.js.map +1 -0
  115. package/dist/ast/is.js +226 -0
  116. package/dist/ast/is.js.map +1 -0
  117. package/dist/ast/scanner.d.ts +97 -0
  118. package/dist/ast/scanner.d.ts.map +1 -0
  119. package/dist/ast/scanner.js +2230 -0
  120. package/dist/ast/scanner.js.map +1 -0
  121. package/dist/ast/utils.d.ts +5 -0
  122. package/dist/ast/utils.d.ts.map +1 -0
  123. package/dist/ast/utils.js +27 -0
  124. package/dist/ast/utils.js.map +1 -0
  125. package/dist/ast/visitor.d.ts +14 -0
  126. package/dist/ast/visitor.d.ts.map +1 -0
  127. package/dist/ast/visitor.generated.d.ts +50 -0
  128. package/dist/ast/visitor.generated.d.ts.map +1 -0
  129. package/dist/ast/visitor.generated.js +978 -0
  130. package/dist/ast/visitor.generated.js.map +1 -0
  131. package/dist/ast/visitor.js +47 -0
  132. package/dist/ast/visitor.js.map +1 -0
  133. package/dist/enums/characterCodes.d.ts +2 -0
  134. package/dist/enums/characterCodes.d.ts.map +1 -0
  135. package/dist/enums/characterCodes.enum.d.ts +129 -0
  136. package/dist/enums/characterCodes.enum.d.ts.map +1 -0
  137. package/dist/enums/characterCodes.enum.js +132 -0
  138. package/dist/enums/characterCodes.enum.js.map +1 -0
  139. package/dist/enums/characterCodes.js +130 -0
  140. package/dist/enums/characterCodes.js.map +1 -0
  141. package/dist/enums/commentDirectiveType.d.ts +2 -0
  142. package/dist/enums/commentDirectiveType.d.ts.map +1 -0
  143. package/dist/enums/commentDirectiveType.enum.d.ts +5 -0
  144. package/dist/enums/commentDirectiveType.enum.d.ts.map +1 -0
  145. package/dist/enums/commentDirectiveType.enum.js +6 -0
  146. package/dist/enums/commentDirectiveType.enum.js.map +1 -0
  147. package/dist/enums/commentDirectiveType.js +6 -0
  148. package/dist/enums/commentDirectiveType.js.map +1 -0
  149. package/dist/enums/diagnosticCategory.d.ts +2 -0
  150. package/dist/enums/diagnosticCategory.d.ts.map +1 -0
  151. package/dist/enums/diagnosticCategory.enum.d.ts +7 -0
  152. package/dist/enums/diagnosticCategory.enum.d.ts.map +1 -0
  153. package/dist/enums/diagnosticCategory.enum.js +9 -0
  154. package/dist/enums/diagnosticCategory.enum.js.map +1 -0
  155. package/dist/enums/diagnosticCategory.js +9 -0
  156. package/dist/enums/diagnosticCategory.js.map +1 -0
  157. package/dist/enums/elementFlags.d.ts +2 -0
  158. package/dist/enums/elementFlags.d.ts.map +1 -0
  159. package/dist/enums/elementFlags.enum.d.ts +12 -0
  160. package/dist/enums/elementFlags.enum.d.ts.map +1 -0
  161. package/dist/enums/elementFlags.enum.js +14 -0
  162. package/dist/enums/elementFlags.enum.js.map +1 -0
  163. package/dist/enums/elementFlags.js +14 -0
  164. package/dist/enums/elementFlags.js.map +1 -0
  165. package/dist/enums/languageVariant.d.ts +2 -0
  166. package/dist/enums/languageVariant.d.ts.map +1 -0
  167. package/dist/enums/languageVariant.enum.d.ts +5 -0
  168. package/dist/enums/languageVariant.enum.d.ts.map +1 -0
  169. package/dist/enums/languageVariant.enum.js +6 -0
  170. package/dist/enums/languageVariant.enum.js.map +1 -0
  171. package/dist/enums/languageVariant.js +6 -0
  172. package/dist/enums/languageVariant.js.map +1 -0
  173. package/dist/enums/modifierFlags.d.ts +2 -0
  174. package/dist/enums/modifierFlags.d.ts.map +1 -0
  175. package/dist/enums/modifierFlags.enum.d.ts +42 -0
  176. package/dist/enums/modifierFlags.enum.d.ts.map +1 -0
  177. package/dist/enums/modifierFlags.enum.js +44 -0
  178. package/dist/enums/modifierFlags.enum.js.map +1 -0
  179. package/dist/enums/modifierFlags.js +44 -0
  180. package/dist/enums/modifierFlags.js.map +1 -0
  181. package/dist/enums/nodeFlags.d.ts +2 -0
  182. package/dist/enums/nodeFlags.d.ts.map +1 -0
  183. package/dist/enums/nodeFlags.enum.d.ts +41 -0
  184. package/dist/enums/nodeFlags.enum.d.ts.map +1 -0
  185. package/dist/enums/nodeFlags.enum.js +43 -0
  186. package/dist/enums/nodeFlags.enum.js.map +1 -0
  187. package/dist/enums/nodeFlags.js +43 -0
  188. package/dist/enums/nodeFlags.js.map +1 -0
  189. package/dist/enums/objectFlags.d.ts +2 -0
  190. package/dist/enums/objectFlags.d.ts.map +1 -0
  191. package/dist/enums/objectFlags.enum.d.ts +50 -0
  192. package/dist/enums/objectFlags.enum.d.ts.map +1 -0
  193. package/dist/enums/objectFlags.enum.js +52 -0
  194. package/dist/enums/objectFlags.enum.js.map +1 -0
  195. package/dist/enums/objectFlags.js +52 -0
  196. package/dist/enums/objectFlags.js.map +1 -0
  197. package/dist/enums/outerExpressionKinds.d.ts +2 -0
  198. package/dist/enums/outerExpressionKinds.d.ts.map +1 -0
  199. package/dist/enums/outerExpressionKinds.enum.d.ts +12 -0
  200. package/dist/enums/outerExpressionKinds.enum.d.ts.map +1 -0
  201. package/dist/enums/outerExpressionKinds.enum.js +14 -0
  202. package/dist/enums/outerExpressionKinds.enum.js.map +1 -0
  203. package/dist/enums/outerExpressionKinds.js +14 -0
  204. package/dist/enums/outerExpressionKinds.js.map +1 -0
  205. package/dist/enums/regularExpressionFlags.d.ts +2 -0
  206. package/dist/enums/regularExpressionFlags.d.ts.map +1 -0
  207. package/dist/enums/regularExpressionFlags.enum.d.ts +13 -0
  208. package/dist/enums/regularExpressionFlags.enum.d.ts.map +1 -0
  209. package/dist/enums/regularExpressionFlags.enum.js +14 -0
  210. package/dist/enums/regularExpressionFlags.enum.js.map +1 -0
  211. package/dist/enums/regularExpressionFlags.js +14 -0
  212. package/dist/enums/regularExpressionFlags.js.map +1 -0
  213. package/dist/enums/scriptKind.d.ts +2 -0
  214. package/dist/enums/scriptKind.d.ts.map +1 -0
  215. package/dist/enums/scriptKind.enum.d.ts +11 -0
  216. package/dist/enums/scriptKind.enum.d.ts.map +1 -0
  217. package/dist/enums/scriptKind.enum.js +12 -0
  218. package/dist/enums/scriptKind.enum.js.map +1 -0
  219. package/dist/enums/scriptKind.js +12 -0
  220. package/dist/enums/scriptKind.js.map +1 -0
  221. package/dist/enums/scriptTarget.d.ts +2 -0
  222. package/dist/enums/scriptTarget.d.ts.map +1 -0
  223. package/dist/enums/scriptTarget.enum.d.ts +17 -0
  224. package/dist/enums/scriptTarget.enum.d.ts.map +1 -0
  225. package/dist/enums/scriptTarget.enum.js +18 -0
  226. package/dist/enums/scriptTarget.enum.js.map +1 -0
  227. package/dist/enums/scriptTarget.js +18 -0
  228. package/dist/enums/scriptTarget.js.map +1 -0
  229. package/dist/enums/signatureFlags.d.ts +2 -0
  230. package/dist/enums/signatureFlags.d.ts.map +1 -0
  231. package/dist/enums/signatureFlags.enum.d.ts +15 -0
  232. package/dist/enums/signatureFlags.enum.d.ts.map +1 -0
  233. package/dist/enums/signatureFlags.enum.js +17 -0
  234. package/dist/enums/signatureFlags.enum.js.map +1 -0
  235. package/dist/enums/signatureFlags.js +17 -0
  236. package/dist/enums/signatureFlags.js.map +1 -0
  237. package/dist/enums/signatureKind.d.ts +2 -0
  238. package/dist/enums/signatureKind.d.ts.map +1 -0
  239. package/dist/enums/signatureKind.enum.d.ts +5 -0
  240. package/dist/enums/signatureKind.enum.d.ts.map +1 -0
  241. package/dist/enums/signatureKind.enum.js +7 -0
  242. package/dist/enums/signatureKind.enum.js.map +1 -0
  243. package/dist/enums/signatureKind.js +7 -0
  244. package/dist/enums/signatureKind.js.map +1 -0
  245. package/dist/enums/symbolFlags.d.ts +2 -0
  246. package/dist/enums/symbolFlags.d.ts.map +1 -0
  247. package/dist/enums/symbolFlags.enum.d.ts +71 -0
  248. package/dist/enums/symbolFlags.enum.d.ts.map +1 -0
  249. package/dist/enums/symbolFlags.enum.js +73 -0
  250. package/dist/enums/symbolFlags.enum.js.map +1 -0
  251. package/dist/enums/symbolFlags.js +73 -0
  252. package/dist/enums/symbolFlags.js.map +1 -0
  253. package/dist/enums/syntaxKind.d.ts +2 -0
  254. package/dist/enums/syntaxKind.d.ts.map +1 -0
  255. package/dist/enums/syntaxKind.enum.d.ts +389 -0
  256. package/dist/enums/syntaxKind.enum.d.ts.map +1 -0
  257. package/dist/enums/syntaxKind.enum.js +391 -0
  258. package/dist/enums/syntaxKind.enum.js.map +1 -0
  259. package/dist/enums/syntaxKind.js +391 -0
  260. package/dist/enums/syntaxKind.js.map +1 -0
  261. package/dist/enums/tokenFlags.d.ts +2 -0
  262. package/dist/enums/tokenFlags.d.ts.map +1 -0
  263. package/dist/enums/tokenFlags.enum.d.ts +30 -0
  264. package/dist/enums/tokenFlags.enum.d.ts.map +1 -0
  265. package/dist/enums/tokenFlags.enum.js +32 -0
  266. package/dist/enums/tokenFlags.enum.js.map +1 -0
  267. package/dist/enums/tokenFlags.js +32 -0
  268. package/dist/enums/tokenFlags.js.map +1 -0
  269. package/dist/enums/typeFlags.d.ts +2 -0
  270. package/dist/enums/typeFlags.d.ts.map +1 -0
  271. package/dist/enums/typeFlags.enum.d.ts +76 -0
  272. package/dist/enums/typeFlags.enum.d.ts.map +1 -0
  273. package/dist/enums/typeFlags.enum.js +78 -0
  274. package/dist/enums/typeFlags.enum.js.map +1 -0
  275. package/dist/enums/typeFlags.js +78 -0
  276. package/dist/enums/typeFlags.js.map +1 -0
  277. package/dist/enums/typePredicateKind.d.ts +2 -0
  278. package/dist/enums/typePredicateKind.d.ts.map +1 -0
  279. package/dist/enums/typePredicateKind.enum.d.ts +7 -0
  280. package/dist/enums/typePredicateKind.enum.d.ts.map +1 -0
  281. package/dist/enums/typePredicateKind.enum.js +9 -0
  282. package/dist/enums/typePredicateKind.enum.js.map +1 -0
  283. package/dist/enums/typePredicateKind.js +9 -0
  284. package/dist/enums/typePredicateKind.js.map +1 -0
  285. package/lib/getExePath.d.ts +2 -0
  286. package/package.json +57 -12
  287. package/vendor/vscode-jsonrpc/README.md +69 -0
  288. package/vendor/vscode-jsonrpc/lib/browser/main.d.ts +17 -0
  289. package/vendor/vscode-jsonrpc/lib/browser/main.js +83 -0
  290. package/vendor/vscode-jsonrpc/lib/browser/ril.d.ts +22 -0
  291. package/vendor/vscode-jsonrpc/lib/browser/ril.js +203 -0
  292. package/vendor/vscode-jsonrpc/lib/common/api.d.ts +14 -0
  293. package/vendor/vscode-jsonrpc/lib/common/api.js +87 -0
  294. package/vendor/vscode-jsonrpc/lib/common/cancellation.d.ts +32 -0
  295. package/vendor/vscode-jsonrpc/lib/common/cancellation.js +132 -0
  296. package/vendor/vscode-jsonrpc/lib/common/connection.d.ts +367 -0
  297. package/vendor/vscode-jsonrpc/lib/common/connection.js +1272 -0
  298. package/vendor/vscode-jsonrpc/lib/common/disposable.d.ts +9 -0
  299. package/vendor/vscode-jsonrpc/lib/common/disposable.js +16 -0
  300. package/vendor/vscode-jsonrpc/lib/common/encoding.d.ts +52 -0
  301. package/vendor/vscode-jsonrpc/lib/common/encoding.js +70 -0
  302. package/vendor/vscode-jsonrpc/lib/common/events.d.ts +39 -0
  303. package/vendor/vscode-jsonrpc/lib/common/events.js +136 -0
  304. package/vendor/vscode-jsonrpc/lib/common/is.d.ts +7 -0
  305. package/vendor/vscode-jsonrpc/lib/common/is.js +34 -0
  306. package/vendor/vscode-jsonrpc/lib/common/linkedMap.d.ts +55 -0
  307. package/vendor/vscode-jsonrpc/lib/common/linkedMap.js +412 -0
  308. package/vendor/vscode-jsonrpc/lib/common/messageBuffer.d.ts +18 -0
  309. package/vendor/vscode-jsonrpc/lib/common/messageBuffer.js +155 -0
  310. package/vendor/vscode-jsonrpc/lib/common/messageReader.d.ts +77 -0
  311. package/vendor/vscode-jsonrpc/lib/common/messageReader.js +246 -0
  312. package/vendor/vscode-jsonrpc/lib/common/messageWriter.d.ts +60 -0
  313. package/vendor/vscode-jsonrpc/lib/common/messageWriter.js +157 -0
  314. package/vendor/vscode-jsonrpc/lib/common/messages.d.ts +369 -0
  315. package/vendor/vscode-jsonrpc/lib/common/messages.js +436 -0
  316. package/vendor/vscode-jsonrpc/lib/common/ral.d.ts +74 -0
  317. package/vendor/vscode-jsonrpc/lib/common/ral.js +23 -0
  318. package/vendor/vscode-jsonrpc/lib/common/semaphore.d.ts +10 -0
  319. package/vendor/vscode-jsonrpc/lib/common/semaphore.js +74 -0
  320. package/vendor/vscode-jsonrpc/lib/common/sharedArrayCancellation.d.ts +15 -0
  321. package/vendor/vscode-jsonrpc/lib/common/sharedArrayCancellation.js +77 -0
  322. package/vendor/vscode-jsonrpc/lib/node/main.d.ts +58 -0
  323. package/vendor/vscode-jsonrpc/lib/node/main.js +289 -0
  324. package/vendor/vscode-jsonrpc/lib/node/ril.d.ts +12 -0
  325. package/vendor/vscode-jsonrpc/lib/node/ril.js +163 -0
  326. package/vendor/vscode-jsonrpc/package.json +54 -0
  327. package/vendor/vscode-jsonrpc/typings/thenable.d.ts +5 -0
@@ -0,0 +1,2230 @@
1
+ import { CharacterCodes } from "#enums/characterCodes";
2
+ import { CommentDirectiveType } from "#enums/commentDirectiveType";
3
+ import { LanguageVariant } from "#enums/languageVariant";
4
+ import { RegularExpressionFlags } from "#enums/regularExpressionFlags";
5
+ import { ScriptTarget } from "#enums/scriptTarget";
6
+ import { SyntaxKind } from "#enums/syntaxKind";
7
+ import { TokenFlags } from "#enums/tokenFlags";
8
+ // Internal-only, not exported
9
+ const EscapeSequenceScanningFlags = {
10
+ String: 1 << 0,
11
+ ReportErrors: 1 << 1,
12
+ RegularExpression: 1 << 2,
13
+ AnnexB: 1 << 3,
14
+ AnyUnicodeMode: 1 << 4,
15
+ AtomEscape: 1 << 5,
16
+ ReportInvalidEscapeErrors: (1 << 2) | (1 << 1),
17
+ AllowExtendedUnicodeEscape: (1 << 0) | (1 << 4),
18
+ };
19
+ export function tokenIsIdentifierOrKeyword(token) {
20
+ return token >= SyntaxKind.Identifier;
21
+ }
22
+ export function tokenIsIdentifierOrKeywordOrGreaterThan(token) {
23
+ return token === SyntaxKind.GreaterThanToken || tokenIsIdentifierOrKeyword(token);
24
+ }
25
+ export const textToKeywordObj = {
26
+ abstract: SyntaxKind.AbstractKeyword,
27
+ accessor: SyntaxKind.AccessorKeyword,
28
+ any: SyntaxKind.AnyKeyword,
29
+ as: SyntaxKind.AsKeyword,
30
+ asserts: SyntaxKind.AssertsKeyword,
31
+ assert: SyntaxKind.AssertKeyword,
32
+ bigint: SyntaxKind.BigIntKeyword,
33
+ boolean: SyntaxKind.BooleanKeyword,
34
+ break: SyntaxKind.BreakKeyword,
35
+ case: SyntaxKind.CaseKeyword,
36
+ catch: SyntaxKind.CatchKeyword,
37
+ class: SyntaxKind.ClassKeyword,
38
+ continue: SyntaxKind.ContinueKeyword,
39
+ const: SyntaxKind.ConstKeyword,
40
+ ["" + "constructor"]: SyntaxKind.ConstructorKeyword,
41
+ debugger: SyntaxKind.DebuggerKeyword,
42
+ declare: SyntaxKind.DeclareKeyword,
43
+ default: SyntaxKind.DefaultKeyword,
44
+ defer: SyntaxKind.DeferKeyword,
45
+ delete: SyntaxKind.DeleteKeyword,
46
+ do: SyntaxKind.DoKeyword,
47
+ else: SyntaxKind.ElseKeyword,
48
+ enum: SyntaxKind.EnumKeyword,
49
+ export: SyntaxKind.ExportKeyword,
50
+ extends: SyntaxKind.ExtendsKeyword,
51
+ false: SyntaxKind.FalseKeyword,
52
+ finally: SyntaxKind.FinallyKeyword,
53
+ for: SyntaxKind.ForKeyword,
54
+ from: SyntaxKind.FromKeyword,
55
+ function: SyntaxKind.FunctionKeyword,
56
+ get: SyntaxKind.GetKeyword,
57
+ if: SyntaxKind.IfKeyword,
58
+ implements: SyntaxKind.ImplementsKeyword,
59
+ import: SyntaxKind.ImportKeyword,
60
+ in: SyntaxKind.InKeyword,
61
+ infer: SyntaxKind.InferKeyword,
62
+ instanceof: SyntaxKind.InstanceOfKeyword,
63
+ interface: SyntaxKind.InterfaceKeyword,
64
+ intrinsic: SyntaxKind.IntrinsicKeyword,
65
+ is: SyntaxKind.IsKeyword,
66
+ keyof: SyntaxKind.KeyOfKeyword,
67
+ let: SyntaxKind.LetKeyword,
68
+ module: SyntaxKind.ModuleKeyword,
69
+ namespace: SyntaxKind.NamespaceKeyword,
70
+ never: SyntaxKind.NeverKeyword,
71
+ new: SyntaxKind.NewKeyword,
72
+ null: SyntaxKind.NullKeyword,
73
+ number: SyntaxKind.NumberKeyword,
74
+ object: SyntaxKind.ObjectKeyword,
75
+ package: SyntaxKind.PackageKeyword,
76
+ private: SyntaxKind.PrivateKeyword,
77
+ protected: SyntaxKind.ProtectedKeyword,
78
+ public: SyntaxKind.PublicKeyword,
79
+ override: SyntaxKind.OverrideKeyword,
80
+ out: SyntaxKind.OutKeyword,
81
+ readonly: SyntaxKind.ReadonlyKeyword,
82
+ require: SyntaxKind.RequireKeyword,
83
+ global: SyntaxKind.GlobalKeyword,
84
+ return: SyntaxKind.ReturnKeyword,
85
+ satisfies: SyntaxKind.SatisfiesKeyword,
86
+ set: SyntaxKind.SetKeyword,
87
+ static: SyntaxKind.StaticKeyword,
88
+ string: SyntaxKind.StringKeyword,
89
+ super: SyntaxKind.SuperKeyword,
90
+ switch: SyntaxKind.SwitchKeyword,
91
+ symbol: SyntaxKind.SymbolKeyword,
92
+ this: SyntaxKind.ThisKeyword,
93
+ throw: SyntaxKind.ThrowKeyword,
94
+ true: SyntaxKind.TrueKeyword,
95
+ try: SyntaxKind.TryKeyword,
96
+ type: SyntaxKind.TypeKeyword,
97
+ typeof: SyntaxKind.TypeOfKeyword,
98
+ undefined: SyntaxKind.UndefinedKeyword,
99
+ unique: SyntaxKind.UniqueKeyword,
100
+ unknown: SyntaxKind.UnknownKeyword,
101
+ using: SyntaxKind.UsingKeyword,
102
+ var: SyntaxKind.VarKeyword,
103
+ void: SyntaxKind.VoidKeyword,
104
+ while: SyntaxKind.WhileKeyword,
105
+ with: SyntaxKind.WithKeyword,
106
+ yield: SyntaxKind.YieldKeyword,
107
+ async: SyntaxKind.AsyncKeyword,
108
+ await: SyntaxKind.AwaitKeyword,
109
+ of: SyntaxKind.OfKeyword,
110
+ };
111
+ const textToKeyword = new Map(Object.entries(textToKeywordObj));
112
+ const textToToken = new Map(Object.entries({
113
+ ...textToKeywordObj,
114
+ "{": SyntaxKind.OpenBraceToken,
115
+ "}": SyntaxKind.CloseBraceToken,
116
+ "(": SyntaxKind.OpenParenToken,
117
+ ")": SyntaxKind.CloseParenToken,
118
+ "[": SyntaxKind.OpenBracketToken,
119
+ "]": SyntaxKind.CloseBracketToken,
120
+ ".": SyntaxKind.DotToken,
121
+ "...": SyntaxKind.DotDotDotToken,
122
+ ";": SyntaxKind.SemicolonToken,
123
+ ",": SyntaxKind.CommaToken,
124
+ "<": SyntaxKind.LessThanToken,
125
+ ">": SyntaxKind.GreaterThanToken,
126
+ "<=": SyntaxKind.LessThanEqualsToken,
127
+ ">=": SyntaxKind.GreaterThanEqualsToken,
128
+ "==": SyntaxKind.EqualsEqualsToken,
129
+ "!=": SyntaxKind.ExclamationEqualsToken,
130
+ "===": SyntaxKind.EqualsEqualsEqualsToken,
131
+ "!==": SyntaxKind.ExclamationEqualsEqualsToken,
132
+ "=>": SyntaxKind.EqualsGreaterThanToken,
133
+ "+": SyntaxKind.PlusToken,
134
+ "-": SyntaxKind.MinusToken,
135
+ "**": SyntaxKind.AsteriskAsteriskToken,
136
+ "*": SyntaxKind.AsteriskToken,
137
+ "/": SyntaxKind.SlashToken,
138
+ "%": SyntaxKind.PercentToken,
139
+ "++": SyntaxKind.PlusPlusToken,
140
+ "--": SyntaxKind.MinusMinusToken,
141
+ "<<": SyntaxKind.LessThanLessThanToken,
142
+ "</": SyntaxKind.LessThanSlashToken,
143
+ ">>": SyntaxKind.GreaterThanGreaterThanToken,
144
+ ">>>": SyntaxKind.GreaterThanGreaterThanGreaterThanToken,
145
+ "&": SyntaxKind.AmpersandToken,
146
+ "|": SyntaxKind.BarToken,
147
+ "^": SyntaxKind.CaretToken,
148
+ "!": SyntaxKind.ExclamationToken,
149
+ "~": SyntaxKind.TildeToken,
150
+ "&&": SyntaxKind.AmpersandAmpersandToken,
151
+ "||": SyntaxKind.BarBarToken,
152
+ "?": SyntaxKind.QuestionToken,
153
+ "??": SyntaxKind.QuestionQuestionToken,
154
+ "?.": SyntaxKind.QuestionDotToken,
155
+ ":": SyntaxKind.ColonToken,
156
+ "=": SyntaxKind.EqualsToken,
157
+ "+=": SyntaxKind.PlusEqualsToken,
158
+ "-=": SyntaxKind.MinusEqualsToken,
159
+ "*=": SyntaxKind.AsteriskEqualsToken,
160
+ "**=": SyntaxKind.AsteriskAsteriskEqualsToken,
161
+ "/=": SyntaxKind.SlashEqualsToken,
162
+ "%=": SyntaxKind.PercentEqualsToken,
163
+ "<<=": SyntaxKind.LessThanLessThanEqualsToken,
164
+ ">>=": SyntaxKind.GreaterThanGreaterThanEqualsToken,
165
+ ">>>=": SyntaxKind.GreaterThanGreaterThanGreaterThanEqualsToken,
166
+ "&=": SyntaxKind.AmpersandEqualsToken,
167
+ "|=": SyntaxKind.BarEqualsToken,
168
+ "^=": SyntaxKind.CaretEqualsToken,
169
+ "||=": SyntaxKind.BarBarEqualsToken,
170
+ "&&=": SyntaxKind.AmpersandAmpersandEqualsToken,
171
+ "??=": SyntaxKind.QuestionQuestionEqualsToken,
172
+ "@": SyntaxKind.AtToken,
173
+ "#": SyntaxKind.HashToken,
174
+ "`": SyntaxKind.BacktickToken,
175
+ }));
176
+ const charCodeToRegExpFlag = new Map([
177
+ [CharacterCodes.d, RegularExpressionFlags.HasIndices],
178
+ [CharacterCodes.g, RegularExpressionFlags.Global],
179
+ [CharacterCodes.i, RegularExpressionFlags.IgnoreCase],
180
+ [CharacterCodes.m, RegularExpressionFlags.Multiline],
181
+ [CharacterCodes.s, RegularExpressionFlags.DotAll],
182
+ [CharacterCodes.u, RegularExpressionFlags.Unicode],
183
+ [CharacterCodes.v, RegularExpressionFlags.UnicodeSets],
184
+ [CharacterCodes.y, RegularExpressionFlags.Sticky],
185
+ ]);
186
+ /**
187
+ * Generated by scripts/regenerate-unicode-identifier-parts.mjs on node v22.1.0 with unicode 15.1
188
+ * based on http://www.unicode.org/reports/tr31/ and https://www.ecma-international.org/ecma-262/6.0/#sec-names-and-keywords
189
+ * unicodeESNextIdentifierStart corresponds to the ID_Start and Other_ID_Start property, and
190
+ * unicodeESNextIdentifierPart corresponds to ID_Continue, Other_ID_Continue, plus ID_Start and Other_ID_Start
191
+ */
192
+ // dprint-ignore
193
+ const unicodeESNextIdentifierStart = [65, 90, 97, 122, 170, 170, 181, 181, 186, 186, 192, 214, 216, 246, 248, 705, 710, 721, 736, 740, 748, 748, 750, 750, 880, 884, 886, 887, 890, 893, 895, 895, 902, 902, 904, 906, 908, 908, 910, 929, 931, 1013, 1015, 1153, 1162, 1327, 1329, 1366, 1369, 1369, 1376, 1416, 1488, 1514, 1519, 1522, 1568, 1610, 1646, 1647, 1649, 1747, 1749, 1749, 1765, 1766, 1774, 1775, 1786, 1788, 1791, 1791, 1808, 1808, 1810, 1839, 1869, 1957, 1969, 1969, 1994, 2026, 2036, 2037, 2042, 2042, 2048, 2069, 2074, 2074, 2084, 2084, 2088, 2088, 2112, 2136, 2144, 2154, 2160, 2183, 2185, 2190, 2208, 2249, 2308, 2361, 2365, 2365, 2384, 2384, 2392, 2401, 2417, 2432, 2437, 2444, 2447, 2448, 2451, 2472, 2474, 2480, 2482, 2482, 2486, 2489, 2493, 2493, 2510, 2510, 2524, 2525, 2527, 2529, 2544, 2545, 2556, 2556, 2565, 2570, 2575, 2576, 2579, 2600, 2602, 2608, 2610, 2611, 2613, 2614, 2616, 2617, 2649, 2652, 2654, 2654, 2674, 2676, 2693, 2701, 2703, 2705, 2707, 2728, 2730, 2736, 2738, 2739, 2741, 2745, 2749, 2749, 2768, 2768, 2784, 2785, 2809, 2809, 2821, 2828, 2831, 2832, 2835, 2856, 2858, 2864, 2866, 2867, 2869, 2873, 2877, 2877, 2908, 2909, 2911, 2913, 2929, 2929, 2947, 2947, 2949, 2954, 2958, 2960, 2962, 2965, 2969, 2970, 2972, 2972, 2974, 2975, 2979, 2980, 2984, 2986, 2990, 3001, 3024, 3024, 3077, 3084, 3086, 3088, 3090, 3112, 3114, 3129, 3133, 3133, 3160, 3162, 3165, 3165, 3168, 3169, 3200, 3200, 3205, 3212, 3214, 3216, 3218, 3240, 3242, 3251, 3253, 3257, 3261, 3261, 3293, 3294, 3296, 3297, 3313, 3314, 3332, 3340, 3342, 3344, 3346, 3386, 3389, 3389, 3406, 3406, 3412, 3414, 3423, 3425, 3450, 3455, 3461, 3478, 3482, 3505, 3507, 3515, 3517, 3517, 3520, 3526, 3585, 3632, 3634, 3635, 3648, 3654, 3713, 3714, 3716, 3716, 3718, 3722, 3724, 3747, 3749, 3749, 3751, 3760, 3762, 3763, 3773, 3773, 3776, 3780, 3782, 3782, 3804, 3807, 3840, 3840, 3904, 3911, 3913, 3948, 3976, 3980, 4096, 4138, 4159, 4159, 4176, 4181, 4186, 4189, 4193, 4193, 4197, 4198, 4206, 4208, 4213, 4225, 4238, 4238, 4256, 4293, 4295, 4295, 4301, 4301, 4304, 4346, 4348, 4680, 4682, 4685, 4688, 4694, 4696, 4696, 4698, 4701, 4704, 4744, 4746, 4749, 4752, 4784, 4786, 4789, 4792, 4798, 4800, 4800, 4802, 4805, 4808, 4822, 4824, 4880, 4882, 4885, 4888, 4954, 4992, 5007, 5024, 5109, 5112, 5117, 5121, 5740, 5743, 5759, 5761, 5786, 5792, 5866, 5870, 5880, 5888, 5905, 5919, 5937, 5952, 5969, 5984, 5996, 5998, 6000, 6016, 6067, 6103, 6103, 6108, 6108, 6176, 6264, 6272, 6312, 6314, 6314, 6320, 6389, 6400, 6430, 6480, 6509, 6512, 6516, 6528, 6571, 6576, 6601, 6656, 6678, 6688, 6740, 6823, 6823, 6917, 6963, 6981, 6988, 7043, 7072, 7086, 7087, 7098, 7141, 7168, 7203, 7245, 7247, 7258, 7293, 7296, 7304, 7312, 7354, 7357, 7359, 7401, 7404, 7406, 7411, 7413, 7414, 7418, 7418, 7424, 7615, 7680, 7957, 7960, 7965, 7968, 8005, 8008, 8013, 8016, 8023, 8025, 8025, 8027, 8027, 8029, 8029, 8031, 8061, 8064, 8116, 8118, 8124, 8126, 8126, 8130, 8132, 8134, 8140, 8144, 8147, 8150, 8155, 8160, 8172, 8178, 8180, 8182, 8188, 8305, 8305, 8319, 8319, 8336, 8348, 8450, 8450, 8455, 8455, 8458, 8467, 8469, 8469, 8472, 8477, 8484, 8484, 8486, 8486, 8488, 8488, 8490, 8505, 8508, 8511, 8517, 8521, 8526, 8526, 8544, 8584, 11264, 11492, 11499, 11502, 11506, 11507, 11520, 11557, 11559, 11559, 11565, 11565, 11568, 11623, 11631, 11631, 11648, 11670, 11680, 11686, 11688, 11694, 11696, 11702, 11704, 11710, 11712, 11718, 11720, 11726, 11728, 11734, 11736, 11742, 12293, 12295, 12321, 12329, 12337, 12341, 12344, 12348, 12353, 12438, 12443, 12447, 12449, 12538, 12540, 12543, 12549, 12591, 12593, 12686, 12704, 12735, 12784, 12799, 13312, 19903, 19968, 42124, 42192, 42237, 42240, 42508, 42512, 42527, 42538, 42539, 42560, 42606, 42623, 42653, 42656, 42735, 42775, 42783, 42786, 42888, 42891, 42954, 42960, 42961, 42963, 42963, 42965, 42969, 42994, 43009, 43011, 43013, 43015, 43018, 43020, 43042, 43072, 43123, 43138, 43187, 43250, 43255, 43259, 43259, 43261, 43262, 43274, 43301, 43312, 43334, 43360, 43388, 43396, 43442, 43471, 43471, 43488, 43492, 43494, 43503, 43514, 43518, 43520, 43560, 43584, 43586, 43588, 43595, 43616, 43638, 43642, 43642, 43646, 43695, 43697, 43697, 43701, 43702, 43705, 43709, 43712, 43712, 43714, 43714, 43739, 43741, 43744, 43754, 43762, 43764, 43777, 43782, 43785, 43790, 43793, 43798, 43808, 43814, 43816, 43822, 43824, 43866, 43868, 43881, 43888, 44002, 44032, 55203, 55216, 55238, 55243, 55291, 63744, 64109, 64112, 64217, 64256, 64262, 64275, 64279, 64285, 64285, 64287, 64296, 64298, 64310, 64312, 64316, 64318, 64318, 64320, 64321, 64323, 64324, 64326, 64433, 64467, 64829, 64848, 64911, 64914, 64967, 65008, 65019, 65136, 65140, 65142, 65276, 65313, 65338, 65345, 65370, 65382, 65470, 65474, 65479, 65482, 65487, 65490, 65495, 65498, 65500, 65536, 65547, 65549, 65574, 65576, 65594, 65596, 65597, 65599, 65613, 65616, 65629, 65664, 65786, 65856, 65908, 66176, 66204, 66208, 66256, 66304, 66335, 66349, 66378, 66384, 66421, 66432, 66461, 66464, 66499, 66504, 66511, 66513, 66517, 66560, 66717, 66736, 66771, 66776, 66811, 66816, 66855, 66864, 66915, 66928, 66938, 66940, 66954, 66956, 66962, 66964, 66965, 66967, 66977, 66979, 66993, 66995, 67001, 67003, 67004, 67072, 67382, 67392, 67413, 67424, 67431, 67456, 67461, 67463, 67504, 67506, 67514, 67584, 67589, 67592, 67592, 67594, 67637, 67639, 67640, 67644, 67644, 67647, 67669, 67680, 67702, 67712, 67742, 67808, 67826, 67828, 67829, 67840, 67861, 67872, 67897, 67968, 68023, 68030, 68031, 68096, 68096, 68112, 68115, 68117, 68119, 68121, 68149, 68192, 68220, 68224, 68252, 68288, 68295, 68297, 68324, 68352, 68405, 68416, 68437, 68448, 68466, 68480, 68497, 68608, 68680, 68736, 68786, 68800, 68850, 68864, 68899, 69248, 69289, 69296, 69297, 69376, 69404, 69415, 69415, 69424, 69445, 69488, 69505, 69552, 69572, 69600, 69622, 69635, 69687, 69745, 69746, 69749, 69749, 69763, 69807, 69840, 69864, 69891, 69926, 69956, 69956, 69959, 69959, 69968, 70002, 70006, 70006, 70019, 70066, 70081, 70084, 70106, 70106, 70108, 70108, 70144, 70161, 70163, 70187, 70207, 70208, 70272, 70278, 70280, 70280, 70282, 70285, 70287, 70301, 70303, 70312, 70320, 70366, 70405, 70412, 70415, 70416, 70419, 70440, 70442, 70448, 70450, 70451, 70453, 70457, 70461, 70461, 70480, 70480, 70493, 70497, 70656, 70708, 70727, 70730, 70751, 70753, 70784, 70831, 70852, 70853, 70855, 70855, 71040, 71086, 71128, 71131, 71168, 71215, 71236, 71236, 71296, 71338, 71352, 71352, 71424, 71450, 71488, 71494, 71680, 71723, 71840, 71903, 71935, 71942, 71945, 71945, 71948, 71955, 71957, 71958, 71960, 71983, 71999, 71999, 72001, 72001, 72096, 72103, 72106, 72144, 72161, 72161, 72163, 72163, 72192, 72192, 72203, 72242, 72250, 72250, 72272, 72272, 72284, 72329, 72349, 72349, 72368, 72440, 72704, 72712, 72714, 72750, 72768, 72768, 72818, 72847, 72960, 72966, 72968, 72969, 72971, 73008, 73030, 73030, 73056, 73061, 73063, 73064, 73066, 73097, 73112, 73112, 73440, 73458, 73474, 73474, 73476, 73488, 73490, 73523, 73648, 73648, 73728, 74649, 74752, 74862, 74880, 75075, 77712, 77808, 77824, 78895, 78913, 78918, 82944, 83526, 92160, 92728, 92736, 92766, 92784, 92862, 92880, 92909, 92928, 92975, 92992, 92995, 93027, 93047, 93053, 93071, 93760, 93823, 93952, 94026, 94032, 94032, 94099, 94111, 94176, 94177, 94179, 94179, 94208, 100343, 100352, 101589, 101632, 101640, 110576, 110579, 110581, 110587, 110589, 110590, 110592, 110882, 110898, 110898, 110928, 110930, 110933, 110933, 110948, 110951, 110960, 111355, 113664, 113770, 113776, 113788, 113792, 113800, 113808, 113817, 119808, 119892, 119894, 119964, 119966, 119967, 119970, 119970, 119973, 119974, 119977, 119980, 119982, 119993, 119995, 119995, 119997, 120003, 120005, 120069, 120071, 120074, 120077, 120084, 120086, 120092, 120094, 120121, 120123, 120126, 120128, 120132, 120134, 120134, 120138, 120144, 120146, 120485, 120488, 120512, 120514, 120538, 120540, 120570, 120572, 120596, 120598, 120628, 120630, 120654, 120656, 120686, 120688, 120712, 120714, 120744, 120746, 120770, 120772, 120779, 122624, 122654, 122661, 122666, 122928, 122989, 123136, 123180, 123191, 123197, 123214, 123214, 123536, 123565, 123584, 123627, 124112, 124139, 124896, 124902, 124904, 124907, 124909, 124910, 124912, 124926, 124928, 125124, 125184, 125251, 125259, 125259, 126464, 126467, 126469, 126495, 126497, 126498, 126500, 126500, 126503, 126503, 126505, 126514, 126516, 126519, 126521, 126521, 126523, 126523, 126530, 126530, 126535, 126535, 126537, 126537, 126539, 126539, 126541, 126543, 126545, 126546, 126548, 126548, 126551, 126551, 126553, 126553, 126555, 126555, 126557, 126557, 126559, 126559, 126561, 126562, 126564, 126564, 126567, 126570, 126572, 126578, 126580, 126583, 126585, 126588, 126590, 126590, 126592, 126601, 126603, 126619, 126625, 126627, 126629, 126633, 126635, 126651, 131072, 173791, 173824, 177977, 177984, 178205, 178208, 183969, 183984, 191456, 191472, 192093, 194560, 195101, 196608, 201546, 201552, 205743];
194
+ // dprint-ignore
195
+ const unicodeESNextIdentifierPart = [48, 57, 65, 90, 95, 95, 97, 122, 170, 170, 181, 181, 183, 183, 186, 186, 192, 214, 216, 246, 248, 705, 710, 721, 736, 740, 748, 748, 750, 750, 768, 884, 886, 887, 890, 893, 895, 895, 902, 906, 908, 908, 910, 929, 931, 1013, 1015, 1153, 1155, 1159, 1162, 1327, 1329, 1366, 1369, 1369, 1376, 1416, 1425, 1469, 1471, 1471, 1473, 1474, 1476, 1477, 1479, 1479, 1488, 1514, 1519, 1522, 1552, 1562, 1568, 1641, 1646, 1747, 1749, 1756, 1759, 1768, 1770, 1788, 1791, 1791, 1808, 1866, 1869, 1969, 1984, 2037, 2042, 2042, 2045, 2045, 2048, 2093, 2112, 2139, 2144, 2154, 2160, 2183, 2185, 2190, 2200, 2273, 2275, 2403, 2406, 2415, 2417, 2435, 2437, 2444, 2447, 2448, 2451, 2472, 2474, 2480, 2482, 2482, 2486, 2489, 2492, 2500, 2503, 2504, 2507, 2510, 2519, 2519, 2524, 2525, 2527, 2531, 2534, 2545, 2556, 2556, 2558, 2558, 2561, 2563, 2565, 2570, 2575, 2576, 2579, 2600, 2602, 2608, 2610, 2611, 2613, 2614, 2616, 2617, 2620, 2620, 2622, 2626, 2631, 2632, 2635, 2637, 2641, 2641, 2649, 2652, 2654, 2654, 2662, 2677, 2689, 2691, 2693, 2701, 2703, 2705, 2707, 2728, 2730, 2736, 2738, 2739, 2741, 2745, 2748, 2757, 2759, 2761, 2763, 2765, 2768, 2768, 2784, 2787, 2790, 2799, 2809, 2815, 2817, 2819, 2821, 2828, 2831, 2832, 2835, 2856, 2858, 2864, 2866, 2867, 2869, 2873, 2876, 2884, 2887, 2888, 2891, 2893, 2901, 2903, 2908, 2909, 2911, 2915, 2918, 2927, 2929, 2929, 2946, 2947, 2949, 2954, 2958, 2960, 2962, 2965, 2969, 2970, 2972, 2972, 2974, 2975, 2979, 2980, 2984, 2986, 2990, 3001, 3006, 3010, 3014, 3016, 3018, 3021, 3024, 3024, 3031, 3031, 3046, 3055, 3072, 3084, 3086, 3088, 3090, 3112, 3114, 3129, 3132, 3140, 3142, 3144, 3146, 3149, 3157, 3158, 3160, 3162, 3165, 3165, 3168, 3171, 3174, 3183, 3200, 3203, 3205, 3212, 3214, 3216, 3218, 3240, 3242, 3251, 3253, 3257, 3260, 3268, 3270, 3272, 3274, 3277, 3285, 3286, 3293, 3294, 3296, 3299, 3302, 3311, 3313, 3315, 3328, 3340, 3342, 3344, 3346, 3396, 3398, 3400, 3402, 3406, 3412, 3415, 3423, 3427, 3430, 3439, 3450, 3455, 3457, 3459, 3461, 3478, 3482, 3505, 3507, 3515, 3517, 3517, 3520, 3526, 3530, 3530, 3535, 3540, 3542, 3542, 3544, 3551, 3558, 3567, 3570, 3571, 3585, 3642, 3648, 3662, 3664, 3673, 3713, 3714, 3716, 3716, 3718, 3722, 3724, 3747, 3749, 3749, 3751, 3773, 3776, 3780, 3782, 3782, 3784, 3790, 3792, 3801, 3804, 3807, 3840, 3840, 3864, 3865, 3872, 3881, 3893, 3893, 3895, 3895, 3897, 3897, 3902, 3911, 3913, 3948, 3953, 3972, 3974, 3991, 3993, 4028, 4038, 4038, 4096, 4169, 4176, 4253, 4256, 4293, 4295, 4295, 4301, 4301, 4304, 4346, 4348, 4680, 4682, 4685, 4688, 4694, 4696, 4696, 4698, 4701, 4704, 4744, 4746, 4749, 4752, 4784, 4786, 4789, 4792, 4798, 4800, 4800, 4802, 4805, 4808, 4822, 4824, 4880, 4882, 4885, 4888, 4954, 4957, 4959, 4969, 4977, 4992, 5007, 5024, 5109, 5112, 5117, 5121, 5740, 5743, 5759, 5761, 5786, 5792, 5866, 5870, 5880, 5888, 5909, 5919, 5940, 5952, 5971, 5984, 5996, 5998, 6000, 6002, 6003, 6016, 6099, 6103, 6103, 6108, 6109, 6112, 6121, 6155, 6157, 6159, 6169, 6176, 6264, 6272, 6314, 6320, 6389, 6400, 6430, 6432, 6443, 6448, 6459, 6470, 6509, 6512, 6516, 6528, 6571, 6576, 6601, 6608, 6618, 6656, 6683, 6688, 6750, 6752, 6780, 6783, 6793, 6800, 6809, 6823, 6823, 6832, 6845, 6847, 6862, 6912, 6988, 6992, 7001, 7019, 7027, 7040, 7155, 7168, 7223, 7232, 7241, 7245, 7293, 7296, 7304, 7312, 7354, 7357, 7359, 7376, 7378, 7380, 7418, 7424, 7957, 7960, 7965, 7968, 8005, 8008, 8013, 8016, 8023, 8025, 8025, 8027, 8027, 8029, 8029, 8031, 8061, 8064, 8116, 8118, 8124, 8126, 8126, 8130, 8132, 8134, 8140, 8144, 8147, 8150, 8155, 8160, 8172, 8178, 8180, 8182, 8188, 8204, 8205, 8255, 8256, 8276, 8276, 8305, 8305, 8319, 8319, 8336, 8348, 8400, 8412, 8417, 8417, 8421, 8432, 8450, 8450, 8455, 8455, 8458, 8467, 8469, 8469, 8472, 8477, 8484, 8484, 8486, 8486, 8488, 8488, 8490, 8505, 8508, 8511, 8517, 8521, 8526, 8526, 8544, 8584, 11264, 11492, 11499, 11507, 11520, 11557, 11559, 11559, 11565, 11565, 11568, 11623, 11631, 11631, 11647, 11670, 11680, 11686, 11688, 11694, 11696, 11702, 11704, 11710, 11712, 11718, 11720, 11726, 11728, 11734, 11736, 11742, 11744, 11775, 12293, 12295, 12321, 12335, 12337, 12341, 12344, 12348, 12353, 12438, 12441, 12447, 12449, 12543, 12549, 12591, 12593, 12686, 12704, 12735, 12784, 12799, 13312, 19903, 19968, 42124, 42192, 42237, 42240, 42508, 42512, 42539, 42560, 42607, 42612, 42621, 42623, 42737, 42775, 42783, 42786, 42888, 42891, 42954, 42960, 42961, 42963, 42963, 42965, 42969, 42994, 43047, 43052, 43052, 43072, 43123, 43136, 43205, 43216, 43225, 43232, 43255, 43259, 43259, 43261, 43309, 43312, 43347, 43360, 43388, 43392, 43456, 43471, 43481, 43488, 43518, 43520, 43574, 43584, 43597, 43600, 43609, 43616, 43638, 43642, 43714, 43739, 43741, 43744, 43759, 43762, 43766, 43777, 43782, 43785, 43790, 43793, 43798, 43808, 43814, 43816, 43822, 43824, 43866, 43868, 43881, 43888, 44010, 44012, 44013, 44016, 44025, 44032, 55203, 55216, 55238, 55243, 55291, 63744, 64109, 64112, 64217, 64256, 64262, 64275, 64279, 64285, 64296, 64298, 64310, 64312, 64316, 64318, 64318, 64320, 64321, 64323, 64324, 64326, 64433, 64467, 64829, 64848, 64911, 64914, 64967, 65008, 65019, 65024, 65039, 65056, 65071, 65075, 65076, 65101, 65103, 65136, 65140, 65142, 65276, 65296, 65305, 65313, 65338, 65343, 65343, 65345, 65370, 65381, 65470, 65474, 65479, 65482, 65487, 65490, 65495, 65498, 65500, 65536, 65547, 65549, 65574, 65576, 65594, 65596, 65597, 65599, 65613, 65616, 65629, 65664, 65786, 65856, 65908, 66045, 66045, 66176, 66204, 66208, 66256, 66272, 66272, 66304, 66335, 66349, 66378, 66384, 66426, 66432, 66461, 66464, 66499, 66504, 66511, 66513, 66517, 66560, 66717, 66720, 66729, 66736, 66771, 66776, 66811, 66816, 66855, 66864, 66915, 66928, 66938, 66940, 66954, 66956, 66962, 66964, 66965, 66967, 66977, 66979, 66993, 66995, 67001, 67003, 67004, 67072, 67382, 67392, 67413, 67424, 67431, 67456, 67461, 67463, 67504, 67506, 67514, 67584, 67589, 67592, 67592, 67594, 67637, 67639, 67640, 67644, 67644, 67647, 67669, 67680, 67702, 67712, 67742, 67808, 67826, 67828, 67829, 67840, 67861, 67872, 67897, 67968, 68023, 68030, 68031, 68096, 68099, 68101, 68102, 68108, 68115, 68117, 68119, 68121, 68149, 68152, 68154, 68159, 68159, 68192, 68220, 68224, 68252, 68288, 68295, 68297, 68326, 68352, 68405, 68416, 68437, 68448, 68466, 68480, 68497, 68608, 68680, 68736, 68786, 68800, 68850, 68864, 68903, 68912, 68921, 69248, 69289, 69291, 69292, 69296, 69297, 69373, 69404, 69415, 69415, 69424, 69456, 69488, 69509, 69552, 69572, 69600, 69622, 69632, 69702, 69734, 69749, 69759, 69818, 69826, 69826, 69840, 69864, 69872, 69881, 69888, 69940, 69942, 69951, 69956, 69959, 69968, 70003, 70006, 70006, 70016, 70084, 70089, 70092, 70094, 70106, 70108, 70108, 70144, 70161, 70163, 70199, 70206, 70209, 70272, 70278, 70280, 70280, 70282, 70285, 70287, 70301, 70303, 70312, 70320, 70378, 70384, 70393, 70400, 70403, 70405, 70412, 70415, 70416, 70419, 70440, 70442, 70448, 70450, 70451, 70453, 70457, 70459, 70468, 70471, 70472, 70475, 70477, 70480, 70480, 70487, 70487, 70493, 70499, 70502, 70508, 70512, 70516, 70656, 70730, 70736, 70745, 70750, 70753, 70784, 70853, 70855, 70855, 70864, 70873, 71040, 71093, 71096, 71104, 71128, 71133, 71168, 71232, 71236, 71236, 71248, 71257, 71296, 71352, 71360, 71369, 71424, 71450, 71453, 71467, 71472, 71481, 71488, 71494, 71680, 71738, 71840, 71913, 71935, 71942, 71945, 71945, 71948, 71955, 71957, 71958, 71960, 71989, 71991, 71992, 71995, 72003, 72016, 72025, 72096, 72103, 72106, 72151, 72154, 72161, 72163, 72164, 72192, 72254, 72263, 72263, 72272, 72345, 72349, 72349, 72368, 72440, 72704, 72712, 72714, 72758, 72760, 72768, 72784, 72793, 72818, 72847, 72850, 72871, 72873, 72886, 72960, 72966, 72968, 72969, 72971, 73014, 73018, 73018, 73020, 73021, 73023, 73031, 73040, 73049, 73056, 73061, 73063, 73064, 73066, 73102, 73104, 73105, 73107, 73112, 73120, 73129, 73440, 73462, 73472, 73488, 73490, 73530, 73534, 73538, 73552, 73561, 73648, 73648, 73728, 74649, 74752, 74862, 74880, 75075, 77712, 77808, 77824, 78895, 78912, 78933, 82944, 83526, 92160, 92728, 92736, 92766, 92768, 92777, 92784, 92862, 92864, 92873, 92880, 92909, 92912, 92916, 92928, 92982, 92992, 92995, 93008, 93017, 93027, 93047, 93053, 93071, 93760, 93823, 93952, 94026, 94031, 94087, 94095, 94111, 94176, 94177, 94179, 94180, 94192, 94193, 94208, 100343, 100352, 101589, 101632, 101640, 110576, 110579, 110581, 110587, 110589, 110590, 110592, 110882, 110898, 110898, 110928, 110930, 110933, 110933, 110948, 110951, 110960, 111355, 113664, 113770, 113776, 113788, 113792, 113800, 113808, 113817, 113821, 113822, 118528, 118573, 118576, 118598, 119141, 119145, 119149, 119154, 119163, 119170, 119173, 119179, 119210, 119213, 119362, 119364, 119808, 119892, 119894, 119964, 119966, 119967, 119970, 119970, 119973, 119974, 119977, 119980, 119982, 119993, 119995, 119995, 119997, 120003, 120005, 120069, 120071, 120074, 120077, 120084, 120086, 120092, 120094, 120121, 120123, 120126, 120128, 120132, 120134, 120134, 120138, 120144, 120146, 120485, 120488, 120512, 120514, 120538, 120540, 120570, 120572, 120596, 120598, 120628, 120630, 120654, 120656, 120686, 120688, 120712, 120714, 120744, 120746, 120770, 120772, 120779, 120782, 120831, 121344, 121398, 121403, 121452, 121461, 121461, 121476, 121476, 121499, 121503, 121505, 121519, 122624, 122654, 122661, 122666, 122880, 122886, 122888, 122904, 122907, 122913, 122915, 122916, 122918, 122922, 122928, 122989, 123023, 123023, 123136, 123180, 123184, 123197, 123200, 123209, 123214, 123214, 123536, 123566, 123584, 123641, 124112, 124153, 124896, 124902, 124904, 124907, 124909, 124910, 124912, 124926, 124928, 125124, 125136, 125142, 125184, 125259, 125264, 125273, 126464, 126467, 126469, 126495, 126497, 126498, 126500, 126500, 126503, 126503, 126505, 126514, 126516, 126519, 126521, 126521, 126523, 126523, 126530, 126530, 126535, 126535, 126537, 126537, 126539, 126539, 126541, 126543, 126545, 126546, 126548, 126548, 126551, 126551, 126553, 126553, 126555, 126555, 126557, 126557, 126559, 126559, 126561, 126562, 126564, 126564, 126567, 126570, 126572, 126578, 126580, 126583, 126585, 126588, 126590, 126590, 126592, 126601, 126603, 126619, 126625, 126627, 126629, 126633, 126635, 126651, 130032, 130041, 131072, 173791, 173824, 177977, 177984, 178205, 178208, 183969, 183984, 191456, 191472, 192093, 194560, 195101, 196608, 201546, 201552, 205743, 917760, 917999];
196
+ const commentDirectiveRegExSingleLine = /^\/\/\/?\s*@(ts-expect-error|ts-ignore)/;
197
+ const commentDirectiveRegExMultiLine = /^(?:\/|\*)*\s*@(ts-expect-error|ts-ignore)/;
198
+ const jsDocTagTerminators = new Set([" ", "\t", "\n", "\r", "}", "*"]);
199
+ function hasJSDocTag(text, offset, ...tags) {
200
+ for (const tag of tags) {
201
+ if (text.startsWith(tag, offset)) {
202
+ if (offset + tag.length === text.length) {
203
+ return true;
204
+ }
205
+ if (jsDocTagTerminators.has(text[offset + tag.length])) {
206
+ return true;
207
+ }
208
+ }
209
+ }
210
+ return false;
211
+ }
212
+ function scanJSDocCommentForTags(text, tokenFlags) {
213
+ let offset = 0;
214
+ while (true) {
215
+ const i = text.indexOf("@", offset);
216
+ if (i < 0) {
217
+ return tokenFlags;
218
+ }
219
+ offset = i + 1;
220
+ if (!(tokenFlags & TokenFlags.PrecedingJSDocWithDeprecated) && hasJSDocTag(text, offset, "deprecated")) {
221
+ tokenFlags |= TokenFlags.PrecedingJSDocWithDeprecated;
222
+ }
223
+ if (!(tokenFlags & TokenFlags.PrecedingJSDocWithSeeOrLink) && hasJSDocTag(text, offset, "see", "link", "linkcode", "linkplain")) {
224
+ tokenFlags |= TokenFlags.PrecedingJSDocWithSeeOrLink;
225
+ }
226
+ if ((tokenFlags & (TokenFlags.PrecedingJSDocWithDeprecated | TokenFlags.PrecedingJSDocWithSeeOrLink)) ===
227
+ (TokenFlags.PrecedingJSDocWithDeprecated | TokenFlags.PrecedingJSDocWithSeeOrLink)) {
228
+ return tokenFlags;
229
+ }
230
+ }
231
+ }
232
+ function lookupInUnicodeMap(code, map) {
233
+ if (code < map[0]) {
234
+ return false;
235
+ }
236
+ let lo = 0;
237
+ let hi = map.length;
238
+ let mid;
239
+ while (lo + 1 < hi) {
240
+ mid = lo + (hi - lo) / 2;
241
+ mid -= mid % 2;
242
+ if (map[mid] <= code && code <= map[mid + 1]) {
243
+ return true;
244
+ }
245
+ if (code < map[mid]) {
246
+ hi = mid;
247
+ }
248
+ else {
249
+ lo = mid + 2;
250
+ }
251
+ }
252
+ return false;
253
+ }
254
+ export function isUnicodeIdentifierStart(code) {
255
+ return lookupInUnicodeMap(code, unicodeESNextIdentifierStart);
256
+ }
257
+ function isUnicodeIdentifierPart(code) {
258
+ return lookupInUnicodeMap(code, unicodeESNextIdentifierPart);
259
+ }
260
+ function makeReverseMap(source) {
261
+ const result = [];
262
+ source.forEach((value, name) => {
263
+ result[value] = name;
264
+ });
265
+ return result;
266
+ }
267
+ const tokenStrings = makeReverseMap(textToToken);
268
+ export function tokenToString(t) {
269
+ return tokenStrings[t];
270
+ }
271
+ export function stringToToken(s) {
272
+ return textToToken.get(s);
273
+ }
274
+ export function characterCodeToRegularExpressionFlag(ch) {
275
+ return charCodeToRegExpFlag.get(ch);
276
+ }
277
+ export function computeLineStarts(text) {
278
+ const result = [];
279
+ let pos = 0;
280
+ let lineStart = 0;
281
+ while (pos < text.length) {
282
+ const ch = text.charCodeAt(pos);
283
+ pos++;
284
+ switch (ch) {
285
+ case CharacterCodes.carriageReturn:
286
+ if (text.charCodeAt(pos) === CharacterCodes.lineFeed) {
287
+ pos++;
288
+ }
289
+ // falls through
290
+ case CharacterCodes.lineFeed:
291
+ result.push(lineStart);
292
+ lineStart = pos;
293
+ break;
294
+ default:
295
+ if (ch > CharacterCodes.maxAsciiCharacter && isLineBreak(ch)) {
296
+ result.push(lineStart);
297
+ lineStart = pos;
298
+ }
299
+ break;
300
+ }
301
+ }
302
+ result.push(lineStart);
303
+ return result;
304
+ }
305
+ export function isWhiteSpaceLike(ch) {
306
+ return isWhiteSpaceSingleLine(ch) || isLineBreak(ch);
307
+ }
308
+ export function isWhiteSpaceSingleLine(ch) {
309
+ return ch === CharacterCodes.space ||
310
+ ch === CharacterCodes.tab ||
311
+ ch === CharacterCodes.verticalTab ||
312
+ ch === CharacterCodes.formFeed ||
313
+ ch === CharacterCodes.nonBreakingSpace ||
314
+ ch === CharacterCodes.nextLine ||
315
+ ch === CharacterCodes.ogham ||
316
+ ch >= CharacterCodes.enQuad && ch <= CharacterCodes.zeroWidthSpace ||
317
+ ch === CharacterCodes.narrowNoBreakSpace ||
318
+ ch === CharacterCodes.mathematicalSpace ||
319
+ ch === CharacterCodes.ideographicSpace ||
320
+ ch === CharacterCodes.byteOrderMark;
321
+ }
322
+ export function isLineBreak(ch) {
323
+ return ch === CharacterCodes.lineFeed ||
324
+ ch === CharacterCodes.carriageReturn ||
325
+ ch === CharacterCodes.lineSeparator ||
326
+ ch === CharacterCodes.paragraphSeparator;
327
+ }
328
+ function isDigit(ch) {
329
+ return ch >= CharacterCodes._0 && ch <= CharacterCodes._9;
330
+ }
331
+ function isHexDigit(ch) {
332
+ return isDigit(ch) || ch >= CharacterCodes.A && ch <= CharacterCodes.F || ch >= CharacterCodes.a && ch <= CharacterCodes.f;
333
+ }
334
+ function isOctalDigit(ch) {
335
+ return ch >= CharacterCodes._0 && ch <= CharacterCodes._7;
336
+ }
337
+ export function couldStartTrivia(text, pos) {
338
+ const ch = text.charCodeAt(pos);
339
+ switch (ch) {
340
+ case CharacterCodes.carriageReturn:
341
+ case CharacterCodes.lineFeed:
342
+ case CharacterCodes.tab:
343
+ case CharacterCodes.verticalTab:
344
+ case CharacterCodes.formFeed:
345
+ case CharacterCodes.space:
346
+ case CharacterCodes.slash:
347
+ case CharacterCodes.lessThan:
348
+ case CharacterCodes.bar:
349
+ case CharacterCodes.equals:
350
+ case CharacterCodes.greaterThan:
351
+ return true;
352
+ case CharacterCodes.hash:
353
+ return pos === 0;
354
+ default:
355
+ return ch > CharacterCodes.maxAsciiCharacter;
356
+ }
357
+ }
358
+ export function skipTrivia(text, pos, stopAfterLineBreak, stopAtComments, inJSDoc) {
359
+ if (pos < 0) {
360
+ return pos;
361
+ }
362
+ let canConsumeStar = false;
363
+ while (true) {
364
+ const ch = text.charCodeAt(pos);
365
+ switch (ch) {
366
+ case CharacterCodes.carriageReturn:
367
+ if (text.charCodeAt(pos + 1) === CharacterCodes.lineFeed) {
368
+ pos++;
369
+ }
370
+ // falls through
371
+ case CharacterCodes.lineFeed:
372
+ pos++;
373
+ if (stopAfterLineBreak) {
374
+ return pos;
375
+ }
376
+ canConsumeStar = !!inJSDoc;
377
+ continue;
378
+ case CharacterCodes.tab:
379
+ case CharacterCodes.verticalTab:
380
+ case CharacterCodes.formFeed:
381
+ case CharacterCodes.space:
382
+ pos++;
383
+ continue;
384
+ case CharacterCodes.slash:
385
+ if (stopAtComments) {
386
+ break;
387
+ }
388
+ if (text.charCodeAt(pos + 1) === CharacterCodes.slash) {
389
+ pos += 2;
390
+ while (pos < text.length) {
391
+ if (isLineBreak(text.charCodeAt(pos))) {
392
+ break;
393
+ }
394
+ pos++;
395
+ }
396
+ canConsumeStar = false;
397
+ continue;
398
+ }
399
+ if (text.charCodeAt(pos + 1) === CharacterCodes.asterisk) {
400
+ pos += 2;
401
+ while (pos < text.length) {
402
+ if (text.charCodeAt(pos) === CharacterCodes.asterisk && text.charCodeAt(pos + 1) === CharacterCodes.slash) {
403
+ pos += 2;
404
+ break;
405
+ }
406
+ pos++;
407
+ }
408
+ canConsumeStar = false;
409
+ continue;
410
+ }
411
+ break;
412
+ case CharacterCodes.lessThan:
413
+ case CharacterCodes.bar:
414
+ case CharacterCodes.equals:
415
+ case CharacterCodes.greaterThan:
416
+ if (isConflictMarkerTrivia(text, pos)) {
417
+ pos = scanConflictMarkerTrivia(text, pos);
418
+ canConsumeStar = false;
419
+ continue;
420
+ }
421
+ break;
422
+ case CharacterCodes.hash:
423
+ if (pos === 0 && isShebangTrivia(text, pos)) {
424
+ pos = scanShebangTrivia(text, pos);
425
+ continue;
426
+ }
427
+ break;
428
+ case CharacterCodes.asterisk:
429
+ if (canConsumeStar) {
430
+ pos++;
431
+ canConsumeStar = false;
432
+ continue;
433
+ }
434
+ break;
435
+ default:
436
+ if (ch > CharacterCodes.maxAsciiCharacter && (isWhiteSpaceLike(ch))) {
437
+ pos++;
438
+ continue;
439
+ }
440
+ break;
441
+ }
442
+ return pos;
443
+ }
444
+ }
445
+ function isConflictMarkerTrivia(text, pos) {
446
+ if (pos >= text.length) {
447
+ return false;
448
+ }
449
+ const ch = text.charCodeAt(pos);
450
+ if (pos === 0 || isLineBreak(text.charCodeAt(pos - 1))) {
451
+ if (ch === CharacterCodes.lessThan || ch === CharacterCodes.greaterThan || ch === CharacterCodes.equals) {
452
+ if (pos + 6 < text.length && text.charCodeAt(pos + 1) === ch && text.charCodeAt(pos + 2) === ch && text.charCodeAt(pos + 3) === ch && text.charCodeAt(pos + 4) === ch && text.charCodeAt(pos + 5) === ch && text.charCodeAt(pos + 6) === ch) {
453
+ return ch === CharacterCodes.equals || text.charCodeAt(pos + 7) === CharacterCodes.space;
454
+ }
455
+ }
456
+ if (ch === CharacterCodes.bar && pos + 6 < text.length && text.charCodeAt(pos + 1) === ch && text.charCodeAt(pos + 2) === ch && text.charCodeAt(pos + 3) === ch && text.charCodeAt(pos + 4) === ch && text.charCodeAt(pos + 5) === ch && text.charCodeAt(pos + 6) === ch) {
457
+ return true;
458
+ }
459
+ }
460
+ return false;
461
+ }
462
+ function scanConflictMarkerTrivia(text, pos) {
463
+ const ch = text.charCodeAt(pos);
464
+ const len = text.length;
465
+ if (ch === CharacterCodes.lessThan || ch === CharacterCodes.greaterThan) {
466
+ while (pos < len && !isLineBreak(text.charCodeAt(pos))) {
467
+ pos++;
468
+ }
469
+ }
470
+ else {
471
+ // Consume everything from the start of a ||||||| or ======= marker to the start
472
+ // of the next ======= or >>>>>>> marker.
473
+ pos += 7; // skip marker
474
+ while (pos < len) {
475
+ const currentChar = text.charCodeAt(pos);
476
+ if ((currentChar === CharacterCodes.equals || currentChar === CharacterCodes.greaterThan) && isConflictMarkerTrivia(text, pos)) {
477
+ break;
478
+ }
479
+ pos++;
480
+ }
481
+ }
482
+ return pos;
483
+ }
484
+ function isShebangTrivia(text, pos) {
485
+ return pos === 0 && text.charCodeAt(0) === CharacterCodes.hash && text.charCodeAt(1) === CharacterCodes.exclamation;
486
+ }
487
+ function scanShebangTrivia(text, pos) {
488
+ pos += 2;
489
+ while (pos < text.length) {
490
+ if (isLineBreak(text.charCodeAt(pos))) {
491
+ break;
492
+ }
493
+ pos++;
494
+ }
495
+ return pos;
496
+ }
497
+ function iterateCommentRanges(reduce, text, pos, trailing, cb, state, initial) {
498
+ let pendingPos;
499
+ let pendingEnd;
500
+ let pendingKind;
501
+ let pendingHasTrailingNewLine;
502
+ let hasPendingCommentRange = false;
503
+ let collecting = trailing;
504
+ let accumulator = initial;
505
+ if (pos === 0) {
506
+ collecting = true;
507
+ const shebang = getShebang(text);
508
+ if (shebang) {
509
+ pos = shebang.length;
510
+ }
511
+ }
512
+ scan: while (pos >= 0 && pos < text.length) {
513
+ const ch = text.charCodeAt(pos);
514
+ switch (ch) {
515
+ case CharacterCodes.carriageReturn:
516
+ if (text.charCodeAt(pos + 1) === CharacterCodes.lineFeed) {
517
+ pos++;
518
+ }
519
+ // falls through
520
+ case CharacterCodes.lineFeed:
521
+ pos++;
522
+ if (trailing) {
523
+ break scan;
524
+ }
525
+ collecting = true;
526
+ if (hasPendingCommentRange) {
527
+ pendingHasTrailingNewLine = true;
528
+ }
529
+ continue;
530
+ case CharacterCodes.tab:
531
+ case CharacterCodes.verticalTab:
532
+ case CharacterCodes.formFeed:
533
+ case CharacterCodes.space:
534
+ pos++;
535
+ continue;
536
+ case CharacterCodes.slash:
537
+ const nextChar = text.charCodeAt(pos + 1);
538
+ let hasTrailingNewLine = false;
539
+ if (nextChar === CharacterCodes.slash || nextChar === CharacterCodes.asterisk) {
540
+ const kind = nextChar === CharacterCodes.slash ? SyntaxKind.SingleLineCommentTrivia : SyntaxKind.MultiLineCommentTrivia;
541
+ const startPos = pos;
542
+ pos += 2;
543
+ if (nextChar === CharacterCodes.slash) {
544
+ while (pos < text.length) {
545
+ if (isLineBreak(text.charCodeAt(pos))) {
546
+ hasTrailingNewLine = true;
547
+ break;
548
+ }
549
+ pos++;
550
+ }
551
+ }
552
+ else {
553
+ while (pos < text.length) {
554
+ if (text.charCodeAt(pos) === CharacterCodes.asterisk && text.charCodeAt(pos + 1) === CharacterCodes.slash) {
555
+ pos += 2;
556
+ break;
557
+ }
558
+ pos++;
559
+ }
560
+ }
561
+ if (collecting) {
562
+ if (hasPendingCommentRange) {
563
+ accumulator = cb(pendingPos, pendingEnd, pendingKind, pendingHasTrailingNewLine, state, accumulator);
564
+ if (!reduce && accumulator) {
565
+ return accumulator;
566
+ }
567
+ }
568
+ pendingPos = startPos;
569
+ pendingEnd = pos;
570
+ pendingKind = kind;
571
+ pendingHasTrailingNewLine = hasTrailingNewLine;
572
+ hasPendingCommentRange = true;
573
+ }
574
+ continue;
575
+ }
576
+ break scan;
577
+ default:
578
+ if (ch > CharacterCodes.maxAsciiCharacter && (isWhiteSpaceLike(ch))) {
579
+ if (hasPendingCommentRange && isLineBreak(ch)) {
580
+ pendingHasTrailingNewLine = true;
581
+ }
582
+ pos++;
583
+ continue;
584
+ }
585
+ break scan;
586
+ }
587
+ }
588
+ if (hasPendingCommentRange) {
589
+ accumulator = cb(pendingPos, pendingEnd, pendingKind, pendingHasTrailingNewLine, state, accumulator);
590
+ }
591
+ return accumulator;
592
+ }
593
+ function appendCommentRange(pos, end, kind, hasTrailingNewLine, _state, comments = []) {
594
+ comments.push({ kind, pos, end, hasTrailingNewLine });
595
+ return comments;
596
+ }
597
+ export function forEachLeadingCommentRange(text, pos, cb, state) {
598
+ return iterateCommentRanges(/*reduce*/ false, text, pos, /*trailing*/ false, cb, state, /*initial*/ undefined);
599
+ }
600
+ export function forEachTrailingCommentRange(text, pos, cb, state) {
601
+ return iterateCommentRanges(/*reduce*/ false, text, pos, /*trailing*/ true, cb, state, /*initial*/ undefined);
602
+ }
603
+ export function reduceEachLeadingCommentRange(text, pos, cb, state, initial) {
604
+ return iterateCommentRanges(/*reduce*/ true, text, pos, /*trailing*/ false, cb, state, initial);
605
+ }
606
+ export function reduceEachTrailingCommentRange(text, pos, cb, state, initial) {
607
+ return iterateCommentRanges(/*reduce*/ true, text, pos, /*trailing*/ true, cb, state, initial);
608
+ }
609
+ export function getLeadingCommentRanges(text, pos) {
610
+ return reduceEachLeadingCommentRange(text, pos, appendCommentRange, /*state*/ undefined, /*initial*/ undefined);
611
+ }
612
+ export function getTrailingCommentRanges(text, pos) {
613
+ return reduceEachTrailingCommentRange(text, pos, appendCommentRange, /*state*/ undefined, /*initial*/ undefined);
614
+ }
615
+ export function getShebang(text) {
616
+ const shebang = /^#!.*/;
617
+ if (isShebangTrivia(text, 0)) {
618
+ const match = shebang.exec(text);
619
+ if (match) {
620
+ return match[0];
621
+ }
622
+ }
623
+ return undefined;
624
+ }
625
+ export function isIdentifierStart(ch, _languageVersion) {
626
+ return ch >= CharacterCodes.A && ch <= CharacterCodes.Z || ch >= CharacterCodes.a && ch <= CharacterCodes.z ||
627
+ ch === CharacterCodes.$ || ch === CharacterCodes._ ||
628
+ ch > CharacterCodes.maxAsciiCharacter && isUnicodeIdentifierStart(ch);
629
+ }
630
+ export function isIdentifierPart(ch, _languageVersion, identifierVariant) {
631
+ return ch >= CharacterCodes.A && ch <= CharacterCodes.Z || ch >= CharacterCodes.a && ch <= CharacterCodes.z ||
632
+ ch >= CharacterCodes._0 && ch <= CharacterCodes._9 || ch === CharacterCodes.$ || ch === CharacterCodes._ ||
633
+ // "-" and ":" are valid in JSX Identifiers
634
+ (identifierVariant === LanguageVariant.JSX ? (ch === CharacterCodes.minus || ch === CharacterCodes.colon) : false) ||
635
+ ch > CharacterCodes.maxAsciiCharacter && isUnicodeIdentifierPart(ch);
636
+ }
637
+ export function isIdentifierText(name, _languageVersion, identifierVariant) {
638
+ let ch = name.codePointAt(0);
639
+ if (!isIdentifierStart(ch)) {
640
+ return false;
641
+ }
642
+ for (let i = charSize(ch); i < name.length; i += charSize(ch)) {
643
+ if (!isIdentifierPart(ch = name.codePointAt(i), undefined, identifierVariant)) {
644
+ return false;
645
+ }
646
+ }
647
+ return true;
648
+ }
649
+ function codePointAt(s, i) {
650
+ return s.codePointAt(i);
651
+ }
652
+ function charSize(ch) {
653
+ if (ch >= 0x10000) {
654
+ return 2;
655
+ }
656
+ if (ch === CharacterCodes.EOF) {
657
+ return 0;
658
+ }
659
+ return 1;
660
+ }
661
+ export function utf16EncodeAsString(codePoint) {
662
+ return String.fromCodePoint(codePoint);
663
+ }
664
+ function parsePseudoBigInt(stringValue) {
665
+ let log2Base;
666
+ switch (stringValue.charCodeAt(1)) {
667
+ case CharacterCodes.b:
668
+ case CharacterCodes.B:
669
+ log2Base = 1;
670
+ break;
671
+ case CharacterCodes.o:
672
+ case CharacterCodes.O:
673
+ log2Base = 3;
674
+ break;
675
+ case CharacterCodes.x:
676
+ case CharacterCodes.X:
677
+ log2Base = 4;
678
+ break;
679
+ default:
680
+ // decimals for now just peel the trailing "n" and return
681
+ const nIndex = stringValue.length - 1;
682
+ let nonZeroStart = 0;
683
+ while (stringValue.charCodeAt(nonZeroStart) === CharacterCodes._0) {
684
+ nonZeroStart++;
685
+ }
686
+ return stringValue.slice(nonZeroStart, nIndex) || "0";
687
+ }
688
+ // exit early for zero
689
+ const startIndex = 2;
690
+ const endIndex = stringValue.length - 1;
691
+ const bitsNeeded = (endIndex - startIndex) * log2Base;
692
+ // Stores the value specified by the string as a LE array of 16-bit integers
693
+ // using Uint16 instead of Uint32 so combining steps can use bitwise operators
694
+ const segments = new Uint16Array((bitsNeeded >>> 4) + (bitsNeeded & 15 ? 1 : 0));
695
+ // Add the digits, one at a time
696
+ for (let i = endIndex - 1, bitOffset = 0; i >= startIndex; i--, bitOffset += log2Base) {
697
+ const segment = bitOffset >>> 4;
698
+ const digitChar = stringValue.charCodeAt(i);
699
+ // Find character value
700
+ const digit = digitChar <= CharacterCodes._9
701
+ ? digitChar - CharacterCodes._0
702
+ : 10 + digitChar - (digitChar <= CharacterCodes.F ? CharacterCodes.A : CharacterCodes.a);
703
+ // Add bits into segment
704
+ const shiftedDigit = digit << (bitOffset & 15);
705
+ segments[segment] |= shiftedDigit;
706
+ // overflow to next segment
707
+ const residual = shiftedDigit >>> 16;
708
+ if (residual)
709
+ segments[segment + 1] |= residual;
710
+ }
711
+ // Repeatedly divide by 10 to find each decimal digit
712
+ let base10Value = "";
713
+ let firstNonzeroSegment = segments.length - 1;
714
+ let segmentsRemaining = true;
715
+ while (segmentsRemaining) {
716
+ let mod10 = 0;
717
+ segmentsRemaining = false;
718
+ for (let segment = firstNonzeroSegment; segment >= 0; segment--) {
719
+ const newSegment = mod10 << 16 | segments[segment];
720
+ const segmentValue = (newSegment / 10) | 0;
721
+ segments[segment] = segmentValue;
722
+ mod10 = newSegment - segmentValue * 10;
723
+ if (segmentValue && !segmentsRemaining) {
724
+ firstNonzeroSegment = segment;
725
+ segmentsRemaining = true;
726
+ }
727
+ }
728
+ base10Value = mod10 + base10Value;
729
+ }
730
+ return base10Value;
731
+ }
732
+ // Creates a scanner over a (possibly unspecified) range of a piece of text.
733
+ export function createScanner(skipTrivia, languageVariant = LanguageVariant.Standard, textInitial, start, length) {
734
+ // Why var? It avoids TDZ checks in the runtime which can be costly.
735
+ // See: https://github.com/microsoft/TypeScript/issues/52924
736
+ /* eslint-disable no-var */
737
+ var text = textInitial;
738
+ // Current position (end position of text of current token)
739
+ var pos;
740
+ // end of text
741
+ var end;
742
+ // Start position of whitespace before current token
743
+ var fullStartPos;
744
+ // Start position of text of current token
745
+ var tokenStart;
746
+ var token;
747
+ var tokenValue;
748
+ var tokenFlags;
749
+ var commentDirectives;
750
+ var skipJsDocLeadingAsterisks = 0;
751
+ setText(text, start, length);
752
+ var scanner = {
753
+ getTokenFullStart: () => fullStartPos,
754
+ getTokenEnd: () => pos,
755
+ getToken: () => token,
756
+ getTokenStart: () => tokenStart,
757
+ getTokenText: () => text.substring(tokenStart, pos),
758
+ getTokenValue: () => tokenValue,
759
+ hasUnicodeEscape: () => (tokenFlags & TokenFlags.UnicodeEscape) !== 0,
760
+ hasExtendedUnicodeEscape: () => (tokenFlags & TokenFlags.ExtendedUnicodeEscape) !== 0,
761
+ hasPrecedingLineBreak: () => (tokenFlags & TokenFlags.PrecedingLineBreak) !== 0,
762
+ hasPrecedingJSDocComment: () => (tokenFlags & TokenFlags.PrecedingJSDocComment) !== 0,
763
+ hasPrecedingJSDocLeadingAsterisks: () => (tokenFlags & TokenFlags.PrecedingJSDocLeadingAsterisks) !== 0,
764
+ hasPrecedingJSDocWithDeprecatedTag: () => (tokenFlags & TokenFlags.PrecedingJSDocWithDeprecated) !== 0,
765
+ hasPrecedingJSDocWithSeeOrLink: () => (tokenFlags & TokenFlags.PrecedingJSDocWithSeeOrLink) !== 0,
766
+ isIdentifier: () => token === SyntaxKind.Identifier || token > SyntaxKind.LastReservedWord,
767
+ isReservedWord: () => token >= SyntaxKind.FirstReservedWord && token <= SyntaxKind.LastReservedWord,
768
+ isUnterminated: () => (tokenFlags & TokenFlags.Unterminated) !== 0,
769
+ getCommentDirectives: () => commentDirectives,
770
+ getNumericLiteralFlags: () => tokenFlags & TokenFlags.NumericLiteralFlags,
771
+ getTokenFlags: () => tokenFlags,
772
+ reScanGreaterToken,
773
+ reScanAsteriskEqualsToken,
774
+ reScanSlashToken,
775
+ reScanTemplateToken,
776
+ reScanTemplateHeadOrNoSubstitutionTemplate,
777
+ scanJsxIdentifier,
778
+ scanJsxAttributeValue,
779
+ reScanJsxAttributeValue,
780
+ reScanJsxToken,
781
+ reScanLessThanToken,
782
+ reScanHashToken,
783
+ reScanQuestionToken,
784
+ reScanInvalidIdentifier,
785
+ scanJsxToken,
786
+ scanJsDocToken,
787
+ scanJSDocCommentTextToken,
788
+ scan,
789
+ getText,
790
+ clearCommentDirectives,
791
+ setText,
792
+ setLanguageVariant,
793
+ resetTokenState,
794
+ setSkipJsDocLeadingAsterisks,
795
+ tryScan,
796
+ lookAhead,
797
+ scanRange,
798
+ };
799
+ /* eslint-enable no-var */
800
+ return scanner;
801
+ function codePointUnchecked(pos) {
802
+ return codePointAt(text, pos);
803
+ }
804
+ function codePointChecked(pos) {
805
+ return pos >= 0 && pos < end ? codePointUnchecked(pos) : CharacterCodes.EOF;
806
+ }
807
+ function charCodeUnchecked(pos) {
808
+ return text.charCodeAt(pos);
809
+ }
810
+ function charCodeChecked(pos) {
811
+ return pos >= 0 && pos < end ? charCodeUnchecked(pos) : CharacterCodes.EOF;
812
+ }
813
+ function scanNumberFragment() {
814
+ let start = pos;
815
+ let allowSeparator = false;
816
+ let isPreviousTokenSeparator = false;
817
+ let result = "";
818
+ while (true) {
819
+ const ch = charCodeUnchecked(pos);
820
+ if (ch === CharacterCodes._) {
821
+ tokenFlags |= TokenFlags.ContainsSeparator;
822
+ if (allowSeparator) {
823
+ allowSeparator = false;
824
+ isPreviousTokenSeparator = true;
825
+ result += text.substring(start, pos);
826
+ }
827
+ else {
828
+ tokenFlags |= TokenFlags.ContainsInvalidSeparator;
829
+ }
830
+ pos++;
831
+ start = pos;
832
+ continue;
833
+ }
834
+ if (isDigit(ch)) {
835
+ allowSeparator = true;
836
+ isPreviousTokenSeparator = false;
837
+ pos++;
838
+ continue;
839
+ }
840
+ break;
841
+ }
842
+ if (charCodeUnchecked(pos - 1) === CharacterCodes._) {
843
+ tokenFlags |= TokenFlags.ContainsInvalidSeparator;
844
+ }
845
+ return result + text.substring(start, pos);
846
+ }
847
+ function scanNumber() {
848
+ let start = pos;
849
+ let mainFragment;
850
+ if (charCodeUnchecked(pos) === CharacterCodes._0) {
851
+ pos++;
852
+ if (charCodeUnchecked(pos) === CharacterCodes._) {
853
+ tokenFlags |= TokenFlags.ContainsSeparator | TokenFlags.ContainsInvalidSeparator;
854
+ pos--;
855
+ mainFragment = scanNumberFragment();
856
+ }
857
+ else if (!scanDigits()) {
858
+ tokenFlags |= TokenFlags.ContainsLeadingZero;
859
+ mainFragment = "" + +tokenValue;
860
+ }
861
+ else if (!tokenValue) {
862
+ mainFragment = "0";
863
+ }
864
+ else {
865
+ tokenValue = "" + parseInt(tokenValue, 8);
866
+ tokenFlags |= TokenFlags.Octal;
867
+ const withMinus = token === SyntaxKind.MinusToken;
868
+ const literal = (withMinus ? "-" : "") + "0o" + (+tokenValue).toString(8);
869
+ if (withMinus)
870
+ start--;
871
+ return SyntaxKind.NumericLiteral;
872
+ }
873
+ }
874
+ else {
875
+ mainFragment = scanNumberFragment();
876
+ }
877
+ let decimalFragment;
878
+ let scientificFragment;
879
+ if (charCodeUnchecked(pos) === CharacterCodes.dot) {
880
+ pos++;
881
+ decimalFragment = scanNumberFragment();
882
+ }
883
+ let end = pos;
884
+ if (charCodeUnchecked(pos) === CharacterCodes.E || charCodeUnchecked(pos) === CharacterCodes.e) {
885
+ pos++;
886
+ tokenFlags |= TokenFlags.Scientific;
887
+ if (charCodeUnchecked(pos) === CharacterCodes.plus || charCodeUnchecked(pos) === CharacterCodes.minus)
888
+ pos++;
889
+ const preNumericPart = pos;
890
+ const finalFragment = scanNumberFragment();
891
+ if (finalFragment) {
892
+ scientificFragment = text.substring(end, preNumericPart) + finalFragment;
893
+ end = pos;
894
+ }
895
+ }
896
+ let result;
897
+ if (tokenFlags & TokenFlags.ContainsSeparator) {
898
+ result = mainFragment;
899
+ if (decimalFragment) {
900
+ result += "." + decimalFragment;
901
+ }
902
+ if (scientificFragment) {
903
+ result += scientificFragment;
904
+ }
905
+ }
906
+ else {
907
+ result = text.substring(start, end);
908
+ }
909
+ if (tokenFlags & TokenFlags.ContainsLeadingZero) {
910
+ tokenValue = "" + +result;
911
+ return SyntaxKind.NumericLiteral;
912
+ }
913
+ if (decimalFragment !== undefined || tokenFlags & TokenFlags.Scientific) {
914
+ checkForIdentifierStartAfterNumericLiteral();
915
+ tokenValue = "" + +result;
916
+ return SyntaxKind.NumericLiteral;
917
+ }
918
+ else {
919
+ tokenValue = result;
920
+ const type = checkBigIntSuffix();
921
+ checkForIdentifierStartAfterNumericLiteral();
922
+ return type;
923
+ }
924
+ }
925
+ function checkForIdentifierStartAfterNumericLiteral() {
926
+ if (!isIdentifierStart(codePointUnchecked(pos))) {
927
+ return;
928
+ }
929
+ const identifierStart = pos;
930
+ const { length } = scanIdentifierParts();
931
+ if (!(length === 1 && text[identifierStart] === "n")) {
932
+ pos = identifierStart;
933
+ }
934
+ }
935
+ function scanDigits() {
936
+ const start = pos;
937
+ let isOctal = true;
938
+ while (isDigit(charCodeChecked(pos))) {
939
+ if (!isOctalDigit(charCodeUnchecked(pos))) {
940
+ isOctal = false;
941
+ }
942
+ pos++;
943
+ }
944
+ tokenValue = text.substring(start, pos);
945
+ return isOctal;
946
+ }
947
+ function scanExactNumberOfHexDigits(count, canHaveSeparators) {
948
+ const valueString = scanHexDigits(count, /*scanAsManyAsPossible*/ false, canHaveSeparators);
949
+ return valueString ? parseInt(valueString, 16) : -1;
950
+ }
951
+ function scanMinimumNumberOfHexDigits(count, canHaveSeparators) {
952
+ return scanHexDigits(count, /*scanAsManyAsPossible*/ true, canHaveSeparators);
953
+ }
954
+ function scanHexDigits(minCount, scanAsManyAsPossible, canHaveSeparators) {
955
+ let valueChars = [];
956
+ let allowSeparator = false;
957
+ while (valueChars.length < minCount || scanAsManyAsPossible) {
958
+ let ch = charCodeUnchecked(pos);
959
+ if (canHaveSeparators && ch === CharacterCodes._) {
960
+ tokenFlags |= TokenFlags.ContainsSeparator;
961
+ if (allowSeparator) {
962
+ allowSeparator = false;
963
+ }
964
+ pos++;
965
+ continue;
966
+ }
967
+ allowSeparator = canHaveSeparators;
968
+ if (ch >= CharacterCodes.A && ch <= CharacterCodes.F) {
969
+ ch += CharacterCodes.a - CharacterCodes.A;
970
+ }
971
+ else if (!((ch >= CharacterCodes._0 && ch <= CharacterCodes._9) ||
972
+ (ch >= CharacterCodes.a && ch <= CharacterCodes.f))) {
973
+ break;
974
+ }
975
+ valueChars.push(ch);
976
+ pos++;
977
+ }
978
+ if (valueChars.length < minCount) {
979
+ valueChars = [];
980
+ }
981
+ return String.fromCharCode(...valueChars);
982
+ }
983
+ function scanString(jsxAttributeString = false) {
984
+ const quote = charCodeUnchecked(pos);
985
+ pos++;
986
+ let result = "";
987
+ let start = pos;
988
+ while (true) {
989
+ if (pos >= end) {
990
+ result += text.substring(start, pos);
991
+ tokenFlags |= TokenFlags.Unterminated;
992
+ break;
993
+ }
994
+ const ch = charCodeUnchecked(pos);
995
+ if (ch === quote) {
996
+ result += text.substring(start, pos);
997
+ pos++;
998
+ break;
999
+ }
1000
+ if (ch === CharacterCodes.backslash && !jsxAttributeString) {
1001
+ result += text.substring(start, pos);
1002
+ result += scanEscapeSequence(EscapeSequenceScanningFlags.String | EscapeSequenceScanningFlags.ReportErrors);
1003
+ start = pos;
1004
+ continue;
1005
+ }
1006
+ if ((ch === CharacterCodes.lineFeed || ch === CharacterCodes.carriageReturn) && !jsxAttributeString) {
1007
+ result += text.substring(start, pos);
1008
+ tokenFlags |= TokenFlags.Unterminated;
1009
+ break;
1010
+ }
1011
+ pos++;
1012
+ }
1013
+ return result;
1014
+ }
1015
+ function scanTemplateAndSetTokenValue(shouldEmitInvalidEscapeError) {
1016
+ const startedWithBacktick = charCodeUnchecked(pos) === CharacterCodes.backtick;
1017
+ pos++;
1018
+ let start = pos;
1019
+ let contents = "";
1020
+ let resultingToken;
1021
+ while (true) {
1022
+ if (pos >= end) {
1023
+ contents += text.substring(start, pos);
1024
+ tokenFlags |= TokenFlags.Unterminated;
1025
+ resultingToken = startedWithBacktick ? SyntaxKind.NoSubstitutionTemplateLiteral : SyntaxKind.TemplateTail;
1026
+ break;
1027
+ }
1028
+ const currChar = charCodeUnchecked(pos);
1029
+ if (currChar === CharacterCodes.backtick) {
1030
+ contents += text.substring(start, pos);
1031
+ pos++;
1032
+ resultingToken = startedWithBacktick ? SyntaxKind.NoSubstitutionTemplateLiteral : SyntaxKind.TemplateTail;
1033
+ break;
1034
+ }
1035
+ if (currChar === CharacterCodes.$ && pos + 1 < end && charCodeUnchecked(pos + 1) === CharacterCodes.openBrace) {
1036
+ contents += text.substring(start, pos);
1037
+ pos += 2;
1038
+ resultingToken = startedWithBacktick ? SyntaxKind.TemplateHead : SyntaxKind.TemplateMiddle;
1039
+ break;
1040
+ }
1041
+ if (currChar === CharacterCodes.backslash) {
1042
+ contents += text.substring(start, pos);
1043
+ contents += scanEscapeSequence(EscapeSequenceScanningFlags.String | (shouldEmitInvalidEscapeError ? EscapeSequenceScanningFlags.ReportErrors : 0));
1044
+ start = pos;
1045
+ continue;
1046
+ }
1047
+ if (currChar === CharacterCodes.carriageReturn) {
1048
+ contents += text.substring(start, pos);
1049
+ pos++;
1050
+ if (pos < end && charCodeUnchecked(pos) === CharacterCodes.lineFeed) {
1051
+ pos++;
1052
+ }
1053
+ contents += "\n";
1054
+ start = pos;
1055
+ continue;
1056
+ }
1057
+ pos++;
1058
+ }
1059
+ tokenValue = contents;
1060
+ return resultingToken;
1061
+ }
1062
+ function scanEscapeSequence(flags) {
1063
+ const start = pos;
1064
+ pos++;
1065
+ if (pos >= end) {
1066
+ return "";
1067
+ }
1068
+ const ch = charCodeUnchecked(pos);
1069
+ pos++;
1070
+ switch (ch) {
1071
+ case CharacterCodes._0:
1072
+ if (pos >= end || !isDigit(charCodeUnchecked(pos))) {
1073
+ return "\0";
1074
+ }
1075
+ // falls through
1076
+ case CharacterCodes._1:
1077
+ case CharacterCodes._2:
1078
+ case CharacterCodes._3:
1079
+ if (pos < end && isOctalDigit(charCodeUnchecked(pos))) {
1080
+ pos++;
1081
+ }
1082
+ // falls through
1083
+ case CharacterCodes._4:
1084
+ case CharacterCodes._5:
1085
+ case CharacterCodes._6:
1086
+ case CharacterCodes._7:
1087
+ if (pos < end && isOctalDigit(charCodeUnchecked(pos))) {
1088
+ pos++;
1089
+ }
1090
+ tokenFlags |= TokenFlags.ContainsInvalidEscape;
1091
+ if (flags & EscapeSequenceScanningFlags.ReportInvalidEscapeErrors) {
1092
+ const code = parseInt(text.substring(start + 1, pos), 8);
1093
+ return String.fromCharCode(code);
1094
+ }
1095
+ return text.substring(start, pos);
1096
+ case CharacterCodes._8:
1097
+ case CharacterCodes._9:
1098
+ tokenFlags |= TokenFlags.ContainsInvalidEscape;
1099
+ if (flags & EscapeSequenceScanningFlags.ReportInvalidEscapeErrors) {
1100
+ return String.fromCharCode(ch);
1101
+ }
1102
+ return text.substring(start, pos);
1103
+ case CharacterCodes.b:
1104
+ return "\b";
1105
+ case CharacterCodes.t:
1106
+ return "\t";
1107
+ case CharacterCodes.n:
1108
+ return "\n";
1109
+ case CharacterCodes.v:
1110
+ return "\v";
1111
+ case CharacterCodes.f:
1112
+ return "\f";
1113
+ case CharacterCodes.r:
1114
+ return "\r";
1115
+ case CharacterCodes.singleQuote:
1116
+ return "'";
1117
+ case CharacterCodes.doubleQuote:
1118
+ return '"';
1119
+ case CharacterCodes.u:
1120
+ if (pos < end && charCodeUnchecked(pos) === CharacterCodes.openBrace) {
1121
+ pos -= 2;
1122
+ const result = scanExtendedUnicodeEscape();
1123
+ if (!(flags & EscapeSequenceScanningFlags.AllowExtendedUnicodeEscape)) {
1124
+ tokenFlags |= TokenFlags.ContainsInvalidEscape;
1125
+ }
1126
+ return result;
1127
+ }
1128
+ // '\uDDDD'
1129
+ for (; pos < start + 6; pos++) {
1130
+ if (!(pos < end && isHexDigit(charCodeUnchecked(pos)))) {
1131
+ tokenFlags |= TokenFlags.ContainsInvalidEscape;
1132
+ return text.substring(start, pos);
1133
+ }
1134
+ }
1135
+ tokenFlags |= TokenFlags.UnicodeEscape;
1136
+ {
1137
+ const escapedValue = parseInt(text.substring(start + 2, pos), 16);
1138
+ const escapedValueString = String.fromCharCode(escapedValue);
1139
+ if (flags & EscapeSequenceScanningFlags.AnyUnicodeMode && escapedValue >= 0xD800 && escapedValue <= 0xDBFF &&
1140
+ pos + 6 < end && text.substring(pos, pos + 2) === "\\u" && charCodeUnchecked(pos + 2) !== CharacterCodes.openBrace) {
1141
+ const nextStart = pos;
1142
+ let nextPos = pos + 2;
1143
+ for (; nextPos < nextStart + 6; nextPos++) {
1144
+ if (!isHexDigit(charCodeUnchecked(nextPos))) {
1145
+ return escapedValueString;
1146
+ }
1147
+ }
1148
+ const nextEscapedValue = parseInt(text.substring(nextStart + 2, nextPos), 16);
1149
+ if (nextEscapedValue >= 0xDC00 && nextEscapedValue <= 0xDFFF) {
1150
+ pos = nextPos;
1151
+ return escapedValueString + String.fromCharCode(nextEscapedValue);
1152
+ }
1153
+ }
1154
+ return escapedValueString;
1155
+ }
1156
+ case CharacterCodes.x:
1157
+ for (; pos < start + 4; pos++) {
1158
+ if (!(pos < end && isHexDigit(charCodeUnchecked(pos)))) {
1159
+ tokenFlags |= TokenFlags.ContainsInvalidEscape;
1160
+ return text.substring(start, pos);
1161
+ }
1162
+ }
1163
+ tokenFlags |= TokenFlags.HexEscape;
1164
+ return String.fromCharCode(parseInt(text.substring(start + 2, pos), 16));
1165
+ case CharacterCodes.carriageReturn:
1166
+ if (pos < end && charCodeUnchecked(pos) === CharacterCodes.lineFeed) {
1167
+ pos++;
1168
+ }
1169
+ // falls through
1170
+ case CharacterCodes.lineFeed:
1171
+ case CharacterCodes.lineSeparator:
1172
+ case CharacterCodes.paragraphSeparator:
1173
+ return "";
1174
+ default:
1175
+ return String.fromCharCode(ch);
1176
+ }
1177
+ }
1178
+ function scanExtendedUnicodeEscape() {
1179
+ const start = pos;
1180
+ pos += 3;
1181
+ const escapedValueString = scanMinimumNumberOfHexDigits(1, /*canHaveSeparators*/ false);
1182
+ const escapedValue = escapedValueString ? parseInt(escapedValueString, 16) : -1;
1183
+ let isInvalidExtendedEscape = false;
1184
+ if (escapedValue < 0) {
1185
+ isInvalidExtendedEscape = true;
1186
+ }
1187
+ else if (escapedValue > 0x10FFFF) {
1188
+ isInvalidExtendedEscape = true;
1189
+ }
1190
+ if (pos >= end) {
1191
+ isInvalidExtendedEscape = true;
1192
+ }
1193
+ else if (charCodeUnchecked(pos) === CharacterCodes.closeBrace) {
1194
+ pos++;
1195
+ }
1196
+ else {
1197
+ isInvalidExtendedEscape = true;
1198
+ }
1199
+ if (isInvalidExtendedEscape) {
1200
+ tokenFlags |= TokenFlags.ContainsInvalidEscape;
1201
+ return text.substring(start, pos);
1202
+ }
1203
+ tokenFlags |= TokenFlags.ExtendedUnicodeEscape;
1204
+ return utf16EncodeAsString(escapedValue);
1205
+ }
1206
+ function peekUnicodeEscape() {
1207
+ if (pos + 5 < end && charCodeUnchecked(pos + 1) === CharacterCodes.u) {
1208
+ const start = pos;
1209
+ pos += 2;
1210
+ const value = scanExactNumberOfHexDigits(4, /*canHaveSeparators*/ false);
1211
+ pos = start;
1212
+ return value;
1213
+ }
1214
+ return -1;
1215
+ }
1216
+ function peekExtendedUnicodeEscape() {
1217
+ if (codePointUnchecked(pos + 1) === CharacterCodes.u && codePointUnchecked(pos + 2) === CharacterCodes.openBrace) {
1218
+ const start = pos;
1219
+ pos += 3;
1220
+ const escapedValueString = scanMinimumNumberOfHexDigits(1, /*canHaveSeparators*/ false);
1221
+ const escapedValue = escapedValueString ? parseInt(escapedValueString, 16) : -1;
1222
+ pos = start;
1223
+ return escapedValue;
1224
+ }
1225
+ return -1;
1226
+ }
1227
+ function scanIdentifierParts() {
1228
+ let result = "";
1229
+ let start = pos;
1230
+ while (pos < end) {
1231
+ let ch = codePointUnchecked(pos);
1232
+ if (isIdentifierPart(ch)) {
1233
+ pos += charSize(ch);
1234
+ }
1235
+ else if (ch === CharacterCodes.backslash) {
1236
+ ch = peekExtendedUnicodeEscape();
1237
+ if (ch >= 0 && isIdentifierPart(ch)) {
1238
+ result += scanExtendedUnicodeEscape();
1239
+ start = pos;
1240
+ continue;
1241
+ }
1242
+ ch = peekUnicodeEscape();
1243
+ if (!(ch >= 0 && isIdentifierPart(ch))) {
1244
+ break;
1245
+ }
1246
+ tokenFlags |= TokenFlags.UnicodeEscape;
1247
+ result += text.substring(start, pos);
1248
+ result += utf16EncodeAsString(ch);
1249
+ pos += 6;
1250
+ start = pos;
1251
+ }
1252
+ else {
1253
+ break;
1254
+ }
1255
+ }
1256
+ result += text.substring(start, pos);
1257
+ return result;
1258
+ }
1259
+ function getIdentifierToken() {
1260
+ const len = tokenValue.length;
1261
+ if (len >= 2 && len <= 12) {
1262
+ const ch = tokenValue.charCodeAt(0);
1263
+ if (ch >= CharacterCodes.a && ch <= CharacterCodes.z) {
1264
+ const keyword = textToKeyword.get(tokenValue);
1265
+ if (keyword !== undefined) {
1266
+ return token = keyword;
1267
+ }
1268
+ }
1269
+ }
1270
+ return token = SyntaxKind.Identifier;
1271
+ }
1272
+ function scanBinaryOrOctalDigits(base) {
1273
+ let value = "";
1274
+ let separatorAllowed = false;
1275
+ let isPreviousTokenSeparator = false;
1276
+ while (true) {
1277
+ const ch = charCodeUnchecked(pos);
1278
+ if (ch === CharacterCodes._) {
1279
+ tokenFlags |= TokenFlags.ContainsSeparator;
1280
+ if (separatorAllowed) {
1281
+ separatorAllowed = false;
1282
+ isPreviousTokenSeparator = true;
1283
+ }
1284
+ pos++;
1285
+ continue;
1286
+ }
1287
+ separatorAllowed = true;
1288
+ if (!isDigit(ch) || ch - CharacterCodes._0 >= base) {
1289
+ break;
1290
+ }
1291
+ value += text[pos];
1292
+ pos++;
1293
+ isPreviousTokenSeparator = false;
1294
+ }
1295
+ return value;
1296
+ }
1297
+ function checkBigIntSuffix() {
1298
+ if (charCodeUnchecked(pos) === CharacterCodes.n) {
1299
+ tokenValue += "n";
1300
+ if (tokenFlags & TokenFlags.BinaryOrOctalSpecifier) {
1301
+ tokenValue = parsePseudoBigInt(tokenValue) + "n";
1302
+ }
1303
+ pos++;
1304
+ return SyntaxKind.BigIntLiteral;
1305
+ }
1306
+ else {
1307
+ const numericValue = tokenFlags & TokenFlags.BinarySpecifier
1308
+ ? parseInt(tokenValue.slice(2), 2)
1309
+ : tokenFlags & TokenFlags.OctalSpecifier
1310
+ ? parseInt(tokenValue.slice(2), 8)
1311
+ : +tokenValue;
1312
+ tokenValue = "" + numericValue;
1313
+ return SyntaxKind.NumericLiteral;
1314
+ }
1315
+ }
1316
+ function scan() {
1317
+ fullStartPos = pos;
1318
+ tokenFlags = TokenFlags.None;
1319
+ while (true) {
1320
+ tokenStart = pos;
1321
+ if (pos >= end) {
1322
+ return token = SyntaxKind.EndOfFile;
1323
+ }
1324
+ const ch = codePointUnchecked(pos);
1325
+ if (pos === 0) {
1326
+ if (ch === CharacterCodes.hash && isShebangTrivia(text, pos)) {
1327
+ pos = scanShebangTrivia(text, pos);
1328
+ if (skipTrivia) {
1329
+ continue;
1330
+ }
1331
+ else {
1332
+ return token = SyntaxKind.Unknown;
1333
+ }
1334
+ }
1335
+ }
1336
+ switch (ch) {
1337
+ case CharacterCodes.lineFeed:
1338
+ case CharacterCodes.carriageReturn:
1339
+ tokenFlags |= TokenFlags.PrecedingLineBreak;
1340
+ if (skipTrivia) {
1341
+ pos++;
1342
+ continue;
1343
+ }
1344
+ else {
1345
+ if (ch === CharacterCodes.carriageReturn && pos + 1 < end && charCodeUnchecked(pos + 1) === CharacterCodes.lineFeed) {
1346
+ pos += 2;
1347
+ }
1348
+ else {
1349
+ pos++;
1350
+ }
1351
+ return token = SyntaxKind.NewLineTrivia;
1352
+ }
1353
+ case CharacterCodes.tab:
1354
+ case CharacterCodes.verticalTab:
1355
+ case CharacterCodes.formFeed:
1356
+ case CharacterCodes.space:
1357
+ case CharacterCodes.nonBreakingSpace:
1358
+ case CharacterCodes.ogham:
1359
+ case CharacterCodes.enQuad:
1360
+ case CharacterCodes.emQuad:
1361
+ case CharacterCodes.enSpace:
1362
+ case CharacterCodes.emSpace:
1363
+ case CharacterCodes.threePerEmSpace:
1364
+ case CharacterCodes.fourPerEmSpace:
1365
+ case CharacterCodes.sixPerEmSpace:
1366
+ case CharacterCodes.figureSpace:
1367
+ case CharacterCodes.punctuationSpace:
1368
+ case CharacterCodes.thinSpace:
1369
+ case CharacterCodes.hairSpace:
1370
+ case CharacterCodes.zeroWidthSpace:
1371
+ case CharacterCodes.narrowNoBreakSpace:
1372
+ case CharacterCodes.mathematicalSpace:
1373
+ case CharacterCodes.ideographicSpace:
1374
+ case CharacterCodes.byteOrderMark:
1375
+ if (skipTrivia) {
1376
+ pos++;
1377
+ continue;
1378
+ }
1379
+ else {
1380
+ while (pos < end && isWhiteSpaceSingleLine(charCodeUnchecked(pos))) {
1381
+ pos++;
1382
+ }
1383
+ return token = SyntaxKind.WhitespaceTrivia;
1384
+ }
1385
+ case CharacterCodes.exclamation:
1386
+ if (charCodeUnchecked(pos + 1) === CharacterCodes.equals) {
1387
+ if (charCodeUnchecked(pos + 2) === CharacterCodes.equals) {
1388
+ return pos += 3, token = SyntaxKind.ExclamationEqualsEqualsToken;
1389
+ }
1390
+ return pos += 2, token = SyntaxKind.ExclamationEqualsToken;
1391
+ }
1392
+ pos++;
1393
+ return token = SyntaxKind.ExclamationToken;
1394
+ case CharacterCodes.doubleQuote:
1395
+ case CharacterCodes.singleQuote:
1396
+ tokenValue = scanString();
1397
+ return token = SyntaxKind.StringLiteral;
1398
+ case CharacterCodes.backtick:
1399
+ return token = scanTemplateAndSetTokenValue(/*shouldEmitInvalidEscapeError*/ false);
1400
+ case CharacterCodes.percent:
1401
+ if (charCodeUnchecked(pos + 1) === CharacterCodes.equals) {
1402
+ return pos += 2, token = SyntaxKind.PercentEqualsToken;
1403
+ }
1404
+ pos++;
1405
+ return token = SyntaxKind.PercentToken;
1406
+ case CharacterCodes.ampersand:
1407
+ if (charCodeUnchecked(pos + 1) === CharacterCodes.ampersand) {
1408
+ if (charCodeUnchecked(pos + 2) === CharacterCodes.equals) {
1409
+ return pos += 3, token = SyntaxKind.AmpersandAmpersandEqualsToken;
1410
+ }
1411
+ return pos += 2, token = SyntaxKind.AmpersandAmpersandToken;
1412
+ }
1413
+ if (charCodeUnchecked(pos + 1) === CharacterCodes.equals) {
1414
+ return pos += 2, token = SyntaxKind.AmpersandEqualsToken;
1415
+ }
1416
+ pos++;
1417
+ return token = SyntaxKind.AmpersandToken;
1418
+ case CharacterCodes.openParen:
1419
+ pos++;
1420
+ return token = SyntaxKind.OpenParenToken;
1421
+ case CharacterCodes.closeParen:
1422
+ pos++;
1423
+ return token = SyntaxKind.CloseParenToken;
1424
+ case CharacterCodes.asterisk:
1425
+ if (charCodeUnchecked(pos + 1) === CharacterCodes.equals) {
1426
+ return pos += 2, token = SyntaxKind.AsteriskEqualsToken;
1427
+ }
1428
+ if (charCodeUnchecked(pos + 1) === CharacterCodes.asterisk) {
1429
+ if (charCodeUnchecked(pos + 2) === CharacterCodes.equals) {
1430
+ return pos += 3, token = SyntaxKind.AsteriskAsteriskEqualsToken;
1431
+ }
1432
+ return pos += 2, token = SyntaxKind.AsteriskAsteriskToken;
1433
+ }
1434
+ pos++;
1435
+ if (skipJsDocLeadingAsterisks &&
1436
+ (tokenFlags & TokenFlags.PrecedingJSDocLeadingAsterisks) === 0 &&
1437
+ (tokenFlags & TokenFlags.PrecedingLineBreak)) {
1438
+ tokenFlags |= TokenFlags.PrecedingJSDocLeadingAsterisks;
1439
+ continue;
1440
+ }
1441
+ return token = SyntaxKind.AsteriskToken;
1442
+ case CharacterCodes.plus:
1443
+ if (charCodeUnchecked(pos + 1) === CharacterCodes.plus) {
1444
+ return pos += 2, token = SyntaxKind.PlusPlusToken;
1445
+ }
1446
+ if (charCodeUnchecked(pos + 1) === CharacterCodes.equals) {
1447
+ return pos += 2, token = SyntaxKind.PlusEqualsToken;
1448
+ }
1449
+ pos++;
1450
+ return token = SyntaxKind.PlusToken;
1451
+ case CharacterCodes.comma:
1452
+ pos++;
1453
+ return token = SyntaxKind.CommaToken;
1454
+ case CharacterCodes.minus:
1455
+ if (charCodeUnchecked(pos + 1) === CharacterCodes.minus) {
1456
+ return pos += 2, token = SyntaxKind.MinusMinusToken;
1457
+ }
1458
+ if (charCodeUnchecked(pos + 1) === CharacterCodes.equals) {
1459
+ return pos += 2, token = SyntaxKind.MinusEqualsToken;
1460
+ }
1461
+ pos++;
1462
+ return token = SyntaxKind.MinusToken;
1463
+ case CharacterCodes.dot:
1464
+ if (isDigit(charCodeUnchecked(pos + 1))) {
1465
+ scanNumber();
1466
+ return token = SyntaxKind.NumericLiteral;
1467
+ }
1468
+ if (charCodeUnchecked(pos + 1) === CharacterCodes.dot && charCodeUnchecked(pos + 2) === CharacterCodes.dot) {
1469
+ return pos += 3, token = SyntaxKind.DotDotDotToken;
1470
+ }
1471
+ pos++;
1472
+ return token = SyntaxKind.DotToken;
1473
+ case CharacterCodes.slash:
1474
+ // Single-line comment
1475
+ if (charCodeUnchecked(pos + 1) === CharacterCodes.slash) {
1476
+ pos += 2;
1477
+ while (pos < end) {
1478
+ if (isLineBreak(charCodeUnchecked(pos))) {
1479
+ break;
1480
+ }
1481
+ pos++;
1482
+ }
1483
+ commentDirectives = appendIfCommentDirective(commentDirectives, text.slice(tokenStart, pos), commentDirectiveRegExSingleLine, tokenStart);
1484
+ if (skipTrivia) {
1485
+ continue;
1486
+ }
1487
+ else {
1488
+ return token = SyntaxKind.SingleLineCommentTrivia;
1489
+ }
1490
+ }
1491
+ // Multi-line comment
1492
+ if (charCodeUnchecked(pos + 1) === CharacterCodes.asterisk) {
1493
+ pos += 2;
1494
+ const isJSDoc = charCodeUnchecked(pos) === CharacterCodes.asterisk && charCodeUnchecked(pos + 1) !== CharacterCodes.slash;
1495
+ let commentClosed = false;
1496
+ let lastLineStart = tokenStart;
1497
+ while (pos < end) {
1498
+ const ch = charCodeUnchecked(pos);
1499
+ if (ch === CharacterCodes.asterisk && charCodeUnchecked(pos + 1) === CharacterCodes.slash) {
1500
+ pos += 2;
1501
+ commentClosed = true;
1502
+ break;
1503
+ }
1504
+ pos++;
1505
+ if (isLineBreak(ch)) {
1506
+ lastLineStart = pos;
1507
+ tokenFlags |= TokenFlags.PrecedingLineBreak;
1508
+ }
1509
+ }
1510
+ if (isJSDoc) {
1511
+ tokenFlags |= TokenFlags.PrecedingJSDocComment;
1512
+ tokenFlags = scanJSDocCommentForTags(text.slice(tokenStart, pos), tokenFlags);
1513
+ }
1514
+ commentDirectives = appendIfCommentDirective(commentDirectives, text.slice(lastLineStart, pos), commentDirectiveRegExMultiLine, lastLineStart);
1515
+ if (skipTrivia) {
1516
+ continue;
1517
+ }
1518
+ else {
1519
+ if (!commentClosed) {
1520
+ tokenFlags |= TokenFlags.Unterminated;
1521
+ }
1522
+ return token = SyntaxKind.MultiLineCommentTrivia;
1523
+ }
1524
+ }
1525
+ if (charCodeUnchecked(pos + 1) === CharacterCodes.equals) {
1526
+ return pos += 2, token = SyntaxKind.SlashEqualsToken;
1527
+ }
1528
+ pos++;
1529
+ return token = SyntaxKind.SlashToken;
1530
+ case CharacterCodes._0:
1531
+ if (pos + 2 < end && (charCodeUnchecked(pos + 1) === CharacterCodes.X || charCodeUnchecked(pos + 1) === CharacterCodes.x)) {
1532
+ pos += 2;
1533
+ tokenValue = scanMinimumNumberOfHexDigits(1, /*canHaveSeparators*/ true);
1534
+ if (!tokenValue) {
1535
+ tokenValue = "0";
1536
+ }
1537
+ tokenValue = "0x" + tokenValue;
1538
+ tokenFlags |= TokenFlags.HexSpecifier;
1539
+ return token = checkBigIntSuffix();
1540
+ }
1541
+ else if (pos + 2 < end && (charCodeUnchecked(pos + 1) === CharacterCodes.B || charCodeUnchecked(pos + 1) === CharacterCodes.b)) {
1542
+ pos += 2;
1543
+ tokenValue = scanBinaryOrOctalDigits(2);
1544
+ if (!tokenValue) {
1545
+ tokenValue = "0";
1546
+ }
1547
+ tokenValue = "0b" + tokenValue;
1548
+ tokenFlags |= TokenFlags.BinarySpecifier;
1549
+ return token = checkBigIntSuffix();
1550
+ }
1551
+ else if (pos + 2 < end && (charCodeUnchecked(pos + 1) === CharacterCodes.O || charCodeUnchecked(pos + 1) === CharacterCodes.o)) {
1552
+ pos += 2;
1553
+ tokenValue = scanBinaryOrOctalDigits(8);
1554
+ if (!tokenValue) {
1555
+ tokenValue = "0";
1556
+ }
1557
+ tokenValue = "0o" + tokenValue;
1558
+ tokenFlags |= TokenFlags.OctalSpecifier;
1559
+ return token = checkBigIntSuffix();
1560
+ }
1561
+ // falls through
1562
+ case CharacterCodes._1:
1563
+ case CharacterCodes._2:
1564
+ case CharacterCodes._3:
1565
+ case CharacterCodes._4:
1566
+ case CharacterCodes._5:
1567
+ case CharacterCodes._6:
1568
+ case CharacterCodes._7:
1569
+ case CharacterCodes._8:
1570
+ case CharacterCodes._9:
1571
+ return token = scanNumber();
1572
+ case CharacterCodes.colon:
1573
+ pos++;
1574
+ return token = SyntaxKind.ColonToken;
1575
+ case CharacterCodes.semicolon:
1576
+ pos++;
1577
+ return token = SyntaxKind.SemicolonToken;
1578
+ case CharacterCodes.lessThan:
1579
+ if (isConflictMarkerTrivia(text, pos)) {
1580
+ pos = scanConflictMarkerTrivia(text, pos);
1581
+ if (skipTrivia) {
1582
+ continue;
1583
+ }
1584
+ else {
1585
+ return token = SyntaxKind.ConflictMarkerTrivia;
1586
+ }
1587
+ }
1588
+ if (charCodeUnchecked(pos + 1) === CharacterCodes.lessThan) {
1589
+ if (charCodeUnchecked(pos + 2) === CharacterCodes.equals) {
1590
+ return pos += 3, token = SyntaxKind.LessThanLessThanEqualsToken;
1591
+ }
1592
+ return pos += 2, token = SyntaxKind.LessThanLessThanToken;
1593
+ }
1594
+ if (charCodeUnchecked(pos + 1) === CharacterCodes.equals) {
1595
+ return pos += 2, token = SyntaxKind.LessThanEqualsToken;
1596
+ }
1597
+ if (languageVariant === LanguageVariant.JSX &&
1598
+ charCodeUnchecked(pos + 1) === CharacterCodes.slash &&
1599
+ charCodeUnchecked(pos + 2) !== CharacterCodes.asterisk) {
1600
+ return pos += 2, token = SyntaxKind.LessThanSlashToken;
1601
+ }
1602
+ pos++;
1603
+ return token = SyntaxKind.LessThanToken;
1604
+ case CharacterCodes.equals:
1605
+ if (isConflictMarkerTrivia(text, pos)) {
1606
+ pos = scanConflictMarkerTrivia(text, pos);
1607
+ if (skipTrivia) {
1608
+ continue;
1609
+ }
1610
+ else {
1611
+ return token = SyntaxKind.ConflictMarkerTrivia;
1612
+ }
1613
+ }
1614
+ if (charCodeUnchecked(pos + 1) === CharacterCodes.equals) {
1615
+ if (charCodeUnchecked(pos + 2) === CharacterCodes.equals) {
1616
+ return pos += 3, token = SyntaxKind.EqualsEqualsEqualsToken;
1617
+ }
1618
+ return pos += 2, token = SyntaxKind.EqualsEqualsToken;
1619
+ }
1620
+ if (charCodeUnchecked(pos + 1) === CharacterCodes.greaterThan) {
1621
+ return pos += 2, token = SyntaxKind.EqualsGreaterThanToken;
1622
+ }
1623
+ pos++;
1624
+ return token = SyntaxKind.EqualsToken;
1625
+ case CharacterCodes.greaterThan:
1626
+ if (isConflictMarkerTrivia(text, pos)) {
1627
+ pos = scanConflictMarkerTrivia(text, pos);
1628
+ if (skipTrivia) {
1629
+ continue;
1630
+ }
1631
+ else {
1632
+ return token = SyntaxKind.ConflictMarkerTrivia;
1633
+ }
1634
+ }
1635
+ pos++;
1636
+ return token = SyntaxKind.GreaterThanToken;
1637
+ case CharacterCodes.question:
1638
+ if (charCodeUnchecked(pos + 1) === CharacterCodes.dot && !isDigit(charCodeUnchecked(pos + 2))) {
1639
+ return pos += 2, token = SyntaxKind.QuestionDotToken;
1640
+ }
1641
+ if (charCodeUnchecked(pos + 1) === CharacterCodes.question) {
1642
+ if (charCodeUnchecked(pos + 2) === CharacterCodes.equals) {
1643
+ return pos += 3, token = SyntaxKind.QuestionQuestionEqualsToken;
1644
+ }
1645
+ return pos += 2, token = SyntaxKind.QuestionQuestionToken;
1646
+ }
1647
+ pos++;
1648
+ return token = SyntaxKind.QuestionToken;
1649
+ case CharacterCodes.openBracket:
1650
+ pos++;
1651
+ return token = SyntaxKind.OpenBracketToken;
1652
+ case CharacterCodes.closeBracket:
1653
+ pos++;
1654
+ return token = SyntaxKind.CloseBracketToken;
1655
+ case CharacterCodes.caret:
1656
+ if (charCodeUnchecked(pos + 1) === CharacterCodes.equals) {
1657
+ return pos += 2, token = SyntaxKind.CaretEqualsToken;
1658
+ }
1659
+ pos++;
1660
+ return token = SyntaxKind.CaretToken;
1661
+ case CharacterCodes.openBrace:
1662
+ pos++;
1663
+ return token = SyntaxKind.OpenBraceToken;
1664
+ case CharacterCodes.bar:
1665
+ if (isConflictMarkerTrivia(text, pos)) {
1666
+ pos = scanConflictMarkerTrivia(text, pos);
1667
+ if (skipTrivia) {
1668
+ continue;
1669
+ }
1670
+ else {
1671
+ return token = SyntaxKind.ConflictMarkerTrivia;
1672
+ }
1673
+ }
1674
+ if (charCodeUnchecked(pos + 1) === CharacterCodes.bar) {
1675
+ if (charCodeUnchecked(pos + 2) === CharacterCodes.equals) {
1676
+ return pos += 3, token = SyntaxKind.BarBarEqualsToken;
1677
+ }
1678
+ return pos += 2, token = SyntaxKind.BarBarToken;
1679
+ }
1680
+ if (charCodeUnchecked(pos + 1) === CharacterCodes.equals) {
1681
+ return pos += 2, token = SyntaxKind.BarEqualsToken;
1682
+ }
1683
+ pos++;
1684
+ return token = SyntaxKind.BarToken;
1685
+ case CharacterCodes.closeBrace:
1686
+ pos++;
1687
+ return token = SyntaxKind.CloseBraceToken;
1688
+ case CharacterCodes.tilde:
1689
+ pos++;
1690
+ return token = SyntaxKind.TildeToken;
1691
+ case CharacterCodes.at:
1692
+ pos++;
1693
+ return token = SyntaxKind.AtToken;
1694
+ case CharacterCodes.backslash: {
1695
+ const extendedCookedChar = peekExtendedUnicodeEscape();
1696
+ if (extendedCookedChar >= 0 && isIdentifierStart(extendedCookedChar)) {
1697
+ tokenValue = scanExtendedUnicodeEscape() + scanIdentifierParts();
1698
+ return token = getIdentifierToken();
1699
+ }
1700
+ const cookedChar = peekUnicodeEscape();
1701
+ if (cookedChar >= 0 && isIdentifierStart(cookedChar)) {
1702
+ pos += 6;
1703
+ tokenFlags |= TokenFlags.UnicodeEscape;
1704
+ tokenValue = String.fromCharCode(cookedChar) + scanIdentifierParts();
1705
+ return token = getIdentifierToken();
1706
+ }
1707
+ pos++;
1708
+ return token = SyntaxKind.Unknown;
1709
+ }
1710
+ case CharacterCodes.hash:
1711
+ if (pos !== 0 && text[pos + 1] === "!") {
1712
+ pos++;
1713
+ return token = SyntaxKind.Unknown;
1714
+ }
1715
+ {
1716
+ const charAfterHash = codePointUnchecked(pos + 1);
1717
+ if (charAfterHash === CharacterCodes.backslash) {
1718
+ pos++;
1719
+ const extendedCookedChar = peekExtendedUnicodeEscape();
1720
+ if (extendedCookedChar >= 0 && isIdentifierStart(extendedCookedChar)) {
1721
+ tokenValue = "#" + scanExtendedUnicodeEscape() + scanIdentifierParts();
1722
+ return token = SyntaxKind.PrivateIdentifier;
1723
+ }
1724
+ const cookedChar = peekUnicodeEscape();
1725
+ if (cookedChar >= 0 && isIdentifierStart(cookedChar)) {
1726
+ pos += 6;
1727
+ tokenFlags |= TokenFlags.UnicodeEscape;
1728
+ tokenValue = "#" + String.fromCharCode(cookedChar) + scanIdentifierParts();
1729
+ return token = SyntaxKind.PrivateIdentifier;
1730
+ }
1731
+ pos--;
1732
+ }
1733
+ if (isIdentifierStart(charAfterHash)) {
1734
+ pos++;
1735
+ scanIdentifier(charAfterHash);
1736
+ }
1737
+ else {
1738
+ tokenValue = "#";
1739
+ }
1740
+ return token = SyntaxKind.PrivateIdentifier;
1741
+ }
1742
+ case CharacterCodes.replacementCharacter:
1743
+ pos = end;
1744
+ return token = SyntaxKind.NonTextFileMarkerTrivia;
1745
+ default: {
1746
+ const identifierKind = scanIdentifier(ch);
1747
+ if (identifierKind) {
1748
+ return token = identifierKind;
1749
+ }
1750
+ else if (isWhiteSpaceSingleLine(ch)) {
1751
+ pos += charSize(ch);
1752
+ continue;
1753
+ }
1754
+ else if (isLineBreak(ch)) {
1755
+ tokenFlags |= TokenFlags.PrecedingLineBreak;
1756
+ pos += charSize(ch);
1757
+ continue;
1758
+ }
1759
+ const size = charSize(ch);
1760
+ pos += size;
1761
+ return token = SyntaxKind.Unknown;
1762
+ }
1763
+ }
1764
+ }
1765
+ }
1766
+ function reScanInvalidIdentifier() {
1767
+ pos = tokenStart = fullStartPos;
1768
+ tokenFlags = 0;
1769
+ const ch = codePointUnchecked(pos);
1770
+ const identifierKind = scanIdentifier(ch);
1771
+ if (identifierKind) {
1772
+ return token = identifierKind;
1773
+ }
1774
+ pos += charSize(ch);
1775
+ return token; // Still `SyntaxKind.Unknown`
1776
+ }
1777
+ function scanIdentifier(startCharacter) {
1778
+ let ch = startCharacter;
1779
+ if (isIdentifierStart(ch)) {
1780
+ pos += charSize(ch);
1781
+ while (pos < end && isIdentifierPart(ch = codePointUnchecked(pos)))
1782
+ pos += charSize(ch);
1783
+ tokenValue = text.substring(tokenStart, pos);
1784
+ if (ch === CharacterCodes.backslash) {
1785
+ tokenValue += scanIdentifierParts();
1786
+ }
1787
+ return getIdentifierToken();
1788
+ }
1789
+ }
1790
+ function reScanGreaterToken() {
1791
+ if (token === SyntaxKind.GreaterThanToken) {
1792
+ if (charCodeUnchecked(pos) === CharacterCodes.greaterThan) {
1793
+ if (charCodeUnchecked(pos + 1) === CharacterCodes.greaterThan) {
1794
+ if (charCodeUnchecked(pos + 2) === CharacterCodes.equals) {
1795
+ return pos += 3, token = SyntaxKind.GreaterThanGreaterThanGreaterThanEqualsToken;
1796
+ }
1797
+ return pos += 2, token = SyntaxKind.GreaterThanGreaterThanGreaterThanToken;
1798
+ }
1799
+ if (charCodeUnchecked(pos + 1) === CharacterCodes.equals) {
1800
+ return pos += 2, token = SyntaxKind.GreaterThanGreaterThanEqualsToken;
1801
+ }
1802
+ pos++;
1803
+ return token = SyntaxKind.GreaterThanGreaterThanToken;
1804
+ }
1805
+ if (charCodeUnchecked(pos) === CharacterCodes.equals) {
1806
+ pos++;
1807
+ return token = SyntaxKind.GreaterThanEqualsToken;
1808
+ }
1809
+ }
1810
+ return token;
1811
+ }
1812
+ function reScanAsteriskEqualsToken() {
1813
+ pos = tokenStart + 1;
1814
+ return token = SyntaxKind.EqualsToken;
1815
+ }
1816
+ function reScanSlashToken() {
1817
+ if (token === SyntaxKind.SlashToken || token === SyntaxKind.SlashEqualsToken) {
1818
+ const startOfRegExpBody = tokenStart + 1;
1819
+ pos = startOfRegExpBody;
1820
+ let inEscape = false;
1821
+ let inCharacterClass = false;
1822
+ while (true) {
1823
+ const ch = charCodeChecked(pos);
1824
+ if (ch === CharacterCodes.EOF || isLineBreak(ch)) {
1825
+ tokenFlags |= TokenFlags.Unterminated;
1826
+ break;
1827
+ }
1828
+ if (inEscape) {
1829
+ inEscape = false;
1830
+ }
1831
+ else if (ch === CharacterCodes.slash && !inCharacterClass) {
1832
+ break;
1833
+ }
1834
+ else if (ch === CharacterCodes.openBracket) {
1835
+ inCharacterClass = true;
1836
+ }
1837
+ else if (ch === CharacterCodes.backslash) {
1838
+ inEscape = true;
1839
+ }
1840
+ else if (ch === CharacterCodes.closeBracket) {
1841
+ inCharacterClass = false;
1842
+ }
1843
+ pos++;
1844
+ }
1845
+ if (tokenFlags & TokenFlags.Unterminated) {
1846
+ // Find best recovery position
1847
+ pos = startOfRegExpBody;
1848
+ inEscape = false;
1849
+ let characterClassDepth = 0;
1850
+ let inDecimalQuantifier = false;
1851
+ let groupDepth = 0;
1852
+ while (pos < end && !isLineBreak(charCodeUnchecked(pos))) {
1853
+ const ch = charCodeUnchecked(pos);
1854
+ if (inEscape) {
1855
+ inEscape = false;
1856
+ }
1857
+ else if (ch === CharacterCodes.backslash) {
1858
+ inEscape = true;
1859
+ }
1860
+ else if (ch === CharacterCodes.openBracket) {
1861
+ characterClassDepth++;
1862
+ }
1863
+ else if (ch === CharacterCodes.closeBracket && characterClassDepth) {
1864
+ characterClassDepth--;
1865
+ }
1866
+ else if (!characterClassDepth) {
1867
+ if (ch === CharacterCodes.openBrace) {
1868
+ inDecimalQuantifier = true;
1869
+ }
1870
+ else if (ch === CharacterCodes.closeBrace && inDecimalQuantifier) {
1871
+ inDecimalQuantifier = false;
1872
+ }
1873
+ else if (!inDecimalQuantifier) {
1874
+ if (ch === CharacterCodes.openParen) {
1875
+ groupDepth++;
1876
+ }
1877
+ else if (ch === CharacterCodes.closeParen && groupDepth) {
1878
+ groupDepth--;
1879
+ }
1880
+ else if (ch === CharacterCodes.closeParen || ch === CharacterCodes.closeBracket || ch === CharacterCodes.closeBrace) {
1881
+ break;
1882
+ }
1883
+ }
1884
+ }
1885
+ pos++;
1886
+ }
1887
+ while (isWhiteSpaceLike(charCodeChecked(pos - 1)) || charCodeChecked(pos - 1) === CharacterCodes.semicolon)
1888
+ pos--;
1889
+ }
1890
+ else {
1891
+ pos++;
1892
+ let regExpFlags = RegularExpressionFlags.None;
1893
+ while (true) {
1894
+ const ch = codePointChecked(pos);
1895
+ if (ch === CharacterCodes.EOF || !isIdentifierPart(ch)) {
1896
+ break;
1897
+ }
1898
+ const size = charSize(ch);
1899
+ const flag = characterCodeToRegularExpressionFlag(ch);
1900
+ if (flag !== undefined) {
1901
+ regExpFlags |= flag;
1902
+ }
1903
+ pos += size;
1904
+ }
1905
+ }
1906
+ tokenValue = text.substring(tokenStart, pos);
1907
+ token = SyntaxKind.RegularExpressionLiteral;
1908
+ }
1909
+ return token;
1910
+ }
1911
+ function appendIfCommentDirective(commentDirectives, text, commentDirectiveRegEx, lineStart) {
1912
+ const type = getDirectiveFromComment(text.trimStart(), commentDirectiveRegEx);
1913
+ if (type === undefined) {
1914
+ return commentDirectives;
1915
+ }
1916
+ if (!commentDirectives) {
1917
+ commentDirectives = [];
1918
+ }
1919
+ commentDirectives.push({
1920
+ range: { pos: lineStart, end: pos },
1921
+ type,
1922
+ });
1923
+ return commentDirectives;
1924
+ }
1925
+ function getDirectiveFromComment(text, commentDirectiveRegEx) {
1926
+ const match = commentDirectiveRegEx.exec(text);
1927
+ if (!match) {
1928
+ return undefined;
1929
+ }
1930
+ switch (match[1]) {
1931
+ case "ts-expect-error":
1932
+ return CommentDirectiveType.ExpectError;
1933
+ case "ts-ignore":
1934
+ return CommentDirectiveType.Ignore;
1935
+ }
1936
+ return undefined;
1937
+ }
1938
+ function reScanTemplateToken(isTaggedTemplate) {
1939
+ pos = tokenStart;
1940
+ return token = scanTemplateAndSetTokenValue(!isTaggedTemplate);
1941
+ }
1942
+ function reScanTemplateHeadOrNoSubstitutionTemplate() {
1943
+ pos = tokenStart;
1944
+ return token = scanTemplateAndSetTokenValue(/*shouldEmitInvalidEscapeError*/ true);
1945
+ }
1946
+ function reScanJsxToken(allowMultilineJsxText = true) {
1947
+ pos = tokenStart = fullStartPos;
1948
+ return token = scanJsxToken(allowMultilineJsxText);
1949
+ }
1950
+ function reScanLessThanToken() {
1951
+ if (token === SyntaxKind.LessThanLessThanToken) {
1952
+ pos = tokenStart + 1;
1953
+ return token = SyntaxKind.LessThanToken;
1954
+ }
1955
+ return token;
1956
+ }
1957
+ function reScanHashToken() {
1958
+ if (token === SyntaxKind.PrivateIdentifier) {
1959
+ pos = tokenStart + 1;
1960
+ return token = SyntaxKind.HashToken;
1961
+ }
1962
+ return token;
1963
+ }
1964
+ function reScanQuestionToken() {
1965
+ pos = tokenStart + 1;
1966
+ return token = SyntaxKind.QuestionToken;
1967
+ }
1968
+ function scanJsxToken(allowMultilineJsxText = true) {
1969
+ fullStartPos = tokenStart = pos;
1970
+ if (pos >= end) {
1971
+ return token = SyntaxKind.EndOfFile;
1972
+ }
1973
+ let char = charCodeUnchecked(pos);
1974
+ if (char === CharacterCodes.lessThan) {
1975
+ if (charCodeUnchecked(pos + 1) === CharacterCodes.slash) {
1976
+ pos += 2;
1977
+ return token = SyntaxKind.LessThanSlashToken;
1978
+ }
1979
+ pos++;
1980
+ return token = SyntaxKind.LessThanToken;
1981
+ }
1982
+ if (char === CharacterCodes.openBrace) {
1983
+ pos++;
1984
+ return token = SyntaxKind.OpenBraceToken;
1985
+ }
1986
+ let firstNonWhitespace = 0;
1987
+ while (pos < end) {
1988
+ char = charCodeUnchecked(pos);
1989
+ if (char === CharacterCodes.openBrace) {
1990
+ break;
1991
+ }
1992
+ if (char === CharacterCodes.lessThan) {
1993
+ if (isConflictMarkerTrivia(text, pos)) {
1994
+ pos = scanConflictMarkerTrivia(text, pos);
1995
+ return token = SyntaxKind.ConflictMarkerTrivia;
1996
+ }
1997
+ break;
1998
+ }
1999
+ if (isLineBreak(char) && firstNonWhitespace === 0) {
2000
+ firstNonWhitespace = -1;
2001
+ }
2002
+ else if (!allowMultilineJsxText && isLineBreak(char) && firstNonWhitespace > 0) {
2003
+ break;
2004
+ }
2005
+ else if (!isWhiteSpaceLike(char)) {
2006
+ firstNonWhitespace = pos;
2007
+ }
2008
+ pos++;
2009
+ }
2010
+ tokenValue = text.substring(fullStartPos, pos);
2011
+ return firstNonWhitespace === -1 ? SyntaxKind.JsxTextAllWhiteSpaces : SyntaxKind.JsxText;
2012
+ }
2013
+ function scanJsxIdentifier() {
2014
+ if (tokenIsIdentifierOrKeyword(token)) {
2015
+ while (pos < end) {
2016
+ const ch = charCodeUnchecked(pos);
2017
+ if (ch === CharacterCodes.minus) {
2018
+ tokenValue += "-";
2019
+ pos++;
2020
+ continue;
2021
+ }
2022
+ const oldPos = pos;
2023
+ tokenValue += scanIdentifierParts();
2024
+ if (pos === oldPos) {
2025
+ break;
2026
+ }
2027
+ }
2028
+ return getIdentifierToken();
2029
+ }
2030
+ return token;
2031
+ }
2032
+ function scanJsxAttributeValue() {
2033
+ fullStartPos = pos;
2034
+ switch (charCodeUnchecked(pos)) {
2035
+ case CharacterCodes.doubleQuote:
2036
+ case CharacterCodes.singleQuote:
2037
+ tokenValue = scanString(/*jsxAttributeString*/ true);
2038
+ return token = SyntaxKind.StringLiteral;
2039
+ default:
2040
+ return scan();
2041
+ }
2042
+ }
2043
+ function reScanJsxAttributeValue() {
2044
+ pos = tokenStart = fullStartPos;
2045
+ return scanJsxAttributeValue();
2046
+ }
2047
+ function scanJSDocCommentTextToken(inBackticks) {
2048
+ fullStartPos = tokenStart = pos;
2049
+ tokenFlags = TokenFlags.None;
2050
+ if (pos >= end) {
2051
+ return token = SyntaxKind.EndOfFile;
2052
+ }
2053
+ for (let ch = charCodeUnchecked(pos); pos < end && (!isLineBreak(ch) && ch !== CharacterCodes.backtick); ch = codePointUnchecked(++pos)) {
2054
+ if (!inBackticks) {
2055
+ if (ch === CharacterCodes.openBrace) {
2056
+ break;
2057
+ }
2058
+ else if (ch === CharacterCodes.at
2059
+ && pos - 1 >= 0 && isWhiteSpaceSingleLine(charCodeUnchecked(pos - 1))
2060
+ && pos + 1 < end && isIdentifierStart(charCodeUnchecked(pos + 1))) {
2061
+ break;
2062
+ }
2063
+ }
2064
+ }
2065
+ if (pos === tokenStart) {
2066
+ return scanJsDocToken();
2067
+ }
2068
+ tokenValue = text.substring(tokenStart, pos);
2069
+ return token = SyntaxKind.JSDocCommentTextToken;
2070
+ }
2071
+ function scanJsDocToken() {
2072
+ fullStartPos = tokenStart = pos;
2073
+ tokenFlags = TokenFlags.None;
2074
+ if (pos >= end) {
2075
+ return token = SyntaxKind.EndOfFile;
2076
+ }
2077
+ const ch = codePointUnchecked(pos);
2078
+ pos += charSize(ch);
2079
+ switch (ch) {
2080
+ case CharacterCodes.tab:
2081
+ case CharacterCodes.verticalTab:
2082
+ case CharacterCodes.formFeed:
2083
+ case CharacterCodes.space:
2084
+ while (pos < end && isWhiteSpaceSingleLine(charCodeUnchecked(pos))) {
2085
+ pos++;
2086
+ }
2087
+ return token = SyntaxKind.WhitespaceTrivia;
2088
+ case CharacterCodes.at:
2089
+ return token = SyntaxKind.AtToken;
2090
+ case CharacterCodes.carriageReturn:
2091
+ if (charCodeUnchecked(pos) === CharacterCodes.lineFeed) {
2092
+ pos++;
2093
+ }
2094
+ // falls through
2095
+ case CharacterCodes.lineFeed:
2096
+ tokenFlags |= TokenFlags.PrecedingLineBreak;
2097
+ return token = SyntaxKind.NewLineTrivia;
2098
+ case CharacterCodes.asterisk:
2099
+ return token = SyntaxKind.AsteriskToken;
2100
+ case CharacterCodes.openBrace:
2101
+ return token = SyntaxKind.OpenBraceToken;
2102
+ case CharacterCodes.closeBrace:
2103
+ return token = SyntaxKind.CloseBraceToken;
2104
+ case CharacterCodes.openBracket:
2105
+ return token = SyntaxKind.OpenBracketToken;
2106
+ case CharacterCodes.closeBracket:
2107
+ return token = SyntaxKind.CloseBracketToken;
2108
+ case CharacterCodes.openParen:
2109
+ return token = SyntaxKind.OpenParenToken;
2110
+ case CharacterCodes.closeParen:
2111
+ return token = SyntaxKind.CloseParenToken;
2112
+ case CharacterCodes.lessThan:
2113
+ return token = SyntaxKind.LessThanToken;
2114
+ case CharacterCodes.greaterThan:
2115
+ return token = SyntaxKind.GreaterThanToken;
2116
+ case CharacterCodes.equals:
2117
+ return token = SyntaxKind.EqualsToken;
2118
+ case CharacterCodes.comma:
2119
+ return token = SyntaxKind.CommaToken;
2120
+ case CharacterCodes.dot:
2121
+ return token = SyntaxKind.DotToken;
2122
+ case CharacterCodes.backtick:
2123
+ return token = SyntaxKind.BacktickToken;
2124
+ case CharacterCodes.hash:
2125
+ return token = SyntaxKind.HashToken;
2126
+ case CharacterCodes.backslash:
2127
+ pos--;
2128
+ {
2129
+ const extendedCookedChar = peekExtendedUnicodeEscape();
2130
+ if (extendedCookedChar >= 0 && isIdentifierStart(extendedCookedChar)) {
2131
+ tokenValue = scanExtendedUnicodeEscape() + scanIdentifierParts();
2132
+ return token = getIdentifierToken();
2133
+ }
2134
+ const cookedChar = peekUnicodeEscape();
2135
+ if (cookedChar >= 0 && isIdentifierStart(cookedChar)) {
2136
+ pos += 6;
2137
+ tokenFlags |= TokenFlags.UnicodeEscape;
2138
+ tokenValue = String.fromCharCode(cookedChar) + scanIdentifierParts();
2139
+ return token = getIdentifierToken();
2140
+ }
2141
+ }
2142
+ pos++;
2143
+ return token = SyntaxKind.Unknown;
2144
+ }
2145
+ if (isIdentifierStart(ch)) {
2146
+ let char = ch;
2147
+ while (pos < end && isIdentifierPart(char = codePointUnchecked(pos)) || char === CharacterCodes.minus)
2148
+ pos += charSize(char);
2149
+ tokenValue = text.substring(tokenStart, pos);
2150
+ if (char === CharacterCodes.backslash) {
2151
+ tokenValue += scanIdentifierParts();
2152
+ }
2153
+ return token = getIdentifierToken();
2154
+ }
2155
+ else {
2156
+ return token = SyntaxKind.Unknown;
2157
+ }
2158
+ }
2159
+ function speculationHelper(callback, isLookahead) {
2160
+ const savePos = pos;
2161
+ const saveStartPos = fullStartPos;
2162
+ const saveTokenPos = tokenStart;
2163
+ const saveToken = token;
2164
+ const saveTokenValue = tokenValue;
2165
+ const saveTokenFlags = tokenFlags;
2166
+ const result = callback();
2167
+ if (!result || isLookahead) {
2168
+ pos = savePos;
2169
+ fullStartPos = saveStartPos;
2170
+ tokenStart = saveTokenPos;
2171
+ token = saveToken;
2172
+ tokenValue = saveTokenValue;
2173
+ tokenFlags = saveTokenFlags;
2174
+ }
2175
+ return result;
2176
+ }
2177
+ function scanRange(start, length, callback) {
2178
+ const saveEnd = end;
2179
+ const savePos = pos;
2180
+ const saveStartPos = fullStartPos;
2181
+ const saveTokenPos = tokenStart;
2182
+ const saveToken = token;
2183
+ const saveTokenValue = tokenValue;
2184
+ const saveTokenFlags = tokenFlags;
2185
+ const saveErrorExpectations = commentDirectives;
2186
+ setText(text, start, length);
2187
+ const result = callback();
2188
+ end = saveEnd;
2189
+ pos = savePos;
2190
+ fullStartPos = saveStartPos;
2191
+ tokenStart = saveTokenPos;
2192
+ token = saveToken;
2193
+ tokenValue = saveTokenValue;
2194
+ tokenFlags = saveTokenFlags;
2195
+ commentDirectives = saveErrorExpectations;
2196
+ return result;
2197
+ }
2198
+ function lookAhead(callback) {
2199
+ return speculationHelper(callback, /*isLookahead*/ true);
2200
+ }
2201
+ function tryScan(callback) {
2202
+ return speculationHelper(callback, /*isLookahead*/ false);
2203
+ }
2204
+ function getText() {
2205
+ return text;
2206
+ }
2207
+ function clearCommentDirectives() {
2208
+ commentDirectives = undefined;
2209
+ }
2210
+ function setText(newText, start, length) {
2211
+ text = newText || "";
2212
+ end = length === undefined ? text.length : start + length;
2213
+ resetTokenState(start || 0);
2214
+ }
2215
+ function setLanguageVariant(variant) {
2216
+ languageVariant = variant;
2217
+ }
2218
+ function resetTokenState(position) {
2219
+ pos = position;
2220
+ fullStartPos = position;
2221
+ tokenStart = position;
2222
+ token = SyntaxKind.Unknown;
2223
+ tokenValue = undefined;
2224
+ tokenFlags = TokenFlags.None;
2225
+ }
2226
+ function setSkipJsDocLeadingAsterisks(skip) {
2227
+ skipJsDocLeadingAsterisks += skip ? 1 : -1;
2228
+ }
2229
+ }
2230
+ //# sourceMappingURL=scanner.js.map