@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.
- package/package.json +15 -6
- package/project-transform/index.js +2 -0
- package/project-transform/index.ts +8 -0
- package/project-transform/src/annotation_syntax.js +948 -0
- package/project-transform/src/annotation_syntax.ts +1217 -0
- package/project-transform/src/build_package.js +475 -0
- package/project-transform/src/build_package.ts +683 -0
- package/project-transform/src/bundled/portable-web-globals.d.ts +153 -0
- package/project-transform/src/bundled/runtime_externs.js +220 -0
- package/project-transform/src/bundled/runtime_externs.ts +237 -0
- package/project-transform/src/bundled/sound-libs/lib.decorators.d.ts +385 -0
- package/project-transform/src/bundled/sound-libs/lib.decorators.legacy.d.ts +22 -0
- package/project-transform/src/bundled/sound-libs/lib.dom.asynciterable.d.ts +42 -0
- package/project-transform/src/bundled/sound-libs/lib.dom.d.ts +39440 -0
- package/project-transform/src/bundled/sound-libs/lib.es2015.collection.d.ts +149 -0
- package/project-transform/src/bundled/sound-libs/lib.es2015.core.d.ts +657 -0
- package/project-transform/src/bundled/sound-libs/lib.es2015.d.ts +28 -0
- package/project-transform/src/bundled/sound-libs/lib.es2015.generator.d.ts +77 -0
- package/project-transform/src/bundled/sound-libs/lib.es2015.iterable.d.ts +616 -0
- package/project-transform/src/bundled/sound-libs/lib.es2015.promise.d.ts +80 -0
- package/project-transform/src/bundled/sound-libs/lib.es2015.proxy.d.ts +128 -0
- package/project-transform/src/bundled/sound-libs/lib.es2015.reflect.d.ts +144 -0
- package/project-transform/src/bundled/sound-libs/lib.es2015.symbol.d.ts +46 -0
- package/project-transform/src/bundled/sound-libs/lib.es2015.symbol.wellknown.d.ts +170 -0
- package/project-transform/src/bundled/sound-libs/lib.es2016.array.include.d.ts +116 -0
- package/project-transform/src/bundled/sound-libs/lib.es2016.d.ts +21 -0
- package/project-transform/src/bundled/sound-libs/lib.es2017.arraybuffer.d.ts +21 -0
- package/project-transform/src/bundled/sound-libs/lib.es2017.d.ts +26 -0
- package/project-transform/src/bundled/sound-libs/lib.es2017.date.d.ts +31 -0
- package/project-transform/src/bundled/sound-libs/lib.es2017.object.d.ts +49 -0
- package/project-transform/src/bundled/sound-libs/lib.es2017.string.d.ts +45 -0
- package/project-transform/src/bundled/sound-libs/lib.es2017.typedarrays.d.ts +53 -0
- package/project-transform/src/bundled/sound-libs/lib.es2018.asyncgenerator.d.ts +77 -0
- package/project-transform/src/bundled/sound-libs/lib.es2018.asynciterable.d.ts +57 -0
- package/project-transform/src/bundled/sound-libs/lib.es2018.d.ts +24 -0
- package/project-transform/src/bundled/sound-libs/lib.es2018.promise.d.ts +30 -0
- package/project-transform/src/bundled/sound-libs/lib.es2018.regexp.d.ts +37 -0
- package/project-transform/src/bundled/sound-libs/lib.es2019.array.d.ts +79 -0
- package/project-transform/src/bundled/sound-libs/lib.es2019.d.ts +24 -0
- package/project-transform/src/bundled/sound-libs/lib.es2019.object.d.ts +47 -0
- package/project-transform/src/bundled/sound-libs/lib.es2019.string.d.ts +37 -0
- package/project-transform/src/bundled/sound-libs/lib.es2019.symbol.d.ts +24 -0
- package/project-transform/src/bundled/sound-libs/lib.es2020.bigint.d.ts +765 -0
- package/project-transform/src/bundled/sound-libs/lib.es2020.d.ts +27 -0
- package/project-transform/src/bundled/sound-libs/lib.es2020.date.d.ts +42 -0
- package/project-transform/src/bundled/sound-libs/lib.es2020.number.d.ts +28 -0
- package/project-transform/src/bundled/sound-libs/lib.es2020.promise.d.ts +49 -0
- package/project-transform/src/bundled/sound-libs/lib.es2020.string.d.ts +44 -0
- package/project-transform/src/bundled/sound-libs/lib.es2020.symbol.wellknown.d.ts +41 -0
- package/project-transform/src/bundled/sound-libs/lib.es2021.d.ts +23 -0
- package/project-transform/src/bundled/sound-libs/lib.es2021.promise.d.ts +48 -0
- package/project-transform/src/bundled/sound-libs/lib.es2021.string.d.ts +33 -0
- package/project-transform/src/bundled/sound-libs/lib.es2021.weakref.d.ts +78 -0
- package/project-transform/src/bundled/sound-libs/lib.es2022.array.d.ts +121 -0
- package/project-transform/src/bundled/sound-libs/lib.es2022.d.ts +25 -0
- package/project-transform/src/bundled/sound-libs/lib.es2022.error.d.ts +75 -0
- package/project-transform/src/bundled/sound-libs/lib.es2022.object.d.ts +26 -0
- package/project-transform/src/bundled/sound-libs/lib.es2022.regexp.d.ts +39 -0
- package/project-transform/src/bundled/sound-libs/lib.es2022.string.d.ts +25 -0
- package/project-transform/src/bundled/sound-libs/lib.es2023.array.d.ts +924 -0
- package/project-transform/src/bundled/sound-libs/lib.es2023.collection.d.ts +21 -0
- package/project-transform/src/bundled/sound-libs/lib.es2023.d.ts +22 -0
- package/project-transform/src/bundled/sound-libs/lib.es2024.arraybuffer.d.ts +65 -0
- package/project-transform/src/bundled/sound-libs/lib.es2024.collection.d.ts +29 -0
- package/project-transform/src/bundled/sound-libs/lib.es2024.d.ts +26 -0
- package/project-transform/src/bundled/sound-libs/lib.es2024.object.d.ts +33 -0
- package/project-transform/src/bundled/sound-libs/lib.es2024.promise.d.ts +35 -0
- package/project-transform/src/bundled/sound-libs/lib.es2024.regexp.d.ts +25 -0
- package/project-transform/src/bundled/sound-libs/lib.es2024.string.d.ts +29 -0
- package/project-transform/src/bundled/sound-libs/lib.es5.d.ts +4924 -0
- package/project-transform/src/bundled/sound_stdlib.js +142 -0
- package/project-transform/src/bundled/sound_stdlib.ts +180 -0
- package/project-transform/src/checker/analyze_project.js +1361 -0
- package/project-transform/src/checker/analyze_project.ts +2246 -0
- package/project-transform/src/checker/diagnostics.js +112 -0
- package/project-transform/src/checker/diagnostics.ts +222 -0
- package/project-transform/src/checker/engine/context.js +235 -0
- package/project-transform/src/checker/engine/context.ts +340 -0
- package/project-transform/src/checker/engine/diagnostic_codes.js +72 -0
- package/project-transform/src/checker/engine/diagnostic_codes.ts +95 -0
- package/project-transform/src/checker/engine/facts.js +35 -0
- package/project-transform/src/checker/engine/facts.ts +48 -0
- package/project-transform/src/checker/engine/types.js +1 -0
- package/project-transform/src/checker/engine/types.ts +485 -0
- package/project-transform/src/checker/proof_escape_hatch_diagnostics.js +104 -0
- package/project-transform/src/checker/proof_escape_hatch_diagnostics.ts +173 -0
- package/project-transform/src/checker/rules/async_surface.js +231 -0
- package/project-transform/src/checker/rules/async_surface.ts +335 -0
- package/project-transform/src/checker/rules/class_lifecycle.js +798 -0
- package/project-transform/src/checker/rules/class_lifecycle.ts +1276 -0
- package/project-transform/src/checker/rules/directive_validation.js +571 -0
- package/project-transform/src/checker/rules/directive_validation.ts +938 -0
- package/project-transform/src/checker/rules/directives.js +23 -0
- package/project-transform/src/checker/rules/directives.ts +25 -0
- package/project-transform/src/checker/rules/flow.js +202 -0
- package/project-transform/src/checker/rules/flow.ts +333 -0
- package/project-transform/src/checker/rules/flow_facts.js +601 -0
- package/project-transform/src/checker/rules/flow_facts.ts +978 -0
- package/project-transform/src/checker/rules/flow_invalidation.js +1119 -0
- package/project-transform/src/checker/rules/flow_invalidation.ts +2150 -0
- package/project-transform/src/checker/rules/flow_shared.js +2822 -0
- package/project-transform/src/checker/rules/flow_shared.ts +4383 -0
- package/project-transform/src/checker/rules/foreign_boundary.js +120 -0
- package/project-transform/src/checker/rules/foreign_boundary.ts +196 -0
- package/project-transform/src/checker/rules/foreign_projection.js +279 -0
- package/project-transform/src/checker/rules/foreign_projection.ts +425 -0
- package/project-transform/src/checker/rules/generated_helpers.js +13 -0
- package/project-transform/src/checker/rules/generated_helpers.ts +18 -0
- package/project-transform/src/checker/rules/index.js +35 -0
- package/project-transform/src/checker/rules/index.ts +49 -0
- package/project-transform/src/checker/rules/namespace_object.js +845 -0
- package/project-transform/src/checker/rules/namespace_object.ts +1224 -0
- package/project-transform/src/checker/rules/non_ordinary_recovery.js +1328 -0
- package/project-transform/src/checker/rules/non_ordinary_recovery.ts +2391 -0
- package/project-transform/src/checker/rules/null_prototype.js +3 -0
- package/project-transform/src/checker/rules/null_prototype.ts +6 -0
- package/project-transform/src/checker/rules/overloads.js +181 -0
- package/project-transform/src/checker/rules/overloads.ts +317 -0
- package/project-transform/src/checker/rules/predicate_verification.js +691 -0
- package/project-transform/src/checker/rules/predicate_verification.ts +1088 -0
- package/project-transform/src/checker/rules/prototype_hardening.js +237 -0
- package/project-transform/src/checker/rules/prototype_hardening.ts +343 -0
- package/project-transform/src/checker/rules/receiver_discipline.js +263 -0
- package/project-transform/src/checker/rules/receiver_discipline.ts +356 -0
- package/project-transform/src/checker/rules/relations.js +6861 -0
- package/project-transform/src/checker/rules/relations.ts +12158 -0
- package/project-transform/src/checker/rules/resolved_builtins.js +274 -0
- package/project-transform/src/checker/rules/resolved_builtins.ts +438 -0
- package/project-transform/src/checker/rules/trust.js +217 -0
- package/project-transform/src/checker/rules/trust.ts +301 -0
- package/project-transform/src/checker/rules/type_guards.js +173 -0
- package/project-transform/src/checker/rules/type_guards.ts +257 -0
- package/project-transform/src/checker/rules/universal.js +17 -0
- package/project-transform/src/checker/rules/universal.ts +22 -0
- package/project-transform/src/checker/rules/unsafe_value_origin.js +80 -0
- package/project-transform/src/checker/rules/unsafe_value_origin.ts +125 -0
- package/project-transform/src/checker/rules/unsound_imports.js +218 -0
- package/project-transform/src/checker/rules/unsound_imports.ts +301 -0
- package/project-transform/src/checker/rules/unsound_syntax.js +1695 -0
- package/project-transform/src/checker/rules/unsound_syntax.ts +2540 -0
- package/project-transform/src/checker/rules/value_types.js +206 -0
- package/project-transform/src/checker/rules/value_types.ts +407 -0
- package/project-transform/src/checker/timing.js +43 -0
- package/project-transform/src/checker/timing.ts +78 -0
- package/project-transform/src/checker/unsupported_feature_messages.js +337 -0
- package/project-transform/src/checker/unsupported_feature_messages.ts +531 -0
- package/project-transform/src/cli.js +892 -0
- package/project-transform/src/cli.ts +1476 -0
- package/project-transform/src/compiler/compile_project.js +319 -0
- package/project-transform/src/compiler/compile_project.ts +508 -0
- package/project-transform/src/compiler/errors.js +10 -0
- package/project-transform/src/compiler/errors.ts +29 -0
- package/project-transform/src/compiler/ir.js +1 -0
- package/project-transform/src/compiler/ir.ts +1526 -0
- package/project-transform/src/compiler/lower.js +30550 -0
- package/project-transform/src/compiler/lower.ts +43645 -0
- package/project-transform/src/compiler/lower_arrays.js +140 -0
- package/project-transform/src/compiler/lower_arrays.ts +190 -0
- package/project-transform/src/compiler/lower_strings.js +121 -0
- package/project-transform/src/compiler/lower_strings.ts +198 -0
- package/project-transform/src/compiler/lower_tagged.js +329 -0
- package/project-transform/src/compiler/lower_tagged.ts +427 -0
- package/project-transform/src/compiler/lower_views.js +171 -0
- package/project-transform/src/compiler/lower_views.ts +251 -0
- package/project-transform/src/compiler/object_keys.js +25 -0
- package/project-transform/src/compiler/object_keys.ts +35 -0
- package/project-transform/src/compiler/runtime_ir.js +30 -0
- package/project-transform/src/compiler/runtime_ir.ts +727 -0
- package/project-transform/src/compiler/tagged_boundary.js +18 -0
- package/project-transform/src/compiler/tagged_boundary.ts +37 -0
- package/project-transform/src/compiler/toolchain.js +170 -0
- package/project-transform/src/compiler/toolchain.ts +229 -0
- package/project-transform/src/compiler/unicode_case_data.js +2102 -0
- package/project-transform/src/compiler/unicode_case_data.ts +2112 -0
- package/project-transform/src/compiler/wasm_js_host_runtime.js +656 -0
- package/project-transform/src/compiler/wasm_js_host_runtime.ts +762 -0
- package/project-transform/src/compiler/wat_arrays.js +3132 -0
- package/project-transform/src/compiler/wat_arrays.ts +3768 -0
- package/project-transform/src/compiler/wat_emitter.js +17952 -0
- package/project-transform/src/compiler/wat_emitter.ts +22812 -0
- package/project-transform/src/compiler/wat_strings.js +129 -0
- package/project-transform/src/compiler/wat_strings.ts +187 -0
- package/project-transform/src/compiler/wat_tagged.js +548 -0
- package/project-transform/src/compiler/wat_tagged.ts +674 -0
- package/project-transform/src/compiler_generator_runner.js +153 -0
- package/project-transform/src/compiler_generator_runner.ts +171 -0
- package/project-transform/src/compiler_object_test_helpers.js +69 -0
- package/project-transform/src/compiler_object_test_helpers.ts +96 -0
- package/project-transform/src/compiler_promise_runner.js +2116 -0
- package/project-transform/src/compiler_promise_runner.ts +2184 -0
- package/project-transform/src/compiler_test_helpers.js +854 -0
- package/project-transform/src/compiler_test_helpers.ts +1087 -0
- package/project-transform/src/config.js +568 -0
- package/project-transform/src/config.ts +892 -0
- package/project-transform/src/diagnostic_metadata.js +67 -0
- package/project-transform/src/diagnostic_metadata.ts +99 -0
- package/project-transform/src/diagnostic_reference.js +1368 -0
- package/project-transform/src/diagnostic_reference.ts +1523 -0
- package/project-transform/src/editor_diagnostics_worker.js +176 -0
- package/project-transform/src/editor_diagnostics_worker.ts +250 -0
- package/project-transform/src/editor_projection.js +224 -0
- package/project-transform/src/editor_projection.ts +421 -0
- package/project-transform/src/frontend/builtin_expanded_program_test_cleanup.js +47 -0
- package/project-transform/src/frontend/builtin_expanded_program_test_cleanup.ts +72 -0
- package/project-transform/src/frontend/builtin_macro_support.js +842 -0
- package/project-transform/src/frontend/builtin_macro_support.ts +1386 -0
- package/project-transform/src/frontend/builtin_macros.js +409 -0
- package/project-transform/src/frontend/builtin_macros.ts +542 -0
- package/project-transform/src/frontend/component_poc_runtime.js +279 -0
- package/project-transform/src/frontend/component_poc_runtime.ts +372 -0
- package/project-transform/src/frontend/css_macro.js +148 -0
- package/project-transform/src/frontend/css_macro.ts +222 -0
- package/project-transform/src/frontend/derive_macros.js +2072 -0
- package/project-transform/src/frontend/derive_macros.ts +3188 -0
- package/project-transform/src/frontend/embedded_fragment_support.js +106 -0
- package/project-transform/src/frontend/embedded_fragment_support.ts +172 -0
- package/project-transform/src/frontend/error_normalization.js +403 -0
- package/project-transform/src/frontend/error_normalization.ts +832 -0
- package/project-transform/src/frontend/error_stdlib_support.js +1 -0
- package/project-transform/src/frontend/error_stdlib_support.ts +6 -0
- package/project-transform/src/frontend/expand_project.js +169 -0
- package/project-transform/src/frontend/expand_project.ts +248 -0
- package/project-transform/src/frontend/format_soundscript.js +297 -0
- package/project-transform/src/frontend/format_soundscript.ts +582 -0
- package/project-transform/src/frontend/graphql_macro.js +174 -0
- package/project-transform/src/frontend/graphql_macro.ts +253 -0
- package/project-transform/src/frontend/hash_context.js +83 -0
- package/project-transform/src/frontend/hash_context.ts +113 -0
- package/project-transform/src/frontend/hkt_macro.js +448 -0
- package/project-transform/src/frontend/hkt_macro.ts +897 -0
- package/project-transform/src/frontend/import_binding_usage.js +190 -0
- package/project-transform/src/frontend/import_binding_usage.ts +277 -0
- package/project-transform/src/frontend/macro_advanced_backend_adapter.js +58 -0
- package/project-transform/src/frontend/macro_advanced_backend_adapter.ts +123 -0
- package/project-transform/src/frontend/macro_advanced_context.js +826 -0
- package/project-transform/src/frontend/macro_advanced_context.ts +1102 -0
- package/project-transform/src/frontend/macro_advanced_output.js +21 -0
- package/project-transform/src/frontend/macro_advanced_output.ts +41 -0
- package/project-transform/src/frontend/macro_api.js +353 -0
- package/project-transform/src/frontend/macro_api.ts +1722 -0
- package/project-transform/src/frontend/macro_api_internal.js +35 -0
- package/project-transform/src/frontend/macro_api_internal.ts +80 -0
- package/project-transform/src/frontend/macro_api_module_support.js +39 -0
- package/project-transform/src/frontend/macro_api_module_support.ts +65 -0
- package/project-transform/src/frontend/macro_backend_adapter.js +272 -0
- package/project-transform/src/frontend/macro_backend_adapter.ts +420 -0
- package/project-transform/src/frontend/macro_context.js +816 -0
- package/project-transform/src/frontend/macro_context.ts +1105 -0
- package/project-transform/src/frontend/macro_debug.js +99 -0
- package/project-transform/src/frontend/macro_debug.ts +157 -0
- package/project-transform/src/frontend/macro_definition_support.js +28 -0
- package/project-transform/src/frontend/macro_definition_support.ts +73 -0
- package/project-transform/src/frontend/macro_errors.js +40 -0
- package/project-transform/src/frontend/macro_errors.ts +70 -0
- package/project-transform/src/frontend/macro_expander.js +919 -0
- package/project-transform/src/frontend/macro_expander.ts +1611 -0
- package/project-transform/src/frontend/macro_factory_support.js +176 -0
- package/project-transform/src/frontend/macro_factory_support.ts +263 -0
- package/project-transform/src/frontend/macro_host_ast_internal.js +64 -0
- package/project-transform/src/frontend/macro_host_ast_internal.ts +109 -0
- package/project-transform/src/frontend/macro_index.js +27 -0
- package/project-transform/src/frontend/macro_index.ts +50 -0
- package/project-transform/src/frontend/macro_loader.js +281 -0
- package/project-transform/src/frontend/macro_loader.ts +506 -0
- package/project-transform/src/frontend/macro_operand_semantics.js +838 -0
- package/project-transform/src/frontend/macro_operand_semantics.ts +1489 -0
- package/project-transform/src/frontend/macro_output.js +54 -0
- package/project-transform/src/frontend/macro_output.ts +123 -0
- package/project-transform/src/frontend/macro_parser.js +611 -0
- package/project-transform/src/frontend/macro_parser.ts +832 -0
- package/project-transform/src/frontend/macro_resolver.js +69 -0
- package/project-transform/src/frontend/macro_resolver.ts +125 -0
- package/project-transform/src/frontend/macro_rewrite.js +285 -0
- package/project-transform/src/frontend/macro_rewrite.ts +442 -0
- package/project-transform/src/frontend/macro_runtime_support.js +232 -0
- package/project-transform/src/frontend/macro_runtime_support.ts +324 -0
- package/project-transform/src/frontend/macro_scanner.js +393 -0
- package/project-transform/src/frontend/macro_scanner.ts +455 -0
- package/project-transform/src/frontend/macro_semantic_backend_adapter.js +87 -0
- package/project-transform/src/frontend/macro_semantic_backend_adapter.ts +166 -0
- package/project-transform/src/frontend/macro_semantic_context.js +5 -0
- package/project-transform/src/frontend/macro_semantic_context.ts +12 -0
- package/project-transform/src/frontend/macro_semantic_output.js +24 -0
- package/project-transform/src/frontend/macro_semantic_output.ts +47 -0
- package/project-transform/src/frontend/macro_semantic_types.js +1 -0
- package/project-transform/src/frontend/macro_semantic_types.ts +98 -0
- package/project-transform/src/frontend/macro_semantics.js +1172 -0
- package/project-transform/src/frontend/macro_semantics.ts +1502 -0
- package/project-transform/src/frontend/macro_site_kind_support.js +164 -0
- package/project-transform/src/frontend/macro_site_kind_support.ts +255 -0
- package/project-transform/src/frontend/macro_syntax_internal.js +1950 -0
- package/project-transform/src/frontend/macro_syntax_internal.ts +3338 -0
- package/project-transform/src/frontend/macro_templates.js +57 -0
- package/project-transform/src/frontend/macro_templates.ts +143 -0
- package/project-transform/src/frontend/macro_test_helpers.js +82 -0
- package/project-transform/src/frontend/macro_test_helpers.ts +136 -0
- package/project-transform/src/frontend/macro_types.js +1 -0
- package/project-transform/src/frontend/macro_types.ts +103 -0
- package/project-transform/src/frontend/macro_vm.js +39 -0
- package/project-transform/src/frontend/macro_vm.ts +113 -0
- package/project-transform/src/frontend/match_macro.js +885 -0
- package/project-transform/src/frontend/match_macro.ts +1220 -0
- package/project-transform/src/frontend/numeric_normalization.js +824 -0
- package/project-transform/src/frontend/numeric_normalization.ts +1380 -0
- package/project-transform/src/frontend/numeric_prelude.js +278 -0
- package/project-transform/src/frontend/numeric_prelude.ts +370 -0
- package/project-transform/src/frontend/project_frontend.js +2396 -0
- package/project-transform/src/frontend/project_frontend.ts +3776 -0
- package/project-transform/src/frontend/project_macro_support.js +1401 -0
- package/project-transform/src/frontend/project_macro_support.ts +2137 -0
- package/project-transform/src/frontend/sql_macro.js +175 -0
- package/project-transform/src/frontend/sql_macro.ts +254 -0
- package/project-transform/src/frontend/sql_stdlib_support.js +1 -0
- package/project-transform/src/frontend/sql_stdlib_support.ts +6 -0
- package/project-transform/src/frontend/std_package_support.js +228 -0
- package/project-transform/src/frontend/std_package_support.ts +400 -0
- package/project-transform/src/frontend/value_normalization.js +306 -0
- package/project-transform/src/frontend/value_normalization.ts +599 -0
- package/project-transform/src/lsp/project_service.js +4771 -0
- package/project-transform/src/lsp/project_service.ts +7580 -0
- package/project-transform/src/lsp/protocol.js +9 -0
- package/project-transform/src/lsp/protocol.ts +38 -0
- package/project-transform/src/lsp/server.js +355 -0
- package/project-transform/src/lsp/server.ts +671 -0
- package/project-transform/src/lsp/session.js +49 -0
- package/project-transform/src/lsp/session.ts +48 -0
- package/project-transform/src/lsp/timing.js +43 -0
- package/project-transform/src/lsp/timing.ts +76 -0
- package/project-transform/src/lsp/transport.js +205 -0
- package/project-transform/src/lsp/transport.ts +253 -0
- package/project-transform/src/lsp_main.js +5 -0
- package/project-transform/src/lsp_main.ts +7 -0
- package/project-transform/src/macros.d.ts +1 -0
- package/project-transform/src/macros.js +1 -0
- package/project-transform/src/macros.ts +1 -0
- package/project-transform/src/main.js +24 -0
- package/project-transform/src/main.ts +28 -0
- package/project-transform/src/platform/host.js +264 -0
- package/project-transform/src/platform/host.ts +343 -0
- package/project-transform/src/platform/path.js +8 -0
- package/project-transform/src/platform/path.ts +20 -0
- package/project-transform/src/public_macro_api/macro_api.d.ts +1054 -0
- package/project-transform/src/public_macro_api/macro_semantic_types.d.ts +66 -0
- package/project-transform/src/public_macro_api/macro_types.d.ts +70 -0
- package/project-transform/src/run_program.js +14 -0
- package/project-transform/src/run_program.ts +33 -0
- package/project-transform/src/runtime/materialize.js +371 -0
- package/project-transform/src/runtime/materialize.ts +502 -0
- package/project-transform/src/runtime/on_demand.js +203 -0
- package/project-transform/src/runtime/on_demand.ts +305 -0
- package/project-transform/src/runtime/source_maps.js +205 -0
- package/project-transform/src/runtime/source_maps.ts +297 -0
- package/project-transform/src/runtime/transform.js +148 -0
- package/project-transform/src/runtime/transform.ts +295 -0
- package/project-transform/src/service/types.js +1 -0
- package/project-transform/src/service/types.ts +22 -0
- package/project-transform/src/soundscript_packages.js +477 -0
- package/project-transform/src/soundscript_packages.ts +754 -0
- package/project-transform/src/soundscript_runtime_specifiers.js +88 -0
- package/project-transform/src/soundscript_runtime_specifiers.ts +96 -0
- package/project-transform/src/stdlib/async.d.ts +81 -0
- package/project-transform/src/stdlib/async.js +213 -0
- package/project-transform/src/stdlib/async.ts +315 -0
- package/project-transform/src/stdlib/codec.d.ts +32 -0
- package/project-transform/src/stdlib/codec.js +30 -0
- package/project-transform/src/stdlib/codec.ts +76 -0
- package/project-transform/src/stdlib/compare.d.ts +28 -0
- package/project-transform/src/stdlib/compare.js +115 -0
- package/project-transform/src/stdlib/compare.ts +151 -0
- package/project-transform/src/stdlib/css.d.ts +16 -0
- package/project-transform/src/stdlib/css.js +9 -0
- package/project-transform/src/stdlib/css.ts +28 -0
- package/project-transform/src/stdlib/debug.d.ts +2 -0
- package/project-transform/src/stdlib/debug.js +9 -0
- package/project-transform/src/stdlib/debug.ts +10 -0
- package/project-transform/src/stdlib/decode.d.ts +86 -0
- package/project-transform/src/stdlib/decode.js +254 -0
- package/project-transform/src/stdlib/decode.ts +390 -0
- package/project-transform/src/stdlib/derive.d.ts +6 -0
- package/project-transform/src/stdlib/derive.js +7 -0
- package/project-transform/src/stdlib/derive.ts +7 -0
- package/project-transform/src/stdlib/encode.d.ts +100 -0
- package/project-transform/src/stdlib/encode.js +130 -0
- package/project-transform/src/stdlib/encode.ts +259 -0
- package/project-transform/src/stdlib/failures.d.ts +23 -0
- package/project-transform/src/stdlib/failures.js +41 -0
- package/project-transform/src/stdlib/failures.ts +64 -0
- package/project-transform/src/stdlib/fetch.d.ts +67 -0
- package/project-transform/src/stdlib/fetch.js +5 -0
- package/project-transform/src/stdlib/fetch.ts +11 -0
- package/project-transform/src/stdlib/graphql.d.ts +16 -0
- package/project-transform/src/stdlib/graphql.js +9 -0
- package/project-transform/src/stdlib/graphql.ts +28 -0
- package/project-transform/src/stdlib/hash.d.ts +34 -0
- package/project-transform/src/stdlib/hash.js +110 -0
- package/project-transform/src/stdlib/hash.ts +188 -0
- package/project-transform/src/stdlib/hkt.d.ts +40 -0
- package/project-transform/src/stdlib/hkt.js +3 -0
- package/project-transform/src/stdlib/hkt.ts +41 -0
- package/project-transform/src/stdlib/index.d.ts +9 -0
- package/project-transform/src/stdlib/index.js +15 -0
- package/project-transform/src/stdlib/index.ts +23 -0
- package/project-transform/src/stdlib/json.d.ts +125 -0
- package/project-transform/src/stdlib/json.js +764 -0
- package/project-transform/src/stdlib/json.ts +1034 -0
- package/project-transform/src/stdlib/match.d.ts +11 -0
- package/project-transform/src/stdlib/match.js +13 -0
- package/project-transform/src/stdlib/match.ts +26 -0
- package/project-transform/src/stdlib/numerics.d.ts +523 -0
- package/project-transform/src/stdlib/numerics.js +1356 -0
- package/project-transform/src/stdlib/numerics.ts +1937 -0
- package/project-transform/src/stdlib/random.d.ts +19 -0
- package/project-transform/src/stdlib/random.js +3 -0
- package/project-transform/src/stdlib/random.ts +5 -0
- package/project-transform/src/stdlib/result.d.ts +68 -0
- package/project-transform/src/stdlib/result.js +139 -0
- package/project-transform/src/stdlib/result.ts +248 -0
- package/project-transform/src/stdlib/sql.d.ts +22 -0
- package/project-transform/src/stdlib/sql.js +23 -0
- package/project-transform/src/stdlib/sql.ts +53 -0
- package/project-transform/src/stdlib/text.d.ts +24 -0
- package/project-transform/src/stdlib/text.js +3 -0
- package/project-transform/src/stdlib/text.ts +4 -0
- package/project-transform/src/stdlib/thunk.d.ts +2 -0
- package/project-transform/src/stdlib/thunk.js +9 -0
- package/project-transform/src/stdlib/thunk.ts +15 -0
- package/project-transform/src/stdlib/typeclasses.d.ts +57 -0
- package/project-transform/src/stdlib/typeclasses.js +78 -0
- package/project-transform/src/stdlib/typeclasses.ts +173 -0
- package/project-transform/src/stdlib/url.d.ts +37 -0
- package/project-transform/src/stdlib/url.js +3 -0
- package/project-transform/src/stdlib/url.ts +4 -0
- package/project-transform/src/stdlib/value.d.ts +9 -0
- package/project-transform/src/stdlib/value.js +104 -0
- package/project-transform/src/stdlib/value.ts +133 -0
- package/project-transform/src/test_installed_stdlib.js +147 -0
- package/project-transform/src/test_installed_stdlib.ts +245 -0
- package/project-transform/src/test_macro_package_fixture.js +50 -0
- package/project-transform/src/test_macro_package_fixture.ts +68 -0
- package/project-transform/src/value_deep_safe.js +191 -0
- package/project-transform/src/value_deep_safe.ts +273 -0
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
export const STS_PRELUDE_MODULE_SPECIFIER = 'sts:prelude';
|
|
2
|
+
export const STS_HKT_MODULE_SPECIFIER = 'sts:hkt';
|
|
3
|
+
export const STS_TYPECLASSES_MODULE_SPECIFIER = 'sts:typeclasses';
|
|
4
|
+
export const STS_RESULT_MODULE_SPECIFIER = 'sts:result';
|
|
5
|
+
export const STS_VALUE_MODULE_SPECIFIER = 'sts:value';
|
|
6
|
+
export const STS_MATCH_MODULE_SPECIFIER = 'sts:match';
|
|
7
|
+
export const STS_FAILURES_MODULE_SPECIFIER = 'sts:failures';
|
|
8
|
+
export const STS_URL_MODULE_SPECIFIER = 'sts:url';
|
|
9
|
+
export const STS_FETCH_MODULE_SPECIFIER = 'sts:fetch';
|
|
10
|
+
export const STS_TEXT_MODULE_SPECIFIER = 'sts:text';
|
|
11
|
+
export const STS_RANDOM_MODULE_SPECIFIER = 'sts:random';
|
|
12
|
+
export const STS_JSON_MODULE_SPECIFIER = 'sts:json';
|
|
13
|
+
export const STS_COMPARE_MODULE_SPECIFIER = 'sts:compare';
|
|
14
|
+
export const STS_HASH_MODULE_SPECIFIER = 'sts:hash';
|
|
15
|
+
export const STS_DERIVE_MODULE_SPECIFIER = 'sts:derive';
|
|
16
|
+
export const STS_DECODE_MODULE_SPECIFIER = 'sts:decode';
|
|
17
|
+
export const STS_ENCODE_MODULE_SPECIFIER = 'sts:encode';
|
|
18
|
+
export const STS_CODEC_MODULE_SPECIFIER = 'sts:codec';
|
|
19
|
+
export const STS_ASYNC_MODULE_SPECIFIER = 'sts:async';
|
|
20
|
+
export const STS_EXPERIMENTAL_THUNK_MODULE_SPECIFIER = 'sts:experimental/thunk';
|
|
21
|
+
export const STS_THUNK_MODULE_SPECIFIER = STS_EXPERIMENTAL_THUNK_MODULE_SPECIFIER;
|
|
22
|
+
export const STS_NUMERICS_MODULE_SPECIFIER = 'sts:numerics';
|
|
23
|
+
export const STS_MACROS_MODULE_SPECIFIER = 'sts:macros';
|
|
24
|
+
export const STS_EXPERIMENTAL_SQL_MODULE_SPECIFIER = 'sts:experimental/sql';
|
|
25
|
+
export const STS_EXPERIMENTAL_CSS_MODULE_SPECIFIER = 'sts:experimental/css';
|
|
26
|
+
export const STS_EXPERIMENTAL_GRAPHQL_MODULE_SPECIFIER = 'sts:experimental/graphql';
|
|
27
|
+
export const STS_EXPERIMENTAL_COMPONENT_MODULE_SPECIFIER = 'sts:experimental/component';
|
|
28
|
+
export const STS_EXPERIMENTAL_DEBUG_MODULE_SPECIFIER = 'sts:experimental/debug';
|
|
29
|
+
export const SOUNDSCRIPT_CORE_MODULE_SPECIFIER = STS_PRELUDE_MODULE_SPECIFIER;
|
|
30
|
+
export const SOUNDSCRIPT_HKT_MODULE_SPECIFIER = STS_HKT_MODULE_SPECIFIER;
|
|
31
|
+
export const SOUNDSCRIPT_RESULT_MODULE_SPECIFIER = STS_RESULT_MODULE_SPECIFIER;
|
|
32
|
+
export const SOUNDSCRIPT_VALUE_MODULE_SPECIFIER = STS_VALUE_MODULE_SPECIFIER;
|
|
33
|
+
export const SOUNDSCRIPT_MATCH_MODULE_SPECIFIER = STS_MATCH_MODULE_SPECIFIER;
|
|
34
|
+
export const SOUNDSCRIPT_ERRORS_MODULE_SPECIFIER = STS_FAILURES_MODULE_SPECIFIER;
|
|
35
|
+
export const SOUNDSCRIPT_URL_MODULE_SPECIFIER = STS_URL_MODULE_SPECIFIER;
|
|
36
|
+
export const SOUNDSCRIPT_FETCH_MODULE_SPECIFIER = STS_FETCH_MODULE_SPECIFIER;
|
|
37
|
+
export const SOUNDSCRIPT_TEXT_MODULE_SPECIFIER = STS_TEXT_MODULE_SPECIFIER;
|
|
38
|
+
export const SOUNDSCRIPT_RANDOM_MODULE_SPECIFIER = STS_RANDOM_MODULE_SPECIFIER;
|
|
39
|
+
export const SOUNDSCRIPT_JSON_MODULE_SPECIFIER = STS_JSON_MODULE_SPECIFIER;
|
|
40
|
+
export const SOUNDSCRIPT_COMPARE_MODULE_SPECIFIER = STS_COMPARE_MODULE_SPECIFIER;
|
|
41
|
+
export const SOUNDSCRIPT_HASH_MODULE_SPECIFIER = STS_HASH_MODULE_SPECIFIER;
|
|
42
|
+
export const SOUNDSCRIPT_DERIVE_MODULE_SPECIFIER = STS_DERIVE_MODULE_SPECIFIER;
|
|
43
|
+
export const SOUNDSCRIPT_DECODE_MODULE_SPECIFIER = STS_DECODE_MODULE_SPECIFIER;
|
|
44
|
+
export const SOUNDSCRIPT_CODEC_MODULE_SPECIFIER = STS_CODEC_MODULE_SPECIFIER;
|
|
45
|
+
export const SOUNDSCRIPT_ASYNC_MODULE_SPECIFIER = STS_ASYNC_MODULE_SPECIFIER;
|
|
46
|
+
export const SOUNDSCRIPT_SQL_MODULE_SPECIFIER = STS_EXPERIMENTAL_SQL_MODULE_SPECIFIER;
|
|
47
|
+
export const SOUNDSCRIPT_NUMERICS_MODULE_SPECIFIER = STS_NUMERICS_MODULE_SPECIFIER;
|
|
48
|
+
export const SOUNDSCRIPT_RUNTIME_PACKAGE_NAME = '@soundscript/soundscript';
|
|
49
|
+
export const SOUNDSCRIPT_EXPERIMENTAL_RUNTIME_PREFIX = '@soundscript/soundscript/experimental';
|
|
50
|
+
const BUILTIN_RUNTIME_MODULE_SPECIFIERS = new Map([
|
|
51
|
+
[STS_PRELUDE_MODULE_SPECIFIER, SOUNDSCRIPT_RUNTIME_PACKAGE_NAME],
|
|
52
|
+
[STS_HKT_MODULE_SPECIFIER, `${SOUNDSCRIPT_RUNTIME_PACKAGE_NAME}/hkt`],
|
|
53
|
+
[STS_TYPECLASSES_MODULE_SPECIFIER, `${SOUNDSCRIPT_RUNTIME_PACKAGE_NAME}/typeclasses`],
|
|
54
|
+
[STS_RESULT_MODULE_SPECIFIER, `${SOUNDSCRIPT_RUNTIME_PACKAGE_NAME}/result`],
|
|
55
|
+
[STS_VALUE_MODULE_SPECIFIER, `${SOUNDSCRIPT_RUNTIME_PACKAGE_NAME}/value`],
|
|
56
|
+
[STS_MATCH_MODULE_SPECIFIER, `${SOUNDSCRIPT_RUNTIME_PACKAGE_NAME}/match`],
|
|
57
|
+
[STS_FAILURES_MODULE_SPECIFIER, `${SOUNDSCRIPT_RUNTIME_PACKAGE_NAME}/failures`],
|
|
58
|
+
[STS_URL_MODULE_SPECIFIER, `${SOUNDSCRIPT_RUNTIME_PACKAGE_NAME}/url`],
|
|
59
|
+
[STS_FETCH_MODULE_SPECIFIER, `${SOUNDSCRIPT_RUNTIME_PACKAGE_NAME}/fetch`],
|
|
60
|
+
[STS_TEXT_MODULE_SPECIFIER, `${SOUNDSCRIPT_RUNTIME_PACKAGE_NAME}/text`],
|
|
61
|
+
[STS_RANDOM_MODULE_SPECIFIER, `${SOUNDSCRIPT_RUNTIME_PACKAGE_NAME}/random`],
|
|
62
|
+
[STS_JSON_MODULE_SPECIFIER, `${SOUNDSCRIPT_RUNTIME_PACKAGE_NAME}/json`],
|
|
63
|
+
[STS_COMPARE_MODULE_SPECIFIER, `${SOUNDSCRIPT_RUNTIME_PACKAGE_NAME}/compare`],
|
|
64
|
+
[STS_HASH_MODULE_SPECIFIER, `${SOUNDSCRIPT_RUNTIME_PACKAGE_NAME}/hash`],
|
|
65
|
+
[STS_DERIVE_MODULE_SPECIFIER, `${SOUNDSCRIPT_RUNTIME_PACKAGE_NAME}/derive`],
|
|
66
|
+
[STS_DECODE_MODULE_SPECIFIER, `${SOUNDSCRIPT_RUNTIME_PACKAGE_NAME}/decode`],
|
|
67
|
+
[STS_ENCODE_MODULE_SPECIFIER, `${SOUNDSCRIPT_RUNTIME_PACKAGE_NAME}/encode`],
|
|
68
|
+
[STS_CODEC_MODULE_SPECIFIER, `${SOUNDSCRIPT_RUNTIME_PACKAGE_NAME}/codec`],
|
|
69
|
+
[STS_ASYNC_MODULE_SPECIFIER, `${SOUNDSCRIPT_RUNTIME_PACKAGE_NAME}/async`],
|
|
70
|
+
[STS_EXPERIMENTAL_THUNK_MODULE_SPECIFIER, `${SOUNDSCRIPT_EXPERIMENTAL_RUNTIME_PREFIX}/thunk`],
|
|
71
|
+
[STS_NUMERICS_MODULE_SPECIFIER, `${SOUNDSCRIPT_RUNTIME_PACKAGE_NAME}/numerics`],
|
|
72
|
+
[STS_EXPERIMENTAL_SQL_MODULE_SPECIFIER, `${SOUNDSCRIPT_EXPERIMENTAL_RUNTIME_PREFIX}/sql`],
|
|
73
|
+
[STS_EXPERIMENTAL_CSS_MODULE_SPECIFIER, `${SOUNDSCRIPT_EXPERIMENTAL_RUNTIME_PREFIX}/css`],
|
|
74
|
+
[
|
|
75
|
+
STS_EXPERIMENTAL_GRAPHQL_MODULE_SPECIFIER,
|
|
76
|
+
`${SOUNDSCRIPT_EXPERIMENTAL_RUNTIME_PREFIX}/graphql`,
|
|
77
|
+
],
|
|
78
|
+
[STS_EXPERIMENTAL_DEBUG_MODULE_SPECIFIER, `${SOUNDSCRIPT_EXPERIMENTAL_RUNTIME_PREFIX}/debug`],
|
|
79
|
+
]);
|
|
80
|
+
export function isSoundscriptProtocolSpecifier(moduleSpecifier) {
|
|
81
|
+
return moduleSpecifier.startsWith('sts:');
|
|
82
|
+
}
|
|
83
|
+
export function isBuiltinRuntimeModuleSpecifier(moduleSpecifier) {
|
|
84
|
+
return BUILTIN_RUNTIME_MODULE_SPECIFIERS.has(moduleSpecifier);
|
|
85
|
+
}
|
|
86
|
+
export function builtinRuntimeImportSpecifier(moduleSpecifier) {
|
|
87
|
+
return BUILTIN_RUNTIME_MODULE_SPECIFIERS.get(moduleSpecifier);
|
|
88
|
+
}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
export const STS_PRELUDE_MODULE_SPECIFIER = 'sts:prelude';
|
|
2
|
+
export const STS_HKT_MODULE_SPECIFIER = 'sts:hkt';
|
|
3
|
+
export const STS_TYPECLASSES_MODULE_SPECIFIER = 'sts:typeclasses';
|
|
4
|
+
export const STS_RESULT_MODULE_SPECIFIER = 'sts:result';
|
|
5
|
+
export const STS_VALUE_MODULE_SPECIFIER = 'sts:value';
|
|
6
|
+
export const STS_MATCH_MODULE_SPECIFIER = 'sts:match';
|
|
7
|
+
export const STS_FAILURES_MODULE_SPECIFIER = 'sts:failures';
|
|
8
|
+
export const STS_URL_MODULE_SPECIFIER = 'sts:url';
|
|
9
|
+
export const STS_FETCH_MODULE_SPECIFIER = 'sts:fetch';
|
|
10
|
+
export const STS_TEXT_MODULE_SPECIFIER = 'sts:text';
|
|
11
|
+
export const STS_RANDOM_MODULE_SPECIFIER = 'sts:random';
|
|
12
|
+
export const STS_JSON_MODULE_SPECIFIER = 'sts:json';
|
|
13
|
+
export const STS_COMPARE_MODULE_SPECIFIER = 'sts:compare';
|
|
14
|
+
export const STS_HASH_MODULE_SPECIFIER = 'sts:hash';
|
|
15
|
+
export const STS_DERIVE_MODULE_SPECIFIER = 'sts:derive';
|
|
16
|
+
export const STS_DECODE_MODULE_SPECIFIER = 'sts:decode';
|
|
17
|
+
export const STS_ENCODE_MODULE_SPECIFIER = 'sts:encode';
|
|
18
|
+
export const STS_CODEC_MODULE_SPECIFIER = 'sts:codec';
|
|
19
|
+
export const STS_ASYNC_MODULE_SPECIFIER = 'sts:async';
|
|
20
|
+
export const STS_EXPERIMENTAL_THUNK_MODULE_SPECIFIER = 'sts:experimental/thunk';
|
|
21
|
+
export const STS_THUNK_MODULE_SPECIFIER = STS_EXPERIMENTAL_THUNK_MODULE_SPECIFIER;
|
|
22
|
+
export const STS_NUMERICS_MODULE_SPECIFIER = 'sts:numerics';
|
|
23
|
+
export const STS_MACROS_MODULE_SPECIFIER = 'sts:macros';
|
|
24
|
+
|
|
25
|
+
export const STS_EXPERIMENTAL_SQL_MODULE_SPECIFIER = 'sts:experimental/sql';
|
|
26
|
+
export const STS_EXPERIMENTAL_CSS_MODULE_SPECIFIER = 'sts:experimental/css';
|
|
27
|
+
export const STS_EXPERIMENTAL_GRAPHQL_MODULE_SPECIFIER = 'sts:experimental/graphql';
|
|
28
|
+
export const STS_EXPERIMENTAL_COMPONENT_MODULE_SPECIFIER = 'sts:experimental/component';
|
|
29
|
+
export const STS_EXPERIMENTAL_DEBUG_MODULE_SPECIFIER = 'sts:experimental/debug';
|
|
30
|
+
|
|
31
|
+
export const SOUNDSCRIPT_CORE_MODULE_SPECIFIER = STS_PRELUDE_MODULE_SPECIFIER;
|
|
32
|
+
export const SOUNDSCRIPT_HKT_MODULE_SPECIFIER = STS_HKT_MODULE_SPECIFIER;
|
|
33
|
+
export const SOUNDSCRIPT_RESULT_MODULE_SPECIFIER = STS_RESULT_MODULE_SPECIFIER;
|
|
34
|
+
export const SOUNDSCRIPT_VALUE_MODULE_SPECIFIER = STS_VALUE_MODULE_SPECIFIER;
|
|
35
|
+
export const SOUNDSCRIPT_MATCH_MODULE_SPECIFIER = STS_MATCH_MODULE_SPECIFIER;
|
|
36
|
+
export const SOUNDSCRIPT_ERRORS_MODULE_SPECIFIER = STS_FAILURES_MODULE_SPECIFIER;
|
|
37
|
+
export const SOUNDSCRIPT_URL_MODULE_SPECIFIER = STS_URL_MODULE_SPECIFIER;
|
|
38
|
+
export const SOUNDSCRIPT_FETCH_MODULE_SPECIFIER = STS_FETCH_MODULE_SPECIFIER;
|
|
39
|
+
export const SOUNDSCRIPT_TEXT_MODULE_SPECIFIER = STS_TEXT_MODULE_SPECIFIER;
|
|
40
|
+
export const SOUNDSCRIPT_RANDOM_MODULE_SPECIFIER = STS_RANDOM_MODULE_SPECIFIER;
|
|
41
|
+
export const SOUNDSCRIPT_JSON_MODULE_SPECIFIER = STS_JSON_MODULE_SPECIFIER;
|
|
42
|
+
export const SOUNDSCRIPT_COMPARE_MODULE_SPECIFIER = STS_COMPARE_MODULE_SPECIFIER;
|
|
43
|
+
export const SOUNDSCRIPT_HASH_MODULE_SPECIFIER = STS_HASH_MODULE_SPECIFIER;
|
|
44
|
+
export const SOUNDSCRIPT_DERIVE_MODULE_SPECIFIER = STS_DERIVE_MODULE_SPECIFIER;
|
|
45
|
+
export const SOUNDSCRIPT_DECODE_MODULE_SPECIFIER = STS_DECODE_MODULE_SPECIFIER;
|
|
46
|
+
export const SOUNDSCRIPT_CODEC_MODULE_SPECIFIER = STS_CODEC_MODULE_SPECIFIER;
|
|
47
|
+
export const SOUNDSCRIPT_ASYNC_MODULE_SPECIFIER = STS_ASYNC_MODULE_SPECIFIER;
|
|
48
|
+
export const SOUNDSCRIPT_SQL_MODULE_SPECIFIER = STS_EXPERIMENTAL_SQL_MODULE_SPECIFIER;
|
|
49
|
+
export const SOUNDSCRIPT_NUMERICS_MODULE_SPECIFIER = STS_NUMERICS_MODULE_SPECIFIER;
|
|
50
|
+
|
|
51
|
+
export const SOUNDSCRIPT_RUNTIME_PACKAGE_NAME = '@soundscript/soundscript';
|
|
52
|
+
export const SOUNDSCRIPT_EXPERIMENTAL_RUNTIME_PREFIX = '@soundscript/soundscript/experimental';
|
|
53
|
+
const BUILTIN_RUNTIME_MODULE_SPECIFIERS = new Map<string, string>([
|
|
54
|
+
[STS_PRELUDE_MODULE_SPECIFIER, SOUNDSCRIPT_RUNTIME_PACKAGE_NAME],
|
|
55
|
+
[STS_HKT_MODULE_SPECIFIER, `${SOUNDSCRIPT_RUNTIME_PACKAGE_NAME}/hkt`],
|
|
56
|
+
[STS_TYPECLASSES_MODULE_SPECIFIER, `${SOUNDSCRIPT_RUNTIME_PACKAGE_NAME}/typeclasses`],
|
|
57
|
+
[STS_RESULT_MODULE_SPECIFIER, `${SOUNDSCRIPT_RUNTIME_PACKAGE_NAME}/result`],
|
|
58
|
+
[STS_VALUE_MODULE_SPECIFIER, `${SOUNDSCRIPT_RUNTIME_PACKAGE_NAME}/value`],
|
|
59
|
+
[STS_MATCH_MODULE_SPECIFIER, `${SOUNDSCRIPT_RUNTIME_PACKAGE_NAME}/match`],
|
|
60
|
+
[STS_FAILURES_MODULE_SPECIFIER, `${SOUNDSCRIPT_RUNTIME_PACKAGE_NAME}/failures`],
|
|
61
|
+
[STS_URL_MODULE_SPECIFIER, `${SOUNDSCRIPT_RUNTIME_PACKAGE_NAME}/url`],
|
|
62
|
+
[STS_FETCH_MODULE_SPECIFIER, `${SOUNDSCRIPT_RUNTIME_PACKAGE_NAME}/fetch`],
|
|
63
|
+
[STS_TEXT_MODULE_SPECIFIER, `${SOUNDSCRIPT_RUNTIME_PACKAGE_NAME}/text`],
|
|
64
|
+
[STS_RANDOM_MODULE_SPECIFIER, `${SOUNDSCRIPT_RUNTIME_PACKAGE_NAME}/random`],
|
|
65
|
+
[STS_JSON_MODULE_SPECIFIER, `${SOUNDSCRIPT_RUNTIME_PACKAGE_NAME}/json`],
|
|
66
|
+
[STS_COMPARE_MODULE_SPECIFIER, `${SOUNDSCRIPT_RUNTIME_PACKAGE_NAME}/compare`],
|
|
67
|
+
[STS_HASH_MODULE_SPECIFIER, `${SOUNDSCRIPT_RUNTIME_PACKAGE_NAME}/hash`],
|
|
68
|
+
[STS_DERIVE_MODULE_SPECIFIER, `${SOUNDSCRIPT_RUNTIME_PACKAGE_NAME}/derive`],
|
|
69
|
+
[STS_DECODE_MODULE_SPECIFIER, `${SOUNDSCRIPT_RUNTIME_PACKAGE_NAME}/decode`],
|
|
70
|
+
[STS_ENCODE_MODULE_SPECIFIER, `${SOUNDSCRIPT_RUNTIME_PACKAGE_NAME}/encode`],
|
|
71
|
+
[STS_CODEC_MODULE_SPECIFIER, `${SOUNDSCRIPT_RUNTIME_PACKAGE_NAME}/codec`],
|
|
72
|
+
[STS_ASYNC_MODULE_SPECIFIER, `${SOUNDSCRIPT_RUNTIME_PACKAGE_NAME}/async`],
|
|
73
|
+
[STS_EXPERIMENTAL_THUNK_MODULE_SPECIFIER, `${SOUNDSCRIPT_EXPERIMENTAL_RUNTIME_PREFIX}/thunk`],
|
|
74
|
+
[STS_NUMERICS_MODULE_SPECIFIER, `${SOUNDSCRIPT_RUNTIME_PACKAGE_NAME}/numerics`],
|
|
75
|
+
[STS_EXPERIMENTAL_SQL_MODULE_SPECIFIER, `${SOUNDSCRIPT_EXPERIMENTAL_RUNTIME_PREFIX}/sql`],
|
|
76
|
+
[STS_EXPERIMENTAL_CSS_MODULE_SPECIFIER, `${SOUNDSCRIPT_EXPERIMENTAL_RUNTIME_PREFIX}/css`],
|
|
77
|
+
[
|
|
78
|
+
STS_EXPERIMENTAL_GRAPHQL_MODULE_SPECIFIER,
|
|
79
|
+
`${SOUNDSCRIPT_EXPERIMENTAL_RUNTIME_PREFIX}/graphql`,
|
|
80
|
+
],
|
|
81
|
+
[STS_EXPERIMENTAL_DEBUG_MODULE_SPECIFIER, `${SOUNDSCRIPT_EXPERIMENTAL_RUNTIME_PREFIX}/debug`],
|
|
82
|
+
]);
|
|
83
|
+
|
|
84
|
+
export function isSoundscriptProtocolSpecifier(moduleSpecifier: string): boolean {
|
|
85
|
+
return moduleSpecifier.startsWith('sts:');
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
export function isBuiltinRuntimeModuleSpecifier(moduleSpecifier: string): boolean {
|
|
89
|
+
return BUILTIN_RUNTIME_MODULE_SPECIFIERS.has(moduleSpecifier);
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
export function builtinRuntimeImportSpecifier(
|
|
93
|
+
moduleSpecifier: string,
|
|
94
|
+
): string | undefined {
|
|
95
|
+
return BUILTIN_RUNTIME_MODULE_SPECIFIERS.get(moduleSpecifier);
|
|
96
|
+
}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import type { Bind, Kind2, TypeLambda } from 'sts:hkt';
|
|
2
|
+
import { Failure } from 'sts:failures';
|
|
3
|
+
import type { Result } from 'sts:result';
|
|
4
|
+
import type { Applicative, AsyncMonad, Functor, Monad } from 'sts:typeclasses';
|
|
5
|
+
|
|
6
|
+
export interface AbortSignalLike {
|
|
7
|
+
readonly aborted: boolean;
|
|
8
|
+
readonly reason?: unknown;
|
|
9
|
+
addEventListener(
|
|
10
|
+
type: 'abort',
|
|
11
|
+
listener: () => void,
|
|
12
|
+
options?: boolean | { once?: boolean },
|
|
13
|
+
): void;
|
|
14
|
+
removeEventListener(type: 'abort', listener: () => void, options?: boolean): void;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export type Task<T, E = Error> = (signal?: AbortSignalLike) => Promise<Result<T, E>>;
|
|
18
|
+
|
|
19
|
+
export interface TaskF extends TypeLambda {
|
|
20
|
+
readonly type: Task<this['Args'][1], this['Args'][0]>;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export interface PromiseF extends TypeLambda {
|
|
24
|
+
readonly type: Promise<this['Args'][0]>;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export type TaskKind<E, T> = Kind2<TaskF, E, T>;
|
|
28
|
+
export type PromiseKind<T> = Promise<T>;
|
|
29
|
+
|
|
30
|
+
export class TimeoutFailure extends Failure {
|
|
31
|
+
readonly ms: number;
|
|
32
|
+
constructor(ms: number, cause?: unknown);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export function succeed<T>(value: T): Task<T, never>;
|
|
36
|
+
export function fail<E>(error: E): Task<never, E>;
|
|
37
|
+
export function fromResult<T, E>(result: Result<T, E>): Task<T, E>;
|
|
38
|
+
export function fromPromise<T>(fn: (signal?: AbortSignalLike) => Promise<T>): Task<T, Error>;
|
|
39
|
+
export function fromPromise<T, E>(
|
|
40
|
+
fn: (signal?: AbortSignalLike) => Promise<T>,
|
|
41
|
+
mapError: (error: Error) => E,
|
|
42
|
+
): Task<T, E>;
|
|
43
|
+
export function map<A, B, E>(
|
|
44
|
+
task: Task<A, E>,
|
|
45
|
+
project: (value: A) => B,
|
|
46
|
+
): Task<B, E>;
|
|
47
|
+
export function mapError<A, E1, E2>(
|
|
48
|
+
task: Task<A, E1>,
|
|
49
|
+
project: (error: E1) => E2,
|
|
50
|
+
): Task<A, E2 | Error>;
|
|
51
|
+
export function flatMap<A, B, E1, E2>(
|
|
52
|
+
task: Task<A, E1>,
|
|
53
|
+
project: (value: A) => Task<B, E2>,
|
|
54
|
+
): Task<B, E1 | E2>;
|
|
55
|
+
export function recover<A, B, E>(
|
|
56
|
+
task: Task<A, E>,
|
|
57
|
+
project: (error: E) => B | Promise<B>,
|
|
58
|
+
): Task<A | B, Error>;
|
|
59
|
+
export function tap<A, E>(
|
|
60
|
+
task: Task<A, E>,
|
|
61
|
+
effect: (value: A) => unknown | Promise<unknown>,
|
|
62
|
+
): Task<A, E | Error>;
|
|
63
|
+
export function tapError<A, E>(
|
|
64
|
+
task: Task<A, E>,
|
|
65
|
+
effect: (error: E) => unknown | Promise<unknown>,
|
|
66
|
+
): Task<A, E | Error>;
|
|
67
|
+
export function parallel<T, E>(tasks: readonly Task<T, E>[]): Task<readonly T[], E>;
|
|
68
|
+
export function race<T, E>(
|
|
69
|
+
tasks: readonly [Task<T, E>, ...Task<T, E>[]],
|
|
70
|
+
): Task<T, E>;
|
|
71
|
+
export function timeout<T, E>(task: Task<T, E>, ms: number): Task<T, E | TimeoutFailure>;
|
|
72
|
+
|
|
73
|
+
export function taskFunctor<E>(): Functor<Bind<TaskF, [E]>>;
|
|
74
|
+
export function taskApplicative<E>(): Applicative<Bind<TaskF, [E]>>;
|
|
75
|
+
export function taskMonad<E>(): Monad<Bind<TaskF, [E]>>;
|
|
76
|
+
export function taskAsyncMonad<E>(): AsyncMonad<Bind<TaskF, [E]>>;
|
|
77
|
+
|
|
78
|
+
export const promiseFunctor: Functor<PromiseF>;
|
|
79
|
+
export const promiseApplicative: Applicative<PromiseF>;
|
|
80
|
+
export const promiseMonad: Monad<PromiseF>;
|
|
81
|
+
export const promiseAsyncMonad: AsyncMonad<PromiseF>;
|
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
import { Failure, normalizeThrown } from '@soundscript/soundscript/failures';
|
|
2
|
+
import { err, isErr, ok, resultOf } from '@soundscript/soundscript/result';
|
|
3
|
+
export class TimeoutFailure extends Failure {
|
|
4
|
+
constructor(ms, cause) {
|
|
5
|
+
super(`Task timed out after ${ms}ms.`, { cause });
|
|
6
|
+
this.ms = ms;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
export function succeed(value) {
|
|
10
|
+
return () => Promise.resolve(ok(value));
|
|
11
|
+
}
|
|
12
|
+
export function fail(error) {
|
|
13
|
+
return () => Promise.resolve(err(error));
|
|
14
|
+
}
|
|
15
|
+
export function fromResult(result) {
|
|
16
|
+
return () => Promise.resolve(result);
|
|
17
|
+
}
|
|
18
|
+
export function fromPromise(fn, mapError) {
|
|
19
|
+
return async (signal) => {
|
|
20
|
+
if (mapError) {
|
|
21
|
+
return await resultOf(() => fn(signal), mapError);
|
|
22
|
+
}
|
|
23
|
+
return await resultOf(() => fn(signal));
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
export function map(task, project) {
|
|
27
|
+
return async (signal) => {
|
|
28
|
+
const result = await task(signal);
|
|
29
|
+
return isErr(result) ? result : ok(project(result.value));
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
export function mapError(task, project) {
|
|
33
|
+
return async (signal) => {
|
|
34
|
+
const result = await task(signal);
|
|
35
|
+
if (!isErr(result)) {
|
|
36
|
+
return result;
|
|
37
|
+
}
|
|
38
|
+
try {
|
|
39
|
+
return err(project(result.error));
|
|
40
|
+
}
|
|
41
|
+
catch (error) {
|
|
42
|
+
return err(normalizeThrown(error));
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
export function flatMap(task, project) {
|
|
47
|
+
return async (signal) => {
|
|
48
|
+
const result = await task(signal);
|
|
49
|
+
if (isErr(result)) {
|
|
50
|
+
return result;
|
|
51
|
+
}
|
|
52
|
+
return await project(result.value)(signal);
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
export function recover(task, project) {
|
|
56
|
+
return async (signal) => {
|
|
57
|
+
const result = await task(signal);
|
|
58
|
+
if (!isErr(result)) {
|
|
59
|
+
return result;
|
|
60
|
+
}
|
|
61
|
+
return await resultOf(async () => await project(result.error));
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
export function tap(task, effect) {
|
|
65
|
+
return async (signal) => {
|
|
66
|
+
const result = await task(signal);
|
|
67
|
+
if (isErr(result)) {
|
|
68
|
+
return result;
|
|
69
|
+
}
|
|
70
|
+
const observed = await resultOf(async () => await effect(result.value));
|
|
71
|
+
return isErr(observed) ? observed : result;
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
export function tapError(task, effect) {
|
|
75
|
+
return async (signal) => {
|
|
76
|
+
const result = await task(signal);
|
|
77
|
+
if (!isErr(result)) {
|
|
78
|
+
return result;
|
|
79
|
+
}
|
|
80
|
+
const observed = await resultOf(async () => await effect(result.error));
|
|
81
|
+
return isErr(observed) ? observed : result;
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
export function parallel(tasks) {
|
|
85
|
+
return async (signal) => {
|
|
86
|
+
const results = await Promise.all(tasks.map((task) => task(signal)));
|
|
87
|
+
const values = [];
|
|
88
|
+
for (const result of results) {
|
|
89
|
+
if (isErr(result)) {
|
|
90
|
+
return result;
|
|
91
|
+
}
|
|
92
|
+
values.push(result.value);
|
|
93
|
+
}
|
|
94
|
+
return ok(values);
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
export function race(tasks) {
|
|
98
|
+
return async (signal) => {
|
|
99
|
+
const controller = new AbortController();
|
|
100
|
+
const cleanup = forwardAbort(signal, controller);
|
|
101
|
+
try {
|
|
102
|
+
return await Promise.race(tasks.map(async (task) => {
|
|
103
|
+
const result = await task(controller.signal);
|
|
104
|
+
controller.abort(result);
|
|
105
|
+
return result;
|
|
106
|
+
}));
|
|
107
|
+
}
|
|
108
|
+
finally {
|
|
109
|
+
cleanup();
|
|
110
|
+
}
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
export function timeout(task, ms) {
|
|
114
|
+
return async (signal) => {
|
|
115
|
+
const controller = new AbortController();
|
|
116
|
+
const cleanup = forwardAbort(signal, controller);
|
|
117
|
+
let timeoutId;
|
|
118
|
+
try {
|
|
119
|
+
const timeoutPromise = new Promise((resolve) => {
|
|
120
|
+
timeoutId = setTimeout(() => {
|
|
121
|
+
const failure = new TimeoutFailure(ms);
|
|
122
|
+
resolve(err(failure));
|
|
123
|
+
controller.abort(failure);
|
|
124
|
+
}, ms);
|
|
125
|
+
});
|
|
126
|
+
return await Promise.race([
|
|
127
|
+
task(controller.signal),
|
|
128
|
+
timeoutPromise,
|
|
129
|
+
]);
|
|
130
|
+
}
|
|
131
|
+
finally {
|
|
132
|
+
cleanup();
|
|
133
|
+
if (timeoutId !== undefined) {
|
|
134
|
+
clearTimeout(timeoutId);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
function forwardAbort(signal, controller) {
|
|
140
|
+
if (!signal) {
|
|
141
|
+
return () => { };
|
|
142
|
+
}
|
|
143
|
+
if (signal.aborted) {
|
|
144
|
+
controller.abort(signal.reason);
|
|
145
|
+
return () => { };
|
|
146
|
+
}
|
|
147
|
+
const onAbort = () => {
|
|
148
|
+
controller.abort(signal.reason);
|
|
149
|
+
};
|
|
150
|
+
signal.addEventListener('abort', onAbort, { once: true });
|
|
151
|
+
return () => signal.removeEventListener('abort', onAbort);
|
|
152
|
+
}
|
|
153
|
+
function mapTask(task, project) {
|
|
154
|
+
return map(task, project);
|
|
155
|
+
}
|
|
156
|
+
function apTask(fn, value) {
|
|
157
|
+
return flatMap(fn, (resolvedFn) => map(value, resolvedFn));
|
|
158
|
+
}
|
|
159
|
+
function flatMapTask(task, project) {
|
|
160
|
+
return flatMap(task, project);
|
|
161
|
+
}
|
|
162
|
+
function createTaskMonad() {
|
|
163
|
+
return {
|
|
164
|
+
ap: apTask,
|
|
165
|
+
flatMap: flatMapTask,
|
|
166
|
+
map: mapTask,
|
|
167
|
+
pure: succeed,
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
export function taskFunctor() {
|
|
171
|
+
return createTaskMonad();
|
|
172
|
+
}
|
|
173
|
+
export function taskApplicative() {
|
|
174
|
+
return createTaskMonad();
|
|
175
|
+
}
|
|
176
|
+
export function taskMonad() {
|
|
177
|
+
return createTaskMonad();
|
|
178
|
+
}
|
|
179
|
+
export function taskAsyncMonad() {
|
|
180
|
+
const monad = createTaskMonad();
|
|
181
|
+
return {
|
|
182
|
+
...monad,
|
|
183
|
+
fromPromise(promise) {
|
|
184
|
+
return fromPromise(() => promise);
|
|
185
|
+
},
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
export const promiseFunctor = {
|
|
189
|
+
map(value, f) {
|
|
190
|
+
return value.then(f);
|
|
191
|
+
},
|
|
192
|
+
};
|
|
193
|
+
export const promiseApplicative = {
|
|
194
|
+
...promiseFunctor,
|
|
195
|
+
ap(fn, value) {
|
|
196
|
+
return Promise.all([fn, value]).then(([resolvedFn, resolvedValue]) => resolvedFn(resolvedValue));
|
|
197
|
+
},
|
|
198
|
+
pure(value) {
|
|
199
|
+
return Promise.resolve(value);
|
|
200
|
+
},
|
|
201
|
+
};
|
|
202
|
+
export const promiseMonad = {
|
|
203
|
+
...promiseApplicative,
|
|
204
|
+
flatMap(value, f) {
|
|
205
|
+
return value.then(f);
|
|
206
|
+
},
|
|
207
|
+
};
|
|
208
|
+
export const promiseAsyncMonad = {
|
|
209
|
+
...promiseMonad,
|
|
210
|
+
fromPromise(promise) {
|
|
211
|
+
return promise;
|
|
212
|
+
},
|
|
213
|
+
};
|