@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,340 @@
1
+ import ts from 'typescript';
2
+
3
+ import { type AnnotationLookup, createAnnotationLookup } from '../../annotation_syntax.ts';
4
+ import { normalizeRuntimeContext } from '../../config.ts';
5
+ import { isForeignSourceFile } from '../../soundscript_packages.ts';
6
+ import { createAnalysisFactStore } from './facts.ts';
7
+ import type {
8
+ AnalysisContext,
9
+ CreateAnalysisContextOptions,
10
+ ExportSummary,
11
+ PredicateVerificationTargetFact,
12
+ } from './types.ts';
13
+
14
+ function isNode(subject: ts.Node | ts.Symbol): subject is ts.Node {
15
+ return 'kind' in subject;
16
+ }
17
+
18
+ function traverseNode(
19
+ node: ts.Node,
20
+ visitor: (node: ts.Node) => void,
21
+ isGeneratedNode: (node: ts.Node) => boolean,
22
+ ): void {
23
+ if (!ts.isSourceFile(node) && isGeneratedNode(node)) {
24
+ return;
25
+ }
26
+
27
+ visitor(node);
28
+ ts.forEachChild(node, (child) => traverseNode(child, visitor, isGeneratedNode));
29
+ }
30
+
31
+ export function createAnalysisContext(options: CreateAnalysisContextOptions): AnalysisContext {
32
+ const checker = options.program.getTypeChecker();
33
+ const factStore = createAnalysisFactStore();
34
+ const nodeIds = new WeakMap<ts.Node, number>();
35
+ const symbolIds = new WeakMap<ts.Symbol, number>();
36
+ const exportSummariesBySymbolId = new Map<number, ExportSummary>();
37
+ const annotationLookups = new WeakMap<ts.SourceFile, AnnotationLookup>();
38
+ const generatedNodeCache = new WeakMap<ts.Node, boolean>();
39
+ const sourceFiles = options.program.getSourceFiles().filter(
40
+ (sourceFile: ts.SourceFile) =>
41
+ !options.program.isSourceFileDefaultLibrary(sourceFile) &&
42
+ (
43
+ !options.program.isSourceFileFromExternalLibrary(sourceFile) ||
44
+ !isForeignSourceFile(sourceFile.fileName, ts.sys)
45
+ ) &&
46
+ (options.includeSourceFile?.(sourceFile) ?? true),
47
+ );
48
+ const runtime = options.runtime ?? normalizeRuntimeContext({
49
+ externs: [],
50
+ target: 'js-node',
51
+ });
52
+ let nextNodeId = 1;
53
+ let nextSymbolId = 1;
54
+
55
+ function getSubjectCacheKey(subject: ts.Node | ts.Symbol): string {
56
+ if (isNode(subject)) {
57
+ return `node:${context.getNodeId(subject)}`;
58
+ }
59
+
60
+ return `symbol:${context.getSymbolId(subject)}`;
61
+ }
62
+
63
+ function getCanonicalExportSummarySymbol(symbol: ts.Symbol): ts.Symbol {
64
+ let currentSymbol = symbol;
65
+ const visitedSymbols = new Set<ts.Symbol>();
66
+
67
+ while (!visitedSymbols.has(currentSymbol)) {
68
+ visitedSymbols.add(currentSymbol);
69
+
70
+ if (currentSymbol.flags & ts.SymbolFlags.Alias) {
71
+ const aliasedSymbol = checker.getAliasedSymbol(currentSymbol);
72
+ if (aliasedSymbol && aliasedSymbol !== currentSymbol) {
73
+ currentSymbol = aliasedSymbol;
74
+ continue;
75
+ }
76
+ }
77
+
78
+ const exportedSymbol = checker.getExportSymbolOfSymbol(currentSymbol);
79
+ if (exportedSymbol !== currentSymbol) {
80
+ currentSymbol = exportedSymbol;
81
+ continue;
82
+ }
83
+
84
+ return currentSymbol;
85
+ }
86
+
87
+ return currentSymbol;
88
+ }
89
+
90
+ const context: AnalysisContext = {
91
+ checker,
92
+ exportSummaries: {
93
+ canonicalizeSymbol(symbol: ts.Symbol): ts.Symbol {
94
+ return getCanonicalExportSummarySymbol(symbol);
95
+ },
96
+ get(symbol: ts.Symbol): ExportSummary | undefined {
97
+ return exportSummariesBySymbolId.get(
98
+ context.getSymbolId(getCanonicalExportSummarySymbol(symbol)),
99
+ );
100
+ },
101
+ set(symbol: ts.Symbol, summary: ExportSummary): ExportSummary {
102
+ exportSummariesBySymbolId.set(
103
+ context.getSymbolId(getCanonicalExportSummarySymbol(symbol)),
104
+ summary,
105
+ );
106
+ return summary;
107
+ },
108
+ },
109
+ facts: {
110
+ getAliasRelationship(source: ts.Node | ts.Symbol, target: ts.Node | ts.Symbol, compute) {
111
+ return factStore.getOrCompute(
112
+ 'alias',
113
+ `${getSubjectCacheKey(source)}->${getSubjectCacheKey(target)}`,
114
+ compute,
115
+ );
116
+ },
117
+ getEffectSummary(node: ts.Node, compute) {
118
+ return factStore.getOrCompute('effectSummary', `node:${context.getNodeId(node)}`, compute);
119
+ },
120
+ getFlowBranchStructure(node: ts.Statement, compute) {
121
+ return factStore.getOrCompute(
122
+ 'flowBranchStructure',
123
+ `node:${context.getNodeId(node)}`,
124
+ compute,
125
+ );
126
+ },
127
+ getFlowChildRegionStructure(node: ts.Statement, compute) {
128
+ return factStore.getOrCompute(
129
+ 'flowChildRegionStructure',
130
+ `node:${context.getNodeId(node)}`,
131
+ compute,
132
+ );
133
+ },
134
+ getFlowConditionStructure(node: ts.Expression, compute) {
135
+ return factStore.getOrCompute(
136
+ 'flowConditionStructure',
137
+ `node:${context.getNodeId(node)}`,
138
+ compute,
139
+ );
140
+ },
141
+ getFlowInvalidationStructure(node: ts.Node, optionsKey: string, compute) {
142
+ return factStore.getOrCompute(
143
+ 'flowInvalidationStructure',
144
+ `node:${context.getNodeId(node)}|options:${optionsKey}`,
145
+ compute,
146
+ );
147
+ },
148
+ getFlowStatementStructure(node: ts.Statement, compute) {
149
+ return factStore.getOrCompute(
150
+ 'flowStatementStructure',
151
+ `node:${context.getNodeId(node)}`,
152
+ compute,
153
+ );
154
+ },
155
+ getFlowRegionStructure(node: ts.Node, optionsKey: string, compute) {
156
+ return factStore.getOrCompute(
157
+ 'flowRegionStructure',
158
+ `node:${context.getNodeId(node)}|options:${optionsKey}`,
159
+ compute,
160
+ );
161
+ },
162
+ getForeignProjection(symbol: ts.Symbol, compute) {
163
+ return factStore.getOrCompute(
164
+ 'foreignProjection',
165
+ `symbol:${context.getSymbolId(symbol)}`,
166
+ compute,
167
+ );
168
+ },
169
+ getMutability(subject: ts.Node | ts.Symbol, compute) {
170
+ return factStore.getOrCompute('mutability', getSubjectCacheKey(subject), compute);
171
+ },
172
+ getNamespaceResolver(node: ts.Node, compute) {
173
+ const key = `node:${context.getNodeId(node)}`;
174
+ const cached = factStore.get('namespaceResolver', key) as
175
+ | import('./types.ts').NamespaceResolverFact
176
+ | undefined;
177
+ if (cached) {
178
+ return cached;
179
+ }
180
+
181
+ const created = compute();
182
+ if (created) {
183
+ factStore.set('namespaceResolver', key, created);
184
+ }
185
+
186
+ return created;
187
+ },
188
+ getNamespaceShape(node: ts.Node, compute) {
189
+ const key = `node:${context.getNodeId(node)}`;
190
+ const cached = factStore.get('namespaceShape', key) as
191
+ | import('./types.ts').NamespaceShapeFact
192
+ | undefined;
193
+ if (cached) {
194
+ return cached;
195
+ }
196
+
197
+ const created = compute();
198
+ if (created) {
199
+ factStore.set('namespaceShape', key, created);
200
+ }
201
+
202
+ return created;
203
+ },
204
+ getNamespaceResolverSymbol(symbol: ts.Symbol) {
205
+ return factStore.get(
206
+ 'namespaceResolver',
207
+ `symbol:${context.getSymbolId(symbol)}`,
208
+ ) as import('./types.ts').NamespaceResolverFact | undefined;
209
+ },
210
+ getNamespaceShapeSymbol(symbol: ts.Symbol) {
211
+ return factStore.get(
212
+ 'namespaceShape',
213
+ `symbol:${context.getSymbolId(symbol)}`,
214
+ ) as import('./types.ts').NamespaceShapeFact | undefined;
215
+ },
216
+ getNarrowing(node: ts.Node, symbol: ts.Symbol, compute) {
217
+ return factStore.getOrCompute(
218
+ 'narrowing',
219
+ `node:${context.getNodeId(node)}|symbol:${context.getSymbolId(symbol)}`,
220
+ compute,
221
+ );
222
+ },
223
+ getNonOrdinaryRecovery(node: ts.Node, family, compute) {
224
+ return factStore.getOrCompute(
225
+ 'nonOrdinaryRecovery',
226
+ `node:${context.getNodeId(node)}|family:${family}`,
227
+ compute,
228
+ );
229
+ },
230
+ getPredicateVerificationTarget(node: ts.Node, compute) {
231
+ const key = `node:${context.getNodeId(node)}`;
232
+ const cached = factStore.get<PredicateVerificationTargetFact>(
233
+ 'predicateVerificationTarget',
234
+ key,
235
+ );
236
+ if (cached) {
237
+ return cached;
238
+ }
239
+
240
+ const created = compute();
241
+ if (created) {
242
+ factStore.set('predicateVerificationTarget', key, created);
243
+ }
244
+
245
+ return created;
246
+ },
247
+ getUnsafeValueOrigin(symbol: ts.Symbol) {
248
+ return factStore.get(
249
+ 'unsafeValueOrigin',
250
+ `symbol:${context.getSymbolId(symbol)}`,
251
+ );
252
+ },
253
+ setForeignProjection(symbol: ts.Symbol, fact) {
254
+ factStore.set('foreignProjection', `symbol:${context.getSymbolId(symbol)}`, fact);
255
+ return fact;
256
+ },
257
+ setNamespaceResolverSymbol(symbol: ts.Symbol, fact) {
258
+ factStore.set('namespaceResolver', `symbol:${context.getSymbolId(symbol)}`, fact);
259
+ return fact;
260
+ },
261
+ setNamespaceShapeSymbol(symbol: ts.Symbol, fact) {
262
+ factStore.set('namespaceShape', `symbol:${context.getSymbolId(symbol)}`, fact);
263
+ return fact;
264
+ },
265
+ setSymbolProvenance(symbol: ts.Symbol, fact) {
266
+ factStore.set('symbolProvenance', `symbol:${context.getSymbolId(symbol)}`, fact);
267
+ return fact;
268
+ },
269
+ setUnsafeValueOrigin(symbol: ts.Symbol, fact) {
270
+ factStore.set('unsafeValueOrigin', `symbol:${context.getSymbolId(symbol)}`, fact);
271
+ return fact;
272
+ },
273
+ getSymbolProvenance(symbol: ts.Symbol, compute) {
274
+ return factStore.getOrCompute(
275
+ 'symbolProvenance',
276
+ `symbol:${context.getSymbolId(symbol)}`,
277
+ compute,
278
+ );
279
+ },
280
+ },
281
+ isGeneratedNode(node: ts.Node): boolean {
282
+ const cached = generatedNodeCache.get(node);
283
+ if (cached !== undefined) {
284
+ return cached;
285
+ }
286
+
287
+ const generated = options.isGeneratedNode?.(node) ?? false;
288
+ generatedNodeCache.set(node, generated);
289
+ return generated;
290
+ },
291
+ program: options.program,
292
+ runtime,
293
+ workingDirectory: options.workingDirectory,
294
+ forEachSourceFile(visitor: (sourceFile: ts.SourceFile) => void): void {
295
+ for (const sourceFile of sourceFiles) {
296
+ visitor(sourceFile);
297
+ }
298
+ },
299
+ getAnnotationLookup(sourceFile: ts.SourceFile): AnnotationLookup {
300
+ const cachedLookup = annotationLookups.get(sourceFile);
301
+ if (cachedLookup) {
302
+ return cachedLookup;
303
+ }
304
+
305
+ const createdLookup = createAnnotationLookup(sourceFile);
306
+ annotationLookups.set(sourceFile, createdLookup);
307
+ return createdLookup;
308
+ },
309
+ getNodeId(node: ts.Node): number {
310
+ const cachedId = nodeIds.get(node);
311
+ if (cachedId !== undefined) {
312
+ return cachedId;
313
+ }
314
+
315
+ const createdId = nextNodeId;
316
+ nextNodeId += 1;
317
+ nodeIds.set(node, createdId);
318
+ return createdId;
319
+ },
320
+ getSourceFiles(): readonly ts.SourceFile[] {
321
+ return sourceFiles;
322
+ },
323
+ getSymbolId(symbol: ts.Symbol): number {
324
+ const cachedId = symbolIds.get(symbol);
325
+ if (cachedId !== undefined) {
326
+ return cachedId;
327
+ }
328
+
329
+ const createdId = nextSymbolId;
330
+ nextSymbolId += 1;
331
+ symbolIds.set(symbol, createdId);
332
+ return createdId;
333
+ },
334
+ traverse(node: ts.Node, visitor: (currentNode: ts.Node) => void): void {
335
+ traverseNode(node, visitor, context.isGeneratedNode);
336
+ },
337
+ };
338
+
339
+ return context;
340
+ }
@@ -0,0 +1,72 @@
1
+ export const SOUND_DIAGNOSTIC_CODES = {
2
+ anyType: 'SOUND1001',
3
+ typeAssertion: 'SOUND1002',
4
+ nonNullAssertion: 'SOUND1003',
5
+ numericEnum: 'SOUND1004',
6
+ unsoundImportUse: 'SOUND1005',
7
+ malformedAnnotation: 'SOUND1006',
8
+ unknownAnnotation: 'SOUND1007',
9
+ predicateBodyMismatch: 'SOUND1017',
10
+ overloadImplementationMismatch: 'SOUND1018',
11
+ unsoundRelation: 'SOUND1019',
12
+ unsoundFlowNarrowing: 'SOUND1020',
13
+ nullPrototypeObjectCreation: 'SOUND1021',
14
+ unsupportedJavaScriptFeature: 'SOUND1022',
15
+ bannedTypeScriptPragma: 'SOUND1023',
16
+ exoticObjectWidening: 'SOUND1024',
17
+ throwNonError: 'SOUND1025',
18
+ duplicateAnnotation: 'SOUND1026',
19
+ invalidAnnotationTarget: 'SOUND1027',
20
+ annotationArgumentsNotSupported: 'SOUND1028',
21
+ ambientRuntimeDeclarationRequiresExtern: 'SOUND1029',
22
+ exportedAmbientRuntimeDeclaration: 'SOUND1030',
23
+ invalidVarianceAnnotation: 'SOUND1031',
24
+ varianceAnnotationMismatch: 'SOUND1032',
25
+ reservedAnnotationNameConflict: 'SOUND1033',
26
+ unsupportedAsyncSurface: 'SOUND1034',
27
+ receiverSensitiveCallableValue: 'SOUND1035',
28
+ constructionLifecycleViolation: 'SOUND1036',
29
+ fieldReadBeforeInitialization: 'SOUND1037',
30
+ definiteAssignmentAssertion: 'SOUND1038',
31
+ };
32
+ export const SOUND_DIAGNOSTIC_MESSAGES = {
33
+ anyType: "Type 'any' is not supported in soundscript.",
34
+ typeAssertion: 'Unchecked type assertions are not supported in soundscript.',
35
+ nonNullAssertion: 'Non-null assertions are not supported in soundscript.',
36
+ numericEnum: 'Numeric enums are not supported in soundscript.',
37
+ unsoundImportUse: "Value from unsound import cannot be used without an explicit interop boundary ('// #[interop]').",
38
+ malformedAnnotation: 'Malformed soundscript annotation comment.',
39
+ unknownAnnotation: 'Unknown soundscript annotation.',
40
+ predicateBodyMismatch: 'User-defined type guard or assertion body does not match its declared predicate.',
41
+ overloadImplementationMismatch: 'Overload implementation does not satisfy individual signatures.',
42
+ unsoundRelation: 'This assignment depends on an unsound type relation in soundscript.',
43
+ unsoundFlowNarrowing: 'This narrowing is no longer valid in soundscript after aliasing, mutation, or suspension.',
44
+ nullPrototypeObjectCreation: 'Null-prototype object creation is not supported in soundscript.',
45
+ unsupportedJavaScriptFeature: 'This JavaScript feature is not supported in soundscript.',
46
+ bannedTypeScriptPragma: 'TypeScript pragma comments are not supported in soundscript.',
47
+ exoticObjectWidening: 'Exotic object values are not assignable to plain `object` in soundscript.',
48
+ throwNonError: 'Only `Error` values may be thrown in soundscript.',
49
+ duplicateAnnotation: 'Duplicate soundscript annotation in the same annotation block.',
50
+ invalidAnnotationTarget: 'soundscript annotation is not valid on this target.',
51
+ annotationArgumentsNotSupported: 'This soundscript annotation does not support arguments in v1.',
52
+ ambientRuntimeDeclarationRequiresExtern: "Ambient runtime declarations in soundscript files require a site-local '// #[extern]' marker.",
53
+ exportedAmbientRuntimeDeclaration: 'Ambient runtime declarations may not be exported from soundscript files.',
54
+ invalidVarianceAnnotation: 'Variance annotation contract is invalid.',
55
+ varianceAnnotationMismatch: "Variance annotation does not match the declaration's proven variance.",
56
+ reservedAnnotationNameConflict: 'Reserved builtin annotation names cannot be reused for imported declaration macros.',
57
+ unsupportedAsyncSurface: 'This async surface is not supported in soundscript. Only compiler-owned Promise semantics are supported.',
58
+ receiverSensitiveCallableValue: 'Receiver-sensitive callables are not first-class values in soundscript.',
59
+ constructionLifecycleViolation: 'Construction-time dispatch and this escape are not allowed before construction completes.',
60
+ fieldReadBeforeInitialization: 'Instance fields may not be read before definite initialization in soundscript.',
61
+ definiteAssignmentAssertion: 'Definite-assignment assertions are not supported in soundscript.',
62
+ };
63
+ export const COMPILER_DIAGNOSTIC_CODES = {
64
+ unsupportedCompilerSubset: 'COMPILER2001',
65
+ heapRuntimeGeneralizationBoundary: 'COMPILER2002',
66
+ valueClassesRequireJsEmit: 'COMPILER2003',
67
+ };
68
+ export const COMPILER_DIAGNOSTIC_MESSAGES = {
69
+ unsupportedCompilerSubset: 'This construct is accepted by the checker but not yet supported by the compiler backend.',
70
+ heapRuntimeGeneralizationBoundary: 'This construct needs heap runtime substrate generalization or fallback lowering that is not implemented yet.',
71
+ valueClassesRequireJsEmit: '#[value] classes are only supported on JS emit paths in v1.',
72
+ };
@@ -0,0 +1,95 @@
1
+ export const SOUND_DIAGNOSTIC_CODES = {
2
+ anyType: 'SOUND1001',
3
+ typeAssertion: 'SOUND1002',
4
+ nonNullAssertion: 'SOUND1003',
5
+ numericEnum: 'SOUND1004',
6
+ unsoundImportUse: 'SOUND1005',
7
+ malformedAnnotation: 'SOUND1006',
8
+ unknownAnnotation: 'SOUND1007',
9
+ predicateBodyMismatch: 'SOUND1017',
10
+ overloadImplementationMismatch: 'SOUND1018',
11
+ unsoundRelation: 'SOUND1019',
12
+ unsoundFlowNarrowing: 'SOUND1020',
13
+ nullPrototypeObjectCreation: 'SOUND1021',
14
+ unsupportedJavaScriptFeature: 'SOUND1022',
15
+ bannedTypeScriptPragma: 'SOUND1023',
16
+ exoticObjectWidening: 'SOUND1024',
17
+ throwNonError: 'SOUND1025',
18
+ duplicateAnnotation: 'SOUND1026',
19
+ invalidAnnotationTarget: 'SOUND1027',
20
+ annotationArgumentsNotSupported: 'SOUND1028',
21
+ ambientRuntimeDeclarationRequiresExtern: 'SOUND1029',
22
+ exportedAmbientRuntimeDeclaration: 'SOUND1030',
23
+ invalidVarianceAnnotation: 'SOUND1031',
24
+ varianceAnnotationMismatch: 'SOUND1032',
25
+ reservedAnnotationNameConflict: 'SOUND1033',
26
+ unsupportedAsyncSurface: 'SOUND1034',
27
+ receiverSensitiveCallableValue: 'SOUND1035',
28
+ constructionLifecycleViolation: 'SOUND1036',
29
+ fieldReadBeforeInitialization: 'SOUND1037',
30
+ definiteAssignmentAssertion: 'SOUND1038',
31
+ } as const;
32
+
33
+ export type SoundDiagnosticCode =
34
+ (typeof SOUND_DIAGNOSTIC_CODES)[keyof typeof SOUND_DIAGNOSTIC_CODES];
35
+
36
+ export const SOUND_DIAGNOSTIC_MESSAGES = {
37
+ anyType: "Type 'any' is not supported in soundscript.",
38
+ typeAssertion: 'Unchecked type assertions are not supported in soundscript.',
39
+ nonNullAssertion: 'Non-null assertions are not supported in soundscript.',
40
+ numericEnum: 'Numeric enums are not supported in soundscript.',
41
+ unsoundImportUse:
42
+ "Value from unsound import cannot be used without an explicit interop boundary ('// #[interop]').",
43
+ malformedAnnotation: 'Malformed soundscript annotation comment.',
44
+ unknownAnnotation: 'Unknown soundscript annotation.',
45
+ predicateBodyMismatch:
46
+ 'User-defined type guard or assertion body does not match its declared predicate.',
47
+ overloadImplementationMismatch: 'Overload implementation does not satisfy individual signatures.',
48
+ unsoundRelation: 'This assignment depends on an unsound type relation in soundscript.',
49
+ unsoundFlowNarrowing:
50
+ 'This narrowing is no longer valid in soundscript after aliasing, mutation, or suspension.',
51
+ nullPrototypeObjectCreation: 'Null-prototype object creation is not supported in soundscript.',
52
+ unsupportedJavaScriptFeature: 'This JavaScript feature is not supported in soundscript.',
53
+ bannedTypeScriptPragma: 'TypeScript pragma comments are not supported in soundscript.',
54
+ exoticObjectWidening: 'Exotic object values are not assignable to plain `object` in soundscript.',
55
+ throwNonError: 'Only `Error` values may be thrown in soundscript.',
56
+ duplicateAnnotation: 'Duplicate soundscript annotation in the same annotation block.',
57
+ invalidAnnotationTarget: 'soundscript annotation is not valid on this target.',
58
+ annotationArgumentsNotSupported: 'This soundscript annotation does not support arguments in v1.',
59
+ ambientRuntimeDeclarationRequiresExtern:
60
+ "Ambient runtime declarations in soundscript files require a site-local '// #[extern]' marker.",
61
+ exportedAmbientRuntimeDeclaration:
62
+ 'Ambient runtime declarations may not be exported from soundscript files.',
63
+ invalidVarianceAnnotation: 'Variance annotation contract is invalid.',
64
+ varianceAnnotationMismatch:
65
+ "Variance annotation does not match the declaration's proven variance.",
66
+ reservedAnnotationNameConflict:
67
+ 'Reserved builtin annotation names cannot be reused for imported declaration macros.',
68
+ unsupportedAsyncSurface:
69
+ 'This async surface is not supported in soundscript. Only compiler-owned Promise semantics are supported.',
70
+ receiverSensitiveCallableValue:
71
+ 'Receiver-sensitive callables are not first-class values in soundscript.',
72
+ constructionLifecycleViolation:
73
+ 'Construction-time dispatch and this escape are not allowed before construction completes.',
74
+ fieldReadBeforeInitialization:
75
+ 'Instance fields may not be read before definite initialization in soundscript.',
76
+ definiteAssignmentAssertion:
77
+ 'Definite-assignment assertions are not supported in soundscript.',
78
+ } as const;
79
+
80
+ export const COMPILER_DIAGNOSTIC_CODES = {
81
+ unsupportedCompilerSubset: 'COMPILER2001',
82
+ heapRuntimeGeneralizationBoundary: 'COMPILER2002',
83
+ valueClassesRequireJsEmit: 'COMPILER2003',
84
+ } as const;
85
+
86
+ export type CompilerDiagnosticCode =
87
+ (typeof COMPILER_DIAGNOSTIC_CODES)[keyof typeof COMPILER_DIAGNOSTIC_CODES];
88
+
89
+ export const COMPILER_DIAGNOSTIC_MESSAGES = {
90
+ unsupportedCompilerSubset:
91
+ 'This construct is accepted by the checker but not yet supported by the compiler backend.',
92
+ heapRuntimeGeneralizationBoundary:
93
+ 'This construct needs heap runtime substrate generalization or fallback lowering that is not implemented yet.',
94
+ valueClassesRequireJsEmit: '#[value] classes are only supported on JS emit paths in v1.',
95
+ } as const;
@@ -0,0 +1,35 @@
1
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
2
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
3
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
4
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
5
+ };
6
+ var _InMemoryAnalysisFactStore_buckets;
7
+ class InMemoryAnalysisFactStore {
8
+ constructor() {
9
+ _InMemoryAnalysisFactStore_buckets.set(this, new Map());
10
+ }
11
+ get(kind, key) {
12
+ return __classPrivateFieldGet(this, _InMemoryAnalysisFactStore_buckets, "f").get(kind)?.get(key);
13
+ }
14
+ getOrCompute(kind, key, compute) {
15
+ const existing = this.get(kind, key);
16
+ if (existing) {
17
+ return existing;
18
+ }
19
+ const created = compute();
20
+ this.set(kind, key, created);
21
+ return created;
22
+ }
23
+ set(kind, key, value) {
24
+ let bucket = __classPrivateFieldGet(this, _InMemoryAnalysisFactStore_buckets, "f").get(kind);
25
+ if (!bucket) {
26
+ bucket = new Map();
27
+ __classPrivateFieldGet(this, _InMemoryAnalysisFactStore_buckets, "f").set(kind, bucket);
28
+ }
29
+ bucket.set(key, value);
30
+ }
31
+ }
32
+ _InMemoryAnalysisFactStore_buckets = new WeakMap();
33
+ export function createAnalysisFactStore() {
34
+ return new InMemoryAnalysisFactStore();
35
+ }
@@ -0,0 +1,48 @@
1
+ import type { AnalysisFactKind, AnalysisFactValue } from './types.ts';
2
+
3
+ interface AnalysisFactCache {
4
+ get<TFact extends AnalysisFactValue>(kind: AnalysisFactKind, key: string): TFact | undefined;
5
+ getOrCompute<TFact extends AnalysisFactValue>(
6
+ kind: AnalysisFactKind,
7
+ key: string,
8
+ compute: () => TFact,
9
+ ): TFact;
10
+ set<TFact extends AnalysisFactValue>(kind: AnalysisFactKind, key: string, value: TFact): void;
11
+ }
12
+
13
+ class InMemoryAnalysisFactStore implements AnalysisFactCache {
14
+ readonly #buckets = new Map<AnalysisFactKind, Map<string, AnalysisFactValue>>();
15
+
16
+ get<TFact extends AnalysisFactValue>(kind: AnalysisFactKind, key: string): TFact | undefined {
17
+ return this.#buckets.get(kind)?.get(key) as TFact | undefined;
18
+ }
19
+
20
+ getOrCompute<TFact extends AnalysisFactValue>(
21
+ kind: AnalysisFactKind,
22
+ key: string,
23
+ compute: () => TFact,
24
+ ): TFact {
25
+ const existing = this.get<TFact>(kind, key);
26
+ if (existing) {
27
+ return existing;
28
+ }
29
+
30
+ const created = compute();
31
+ this.set(kind, key, created);
32
+ return created;
33
+ }
34
+
35
+ set<TFact extends AnalysisFactValue>(kind: AnalysisFactKind, key: string, value: TFact): void {
36
+ let bucket = this.#buckets.get(kind);
37
+ if (!bucket) {
38
+ bucket = new Map<string, AnalysisFactValue>();
39
+ this.#buckets.set(kind, bucket);
40
+ }
41
+
42
+ bucket.set(key, value);
43
+ }
44
+ }
45
+
46
+ export function createAnalysisFactStore(): AnalysisFactCache {
47
+ return new InMemoryAnalysisFactStore();
48
+ }
@@ -0,0 +1 @@
1
+ export {};