@soundscript/soundscript 0.1.13 → 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,188 @@
1
+ import type { Eq } from 'sts:compare';
2
+ import { isErr, isNone, isOk, isSome, type Option, type Result } from 'sts:result';
3
+
4
+ export type HashCode = number;
5
+
6
+ export interface Hash<T> {
7
+ hash(value: T): HashCode;
8
+ }
9
+
10
+ export interface HashEq<T> extends Hash<T>, Eq<T> {}
11
+
12
+ type HashEqValue<THashEq> = THashEq extends HashEq<infer TValue> ? TValue : never;
13
+
14
+ export function fromHashEq<T>(
15
+ hash: (value: T) => HashCode,
16
+ equals: (left: T, right: T) => boolean,
17
+ ): HashEq<T> {
18
+ return {
19
+ hash(value) {
20
+ return normalizeHashCode(hash(value));
21
+ },
22
+ equals,
23
+ };
24
+ }
25
+
26
+ export function contramap<A, B>(
27
+ hashEq: HashEq<A>,
28
+ project: (value: B) => A,
29
+ ): HashEq<B> {
30
+ return fromHashEq(
31
+ (value) => hashEq.hash(project(value)),
32
+ (left, right) => hashEq.equals(project(left), project(right)),
33
+ );
34
+ }
35
+
36
+ export function lazyHashEq<T>(getHashEq: () => HashEq<T>): HashEq<T> {
37
+ return fromHashEq(
38
+ (value) => getHashEq().hash(value),
39
+ (left, right) => getHashEq().equals(left, right),
40
+ );
41
+ }
42
+
43
+ export function arrayHash<T>(itemHash: HashEq<T>): HashEq<readonly T[]> {
44
+ return fromHashEq(
45
+ (value) => combineHashes(...value.map((entry) => itemHash.hash(entry))),
46
+ (left, right) => {
47
+ if (left.length !== right.length) {
48
+ return false;
49
+ }
50
+
51
+ for (let index = 0; index < left.length; index += 1) {
52
+ if (!itemHash.equals(left[index]!, right[index]!)) {
53
+ return false;
54
+ }
55
+ }
56
+
57
+ return true;
58
+ },
59
+ );
60
+ }
61
+
62
+ export function tupleHash<const THashEqs extends readonly HashEq<unknown>[]>(
63
+ ...elements: THashEqs
64
+ ): HashEq<{ readonly [K in keyof THashEqs]: HashEqValue<THashEqs[K]> }> {
65
+ return fromHashEq(
66
+ (value) => {
67
+ const values = value as readonly unknown[];
68
+ if (values.length !== elements.length) {
69
+ return 0;
70
+ }
71
+ return combineHashes(
72
+ ...elements.map((elementHash, index) => elementHash.hash(values[index])),
73
+ );
74
+ },
75
+ (left, right) => {
76
+ const leftValues = left as readonly unknown[];
77
+ const rightValues = right as readonly unknown[];
78
+ if (leftValues.length !== elements.length || rightValues.length !== elements.length) {
79
+ return false;
80
+ }
81
+
82
+ for (let index = 0; index < elements.length; index += 1) {
83
+ const elementHash = elements[index];
84
+ if (!elementHash) {
85
+ continue;
86
+ }
87
+ if (!elementHash.equals(leftValues[index], rightValues[index])) {
88
+ return false;
89
+ }
90
+ }
91
+
92
+ return true;
93
+ },
94
+ );
95
+ }
96
+
97
+ export function optionHash<T>(itemHash: HashEq<T>): HashEq<Option<T>> {
98
+ return fromHashEq(
99
+ (value) =>
100
+ isSome(value)
101
+ ? combineHashes(stringHash.hash('some'), itemHash.hash(value.value))
102
+ : stringHash.hash('none'),
103
+ (left, right) => {
104
+ if (isSome(left) && isSome(right)) {
105
+ return itemHash.equals(left.value, right.value);
106
+ }
107
+
108
+ return isNone(left) && isNone(right);
109
+ },
110
+ );
111
+ }
112
+
113
+ export function resultHash<T, E>(okHash: HashEq<T>, errHash: HashEq<E>): HashEq<Result<T, E>> {
114
+ return fromHashEq(
115
+ (value) =>
116
+ isOk(value)
117
+ ? combineHashes(stringHash.hash('ok'), okHash.hash(value.value))
118
+ : combineHashes(stringHash.hash('err'), errHash.hash(value.error)),
119
+ (left, right) => {
120
+ if (isOk(left) && isOk(right)) {
121
+ return okHash.equals(left.value, right.value);
122
+ }
123
+
124
+ if (isErr(left) && isErr(right)) {
125
+ return errHash.equals(left.error, right.error);
126
+ }
127
+
128
+ return false;
129
+ },
130
+ );
131
+ }
132
+
133
+ export const stringHash: HashEq<string> = fromHashEq(
134
+ hashString,
135
+ (left, right) => left === right,
136
+ );
137
+
138
+ export const numberHash: HashEq<number> = fromHashEq(
139
+ (value) => hashString(normalizeNumberKey(value)),
140
+ (left, right) => left === right || (Number.isNaN(left) && Number.isNaN(right)),
141
+ );
142
+
143
+ export const booleanHash: HashEq<boolean> = fromHashEq(
144
+ (value) => value ? 1 : 0,
145
+ (left, right) => left === right,
146
+ );
147
+
148
+ export const bigintHash: HashEq<bigint> = fromHashEq(
149
+ (value) => hashString(value.toString()),
150
+ (left, right) => left === right,
151
+ );
152
+
153
+ export function combineHashes(...hashes: readonly HashCode[]): HashCode {
154
+ let hash = 0;
155
+ for (const value of hashes) {
156
+ hash = Math.imul(hash ^ normalizeHashCode(value), 0x01000193);
157
+ }
158
+ return normalizeHashCode(hash);
159
+ }
160
+
161
+ function normalizeHashCode(value: number): HashCode {
162
+ if (!Number.isFinite(value)) {
163
+ return 0;
164
+ }
165
+
166
+ return value | 0;
167
+ }
168
+
169
+ function normalizeNumberKey(value: number): string {
170
+ if (Number.isNaN(value)) {
171
+ return 'NaN';
172
+ }
173
+
174
+ if (value === 0) {
175
+ return '0';
176
+ }
177
+
178
+ return String(value);
179
+ }
180
+
181
+ function hashString(value: string): HashCode {
182
+ let hash = 0x811c9dc5;
183
+ for (let index = 0; index < value.length; index += 1) {
184
+ hash ^= value.charCodeAt(index);
185
+ hash = Math.imul(hash, 0x01000193);
186
+ }
187
+ return hash | 0;
188
+ }
@@ -0,0 +1,40 @@
1
+ export interface TypeLambda {
2
+ readonly Args: readonly unknown[];
3
+ readonly type: unknown;
4
+ }
5
+
6
+ export type Apply<F extends TypeLambda, Args extends readonly unknown[]> = F extends {
7
+ readonly __target: infer Target extends TypeLambda;
8
+ readonly __prefix: infer Prefix extends readonly unknown[];
9
+ } ? Apply<Target, [...Prefix, ...Args]>
10
+ : (F & { readonly Args: Args })['type'];
11
+
12
+ export type Bind<F extends TypeLambda, Prefix extends readonly unknown[]> = TypeLambda & {
13
+ readonly __target: F;
14
+ readonly __prefix: Prefix;
15
+ };
16
+
17
+ export type Kind<F extends TypeLambda, A> = Apply<F, [A]>;
18
+ export type Kind2<F extends TypeLambda, A, B> = Apply<F, [A, B]>;
19
+ export type Kind3<F extends TypeLambda, A, B, C> = Apply<F, [A, B, C]>;
20
+
21
+ export type MonadTypeLambda<M extends { readonly __type_lambda?: TypeLambda }> = M extends {
22
+ readonly __type_lambda?: infer F extends TypeLambda;
23
+ } ? F
24
+ : never;
25
+ export type BoundEffect<F extends TypeLambda, A = unknown> = Kind<F, A>;
26
+ export type BoundValue<F extends TypeLambda, Value> = Value extends BoundEffect<F, infer A> ? A
27
+ : never;
28
+ export type Binder<F extends TypeLambda> = <A>(value: BoundEffect<F, A>) => A;
29
+
30
+ export type {
31
+ Applicative,
32
+ AsyncMonad,
33
+ Contravariant,
34
+ Functor,
35
+ Invariant,
36
+ Monad,
37
+ } from 'sts:typeclasses';
38
+ export { Do, monadGen } from 'sts:typeclasses';
39
+
40
+ export const hkt: unknown;
@@ -0,0 +1,3 @@
1
+ export { Do, monadGen } from '@soundscript/soundscript/typeclasses';
2
+ // Macro binding placeholder. The compiler-owned macro pipeline consumes this symbol.
3
+ export const hkt = undefined;
@@ -0,0 +1,41 @@
1
+ export interface TypeLambda {
2
+ readonly Args: readonly unknown[];
3
+ readonly type: unknown;
4
+ }
5
+
6
+ export type Apply<F extends TypeLambda, Args extends readonly unknown[]> = F extends {
7
+ readonly __target: infer Target extends TypeLambda;
8
+ readonly __prefix: infer Prefix extends readonly unknown[];
9
+ } ? Apply<Target, [...Prefix, ...Args]>
10
+ : (F & { readonly Args: Args })['type'];
11
+
12
+ export type Bind<F extends TypeLambda, Prefix extends readonly unknown[]> = TypeLambda & {
13
+ readonly __target: F;
14
+ readonly __prefix: Prefix;
15
+ };
16
+
17
+ export type Kind<F extends TypeLambda, A> = Apply<F, [A]>;
18
+ export type Kind2<F extends TypeLambda, A, B> = Apply<F, [A, B]>;
19
+ export type Kind3<F extends TypeLambda, A, B, C> = Apply<F, [A, B, C]>;
20
+
21
+ export type MonadTypeLambda<M extends { readonly __type_lambda?: TypeLambda }> = M extends {
22
+ readonly __type_lambda?: infer F extends TypeLambda;
23
+ } ? F
24
+ : never;
25
+ export type BoundEffect<F extends TypeLambda, A = unknown> = Kind<F, A>;
26
+ export type BoundValue<F extends TypeLambda, Value> = Value extends BoundEffect<F, infer A> ? A
27
+ : never;
28
+ export type Binder<F extends TypeLambda> = <A>(value: BoundEffect<F, A>) => A;
29
+
30
+ export type {
31
+ Applicative,
32
+ AsyncMonad,
33
+ Contravariant,
34
+ Functor,
35
+ Invariant,
36
+ Monad,
37
+ } from 'sts:typeclasses';
38
+ export { Do, monadGen } from 'sts:typeclasses';
39
+
40
+ // Macro binding placeholder. The compiler-owned macro pipeline consumes this symbol.
41
+ export const hkt: unknown = undefined;
@@ -0,0 +1,9 @@
1
+ export type { Err, None, Ok, Option, Result, Some } from 'sts:result';
2
+
3
+ export { err, isErr, isNone, isOk, isSome, none, ok, some, Try } from 'sts:result';
4
+ export { Match, where } from 'sts:match';
5
+ export { Failure } from 'sts:failures';
6
+
7
+ export function Defer(cleanup: () => unknown): never;
8
+ export function todo(message?: string): never;
9
+ export function unreachable(message?: string): never;
@@ -0,0 +1,15 @@
1
+ export { err, isErr, isNone, isOk, isSome, none, ok, some, Try } from '@soundscript/soundscript/result';
2
+ export { Match, where } from '@soundscript/soundscript/match';
3
+ export { Failure } from '@soundscript/soundscript/failures';
4
+ function macroRuntimeError(name) {
5
+ throw new Error(`${name}(...) is a soundscript macro and should be removed during soundscript expansion.`);
6
+ }
7
+ export function Defer(_cleanup) {
8
+ return macroRuntimeError('Defer');
9
+ }
10
+ export function todo(message) {
11
+ throw new Error(message ? `TODO: ${message}` : 'TODO');
12
+ }
13
+ export function unreachable(message) {
14
+ throw new Error(message ? `Unreachable: ${message}` : 'Unreachable');
15
+ }
@@ -0,0 +1,23 @@
1
+ export type { Err, None, Ok, Option, Result, Some } from 'sts:result';
2
+
3
+ export { err, isErr, isNone, isOk, isSome, none, ok, some, Try } from 'sts:result';
4
+ export { Match, where } from 'sts:match';
5
+ export { Failure } from 'sts:failures';
6
+
7
+ function macroRuntimeError(name: string): never {
8
+ throw new Error(
9
+ `${name}(...) is a soundscript macro and should be removed during soundscript expansion.`,
10
+ );
11
+ }
12
+
13
+ export function Defer(_cleanup: () => unknown): never {
14
+ return macroRuntimeError('Defer');
15
+ }
16
+
17
+ export function todo(message?: string): never {
18
+ throw new Error(message ? `TODO: ${message}` : 'TODO');
19
+ }
20
+
21
+ export function unreachable(message?: string): never {
22
+ throw new Error(message ? `Unreachable: ${message}` : 'Unreachable');
23
+ }
@@ -0,0 +1,125 @@
1
+ import { Failure } from 'sts:failures';
2
+ import type { Decoder } from 'sts:decode';
3
+ import type { Encoder } from 'sts:encode';
4
+ import type { Result } from 'sts:result';
5
+ import type { Numeric } from 'sts:numerics';
6
+
7
+ export type JsonArray = JsonValue[];
8
+ export type JsonObject = {
9
+ [key: string]: JsonValue;
10
+ };
11
+ export type JsonValue = string | number | boolean | null | JsonObject | JsonArray;
12
+ type LosslessJsonArray = LosslessJsonValue[];
13
+ type LosslessJsonObject = {
14
+ [key: string]: LosslessJsonValue;
15
+ };
16
+ export type LosslessJsonValue =
17
+ | string
18
+ | number
19
+ | bigint
20
+ | boolean
21
+ | null
22
+ | LosslessJsonObject
23
+ | LosslessJsonArray;
24
+
25
+ export type JsonLikeArray = JsonLikeValue[];
26
+ export type JsonLikeObject = {
27
+ [key: string]: JsonLikeValue;
28
+ };
29
+ export type JsonLikeValue =
30
+ | string
31
+ | number
32
+ | boolean
33
+ | bigint
34
+ | null
35
+ | undefined
36
+ | JsonLikeObject
37
+ | JsonLikeArray;
38
+
39
+ export type MachineJsonArray = MachineJsonLikeValue[];
40
+ export type MachineJsonObject = {
41
+ [key: string]: MachineJsonLikeValue;
42
+ };
43
+ export type MachineJsonLikeValue =
44
+ | string
45
+ | number
46
+ | boolean
47
+ | bigint
48
+ | null
49
+ | undefined
50
+ | Numeric
51
+ | MachineJsonObject
52
+ | MachineJsonArray;
53
+
54
+ export interface JsonParseOptions {
55
+ int64?: 'default' | 'lossless';
56
+ numerics?: 'tagged';
57
+ }
58
+
59
+ export type JsonStringifyBigintMode = 'number' | 'reject' | 'string';
60
+ export type MachineJsonNumericMode = 'tagged' | 'decimal-string' | 'json-number';
61
+
62
+ export interface JsonStringifyOptions {
63
+ int64?: 'default' | 'string' | 'lossless';
64
+ readonly bigint?: JsonStringifyBigintMode;
65
+ numerics?: MachineJsonNumericMode;
66
+ }
67
+
68
+ export class JsonParseFailure extends Failure {
69
+ constructor(cause?: unknown);
70
+ }
71
+
72
+ export class JsonStringifyFailure extends Failure {
73
+ constructor(cause?: unknown);
74
+ }
75
+
76
+ export function parseJson(text: string): Result<JsonValue, JsonParseFailure>;
77
+ export function parseJson(
78
+ text: string,
79
+ options: JsonParseOptions & { int64: 'lossless' },
80
+ ): Result<LosslessJsonValue, JsonParseFailure>;
81
+ export function parseJson(
82
+ text: string,
83
+ options: JsonParseOptions & { numerics: 'tagged' },
84
+ ): Result<MachineJsonLikeValue, JsonParseFailure>;
85
+ export function parseJson(
86
+ text: string,
87
+ options?: JsonParseOptions,
88
+ ): Result<JsonValue | LosslessJsonValue | MachineJsonLikeValue, JsonParseFailure>;
89
+ export function stringifyJson(value: JsonValue): Result<string, JsonStringifyFailure>;
90
+ export function stringifyJson(
91
+ value: LosslessJsonValue,
92
+ options: JsonStringifyOptions & { int64: 'string' | 'lossless' },
93
+ ): Result<string, JsonStringifyFailure>;
94
+ export function stringifyJson(
95
+ value: MachineJsonLikeValue,
96
+ options: JsonStringifyOptions & { numerics: MachineJsonNumericMode },
97
+ ): Result<string, JsonStringifyFailure>;
98
+ export function stringifyJson(
99
+ value: JsonValue | LosslessJsonValue | MachineJsonLikeValue,
100
+ options?: JsonStringifyOptions,
101
+ ): Result<string, JsonStringifyFailure>;
102
+ export function parseAndDecode<T, E>(
103
+ text: string,
104
+ decoder: Decoder<T, E>,
105
+ ): Result<T, JsonParseFailure | E>;
106
+ export function encodeAndStringify<T, E>(
107
+ value: T,
108
+ encoder: Encoder<T, JsonValue, E>,
109
+ ): Result<string, E | JsonStringifyFailure>;
110
+ export function isJsonValue(value: unknown): value is JsonValue;
111
+ export function parseJsonLike(text: string): Result<JsonLikeValue, JsonParseFailure>;
112
+ export function stringifyJsonLike(
113
+ value: JsonLikeValue,
114
+ options?: JsonStringifyOptions,
115
+ ): Result<string, JsonStringifyFailure>;
116
+ export function decodeJson<T, E>(
117
+ text: string,
118
+ decoder: Decoder<T, E>,
119
+ ): Result<T, E | JsonParseFailure>;
120
+ export function encodeJson<T, E>(
121
+ value: T,
122
+ encoder: Encoder<T, JsonLikeValue, E>,
123
+ options?: JsonStringifyOptions,
124
+ ): Result<string, E | JsonStringifyFailure>;
125
+ export function isJsonLikeValue(value: unknown): value is JsonLikeValue;