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.
Files changed (334) hide show
  1. package/README.md +24 -0
  2. package/bin/skillc.mjs +3 -0
  3. package/build/dev/javascript/argv/_gleam_artefacts/argv.cache +0 -0
  4. package/build/dev/javascript/argv/_gleam_artefacts/argv.cache_inline +0 -0
  5. package/build/dev/javascript/argv/_gleam_artefacts/argv.cache_meta +0 -0
  6. package/build/dev/javascript/argv/argv.erl +12 -0
  7. package/build/dev/javascript/argv/argv.mjs +31 -0
  8. package/build/dev/javascript/argv/argv_ffi.erl +27 -0
  9. package/build/dev/javascript/argv/argv_ffi.mjs +20 -0
  10. package/build/dev/javascript/argv/gleam.mjs +1 -0
  11. package/build/dev/javascript/filepath/_gleam_artefacts/filepath.cache +0 -0
  12. package/build/dev/javascript/filepath/_gleam_artefacts/filepath.cache_inline +0 -0
  13. package/build/dev/javascript/filepath/_gleam_artefacts/filepath.cache_meta +0 -0
  14. package/build/dev/javascript/filepath/filepath.erl +425 -0
  15. package/build/dev/javascript/filepath/filepath.mjs +529 -0
  16. package/build/dev/javascript/filepath/filepath_ffi.erl +9 -0
  17. package/build/dev/javascript/filepath/filepath_ffi.mjs +6 -0
  18. package/build/dev/javascript/filepath/gleam.mjs +1 -0
  19. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@bit_array.cache +0 -0
  20. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@bit_array.cache_inline +0 -0
  21. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@bit_array.cache_meta +0 -0
  22. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@bool.cache +0 -0
  23. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@bool.cache_inline +0 -0
  24. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@bool.cache_meta +0 -0
  25. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@bytes_tree.cache +0 -0
  26. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@bytes_tree.cache_inline +0 -0
  27. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@bytes_tree.cache_meta +0 -0
  28. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@dict.cache +0 -0
  29. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@dict.cache_inline +0 -0
  30. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@dict.cache_meta +0 -0
  31. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@dynamic.cache +0 -0
  32. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@dynamic.cache_inline +0 -0
  33. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@dynamic.cache_meta +0 -0
  34. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@dynamic@decode.cache +0 -0
  35. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@dynamic@decode.cache_inline +0 -0
  36. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@dynamic@decode.cache_meta +0 -0
  37. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@float.cache +0 -0
  38. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@float.cache_inline +0 -0
  39. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@float.cache_meta +0 -0
  40. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@function.cache +0 -0
  41. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@function.cache_inline +0 -0
  42. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@function.cache_meta +0 -0
  43. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@int.cache +0 -0
  44. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@int.cache_inline +0 -0
  45. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@int.cache_meta +0 -0
  46. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@io.cache +0 -0
  47. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@io.cache_inline +0 -0
  48. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@io.cache_meta +0 -0
  49. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@list.cache +0 -0
  50. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@list.cache_inline +0 -0
  51. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@list.cache_meta +0 -0
  52. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@option.cache +0 -0
  53. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@option.cache_inline +0 -0
  54. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@option.cache_meta +0 -0
  55. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@order.cache +0 -0
  56. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@order.cache_inline +0 -0
  57. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@order.cache_meta +0 -0
  58. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@pair.cache +0 -0
  59. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@pair.cache_inline +0 -0
  60. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@pair.cache_meta +0 -0
  61. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@result.cache +0 -0
  62. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@result.cache_inline +0 -0
  63. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@result.cache_meta +0 -0
  64. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@set.cache +0 -0
  65. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@set.cache_inline +0 -0
  66. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@set.cache_meta +0 -0
  67. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@string.cache +0 -0
  68. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@string.cache_inline +0 -0
  69. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@string.cache_meta +0 -0
  70. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@string_tree.cache +0 -0
  71. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@string_tree.cache_inline +0 -0
  72. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@string_tree.cache_meta +0 -0
  73. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@uri.cache +0 -0
  74. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@uri.cache_inline +0 -0
  75. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@uri.cache_meta +0 -0
  76. package/build/dev/javascript/gleam_stdlib/dict.mjs +710 -0
  77. package/build/dev/javascript/gleam_stdlib/gleam/bit_array.mjs +285 -0
  78. package/build/dev/javascript/gleam_stdlib/gleam/bool.mjs +313 -0
  79. package/build/dev/javascript/gleam_stdlib/gleam/bytes_tree.mjs +225 -0
  80. package/build/dev/javascript/gleam_stdlib/gleam/dict.mjs +456 -0
  81. package/build/dev/javascript/gleam_stdlib/gleam/dynamic/decode.mjs +985 -0
  82. package/build/dev/javascript/gleam_stdlib/gleam/dynamic.mjs +35 -0
  83. package/build/dev/javascript/gleam_stdlib/gleam/float.mjs +572 -0
  84. package/build/dev/javascript/gleam_stdlib/gleam/function.mjs +6 -0
  85. package/build/dev/javascript/gleam_stdlib/gleam/int.mjs +832 -0
  86. package/build/dev/javascript/gleam_stdlib/gleam/io.mjs +8 -0
  87. package/build/dev/javascript/gleam_stdlib/gleam/list.mjs +3160 -0
  88. package/build/dev/javascript/gleam_stdlib/gleam/option.mjs +418 -0
  89. package/build/dev/javascript/gleam_stdlib/gleam/order.mjs +178 -0
  90. package/build/dev/javascript/gleam_stdlib/gleam/pair.mjs +102 -0
  91. package/build/dev/javascript/gleam_stdlib/gleam/result.mjs +480 -0
  92. package/build/dev/javascript/gleam_stdlib/gleam/set.mjs +416 -0
  93. package/build/dev/javascript/gleam_stdlib/gleam/string.mjs +723 -0
  94. package/build/dev/javascript/gleam_stdlib/gleam/string_tree.mjs +133 -0
  95. package/build/dev/javascript/gleam_stdlib/gleam/uri.mjs +1155 -0
  96. package/build/dev/javascript/gleam_stdlib/gleam.mjs +1 -0
  97. package/build/dev/javascript/gleam_stdlib/gleam@bit_array.erl +347 -0
  98. package/build/dev/javascript/gleam_stdlib/gleam@bool.erl +352 -0
  99. package/build/dev/javascript/gleam_stdlib/gleam@bytes_tree.erl +211 -0
  100. package/build/dev/javascript/gleam_stdlib/gleam@dict.erl +521 -0
  101. package/build/dev/javascript/gleam_stdlib/gleam@dynamic.erl +106 -0
  102. package/build/dev/javascript/gleam_stdlib/gleam@dynamic@decode.erl +1112 -0
  103. package/build/dev/javascript/gleam_stdlib/gleam@float.erl +764 -0
  104. package/build/dev/javascript/gleam_stdlib/gleam@function.erl +18 -0
  105. package/build/dev/javascript/gleam_stdlib/gleam@int.erl +1004 -0
  106. package/build/dev/javascript/gleam_stdlib/gleam@io.erl +80 -0
  107. package/build/dev/javascript/gleam_stdlib/gleam@list.erl +2832 -0
  108. package/build/dev/javascript/gleam_stdlib/gleam@option.erl +413 -0
  109. package/build/dev/javascript/gleam_stdlib/gleam@order.erl +200 -0
  110. package/build/dev/javascript/gleam_stdlib/gleam@pair.erl +110 -0
  111. package/build/dev/javascript/gleam_stdlib/gleam@result.erl +532 -0
  112. package/build/dev/javascript/gleam_stdlib/gleam@set.erl +433 -0
  113. package/build/dev/javascript/gleam_stdlib/gleam@string.erl +1012 -0
  114. package/build/dev/javascript/gleam_stdlib/gleam@string_tree.erl +207 -0
  115. package/build/dev/javascript/gleam_stdlib/gleam@uri.erl +1049 -0
  116. package/build/dev/javascript/gleam_stdlib/gleam_stdlib.erl +529 -0
  117. package/build/dev/javascript/gleam_stdlib/gleam_stdlib.mjs +1050 -0
  118. package/build/dev/javascript/gleam_version +1 -0
  119. package/build/dev/javascript/gleeunit/_gleam_artefacts/gleeunit.cache +0 -0
  120. package/build/dev/javascript/gleeunit/_gleam_artefacts/gleeunit.cache_inline +0 -0
  121. package/build/dev/javascript/gleeunit/_gleam_artefacts/gleeunit.cache_meta +0 -0
  122. package/build/dev/javascript/gleeunit/_gleam_artefacts/gleeunit@internal@gleam_panic.cache +0 -0
  123. package/build/dev/javascript/gleeunit/_gleam_artefacts/gleeunit@internal@gleam_panic.cache_inline +0 -0
  124. package/build/dev/javascript/gleeunit/_gleam_artefacts/gleeunit@internal@gleam_panic.cache_meta +0 -0
  125. package/build/dev/javascript/gleeunit/_gleam_artefacts/gleeunit@internal@reporting.cache +0 -0
  126. package/build/dev/javascript/gleeunit/_gleam_artefacts/gleeunit@internal@reporting.cache_inline +0 -0
  127. package/build/dev/javascript/gleeunit/_gleam_artefacts/gleeunit@internal@reporting.cache_meta +0 -0
  128. package/build/dev/javascript/gleeunit/_gleam_artefacts/gleeunit@should.cache +0 -0
  129. package/build/dev/javascript/gleeunit/_gleam_artefacts/gleeunit@should.cache_inline +0 -0
  130. package/build/dev/javascript/gleeunit/_gleam_artefacts/gleeunit@should.cache_meta +0 -0
  131. package/build/dev/javascript/gleeunit/gleam.mjs +1 -0
  132. package/build/dev/javascript/gleeunit/gleeunit/internal/gleam_panic.mjs +180 -0
  133. package/build/dev/javascript/gleeunit/gleeunit/internal/gleeunit_gleam_panic_ffi.erl +49 -0
  134. package/build/dev/javascript/gleeunit/gleeunit/internal/gleeunit_gleam_panic_ffi.mjs +91 -0
  135. package/build/dev/javascript/gleeunit/gleeunit/internal/reporting.mjs +256 -0
  136. package/build/dev/javascript/gleeunit/gleeunit/should.mjs +135 -0
  137. package/build/dev/javascript/gleeunit/gleeunit.erl +89 -0
  138. package/build/dev/javascript/gleeunit/gleeunit.mjs +62 -0
  139. package/build/dev/javascript/gleeunit/gleeunit@internal@gleam_panic.erl +56 -0
  140. package/build/dev/javascript/gleeunit/gleeunit@internal@reporting.erl +343 -0
  141. package/build/dev/javascript/gleeunit/gleeunit@should.erl +153 -0
  142. package/build/dev/javascript/gleeunit/gleeunit_ffi.erl +21 -0
  143. package/build/dev/javascript/gleeunit/gleeunit_ffi.mjs +100 -0
  144. package/build/dev/javascript/gleeunit/gleeunit_progress.erl +72 -0
  145. package/build/dev/javascript/prelude.mjs +1575 -0
  146. package/build/dev/javascript/simplifile/_gleam_artefacts/simplifile.cache +0 -0
  147. package/build/dev/javascript/simplifile/_gleam_artefacts/simplifile.cache_inline +0 -0
  148. package/build/dev/javascript/simplifile/_gleam_artefacts/simplifile.cache_meta +0 -0
  149. package/build/dev/javascript/simplifile/gleam.mjs +1 -0
  150. package/build/dev/javascript/simplifile/simplifile.erl +893 -0
  151. package/build/dev/javascript/simplifile/simplifile.mjs +893 -0
  152. package/build/dev/javascript/simplifile/simplifile_erl.erl +244 -0
  153. package/build/dev/javascript/simplifile/simplifile_js.mjs +400 -0
  154. package/build/dev/javascript/skillc/_gleam_artefacts/cli_test.cache +0 -0
  155. package/build/dev/javascript/skillc/_gleam_artefacts/cli_test.cache_inline +0 -0
  156. package/build/dev/javascript/skillc/_gleam_artefacts/cli_test.cache_meta +0 -0
  157. package/build/dev/javascript/skillc/_gleam_artefacts/cli_test.cache_warnings +0 -0
  158. package/build/dev/javascript/skillc/_gleam_artefacts/compiler_test.cache +0 -0
  159. package/build/dev/javascript/skillc/_gleam_artefacts/compiler_test.cache_inline +0 -0
  160. package/build/dev/javascript/skillc/_gleam_artefacts/compiler_test.cache_meta +0 -0
  161. package/build/dev/javascript/skillc/_gleam_artefacts/compiler_test.cache_warnings +0 -0
  162. package/build/dev/javascript/skillc/_gleam_artefacts/config_test.cache +0 -0
  163. package/build/dev/javascript/skillc/_gleam_artefacts/config_test.cache_inline +0 -0
  164. package/build/dev/javascript/skillc/_gleam_artefacts/config_test.cache_meta +0 -0
  165. package/build/dev/javascript/skillc/_gleam_artefacts/config_test.cache_warnings +0 -0
  166. package/build/dev/javascript/skillc/_gleam_artefacts/importer_test.cache +0 -0
  167. package/build/dev/javascript/skillc/_gleam_artefacts/importer_test.cache_inline +0 -0
  168. package/build/dev/javascript/skillc/_gleam_artefacts/importer_test.cache_meta +0 -0
  169. package/build/dev/javascript/skillc/_gleam_artefacts/importer_test.cache_warnings +0 -0
  170. package/build/dev/javascript/skillc/_gleam_artefacts/parser_test.cache +0 -0
  171. package/build/dev/javascript/skillc/_gleam_artefacts/parser_test.cache_inline +0 -0
  172. package/build/dev/javascript/skillc/_gleam_artefacts/parser_test.cache_meta +0 -0
  173. package/build/dev/javascript/skillc/_gleam_artefacts/parser_test.cache_warnings +0 -0
  174. package/build/dev/javascript/skillc/_gleam_artefacts/path_test.cache +0 -0
  175. package/build/dev/javascript/skillc/_gleam_artefacts/path_test.cache_inline +0 -0
  176. package/build/dev/javascript/skillc/_gleam_artefacts/path_test.cache_meta +0 -0
  177. package/build/dev/javascript/skillc/_gleam_artefacts/path_test.cache_warnings +0 -0
  178. package/build/dev/javascript/skillc/_gleam_artefacts/provider_test.cache +0 -0
  179. package/build/dev/javascript/skillc/_gleam_artefacts/provider_test.cache_inline +0 -0
  180. package/build/dev/javascript/skillc/_gleam_artefacts/provider_test.cache_meta +0 -0
  181. package/build/dev/javascript/skillc/_gleam_artefacts/provider_test.cache_warnings +0 -0
  182. package/build/dev/javascript/skillc/_gleam_artefacts/registry_test.cache +0 -0
  183. package/build/dev/javascript/skillc/_gleam_artefacts/registry_test.cache_inline +0 -0
  184. package/build/dev/javascript/skillc/_gleam_artefacts/registry_test.cache_meta +0 -0
  185. package/build/dev/javascript/skillc/_gleam_artefacts/registry_test.cache_warnings +0 -0
  186. package/build/dev/javascript/skillc/_gleam_artefacts/scaffold_test.cache +0 -0
  187. package/build/dev/javascript/skillc/_gleam_artefacts/scaffold_test.cache_inline +0 -0
  188. package/build/dev/javascript/skillc/_gleam_artefacts/scaffold_test.cache_meta +0 -0
  189. package/build/dev/javascript/skillc/_gleam_artefacts/scaffold_test.cache_warnings +0 -0
  190. package/build/dev/javascript/skillc/_gleam_artefacts/skillc.cache +0 -0
  191. package/build/dev/javascript/skillc/_gleam_artefacts/skillc.cache_inline +0 -0
  192. package/build/dev/javascript/skillc/_gleam_artefacts/skillc.cache_meta +0 -0
  193. package/build/dev/javascript/skillc/_gleam_artefacts/skillc.cache_warnings +0 -0
  194. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@compiler.cache +0 -0
  195. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@compiler.cache_inline +0 -0
  196. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@compiler.cache_meta +0 -0
  197. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@compiler.cache_warnings +0 -0
  198. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@config.cache +0 -0
  199. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@config.cache_inline +0 -0
  200. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@config.cache_meta +0 -0
  201. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@config.cache_warnings +0 -0
  202. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@error.cache +0 -0
  203. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@error.cache_inline +0 -0
  204. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@error.cache_meta +0 -0
  205. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@error.cache_warnings +0 -0
  206. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@fs.cache +0 -0
  207. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@fs.cache_inline +0 -0
  208. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@fs.cache_meta +0 -0
  209. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@fs.cache_warnings +0 -0
  210. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@importer.cache +0 -0
  211. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@importer.cache_inline +0 -0
  212. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@importer.cache_meta +0 -0
  213. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@importer.cache_warnings +0 -0
  214. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@parser.cache +0 -0
  215. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@parser.cache_inline +0 -0
  216. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@parser.cache_meta +0 -0
  217. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@parser.cache_warnings +0 -0
  218. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@path.cache +0 -0
  219. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@path.cache_inline +0 -0
  220. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@path.cache_meta +0 -0
  221. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@path.cache_warnings +0 -0
  222. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@platform.cache +0 -0
  223. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@platform.cache_inline +0 -0
  224. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@platform.cache_meta +0 -0
  225. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@platform.cache_warnings +0 -0
  226. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@provider.cache +0 -0
  227. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@provider.cache_inline +0 -0
  228. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@provider.cache_meta +0 -0
  229. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@provider.cache_warnings +0 -0
  230. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@registry.cache +0 -0
  231. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@registry.cache_inline +0 -0
  232. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@registry.cache_meta +0 -0
  233. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@registry.cache_warnings +0 -0
  234. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@scaffold.cache +0 -0
  235. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@scaffold.cache_inline +0 -0
  236. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@scaffold.cache_meta +0 -0
  237. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@scaffold.cache_warnings +0 -0
  238. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@semver.cache +0 -0
  239. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@semver.cache_inline +0 -0
  240. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@semver.cache_meta +0 -0
  241. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@semver.cache_warnings +0 -0
  242. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@shell.cache +0 -0
  243. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@shell.cache_inline +0 -0
  244. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@shell.cache_meta +0 -0
  245. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@shell.cache_warnings +0 -0
  246. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@template.cache +0 -0
  247. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@template.cache_inline +0 -0
  248. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@template.cache_meta +0 -0
  249. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@template.cache_warnings +0 -0
  250. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@types.cache +0 -0
  251. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@types.cache_inline +0 -0
  252. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@types.cache_meta +0 -0
  253. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@types.cache_warnings +0 -0
  254. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@version_constraint.cache +0 -0
  255. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@version_constraint.cache_inline +0 -0
  256. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@version_constraint.cache_meta +0 -0
  257. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@version_constraint.cache_warnings +0 -0
  258. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@yaml.cache +0 -0
  259. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@yaml.cache_inline +0 -0
  260. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@yaml.cache_meta +0 -0
  261. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@yaml.cache_warnings +0 -0
  262. package/build/dev/javascript/skillc/_gleam_artefacts/skillc_test.cache +0 -0
  263. package/build/dev/javascript/skillc/_gleam_artefacts/skillc_test.cache_inline +0 -0
  264. package/build/dev/javascript/skillc/_gleam_artefacts/skillc_test.cache_meta +0 -0
  265. package/build/dev/javascript/skillc/_gleam_artefacts/skillc_test.cache_warnings +0 -0
  266. package/build/dev/javascript/skillc/_gleam_artefacts/template_test.cache +0 -0
  267. package/build/dev/javascript/skillc/_gleam_artefacts/template_test.cache_inline +0 -0
  268. package/build/dev/javascript/skillc/_gleam_artefacts/template_test.cache_meta +0 -0
  269. package/build/dev/javascript/skillc/_gleam_artefacts/template_test.cache_warnings +0 -0
  270. package/build/dev/javascript/skillc/_gleam_artefacts/version_constraint_test.cache +0 -0
  271. package/build/dev/javascript/skillc/_gleam_artefacts/version_constraint_test.cache_inline +0 -0
  272. package/build/dev/javascript/skillc/_gleam_artefacts/version_constraint_test.cache_meta +0 -0
  273. package/build/dev/javascript/skillc/_gleam_artefacts/version_constraint_test.cache_warnings +0 -0
  274. package/build/dev/javascript/skillc/cli_test.mjs +461 -0
  275. package/build/dev/javascript/skillc/compiler_test.mjs +3089 -0
  276. package/build/dev/javascript/skillc/config_test.mjs +308 -0
  277. package/build/dev/javascript/skillc/gleam.main.mjs +2 -0
  278. package/build/dev/javascript/skillc/gleam.mjs +1 -0
  279. package/build/dev/javascript/skillc/importer_test.mjs +1643 -0
  280. package/build/dev/javascript/skillc/parser_test.mjs +1601 -0
  281. package/build/dev/javascript/skillc/path_test.mjs +26 -0
  282. package/build/dev/javascript/skillc/provider_test.mjs +221 -0
  283. package/build/dev/javascript/skillc/registry_test.mjs +359 -0
  284. package/build/dev/javascript/skillc/scaffold_test.mjs +405 -0
  285. package/build/dev/javascript/skillc/skillc/compiler.mjs +724 -0
  286. package/build/dev/javascript/skillc/skillc/config.mjs +172 -0
  287. package/build/dev/javascript/skillc/skillc/error.mjs +145 -0
  288. package/build/dev/javascript/skillc/skillc/fs.mjs +40 -0
  289. package/build/dev/javascript/skillc/skillc/importer.mjs +975 -0
  290. package/build/dev/javascript/skillc/skillc/parser.mjs +427 -0
  291. package/build/dev/javascript/skillc/skillc/path.mjs +52 -0
  292. package/build/dev/javascript/skillc/skillc/platform.mjs +44 -0
  293. package/build/dev/javascript/skillc/skillc/provider.mjs +86 -0
  294. package/build/dev/javascript/skillc/skillc/registry.mjs +701 -0
  295. package/build/dev/javascript/skillc/skillc/scaffold.mjs +117 -0
  296. package/build/dev/javascript/skillc/skillc/semver.mjs +293 -0
  297. package/build/dev/javascript/skillc/skillc/shell.mjs +14 -0
  298. package/build/dev/javascript/skillc/skillc/template.mjs +1177 -0
  299. package/build/dev/javascript/skillc/skillc/types.mjs +249 -0
  300. package/build/dev/javascript/skillc/skillc/version_constraint.mjs +290 -0
  301. package/build/dev/javascript/skillc/skillc/yaml.mjs +51 -0
  302. package/build/dev/javascript/skillc/skillc.mjs +873 -0
  303. package/build/dev/javascript/skillc/skillc_ffi.mjs +30 -0
  304. package/build/dev/javascript/skillc/skillc_test.mjs +5 -0
  305. package/build/dev/javascript/skillc/template_test.mjs +1638 -0
  306. package/build/dev/javascript/skillc/version_constraint_test.mjs +1325 -0
  307. package/build/dev/javascript/yay/_gleam_artefacts/yay.cache +0 -0
  308. package/build/dev/javascript/yay/_gleam_artefacts/yay.cache_inline +0 -0
  309. package/build/dev/javascript/yay/_gleam_artefacts/yay.cache_meta +0 -0
  310. package/build/dev/javascript/yay/gleam.mjs +1 -0
  311. package/build/dev/javascript/yay/yaml_ffi.erl +106 -0
  312. package/build/dev/javascript/yay/yaml_ffi.mjs +373 -0
  313. package/build/dev/javascript/yay/yay.erl +1218 -0
  314. package/build/dev/javascript/yay/yay.mjs +1403 -0
  315. package/package.json +28 -0
  316. package/src/skillc/compiler.gleam +561 -0
  317. package/src/skillc/config.gleam +91 -0
  318. package/src/skillc/error.gleam +37 -0
  319. package/src/skillc/fs.gleam +31 -0
  320. package/src/skillc/importer.gleam +709 -0
  321. package/src/skillc/parser.gleam +279 -0
  322. package/src/skillc/path.gleam +30 -0
  323. package/src/skillc/platform.gleam +25 -0
  324. package/src/skillc/provider.gleam +58 -0
  325. package/src/skillc/registry.gleam +472 -0
  326. package/src/skillc/scaffold.gleam +112 -0
  327. package/src/skillc/semver.gleam +165 -0
  328. package/src/skillc/shell.gleam +12 -0
  329. package/src/skillc/template.gleam +885 -0
  330. package/src/skillc/types.gleam +93 -0
  331. package/src/skillc/version_constraint.gleam +163 -0
  332. package/src/skillc/yaml.gleam +27 -0
  333. package/src/skillc.gleam +466 -0
  334. package/src/skillc_ffi.mjs +30 -0
