tsc-ts 0.0.3 → 0.0.5

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 (596) hide show
  1. package/README.md +46 -0
  2. package/dist/api/compiler/ast-utilities.d.ts +82 -0
  3. package/dist/api/compiler/ast-utilities.js +462 -0
  4. package/dist/api/compiler/ast.d.ts +2350 -0
  5. package/dist/api/compiler/ast.js +11206 -0
  6. package/dist/api/compiler/astnav.d.ts +37 -0
  7. package/dist/api/compiler/astnav.js +767 -0
  8. package/dist/api/compiler/binder-utilities.d.ts +182 -0
  9. package/dist/api/compiler/binder-utilities.js +1240 -0
  10. package/dist/api/compiler/binder.d.ts +33 -0
  11. package/dist/api/compiler/binder.js +2358 -0
  12. package/dist/api/compiler/character-codes.d.ts +161 -0
  13. package/dist/api/compiler/character-codes.js +160 -0
  14. package/dist/api/compiler/checker-calls.d.ts +46 -0
  15. package/dist/api/compiler/checker-calls.js +1640 -0
  16. package/dist/api/compiler/checker-classes.d.ts +30 -0
  17. package/dist/api/compiler/checker-classes.js +582 -0
  18. package/dist/api/compiler/checker-contextual.d.ts +77 -0
  19. package/dist/api/compiler/checker-contextual.js +1136 -0
  20. package/dist/api/compiler/checker-declaration-order.d.ts +12 -0
  21. package/dist/api/compiler/checker-declaration-order.js +356 -0
  22. package/dist/api/compiler/checker-declarations.d.ts +33 -0
  23. package/dist/api/compiler/checker-declarations.js +888 -0
  24. package/dist/api/compiler/checker-declared-types.d.ts +48 -0
  25. package/dist/api/compiler/checker-declared-types.js +787 -0
  26. package/dist/api/compiler/checker-decorators.d.ts +26 -0
  27. package/dist/api/compiler/checker-decorators.js +562 -0
  28. package/dist/api/compiler/checker-deprecation.d.ts +33 -0
  29. package/dist/api/compiler/checker-deprecation.js +315 -0
  30. package/dist/api/compiler/checker-destructuring.d.ts +34 -0
  31. package/dist/api/compiler/checker-destructuring.js +584 -0
  32. package/dist/api/compiler/checker-elaboration.d.ts +15 -0
  33. package/dist/api/compiler/checker-elaboration.js +290 -0
  34. package/dist/api/compiler/checker-emit-helpers.d.ts +58 -0
  35. package/dist/api/compiler/checker-emit-helpers.js +154 -0
  36. package/dist/api/compiler/checker-emit-resolver.d.ts +75 -0
  37. package/dist/api/compiler/checker-emit-resolver.js +579 -0
  38. package/dist/api/compiler/checker-evaluator.d.ts +27 -0
  39. package/dist/api/compiler/checker-evaluator.js +188 -0
  40. package/dist/api/compiler/checker-expressions.d.ts +67 -0
  41. package/dist/api/compiler/checker-expressions.js +1351 -0
  42. package/dist/api/compiler/checker-features.d.ts +6 -0
  43. package/dist/api/compiler/checker-features.js +354 -0
  44. package/dist/api/compiler/checker-flow.d.ts +86 -0
  45. package/dist/api/compiler/checker-flow.js +169 -0
  46. package/dist/api/compiler/checker-functions.d.ts +43 -0
  47. package/dist/api/compiler/checker-functions.js +1002 -0
  48. package/dist/api/compiler/checker-generated-code.d.ts +25 -0
  49. package/dist/api/compiler/checker-generated-code.js +168 -0
  50. package/dist/api/compiler/checker-globals.d.ts +14 -0
  51. package/dist/api/compiler/checker-globals.js +37 -0
  52. package/dist/api/compiler/checker-grammar.d.ts +35 -0
  53. package/dist/api/compiler/checker-grammar.js +2573 -0
  54. package/dist/api/compiler/checker-heritage.d.ts +28 -0
  55. package/dist/api/compiler/checker-heritage.js +900 -0
  56. package/dist/api/compiler/checker-inference.d.ts +179 -0
  57. package/dist/api/compiler/checker-inference.js +2105 -0
  58. package/dist/api/compiler/checker-iteration.d.ts +115 -0
  59. package/dist/api/compiler/checker-iteration.js +857 -0
  60. package/dist/api/compiler/checker-javascript.d.ts +42 -0
  61. package/dist/api/compiler/checker-javascript.js +441 -0
  62. package/dist/api/compiler/checker-jsdoc.d.ts +30 -0
  63. package/dist/api/compiler/checker-jsdoc.js +320 -0
  64. package/dist/api/compiler/checker-jsx.d.ts +94 -0
  65. package/dist/api/compiler/checker-jsx.js +1433 -0
  66. package/dist/api/compiler/checker-literals.d.ts +6 -0
  67. package/dist/api/compiler/checker-literals.js +43 -0
  68. package/dist/api/compiler/checker-members.d.ts +198 -0
  69. package/dist/api/compiler/checker-members.js +2126 -0
  70. package/dist/api/compiler/checker-modules.d.ts +85 -0
  71. package/dist/api/compiler/checker-modules.js +2141 -0
  72. package/dist/api/compiler/checker-narrowing.d.ts +120 -0
  73. package/dist/api/compiler/checker-narrowing.js +2797 -0
  74. package/dist/api/compiler/checker-object-literals.d.ts +14 -0
  75. package/dist/api/compiler/checker-object-literals.js +479 -0
  76. package/dist/api/compiler/checker-operators.d.ts +33 -0
  77. package/dist/api/compiler/checker-operators.js +1040 -0
  78. package/dist/api/compiler/checker-overloads.d.ts +7 -0
  79. package/dist/api/compiler/checker-overloads.js +270 -0
  80. package/dist/api/compiler/checker-property-access.d.ts +34 -0
  81. package/dist/api/compiler/checker-property-access.js +672 -0
  82. package/dist/api/compiler/checker-services.d.ts +49 -0
  83. package/dist/api/compiler/checker-services.js +995 -0
  84. package/dist/api/compiler/checker-signatures.d.ts +55 -0
  85. package/dist/api/compiler/checker-signatures.js +788 -0
  86. package/dist/api/compiler/checker-source-file.d.ts +27 -0
  87. package/dist/api/compiler/checker-source-file.js +619 -0
  88. package/dist/api/compiler/checker-statements.d.ts +18 -0
  89. package/dist/api/compiler/checker-statements.js +226 -0
  90. package/dist/api/compiler/checker-super.d.ts +13 -0
  91. package/dist/api/compiler/checker-super.js +241 -0
  92. package/dist/api/compiler/checker-symbol-types.d.ts +67 -0
  93. package/dist/api/compiler/checker-symbol-types.js +1885 -0
  94. package/dist/api/compiler/checker-symbols.d.ts +181 -0
  95. package/dist/api/compiler/checker-symbols.js +1782 -0
  96. package/dist/api/compiler/checker-type-factory.d.ts +142 -0
  97. package/dist/api/compiler/checker-type-factory.js +2501 -0
  98. package/dist/api/compiler/checker-type-nodes.d.ts +26 -0
  99. package/dist/api/compiler/checker-type-nodes.js +828 -0
  100. package/dist/api/compiler/checker-type-operators.d.ts +109 -0
  101. package/dist/api/compiler/checker-type-operators.js +1842 -0
  102. package/dist/api/compiler/checker-types.d.ts +1027 -0
  103. package/dist/api/compiler/checker-types.js +1697 -0
  104. package/dist/api/compiler/checker-unused.d.ts +19 -0
  105. package/dist/api/compiler/checker-unused.js +524 -0
  106. package/dist/api/compiler/checker-utilities.d.ts +33 -0
  107. package/dist/api/compiler/checker-utilities.js +141 -0
  108. package/dist/api/compiler/checker.d.ts +491 -0
  109. package/dist/api/compiler/checker.js +912 -0
  110. package/dist/api/compiler/command-line.d.ts +32 -0
  111. package/dist/api/compiler/command-line.js +383 -0
  112. package/dist/api/compiler/compile-program.d.ts +118 -0
  113. package/dist/api/compiler/compile-program.js +384 -0
  114. package/dist/api/compiler/diagnostic-locales.d.ts +22 -0
  115. package/dist/api/compiler/diagnostic-locales.js +64 -0
  116. package/dist/api/compiler/diagnostic-messages.d.ts +2166 -0
  117. package/dist/api/compiler/diagnostic-messages.js +184 -0
  118. package/dist/api/compiler/diagnostics.d.ts +167 -0
  119. package/dist/api/compiler/diagnostics.js +820 -0
  120. package/dist/api/compiler/emitter.d.ts +71 -0
  121. package/dist/api/compiler/emitter.js +327 -0
  122. package/dist/api/compiler/file-include.d.ts +117 -0
  123. package/dist/api/compiler/file-include.js +536 -0
  124. package/dist/api/compiler/file-loader.d.ts +261 -0
  125. package/dist/api/compiler/file-loader.js +1257 -0
  126. package/dist/api/compiler/file-system.d.ts +51 -0
  127. package/dist/api/compiler/file-system.js +132 -0
  128. package/dist/api/compiler/flow.d.ts +60 -0
  129. package/dist/api/compiler/flow.js +45 -0
  130. package/dist/api/compiler/instantiation.d.ts +74 -0
  131. package/dist/api/compiler/instantiation.js +799 -0
  132. package/dist/api/compiler/jsdoc.d.ts +75 -0
  133. package/dist/api/compiler/jsdoc.js +1229 -0
  134. package/dist/api/compiler/link-tables.d.ts +36 -0
  135. package/dist/api/compiler/link-tables.js +83 -0
  136. package/dist/api/compiler/locale-data.d.ts +24 -0
  137. package/dist/api/compiler/locale-data.js +183 -0
  138. package/dist/api/compiler/locale.d.ts +4 -0
  139. package/dist/api/compiler/locale.js +317 -0
  140. package/dist/api/compiler/locales/cs-CZ.d.ts +2 -0
  141. package/dist/api/compiler/locales/cs-CZ.js +3 -0
  142. package/dist/api/compiler/locales/de-DE.d.ts +2 -0
  143. package/dist/api/compiler/locales/de-DE.js +3 -0
  144. package/dist/api/compiler/locales/es-ES.d.ts +2 -0
  145. package/dist/api/compiler/locales/es-ES.js +3 -0
  146. package/dist/api/compiler/locales/fr-FR.d.ts +2 -0
  147. package/dist/api/compiler/locales/fr-FR.js +3 -0
  148. package/dist/api/compiler/locales/it-IT.d.ts +2 -0
  149. package/dist/api/compiler/locales/it-IT.js +3 -0
  150. package/dist/api/compiler/locales/ja-JP.d.ts +2 -0
  151. package/dist/api/compiler/locales/ja-JP.js +3 -0
  152. package/dist/api/compiler/locales/ko-KR.d.ts +2 -0
  153. package/dist/api/compiler/locales/ko-KR.js +3 -0
  154. package/dist/api/compiler/locales/pl-PL.d.ts +2 -0
  155. package/dist/api/compiler/locales/pl-PL.js +3 -0
  156. package/dist/api/compiler/locales/pt-BR.d.ts +2 -0
  157. package/dist/api/compiler/locales/pt-BR.js +3 -0
  158. package/dist/api/compiler/locales/ru-RU.d.ts +2 -0
  159. package/dist/api/compiler/locales/ru-RU.js +3 -0
  160. package/dist/api/compiler/locales/tr-TR.d.ts +2 -0
  161. package/dist/api/compiler/locales/tr-TR.js +3 -0
  162. package/dist/api/compiler/locales/zh-CN.d.ts +2 -0
  163. package/dist/api/compiler/locales/zh-CN.js +3 -0
  164. package/dist/api/compiler/locales/zh-TW.d.ts +2 -0
  165. package/dist/api/compiler/locales/zh-TW.js +3 -0
  166. package/dist/api/compiler/module-resolution-types.d.ts +83 -0
  167. package/dist/api/compiler/module-resolution-types.js +176 -0
  168. package/dist/api/compiler/module-resolution.d.ts +71 -0
  169. package/dist/api/compiler/module-resolution.js +1598 -0
  170. package/dist/api/compiler/module-specifiers.d.ts +64 -0
  171. package/dist/api/compiler/module-specifiers.js +1101 -0
  172. package/dist/api/compiler/name-resolver.d.ts +43 -0
  173. package/dist/api/compiler/name-resolver.js +509 -0
  174. package/dist/api/compiler/node-builder-names.d.ts +32 -0
  175. package/dist/api/compiler/node-builder-names.js +854 -0
  176. package/dist/api/compiler/node-builder-pseudo.d.ts +36 -0
  177. package/dist/api/compiler/node-builder-pseudo.js +744 -0
  178. package/dist/api/compiler/node-builder-reuse.d.ts +4 -0
  179. package/dist/api/compiler/node-builder-reuse.js +647 -0
  180. package/dist/api/compiler/node-builder.d.ts +270 -0
  181. package/dist/api/compiler/node-builder.js +2645 -0
  182. package/dist/api/compiler/option-declarations.d.ts +90 -0
  183. package/dist/api/compiler/option-declarations.js +1460 -0
  184. package/dist/api/compiler/options.d.ts +289 -0
  185. package/dist/api/compiler/options.js +1197 -0
  186. package/dist/api/compiler/output-paths.d.ts +42 -0
  187. package/dist/api/compiler/output-paths.js +195 -0
  188. package/dist/api/compiler/package-json.d.ts +175 -0
  189. package/dist/api/compiler/package-json.js +1015 -0
  190. package/dist/api/compiler/parallel-parse.d.ts +219 -0
  191. package/dist/api/compiler/parallel-parse.js +537 -0
  192. package/dist/api/compiler/parser.d.ts +587 -0
  193. package/dist/api/compiler/parser.js +6407 -0
  194. package/dist/api/compiler/path.d.ts +91 -0
  195. package/dist/api/compiler/path.js +705 -0
  196. package/dist/api/compiler/printer/async-helpers.d.ts +22 -0
  197. package/dist/api/compiler/printer/async-helpers.js +91 -0
  198. package/dist/api/compiler/printer/auto-generate.d.ts +13 -0
  199. package/dist/api/compiler/printer/auto-generate.js +20 -0
  200. package/dist/api/compiler/printer/decorator-helpers.d.ts +24 -0
  201. package/dist/api/compiler/printer/decorator-helpers.js +118 -0
  202. package/dist/api/compiler/printer/emit-context.d.ts +154 -0
  203. package/dist/api/compiler/printer/emit-context.js +576 -0
  204. package/dist/api/compiler/printer/emit-flags.d.ts +60 -0
  205. package/dist/api/compiler/printer/emit-flags.js +2 -0
  206. package/dist/api/compiler/printer/factory-base.d.ts +171 -0
  207. package/dist/api/compiler/printer/factory-base.js +1505 -0
  208. package/dist/api/compiler/printer/factory.d.ts +147 -0
  209. package/dist/api/compiler/printer/factory.js +542 -0
  210. package/dist/api/compiler/printer/helpers.d.ts +27 -0
  211. package/dist/api/compiler/printer/helpers.js +164 -0
  212. package/dist/api/compiler/printer/name-generator.d.ts +41 -0
  213. package/dist/api/compiler/printer/name-generator.js +283 -0
  214. package/dist/api/compiler/printer/printer.d.ts +411 -0
  215. package/dist/api/compiler/printer/printer.js +4517 -0
  216. package/dist/api/compiler/printer/text-writer.d.ts +46 -0
  217. package/dist/api/compiler/printer/text-writer.js +172 -0
  218. package/dist/api/compiler/printer/utilities.d.ts +82 -0
  219. package/dist/api/compiler/printer/utilities.js +817 -0
  220. package/dist/api/compiler/program-checker.d.ts +156 -0
  221. package/dist/api/compiler/program-checker.js +526 -0
  222. package/dist/api/compiler/program-utilities.d.ts +52 -0
  223. package/dist/api/compiler/program-utilities.js +365 -0
  224. package/dist/api/compiler/program.d.ts +180 -0
  225. package/dist/api/compiler/program.js +1011 -0
  226. package/dist/api/compiler/pseudo-bigint.d.ts +5 -0
  227. package/dist/api/compiler/pseudo-bigint.js +61 -0
  228. package/dist/api/compiler/regexp-checker.d.ts +38 -0
  229. package/dist/api/compiler/regexp-checker.js +942 -0
  230. package/dist/api/compiler/relations.d.ts +263 -0
  231. package/dist/api/compiler/relations.js +4002 -0
  232. package/dist/api/compiler/reparser.d.ts +48 -0
  233. package/dist/api/compiler/reparser.js +1323 -0
  234. package/dist/api/compiler/scanner.d.ts +256 -0
  235. package/dist/api/compiler/scanner.js +2853 -0
  236. package/dist/api/compiler/side-state.d.ts +16 -0
  237. package/dist/api/compiler/side-state.js +89 -0
  238. package/dist/api/compiler/sourcemap.d.ts +55 -0
  239. package/dist/api/compiler/sourcemap.js +340 -0
  240. package/dist/api/compiler/spelling.d.ts +14 -0
  241. package/dist/api/compiler/spelling.js +128 -0
  242. package/dist/api/compiler/symbol-accessibility.d.ts +57 -0
  243. package/dist/api/compiler/symbol-accessibility.js +894 -0
  244. package/dist/api/compiler/symbol.d.ts +240 -0
  245. package/dist/api/compiler/symbol.js +228 -0
  246. package/dist/api/compiler/symlinks.d.ts +32 -0
  247. package/dist/api/compiler/symlinks.js +114 -0
  248. package/dist/api/compiler/syntax-kind.d.ts +389 -0
  249. package/dist/api/compiler/syntax-kind.js +2 -0
  250. package/dist/api/compiler/timeline.d.ts +9 -0
  251. package/dist/api/compiler/timeline.js +54 -0
  252. package/dist/api/compiler/transformers/alias-references.d.ts +39 -0
  253. package/dist/api/compiler/transformers/alias-references.js +676 -0
  254. package/dist/api/compiler/transformers/async-utilities.d.ts +51 -0
  255. package/dist/api/compiler/transformers/async-utilities.js +260 -0
  256. package/dist/api/compiler/transformers/async.d.ts +53 -0
  257. package/dist/api/compiler/transformers/async.js +645 -0
  258. package/dist/api/compiler/transformers/class-fields.d.ts +206 -0
  259. package/dist/api/compiler/transformers/class-fields.js +2418 -0
  260. package/dist/api/compiler/transformers/class-utilities.d.ts +46 -0
  261. package/dist/api/compiler/transformers/class-utilities.js +261 -0
  262. package/dist/api/compiler/transformers/commonjs-module.d.ts +103 -0
  263. package/dist/api/compiler/transformers/commonjs-module.js +1180 -0
  264. package/dist/api/compiler/transformers/const-enum-inliner.d.ts +11 -0
  265. package/dist/api/compiler/transformers/const-enum-inliner.js +36 -0
  266. package/dist/api/compiler/transformers/declarations-diagnostics.d.ts +52 -0
  267. package/dist/api/compiler/transformers/declarations-diagnostics.js +538 -0
  268. package/dist/api/compiler/transformers/declarations-pseudo.d.ts +160 -0
  269. package/dist/api/compiler/transformers/declarations-pseudo.js +797 -0
  270. package/dist/api/compiler/transformers/declarations-resolver.d.ts +152 -0
  271. package/dist/api/compiler/transformers/declarations-resolver.js +35 -0
  272. package/dist/api/compiler/transformers/declarations-syntactic.d.ts +119 -0
  273. package/dist/api/compiler/transformers/declarations-syntactic.js +1582 -0
  274. package/dist/api/compiler/transformers/declarations-tracker.d.ts +46 -0
  275. package/dist/api/compiler/transformers/declarations-tracker.js +197 -0
  276. package/dist/api/compiler/transformers/declarations.d.ts +175 -0
  277. package/dist/api/compiler/transformers/declarations.js +2380 -0
  278. package/dist/api/compiler/transformers/decorator-metadata.d.ts +54 -0
  279. package/dist/api/compiler/transformers/decorator-metadata.js +554 -0
  280. package/dist/api/compiler/transformers/decorator-utilities.d.ts +38 -0
  281. package/dist/api/compiler/transformers/decorator-utilities.js +238 -0
  282. package/dist/api/compiler/transformers/destructuring.d.ts +25 -0
  283. package/dist/api/compiler/transformers/destructuring.js +626 -0
  284. package/dist/api/compiler/transformers/downlevel.d.ts +6 -0
  285. package/dist/api/compiler/transformers/downlevel.js +45 -0
  286. package/dist/api/compiler/transformers/emit-resolver.d.ts +61 -0
  287. package/dist/api/compiler/transformers/emit-resolver.js +197 -0
  288. package/dist/api/compiler/transformers/es-decorators.d.ts +118 -0
  289. package/dist/api/compiler/transformers/es-decorators.js +1901 -0
  290. package/dist/api/compiler/transformers/exponentiation.d.ts +11 -0
  291. package/dist/api/compiler/transformers/exponentiation.js +76 -0
  292. package/dist/api/compiler/transformers/external-module-info.d.ts +35 -0
  293. package/dist/api/compiler/transformers/external-module-info.js +351 -0
  294. package/dist/api/compiler/transformers/for-await.d.ts +43 -0
  295. package/dist/api/compiler/transformers/for-await.js +469 -0
  296. package/dist/api/compiler/transformers/import-elision.d.ts +16 -0
  297. package/dist/api/compiler/transformers/import-elision.js +124 -0
  298. package/dist/api/compiler/transformers/jsx-entities.d.ts +1 -0
  299. package/dist/api/compiler/transformers/jsx-entities.js +256 -0
  300. package/dist/api/compiler/transformers/jsx.d.ts +71 -0
  301. package/dist/api/compiler/transformers/jsx.js +700 -0
  302. package/dist/api/compiler/transformers/legacy-decorators.d.ts +56 -0
  303. package/dist/api/compiler/transformers/legacy-decorators.js +564 -0
  304. package/dist/api/compiler/transformers/logical-assignment.d.ts +14 -0
  305. package/dist/api/compiler/transformers/logical-assignment.js +62 -0
  306. package/dist/api/compiler/transformers/module-utilities.d.ts +9 -0
  307. package/dist/api/compiler/transformers/module-utilities.js +36 -0
  308. package/dist/api/compiler/transformers/module.d.ts +49 -0
  309. package/dist/api/compiler/transformers/module.js +296 -0
  310. package/dist/api/compiler/transformers/named-evaluation.d.ts +26 -0
  311. package/dist/api/compiler/transformers/named-evaluation.js +266 -0
  312. package/dist/api/compiler/transformers/nullish-coalescing.d.ts +9 -0
  313. package/dist/api/compiler/transformers/nullish-coalescing.js +26 -0
  314. package/dist/api/compiler/transformers/object-rest-spread.d.ts +34 -0
  315. package/dist/api/compiler/transformers/object-rest-spread.js +411 -0
  316. package/dist/api/compiler/transformers/optional-catch.d.ts +9 -0
  317. package/dist/api/compiler/transformers/optional-catch.js +20 -0
  318. package/dist/api/compiler/transformers/optional-chain.d.ts +14 -0
  319. package/dist/api/compiler/transformers/optional-chain.js +188 -0
  320. package/dist/api/compiler/transformers/reference-resolver.d.ts +128 -0
  321. package/dist/api/compiler/transformers/reference-resolver.js +1155 -0
  322. package/dist/api/compiler/transformers/runtime-syntax.d.ts +71 -0
  323. package/dist/api/compiler/transformers/runtime-syntax.js +753 -0
  324. package/dist/api/compiler/transformers/subtree-facts.d.ts +9 -0
  325. package/dist/api/compiler/transformers/subtree-facts.js +203 -0
  326. package/dist/api/compiler/transformers/syntax-facts.d.ts +51 -0
  327. package/dist/api/compiler/transformers/syntax-facts.js +254 -0
  328. package/dist/api/compiler/transformers/tagged-template.d.ts +17 -0
  329. package/dist/api/compiler/transformers/tagged-template.js +148 -0
  330. package/dist/api/compiler/transformers/transformer.d.ts +17 -0
  331. package/dist/api/compiler/transformers/transformer.js +54 -0
  332. package/dist/api/compiler/transformers/type-eraser.d.ts +21 -0
  333. package/dist/api/compiler/transformers/type-eraser.js +346 -0
  334. package/dist/api/compiler/transformers/type-serialization.d.ts +20 -0
  335. package/dist/api/compiler/transformers/type-serialization.js +347 -0
  336. package/dist/api/compiler/transformers/using.d.ts +56 -0
  337. package/dist/api/compiler/transformers/using.js +453 -0
  338. package/dist/api/compiler/transformers/utilities.d.ts +50 -0
  339. package/dist/api/compiler/transformers/utilities.js +347 -0
  340. package/dist/api/compiler/transformers/visitor-base.d.ts +6 -0
  341. package/dist/api/compiler/transformers/visitor-base.js +817 -0
  342. package/dist/api/compiler/transformers/visitor-hooks.d.ts +29 -0
  343. package/dist/api/compiler/transformers/visitor-hooks.js +189 -0
  344. package/dist/api/compiler/tsconfig.d.ts +177 -0
  345. package/dist/api/compiler/tsconfig.js +1311 -0
  346. package/dist/api/compiler/type-printer.d.ts +15 -0
  347. package/dist/api/compiler/type-printer.js +74 -0
  348. package/dist/api/compiler/types.d.ts +87 -0
  349. package/dist/api/compiler/types.js +23 -0
  350. package/dist/api/compiler/unicode-identifiers.d.ts +2 -0
  351. package/dist/api/compiler/unicode-identifiers.js +209 -0
  352. package/dist/api/compiler/unicode-properties.d.ts +8 -0
  353. package/dist/api/compiler/unicode-properties.js +531 -0
  354. package/dist/api/compiler/vfs-match.d.ts +24 -0
  355. package/dist/api/compiler/vfs-match.js +587 -0
  356. package/dist/api/library/ast.d.ts +74 -0
  357. package/dist/api/library/ast.generated.d.ts +1145 -0
  358. package/dist/api/library/ast.generated.js +3 -0
  359. package/dist/api/library/ast.js +5 -0
  360. package/dist/api/library/checker.d.ts +51 -0
  361. package/dist/api/library/checker.js +318 -0
  362. package/dist/api/library/compiler-options.generated.d.ts +108 -0
  363. package/dist/api/library/compiler-options.generated.js +3 -0
  364. package/dist/api/library/diagnostics.d.ts +13 -0
  365. package/dist/api/library/diagnostics.js +50 -0
  366. package/dist/api/library/disk.d.ts +13 -0
  367. package/dist/api/library/disk.js +66 -0
  368. package/dist/api/library/enums.generated.d.ts +891 -0
  369. package/dist/api/library/enums.generated.js +916 -0
  370. package/dist/api/library/errors.d.ts +13 -0
  371. package/dist/api/library/errors.js +24 -0
  372. package/dist/api/library/host.d.ts +24 -0
  373. package/dist/api/library/host.js +52 -0
  374. package/dist/api/library/index.d.ts +14 -0
  375. package/dist/api/library/index.js +15 -0
  376. package/dist/api/library/nodes.d.ts +51 -0
  377. package/dist/api/library/nodes.js +196 -0
  378. package/dist/api/library/options.d.ts +144 -0
  379. package/dist/api/library/options.js +308 -0
  380. package/dist/api/library/parse.d.ts +19 -0
  381. package/dist/api/library/parse.js +41 -0
  382. package/dist/api/library/program.d.ts +21 -0
  383. package/dist/api/library/program.js +234 -0
  384. package/dist/api/library/symbols.d.ts +8 -0
  385. package/dist/api/library/symbols.js +11 -0
  386. package/dist/api/library/types.d.ts +313 -0
  387. package/dist/api/library/types.js +6 -0
  388. package/package.json +22 -8
  389. package/src/compiler/ast-utilities.ts +548 -0
  390. package/src/compiler/ast.ts +12862 -0
  391. package/src/compiler/astnav.ts +799 -0
  392. package/src/compiler/binder-utilities.ts +1392 -0
  393. package/src/compiler/binder.ts +2703 -0
  394. package/src/compiler/build-info.ts +1197 -0
  395. package/src/compiler/character-codes.ts +323 -0
  396. package/src/compiler/checker-calls.ts +2155 -0
  397. package/src/compiler/checker-classes.ts +706 -0
  398. package/src/compiler/checker-contextual.ts +1457 -0
  399. package/src/compiler/checker-declaration-order.ts +438 -0
  400. package/src/compiler/checker-declarations.ts +1194 -0
  401. package/src/compiler/checker-declared-types.ts +919 -0
  402. package/src/compiler/checker-decorators.ts +694 -0
  403. package/src/compiler/checker-deprecation.ts +359 -0
  404. package/src/compiler/checker-destructuring.ts +805 -0
  405. package/src/compiler/checker-elaboration.ts +477 -0
  406. package/src/compiler/checker-emit-helpers.ts +224 -0
  407. package/src/compiler/checker-emit-resolver.ts +769 -0
  408. package/src/compiler/checker-evaluator.ts +243 -0
  409. package/src/compiler/checker-expressions.ts +1831 -0
  410. package/src/compiler/checker-features.ts +361 -0
  411. package/src/compiler/checker-flow.ts +394 -0
  412. package/src/compiler/checker-functions.ts +1296 -0
  413. package/src/compiler/checker-generated-code.ts +227 -0
  414. package/src/compiler/checker-globals.ts +52 -0
  415. package/src/compiler/checker-grammar.ts +3584 -0
  416. package/src/compiler/checker-heritage.ts +1233 -0
  417. package/src/compiler/checker-inference.ts +2576 -0
  418. package/src/compiler/checker-iteration.ts +1206 -0
  419. package/src/compiler/checker-javascript.ts +502 -0
  420. package/src/compiler/checker-jsdoc.ts +360 -0
  421. package/src/compiler/checker-jsx.ts +1924 -0
  422. package/src/compiler/checker-literals.ts +61 -0
  423. package/src/compiler/checker-members.ts +2436 -0
  424. package/src/compiler/checker-modules.ts +2886 -0
  425. package/src/compiler/checker-narrowing.ts +3230 -0
  426. package/src/compiler/checker-object-literals.ts +575 -0
  427. package/src/compiler/checker-operators.ts +1422 -0
  428. package/src/compiler/checker-overloads.ts +328 -0
  429. package/src/compiler/checker-property-access.ts +906 -0
  430. package/src/compiler/checker-services.ts +1149 -0
  431. package/src/compiler/checker-signatures.ts +1032 -0
  432. package/src/compiler/checker-source-file.ts +732 -0
  433. package/src/compiler/checker-statements.ts +292 -0
  434. package/src/compiler/checker-super.ts +261 -0
  435. package/src/compiler/checker-symbol-types.ts +2107 -0
  436. package/src/compiler/checker-symbols.ts +2150 -0
  437. package/src/compiler/checker-type-factory.ts +2579 -0
  438. package/src/compiler/checker-type-nodes.ts +1033 -0
  439. package/src/compiler/checker-type-operators.ts +2502 -0
  440. package/src/compiler/checker-types.ts +2340 -0
  441. package/src/compiler/checker-unused.ts +642 -0
  442. package/src/compiler/checker-utilities.ts +161 -0
  443. package/src/compiler/checker.ts +1116 -0
  444. package/src/compiler/command-line.ts +436 -0
  445. package/src/compiler/compile-program.ts +439 -0
  446. package/src/compiler/decoder.ts +1209 -0
  447. package/src/compiler/diagnostic-locales.ts +86 -0
  448. package/src/compiler/diagnostic-messages.ts +2349 -0
  449. package/src/compiler/diagnostics.ts +897 -0
  450. package/src/compiler/emitter.ts +434 -0
  451. package/src/compiler/encoder.ts +1945 -0
  452. package/src/compiler/file-include.ts +673 -0
  453. package/src/compiler/file-loader.ts +1528 -0
  454. package/src/compiler/file-system.ts +143 -0
  455. package/src/compiler/flow.ts +89 -0
  456. package/src/compiler/help.ts +473 -0
  457. package/src/compiler/incremental.ts +2784 -0
  458. package/src/compiler/init.ts +141 -0
  459. package/src/compiler/instantiation.ts +894 -0
  460. package/src/compiler/jsdoc.ts +1386 -0
  461. package/src/compiler/link-tables.ts +98 -0
  462. package/src/compiler/locale-data.ts +203 -0
  463. package/src/compiler/locale.ts +307 -0
  464. package/src/compiler/locales/cs-CZ.ts +5 -0
  465. package/src/compiler/locales/de-DE.ts +5 -0
  466. package/src/compiler/locales/es-ES.ts +5 -0
  467. package/src/compiler/locales/fr-FR.ts +5 -0
  468. package/src/compiler/locales/it-IT.ts +5 -0
  469. package/src/compiler/locales/ja-JP.ts +5 -0
  470. package/src/compiler/locales/ko-KR.ts +5 -0
  471. package/src/compiler/locales/pl-PL.ts +5 -0
  472. package/src/compiler/locales/pt-BR.ts +5 -0
  473. package/src/compiler/locales/ru-RU.ts +5 -0
  474. package/src/compiler/locales/tr-TR.ts +5 -0
  475. package/src/compiler/locales/zh-CN.ts +5 -0
  476. package/src/compiler/locales/zh-TW.ts +5 -0
  477. package/src/compiler/module-resolution-types.ts +243 -0
  478. package/src/compiler/module-resolution.ts +2072 -0
  479. package/src/compiler/module-specifiers.ts +1491 -0
  480. package/src/compiler/name-resolver.ts +646 -0
  481. package/src/compiler/node-builder-names.ts +1069 -0
  482. package/src/compiler/node-builder-pseudo.ts +892 -0
  483. package/src/compiler/node-builder-reuse.ts +764 -0
  484. package/src/compiler/node-builder.ts +3425 -0
  485. package/src/compiler/option-declarations.ts +1560 -0
  486. package/src/compiler/options.ts +1576 -0
  487. package/src/compiler/output-paths.ts +334 -0
  488. package/src/compiler/package-json.ts +1083 -0
  489. package/src/compiler/parallel-check.ts +1951 -0
  490. package/src/compiler/parallel-parse.ts +590 -0
  491. package/src/compiler/parse-thread.ts +140 -0
  492. package/src/compiler/parser.ts +7716 -0
  493. package/src/compiler/path.ts +717 -0
  494. package/src/compiler/printer/async-helpers.ts +183 -0
  495. package/src/compiler/printer/auto-generate.ts +27 -0
  496. package/src/compiler/printer/decorator-helpers.ts +218 -0
  497. package/src/compiler/printer/emit-context.ts +679 -0
  498. package/src/compiler/printer/emit-flags.ts +64 -0
  499. package/src/compiler/printer/factory-base.ts +2577 -0
  500. package/src/compiler/printer/factory.ts +764 -0
  501. package/src/compiler/printer/helpers.ts +291 -0
  502. package/src/compiler/printer/name-generator.ts +372 -0
  503. package/src/compiler/printer/printer.ts +5072 -0
  504. package/src/compiler/printer/text-writer.ts +183 -0
  505. package/src/compiler/printer/utilities.ts +884 -0
  506. package/src/compiler/program-checker.ts +592 -0
  507. package/src/compiler/program-utilities.ts +435 -0
  508. package/src/compiler/program.ts +1419 -0
  509. package/src/compiler/pseudo-bigint.ts +62 -0
  510. package/src/compiler/regexp-checker.ts +1142 -0
  511. package/src/compiler/relations.ts +5149 -0
  512. package/src/compiler/reparser.ts +1566 -0
  513. package/src/compiler/scanner.ts +2951 -0
  514. package/src/compiler/show-config.ts +239 -0
  515. package/src/compiler/side-state.ts +125 -0
  516. package/src/compiler/sourcemap.ts +366 -0
  517. package/src/compiler/spelling.ts +122 -0
  518. package/src/compiler/symbol-accessibility.ts +1071 -0
  519. package/src/compiler/symbol.ts +439 -0
  520. package/src/compiler/symlinks.ts +137 -0
  521. package/src/compiler/syntax-kind.ts +391 -0
  522. package/src/compiler/thread-entry.ts +191 -0
  523. package/src/compiler/timeline.ts +53 -0
  524. package/src/compiler/transformers/alias-references.ts +757 -0
  525. package/src/compiler/transformers/async-utilities.ts +335 -0
  526. package/src/compiler/transformers/async.ts +838 -0
  527. package/src/compiler/transformers/class-fields.ts +2967 -0
  528. package/src/compiler/transformers/class-utilities.ts +324 -0
  529. package/src/compiler/transformers/commonjs-module.ts +1621 -0
  530. package/src/compiler/transformers/const-enum-inliner.ts +50 -0
  531. package/src/compiler/transformers/declarations-diagnostics.ts +832 -0
  532. package/src/compiler/transformers/declarations-pseudo.ts +966 -0
  533. package/src/compiler/transformers/declarations-resolver.ts +249 -0
  534. package/src/compiler/transformers/declarations-syntactic.ts +1859 -0
  535. package/src/compiler/transformers/declarations-tracker.ts +269 -0
  536. package/src/compiler/transformers/declarations.ts +3120 -0
  537. package/src/compiler/transformers/decorator-metadata.ts +697 -0
  538. package/src/compiler/transformers/decorator-utilities.ts +283 -0
  539. package/src/compiler/transformers/destructuring.ts +708 -0
  540. package/src/compiler/transformers/downlevel.ts +50 -0
  541. package/src/compiler/transformers/emit-resolver.ts +258 -0
  542. package/src/compiler/transformers/es-decorators.ts +2682 -0
  543. package/src/compiler/transformers/exponentiation.ts +80 -0
  544. package/src/compiler/transformers/external-module-info.ts +412 -0
  545. package/src/compiler/transformers/for-await.ts +687 -0
  546. package/src/compiler/transformers/import-elision.ts +152 -0
  547. package/src/compiler/transformers/jsx-entities.ts +256 -0
  548. package/src/compiler/transformers/jsx.ts +824 -0
  549. package/src/compiler/transformers/legacy-decorators.ts +726 -0
  550. package/src/compiler/transformers/logical-assignment.ts +75 -0
  551. package/src/compiler/transformers/module-utilities.ts +42 -0
  552. package/src/compiler/transformers/module.ts +474 -0
  553. package/src/compiler/transformers/named-evaluation.ts +389 -0
  554. package/src/compiler/transformers/nullish-coalescing.ts +35 -0
  555. package/src/compiler/transformers/object-rest-spread.ts +577 -0
  556. package/src/compiler/transformers/optional-catch.ts +29 -0
  557. package/src/compiler/transformers/optional-chain.ts +246 -0
  558. package/src/compiler/transformers/reference-resolver.ts +1201 -0
  559. package/src/compiler/transformers/runtime-syntax.ts +942 -0
  560. package/src/compiler/transformers/subtree-facts.ts +245 -0
  561. package/src/compiler/transformers/syntax-facts.ts +353 -0
  562. package/src/compiler/transformers/tagged-template.ts +167 -0
  563. package/src/compiler/transformers/transformer.ts +56 -0
  564. package/src/compiler/transformers/type-eraser.ts +520 -0
  565. package/src/compiler/transformers/type-serialization.ts +374 -0
  566. package/src/compiler/transformers/using.ts +613 -0
  567. package/src/compiler/transformers/utilities.ts +419 -0
  568. package/src/compiler/transformers/visitor-base.ts +1601 -0
  569. package/src/compiler/transformers/visitor-hooks.ts +252 -0
  570. package/src/compiler/tsc-build.ts +1418 -0
  571. package/src/compiler/tsc-cli.ts +666 -0
  572. package/src/compiler/tsc-compile.ts +437 -0
  573. package/src/compiler/tsc-watch.ts +854 -0
  574. package/src/compiler/tsconfig.ts +1574 -0
  575. package/src/compiler/type-printer.ts +110 -0
  576. package/src/compiler/types.ts +115 -0
  577. package/src/compiler/unicode-identifiers.ts +212 -0
  578. package/src/compiler/unicode-properties.ts +537 -0
  579. package/src/compiler/vfs-match.ts +597 -0
  580. package/src/compiler/xxh3.ts +650 -0
  581. package/src/library/ast.generated.ts +1685 -0
  582. package/src/library/ast.ts +104 -0
  583. package/src/library/checker.ts +384 -0
  584. package/src/library/compiler-options.generated.ts +114 -0
  585. package/src/library/diagnostics.ts +72 -0
  586. package/src/library/disk.ts +73 -0
  587. package/src/library/enums.generated.ts +1024 -0
  588. package/src/library/errors.ts +26 -0
  589. package/src/library/host.ts +63 -0
  590. package/src/library/index.ts +71 -0
  591. package/src/library/nodes.ts +232 -0
  592. package/src/library/options.ts +449 -0
  593. package/src/library/parse.ts +63 -0
  594. package/src/library/program.ts +293 -0
  595. package/src/library/symbols.ts +15 -0
  596. package/src/library/types.ts +359 -0
