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,225 @@
|
|
|
1
|
+
import {
|
|
2
|
+
toList,
|
|
3
|
+
Empty as $Empty,
|
|
4
|
+
prepend as listPrepend,
|
|
5
|
+
CustomType as $CustomType,
|
|
6
|
+
} from "../gleam.mjs";
|
|
7
|
+
import * as $bit_array from "../gleam/bit_array.mjs";
|
|
8
|
+
import * as $list from "../gleam/list.mjs";
|
|
9
|
+
import * as $string_tree from "../gleam/string_tree.mjs";
|
|
10
|
+
|
|
11
|
+
class Bytes extends $CustomType {
|
|
12
|
+
constructor($0) {
|
|
13
|
+
super();
|
|
14
|
+
this[0] = $0;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
class Text extends $CustomType {
|
|
19
|
+
constructor($0) {
|
|
20
|
+
super();
|
|
21
|
+
this[0] = $0;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
class Many extends $CustomType {
|
|
26
|
+
constructor($0) {
|
|
27
|
+
super();
|
|
28
|
+
this[0] = $0;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Appends a bytes tree onto the end of another.
|
|
34
|
+
*
|
|
35
|
+
* Runs in constant time.
|
|
36
|
+
*/
|
|
37
|
+
export function append_tree(first, second) {
|
|
38
|
+
if (second instanceof Bytes) {
|
|
39
|
+
return new Many(toList([first, second]));
|
|
40
|
+
} else if (second instanceof Text) {
|
|
41
|
+
return new Many(toList([first, second]));
|
|
42
|
+
} else {
|
|
43
|
+
let trees = second[0];
|
|
44
|
+
return new Many(listPrepend(first, trees));
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Prepends a bytes tree onto the start of another.
|
|
50
|
+
*
|
|
51
|
+
* Runs in constant time.
|
|
52
|
+
*/
|
|
53
|
+
export function prepend_tree(second, first) {
|
|
54
|
+
return append_tree(first, second);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Joins a list of bytes trees into a single one.
|
|
59
|
+
*
|
|
60
|
+
* Runs in constant time.
|
|
61
|
+
*/
|
|
62
|
+
export function concat(trees) {
|
|
63
|
+
return new Many(trees);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Create an empty `BytesTree`. Useful as the start of a pipe chaining many
|
|
68
|
+
* trees together.
|
|
69
|
+
*/
|
|
70
|
+
export function new$() {
|
|
71
|
+
return concat(toList([]));
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* Creates a new bytes tree from a string.
|
|
76
|
+
*
|
|
77
|
+
* Runs in constant time when running on Erlang.
|
|
78
|
+
* Runs in linear time otherwise.
|
|
79
|
+
*/
|
|
80
|
+
export function from_string(string) {
|
|
81
|
+
return new Text($string_tree.from_string(string));
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* Prepends a string onto the start of a bytes tree.
|
|
86
|
+
*
|
|
87
|
+
* Runs in constant time when running on Erlang.
|
|
88
|
+
* Runs in linear time with the length of the string otherwise.
|
|
89
|
+
*/
|
|
90
|
+
export function prepend_string(second, first) {
|
|
91
|
+
return append_tree(from_string(first), second);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* Appends a string onto the end of a bytes tree.
|
|
96
|
+
*
|
|
97
|
+
* Runs in constant time when running on Erlang.
|
|
98
|
+
* Runs in linear time with the length of the string otherwise.
|
|
99
|
+
*/
|
|
100
|
+
export function append_string(first, second) {
|
|
101
|
+
return append_tree(first, from_string(second));
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* Creates a new bytes tree from a string tree.
|
|
106
|
+
*
|
|
107
|
+
* Runs in constant time when running on Erlang.
|
|
108
|
+
* Runs in linear time otherwise.
|
|
109
|
+
*/
|
|
110
|
+
export function from_string_tree(tree) {
|
|
111
|
+
return new Text(tree);
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
function wrap_list(bits) {
|
|
115
|
+
return new Bytes(bits);
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
/**
|
|
119
|
+
* Creates a new bytes tree from a bit array.
|
|
120
|
+
*
|
|
121
|
+
* Runs in constant time.
|
|
122
|
+
*/
|
|
123
|
+
export function from_bit_array(bits) {
|
|
124
|
+
let _pipe = bits;
|
|
125
|
+
let _pipe$1 = $bit_array.pad_to_bytes(_pipe);
|
|
126
|
+
return wrap_list(_pipe$1);
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
/**
|
|
130
|
+
* Prepends a bit array to the start of a bytes tree.
|
|
131
|
+
*
|
|
132
|
+
* Runs in constant time.
|
|
133
|
+
*/
|
|
134
|
+
export function prepend(second, first) {
|
|
135
|
+
return append_tree(from_bit_array(first), second);
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
/**
|
|
139
|
+
* Appends a bit array to the end of a bytes tree.
|
|
140
|
+
*
|
|
141
|
+
* Runs in constant time.
|
|
142
|
+
*/
|
|
143
|
+
export function append(first, second) {
|
|
144
|
+
return append_tree(first, from_bit_array(second));
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
/**
|
|
148
|
+
* Joins a list of bit arrays into a single bytes tree.
|
|
149
|
+
*
|
|
150
|
+
* Runs in constant time.
|
|
151
|
+
*/
|
|
152
|
+
export function concat_bit_arrays(bits) {
|
|
153
|
+
let _pipe = bits;
|
|
154
|
+
let _pipe$1 = $list.map(_pipe, from_bit_array);
|
|
155
|
+
return concat(_pipe$1);
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
function to_list(loop$stack, loop$acc) {
|
|
159
|
+
while (true) {
|
|
160
|
+
let stack = loop$stack;
|
|
161
|
+
let acc = loop$acc;
|
|
162
|
+
if (stack instanceof $Empty) {
|
|
163
|
+
return acc;
|
|
164
|
+
} else {
|
|
165
|
+
let $ = stack.head;
|
|
166
|
+
if ($ instanceof $Empty) {
|
|
167
|
+
let remaining_stack = stack.tail;
|
|
168
|
+
loop$stack = remaining_stack;
|
|
169
|
+
loop$acc = acc;
|
|
170
|
+
} else {
|
|
171
|
+
let $1 = $.head;
|
|
172
|
+
if ($1 instanceof Bytes) {
|
|
173
|
+
let remaining_stack = stack.tail;
|
|
174
|
+
let rest = $.tail;
|
|
175
|
+
let bits = $1[0];
|
|
176
|
+
loop$stack = listPrepend(rest, remaining_stack);
|
|
177
|
+
loop$acc = listPrepend(bits, acc);
|
|
178
|
+
} else if ($1 instanceof Text) {
|
|
179
|
+
let remaining_stack = stack.tail;
|
|
180
|
+
let rest = $.tail;
|
|
181
|
+
let tree = $1[0];
|
|
182
|
+
let bits = $bit_array.from_string($string_tree.to_string(tree));
|
|
183
|
+
loop$stack = listPrepend(rest, remaining_stack);
|
|
184
|
+
loop$acc = listPrepend(bits, acc);
|
|
185
|
+
} else {
|
|
186
|
+
let remaining_stack = stack.tail;
|
|
187
|
+
let rest = $.tail;
|
|
188
|
+
let trees = $1[0];
|
|
189
|
+
loop$stack = listPrepend(trees, listPrepend(rest, remaining_stack));
|
|
190
|
+
loop$acc = acc;
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
/**
|
|
198
|
+
* Turns a bytes tree into a bit array.
|
|
199
|
+
*
|
|
200
|
+
* Runs in linear time.
|
|
201
|
+
*
|
|
202
|
+
* When running on Erlang this function is implemented natively by the
|
|
203
|
+
* virtual machine and is highly optimised.
|
|
204
|
+
*/
|
|
205
|
+
export function to_bit_array(tree) {
|
|
206
|
+
let _pipe = toList([toList([tree])]);
|
|
207
|
+
let _pipe$1 = to_list(_pipe, toList([]));
|
|
208
|
+
let _pipe$2 = $list.reverse(_pipe$1);
|
|
209
|
+
return $bit_array.concat(_pipe$2);
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
/**
|
|
213
|
+
* Returns the size of the bytes tree's content in bytes.
|
|
214
|
+
*
|
|
215
|
+
* Runs in linear time.
|
|
216
|
+
*/
|
|
217
|
+
export function byte_size(tree) {
|
|
218
|
+
let _pipe = toList([toList([tree])]);
|
|
219
|
+
let _pipe$1 = to_list(_pipe, toList([]));
|
|
220
|
+
return $list.fold(
|
|
221
|
+
_pipe$1,
|
|
222
|
+
0,
|
|
223
|
+
(acc, bits) => { return $bit_array.byte_size(bits) + acc; },
|
|
224
|
+
);
|
|
225
|
+
}
|
|
@@ -0,0 +1,456 @@
|
|
|
1
|
+
import {
|
|
2
|
+
toTransient as to_transient,
|
|
3
|
+
fromTransient as from_transient,
|
|
4
|
+
size,
|
|
5
|
+
has as has_key,
|
|
6
|
+
make as new$,
|
|
7
|
+
get,
|
|
8
|
+
insert,
|
|
9
|
+
destructiveTransientInsert as transient_insert,
|
|
10
|
+
map as map_values,
|
|
11
|
+
destructiveTransientDelete as transient_delete,
|
|
12
|
+
fold,
|
|
13
|
+
destructiveTransientUpdateWith as transient_update_with,
|
|
14
|
+
} from "../dict.mjs";
|
|
15
|
+
import { Ok, toList, Empty as $Empty, prepend as listPrepend } from "../gleam.mjs";
|
|
16
|
+
import * as $option from "../gleam/option.mjs";
|
|
17
|
+
|
|
18
|
+
export { fold, get, has_key, insert, map_values, new$, size };
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Determines whether or not the dict is empty.
|
|
22
|
+
*
|
|
23
|
+
* ## Examples
|
|
24
|
+
*
|
|
25
|
+
* ```gleam
|
|
26
|
+
* new() |> is_empty
|
|
27
|
+
* // -> True
|
|
28
|
+
* ```
|
|
29
|
+
*
|
|
30
|
+
* ```gleam
|
|
31
|
+
* new() |> insert("b", 1) |> is_empty
|
|
32
|
+
* // -> False
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
export function is_empty(dict) {
|
|
36
|
+
return size(dict) === 0;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
function from_list_loop(loop$transient, loop$list) {
|
|
40
|
+
while (true) {
|
|
41
|
+
let transient = loop$transient;
|
|
42
|
+
let list = loop$list;
|
|
43
|
+
if (list instanceof $Empty) {
|
|
44
|
+
return from_transient(transient);
|
|
45
|
+
} else {
|
|
46
|
+
let rest = list.tail;
|
|
47
|
+
let key = list.head[0];
|
|
48
|
+
let value = list.head[1];
|
|
49
|
+
loop$transient = transient_insert(key, value, transient);
|
|
50
|
+
loop$list = rest;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Converts a list of 2-element tuples `#(key, value)` to a dict.
|
|
57
|
+
*
|
|
58
|
+
* If two tuples have the same key the last one in the list will be the one
|
|
59
|
+
* that is present in the dict.
|
|
60
|
+
*/
|
|
61
|
+
export function from_list(list) {
|
|
62
|
+
return from_list_loop(to_transient(new$()), list);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
function do_take_loop(loop$dict, loop$desired_keys, loop$acc) {
|
|
66
|
+
while (true) {
|
|
67
|
+
let dict = loop$dict;
|
|
68
|
+
let desired_keys = loop$desired_keys;
|
|
69
|
+
let acc = loop$acc;
|
|
70
|
+
if (desired_keys instanceof $Empty) {
|
|
71
|
+
return from_transient(acc);
|
|
72
|
+
} else {
|
|
73
|
+
let key = desired_keys.head;
|
|
74
|
+
let rest = desired_keys.tail;
|
|
75
|
+
let $ = get(dict, key);
|
|
76
|
+
if ($ instanceof Ok) {
|
|
77
|
+
let value = $[0];
|
|
78
|
+
loop$dict = dict;
|
|
79
|
+
loop$desired_keys = rest;
|
|
80
|
+
loop$acc = transient_insert(key, value, acc);
|
|
81
|
+
} else {
|
|
82
|
+
loop$dict = dict;
|
|
83
|
+
loop$desired_keys = rest;
|
|
84
|
+
loop$acc = acc;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
function do_take(desired_keys, dict) {
|
|
91
|
+
return do_take_loop(dict, desired_keys, to_transient(new$()));
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* Creates a new dict from a given dict, only including any entries for which the
|
|
96
|
+
* keys are in a given list.
|
|
97
|
+
*
|
|
98
|
+
* ## Examples
|
|
99
|
+
*
|
|
100
|
+
* ```gleam
|
|
101
|
+
* from_list([#("a", 0), #("b", 1)])
|
|
102
|
+
* |> take(["b"])
|
|
103
|
+
* // -> from_list([#("b", 1)])
|
|
104
|
+
* ```
|
|
105
|
+
*
|
|
106
|
+
* ```gleam
|
|
107
|
+
* from_list([#("a", 0), #("b", 1)])
|
|
108
|
+
* |> take(["a", "b", "c"])
|
|
109
|
+
* // -> from_list([#("a", 0), #("b", 1)])
|
|
110
|
+
* ```
|
|
111
|
+
*/
|
|
112
|
+
export function take(dict, desired_keys) {
|
|
113
|
+
return do_take(desired_keys, dict);
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* Creates a new dict from a given dict with all the same entries except for the
|
|
118
|
+
* one with a given key, if it exists.
|
|
119
|
+
*
|
|
120
|
+
* ## Examples
|
|
121
|
+
*
|
|
122
|
+
* ```gleam
|
|
123
|
+
* from_list([#("a", 0), #("b", 1)]) |> delete("a")
|
|
124
|
+
* // -> from_list([#("b", 1)])
|
|
125
|
+
* ```
|
|
126
|
+
*
|
|
127
|
+
* ```gleam
|
|
128
|
+
* from_list([#("a", 0), #("b", 1)]) |> delete("c")
|
|
129
|
+
* // -> from_list([#("a", 0), #("b", 1)])
|
|
130
|
+
* ```
|
|
131
|
+
*/
|
|
132
|
+
export function delete$(dict, key) {
|
|
133
|
+
let _pipe = to_transient(dict);
|
|
134
|
+
let _pipe$1 = ((_capture) => { return transient_delete(key, _capture); })(
|
|
135
|
+
_pipe,
|
|
136
|
+
);
|
|
137
|
+
return from_transient(_pipe$1);
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
function drop_loop(loop$transient, loop$disallowed_keys) {
|
|
141
|
+
while (true) {
|
|
142
|
+
let transient = loop$transient;
|
|
143
|
+
let disallowed_keys = loop$disallowed_keys;
|
|
144
|
+
if (disallowed_keys instanceof $Empty) {
|
|
145
|
+
return from_transient(transient);
|
|
146
|
+
} else {
|
|
147
|
+
let key = disallowed_keys.head;
|
|
148
|
+
let rest = disallowed_keys.tail;
|
|
149
|
+
loop$transient = transient_delete(key, transient);
|
|
150
|
+
loop$disallowed_keys = rest;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
function do_drop(disallowed_keys, dict) {
|
|
156
|
+
return drop_loop(to_transient(dict), disallowed_keys);
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
/**
|
|
160
|
+
* Creates a new dict from a given dict with all the same entries except any with
|
|
161
|
+
* keys found in a given list.
|
|
162
|
+
*
|
|
163
|
+
* ## Examples
|
|
164
|
+
*
|
|
165
|
+
* ```gleam
|
|
166
|
+
* from_list([#("a", 0), #("b", 1)]) |> drop(["a"])
|
|
167
|
+
* // -> from_list([#("b", 1)])
|
|
168
|
+
* ```
|
|
169
|
+
*
|
|
170
|
+
* ```gleam
|
|
171
|
+
* from_list([#("a", 0), #("b", 1)]) |> drop(["c"])
|
|
172
|
+
* // -> from_list([#("a", 0), #("b", 1)])
|
|
173
|
+
* ```
|
|
174
|
+
*
|
|
175
|
+
* ```gleam
|
|
176
|
+
* from_list([#("a", 0), #("b", 1)]) |> drop(["a", "b", "c"])
|
|
177
|
+
* // -> from_list([])
|
|
178
|
+
* ```
|
|
179
|
+
*/
|
|
180
|
+
export function drop(dict, disallowed_keys) {
|
|
181
|
+
return do_drop(disallowed_keys, dict);
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
/**
|
|
185
|
+
* Creates a new dict with one entry inserted or updated using a given function.
|
|
186
|
+
*
|
|
187
|
+
* If there was not an entry in the dict for the given key then the function
|
|
188
|
+
* gets `None` as its argument, otherwise it gets `Some(value)`.
|
|
189
|
+
*
|
|
190
|
+
* ## Examples
|
|
191
|
+
*
|
|
192
|
+
* ```gleam
|
|
193
|
+
* let dict = from_list([#("a", 0)])
|
|
194
|
+
* let increment = fn(x) {
|
|
195
|
+
* case x {
|
|
196
|
+
* Some(i) -> i + 1
|
|
197
|
+
* None -> 0
|
|
198
|
+
* }
|
|
199
|
+
* }
|
|
200
|
+
*
|
|
201
|
+
* upsert(dict, "a", increment)
|
|
202
|
+
* // -> from_list([#("a", 1)])
|
|
203
|
+
*
|
|
204
|
+
* upsert(dict, "b", increment)
|
|
205
|
+
* // -> from_list([#("a", 0), #("b", 0)])
|
|
206
|
+
* ```
|
|
207
|
+
*/
|
|
208
|
+
export function upsert(dict, key, fun) {
|
|
209
|
+
let $ = get(dict, key);
|
|
210
|
+
if ($ instanceof Ok) {
|
|
211
|
+
let value = $[0];
|
|
212
|
+
return insert(dict, key, fun(new $option.Some(value)));
|
|
213
|
+
} else {
|
|
214
|
+
return insert(dict, key, fun(new $option.None()));
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
/**
|
|
219
|
+
* Converts the dict to a list of 2-element tuples `#(key, value)`, one for
|
|
220
|
+
* each key-value pair in the dict.
|
|
221
|
+
*
|
|
222
|
+
* The tuples in the list have no specific order.
|
|
223
|
+
*
|
|
224
|
+
* ## Examples
|
|
225
|
+
*
|
|
226
|
+
* Calling `to_list` on an empty `dict` returns an empty list.
|
|
227
|
+
*
|
|
228
|
+
* ```gleam
|
|
229
|
+
* new() |> to_list
|
|
230
|
+
* // -> []
|
|
231
|
+
* ```
|
|
232
|
+
*
|
|
233
|
+
* The ordering of elements in the resulting list is an implementation detail
|
|
234
|
+
* that should not be relied upon.
|
|
235
|
+
*
|
|
236
|
+
* ```gleam
|
|
237
|
+
* new() |> insert("b", 1) |> insert("a", 0) |> insert("c", 2) |> to_list
|
|
238
|
+
* // -> [#("a", 0), #("b", 1), #("c", 2)]
|
|
239
|
+
* ```
|
|
240
|
+
*/
|
|
241
|
+
export function to_list(dict) {
|
|
242
|
+
return fold(
|
|
243
|
+
dict,
|
|
244
|
+
toList([]),
|
|
245
|
+
(acc, key, value) => { return listPrepend([key, value], acc); },
|
|
246
|
+
);
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
/**
|
|
250
|
+
* Gets a list of all keys in a given dict.
|
|
251
|
+
*
|
|
252
|
+
* Dicts are not ordered so the keys are not returned in any specific order. Do
|
|
253
|
+
* not write code that relies on the order keys are returned by this function
|
|
254
|
+
* as it may change in later versions of Gleam or Erlang.
|
|
255
|
+
*
|
|
256
|
+
* ## Examples
|
|
257
|
+
*
|
|
258
|
+
* ```gleam
|
|
259
|
+
* from_list([#("a", 0), #("b", 1)]) |> keys
|
|
260
|
+
* // -> ["a", "b"]
|
|
261
|
+
* ```
|
|
262
|
+
*/
|
|
263
|
+
export function keys(dict) {
|
|
264
|
+
return fold(
|
|
265
|
+
dict,
|
|
266
|
+
toList([]),
|
|
267
|
+
(acc, key, _) => { return listPrepend(key, acc); },
|
|
268
|
+
);
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
/**
|
|
272
|
+
* Gets a list of all values in a given dict.
|
|
273
|
+
*
|
|
274
|
+
* Dicts are not ordered so the values are not returned in any specific order. Do
|
|
275
|
+
* not write code that relies on the order values are returned by this function
|
|
276
|
+
* as it may change in later versions of Gleam or Erlang.
|
|
277
|
+
*
|
|
278
|
+
* ## Examples
|
|
279
|
+
*
|
|
280
|
+
* ```gleam
|
|
281
|
+
* from_list([#("a", 0), #("b", 1)]) |> values
|
|
282
|
+
* // -> [0, 1]
|
|
283
|
+
* ```
|
|
284
|
+
*/
|
|
285
|
+
export function values(dict) {
|
|
286
|
+
return fold(
|
|
287
|
+
dict,
|
|
288
|
+
toList([]),
|
|
289
|
+
(acc, _, value) => { return listPrepend(value, acc); },
|
|
290
|
+
);
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
function do_filter(f, dict) {
|
|
294
|
+
let _pipe = to_transient(new$());
|
|
295
|
+
let _pipe$1 = fold(
|
|
296
|
+
dict,
|
|
297
|
+
_pipe,
|
|
298
|
+
(transient, key, value) => {
|
|
299
|
+
let $ = f(key, value);
|
|
300
|
+
if ($) {
|
|
301
|
+
return transient_insert(key, value, transient);
|
|
302
|
+
} else {
|
|
303
|
+
return transient;
|
|
304
|
+
}
|
|
305
|
+
},
|
|
306
|
+
);
|
|
307
|
+
return from_transient(_pipe$1);
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
/**
|
|
311
|
+
* Creates a new dict from a given dict, minus any entries that a given function
|
|
312
|
+
* returns `False` for.
|
|
313
|
+
*
|
|
314
|
+
* ## Examples
|
|
315
|
+
*
|
|
316
|
+
* ```gleam
|
|
317
|
+
* from_list([#("a", 0), #("b", 1)])
|
|
318
|
+
* |> filter(fn(key, value) { value != 0 })
|
|
319
|
+
* // -> from_list([#("b", 1)])
|
|
320
|
+
* ```
|
|
321
|
+
*
|
|
322
|
+
* ```gleam
|
|
323
|
+
* from_list([#("a", 0), #("b", 1)])
|
|
324
|
+
* |> filter(fn(key, value) { True })
|
|
325
|
+
* // -> from_list([#("a", 0), #("b", 1)])
|
|
326
|
+
* ```
|
|
327
|
+
*/
|
|
328
|
+
export function filter(dict, predicate) {
|
|
329
|
+
return do_filter(predicate, dict);
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
/**
|
|
333
|
+
* Calls a function for each key and value in a dict, discarding the return
|
|
334
|
+
* value.
|
|
335
|
+
*
|
|
336
|
+
* Useful for producing a side effect for every item of a dict.
|
|
337
|
+
*
|
|
338
|
+
* ```gleam
|
|
339
|
+
* import gleam/io
|
|
340
|
+
*
|
|
341
|
+
* let dict = from_list([#("a", "apple"), #("b", "banana"), #("c", "cherry")])
|
|
342
|
+
*
|
|
343
|
+
* each(dict, fn(k, v) {
|
|
344
|
+
* io.println(key <> " => " <> value)
|
|
345
|
+
* })
|
|
346
|
+
* // -> Nil
|
|
347
|
+
* // a => apple
|
|
348
|
+
* // b => banana
|
|
349
|
+
* // c => cherry
|
|
350
|
+
* ```
|
|
351
|
+
*
|
|
352
|
+
* The order of elements in the iteration is an implementation detail that
|
|
353
|
+
* should not be relied upon.
|
|
354
|
+
*/
|
|
355
|
+
export function each(dict, fun) {
|
|
356
|
+
return fold(
|
|
357
|
+
dict,
|
|
358
|
+
undefined,
|
|
359
|
+
(nil, k, v) => {
|
|
360
|
+
fun(k, v);
|
|
361
|
+
return nil;
|
|
362
|
+
},
|
|
363
|
+
);
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
function do_combine(combine, left, right) {
|
|
367
|
+
let _block;
|
|
368
|
+
let $1 = size(left) >= size(right);
|
|
369
|
+
if ($1) {
|
|
370
|
+
_block = [left, right, combine];
|
|
371
|
+
} else {
|
|
372
|
+
_block = [right, left, (k, l, r) => { return combine(k, r, l); }];
|
|
373
|
+
}
|
|
374
|
+
let $ = _block;
|
|
375
|
+
let big;
|
|
376
|
+
let small;
|
|
377
|
+
let combine$1;
|
|
378
|
+
big = $[0];
|
|
379
|
+
small = $[1];
|
|
380
|
+
combine$1 = $[2];
|
|
381
|
+
let _pipe = to_transient(big);
|
|
382
|
+
let _pipe$1 = fold(
|
|
383
|
+
small,
|
|
384
|
+
_pipe,
|
|
385
|
+
(transient, key, value) => {
|
|
386
|
+
let update = (existing) => { return combine$1(key, existing, value); };
|
|
387
|
+
return transient_update_with(key, update, value, transient);
|
|
388
|
+
},
|
|
389
|
+
);
|
|
390
|
+
return from_transient(_pipe$1);
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
/**
|
|
394
|
+
* Creates a new dict from a pair of given dicts by combining their entries.
|
|
395
|
+
*
|
|
396
|
+
* If there are entries with the same keys in both dicts the given function is
|
|
397
|
+
* used to determine the new value to use in the resulting dict.
|
|
398
|
+
*
|
|
399
|
+
* ## Examples
|
|
400
|
+
*
|
|
401
|
+
* ```gleam
|
|
402
|
+
* let a = from_list([#("a", 0), #("b", 1)])
|
|
403
|
+
* let b = from_list([#("a", 2), #("c", 3)])
|
|
404
|
+
* combine(a, b, fn(one, other) { one + other })
|
|
405
|
+
* // -> from_list([#("a", 2), #("b", 1), #("c", 3)])
|
|
406
|
+
* ```
|
|
407
|
+
*/
|
|
408
|
+
export function combine(dict, other, fun) {
|
|
409
|
+
return do_combine((_, l, r) => { return fun(l, r); }, dict, other);
|
|
410
|
+
}
|
|
411
|
+
|
|
412
|
+
/**
|
|
413
|
+
* Creates a new dict from a pair of given dicts by combining their entries.
|
|
414
|
+
*
|
|
415
|
+
* If there are entries with the same keys in both dicts the entry from the
|
|
416
|
+
* second dict takes precedence.
|
|
417
|
+
*
|
|
418
|
+
* ## Examples
|
|
419
|
+
*
|
|
420
|
+
* ```gleam
|
|
421
|
+
* let a = from_list([#("a", 0), #("b", 1)])
|
|
422
|
+
* let b = from_list([#("b", 2), #("c", 3)])
|
|
423
|
+
* merge(a, b)
|
|
424
|
+
* // -> from_list([#("a", 0), #("b", 2), #("c", 3)])
|
|
425
|
+
* ```
|
|
426
|
+
*/
|
|
427
|
+
export function merge(dict, new_entries) {
|
|
428
|
+
return combine(dict, new_entries, (_, new_entry) => { return new_entry; });
|
|
429
|
+
}
|
|
430
|
+
|
|
431
|
+
function group_loop(loop$transient, loop$to_key, loop$list) {
|
|
432
|
+
while (true) {
|
|
433
|
+
let transient = loop$transient;
|
|
434
|
+
let to_key = loop$to_key;
|
|
435
|
+
let list = loop$list;
|
|
436
|
+
if (list instanceof $Empty) {
|
|
437
|
+
return from_transient(transient);
|
|
438
|
+
} else {
|
|
439
|
+
let value = list.head;
|
|
440
|
+
let rest = list.tail;
|
|
441
|
+
let key = to_key(value);
|
|
442
|
+
let update = (existing) => { return listPrepend(value, existing); };
|
|
443
|
+
let _pipe = transient;
|
|
444
|
+
let _pipe$1 = ((_capture) => {
|
|
445
|
+
return transient_update_with(key, update, toList([value]), _capture);
|
|
446
|
+
})(_pipe);
|
|
447
|
+
loop$transient = _pipe$1;
|
|
448
|
+
loop$to_key = to_key;
|
|
449
|
+
loop$list = rest;
|
|
450
|
+
}
|
|
451
|
+
}
|
|
452
|
+
}
|
|
453
|
+
|
|
454
|
+
export function group(key, list) {
|
|
455
|
+
return group_loop(to_transient(new$()), key, list);
|
|
456
|
+
}
|