@soundscript/soundscript 0.1.12 → 0.1.15

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 (441) hide show
  1. package/package.json +15 -6
  2. package/project-transform/index.js +2 -0
  3. package/project-transform/index.ts +8 -0
  4. package/project-transform/src/annotation_syntax.js +948 -0
  5. package/project-transform/src/annotation_syntax.ts +1217 -0
  6. package/project-transform/src/build_package.js +475 -0
  7. package/project-transform/src/build_package.ts +683 -0
  8. package/project-transform/src/bundled/portable-web-globals.d.ts +153 -0
  9. package/project-transform/src/bundled/runtime_externs.js +220 -0
  10. package/project-transform/src/bundled/runtime_externs.ts +237 -0
  11. package/project-transform/src/bundled/sound-libs/lib.decorators.d.ts +385 -0
  12. package/project-transform/src/bundled/sound-libs/lib.decorators.legacy.d.ts +22 -0
  13. package/project-transform/src/bundled/sound-libs/lib.dom.asynciterable.d.ts +42 -0
  14. package/project-transform/src/bundled/sound-libs/lib.dom.d.ts +39440 -0
  15. package/project-transform/src/bundled/sound-libs/lib.es2015.collection.d.ts +149 -0
  16. package/project-transform/src/bundled/sound-libs/lib.es2015.core.d.ts +657 -0
  17. package/project-transform/src/bundled/sound-libs/lib.es2015.d.ts +28 -0
  18. package/project-transform/src/bundled/sound-libs/lib.es2015.generator.d.ts +77 -0
  19. package/project-transform/src/bundled/sound-libs/lib.es2015.iterable.d.ts +616 -0
  20. package/project-transform/src/bundled/sound-libs/lib.es2015.promise.d.ts +80 -0
  21. package/project-transform/src/bundled/sound-libs/lib.es2015.proxy.d.ts +128 -0
  22. package/project-transform/src/bundled/sound-libs/lib.es2015.reflect.d.ts +144 -0
  23. package/project-transform/src/bundled/sound-libs/lib.es2015.symbol.d.ts +46 -0
  24. package/project-transform/src/bundled/sound-libs/lib.es2015.symbol.wellknown.d.ts +170 -0
  25. package/project-transform/src/bundled/sound-libs/lib.es2016.array.include.d.ts +116 -0
  26. package/project-transform/src/bundled/sound-libs/lib.es2016.d.ts +21 -0
  27. package/project-transform/src/bundled/sound-libs/lib.es2017.arraybuffer.d.ts +21 -0
  28. package/project-transform/src/bundled/sound-libs/lib.es2017.d.ts +26 -0
  29. package/project-transform/src/bundled/sound-libs/lib.es2017.date.d.ts +31 -0
  30. package/project-transform/src/bundled/sound-libs/lib.es2017.object.d.ts +49 -0
  31. package/project-transform/src/bundled/sound-libs/lib.es2017.string.d.ts +45 -0
  32. package/project-transform/src/bundled/sound-libs/lib.es2017.typedarrays.d.ts +53 -0
  33. package/project-transform/src/bundled/sound-libs/lib.es2018.asyncgenerator.d.ts +77 -0
  34. package/project-transform/src/bundled/sound-libs/lib.es2018.asynciterable.d.ts +57 -0
  35. package/project-transform/src/bundled/sound-libs/lib.es2018.d.ts +24 -0
  36. package/project-transform/src/bundled/sound-libs/lib.es2018.promise.d.ts +30 -0
  37. package/project-transform/src/bundled/sound-libs/lib.es2018.regexp.d.ts +37 -0
  38. package/project-transform/src/bundled/sound-libs/lib.es2019.array.d.ts +79 -0
  39. package/project-transform/src/bundled/sound-libs/lib.es2019.d.ts +24 -0
  40. package/project-transform/src/bundled/sound-libs/lib.es2019.object.d.ts +47 -0
  41. package/project-transform/src/bundled/sound-libs/lib.es2019.string.d.ts +37 -0
  42. package/project-transform/src/bundled/sound-libs/lib.es2019.symbol.d.ts +24 -0
  43. package/project-transform/src/bundled/sound-libs/lib.es2020.bigint.d.ts +765 -0
  44. package/project-transform/src/bundled/sound-libs/lib.es2020.d.ts +27 -0
  45. package/project-transform/src/bundled/sound-libs/lib.es2020.date.d.ts +42 -0
  46. package/project-transform/src/bundled/sound-libs/lib.es2020.number.d.ts +28 -0
  47. package/project-transform/src/bundled/sound-libs/lib.es2020.promise.d.ts +49 -0
  48. package/project-transform/src/bundled/sound-libs/lib.es2020.string.d.ts +44 -0
  49. package/project-transform/src/bundled/sound-libs/lib.es2020.symbol.wellknown.d.ts +41 -0
  50. package/project-transform/src/bundled/sound-libs/lib.es2021.d.ts +23 -0
  51. package/project-transform/src/bundled/sound-libs/lib.es2021.promise.d.ts +48 -0
  52. package/project-transform/src/bundled/sound-libs/lib.es2021.string.d.ts +33 -0
  53. package/project-transform/src/bundled/sound-libs/lib.es2021.weakref.d.ts +78 -0
  54. package/project-transform/src/bundled/sound-libs/lib.es2022.array.d.ts +121 -0
  55. package/project-transform/src/bundled/sound-libs/lib.es2022.d.ts +25 -0
  56. package/project-transform/src/bundled/sound-libs/lib.es2022.error.d.ts +75 -0
  57. package/project-transform/src/bundled/sound-libs/lib.es2022.object.d.ts +26 -0
  58. package/project-transform/src/bundled/sound-libs/lib.es2022.regexp.d.ts +39 -0
  59. package/project-transform/src/bundled/sound-libs/lib.es2022.string.d.ts +25 -0
  60. package/project-transform/src/bundled/sound-libs/lib.es2023.array.d.ts +924 -0
  61. package/project-transform/src/bundled/sound-libs/lib.es2023.collection.d.ts +21 -0
  62. package/project-transform/src/bundled/sound-libs/lib.es2023.d.ts +22 -0
  63. package/project-transform/src/bundled/sound-libs/lib.es2024.arraybuffer.d.ts +65 -0
  64. package/project-transform/src/bundled/sound-libs/lib.es2024.collection.d.ts +29 -0
  65. package/project-transform/src/bundled/sound-libs/lib.es2024.d.ts +26 -0
  66. package/project-transform/src/bundled/sound-libs/lib.es2024.object.d.ts +33 -0
  67. package/project-transform/src/bundled/sound-libs/lib.es2024.promise.d.ts +35 -0
  68. package/project-transform/src/bundled/sound-libs/lib.es2024.regexp.d.ts +25 -0
  69. package/project-transform/src/bundled/sound-libs/lib.es2024.string.d.ts +29 -0
  70. package/project-transform/src/bundled/sound-libs/lib.es5.d.ts +4924 -0
  71. package/project-transform/src/bundled/sound_stdlib.js +142 -0
  72. package/project-transform/src/bundled/sound_stdlib.ts +180 -0
  73. package/project-transform/src/checker/analyze_project.js +1361 -0
  74. package/project-transform/src/checker/analyze_project.ts +2246 -0
  75. package/project-transform/src/checker/diagnostics.js +112 -0
  76. package/project-transform/src/checker/diagnostics.ts +222 -0
  77. package/project-transform/src/checker/engine/context.js +235 -0
  78. package/project-transform/src/checker/engine/context.ts +340 -0
  79. package/project-transform/src/checker/engine/diagnostic_codes.js +72 -0
  80. package/project-transform/src/checker/engine/diagnostic_codes.ts +95 -0
  81. package/project-transform/src/checker/engine/facts.js +35 -0
  82. package/project-transform/src/checker/engine/facts.ts +48 -0
  83. package/project-transform/src/checker/engine/types.js +1 -0
  84. package/project-transform/src/checker/engine/types.ts +485 -0
  85. package/project-transform/src/checker/proof_escape_hatch_diagnostics.js +104 -0
  86. package/project-transform/src/checker/proof_escape_hatch_diagnostics.ts +173 -0
  87. package/project-transform/src/checker/rules/async_surface.js +231 -0
  88. package/project-transform/src/checker/rules/async_surface.ts +335 -0
  89. package/project-transform/src/checker/rules/class_lifecycle.js +798 -0
  90. package/project-transform/src/checker/rules/class_lifecycle.ts +1276 -0
  91. package/project-transform/src/checker/rules/directive_validation.js +571 -0
  92. package/project-transform/src/checker/rules/directive_validation.ts +938 -0
  93. package/project-transform/src/checker/rules/directives.js +23 -0
  94. package/project-transform/src/checker/rules/directives.ts +25 -0
  95. package/project-transform/src/checker/rules/flow.js +202 -0
  96. package/project-transform/src/checker/rules/flow.ts +333 -0
  97. package/project-transform/src/checker/rules/flow_facts.js +601 -0
  98. package/project-transform/src/checker/rules/flow_facts.ts +978 -0
  99. package/project-transform/src/checker/rules/flow_invalidation.js +1119 -0
  100. package/project-transform/src/checker/rules/flow_invalidation.ts +2150 -0
  101. package/project-transform/src/checker/rules/flow_shared.js +2822 -0
  102. package/project-transform/src/checker/rules/flow_shared.ts +4383 -0
  103. package/project-transform/src/checker/rules/foreign_boundary.js +120 -0
  104. package/project-transform/src/checker/rules/foreign_boundary.ts +196 -0
  105. package/project-transform/src/checker/rules/foreign_projection.js +279 -0
  106. package/project-transform/src/checker/rules/foreign_projection.ts +425 -0
  107. package/project-transform/src/checker/rules/generated_helpers.js +13 -0
  108. package/project-transform/src/checker/rules/generated_helpers.ts +18 -0
  109. package/project-transform/src/checker/rules/index.js +35 -0
  110. package/project-transform/src/checker/rules/index.ts +49 -0
  111. package/project-transform/src/checker/rules/namespace_object.js +845 -0
  112. package/project-transform/src/checker/rules/namespace_object.ts +1224 -0
  113. package/project-transform/src/checker/rules/non_ordinary_recovery.js +1328 -0
  114. package/project-transform/src/checker/rules/non_ordinary_recovery.ts +2391 -0
  115. package/project-transform/src/checker/rules/null_prototype.js +3 -0
  116. package/project-transform/src/checker/rules/null_prototype.ts +6 -0
  117. package/project-transform/src/checker/rules/overloads.js +181 -0
  118. package/project-transform/src/checker/rules/overloads.ts +317 -0
  119. package/project-transform/src/checker/rules/predicate_verification.js +691 -0
  120. package/project-transform/src/checker/rules/predicate_verification.ts +1088 -0
  121. package/project-transform/src/checker/rules/prototype_hardening.js +237 -0
  122. package/project-transform/src/checker/rules/prototype_hardening.ts +343 -0
  123. package/project-transform/src/checker/rules/receiver_discipline.js +263 -0
  124. package/project-transform/src/checker/rules/receiver_discipline.ts +356 -0
  125. package/project-transform/src/checker/rules/relations.js +6861 -0
  126. package/project-transform/src/checker/rules/relations.ts +12158 -0
  127. package/project-transform/src/checker/rules/resolved_builtins.js +274 -0
  128. package/project-transform/src/checker/rules/resolved_builtins.ts +438 -0
  129. package/project-transform/src/checker/rules/trust.js +217 -0
  130. package/project-transform/src/checker/rules/trust.ts +301 -0
  131. package/project-transform/src/checker/rules/type_guards.js +173 -0
  132. package/project-transform/src/checker/rules/type_guards.ts +257 -0
  133. package/project-transform/src/checker/rules/universal.js +17 -0
  134. package/project-transform/src/checker/rules/universal.ts +22 -0
  135. package/project-transform/src/checker/rules/unsafe_value_origin.js +80 -0
  136. package/project-transform/src/checker/rules/unsafe_value_origin.ts +125 -0
  137. package/project-transform/src/checker/rules/unsound_imports.js +218 -0
  138. package/project-transform/src/checker/rules/unsound_imports.ts +301 -0
  139. package/project-transform/src/checker/rules/unsound_syntax.js +1695 -0
  140. package/project-transform/src/checker/rules/unsound_syntax.ts +2540 -0
  141. package/project-transform/src/checker/rules/value_types.js +206 -0
  142. package/project-transform/src/checker/rules/value_types.ts +407 -0
  143. package/project-transform/src/checker/timing.js +43 -0
  144. package/project-transform/src/checker/timing.ts +78 -0
  145. package/project-transform/src/checker/unsupported_feature_messages.js +337 -0
  146. package/project-transform/src/checker/unsupported_feature_messages.ts +531 -0
  147. package/project-transform/src/cli.js +892 -0
  148. package/project-transform/src/cli.ts +1476 -0
  149. package/project-transform/src/compiler/compile_project.js +319 -0
  150. package/project-transform/src/compiler/compile_project.ts +508 -0
  151. package/project-transform/src/compiler/errors.js +10 -0
  152. package/project-transform/src/compiler/errors.ts +29 -0
  153. package/project-transform/src/compiler/ir.js +1 -0
  154. package/project-transform/src/compiler/ir.ts +1526 -0
  155. package/project-transform/src/compiler/lower.js +30550 -0
  156. package/project-transform/src/compiler/lower.ts +43645 -0
  157. package/project-transform/src/compiler/lower_arrays.js +140 -0
  158. package/project-transform/src/compiler/lower_arrays.ts +190 -0
  159. package/project-transform/src/compiler/lower_strings.js +121 -0
  160. package/project-transform/src/compiler/lower_strings.ts +198 -0
  161. package/project-transform/src/compiler/lower_tagged.js +329 -0
  162. package/project-transform/src/compiler/lower_tagged.ts +427 -0
  163. package/project-transform/src/compiler/lower_views.js +171 -0
  164. package/project-transform/src/compiler/lower_views.ts +251 -0
  165. package/project-transform/src/compiler/object_keys.js +25 -0
  166. package/project-transform/src/compiler/object_keys.ts +35 -0
  167. package/project-transform/src/compiler/runtime_ir.js +30 -0
  168. package/project-transform/src/compiler/runtime_ir.ts +727 -0
  169. package/project-transform/src/compiler/tagged_boundary.js +18 -0
  170. package/project-transform/src/compiler/tagged_boundary.ts +37 -0
  171. package/project-transform/src/compiler/toolchain.js +170 -0
  172. package/project-transform/src/compiler/toolchain.ts +229 -0
  173. package/project-transform/src/compiler/unicode_case_data.js +2102 -0
  174. package/project-transform/src/compiler/unicode_case_data.ts +2112 -0
  175. package/project-transform/src/compiler/wasm_js_host_runtime.js +656 -0
  176. package/project-transform/src/compiler/wasm_js_host_runtime.ts +762 -0
  177. package/project-transform/src/compiler/wat_arrays.js +3132 -0
  178. package/project-transform/src/compiler/wat_arrays.ts +3768 -0
  179. package/project-transform/src/compiler/wat_emitter.js +17952 -0
  180. package/project-transform/src/compiler/wat_emitter.ts +22812 -0
  181. package/project-transform/src/compiler/wat_strings.js +129 -0
  182. package/project-transform/src/compiler/wat_strings.ts +187 -0
  183. package/project-transform/src/compiler/wat_tagged.js +548 -0
  184. package/project-transform/src/compiler/wat_tagged.ts +674 -0
  185. package/project-transform/src/compiler_generator_runner.js +153 -0
  186. package/project-transform/src/compiler_generator_runner.ts +171 -0
  187. package/project-transform/src/compiler_object_test_helpers.js +69 -0
  188. package/project-transform/src/compiler_object_test_helpers.ts +96 -0
  189. package/project-transform/src/compiler_promise_runner.js +2116 -0
  190. package/project-transform/src/compiler_promise_runner.ts +2184 -0
  191. package/project-transform/src/compiler_test_helpers.js +854 -0
  192. package/project-transform/src/compiler_test_helpers.ts +1087 -0
  193. package/project-transform/src/config.js +568 -0
  194. package/project-transform/src/config.ts +892 -0
  195. package/project-transform/src/diagnostic_metadata.js +67 -0
  196. package/project-transform/src/diagnostic_metadata.ts +99 -0
  197. package/project-transform/src/diagnostic_reference.js +1368 -0
  198. package/project-transform/src/diagnostic_reference.ts +1523 -0
  199. package/project-transform/src/editor_diagnostics_worker.js +176 -0
  200. package/project-transform/src/editor_diagnostics_worker.ts +250 -0
  201. package/project-transform/src/editor_projection.js +224 -0
  202. package/project-transform/src/editor_projection.ts +421 -0
  203. package/project-transform/src/frontend/builtin_expanded_program_test_cleanup.js +47 -0
  204. package/project-transform/src/frontend/builtin_expanded_program_test_cleanup.ts +72 -0
  205. package/project-transform/src/frontend/builtin_macro_support.js +842 -0
  206. package/project-transform/src/frontend/builtin_macro_support.ts +1386 -0
  207. package/project-transform/src/frontend/builtin_macros.js +409 -0
  208. package/project-transform/src/frontend/builtin_macros.ts +542 -0
  209. package/project-transform/src/frontend/component_poc_runtime.js +279 -0
  210. package/project-transform/src/frontend/component_poc_runtime.ts +372 -0
  211. package/project-transform/src/frontend/css_macro.js +148 -0
  212. package/project-transform/src/frontend/css_macro.ts +222 -0
  213. package/project-transform/src/frontend/derive_macros.js +2072 -0
  214. package/project-transform/src/frontend/derive_macros.ts +3188 -0
  215. package/project-transform/src/frontend/embedded_fragment_support.js +106 -0
  216. package/project-transform/src/frontend/embedded_fragment_support.ts +172 -0
  217. package/project-transform/src/frontend/error_normalization.js +403 -0
  218. package/project-transform/src/frontend/error_normalization.ts +832 -0
  219. package/project-transform/src/frontend/error_stdlib_support.js +1 -0
  220. package/project-transform/src/frontend/error_stdlib_support.ts +6 -0
  221. package/project-transform/src/frontend/expand_project.js +169 -0
  222. package/project-transform/src/frontend/expand_project.ts +248 -0
  223. package/project-transform/src/frontend/format_soundscript.js +297 -0
  224. package/project-transform/src/frontend/format_soundscript.ts +582 -0
  225. package/project-transform/src/frontend/graphql_macro.js +174 -0
  226. package/project-transform/src/frontend/graphql_macro.ts +253 -0
  227. package/project-transform/src/frontend/hash_context.js +83 -0
  228. package/project-transform/src/frontend/hash_context.ts +113 -0
  229. package/project-transform/src/frontend/hkt_macro.js +448 -0
  230. package/project-transform/src/frontend/hkt_macro.ts +897 -0
  231. package/project-transform/src/frontend/import_binding_usage.js +190 -0
  232. package/project-transform/src/frontend/import_binding_usage.ts +277 -0
  233. package/project-transform/src/frontend/macro_advanced_backend_adapter.js +58 -0
  234. package/project-transform/src/frontend/macro_advanced_backend_adapter.ts +123 -0
  235. package/project-transform/src/frontend/macro_advanced_context.js +826 -0
  236. package/project-transform/src/frontend/macro_advanced_context.ts +1102 -0
  237. package/project-transform/src/frontend/macro_advanced_output.js +21 -0
  238. package/project-transform/src/frontend/macro_advanced_output.ts +41 -0
  239. package/project-transform/src/frontend/macro_api.js +353 -0
  240. package/project-transform/src/frontend/macro_api.ts +1722 -0
  241. package/project-transform/src/frontend/macro_api_internal.js +35 -0
  242. package/project-transform/src/frontend/macro_api_internal.ts +80 -0
  243. package/project-transform/src/frontend/macro_api_module_support.js +39 -0
  244. package/project-transform/src/frontend/macro_api_module_support.ts +65 -0
  245. package/project-transform/src/frontend/macro_backend_adapter.js +272 -0
  246. package/project-transform/src/frontend/macro_backend_adapter.ts +420 -0
  247. package/project-transform/src/frontend/macro_context.js +816 -0
  248. package/project-transform/src/frontend/macro_context.ts +1105 -0
  249. package/project-transform/src/frontend/macro_debug.js +99 -0
  250. package/project-transform/src/frontend/macro_debug.ts +157 -0
  251. package/project-transform/src/frontend/macro_definition_support.js +28 -0
  252. package/project-transform/src/frontend/macro_definition_support.ts +73 -0
  253. package/project-transform/src/frontend/macro_errors.js +40 -0
  254. package/project-transform/src/frontend/macro_errors.ts +70 -0
  255. package/project-transform/src/frontend/macro_expander.js +919 -0
  256. package/project-transform/src/frontend/macro_expander.ts +1611 -0
  257. package/project-transform/src/frontend/macro_factory_support.js +176 -0
  258. package/project-transform/src/frontend/macro_factory_support.ts +263 -0
  259. package/project-transform/src/frontend/macro_host_ast_internal.js +64 -0
  260. package/project-transform/src/frontend/macro_host_ast_internal.ts +109 -0
  261. package/project-transform/src/frontend/macro_index.js +27 -0
  262. package/project-transform/src/frontend/macro_index.ts +50 -0
  263. package/project-transform/src/frontend/macro_loader.js +281 -0
  264. package/project-transform/src/frontend/macro_loader.ts +506 -0
  265. package/project-transform/src/frontend/macro_operand_semantics.js +838 -0
  266. package/project-transform/src/frontend/macro_operand_semantics.ts +1489 -0
  267. package/project-transform/src/frontend/macro_output.js +54 -0
  268. package/project-transform/src/frontend/macro_output.ts +123 -0
  269. package/project-transform/src/frontend/macro_parser.js +611 -0
  270. package/project-transform/src/frontend/macro_parser.ts +832 -0
  271. package/project-transform/src/frontend/macro_resolver.js +69 -0
  272. package/project-transform/src/frontend/macro_resolver.ts +125 -0
  273. package/project-transform/src/frontend/macro_rewrite.js +285 -0
  274. package/project-transform/src/frontend/macro_rewrite.ts +442 -0
  275. package/project-transform/src/frontend/macro_runtime_support.js +232 -0
  276. package/project-transform/src/frontend/macro_runtime_support.ts +324 -0
  277. package/project-transform/src/frontend/macro_scanner.js +393 -0
  278. package/project-transform/src/frontend/macro_scanner.ts +455 -0
  279. package/project-transform/src/frontend/macro_semantic_backend_adapter.js +87 -0
  280. package/project-transform/src/frontend/macro_semantic_backend_adapter.ts +166 -0
  281. package/project-transform/src/frontend/macro_semantic_context.js +5 -0
  282. package/project-transform/src/frontend/macro_semantic_context.ts +12 -0
  283. package/project-transform/src/frontend/macro_semantic_output.js +24 -0
  284. package/project-transform/src/frontend/macro_semantic_output.ts +47 -0
  285. package/project-transform/src/frontend/macro_semantic_types.js +1 -0
  286. package/project-transform/src/frontend/macro_semantic_types.ts +98 -0
  287. package/project-transform/src/frontend/macro_semantics.js +1172 -0
  288. package/project-transform/src/frontend/macro_semantics.ts +1502 -0
  289. package/project-transform/src/frontend/macro_site_kind_support.js +164 -0
  290. package/project-transform/src/frontend/macro_site_kind_support.ts +255 -0
  291. package/project-transform/src/frontend/macro_syntax_internal.js +1950 -0
  292. package/project-transform/src/frontend/macro_syntax_internal.ts +3338 -0
  293. package/project-transform/src/frontend/macro_templates.js +57 -0
  294. package/project-transform/src/frontend/macro_templates.ts +143 -0
  295. package/project-transform/src/frontend/macro_test_helpers.js +82 -0
  296. package/project-transform/src/frontend/macro_test_helpers.ts +136 -0
  297. package/project-transform/src/frontend/macro_types.js +1 -0
  298. package/project-transform/src/frontend/macro_types.ts +103 -0
  299. package/project-transform/src/frontend/macro_vm.js +39 -0
  300. package/project-transform/src/frontend/macro_vm.ts +113 -0
  301. package/project-transform/src/frontend/match_macro.js +885 -0
  302. package/project-transform/src/frontend/match_macro.ts +1220 -0
  303. package/project-transform/src/frontend/numeric_normalization.js +824 -0
  304. package/project-transform/src/frontend/numeric_normalization.ts +1380 -0
  305. package/project-transform/src/frontend/numeric_prelude.js +278 -0
  306. package/project-transform/src/frontend/numeric_prelude.ts +370 -0
  307. package/project-transform/src/frontend/project_frontend.js +2396 -0
  308. package/project-transform/src/frontend/project_frontend.ts +3776 -0
  309. package/project-transform/src/frontend/project_macro_support.js +1401 -0
  310. package/project-transform/src/frontend/project_macro_support.ts +2137 -0
  311. package/project-transform/src/frontend/sql_macro.js +175 -0
  312. package/project-transform/src/frontend/sql_macro.ts +254 -0
  313. package/project-transform/src/frontend/sql_stdlib_support.js +1 -0
  314. package/project-transform/src/frontend/sql_stdlib_support.ts +6 -0
  315. package/project-transform/src/frontend/std_package_support.js +228 -0
  316. package/project-transform/src/frontend/std_package_support.ts +400 -0
  317. package/project-transform/src/frontend/value_normalization.js +306 -0
  318. package/project-transform/src/frontend/value_normalization.ts +599 -0
  319. package/project-transform/src/lsp/project_service.js +4771 -0
  320. package/project-transform/src/lsp/project_service.ts +7580 -0
  321. package/project-transform/src/lsp/protocol.js +9 -0
  322. package/project-transform/src/lsp/protocol.ts +38 -0
  323. package/project-transform/src/lsp/server.js +355 -0
  324. package/project-transform/src/lsp/server.ts +671 -0
  325. package/project-transform/src/lsp/session.js +49 -0
  326. package/project-transform/src/lsp/session.ts +48 -0
  327. package/project-transform/src/lsp/timing.js +43 -0
  328. package/project-transform/src/lsp/timing.ts +76 -0
  329. package/project-transform/src/lsp/transport.js +205 -0
  330. package/project-transform/src/lsp/transport.ts +253 -0
  331. package/project-transform/src/lsp_main.js +5 -0
  332. package/project-transform/src/lsp_main.ts +7 -0
  333. package/project-transform/src/macros.d.ts +1 -0
  334. package/project-transform/src/macros.js +1 -0
  335. package/project-transform/src/macros.ts +1 -0
  336. package/project-transform/src/main.js +24 -0
  337. package/project-transform/src/main.ts +28 -0
  338. package/project-transform/src/platform/host.js +264 -0
  339. package/project-transform/src/platform/host.ts +343 -0
  340. package/project-transform/src/platform/path.js +8 -0
  341. package/project-transform/src/platform/path.ts +20 -0
  342. package/project-transform/src/public_macro_api/macro_api.d.ts +1054 -0
  343. package/project-transform/src/public_macro_api/macro_semantic_types.d.ts +66 -0
  344. package/project-transform/src/public_macro_api/macro_types.d.ts +70 -0
  345. package/project-transform/src/run_program.js +14 -0
  346. package/project-transform/src/run_program.ts +33 -0
  347. package/project-transform/src/runtime/materialize.js +371 -0
  348. package/project-transform/src/runtime/materialize.ts +502 -0
  349. package/project-transform/src/runtime/on_demand.js +203 -0
  350. package/project-transform/src/runtime/on_demand.ts +305 -0
  351. package/project-transform/src/runtime/source_maps.js +205 -0
  352. package/project-transform/src/runtime/source_maps.ts +297 -0
  353. package/project-transform/src/runtime/transform.js +148 -0
  354. package/project-transform/src/runtime/transform.ts +295 -0
  355. package/project-transform/src/service/types.js +1 -0
  356. package/project-transform/src/service/types.ts +22 -0
  357. package/project-transform/src/soundscript_packages.js +477 -0
  358. package/project-transform/src/soundscript_packages.ts +754 -0
  359. package/project-transform/src/soundscript_runtime_specifiers.js +88 -0
  360. package/project-transform/src/soundscript_runtime_specifiers.ts +96 -0
  361. package/project-transform/src/stdlib/async.d.ts +81 -0
  362. package/project-transform/src/stdlib/async.js +213 -0
  363. package/project-transform/src/stdlib/async.ts +315 -0
  364. package/project-transform/src/stdlib/codec.d.ts +32 -0
  365. package/project-transform/src/stdlib/codec.js +30 -0
  366. package/project-transform/src/stdlib/codec.ts +76 -0
  367. package/project-transform/src/stdlib/compare.d.ts +28 -0
  368. package/project-transform/src/stdlib/compare.js +115 -0
  369. package/project-transform/src/stdlib/compare.ts +151 -0
  370. package/project-transform/src/stdlib/css.d.ts +16 -0
  371. package/project-transform/src/stdlib/css.js +9 -0
  372. package/project-transform/src/stdlib/css.ts +28 -0
  373. package/project-transform/src/stdlib/debug.d.ts +2 -0
  374. package/project-transform/src/stdlib/debug.js +9 -0
  375. package/project-transform/src/stdlib/debug.ts +10 -0
  376. package/project-transform/src/stdlib/decode.d.ts +86 -0
  377. package/project-transform/src/stdlib/decode.js +254 -0
  378. package/project-transform/src/stdlib/decode.ts +390 -0
  379. package/project-transform/src/stdlib/derive.d.ts +6 -0
  380. package/project-transform/src/stdlib/derive.js +7 -0
  381. package/project-transform/src/stdlib/derive.ts +7 -0
  382. package/project-transform/src/stdlib/encode.d.ts +100 -0
  383. package/project-transform/src/stdlib/encode.js +130 -0
  384. package/project-transform/src/stdlib/encode.ts +259 -0
  385. package/project-transform/src/stdlib/failures.d.ts +23 -0
  386. package/project-transform/src/stdlib/failures.js +41 -0
  387. package/project-transform/src/stdlib/failures.ts +64 -0
  388. package/project-transform/src/stdlib/fetch.d.ts +67 -0
  389. package/project-transform/src/stdlib/fetch.js +5 -0
  390. package/project-transform/src/stdlib/fetch.ts +11 -0
  391. package/project-transform/src/stdlib/graphql.d.ts +16 -0
  392. package/project-transform/src/stdlib/graphql.js +9 -0
  393. package/project-transform/src/stdlib/graphql.ts +28 -0
  394. package/project-transform/src/stdlib/hash.d.ts +34 -0
  395. package/project-transform/src/stdlib/hash.js +110 -0
  396. package/project-transform/src/stdlib/hash.ts +188 -0
  397. package/project-transform/src/stdlib/hkt.d.ts +40 -0
  398. package/project-transform/src/stdlib/hkt.js +3 -0
  399. package/project-transform/src/stdlib/hkt.ts +41 -0
  400. package/project-transform/src/stdlib/index.d.ts +9 -0
  401. package/project-transform/src/stdlib/index.js +15 -0
  402. package/project-transform/src/stdlib/index.ts +23 -0
  403. package/project-transform/src/stdlib/json.d.ts +125 -0
  404. package/project-transform/src/stdlib/json.js +764 -0
  405. package/project-transform/src/stdlib/json.ts +1034 -0
  406. package/project-transform/src/stdlib/match.d.ts +11 -0
  407. package/project-transform/src/stdlib/match.js +13 -0
  408. package/project-transform/src/stdlib/match.ts +26 -0
  409. package/project-transform/src/stdlib/numerics.d.ts +523 -0
  410. package/project-transform/src/stdlib/numerics.js +1356 -0
  411. package/project-transform/src/stdlib/numerics.ts +1937 -0
  412. package/project-transform/src/stdlib/random.d.ts +19 -0
  413. package/project-transform/src/stdlib/random.js +3 -0
  414. package/project-transform/src/stdlib/random.ts +5 -0
  415. package/project-transform/src/stdlib/result.d.ts +68 -0
  416. package/project-transform/src/stdlib/result.js +139 -0
  417. package/project-transform/src/stdlib/result.ts +248 -0
  418. package/project-transform/src/stdlib/sql.d.ts +22 -0
  419. package/project-transform/src/stdlib/sql.js +23 -0
  420. package/project-transform/src/stdlib/sql.ts +53 -0
  421. package/project-transform/src/stdlib/text.d.ts +24 -0
  422. package/project-transform/src/stdlib/text.js +3 -0
  423. package/project-transform/src/stdlib/text.ts +4 -0
  424. package/project-transform/src/stdlib/thunk.d.ts +2 -0
  425. package/project-transform/src/stdlib/thunk.js +9 -0
  426. package/project-transform/src/stdlib/thunk.ts +15 -0
  427. package/project-transform/src/stdlib/typeclasses.d.ts +57 -0
  428. package/project-transform/src/stdlib/typeclasses.js +78 -0
  429. package/project-transform/src/stdlib/typeclasses.ts +173 -0
  430. package/project-transform/src/stdlib/url.d.ts +37 -0
  431. package/project-transform/src/stdlib/url.js +3 -0
  432. package/project-transform/src/stdlib/url.ts +4 -0
  433. package/project-transform/src/stdlib/value.d.ts +9 -0
  434. package/project-transform/src/stdlib/value.js +104 -0
  435. package/project-transform/src/stdlib/value.ts +133 -0
  436. package/project-transform/src/test_installed_stdlib.js +147 -0
  437. package/project-transform/src/test_installed_stdlib.ts +245 -0
  438. package/project-transform/src/test_macro_package_fixture.js +50 -0
  439. package/project-transform/src/test_macro_package_fixture.ts +68 -0
  440. package/project-transform/src/value_deep_safe.js +191 -0
  441. package/project-transform/src/value_deep_safe.ts +273 -0
