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,1601 @@
|
|
|
1
|
+
import * as $option from "../gleam_stdlib/gleam/option.mjs";
|
|
2
|
+
import { None, Some } from "../gleam_stdlib/gleam/option.mjs";
|
|
3
|
+
import * as $order from "../gleam_stdlib/gleam/order.mjs";
|
|
4
|
+
import * as $string from "../gleam_stdlib/gleam/string.mjs";
|
|
5
|
+
import * as $should from "../gleeunit/gleeunit/should.mjs";
|
|
6
|
+
import * as $simplifile from "../simplifile/simplifile.mjs";
|
|
7
|
+
import { Ok, Error, toList, Empty as $Empty, makeError } from "./gleam.mjs";
|
|
8
|
+
import * as $error from "./skillc/error.mjs";
|
|
9
|
+
import * as $parser from "./skillc/parser.mjs";
|
|
10
|
+
import * as $semver from "./skillc/semver.mjs";
|
|
11
|
+
import * as $types from "./skillc/types.mjs";
|
|
12
|
+
import * as $version_constraint from "./skillc/version_constraint.mjs";
|
|
13
|
+
|
|
14
|
+
const FILEPATH = "test/parser_test.gleam";
|
|
15
|
+
|
|
16
|
+
export function parse_empty_yaml_fails_test() {
|
|
17
|
+
let result = $parser.parse_skill_yaml("");
|
|
18
|
+
return $should.be_error(result);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export function valid_semver_test() {
|
|
22
|
+
$should.be_ok($semver.parse("1.0.0"));
|
|
23
|
+
$should.be_ok($semver.parse("0.1.0"));
|
|
24
|
+
return $should.be_ok($semver.parse("10.20.30"));
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export function valid_semver_prerelease_test() {
|
|
28
|
+
$should.be_ok($semver.parse("1.0.0-alpha"));
|
|
29
|
+
return $should.be_ok($semver.parse("1.0.0-beta.1"));
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export function valid_semver_build_metadata_test() {
|
|
33
|
+
$should.be_ok($semver.parse("1.0.0+build"));
|
|
34
|
+
return $should.be_ok($semver.parse("1.0.0+build.123"));
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export function valid_semver_build_metadata_with_dashes_test() {
|
|
38
|
+
$should.be_ok($semver.parse("1.0.0+build-123"));
|
|
39
|
+
return $should.be_ok($semver.parse("1.0.0+20130313144700-abc"));
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export function valid_semver_prerelease_and_build_test() {
|
|
43
|
+
$should.be_ok($semver.parse("1.0.0-alpha+build"));
|
|
44
|
+
return $should.be_ok($semver.parse("1.0.0-rc.1+build-456"));
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
export function invalid_semver_format_test() {
|
|
48
|
+
$should.be_error($semver.parse("not-a-version"));
|
|
49
|
+
$should.be_error($semver.parse("1.0"));
|
|
50
|
+
$should.be_error($semver.parse("1"));
|
|
51
|
+
return $should.be_error($semver.parse(""));
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
export function invalid_semver_error_message_test() {
|
|
55
|
+
let $ = $semver.parse("bad");
|
|
56
|
+
let field;
|
|
57
|
+
let msg;
|
|
58
|
+
if ($ instanceof Error) {
|
|
59
|
+
let $1 = $[0];
|
|
60
|
+
if ($1 instanceof $error.ValidationError) {
|
|
61
|
+
field = $1.field;
|
|
62
|
+
msg = $1.message;
|
|
63
|
+
} else {
|
|
64
|
+
throw makeError(
|
|
65
|
+
"let_assert",
|
|
66
|
+
FILEPATH,
|
|
67
|
+
"parser_test",
|
|
68
|
+
174,
|
|
69
|
+
"invalid_semver_error_message_test",
|
|
70
|
+
"Pattern match failed, no pattern matched the value.",
|
|
71
|
+
{
|
|
72
|
+
value: $,
|
|
73
|
+
start: 5717,
|
|
74
|
+
end: 5790,
|
|
75
|
+
pattern_start: 5728,
|
|
76
|
+
pattern_end: 5768
|
|
77
|
+
}
|
|
78
|
+
)
|
|
79
|
+
}
|
|
80
|
+
} else {
|
|
81
|
+
throw makeError(
|
|
82
|
+
"let_assert",
|
|
83
|
+
FILEPATH,
|
|
84
|
+
"parser_test",
|
|
85
|
+
174,
|
|
86
|
+
"invalid_semver_error_message_test",
|
|
87
|
+
"Pattern match failed, no pattern matched the value.",
|
|
88
|
+
{
|
|
89
|
+
value: $,
|
|
90
|
+
start: 5717,
|
|
91
|
+
end: 5790,
|
|
92
|
+
pattern_start: 5728,
|
|
93
|
+
pattern_end: 5768
|
|
94
|
+
}
|
|
95
|
+
)
|
|
96
|
+
}
|
|
97
|
+
$should.equal(field, "version");
|
|
98
|
+
$should.be_true($string.contains(msg, "Invalid semver"));
|
|
99
|
+
return $should.be_true($string.contains(msg, "bad"));
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
export function error_to_string_parse_error_test() {
|
|
103
|
+
let err = new $error.ParseError("skill.yaml", "unexpected token");
|
|
104
|
+
let s = $error.to_string(err);
|
|
105
|
+
$should.be_true($string.contains(s, "skill.yaml"));
|
|
106
|
+
return $should.be_true($string.contains(s, "unexpected token"));
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
export function error_to_string_validation_error_test() {
|
|
110
|
+
let err = new $error.ValidationError("version", "Invalid semver format: bad");
|
|
111
|
+
let s = $error.to_string(err);
|
|
112
|
+
$should.be_true($string.contains(s, "version"));
|
|
113
|
+
return $should.be_true($string.contains(s, "Invalid semver"));
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
export function error_to_string_template_error_test() {
|
|
117
|
+
let err = new $error.TemplateError(42, "Unclosed block");
|
|
118
|
+
let s = $error.to_string(err);
|
|
119
|
+
$should.be_true($string.contains(s, "42"));
|
|
120
|
+
return $should.be_true($string.contains(s, "Unclosed block"));
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
export function parse_invalid_provider_metadata_fails_test() {
|
|
124
|
+
let result = $parser.parse_metadata_yaml(
|
|
125
|
+
"{{invalid: yaml: [",
|
|
126
|
+
new $types.OpenClaw(),
|
|
127
|
+
);
|
|
128
|
+
$should.be_error(result);
|
|
129
|
+
let file;
|
|
130
|
+
if (result instanceof Error) {
|
|
131
|
+
let $ = result[0];
|
|
132
|
+
if ($ instanceof $error.ParseError) {
|
|
133
|
+
file = $.file;
|
|
134
|
+
} else {
|
|
135
|
+
throw makeError(
|
|
136
|
+
"let_assert",
|
|
137
|
+
FILEPATH,
|
|
138
|
+
"parser_test",
|
|
139
|
+
230,
|
|
140
|
+
"parse_invalid_provider_metadata_fails_test",
|
|
141
|
+
"Pattern match failed, no pattern matched the value.",
|
|
142
|
+
{
|
|
143
|
+
value: result,
|
|
144
|
+
start: 7841,
|
|
145
|
+
end: 7896,
|
|
146
|
+
pattern_start: 7852,
|
|
147
|
+
pattern_end: 7887
|
|
148
|
+
}
|
|
149
|
+
)
|
|
150
|
+
}
|
|
151
|
+
} else {
|
|
152
|
+
throw makeError(
|
|
153
|
+
"let_assert",
|
|
154
|
+
FILEPATH,
|
|
155
|
+
"parser_test",
|
|
156
|
+
230,
|
|
157
|
+
"parse_invalid_provider_metadata_fails_test",
|
|
158
|
+
"Pattern match failed, no pattern matched the value.",
|
|
159
|
+
{
|
|
160
|
+
value: result,
|
|
161
|
+
start: 7841,
|
|
162
|
+
end: 7896,
|
|
163
|
+
pattern_start: 7852,
|
|
164
|
+
pattern_end: 7887
|
|
165
|
+
}
|
|
166
|
+
)
|
|
167
|
+
}
|
|
168
|
+
return $should.equal(file, "providers/openclaw/metadata.yaml");
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
export function has_frontmatter_false_for_empty_test() {
|
|
172
|
+
return $should.be_false($parser.has_frontmatter(""));
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
export function dependency_default_version_star_test() {
|
|
176
|
+
let yaml = "name: dep-test\ndescription: Test\nversion: 1.0.0\ndependencies:\n - name: no-version-dep\n";
|
|
177
|
+
let $ = $parser.parse_skill_yaml(yaml);
|
|
178
|
+
let skill;
|
|
179
|
+
if ($ instanceof Ok) {
|
|
180
|
+
skill = $[0];
|
|
181
|
+
} else {
|
|
182
|
+
throw makeError(
|
|
183
|
+
"let_assert",
|
|
184
|
+
FILEPATH,
|
|
185
|
+
"parser_test",
|
|
186
|
+
316,
|
|
187
|
+
"dependency_default_version_star_test",
|
|
188
|
+
"Pattern match failed, no pattern matched the value.",
|
|
189
|
+
{
|
|
190
|
+
value: $,
|
|
191
|
+
start: 10172,
|
|
192
|
+
end: 10224,
|
|
193
|
+
pattern_start: 10183,
|
|
194
|
+
pattern_end: 10192
|
|
195
|
+
}
|
|
196
|
+
)
|
|
197
|
+
}
|
|
198
|
+
let $1 = skill.dependencies;
|
|
199
|
+
let dep;
|
|
200
|
+
if ($1 instanceof $Empty) {
|
|
201
|
+
throw makeError(
|
|
202
|
+
"let_assert",
|
|
203
|
+
FILEPATH,
|
|
204
|
+
"parser_test",
|
|
205
|
+
317,
|
|
206
|
+
"dependency_default_version_star_test",
|
|
207
|
+
"Pattern match failed, no pattern matched the value.",
|
|
208
|
+
{
|
|
209
|
+
value: $1,
|
|
210
|
+
start: 10227,
|
|
211
|
+
end: 10264,
|
|
212
|
+
pattern_start: 10238,
|
|
213
|
+
pattern_end: 10243
|
|
214
|
+
}
|
|
215
|
+
)
|
|
216
|
+
} else {
|
|
217
|
+
let $2 = $1.tail;
|
|
218
|
+
if ($2 instanceof $Empty) {
|
|
219
|
+
dep = $1.head;
|
|
220
|
+
} else {
|
|
221
|
+
throw makeError(
|
|
222
|
+
"let_assert",
|
|
223
|
+
FILEPATH,
|
|
224
|
+
"parser_test",
|
|
225
|
+
317,
|
|
226
|
+
"dependency_default_version_star_test",
|
|
227
|
+
"Pattern match failed, no pattern matched the value.",
|
|
228
|
+
{
|
|
229
|
+
value: $1,
|
|
230
|
+
start: 10227,
|
|
231
|
+
end: 10264,
|
|
232
|
+
pattern_start: 10238,
|
|
233
|
+
pattern_end: 10243
|
|
234
|
+
}
|
|
235
|
+
)
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
return $should.equal(dep.version, $version_constraint.wildcard());
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
export function config_field_without_name_skipped_test() {
|
|
242
|
+
let yaml = "name: config-test\ndescription: Test\nversion: 1.0.0\nconfig:\n - description: missing name field\n required: true\n - name: valid_field\n description: has a name\n";
|
|
243
|
+
let $ = $parser.parse_skill_yaml(yaml);
|
|
244
|
+
let skill;
|
|
245
|
+
if ($ instanceof Ok) {
|
|
246
|
+
skill = $[0];
|
|
247
|
+
} else {
|
|
248
|
+
throw makeError(
|
|
249
|
+
"let_assert",
|
|
250
|
+
FILEPATH,
|
|
251
|
+
"parser_test",
|
|
252
|
+
336,
|
|
253
|
+
"config_field_without_name_skipped_test",
|
|
254
|
+
"Pattern match failed, no pattern matched the value.",
|
|
255
|
+
{
|
|
256
|
+
value: $,
|
|
257
|
+
start: 10754,
|
|
258
|
+
end: 10806,
|
|
259
|
+
pattern_start: 10765,
|
|
260
|
+
pattern_end: 10774
|
|
261
|
+
}
|
|
262
|
+
)
|
|
263
|
+
}
|
|
264
|
+
return $should.equal(
|
|
265
|
+
skill.config,
|
|
266
|
+
toList([
|
|
267
|
+
new $types.ConfigField(
|
|
268
|
+
"valid_field",
|
|
269
|
+
"has a name",
|
|
270
|
+
new $types.Optional(),
|
|
271
|
+
false,
|
|
272
|
+
),
|
|
273
|
+
]),
|
|
274
|
+
);
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
export function config_field_all_properties_test() {
|
|
278
|
+
let yaml = "name: config-test\ndescription: Test\nversion: 1.0.0\nconfig:\n - name: api_key\n description: API key\n required: true\n secret: true\n - name: cache_ttl\n description: Cache TTL\n required: false\n default: \"300\"\n";
|
|
279
|
+
let $ = $parser.parse_skill_yaml(yaml);
|
|
280
|
+
let skill;
|
|
281
|
+
if ($ instanceof Ok) {
|
|
282
|
+
skill = $[0];
|
|
283
|
+
} else {
|
|
284
|
+
throw makeError(
|
|
285
|
+
"let_assert",
|
|
286
|
+
FILEPATH,
|
|
287
|
+
"parser_test",
|
|
288
|
+
363,
|
|
289
|
+
"config_field_all_properties_test",
|
|
290
|
+
"Pattern match failed, no pattern matched the value.",
|
|
291
|
+
{
|
|
292
|
+
value: $,
|
|
293
|
+
start: 11326,
|
|
294
|
+
end: 11378,
|
|
295
|
+
pattern_start: 11337,
|
|
296
|
+
pattern_end: 11346
|
|
297
|
+
}
|
|
298
|
+
)
|
|
299
|
+
}
|
|
300
|
+
let $1 = skill.config;
|
|
301
|
+
let first;
|
|
302
|
+
let second;
|
|
303
|
+
if ($1 instanceof $Empty) {
|
|
304
|
+
throw makeError(
|
|
305
|
+
"let_assert",
|
|
306
|
+
FILEPATH,
|
|
307
|
+
"parser_test",
|
|
308
|
+
364,
|
|
309
|
+
"config_field_all_properties_test",
|
|
310
|
+
"Pattern match failed, no pattern matched the value.",
|
|
311
|
+
{
|
|
312
|
+
value: $1,
|
|
313
|
+
start: 11381,
|
|
314
|
+
end: 11422,
|
|
315
|
+
pattern_start: 11392,
|
|
316
|
+
pattern_end: 11407
|
|
317
|
+
}
|
|
318
|
+
)
|
|
319
|
+
} else {
|
|
320
|
+
let $2 = $1.tail;
|
|
321
|
+
if ($2 instanceof $Empty) {
|
|
322
|
+
throw makeError(
|
|
323
|
+
"let_assert",
|
|
324
|
+
FILEPATH,
|
|
325
|
+
"parser_test",
|
|
326
|
+
364,
|
|
327
|
+
"config_field_all_properties_test",
|
|
328
|
+
"Pattern match failed, no pattern matched the value.",
|
|
329
|
+
{
|
|
330
|
+
value: $1,
|
|
331
|
+
start: 11381,
|
|
332
|
+
end: 11422,
|
|
333
|
+
pattern_start: 11392,
|
|
334
|
+
pattern_end: 11407
|
|
335
|
+
}
|
|
336
|
+
)
|
|
337
|
+
} else {
|
|
338
|
+
let $3 = $2.tail;
|
|
339
|
+
if ($3 instanceof $Empty) {
|
|
340
|
+
first = $1.head;
|
|
341
|
+
second = $2.head;
|
|
342
|
+
} else {
|
|
343
|
+
throw makeError(
|
|
344
|
+
"let_assert",
|
|
345
|
+
FILEPATH,
|
|
346
|
+
"parser_test",
|
|
347
|
+
364,
|
|
348
|
+
"config_field_all_properties_test",
|
|
349
|
+
"Pattern match failed, no pattern matched the value.",
|
|
350
|
+
{
|
|
351
|
+
value: $1,
|
|
352
|
+
start: 11381,
|
|
353
|
+
end: 11422,
|
|
354
|
+
pattern_start: 11392,
|
|
355
|
+
pattern_end: 11407
|
|
356
|
+
}
|
|
357
|
+
)
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
$should.equal(first.name, "api_key");
|
|
362
|
+
$should.equal(first.requirement, new $types.Required());
|
|
363
|
+
$should.equal(first.secret, true);
|
|
364
|
+
$should.equal(second.name, "cache_ttl");
|
|
365
|
+
$should.equal(second.requirement, new $types.OptionalWithDefault("300"));
|
|
366
|
+
return $should.equal(second.secret, false);
|
|
367
|
+
}
|
|
368
|
+
|
|
369
|
+
export function error_to_string_provider_error_test() {
|
|
370
|
+
let err = new $error.ProviderError("my-provider", "not supported");
|
|
371
|
+
let s = $error.to_string(err);
|
|
372
|
+
$should.be_true($string.contains(s, "my-provider"));
|
|
373
|
+
return $should.be_true($string.contains(s, "not supported"));
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
export function error_to_string_file_error_test() {
|
|
377
|
+
let err = new $error.FileError("/some/path.yaml", new $simplifile.Enoent());
|
|
378
|
+
let s = $error.to_string(err);
|
|
379
|
+
return $should.be_true($string.contains(s, "/some/path.yaml"));
|
|
380
|
+
}
|
|
381
|
+
|
|
382
|
+
export function semver_leading_zeros_rejected_test() {
|
|
383
|
+
$should.be_error($semver.parse("01.0.0"));
|
|
384
|
+
$should.be_error($semver.parse("1.01.0"));
|
|
385
|
+
return $should.be_error($semver.parse("1.0.01"));
|
|
386
|
+
}
|
|
387
|
+
|
|
388
|
+
export function semver_empty_prerelease_rejected_test() {
|
|
389
|
+
return $should.be_error($semver.parse("1.0.0-"));
|
|
390
|
+
}
|
|
391
|
+
|
|
392
|
+
export function semver_empty_build_metadata_rejected_test() {
|
|
393
|
+
return $should.be_error($semver.parse("1.0.0+"));
|
|
394
|
+
}
|
|
395
|
+
|
|
396
|
+
export function has_frontmatter_with_leading_whitespace_test() {
|
|
397
|
+
$should.be_true($parser.has_frontmatter(" ---\ntitle: Test\n---"));
|
|
398
|
+
$should.be_true($parser.has_frontmatter("\n---\ntitle: Test\n---"));
|
|
399
|
+
return $should.be_true($parser.has_frontmatter(" \n ---\ntitle: Test\n---"));
|
|
400
|
+
}
|
|
401
|
+
|
|
402
|
+
export function has_frontmatter_with_dashes_only_no_newline_test() {
|
|
403
|
+
return $should.be_true($parser.has_frontmatter("---"));
|
|
404
|
+
}
|
|
405
|
+
|
|
406
|
+
export function empty_skill_name_rejected_test() {
|
|
407
|
+
let yaml = "name: \"\"\ndescription: Test\nversion: 1.0.0\n";
|
|
408
|
+
let result = $parser.parse_skill_yaml(yaml);
|
|
409
|
+
$should.be_error(result);
|
|
410
|
+
let field;
|
|
411
|
+
let msg;
|
|
412
|
+
if (result instanceof Error) {
|
|
413
|
+
let $ = result[0];
|
|
414
|
+
if ($ instanceof $error.ValidationError) {
|
|
415
|
+
field = $.field;
|
|
416
|
+
msg = $.message;
|
|
417
|
+
} else {
|
|
418
|
+
throw makeError(
|
|
419
|
+
"let_assert",
|
|
420
|
+
FILEPATH,
|
|
421
|
+
"parser_test",
|
|
422
|
+
434,
|
|
423
|
+
"empty_skill_name_rejected_test",
|
|
424
|
+
"Pattern match failed, no pattern matched the value.",
|
|
425
|
+
{
|
|
426
|
+
value: result,
|
|
427
|
+
start: 13891,
|
|
428
|
+
end: 13951,
|
|
429
|
+
pattern_start: 13902,
|
|
430
|
+
pattern_end: 13942
|
|
431
|
+
}
|
|
432
|
+
)
|
|
433
|
+
}
|
|
434
|
+
} else {
|
|
435
|
+
throw makeError(
|
|
436
|
+
"let_assert",
|
|
437
|
+
FILEPATH,
|
|
438
|
+
"parser_test",
|
|
439
|
+
434,
|
|
440
|
+
"empty_skill_name_rejected_test",
|
|
441
|
+
"Pattern match failed, no pattern matched the value.",
|
|
442
|
+
{
|
|
443
|
+
value: result,
|
|
444
|
+
start: 13891,
|
|
445
|
+
end: 13951,
|
|
446
|
+
pattern_start: 13902,
|
|
447
|
+
pattern_end: 13942
|
|
448
|
+
}
|
|
449
|
+
)
|
|
450
|
+
}
|
|
451
|
+
$should.equal(field, "name");
|
|
452
|
+
return $should.be_true($string.contains(msg, "must not be empty"));
|
|
453
|
+
}
|
|
454
|
+
|
|
455
|
+
export function whitespace_only_skill_name_rejected_test() {
|
|
456
|
+
let yaml = "name: \" \"\ndescription: Test\nversion: 1.0.0\n";
|
|
457
|
+
let result = $parser.parse_skill_yaml(yaml);
|
|
458
|
+
$should.be_error(result);
|
|
459
|
+
let field;
|
|
460
|
+
if (result instanceof Error) {
|
|
461
|
+
let $ = result[0];
|
|
462
|
+
if ($ instanceof $error.ValidationError) {
|
|
463
|
+
field = $.field;
|
|
464
|
+
} else {
|
|
465
|
+
throw makeError(
|
|
466
|
+
"let_assert",
|
|
467
|
+
FILEPATH,
|
|
468
|
+
"parser_test",
|
|
469
|
+
447,
|
|
470
|
+
"whitespace_only_skill_name_rejected_test",
|
|
471
|
+
"Pattern match failed, no pattern matched the value.",
|
|
472
|
+
{
|
|
473
|
+
value: result,
|
|
474
|
+
start: 14236,
|
|
475
|
+
end: 14297,
|
|
476
|
+
pattern_start: 14247,
|
|
477
|
+
pattern_end: 14288
|
|
478
|
+
}
|
|
479
|
+
)
|
|
480
|
+
}
|
|
481
|
+
} else {
|
|
482
|
+
throw makeError(
|
|
483
|
+
"let_assert",
|
|
484
|
+
FILEPATH,
|
|
485
|
+
"parser_test",
|
|
486
|
+
447,
|
|
487
|
+
"whitespace_only_skill_name_rejected_test",
|
|
488
|
+
"Pattern match failed, no pattern matched the value.",
|
|
489
|
+
{
|
|
490
|
+
value: result,
|
|
491
|
+
start: 14236,
|
|
492
|
+
end: 14297,
|
|
493
|
+
pattern_start: 14247,
|
|
494
|
+
pattern_end: 14288
|
|
495
|
+
}
|
|
496
|
+
)
|
|
497
|
+
}
|
|
498
|
+
return $should.equal(field, "name");
|
|
499
|
+
}
|
|
500
|
+
|
|
501
|
+
export function empty_description_rejected_test() {
|
|
502
|
+
let yaml = "name: test\ndescription: \"\"\nversion: 1.0.0\n";
|
|
503
|
+
let result = $parser.parse_skill_yaml(yaml);
|
|
504
|
+
$should.be_error(result);
|
|
505
|
+
let field;
|
|
506
|
+
let msg;
|
|
507
|
+
if (result instanceof Error) {
|
|
508
|
+
let $ = result[0];
|
|
509
|
+
if ($ instanceof $error.ValidationError) {
|
|
510
|
+
field = $.field;
|
|
511
|
+
msg = $.message;
|
|
512
|
+
} else {
|
|
513
|
+
throw makeError(
|
|
514
|
+
"let_assert",
|
|
515
|
+
FILEPATH,
|
|
516
|
+
"parser_test",
|
|
517
|
+
459,
|
|
518
|
+
"empty_description_rejected_test",
|
|
519
|
+
"Pattern match failed, no pattern matched the value.",
|
|
520
|
+
{
|
|
521
|
+
value: result,
|
|
522
|
+
start: 14511,
|
|
523
|
+
end: 14571,
|
|
524
|
+
pattern_start: 14522,
|
|
525
|
+
pattern_end: 14562
|
|
526
|
+
}
|
|
527
|
+
)
|
|
528
|
+
}
|
|
529
|
+
} else {
|
|
530
|
+
throw makeError(
|
|
531
|
+
"let_assert",
|
|
532
|
+
FILEPATH,
|
|
533
|
+
"parser_test",
|
|
534
|
+
459,
|
|
535
|
+
"empty_description_rejected_test",
|
|
536
|
+
"Pattern match failed, no pattern matched the value.",
|
|
537
|
+
{
|
|
538
|
+
value: result,
|
|
539
|
+
start: 14511,
|
|
540
|
+
end: 14571,
|
|
541
|
+
pattern_start: 14522,
|
|
542
|
+
pattern_end: 14562
|
|
543
|
+
}
|
|
544
|
+
)
|
|
545
|
+
}
|
|
546
|
+
$should.equal(field, "description");
|
|
547
|
+
return $should.be_true($string.contains(msg, "must not be empty"));
|
|
548
|
+
}
|
|
549
|
+
|
|
550
|
+
export function empty_license_normalized_to_none_test() {
|
|
551
|
+
let yaml = "name: test\ndescription: A test\nversion: 1.0.0\nlicense: \"\"\n";
|
|
552
|
+
let $ = $parser.parse_skill_yaml(yaml);
|
|
553
|
+
let skill;
|
|
554
|
+
if ($ instanceof Ok) {
|
|
555
|
+
skill = $[0];
|
|
556
|
+
} else {
|
|
557
|
+
throw makeError(
|
|
558
|
+
"let_assert",
|
|
559
|
+
FILEPATH,
|
|
560
|
+
"parser_test",
|
|
561
|
+
471,
|
|
562
|
+
"empty_license_normalized_to_none_test",
|
|
563
|
+
"Pattern match failed, no pattern matched the value.",
|
|
564
|
+
{
|
|
565
|
+
value: $,
|
|
566
|
+
start: 14803,
|
|
567
|
+
end: 14855,
|
|
568
|
+
pattern_start: 14814,
|
|
569
|
+
pattern_end: 14823
|
|
570
|
+
}
|
|
571
|
+
)
|
|
572
|
+
}
|
|
573
|
+
return $should.equal(skill.license, new None());
|
|
574
|
+
}
|
|
575
|
+
|
|
576
|
+
export function empty_homepage_normalized_to_none_test() {
|
|
577
|
+
let yaml = "name: test\ndescription: A test\nversion: 1.0.0\nhomepage: \"\"\n";
|
|
578
|
+
let $ = $parser.parse_skill_yaml(yaml);
|
|
579
|
+
let skill;
|
|
580
|
+
if ($ instanceof Ok) {
|
|
581
|
+
skill = $[0];
|
|
582
|
+
} else {
|
|
583
|
+
throw makeError(
|
|
584
|
+
"let_assert",
|
|
585
|
+
FILEPATH,
|
|
586
|
+
"parser_test",
|
|
587
|
+
482,
|
|
588
|
+
"empty_homepage_normalized_to_none_test",
|
|
589
|
+
"Pattern match failed, no pattern matched the value.",
|
|
590
|
+
{
|
|
591
|
+
value: $,
|
|
592
|
+
start: 15028,
|
|
593
|
+
end: 15080,
|
|
594
|
+
pattern_start: 15039,
|
|
595
|
+
pattern_end: 15048
|
|
596
|
+
}
|
|
597
|
+
)
|
|
598
|
+
}
|
|
599
|
+
return $should.equal(skill.homepage, new None());
|
|
600
|
+
}
|
|
601
|
+
|
|
602
|
+
export function empty_repository_normalized_to_none_test() {
|
|
603
|
+
let yaml = "name: test\ndescription: A test\nversion: 1.0.0\nrepository: \"\"\n";
|
|
604
|
+
let $ = $parser.parse_skill_yaml(yaml);
|
|
605
|
+
let skill;
|
|
606
|
+
if ($ instanceof Ok) {
|
|
607
|
+
skill = $[0];
|
|
608
|
+
} else {
|
|
609
|
+
throw makeError(
|
|
610
|
+
"let_assert",
|
|
611
|
+
FILEPATH,
|
|
612
|
+
"parser_test",
|
|
613
|
+
493,
|
|
614
|
+
"empty_repository_normalized_to_none_test",
|
|
615
|
+
"Pattern match failed, no pattern matched the value.",
|
|
616
|
+
{
|
|
617
|
+
value: $,
|
|
618
|
+
start: 15258,
|
|
619
|
+
end: 15310,
|
|
620
|
+
pattern_start: 15269,
|
|
621
|
+
pattern_end: 15278
|
|
622
|
+
}
|
|
623
|
+
)
|
|
624
|
+
}
|
|
625
|
+
return $should.equal(skill.repository, new None());
|
|
626
|
+
}
|
|
627
|
+
|
|
628
|
+
export function duplicate_dependency_names_rejected_test() {
|
|
629
|
+
let yaml = "name: test\ndescription: A test\nversion: 1.0.0\ndependencies:\n - name: my-dep\n version: ^1.0.0\n - name: my-dep\n version: ^2.0.0\n";
|
|
630
|
+
let result = $parser.parse_skill_yaml(yaml);
|
|
631
|
+
$should.be_error(result);
|
|
632
|
+
let field;
|
|
633
|
+
let msg;
|
|
634
|
+
if (result instanceof Error) {
|
|
635
|
+
let $ = result[0];
|
|
636
|
+
if ($ instanceof $error.ValidationError) {
|
|
637
|
+
field = $.field;
|
|
638
|
+
msg = $.message;
|
|
639
|
+
} else {
|
|
640
|
+
throw makeError(
|
|
641
|
+
"let_assert",
|
|
642
|
+
FILEPATH,
|
|
643
|
+
"parser_test",
|
|
644
|
+
510,
|
|
645
|
+
"duplicate_dependency_names_rejected_test",
|
|
646
|
+
"Pattern match failed, no pattern matched the value.",
|
|
647
|
+
{
|
|
648
|
+
value: result,
|
|
649
|
+
start: 15632,
|
|
650
|
+
end: 15692,
|
|
651
|
+
pattern_start: 15643,
|
|
652
|
+
pattern_end: 15683
|
|
653
|
+
}
|
|
654
|
+
)
|
|
655
|
+
}
|
|
656
|
+
} else {
|
|
657
|
+
throw makeError(
|
|
658
|
+
"let_assert",
|
|
659
|
+
FILEPATH,
|
|
660
|
+
"parser_test",
|
|
661
|
+
510,
|
|
662
|
+
"duplicate_dependency_names_rejected_test",
|
|
663
|
+
"Pattern match failed, no pattern matched the value.",
|
|
664
|
+
{
|
|
665
|
+
value: result,
|
|
666
|
+
start: 15632,
|
|
667
|
+
end: 15692,
|
|
668
|
+
pattern_start: 15643,
|
|
669
|
+
pattern_end: 15683
|
|
670
|
+
}
|
|
671
|
+
)
|
|
672
|
+
}
|
|
673
|
+
$should.equal(field, "dependencies");
|
|
674
|
+
$should.be_true($string.contains(msg, "Duplicate dependency"));
|
|
675
|
+
return $should.be_true($string.contains(msg, "my-dep"));
|
|
676
|
+
}
|
|
677
|
+
|
|
678
|
+
export function duplicate_config_field_names_rejected_test() {
|
|
679
|
+
let yaml = "name: test\ndescription: A test\nversion: 1.0.0\nconfig:\n - name: api_key\n description: First\n - name: api_key\n description: Second\n";
|
|
680
|
+
let result = $parser.parse_skill_yaml(yaml);
|
|
681
|
+
$should.be_error(result);
|
|
682
|
+
let field;
|
|
683
|
+
let msg;
|
|
684
|
+
if (result instanceof Error) {
|
|
685
|
+
let $ = result[0];
|
|
686
|
+
if ($ instanceof $error.ValidationError) {
|
|
687
|
+
field = $.field;
|
|
688
|
+
msg = $.message;
|
|
689
|
+
} else {
|
|
690
|
+
throw makeError(
|
|
691
|
+
"let_assert",
|
|
692
|
+
FILEPATH,
|
|
693
|
+
"parser_test",
|
|
694
|
+
529,
|
|
695
|
+
"duplicate_config_field_names_rejected_test",
|
|
696
|
+
"Pattern match failed, no pattern matched the value.",
|
|
697
|
+
{
|
|
698
|
+
value: result,
|
|
699
|
+
start: 16130,
|
|
700
|
+
end: 16190,
|
|
701
|
+
pattern_start: 16141,
|
|
702
|
+
pattern_end: 16181
|
|
703
|
+
}
|
|
704
|
+
)
|
|
705
|
+
}
|
|
706
|
+
} else {
|
|
707
|
+
throw makeError(
|
|
708
|
+
"let_assert",
|
|
709
|
+
FILEPATH,
|
|
710
|
+
"parser_test",
|
|
711
|
+
529,
|
|
712
|
+
"duplicate_config_field_names_rejected_test",
|
|
713
|
+
"Pattern match failed, no pattern matched the value.",
|
|
714
|
+
{
|
|
715
|
+
value: result,
|
|
716
|
+
start: 16130,
|
|
717
|
+
end: 16190,
|
|
718
|
+
pattern_start: 16141,
|
|
719
|
+
pattern_end: 16181
|
|
720
|
+
}
|
|
721
|
+
)
|
|
722
|
+
}
|
|
723
|
+
$should.equal(field, "config");
|
|
724
|
+
$should.be_true($string.contains(msg, "Duplicate config field"));
|
|
725
|
+
return $should.be_true($string.contains(msg, "api_key"));
|
|
726
|
+
}
|
|
727
|
+
|
|
728
|
+
export function self_dependency_rejected_test() {
|
|
729
|
+
let yaml = "name: my-skill\ndescription: A skill\nversion: 1.0.0\ndependencies:\n - name: my-skill\n version: ^1.0.0\n";
|
|
730
|
+
let result = $parser.parse_skill_yaml(yaml);
|
|
731
|
+
$should.be_error(result);
|
|
732
|
+
let msg;
|
|
733
|
+
if (result instanceof Error) {
|
|
734
|
+
let $ = result[0];
|
|
735
|
+
if ($ instanceof $error.ValidationError) {
|
|
736
|
+
let $1 = $.field;
|
|
737
|
+
if ($1 === "dependencies") {
|
|
738
|
+
msg = $.message;
|
|
739
|
+
} else {
|
|
740
|
+
throw makeError(
|
|
741
|
+
"let_assert",
|
|
742
|
+
FILEPATH,
|
|
743
|
+
"parser_test",
|
|
744
|
+
544,
|
|
745
|
+
"self_dependency_rejected_test",
|
|
746
|
+
"Pattern match failed, no pattern matched the value.",
|
|
747
|
+
{
|
|
748
|
+
value: result,
|
|
749
|
+
start: 16781,
|
|
750
|
+
end: 16850,
|
|
751
|
+
pattern_start: 16792,
|
|
752
|
+
pattern_end: 16841
|
|
753
|
+
}
|
|
754
|
+
)
|
|
755
|
+
}
|
|
756
|
+
} else {
|
|
757
|
+
throw makeError(
|
|
758
|
+
"let_assert",
|
|
759
|
+
FILEPATH,
|
|
760
|
+
"parser_test",
|
|
761
|
+
544,
|
|
762
|
+
"self_dependency_rejected_test",
|
|
763
|
+
"Pattern match failed, no pattern matched the value.",
|
|
764
|
+
{
|
|
765
|
+
value: result,
|
|
766
|
+
start: 16781,
|
|
767
|
+
end: 16850,
|
|
768
|
+
pattern_start: 16792,
|
|
769
|
+
pattern_end: 16841
|
|
770
|
+
}
|
|
771
|
+
)
|
|
772
|
+
}
|
|
773
|
+
} else {
|
|
774
|
+
throw makeError(
|
|
775
|
+
"let_assert",
|
|
776
|
+
FILEPATH,
|
|
777
|
+
"parser_test",
|
|
778
|
+
544,
|
|
779
|
+
"self_dependency_rejected_test",
|
|
780
|
+
"Pattern match failed, no pattern matched the value.",
|
|
781
|
+
{
|
|
782
|
+
value: result,
|
|
783
|
+
start: 16781,
|
|
784
|
+
end: 16850,
|
|
785
|
+
pattern_start: 16792,
|
|
786
|
+
pattern_end: 16841
|
|
787
|
+
}
|
|
788
|
+
)
|
|
789
|
+
}
|
|
790
|
+
$should.be_true($string.contains(msg, "depend on itself"));
|
|
791
|
+
return $should.be_true($string.contains(msg, "my-skill"));
|
|
792
|
+
}
|
|
793
|
+
|
|
794
|
+
export function non_self_dependency_passes_test() {
|
|
795
|
+
let yaml = "name: my-skill\ndescription: A skill\nversion: 1.0.0\ndependencies:\n - name: other-skill\n version: ^1.0.0\n";
|
|
796
|
+
let result = $parser.parse_skill_yaml(yaml);
|
|
797
|
+
return $should.be_ok(result);
|
|
798
|
+
}
|
|
799
|
+
|
|
800
|
+
export function semver_compare_lt_test() {
|
|
801
|
+
let $ = $semver.parse("1.0.0");
|
|
802
|
+
let a;
|
|
803
|
+
if ($ instanceof Ok) {
|
|
804
|
+
a = $[0];
|
|
805
|
+
} else {
|
|
806
|
+
throw makeError(
|
|
807
|
+
"let_assert",
|
|
808
|
+
FILEPATH,
|
|
809
|
+
"parser_test",
|
|
810
|
+
561,
|
|
811
|
+
"semver_compare_lt_test",
|
|
812
|
+
"Pattern match failed, no pattern matched the value.",
|
|
813
|
+
{
|
|
814
|
+
value: $,
|
|
815
|
+
start: 17450,
|
|
816
|
+
end: 17490,
|
|
817
|
+
pattern_start: 17461,
|
|
818
|
+
pattern_end: 17466
|
|
819
|
+
}
|
|
820
|
+
)
|
|
821
|
+
}
|
|
822
|
+
let $1 = $semver.parse("2.0.0");
|
|
823
|
+
let b;
|
|
824
|
+
if ($1 instanceof Ok) {
|
|
825
|
+
b = $1[0];
|
|
826
|
+
} else {
|
|
827
|
+
throw makeError(
|
|
828
|
+
"let_assert",
|
|
829
|
+
FILEPATH,
|
|
830
|
+
"parser_test",
|
|
831
|
+
562,
|
|
832
|
+
"semver_compare_lt_test",
|
|
833
|
+
"Pattern match failed, no pattern matched the value.",
|
|
834
|
+
{
|
|
835
|
+
value: $1,
|
|
836
|
+
start: 17493,
|
|
837
|
+
end: 17533,
|
|
838
|
+
pattern_start: 17504,
|
|
839
|
+
pattern_end: 17509
|
|
840
|
+
}
|
|
841
|
+
)
|
|
842
|
+
}
|
|
843
|
+
return $should.equal($semver.compare(a, b), new $order.Lt());
|
|
844
|
+
}
|
|
845
|
+
|
|
846
|
+
export function semver_compare_eq_test() {
|
|
847
|
+
let $ = $semver.parse("1.0.0");
|
|
848
|
+
let a;
|
|
849
|
+
if ($ instanceof Ok) {
|
|
850
|
+
a = $[0];
|
|
851
|
+
} else {
|
|
852
|
+
throw makeError(
|
|
853
|
+
"let_assert",
|
|
854
|
+
FILEPATH,
|
|
855
|
+
"parser_test",
|
|
856
|
+
567,
|
|
857
|
+
"semver_compare_eq_test",
|
|
858
|
+
"Pattern match failed, no pattern matched the value.",
|
|
859
|
+
{
|
|
860
|
+
value: $,
|
|
861
|
+
start: 17620,
|
|
862
|
+
end: 17660,
|
|
863
|
+
pattern_start: 17631,
|
|
864
|
+
pattern_end: 17636
|
|
865
|
+
}
|
|
866
|
+
)
|
|
867
|
+
}
|
|
868
|
+
let $1 = $semver.parse("1.0.0");
|
|
869
|
+
let b;
|
|
870
|
+
if ($1 instanceof Ok) {
|
|
871
|
+
b = $1[0];
|
|
872
|
+
} else {
|
|
873
|
+
throw makeError(
|
|
874
|
+
"let_assert",
|
|
875
|
+
FILEPATH,
|
|
876
|
+
"parser_test",
|
|
877
|
+
568,
|
|
878
|
+
"semver_compare_eq_test",
|
|
879
|
+
"Pattern match failed, no pattern matched the value.",
|
|
880
|
+
{
|
|
881
|
+
value: $1,
|
|
882
|
+
start: 17663,
|
|
883
|
+
end: 17703,
|
|
884
|
+
pattern_start: 17674,
|
|
885
|
+
pattern_end: 17679
|
|
886
|
+
}
|
|
887
|
+
)
|
|
888
|
+
}
|
|
889
|
+
return $should.equal($semver.compare(a, b), new $order.Eq());
|
|
890
|
+
}
|
|
891
|
+
|
|
892
|
+
export function semver_compare_prerelease_lt_release_test() {
|
|
893
|
+
let $ = $semver.parse("1.0.0-alpha");
|
|
894
|
+
let a;
|
|
895
|
+
if ($ instanceof Ok) {
|
|
896
|
+
a = $[0];
|
|
897
|
+
} else {
|
|
898
|
+
throw makeError(
|
|
899
|
+
"let_assert",
|
|
900
|
+
FILEPATH,
|
|
901
|
+
"parser_test",
|
|
902
|
+
573,
|
|
903
|
+
"semver_compare_prerelease_lt_release_test",
|
|
904
|
+
"Pattern match failed, no pattern matched the value.",
|
|
905
|
+
{
|
|
906
|
+
value: $,
|
|
907
|
+
start: 17809,
|
|
908
|
+
end: 17855,
|
|
909
|
+
pattern_start: 17820,
|
|
910
|
+
pattern_end: 17825
|
|
911
|
+
}
|
|
912
|
+
)
|
|
913
|
+
}
|
|
914
|
+
let $1 = $semver.parse("1.0.0");
|
|
915
|
+
let b;
|
|
916
|
+
if ($1 instanceof Ok) {
|
|
917
|
+
b = $1[0];
|
|
918
|
+
} else {
|
|
919
|
+
throw makeError(
|
|
920
|
+
"let_assert",
|
|
921
|
+
FILEPATH,
|
|
922
|
+
"parser_test",
|
|
923
|
+
574,
|
|
924
|
+
"semver_compare_prerelease_lt_release_test",
|
|
925
|
+
"Pattern match failed, no pattern matched the value.",
|
|
926
|
+
{
|
|
927
|
+
value: $1,
|
|
928
|
+
start: 17858,
|
|
929
|
+
end: 17898,
|
|
930
|
+
pattern_start: 17869,
|
|
931
|
+
pattern_end: 17874
|
|
932
|
+
}
|
|
933
|
+
)
|
|
934
|
+
}
|
|
935
|
+
return $should.equal($semver.compare(a, b), new $order.Lt());
|
|
936
|
+
}
|
|
937
|
+
|
|
938
|
+
export function semver_major_accessor_test() {
|
|
939
|
+
let $ = $semver.parse("3.2.1");
|
|
940
|
+
let v;
|
|
941
|
+
if ($ instanceof Ok) {
|
|
942
|
+
v = $[0];
|
|
943
|
+
} else {
|
|
944
|
+
throw makeError(
|
|
945
|
+
"let_assert",
|
|
946
|
+
FILEPATH,
|
|
947
|
+
"parser_test",
|
|
948
|
+
579,
|
|
949
|
+
"semver_major_accessor_test",
|
|
950
|
+
"Pattern match failed, no pattern matched the value.",
|
|
951
|
+
{
|
|
952
|
+
value: $,
|
|
953
|
+
start: 17989,
|
|
954
|
+
end: 18029,
|
|
955
|
+
pattern_start: 18000,
|
|
956
|
+
pattern_end: 18005
|
|
957
|
+
}
|
|
958
|
+
)
|
|
959
|
+
}
|
|
960
|
+
return $should.equal($semver.major(v), 3);
|
|
961
|
+
}
|
|
962
|
+
|
|
963
|
+
export function semver_minor_accessor_test() {
|
|
964
|
+
let $ = $semver.parse("3.2.1");
|
|
965
|
+
let v;
|
|
966
|
+
if ($ instanceof Ok) {
|
|
967
|
+
v = $[0];
|
|
968
|
+
} else {
|
|
969
|
+
throw makeError(
|
|
970
|
+
"let_assert",
|
|
971
|
+
FILEPATH,
|
|
972
|
+
"parser_test",
|
|
973
|
+
584,
|
|
974
|
+
"semver_minor_accessor_test",
|
|
975
|
+
"Pattern match failed, no pattern matched the value.",
|
|
976
|
+
{
|
|
977
|
+
value: $,
|
|
978
|
+
start: 18108,
|
|
979
|
+
end: 18148,
|
|
980
|
+
pattern_start: 18119,
|
|
981
|
+
pattern_end: 18124
|
|
982
|
+
}
|
|
983
|
+
)
|
|
984
|
+
}
|
|
985
|
+
return $should.equal($semver.minor(v), 2);
|
|
986
|
+
}
|
|
987
|
+
|
|
988
|
+
export function semver_patch_accessor_test() {
|
|
989
|
+
let $ = $semver.parse("3.2.1");
|
|
990
|
+
let v;
|
|
991
|
+
if ($ instanceof Ok) {
|
|
992
|
+
v = $[0];
|
|
993
|
+
} else {
|
|
994
|
+
throw makeError(
|
|
995
|
+
"let_assert",
|
|
996
|
+
FILEPATH,
|
|
997
|
+
"parser_test",
|
|
998
|
+
589,
|
|
999
|
+
"semver_patch_accessor_test",
|
|
1000
|
+
"Pattern match failed, no pattern matched the value.",
|
|
1001
|
+
{
|
|
1002
|
+
value: $,
|
|
1003
|
+
start: 18227,
|
|
1004
|
+
end: 18267,
|
|
1005
|
+
pattern_start: 18238,
|
|
1006
|
+
pattern_end: 18243
|
|
1007
|
+
}
|
|
1008
|
+
)
|
|
1009
|
+
}
|
|
1010
|
+
return $should.equal($semver.patch(v), 1);
|
|
1011
|
+
}
|
|
1012
|
+
|
|
1013
|
+
export function semver_negative_version_rejected_test() {
|
|
1014
|
+
return $should.be_error($semver.parse("-1.0.0"));
|
|
1015
|
+
}
|
|
1016
|
+
|
|
1017
|
+
export function error_to_string_registry_error_test() {
|
|
1018
|
+
let err = new $error.RegistryError("connection failed");
|
|
1019
|
+
let s = $error.to_string(err);
|
|
1020
|
+
$should.be_true($string.contains(s, "Registry"));
|
|
1021
|
+
return $should.be_true($string.contains(s, "connection failed"));
|
|
1022
|
+
}
|
|
1023
|
+
|
|
1024
|
+
export function error_to_string_import_error_test() {
|
|
1025
|
+
let err = new $error.ImportError("SKILL.md", "missing frontmatter");
|
|
1026
|
+
let s = $error.to_string(err);
|
|
1027
|
+
$should.be_true($string.contains(s, "SKILL.md"));
|
|
1028
|
+
return $should.be_true($string.contains(s, "missing frontmatter"));
|
|
1029
|
+
}
|
|
1030
|
+
|
|
1031
|
+
function read_fixture(path) {
|
|
1032
|
+
let full_path = "test/fixtures/" + path;
|
|
1033
|
+
let $ = $simplifile.read(full_path);
|
|
1034
|
+
let content;
|
|
1035
|
+
if ($ instanceof Ok) {
|
|
1036
|
+
content = $[0];
|
|
1037
|
+
} else {
|
|
1038
|
+
throw makeError(
|
|
1039
|
+
"let_assert",
|
|
1040
|
+
FILEPATH,
|
|
1041
|
+
"parser_test",
|
|
1042
|
+
621,
|
|
1043
|
+
"read_fixture",
|
|
1044
|
+
"Pattern match failed, no pattern matched the value.",
|
|
1045
|
+
{
|
|
1046
|
+
value: $,
|
|
1047
|
+
start: 19374,
|
|
1048
|
+
end: 19425,
|
|
1049
|
+
pattern_start: 19385,
|
|
1050
|
+
pattern_end: 19396
|
|
1051
|
+
}
|
|
1052
|
+
)
|
|
1053
|
+
}
|
|
1054
|
+
return content;
|
|
1055
|
+
}
|
|
1056
|
+
|
|
1057
|
+
export function parse_valid_skill_yaml_test() {
|
|
1058
|
+
let content = read_fixture("valid-skill/skill.yaml");
|
|
1059
|
+
let result = $parser.parse_skill_yaml(content);
|
|
1060
|
+
let skill;
|
|
1061
|
+
if (result instanceof Ok) {
|
|
1062
|
+
skill = result[0];
|
|
1063
|
+
} else {
|
|
1064
|
+
throw makeError(
|
|
1065
|
+
"let_assert",
|
|
1066
|
+
FILEPATH,
|
|
1067
|
+
"parser_test",
|
|
1068
|
+
19,
|
|
1069
|
+
"parse_valid_skill_yaml_test",
|
|
1070
|
+
"Pattern match failed, no pattern matched the value.",
|
|
1071
|
+
{
|
|
1072
|
+
value: result,
|
|
1073
|
+
start: 562,
|
|
1074
|
+
end: 591,
|
|
1075
|
+
pattern_start: 573,
|
|
1076
|
+
pattern_end: 582
|
|
1077
|
+
}
|
|
1078
|
+
)
|
|
1079
|
+
}
|
|
1080
|
+
$should.equal(skill.name, "test-skill");
|
|
1081
|
+
$should.equal(skill.description, "A test skill for validation");
|
|
1082
|
+
$should.equal($semver.to_string(skill.version), "1.2.3");
|
|
1083
|
+
$should.equal(skill.license, new Some("MIT"));
|
|
1084
|
+
$should.equal(skill.homepage, new Some("https://example.com/test-skill"));
|
|
1085
|
+
return $should.equal(
|
|
1086
|
+
skill.repository,
|
|
1087
|
+
new Some("https://github.com/example/test-skill"),
|
|
1088
|
+
);
|
|
1089
|
+
}
|
|
1090
|
+
|
|
1091
|
+
export function parse_valid_skill_yaml_metadata_test() {
|
|
1092
|
+
let content = read_fixture("valid-skill/skill.yaml");
|
|
1093
|
+
let $ = $parser.parse_skill_yaml(content);
|
|
1094
|
+
let skill;
|
|
1095
|
+
if ($ instanceof Ok) {
|
|
1096
|
+
skill = $[0];
|
|
1097
|
+
} else {
|
|
1098
|
+
throw makeError(
|
|
1099
|
+
"let_assert",
|
|
1100
|
+
FILEPATH,
|
|
1101
|
+
"parser_test",
|
|
1102
|
+
30,
|
|
1103
|
+
"parse_valid_skill_yaml_metadata_test",
|
|
1104
|
+
"Pattern match failed, no pattern matched the value.",
|
|
1105
|
+
{
|
|
1106
|
+
value: $,
|
|
1107
|
+
start: 1057,
|
|
1108
|
+
end: 1112,
|
|
1109
|
+
pattern_start: 1068,
|
|
1110
|
+
pattern_end: 1077
|
|
1111
|
+
}
|
|
1112
|
+
)
|
|
1113
|
+
}
|
|
1114
|
+
let $1 = skill.metadata;
|
|
1115
|
+
let metadata;
|
|
1116
|
+
if ($1 instanceof Some) {
|
|
1117
|
+
metadata = $1[0];
|
|
1118
|
+
} else {
|
|
1119
|
+
throw makeError(
|
|
1120
|
+
"let_assert",
|
|
1121
|
+
FILEPATH,
|
|
1122
|
+
"parser_test",
|
|
1123
|
+
31,
|
|
1124
|
+
"parse_valid_skill_yaml_metadata_test",
|
|
1125
|
+
"Pattern match failed, no pattern matched the value.",
|
|
1126
|
+
{
|
|
1127
|
+
value: $1,
|
|
1128
|
+
start: 1115,
|
|
1129
|
+
end: 1157,
|
|
1130
|
+
pattern_start: 1126,
|
|
1131
|
+
pattern_end: 1140
|
|
1132
|
+
}
|
|
1133
|
+
)
|
|
1134
|
+
}
|
|
1135
|
+
$should.equal(metadata.author, new Some("Test Author"));
|
|
1136
|
+
$should.equal(metadata.author_email, new Some("test@example.com"));
|
|
1137
|
+
return $should.equal(metadata.tags, toList(["test", "example", "demo"]));
|
|
1138
|
+
}
|
|
1139
|
+
|
|
1140
|
+
export function parse_valid_skill_yaml_config_test() {
|
|
1141
|
+
let content = read_fixture("valid-skill/skill.yaml");
|
|
1142
|
+
let $ = $parser.parse_skill_yaml(content);
|
|
1143
|
+
let skill;
|
|
1144
|
+
if ($ instanceof Ok) {
|
|
1145
|
+
skill = $[0];
|
|
1146
|
+
} else {
|
|
1147
|
+
throw makeError(
|
|
1148
|
+
"let_assert",
|
|
1149
|
+
FILEPATH,
|
|
1150
|
+
"parser_test",
|
|
1151
|
+
56,
|
|
1152
|
+
"parse_valid_skill_yaml_config_test",
|
|
1153
|
+
"Pattern match failed, no pattern matched the value.",
|
|
1154
|
+
{
|
|
1155
|
+
value: $,
|
|
1156
|
+
start: 1892,
|
|
1157
|
+
end: 1947,
|
|
1158
|
+
pattern_start: 1903,
|
|
1159
|
+
pattern_end: 1912
|
|
1160
|
+
}
|
|
1161
|
+
)
|
|
1162
|
+
}
|
|
1163
|
+
return $should.equal(
|
|
1164
|
+
skill.config,
|
|
1165
|
+
toList([
|
|
1166
|
+
new $types.ConfigField(
|
|
1167
|
+
"api_key",
|
|
1168
|
+
"API key for authentication",
|
|
1169
|
+
new $types.Required(),
|
|
1170
|
+
true,
|
|
1171
|
+
),
|
|
1172
|
+
new $types.ConfigField(
|
|
1173
|
+
"timeout",
|
|
1174
|
+
"Request timeout in seconds",
|
|
1175
|
+
new $types.OptionalWithDefault("30"),
|
|
1176
|
+
false,
|
|
1177
|
+
),
|
|
1178
|
+
]),
|
|
1179
|
+
);
|
|
1180
|
+
}
|
|
1181
|
+
|
|
1182
|
+
export function parse_minimal_skill_yaml_test() {
|
|
1183
|
+
let content = read_fixture("minimal-skill/skill.yaml");
|
|
1184
|
+
let $ = $parser.parse_skill_yaml(content);
|
|
1185
|
+
let skill;
|
|
1186
|
+
if ($ instanceof Ok) {
|
|
1187
|
+
skill = $[0];
|
|
1188
|
+
} else {
|
|
1189
|
+
throw makeError(
|
|
1190
|
+
"let_assert",
|
|
1191
|
+
FILEPATH,
|
|
1192
|
+
"parser_test",
|
|
1193
|
+
75,
|
|
1194
|
+
"parse_minimal_skill_yaml_test",
|
|
1195
|
+
"Pattern match failed, no pattern matched the value.",
|
|
1196
|
+
{
|
|
1197
|
+
value: $,
|
|
1198
|
+
start: 2419,
|
|
1199
|
+
end: 2474,
|
|
1200
|
+
pattern_start: 2430,
|
|
1201
|
+
pattern_end: 2439
|
|
1202
|
+
}
|
|
1203
|
+
)
|
|
1204
|
+
}
|
|
1205
|
+
$should.equal(skill.name, "minimal");
|
|
1206
|
+
$should.equal(skill.description, "A minimal skill");
|
|
1207
|
+
$should.equal($semver.to_string(skill.version), "0.1.0");
|
|
1208
|
+
$should.equal(skill.license, new None());
|
|
1209
|
+
$should.equal(skill.homepage, new None());
|
|
1210
|
+
$should.equal(skill.repository, new None());
|
|
1211
|
+
$should.equal(skill.metadata, new None());
|
|
1212
|
+
$should.equal(skill.dependencies, toList([]));
|
|
1213
|
+
return $should.equal(skill.config, toList([]));
|
|
1214
|
+
}
|
|
1215
|
+
|
|
1216
|
+
export function parse_invalid_yaml_fails_test() {
|
|
1217
|
+
let content = read_fixture("invalid-yaml/skill.yaml");
|
|
1218
|
+
let result = $parser.parse_skill_yaml(content);
|
|
1219
|
+
$should.be_error(result);
|
|
1220
|
+
let file;
|
|
1221
|
+
if (result instanceof Error) {
|
|
1222
|
+
let $ = result[0];
|
|
1223
|
+
if ($ instanceof $error.ParseError) {
|
|
1224
|
+
file = $.file;
|
|
1225
|
+
} else {
|
|
1226
|
+
throw makeError(
|
|
1227
|
+
"let_assert",
|
|
1228
|
+
FILEPATH,
|
|
1229
|
+
"parser_test",
|
|
1230
|
+
91,
|
|
1231
|
+
"parse_invalid_yaml_fails_test",
|
|
1232
|
+
"Pattern match failed, no pattern matched the value.",
|
|
1233
|
+
{
|
|
1234
|
+
value: result,
|
|
1235
|
+
start: 3020,
|
|
1236
|
+
end: 3075,
|
|
1237
|
+
pattern_start: 3031,
|
|
1238
|
+
pattern_end: 3066
|
|
1239
|
+
}
|
|
1240
|
+
)
|
|
1241
|
+
}
|
|
1242
|
+
} else {
|
|
1243
|
+
throw makeError(
|
|
1244
|
+
"let_assert",
|
|
1245
|
+
FILEPATH,
|
|
1246
|
+
"parser_test",
|
|
1247
|
+
91,
|
|
1248
|
+
"parse_invalid_yaml_fails_test",
|
|
1249
|
+
"Pattern match failed, no pattern matched the value.",
|
|
1250
|
+
{
|
|
1251
|
+
value: result,
|
|
1252
|
+
start: 3020,
|
|
1253
|
+
end: 3075,
|
|
1254
|
+
pattern_start: 3031,
|
|
1255
|
+
pattern_end: 3066
|
|
1256
|
+
}
|
|
1257
|
+
)
|
|
1258
|
+
}
|
|
1259
|
+
return $should.equal(file, "skill.yaml");
|
|
1260
|
+
}
|
|
1261
|
+
|
|
1262
|
+
export function parse_missing_name_fails_test() {
|
|
1263
|
+
let content = read_fixture("missing-name/skill.yaml");
|
|
1264
|
+
let result = $parser.parse_skill_yaml(content);
|
|
1265
|
+
$should.be_error(result);
|
|
1266
|
+
let field;
|
|
1267
|
+
let msg;
|
|
1268
|
+
if (result instanceof Error) {
|
|
1269
|
+
let $ = result[0];
|
|
1270
|
+
if ($ instanceof $error.ValidationError) {
|
|
1271
|
+
field = $.field;
|
|
1272
|
+
msg = $.message;
|
|
1273
|
+
} else {
|
|
1274
|
+
throw makeError(
|
|
1275
|
+
"let_assert",
|
|
1276
|
+
FILEPATH,
|
|
1277
|
+
"parser_test",
|
|
1278
|
+
99,
|
|
1279
|
+
"parse_missing_name_fails_test",
|
|
1280
|
+
"Pattern match failed, no pattern matched the value.",
|
|
1281
|
+
{
|
|
1282
|
+
value: result,
|
|
1283
|
+
start: 3287,
|
|
1284
|
+
end: 3347,
|
|
1285
|
+
pattern_start: 3298,
|
|
1286
|
+
pattern_end: 3338
|
|
1287
|
+
}
|
|
1288
|
+
)
|
|
1289
|
+
}
|
|
1290
|
+
} else {
|
|
1291
|
+
throw makeError(
|
|
1292
|
+
"let_assert",
|
|
1293
|
+
FILEPATH,
|
|
1294
|
+
"parser_test",
|
|
1295
|
+
99,
|
|
1296
|
+
"parse_missing_name_fails_test",
|
|
1297
|
+
"Pattern match failed, no pattern matched the value.",
|
|
1298
|
+
{
|
|
1299
|
+
value: result,
|
|
1300
|
+
start: 3287,
|
|
1301
|
+
end: 3347,
|
|
1302
|
+
pattern_start: 3298,
|
|
1303
|
+
pattern_end: 3338
|
|
1304
|
+
}
|
|
1305
|
+
)
|
|
1306
|
+
}
|
|
1307
|
+
$should.equal(field, "name");
|
|
1308
|
+
return $should.be_true($string.contains(msg, "name"));
|
|
1309
|
+
}
|
|
1310
|
+
|
|
1311
|
+
export function parse_missing_description_fails_test() {
|
|
1312
|
+
let content = read_fixture("missing-description/skill.yaml");
|
|
1313
|
+
let result = $parser.parse_skill_yaml(content);
|
|
1314
|
+
$should.be_error(result);
|
|
1315
|
+
let field;
|
|
1316
|
+
let msg;
|
|
1317
|
+
if (result instanceof Error) {
|
|
1318
|
+
let $ = result[0];
|
|
1319
|
+
if ($ instanceof $error.ValidationError) {
|
|
1320
|
+
field = $.field;
|
|
1321
|
+
msg = $.message;
|
|
1322
|
+
} else {
|
|
1323
|
+
throw makeError(
|
|
1324
|
+
"let_assert",
|
|
1325
|
+
FILEPATH,
|
|
1326
|
+
"parser_test",
|
|
1327
|
+
108,
|
|
1328
|
+
"parse_missing_description_fails_test",
|
|
1329
|
+
"Pattern match failed, no pattern matched the value.",
|
|
1330
|
+
{
|
|
1331
|
+
value: result,
|
|
1332
|
+
start: 3615,
|
|
1333
|
+
end: 3675,
|
|
1334
|
+
pattern_start: 3626,
|
|
1335
|
+
pattern_end: 3666
|
|
1336
|
+
}
|
|
1337
|
+
)
|
|
1338
|
+
}
|
|
1339
|
+
} else {
|
|
1340
|
+
throw makeError(
|
|
1341
|
+
"let_assert",
|
|
1342
|
+
FILEPATH,
|
|
1343
|
+
"parser_test",
|
|
1344
|
+
108,
|
|
1345
|
+
"parse_missing_description_fails_test",
|
|
1346
|
+
"Pattern match failed, no pattern matched the value.",
|
|
1347
|
+
{
|
|
1348
|
+
value: result,
|
|
1349
|
+
start: 3615,
|
|
1350
|
+
end: 3675,
|
|
1351
|
+
pattern_start: 3626,
|
|
1352
|
+
pattern_end: 3666
|
|
1353
|
+
}
|
|
1354
|
+
)
|
|
1355
|
+
}
|
|
1356
|
+
$should.equal(field, "description");
|
|
1357
|
+
return $should.be_true($string.contains(msg, "description"));
|
|
1358
|
+
}
|
|
1359
|
+
|
|
1360
|
+
export function parse_missing_version_fails_test() {
|
|
1361
|
+
let content = read_fixture("missing-version/skill.yaml");
|
|
1362
|
+
let result = $parser.parse_skill_yaml(content);
|
|
1363
|
+
$should.be_error(result);
|
|
1364
|
+
let field;
|
|
1365
|
+
let msg;
|
|
1366
|
+
if (result instanceof Error) {
|
|
1367
|
+
let $ = result[0];
|
|
1368
|
+
if ($ instanceof $error.ValidationError) {
|
|
1369
|
+
field = $.field;
|
|
1370
|
+
msg = $.message;
|
|
1371
|
+
} else {
|
|
1372
|
+
throw makeError(
|
|
1373
|
+
"let_assert",
|
|
1374
|
+
FILEPATH,
|
|
1375
|
+
"parser_test",
|
|
1376
|
+
117,
|
|
1377
|
+
"parse_missing_version_fails_test",
|
|
1378
|
+
"Pattern match failed, no pattern matched the value.",
|
|
1379
|
+
{
|
|
1380
|
+
value: result,
|
|
1381
|
+
start: 3949,
|
|
1382
|
+
end: 4009,
|
|
1383
|
+
pattern_start: 3960,
|
|
1384
|
+
pattern_end: 4000
|
|
1385
|
+
}
|
|
1386
|
+
)
|
|
1387
|
+
}
|
|
1388
|
+
} else {
|
|
1389
|
+
throw makeError(
|
|
1390
|
+
"let_assert",
|
|
1391
|
+
FILEPATH,
|
|
1392
|
+
"parser_test",
|
|
1393
|
+
117,
|
|
1394
|
+
"parse_missing_version_fails_test",
|
|
1395
|
+
"Pattern match failed, no pattern matched the value.",
|
|
1396
|
+
{
|
|
1397
|
+
value: result,
|
|
1398
|
+
start: 3949,
|
|
1399
|
+
end: 4009,
|
|
1400
|
+
pattern_start: 3960,
|
|
1401
|
+
pattern_end: 4000
|
|
1402
|
+
}
|
|
1403
|
+
)
|
|
1404
|
+
}
|
|
1405
|
+
$should.equal(field, "version");
|
|
1406
|
+
return $should.be_true($string.contains(msg, "version"));
|
|
1407
|
+
}
|
|
1408
|
+
|
|
1409
|
+
export function invalid_semver_test() {
|
|
1410
|
+
let content = read_fixture("bad-version/skill.yaml");
|
|
1411
|
+
let result = $parser.parse_skill_yaml(content);
|
|
1412
|
+
$should.be_error(result);
|
|
1413
|
+
let field;
|
|
1414
|
+
if (result instanceof Error) {
|
|
1415
|
+
let $ = result[0];
|
|
1416
|
+
if ($ instanceof $error.ValidationError) {
|
|
1417
|
+
field = $.field;
|
|
1418
|
+
} else {
|
|
1419
|
+
throw makeError(
|
|
1420
|
+
"let_assert",
|
|
1421
|
+
FILEPATH,
|
|
1422
|
+
"parser_test",
|
|
1423
|
+
162,
|
|
1424
|
+
"invalid_semver_test",
|
|
1425
|
+
"Pattern match failed, no pattern matched the value.",
|
|
1426
|
+
{
|
|
1427
|
+
value: result,
|
|
1428
|
+
start: 5370,
|
|
1429
|
+
end: 5431,
|
|
1430
|
+
pattern_start: 5381,
|
|
1431
|
+
pattern_end: 5422
|
|
1432
|
+
}
|
|
1433
|
+
)
|
|
1434
|
+
}
|
|
1435
|
+
} else {
|
|
1436
|
+
throw makeError(
|
|
1437
|
+
"let_assert",
|
|
1438
|
+
FILEPATH,
|
|
1439
|
+
"parser_test",
|
|
1440
|
+
162,
|
|
1441
|
+
"invalid_semver_test",
|
|
1442
|
+
"Pattern match failed, no pattern matched the value.",
|
|
1443
|
+
{
|
|
1444
|
+
value: result,
|
|
1445
|
+
start: 5370,
|
|
1446
|
+
end: 5431,
|
|
1447
|
+
pattern_start: 5381,
|
|
1448
|
+
pattern_end: 5422
|
|
1449
|
+
}
|
|
1450
|
+
)
|
|
1451
|
+
}
|
|
1452
|
+
return $should.equal(field, "version");
|
|
1453
|
+
}
|
|
1454
|
+
|
|
1455
|
+
export function parse_openclaw_metadata_test() {
|
|
1456
|
+
let content = read_fixture("valid-skill/providers/openclaw/metadata.yaml");
|
|
1457
|
+
let result = $parser.parse_metadata_yaml(content, new $types.OpenClaw());
|
|
1458
|
+
return $should.be_ok(result);
|
|
1459
|
+
}
|
|
1460
|
+
|
|
1461
|
+
export function parse_claude_code_metadata_test() {
|
|
1462
|
+
let content = read_fixture("valid-skill/providers/claude-code/metadata.yaml");
|
|
1463
|
+
let result = $parser.parse_metadata_yaml(content, new $types.ClaudeCode());
|
|
1464
|
+
return $should.be_ok(result);
|
|
1465
|
+
}
|
|
1466
|
+
|
|
1467
|
+
export function parse_codex_metadata_test() {
|
|
1468
|
+
let content = read_fixture("valid-skill/providers/codex/metadata.yaml");
|
|
1469
|
+
let result = $parser.parse_metadata_yaml(content, new $types.Codex());
|
|
1470
|
+
return $should.be_ok(result);
|
|
1471
|
+
}
|
|
1472
|
+
|
|
1473
|
+
export function has_frontmatter_detects_yaml_frontmatter_test() {
|
|
1474
|
+
let content = read_fixture("frontmatter-instructions/INSTRUCTIONS.md");
|
|
1475
|
+
return $should.be_true($parser.has_frontmatter(content));
|
|
1476
|
+
}
|
|
1477
|
+
|
|
1478
|
+
export function has_frontmatter_false_for_normal_markdown_test() {
|
|
1479
|
+
let content = read_fixture("valid-skill/INSTRUCTIONS.md");
|
|
1480
|
+
return $should.be_false($parser.has_frontmatter(content));
|
|
1481
|
+
}
|
|
1482
|
+
|
|
1483
|
+
function assert_parse_vc(input) {
|
|
1484
|
+
let $ = $version_constraint.parse(input);
|
|
1485
|
+
let vc;
|
|
1486
|
+
if ($ instanceof Ok) {
|
|
1487
|
+
vc = $[0];
|
|
1488
|
+
} else {
|
|
1489
|
+
throw makeError(
|
|
1490
|
+
"let_assert",
|
|
1491
|
+
FILEPATH,
|
|
1492
|
+
"parser_test",
|
|
1493
|
+
626,
|
|
1494
|
+
"assert_parse_vc",
|
|
1495
|
+
"Pattern match failed, no pattern matched the value.",
|
|
1496
|
+
{
|
|
1497
|
+
value: $,
|
|
1498
|
+
start: 19517,
|
|
1499
|
+
end: 19568,
|
|
1500
|
+
pattern_start: 19528,
|
|
1501
|
+
pattern_end: 19534
|
|
1502
|
+
}
|
|
1503
|
+
)
|
|
1504
|
+
}
|
|
1505
|
+
return vc;
|
|
1506
|
+
}
|
|
1507
|
+
|
|
1508
|
+
export function parse_valid_skill_yaml_dependencies_test() {
|
|
1509
|
+
let content = read_fixture("valid-skill/skill.yaml");
|
|
1510
|
+
let $ = $parser.parse_skill_yaml(content);
|
|
1511
|
+
let skill;
|
|
1512
|
+
if ($ instanceof Ok) {
|
|
1513
|
+
skill = $[0];
|
|
1514
|
+
} else {
|
|
1515
|
+
throw makeError(
|
|
1516
|
+
"let_assert",
|
|
1517
|
+
FILEPATH,
|
|
1518
|
+
"parser_test",
|
|
1519
|
+
39,
|
|
1520
|
+
"parse_valid_skill_yaml_dependencies_test",
|
|
1521
|
+
"Pattern match failed, no pattern matched the value.",
|
|
1522
|
+
{
|
|
1523
|
+
value: $,
|
|
1524
|
+
start: 1446,
|
|
1525
|
+
end: 1501,
|
|
1526
|
+
pattern_start: 1457,
|
|
1527
|
+
pattern_end: 1466
|
|
1528
|
+
}
|
|
1529
|
+
)
|
|
1530
|
+
}
|
|
1531
|
+
return $should.equal(
|
|
1532
|
+
skill.dependencies,
|
|
1533
|
+
toList([
|
|
1534
|
+
new $types.Dependency("helper-skill", assert_parse_vc("^1.0.0"), false),
|
|
1535
|
+
new $types.Dependency("extra-skill", assert_parse_vc("~2.1.0"), true),
|
|
1536
|
+
]),
|
|
1537
|
+
);
|
|
1538
|
+
}
|
|
1539
|
+
|
|
1540
|
+
export function dependency_with_name_and_version_test() {
|
|
1541
|
+
let yaml = "name: dep-test\ndescription: Test\nversion: 1.0.0\ndependencies:\n - name: my-dep\n version: ^1.0.0\n - name: optional-dep\n version: ~2.0.0\n optional: true\n";
|
|
1542
|
+
let $ = $parser.parse_skill_yaml(yaml);
|
|
1543
|
+
let skill;
|
|
1544
|
+
if ($ instanceof Ok) {
|
|
1545
|
+
skill = $[0];
|
|
1546
|
+
} else {
|
|
1547
|
+
throw makeError(
|
|
1548
|
+
"let_assert",
|
|
1549
|
+
FILEPATH,
|
|
1550
|
+
"parser_test",
|
|
1551
|
+
250,
|
|
1552
|
+
"dependency_with_name_and_version_test",
|
|
1553
|
+
"Pattern match failed, no pattern matched the value.",
|
|
1554
|
+
{
|
|
1555
|
+
value: $,
|
|
1556
|
+
start: 8372,
|
|
1557
|
+
end: 8424,
|
|
1558
|
+
pattern_start: 8383,
|
|
1559
|
+
pattern_end: 8392
|
|
1560
|
+
}
|
|
1561
|
+
)
|
|
1562
|
+
}
|
|
1563
|
+
return $should.equal(
|
|
1564
|
+
skill.dependencies,
|
|
1565
|
+
toList([
|
|
1566
|
+
new $types.Dependency("my-dep", assert_parse_vc("^1.0.0"), false),
|
|
1567
|
+
new $types.Dependency("optional-dep", assert_parse_vc("~2.0.0"), true),
|
|
1568
|
+
]),
|
|
1569
|
+
);
|
|
1570
|
+
}
|
|
1571
|
+
|
|
1572
|
+
export function dependency_without_name_skipped_test() {
|
|
1573
|
+
let yaml = "name: dep-test\ndescription: Test\nversion: 1.0.0\ndependencies:\n - version: ^1.0.0\n - name: valid-dep\n version: ~2.0.0\n";
|
|
1574
|
+
let $ = $parser.parse_skill_yaml(yaml);
|
|
1575
|
+
let skill;
|
|
1576
|
+
if ($ instanceof Ok) {
|
|
1577
|
+
skill = $[0];
|
|
1578
|
+
} else {
|
|
1579
|
+
throw makeError(
|
|
1580
|
+
"let_assert",
|
|
1581
|
+
FILEPATH,
|
|
1582
|
+
"parser_test",
|
|
1583
|
+
297,
|
|
1584
|
+
"dependency_without_name_skipped_test",
|
|
1585
|
+
"Pattern match failed, no pattern matched the value.",
|
|
1586
|
+
{
|
|
1587
|
+
value: $,
|
|
1588
|
+
start: 9741,
|
|
1589
|
+
end: 9793,
|
|
1590
|
+
pattern_start: 9752,
|
|
1591
|
+
pattern_end: 9761
|
|
1592
|
+
}
|
|
1593
|
+
)
|
|
1594
|
+
}
|
|
1595
|
+
return $should.equal(
|
|
1596
|
+
skill.dependencies,
|
|
1597
|
+
toList([
|
|
1598
|
+
new $types.Dependency("valid-dep", assert_parse_vc("~2.0.0"), false),
|
|
1599
|
+
]),
|
|
1600
|
+
);
|
|
1601
|
+
}
|