@@ -0,0 +1,51 @@
1
+ import { Identifier, type Node } from '../ast.js';
2
+ import type { EmitContext } from '../printer/emit-context.js';
3
+ import { VisitorBase } from './visitor-base.js';
4
+ export declare const enum FunctionFlags {
5
+ Normal = 0,
6
+ Generator = 1,
7
+ Async = 2,
8
+ Invalid = 4,
9
+ AsyncGenerator = 3
10
+ }
11
+ export declare function getFunctionFlags(node: Node): FunctionFlags;
12
+ export declare function isFunctionLikeDeclaration(node: Node): boolean;
13
+ /** Whether every parameter is a plain identifier without an initializer. */
14
+ export declare function isSimpleParameterList(parameters: Node[]): boolean;
15
+ /** The super-access tracking of one async body, saved while a nested one is transformed. */
16
+ export declare class SuperAccessScope {
17
+ readonly capturedSuperProperties: string[] | undefined;
18
+ readonly hasSuperElementAccess: boolean;
19
+ readonly hasSuperPropertyAssignment: boolean;
20
+ readonly superBinding: Identifier | undefined;
21
+ readonly superIndexBinding: Identifier | undefined;
22
+ constructor(capturedSuperProperties: string[] | undefined, hasSuperElementAccess: boolean, hasSuperPropertyAssignment: boolean, superBinding: Identifier | undefined, superIndexBinding: Identifier | undefined);
23
+ }
24
+ /** Tracks `super.x`, `super[x]` and assignments to them in an async body, and rewrites them. */
25
+ export declare class SuperAccess extends VisitorBase {
26
+ /** Property names read through `super.x`, in order; undefined outside of a method body. */
27
+ capturedSuperProperties: string[] | undefined;
28
+ hasSuperElementAccess: boolean;
29
+ hasSuperPropertyAssignment: boolean;
30
+ superBinding: Identifier | undefined;
31
+ superIndexBinding: Identifier | undefined;
32
+ constructor(context: EmitContext);
33
+ /** Starts tracking a new method body; returns the enclosing body's state. */
34
+ enter(): SuperAccessScope;
35
+ exit(saved: SuperAccessScope): boolean;
36
+ /** Whether the body accesses `super`, so it needs `_super` or `_superIndex`. */
37
+ needsHelpers(): boolean;
38
+ /** Records a super access or assignment for the enclosing method body. */
39
+ track(node: Node): boolean;
40
+ /** Replaces super accesses in an async body, which ends up in a generator where `super` is invalid. */
41
+ visit(node: Node): Node | undefined;
42
+ /** `super.x(args)` as `_super.x.call(this, args)`, `super[x](args)` as `_superIndex(x).call(this, args)`. */
43
+ private substituteCallExpression;
44
+ /** `_superIndex(x)`, or `_superIndex(x).value` when super properties are assigned. */
45
+ private createSuperElementAccess;
46
+ /**
47
+ * `const _super = Object.create(null, { x: { get: () => super.x, set: v => super.x = v } });`,
48
+ * with setters only when super properties are assigned.
49
+ */
50
+ createSuperAccessVariableStatement(): Node;
51
+ }
@@ -0,0 +1,260 @@
1
+ // Shared by the async function and async generator transforms: tracking `super` accesses in
2
+ // async bodies and rewriting them to `_super`/`_superIndex`, which work inside a generator.
3
+ import { ArrayLiteralExpression, BinaryExpression, CallExpression, ElementAccessExpression, Identifier, ObjectLiteralExpression, ParameterDeclaration, ParenthesizedExpression, PostfixUnaryExpression, PrefixUnaryExpression, PropertyAccessExpression, PropertyAssignment, ShorthandPropertyAssignment, SpreadAssignment, SpreadElement, getAsteriskToken, getBody, getModifiers, } from '../ast.js';
4
+ import { isAssignmentOperator } from '../ast-utilities.js';
5
+ import { VisitorBase } from './visitor-base.js';
6
+ export function getFunctionFlags(node) {
7
+ let flags = 0 /* FunctionFlags.Normal */;
8
+ switch (node.kind) {
9
+ case 263 /* SyntaxKind.FunctionDeclaration */:
10
+ case 219 /* SyntaxKind.FunctionExpression */:
11
+ case 175 /* SyntaxKind.MethodDeclaration */:
12
+ if (getAsteriskToken(node) !== undefined)
13
+ flags |= 1 /* FunctionFlags.Generator */;
14
+ if (hasAsyncModifier(node))
15
+ flags |= 2 /* FunctionFlags.Async */;
16
+ break;
17
+ case 220 /* SyntaxKind.ArrowFunction */:
18
+ if (hasAsyncModifier(node))
19
+ flags |= 2 /* FunctionFlags.Async */;
20
+ break;
21
+ case 177 /* SyntaxKind.Constructor */:
22
+ case 178 /* SyntaxKind.GetAccessor */:
23
+ case 179 /* SyntaxKind.SetAccessor */:
24
+ break;
25
+ default:
26
+ return 4 /* FunctionFlags.Invalid */;
27
+ }
28
+ if (getBody(node) === undefined)
29
+ flags |= 4 /* FunctionFlags.Invalid */;
30
+ return flags;
31
+ }
32
+ function hasAsyncModifier(node) {
33
+ const modifiers = getModifiers(node);
34
+ return modifiers !== undefined && (modifiers.modifierFlags & 1024 /* ModifierFlags.Async */) !== 0;
35
+ }
36
+ export function isFunctionLikeDeclaration(node) {
37
+ switch (node.kind) {
38
+ case 263 /* SyntaxKind.FunctionDeclaration */:
39
+ case 175 /* SyntaxKind.MethodDeclaration */:
40
+ case 177 /* SyntaxKind.Constructor */:
41
+ case 178 /* SyntaxKind.GetAccessor */:
42
+ case 179 /* SyntaxKind.SetAccessor */:
43
+ case 219 /* SyntaxKind.FunctionExpression */:
44
+ case 220 /* SyntaxKind.ArrowFunction */:
45
+ return true;
46
+ }
47
+ return false;
48
+ }
49
+ /** Whether every parameter is a plain identifier without an initializer. */
50
+ export function isSimpleParameterList(parameters) {
51
+ for (let i = 0; i < parameters.length; i++) {
52
+ const parameter = parameters[i];
53
+ if (!(parameter instanceof ParameterDeclaration))
54
+ continue;
55
+ if (parameter.initializer !== undefined || !(parameter.name instanceof Identifier))
56
+ return false;
57
+ }
58
+ return true;
59
+ }
60
+ /** The super-access tracking of one async body, saved while a nested one is transformed. */
61
+ export class SuperAccessScope {
62
+ capturedSuperProperties;
63
+ hasSuperElementAccess;
64
+ hasSuperPropertyAssignment;
65
+ superBinding;
66
+ superIndexBinding;
67
+ constructor(capturedSuperProperties, hasSuperElementAccess, hasSuperPropertyAssignment, superBinding, superIndexBinding) {
68
+ this.capturedSuperProperties = capturedSuperProperties;
69
+ this.hasSuperElementAccess = hasSuperElementAccess;
70
+ this.hasSuperPropertyAssignment = hasSuperPropertyAssignment;
71
+ this.superBinding = superBinding;
72
+ this.superIndexBinding = superIndexBinding;
73
+ }
74
+ }
75
+ /** Tracks `super.x`, `super[x]` and assignments to them in an async body, and rewrites them. */
76
+ export class SuperAccess extends VisitorBase {
77
+ /** Property names read through `super.x`, in order; undefined outside of a method body. */
78
+ capturedSuperProperties;
79
+ hasSuperElementAccess;
80
+ hasSuperPropertyAssignment;
81
+ superBinding;
82
+ superIndexBinding;
83
+ constructor(context) {
84
+ super(context);
85
+ this.capturedSuperProperties = undefined;
86
+ this.hasSuperElementAccess = false;
87
+ this.hasSuperPropertyAssignment = false;
88
+ this.superBinding = undefined;
89
+ this.superIndexBinding = undefined;
90
+ }
91
+ /** Starts tracking a new method body; returns the enclosing body's state. */
92
+ enter() {
93
+ const saved = new SuperAccessScope(this.capturedSuperProperties, this.hasSuperElementAccess, this.hasSuperPropertyAssignment, this.superBinding, this.superIndexBinding);
94
+ const flags = 16 /* GeneratedIdentifierFlags.Optimistic */ | 32 /* GeneratedIdentifierFlags.FileLevel */;
95
+ this.capturedSuperProperties = [];
96
+ this.hasSuperElementAccess = false;
97
+ this.hasSuperPropertyAssignment = false;
98
+ this.superBinding = this.factory.createUniqueName('_super', flags);
99
+ this.superIndexBinding = this.factory.createUniqueName('_superIndex', flags);
100
+ return saved;
101
+ }
102
+ exit(saved) {
103
+ this.capturedSuperProperties = saved.capturedSuperProperties;
104
+ this.hasSuperElementAccess = saved.hasSuperElementAccess;
105
+ this.hasSuperPropertyAssignment = saved.hasSuperPropertyAssignment;
106
+ this.superBinding = saved.superBinding;
107
+ this.superIndexBinding = saved.superIndexBinding;
108
+ return true;
109
+ }
110
+ /** Whether the body accesses `super`, so it needs `_super` or `_superIndex`. */
111
+ needsHelpers() {
112
+ return (this.capturedSuperProperties !== undefined &&
113
+ (this.capturedSuperProperties.length > 0 || this.hasSuperElementAccess));
114
+ }
115
+ /** Records a super access or assignment for the enclosing method body. */
116
+ track(node) {
117
+ const captured = this.capturedSuperProperties;
118
+ if (captured === undefined)
119
+ return false;
120
+ if (node instanceof PropertyAccessExpression) {
121
+ if (node.expression.kind === 107 /* SyntaxKind.SuperKeyword */ && node.name instanceof Identifier)
122
+ if (captured.indexOf(node.name.text) < 0)
123
+ captured.push(node.name.text);
124
+ }
125
+ else if (node instanceof ElementAccessExpression) {
126
+ if (node.expression.kind === 107 /* SyntaxKind.SuperKeyword */)
127
+ this.hasSuperElementAccess = true;
128
+ }
129
+ else if (node instanceof BinaryExpression) {
130
+ if (isAssignmentOperator(node.operatorToken.kind) && assignmentTargetContainsSuperProperty(node.left))
131
+ this.hasSuperPropertyAssignment = true;
132
+ }
133
+ else if (node instanceof PrefixUnaryExpression) {
134
+ if (isUpdateOperator(node.operator) && assignmentTargetContainsSuperProperty(node.operand))
135
+ this.hasSuperPropertyAssignment = true;
136
+ }
137
+ else if (node instanceof PostfixUnaryExpression) {
138
+ if (isUpdateOperator(node.operator) && assignmentTargetContainsSuperProperty(node.operand))
139
+ this.hasSuperPropertyAssignment = true;
140
+ }
141
+ return true;
142
+ }
143
+ /** Replaces super accesses in an async body, which ends up in a generator where `super` is invalid. */
144
+ visit(node) {
145
+ switch (node.kind) {
146
+ case 214 /* SyntaxKind.CallExpression */:
147
+ if (node instanceof CallExpression && isSuperProperty(node.expression))
148
+ return this.substituteCallExpression(node);
149
+ break;
150
+ case 212 /* SyntaxKind.PropertyAccessExpression */:
151
+ if (node instanceof PropertyAccessExpression && node.expression.kind === 107 /* SyntaxKind.SuperKeyword */)
152
+ return this.factory.createPropertyAccessExpression(this.superBinding, node.name);
153
+ break;
154
+ case 213 /* SyntaxKind.ElementAccessExpression */:
155
+ if (node instanceof ElementAccessExpression && node.expression.kind === 107 /* SyntaxKind.SuperKeyword */)
156
+ return this.createSuperElementAccess(node.argumentExpression);
157
+ break;
158
+ case 219 /* SyntaxKind.FunctionExpression */:
159
+ case 263 /* SyntaxKind.FunctionDeclaration */:
160
+ case 175 /* SyntaxKind.MethodDeclaration */:
161
+ case 178 /* SyntaxKind.GetAccessor */:
162
+ case 179 /* SyntaxKind.SetAccessor */:
163
+ case 177 /* SyntaxKind.Constructor */:
164
+ case 264 /* SyntaxKind.ClassDeclaration */:
165
+ case 232 /* SyntaxKind.ClassExpression */:
166
+ return node;
167
+ }
168
+ return this.visitEachChild(node);
169
+ }
170
+ /** `super.x(args)` as `_super.x.call(this, args)`, `super[x](args)` as `_superIndex(x).call(this, args)`. */
171
+ substituteCallExpression(call) {
172
+ const expression = call.expression;
173
+ const factory = this.factory;
174
+ let target;
175
+ if (expression instanceof PropertyAccessExpression)
176
+ target = factory.createPropertyAccessExpression(this.superBinding, expression.name);
177
+ else if (expression instanceof ElementAccessExpression)
178
+ target = this.createSuperElementAccess(expression.argumentExpression);
179
+ else
180
+ return this.visitEachChild(call);
181
+ const args = [factory.createKeywordExpression(109 /* SyntaxKind.ThisKeyword */)];
182
+ const visited = this.visitNodes(call.arguments);
183
+ if (visited !== undefined)
184
+ for (let i = 0; i < visited.nodes.length; i++)
185
+ args.push(visited.nodes[i]);
186
+ const result = factory.createCallExpression(factory.createPropertyAccessExpression(target, factory.createIdentifier('call')), args);
187
+ result.pos = call.pos;
188
+ result.end = call.end;
189
+ return result;
190
+ }
191
+ /** `_superIndex(x)`, or `_superIndex(x).value` when super properties are assigned. */
192
+ createSuperElementAccess(argument) {
193
+ const factory = this.factory;
194
+ const call = factory.createCallExpression(this.superIndexBinding, [argument]);
195
+ if (this.hasSuperPropertyAssignment)
196
+ return factory.createPropertyAccessExpression(call, factory.createIdentifier('value'));
197
+ return call;
198
+ }
199
+ /**
200
+ * `const _super = Object.create(null, { x: { get: () => super.x, set: v => super.x = v } });`,
201
+ * with setters only when super properties are assigned.
202
+ */
203
+ createSuperAccessVariableStatement() {
204
+ const factory = this.factory;
205
+ const accessors = [];
206
+ const names = this.capturedSuperProperties;
207
+ for (let i = 0; i < names.length; i++) {
208
+ const name = names[i];
209
+ const descriptor = [];
210
+ const getter = factory.createArrowFunction([], factory.createPropertyAccessExpression(factory.createKeywordExpression(107 /* SyntaxKind.SuperKeyword */), factory.createIdentifier(name)));
211
+ descriptor.push(factory.createPropertyAssignment(factory.createIdentifier('get'), getter));
212
+ if (this.hasSuperPropertyAssignment) {
213
+ const setter = factory.createArrowFunction([factory.createParameter(factory.createIdentifier('v'))], factory.createAssignment(factory.createPropertyAccessExpression(factory.createKeywordExpression(107 /* SyntaxKind.SuperKeyword */), factory.createIdentifier(name)), factory.createIdentifier('v')));
214
+ descriptor.push(factory.createPropertyAssignment(factory.createIdentifier('set'), setter));
215
+ }
216
+ accessors.push(factory.createPropertyAssignment(factory.createIdentifier(name), factory.createObjectLiteral(descriptor, false)));
217
+ }
218
+ const create = factory.createCallExpression(factory.createPropertyAccessExpression(factory.createIdentifier('Object'), factory.createIdentifier('create')), [factory.createKeywordExpression(105 /* SyntaxKind.NullKeyword */), factory.createObjectLiteral(accessors, true)]);
219
+ return factory.createVariableStatement(undefined, factory.createVariableDeclarationList(factory.createNodeList([factory.createVariableDeclaration(this.superBinding, undefined, undefined, create)]), 2 /* NodeFlags.Const */));
220
+ }
221
+ }
222
+ function isSuperProperty(node) {
223
+ if (node instanceof PropertyAccessExpression)
224
+ return node.expression.kind === 107 /* SyntaxKind.SuperKeyword */;
225
+ if (node instanceof ElementAccessExpression)
226
+ return node.expression.kind === 107 /* SyntaxKind.SuperKeyword */;
227
+ return false;
228
+ }
229
+ function isUpdateOperator(operator) {
230
+ return operator === 45 /* SyntaxKind.PlusPlusToken */ || operator === 46 /* SyntaxKind.MinusMinusToken */;
231
+ }
232
+ /** Whether an assignment target contains `super.x` or `super[x]`, checked top-down. */
233
+ function assignmentTargetContainsSuperProperty(node) {
234
+ if (node instanceof PropertyAccessExpression || node instanceof ElementAccessExpression)
235
+ return isSuperProperty(node);
236
+ if (node instanceof ParenthesizedExpression)
237
+ return assignmentTargetContainsSuperProperty(node.expression);
238
+ if (node instanceof SpreadElement)
239
+ return assignmentTargetContainsSuperProperty(node.expression);
240
+ if (node instanceof ArrayLiteralExpression) {
241
+ const elements = node.elements.nodes;
242
+ for (let i = 0; i < elements.length; i++)
243
+ if (assignmentTargetContainsSuperProperty(elements[i]))
244
+ return true;
245
+ return false;
246
+ }
247
+ if (node instanceof ObjectLiteralExpression) {
248
+ const properties = node.properties.nodes;
249
+ for (let i = 0; i < properties.length; i++) {
250
+ const property = properties[i];
251
+ if (property instanceof PropertyAssignment && assignmentTargetContainsSuperProperty(property.initializer))
252
+ return true;
253
+ if (property instanceof ShorthandPropertyAssignment && assignmentTargetContainsSuperProperty(property.name))
254
+ return true;
255
+ if (property instanceof SpreadAssignment && assignmentTargetContainsSuperProperty(property.expression))
256
+ return true;
257
+ }
258
+ }
259
+ return false;
260
+ }
@@ -0,0 +1,53 @@
1
+ import { type Node } from '../ast.js';
2
+ import type { EmitContext } from '../printer/emit-context.js';
3
+ import { type SyntaxFacts } from './syntax-facts.js';
4
+ import { Transformer } from './transformer.js';
5
+ export declare class AsyncFunctions extends Transformer {
6
+ private readonly facts;
7
+ private readonly superAccess;
8
+ private readonly asyncBodyVisitor;
9
+ private readonly fallbackVisitor;
10
+ private contextFlags;
11
+ private enclosingFunctionParameterNames;
12
+ /** The `_arguments` binding of the enclosing async function, if any. */
13
+ private argumentsBinding;
14
+ private argumentsUsed;
15
+ constructor(context: EmitContext, facts: SyntaxFacts);
16
+ visit(node: Node): Node | undefined;
17
+ private visitWorker;
18
+ private visitFunctionOrClass;
19
+ /** Rewrites `arguments` and `super` in subtrees without `await`, when inside an async body. */
20
+ fallback(node: Node): Node | undefined;
21
+ private visitSourceFile;
22
+ visitAsyncBodyNode(node: Node): Node | undefined;
23
+ private visitCatchClauseInAsyncBody;
24
+ private visitVariableStatementInAsyncBody;
25
+ private visitForInOrOfStatementInAsyncBody;
26
+ private visitForStatementInAsyncBody;
27
+ /** `await x` as `yield x`, except at the top level, where it's module syntax. */
28
+ private visitAwaitExpression;
29
+ private visitConstructor;
30
+ private visitMethodDeclaration;
31
+ private visitGetAccessor;
32
+ private visitSetAccessor;
33
+ private visitFunctionDeclaration;
34
+ private visitFunctionExpression;
35
+ private visitArrowFunction;
36
+ private visitArrowFunctionWorker;
37
+ private isVariableDeclarationListWithCollidingName;
38
+ private collidesWithParameterName;
39
+ private visitVariableDeclarationListWithCollidingNames;
40
+ private hoistVariable;
41
+ private transformInitializedVariable;
42
+ private transformMethodBody;
43
+ private createCaptureArgumentsStatement;
44
+ /**
45
+ * The outer function's parameters: the visited ones if simple, else placeholders up to the
46
+ * first initializer or rest, which keep `length` (and, for arrows, forward the arguments).
47
+ */
48
+ private transformAsyncFunctionParameterList;
49
+ private transformAsyncFunctionBody;
50
+ private transformAsyncFunctionBodyWorker;
51
+ private convertToFunctionBlock;
52
+ private getOriginalIfFunctionLike;
53
+ }