skill-universe 1.1.0
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/README.md +24 -0
- package/bin/skillc.mjs +3 -0
- package/build/dev/javascript/argv/_gleam_artefacts/argv.cache +0 -0
- package/build/dev/javascript/argv/_gleam_artefacts/argv.cache_inline +0 -0
- package/build/dev/javascript/argv/_gleam_artefacts/argv.cache_meta +0 -0
- package/build/dev/javascript/argv/argv.erl +12 -0
- package/build/dev/javascript/argv/argv.mjs +31 -0
- package/build/dev/javascript/argv/argv_ffi.erl +27 -0
- package/build/dev/javascript/argv/argv_ffi.mjs +20 -0
- package/build/dev/javascript/argv/gleam.mjs +1 -0
- package/build/dev/javascript/filepath/_gleam_artefacts/filepath.cache +0 -0
- package/build/dev/javascript/filepath/_gleam_artefacts/filepath.cache_inline +0 -0
- package/build/dev/javascript/filepath/_gleam_artefacts/filepath.cache_meta +0 -0
- package/build/dev/javascript/filepath/filepath.erl +425 -0
- package/build/dev/javascript/filepath/filepath.mjs +529 -0
- package/build/dev/javascript/filepath/filepath_ffi.erl +9 -0
- package/build/dev/javascript/filepath/filepath_ffi.mjs +6 -0
- package/build/dev/javascript/filepath/gleam.mjs +1 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@bit_array.cache +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@bit_array.cache_inline +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@bit_array.cache_meta +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@bool.cache +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@bool.cache_inline +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@bool.cache_meta +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@bytes_tree.cache +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@bytes_tree.cache_inline +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@bytes_tree.cache_meta +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@dict.cache +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@dict.cache_inline +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@dict.cache_meta +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@dynamic.cache +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@dynamic.cache_inline +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@dynamic.cache_meta +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@dynamic@decode.cache +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@dynamic@decode.cache_inline +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@dynamic@decode.cache_meta +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@float.cache +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@float.cache_inline +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@float.cache_meta +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@function.cache +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@function.cache_inline +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@function.cache_meta +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@int.cache +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@int.cache_inline +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@int.cache_meta +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@io.cache +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@io.cache_inline +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@io.cache_meta +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@list.cache +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@list.cache_inline +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@list.cache_meta +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@option.cache +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@option.cache_inline +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@option.cache_meta +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@order.cache +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@order.cache_inline +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@order.cache_meta +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@pair.cache +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@pair.cache_inline +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@pair.cache_meta +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@result.cache +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@result.cache_inline +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@result.cache_meta +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@set.cache +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@set.cache_inline +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@set.cache_meta +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@string.cache +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@string.cache_inline +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@string.cache_meta +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@string_tree.cache +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@string_tree.cache_inline +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@string_tree.cache_meta +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@uri.cache +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@uri.cache_inline +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@uri.cache_meta +0 -0
- package/build/dev/javascript/gleam_stdlib/dict.mjs +710 -0
- package/build/dev/javascript/gleam_stdlib/gleam/bit_array.mjs +285 -0
- package/build/dev/javascript/gleam_stdlib/gleam/bool.mjs +313 -0
- package/build/dev/javascript/gleam_stdlib/gleam/bytes_tree.mjs +225 -0
- package/build/dev/javascript/gleam_stdlib/gleam/dict.mjs +456 -0
- package/build/dev/javascript/gleam_stdlib/gleam/dynamic/decode.mjs +985 -0
- package/build/dev/javascript/gleam_stdlib/gleam/dynamic.mjs +35 -0
- package/build/dev/javascript/gleam_stdlib/gleam/float.mjs +572 -0
- package/build/dev/javascript/gleam_stdlib/gleam/function.mjs +6 -0
- package/build/dev/javascript/gleam_stdlib/gleam/int.mjs +832 -0
- package/build/dev/javascript/gleam_stdlib/gleam/io.mjs +8 -0
- package/build/dev/javascript/gleam_stdlib/gleam/list.mjs +3160 -0
- package/build/dev/javascript/gleam_stdlib/gleam/option.mjs +418 -0
- package/build/dev/javascript/gleam_stdlib/gleam/order.mjs +178 -0
- package/build/dev/javascript/gleam_stdlib/gleam/pair.mjs +102 -0
- package/build/dev/javascript/gleam_stdlib/gleam/result.mjs +480 -0
- package/build/dev/javascript/gleam_stdlib/gleam/set.mjs +416 -0
- package/build/dev/javascript/gleam_stdlib/gleam/string.mjs +723 -0
- package/build/dev/javascript/gleam_stdlib/gleam/string_tree.mjs +133 -0
- package/build/dev/javascript/gleam_stdlib/gleam/uri.mjs +1155 -0
- package/build/dev/javascript/gleam_stdlib/gleam.mjs +1 -0
- package/build/dev/javascript/gleam_stdlib/gleam@bit_array.erl +347 -0
- package/build/dev/javascript/gleam_stdlib/gleam@bool.erl +352 -0
- package/build/dev/javascript/gleam_stdlib/gleam@bytes_tree.erl +211 -0
- package/build/dev/javascript/gleam_stdlib/gleam@dict.erl +521 -0
- package/build/dev/javascript/gleam_stdlib/gleam@dynamic.erl +106 -0
- package/build/dev/javascript/gleam_stdlib/gleam@dynamic@decode.erl +1112 -0
- package/build/dev/javascript/gleam_stdlib/gleam@float.erl +764 -0
- package/build/dev/javascript/gleam_stdlib/gleam@function.erl +18 -0
- package/build/dev/javascript/gleam_stdlib/gleam@int.erl +1004 -0
- package/build/dev/javascript/gleam_stdlib/gleam@io.erl +80 -0
- package/build/dev/javascript/gleam_stdlib/gleam@list.erl +2832 -0
- package/build/dev/javascript/gleam_stdlib/gleam@option.erl +413 -0
- package/build/dev/javascript/gleam_stdlib/gleam@order.erl +200 -0
- package/build/dev/javascript/gleam_stdlib/gleam@pair.erl +110 -0
- package/build/dev/javascript/gleam_stdlib/gleam@result.erl +532 -0
- package/build/dev/javascript/gleam_stdlib/gleam@set.erl +433 -0
- package/build/dev/javascript/gleam_stdlib/gleam@string.erl +1012 -0
- package/build/dev/javascript/gleam_stdlib/gleam@string_tree.erl +207 -0
- package/build/dev/javascript/gleam_stdlib/gleam@uri.erl +1049 -0
- package/build/dev/javascript/gleam_stdlib/gleam_stdlib.erl +529 -0
- package/build/dev/javascript/gleam_stdlib/gleam_stdlib.mjs +1050 -0
- package/build/dev/javascript/gleam_version +1 -0
- package/build/dev/javascript/gleeunit/_gleam_artefacts/gleeunit.cache +0 -0
- package/build/dev/javascript/gleeunit/_gleam_artefacts/gleeunit.cache_inline +0 -0
- package/build/dev/javascript/gleeunit/_gleam_artefacts/gleeunit.cache_meta +0 -0
- package/build/dev/javascript/gleeunit/_gleam_artefacts/gleeunit@internal@gleam_panic.cache +0 -0
- package/build/dev/javascript/gleeunit/_gleam_artefacts/gleeunit@internal@gleam_panic.cache_inline +0 -0
- package/build/dev/javascript/gleeunit/_gleam_artefacts/gleeunit@internal@gleam_panic.cache_meta +0 -0
- package/build/dev/javascript/gleeunit/_gleam_artefacts/gleeunit@internal@reporting.cache +0 -0
- package/build/dev/javascript/gleeunit/_gleam_artefacts/gleeunit@internal@reporting.cache_inline +0 -0
- package/build/dev/javascript/gleeunit/_gleam_artefacts/gleeunit@internal@reporting.cache_meta +0 -0
- package/build/dev/javascript/gleeunit/_gleam_artefacts/gleeunit@should.cache +0 -0
- package/build/dev/javascript/gleeunit/_gleam_artefacts/gleeunit@should.cache_inline +0 -0
- package/build/dev/javascript/gleeunit/_gleam_artefacts/gleeunit@should.cache_meta +0 -0
- package/build/dev/javascript/gleeunit/gleam.mjs +1 -0
- package/build/dev/javascript/gleeunit/gleeunit/internal/gleam_panic.mjs +180 -0
- package/build/dev/javascript/gleeunit/gleeunit/internal/gleeunit_gleam_panic_ffi.erl +49 -0
- package/build/dev/javascript/gleeunit/gleeunit/internal/gleeunit_gleam_panic_ffi.mjs +91 -0
- package/build/dev/javascript/gleeunit/gleeunit/internal/reporting.mjs +256 -0
- package/build/dev/javascript/gleeunit/gleeunit/should.mjs +135 -0
- package/build/dev/javascript/gleeunit/gleeunit.erl +89 -0
- package/build/dev/javascript/gleeunit/gleeunit.mjs +62 -0
- package/build/dev/javascript/gleeunit/gleeunit@internal@gleam_panic.erl +56 -0
- package/build/dev/javascript/gleeunit/gleeunit@internal@reporting.erl +343 -0
- package/build/dev/javascript/gleeunit/gleeunit@should.erl +153 -0
- package/build/dev/javascript/gleeunit/gleeunit_ffi.erl +21 -0
- package/build/dev/javascript/gleeunit/gleeunit_ffi.mjs +100 -0
- package/build/dev/javascript/gleeunit/gleeunit_progress.erl +72 -0
- package/build/dev/javascript/prelude.mjs +1575 -0
- package/build/dev/javascript/simplifile/_gleam_artefacts/simplifile.cache +0 -0
- package/build/dev/javascript/simplifile/_gleam_artefacts/simplifile.cache_inline +0 -0
- package/build/dev/javascript/simplifile/_gleam_artefacts/simplifile.cache_meta +0 -0
- package/build/dev/javascript/simplifile/gleam.mjs +1 -0
- package/build/dev/javascript/simplifile/simplifile.erl +893 -0
- package/build/dev/javascript/simplifile/simplifile.mjs +893 -0
- package/build/dev/javascript/simplifile/simplifile_erl.erl +244 -0
- package/build/dev/javascript/simplifile/simplifile_js.mjs +400 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/cli_test.cache +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/cli_test.cache_inline +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/cli_test.cache_meta +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/cli_test.cache_warnings +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/compiler_test.cache +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/compiler_test.cache_inline +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/compiler_test.cache_meta +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/compiler_test.cache_warnings +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/config_test.cache +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/config_test.cache_inline +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/config_test.cache_meta +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/config_test.cache_warnings +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/importer_test.cache +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/importer_test.cache_inline +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/importer_test.cache_meta +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/importer_test.cache_warnings +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/parser_test.cache +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/parser_test.cache_inline +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/parser_test.cache_meta +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/parser_test.cache_warnings +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/path_test.cache +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/path_test.cache_inline +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/path_test.cache_meta +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/path_test.cache_warnings +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/provider_test.cache +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/provider_test.cache_inline +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/provider_test.cache_meta +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/provider_test.cache_warnings +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/registry_test.cache +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/registry_test.cache_inline +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/registry_test.cache_meta +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/registry_test.cache_warnings +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/scaffold_test.cache +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/scaffold_test.cache_inline +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/scaffold_test.cache_meta +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/scaffold_test.cache_warnings +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc.cache +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc.cache_inline +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc.cache_meta +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc.cache_warnings +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@compiler.cache +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@compiler.cache_inline +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@compiler.cache_meta +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@compiler.cache_warnings +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@config.cache +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@config.cache_inline +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@config.cache_meta +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@config.cache_warnings +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@error.cache +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@error.cache_inline +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@error.cache_meta +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@error.cache_warnings +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@fs.cache +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@fs.cache_inline +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@fs.cache_meta +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@fs.cache_warnings +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@importer.cache +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@importer.cache_inline +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@importer.cache_meta +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@importer.cache_warnings +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@parser.cache +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@parser.cache_inline +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@parser.cache_meta +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@parser.cache_warnings +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@path.cache +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@path.cache_inline +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@path.cache_meta +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@path.cache_warnings +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@platform.cache +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@platform.cache_inline +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@platform.cache_meta +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@platform.cache_warnings +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@provider.cache +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@provider.cache_inline +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@provider.cache_meta +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@provider.cache_warnings +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@registry.cache +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@registry.cache_inline +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@registry.cache_meta +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@registry.cache_warnings +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@scaffold.cache +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@scaffold.cache_inline +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@scaffold.cache_meta +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@scaffold.cache_warnings +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@semver.cache +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@semver.cache_inline +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@semver.cache_meta +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@semver.cache_warnings +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@shell.cache +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@shell.cache_inline +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@shell.cache_meta +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@shell.cache_warnings +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@template.cache +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@template.cache_inline +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@template.cache_meta +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@template.cache_warnings +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@types.cache +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@types.cache_inline +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@types.cache_meta +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@types.cache_warnings +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@version_constraint.cache +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@version_constraint.cache_inline +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@version_constraint.cache_meta +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@version_constraint.cache_warnings +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@yaml.cache +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@yaml.cache_inline +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@yaml.cache_meta +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@yaml.cache_warnings +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc_test.cache +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc_test.cache_inline +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc_test.cache_meta +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc_test.cache_warnings +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/template_test.cache +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/template_test.cache_inline +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/template_test.cache_meta +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/template_test.cache_warnings +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/version_constraint_test.cache +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/version_constraint_test.cache_inline +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/version_constraint_test.cache_meta +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/version_constraint_test.cache_warnings +0 -0
- package/build/dev/javascript/skillc/cli_test.mjs +461 -0
- package/build/dev/javascript/skillc/compiler_test.mjs +3089 -0
- package/build/dev/javascript/skillc/config_test.mjs +308 -0
- package/build/dev/javascript/skillc/gleam.main.mjs +2 -0
- package/build/dev/javascript/skillc/gleam.mjs +1 -0
- package/build/dev/javascript/skillc/importer_test.mjs +1643 -0
- package/build/dev/javascript/skillc/parser_test.mjs +1601 -0
- package/build/dev/javascript/skillc/path_test.mjs +26 -0
- package/build/dev/javascript/skillc/provider_test.mjs +221 -0
- package/build/dev/javascript/skillc/registry_test.mjs +359 -0
- package/build/dev/javascript/skillc/scaffold_test.mjs +405 -0
- package/build/dev/javascript/skillc/skillc/compiler.mjs +724 -0
- package/build/dev/javascript/skillc/skillc/config.mjs +172 -0
- package/build/dev/javascript/skillc/skillc/error.mjs +145 -0
- package/build/dev/javascript/skillc/skillc/fs.mjs +40 -0
- package/build/dev/javascript/skillc/skillc/importer.mjs +975 -0
- package/build/dev/javascript/skillc/skillc/parser.mjs +427 -0
- package/build/dev/javascript/skillc/skillc/path.mjs +52 -0
- package/build/dev/javascript/skillc/skillc/platform.mjs +44 -0
- package/build/dev/javascript/skillc/skillc/provider.mjs +86 -0
- package/build/dev/javascript/skillc/skillc/registry.mjs +701 -0
- package/build/dev/javascript/skillc/skillc/scaffold.mjs +117 -0
- package/build/dev/javascript/skillc/skillc/semver.mjs +293 -0
- package/build/dev/javascript/skillc/skillc/shell.mjs +14 -0
- package/build/dev/javascript/skillc/skillc/template.mjs +1177 -0
- package/build/dev/javascript/skillc/skillc/types.mjs +249 -0
- package/build/dev/javascript/skillc/skillc/version_constraint.mjs +290 -0
- package/build/dev/javascript/skillc/skillc/yaml.mjs +51 -0
- package/build/dev/javascript/skillc/skillc.mjs +873 -0
- package/build/dev/javascript/skillc/skillc_ffi.mjs +30 -0
- package/build/dev/javascript/skillc/skillc_test.mjs +5 -0
- package/build/dev/javascript/skillc/template_test.mjs +1638 -0
- package/build/dev/javascript/skillc/version_constraint_test.mjs +1325 -0
- package/build/dev/javascript/yay/_gleam_artefacts/yay.cache +0 -0
- package/build/dev/javascript/yay/_gleam_artefacts/yay.cache_inline +0 -0
- package/build/dev/javascript/yay/_gleam_artefacts/yay.cache_meta +0 -0
- package/build/dev/javascript/yay/gleam.mjs +1 -0
- package/build/dev/javascript/yay/yaml_ffi.erl +106 -0
- package/build/dev/javascript/yay/yaml_ffi.mjs +373 -0
- package/build/dev/javascript/yay/yay.erl +1218 -0
- package/build/dev/javascript/yay/yay.mjs +1403 -0
- package/package.json +28 -0
- package/src/skillc/compiler.gleam +561 -0
- package/src/skillc/config.gleam +91 -0
- package/src/skillc/error.gleam +37 -0
- package/src/skillc/fs.gleam +31 -0
- package/src/skillc/importer.gleam +709 -0
- package/src/skillc/parser.gleam +279 -0
- package/src/skillc/path.gleam +30 -0
- package/src/skillc/platform.gleam +25 -0
- package/src/skillc/provider.gleam +58 -0
- package/src/skillc/registry.gleam +472 -0
- package/src/skillc/scaffold.gleam +112 -0
- package/src/skillc/semver.gleam +165 -0
- package/src/skillc/shell.gleam +12 -0
- package/src/skillc/template.gleam +885 -0
- package/src/skillc/types.gleam +93 -0
- package/src/skillc/version_constraint.gleam +163 -0
- package/src/skillc/yaml.gleam +27 -0
- package/src/skillc.gleam +466 -0
- package/src/skillc_ffi.mjs +30 -0
|
@@ -0,0 +1,1177 @@
|
|
|
1
|
+
import * as $float from "../../gleam_stdlib/gleam/float.mjs";
|
|
2
|
+
import * as $int from "../../gleam_stdlib/gleam/int.mjs";
|
|
3
|
+
import * as $list from "../../gleam_stdlib/gleam/list.mjs";
|
|
4
|
+
import * as $option from "../../gleam_stdlib/gleam/option.mjs";
|
|
5
|
+
import { None, Some } from "../../gleam_stdlib/gleam/option.mjs";
|
|
6
|
+
import * as $result from "../../gleam_stdlib/gleam/result.mjs";
|
|
7
|
+
import * as $string from "../../gleam_stdlib/gleam/string.mjs";
|
|
8
|
+
import * as $yay from "../../yay/yay.mjs";
|
|
9
|
+
import {
|
|
10
|
+
Ok,
|
|
11
|
+
Error,
|
|
12
|
+
toList,
|
|
13
|
+
Empty as $Empty,
|
|
14
|
+
prepend as listPrepend,
|
|
15
|
+
CustomType as $CustomType,
|
|
16
|
+
} from "../gleam.mjs";
|
|
17
|
+
import * as $error from "../skillc/error.mjs";
|
|
18
|
+
import { TemplateError } from "../skillc/error.mjs";
|
|
19
|
+
import * as $semver from "../skillc/semver.mjs";
|
|
20
|
+
import * as $types from "../skillc/types.mjs";
|
|
21
|
+
import { Optional, OptionalWithDefault, Required } from "../skillc/types.mjs";
|
|
22
|
+
import * as $version_constraint from "../skillc/version_constraint.mjs";
|
|
23
|
+
|
|
24
|
+
class ConditionalBlock extends $CustomType {
|
|
25
|
+
constructor(if_content, else_content, remaining) {
|
|
26
|
+
super();
|
|
27
|
+
this.if_content = if_content;
|
|
28
|
+
this.else_content = else_content;
|
|
29
|
+
this.remaining = remaining;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export class VStr extends $CustomType {
|
|
34
|
+
constructor($0) {
|
|
35
|
+
super();
|
|
36
|
+
this[0] = $0;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
export const Value$VStr = ($0) => new VStr($0);
|
|
40
|
+
export const Value$isVStr = (value) => value instanceof VStr;
|
|
41
|
+
export const Value$VStr$0 = (value) => value[0];
|
|
42
|
+
|
|
43
|
+
export class VBool extends $CustomType {
|
|
44
|
+
constructor($0) {
|
|
45
|
+
super();
|
|
46
|
+
this[0] = $0;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
export const Value$VBool = ($0) => new VBool($0);
|
|
50
|
+
export const Value$isVBool = (value) => value instanceof VBool;
|
|
51
|
+
export const Value$VBool$0 = (value) => value[0];
|
|
52
|
+
|
|
53
|
+
export class VInt extends $CustomType {
|
|
54
|
+
constructor($0) {
|
|
55
|
+
super();
|
|
56
|
+
this[0] = $0;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
export const Value$VInt = ($0) => new VInt($0);
|
|
60
|
+
export const Value$isVInt = (value) => value instanceof VInt;
|
|
61
|
+
export const Value$VInt$0 = (value) => value[0];
|
|
62
|
+
|
|
63
|
+
export class VFloat extends $CustomType {
|
|
64
|
+
constructor($0) {
|
|
65
|
+
super();
|
|
66
|
+
this[0] = $0;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
export const Value$VFloat = ($0) => new VFloat($0);
|
|
70
|
+
export const Value$isVFloat = (value) => value instanceof VFloat;
|
|
71
|
+
export const Value$VFloat$0 = (value) => value[0];
|
|
72
|
+
|
|
73
|
+
export class VList extends $CustomType {
|
|
74
|
+
constructor($0) {
|
|
75
|
+
super();
|
|
76
|
+
this[0] = $0;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
export const Value$VList = ($0) => new VList($0);
|
|
80
|
+
export const Value$isVList = (value) => value instanceof VList;
|
|
81
|
+
export const Value$VList$0 = (value) => value[0];
|
|
82
|
+
|
|
83
|
+
export class VDict extends $CustomType {
|
|
84
|
+
constructor($0) {
|
|
85
|
+
super();
|
|
86
|
+
this[0] = $0;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
export const Value$VDict = ($0) => new VDict($0);
|
|
90
|
+
export const Value$isVDict = (value) => value instanceof VDict;
|
|
91
|
+
export const Value$VDict$0 = (value) => value[0];
|
|
92
|
+
|
|
93
|
+
export class VNil extends $CustomType {}
|
|
94
|
+
export const Value$VNil = () => new VNil();
|
|
95
|
+
export const Value$isVNil = (value) => value instanceof VNil;
|
|
96
|
+
|
|
97
|
+
const escaped_brace_placeholder = "___ESCAPED_OPEN_BRACE___";
|
|
98
|
+
|
|
99
|
+
const key_index = "@index";
|
|
100
|
+
|
|
101
|
+
const key_first = "@first";
|
|
102
|
+
|
|
103
|
+
const key_last = "@last";
|
|
104
|
+
|
|
105
|
+
const key_this = "this";
|
|
106
|
+
|
|
107
|
+
function strip_surrounding_newlines(s) {
|
|
108
|
+
let _block;
|
|
109
|
+
let $ = $string.starts_with(s, "\n");
|
|
110
|
+
if ($) {
|
|
111
|
+
_block = $string.drop_start(s, 1);
|
|
112
|
+
} else {
|
|
113
|
+
_block = s;
|
|
114
|
+
}
|
|
115
|
+
let s$1 = _block;
|
|
116
|
+
let $1 = $string.ends_with(s$1, "\n");
|
|
117
|
+
if ($1) {
|
|
118
|
+
return $string.drop_end(s$1, 1);
|
|
119
|
+
} else {
|
|
120
|
+
return s$1;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
function strip_trailing_newlines(loop$s) {
|
|
125
|
+
while (true) {
|
|
126
|
+
let s = loop$s;
|
|
127
|
+
let $ = $string.ends_with(s, "\n");
|
|
128
|
+
if ($) {
|
|
129
|
+
loop$s = $string.drop_end(s, 1);
|
|
130
|
+
} else {
|
|
131
|
+
return s;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
function parse_provider_names(content) {
|
|
137
|
+
let _pipe = $string.split(content, " ");
|
|
138
|
+
return $list.filter_map(
|
|
139
|
+
_pipe,
|
|
140
|
+
(part) => {
|
|
141
|
+
let trimmed = $string.trim(part);
|
|
142
|
+
let $ = $string.starts_with(trimmed, "\"");
|
|
143
|
+
let $1 = $string.ends_with(trimmed, "\"");
|
|
144
|
+
if ($ && $1) {
|
|
145
|
+
let _block;
|
|
146
|
+
let _pipe$1 = trimmed;
|
|
147
|
+
let _pipe$2 = $string.drop_start(_pipe$1, 1);
|
|
148
|
+
_block = $string.drop_end(_pipe$2, 1);
|
|
149
|
+
let name = _block;
|
|
150
|
+
if (name === "") {
|
|
151
|
+
return new Error(undefined);
|
|
152
|
+
} else {
|
|
153
|
+
return new Ok(name);
|
|
154
|
+
}
|
|
155
|
+
} else {
|
|
156
|
+
return new Error(undefined);
|
|
157
|
+
}
|
|
158
|
+
},
|
|
159
|
+
);
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
function parse_provider_tag(content) {
|
|
163
|
+
let $ = $string.split_once(content, "}}");
|
|
164
|
+
if ($ instanceof Ok) {
|
|
165
|
+
let tag_content = $[0][0];
|
|
166
|
+
let rest = $[0][1];
|
|
167
|
+
let providers = parse_provider_names($string.trim(tag_content));
|
|
168
|
+
if (providers instanceof $Empty) {
|
|
169
|
+
return new Error(undefined);
|
|
170
|
+
} else {
|
|
171
|
+
return new Ok([providers, rest]);
|
|
172
|
+
}
|
|
173
|
+
} else {
|
|
174
|
+
return new Error(undefined);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
function count_opens(loop$content, loop$acc) {
|
|
179
|
+
while (true) {
|
|
180
|
+
let content = loop$content;
|
|
181
|
+
let acc = loop$acc;
|
|
182
|
+
let $ = $string.split_once(content, "{{#provider ");
|
|
183
|
+
if ($ instanceof Ok) {
|
|
184
|
+
let rest = $[0][1];
|
|
185
|
+
loop$content = rest;
|
|
186
|
+
loop$acc = acc + 1;
|
|
187
|
+
} else {
|
|
188
|
+
return acc;
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
function find_closing_provider(content, depth) {
|
|
194
|
+
if (depth === 0) {
|
|
195
|
+
return new Ok(["", content]);
|
|
196
|
+
} else {
|
|
197
|
+
let $ = $string.split_once(content, "{{/provider}}");
|
|
198
|
+
if ($ instanceof Ok) {
|
|
199
|
+
let before = $[0][0];
|
|
200
|
+
let after = $[0][1];
|
|
201
|
+
let nested_opens = count_opens(before, 0);
|
|
202
|
+
let new_depth = (depth + nested_opens) - 1;
|
|
203
|
+
if (new_depth === 0) {
|
|
204
|
+
return new Ok([before, after]);
|
|
205
|
+
} else {
|
|
206
|
+
return $result.try$(
|
|
207
|
+
find_closing_provider(after, new_depth),
|
|
208
|
+
(_use0) => {
|
|
209
|
+
let rest_content;
|
|
210
|
+
let rest_after;
|
|
211
|
+
rest_content = _use0[0];
|
|
212
|
+
rest_after = _use0[1];
|
|
213
|
+
return new Ok(
|
|
214
|
+
[(before + "{{/provider}}") + rest_content, rest_after],
|
|
215
|
+
);
|
|
216
|
+
},
|
|
217
|
+
);
|
|
218
|
+
}
|
|
219
|
+
} else {
|
|
220
|
+
return new Error(undefined);
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
function is_before_open(else_pos, open_pos) {
|
|
226
|
+
if (open_pos instanceof Some) {
|
|
227
|
+
let op = open_pos[0];
|
|
228
|
+
return else_pos < op;
|
|
229
|
+
} else {
|
|
230
|
+
return true;
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
function find_position(haystack, needle) {
|
|
235
|
+
let $ = $string.split_once(haystack, needle);
|
|
236
|
+
if ($ instanceof Ok) {
|
|
237
|
+
let before = $[0][0];
|
|
238
|
+
return new Some($string.length(before));
|
|
239
|
+
} else {
|
|
240
|
+
return new None();
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
function do_find_block_end(
|
|
245
|
+
loop$remaining,
|
|
246
|
+
loop$open_tag,
|
|
247
|
+
loop$close_tag,
|
|
248
|
+
loop$depth,
|
|
249
|
+
loop$acc,
|
|
250
|
+
loop$open_line
|
|
251
|
+
) {
|
|
252
|
+
while (true) {
|
|
253
|
+
let remaining = loop$remaining;
|
|
254
|
+
let open_tag = loop$open_tag;
|
|
255
|
+
let close_tag = loop$close_tag;
|
|
256
|
+
let depth = loop$depth;
|
|
257
|
+
let acc = loop$acc;
|
|
258
|
+
let open_line = loop$open_line;
|
|
259
|
+
if (depth === 0) {
|
|
260
|
+
return new Ok([acc, remaining]);
|
|
261
|
+
} else {
|
|
262
|
+
let open_pos = find_position(remaining, open_tag);
|
|
263
|
+
let close_pos = find_position(remaining, close_tag);
|
|
264
|
+
if (close_pos instanceof Some) {
|
|
265
|
+
let close_pos$1 = close_pos[0];
|
|
266
|
+
if (open_pos instanceof Some) {
|
|
267
|
+
let open_pos$1 = open_pos[0];
|
|
268
|
+
if (open_pos$1 < close_pos$1) {
|
|
269
|
+
let before_len = open_pos$1 + $string.length(open_tag);
|
|
270
|
+
let before = $string.slice(remaining, 0, before_len);
|
|
271
|
+
let rest = $string.drop_start(remaining, before_len);
|
|
272
|
+
loop$remaining = rest;
|
|
273
|
+
loop$open_tag = open_tag;
|
|
274
|
+
loop$close_tag = close_tag;
|
|
275
|
+
loop$depth = depth + 1;
|
|
276
|
+
loop$acc = acc + before;
|
|
277
|
+
loop$open_line = open_line;
|
|
278
|
+
} else {
|
|
279
|
+
if (depth === 1) {
|
|
280
|
+
let block_content = $string.slice(remaining, 0, close_pos$1);
|
|
281
|
+
let rest = $string.drop_start(
|
|
282
|
+
remaining,
|
|
283
|
+
close_pos$1 + $string.length(close_tag),
|
|
284
|
+
);
|
|
285
|
+
return new Ok([acc + block_content, rest]);
|
|
286
|
+
} else {
|
|
287
|
+
let before_len = close_pos$1 + $string.length(close_tag);
|
|
288
|
+
let before = $string.slice(remaining, 0, before_len);
|
|
289
|
+
let rest = $string.drop_start(remaining, before_len);
|
|
290
|
+
loop$remaining = rest;
|
|
291
|
+
loop$open_tag = open_tag;
|
|
292
|
+
loop$close_tag = close_tag;
|
|
293
|
+
loop$depth = depth - 1;
|
|
294
|
+
loop$acc = acc + before;
|
|
295
|
+
loop$open_line = open_line;
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
} else {
|
|
299
|
+
if (depth === 1) {
|
|
300
|
+
let block_content = $string.slice(remaining, 0, close_pos$1);
|
|
301
|
+
let rest = $string.drop_start(
|
|
302
|
+
remaining,
|
|
303
|
+
close_pos$1 + $string.length(close_tag),
|
|
304
|
+
);
|
|
305
|
+
return new Ok([acc + block_content, rest]);
|
|
306
|
+
} else {
|
|
307
|
+
let before_len = close_pos$1 + $string.length(close_tag);
|
|
308
|
+
let before = $string.slice(remaining, 0, before_len);
|
|
309
|
+
let rest = $string.drop_start(remaining, before_len);
|
|
310
|
+
loop$remaining = rest;
|
|
311
|
+
loop$open_tag = open_tag;
|
|
312
|
+
loop$close_tag = close_tag;
|
|
313
|
+
loop$depth = depth - 1;
|
|
314
|
+
loop$acc = acc + before;
|
|
315
|
+
loop$open_line = open_line;
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
} else {
|
|
319
|
+
let _block;
|
|
320
|
+
let _pipe = open_tag;
|
|
321
|
+
let _pipe$1 = $string.replace(_pipe, "{{#", "");
|
|
322
|
+
_block = $string.trim(_pipe$1);
|
|
323
|
+
let block_name = _block;
|
|
324
|
+
return new Error(
|
|
325
|
+
new TemplateError(
|
|
326
|
+
open_line,
|
|
327
|
+
("Unclosed {{#" + block_name) + "}} block",
|
|
328
|
+
),
|
|
329
|
+
);
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
function find_block_end(content, block_type, open_line) {
|
|
336
|
+
let open_tag = ("{{#" + block_type) + " ";
|
|
337
|
+
let close_tag = ("{{/" + block_type) + "}}";
|
|
338
|
+
return do_find_block_end(content, open_tag, close_tag, 1, "", open_line);
|
|
339
|
+
}
|
|
340
|
+
|
|
341
|
+
function do_find_block_end_with_else(
|
|
342
|
+
loop$remaining,
|
|
343
|
+
loop$open_tag,
|
|
344
|
+
loop$close_tag,
|
|
345
|
+
loop$else_tag,
|
|
346
|
+
loop$depth,
|
|
347
|
+
loop$acc,
|
|
348
|
+
loop$else_split,
|
|
349
|
+
loop$open_line
|
|
350
|
+
) {
|
|
351
|
+
while (true) {
|
|
352
|
+
let remaining = loop$remaining;
|
|
353
|
+
let open_tag = loop$open_tag;
|
|
354
|
+
let close_tag = loop$close_tag;
|
|
355
|
+
let else_tag = loop$else_tag;
|
|
356
|
+
let depth = loop$depth;
|
|
357
|
+
let acc = loop$acc;
|
|
358
|
+
let else_split = loop$else_split;
|
|
359
|
+
let open_line = loop$open_line;
|
|
360
|
+
if (depth === 0) {
|
|
361
|
+
if (else_split instanceof Some) {
|
|
362
|
+
let if_content = else_split[0];
|
|
363
|
+
return new Ok(
|
|
364
|
+
new ConditionalBlock(if_content, new Some(acc), remaining),
|
|
365
|
+
);
|
|
366
|
+
} else {
|
|
367
|
+
return new Ok(new ConditionalBlock(acc, new None(), remaining));
|
|
368
|
+
}
|
|
369
|
+
} else {
|
|
370
|
+
let open_pos = find_position(remaining, open_tag);
|
|
371
|
+
let close_pos = find_position(remaining, close_tag);
|
|
372
|
+
let _block;
|
|
373
|
+
if (depth === 1) {
|
|
374
|
+
_block = find_position(remaining, else_tag);
|
|
375
|
+
} else {
|
|
376
|
+
_block = new None();
|
|
377
|
+
}
|
|
378
|
+
let else_pos = _block;
|
|
379
|
+
if (close_pos instanceof Some) {
|
|
380
|
+
let cp = close_pos[0];
|
|
381
|
+
let _block$1;
|
|
382
|
+
if (else_pos instanceof Some && else_split instanceof None) {
|
|
383
|
+
let ep = else_pos[0];
|
|
384
|
+
if (ep < cp) {
|
|
385
|
+
_block$1 = is_before_open(ep, open_pos);
|
|
386
|
+
} else {
|
|
387
|
+
_block$1 = false;
|
|
388
|
+
}
|
|
389
|
+
} else {
|
|
390
|
+
_block$1 = false;
|
|
391
|
+
}
|
|
392
|
+
let use_else = _block$1;
|
|
393
|
+
if (use_else && else_pos instanceof Some) {
|
|
394
|
+
let ep = else_pos[0];
|
|
395
|
+
let before_else = $string.slice(remaining, 0, ep);
|
|
396
|
+
let after_else = $string.drop_start(
|
|
397
|
+
remaining,
|
|
398
|
+
ep + $string.length(else_tag),
|
|
399
|
+
);
|
|
400
|
+
loop$remaining = after_else;
|
|
401
|
+
loop$open_tag = open_tag;
|
|
402
|
+
loop$close_tag = close_tag;
|
|
403
|
+
loop$else_tag = else_tag;
|
|
404
|
+
loop$depth = depth;
|
|
405
|
+
loop$acc = "";
|
|
406
|
+
loop$else_split = new Some(acc + before_else);
|
|
407
|
+
loop$open_line = open_line;
|
|
408
|
+
} else {
|
|
409
|
+
if (open_pos instanceof Some) {
|
|
410
|
+
let op = open_pos[0];
|
|
411
|
+
if (op < cp) {
|
|
412
|
+
let before_len = op + $string.length(open_tag);
|
|
413
|
+
let before = $string.slice(remaining, 0, before_len);
|
|
414
|
+
let rest = $string.drop_start(remaining, before_len);
|
|
415
|
+
loop$remaining = rest;
|
|
416
|
+
loop$open_tag = open_tag;
|
|
417
|
+
loop$close_tag = close_tag;
|
|
418
|
+
loop$else_tag = else_tag;
|
|
419
|
+
loop$depth = depth + 1;
|
|
420
|
+
loop$acc = acc + before;
|
|
421
|
+
loop$else_split = else_split;
|
|
422
|
+
loop$open_line = open_line;
|
|
423
|
+
} else {
|
|
424
|
+
if (depth === 1) {
|
|
425
|
+
let block_content = $string.slice(remaining, 0, cp);
|
|
426
|
+
let rest = $string.drop_start(
|
|
427
|
+
remaining,
|
|
428
|
+
cp + $string.length(close_tag),
|
|
429
|
+
);
|
|
430
|
+
if (else_split instanceof Some) {
|
|
431
|
+
let if_content = else_split[0];
|
|
432
|
+
return new Ok(
|
|
433
|
+
new ConditionalBlock(
|
|
434
|
+
if_content,
|
|
435
|
+
new Some(acc + block_content),
|
|
436
|
+
rest,
|
|
437
|
+
),
|
|
438
|
+
);
|
|
439
|
+
} else {
|
|
440
|
+
return new Ok(
|
|
441
|
+
new ConditionalBlock(acc + block_content, new None(), rest),
|
|
442
|
+
);
|
|
443
|
+
}
|
|
444
|
+
} else {
|
|
445
|
+
let before_len = cp + $string.length(close_tag);
|
|
446
|
+
let before = $string.slice(remaining, 0, before_len);
|
|
447
|
+
let rest = $string.drop_start(remaining, before_len);
|
|
448
|
+
loop$remaining = rest;
|
|
449
|
+
loop$open_tag = open_tag;
|
|
450
|
+
loop$close_tag = close_tag;
|
|
451
|
+
loop$else_tag = else_tag;
|
|
452
|
+
loop$depth = depth - 1;
|
|
453
|
+
loop$acc = acc + before;
|
|
454
|
+
loop$else_split = else_split;
|
|
455
|
+
loop$open_line = open_line;
|
|
456
|
+
}
|
|
457
|
+
}
|
|
458
|
+
} else {
|
|
459
|
+
if (depth === 1) {
|
|
460
|
+
let block_content = $string.slice(remaining, 0, cp);
|
|
461
|
+
let rest = $string.drop_start(
|
|
462
|
+
remaining,
|
|
463
|
+
cp + $string.length(close_tag),
|
|
464
|
+
);
|
|
465
|
+
if (else_split instanceof Some) {
|
|
466
|
+
let if_content = else_split[0];
|
|
467
|
+
return new Ok(
|
|
468
|
+
new ConditionalBlock(
|
|
469
|
+
if_content,
|
|
470
|
+
new Some(acc + block_content),
|
|
471
|
+
rest,
|
|
472
|
+
),
|
|
473
|
+
);
|
|
474
|
+
} else {
|
|
475
|
+
return new Ok(
|
|
476
|
+
new ConditionalBlock(acc + block_content, new None(), rest),
|
|
477
|
+
);
|
|
478
|
+
}
|
|
479
|
+
} else {
|
|
480
|
+
let before_len = cp + $string.length(close_tag);
|
|
481
|
+
let before = $string.slice(remaining, 0, before_len);
|
|
482
|
+
let rest = $string.drop_start(remaining, before_len);
|
|
483
|
+
loop$remaining = rest;
|
|
484
|
+
loop$open_tag = open_tag;
|
|
485
|
+
loop$close_tag = close_tag;
|
|
486
|
+
loop$else_tag = else_tag;
|
|
487
|
+
loop$depth = depth - 1;
|
|
488
|
+
loop$acc = acc + before;
|
|
489
|
+
loop$else_split = else_split;
|
|
490
|
+
loop$open_line = open_line;
|
|
491
|
+
}
|
|
492
|
+
}
|
|
493
|
+
}
|
|
494
|
+
} else {
|
|
495
|
+
let _block$1;
|
|
496
|
+
let _pipe = open_tag;
|
|
497
|
+
let _pipe$1 = $string.replace(_pipe, "{{#", "");
|
|
498
|
+
_block$1 = $string.trim(_pipe$1);
|
|
499
|
+
let block_name = _block$1;
|
|
500
|
+
return new Error(
|
|
501
|
+
new TemplateError(
|
|
502
|
+
open_line,
|
|
503
|
+
("Unclosed {{#" + block_name) + "}} block",
|
|
504
|
+
),
|
|
505
|
+
);
|
|
506
|
+
}
|
|
507
|
+
}
|
|
508
|
+
}
|
|
509
|
+
}
|
|
510
|
+
|
|
511
|
+
function find_block_end_with_else(content, block_type, open_line) {
|
|
512
|
+
let open_tag = ("{{#" + block_type) + " ";
|
|
513
|
+
let close_tag = ("{{/" + block_type) + "}}";
|
|
514
|
+
let else_tag = "{{else}}";
|
|
515
|
+
return do_find_block_end_with_else(
|
|
516
|
+
content,
|
|
517
|
+
open_tag,
|
|
518
|
+
close_tag,
|
|
519
|
+
else_tag,
|
|
520
|
+
1,
|
|
521
|
+
"",
|
|
522
|
+
new None(),
|
|
523
|
+
open_line,
|
|
524
|
+
);
|
|
525
|
+
}
|
|
526
|
+
|
|
527
|
+
function lookup_key(key, ctx) {
|
|
528
|
+
if (ctx instanceof VDict) {
|
|
529
|
+
let props = ctx[0];
|
|
530
|
+
let $ = $list.key_find(props, key);
|
|
531
|
+
if ($ instanceof Ok) {
|
|
532
|
+
let value = $[0];
|
|
533
|
+
return value;
|
|
534
|
+
} else {
|
|
535
|
+
return new VNil();
|
|
536
|
+
}
|
|
537
|
+
} else {
|
|
538
|
+
return new VNil();
|
|
539
|
+
}
|
|
540
|
+
}
|
|
541
|
+
|
|
542
|
+
function do_count_newlines(loop$s, loop$acc) {
|
|
543
|
+
while (true) {
|
|
544
|
+
let s = loop$s;
|
|
545
|
+
let acc = loop$acc;
|
|
546
|
+
let $ = $string.split_once(s, "\n");
|
|
547
|
+
if ($ instanceof Ok) {
|
|
548
|
+
let rest = $[0][1];
|
|
549
|
+
loop$s = rest;
|
|
550
|
+
loop$acc = acc + 1;
|
|
551
|
+
} else {
|
|
552
|
+
return acc;
|
|
553
|
+
}
|
|
554
|
+
}
|
|
555
|
+
}
|
|
556
|
+
|
|
557
|
+
function count_newlines(s) {
|
|
558
|
+
return do_count_newlines(s, 0);
|
|
559
|
+
}
|
|
560
|
+
|
|
561
|
+
function do_process_provider_blocks(remaining, target, acc, line) {
|
|
562
|
+
let $ = $string.split_once(remaining, "{{#provider ");
|
|
563
|
+
if ($ instanceof Ok) {
|
|
564
|
+
let before = $[0][0];
|
|
565
|
+
let after_open = $[0][1];
|
|
566
|
+
let error_line = line + count_newlines(before);
|
|
567
|
+
return $result.try$(
|
|
568
|
+
(() => {
|
|
569
|
+
let _pipe = parse_provider_tag(after_open);
|
|
570
|
+
return $result.replace_error(
|
|
571
|
+
_pipe,
|
|
572
|
+
new TemplateError(
|
|
573
|
+
error_line,
|
|
574
|
+
"Malformed {{#provider}} tag: missing provider names or closing }}",
|
|
575
|
+
),
|
|
576
|
+
);
|
|
577
|
+
})(),
|
|
578
|
+
(_use0) => {
|
|
579
|
+
let providers;
|
|
580
|
+
let after_tag;
|
|
581
|
+
providers = _use0[0];
|
|
582
|
+
after_tag = _use0[1];
|
|
583
|
+
return $result.try$(
|
|
584
|
+
(() => {
|
|
585
|
+
let _pipe = find_closing_provider(after_tag, 1);
|
|
586
|
+
return $result.replace_error(
|
|
587
|
+
_pipe,
|
|
588
|
+
new TemplateError(error_line, "Unclosed {{#provider}} block"),
|
|
589
|
+
);
|
|
590
|
+
})(),
|
|
591
|
+
(_use0) => {
|
|
592
|
+
let block_content;
|
|
593
|
+
let after_close;
|
|
594
|
+
block_content = _use0[0];
|
|
595
|
+
after_close = _use0[1];
|
|
596
|
+
let should_include = $list.contains(providers, target);
|
|
597
|
+
let _block;
|
|
598
|
+
if (should_include) {
|
|
599
|
+
_block = ((acc + before) + strip_surrounding_newlines(
|
|
600
|
+
block_content,
|
|
601
|
+
)) + "\n";
|
|
602
|
+
} else {
|
|
603
|
+
_block = acc + strip_trailing_newlines(before);
|
|
604
|
+
}
|
|
605
|
+
let new_acc = _block;
|
|
606
|
+
let new_line = error_line + count_newlines(block_content);
|
|
607
|
+
return do_process_provider_blocks(
|
|
608
|
+
after_close,
|
|
609
|
+
target,
|
|
610
|
+
new_acc,
|
|
611
|
+
new_line,
|
|
612
|
+
);
|
|
613
|
+
},
|
|
614
|
+
);
|
|
615
|
+
},
|
|
616
|
+
);
|
|
617
|
+
} else {
|
|
618
|
+
return new Ok(acc + remaining);
|
|
619
|
+
}
|
|
620
|
+
}
|
|
621
|
+
|
|
622
|
+
export function process_provider_blocks(content, target) {
|
|
623
|
+
let target_str = $types.provider_to_string(target);
|
|
624
|
+
return do_process_provider_blocks(content, target_str, "", 1);
|
|
625
|
+
}
|
|
626
|
+
|
|
627
|
+
function is_truthy(value) {
|
|
628
|
+
if (value instanceof VStr) {
|
|
629
|
+
let $ = value[0];
|
|
630
|
+
if ($ === "") {
|
|
631
|
+
return false;
|
|
632
|
+
} else {
|
|
633
|
+
return true;
|
|
634
|
+
}
|
|
635
|
+
} else if (value instanceof VBool) {
|
|
636
|
+
let $ = value[0];
|
|
637
|
+
if (!$) {
|
|
638
|
+
return false;
|
|
639
|
+
} else {
|
|
640
|
+
return true;
|
|
641
|
+
}
|
|
642
|
+
} else if (value instanceof VList) {
|
|
643
|
+
let $ = value[0];
|
|
644
|
+
if ($ instanceof $Empty) {
|
|
645
|
+
return false;
|
|
646
|
+
} else {
|
|
647
|
+
return true;
|
|
648
|
+
}
|
|
649
|
+
} else if (value instanceof VNil) {
|
|
650
|
+
return false;
|
|
651
|
+
} else {
|
|
652
|
+
return true;
|
|
653
|
+
}
|
|
654
|
+
}
|
|
655
|
+
|
|
656
|
+
function value_to_string(value) {
|
|
657
|
+
if (value instanceof VStr) {
|
|
658
|
+
let s = value[0];
|
|
659
|
+
return s;
|
|
660
|
+
} else if (value instanceof VBool) {
|
|
661
|
+
let $ = value[0];
|
|
662
|
+
if ($) {
|
|
663
|
+
return "true";
|
|
664
|
+
} else {
|
|
665
|
+
return "false";
|
|
666
|
+
}
|
|
667
|
+
} else if (value instanceof VInt) {
|
|
668
|
+
let i = value[0];
|
|
669
|
+
return $int.to_string(i);
|
|
670
|
+
} else if (value instanceof VFloat) {
|
|
671
|
+
let f = value[0];
|
|
672
|
+
return $float.to_string(f);
|
|
673
|
+
} else if (value instanceof VList) {
|
|
674
|
+
return "";
|
|
675
|
+
} else if (value instanceof VDict) {
|
|
676
|
+
return "";
|
|
677
|
+
} else {
|
|
678
|
+
return "";
|
|
679
|
+
}
|
|
680
|
+
}
|
|
681
|
+
|
|
682
|
+
function node_to_value(node) {
|
|
683
|
+
if (node instanceof $yay.NodeNil) {
|
|
684
|
+
return new VNil();
|
|
685
|
+
} else if (node instanceof $yay.NodeStr) {
|
|
686
|
+
let s = node[0];
|
|
687
|
+
return new VStr(s);
|
|
688
|
+
} else if (node instanceof $yay.NodeBool) {
|
|
689
|
+
let b = node[0];
|
|
690
|
+
return new VBool(b);
|
|
691
|
+
} else if (node instanceof $yay.NodeInt) {
|
|
692
|
+
let i = node[0];
|
|
693
|
+
return new VInt(i);
|
|
694
|
+
} else if (node instanceof $yay.NodeFloat) {
|
|
695
|
+
let f = node[0];
|
|
696
|
+
return new VFloat(f);
|
|
697
|
+
} else if (node instanceof $yay.NodeSeq) {
|
|
698
|
+
let items = node[0];
|
|
699
|
+
return new VList($list.map(items, node_to_value));
|
|
700
|
+
} else {
|
|
701
|
+
let pairs = node[0];
|
|
702
|
+
return new VDict(
|
|
703
|
+
$list.filter_map(
|
|
704
|
+
pairs,
|
|
705
|
+
(pair) => {
|
|
706
|
+
let $ = pair[0];
|
|
707
|
+
if ($ instanceof $yay.NodeStr) {
|
|
708
|
+
let value = pair[1];
|
|
709
|
+
let key = $[0];
|
|
710
|
+
return new Ok([key, node_to_value(value)]);
|
|
711
|
+
} else {
|
|
712
|
+
return new Error(undefined);
|
|
713
|
+
}
|
|
714
|
+
},
|
|
715
|
+
),
|
|
716
|
+
);
|
|
717
|
+
}
|
|
718
|
+
}
|
|
719
|
+
|
|
720
|
+
export function build_context(skill, target, provider_meta) {
|
|
721
|
+
let base_props = toList([
|
|
722
|
+
["name", new VStr(skill.name)],
|
|
723
|
+
["version", new VStr($semver.to_string(skill.version))],
|
|
724
|
+
["description", new VStr(skill.description)],
|
|
725
|
+
["provider", new VStr($types.provider_to_string(target))],
|
|
726
|
+
]);
|
|
727
|
+
let optional_props = $list.filter_map(
|
|
728
|
+
toList([
|
|
729
|
+
["license", skill.license],
|
|
730
|
+
["homepage", skill.homepage],
|
|
731
|
+
["repository", skill.repository],
|
|
732
|
+
]),
|
|
733
|
+
(pair) => {
|
|
734
|
+
let $ = pair[1];
|
|
735
|
+
if ($ instanceof Some) {
|
|
736
|
+
let value = $[0];
|
|
737
|
+
return new Ok([pair[0], new VStr(value)]);
|
|
738
|
+
} else {
|
|
739
|
+
return new Error(undefined);
|
|
740
|
+
}
|
|
741
|
+
},
|
|
742
|
+
);
|
|
743
|
+
let dep_values = $list.map(
|
|
744
|
+
skill.dependencies,
|
|
745
|
+
(dep) => {
|
|
746
|
+
return new VDict(
|
|
747
|
+
toList([
|
|
748
|
+
["name", new VStr(dep.name)],
|
|
749
|
+
["version", new VStr($version_constraint.to_string(dep.version))],
|
|
750
|
+
["optional", new VBool(dep.optional)],
|
|
751
|
+
]),
|
|
752
|
+
);
|
|
753
|
+
},
|
|
754
|
+
);
|
|
755
|
+
let _block;
|
|
756
|
+
let $ = skill.metadata;
|
|
757
|
+
if ($ instanceof Some) {
|
|
758
|
+
let m = $[0];
|
|
759
|
+
let inner = $list.flatten(
|
|
760
|
+
toList([
|
|
761
|
+
$list.filter_map(
|
|
762
|
+
toList([["author", m.author], ["author_email", m.author_email]]),
|
|
763
|
+
(pair) => {
|
|
764
|
+
let $1 = pair[1];
|
|
765
|
+
if ($1 instanceof Some) {
|
|
766
|
+
let value = $1[0];
|
|
767
|
+
return new Ok([pair[0], new VStr(value)]);
|
|
768
|
+
} else {
|
|
769
|
+
return new Error(undefined);
|
|
770
|
+
}
|
|
771
|
+
},
|
|
772
|
+
),
|
|
773
|
+
toList([
|
|
774
|
+
["tags", new VList($list.map(m.tags, (t) => { return new VStr(t); }))],
|
|
775
|
+
]),
|
|
776
|
+
]),
|
|
777
|
+
);
|
|
778
|
+
_block = toList([["metadata", new VDict(inner)]]);
|
|
779
|
+
} else {
|
|
780
|
+
_block = toList([]);
|
|
781
|
+
}
|
|
782
|
+
let metadata_props = _block;
|
|
783
|
+
let config_values = $list.map(
|
|
784
|
+
skill.config,
|
|
785
|
+
(cf) => {
|
|
786
|
+
let _block$1;
|
|
787
|
+
let $2 = cf.requirement;
|
|
788
|
+
if ($2 instanceof Required) {
|
|
789
|
+
_block$1 = [true, toList([])];
|
|
790
|
+
} else if ($2 instanceof Optional) {
|
|
791
|
+
_block$1 = [false, toList([])];
|
|
792
|
+
} else {
|
|
793
|
+
let d = $2[0];
|
|
794
|
+
_block$1 = [false, toList([["default", new VStr(d)]])];
|
|
795
|
+
}
|
|
796
|
+
let $1 = _block$1;
|
|
797
|
+
let required_val;
|
|
798
|
+
let default_prop;
|
|
799
|
+
required_val = $1[0];
|
|
800
|
+
default_prop = $1[1];
|
|
801
|
+
return new VDict(
|
|
802
|
+
$list.flatten(
|
|
803
|
+
toList([
|
|
804
|
+
toList([
|
|
805
|
+
["name", new VStr(cf.name)],
|
|
806
|
+
["description", new VStr(cf.description)],
|
|
807
|
+
["required", new VBool(required_val)],
|
|
808
|
+
["secret", new VBool(cf.secret)],
|
|
809
|
+
]),
|
|
810
|
+
default_prop,
|
|
811
|
+
]),
|
|
812
|
+
),
|
|
813
|
+
);
|
|
814
|
+
},
|
|
815
|
+
);
|
|
816
|
+
return new VDict(
|
|
817
|
+
$list.flatten(
|
|
818
|
+
toList([
|
|
819
|
+
base_props,
|
|
820
|
+
optional_props,
|
|
821
|
+
toList([["dependencies", new VList(dep_values)]]),
|
|
822
|
+
metadata_props,
|
|
823
|
+
toList([["config", new VList(config_values)]]),
|
|
824
|
+
toList([["meta", node_to_value(provider_meta)]]),
|
|
825
|
+
]),
|
|
826
|
+
),
|
|
827
|
+
);
|
|
828
|
+
}
|
|
829
|
+
|
|
830
|
+
function process_raw_blocks(loop$content, loop$acc) {
|
|
831
|
+
while (true) {
|
|
832
|
+
let content = loop$content;
|
|
833
|
+
let acc = loop$acc;
|
|
834
|
+
let $ = $string.split_once(content, "{{{{raw}}}}");
|
|
835
|
+
if ($ instanceof Ok) {
|
|
836
|
+
let before = $[0][0];
|
|
837
|
+
let after_open = $[0][1];
|
|
838
|
+
let $1 = $string.split_once(after_open, "{{{{/raw}}}}");
|
|
839
|
+
if ($1 instanceof Ok) {
|
|
840
|
+
let raw_content = $1[0][0];
|
|
841
|
+
let after_close = $1[0][1];
|
|
842
|
+
let escaped = $string.replace(
|
|
843
|
+
raw_content,
|
|
844
|
+
"{{",
|
|
845
|
+
escaped_brace_placeholder,
|
|
846
|
+
);
|
|
847
|
+
loop$content = after_close;
|
|
848
|
+
loop$acc = (acc + before) + escaped;
|
|
849
|
+
} else {
|
|
850
|
+
return acc + content;
|
|
851
|
+
}
|
|
852
|
+
} else {
|
|
853
|
+
return acc + content;
|
|
854
|
+
}
|
|
855
|
+
}
|
|
856
|
+
}
|
|
857
|
+
|
|
858
|
+
function resolve_this(ctx) {
|
|
859
|
+
let $ = lookup_key(key_this, ctx);
|
|
860
|
+
if ($ instanceof VNil) {
|
|
861
|
+
return ctx;
|
|
862
|
+
} else {
|
|
863
|
+
return $;
|
|
864
|
+
}
|
|
865
|
+
}
|
|
866
|
+
|
|
867
|
+
function resolve_parts(loop$parts, loop$ctx) {
|
|
868
|
+
while (true) {
|
|
869
|
+
let parts = loop$parts;
|
|
870
|
+
let ctx = loop$ctx;
|
|
871
|
+
if (parts instanceof $Empty) {
|
|
872
|
+
return ctx;
|
|
873
|
+
} else {
|
|
874
|
+
let part = parts.head;
|
|
875
|
+
if (part === "this") {
|
|
876
|
+
let rest = parts.tail;
|
|
877
|
+
let this_val = resolve_this(ctx);
|
|
878
|
+
loop$parts = rest;
|
|
879
|
+
loop$ctx = this_val;
|
|
880
|
+
} else {
|
|
881
|
+
let $ = parts.tail;
|
|
882
|
+
if ($ instanceof $Empty) {
|
|
883
|
+
let part = parts.head;
|
|
884
|
+
if (part === "@index") {
|
|
885
|
+
return lookup_key(key_index, ctx);
|
|
886
|
+
} else {
|
|
887
|
+
let part = parts.head;
|
|
888
|
+
if (part === "@first") {
|
|
889
|
+
return lookup_key(key_first, ctx);
|
|
890
|
+
} else {
|
|
891
|
+
let part = parts.head;
|
|
892
|
+
if (part === "@last") {
|
|
893
|
+
return lookup_key(key_last, ctx);
|
|
894
|
+
} else {
|
|
895
|
+
let key = parts.head;
|
|
896
|
+
let rest = $;
|
|
897
|
+
let value = lookup_key(key, ctx);
|
|
898
|
+
if (rest instanceof $Empty) {
|
|
899
|
+
return value;
|
|
900
|
+
} else {
|
|
901
|
+
loop$parts = rest;
|
|
902
|
+
loop$ctx = value;
|
|
903
|
+
}
|
|
904
|
+
}
|
|
905
|
+
}
|
|
906
|
+
}
|
|
907
|
+
} else {
|
|
908
|
+
let key = parts.head;
|
|
909
|
+
let rest = $;
|
|
910
|
+
let value = lookup_key(key, ctx);
|
|
911
|
+
if (rest instanceof $Empty) {
|
|
912
|
+
return value;
|
|
913
|
+
} else {
|
|
914
|
+
loop$parts = rest;
|
|
915
|
+
loop$ctx = value;
|
|
916
|
+
}
|
|
917
|
+
}
|
|
918
|
+
}
|
|
919
|
+
}
|
|
920
|
+
}
|
|
921
|
+
}
|
|
922
|
+
|
|
923
|
+
function resolve_path(path, ctx) {
|
|
924
|
+
let parts = $string.split(path, ".");
|
|
925
|
+
return resolve_parts(parts, ctx);
|
|
926
|
+
}
|
|
927
|
+
|
|
928
|
+
function render_conditional_block(should_render, block, before, ctx, acc, line) {
|
|
929
|
+
let _block;
|
|
930
|
+
let $ = block.else_content;
|
|
931
|
+
if ($ instanceof Some) {
|
|
932
|
+
let else_content = $[0];
|
|
933
|
+
_block = (block.if_content + "{{else}}") + else_content;
|
|
934
|
+
} else {
|
|
935
|
+
_block = block.if_content;
|
|
936
|
+
}
|
|
937
|
+
let total_content = _block;
|
|
938
|
+
let after_block_line = line + count_newlines(total_content);
|
|
939
|
+
if (should_render) {
|
|
940
|
+
return $result.try$(
|
|
941
|
+
render_tokens(block.if_content, ctx, line),
|
|
942
|
+
(_use0) => {
|
|
943
|
+
let rendered_block;
|
|
944
|
+
rendered_block = _use0[0];
|
|
945
|
+
return do_render(
|
|
946
|
+
block.remaining,
|
|
947
|
+
ctx,
|
|
948
|
+
(acc + before) + rendered_block,
|
|
949
|
+
after_block_line,
|
|
950
|
+
);
|
|
951
|
+
},
|
|
952
|
+
);
|
|
953
|
+
} else {
|
|
954
|
+
let $1 = block.else_content;
|
|
955
|
+
if ($1 instanceof Some) {
|
|
956
|
+
let else_content = $1[0];
|
|
957
|
+
return $result.try$(
|
|
958
|
+
render_tokens(
|
|
959
|
+
else_content,
|
|
960
|
+
ctx,
|
|
961
|
+
line + count_newlines(block.if_content),
|
|
962
|
+
),
|
|
963
|
+
(_use0) => {
|
|
964
|
+
let rendered_else;
|
|
965
|
+
rendered_else = _use0[0];
|
|
966
|
+
return do_render(
|
|
967
|
+
block.remaining,
|
|
968
|
+
ctx,
|
|
969
|
+
(acc + before) + rendered_else,
|
|
970
|
+
after_block_line,
|
|
971
|
+
);
|
|
972
|
+
},
|
|
973
|
+
);
|
|
974
|
+
} else {
|
|
975
|
+
return do_render(block.remaining, ctx, acc + before, after_block_line);
|
|
976
|
+
}
|
|
977
|
+
}
|
|
978
|
+
}
|
|
979
|
+
|
|
980
|
+
function render_tokens(content, ctx, line) {
|
|
981
|
+
return do_render(content, ctx, "", line);
|
|
982
|
+
}
|
|
983
|
+
|
|
984
|
+
function do_render(loop$remaining, loop$ctx, loop$acc, loop$line) {
|
|
985
|
+
while (true) {
|
|
986
|
+
let remaining = loop$remaining;
|
|
987
|
+
let ctx = loop$ctx;
|
|
988
|
+
let acc = loop$acc;
|
|
989
|
+
let line = loop$line;
|
|
990
|
+
let $ = $string.split_once(remaining, "{{");
|
|
991
|
+
if ($ instanceof Ok) {
|
|
992
|
+
let before = $[0][0];
|
|
993
|
+
let after_open = $[0][1];
|
|
994
|
+
let source_line = line + count_newlines(before);
|
|
995
|
+
let $1 = $string.split_once(after_open, "}}");
|
|
996
|
+
if ($1 instanceof Ok) {
|
|
997
|
+
let tag_body = $1[0][0];
|
|
998
|
+
let after_close = $1[0][1];
|
|
999
|
+
let tag = $string.trim(tag_body);
|
|
1000
|
+
let after_tag_line = source_line + count_newlines(tag_body);
|
|
1001
|
+
if (tag.startsWith("#if ")) {
|
|
1002
|
+
let path = tag.slice(4);
|
|
1003
|
+
let path$1 = $string.trim(path);
|
|
1004
|
+
return $result.try$(
|
|
1005
|
+
find_block_end_with_else(after_close, "if", source_line),
|
|
1006
|
+
(block) => {
|
|
1007
|
+
let value = resolve_path(path$1, ctx);
|
|
1008
|
+
let should_render = is_truthy(value);
|
|
1009
|
+
return render_conditional_block(
|
|
1010
|
+
should_render,
|
|
1011
|
+
block,
|
|
1012
|
+
before,
|
|
1013
|
+
ctx,
|
|
1014
|
+
acc,
|
|
1015
|
+
after_tag_line,
|
|
1016
|
+
);
|
|
1017
|
+
},
|
|
1018
|
+
);
|
|
1019
|
+
} else if (tag.startsWith("#unless ")) {
|
|
1020
|
+
let path = tag.slice(8);
|
|
1021
|
+
let path$1 = $string.trim(path);
|
|
1022
|
+
return $result.try$(
|
|
1023
|
+
find_block_end_with_else(after_close, "unless", source_line),
|
|
1024
|
+
(block) => {
|
|
1025
|
+
let value = resolve_path(path$1, ctx);
|
|
1026
|
+
let should_render = !is_truthy(value);
|
|
1027
|
+
return render_conditional_block(
|
|
1028
|
+
should_render,
|
|
1029
|
+
block,
|
|
1030
|
+
before,
|
|
1031
|
+
ctx,
|
|
1032
|
+
acc,
|
|
1033
|
+
after_tag_line,
|
|
1034
|
+
);
|
|
1035
|
+
},
|
|
1036
|
+
);
|
|
1037
|
+
} else if (tag.startsWith("#each ")) {
|
|
1038
|
+
let path = tag.slice(6);
|
|
1039
|
+
let path$1 = $string.trim(path);
|
|
1040
|
+
return $result.try$(
|
|
1041
|
+
find_block_end(after_close, "each", source_line),
|
|
1042
|
+
(_use0) => {
|
|
1043
|
+
let block_content;
|
|
1044
|
+
let rest;
|
|
1045
|
+
block_content = _use0[0];
|
|
1046
|
+
rest = _use0[1];
|
|
1047
|
+
let value = resolve_path(path$1, ctx);
|
|
1048
|
+
if (value instanceof VList) {
|
|
1049
|
+
let items = value[0];
|
|
1050
|
+
let len = $list.length(items);
|
|
1051
|
+
return $result.try$(
|
|
1052
|
+
render_each_items(
|
|
1053
|
+
block_content,
|
|
1054
|
+
items,
|
|
1055
|
+
ctx,
|
|
1056
|
+
0,
|
|
1057
|
+
len,
|
|
1058
|
+
"",
|
|
1059
|
+
after_tag_line,
|
|
1060
|
+
),
|
|
1061
|
+
(_use0) => {
|
|
1062
|
+
let rendered_items;
|
|
1063
|
+
rendered_items = _use0[0];
|
|
1064
|
+
return do_render(
|
|
1065
|
+
rest,
|
|
1066
|
+
ctx,
|
|
1067
|
+
(acc + before) + rendered_items,
|
|
1068
|
+
after_tag_line + count_newlines(block_content),
|
|
1069
|
+
);
|
|
1070
|
+
},
|
|
1071
|
+
);
|
|
1072
|
+
} else {
|
|
1073
|
+
return do_render(
|
|
1074
|
+
rest,
|
|
1075
|
+
ctx,
|
|
1076
|
+
acc + before,
|
|
1077
|
+
after_tag_line + count_newlines(block_content),
|
|
1078
|
+
);
|
|
1079
|
+
}
|
|
1080
|
+
},
|
|
1081
|
+
);
|
|
1082
|
+
} else {
|
|
1083
|
+
let value = resolve_path(tag, ctx);
|
|
1084
|
+
let str_value = value_to_string(value);
|
|
1085
|
+
loop$remaining = after_close;
|
|
1086
|
+
loop$ctx = ctx;
|
|
1087
|
+
loop$acc = (acc + before) + str_value;
|
|
1088
|
+
loop$line = after_tag_line;
|
|
1089
|
+
}
|
|
1090
|
+
} else {
|
|
1091
|
+
return new Error(
|
|
1092
|
+
new TemplateError(source_line, "Unbalanced tag: missing closing }}"),
|
|
1093
|
+
);
|
|
1094
|
+
}
|
|
1095
|
+
} else {
|
|
1096
|
+
return new Ok([acc + remaining, line + count_newlines(remaining)]);
|
|
1097
|
+
}
|
|
1098
|
+
}
|
|
1099
|
+
}
|
|
1100
|
+
|
|
1101
|
+
function render(content, context) {
|
|
1102
|
+
let content$1 = process_raw_blocks(content, "");
|
|
1103
|
+
let content$2 = $string.replace(content$1, "\\{{", escaped_brace_placeholder);
|
|
1104
|
+
return $result.try$(
|
|
1105
|
+
render_tokens(content$2, context, 1),
|
|
1106
|
+
(_use0) => {
|
|
1107
|
+
let output;
|
|
1108
|
+
output = _use0[0];
|
|
1109
|
+
let output$1 = $string.replace(output, escaped_brace_placeholder, "{{");
|
|
1110
|
+
return new Ok(output$1);
|
|
1111
|
+
},
|
|
1112
|
+
);
|
|
1113
|
+
}
|
|
1114
|
+
|
|
1115
|
+
export function render_template(content, target, skill, provider_meta) {
|
|
1116
|
+
return $result.try$(
|
|
1117
|
+
process_provider_blocks(content, target),
|
|
1118
|
+
(processed) => {
|
|
1119
|
+
let context = build_context(skill, target, provider_meta);
|
|
1120
|
+
return render(processed, context);
|
|
1121
|
+
},
|
|
1122
|
+
);
|
|
1123
|
+
}
|
|
1124
|
+
|
|
1125
|
+
function render_each_items(template, items, parent_ctx, index, total, acc, line) {
|
|
1126
|
+
if (items instanceof $Empty) {
|
|
1127
|
+
return new Ok([acc, line]);
|
|
1128
|
+
} else {
|
|
1129
|
+
let item = items.head;
|
|
1130
|
+
let rest = items.tail;
|
|
1131
|
+
let is_last = index === (total - 1);
|
|
1132
|
+
let is_first = index === 0;
|
|
1133
|
+
let special_keys = toList([
|
|
1134
|
+
[key_index, new VInt(index)],
|
|
1135
|
+
[key_first, new VBool(is_first)],
|
|
1136
|
+
[key_last, new VBool(is_last)],
|
|
1137
|
+
]);
|
|
1138
|
+
let _block;
|
|
1139
|
+
if (parent_ctx instanceof VDict) {
|
|
1140
|
+
let props = parent_ctx[0];
|
|
1141
|
+
_block = props;
|
|
1142
|
+
} else {
|
|
1143
|
+
_block = toList([]);
|
|
1144
|
+
}
|
|
1145
|
+
let parent_props = _block;
|
|
1146
|
+
let _block$1;
|
|
1147
|
+
if (item instanceof VDict) {
|
|
1148
|
+
let props = item[0];
|
|
1149
|
+
_block$1 = listPrepend(
|
|
1150
|
+
[key_this, item],
|
|
1151
|
+
$list.append(props, special_keys),
|
|
1152
|
+
);
|
|
1153
|
+
} else {
|
|
1154
|
+
_block$1 = listPrepend([key_this, item], special_keys);
|
|
1155
|
+
}
|
|
1156
|
+
let item_keys = _block$1;
|
|
1157
|
+
let item_ctx = new VDict($list.append(item_keys, parent_props));
|
|
1158
|
+
return $result.try$(
|
|
1159
|
+
render_tokens(template, item_ctx, line),
|
|
1160
|
+
(_use0) => {
|
|
1161
|
+
let rendered;
|
|
1162
|
+
let new_line;
|
|
1163
|
+
rendered = _use0[0];
|
|
1164
|
+
new_line = _use0[1];
|
|
1165
|
+
return render_each_items(
|
|
1166
|
+
template,
|
|
1167
|
+
rest,
|
|
1168
|
+
parent_ctx,
|
|
1169
|
+
index + 1,
|
|
1170
|
+
total,
|
|
1171
|
+
acc + rendered,
|
|
1172
|
+
new_line,
|
|
1173
|
+
);
|
|
1174
|
+
},
|
|
1175
|
+
);
|
|
1176
|
+
}
|
|
1177
|
+
}
|