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,448 @@
1
+ import { Ok, Error, toList, Empty as $Empty, prepend as listPrepend } from "../gleam.mjs";
2
+ import * as $list from "../gleam/list.mjs";
3
+
4
+ /**
5
+ * Checks whether the result is an `Ok` value.
6
+ *
7
+ * ## Examples
8
+ *
9
+ * ```gleam
10
+ * assert is_ok(Ok(1))
11
+ * ```
12
+ *
13
+ * ```gleam
14
+ * assert !is_ok(Error(Nil))
15
+ * ```
16
+ */
17
+ export function is_ok(result) {
18
+ if (result instanceof Ok) {
19
+ return true;
20
+ } else {
21
+ return false;
22
+ }
23
+ }
24
+
25
+ /**
26
+ * Checks whether the result is an `Error` value.
27
+ *
28
+ * ## Examples
29
+ *
30
+ * ```gleam
31
+ * assert !is_error(Ok(1))
32
+ * ```
33
+ *
34
+ * ```gleam
35
+ * assert is_error(Error(Nil))
36
+ * ```
37
+ */
38
+ export function is_error(result) {
39
+ if (result instanceof Ok) {
40
+ return false;
41
+ } else {
42
+ return true;
43
+ }
44
+ }
45
+
46
+ /**
47
+ * Updates a value held within the `Ok` of a result by calling a given function
48
+ * on it.
49
+ *
50
+ * If the result is an `Error` rather than `Ok` the function is not called and the
51
+ * result stays the same.
52
+ *
53
+ * ## Examples
54
+ *
55
+ * ```gleam
56
+ * assert map(over: Ok(1), with: fn(x) { x + 1 }) == Ok(2)
57
+ * ```
58
+ *
59
+ * ```gleam
60
+ * assert map(over: Error(1), with: fn(x) { x + 1 }) == Error(1)
61
+ * ```
62
+ */
63
+ export function map(result, fun) {
64
+ if (result instanceof Ok) {
65
+ let x = result[0];
66
+ return new Ok(fun(x));
67
+ } else {
68
+ return result;
69
+ }
70
+ }
71
+
72
+ /**
73
+ * Updates a value held within the `Error` of a result by calling a given function
74
+ * on it.
75
+ *
76
+ * If the result is `Ok` rather than `Error` the function is not called and the
77
+ * result stays the same.
78
+ *
79
+ * ## Examples
80
+ *
81
+ * ```gleam
82
+ * assert map_error(over: Error(1), with: fn(x) { x + 1 }) == Error(2)
83
+ * ```
84
+ *
85
+ * ```gleam
86
+ * assert map_error(over: Ok(1), with: fn(x) { x + 1 }) == Ok(1)
87
+ * ```
88
+ */
89
+ export function map_error(result, fun) {
90
+ if (result instanceof Ok) {
91
+ return result;
92
+ } else {
93
+ let error = result[0];
94
+ return new Error(fun(error));
95
+ }
96
+ }
97
+
98
+ /**
99
+ * Merges a nested `Result` into a single layer.
100
+ *
101
+ * ## Examples
102
+ *
103
+ * ```gleam
104
+ * assert flatten(Ok(Ok(1))) == Ok(1)
105
+ * ```
106
+ *
107
+ * ```gleam
108
+ * assert flatten(Ok(Error(""))) == Error("")
109
+ * ```
110
+ *
111
+ * ```gleam
112
+ * assert flatten(Error(Nil)) == Error(Nil)
113
+ * ```
114
+ */
115
+ export function flatten(result) {
116
+ if (result instanceof Ok) {
117
+ let x = result[0];
118
+ return x;
119
+ } else {
120
+ return result;
121
+ }
122
+ }
123
+
124
+ /**
125
+ * "Updates" an `Ok` result by passing its value to a function that yields a result,
126
+ * and returning the yielded result. (This may "replace" the `Ok` with an `Error`.)
127
+ *
128
+ * If the input is an `Error` rather than an `Ok`, the function is not called and
129
+ * the original `Error` is returned.
130
+ *
131
+ * This function is the equivalent of calling `map` followed by `flatten`, and
132
+ * it is useful for chaining together multiple functions that may fail.
133
+ *
134
+ * ## Examples
135
+ *
136
+ * ```gleam
137
+ * assert try(Ok(1), fn(x) { Ok(x + 1) }) == Ok(2)
138
+ * ```
139
+ *
140
+ * ```gleam
141
+ * assert try(Ok(1), fn(x) { Ok(#("a", x)) }) == Ok(#("a", 1))
142
+ * ```
143
+ *
144
+ * ```gleam
145
+ * assert try(Ok(1), fn(_) { Error("Oh no") }) == Error("Oh no")
146
+ * ```
147
+ *
148
+ * ```gleam
149
+ * assert try(Error(Nil), fn(x) { Ok(x + 1) }) == Error(Nil)
150
+ * ```
151
+ */
152
+ export function try$(result, fun) {
153
+ if (result instanceof Ok) {
154
+ let x = result[0];
155
+ return fun(x);
156
+ } else {
157
+ return result;
158
+ }
159
+ }
160
+
161
+ /**
162
+ * Extracts the `Ok` value from a result, returning a default value if the result
163
+ * is an `Error`.
164
+ *
165
+ * ## Examples
166
+ *
167
+ * ```gleam
168
+ * assert unwrap(Ok(1), 0) == 1
169
+ * ```
170
+ *
171
+ * ```gleam
172
+ * assert unwrap(Error(""), 0) == 0
173
+ * ```
174
+ */
175
+ export function unwrap(result, default$) {
176
+ if (result instanceof Ok) {
177
+ let v = result[0];
178
+ return v;
179
+ } else {
180
+ return default$;
181
+ }
182
+ }
183
+
184
+ /**
185
+ * Extracts the `Ok` value from a result, evaluating the default function if the result
186
+ * is an `Error`.
187
+ *
188
+ * ## Examples
189
+ *
190
+ * ```gleam
191
+ * assert lazy_unwrap(Ok(1), fn() { 0 }) == 1
192
+ * ```
193
+ *
194
+ * ```gleam
195
+ * assert lazy_unwrap(Error(""), fn() { 0 }) == 0
196
+ * ```
197
+ */
198
+ export function lazy_unwrap(result, default$) {
199
+ if (result instanceof Ok) {
200
+ let v = result[0];
201
+ return v;
202
+ } else {
203
+ return default$();
204
+ }
205
+ }
206
+
207
+ /**
208
+ * Extracts the `Error` value from a result, returning a default value if the result
209
+ * is an `Ok`.
210
+ *
211
+ * ## Examples
212
+ *
213
+ * ```gleam
214
+ * assert unwrap_error(Error(1), 0) == 1
215
+ * ```
216
+ *
217
+ * ```gleam
218
+ * assert unwrap_error(Ok(""), 0) == 0
219
+ * ```
220
+ */
221
+ export function unwrap_error(result, default$) {
222
+ if (result instanceof Ok) {
223
+ return default$;
224
+ } else {
225
+ let e = result[0];
226
+ return e;
227
+ }
228
+ }
229
+
230
+ /**
231
+ * Returns the first value if it is `Ok`, otherwise returns the second value.
232
+ *
233
+ * ## Examples
234
+ *
235
+ * ```gleam
236
+ * assert or(Ok(1), Ok(2)) == Ok(1)
237
+ * ```
238
+ *
239
+ * ```gleam
240
+ * assert or(Ok(1), Error("Error 2")) == Ok(1)
241
+ * ```
242
+ *
243
+ * ```gleam
244
+ * assert or(Error("Error 1"), Ok(2)) == Ok(2)
245
+ * ```
246
+ *
247
+ * ```gleam
248
+ * assert or(Error("Error 1"), Error("Error 2")) == Error("Error 2")
249
+ * ```
250
+ */
251
+ export function or(first, second) {
252
+ if (first instanceof Ok) {
253
+ return first;
254
+ } else {
255
+ return second;
256
+ }
257
+ }
258
+
259
+ /**
260
+ * Returns the first value if it is `Ok`, otherwise evaluates the given function for a fallback value.
261
+ *
262
+ * If you need access to the initial error value, use `result.try_recover`.
263
+ *
264
+ * ## Examples
265
+ *
266
+ * ```gleam
267
+ * assert lazy_or(Ok(1), fn() { Ok(2) }) == Ok(1)
268
+ * ```
269
+ *
270
+ * ```gleam
271
+ * assert lazy_or(Ok(1), fn() { Error("Error 2") }) == Ok(1)
272
+ * ```
273
+ *
274
+ * ```gleam
275
+ * assert lazy_or(Error("Error 1"), fn() { Ok(2) }) == Ok(2)
276
+ * ```
277
+ *
278
+ * ```gleam
279
+ * assert lazy_or(Error("Error 1"), fn() { Error("Error 2") })
280
+ * == Error("Error 2")
281
+ * ```
282
+ */
283
+ export function lazy_or(first, second) {
284
+ if (first instanceof Ok) {
285
+ return first;
286
+ } else {
287
+ return second();
288
+ }
289
+ }
290
+
291
+ /**
292
+ * Combines a list of results into a single result.
293
+ * If all elements in the list are `Ok` then returns an `Ok` holding the list of values.
294
+ * If any element is `Error` then returns the first error.
295
+ *
296
+ * ## Examples
297
+ *
298
+ * ```gleam
299
+ * assert all([Ok(1), Ok(2)]) == Ok([1, 2])
300
+ * ```
301
+ *
302
+ * ```gleam
303
+ * assert all([Ok(1), Error("e")]) == Error("e")
304
+ * ```
305
+ */
306
+ export function all(results) {
307
+ return $list.try_map(results, (result) => { return result; });
308
+ }
309
+
310
+ function partition_loop(loop$results, loop$oks, loop$errors) {
311
+ while (true) {
312
+ let results = loop$results;
313
+ let oks = loop$oks;
314
+ let errors = loop$errors;
315
+ if (results instanceof $Empty) {
316
+ return [oks, errors];
317
+ } else {
318
+ let $ = results.head;
319
+ if ($ instanceof Ok) {
320
+ let rest = results.tail;
321
+ let a = $[0];
322
+ loop$results = rest;
323
+ loop$oks = listPrepend(a, oks);
324
+ loop$errors = errors;
325
+ } else {
326
+ let rest = results.tail;
327
+ let e = $[0];
328
+ loop$results = rest;
329
+ loop$oks = oks;
330
+ loop$errors = listPrepend(e, errors);
331
+ }
332
+ }
333
+ }
334
+ }
335
+
336
+ /**
337
+ * Given a list of results, returns a pair where the first element is a list
338
+ * of all the values inside `Ok` and the second element is a list with all the
339
+ * values inside `Error`. The values in both lists appear in reverse order with
340
+ * respect to their position in the original list of results.
341
+ *
342
+ * ## Examples
343
+ *
344
+ * ```gleam
345
+ * assert partition([Ok(1), Error("a"), Error("b"), Ok(2)])
346
+ * == #([2, 1], ["b", "a"])
347
+ * ```
348
+ */
349
+ export function partition(results) {
350
+ return partition_loop(results, toList([]), toList([]));
351
+ }
352
+
353
+ /**
354
+ * Replace the value within a result
355
+ *
356
+ * ## Examples
357
+ *
358
+ * ```gleam
359
+ * assert replace(Ok(1), Nil) == Ok(Nil)
360
+ * ```
361
+ *
362
+ * ```gleam
363
+ * assert replace(Error(1), Nil) == Error(1)
364
+ * ```
365
+ */
366
+ export function replace(result, value) {
367
+ if (result instanceof Ok) {
368
+ return new Ok(value);
369
+ } else {
370
+ return result;
371
+ }
372
+ }
373
+
374
+ /**
375
+ * Replace the error within a result
376
+ *
377
+ * ## Examples
378
+ *
379
+ * ```gleam
380
+ * assert replace_error(Error(1), Nil) == Error(Nil)
381
+ * ```
382
+ *
383
+ * ```gleam
384
+ * assert replace_error(Ok(1), Nil) == Ok(1)
385
+ * ```
386
+ */
387
+ export function replace_error(result, error) {
388
+ if (result instanceof Ok) {
389
+ return result;
390
+ } else {
391
+ return new Error(error);
392
+ }
393
+ }
394
+
395
+ /**
396
+ * Given a list of results, returns only the values inside `Ok`.
397
+ *
398
+ * ## Examples
399
+ *
400
+ * ```gleam
401
+ * assert values([Ok(1), Error("a"), Ok(3)]) == [1, 3]
402
+ * ```
403
+ */
404
+ export function values(results) {
405
+ return $list.filter_map(results, (result) => { return result; });
406
+ }
407
+
408
+ /**
409
+ * Updates a value held within the `Error` of a result by calling a given function
410
+ * on it, where the given function also returns a result. The two results are
411
+ * then merged together into one result.
412
+ *
413
+ * If the result is an `Ok` rather than `Error` the function is not called and the
414
+ * result stays the same.
415
+ *
416
+ * This function is useful for chaining together computations that may fail
417
+ * and trying to recover from possible errors.
418
+ *
419
+ * If you do not need access to the initial error value, use `result.lazy_or`.
420
+ *
421
+ * ## Examples
422
+ *
423
+ * ```gleam
424
+ * assert Ok(1)
425
+ * |> try_recover(with: fn(_) { Error("failed to recover") })
426
+ * == Ok(1)
427
+ * ```
428
+ *
429
+ * ```gleam
430
+ * assert Error(1)
431
+ * |> try_recover(with: fn(error) { Ok(error + 1) })
432
+ * == Ok(2)
433
+ * ```
434
+ *
435
+ * ```gleam
436
+ * assert Error(1)
437
+ * |> try_recover(with: fn(error) { Error("failed to recover") })
438
+ * == Error("failed to recover")
439
+ * ```
440
+ */
441
+ export function try_recover(result, fun) {
442
+ if (result instanceof Ok) {
443
+ return result;
444
+ } else {
445
+ let error = result[0];
446
+ return fun(error);
447
+ }
448
+ }