@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,596 @@
1
+ import { NodeFlags } from "#enums/nodeFlags";
2
+ import { SyntaxKind } from "#enums/syntaxKind";
3
+ import { createToken } from "./factory.generated.js";
4
+ import { isJSDocNodeKind, isKeywordKind, isPrivateIdentifier, isPropertyNameLiteral, isTokenKind, } from "./is.js";
5
+ import { createScanner, skipTrivia, } from "./scanner.js";
6
+ export function getTokenAtPosition(sourceFile, position) {
7
+ return getTokenAtPositionImpl(sourceFile, position, /*allowPositionInLeadingTrivia*/ true, /*includePrecedingTokenAtEndPosition*/ undefined);
8
+ }
9
+ export function getTouchingPropertyName(sourceFile, position) {
10
+ return getTokenAtPositionImpl(sourceFile, position, /*allowPositionInLeadingTrivia*/ false, node => isPropertyNameLiteral(node) || isKeywordKind(node.kind) || isPrivateIdentifier(node));
11
+ }
12
+ export function getTouchingToken(sourceFile, position) {
13
+ return getTokenAtPositionImpl(sourceFile, position, /*allowPositionInLeadingTrivia*/ false, /*includePrecedingTokenAtEndPosition*/ undefined);
14
+ }
15
+ /**
16
+ * Finds the token that starts immediately after `previousToken` ends, searching
17
+ * within `parent`. Returns `undefined` if no such token exists.
18
+ */
19
+ export function findNextToken(previousToken, parent, sourceFile) {
20
+ return find(parent);
21
+ function find(n) {
22
+ if (isTokenKind(n.kind) && n.pos === previousToken.end) {
23
+ // This is the token that starts at the end of previousToken – return it.
24
+ return n;
25
+ }
26
+ // Find the child node that contains `previousToken` or starts immediately after it.
27
+ let foundNode;
28
+ const visitChild = (node) => {
29
+ if (node.flags & NodeFlags.Reparsed) {
30
+ return undefined;
31
+ }
32
+ if (node.pos <= previousToken.end && node.end > previousToken.end) {
33
+ foundNode = node;
34
+ }
35
+ return undefined;
36
+ };
37
+ // Visit JSDoc children first (mirrors Go's VisitEachChildAndJSDoc).
38
+ if (n.jsDoc) {
39
+ for (const jsdoc of n.jsDoc) {
40
+ visitChild(jsdoc);
41
+ }
42
+ }
43
+ n.forEachChild(visitChild, nodes => {
44
+ if (nodes.length > 0 && foundNode === undefined) {
45
+ for (const node of nodes) {
46
+ if (node.flags & NodeFlags.Reparsed)
47
+ continue;
48
+ if (node.pos > previousToken.end)
49
+ break;
50
+ if (node.end > previousToken.end) {
51
+ foundNode = node;
52
+ break;
53
+ }
54
+ }
55
+ }
56
+ return undefined;
57
+ });
58
+ // Recurse into the found child.
59
+ if (foundNode !== undefined) {
60
+ return find(foundNode);
61
+ }
62
+ // No AST child covers the position; use the scanner to find the syntactic token.
63
+ // The scanner is initialized at `previousToken.end`, so tokenFullStart === previousToken.end.
64
+ const startPos = previousToken.end;
65
+ if (startPos >= n.pos && startPos < n.end) {
66
+ const scanner = getScannerForSourceFile(sourceFile, startPos);
67
+ const token = scanner.getToken();
68
+ const tokenFullStart = scanner.getTokenFullStart();
69
+ const tokenEnd = scanner.getTokenEnd();
70
+ const flags = scanner.getTokenFlags();
71
+ return getOrCreateToken(sourceFile, token, tokenFullStart, tokenEnd, n, flags);
72
+ }
73
+ return undefined;
74
+ }
75
+ }
76
+ /**
77
+ * Finds the leftmost token satisfying `position < token.end`.
78
+ * If the position is in the trivia of that leftmost token, or the token is invalid,
79
+ * returns the rightmost valid token with `token.end <= position`.
80
+ * Excludes `JsxText` tokens containing only whitespace.
81
+ */
82
+ export function findPrecedingToken(sourceFile, position) {
83
+ return findPrecedingTokenImpl(sourceFile, position, sourceFile);
84
+ }
85
+ function getTokenAtPositionImpl(sourceFile, position, allowPositionInLeadingTrivia, includePrecedingTokenAtEndPosition) {
86
+ let current = sourceFile;
87
+ let nodeAfterLeft;
88
+ const state = {
89
+ next: undefined,
90
+ prevSubtree: undefined,
91
+ left: 0,
92
+ };
93
+ const testNode = (node) => {
94
+ if (node.kind !== SyntaxKind.EndOfFile && node.end === position && includePrecedingTokenAtEndPosition !== undefined) {
95
+ state.prevSubtree = node;
96
+ }
97
+ // A node "contains" the position if position < end, except nodes at the file end
98
+ // treat end as inclusive (there's nowhere else to look). This applies to the EOF
99
+ // token itself, and to JSDoc nodes reaching EOF (e.g. unterminated JSDoc comments).
100
+ if (node.end < position || node.end === position &&
101
+ node.kind !== SyntaxKind.EndOfFile &&
102
+ (!isJSDocNodeKind(node.kind) || node.end !== sourceFile.endOfFileToken.end)) {
103
+ return -1;
104
+ }
105
+ const nodePos = getPosition(node, sourceFile, allowPositionInLeadingTrivia);
106
+ if (nodePos > position) {
107
+ return 1;
108
+ }
109
+ return 0;
110
+ };
111
+ while (true) {
112
+ // Visit each child of current to find the one containing the position.
113
+ state.next = undefined;
114
+ nodeAfterLeft = undefined;
115
+ // In Strada, JSDoc nodes with a single comment represent that comment as a string
116
+ // property (not a child node), so forEachChild does not visit it. We replicate this
117
+ // by detecting single-comment NodeLists in visitList and skipping their elements in visitNode.
118
+ let skipSingleCommentChildren = false;
119
+ const visitNode = (node) => {
120
+ if (node.flags & NodeFlags.Reparsed) {
121
+ return undefined;
122
+ }
123
+ if (skipSingleCommentChildren && isJSDocCommentChildKind(node.kind)) {
124
+ return undefined;
125
+ }
126
+ if (nodeAfterLeft === undefined) {
127
+ nodeAfterLeft = node;
128
+ }
129
+ if (state.next === undefined) {
130
+ const result = testNode(node);
131
+ switch (result) {
132
+ case -1:
133
+ if (!isJSDocNodeKind(node.kind)) {
134
+ state.left = node.end;
135
+ }
136
+ nodeAfterLeft = undefined;
137
+ break;
138
+ case 0:
139
+ state.next = node;
140
+ break;
141
+ }
142
+ }
143
+ return undefined;
144
+ };
145
+ // Visit JSDoc children first, then regular children (mirrors Go's VisitEachChildAndJSDoc).
146
+ if (current.jsDoc) {
147
+ for (const jsdoc of current.jsDoc) {
148
+ visitNode(jsdoc);
149
+ }
150
+ }
151
+ current.forEachChild(visitNode, nodes => {
152
+ // Track whether this NodeList is a single-comment list that should be skipped.
153
+ // The flag affects the subsequent forEachNode(visitNode) calls for this NodeList.
154
+ skipSingleCommentChildren = isJSDocSingleCommentNodeList(nodes);
155
+ if (nodes.length === 0 || skipSingleCommentChildren) {
156
+ return undefined;
157
+ }
158
+ if (nodeAfterLeft === undefined) {
159
+ for (const node of nodes) {
160
+ if (!(node.flags & NodeFlags.Reparsed)) {
161
+ nodeAfterLeft = node;
162
+ break;
163
+ }
164
+ }
165
+ }
166
+ if (state.next === undefined) {
167
+ if (nodes.end === position && includePrecedingTokenAtEndPosition !== undefined) {
168
+ state.left = nodes.end;
169
+ nodeAfterLeft = undefined;
170
+ state.prevSubtree = nodes[nodes.length - 1];
171
+ }
172
+ else if (nodes.end <= position) {
173
+ state.left = nodes.end;
174
+ nodeAfterLeft = undefined;
175
+ }
176
+ else if (nodes.pos <= position) {
177
+ binarySearchNodeList(nodes, testNode, (node, middle, arr) => {
178
+ state.left = node.end;
179
+ nodeAfterLeft = undefined;
180
+ for (let i = middle + 1; i < arr.length; i++) {
181
+ if (!(arr[i].flags & NodeFlags.Reparsed)) {
182
+ nodeAfterLeft = arr[i];
183
+ break;
184
+ }
185
+ }
186
+ }, found => {
187
+ state.next = found;
188
+ });
189
+ }
190
+ }
191
+ return undefined;
192
+ });
193
+ // If prevSubtree was set, check if the rightmost token of prevSubtree should be returned.
194
+ if (state.prevSubtree !== undefined) {
195
+ const child = findPrecedingTokenImpl(sourceFile, position, state.prevSubtree);
196
+ if (child !== undefined && child.end === position && includePrecedingTokenAtEndPosition(child)) {
197
+ return child;
198
+ }
199
+ state.prevSubtree = undefined;
200
+ }
201
+ if (state.next === undefined) {
202
+ if (isTokenKind(current.kind) || shouldSkipChild(current)) {
203
+ return current;
204
+ }
205
+ // Use the scanner to find a token not stored in the AST.
206
+ const scanner = getScannerForSourceFile(sourceFile, state.left);
207
+ let end = current.end;
208
+ const afterLeft = nodeAfterLeft;
209
+ if (afterLeft !== undefined) {
210
+ end = afterLeft.pos;
211
+ }
212
+ while (state.left < end) {
213
+ const token = scanner.getToken();
214
+ const tokenFullStart = scanner.getTokenFullStart();
215
+ const tokenStart = allowPositionInLeadingTrivia ? tokenFullStart : scanner.getTokenStart();
216
+ const tokenEnd = scanner.getTokenEnd();
217
+ const flags = scanner.getTokenFlags();
218
+ if (tokenEnd > end) {
219
+ break;
220
+ }
221
+ if (tokenStart <= position && position < tokenEnd) {
222
+ if (token === SyntaxKind.Identifier || !isTokenKind(token)) {
223
+ if (isJSDocNodeKind(current.kind)) {
224
+ return current;
225
+ }
226
+ throw new Error(`did not expect ${SyntaxKind[current.kind]} to have ${SyntaxKind[token]} in its trivia`);
227
+ }
228
+ return getOrCreateToken(sourceFile, token, tokenFullStart, tokenEnd, current, flags);
229
+ }
230
+ if (includePrecedingTokenAtEndPosition !== undefined && tokenEnd === position) {
231
+ const prevToken = getOrCreateToken(sourceFile, token, tokenFullStart, tokenEnd, current, flags);
232
+ if (includePrecedingTokenAtEndPosition(prevToken)) {
233
+ return prevToken;
234
+ }
235
+ }
236
+ state.left = tokenEnd;
237
+ scanner.scan();
238
+ }
239
+ return current;
240
+ }
241
+ current = state.next;
242
+ state.left = current.pos;
243
+ nodeAfterLeft = undefined;
244
+ }
245
+ }
246
+ function getPosition(node, sourceFile, allowPositionInLeadingTrivia) {
247
+ if (allowPositionInLeadingTrivia) {
248
+ return node.pos;
249
+ }
250
+ return getTokenPosOfNode(node, sourceFile, /*includeJSDoc*/ true);
251
+ }
252
+ /** @internal */
253
+ export function getTokenPosOfNode(node, sourceFile, includeJSDoc) {
254
+ // With nodes that have no width (i.e. 'Missing' nodes), we actually *don't*
255
+ // want to skip trivia because this will launch us forward to the next token.
256
+ if (nodeIsMissing(node)) {
257
+ return node.pos;
258
+ }
259
+ if (isJSDocNodeKind(node.kind) || node.kind === SyntaxKind.JsxText) {
260
+ return skipTrivia(sourceFile.text, node.pos, /*stopAfterLineBreak*/ false, /*stopAtComments*/ true);
261
+ }
262
+ if (includeJSDoc && node.jsDoc && node.jsDoc.length > 0) {
263
+ return getTokenPosOfNode(node.jsDoc[0], sourceFile, /*includeJSDoc*/ false);
264
+ }
265
+ return skipTrivia(sourceFile.text, node.pos, /*stopAfterLineBreak*/ false, /*stopAtComments*/ false, /*inJSDoc*/ !!(node.flags & NodeFlags.JSDoc));
266
+ }
267
+ function nodeIsMissing(node) {
268
+ return node.pos === node.end && node.pos >= 0 && node.kind !== SyntaxKind.EndOfFile;
269
+ }
270
+ function findPrecedingTokenImpl(sourceFile, position, startNode) {
271
+ const find = (n) => {
272
+ if (isTokenKind(n.kind) && n.kind !== SyntaxKind.EndOfFile) {
273
+ return n;
274
+ }
275
+ let foundChild;
276
+ let prevChild;
277
+ // Visit JSDoc nodes first (mirrors Go's VisitEachChildAndJSDoc).
278
+ if (n.jsDoc) {
279
+ for (const jsdoc of n.jsDoc) {
280
+ if (jsdoc.flags & NodeFlags.Reparsed)
281
+ continue;
282
+ if (foundChild !== undefined)
283
+ break;
284
+ if (position < jsdoc.end && (prevChild === undefined || prevChild.end <= position)) {
285
+ foundChild = jsdoc;
286
+ }
287
+ else {
288
+ prevChild = jsdoc;
289
+ }
290
+ }
291
+ }
292
+ let skipSingleCommentChildrenImpl = false;
293
+ n.forEachChild(node => {
294
+ if (node.flags & NodeFlags.Reparsed) {
295
+ return undefined;
296
+ }
297
+ if (skipSingleCommentChildrenImpl && isJSDocCommentChildKind(node.kind)) {
298
+ return undefined;
299
+ }
300
+ if (foundChild !== undefined) {
301
+ return undefined;
302
+ }
303
+ if (position < node.end && (prevChild === undefined || prevChild.end <= position)) {
304
+ foundChild = node;
305
+ }
306
+ else {
307
+ prevChild = node;
308
+ }
309
+ return undefined;
310
+ }, nodes => {
311
+ skipSingleCommentChildrenImpl = isJSDocSingleCommentNodeList(nodes);
312
+ if (foundChild !== undefined) {
313
+ return undefined;
314
+ }
315
+ if (nodes.length > 0 && !skipSingleCommentChildrenImpl) {
316
+ const index = binarySearchForPrecedingToken(nodes, position);
317
+ if (index >= 0 && !(nodes[index].flags & NodeFlags.Reparsed)) {
318
+ foundChild = nodes[index];
319
+ }
320
+ const lookupIndex = index >= 0 ? index - 1 : nodes.length - 1;
321
+ for (let i = lookupIndex; i >= 0; i--) {
322
+ if (!(nodes[i].flags & NodeFlags.Reparsed)) {
323
+ if (prevChild === undefined) {
324
+ prevChild = nodes[i];
325
+ }
326
+ break;
327
+ }
328
+ }
329
+ }
330
+ return undefined;
331
+ });
332
+ if (foundChild !== undefined) {
333
+ const start = getTokenPosOfNode(foundChild, sourceFile, /*includeJSDoc*/ true);
334
+ if (start >= position) {
335
+ if (position >= foundChild.pos) {
336
+ // We are in the leading trivia of foundChild. Check for JSDoc nodes of n
337
+ // preceding foundChild, mirroring Go's findPrecedingToken logic.
338
+ let jsDoc;
339
+ if (n.jsDoc) {
340
+ for (let i = n.jsDoc.length - 1; i >= 0; i--) {
341
+ if (n.jsDoc[i].pos >= foundChild.pos) {
342
+ jsDoc = n.jsDoc[i];
343
+ break;
344
+ }
345
+ }
346
+ }
347
+ if (jsDoc !== undefined) {
348
+ if (position < jsDoc.end) {
349
+ return find(jsDoc);
350
+ }
351
+ return findRightmostValidToken(sourceFile, jsDoc.end, n, position);
352
+ }
353
+ return findRightmostValidToken(sourceFile, foundChild.pos, n, -1);
354
+ }
355
+ // Answer is in tokens between two visited children.
356
+ return findRightmostValidToken(sourceFile, foundChild.pos, n, position);
357
+ }
358
+ return find(foundChild);
359
+ }
360
+ if (position >= n.end) {
361
+ return findRightmostValidToken(sourceFile, n.end, n, -1);
362
+ }
363
+ return findRightmostValidToken(sourceFile, n.end, n, position);
364
+ };
365
+ return find(startNode);
366
+ }
367
+ function findRightmostValidToken(sourceFile, endPos, containingNode, position) {
368
+ if (position === -1) {
369
+ position = containingNode.end;
370
+ }
371
+ const find = (n, endPos) => {
372
+ if (isTokenKind(n.kind) && n.kind !== SyntaxKind.EndOfFile) {
373
+ return n;
374
+ }
375
+ let rightmostValidNode;
376
+ let hasChildren = false;
377
+ // Visit JSDoc nodes first (mirrors Go's VisitEachChildAndJSDoc).
378
+ if (n.jsDoc) {
379
+ hasChildren = true;
380
+ for (const jsdoc of n.jsDoc) {
381
+ if (jsdoc.flags & NodeFlags.Reparsed)
382
+ continue;
383
+ if (jsdoc.end > endPos || getTokenPosOfNode(jsdoc, sourceFile) >= position)
384
+ continue;
385
+ if (isValidPrecedingNode(jsdoc, sourceFile)) {
386
+ rightmostValidNode = jsdoc;
387
+ }
388
+ }
389
+ }
390
+ let skipSingleCommentChildren = false;
391
+ n.forEachChild(node => {
392
+ if (node.flags & NodeFlags.Reparsed) {
393
+ return undefined;
394
+ }
395
+ if (skipSingleCommentChildren && isJSDocCommentChildKind(node.kind)) {
396
+ return undefined;
397
+ }
398
+ hasChildren = true;
399
+ if (node.end > endPos || getTokenPosOfNode(node, sourceFile) >= position) {
400
+ return undefined;
401
+ }
402
+ if (isValidPrecedingNode(node, sourceFile)) {
403
+ rightmostValidNode = node;
404
+ }
405
+ return undefined;
406
+ }, nodes => {
407
+ // Skip single-comment JSDoc NodeLists (e.g. JSDocText children of a JSDoc node):
408
+ // In Go, these are stored as string properties and are never visited as children.
409
+ skipSingleCommentChildren = isJSDocSingleCommentNodeList(nodes);
410
+ if (nodes.length > 0 && !skipSingleCommentChildren) {
411
+ hasChildren = true;
412
+ for (let i = nodes.length - 1; i >= 0; i--) {
413
+ const node = nodes[i];
414
+ if (node.flags & NodeFlags.Reparsed)
415
+ continue;
416
+ if (node.end > endPos || getTokenPosOfNode(node, sourceFile) >= position)
417
+ continue;
418
+ if (isValidPrecedingNode(node, sourceFile)) {
419
+ rightmostValidNode = node;
420
+ break;
421
+ }
422
+ }
423
+ }
424
+ return undefined;
425
+ });
426
+ // Scan for syntactic tokens (e.g. `{`, `,`) between AST nodes, matching Go's
427
+ // findRightmostValidToken scanner step.
428
+ if (!shouldSkipChild(n)) {
429
+ const startPos = rightmostValidNode !== undefined ? rightmostValidNode.end : n.pos;
430
+ const targetEnd = Math.min(endPos, position);
431
+ if (startPos < targetEnd) {
432
+ const scanner = getScannerForSourceFile(sourceFile, startPos);
433
+ let pos = startPos;
434
+ let lastScannedToken;
435
+ while (pos < targetEnd) {
436
+ const tokenStart = scanner.getTokenStart();
437
+ if (tokenStart >= position)
438
+ break;
439
+ const tokenFullStart = scanner.getTokenFullStart();
440
+ const tokenEnd = scanner.getTokenEnd();
441
+ const token = scanner.getToken();
442
+ const flags = scanner.getTokenFlags();
443
+ lastScannedToken = getOrCreateToken(sourceFile, token, tokenFullStart, tokenEnd, n, flags);
444
+ pos = tokenEnd;
445
+ scanner.scan();
446
+ }
447
+ if (lastScannedToken !== undefined) {
448
+ return lastScannedToken;
449
+ }
450
+ }
451
+ }
452
+ if (!hasChildren) {
453
+ if (n !== containingNode) {
454
+ return n;
455
+ }
456
+ return undefined;
457
+ }
458
+ if (rightmostValidNode !== undefined) {
459
+ return find(rightmostValidNode, rightmostValidNode.end);
460
+ }
461
+ return undefined;
462
+ };
463
+ return find(containingNode, endPos);
464
+ }
465
+ function isValidPrecedingNode(node, sourceFile) {
466
+ if (node.kind === SyntaxKind.EndOfFile) {
467
+ return false;
468
+ }
469
+ const start = getTokenPosOfNode(node, sourceFile);
470
+ const width = node.end - start;
471
+ return width > 0;
472
+ }
473
+ function shouldSkipChild(node) {
474
+ return node.kind === SyntaxKind.JSDoc ||
475
+ node.kind === SyntaxKind.JSDocText ||
476
+ node.kind === SyntaxKind.JSDocTypeLiteral ||
477
+ node.kind === SyntaxKind.JSDocSignature ||
478
+ node.kind === SyntaxKind.JSDocLink ||
479
+ node.kind === SyntaxKind.JSDocLinkCode ||
480
+ node.kind === SyntaxKind.JSDocLinkPlain ||
481
+ isJSDocTag(node);
482
+ }
483
+ function isJSDocTag(node) {
484
+ return node.kind >= SyntaxKind.FirstJSDocTagNode && node.kind <= SyntaxKind.LastJSDocTagNode;
485
+ }
486
+ // In Strada, if a JSDoc node has a single comment, that comment is represented as a string
487
+ // property as a simplification, and therefore that comment is not visited by forEachChild.
488
+ // To match, we skip single-element comment NodeLists within JSDoc/JSDocTag nodes.
489
+ function isJSDocCommentChildKind(kind) {
490
+ switch (kind) {
491
+ case SyntaxKind.JSDocText:
492
+ case SyntaxKind.JSDocLink:
493
+ case SyntaxKind.JSDocLinkCode:
494
+ case SyntaxKind.JSDocLinkPlain:
495
+ return true;
496
+ default:
497
+ return false;
498
+ }
499
+ }
500
+ function isJSDocSingleCommentNodeList(nodes) {
501
+ return nodes.length === 1 && isJSDocCommentChildKind(nodes[0].kind);
502
+ }
503
+ function getScannerForSourceFile(sourceFile, pos) {
504
+ const scanner = createScanner(/*skipTrivia*/ true, sourceFile.languageVariant, sourceFile.text);
505
+ scanner.resetTokenState(pos);
506
+ scanner.scan();
507
+ return scanner;
508
+ }
509
+ function getOrCreateToken(sourceFile, kind, pos, end, parent, _flags) {
510
+ const key = `${pos}_${end}`;
511
+ if (!sourceFile.tokenCache) {
512
+ sourceFile.tokenCache = new Map();
513
+ }
514
+ const existing = sourceFile.tokenCache.get(key);
515
+ if (existing !== undefined) {
516
+ return existing;
517
+ }
518
+ const token = createToken(kind);
519
+ token.pos = pos;
520
+ token.end = end;
521
+ token.parent = parent;
522
+ sourceFile.tokenCache.set(key, token);
523
+ return token;
524
+ }
525
+ /** Binary search a node list for the node containing position. */
526
+ function binarySearchNodeList(nodes, testNode, onLeft, onMatch) {
527
+ let lo = 0;
528
+ let hi = nodes.length - 1;
529
+ while (lo <= hi) {
530
+ const mid = (lo + hi) >>> 1;
531
+ const node = nodes[mid];
532
+ if (node.flags & NodeFlags.Reparsed) {
533
+ // Skip reparsed nodes: try to find a non-reparsed node nearby
534
+ let found = false;
535
+ for (let i = mid + 1; i <= hi; i++) {
536
+ if (!(nodes[i].flags & NodeFlags.Reparsed)) {
537
+ const cmp = testNode(nodes[i]);
538
+ if (cmp < 0) {
539
+ onLeft(nodes[i], i, nodes);
540
+ lo = i + 1;
541
+ }
542
+ else if (cmp > 0) {
543
+ hi = i - 1;
544
+ }
545
+ else {
546
+ onMatch(nodes[i]);
547
+ return;
548
+ }
549
+ found = true;
550
+ break;
551
+ }
552
+ }
553
+ if (!found) {
554
+ hi = mid - 1;
555
+ }
556
+ continue;
557
+ }
558
+ const cmp = testNode(node);
559
+ if (cmp < 0) {
560
+ onLeft(node, mid, nodes);
561
+ lo = mid + 1;
562
+ }
563
+ else if (cmp > 0) {
564
+ hi = mid - 1;
565
+ }
566
+ else {
567
+ onMatch(node);
568
+ return;
569
+ }
570
+ }
571
+ }
572
+ function binarySearchForPrecedingToken(nodes, position) {
573
+ let lo = 0;
574
+ let hi = nodes.length - 1;
575
+ let result = -1;
576
+ while (lo <= hi) {
577
+ const mid = (lo + hi) >>> 1;
578
+ const node = nodes[mid];
579
+ if (node.flags & NodeFlags.Reparsed) {
580
+ lo = mid + 1;
581
+ continue;
582
+ }
583
+ if (position < node.end) {
584
+ if (mid === 0 || position >= nodes[mid - 1].end) {
585
+ result = mid;
586
+ break;
587
+ }
588
+ hi = mid - 1;
589
+ }
590
+ else {
591
+ lo = mid + 1;
592
+ }
593
+ }
594
+ return result;
595
+ }
596
+ //# sourceMappingURL=astnav.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"astnav.js","sourceRoot":"","sources":["../../src/ast/astnav.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import type { Node, NodeArray } from "./ast.ts";
2
+ /**
3
+ * Creates a deep clone of a node and its subtree, synthesizing new nodes for every child.
4
+ * The resulting tree has fully set parent pointers.
5
+ *
6
+ * @param node The node to clone.
7
+ * @param includeTrivia Whether to preserve the text range (pos/end) on the clone.
8
+ */
9
+ export declare function getSynthesizedDeepClone<T extends Node>(node: T, includeTrivia?: boolean): T;
10
+ export declare function getSynthesizedDeepClone<T extends Node>(node: T | undefined, includeTrivia?: boolean): T | undefined;
11
+ /**
12
+ * Creates deep clones of a NodeArray and all its elements.
13
+ */
14
+ export declare function getSynthesizedDeepClones<T extends Node>(nodes: NodeArray<T>, includeTrivia?: boolean): NodeArray<T>;
15
+ export declare function getSynthesizedDeepClones<T extends Node>(nodes: NodeArray<T> | undefined, includeTrivia?: boolean): NodeArray<T> | undefined;
16
+ //# sourceMappingURL=clone.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clone.d.ts","sourceRoot":"","sources":["../../src/ast/clone.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACR,IAAI,EACJ,SAAS,EAIZ,MAAM,UAAU,CAAC;AAgFlB;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,CAAC,SAAS,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,aAAa,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC;AAC7F,wBAAgB,uBAAuB,CAAC,CAAC,SAAS,IAAI,EAAE,IAAI,EAAE,CAAC,GAAG,SAAS,EAAE,aAAa,CAAC,EAAE,OAAO,GAAG,CAAC,GAAG,SAAS,CAAC;AAUrH;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,CAAC,SAAS,IAAI,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;AACrH,wBAAgB,wBAAwB,CAAC,CAAC,SAAS,IAAI,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,EAAE,aAAa,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC"}