@@ -0,0 +1,285 @@
1
+ import { Ok, toList, bitArraySlice, bitArraySliceToInt } from "../gleam.mjs";
2
+ import * as $int from "../gleam/int.mjs";
3
+ import * as $order from "../gleam/order.mjs";
4
+ import * as $string from "../gleam/string.mjs";
5
+ import {
6
+ bit_array_from_string as from_string,
7
+ bit_array_bit_size as bit_size,
8
+ bit_array_byte_size as byte_size,
9
+ bit_array_pad_to_bytes as pad_to_bytes,
10
+ bit_array_slice as slice,
11
+ bit_array_concat as concat,
12
+ base64_encode,
13
+ base64_decode as decode64,
14
+ base16_encode,
15
+ base16_decode,
16
+ bit_array_to_int_and_size,
17
+ bit_array_starts_with as starts_with,
18
+ bit_array_to_string as to_string,
19
+ } from "../gleam_stdlib.mjs";
20
+
21
+ export {
22
+ base16_decode,
23
+ base16_encode,
24
+ base64_encode,
25
+ bit_size,
26
+ byte_size,
27
+ concat,
28
+ from_string,
29
+ pad_to_bytes,
30
+ slice,
31
+ starts_with,
32
+ to_string,
33
+ };
34
+
35
+ /**
36
+ * Creates a new bit array by joining two bit arrays.
37
+ *
38
+ * ## Examples
39
+ *
40
+ * ```gleam
41
+ * append(to: from_string("butter"), suffix: from_string("fly"))
42
+ * // -> from_string("butterfly")
43
+ * ```
44
+ */
45
+ export function append(first, second) {
46
+ return concat(toList([first, second]));
47
+ }
48
+
49
+ /**
50
+ * Decodes a base 64 encoded string into a `BitArray`.
51
+ */
52
+ export function base64_decode(encoded) {
53
+ let _block;
54
+ let $ = byte_size(from_string(encoded)) % 4;
55
+ if ($ === 0) {
56
+ _block = encoded;
57
+ } else {
58
+ let n = $;
59
+ _block = $string.append(encoded, $string.repeat("=", 4 - n));
60
+ }
61
+ let padded = _block;
62
+ return decode64(padded);
63
+ }
64
+
65
+ /**
66
+ * Encodes a `BitArray` into a base 64 encoded string with URL and filename
67
+ * safe alphabet.
68
+ *
69
+ * If the bit array does not contain a whole number of bytes then it is padded
70
+ * with zero bits prior to being encoded.
71
+ */
72
+ export function base64_url_encode(input, padding) {
73
+ let _pipe = input;
74
+ let _pipe$1 = base64_encode(_pipe, padding);
75
+ let _pipe$2 = $string.replace(_pipe$1, "+", "-");
76
+ return $string.replace(_pipe$2, "/", "_");
77
+ }
78
+
79
+ /**
80
+ * Decodes a base 64 encoded string with URL and filename safe alphabet into a
81
+ * `BitArray`.
82
+ */
83
+ export function base64_url_decode(encoded) {
84
+ let _pipe = encoded;
85
+ let _pipe$1 = $string.replace(_pipe, "-", "+");
86
+ let _pipe$2 = $string.replace(_pipe$1, "_", "/");
87
+ return base64_decode(_pipe$2);
88
+ }
89
+
90
+ function inspect_loop(loop$input, loop$accumulator) {
91
+ while (true) {
92
+ let input = loop$input;
93
+ let accumulator = loop$accumulator;
94
+ if (input.bitSize === 0) {
95
+ return accumulator;
96
+ } else if (input.bitSize === 1) {
97
+ let x = bitArraySliceToInt(input, 0, 1, true, false);
98
+ return (accumulator + $int.to_string(x)) + ":size(1)";
99
+ } else if (input.bitSize === 2) {
100
+ let x = bitArraySliceToInt(input, 0, 2, true, false);
101
+ return (accumulator + $int.to_string(x)) + ":size(2)";
102
+ } else if (input.bitSize === 3) {
103
+ let x = bitArraySliceToInt(input, 0, 3, true, false);
104
+ return (accumulator + $int.to_string(x)) + ":size(3)";
105
+ } else if (input.bitSize === 4) {
106
+ let x = bitArraySliceToInt(input, 0, 4, true, false);
107
+ return (accumulator + $int.to_string(x)) + ":size(4)";
108
+ } else if (input.bitSize === 5) {
109
+ let x = bitArraySliceToInt(input, 0, 5, true, false);
110
+ return (accumulator + $int.to_string(x)) + ":size(5)";
111
+ } else if (input.bitSize === 6) {
112
+ let x = bitArraySliceToInt(input, 0, 6, true, false);
113
+ return (accumulator + $int.to_string(x)) + ":size(6)";
114
+ } else if (input.bitSize === 7) {
115
+ let x = bitArraySliceToInt(input, 0, 7, true, false);
116
+ return (accumulator + $int.to_string(x)) + ":size(7)";
117
+ } else if (input.bitSize >= 8) {
118
+ let x = input.byteAt(0);
119
+ let rest = bitArraySlice(input, 8);
120
+ let _block;
121
+ if (rest.bitSize === 0) {
122
+ _block = "";
123
+ } else {
124
+ _block = ", ";
125
+ }
126
+ let suffix = _block;
127
+ let accumulator$1 = (accumulator + $int.to_string(x)) + suffix;
128
+ loop$input = rest;
129
+ loop$accumulator = accumulator$1;
130
+ } else {
131
+ return accumulator;
132
+ }
133
+ }
134
+ }
135
+
136
+ /**
137
+ * Converts a bit array to a string containing the decimal value of each byte.
138
+ *
139
+ * Use this over `string.inspect` when you have a bit array you want printed
140
+ * in the array syntax even if it is valid UTF-8.
141
+ *
142
+ * ## Examples
143
+ *
144
+ * ```gleam
145
+ * inspect(<<0, 20, 0x20, 255>>)
146
+ * // -> "<<0, 20, 32, 255>>"
147
+ *
148
+ * inspect(<<100, 5:3>>)
149
+ * // -> "<<100, 5:size(3)>>"
150
+ * ```
151
+ */
152
+ export function inspect(input) {
153
+ return inspect_loop(input, "<<") + ">>";
154
+ }
155
+
156
+ /**
157
+ * Compare two bit arrays as sequences of bytes.
158
+ *
159
+ * ## Examples
160
+ *
161
+ * ```gleam
162
+ * compare(<<1>>, <<2>>)
163
+ * // -> Lt
164
+ *
165
+ * compare(<<"AB":utf8>>, <<"AA":utf8>>)
166
+ * // -> Gt
167
+ *
168
+ * compare(<<1, 2:size(2)>>, with: <<1, 2:size(2)>>)
169
+ * // -> Eq
170
+ * ```
171
+ */
172
+ export function compare(loop$a, loop$b) {
173
+ while (true) {
174
+ let a = loop$a;
175
+ let b = loop$b;
176
+ if (a.bitSize >= 8) {
177
+ if (b.bitSize >= 8) {
178
+ let first_byte = a.byteAt(0);
179
+ let first_rest = bitArraySlice(a, 8);
180
+ let second_byte = b.byteAt(0);
181
+ let second_rest = bitArraySlice(b, 8);
182
+ let f = first_byte;
183
+ let s = second_byte;
184
+ if (f > s) {
185
+ return new $order.Gt();
186
+ } else {
187
+ let f = first_byte;
188
+ let s = second_byte;
189
+ if (f < s) {
190
+ return new $order.Lt();
191
+ } else {
192
+ loop$a = first_rest;
193
+ loop$b = second_rest;
194
+ }
195
+ }
196
+ } else if (b.bitSize === 0) {
197
+ return new $order.Gt();
198
+ } else {
199
+ let first = a;
200
+ let second = b;
201
+ let $ = bit_array_to_int_and_size(first);
202
+ let $1 = bit_array_to_int_and_size(second);
203
+ let a$1 = $[0];
204
+ let b$1 = $1[0];
205
+ if (a$1 > b$1) {
206
+ return new $order.Gt();
207
+ } else {
208
+ let a$1 = $[0];
209
+ let b$1 = $1[0];
210
+ if (a$1 < b$1) {
211
+ return new $order.Lt();
212
+ } else {
213
+ let size_a = $[1];
214
+ let size_b = $1[1];
215
+ if (size_a > size_b) {
216
+ return new $order.Gt();
217
+ } else {
218
+ let size_a = $[1];
219
+ let size_b = $1[1];
220
+ if (size_a < size_b) {
221
+ return new $order.Lt();
222
+ } else {
223
+ return new $order.Eq();
224
+ }
225
+ }
226
+ }
227
+ }
228
+ }
229
+ } else if (b.bitSize === 0) {
230
+ if (a.bitSize === 0) {
231
+ return new $order.Eq();
232
+ } else {
233
+ return new $order.Gt();
234
+ }
235
+ } else if (a.bitSize === 0) {
236
+ return new $order.Lt();
237
+ } else {
238
+ let first = a;
239
+ let second = b;
240
+ let $ = bit_array_to_int_and_size(first);
241
+ let $1 = bit_array_to_int_and_size(second);
242
+ let a$1 = $[0];
243
+ let b$1 = $1[0];
244
+ if (a$1 > b$1) {
245
+ return new $order.Gt();
246
+ } else {
247
+ let a$1 = $[0];
248
+ let b$1 = $1[0];
249
+ if (a$1 < b$1) {
250
+ return new $order.Lt();
251
+ } else {
252
+ let size_a = $[1];
253
+ let size_b = $1[1];
254
+ if (size_a > size_b) {
255
+ return new $order.Gt();
256
+ } else {
257
+ let size_a = $[1];
258
+ let size_b = $1[1];
259
+ if (size_a < size_b) {
260
+ return new $order.Lt();
261
+ } else {
262
+ return new $order.Eq();
263
+ }
264
+ }
265
+ }
266
+ }
267
+ }
268
+ }
269
+ }
270
+
271
+ /**
272
+ * Tests to see whether a bit array is valid UTF-8.
273
+ */
274
+ export function is_utf8(bits) {
275
+ return is_utf8_loop(bits);
276
+ }
277
+
278
+ function is_utf8_loop(bits) {
279
+ let $ = to_string(bits);
280
+ if ($ instanceof Ok) {
281
+ return true;
282
+ } else {
283
+ return false;
284
+ }
285
+ }
@@ -0,0 +1,313 @@
1
+ /**
2
+ * Returns the and of two bools, but it evaluates both arguments.
3
+ *
4
+ * It's the function equivalent of the `&&` operator.
5
+ * This function is useful in higher order functions or pipes.
6
+ *
7
+ * ## Examples
8
+ *
9
+ * ```gleam
10
+ * and(True, True)
11
+ * // -> True
12
+ * ```
13
+ *
14
+ * ```gleam
15
+ * and(False, True)
16
+ * // -> False
17
+ * ```
18
+ *
19
+ * ```gleam
20
+ * False |> and(True)
21
+ * // -> False
22
+ * ```
23
+ */
24
+ export function and(a, b) {
25
+ return a && b;
26
+ }
27
+
28
+ /**
29
+ * Returns the or of two bools, but it evaluates both arguments.
30
+ *
31
+ * It's the function equivalent of the `||` operator.
32
+ * This function is useful in higher order functions or pipes.
33
+ *
34
+ * ## Examples
35
+ *
36
+ * ```gleam
37
+ * or(True, True)
38
+ * // -> True
39
+ * ```
40
+ *
41
+ * ```gleam
42
+ * or(False, True)
43
+ * // -> True
44
+ * ```
45
+ *
46
+ * ```gleam
47
+ * False |> or(True)
48
+ * // -> True
49
+ * ```
50
+ */
51
+ export function or(a, b) {
52
+ return a || b;
53
+ }
54
+
55
+ /**
56
+ * Returns the opposite bool value.
57
+ *
58
+ * This is the same as the `!` or `not` operators in some other languages.
59
+ *
60
+ * ## Examples
61
+ *
62
+ * ```gleam
63
+ * negate(True)
64
+ * // -> False
65
+ * ```
66
+ *
67
+ * ```gleam
68
+ * negate(False)
69
+ * // -> True
70
+ * ```
71
+ */
72
+ export function negate(bool) {
73
+ return !bool;
74
+ }
75
+
76
+ /**
77
+ * Returns the nor of two bools.
78
+ *
79
+ * ## Examples
80
+ *
81
+ * ```gleam
82
+ * nor(False, False)
83
+ * // -> True
84
+ * ```
85
+ *
86
+ * ```gleam
87
+ * nor(False, True)
88
+ * // -> False
89
+ * ```
90
+ *
91
+ * ```gleam
92
+ * nor(True, False)
93
+ * // -> False
94
+ * ```
95
+ *
96
+ * ```gleam
97
+ * nor(True, True)
98
+ * // -> False
99
+ * ```
100
+ */
101
+ export function nor(a, b) {
102
+ return !(a || b);
103
+ }
104
+
105
+ /**
106
+ * Returns the nand of two bools.
107
+ *
108
+ * ## Examples
109
+ *
110
+ * ```gleam
111
+ * nand(False, False)
112
+ * // -> True
113
+ * ```
114
+ *
115
+ * ```gleam
116
+ * nand(False, True)
117
+ * // -> True
118
+ * ```
119
+ *
120
+ * ```gleam
121
+ * nand(True, False)
122
+ * // -> True
123
+ * ```
124
+ *
125
+ * ```gleam
126
+ * nand(True, True)
127
+ * // -> False
128
+ * ```
129
+ */
130
+ export function nand(a, b) {
131
+ return !(a && b);
132
+ }
133
+
134
+ /**
135
+ * Returns the exclusive or of two bools.
136
+ *
137
+ * ## Examples
138
+ *
139
+ * ```gleam
140
+ * exclusive_or(False, False)
141
+ * // -> False
142
+ * ```
143
+ *
144
+ * ```gleam
145
+ * exclusive_or(False, True)
146
+ * // -> True
147
+ * ```
148
+ *
149
+ * ```gleam
150
+ * exclusive_or(True, False)
151
+ * // -> True
152
+ * ```
153
+ *
154
+ * ```gleam
155
+ * exclusive_or(True, True)
156
+ * // -> False
157
+ * ```
158
+ */
159
+ export function exclusive_or(a, b) {
160
+ return a !== b;
161
+ }
162
+
163
+ /**
164
+ * Returns the exclusive nor of two bools.
165
+ *
166
+ * ## Examples
167
+ *
168
+ * ```gleam
169
+ * exclusive_nor(False, False)
170
+ * // -> True
171
+ * ```
172
+ *
173
+ * ```gleam
174
+ * exclusive_nor(False, True)
175
+ * // -> False
176
+ * ```
177
+ *
178
+ * ```gleam
179
+ * exclusive_nor(True, False)
180
+ * // -> False
181
+ * ```
182
+ *
183
+ * ```gleam
184
+ * exclusive_nor(True, True)
185
+ * // -> True
186
+ * ```
187
+ */
188
+ export function exclusive_nor(a, b) {
189
+ return a === b;
190
+ }
191
+
192
+ /**
193
+ * Returns a string representation of the given bool.
194
+ *
195
+ * ## Examples
196
+ *
197
+ * ```gleam
198
+ * to_string(True)
199
+ * // -> "True"
200
+ * ```
201
+ *
202
+ * ```gleam
203
+ * to_string(False)
204
+ * // -> "False"
205
+ * ```
206
+ */
207
+ export function to_string(bool) {
208
+ if (bool) {
209
+ return "True";
210
+ } else {
211
+ return "False";
212
+ }
213
+ }
214
+
215
+ /**
216
+ * Run a callback function if the given bool is `False`, otherwise return a
217
+ * default value.
218
+ *
219
+ * With a `use` expression this function can simulate the early-return pattern
220
+ * found in some other programming languages.
221
+ *
222
+ * In a procedural language:
223
+ *
224
+ * ```js
225
+ * if (predicate) return value;
226
+ * // ...
227
+ * ```
228
+ *
229
+ * In Gleam with a `use` expression:
230
+ *
231
+ * ```gleam
232
+ * use <- guard(when: predicate, return: value)
233
+ * // ...
234
+ * ```
235
+ *
236
+ * Like everything in Gleam `use` is an expression, so it short circuits the
237
+ * current block, not the entire function. As a result you can assign the value
238
+ * to a variable:
239
+ *
240
+ * ```gleam
241
+ * let x = {
242
+ * use <- guard(when: predicate, return: value)
243
+ * // ...
244
+ * }
245
+ * ```
246
+ *
247
+ * Note that unlike in procedural languages the `return` value is evaluated
248
+ * even when the predicate is `False`, so it is advisable not to perform
249
+ * expensive computation nor side-effects there.
250
+ *
251
+ *
252
+ * ## Examples
253
+ *
254
+ * ```gleam
255
+ * let name = ""
256
+ * use <- guard(when: name == "", return: "Welcome!")
257
+ * "Hello, " <> name
258
+ * // -> "Welcome!"
259
+ * ```
260
+ *
261
+ * ```gleam
262
+ * let name = "Kamaka"
263
+ * use <- guard(when: name == "", return: "Welcome!")
264
+ * "Hello, " <> name
265
+ * // -> "Hello, Kamaka"
266
+ * ```
267
+ */
268
+ export function guard(requirement, consequence, alternative) {
269
+ if (requirement) {
270
+ return consequence;
271
+ } else {
272
+ return alternative();
273
+ }
274
+ }
275
+
276
+ /**
277
+ * Runs a callback function if the given bool is `True`, otherwise runs an
278
+ * alternative callback function.
279
+ *
280
+ * Useful when further computation should be delayed regardless of the given
281
+ * bool's value.
282
+ *
283
+ * See [`guard`](#guard) for more info.
284
+ *
285
+ * ## Examples
286
+ *
287
+ * ```gleam
288
+ * let name = "Kamaka"
289
+ * let inquiry = fn() { "How may we address you?" }
290
+ * use <- lazy_guard(when: name == "", return: inquiry)
291
+ * "Hello, " <> name
292
+ * // -> "Hello, Kamaka"
293
+ * ```
294
+ *
295
+ * ```gleam
296
+ * import gleam/int
297
+ *
298
+ * let name = ""
299
+ * let greeting = fn() { "Hello, " <> name }
300
+ * use <- lazy_guard(when: name == "", otherwise: greeting)
301
+ * let number = int.random(99)
302
+ * let name = "User " <> int.to_string(number)
303
+ * "Welcome, " <> name
304
+ * // -> "Welcome, User 54"
305
+ * ```
306
+ */
307
+ export function lazy_guard(requirement, consequence, alternative) {
308
+ if (requirement) {
309
+ return consequence();
310
+ } else {
311
+ return alternative();
312
+ }
313
+ }