create-mendix-widget-gleam 2.0.14 → 2.0.16

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 +32 -12
  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,35 @@
1
+ import * as $dict from "../gleam/dict.mjs";
2
+ import {
3
+ classify_dynamic as classify,
4
+ identity as bool,
5
+ identity as string,
6
+ identity as float,
7
+ identity as int,
8
+ identity as bit_array,
9
+ identity as list,
10
+ list_to_array as array,
11
+ identity as cast,
12
+ } from "../gleam_stdlib.mjs";
13
+
14
+ export { array, bit_array, bool, classify, float, int, list, string };
15
+
16
+ /**
17
+ * Create a dynamic value made of an unordered series of keys and values, where
18
+ * the keys are unique.
19
+ *
20
+ * On Erlang this will be a map, on JavaScript this will be a Gleam dict
21
+ * object.
22
+ */
23
+ export function properties(entries) {
24
+ return cast($dict.from_list(entries));
25
+ }
26
+
27
+ /**
28
+ * A dynamic value representing nothing.
29
+ *
30
+ * On Erlang this will be the atom `nil`, on JavaScript this will be
31
+ * `undefined`.
32
+ */
33
+ export function nil() {
34
+ return cast(undefined);
35
+ }
@@ -0,0 +1,528 @@
1
+ import { Ok, Error, Empty as $Empty, divideFloat } from "../gleam.mjs";
2
+ import * as $order from "../gleam/order.mjs";
3
+ import {
4
+ parse_float as parse,
5
+ float_to_string as to_string,
6
+ ceiling,
7
+ floor,
8
+ round as js_round,
9
+ truncate,
10
+ identity as do_to_float,
11
+ power as do_power,
12
+ random_uniform as random,
13
+ log as do_log,
14
+ exp as exponential,
15
+ } from "../gleam_stdlib.mjs";
16
+
17
+ export { ceiling, exponential, floor, parse, random, to_string, truncate };
18
+
19
+ /**
20
+ * Compares two `Float`s, returning an `Order`:
21
+ * `Lt` for lower than, `Eq` for equals, or `Gt` for greater than.
22
+ *
23
+ * ## Examples
24
+ *
25
+ * ```gleam
26
+ * assert compare(2.0, 2.3) == Lt
27
+ * ```
28
+ *
29
+ * To handle
30
+ * [Floating Point Imprecision](https://en.wikipedia.org/wiki/Floating-point_arithmetic#Accuracy_problems)
31
+ * you may use [`loosely_compare`](#loosely_compare) instead.
32
+ */
33
+ export function compare(a, b) {
34
+ let $ = a === b;
35
+ if ($) {
36
+ return new $order.Eq();
37
+ } else {
38
+ let $1 = a < b;
39
+ if ($1) {
40
+ return new $order.Lt();
41
+ } else {
42
+ return new $order.Gt();
43
+ }
44
+ }
45
+ }
46
+
47
+ /**
48
+ * Compares two `Float`s, returning the smaller of the two.
49
+ *
50
+ * ## Examples
51
+ *
52
+ * ```gleam
53
+ * assert min(2.0, 2.3) == 2.0
54
+ * ```
55
+ */
56
+ export function min(a, b) {
57
+ let $ = a < b;
58
+ if ($) {
59
+ return a;
60
+ } else {
61
+ return b;
62
+ }
63
+ }
64
+
65
+ /**
66
+ * Compares two `Float`s, returning the larger of the two.
67
+ *
68
+ * ## Examples
69
+ *
70
+ * ```gleam
71
+ * assert max(2.0, 2.3) == 2.3
72
+ * ```
73
+ */
74
+ export function max(a, b) {
75
+ let $ = a > b;
76
+ if ($) {
77
+ return a;
78
+ } else {
79
+ return b;
80
+ }
81
+ }
82
+
83
+ /**
84
+ * Restricts a float between two bounds.
85
+ *
86
+ * Note: If the `min` argument is larger than the `max` argument then they
87
+ * will be swapped, so the minimum bound is always lower than the maximum
88
+ * bound.
89
+ *
90
+ *
91
+ * ## Examples
92
+ *
93
+ * ```gleam
94
+ * assert clamp(1.2, min: 1.4, max: 1.6) == 1.4
95
+ * ```
96
+ *
97
+ * ```gleam
98
+ * assert clamp(1.2, min: 1.4, max: 0.6) == 1.2
99
+ * ```
100
+ */
101
+ export function clamp(x, min_bound, max_bound) {
102
+ let $ = min_bound >= max_bound;
103
+ if ($) {
104
+ let _pipe = x;
105
+ let _pipe$1 = min(_pipe, min_bound);
106
+ return max(_pipe$1, max_bound);
107
+ } else {
108
+ let _pipe = x;
109
+ let _pipe$1 = min(_pipe, max_bound);
110
+ return max(_pipe$1, min_bound);
111
+ }
112
+ }
113
+
114
+ /**
115
+ * Returns the absolute value of the input as a `Float`.
116
+ *
117
+ * ## Examples
118
+ *
119
+ * ```gleam
120
+ * assert absolute_value(-12.5) == 12.5
121
+ * ```
122
+ *
123
+ * ```gleam
124
+ * assert absolute_value(10.2) == 10.2
125
+ * ```
126
+ */
127
+ export function absolute_value(x) {
128
+ let $ = x >= 0.0;
129
+ if ($) {
130
+ return x;
131
+ } else {
132
+ return 0.0 - x;
133
+ }
134
+ }
135
+
136
+ /**
137
+ * Compares two `Float`s within a tolerance, returning an `Order`:
138
+ * `Lt` for lower than, `Eq` for equals, or `Gt` for greater than.
139
+ *
140
+ * This function allows Float comparison while handling
141
+ * [Floating Point Imprecision](https://en.wikipedia.org/wiki/Floating-point_arithmetic#Accuracy_problems).
142
+ *
143
+ * Notice: For `Float`s the tolerance won't be exact:
144
+ * `5.3 - 5.0` is not exactly `0.3`.
145
+ *
146
+ * ## Examples
147
+ *
148
+ * ```gleam
149
+ * assert loosely_compare(5.0, with: 5.3, tolerating: 0.5) == Eq
150
+ * ```
151
+ *
152
+ * If you want to check only for equality you may use
153
+ * [`loosely_equals`](#loosely_equals) instead.
154
+ */
155
+ export function loosely_compare(a, b, tolerance) {
156
+ let difference = absolute_value(a - b);
157
+ let $ = difference <= tolerance;
158
+ if ($) {
159
+ return new $order.Eq();
160
+ } else {
161
+ return compare(a, b);
162
+ }
163
+ }
164
+
165
+ /**
166
+ * Checks for equality of two `Float`s within a tolerance,
167
+ * returning a `Bool`.
168
+ *
169
+ * This function allows Float comparison while handling
170
+ * [Floating Point Imprecision](https://en.wikipedia.org/wiki/Floating-point_arithmetic#Accuracy_problems).
171
+ *
172
+ * Notice: For `Float`s the tolerance won't be exact:
173
+ * `5.3 - 5.0` is not exactly `0.3`.
174
+ *
175
+ * ## Examples
176
+ *
177
+ * ```gleam
178
+ * assert loosely_equals(5.0, with: 5.3, tolerating: 0.5)
179
+ * ```
180
+ *
181
+ * ```gleam
182
+ * assert !loosely_equals(5.0, with: 5.1, tolerating: 0.1)
183
+ * ```
184
+ */
185
+ export function loosely_equals(a, b, tolerance) {
186
+ let difference = absolute_value(a - b);
187
+ return difference <= tolerance;
188
+ }
189
+
190
+ /**
191
+ * Returns the result of the base being raised to the power of the
192
+ * exponent, as a `Float`.
193
+ *
194
+ * ## Examples
195
+ *
196
+ * ```gleam
197
+ * assert power(2.0, -1.0) == Ok(0.5)
198
+ * ```
199
+ *
200
+ * ```gleam
201
+ * assert power(2.0, 2.0) == Ok(4.0)
202
+ * ```
203
+ *
204
+ * ```gleam
205
+ * assert power(8.0, 1.5) == Ok(22.627416997969522)
206
+ * ```
207
+ *
208
+ * ```gleam
209
+ * assert 4.0 |> power(of: 2.0) == Ok(16.0)
210
+ * ```
211
+ *
212
+ * ```gleam
213
+ * assert power(-1.0, 0.5) == Error(Nil)
214
+ * ```
215
+ */
216
+ export function power(base, exponent) {
217
+ let fractional = (ceiling(exponent) - exponent) > 0.0;
218
+ let $ = ((base < 0.0) && fractional) || ((base === 0.0) && (exponent < 0.0));
219
+ if ($) {
220
+ return new Error(undefined);
221
+ } else {
222
+ return new Ok(do_power(base, exponent));
223
+ }
224
+ }
225
+
226
+ /**
227
+ * Returns the square root of the input as a `Float`.
228
+ *
229
+ * ## Examples
230
+ *
231
+ * ```gleam
232
+ * assert square_root(4.0) == Ok(2.0)
233
+ * ```
234
+ *
235
+ * ```gleam
236
+ * assert square_root(-16.0) == Error(Nil)
237
+ * ```
238
+ */
239
+ export function square_root(x) {
240
+ return power(x, 0.5);
241
+ }
242
+
243
+ /**
244
+ * Returns the negative of the value provided.
245
+ *
246
+ * ## Examples
247
+ *
248
+ * ```gleam
249
+ * assert negate(1.0) == -1.0
250
+ * ```
251
+ */
252
+ export function negate(x) {
253
+ return -1.0 * x;
254
+ }
255
+
256
+ /**
257
+ * Rounds the value to the nearest whole number as an `Int`.
258
+ *
259
+ * ## Examples
260
+ *
261
+ * ```gleam
262
+ * assert round(2.3) == 2
263
+ * ```
264
+ *
265
+ * ```gleam
266
+ * assert round(2.5) == 3
267
+ * ```
268
+ */
269
+ export function round(x) {
270
+ let $ = x >= 0.0;
271
+ if ($) {
272
+ return js_round(x);
273
+ } else {
274
+ return 0 - js_round(negate(x));
275
+ }
276
+ }
277
+
278
+ /**
279
+ * Converts the value to a given precision as a `Float`.
280
+ * The precision is the number of allowed decimal places.
281
+ * Negative precisions are allowed and force rounding
282
+ * to the nearest tenth, hundredth, thousandth etc.
283
+ *
284
+ * ## Examples
285
+ *
286
+ * ```gleam
287
+ * assert to_precision(2.43434348473, 2) == 2.43
288
+ * ```
289
+ *
290
+ * ```gleam
291
+ * assert to_precision(547890.453444, -3) == 548000.0
292
+ * ```
293
+ */
294
+ export function to_precision(x, precision) {
295
+ let $ = precision <= 0;
296
+ if ($) {
297
+ let factor = do_power(10.0, do_to_float(- precision));
298
+ return do_to_float(round(divideFloat(x, factor))) * factor;
299
+ } else {
300
+ let factor = do_power(10.0, do_to_float(precision));
301
+ return divideFloat(do_to_float(round(x * factor)), factor);
302
+ }
303
+ }
304
+
305
+ function sum_loop(loop$numbers, loop$initial) {
306
+ while (true) {
307
+ let numbers = loop$numbers;
308
+ let initial = loop$initial;
309
+ if (numbers instanceof $Empty) {
310
+ return initial;
311
+ } else {
312
+ let first = numbers.head;
313
+ let rest = numbers.tail;
314
+ loop$numbers = rest;
315
+ loop$initial = first + initial;
316
+ }
317
+ }
318
+ }
319
+
320
+ /**
321
+ * Sums a list of `Float`s.
322
+ *
323
+ * ## Example
324
+ *
325
+ * ```gleam
326
+ * assert sum([1.0, 2.2, 3.3]) == 6.5
327
+ * ```
328
+ */
329
+ export function sum(numbers) {
330
+ return sum_loop(numbers, 0.0);
331
+ }
332
+
333
+ function product_loop(loop$numbers, loop$initial) {
334
+ while (true) {
335
+ let numbers = loop$numbers;
336
+ let initial = loop$initial;
337
+ if (numbers instanceof $Empty) {
338
+ return initial;
339
+ } else {
340
+ let first = numbers.head;
341
+ let rest = numbers.tail;
342
+ loop$numbers = rest;
343
+ loop$initial = first * initial;
344
+ }
345
+ }
346
+ }
347
+
348
+ /**
349
+ * Multiplies a list of `Float`s and returns the product.
350
+ *
351
+ * ## Example
352
+ *
353
+ * ```gleam
354
+ * assert product([2.5, 3.2, 4.2]) == 33.6
355
+ * ```
356
+ */
357
+ export function product(numbers) {
358
+ return product_loop(numbers, 1.0);
359
+ }
360
+
361
+ /**
362
+ * Computes the modulo of a float division of inputs as a `Result`.
363
+ *
364
+ * Returns division of the inputs as a `Result`: If the given divisor equals
365
+ * `0`, this function returns an `Error`.
366
+ *
367
+ * The computed value will always have the same sign as the `divisor`.
368
+ *
369
+ * ## Examples
370
+ *
371
+ * ```gleam
372
+ * assert modulo(13.3, by: 3.3) == Ok(0.1)
373
+ * ```
374
+ *
375
+ * ```gleam
376
+ * assert modulo(-13.3, by: 3.3) == Ok(3.2)
377
+ * ```
378
+ *
379
+ * ```gleam
380
+ * assert modulo(13.3, by: -3.3) == Ok(-3.2)
381
+ * ```
382
+ *
383
+ * ```gleam
384
+ * assert modulo(-13.3, by: -3.3) == Ok(-0.1)
385
+ * ```
386
+ */
387
+ export function modulo(dividend, divisor) {
388
+ if (divisor === 0.0) {
389
+ return new Error(undefined);
390
+ } else {
391
+ return new Ok(dividend - (floor(divideFloat(dividend, divisor)) * divisor));
392
+ }
393
+ }
394
+
395
+ /**
396
+ * Returns division of the inputs as a `Result`.
397
+ *
398
+ * ## Examples
399
+ *
400
+ * ```gleam
401
+ * assert divide(0.0, 1.0) == Ok(0.0)
402
+ * ```
403
+ *
404
+ * ```gleam
405
+ * assert divide(1.0, 0.0) == Error(Nil)
406
+ * ```
407
+ */
408
+ export function divide(a, b) {
409
+ if (b === 0.0) {
410
+ return new Error(undefined);
411
+ } else {
412
+ let b$1 = b;
413
+ return new Ok(divideFloat(a, b$1));
414
+ }
415
+ }
416
+
417
+ /**
418
+ * Adds two floats together.
419
+ *
420
+ * It's the function equivalent of the `+.` operator.
421
+ * This function is useful in higher order functions or pipes.
422
+ *
423
+ * ## Examples
424
+ *
425
+ * ```gleam
426
+ * assert add(1.0, 2.0) == 3.0
427
+ * ```
428
+ *
429
+ * ```gleam
430
+ * import gleam/list
431
+ *
432
+ * assert list.fold([1.0, 2.0, 3.0], 0.0, add) == 6.0
433
+ * ```
434
+ *
435
+ * ```gleam
436
+ * assert 3.0 |> add(2.0) == 5.0
437
+ * ```
438
+ */
439
+ export function add(a, b) {
440
+ return a + b;
441
+ }
442
+
443
+ /**
444
+ * Multiplies two floats together.
445
+ *
446
+ * It's the function equivalent of the `*.` operator.
447
+ * This function is useful in higher order functions or pipes.
448
+ *
449
+ * ## Examples
450
+ *
451
+ * ```gleam
452
+ * assert multiply(2.0, 4.0) == 8.0
453
+ * ```
454
+ *
455
+ * ```gleam
456
+ * import gleam/list
457
+ *
458
+ * assert list.fold([2.0, 3.0, 4.0], 1.0, multiply) == 24.0
459
+ * ```
460
+ *
461
+ * ```gleam
462
+ * assert 3.0 |> multiply(2.0) == 6.0
463
+ * ```
464
+ */
465
+ export function multiply(a, b) {
466
+ return a * b;
467
+ }
468
+
469
+ /**
470
+ * Subtracts one float from another.
471
+ *
472
+ * It's the function equivalent of the `-.` operator.
473
+ * This function is useful in higher order functions or pipes.
474
+ *
475
+ * ## Examples
476
+ *
477
+ * ```gleam
478
+ * assert subtract(3.0, 1.0) == 2.0
479
+ * ```
480
+ *
481
+ * ```gleam
482
+ * import gleam/list
483
+ *
484
+ * assert list.fold([1.0, 2.0, 3.0], 10.0, subtract) == 4.0
485
+ * ```
486
+ *
487
+ * ```gleam
488
+ * assert 3.0 |> subtract(_, 2.0) == 1.0
489
+ * ```
490
+ *
491
+ * ```gleam
492
+ * assert 3.0 |> subtract(2.0, _) == -1.0
493
+ * ```
494
+ */
495
+ export function subtract(a, b) {
496
+ return a - b;
497
+ }
498
+
499
+ /**
500
+ * Returns the natural logarithm (base e) of the given `Float` as a `Result`. If the
501
+ * input is less than or equal to 0, returns `Error(Nil)`.
502
+ *
503
+ * ## Examples
504
+ *
505
+ * ```gleam
506
+ * assert logarithm(1.0) == Ok(0.0)
507
+ * ```
508
+ *
509
+ * ```gleam
510
+ * assert logarithm(2.718281828459045) == Ok(1.0)
511
+ * ```
512
+ *
513
+ * ```gleam
514
+ * assert logarithm(0.0) == Error(Nil)
515
+ * ```
516
+ *
517
+ * ```gleam
518
+ * assert logarithm(-1.0) == Error(Nil)
519
+ * ```
520
+ */
521
+ export function logarithm(x) {
522
+ let $ = x <= 0.0;
523
+ if ($) {
524
+ return new Error(undefined);
525
+ } else {
526
+ return new Ok(do_log(x));
527
+ }
528
+ }
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Takes a single argument and always returns its input value.
3
+ */
4
+ export function identity(x) {
5
+ return x;
6
+ }