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