create-mendix-widget-gleam 2.0.14 → 2.0.15

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 (203) hide show
  1. package/README.md +1 -1
  2. package/package.json +5 -1
  3. package/src/index.mjs +22 -7
  4. package/template/gleam.toml +1 -1
  5. package/tui/build/dev/javascript/etch/_gleam_artefacts/etch@command.cache +0 -0
  6. package/tui/build/dev/javascript/etch/_gleam_artefacts/etch@command.cache_inline +0 -0
  7. package/tui/build/dev/javascript/etch/_gleam_artefacts/etch@command.cache_meta +0 -0
  8. package/tui/build/dev/javascript/etch/_gleam_artefacts/etch@cursor.cache +0 -0
  9. package/tui/build/dev/javascript/etch/_gleam_artefacts/etch@cursor.cache_inline +0 -0
  10. package/tui/build/dev/javascript/etch/_gleam_artefacts/etch@cursor.cache_meta +0 -0
  11. package/tui/build/dev/javascript/etch/_gleam_artefacts/etch@event.cache +0 -0
  12. package/tui/build/dev/javascript/etch/_gleam_artefacts/etch@event.cache_inline +0 -0
  13. package/tui/build/dev/javascript/etch/_gleam_artefacts/etch@event.cache_meta +0 -0
  14. package/tui/build/dev/javascript/etch/_gleam_artefacts/etch@internal@consts.cache +0 -0
  15. package/tui/build/dev/javascript/etch/_gleam_artefacts/etch@internal@consts.cache_inline +0 -0
  16. package/tui/build/dev/javascript/etch/_gleam_artefacts/etch@internal@consts.cache_meta +0 -0
  17. package/tui/build/dev/javascript/etch/_gleam_artefacts/etch@stdout.cache +0 -0
  18. package/tui/build/dev/javascript/etch/_gleam_artefacts/etch@stdout.cache_inline +0 -0
  19. package/tui/build/dev/javascript/etch/_gleam_artefacts/etch@stdout.cache_meta +0 -0
  20. package/tui/build/dev/javascript/etch/_gleam_artefacts/etch@style.cache +0 -0
  21. package/tui/build/dev/javascript/etch/_gleam_artefacts/etch@style.cache_inline +0 -0
  22. package/tui/build/dev/javascript/etch/_gleam_artefacts/etch@style.cache_meta +0 -0
  23. package/tui/build/dev/javascript/etch/_gleam_artefacts/etch@terminal.cache +0 -0
  24. package/tui/build/dev/javascript/etch/_gleam_artefacts/etch@terminal.cache_inline +0 -0
  25. package/tui/build/dev/javascript/etch/_gleam_artefacts/etch@terminal.cache_meta +0 -0
  26. package/tui/build/dev/javascript/etch/etch/command.mjs +479 -0
  27. package/tui/build/dev/javascript/etch/etch/cursor.mjs +164 -0
  28. package/tui/build/dev/javascript/etch/etch/event.mjs +2399 -0
  29. package/tui/build/dev/javascript/etch/etch/internal/consts.mjs +3 -0
  30. package/tui/build/dev/javascript/etch/etch/stdout.mjs +375 -0
  31. package/tui/build/dev/javascript/etch/etch/style.mjs +741 -0
  32. package/tui/build/dev/javascript/etch/etch/terminal.mjs +137 -0
  33. package/tui/build/dev/javascript/etch/gleam.mjs +1 -0
  34. package/tui/build/dev/javascript/etch/input/event_ffi.erl +73 -0
  35. package/tui/build/dev/javascript/etch/input/input_ffi.mjs +192 -0
  36. package/tui/build/dev/javascript/etch/input/signal_handler.erl +33 -0
  37. package/tui/build/dev/javascript/etch/terminal/terminal_ffi.erl +22 -0
  38. package/tui/build/dev/javascript/etch/terminal/terminal_ffi.mjs +37 -0
  39. package/tui/build/dev/javascript/etch/terminal/tty_state.erl +29 -0
  40. package/tui/build/dev/javascript/gleam_erlang/_gleam_artefacts/gleam@erlang@application.cache +0 -0
  41. package/tui/build/dev/javascript/gleam_erlang/_gleam_artefacts/gleam@erlang@application.cache_inline +0 -0
  42. package/tui/build/dev/javascript/gleam_erlang/_gleam_artefacts/gleam@erlang@application.cache_meta +0 -0
  43. package/tui/build/dev/javascript/gleam_erlang/_gleam_artefacts/gleam@erlang@atom.cache +0 -0
  44. package/tui/build/dev/javascript/gleam_erlang/_gleam_artefacts/gleam@erlang@atom.cache_inline +0 -0
  45. package/tui/build/dev/javascript/gleam_erlang/_gleam_artefacts/gleam@erlang@atom.cache_meta +0 -0
  46. package/tui/build/dev/javascript/gleam_erlang/_gleam_artefacts/gleam@erlang@charlist.cache +0 -0
  47. package/tui/build/dev/javascript/gleam_erlang/_gleam_artefacts/gleam@erlang@charlist.cache_inline +0 -0
  48. package/tui/build/dev/javascript/gleam_erlang/_gleam_artefacts/gleam@erlang@charlist.cache_meta +0 -0
  49. package/tui/build/dev/javascript/gleam_erlang/_gleam_artefacts/gleam@erlang@node.cache +0 -0
  50. package/tui/build/dev/javascript/gleam_erlang/_gleam_artefacts/gleam@erlang@node.cache_inline +0 -0
  51. package/tui/build/dev/javascript/gleam_erlang/_gleam_artefacts/gleam@erlang@node.cache_meta +0 -0
  52. package/tui/build/dev/javascript/gleam_erlang/_gleam_artefacts/gleam@erlang@port.cache +0 -0
  53. package/tui/build/dev/javascript/gleam_erlang/_gleam_artefacts/gleam@erlang@port.cache_inline +0 -0
  54. package/tui/build/dev/javascript/gleam_erlang/_gleam_artefacts/gleam@erlang@port.cache_meta +0 -0
  55. package/tui/build/dev/javascript/gleam_erlang/_gleam_artefacts/gleam@erlang@process.cache +0 -0
  56. package/tui/build/dev/javascript/gleam_erlang/_gleam_artefacts/gleam@erlang@process.cache_inline +0 -0
  57. package/tui/build/dev/javascript/gleam_erlang/_gleam_artefacts/gleam@erlang@process.cache_meta +0 -0
  58. package/tui/build/dev/javascript/gleam_erlang/_gleam_artefacts/gleam@erlang@reference.cache +0 -0
  59. package/tui/build/dev/javascript/gleam_erlang/_gleam_artefacts/gleam@erlang@reference.cache_inline +0 -0
  60. package/tui/build/dev/javascript/gleam_erlang/_gleam_artefacts/gleam@erlang@reference.cache_meta +0 -0
  61. package/tui/build/dev/javascript/gleam_erlang/gleam/erlang/application.mjs +38 -0
  62. package/tui/build/dev/javascript/gleam_erlang/gleam/erlang/atom.mjs +2 -0
  63. package/tui/build/dev/javascript/gleam_erlang/gleam/erlang/charlist.mjs +1 -0
  64. package/tui/build/dev/javascript/gleam_erlang/gleam/erlang/node.mjs +12 -0
  65. package/tui/build/dev/javascript/gleam_erlang/gleam/erlang/port.mjs +1 -0
  66. package/tui/build/dev/javascript/gleam_erlang/gleam/erlang/process.mjs +161 -0
  67. package/tui/build/dev/javascript/gleam_erlang/gleam/erlang/reference.mjs +1 -0
  68. package/tui/build/dev/javascript/gleam_erlang/gleam.mjs +1 -0
  69. package/tui/build/dev/javascript/gleam_erlang/gleam@erlang@application.erl +43 -0
  70. package/tui/build/dev/javascript/gleam_erlang/gleam@erlang@atom.erl +94 -0
  71. package/tui/build/dev/javascript/gleam_erlang/gleam@erlang@charlist.erl +42 -0
  72. package/tui/build/dev/javascript/gleam_erlang/gleam@erlang@node.erl +80 -0
  73. package/tui/build/dev/javascript/gleam_erlang/gleam@erlang@port.erl +8 -0
  74. package/tui/build/dev/javascript/gleam_erlang/gleam@erlang@process.erl +868 -0
  75. package/tui/build/dev/javascript/gleam_erlang/gleam@erlang@reference.erl +21 -0
  76. package/tui/build/dev/javascript/gleam_erlang/gleam_erlang_ffi.erl +164 -0
  77. package/tui/build/dev/javascript/gleam_javascript/_gleam_artefacts/gleam@javascript@array.cache +0 -0
  78. package/tui/build/dev/javascript/gleam_javascript/_gleam_artefacts/gleam@javascript@array.cache_inline +0 -0
  79. package/tui/build/dev/javascript/gleam_javascript/_gleam_artefacts/gleam@javascript@array.cache_meta +0 -0
  80. package/tui/build/dev/javascript/gleam_javascript/_gleam_artefacts/gleam@javascript@promise.cache +0 -0
  81. package/tui/build/dev/javascript/gleam_javascript/_gleam_artefacts/gleam@javascript@promise.cache_inline +0 -0
  82. package/tui/build/dev/javascript/gleam_javascript/_gleam_artefacts/gleam@javascript@promise.cache_meta +0 -0
  83. package/tui/build/dev/javascript/gleam_javascript/_gleam_artefacts/gleam@javascript@symbol.cache +0 -0
  84. package/tui/build/dev/javascript/gleam_javascript/_gleam_artefacts/gleam@javascript@symbol.cache_inline +0 -0
  85. package/tui/build/dev/javascript/gleam_javascript/_gleam_artefacts/gleam@javascript@symbol.cache_meta +0 -0
  86. package/tui/build/dev/javascript/gleam_javascript/gleam/javascript/array.mjs +24 -0
  87. package/tui/build/dev/javascript/gleam_javascript/gleam/javascript/promise.mjs +105 -0
  88. package/tui/build/dev/javascript/gleam_javascript/gleam/javascript/symbol.mjs +7 -0
  89. package/tui/build/dev/javascript/gleam_javascript/gleam.mjs +1 -0
  90. package/tui/build/dev/javascript/gleam_javascript/gleam_javascript_ffi.mjs +133 -0
  91. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@bit_array.cache +0 -0
  92. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@bit_array.cache_inline +0 -0
  93. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@bit_array.cache_meta +0 -0
  94. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@bool.cache +0 -0
  95. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@bool.cache_inline +0 -0
  96. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@bool.cache_meta +0 -0
  97. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@bytes_tree.cache +0 -0
  98. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@bytes_tree.cache_inline +0 -0
  99. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@bytes_tree.cache_meta +0 -0
  100. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@dict.cache +0 -0
  101. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@dict.cache_inline +0 -0
  102. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@dict.cache_meta +0 -0
  103. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@dynamic.cache +0 -0
  104. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@dynamic.cache_inline +0 -0
  105. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@dynamic.cache_meta +0 -0
  106. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@dynamic@decode.cache +0 -0
  107. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@dynamic@decode.cache_inline +0 -0
  108. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@dynamic@decode.cache_meta +0 -0
  109. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@float.cache +0 -0
  110. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@float.cache_inline +0 -0
  111. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@float.cache_meta +0 -0
  112. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@function.cache +0 -0
  113. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@function.cache_inline +0 -0
  114. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@function.cache_meta +0 -0
  115. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@int.cache +0 -0
  116. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@int.cache_inline +0 -0
  117. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@int.cache_meta +0 -0
  118. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@io.cache +0 -0
  119. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@io.cache_inline +0 -0
  120. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@io.cache_meta +0 -0
  121. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@list.cache +0 -0
  122. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@list.cache_inline +0 -0
  123. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@list.cache_meta +0 -0
  124. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@option.cache +0 -0
  125. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@option.cache_inline +0 -0
  126. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@option.cache_meta +0 -0
  127. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@order.cache +0 -0
  128. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@order.cache_inline +0 -0
  129. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@order.cache_meta +0 -0
  130. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@pair.cache +0 -0
  131. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@pair.cache_inline +0 -0
  132. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@pair.cache_meta +0 -0
  133. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@result.cache +0 -0
  134. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@result.cache_inline +0 -0
  135. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@result.cache_meta +0 -0
  136. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@set.cache +0 -0
  137. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@set.cache_inline +0 -0
  138. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@set.cache_meta +0 -0
  139. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@string.cache +0 -0
  140. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@string.cache_inline +0 -0
  141. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@string.cache_meta +0 -0
  142. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@string_tree.cache +0 -0
  143. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@string_tree.cache_inline +0 -0
  144. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@string_tree.cache_meta +0 -0
  145. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@uri.cache +0 -0
  146. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@uri.cache_inline +0 -0
  147. package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@uri.cache_meta +0 -0
  148. package/tui/build/dev/javascript/gleam_stdlib/dict.mjs +710 -0
  149. package/tui/build/dev/javascript/gleam_stdlib/gleam/bit_array.mjs +286 -0
  150. package/tui/build/dev/javascript/gleam_stdlib/gleam/bool.mjs +295 -0
  151. package/tui/build/dev/javascript/gleam_stdlib/gleam/bytes_tree.mjs +225 -0
  152. package/tui/build/dev/javascript/gleam_stdlib/gleam/dict.mjs +455 -0
  153. package/tui/build/dev/javascript/gleam_stdlib/gleam/dynamic/decode.mjs +993 -0
  154. package/tui/build/dev/javascript/gleam_stdlib/gleam/dynamic.mjs +35 -0
  155. package/tui/build/dev/javascript/gleam_stdlib/gleam/float.mjs +528 -0
  156. package/tui/build/dev/javascript/gleam_stdlib/gleam/function.mjs +6 -0
  157. package/tui/build/dev/javascript/gleam_stdlib/gleam/int.mjs +764 -0
  158. package/tui/build/dev/javascript/gleam_stdlib/gleam/io.mjs +8 -0
  159. package/tui/build/dev/javascript/gleam_stdlib/gleam/list.mjs +3063 -0
  160. package/tui/build/dev/javascript/gleam_stdlib/gleam/option.mjs +386 -0
  161. package/tui/build/dev/javascript/gleam_stdlib/gleam/order.mjs +166 -0
  162. package/tui/build/dev/javascript/gleam_stdlib/gleam/pair.mjs +96 -0
  163. package/tui/build/dev/javascript/gleam_stdlib/gleam/result.mjs +448 -0
  164. package/tui/build/dev/javascript/gleam_stdlib/gleam/set.mjs +413 -0
  165. package/tui/build/dev/javascript/gleam_stdlib/gleam/string.mjs +695 -0
  166. package/tui/build/dev/javascript/gleam_stdlib/gleam/string_tree.mjs +128 -0
  167. package/tui/build/dev/javascript/gleam_stdlib/gleam/uri.mjs +1151 -0
  168. package/tui/build/dev/javascript/gleam_stdlib/gleam.mjs +1 -0
  169. package/tui/build/dev/javascript/gleam_stdlib/gleam@bit_array.erl +347 -0
  170. package/tui/build/dev/javascript/gleam_stdlib/gleam@bool.erl +334 -0
  171. package/tui/build/dev/javascript/gleam_stdlib/gleam@bytes_tree.erl +211 -0
  172. package/tui/build/dev/javascript/gleam_stdlib/gleam@dict.erl +513 -0
  173. package/tui/build/dev/javascript/gleam_stdlib/gleam@dynamic.erl +105 -0
  174. package/tui/build/dev/javascript/gleam_stdlib/gleam@dynamic@decode.erl +1114 -0
  175. package/tui/build/dev/javascript/gleam_stdlib/gleam@float.erl +711 -0
  176. package/tui/build/dev/javascript/gleam_stdlib/gleam@function.erl +18 -0
  177. package/tui/build/dev/javascript/gleam_stdlib/gleam@int.erl +972 -0
  178. package/tui/build/dev/javascript/gleam_stdlib/gleam@io.erl +76 -0
  179. package/tui/build/dev/javascript/gleam_stdlib/gleam@list.erl +2735 -0
  180. package/tui/build/dev/javascript/gleam_stdlib/gleam@option.erl +381 -0
  181. package/tui/build/dev/javascript/gleam_stdlib/gleam@order.erl +188 -0
  182. package/tui/build/dev/javascript/gleam_stdlib/gleam@pair.erl +104 -0
  183. package/tui/build/dev/javascript/gleam_stdlib/gleam@result.erl +500 -0
  184. package/tui/build/dev/javascript/gleam_stdlib/gleam@set.erl +430 -0
  185. package/tui/build/dev/javascript/gleam_stdlib/gleam@string.erl +964 -0
  186. package/tui/build/dev/javascript/gleam_stdlib/gleam@string_tree.erl +202 -0
  187. package/tui/build/dev/javascript/gleam_stdlib/gleam@uri.erl +1042 -0
  188. package/tui/build/dev/javascript/gleam_stdlib/gleam_stdlib.erl +534 -0
  189. package/tui/build/dev/javascript/gleam_stdlib/gleam_stdlib.mjs +1133 -0
  190. package/tui/build/dev/javascript/gleam_version +1 -0
  191. package/tui/build/dev/javascript/prelude.mjs +1575 -0
  192. package/tui/build/dev/javascript/tui/_gleam_artefacts/tui.cache +0 -0
  193. package/tui/build/dev/javascript/tui/_gleam_artefacts/tui.cache_inline +0 -0
  194. package/tui/build/dev/javascript/tui/_gleam_artefacts/tui.cache_meta +0 -0
  195. package/tui/build/dev/javascript/tui/_gleam_artefacts/tui.cache_warnings +0 -0
  196. package/tui/build/dev/javascript/tui/_gleam_artefacts/tui@prompt.cache +0 -0
  197. package/tui/build/dev/javascript/tui/_gleam_artefacts/tui@prompt.cache_inline +0 -0
  198. package/tui/build/dev/javascript/tui/_gleam_artefacts/tui@prompt.cache_meta +0 -0
  199. package/tui/build/dev/javascript/tui/_gleam_artefacts/tui@prompt.cache_warnings +0 -0
  200. package/tui/build/dev/javascript/tui/gleam.mjs +1 -0
  201. package/tui/build/dev/javascript/tui/tui/prompt.mjs +521 -0
  202. package/tui/build/dev/javascript/tui/tui.mjs +334 -0
  203. package/tui/build/dev/javascript/tui/tui_ffi.mjs +32 -0
