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,1155 @@
1
+ import {
2
+ Ok,
3
+ Error,
4
+ toList,
5
+ Empty as $Empty,
6
+ prepend as listPrepend,
7
+ CustomType as $CustomType,
8
+ isEqual,
9
+ } from "../gleam.mjs";
10
+ import * as $int from "../gleam/int.mjs";
11
+ import * as $list from "../gleam/list.mjs";
12
+ import * as $option from "../gleam/option.mjs";
13
+ import { None, Some } from "../gleam/option.mjs";
14
+ import * as $string from "../gleam/string.mjs";
15
+ import * as $string_tree from "../gleam/string_tree.mjs";
16
+ import {
17
+ pop_codeunit,
18
+ string_codeunit_slice as codeunit_slice,
19
+ parse_query,
20
+ percent_encode,
21
+ percent_decode,
22
+ } from "../gleam_stdlib.mjs";
23
+
24
+ export { parse_query, percent_decode, percent_encode };
25
+
26
+ export class Uri extends $CustomType {
27
+ constructor(scheme, userinfo, host, port, path, query, fragment) {
28
+ super();
29
+ this.scheme = scheme;
30
+ this.userinfo = userinfo;
31
+ this.host = host;
32
+ this.port = port;
33
+ this.path = path;
34
+ this.query = query;
35
+ this.fragment = fragment;
36
+ }
37
+ }
38
+ export const Uri$Uri = (scheme, userinfo, host, port, path, query, fragment) =>
39
+ new Uri(scheme, userinfo, host, port, path, query, fragment);
40
+ export const Uri$isUri = (value) => value instanceof Uri;
41
+ export const Uri$Uri$scheme = (value) => value.scheme;
42
+ export const Uri$Uri$0 = (value) => value.scheme;
43
+ export const Uri$Uri$userinfo = (value) => value.userinfo;
44
+ export const Uri$Uri$1 = (value) => value.userinfo;
45
+ export const Uri$Uri$host = (value) => value.host;
46
+ export const Uri$Uri$2 = (value) => value.host;
47
+ export const Uri$Uri$port = (value) => value.port;
48
+ export const Uri$Uri$3 = (value) => value.port;
49
+ export const Uri$Uri$path = (value) => value.path;
50
+ export const Uri$Uri$4 = (value) => value.path;
51
+ export const Uri$Uri$query = (value) => value.query;
52
+ export const Uri$Uri$5 = (value) => value.query;
53
+ export const Uri$Uri$fragment = (value) => value.fragment;
54
+ export const Uri$Uri$6 = (value) => value.fragment;
55
+
56
+ /**
57
+ * Constant representing an empty URI, equivalent to "".
58
+ *
59
+ * ## Examples
60
+ *
61
+ * ```gleam
62
+ * let uri = Uri(..empty, scheme: Some("https"), host: Some("example.com"))
63
+ * // -> Uri(
64
+ * // scheme: Some("https"),
65
+ * // userinfo: None,
66
+ * // host: Some("example.com"),
67
+ * // port: None,
68
+ * // path: "",
69
+ * // query: None,
70
+ * // fragment: None,
71
+ * // )
72
+ * ```
73
+ */
74
+ export const empty = /* @__PURE__ */ new Uri(
75
+ /* @__PURE__ */ new None(),
76
+ /* @__PURE__ */ new None(),
77
+ /* @__PURE__ */ new None(),
78
+ /* @__PURE__ */ new None(),
79
+ "",
80
+ /* @__PURE__ */ new None(),
81
+ /* @__PURE__ */ new None(),
82
+ );
83
+
84
+ function is_valid_host_within_brackets_char(char) {
85
+ return (((((48 >= char) && (char <= 57)) || ((65 >= char) && (char <= 90))) || ((97 >= char) && (char <= 122))) || (char === 58)) || (char === 46);
86
+ }
87
+
88
+ function parse_fragment(rest, pieces) {
89
+ return new Ok(
90
+ new Uri(
91
+ pieces.scheme,
92
+ pieces.userinfo,
93
+ pieces.host,
94
+ pieces.port,
95
+ pieces.path,
96
+ pieces.query,
97
+ new Some(rest),
98
+ ),
99
+ );
100
+ }
101
+
102
+ function parse_query_with_question_mark_loop(
103
+ loop$original,
104
+ loop$uri_string,
105
+ loop$pieces,
106
+ loop$size
107
+ ) {
108
+ while (true) {
109
+ let original = loop$original;
110
+ let uri_string = loop$uri_string;
111
+ let pieces = loop$pieces;
112
+ let size = loop$size;
113
+ if (uri_string.startsWith("#")) {
114
+ if (size === 0) {
115
+ let rest = uri_string.slice(1);
116
+ return parse_fragment(rest, pieces);
117
+ } else {
118
+ let rest = uri_string.slice(1);
119
+ let query = codeunit_slice(original, 0, size);
120
+ let pieces$1 = new Uri(
121
+ pieces.scheme,
122
+ pieces.userinfo,
123
+ pieces.host,
124
+ pieces.port,
125
+ pieces.path,
126
+ new Some(query),
127
+ pieces.fragment,
128
+ );
129
+ return parse_fragment(rest, pieces$1);
130
+ }
131
+ } else if (uri_string === "") {
132
+ return new Ok(
133
+ new Uri(
134
+ pieces.scheme,
135
+ pieces.userinfo,
136
+ pieces.host,
137
+ pieces.port,
138
+ pieces.path,
139
+ new Some(original),
140
+ pieces.fragment,
141
+ ),
142
+ );
143
+ } else {
144
+ let $ = pop_codeunit(uri_string);
145
+ let rest;
146
+ rest = $[1];
147
+ loop$original = original;
148
+ loop$uri_string = rest;
149
+ loop$pieces = pieces;
150
+ loop$size = size + 1;
151
+ }
152
+ }
153
+ }
154
+
155
+ function parse_query_with_question_mark(uri_string, pieces) {
156
+ return parse_query_with_question_mark_loop(uri_string, uri_string, pieces, 0);
157
+ }
158
+
159
+ function parse_path_loop(loop$original, loop$uri_string, loop$pieces, loop$size) {
160
+ while (true) {
161
+ let original = loop$original;
162
+ let uri_string = loop$uri_string;
163
+ let pieces = loop$pieces;
164
+ let size = loop$size;
165
+ if (uri_string.startsWith("?")) {
166
+ let rest = uri_string.slice(1);
167
+ let path = codeunit_slice(original, 0, size);
168
+ let pieces$1 = new Uri(
169
+ pieces.scheme,
170
+ pieces.userinfo,
171
+ pieces.host,
172
+ pieces.port,
173
+ path,
174
+ pieces.query,
175
+ pieces.fragment,
176
+ );
177
+ return parse_query_with_question_mark(rest, pieces$1);
178
+ } else if (uri_string.startsWith("#")) {
179
+ let rest = uri_string.slice(1);
180
+ let path = codeunit_slice(original, 0, size);
181
+ let pieces$1 = new Uri(
182
+ pieces.scheme,
183
+ pieces.userinfo,
184
+ pieces.host,
185
+ pieces.port,
186
+ path,
187
+ pieces.query,
188
+ pieces.fragment,
189
+ );
190
+ return parse_fragment(rest, pieces$1);
191
+ } else if (uri_string === "") {
192
+ return new Ok(
193
+ new Uri(
194
+ pieces.scheme,
195
+ pieces.userinfo,
196
+ pieces.host,
197
+ pieces.port,
198
+ original,
199
+ pieces.query,
200
+ pieces.fragment,
201
+ ),
202
+ );
203
+ } else {
204
+ let $ = pop_codeunit(uri_string);
205
+ let rest;
206
+ rest = $[1];
207
+ loop$original = original;
208
+ loop$uri_string = rest;
209
+ loop$pieces = pieces;
210
+ loop$size = size + 1;
211
+ }
212
+ }
213
+ }
214
+
215
+ function parse_path(uri_string, pieces) {
216
+ return parse_path_loop(uri_string, uri_string, pieces, 0);
217
+ }
218
+
219
+ function parse_port_loop(loop$uri_string, loop$pieces, loop$port) {
220
+ while (true) {
221
+ let uri_string = loop$uri_string;
222
+ let pieces = loop$pieces;
223
+ let port = loop$port;
224
+ if (uri_string.startsWith("0")) {
225
+ let rest = uri_string.slice(1);
226
+ loop$uri_string = rest;
227
+ loop$pieces = pieces;
228
+ loop$port = port * 10;
229
+ } else if (uri_string.startsWith("1")) {
230
+ let rest = uri_string.slice(1);
231
+ loop$uri_string = rest;
232
+ loop$pieces = pieces;
233
+ loop$port = port * 10 + 1;
234
+ } else if (uri_string.startsWith("2")) {
235
+ let rest = uri_string.slice(1);
236
+ loop$uri_string = rest;
237
+ loop$pieces = pieces;
238
+ loop$port = port * 10 + 2;
239
+ } else if (uri_string.startsWith("3")) {
240
+ let rest = uri_string.slice(1);
241
+ loop$uri_string = rest;
242
+ loop$pieces = pieces;
243
+ loop$port = port * 10 + 3;
244
+ } else if (uri_string.startsWith("4")) {
245
+ let rest = uri_string.slice(1);
246
+ loop$uri_string = rest;
247
+ loop$pieces = pieces;
248
+ loop$port = port * 10 + 4;
249
+ } else if (uri_string.startsWith("5")) {
250
+ let rest = uri_string.slice(1);
251
+ loop$uri_string = rest;
252
+ loop$pieces = pieces;
253
+ loop$port = port * 10 + 5;
254
+ } else if (uri_string.startsWith("6")) {
255
+ let rest = uri_string.slice(1);
256
+ loop$uri_string = rest;
257
+ loop$pieces = pieces;
258
+ loop$port = port * 10 + 6;
259
+ } else if (uri_string.startsWith("7")) {
260
+ let rest = uri_string.slice(1);
261
+ loop$uri_string = rest;
262
+ loop$pieces = pieces;
263
+ loop$port = port * 10 + 7;
264
+ } else if (uri_string.startsWith("8")) {
265
+ let rest = uri_string.slice(1);
266
+ loop$uri_string = rest;
267
+ loop$pieces = pieces;
268
+ loop$port = port * 10 + 8;
269
+ } else if (uri_string.startsWith("9")) {
270
+ let rest = uri_string.slice(1);
271
+ loop$uri_string = rest;
272
+ loop$pieces = pieces;
273
+ loop$port = port * 10 + 9;
274
+ } else if (uri_string.startsWith("?")) {
275
+ let rest = uri_string.slice(1);
276
+ let pieces$1 = new Uri(
277
+ pieces.scheme,
278
+ pieces.userinfo,
279
+ pieces.host,
280
+ new Some(port),
281
+ pieces.path,
282
+ pieces.query,
283
+ pieces.fragment,
284
+ );
285
+ return parse_query_with_question_mark(rest, pieces$1);
286
+ } else if (uri_string.startsWith("#")) {
287
+ let rest = uri_string.slice(1);
288
+ let pieces$1 = new Uri(
289
+ pieces.scheme,
290
+ pieces.userinfo,
291
+ pieces.host,
292
+ new Some(port),
293
+ pieces.path,
294
+ pieces.query,
295
+ pieces.fragment,
296
+ );
297
+ return parse_fragment(rest, pieces$1);
298
+ } else if (uri_string.startsWith("/")) {
299
+ let pieces$1 = new Uri(
300
+ pieces.scheme,
301
+ pieces.userinfo,
302
+ pieces.host,
303
+ new Some(port),
304
+ pieces.path,
305
+ pieces.query,
306
+ pieces.fragment,
307
+ );
308
+ return parse_path(uri_string, pieces$1);
309
+ } else if (uri_string === "") {
310
+ return new Ok(
311
+ new Uri(
312
+ pieces.scheme,
313
+ pieces.userinfo,
314
+ pieces.host,
315
+ new Some(port),
316
+ pieces.path,
317
+ pieces.query,
318
+ pieces.fragment,
319
+ ),
320
+ );
321
+ } else {
322
+ return new Error(undefined);
323
+ }
324
+ }
325
+ }
326
+
327
+ function parse_port(uri_string, pieces) {
328
+ if (uri_string.startsWith(":0")) {
329
+ let rest = uri_string.slice(2);
330
+ return parse_port_loop(rest, pieces, 0);
331
+ } else if (uri_string.startsWith(":1")) {
332
+ let rest = uri_string.slice(2);
333
+ return parse_port_loop(rest, pieces, 1);
334
+ } else if (uri_string.startsWith(":2")) {
335
+ let rest = uri_string.slice(2);
336
+ return parse_port_loop(rest, pieces, 2);
337
+ } else if (uri_string.startsWith(":3")) {
338
+ let rest = uri_string.slice(2);
339
+ return parse_port_loop(rest, pieces, 3);
340
+ } else if (uri_string.startsWith(":4")) {
341
+ let rest = uri_string.slice(2);
342
+ return parse_port_loop(rest, pieces, 4);
343
+ } else if (uri_string.startsWith(":5")) {
344
+ let rest = uri_string.slice(2);
345
+ return parse_port_loop(rest, pieces, 5);
346
+ } else if (uri_string.startsWith(":6")) {
347
+ let rest = uri_string.slice(2);
348
+ return parse_port_loop(rest, pieces, 6);
349
+ } else if (uri_string.startsWith(":7")) {
350
+ let rest = uri_string.slice(2);
351
+ return parse_port_loop(rest, pieces, 7);
352
+ } else if (uri_string.startsWith(":8")) {
353
+ let rest = uri_string.slice(2);
354
+ return parse_port_loop(rest, pieces, 8);
355
+ } else if (uri_string.startsWith(":9")) {
356
+ let rest = uri_string.slice(2);
357
+ return parse_port_loop(rest, pieces, 9);
358
+ } else if (uri_string === ":") {
359
+ return new Ok(pieces);
360
+ } else if (uri_string === "") {
361
+ return new Ok(pieces);
362
+ } else if (uri_string.startsWith("?")) {
363
+ let rest = uri_string.slice(1);
364
+ return parse_query_with_question_mark(rest, pieces);
365
+ } else if (uri_string.startsWith(":?")) {
366
+ let rest = uri_string.slice(2);
367
+ return parse_query_with_question_mark(rest, pieces);
368
+ } else if (uri_string.startsWith("#")) {
369
+ let rest = uri_string.slice(1);
370
+ return parse_fragment(rest, pieces);
371
+ } else if (uri_string.startsWith(":#")) {
372
+ let rest = uri_string.slice(2);
373
+ return parse_fragment(rest, pieces);
374
+ } else if (uri_string.startsWith("/")) {
375
+ return parse_path(uri_string, pieces);
376
+ } else if (uri_string.startsWith(":")) {
377
+ let rest = uri_string.slice(1);
378
+ if (rest.startsWith("/")) {
379
+ return parse_path(rest, pieces);
380
+ } else {
381
+ return new Error(undefined);
382
+ }
383
+ } else {
384
+ return new Error(undefined);
385
+ }
386
+ }
387
+
388
+ function parse_host_outside_of_brackets_loop(
389
+ loop$original,
390
+ loop$uri_string,
391
+ loop$pieces,
392
+ loop$size
393
+ ) {
394
+ while (true) {
395
+ let original = loop$original;
396
+ let uri_string = loop$uri_string;
397
+ let pieces = loop$pieces;
398
+ let size = loop$size;
399
+ if (uri_string === "") {
400
+ return new Ok(
401
+ new Uri(
402
+ pieces.scheme,
403
+ pieces.userinfo,
404
+ new Some(original),
405
+ pieces.port,
406
+ pieces.path,
407
+ pieces.query,
408
+ pieces.fragment,
409
+ ),
410
+ );
411
+ } else if (uri_string.startsWith(":")) {
412
+ let host = codeunit_slice(original, 0, size);
413
+ let pieces$1 = new Uri(
414
+ pieces.scheme,
415
+ pieces.userinfo,
416
+ new Some(host),
417
+ pieces.port,
418
+ pieces.path,
419
+ pieces.query,
420
+ pieces.fragment,
421
+ );
422
+ return parse_port(uri_string, pieces$1);
423
+ } else if (uri_string.startsWith("/")) {
424
+ let host = codeunit_slice(original, 0, size);
425
+ let pieces$1 = new Uri(
426
+ pieces.scheme,
427
+ pieces.userinfo,
428
+ new Some(host),
429
+ pieces.port,
430
+ pieces.path,
431
+ pieces.query,
432
+ pieces.fragment,
433
+ );
434
+ return parse_path(uri_string, pieces$1);
435
+ } else if (uri_string.startsWith("?")) {
436
+ let rest = uri_string.slice(1);
437
+ let host = codeunit_slice(original, 0, size);
438
+ let pieces$1 = new Uri(
439
+ pieces.scheme,
440
+ pieces.userinfo,
441
+ new Some(host),
442
+ pieces.port,
443
+ pieces.path,
444
+ pieces.query,
445
+ pieces.fragment,
446
+ );
447
+ return parse_query_with_question_mark(rest, pieces$1);
448
+ } else if (uri_string.startsWith("#")) {
449
+ let rest = uri_string.slice(1);
450
+ let host = codeunit_slice(original, 0, size);
451
+ let pieces$1 = new Uri(
452
+ pieces.scheme,
453
+ pieces.userinfo,
454
+ new Some(host),
455
+ pieces.port,
456
+ pieces.path,
457
+ pieces.query,
458
+ pieces.fragment,
459
+ );
460
+ return parse_fragment(rest, pieces$1);
461
+ } else {
462
+ let $ = pop_codeunit(uri_string);
463
+ let rest;
464
+ rest = $[1];
465
+ loop$original = original;
466
+ loop$uri_string = rest;
467
+ loop$pieces = pieces;
468
+ loop$size = size + 1;
469
+ }
470
+ }
471
+ }
472
+
473
+ function parse_host_within_brackets_loop(
474
+ loop$original,
475
+ loop$uri_string,
476
+ loop$pieces,
477
+ loop$size
478
+ ) {
479
+ while (true) {
480
+ let original = loop$original;
481
+ let uri_string = loop$uri_string;
482
+ let pieces = loop$pieces;
483
+ let size = loop$size;
484
+ if (uri_string === "") {
485
+ return new Ok(
486
+ new Uri(
487
+ pieces.scheme,
488
+ pieces.userinfo,
489
+ new Some(uri_string),
490
+ pieces.port,
491
+ pieces.path,
492
+ pieces.query,
493
+ pieces.fragment,
494
+ ),
495
+ );
496
+ } else if (uri_string.startsWith("]")) {
497
+ if (size === 0) {
498
+ let rest = uri_string.slice(1);
499
+ return parse_port(rest, pieces);
500
+ } else {
501
+ let rest = uri_string.slice(1);
502
+ let host = codeunit_slice(original, 0, size + 1);
503
+ let pieces$1 = new Uri(
504
+ pieces.scheme,
505
+ pieces.userinfo,
506
+ new Some(host),
507
+ pieces.port,
508
+ pieces.path,
509
+ pieces.query,
510
+ pieces.fragment,
511
+ );
512
+ return parse_port(rest, pieces$1);
513
+ }
514
+ } else if (uri_string.startsWith("/")) {
515
+ if (size === 0) {
516
+ return parse_path(uri_string, pieces);
517
+ } else {
518
+ let host = codeunit_slice(original, 0, size);
519
+ let pieces$1 = new Uri(
520
+ pieces.scheme,
521
+ pieces.userinfo,
522
+ new Some(host),
523
+ pieces.port,
524
+ pieces.path,
525
+ pieces.query,
526
+ pieces.fragment,
527
+ );
528
+ return parse_path(uri_string, pieces$1);
529
+ }
530
+ } else if (uri_string.startsWith("?")) {
531
+ if (size === 0) {
532
+ let rest = uri_string.slice(1);
533
+ return parse_query_with_question_mark(rest, pieces);
534
+ } else {
535
+ let rest = uri_string.slice(1);
536
+ let host = codeunit_slice(original, 0, size);
537
+ let pieces$1 = new Uri(
538
+ pieces.scheme,
539
+ pieces.userinfo,
540
+ new Some(host),
541
+ pieces.port,
542
+ pieces.path,
543
+ pieces.query,
544
+ pieces.fragment,
545
+ );
546
+ return parse_query_with_question_mark(rest, pieces$1);
547
+ }
548
+ } else if (uri_string.startsWith("#")) {
549
+ if (size === 0) {
550
+ let rest = uri_string.slice(1);
551
+ return parse_fragment(rest, pieces);
552
+ } else {
553
+ let rest = uri_string.slice(1);
554
+ let host = codeunit_slice(original, 0, size);
555
+ let pieces$1 = new Uri(
556
+ pieces.scheme,
557
+ pieces.userinfo,
558
+ new Some(host),
559
+ pieces.port,
560
+ pieces.path,
561
+ pieces.query,
562
+ pieces.fragment,
563
+ );
564
+ return parse_fragment(rest, pieces$1);
565
+ }
566
+ } else {
567
+ let $ = pop_codeunit(uri_string);
568
+ let char;
569
+ let rest;
570
+ char = $[0];
571
+ rest = $[1];
572
+ let $1 = is_valid_host_within_brackets_char(char);
573
+ if ($1) {
574
+ loop$original = original;
575
+ loop$uri_string = rest;
576
+ loop$pieces = pieces;
577
+ loop$size = size + 1;
578
+ } else {
579
+ return parse_host_outside_of_brackets_loop(
580
+ original,
581
+ original,
582
+ pieces,
583
+ 0,
584
+ );
585
+ }
586
+ }
587
+ }
588
+ }
589
+
590
+ function parse_host_within_brackets(uri_string, pieces) {
591
+ return parse_host_within_brackets_loop(uri_string, uri_string, pieces, 0);
592
+ }
593
+
594
+ function parse_host_outside_of_brackets(uri_string, pieces) {
595
+ return parse_host_outside_of_brackets_loop(uri_string, uri_string, pieces, 0);
596
+ }
597
+
598
+ function parse_host(uri_string, pieces) {
599
+ if (uri_string.startsWith("[")) {
600
+ return parse_host_within_brackets(uri_string, pieces);
601
+ } else if (uri_string.startsWith(":")) {
602
+ let pieces$1 = new Uri(
603
+ pieces.scheme,
604
+ pieces.userinfo,
605
+ new Some(""),
606
+ pieces.port,
607
+ pieces.path,
608
+ pieces.query,
609
+ pieces.fragment,
610
+ );
611
+ return parse_port(uri_string, pieces$1);
612
+ } else if (uri_string === "") {
613
+ return new Ok(
614
+ new Uri(
615
+ pieces.scheme,
616
+ pieces.userinfo,
617
+ new Some(""),
618
+ pieces.port,
619
+ pieces.path,
620
+ pieces.query,
621
+ pieces.fragment,
622
+ ),
623
+ );
624
+ } else {
625
+ return parse_host_outside_of_brackets(uri_string, pieces);
626
+ }
627
+ }
628
+
629
+ function parse_userinfo_loop(
630
+ loop$original,
631
+ loop$uri_string,
632
+ loop$pieces,
633
+ loop$size
634
+ ) {
635
+ while (true) {
636
+ let original = loop$original;
637
+ let uri_string = loop$uri_string;
638
+ let pieces = loop$pieces;
639
+ let size = loop$size;
640
+ if (uri_string.startsWith("@")) {
641
+ if (size === 0) {
642
+ let rest = uri_string.slice(1);
643
+ return parse_host(rest, pieces);
644
+ } else {
645
+ let rest = uri_string.slice(1);
646
+ let userinfo = codeunit_slice(original, 0, size);
647
+ let pieces$1 = new Uri(
648
+ pieces.scheme,
649
+ new Some(userinfo),
650
+ pieces.host,
651
+ pieces.port,
652
+ pieces.path,
653
+ pieces.query,
654
+ pieces.fragment,
655
+ );
656
+ return parse_host(rest, pieces$1);
657
+ }
658
+ } else if (uri_string === "") {
659
+ return parse_host(original, pieces);
660
+ } else if (uri_string.startsWith("/")) {
661
+ return parse_host(original, pieces);
662
+ } else if (uri_string.startsWith("?")) {
663
+ return parse_host(original, pieces);
664
+ } else if (uri_string.startsWith("#")) {
665
+ return parse_host(original, pieces);
666
+ } else {
667
+ let $ = pop_codeunit(uri_string);
668
+ let rest;
669
+ rest = $[1];
670
+ loop$original = original;
671
+ loop$uri_string = rest;
672
+ loop$pieces = pieces;
673
+ loop$size = size + 1;
674
+ }
675
+ }
676
+ }
677
+
678
+ function parse_authority_pieces(string, pieces) {
679
+ return parse_userinfo_loop(string, string, pieces, 0);
680
+ }
681
+
682
+ function parse_authority_with_slashes(uri_string, pieces) {
683
+ if (uri_string === "//") {
684
+ return new Ok(
685
+ new Uri(
686
+ pieces.scheme,
687
+ pieces.userinfo,
688
+ new Some(""),
689
+ pieces.port,
690
+ pieces.path,
691
+ pieces.query,
692
+ pieces.fragment,
693
+ ),
694
+ );
695
+ } else if (uri_string.startsWith("//")) {
696
+ let rest = uri_string.slice(2);
697
+ return parse_authority_pieces(rest, pieces);
698
+ } else {
699
+ return parse_path(uri_string, pieces);
700
+ }
701
+ }
702
+
703
+ function parse_scheme_loop(
704
+ loop$original,
705
+ loop$uri_string,
706
+ loop$pieces,
707
+ loop$size
708
+ ) {
709
+ while (true) {
710
+ let original = loop$original;
711
+ let uri_string = loop$uri_string;
712
+ let pieces = loop$pieces;
713
+ let size = loop$size;
714
+ if (uri_string.startsWith("/")) {
715
+ if (size === 0) {
716
+ return parse_authority_with_slashes(uri_string, pieces);
717
+ } else {
718
+ let scheme = codeunit_slice(original, 0, size);
719
+ let pieces$1 = new Uri(
720
+ new Some($string.lowercase(scheme)),
721
+ pieces.userinfo,
722
+ pieces.host,
723
+ pieces.port,
724
+ pieces.path,
725
+ pieces.query,
726
+ pieces.fragment,
727
+ );
728
+ return parse_authority_with_slashes(uri_string, pieces$1);
729
+ }
730
+ } else if (uri_string.startsWith("?")) {
731
+ if (size === 0) {
732
+ let rest = uri_string.slice(1);
733
+ return parse_query_with_question_mark(rest, pieces);
734
+ } else {
735
+ let rest = uri_string.slice(1);
736
+ let scheme = codeunit_slice(original, 0, size);
737
+ let pieces$1 = new Uri(
738
+ new Some($string.lowercase(scheme)),
739
+ pieces.userinfo,
740
+ pieces.host,
741
+ pieces.port,
742
+ pieces.path,
743
+ pieces.query,
744
+ pieces.fragment,
745
+ );
746
+ return parse_query_with_question_mark(rest, pieces$1);
747
+ }
748
+ } else if (uri_string.startsWith("#")) {
749
+ if (size === 0) {
750
+ let rest = uri_string.slice(1);
751
+ return parse_fragment(rest, pieces);
752
+ } else {
753
+ let rest = uri_string.slice(1);
754
+ let scheme = codeunit_slice(original, 0, size);
755
+ let pieces$1 = new Uri(
756
+ new Some($string.lowercase(scheme)),
757
+ pieces.userinfo,
758
+ pieces.host,
759
+ pieces.port,
760
+ pieces.path,
761
+ pieces.query,
762
+ pieces.fragment,
763
+ );
764
+ return parse_fragment(rest, pieces$1);
765
+ }
766
+ } else if (uri_string.startsWith(":")) {
767
+ if (size === 0) {
768
+ return new Error(undefined);
769
+ } else {
770
+ let rest = uri_string.slice(1);
771
+ let scheme = codeunit_slice(original, 0, size);
772
+ let pieces$1 = new Uri(
773
+ new Some($string.lowercase(scheme)),
774
+ pieces.userinfo,
775
+ pieces.host,
776
+ pieces.port,
777
+ pieces.path,
778
+ pieces.query,
779
+ pieces.fragment,
780
+ );
781
+ return parse_authority_with_slashes(rest, pieces$1);
782
+ }
783
+ } else if (uri_string === "") {
784
+ return new Ok(
785
+ new Uri(
786
+ pieces.scheme,
787
+ pieces.userinfo,
788
+ pieces.host,
789
+ pieces.port,
790
+ original,
791
+ pieces.query,
792
+ pieces.fragment,
793
+ ),
794
+ );
795
+ } else {
796
+ let $ = pop_codeunit(uri_string);
797
+ let rest;
798
+ rest = $[1];
799
+ loop$original = original;
800
+ loop$uri_string = rest;
801
+ loop$pieces = pieces;
802
+ loop$size = size + 1;
803
+ }
804
+ }
805
+ }
806
+
807
+ function percent_encode_query(part) {
808
+ let _pipe = percent_encode(part);
809
+ return $string.replace(_pipe, "+", "%2B");
810
+ }
811
+
812
+ function query_pair(pair) {
813
+ let _pipe = toList([
814
+ percent_encode_query(pair[0]),
815
+ "=",
816
+ percent_encode_query(pair[1]),
817
+ ]);
818
+ return $string_tree.from_strings(_pipe);
819
+ }
820
+
821
+ /**
822
+ * Encodes a list of key value pairs as a URI query string.
823
+ *
824
+ * The opposite operation is `uri.parse_query`.
825
+ *
826
+ * ## Examples
827
+ *
828
+ * ```gleam
829
+ * query_to_string([#("a", "1"), #("b", "2")])
830
+ * // -> "a=1&b=2"
831
+ * ```
832
+ */
833
+ export function query_to_string(query) {
834
+ let _pipe = query;
835
+ let _pipe$1 = $list.map(_pipe, query_pair);
836
+ let _pipe$2 = $list.intersperse(_pipe$1, $string_tree.from_string("&"));
837
+ let _pipe$3 = $string_tree.concat(_pipe$2);
838
+ return $string_tree.to_string(_pipe$3);
839
+ }
840
+
841
+ function remove_dot_segments_loop(loop$input, loop$accumulator) {
842
+ while (true) {
843
+ let input = loop$input;
844
+ let accumulator = loop$accumulator;
845
+ if (input instanceof $Empty) {
846
+ return $list.reverse(accumulator);
847
+ } else {
848
+ let segment = input.head;
849
+ let rest = input.tail;
850
+ let _block;
851
+ if (segment === "") {
852
+ _block = accumulator;
853
+ } else if (segment === ".") {
854
+ _block = accumulator;
855
+ } else if (segment === "..") {
856
+ if (accumulator instanceof $Empty) {
857
+ _block = accumulator;
858
+ } else {
859
+ let accumulator$1 = accumulator.tail;
860
+ _block = accumulator$1;
861
+ }
862
+ } else {
863
+ let segment$1 = segment;
864
+ let accumulator$1 = accumulator;
865
+ _block = listPrepend(segment$1, accumulator$1);
866
+ }
867
+ let accumulator$1 = _block;
868
+ loop$input = rest;
869
+ loop$accumulator = accumulator$1;
870
+ }
871
+ }
872
+ }
873
+
874
+ function remove_dot_segments(input) {
875
+ return remove_dot_segments_loop(input, toList([]));
876
+ }
877
+
878
+ /**
879
+ * Splits the path section of a URI into its constituent segments.
880
+ *
881
+ * Removes empty segments and resolves dot-segments as specified in
882
+ * [section 5.2](https://www.ietf.org/rfc/rfc3986.html#section-5.2) of the RFC.
883
+ *
884
+ * ## Examples
885
+ *
886
+ * ```gleam
887
+ * path_segments("/users/1")
888
+ * // -> ["users" ,"1"]
889
+ * ```
890
+ */
891
+ export function path_segments(path) {
892
+ return remove_dot_segments($string.split(path, "/"));
893
+ }
894
+
895
+ /**
896
+ * Encodes a `Uri` value as a URI string.
897
+ *
898
+ * The opposite operation is `uri.parse`.
899
+ *
900
+ * ## Examples
901
+ *
902
+ * ```gleam
903
+ * let uri = Uri(..empty, scheme: Some("https"), host: Some("example.com"))
904
+ * to_string(uri)
905
+ * // -> "https://example.com"
906
+ * ```
907
+ */
908
+ export function to_string(uri) {
909
+ let _block;
910
+ let $ = uri.fragment;
911
+ if ($ instanceof Some) {
912
+ let fragment = $[0];
913
+ _block = toList(["#", fragment]);
914
+ } else {
915
+ _block = toList([]);
916
+ }
917
+ let parts = _block;
918
+ let _block$1;
919
+ let $1 = uri.query;
920
+ if ($1 instanceof Some) {
921
+ let query = $1[0];
922
+ _block$1 = listPrepend("?", listPrepend(query, parts));
923
+ } else {
924
+ _block$1 = parts;
925
+ }
926
+ let parts$1 = _block$1;
927
+ let parts$2 = listPrepend(uri.path, parts$1);
928
+ let _block$2;
929
+ let $2 = uri.host;
930
+ let $3 = $string.starts_with(uri.path, "/");
931
+ if ($2 instanceof Some && !$3) {
932
+ let host = $2[0];
933
+ if (host !== "") {
934
+ _block$2 = listPrepend("/", parts$2);
935
+ } else {
936
+ _block$2 = parts$2;
937
+ }
938
+ } else {
939
+ _block$2 = parts$2;
940
+ }
941
+ let parts$3 = _block$2;
942
+ let _block$3;
943
+ let $4 = uri.host;
944
+ let $5 = uri.port;
945
+ if ($4 instanceof Some && $5 instanceof Some) {
946
+ let port = $5[0];
947
+ _block$3 = listPrepend(":", listPrepend($int.to_string(port), parts$3));
948
+ } else {
949
+ _block$3 = parts$3;
950
+ }
951
+ let parts$4 = _block$3;
952
+ let _block$4;
953
+ let $6 = uri.scheme;
954
+ let $7 = uri.userinfo;
955
+ let $8 = uri.host;
956
+ if ($6 instanceof Some) {
957
+ if ($7 instanceof Some) {
958
+ if ($8 instanceof Some) {
959
+ let s = $6[0];
960
+ let u = $7[0];
961
+ let h = $8[0];
962
+ _block$4 = listPrepend(
963
+ s,
964
+ listPrepend(
965
+ "://",
966
+ listPrepend(u, listPrepend("@", listPrepend(h, parts$4))),
967
+ ),
968
+ );
969
+ } else {
970
+ let s = $6[0];
971
+ _block$4 = listPrepend(s, listPrepend(":", parts$4));
972
+ }
973
+ } else if ($8 instanceof Some) {
974
+ let s = $6[0];
975
+ let h = $8[0];
976
+ _block$4 = listPrepend(s, listPrepend("://", listPrepend(h, parts$4)));
977
+ } else {
978
+ let s = $6[0];
979
+ _block$4 = listPrepend(s, listPrepend(":", parts$4));
980
+ }
981
+ } else if ($7 instanceof None && $8 instanceof Some) {
982
+ let h = $8[0];
983
+ _block$4 = listPrepend("//", listPrepend(h, parts$4));
984
+ } else {
985
+ _block$4 = parts$4;
986
+ }
987
+ let parts$5 = _block$4;
988
+ return $string.concat(parts$5);
989
+ }
990
+
991
+ /**
992
+ * Fetches the origin of a URI.
993
+ *
994
+ * Returns the origin of a uri as defined in
995
+ * [RFC 6454](https://tools.ietf.org/html/rfc6454)
996
+ *
997
+ * The supported URI schemes are `http` and `https`.
998
+ * URLs without a scheme will return `Error`.
999
+ *
1000
+ * ## Examples
1001
+ *
1002
+ * ```gleam
1003
+ * let assert Ok(uri) = parse("https://example.com/path?foo#bar")
1004
+ * origin(uri)
1005
+ * // -> Ok("https://example.com")
1006
+ * ```
1007
+ */
1008
+ export function origin(uri) {
1009
+ let scheme;
1010
+ let host;
1011
+ let port;
1012
+ scheme = uri.scheme;
1013
+ host = uri.host;
1014
+ port = uri.port;
1015
+ if (host instanceof Some && scheme instanceof Some) {
1016
+ let $ = scheme[0];
1017
+ if ($ === "https" && isEqual(port, new Some(443))) {
1018
+ let h = host[0];
1019
+ return new Ok($string.concat(toList(["https://", h])));
1020
+ } else if ($ === "http" && isEqual(port, new Some(80))) {
1021
+ let h = host[0];
1022
+ return new Ok($string.concat(toList(["http://", h])));
1023
+ } else {
1024
+ let s = $;
1025
+ if ((s === "http") || (s === "https")) {
1026
+ let h = host[0];
1027
+ if (port instanceof Some) {
1028
+ let p = port[0];
1029
+ return new Ok(
1030
+ $string.concat(toList([s, "://", h, ":", $int.to_string(p)])),
1031
+ );
1032
+ } else {
1033
+ return new Ok($string.concat(toList([s, "://", h])));
1034
+ }
1035
+ } else {
1036
+ return new Error(undefined);
1037
+ }
1038
+ }
1039
+ } else {
1040
+ return new Error(undefined);
1041
+ }
1042
+ }
1043
+
1044
+ function drop_last(elements) {
1045
+ return $list.take(elements, $list.length(elements) - 1);
1046
+ }
1047
+
1048
+ function join_segments(segments) {
1049
+ return $string.join(listPrepend("", segments), "/");
1050
+ }
1051
+
1052
+ /**
1053
+ * Resolves a URI with respect to the given base URI.
1054
+ *
1055
+ * The base URI must be an absolute URI or this function will return an error.
1056
+ * The algorithm for merging URIs is described in
1057
+ * [RFC 3986](https://tools.ietf.org/html/rfc3986#section-5.2).
1058
+ */
1059
+ export function merge(base, relative) {
1060
+ let $ = base.scheme;
1061
+ if ($ instanceof Some) {
1062
+ let $1 = base.host;
1063
+ if ($1 instanceof Some) {
1064
+ let $2 = relative.host;
1065
+ if ($2 instanceof Some) {
1066
+ let _block;
1067
+ let _pipe = relative.path;
1068
+ let _pipe$1 = $string.split(_pipe, "/");
1069
+ let _pipe$2 = remove_dot_segments(_pipe$1);
1070
+ _block = join_segments(_pipe$2);
1071
+ let path = _block;
1072
+ let resolved = new Uri(
1073
+ $option.or(relative.scheme, base.scheme),
1074
+ new None(),
1075
+ relative.host,
1076
+ $option.or(relative.port, base.port),
1077
+ path,
1078
+ relative.query,
1079
+ relative.fragment,
1080
+ );
1081
+ return new Ok(resolved);
1082
+ } else {
1083
+ let _block;
1084
+ let $4 = relative.path;
1085
+ if ($4 === "") {
1086
+ _block = [base.path, $option.or(relative.query, base.query)];
1087
+ } else {
1088
+ let _block$1;
1089
+ let $5 = $string.starts_with(relative.path, "/");
1090
+ if ($5) {
1091
+ _block$1 = $string.split(relative.path, "/");
1092
+ } else {
1093
+ let _pipe = base.path;
1094
+ let _pipe$1 = $string.split(_pipe, "/");
1095
+ let _pipe$2 = drop_last(_pipe$1);
1096
+ _block$1 = $list.append(_pipe$2, $string.split(relative.path, "/"));
1097
+ }
1098
+ let path_segments$1 = _block$1;
1099
+ let _block$2;
1100
+ let _pipe = path_segments$1;
1101
+ let _pipe$1 = remove_dot_segments(_pipe);
1102
+ _block$2 = join_segments(_pipe$1);
1103
+ let path = _block$2;
1104
+ _block = [path, relative.query];
1105
+ }
1106
+ let $3 = _block;
1107
+ let new_path;
1108
+ let new_query;
1109
+ new_path = $3[0];
1110
+ new_query = $3[1];
1111
+ let resolved = new Uri(
1112
+ base.scheme,
1113
+ new None(),
1114
+ base.host,
1115
+ base.port,
1116
+ new_path,
1117
+ new_query,
1118
+ relative.fragment,
1119
+ );
1120
+ return new Ok(resolved);
1121
+ }
1122
+ } else {
1123
+ return new Error(undefined);
1124
+ }
1125
+ } else {
1126
+ return new Error(undefined);
1127
+ }
1128
+ }
1129
+
1130
+ /**
1131
+ * Parses a compliant URI string into the `Uri` type.
1132
+ * If the string is not a valid URI string then an error is returned.
1133
+ *
1134
+ * The opposite operation is `uri.to_string`.
1135
+ *
1136
+ * ## Examples
1137
+ *
1138
+ * ```gleam
1139
+ * parse("https://example.com:1234/a/b?query=true#fragment")
1140
+ * // -> Ok(
1141
+ * // Uri(
1142
+ * // scheme: Some("https"),
1143
+ * // userinfo: None,
1144
+ * // host: Some("example.com"),
1145
+ * // port: Some(1234),
1146
+ * // path: "/a/b",
1147
+ * // query: Some("query=true"),
1148
+ * // fragment: Some("fragment")
1149
+ * // )
1150
+ * // )
1151
+ * ```
1152
+ */
1153
+ export function parse(uri_string) {
1154
+ return parse_scheme_loop(uri_string, uri_string, empty, 0);
1155
+ }