@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,19 @@
1
+ export type RandomBufferView =
2
+ | Int8Array<ArrayBufferLike>
3
+ | Uint8Array<ArrayBufferLike>
4
+ | Uint8ClampedArray<ArrayBufferLike>
5
+ | Int16Array<ArrayBufferLike>
6
+ | Uint16Array<ArrayBufferLike>
7
+ | Int32Array<ArrayBufferLike>
8
+ | Uint32Array<ArrayBufferLike>
9
+ | BigInt64Array<ArrayBufferLike>
10
+ | BigUint64Array<ArrayBufferLike>
11
+ | Float32Array<ArrayBufferLike>
12
+ | Float64Array<ArrayBufferLike>;
13
+
14
+ export interface Crypto {
15
+ getRandomValues<T extends DataView<ArrayBufferLike> | RandomBufferView>(array: T): T;
16
+ }
17
+
18
+ export declare const crypto: Crypto;
19
+ export declare const getRandomValues: Crypto['getRandomValues'];
@@ -0,0 +1,3 @@
1
+ export const getRandomValues = crypto.getRandomValues.bind(crypto);
2
+ const cryptoGlobal = crypto;
3
+ export { cryptoGlobal as crypto };
@@ -0,0 +1,5 @@
1
+ export const getRandomValues = crypto.getRandomValues.bind(crypto);
2
+
3
+ const cryptoGlobal = crypto;
4
+
5
+ export { cryptoGlobal as crypto };
@@ -0,0 +1,68 @@
1
+ import type { Bind, Kind, Kind2, TypeLambda } from 'sts:hkt';
2
+ import type { Applicative, Functor, Monad } from 'sts:typeclasses';
3
+
4
+ // #[variance(T: out)]
5
+ export class Ok<T> {
6
+ readonly tag: 'ok';
7
+ readonly value: T;
8
+ constructor(value: T);
9
+ }
10
+ // #[variance(E: out)]
11
+ export class Err<E> {
12
+ readonly tag: 'err';
13
+ readonly error: E;
14
+ constructor(error: E);
15
+ }
16
+
17
+ // #[variance(T: out, E: out)]
18
+ export type Result<T, E> = Ok<T> | Err<E>;
19
+ // #[variance(T: out)]
20
+ export class Some<T> {
21
+ readonly tag: 'some';
22
+ readonly value: T;
23
+ constructor(value: T);
24
+ }
25
+ export class None {
26
+ readonly tag: 'none';
27
+ constructor();
28
+ }
29
+ // #[variance(T: out)]
30
+ export type Option<T> = Some<T> | None;
31
+
32
+ export interface OptionF extends TypeLambda {
33
+ readonly type: Option<this['Args'][0]>;
34
+ }
35
+
36
+ export interface ResultF extends TypeLambda {
37
+ readonly type: Result<this['Args'][1], this['Args'][0]>;
38
+ }
39
+
40
+ export type OptionKind<T> = Kind<OptionF, T>;
41
+ export type ResultKind<E, T> = Kind2<ResultF, E, T>;
42
+
43
+ export function ok<T>(value: T): Result<T, never>;
44
+ export function err(): Result<never, void>;
45
+ export function err<E>(error: E): Result<never, E>;
46
+ export function some<T>(value: T): Option<T>;
47
+ export function none(): Option<never>;
48
+ export function isOk<T, E>(value: Result<T, E>): value is Ok<T>;
49
+ export function isErr<T, E>(value: Result<T, E>): value is Err<E>;
50
+ export function isSome<T>(value: Option<T>): value is Some<T>;
51
+ export function isNone<T>(value: Option<T>): value is None;
52
+ export function resultOf<T>(fn: () => Promise<T>): Promise<Result<T, Error>>;
53
+ export function resultOf<T, E>(
54
+ fn: () => Promise<T>,
55
+ mapError: (error: Error) => E,
56
+ ): Promise<Result<T, E>>;
57
+ export function resultOf<T>(fn: () => T): Result<T, Error>;
58
+ export function resultOf<T, E>(fn: () => T, mapError: (error: Error) => E): Result<T, E>;
59
+
60
+ export const optionFunctor: Functor<OptionF>;
61
+ export const optionApplicative: Applicative<OptionF>;
62
+ export const optionMonad: Monad<OptionF>;
63
+ export function resultFunctor<E>(): Functor<Bind<ResultF, [E]>>;
64
+ export function resultApplicative<E>(): Applicative<Bind<ResultF, [E]>>;
65
+ export function resultMonad<E>(): Monad<Bind<ResultF, [E]>>;
66
+
67
+ export function Try<T, E>(value: Result<T, E>): T;
68
+ export function Try<T>(value: Option<T>): T;
@@ -0,0 +1,139 @@
1
+ import { normalizeThrown } from '@soundscript/soundscript/failures';
2
+ import { __valueFactory, __valueKey, __valueReadonly, __valueShallowToken, } from '@soundscript/soundscript/value';
3
+ const makeOk = __valueFactory((value) => __valueKey('ok', __valueShallowToken(value)), () => Object.create(Ok.prototype), (instance, value) => {
4
+ __valueReadonly(instance, 'tag', 'ok');
5
+ __valueReadonly(instance, 'value', value);
6
+ });
7
+ const makeErr = __valueFactory((error) => __valueKey('err', __valueShallowToken(error)), () => Object.create(Err.prototype), (instance, error) => {
8
+ __valueReadonly(instance, 'tag', 'err');
9
+ __valueReadonly(instance, 'error', error);
10
+ });
11
+ const makeSome = __valueFactory((value) => __valueKey('some', __valueShallowToken(value)), () => Object.create(Some.prototype), (instance, value) => {
12
+ __valueReadonly(instance, 'tag', 'some');
13
+ __valueReadonly(instance, 'value', value);
14
+ });
15
+ const makeNone = __valueFactory(() => __valueKey('none'), () => Object.create(None.prototype), (instance) => {
16
+ __valueReadonly(instance, 'tag', 'none');
17
+ });
18
+ // #[variance(T: out)]
19
+ export class Ok {
20
+ constructor(value) {
21
+ return makeOk(value);
22
+ }
23
+ }
24
+ // #[variance(E: out)]
25
+ export class Err {
26
+ constructor(error) {
27
+ return makeErr(error);
28
+ }
29
+ }
30
+ // #[variance(T: out)]
31
+ export class Some {
32
+ constructor(value) {
33
+ return makeSome(value);
34
+ }
35
+ }
36
+ export class None {
37
+ constructor() {
38
+ return makeNone();
39
+ }
40
+ }
41
+ export function ok(value) {
42
+ return new Ok(value);
43
+ }
44
+ export function err(error) {
45
+ return new Err(error);
46
+ }
47
+ export function some(value) {
48
+ return new Some(value);
49
+ }
50
+ export function none() {
51
+ return new None();
52
+ }
53
+ export function isOk(value) {
54
+ return value instanceof Ok;
55
+ }
56
+ export function isErr(value) {
57
+ return value instanceof Err;
58
+ }
59
+ export function isSome(value) {
60
+ return value instanceof Some;
61
+ }
62
+ export function isNone(value) {
63
+ return value instanceof None;
64
+ }
65
+ function isPromiseInstance(value) {
66
+ return value instanceof Promise;
67
+ }
68
+ export function resultOf(fn, mapError) {
69
+ try {
70
+ const value = fn();
71
+ if (isPromiseInstance(value)) {
72
+ return value.then((resolved) => ok(resolved), (error) => {
73
+ const normalized = normalizeThrown(error);
74
+ return err(mapError ? mapError(normalized) : normalized);
75
+ });
76
+ }
77
+ return ok(value);
78
+ }
79
+ catch (error) {
80
+ const normalized = normalizeThrown(error);
81
+ return err(mapError ? mapError(normalized) : normalized);
82
+ }
83
+ }
84
+ function mapOption(value, f) {
85
+ return isSome(value) ? some(f(value.value)) : value;
86
+ }
87
+ function apOption(fn, value) {
88
+ if (!isSome(fn)) {
89
+ return fn;
90
+ }
91
+ return isSome(value) ? some(fn.value(value.value)) : value;
92
+ }
93
+ function flatMapOption(value, f) {
94
+ return isSome(value) ? f(value.value) : value;
95
+ }
96
+ const optionMonadImpl = {
97
+ ap: apOption,
98
+ flatMap: flatMapOption,
99
+ map: mapOption,
100
+ pure: some,
101
+ };
102
+ export const optionFunctor = optionMonadImpl;
103
+ export const optionApplicative = optionMonadImpl;
104
+ export const optionMonad = optionMonadImpl;
105
+ function mapResult(value, f) {
106
+ return isOk(value) ? ok(f(value.value)) : value;
107
+ }
108
+ function apResult(fn, value) {
109
+ if (!isOk(fn)) {
110
+ return fn;
111
+ }
112
+ return isOk(value) ? ok(fn.value(value.value)) : value;
113
+ }
114
+ function flatMapResult(value, f) {
115
+ return isOk(value) ? f(value.value) : value;
116
+ }
117
+ function createResultMonad() {
118
+ return {
119
+ ap: apResult,
120
+ flatMap: flatMapResult,
121
+ map: mapResult,
122
+ pure: ok,
123
+ };
124
+ }
125
+ export function resultFunctor() {
126
+ return createResultMonad();
127
+ }
128
+ export function resultApplicative() {
129
+ return createResultMonad();
130
+ }
131
+ export function resultMonad() {
132
+ return createResultMonad();
133
+ }
134
+ function macroRuntimeError(name) {
135
+ throw new Error(`${name}(...) is a soundscript macro and should be removed during soundscript expansion.`);
136
+ }
137
+ export function Try(_value) {
138
+ return macroRuntimeError('Try');
139
+ }
@@ -0,0 +1,248 @@
1
+ import { normalizeThrown } from 'sts:failures';
2
+ import { type Bind, type Kind, type Kind2, type TypeLambda } from 'sts:hkt';
3
+ import { type Applicative, type Functor, type Monad } from 'sts:typeclasses';
4
+ import {
5
+ __valueFactory,
6
+ __valueKey,
7
+ __valueReadonly,
8
+ __valueShallowToken,
9
+ } from 'sts:value';
10
+
11
+ const makeOk = __valueFactory<Ok<unknown>, [unknown]>(
12
+ (value) => __valueKey('ok', __valueShallowToken(value)),
13
+ () => Object.create(Ok.prototype) as Ok<unknown>,
14
+ (instance, value) => {
15
+ __valueReadonly(instance, 'tag', 'ok');
16
+ __valueReadonly(instance, 'value', value);
17
+ },
18
+ );
19
+
20
+ const makeErr = __valueFactory<Err<unknown>, [unknown]>(
21
+ (error) => __valueKey('err', __valueShallowToken(error)),
22
+ () => Object.create(Err.prototype) as Err<unknown>,
23
+ (instance, error) => {
24
+ __valueReadonly(instance, 'tag', 'err');
25
+ __valueReadonly(instance, 'error', error);
26
+ },
27
+ );
28
+
29
+ const makeSome = __valueFactory<Some<unknown>, [unknown]>(
30
+ (value) => __valueKey('some', __valueShallowToken(value)),
31
+ () => Object.create(Some.prototype) as Some<unknown>,
32
+ (instance, value) => {
33
+ __valueReadonly(instance, 'tag', 'some');
34
+ __valueReadonly(instance, 'value', value);
35
+ },
36
+ );
37
+
38
+ const makeNone = __valueFactory<None, []>(
39
+ () => __valueKey('none'),
40
+ () => Object.create(None.prototype) as None,
41
+ (instance) => {
42
+ __valueReadonly(instance, 'tag', 'none');
43
+ },
44
+ );
45
+
46
+ // #[variance(T: out)]
47
+ export class Ok<T> {
48
+ readonly tag!: 'ok';
49
+ readonly value!: T;
50
+
51
+ constructor(value: T) {
52
+ return makeOk(value) as Ok<T>;
53
+ }
54
+ }
55
+
56
+ // #[variance(E: out)]
57
+ export class Err<E> {
58
+ readonly tag!: 'err';
59
+ readonly error!: E;
60
+
61
+ constructor(error: E) {
62
+ return makeErr(error) as Err<E>;
63
+ }
64
+ }
65
+
66
+ // #[variance(T: out, E: out)]
67
+ export type Result<T, E> = Ok<T> | Err<E>;
68
+
69
+ // #[variance(T: out)]
70
+ export class Some<T> {
71
+ readonly tag!: 'some';
72
+ readonly value!: T;
73
+
74
+ constructor(value: T) {
75
+ return makeSome(value) as Some<T>;
76
+ }
77
+ }
78
+
79
+ export class None {
80
+ readonly tag!: 'none';
81
+
82
+ constructor() {
83
+ return makeNone();
84
+ }
85
+ }
86
+
87
+ // #[variance(T: out)]
88
+ export type Option<T> = Some<T> | None;
89
+
90
+ export interface OptionF extends TypeLambda {
91
+ readonly type: Option<this['Args'][0]>;
92
+ }
93
+
94
+ export interface ResultF extends TypeLambda {
95
+ readonly type: Result<this['Args'][1], this['Args'][0]>;
96
+ }
97
+
98
+ export type OptionKind<T> = Kind<OptionF, T>;
99
+ export type ResultKind<E, T> = Kind2<ResultF, E, T>;
100
+
101
+ export function ok<T>(value: T): Result<T, never> {
102
+ return new Ok(value);
103
+ }
104
+
105
+ export function err(): Result<never, void>;
106
+ export function err<E>(error: E): Result<never, E>;
107
+ export function err<E>(error?: E): Result<never, E | void> {
108
+ return new Err(error);
109
+ }
110
+
111
+ export function some<T>(value: T): Option<T> {
112
+ return new Some(value);
113
+ }
114
+
115
+ export function none(): Option<never> {
116
+ return new None();
117
+ }
118
+
119
+ export function isOk<T, E>(value: Result<T, E>): value is Ok<T> {
120
+ return value instanceof Ok;
121
+ }
122
+
123
+ export function isErr<T, E>(value: Result<T, E>): value is Err<E> {
124
+ return value instanceof Err;
125
+ }
126
+
127
+ export function isSome<T>(value: Option<T>): value is Some<T> {
128
+ return value instanceof Some;
129
+ }
130
+
131
+ export function isNone<T>(value: Option<T>): value is None {
132
+ return value instanceof None;
133
+ }
134
+
135
+ function isPromiseInstance<T>(value: unknown): value is Promise<T> {
136
+ return value instanceof Promise;
137
+ }
138
+
139
+ export function resultOf<T>(fn: () => Promise<T>): Promise<Result<T, Error>>;
140
+ export function resultOf<T, E>(
141
+ fn: () => Promise<T>,
142
+ mapError: (error: Error) => E,
143
+ ): Promise<Result<T, E>>;
144
+ export function resultOf<T>(fn: () => T): Result<T, Error>;
145
+ export function resultOf<T, E>(fn: () => T, mapError: (error: Error) => E): Result<T, E>;
146
+ export function resultOf<T, E>(
147
+ fn: () => T | Promise<T>,
148
+ mapError?: (error: Error) => E,
149
+ ): Result<T, E | Error> | Promise<Result<T, E | Error>> {
150
+ try {
151
+ const value = fn();
152
+ if (isPromiseInstance<T>(value)) {
153
+ return value.then(
154
+ (resolved) => ok(resolved),
155
+ (error) => {
156
+ const normalized = normalizeThrown(error);
157
+ return err(mapError ? mapError(normalized) : normalized);
158
+ },
159
+ );
160
+ }
161
+ return ok(value);
162
+ } catch (error) {
163
+ const normalized = normalizeThrown(error);
164
+ return err(mapError ? mapError(normalized) : normalized);
165
+ }
166
+ }
167
+
168
+ function mapOption<A, B>(value: Option<A>, f: (value: A) => B): Option<B> {
169
+ return isSome(value) ? some(f(value.value)) : value;
170
+ }
171
+
172
+ function apOption<A, B>(
173
+ fn: Option<(value: A) => B>,
174
+ value: Option<A>,
175
+ ): Option<B> {
176
+ if (!isSome(fn)) {
177
+ return fn;
178
+ }
179
+ return isSome(value) ? some(fn.value(value.value)) : value;
180
+ }
181
+
182
+ function flatMapOption<A, B>(value: Option<A>, f: (value: A) => Option<B>): Option<B> {
183
+ return isSome(value) ? f(value.value) : value;
184
+ }
185
+
186
+ const optionMonadImpl: Monad<OptionF> = {
187
+ ap: apOption,
188
+ flatMap: flatMapOption,
189
+ map: mapOption,
190
+ pure: some,
191
+ };
192
+
193
+ export const optionFunctor: Functor<OptionF> = optionMonadImpl;
194
+ export const optionApplicative: Applicative<OptionF> = optionMonadImpl;
195
+ export const optionMonad: Monad<OptionF> = optionMonadImpl;
196
+
197
+ function mapResult<E, A, B>(value: Result<A, E>, f: (value: A) => B): Result<B, E> {
198
+ return isOk(value) ? ok(f(value.value)) : value;
199
+ }
200
+
201
+ function apResult<E, A, B>(
202
+ fn: Result<(value: A) => B, E>,
203
+ value: Result<A, E>,
204
+ ): Result<B, E> {
205
+ if (!isOk(fn)) {
206
+ return fn;
207
+ }
208
+ return isOk(value) ? ok(fn.value(value.value)) : value;
209
+ }
210
+
211
+ function flatMapResult<E, A, B>(
212
+ value: Result<A, E>,
213
+ f: (value: A) => Result<B, E>,
214
+ ): Result<B, E> {
215
+ return isOk(value) ? f(value.value) : value;
216
+ }
217
+
218
+ function createResultMonad<E>(): Monad<Bind<ResultF, [E]>> {
219
+ return {
220
+ ap: apResult,
221
+ flatMap: flatMapResult,
222
+ map: mapResult,
223
+ pure: ok,
224
+ };
225
+ }
226
+
227
+ export function resultFunctor<E>(): Functor<Bind<ResultF, [E]>> {
228
+ return createResultMonad<E>();
229
+ }
230
+
231
+ export function resultApplicative<E>(): Applicative<Bind<ResultF, [E]>> {
232
+ return createResultMonad<E>();
233
+ }
234
+
235
+ export function resultMonad<E>(): Monad<Bind<ResultF, [E]>> {
236
+ return createResultMonad<E>();
237
+ }
238
+
239
+ function macroRuntimeError(name: string): never {
240
+ throw new Error(
241
+ `${name}(...) is a soundscript macro and should be removed during soundscript expansion.`,
242
+ );
243
+ }
244
+
245
+ export function Try<T, E>(value: Result<T, E>): T;
246
+ export function Try(_value: unknown): never {
247
+ return macroRuntimeError('Try');
248
+ }
@@ -0,0 +1,22 @@
1
+ export interface SqlQuery {
2
+ readonly text: string;
3
+ readonly params: readonly unknown[];
4
+ }
5
+
6
+ export interface SqlIdentifier {
7
+ readonly __sqlKind: 'identifier';
8
+ readonly name: string;
9
+ }
10
+
11
+ export interface SqlRawFragment {
12
+ readonly __sqlKind: 'raw';
13
+ readonly text: string;
14
+ }
15
+
16
+ export interface SqlTag {
17
+ (strings: TemplateStringsArray, ...values: readonly unknown[]): SqlQuery;
18
+ ident(name: string): SqlIdentifier;
19
+ raw(text: string): SqlRawFragment;
20
+ }
21
+
22
+ export const sql: SqlTag;
@@ -0,0 +1,23 @@
1
+ function buildSqlQuery(strings, values) {
2
+ let text = '';
3
+ for (let index = 0; index < strings.length; index += 1) {
4
+ text += strings[index] ?? '';
5
+ if (index < values.length) {
6
+ text += `$${index + 1}`;
7
+ }
8
+ }
9
+ return {
10
+ text,
11
+ params: [...values],
12
+ };
13
+ }
14
+ const sqlTag = ((strings, ...values) => buildSqlQuery(strings, values));
15
+ sqlTag.ident = (name) => ({
16
+ __sqlKind: 'identifier',
17
+ name,
18
+ });
19
+ sqlTag.raw = (text) => ({
20
+ __sqlKind: 'raw',
21
+ text,
22
+ });
23
+ export const sql = sqlTag;
@@ -0,0 +1,53 @@
1
+ export interface SqlQuery {
2
+ readonly text: string;
3
+ readonly params: readonly unknown[];
4
+ }
5
+
6
+ export interface SqlIdentifier {
7
+ readonly __sqlKind: 'identifier';
8
+ readonly name: string;
9
+ }
10
+
11
+ export interface SqlRawFragment {
12
+ readonly __sqlKind: 'raw';
13
+ readonly text: string;
14
+ }
15
+
16
+ export interface SqlTag {
17
+ (strings: TemplateStringsArray, ...values: readonly unknown[]): SqlQuery;
18
+ ident(name: string): SqlIdentifier;
19
+ raw(text: string): SqlRawFragment;
20
+ }
21
+
22
+ function buildSqlQuery(
23
+ strings: TemplateStringsArray,
24
+ values: readonly unknown[],
25
+ ): SqlQuery {
26
+ let text = '';
27
+ for (let index = 0; index < strings.length; index += 1) {
28
+ text += strings[index] ?? '';
29
+ if (index < values.length) {
30
+ text += `$${index + 1}`;
31
+ }
32
+ }
33
+
34
+ return {
35
+ text,
36
+ params: [...values],
37
+ };
38
+ }
39
+
40
+ const sqlTag = ((strings: TemplateStringsArray, ...values: readonly unknown[]) =>
41
+ buildSqlQuery(strings, values)) as SqlTag;
42
+
43
+ sqlTag.ident = (name: string): SqlIdentifier => ({
44
+ __sqlKind: 'identifier',
45
+ name,
46
+ });
47
+
48
+ sqlTag.raw = (text: string): SqlRawFragment => ({
49
+ __sqlKind: 'raw',
50
+ text,
51
+ });
52
+
53
+ export const sql = sqlTag;
@@ -0,0 +1,24 @@
1
+ export interface TextDecodeOptions {
2
+ stream?: boolean;
3
+ }
4
+
5
+ export interface TextDecoderOptions {
6
+ fatal?: boolean;
7
+ ignoreBOM?: boolean;
8
+ }
9
+
10
+ export declare class TextEncoder {
11
+ constructor();
12
+ encode(input?: string): Uint8Array<ArrayBufferLike>;
13
+ }
14
+
15
+ export declare class TextDecoder {
16
+ constructor(label?: string, options?: TextDecoderOptions);
17
+ decode(
18
+ input?: ArrayBuffer | DataView<ArrayBufferLike> | Uint8Array<ArrayBufferLike> | null,
19
+ options?: TextDecodeOptions,
20
+ ): string;
21
+ readonly encoding: string;
22
+ readonly fatal: boolean;
23
+ readonly ignoreBOM: boolean;
24
+ }
@@ -0,0 +1,3 @@
1
+ const TextDecoderCtor = TextDecoder;
2
+ const TextEncoderCtor = TextEncoder;
3
+ export { TextDecoderCtor as TextDecoder, TextEncoderCtor as TextEncoder };
@@ -0,0 +1,4 @@
1
+ const TextDecoderCtor = TextDecoder;
2
+ const TextEncoderCtor = TextEncoder;
3
+
4
+ export { TextDecoderCtor as TextDecoder, TextEncoderCtor as TextEncoder };
@@ -0,0 +1,2 @@
1
+ export function lazy<T>(value: T): () => T;
2
+ export function memo<T>(value: T): () => T;
@@ -0,0 +1,9 @@
1
+ function macroRuntimeError(name) {
2
+ throw new Error(`${name}(...) is a soundscript macro and should be removed during soundscript expansion.`);
3
+ }
4
+ export function lazy(_value) {
5
+ return macroRuntimeError('lazy');
6
+ }
7
+ export function memo(_value) {
8
+ return macroRuntimeError('memo');
9
+ }
@@ -0,0 +1,15 @@
1
+ function macroRuntimeError(name: string): never {
2
+ throw new Error(
3
+ `${name}(...) is a soundscript macro and should be removed during soundscript expansion.`,
4
+ );
5
+ }
6
+
7
+ export function lazy<T>(_value: T): () => T;
8
+ export function lazy(_value: unknown): never {
9
+ return macroRuntimeError('lazy');
10
+ }
11
+
12
+ export function memo<T>(_value: T): () => T;
13
+ export function memo(_value: unknown): never {
14
+ return macroRuntimeError('memo');
15
+ }