@@ -0,0 +1,1054 @@
1
+ import type {
2
+ CanonicalFailureInfo,
3
+ MacroDependencySet,
4
+ CanonicalResultCarrierInfo,
5
+ CanonicalResultInfo,
6
+ MacroFiniteCase,
7
+ MacroFunctionContext,
8
+ MacroTryCarrierInfo,
9
+ MacroType,
10
+ } from './macro_semantic_types.d.ts';
11
+ import type { SourceSpan } from './macro_types.d.ts';
12
+ /**
13
+ * Public macro authoring surface.
14
+ *
15
+ * Macro authors should depend on this module, not on frontend implementation modules such as
16
+ * `macro_syntax_internal.ts` or `macro_host_ast_internal.ts`.
17
+ */
18
+ export type MacroInvocationForm = 'block' | 'arglist' | 'decl' | 'arglist_decl';
19
+ /**
20
+ * Declaration-position macros may currently target only module-scope declarations of these kinds.
21
+ */
22
+ export type MacroDeclarationKind = 'class' | 'function' | 'interface' | 'typeAlias';
23
+ /**
24
+ * `replace` fully replaces the annotated declaration.
25
+ *
26
+ * `augment` preserves the original declaration unchanged and appends generated sibling statements
27
+ * immediately after it.
28
+ */
29
+ export type MacroDeclarationExpansionMode = 'augment' | 'replace';
30
+ export type MacroBinaryOperator = '&' | '<' | '+' | '=' | '!==' | '===' | '|';
31
+ export type MacroUnaryOperator = '!';
32
+ export type MacroModifierName =
33
+ | 'async'
34
+ | 'default'
35
+ | 'export'
36
+ | 'private'
37
+ | 'protected'
38
+ | 'public'
39
+ | 'readonly'
40
+ | 'static';
41
+ /**
42
+ * Macro expansion results are intentionally opaque at the public API layer.
43
+ *
44
+ * Macro authors can construct these through `ctx.output` / `ctx.controlFlow`, but they should not
45
+ * depend on backend-specific payload details.
46
+ */
47
+ export interface MacroExprOutput {
48
+ readonly kind: 'expr';
49
+ }
50
+ export interface MacroStmtOutput {
51
+ readonly kind: 'stmt';
52
+ }
53
+ export type MacroStmtListOutput = MacroStmtOutput;
54
+ export interface MacroValueRewriteOutput {
55
+ readonly kind: 'value_rewrite';
56
+ }
57
+ export interface MacroScopeExitOutput {
58
+ readonly kind: 'scope_exit';
59
+ }
60
+ export type MacroOutput =
61
+ | MacroExprOutput
62
+ | MacroStmtOutput
63
+ | MacroValueRewriteOutput
64
+ | MacroScopeExitOutput;
65
+ export interface MacroArgumentView extends ExprSyntax {
66
+ readonly index: number;
67
+ }
68
+ export interface MacroInvocationView {
69
+ /**
70
+ * Normalized invocation shape.
71
+ *
72
+ * Expression operands are always exposed through `args`, regardless of whether they were written
73
+ * as `#foo value`, `#foo(value)`, or `#foo(a) b`.
74
+ *
75
+ * Trailing statement blocks and declaration operands are kept separate from `args`, so an
76
+ * invocation can be modeled as:
77
+ * - `args`
78
+ * - optional trailing `block`
79
+ * - optional trailing `declaration`
80
+ */
81
+ readonly args: readonly MacroArgumentView[];
82
+ readonly form: MacroInvocationForm;
83
+ readonly hasBlock: boolean;
84
+ readonly name: string;
85
+ }
86
+ export type MacroAnnotationValue = {
87
+ readonly kind: 'array';
88
+ readonly text: string;
89
+ readonly elements: readonly MacroAnnotationValue[];
90
+ } | {
91
+ readonly kind: 'boolean';
92
+ readonly text: string;
93
+ readonly value: boolean;
94
+ } | {
95
+ readonly kind: 'identifier';
96
+ readonly text: string;
97
+ readonly name: string;
98
+ } | {
99
+ readonly kind: 'number';
100
+ readonly text: string;
101
+ readonly value: number;
102
+ } | {
103
+ readonly kind: 'object';
104
+ readonly text: string;
105
+ readonly properties: readonly {
106
+ readonly name: string;
107
+ readonly text: string;
108
+ readonly value: MacroAnnotationValue;
109
+ }[];
110
+ } | {
111
+ readonly kind: 'string';
112
+ readonly text: string;
113
+ readonly value: string;
114
+ };
115
+ export type MacroAnnotationArgument = {
116
+ readonly kind: 'named';
117
+ readonly name: string;
118
+ readonly text: string;
119
+ readonly value: MacroAnnotationValue;
120
+ } | {
121
+ readonly kind: 'positional';
122
+ readonly text: string;
123
+ readonly value: MacroAnnotationValue;
124
+ };
125
+ export interface MacroAnnotation {
126
+ readonly arguments?: readonly MacroAnnotationArgument[];
127
+ readonly argumentsText?: string;
128
+ readonly name: string;
129
+ readonly text: string;
130
+ }
131
+ export interface ExprSyntax extends MacroSyntaxNode {
132
+ asArrayLiteral(): MacroArrayLiteralExprSyntax | null;
133
+ asBinary(): MacroBinaryExprPattern | null;
134
+ asCall(): MacroCallExprPattern | null;
135
+ asConditional(): MacroConditionalExprPattern | null;
136
+ asFunction(): MacroFunctionExprSyntax | null;
137
+ asIdentifier(): string | null;
138
+ asInvocation(): InvocationSyntax | null;
139
+ asJsxElement(): MacroJsxElementSyntax | null;
140
+ asJsxFragment(): MacroJsxFragmentSyntax | null;
141
+ asPropertyAccess(): MacroPropertyAccessPattern | null;
142
+ containsCallNamed(name: string): boolean;
143
+ isBooleanLiteral(value: boolean): boolean;
144
+ isNullLiteral(): boolean;
145
+ readonly kind: 'expr';
146
+ replaceThis(replacement: ExprSyntax): ExprSyntax;
147
+ rewrite(options: MacroSyntaxRewriteOptions): ExprSyntax;
148
+ text(): string;
149
+ thisMemberReferences(): readonly string[];
150
+ unparenthesized(): ExprSyntax;
151
+ }
152
+ export interface MacroIdentifierExprSyntax extends ExprSyntax {
153
+ asIdentifier(): string;
154
+ }
155
+ export interface MacroCallExprSyntax extends ExprSyntax {
156
+ asCall(): MacroCallExprPattern;
157
+ }
158
+ export interface MacroArrayLiteralElementSyntax extends MacroSyntaxNode {
159
+ expression(): ExprSyntax | null;
160
+ readonly isSpread: boolean;
161
+ readonly kind: 'array_element' | 'array_elision';
162
+ text(): string;
163
+ }
164
+ export interface MacroArrayLiteralExprSyntax extends ExprSyntax {
165
+ asArrayLiteral(): MacroArrayLiteralExprSyntax;
166
+ readonly elements: readonly MacroArrayLiteralElementSyntax[];
167
+ }
168
+ export interface StmtSyntax extends MacroSyntaxNode {
169
+ readonly kind: 'stmt';
170
+ text(): string;
171
+ }
172
+ export interface BlockSyntax extends MacroSyntaxNode {
173
+ containsCallNamed(name: string): boolean;
174
+ readonly kind: 'block';
175
+ replaceThis(replacement: ExprSyntax): BlockSyntax;
176
+ rewrite(options: MacroSyntaxRewriteOptions): BlockSyntax;
177
+ readonly statements: readonly StmtSyntax[];
178
+ text(): string;
179
+ thisMemberReferences(): readonly string[];
180
+ }
181
+ export interface MacroSyntaxRewriteOptions {
182
+ readonly replaceCallNamed?: Readonly<Record<string, ExprSyntax>>;
183
+ readonly replaceThisMemberWriteNamed?: Readonly<Record<string, ExprSyntax>>;
184
+ readonly replaceThisWith?: ExprSyntax;
185
+ }
186
+ export interface DeclSyntax extends MacroSyntaxNode {
187
+ readonly declarationKind: MacroDeclarationKind;
188
+ readonly kind: 'decl';
189
+ readonly name: string | null;
190
+ asClass(): MacroClassDeclSyntax | null;
191
+ asFunction(): MacroFunctionDeclSyntax | null;
192
+ asInterface(): MacroInterfaceDeclSyntax | null;
193
+ asTypeAlias(): MacroTypeAliasDeclSyntax | null;
194
+ text(): string;
195
+ }
196
+ export interface JsxSyntax extends MacroSyntaxNode {
197
+ text(): string;
198
+ }
199
+ export interface MacroParameterSyntax extends MacroSyntaxNode {
200
+ bindingIdentifiers(): readonly MacroBindingIdentifierSyntax[];
201
+ explicitType(): TypeSyntax | null;
202
+ hasDefault(): boolean;
203
+ hasExplicitType(): boolean;
204
+ isRest(): boolean;
205
+ readonly kind: 'parameter';
206
+ readonly name: string | null;
207
+ text(): string;
208
+ }
209
+ export interface TypeSyntax extends MacroSyntaxNode {
210
+ asLiteral(): MacroLiteralTypeSyntax | null;
211
+ asObjectLiteral(): MacroObjectTypeSyntax | null;
212
+ asUnion(): MacroUnionTypeSyntax | null;
213
+ readonly kind: 'type';
214
+ text(): string;
215
+ }
216
+ export interface MacroLiteralTypeSyntax extends TypeSyntax {
217
+ asLiteral(): MacroLiteralTypeSyntax;
218
+ readonly literalKind: 'boolean' | 'number' | 'string';
219
+ readonly value: boolean | number | string;
220
+ }
221
+ export interface MacroObjectTypeMemberSyntax extends MacroSyntaxNode {
222
+ explicitType(): TypeSyntax | null;
223
+ hasExplicitType(): boolean;
224
+ isOptional(): boolean;
225
+ readonly kind: 'type_member';
226
+ readonly memberKind:
227
+ | 'call_signature'
228
+ | 'construct_signature'
229
+ | 'index_signature'
230
+ | 'method_signature'
231
+ | 'property_signature';
232
+ readonly name: string | null;
233
+ text(): string;
234
+ }
235
+ export interface MacroObjectTypeSyntax extends TypeSyntax {
236
+ asObjectLiteral(): MacroObjectTypeSyntax;
237
+ readonly members: readonly MacroObjectTypeMemberSyntax[];
238
+ }
239
+ export interface MacroUnionTypeSyntax extends TypeSyntax {
240
+ asUnion(): MacroUnionTypeSyntax;
241
+ readonly members: readonly TypeSyntax[];
242
+ }
243
+ export interface MacroTypeParameterSyntax extends MacroSyntaxNode {
244
+ constraint(): TypeSyntax | null;
245
+ defaultType(): TypeSyntax | null;
246
+ readonly kind: 'type_parameter';
247
+ readonly name: string;
248
+ text(): string;
249
+ }
250
+ export interface MacroBindingIdentifierSyntax extends MacroSyntaxNode {
251
+ readonly kind: 'binding_identifier';
252
+ readonly name: string;
253
+ }
254
+ export interface MacroClassMemberSyntax extends MacroSyntaxNode {
255
+ readonly kind: 'class_member';
256
+ readonly memberKind: 'constructor' | 'field' | 'getter' | 'method' | 'setter';
257
+ readonly name: string | null;
258
+ hasModifier(name: MacroModifierName): boolean;
259
+ text(): string;
260
+ }
261
+ export interface MacroClassFieldSyntax extends MacroClassMemberSyntax {
262
+ explicitType(): TypeSyntax | null;
263
+ hasExplicitType(): boolean;
264
+ isOptional(): boolean;
265
+ readonly memberKind: 'field';
266
+ initializer(): ExprSyntax | null;
267
+ withInitializer(initializer: ExprSyntax | null): MacroClassFieldSyntax;
268
+ }
269
+ export interface MacroClassMethodSyntax extends MacroClassMemberSyntax {
270
+ readonly memberKind: 'getter' | 'method' | 'setter';
271
+ readonly parameters: readonly MacroParameterSyntax[];
272
+ body(): BlockSyntax | null;
273
+ returnedExpr(): ExprSyntax | null;
274
+ returnedJsx(): MacroJsxElementSyntax | null;
275
+ withBody(body: BlockSyntax): MacroClassMethodSyntax;
276
+ }
277
+ export interface MacroClassConstructorSyntax extends MacroClassMemberSyntax {
278
+ readonly memberKind: 'constructor';
279
+ readonly parameters: readonly MacroParameterSyntax[];
280
+ body(): BlockSyntax | null;
281
+ withBody(body: BlockSyntax): MacroClassConstructorSyntax;
282
+ }
283
+ export type MacroAnyClassMemberSyntax =
284
+ | MacroClassConstructorSyntax
285
+ | MacroClassFieldSyntax
286
+ | MacroClassMethodSyntax;
287
+ export interface MacroClassDeclSyntax extends DeclSyntax {
288
+ readonly declarationKind: 'class';
289
+ hasModifier(name: MacroModifierName): boolean;
290
+ member(name: string): MacroAnyClassMemberSyntax | null;
291
+ members(): readonly MacroAnyClassMemberSyntax[];
292
+ resolveThisDependencies(
293
+ node: ExprSyntax | BlockSyntax,
294
+ rootMemberNames: readonly string[],
295
+ ): readonly string[];
296
+ }
297
+ export interface MacroFunctionDeclSyntax extends DeclSyntax {
298
+ readonly declarationKind: 'function';
299
+ hasModifier(name: MacroModifierName): boolean;
300
+ readonly parameters: readonly MacroParameterSyntax[];
301
+ body(): BlockSyntax | null;
302
+ returnedExpr(): ExprSyntax | null;
303
+ returnedJsx(): MacroJsxElementSyntax | null;
304
+ }
305
+ export interface MacroInterfaceDeclSyntax extends DeclSyntax {
306
+ readonly declarationKind: 'interface';
307
+ readonly extendsTypes: readonly TypeSyntax[];
308
+ hasModifier(name: MacroModifierName): boolean;
309
+ readonly members: readonly MacroObjectTypeMemberSyntax[];
310
+ readonly typeParameters: readonly MacroTypeParameterSyntax[];
311
+ }
312
+ export interface MacroTypeAliasDeclSyntax extends DeclSyntax {
313
+ readonly declarationKind: 'typeAlias';
314
+ hasModifier(name: MacroModifierName): boolean;
315
+ readonly type: TypeSyntax;
316
+ readonly typeParameters: readonly MacroTypeParameterSyntax[];
317
+ }
318
+ export interface MacroPropertyAccessPattern {
319
+ readonly name: string;
320
+ readonly object: ExprSyntax;
321
+ }
322
+ export interface MacroCallExprPattern {
323
+ readonly args: readonly ExprSyntax[];
324
+ readonly callee: ExprSyntax;
325
+ }
326
+ export interface MacroBinaryExprPattern {
327
+ readonly left: ExprSyntax;
328
+ readonly operator: string;
329
+ readonly right: ExprSyntax;
330
+ }
331
+ export interface MacroConditionalExprPattern {
332
+ readonly condition: ExprSyntax;
333
+ readonly whenFalse: ExprSyntax;
334
+ readonly whenTrue: ExprSyntax;
335
+ }
336
+ export interface MacroFunctionExprSyntax extends ExprSyntax {
337
+ readonly functionKind: 'arrow' | 'function';
338
+ hasAsyncModifier(): boolean;
339
+ readonly parameters: readonly MacroParameterSyntax[];
340
+ body(): BlockSyntax | null;
341
+ returnedExpr(): ExprSyntax | null;
342
+ returnedJsx(): MacroJsxElementSyntax | null;
343
+ typeParameterCount(): number;
344
+ }
345
+ export interface MacroJsxAttributeSyntax extends MacroSyntaxNode {
346
+ readonly kind: 'jsx_attribute';
347
+ readonly name: string;
348
+ expression(): ExprSyntax | null;
349
+ stringValue(): string | null;
350
+ text(): string;
351
+ }
352
+ export interface MacroJsxSpreadAttributeSyntax extends MacroSyntaxNode {
353
+ readonly kind: 'jsx_spread_attribute';
354
+ expression(): ExprSyntax;
355
+ text(): string;
356
+ }
357
+ export type MacroAnyJsxAttributeSyntax = MacroJsxAttributeSyntax | MacroJsxSpreadAttributeSyntax;
358
+ export interface MacroJsxTextSyntax extends JsxSyntax {
359
+ readonly kind: 'jsx_text';
360
+ readonly value: string;
361
+ }
362
+ export interface MacroJsxExpressionSyntax extends JsxSyntax {
363
+ readonly kind: 'jsx_expr';
364
+ expression(): ExprSyntax | null;
365
+ }
366
+ export interface MacroJsxElementSyntax extends JsxSyntax {
367
+ readonly kind: 'jsx_element';
368
+ readonly selfClosing: boolean;
369
+ readonly tagName: string | null;
370
+ attribute(name: string): MacroAnyJsxAttributeSyntax | null;
371
+ attributes(): readonly MacroAnyJsxAttributeSyntax[];
372
+ children(): readonly MacroAnyJsxChildSyntax[];
373
+ }
374
+ export interface MacroJsxFragmentSyntax extends JsxSyntax {
375
+ readonly kind: 'jsx_fragment';
376
+ children(): readonly MacroAnyJsxChildSyntax[];
377
+ }
378
+ export type MacroAnyJsxChildSyntax =
379
+ | MacroJsxElementSyntax
380
+ | MacroJsxFragmentSyntax
381
+ | MacroJsxExpressionSyntax
382
+ | MacroJsxTextSyntax;
383
+ export interface InvocationSyntax extends MacroSyntaxNode {
384
+ readonly args: readonly MacroArgumentView[];
385
+ readonly block: BlockSyntax | null;
386
+ readonly declaration: DeclSyntax | null;
387
+ readonly form: MacroInvocationForm;
388
+ readonly hasBlock: boolean;
389
+ readonly kind: 'invocation';
390
+ readonly name: string;
391
+ text(): string;
392
+ }
393
+ export interface MacroAnalysisRegion {
394
+ readonly prefixText: string;
395
+ readonly sourceSpan: SourceSpan;
396
+ readonly suffixText: string;
397
+ }
398
+ export interface MacroTemplateQuasi {
399
+ readonly span: SourceSpan;
400
+ readonly text: string;
401
+ }
402
+ export type MacroTemplateExpression = ExprSyntax;
403
+ export interface MacroTemplateOperand extends MacroSyntaxNode {
404
+ readonly expressions: readonly MacroTemplateExpression[];
405
+ readonly kind: 'template';
406
+ readonly quasis: readonly MacroTemplateQuasi[];
407
+ readonly span: SourceSpan;
408
+ text(): string;
409
+ }
410
+ export type MacroSignatureOperandKind = 'expr' | 'template' | 'block' | 'decl';
411
+ export type MacroSignatureOperandRefinementKind =
412
+ | 'array_literal'
413
+ | 'call'
414
+ | 'class_decl'
415
+ | 'function'
416
+ | 'function_decl'
417
+ | 'interface_decl'
418
+ | 'type_alias_decl'
419
+ | 'identifier';
420
+ export interface MacroSignatureOperandRefinement {
421
+ readonly displayText: string;
422
+ readonly kind: MacroSignatureOperandRefinementKind;
423
+ }
424
+ export type MacroSignatureRefinedValue<Kind extends MacroSignatureOperandRefinementKind> =
425
+ Kind extends 'array_literal' ? MacroArrayLiteralExprSyntax
426
+ : Kind extends 'call' ? MacroCallExprSyntax
427
+ : Kind extends 'class_decl' ? MacroClassDeclSyntax
428
+ : Kind extends 'function' ? MacroFunctionExprSyntax
429
+ : Kind extends 'function_decl' ? MacroFunctionDeclSyntax
430
+ : Kind extends 'interface_decl' ? MacroInterfaceDeclSyntax
431
+ : Kind extends 'type_alias_decl' ? MacroTypeAliasDeclSyntax
432
+ : MacroIdentifierExprSyntax;
433
+ export type MacroSignatureOperandBaseValue<Kind extends MacroSignatureOperandKind> = Kind extends
434
+ 'expr' ? ExprSyntax
435
+ : Kind extends 'template' ? MacroTemplateOperand
436
+ : Kind extends 'block' ? BlockSyntax
437
+ : DeclSyntax;
438
+ export interface MacroSignatureOperand<
439
+ Kind extends MacroSignatureOperandKind = MacroSignatureOperandKind,
440
+ Name extends string = string,
441
+ Optional extends boolean = boolean,
442
+ Value extends MacroDecodedSignatureValue = MacroSignatureOperandBaseValue<Kind>,
443
+ > {
444
+ readonly description?: string;
445
+ readonly kind: Kind;
446
+ readonly name: Name;
447
+ readonly optional: Optional;
448
+ readonly refinement?: MacroSignatureOperandRefinement;
449
+ }
450
+ export interface MacroSignatureCase<
451
+ CaseName extends string | null = string | null,
452
+ Operands extends readonly MacroSignatureOperand[] = readonly MacroSignatureOperand[],
453
+ > {
454
+ readonly caseName: CaseName;
455
+ readonly operands: Operands;
456
+ }
457
+ export interface MacroSignature<
458
+ Cases extends readonly MacroSignatureCase[] = readonly MacroSignatureCase[],
459
+ > {
460
+ readonly cases: Cases;
461
+ readonly validators?: readonly MacroSignatureValidator[];
462
+ }
463
+ export type MacroDecodedSignatureValue =
464
+ | BlockSyntax
465
+ | DeclSyntax
466
+ | ExprSyntax
467
+ | MacroTemplateOperand
468
+ | null;
469
+ type MacroSignatureOperandDecodedValue<Operand extends MacroSignatureOperand> = Operand extends
470
+ MacroSignatureOperand<any, any, infer Optional, infer Value>
471
+ ? Optional extends true ? Value | null : Value
472
+ : never;
473
+ type MacroSignatureArgsFromOperands<Operands extends readonly MacroSignatureOperand[]> = Readonly<
474
+ {
475
+ [Operand in Operands[number] as Operand['name']]: MacroSignatureOperandDecodedValue<Operand>;
476
+ }
477
+ >;
478
+ export interface MacroDecodedSignatureCase<Case extends MacroSignatureCase = MacroSignatureCase> {
479
+ readonly args: MacroSignatureArgsFromOperands<Case['operands']>;
480
+ readonly caseName: Case['caseName'];
481
+ readonly signatureCase: Case;
482
+ }
483
+ export type MacroDecodedSignature<Signature extends MacroSignature> = MacroDecodedSignatureCase<
484
+ Signature['cases'][number]
485
+ >;
486
+ export type MacroSignatureValidator<Signature extends MacroSignature = MacroSignature> = (
487
+ ctx: MacroContext,
488
+ signature: MacroDecodedSignature<Signature>,
489
+ ) => void;
490
+ export interface MacroSyntaxAccess {
491
+ annotations(node: MacroSyntaxNode): readonly MacroAnnotation[];
492
+ arg(index: number): ExprSyntax;
493
+ args(): readonly MacroArgumentView[];
494
+ block(): BlockSyntax;
495
+ declaration(): DeclSyntax;
496
+ primaryExpr(): ExprSyntax;
497
+ root(): InvocationSyntax;
498
+ template(index: number): MacroTemplateOperand | null;
499
+ }
500
+ export interface MacroQuoteFactory {
501
+ readonly block: (
502
+ strings: TemplateStringsArray,
503
+ ...values: readonly MacroQuoteValue[]
504
+ ) => BlockSyntax;
505
+ readonly classMembers: (
506
+ strings: TemplateStringsArray,
507
+ ...values: readonly MacroQuoteValue[]
508
+ ) => readonly MacroAnyClassMemberSyntax[];
509
+ readonly decl: (
510
+ strings: TemplateStringsArray,
511
+ ...values: readonly MacroQuoteValue[]
512
+ ) => DeclSyntax;
513
+ readonly expr: (
514
+ strings: TemplateStringsArray,
515
+ ...values: readonly MacroQuoteValue[]
516
+ ) => ExprSyntax;
517
+ readonly stmt: (
518
+ strings: TemplateStringsArray,
519
+ ...values: readonly MacroQuoteValue[]
520
+ ) => StmtSyntax;
521
+ readonly stmts: (
522
+ strings: TemplateStringsArray,
523
+ ...values: readonly MacroQuoteValue[]
524
+ ) => readonly StmtSyntax[];
525
+ }
526
+ export interface MacroFieldBuildOptions {
527
+ readonly initializer?: ExprSyntax | null;
528
+ readonly modifiers?: readonly MacroModifierName[];
529
+ readonly name: string;
530
+ readonly type?: string;
531
+ }
532
+ export interface MacroParameterBuildOptions {
533
+ readonly name: string;
534
+ readonly type?: string;
535
+ }
536
+ export interface MacroMethodBuildOptions {
537
+ readonly body: BlockSyntax;
538
+ readonly modifiers?: readonly MacroModifierName[];
539
+ readonly name: string;
540
+ readonly parameters?: readonly (string | MacroParameterBuildOptions)[];
541
+ readonly returnType?: string;
542
+ }
543
+ export interface MacroSetterBuildOptions {
544
+ readonly body: BlockSyntax;
545
+ readonly modifiers?: readonly MacroModifierName[];
546
+ readonly name: string;
547
+ readonly parameter: string | MacroParameterBuildOptions;
548
+ }
549
+ export interface MacroFunctionBuildOptions {
550
+ readonly body: BlockSyntax;
551
+ readonly modifiers?: readonly MacroModifierName[];
552
+ readonly name: string;
553
+ readonly parameters?: readonly (string | MacroParameterBuildOptions)[];
554
+ readonly returnType?: string;
555
+ }
556
+ export interface MacroIfBuildOptions {
557
+ readonly condition: ExprSyntax;
558
+ readonly elseStatements?: readonly StmtSyntax[];
559
+ readonly thenStatements: readonly StmtSyntax[];
560
+ }
561
+ export interface MacroForInitializerBuildOptions {
562
+ readonly kind: 'const' | 'let';
563
+ readonly name: string;
564
+ readonly value: ExprSyntax;
565
+ }
566
+ export interface MacroForBuildOptions {
567
+ readonly condition?: ExprSyntax;
568
+ readonly increment?: ExprSyntax;
569
+ readonly initializer?: ExprSyntax | MacroForInitializerBuildOptions;
570
+ readonly statements: readonly StmtSyntax[];
571
+ }
572
+ export interface MacroObjectPropertyBuildOptions {
573
+ readonly kind: 'property';
574
+ readonly name: string;
575
+ readonly value: ExprSyntax;
576
+ }
577
+ export interface MacroObjectMethodBuildOptions {
578
+ readonly body: BlockSyntax;
579
+ readonly kind: 'method';
580
+ readonly name: string;
581
+ readonly parameters?: readonly (string | MacroParameterBuildOptions)[];
582
+ readonly returnType?: string;
583
+ }
584
+ export type MacroObjectMemberBuildOptions =
585
+ | MacroObjectMethodBuildOptions
586
+ | MacroObjectPropertyBuildOptions;
587
+ export interface MacroBuildFactory {
588
+ assign(target: ExprSyntax, value: ExprSyntax): ExprSyntax;
589
+ arrowFunction(
590
+ parameters: readonly (string | MacroParameterBuildOptions)[],
591
+ body: BlockSyntax | ExprSyntax,
592
+ ): ExprSyntax;
593
+ binary(left: ExprSyntax, operator: MacroBinaryOperator, right: ExprSyntax): ExprSyntax;
594
+ block(statements: readonly StmtSyntax[]): BlockSyntax;
595
+ booleanLiteral(value: boolean): ExprSyntax;
596
+ call(callee: ExprSyntax, args: readonly ExprSyntax[]): ExprSyntax;
597
+ constDecl(name: string, initializer: ExprSyntax): StmtSyntax;
598
+ element(object: ExprSyntax, index: ExprSyntax): ExprSyntax;
599
+ exprStmt(expression: ExprSyntax): StmtSyntax;
600
+ field(options: MacroFieldBuildOptions): MacroClassFieldSyntax;
601
+ forStmt(options: MacroForBuildOptions): StmtSyntax;
602
+ identifier(name: string): ExprSyntax;
603
+ ifStmt(options: MacroIfBuildOptions): StmtSyntax;
604
+ functionDecl(options: MacroFunctionBuildOptions): MacroFunctionDeclSyntax;
605
+ getter(options: Omit<MacroMethodBuildOptions, 'parameters'>): MacroClassMethodSyntax;
606
+ letDecl(name: string, initializer: ExprSyntax): StmtSyntax;
607
+ method(options: MacroMethodBuildOptions): MacroClassMethodSyntax;
608
+ newExpr(callee: ExprSyntax, args: readonly ExprSyntax[]): ExprSyntax;
609
+ nullLiteral(): ExprSyntax;
610
+ numberLiteral(value: number): ExprSyntax;
611
+ objectLiteral(members: readonly MacroObjectMemberBuildOptions[]): ExprSyntax;
612
+ optionalMethodCall(receiver: ExprSyntax, name: string, args: readonly ExprSyntax[]): ExprSyntax;
613
+ property(object: ExprSyntax, name: string): ExprSyntax;
614
+ returnStmt(expression?: ExprSyntax): StmtSyntax;
615
+ setter(options: MacroSetterBuildOptions): MacroClassMethodSyntax;
616
+ stringLiteral(value: string): ExprSyntax;
617
+ thisExpr(): ExprSyntax;
618
+ throwStmt(expression: ExprSyntax): StmtSyntax;
619
+ unary(operator: MacroUnaryOperator, value: ExprSyntax): ExprSyntax;
620
+ updateClass(
621
+ base: MacroClassDeclSyntax,
622
+ members: readonly MacroAnyClassMemberSyntax[],
623
+ ): MacroClassDeclSyntax;
624
+ }
625
+ export interface MacroOutputFactory {
626
+ expr(node: ExprSyntax): MacroExprOutput;
627
+ stmt(node: StmtSyntax | DeclSyntax): MacroStmtOutput;
628
+ stmts(nodes: readonly (StmtSyntax | DeclSyntax)[]): MacroStmtListOutput;
629
+ }
630
+ export interface MacroRuntimeAccess {
631
+ default(specifier: string): ExprSyntax;
632
+ named(specifier: string, exportName: string): ExprSyntax;
633
+ namespace(specifier: string): ExprSyntax;
634
+ }
635
+ export interface MacroHostPathOptions {
636
+ readonly base?: 'macro' | 'project';
637
+ }
638
+ export interface MacroHostEnvAccess {
639
+ get(name: string): string | undefined;
640
+ require(name: string): string;
641
+ }
642
+ export interface MacroHostFsAccess {
643
+ exists(path: string, options?: MacroHostPathOptions): boolean;
644
+ readBytes(path: string, options?: MacroHostPathOptions): Uint8Array;
645
+ readText(path: string, options?: MacroHostPathOptions): string;
646
+ }
647
+ export interface MacroHostAccess {
648
+ readonly env: MacroHostEnvAccess;
649
+ readonly fs: MacroHostFsAccess;
650
+ }
651
+ export type MacroReflectedFieldOriginKind =
652
+ | 'classField'
653
+ | 'interfaceProperty'
654
+ | 'typeLiteralProperty';
655
+ export type MacroReflectedPrimitiveKind = 'bigint' | 'boolean' | 'number' | 'string';
656
+ export type MacroReflectedTypeShape =
657
+ | {
658
+ readonly element: MacroReflectedTypeShape;
659
+ readonly kind: 'array';
660
+ readonly readonly: boolean;
661
+ readonly text: string;
662
+ }
663
+ | {
664
+ readonly fields: readonly MacroReflectedFieldShape[];
665
+ readonly kind: 'object';
666
+ readonly text: string;
667
+ }
668
+ | {
669
+ readonly err: MacroReflectedTypeShape;
670
+ readonly kind: 'result';
671
+ readonly ok: MacroReflectedTypeShape;
672
+ readonly text: string;
673
+ }
674
+ | {
675
+ readonly kind: 'option';
676
+ readonly text: string;
677
+ readonly value: MacroReflectedTypeShape;
678
+ }
679
+ | {
680
+ readonly kind: 'primitive';
681
+ readonly primitiveKind: MacroReflectedPrimitiveKind;
682
+ readonly text: string;
683
+ }
684
+ | {
685
+ readonly kind: 'literal';
686
+ readonly literalKind: 'boolean' | 'number' | 'string';
687
+ readonly text: string;
688
+ readonly value: boolean | number | string;
689
+ }
690
+ | {
691
+ readonly kind: 'named';
692
+ readonly name: string;
693
+ readonly text: string;
694
+ readonly typeArguments: readonly MacroReflectedTypeShape[];
695
+ }
696
+ | {
697
+ readonly elements: readonly MacroReflectedTypeShape[];
698
+ readonly kind: 'tuple';
699
+ readonly readonly: boolean;
700
+ readonly text: string;
701
+ }
702
+ | {
703
+ readonly kind: 'union';
704
+ readonly members: readonly MacroReflectedTypeShape[];
705
+ readonly text: string;
706
+ }
707
+ | {
708
+ readonly kind: 'unsupported';
709
+ readonly text: string;
710
+ };
711
+ export interface MacroReflectedFieldShape {
712
+ readonly annotations: readonly MacroAnnotation[];
713
+ readonly name: string;
714
+ readonly node: MacroSyntaxNode;
715
+ readonly optional: boolean;
716
+ readonly originKind: MacroReflectedFieldOriginKind;
717
+ readonly text: string;
718
+ readonly type: MacroReflectedTypeShape | null;
719
+ }
720
+ export interface MacroReflectedDiscriminant {
721
+ readonly name: string;
722
+ readonly tag: string;
723
+ }
724
+ export interface MacroReflectedDiscriminatedUnionVariant {
725
+ readonly discriminants: readonly MacroReflectedDiscriminant[];
726
+ readonly fields: readonly MacroReflectedFieldShape[];
727
+ readonly node: MacroSyntaxNode;
728
+ readonly text: string;
729
+ }
730
+ export type MacroReflectedDeclarationShape =
731
+ | {
732
+ readonly declarationKind: 'class' | 'interface' | 'typeAlias';
733
+ readonly fields: readonly MacroReflectedFieldShape[];
734
+ readonly kind: 'objectLike';
735
+ readonly name: string | null;
736
+ readonly node: DeclSyntax;
737
+ readonly text: string;
738
+ }
739
+ | {
740
+ readonly commonDiscriminantNames: readonly string[];
741
+ readonly kind: 'discriminatedUnion';
742
+ readonly name: string | null;
743
+ readonly node: MacroTypeAliasDeclSyntax;
744
+ readonly text: string;
745
+ readonly variants: readonly MacroReflectedDiscriminatedUnionVariant[];
746
+ }
747
+ | {
748
+ readonly kind: 'unsupported';
749
+ readonly node: DeclSyntax;
750
+ readonly reason: 'notDiscriminatedUnion' | 'notObjectLike' | 'unsupportedDeclarationKind';
751
+ readonly text: string;
752
+ };
753
+ export interface MacroReflectionAccess {
754
+ declarationShape(declaration: DeclSyntax): MacroReflectedDeclarationShape;
755
+ typeShape(type: TypeSyntax): MacroReflectedTypeShape;
756
+ }
757
+ export interface MacroContext {
758
+ readonly build: MacroBuildFactory;
759
+ readonly controlFlow: MacroControlFlow;
760
+ readonly fresh: MacroFresh;
761
+ readonly host: MacroHostAccess;
762
+ readonly invocation: MacroInvocationView;
763
+ readonly kind: 'expr' | 'stmt';
764
+ readonly name: string;
765
+ readonly output: MacroOutputFactory;
766
+ readonly quote: MacroQuoteFactory;
767
+ readonly reflect: MacroReflectionAccess;
768
+ readonly runtime: MacroRuntimeAccess;
769
+ readonly semantics: MacroSemanticsView;
770
+ readonly syntax: MacroSyntaxAccess;
771
+ blockSpan(): SourceSpan | null;
772
+ declarationSpan(): SourceSpan | null;
773
+ error(message: string): never;
774
+ hasBlock(): boolean;
775
+ invocationSpan(): SourceSpan;
776
+ location(): {
777
+ readonly column: number;
778
+ readonly filePath: string;
779
+ readonly line: number;
780
+ };
781
+ parsedSyntax(): MacroSyntaxNode | null;
782
+ sourceText(): string;
783
+ }
784
+ export interface MacroSemanticsView {
785
+ argExpanded(index: number): ExprSyntax | null;
786
+ argType(index: number): MacroType | null;
787
+ awaitedType(type: MacroType): MacroType;
788
+ classifyCanonicalFailureType(type: MacroType): CanonicalFailureInfo | null;
789
+ classifyCanonicalResultCarrierType(type: MacroType): CanonicalResultCarrierInfo | null;
790
+ classifyCanonicalResultType(type: MacroType): CanonicalResultInfo | null;
791
+ classifyTryCarrierType(type: MacroType): MacroTryCarrierInfo | null;
792
+ exprType(expr: ExprSyntax): MacroType | null;
793
+ enclosingFunction(): MacroFunctionContext | null;
794
+ finiteCases(type: MacroType): readonly MacroFiniteCase[] | null;
795
+ isAssignable(from: MacroType, to: MacroType): boolean;
796
+ localDeclarationHasAnnotation(name: string, annotationName: string, node?: MacroSyntaxNode): boolean;
797
+ nullType(): MacroType;
798
+ parameterType(parameter: MacroParameterSyntax): MacroType | null;
799
+ primaryExprEnclosingFunction(): MacroFunctionContext | null;
800
+ primaryExprExpanded(): ExprSyntax | null;
801
+ primaryExprPrelude(): readonly StmtSyntax[] | null;
802
+ primaryExprCanonicalResultCarrier(): CanonicalResultCarrierInfo | null;
803
+ primaryExprCanonicalResult(): CanonicalResultInfo | null;
804
+ primaryExprContainsMacroInvocations(): boolean;
805
+ primaryExprTryCarrier(): MacroTryCarrierInfo | null;
806
+ primaryExprType(): MacroType | null;
807
+ readSet(node: ExprSyntax | BlockSyntax): MacroDependencySet;
808
+ undefinedType(): MacroType;
809
+ valueBindingCallableInScope(name: string, node?: MacroSyntaxNode): boolean;
810
+ valueBindingInScope(name: string, node?: MacroSyntaxNode): boolean;
811
+ writeSet(node: ExprSyntax | BlockSyntax): MacroDependencySet;
812
+ }
813
+ export type MacroPlacement = {
814
+ readonly kind: 'statement-region';
815
+ } | {
816
+ readonly kind: 'unsupported';
817
+ readonly reason: 'multi-declaration' | 'unsupported-site';
818
+ };
819
+ export interface MacroFresh {
820
+ binding(hint: string): string;
821
+ }
822
+ export interface MacroControlFlow {
823
+ deferCleanup(cleanup: BlockSyntax | readonly StmtSyntax[]): MacroScopeExitOutput;
824
+ freshBinding(hint: string): string;
825
+ placement(): MacroPlacement;
826
+ rewriteWithValue(
827
+ preludeStatements: readonly StmtSyntax[],
828
+ replacementExpr: ExprSyntax,
829
+ ): MacroValueRewriteOutput;
830
+ }
831
+ export type MacroExpand<Signature extends MacroSignature | undefined = undefined> = (
832
+ ctx: MacroContext,
833
+ signature: Signature extends MacroSignature ? MacroDecodedSignature<Signature> : null,
834
+ ) => MacroOutput;
835
+ export interface MacroSyntaxNode {
836
+ readonly data?: unknown;
837
+ readonly kind: string;
838
+ readonly span: SourceSpan;
839
+ }
840
+ export type MacroQuoteValue =
841
+ | MacroSyntaxNode
842
+ | readonly MacroSyntaxNode[]
843
+ | string
844
+ | number
845
+ | boolean
846
+ | bigint
847
+ | null
848
+ | undefined;
849
+ export interface MacroFormatContext {
850
+ formatBlock(text: string): string;
851
+ formatExpression(text: string): string;
852
+ readonly node: MacroSyntaxNode;
853
+ }
854
+ export interface MacroHoverContext {
855
+ readonly node: MacroSyntaxNode;
856
+ readonly offset: number;
857
+ }
858
+ export interface MacroPositionHoverContext {
859
+ readonly macro: MacroContext;
860
+ readonly node: MacroSyntaxNode;
861
+ readonly offset: number;
862
+ }
863
+ export interface MacroAnalysisContext {
864
+ readonly macro: MacroContext;
865
+ readonly node: MacroSyntaxNode;
866
+ readonly offset: number;
867
+ }
868
+ export interface MacroHoverResult {
869
+ readonly contents: string;
870
+ }
871
+ export interface MacroCompletionContext {
872
+ readonly node: MacroSyntaxNode;
873
+ readonly offset: number;
874
+ }
875
+ export interface MacroCompletionItem {
876
+ readonly detail?: string;
877
+ readonly label: string;
878
+ }
879
+ export interface MacroBindingOccurrence {
880
+ readonly bindingId: string;
881
+ readonly kind: 'declaration' | 'reference';
882
+ readonly name: string;
883
+ readonly span: SourceSpan;
884
+ }
885
+ export interface MacroBindingsContext {
886
+ readonly node: MacroSyntaxNode;
887
+ }
888
+ export interface MacroSemanticToken {
889
+ readonly modifiers?: readonly string[];
890
+ readonly span: SourceSpan;
891
+ readonly type: string;
892
+ }
893
+ export interface MacroSemanticTokensContext {
894
+ readonly node: MacroSyntaxNode;
895
+ }
896
+ export interface MacroEmbeddedFragment {
897
+ readonly bindings?: readonly MacroBindingOccurrence[];
898
+ readonly completions?: (sourcePosition: number) => readonly MacroCompletionItem[];
899
+ readonly format?: (ctx: Pick<MacroFormatContext, 'formatBlock' | 'formatExpression'>) => string;
900
+ readonly hover?: (sourcePosition: number) => MacroHoverResult | null;
901
+ readonly language: string;
902
+ readonly semanticTokens?: readonly MacroSemanticToken[];
903
+ readonly span: SourceSpan;
904
+ }
905
+ export interface MacroDefinitionCapabilities<
906
+ Signature extends MacroSignature | undefined = MacroSignature | undefined,
907
+ > {
908
+ readonly analysisRegion?: (ctx: MacroAnalysisContext) => MacroAnalysisRegion | null;
909
+ readonly bindings?: (ctx: MacroBindingsContext) => readonly MacroBindingOccurrence[];
910
+ readonly completions?: (ctx: MacroCompletionContext) => readonly MacroCompletionItem[];
911
+ /** Narrows which module-scope declaration kinds a `// #[macro(decl)]` factory accepts. */
912
+ readonly declarationKinds?: readonly MacroDeclarationKind[];
913
+ /** Controls whether a declaration macro replaces the declaration or preserves it and appends siblings. */
914
+ readonly expansionMode?: MacroDeclarationExpansionMode;
915
+ readonly expand: MacroExpand<Signature>;
916
+ readonly format?: (ctx: MacroFormatContext) => string;
917
+ readonly fragments?: (ctx: MacroContext) => readonly MacroEmbeddedFragment[];
918
+ readonly hover?: (ctx: MacroHoverContext) => MacroHoverResult | null;
919
+ readonly positionHover?: (ctx: MacroPositionHoverContext) => MacroHoverResult | null;
920
+ readonly parse?: (ctx: MacroContext) => MacroSyntaxNode;
921
+ readonly semanticTokens?: (ctx: MacroSemanticTokensContext) => readonly MacroSemanticToken[];
922
+ readonly signature?: Signature;
923
+ }
924
+ export interface MacroDefinition<
925
+ Signature extends MacroSignature | undefined = MacroSignature | undefined,
926
+ > {
927
+ readonly analysisRegion?: MacroDefinitionCapabilities<Signature>['analysisRegion'];
928
+ readonly bindings?: MacroDefinitionCapabilities<Signature>['bindings'];
929
+ readonly completions?: MacroDefinitionCapabilities<Signature>['completions'];
930
+ /** Narrows which module-scope declaration kinds a `// #[macro(decl)]` factory accepts. */
931
+ readonly declarationKinds?: MacroDefinitionCapabilities<Signature>['declarationKinds'];
932
+ /** Controls whether a declaration macro replaces the declaration or preserves it and appends siblings. */
933
+ readonly expansionMode?: MacroDefinitionCapabilities<Signature>['expansionMode'];
934
+ readonly expand: MacroExpand<Signature>;
935
+ readonly format?: MacroDefinitionCapabilities<Signature>['format'];
936
+ readonly fragments?: MacroDefinitionCapabilities<Signature>['fragments'];
937
+ readonly hover?: MacroDefinitionCapabilities<Signature>['hover'];
938
+ readonly positionHover?: MacroDefinitionCapabilities<Signature>['positionHover'];
939
+ readonly parse?: MacroDefinitionCapabilities<Signature>['parse'];
940
+ readonly semanticTokens?: MacroDefinitionCapabilities<Signature>['semanticTokens'];
941
+ readonly signature?: MacroDefinitionCapabilities<Signature>['signature'];
942
+ }
943
+ type MacroSignatureCaseCandidates = MacroSignature | MacroSignatureCase;
944
+ type MacroSignatureCasesForCandidate<Candidate> = Candidate extends MacroSignature<infer Cases>
945
+ ? Cases
946
+ : Candidate extends MacroSignatureCase ? readonly [Candidate]
947
+ : never;
948
+ type NormalizeMacroSignatureCases<Candidates extends readonly unknown[]> = Candidates extends
949
+ readonly [infer First, ...infer Rest]
950
+ ? [...MacroSignatureCasesForCandidate<First>, ...NormalizeMacroSignatureCases<Rest>]
951
+ : [];
952
+ export declare function formatMacroSignatureExamples(
953
+ signature: MacroSignature,
954
+ macroName: string,
955
+ ): readonly string[];
956
+ export declare function formatMacroSignature(signature: MacroSignature, macroName: string): string;
957
+ export declare function tryReadMacroSignature<const Signature extends MacroSignature>(
958
+ signature: Signature,
959
+ ctx: Pick<MacroContext, 'declarationSpan' | 'hasBlock' | 'invocation' | 'syntax'>,
960
+ ): MacroDecodedSignature<Signature> | null;
961
+ export declare function readMacroSignature<const Signature extends MacroSignature>(
962
+ signature: Signature,
963
+ ctx: Pick<
964
+ MacroContext,
965
+ 'declarationSpan' | 'error' | 'hasBlock' | 'invocation' | 'name' | 'syntax'
966
+ >,
967
+ ): MacroDecodedSignature<Signature>;
968
+ declare function macroSignatureBlock<const Name extends string>(name: Name, options?: {
969
+ description?: string;
970
+ }): MacroSignatureOperand<'block', Name, false, BlockSyntax>;
971
+ declare function macroSignatureCase<const Operands extends readonly MacroSignatureOperand[]>(
972
+ ...operands: Operands
973
+ ): MacroSignatureCase<null, Operands>;
974
+ declare function macroSignatureCase<
975
+ const CaseName extends string,
976
+ const Operands extends readonly MacroSignatureOperand[],
977
+ >(caseName: CaseName, ...operands: Operands): MacroSignatureCase<CaseName, Operands>;
978
+ declare function macroSignatureDecl<const Name extends string>(name: Name, options?: {
979
+ description?: string;
980
+ }): MacroSignatureOperand<'decl', Name, false, DeclSyntax>;
981
+ declare function macroSignatureExpr<const Name extends string>(name: Name, options?: {
982
+ description?: string;
983
+ }): MacroSignatureOperand<'expr', Name, false, ExprSyntax>;
984
+ declare function macroSignatureArrayLiteral<const Name extends string>(name: Name, options?: {
985
+ description?: string;
986
+ }): MacroSignatureOperand<'expr', Name, false, MacroArrayLiteralExprSyntax>;
987
+ declare function macroSignatureCall<const Name extends string>(name: Name, options?: {
988
+ description?: string;
989
+ }): MacroSignatureOperand<'expr', Name, false, MacroCallExprSyntax>;
990
+ declare function macroSignatureFunctionExpr<const Name extends string>(name: Name, options?: {
991
+ description?: string;
992
+ }): MacroSignatureOperand<'expr', Name, false, MacroFunctionExprSyntax>;
993
+ declare function macroSignatureIdentifier<const Name extends string>(name: Name, options?: {
994
+ description?: string;
995
+ }): MacroSignatureOperand<'expr', Name, false, MacroIdentifierExprSyntax>;
996
+ declare function macroSignatureOf<const Operands extends readonly MacroSignatureOperand[]>(
997
+ ...operands: Operands
998
+ ): MacroSignature<readonly [MacroSignatureCase<null, Operands>]>;
999
+ declare function macroSignatureOneOf<const Cases extends readonly MacroSignatureCaseCandidates[]>(
1000
+ ...cases: Cases
1001
+ ): MacroSignature<NormalizeMacroSignatureCases<Cases>>;
1002
+ declare function macroSignatureOptional<const Operand extends MacroSignatureOperand>(
1003
+ operand: Operand,
1004
+ ): MacroSignatureOperand<
1005
+ Operand['kind'],
1006
+ Operand['name'],
1007
+ true,
1008
+ MacroSignatureOperandDecodedValue<Operand> extends infer Value
1009
+ ? Exclude<Value, null> & MacroDecodedSignatureValue
1010
+ : never
1011
+ >;
1012
+ declare function macroSignatureSignature<const Operands extends readonly MacroSignatureOperand[]>(
1013
+ ...operands: Operands
1014
+ ): MacroSignature<readonly [MacroSignatureCase<null, Operands>]>;
1015
+ declare function macroSignatureTemplate<const Name extends string>(name: Name, options?: {
1016
+ description?: string;
1017
+ }): MacroSignatureOperand<'template', Name, false, MacroTemplateOperand>;
1018
+ declare function macroSignatureClassDecl<const Name extends string>(name: Name, options?: {
1019
+ description?: string;
1020
+ }): MacroSignatureOperand<'decl', Name, false, MacroClassDeclSyntax>;
1021
+ declare function macroSignatureFunctionDecl<const Name extends string>(name: Name, options?: {
1022
+ description?: string;
1023
+ }): MacroSignatureOperand<'decl', Name, false, MacroFunctionDeclSyntax>;
1024
+ declare function macroSignatureInterfaceDecl<const Name extends string>(name: Name, options?: {
1025
+ description?: string;
1026
+ }): MacroSignatureOperand<'decl', Name, false, MacroInterfaceDeclSyntax>;
1027
+ declare function macroSignatureTypeAliasDecl<const Name extends string>(name: Name, options?: {
1028
+ description?: string;
1029
+ }): MacroSignatureOperand<'decl', Name, false, MacroTypeAliasDeclSyntax>;
1030
+ declare function macroSignatureRefine<const Signature extends MacroSignature>(
1031
+ signature: Signature,
1032
+ validator: MacroSignatureValidator<Signature>,
1033
+ ): Signature;
1034
+ export declare const macroSignature: {
1035
+ readonly arrayLiteral: typeof macroSignatureArrayLiteral;
1036
+ readonly block: typeof macroSignatureBlock;
1037
+ readonly case: typeof macroSignatureCase;
1038
+ readonly call: typeof macroSignatureCall;
1039
+ readonly classDecl: typeof macroSignatureClassDecl;
1040
+ readonly decl: typeof macroSignatureDecl;
1041
+ readonly expr: typeof macroSignatureExpr;
1042
+ readonly functionDecl: typeof macroSignatureFunctionDecl;
1043
+ readonly functionExpr: typeof macroSignatureFunctionExpr;
1044
+ readonly identifier: typeof macroSignatureIdentifier;
1045
+ readonly interfaceDecl: typeof macroSignatureInterfaceDecl;
1046
+ readonly of: typeof macroSignatureOf;
1047
+ readonly oneOf: typeof macroSignatureOneOf;
1048
+ readonly optional: typeof macroSignatureOptional;
1049
+ readonly refine: typeof macroSignatureRefine;
1050
+ readonly signature: typeof macroSignatureSignature;
1051
+ readonly template: typeof macroSignatureTemplate;
1052
+ readonly typeAliasDecl: typeof macroSignatureTypeAliasDecl;
1053
+ };
1054
+ export {};