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.
- package/README.md +1 -1
- package/package.json +5 -1
- package/src/index.mjs +22 -7
- package/template/gleam.toml +1 -1
- package/tui/build/dev/javascript/etch/_gleam_artefacts/etch@command.cache +0 -0
- package/tui/build/dev/javascript/etch/_gleam_artefacts/etch@command.cache_inline +0 -0
- package/tui/build/dev/javascript/etch/_gleam_artefacts/etch@command.cache_meta +0 -0
- package/tui/build/dev/javascript/etch/_gleam_artefacts/etch@cursor.cache +0 -0
- package/tui/build/dev/javascript/etch/_gleam_artefacts/etch@cursor.cache_inline +0 -0
- package/tui/build/dev/javascript/etch/_gleam_artefacts/etch@cursor.cache_meta +0 -0
- package/tui/build/dev/javascript/etch/_gleam_artefacts/etch@event.cache +0 -0
- package/tui/build/dev/javascript/etch/_gleam_artefacts/etch@event.cache_inline +0 -0
- package/tui/build/dev/javascript/etch/_gleam_artefacts/etch@event.cache_meta +0 -0
- package/tui/build/dev/javascript/etch/_gleam_artefacts/etch@internal@consts.cache +0 -0
- package/tui/build/dev/javascript/etch/_gleam_artefacts/etch@internal@consts.cache_inline +0 -0
- package/tui/build/dev/javascript/etch/_gleam_artefacts/etch@internal@consts.cache_meta +0 -0
- package/tui/build/dev/javascript/etch/_gleam_artefacts/etch@stdout.cache +0 -0
- package/tui/build/dev/javascript/etch/_gleam_artefacts/etch@stdout.cache_inline +0 -0
- package/tui/build/dev/javascript/etch/_gleam_artefacts/etch@stdout.cache_meta +0 -0
- package/tui/build/dev/javascript/etch/_gleam_artefacts/etch@style.cache +0 -0
- package/tui/build/dev/javascript/etch/_gleam_artefacts/etch@style.cache_inline +0 -0
- package/tui/build/dev/javascript/etch/_gleam_artefacts/etch@style.cache_meta +0 -0
- package/tui/build/dev/javascript/etch/_gleam_artefacts/etch@terminal.cache +0 -0
- package/tui/build/dev/javascript/etch/_gleam_artefacts/etch@terminal.cache_inline +0 -0
- package/tui/build/dev/javascript/etch/_gleam_artefacts/etch@terminal.cache_meta +0 -0
- package/tui/build/dev/javascript/etch/etch/command.mjs +479 -0
- package/tui/build/dev/javascript/etch/etch/cursor.mjs +164 -0
- package/tui/build/dev/javascript/etch/etch/event.mjs +2399 -0
- package/tui/build/dev/javascript/etch/etch/internal/consts.mjs +3 -0
- package/tui/build/dev/javascript/etch/etch/stdout.mjs +375 -0
- package/tui/build/dev/javascript/etch/etch/style.mjs +741 -0
- package/tui/build/dev/javascript/etch/etch/terminal.mjs +137 -0
- package/tui/build/dev/javascript/etch/gleam.mjs +1 -0
- package/tui/build/dev/javascript/etch/input/event_ffi.erl +73 -0
- package/tui/build/dev/javascript/etch/input/input_ffi.mjs +192 -0
- package/tui/build/dev/javascript/etch/input/signal_handler.erl +33 -0
- package/tui/build/dev/javascript/etch/terminal/terminal_ffi.erl +22 -0
- package/tui/build/dev/javascript/etch/terminal/terminal_ffi.mjs +37 -0
- package/tui/build/dev/javascript/etch/terminal/tty_state.erl +29 -0
- package/tui/build/dev/javascript/gleam_erlang/_gleam_artefacts/gleam@erlang@application.cache +0 -0
- package/tui/build/dev/javascript/gleam_erlang/_gleam_artefacts/gleam@erlang@application.cache_inline +0 -0
- package/tui/build/dev/javascript/gleam_erlang/_gleam_artefacts/gleam@erlang@application.cache_meta +0 -0
- package/tui/build/dev/javascript/gleam_erlang/_gleam_artefacts/gleam@erlang@atom.cache +0 -0
- package/tui/build/dev/javascript/gleam_erlang/_gleam_artefacts/gleam@erlang@atom.cache_inline +0 -0
- package/tui/build/dev/javascript/gleam_erlang/_gleam_artefacts/gleam@erlang@atom.cache_meta +0 -0
- package/tui/build/dev/javascript/gleam_erlang/_gleam_artefacts/gleam@erlang@charlist.cache +0 -0
- package/tui/build/dev/javascript/gleam_erlang/_gleam_artefacts/gleam@erlang@charlist.cache_inline +0 -0
- package/tui/build/dev/javascript/gleam_erlang/_gleam_artefacts/gleam@erlang@charlist.cache_meta +0 -0
- package/tui/build/dev/javascript/gleam_erlang/_gleam_artefacts/gleam@erlang@node.cache +0 -0
- package/tui/build/dev/javascript/gleam_erlang/_gleam_artefacts/gleam@erlang@node.cache_inline +0 -0
- package/tui/build/dev/javascript/gleam_erlang/_gleam_artefacts/gleam@erlang@node.cache_meta +0 -0
- package/tui/build/dev/javascript/gleam_erlang/_gleam_artefacts/gleam@erlang@port.cache +0 -0
- package/tui/build/dev/javascript/gleam_erlang/_gleam_artefacts/gleam@erlang@port.cache_inline +0 -0
- package/tui/build/dev/javascript/gleam_erlang/_gleam_artefacts/gleam@erlang@port.cache_meta +0 -0
- package/tui/build/dev/javascript/gleam_erlang/_gleam_artefacts/gleam@erlang@process.cache +0 -0
- package/tui/build/dev/javascript/gleam_erlang/_gleam_artefacts/gleam@erlang@process.cache_inline +0 -0
- package/tui/build/dev/javascript/gleam_erlang/_gleam_artefacts/gleam@erlang@process.cache_meta +0 -0
- package/tui/build/dev/javascript/gleam_erlang/_gleam_artefacts/gleam@erlang@reference.cache +0 -0
- package/tui/build/dev/javascript/gleam_erlang/_gleam_artefacts/gleam@erlang@reference.cache_inline +0 -0
- package/tui/build/dev/javascript/gleam_erlang/_gleam_artefacts/gleam@erlang@reference.cache_meta +0 -0
- package/tui/build/dev/javascript/gleam_erlang/gleam/erlang/application.mjs +38 -0
- package/tui/build/dev/javascript/gleam_erlang/gleam/erlang/atom.mjs +2 -0
- package/tui/build/dev/javascript/gleam_erlang/gleam/erlang/charlist.mjs +1 -0
- package/tui/build/dev/javascript/gleam_erlang/gleam/erlang/node.mjs +12 -0
- package/tui/build/dev/javascript/gleam_erlang/gleam/erlang/port.mjs +1 -0
- package/tui/build/dev/javascript/gleam_erlang/gleam/erlang/process.mjs +161 -0
- package/tui/build/dev/javascript/gleam_erlang/gleam/erlang/reference.mjs +1 -0
- package/tui/build/dev/javascript/gleam_erlang/gleam.mjs +1 -0
- package/tui/build/dev/javascript/gleam_erlang/gleam@erlang@application.erl +43 -0
- package/tui/build/dev/javascript/gleam_erlang/gleam@erlang@atom.erl +94 -0
- package/tui/build/dev/javascript/gleam_erlang/gleam@erlang@charlist.erl +42 -0
- package/tui/build/dev/javascript/gleam_erlang/gleam@erlang@node.erl +80 -0
- package/tui/build/dev/javascript/gleam_erlang/gleam@erlang@port.erl +8 -0
- package/tui/build/dev/javascript/gleam_erlang/gleam@erlang@process.erl +868 -0
- package/tui/build/dev/javascript/gleam_erlang/gleam@erlang@reference.erl +21 -0
- package/tui/build/dev/javascript/gleam_erlang/gleam_erlang_ffi.erl +164 -0
- package/tui/build/dev/javascript/gleam_javascript/_gleam_artefacts/gleam@javascript@array.cache +0 -0
- package/tui/build/dev/javascript/gleam_javascript/_gleam_artefacts/gleam@javascript@array.cache_inline +0 -0
- package/tui/build/dev/javascript/gleam_javascript/_gleam_artefacts/gleam@javascript@array.cache_meta +0 -0
- package/tui/build/dev/javascript/gleam_javascript/_gleam_artefacts/gleam@javascript@promise.cache +0 -0
- package/tui/build/dev/javascript/gleam_javascript/_gleam_artefacts/gleam@javascript@promise.cache_inline +0 -0
- package/tui/build/dev/javascript/gleam_javascript/_gleam_artefacts/gleam@javascript@promise.cache_meta +0 -0
- package/tui/build/dev/javascript/gleam_javascript/_gleam_artefacts/gleam@javascript@symbol.cache +0 -0
- package/tui/build/dev/javascript/gleam_javascript/_gleam_artefacts/gleam@javascript@symbol.cache_inline +0 -0
- package/tui/build/dev/javascript/gleam_javascript/_gleam_artefacts/gleam@javascript@symbol.cache_meta +0 -0
- package/tui/build/dev/javascript/gleam_javascript/gleam/javascript/array.mjs +24 -0
- package/tui/build/dev/javascript/gleam_javascript/gleam/javascript/promise.mjs +105 -0
- package/tui/build/dev/javascript/gleam_javascript/gleam/javascript/symbol.mjs +7 -0
- package/tui/build/dev/javascript/gleam_javascript/gleam.mjs +1 -0
- package/tui/build/dev/javascript/gleam_javascript/gleam_javascript_ffi.mjs +133 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@bit_array.cache +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@bit_array.cache_inline +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@bit_array.cache_meta +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@bool.cache +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@bool.cache_inline +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@bool.cache_meta +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@bytes_tree.cache +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@bytes_tree.cache_inline +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@bytes_tree.cache_meta +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@dict.cache +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@dict.cache_inline +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@dict.cache_meta +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@dynamic.cache +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@dynamic.cache_inline +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@dynamic.cache_meta +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@dynamic@decode.cache +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@dynamic@decode.cache_inline +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@dynamic@decode.cache_meta +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@float.cache +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@float.cache_inline +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@float.cache_meta +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@function.cache +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@function.cache_inline +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@function.cache_meta +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@int.cache +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@int.cache_inline +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@int.cache_meta +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@io.cache +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@io.cache_inline +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@io.cache_meta +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@list.cache +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@list.cache_inline +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@list.cache_meta +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@option.cache +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@option.cache_inline +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@option.cache_meta +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@order.cache +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@order.cache_inline +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@order.cache_meta +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@pair.cache +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@pair.cache_inline +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@pair.cache_meta +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@result.cache +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@result.cache_inline +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@result.cache_meta +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@set.cache +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@set.cache_inline +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@set.cache_meta +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@string.cache +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@string.cache_inline +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@string.cache_meta +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@string_tree.cache +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@string_tree.cache_inline +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@string_tree.cache_meta +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@uri.cache +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@uri.cache_inline +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@uri.cache_meta +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/dict.mjs +710 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam/bit_array.mjs +286 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam/bool.mjs +295 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam/bytes_tree.mjs +225 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam/dict.mjs +455 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam/dynamic/decode.mjs +993 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam/dynamic.mjs +35 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam/float.mjs +528 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam/function.mjs +6 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam/int.mjs +764 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam/io.mjs +8 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam/list.mjs +3063 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam/option.mjs +386 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam/order.mjs +166 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam/pair.mjs +96 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam/result.mjs +448 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam/set.mjs +413 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam/string.mjs +695 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam/string_tree.mjs +128 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam/uri.mjs +1151 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam.mjs +1 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam@bit_array.erl +347 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam@bool.erl +334 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam@bytes_tree.erl +211 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam@dict.erl +513 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam@dynamic.erl +105 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam@dynamic@decode.erl +1114 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam@float.erl +711 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam@function.erl +18 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam@int.erl +972 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam@io.erl +76 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam@list.erl +2735 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam@option.erl +381 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam@order.erl +188 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam@pair.erl +104 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam@result.erl +500 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam@set.erl +430 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam@string.erl +964 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam@string_tree.erl +202 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam@uri.erl +1042 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam_stdlib.erl +534 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam_stdlib.mjs +1133 -0
- package/tui/build/dev/javascript/gleam_version +1 -0
- package/tui/build/dev/javascript/prelude.mjs +1575 -0
- package/tui/build/dev/javascript/tui/_gleam_artefacts/tui.cache +0 -0
- package/tui/build/dev/javascript/tui/_gleam_artefacts/tui.cache_inline +0 -0
- package/tui/build/dev/javascript/tui/_gleam_artefacts/tui.cache_meta +0 -0
- package/tui/build/dev/javascript/tui/_gleam_artefacts/tui.cache_warnings +0 -0
- package/tui/build/dev/javascript/tui/_gleam_artefacts/tui@prompt.cache +0 -0
- package/tui/build/dev/javascript/tui/_gleam_artefacts/tui@prompt.cache_inline +0 -0
- package/tui/build/dev/javascript/tui/_gleam_artefacts/tui@prompt.cache_meta +0 -0
- package/tui/build/dev/javascript/tui/_gleam_artefacts/tui@prompt.cache_warnings +0 -0
- package/tui/build/dev/javascript/tui/gleam.mjs +1 -0
- package/tui/build/dev/javascript/tui/tui/prompt.mjs +521 -0
- package/tui/build/dev/javascript/tui/tui.mjs +334 -0
- 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
|
+
}
|