@@ -0,0 +1,1042 @@
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", 536).
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
+ " assert parse_query(\"a=1&b=2\") == Ok([#(\"a\", \"1\"), #(\"b\", \"2\")])\n"
678
+ " ```\n"
679
+ ).
680
+ -spec parse_query(binary()) -> {ok, list({binary(), binary()})} | {error, nil}.
681
+ parse_query(Query) ->
682
+ gleam_stdlib:parse_query(Query).
683
+
684
+ -file("src/gleam/uri.gleam", 576).
685
+ ?DOC(
686
+ " Encodes a string into a percent encoded representation.\n"
687
+ "\n"
688
+ " ## Examples\n"
689
+ "\n"
690
+ " ```gleam\n"
691
+ " assert percent_encode(\"100% great\") == \"100%25%20great\"\n"
692
+ " ```\n"
693
+ ).
694
+ -spec percent_encode(binary()) -> binary().
695
+ percent_encode(Value) ->
696
+ gleam_stdlib:percent_encode(Value).
697
+
698
+ -file("src/gleam/uri.gleam", 561).
699
+ -spec percent_encode_query(binary()) -> binary().
700
+ percent_encode_query(Part) ->
701
+ _pipe = gleam_stdlib:percent_encode(Part),
702
+ gleam@string:replace(_pipe, <<"+"/utf8>>, <<"%2B"/utf8>>).
703
+
704
+ -file("src/gleam/uri.gleam", 556).
705
+ -spec query_pair({binary(), binary()}) -> gleam@string_tree:string_tree().
706
+ query_pair(Pair) ->
707
+ _pipe = [percent_encode_query(erlang:element(1, Pair)),
708
+ <<"="/utf8>>,
709
+ percent_encode_query(erlang:element(2, Pair))],
710
+ gleam_stdlib:identity(_pipe).
711
+
712
+ -file("src/gleam/uri.gleam", 548).
713
+ ?DOC(
714
+ " Encodes a list of key value pairs as a URI query string.\n"
715
+ "\n"
716
+ " The opposite operation is `uri.parse_query`.\n"
717
+ "\n"
718
+ " ## Examples\n"
719
+ "\n"
720
+ " ```gleam\n"
721
+ " assert query_to_string([#(\"a\", \"1\"), #(\"b\", \"2\")]) == \"a=1&b=2\"\n"
722
+ " ```\n"
723
+ ).
724
+ -spec query_to_string(list({binary(), binary()})) -> binary().
725
+ query_to_string(Query) ->
726
+ _pipe = Query,
727
+ _pipe@1 = gleam@list:map(_pipe, fun query_pair/1),
728
+ _pipe@2 = gleam@list:intersperse(
729
+ _pipe@1,
730
+ gleam_stdlib:identity(<<"&"/utf8>>)
731
+ ),
732
+ _pipe@3 = gleam_stdlib:identity(_pipe@2),
733
+ unicode:characters_to_binary(_pipe@3).
734
+
735
+ -file("src/gleam/uri.gleam", 588).
736
+ ?DOC(
737
+ " Decodes a percent encoded string.\n"
738
+ "\n"
739
+ " ## Examples\n"
740
+ "\n"
741
+ " ```gleam\n"
742
+ " assert percent_decode(\"100%25%20great+fun\") == Ok(\"100% great+fun\")\n"
743
+ " ```\n"
744
+ ).
745
+ -spec percent_decode(binary()) -> {ok, binary()} | {error, nil}.
746
+ percent_decode(Value) ->
747
+ gleam_stdlib:percent_decode(Value).
748
+
749
+ -file("src/gleam/uri.gleam", 609).
750
+ -spec remove_dot_segments_loop(list(binary()), list(binary())) -> list(binary()).
751
+ remove_dot_segments_loop(Input, Accumulator) ->
752
+ case Input of
753
+ [] ->
754
+ lists:reverse(Accumulator);
755
+
756
+ [Segment | Rest] ->
757
+ Accumulator@5 = case {Segment, Accumulator} of
758
+ {<<""/utf8>>, Accumulator@1} ->
759
+ Accumulator@1;
760
+
761
+ {<<"."/utf8>>, Accumulator@2} ->
762
+ Accumulator@2;
763
+
764
+ {<<".."/utf8>>, []} ->
765
+ [];
766
+
767
+ {<<".."/utf8>>, [_ | Accumulator@3]} ->
768
+ Accumulator@3;
769
+
770
+ {Segment@1, Accumulator@4} ->
771
+ [Segment@1 | Accumulator@4]
772
+ end,
773
+ remove_dot_segments_loop(Rest, Accumulator@5)
774
+ end.
775
+
776
+ -file("src/gleam/uri.gleam", 605).
777
+ -spec remove_dot_segments(list(binary())) -> list(binary()).
778
+ remove_dot_segments(Input) ->
779
+ remove_dot_segments_loop(Input, []).
780
+
781
+ -file("src/gleam/uri.gleam", 601).
782
+ ?DOC(
783
+ " Splits the path section of a URI into its constituent segments.\n"
784
+ "\n"
785
+ " Removes empty segments and resolves dot-segments as specified in\n"
786
+ " [section 5.2](https://www.ietf.org/rfc/rfc3986.html#section-5.2) of the RFC.\n"
787
+ "\n"
788
+ " ## Examples\n"
789
+ "\n"
790
+ " ```gleam\n"
791
+ " assert path_segments(\"/users/1\") == [\"users\" ,\"1\"]\n"
792
+ " ```\n"
793
+ ).
794
+ -spec path_segments(binary()) -> list(binary()).
795
+ path_segments(Path) ->
796
+ remove_dot_segments(gleam@string:split(Path, <<"/"/utf8>>)).
797
+
798
+ -file("src/gleam/uri.gleam", 639).
799
+ ?DOC(
800
+ " Encodes a `Uri` value as a URI string.\n"
801
+ "\n"
802
+ " The opposite operation is `uri.parse`.\n"
803
+ "\n"
804
+ " ## Examples\n"
805
+ "\n"
806
+ " ```gleam\n"
807
+ " let uri = Uri(..empty, scheme: Some(\"https\"), host: Some(\"example.com\"))\n"
808
+ " assert to_string(uri) == \"https://example.com\"\n"
809
+ " ```\n"
810
+ ).
811
+ -spec to_string(uri()) -> binary().
812
+ to_string(Uri) ->
813
+ Parts = case erlang:element(8, Uri) of
814
+ {some, Fragment} ->
815
+ [<<"#"/utf8>>, Fragment];
816
+
817
+ none ->
818
+ []
819
+ end,
820
+ Parts@1 = case erlang:element(7, Uri) of
821
+ {some, Query} ->
822
+ [<<"?"/utf8>>, Query | Parts];
823
+
824
+ none ->
825
+ Parts
826
+ end,
827
+ Parts@2 = [erlang:element(6, Uri) | Parts@1],
828
+ Parts@3 = case {erlang:element(4, Uri),
829
+ gleam_stdlib:string_starts_with(erlang:element(6, Uri), <<"/"/utf8>>)} of
830
+ {{some, Host}, false} when Host =/= <<""/utf8>> ->
831
+ [<<"/"/utf8>> | Parts@2];
832
+
833
+ {_, _} ->
834
+ Parts@2
835
+ end,
836
+ Parts@4 = case {erlang:element(4, Uri), erlang:element(5, Uri)} of
837
+ {{some, _}, {some, Port}} ->
838
+ [<<":"/utf8>>, erlang:integer_to_binary(Port) | Parts@3];
839
+
840
+ {_, _} ->
841
+ Parts@3
842
+ end,
843
+ Parts@5 = case {erlang:element(2, Uri),
844
+ erlang:element(3, Uri),
845
+ erlang:element(4, Uri)} of
846
+ {{some, S}, {some, U}, {some, H}} ->
847
+ [S, <<"://"/utf8>>, U, <<"@"/utf8>>, H | Parts@4];
848
+
849
+ {{some, S@1}, none, {some, H@1}} ->
850
+ [S@1, <<"://"/utf8>>, H@1 | Parts@4];
851
+
852
+ {{some, S@2}, {some, _}, none} ->
853
+ [S@2, <<":"/utf8>> | Parts@4];
854
+
855
+ {{some, S@2}, none, none} ->
856
+ [S@2, <<":"/utf8>> | Parts@4];
857
+
858
+ {none, none, {some, H@2}} ->
859
+ [<<"//"/utf8>>, H@2 | Parts@4];
860
+
861
+ {_, _, _} ->
862
+ Parts@4
863
+ end,
864
+ erlang:list_to_binary(Parts@5).
865
+
866
+ -file("src/gleam/uri.gleam", 682).
867
+ ?DOC(
868
+ " Fetches the origin of a URI.\n"
869
+ "\n"
870
+ " Returns the origin of a uri as defined in\n"
871
+ " [RFC 6454](https://tools.ietf.org/html/rfc6454)\n"
872
+ "\n"
873
+ " The supported URI schemes are `http` and `https`.\n"
874
+ " URLs without a scheme will return `Error`.\n"
875
+ "\n"
876
+ " ## Examples\n"
877
+ "\n"
878
+ " ```gleam\n"
879
+ " let assert Ok(uri) = parse(\"https://example.com/path?foo#bar\")\n"
880
+ " assert origin(uri) == Ok(\"https://example.com\")\n"
881
+ " ```\n"
882
+ ).
883
+ -spec origin(uri()) -> {ok, binary()} | {error, nil}.
884
+ origin(Uri) ->
885
+ {uri, Scheme, _, Host, Port, _, _, _} = Uri,
886
+ case {Host, Scheme} of
887
+ {{some, H}, {some, <<"https"/utf8>>}} when Port =:= {some, 443} ->
888
+ {ok, erlang:list_to_binary([<<"https://"/utf8>>, H])};
889
+
890
+ {{some, H@1}, {some, <<"http"/utf8>>}} when Port =:= {some, 80} ->
891
+ {ok, erlang:list_to_binary([<<"http://"/utf8>>, H@1])};
892
+
893
+ {{some, H@2}, {some, S}} when (S =:= <<"http"/utf8>>) orelse (S =:= <<"https"/utf8>>) ->
894
+ case Port of
895
+ {some, P} ->
896
+ {ok,
897
+ erlang:list_to_binary(
898
+ [S,
899
+ <<"://"/utf8>>,
900
+ H@2,
901
+ <<":"/utf8>>,
902
+ erlang:integer_to_binary(P)]
903
+ )};
904
+
905
+ none ->
906
+ {ok, erlang:list_to_binary([S, <<"://"/utf8>>, H@2])}
907
+ end;
908
+
909
+ {_, _} ->
910
+ {error, nil}
911
+ end.
912
+
913
+ -file("src/gleam/uri.gleam", 763).
914
+ -spec drop_last(list(DDV)) -> list(DDV).
915
+ drop_last(Elements) ->
916
+ gleam@list:take(Elements, erlang:length(Elements) - 1).
917
+
918
+ -file("src/gleam/uri.gleam", 767).
919
+ -spec join_segments(list(binary())) -> binary().
920
+ join_segments(Segments) ->
921
+ gleam@string:join([<<""/utf8>> | Segments], <<"/"/utf8>>).
922
+
923
+ -file("src/gleam/uri.gleam", 705).
924
+ ?DOC(
925
+ " Resolves a URI with respect to the given base URI.\n"
926
+ "\n"
927
+ " The base URI must be an absolute URI or this function will return an error.\n"
928
+ " The algorithm for merging URIs is described in\n"
929
+ " [RFC 3986](https://tools.ietf.org/html/rfc3986#section-5.2).\n"
930
+ ).
931
+ -spec merge(uri(), uri()) -> {ok, uri()} | {error, nil}.
932
+ merge(Base, Relative) ->
933
+ case Base of
934
+ {uri, {some, _}, _, {some, _}, _, _, _, _} ->
935
+ case Relative of
936
+ {uri, _, _, {some, _}, _, _, _, _} ->
937
+ Path = begin
938
+ _pipe = erlang:element(6, Relative),
939
+ _pipe@1 = gleam@string:split(_pipe, <<"/"/utf8>>),
940
+ _pipe@2 = remove_dot_segments(_pipe@1),
941
+ join_segments(_pipe@2)
942
+ end,
943
+ Resolved = {uri,
944
+ gleam@option:'or'(
945
+ erlang:element(2, Relative),
946
+ erlang:element(2, Base)
947
+ ),
948
+ none,
949
+ erlang:element(4, Relative),
950
+ gleam@option:'or'(
951
+ erlang:element(5, Relative),
952
+ erlang:element(5, Base)
953
+ ),
954
+ Path,
955
+ erlang:element(7, Relative),
956
+ erlang:element(8, Relative)},
957
+ {ok, Resolved};
958
+
959
+ _ ->
960
+ {New_path, New_query} = case erlang:element(6, Relative) of
961
+ <<""/utf8>> ->
962
+ {erlang:element(6, Base),
963
+ gleam@option:'or'(
964
+ erlang:element(7, Relative),
965
+ erlang:element(7, Base)
966
+ )};
967
+
968
+ _ ->
969
+ Path_segments = case gleam_stdlib:string_starts_with(
970
+ erlang:element(6, Relative),
971
+ <<"/"/utf8>>
972
+ ) of
973
+ true ->
974
+ gleam@string:split(
975
+ erlang:element(6, Relative),
976
+ <<"/"/utf8>>
977
+ );
978
+
979
+ false ->
980
+ _pipe@3 = erlang:element(6, Base),
981
+ _pipe@4 = gleam@string:split(
982
+ _pipe@3,
983
+ <<"/"/utf8>>
984
+ ),
985
+ _pipe@5 = drop_last(_pipe@4),
986
+ lists:append(
987
+ _pipe@5,
988
+ gleam@string:split(
989
+ erlang:element(6, Relative),
990
+ <<"/"/utf8>>
991
+ )
992
+ )
993
+ end,
994
+ Path@1 = begin
995
+ _pipe@6 = Path_segments,
996
+ _pipe@7 = remove_dot_segments(_pipe@6),
997
+ join_segments(_pipe@7)
998
+ end,
999
+ {Path@1, erlang:element(7, Relative)}
1000
+ end,
1001
+ Resolved@1 = {uri,
1002
+ erlang:element(2, Base),
1003
+ none,
1004
+ erlang:element(4, Base),
1005
+ erlang:element(5, Base),
1006
+ New_path,
1007
+ New_query,
1008
+ erlang:element(8, Relative)},
1009
+ {ok, Resolved@1}
1010
+ end;
1011
+
1012
+ _ ->
1013
+ {error, nil}
1014
+ end.
1015
+
1016
+ -file("src/gleam/uri.gleam", 81).
1017
+ ?DOC(
1018
+ " Parses a compliant URI string into the `Uri` type.\n"
1019
+ " If the string is not a valid URI string then an error is returned.\n"
1020
+ "\n"
1021
+ " The opposite operation is `uri.to_string`.\n"
1022
+ "\n"
1023
+ " ## Examples\n"
1024
+ "\n"
1025
+ " ```gleam\n"
1026
+ " assert parse(\"https://example.com:1234/a/b?query=true#fragment\")\n"
1027
+ " == Ok(\n"
1028
+ " Uri(\n"
1029
+ " scheme: Some(\"https\"),\n"
1030
+ " userinfo: None,\n"
1031
+ " host: Some(\"example.com\"),\n"
1032
+ " port: Some(1234),\n"
1033
+ " path: \"/a/b\",\n"
1034
+ " query: Some(\"query=true\"),\n"
1035
+ " fragment: Some(\"fragment\")\n"
1036
+ " )\n"
1037
+ " )\n"
1038
+ " ```\n"
1039
+ ).
1040
+ -spec parse(binary()) -> {ok, uri()} | {error, nil}.
1041
+ parse(Uri_string) ->
1042
+ gleam_stdlib:uri_parse(Uri_string).