@elaraai/east 0.0.1-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (251) hide show
  1. package/LICENSE.md +682 -0
  2. package/README.md +276 -0
  3. package/dist/src/analyze.d.ts +95 -0
  4. package/dist/src/analyze.d.ts.map +1 -0
  5. package/dist/src/analyze.js +1110 -0
  6. package/dist/src/analyze.js.map +1 -0
  7. package/dist/src/ast.d.ts +263 -0
  8. package/dist/src/ast.d.ts.map +1 -0
  9. package/dist/src/ast.js +151 -0
  10. package/dist/src/ast.js.map +1 -0
  11. package/dist/src/ast_to_ir.d.ts +24 -0
  12. package/dist/src/ast_to_ir.d.ts.map +1 -0
  13. package/dist/src/ast_to_ir.js +834 -0
  14. package/dist/src/ast_to_ir.js.map +1 -0
  15. package/dist/src/builtins.d.ts +18 -0
  16. package/dist/src/builtins.d.ts.map +1 -0
  17. package/dist/src/builtins.js +1105 -0
  18. package/dist/src/builtins.js.map +1 -0
  19. package/dist/src/comparison.d.ts +28 -0
  20. package/dist/src/comparison.d.ts.map +1 -0
  21. package/dist/src/comparison.js +1017 -0
  22. package/dist/src/comparison.js.map +1 -0
  23. package/dist/src/compile.d.ts +22 -0
  24. package/dist/src/compile.d.ts.map +1 -0
  25. package/dist/src/compile.js +3260 -0
  26. package/dist/src/compile.js.map +1 -0
  27. package/dist/src/containers/ref.d.ts +106 -0
  28. package/dist/src/containers/ref.d.ts.map +1 -0
  29. package/dist/src/containers/ref.js +100 -0
  30. package/dist/src/containers/ref.js.map +1 -0
  31. package/dist/src/containers/sortedmap.d.ts +165 -0
  32. package/dist/src/containers/sortedmap.d.ts.map +1 -0
  33. package/dist/src/containers/sortedmap.js +237 -0
  34. package/dist/src/containers/sortedmap.js.map +1 -0
  35. package/dist/src/containers/sortedset.d.ts +185 -0
  36. package/dist/src/containers/sortedset.d.ts.map +1 -0
  37. package/dist/src/containers/sortedset.js +312 -0
  38. package/dist/src/containers/sortedset.js.map +1 -0
  39. package/dist/src/containers/variant.d.ts +131 -0
  40. package/dist/src/containers/variant.d.ts.map +1 -0
  41. package/dist/src/containers/variant.js +68 -0
  42. package/dist/src/containers/variant.js.map +1 -0
  43. package/dist/src/datetime_format/parse.d.ts +50 -0
  44. package/dist/src/datetime_format/parse.d.ts.map +1 -0
  45. package/dist/src/datetime_format/parse.js +908 -0
  46. package/dist/src/datetime_format/parse.js.map +1 -0
  47. package/dist/src/datetime_format/print.d.ts +35 -0
  48. package/dist/src/datetime_format/print.d.ts.map +1 -0
  49. package/dist/src/datetime_format/print.js +157 -0
  50. package/dist/src/datetime_format/print.js.map +1 -0
  51. package/dist/src/datetime_format/tokenize.d.ts +76 -0
  52. package/dist/src/datetime_format/tokenize.d.ts.map +1 -0
  53. package/dist/src/datetime_format/tokenize.js +271 -0
  54. package/dist/src/datetime_format/tokenize.js.map +1 -0
  55. package/dist/src/datetime_format/types.d.ts +99 -0
  56. package/dist/src/datetime_format/types.d.ts.map +1 -0
  57. package/dist/src/datetime_format/types.js +103 -0
  58. package/dist/src/datetime_format/types.js.map +1 -0
  59. package/dist/src/datetime_format/validate.d.ts +51 -0
  60. package/dist/src/datetime_format/validate.d.ts.map +1 -0
  61. package/dist/src/datetime_format/validate.js +208 -0
  62. package/dist/src/datetime_format/validate.js.map +1 -0
  63. package/dist/src/default.d.ts +21 -0
  64. package/dist/src/default.d.ts.map +1 -0
  65. package/dist/src/default.js +82 -0
  66. package/dist/src/default.js.map +1 -0
  67. package/dist/src/eastir.d.ts +33 -0
  68. package/dist/src/eastir.d.ts.map +1 -0
  69. package/dist/src/eastir.js +92 -0
  70. package/dist/src/eastir.js.map +1 -0
  71. package/dist/src/error.d.ts +13 -0
  72. package/dist/src/error.d.ts.map +1 -0
  73. package/dist/src/error.js +8 -0
  74. package/dist/src/error.js.map +1 -0
  75. package/dist/src/expr/array.d.ts +1711 -0
  76. package/dist/src/expr/array.d.ts.map +1 -0
  77. package/dist/src/expr/array.js +1805 -0
  78. package/dist/src/expr/array.js.map +1 -0
  79. package/dist/src/expr/ast.d.ts +17 -0
  80. package/dist/src/expr/ast.d.ts.map +1 -0
  81. package/dist/src/expr/ast.js +302 -0
  82. package/dist/src/expr/ast.js.map +1 -0
  83. package/dist/src/expr/blob.d.ts +141 -0
  84. package/dist/src/expr/blob.d.ts.map +1 -0
  85. package/dist/src/expr/blob.js +198 -0
  86. package/dist/src/expr/blob.js.map +1 -0
  87. package/dist/src/expr/block.d.ts +201 -0
  88. package/dist/src/expr/block.d.ts.map +1 -0
  89. package/dist/src/expr/block.js +1505 -0
  90. package/dist/src/expr/block.js.map +1 -0
  91. package/dist/src/expr/boolean.d.ts +207 -0
  92. package/dist/src/expr/boolean.d.ts.map +1 -0
  93. package/dist/src/expr/boolean.js +261 -0
  94. package/dist/src/expr/boolean.js.map +1 -0
  95. package/dist/src/expr/datetime.d.ts +544 -0
  96. package/dist/src/expr/datetime.d.ts.map +1 -0
  97. package/dist/src/expr/datetime.js +980 -0
  98. package/dist/src/expr/datetime.js.map +1 -0
  99. package/dist/src/expr/dict.d.ts +1242 -0
  100. package/dist/src/expr/dict.d.ts.map +1 -0
  101. package/dist/src/expr/dict.js +1492 -0
  102. package/dist/src/expr/dict.js.map +1 -0
  103. package/dist/src/expr/expr.d.ts +95 -0
  104. package/dist/src/expr/expr.d.ts.map +1 -0
  105. package/dist/src/expr/expr.js +171 -0
  106. package/dist/src/expr/expr.js.map +1 -0
  107. package/dist/src/expr/float.d.ts +357 -0
  108. package/dist/src/expr/float.d.ts.map +1 -0
  109. package/dist/src/expr/float.js +637 -0
  110. package/dist/src/expr/float.js.map +1 -0
  111. package/dist/src/expr/function.d.ts +46 -0
  112. package/dist/src/expr/function.d.ts.map +1 -0
  113. package/dist/src/expr/function.js +58 -0
  114. package/dist/src/expr/function.js.map +1 -0
  115. package/dist/src/expr/index.d.ts +450 -0
  116. package/dist/src/expr/index.d.ts.map +1 -0
  117. package/dist/src/expr/index.js +423 -0
  118. package/dist/src/expr/index.js.map +1 -0
  119. package/dist/src/expr/integer.d.ts +256 -0
  120. package/dist/src/expr/integer.d.ts.map +1 -0
  121. package/dist/src/expr/integer.js +311 -0
  122. package/dist/src/expr/integer.js.map +1 -0
  123. package/dist/src/expr/libs/array.d.ts +106 -0
  124. package/dist/src/expr/libs/array.d.ts.map +1 -0
  125. package/dist/src/expr/libs/array.js +140 -0
  126. package/dist/src/expr/libs/array.js.map +1 -0
  127. package/dist/src/expr/libs/blob.d.ts +42 -0
  128. package/dist/src/expr/libs/blob.d.ts.map +1 -0
  129. package/dist/src/expr/libs/blob.js +70 -0
  130. package/dist/src/expr/libs/blob.js.map +1 -0
  131. package/dist/src/expr/libs/datetime.d.ts +479 -0
  132. package/dist/src/expr/libs/datetime.d.ts.map +1 -0
  133. package/dist/src/expr/libs/datetime.js +624 -0
  134. package/dist/src/expr/libs/datetime.js.map +1 -0
  135. package/dist/src/expr/libs/dict.d.ts +66 -0
  136. package/dist/src/expr/libs/dict.d.ts.map +1 -0
  137. package/dist/src/expr/libs/dict.js +77 -0
  138. package/dist/src/expr/libs/dict.js.map +1 -0
  139. package/dist/src/expr/libs/float.d.ts +299 -0
  140. package/dist/src/expr/libs/float.d.ts.map +1 -0
  141. package/dist/src/expr/libs/float.js +564 -0
  142. package/dist/src/expr/libs/float.js.map +1 -0
  143. package/dist/src/expr/libs/integer.d.ts +228 -0
  144. package/dist/src/expr/libs/integer.d.ts.map +1 -0
  145. package/dist/src/expr/libs/integer.js +398 -0
  146. package/dist/src/expr/libs/integer.js.map +1 -0
  147. package/dist/src/expr/libs/set.d.ts +59 -0
  148. package/dist/src/expr/libs/set.d.ts.map +1 -0
  149. package/dist/src/expr/libs/set.js +69 -0
  150. package/dist/src/expr/libs/set.js.map +1 -0
  151. package/dist/src/expr/libs/string.d.ts +71 -0
  152. package/dist/src/expr/libs/string.d.ts.map +1 -0
  153. package/dist/src/expr/libs/string.js +75 -0
  154. package/dist/src/expr/libs/string.js.map +1 -0
  155. package/dist/src/expr/never.d.ts +15 -0
  156. package/dist/src/expr/never.d.ts.map +1 -0
  157. package/dist/src/expr/never.js +12 -0
  158. package/dist/src/expr/never.js.map +1 -0
  159. package/dist/src/expr/null.d.ts +15 -0
  160. package/dist/src/expr/null.d.ts.map +1 -0
  161. package/dist/src/expr/null.js +12 -0
  162. package/dist/src/expr/null.js.map +1 -0
  163. package/dist/src/expr/ref.d.ts +103 -0
  164. package/dist/src/expr/ref.d.ts.map +1 -0
  165. package/dist/src/expr/ref.js +131 -0
  166. package/dist/src/expr/ref.js.map +1 -0
  167. package/dist/src/expr/regex_validation.d.ts +25 -0
  168. package/dist/src/expr/regex_validation.d.ts.map +1 -0
  169. package/dist/src/expr/regex_validation.js +130 -0
  170. package/dist/src/expr/regex_validation.js.map +1 -0
  171. package/dist/src/expr/set.d.ts +1071 -0
  172. package/dist/src/expr/set.d.ts.map +1 -0
  173. package/dist/src/expr/set.js +1137 -0
  174. package/dist/src/expr/set.js.map +1 -0
  175. package/dist/src/expr/string.d.ts +414 -0
  176. package/dist/src/expr/string.d.ts.map +1 -0
  177. package/dist/src/expr/string.js +683 -0
  178. package/dist/src/expr/string.js.map +1 -0
  179. package/dist/src/expr/struct.d.ts +48 -0
  180. package/dist/src/expr/struct.d.ts.map +1 -0
  181. package/dist/src/expr/struct.js +65 -0
  182. package/dist/src/expr/struct.js.map +1 -0
  183. package/dist/src/expr/types.d.ts +68 -0
  184. package/dist/src/expr/types.d.ts.map +1 -0
  185. package/dist/src/expr/types.js +6 -0
  186. package/dist/src/expr/types.js.map +1 -0
  187. package/dist/src/expr/variant.d.ts +137 -0
  188. package/dist/src/expr/variant.d.ts.map +1 -0
  189. package/dist/src/expr/variant.js +105 -0
  190. package/dist/src/expr/variant.js.map +1 -0
  191. package/dist/src/fuzz.d.ts +80 -0
  192. package/dist/src/fuzz.d.ts.map +1 -0
  193. package/dist/src/fuzz.js +300 -0
  194. package/dist/src/fuzz.js.map +1 -0
  195. package/dist/src/index.d.ts +21 -0
  196. package/dist/src/index.d.ts.map +1 -0
  197. package/dist/src/index.js +21 -0
  198. package/dist/src/index.js.map +1 -0
  199. package/dist/src/internal.d.ts +36 -0
  200. package/dist/src/internal.d.ts.map +1 -0
  201. package/dist/src/internal.js +11 -0
  202. package/dist/src/internal.js.map +1 -0
  203. package/dist/src/ir.d.ts +1571 -0
  204. package/dist/src/ir.d.ts.map +1 -0
  205. package/dist/src/ir.js +56 -0
  206. package/dist/src/ir.js.map +1 -0
  207. package/dist/src/location.d.ts +48 -0
  208. package/dist/src/location.d.ts.map +1 -0
  209. package/dist/src/location.js +62 -0
  210. package/dist/src/location.js.map +1 -0
  211. package/dist/src/platform.d.ts +21 -0
  212. package/dist/src/platform.d.ts.map +1 -0
  213. package/dist/src/platform.js +8 -0
  214. package/dist/src/platform.js.map +1 -0
  215. package/dist/src/serialization/beast.d.ts +39 -0
  216. package/dist/src/serialization/beast.d.ts.map +1 -0
  217. package/dist/src/serialization/beast.js +555 -0
  218. package/dist/src/serialization/beast.js.map +1 -0
  219. package/dist/src/serialization/beast2-stream.d.ts +38 -0
  220. package/dist/src/serialization/beast2-stream.d.ts.map +1 -0
  221. package/dist/src/serialization/beast2-stream.js +665 -0
  222. package/dist/src/serialization/beast2-stream.js.map +1 -0
  223. package/dist/src/serialization/beast2.d.ts +41 -0
  224. package/dist/src/serialization/beast2.d.ts.map +1 -0
  225. package/dist/src/serialization/beast2.js +489 -0
  226. package/dist/src/serialization/beast2.js.map +1 -0
  227. package/dist/src/serialization/binary-utils.d.ts +151 -0
  228. package/dist/src/serialization/binary-utils.d.ts.map +1 -0
  229. package/dist/src/serialization/binary-utils.js +929 -0
  230. package/dist/src/serialization/binary-utils.js.map +1 -0
  231. package/dist/src/serialization/east.d.ts +84 -0
  232. package/dist/src/serialization/east.d.ts.map +1 -0
  233. package/dist/src/serialization/east.js +1802 -0
  234. package/dist/src/serialization/east.js.map +1 -0
  235. package/dist/src/serialization/index.d.ts +11 -0
  236. package/dist/src/serialization/index.d.ts.map +1 -0
  237. package/dist/src/serialization/index.js +12 -0
  238. package/dist/src/serialization/index.js.map +1 -0
  239. package/dist/src/serialization/json.d.ts +36 -0
  240. package/dist/src/serialization/json.d.ts.map +1 -0
  241. package/dist/src/serialization/json.js +849 -0
  242. package/dist/src/serialization/json.js.map +1 -0
  243. package/dist/src/type_of_type.d.ts +115 -0
  244. package/dist/src/type_of_type.d.ts.map +1 -0
  245. package/dist/src/type_of_type.js +362 -0
  246. package/dist/src/type_of_type.js.map +1 -0
  247. package/dist/src/types.d.ts +648 -0
  248. package/dist/src/types.d.ts.map +1 -0
  249. package/dist/src/types.js +1631 -0
  250. package/dist/src/types.js.map +1 -0
  251. package/package.json +87 -0
@@ -0,0 +1,228 @@
1
+ /**
2
+ * Copyright (c) 2025 Elara AI Pty Ltd
3
+ * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.
4
+ */
5
+ import { IntegerType, StringType } from "../../types.js";
6
+ /** Standard library functions for integers */
7
+ declare const _default: {
8
+ /**
9
+ * Formats an integer with comma separators for thousands.
10
+ *
11
+ * @param x - The integer value to format
12
+ * @returns A formatted string with comma separators (e.g., `"1,234,567"`)
13
+ *
14
+ * @example
15
+ * ```ts
16
+ * const formatComma = East.function([IntegerType], StringType, ($, x) => {
17
+ * $.return(East.Integer.printCommaSeperated(x));
18
+ * });
19
+ * const compiled = East.compile(formatComma.toIR(), []);
20
+ * compiled(1234567n); // "1,234,567"
21
+ * compiled(1000n); // "1,000"
22
+ * compiled(-5432n); // "-5,432"
23
+ * ```
24
+ */
25
+ printCommaSeperated: import("../function.js").CallableFunctionExpr<[IntegerType], StringType>;
26
+ /**
27
+ * Formats an integer in compact form with business unit suffixes.
28
+ *
29
+ * Uses suffixes: K (thousands), M (millions), B (billions), T (trillions),
30
+ * Q (quadrillions), Qi (quintillions). Displays up to 3 significant digits.
31
+ *
32
+ * @param x - The integer value to format
33
+ * @returns A compact formatted string (e.g., `"21.5K"`, `"1.82M"`, `"314B"`)
34
+ *
35
+ * @example
36
+ * ```ts
37
+ * const formatCompact = East.function([IntegerType], StringType, ($, x) => {
38
+ * $.return(East.Integer.printCompact(x));
39
+ * });
40
+ * const compiled = East.compile(formatCompact.toIR(), []);
41
+ * compiled(1500n); // "1.5K"
42
+ * compiled(2500000n); // "2.5M"
43
+ * compiled(3140000000n); // "3.14B"
44
+ * compiled(500n); // "500"
45
+ * ```
46
+ */
47
+ printCompact: import("../function.js").CallableFunctionExpr<[IntegerType], StringType>;
48
+ /**
49
+ * Formats an integer in compact form with SI (International System) unit suffixes.
50
+ *
51
+ * Uses SI suffixes: k (kilo, thousands), M (mega, millions), G (giga, billions),
52
+ * T (tera, trillions), P (peta, quadrillions), E (exa, quintillions).
53
+ * Displays up to 3 significant digits.
54
+ *
55
+ * @param x - The integer value to format
56
+ * @returns A compact formatted string with SI units (e.g., `"21.5k"`, `"1.82M"`, `"314G"`)
57
+ *
58
+ * @example
59
+ * ```ts
60
+ * const formatSI = East.function([IntegerType], StringType, ($, x) => {
61
+ * $.return(East.Integer.printCompactSI(x));
62
+ * });
63
+ * const compiled = East.compile(formatSI.toIR(), []);
64
+ * compiled(1500n); // "1.5k"
65
+ * compiled(2500000n); // "2.5M"
66
+ * compiled(3140000000n); // "3.14G"
67
+ * ```
68
+ */
69
+ printCompactSI: import("../function.js").CallableFunctionExpr<[IntegerType], StringType>;
70
+ /**
71
+ * Formats an integer in compact form with binary computing unit suffixes.
72
+ *
73
+ * Uses binary (base-1024) suffixes: ki (kibi, 1024), Mi (mebi, 1024²), Gi (gibi, 1024³),
74
+ * Ti (tebi, 1024⁴), Pi (pebi, 1024⁵), Ei (exbi, 1024⁶).
75
+ * Displays up to 3 significant digits. Commonly used for memory and storage sizes.
76
+ *
77
+ * @param x - The integer value to format
78
+ * @returns A compact formatted string with binary units (e.g., `"21.5ki"`, `"1.82Mi"`, `"314Gi"`)
79
+ *
80
+ * @example
81
+ * ```ts
82
+ * const formatComputing = East.function([IntegerType], StringType, ($, x) => {
83
+ * $.return(East.Integer.printCompactComputing(x));
84
+ * });
85
+ * const compiled = East.compile(formatComputing.toIR(), []);
86
+ * compiled(1536n); // "1.5ki" (1536 bytes = 1.5 KiB)
87
+ * compiled(2621440n); // "2.5Mi" (2.5 MiB)
88
+ * compiled(3221225472n); // "3Gi" (3 GiB)
89
+ * ```
90
+ */
91
+ printCompactComputing: import("../function.js").CallableFunctionExpr<[IntegerType], StringType>;
92
+ /**
93
+ * Formats an integer as an ordinal number.
94
+ *
95
+ * @param x - The integer value to format
96
+ * @returns An ordinal string (e.g., `"1st"`, `"2nd"`, `"3rd"`, `"4th"`)
97
+ *
98
+ * @example
99
+ * ```ts
100
+ * const formatOrdinal = East.function([IntegerType], StringType, ($, x) => {
101
+ * $.return(East.Integer.printOrdinal(x));
102
+ * });
103
+ * const compiled = East.compile(formatOrdinal.toIR(), []);
104
+ * compiled(1n); // "1st"
105
+ * compiled(2n); // "2nd"
106
+ * compiled(3n); // "3rd"
107
+ * compiled(11n); // "11th"
108
+ * compiled(21n); // "21st"
109
+ * compiled(112n); // "112th"
110
+ * ```
111
+ */
112
+ printOrdinal: import("../function.js").CallableFunctionExpr<[IntegerType], StringType>;
113
+ /**
114
+ * Counts the number of decimal digits in an integer (excluding the sign).
115
+ *
116
+ * @param x - The integer value
117
+ * @returns The number of digits in the absolute value of `x`
118
+ *
119
+ * @example
120
+ * ```ts
121
+ * const countDigits = East.function([IntegerType], IntegerType, ($, x) => {
122
+ * $.return(East.Integer.digitCount(x));
123
+ * });
124
+ * const compiled = East.compile(countDigits.toIR(), []);
125
+ * compiled(0n); // 1n
126
+ * compiled(42n); // 2n
127
+ * compiled(-1234n); // 4n
128
+ * compiled(1000000n); // 7n
129
+ * ```
130
+ */
131
+ digitCount: import("../function.js").CallableFunctionExpr<[IntegerType], IntegerType>;
132
+ /**
133
+ * Rounds an integer to the nearest multiple of a step value.
134
+ *
135
+ * @param x - The integer value to round
136
+ * @param step - The step value to round to (uses absolute value)
137
+ * @returns The nearest multiple of `step`, with ties rounding away from zero
138
+ *
139
+ * @example
140
+ * ```ts
141
+ * const roundNearest = East.function([IntegerType, IntegerType], IntegerType, ($, x, step) => {
142
+ * $.return(East.Integer.roundNearest(x, step));
143
+ * });
144
+ * const compiled = East.compile(roundNearest.toIR(), []);
145
+ * compiled(17n, 5n); // 15n
146
+ * compiled(18n, 5n); // 20n
147
+ * compiled(-17n, 5n); // -15n
148
+ * ```
149
+ */
150
+ roundNearest: import("../function.js").CallableFunctionExpr<[IntegerType, IntegerType], IntegerType>;
151
+ /**
152
+ * Rounds an integer up to the next multiple of a step value (ceiling).
153
+ *
154
+ * @param x - The integer value to round
155
+ * @param step - The step value to round to (uses absolute value)
156
+ * @returns The smallest multiple of `step` greater than or equal to `x`
157
+ *
158
+ * @example
159
+ * ```ts
160
+ * const roundUp = East.function([IntegerType, IntegerType], IntegerType, ($, x, step) => {
161
+ * $.return(East.Integer.roundUp(x, step));
162
+ * });
163
+ * const compiled = East.compile(roundUp.toIR(), []);
164
+ * compiled(17n, 5n); // 20n
165
+ * compiled(15n, 5n); // 15n (already exact)
166
+ * compiled(-17n, 5n); // -15n (towards zero for negatives)
167
+ * ```
168
+ */
169
+ roundUp: import("../function.js").CallableFunctionExpr<[IntegerType, IntegerType], IntegerType>;
170
+ /**
171
+ * Rounds an integer down to the previous multiple of a step value (floor).
172
+ *
173
+ * @param x - The integer value to round
174
+ * @param step - The step value to round to (uses absolute value)
175
+ * @returns The largest multiple of `step` less than or equal to `x`
176
+ *
177
+ * @example
178
+ * ```ts
179
+ * const roundDown = East.function([IntegerType, IntegerType], IntegerType, ($, x, step) => {
180
+ * $.return(East.Integer.roundDown(x, step));
181
+ * });
182
+ * const compiled = East.compile(roundDown.toIR(), []);
183
+ * compiled(17n, 5n); // 15n
184
+ * compiled(15n, 5n); // 15n (already exact)
185
+ * compiled(-17n, 5n); // -20n (away from zero for negatives)
186
+ * ```
187
+ */
188
+ roundDown: import("../function.js").CallableFunctionExpr<[IntegerType, IntegerType], IntegerType>;
189
+ /**
190
+ * Rounds an integer towards zero to the nearest multiple of a step value (truncate).
191
+ *
192
+ * @param x - The integer value to round
193
+ * @param step - The step value to round to (uses absolute value)
194
+ * @returns The multiple of `step` closest to zero that is between zero and `x`
195
+ *
196
+ * @example
197
+ * ```ts
198
+ * const roundTruncate = East.function([IntegerType, IntegerType], IntegerType, ($, x, step) => {
199
+ * $.return(East.Integer.roundTruncate(x, step));
200
+ * });
201
+ * const compiled = East.compile(roundTruncate.toIR(), []);
202
+ * compiled(17n, 5n); // 15n
203
+ * compiled(-17n, 5n); // -15n
204
+ * compiled(3n, 5n); // 0n
205
+ * ```
206
+ */
207
+ roundTruncate: import("../function.js").CallableFunctionExpr<[IntegerType, IntegerType], IntegerType>;
208
+ /**
209
+ * Formats an integer as a percentage.
210
+ *
211
+ * @param x - The integer value to format
212
+ * @returns A formatted percentage string (e.g., `"45%"`)
213
+ *
214
+ * @example
215
+ * ```ts
216
+ * const formatPercent = East.function([IntegerType], StringType, ($, x) => {
217
+ * $.return(East.Integer.printPercentage(x));
218
+ * });
219
+ * const compiled = East.compile(formatPercent.toIR(), []);
220
+ * compiled(45n); // "45%"
221
+ * compiled(100n); // "100%"
222
+ * compiled(-25n); // "-25%"
223
+ * ```
224
+ */
225
+ printPercentage: import("../function.js").CallableFunctionExpr<[IntegerType], StringType>;
226
+ };
227
+ export default _default;
228
+ //# sourceMappingURL=integer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"integer.d.ts","sourceRoot":"","sources":["../../../../src/expr/libs/integer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAGzD,8CAA8C;;IAE5C;;;;;;;;;;;;;;;;OAgBG;;IA8CH;;;;;;;;;;;;;;;;;;;;OAoBG;;IA6DH;;;;;;;;;;;;;;;;;;;;OAoBG;;IA+DH;;;;;;;;;;;;;;;;;;;;OAoBG;;IAgEH;;;;;;;;;;;;;;;;;;;OAmBG;;IAiCH;;;;;;;;;;;;;;;;;OAiBG;;IAMH;;;;;;;;;;;;;;;;;OAiBG;;IAiCH;;;;;;;;;;;;;;;;;OAiBG;;IAsBH;;;;;;;;;;;;;;;;;OAiBG;;IAuBH;;;;;;;;;;;;;;;;;OAiBG;;IAgBH;;;;;;;;;;;;;;;;OAgBG;;;AApjBL,wBAwjBC"}
@@ -0,0 +1,398 @@
1
+ /**
2
+ * Copyright (c) 2025 Elara AI Pty Ltd
3
+ * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.
4
+ */
5
+ import { IntegerType, StringType } from "../../types.js";
6
+ import { Expr } from "../expr.js";
7
+ /** Standard library functions for integers */
8
+ export default {
9
+ /**
10
+ * Formats an integer with comma separators for thousands.
11
+ *
12
+ * @param x - The integer value to format
13
+ * @returns A formatted string with comma separators (e.g., `"1,234,567"`)
14
+ *
15
+ * @example
16
+ * ```ts
17
+ * const formatComma = East.function([IntegerType], StringType, ($, x) => {
18
+ * $.return(East.Integer.printCommaSeperated(x));
19
+ * });
20
+ * const compiled = East.compile(formatComma.toIR(), []);
21
+ * compiled(1234567n); // "1,234,567"
22
+ * compiled(1000n); // "1,000"
23
+ * compiled(-5432n); // "-5,432"
24
+ * ```
25
+ */
26
+ printCommaSeperated: Expr.function([IntegerType], StringType, ($, x) => {
27
+ const y = $.let(x);
28
+ const negative = $.let(false);
29
+ $.if(Expr.less(y, 0n), $ => {
30
+ $.if(Expr.equal(y, -9223372036854775808n), $ => $.return("-9,223,372,036,854,775,808")); // cannot negate -2^63 as an i64
31
+ $.assign(negative, true);
32
+ $.assign(y, y.negate());
33
+ });
34
+ const ret = $.let("");
35
+ $.while(Expr.greater(y, 999n), $ => {
36
+ const z = $.let(y.remainder(1000n));
37
+ $.if(Expr.less(z, 10n), $ => {
38
+ $.assign(ret, Expr.str `,00${z}${ret}`);
39
+ }).else($ => {
40
+ $.if(Expr.less(z, 100n), $ => {
41
+ $.assign(ret, Expr.str `,0${z}${ret}`);
42
+ }).else($ => {
43
+ $.assign(ret, Expr.str `,${z}${ret}`);
44
+ });
45
+ });
46
+ $.assign(y, y.divide(1000n));
47
+ });
48
+ $.if(negative, $ => $.return(Expr.str `-${y}${ret}`)).else($ => $.return(Expr.str `${y}${ret}`));
49
+ }),
50
+ /**
51
+ * Formats an integer in compact form with business unit suffixes.
52
+ *
53
+ * Uses suffixes: K (thousands), M (millions), B (billions), T (trillions),
54
+ * Q (quadrillions), Qi (quintillions). Displays up to 3 significant digits.
55
+ *
56
+ * @param x - The integer value to format
57
+ * @returns A compact formatted string (e.g., `"21.5K"`, `"1.82M"`, `"314B"`)
58
+ *
59
+ * @example
60
+ * ```ts
61
+ * const formatCompact = East.function([IntegerType], StringType, ($, x) => {
62
+ * $.return(East.Integer.printCompact(x));
63
+ * });
64
+ * const compiled = East.compile(formatCompact.toIR(), []);
65
+ * compiled(1500n); // "1.5K"
66
+ * compiled(2500000n); // "2.5M"
67
+ * compiled(3140000000n); // "3.14B"
68
+ * compiled(500n); // "500"
69
+ * ```
70
+ */
71
+ printCompact: Expr.function([IntegerType], StringType, ($, x) => {
72
+ const y = $.let(x);
73
+ const negative = $.let(false);
74
+ $.if(Expr.less(y, 0n), $ => {
75
+ $.if(Expr.equal(y, -9223372036854775808n), $ => $.return("-9.22Qi")); // cannot negate -2^63 as an i64
76
+ $.assign(negative, true);
77
+ $.assign(y, y.negate());
78
+ });
79
+ $.if(Expr.less(y, 1000n), $ => $.return(negative.ifElse(() => Expr.str `-${y}`, () => Expr.str `${y}`)));
80
+ const scale = $.let(1n);
81
+ $.while(Expr.greaterEqual(y, 1000000n), $ => {
82
+ $.assign(y, y.divide(1000n));
83
+ $.assign(scale, scale.add(1n));
84
+ });
85
+ const suffix = $.let(Expr.equal(scale, 1n).ifElse(() => "K", () => Expr.equal(scale, 2n).ifElse(() => "M", () => Expr.equal(scale, 3n).ifElse(() => "B", () => Expr.equal(scale, 4n).ifElse(() => "T", () => Expr.equal(scale, 5n).ifElse(() => "Q", () => "Qi"))))));
86
+ $.if(Expr.greaterEqual(y, 100000n), $ => {
87
+ $.if(negative, $ => {
88
+ $.return(Expr.str `-${y.divide(1000n)}${suffix}`);
89
+ }).else($ => {
90
+ $.return(Expr.str `${y.divide(1000n)}${suffix}`);
91
+ });
92
+ });
93
+ $.if(Expr.greaterEqual(y, 10000n), $ => {
94
+ const part = $.let(y.divide(100n).remainder(10n));
95
+ $.if(negative, $ => $.return(Expr.str `-${y.divide(1000n)}.${part}${suffix}`)).else($ => $.return(Expr.str `${y.divide(1000n)}.${part}${suffix}`));
96
+ });
97
+ const part = $.let(y.divide(10n).remainder(100n));
98
+ $.if(Expr.greaterEqual(part, 10n), $ => {
99
+ $.if(negative, $ => $.return(Expr.str `-${y.divide(1000n)}.${part}${suffix}`)).else($ => $.return(Expr.str `${y.divide(1000n)}.${part}${suffix}`));
100
+ }).else($ => {
101
+ $.if(negative, $ => $.return(Expr.str `-${y.divide(1000n)}.0${part}${suffix}`)).else($ => $.return(Expr.str `${y.divide(1000n)}.0${part}${suffix}`));
102
+ });
103
+ }),
104
+ /**
105
+ * Formats an integer in compact form with SI (International System) unit suffixes.
106
+ *
107
+ * Uses SI suffixes: k (kilo, thousands), M (mega, millions), G (giga, billions),
108
+ * T (tera, trillions), P (peta, quadrillions), E (exa, quintillions).
109
+ * Displays up to 3 significant digits.
110
+ *
111
+ * @param x - The integer value to format
112
+ * @returns A compact formatted string with SI units (e.g., `"21.5k"`, `"1.82M"`, `"314G"`)
113
+ *
114
+ * @example
115
+ * ```ts
116
+ * const formatSI = East.function([IntegerType], StringType, ($, x) => {
117
+ * $.return(East.Integer.printCompactSI(x));
118
+ * });
119
+ * const compiled = East.compile(formatSI.toIR(), []);
120
+ * compiled(1500n); // "1.5k"
121
+ * compiled(2500000n); // "2.5M"
122
+ * compiled(3140000000n); // "3.14G"
123
+ * ```
124
+ */
125
+ printCompactSI: Expr.function([IntegerType], StringType, ($, x) => {
126
+ const y = $.let(x);
127
+ const negative = $.let(false);
128
+ $.if(Expr.less(y, 0n), $ => {
129
+ $.if(Expr.equal(y, -9223372036854775808n), $ => $.return("-9.22E")); // cannot negate -2^63 as an i64
130
+ $.assign(negative, true);
131
+ $.assign(y, y.negate());
132
+ });
133
+ $.if(Expr.less(y, 1000n), $ => $.return(negative.ifElse(() => Expr.str `-${y}`, () => Expr.str `${y}`)));
134
+ const scale = $.let(1n);
135
+ $.while(Expr.greaterEqual(y, 1000000n), $ => {
136
+ $.assign(y, y.divide(1000n));
137
+ $.assign(scale, scale.add(1n));
138
+ });
139
+ const suffix = $.let(Expr.equal(scale, 1n).ifElse(() => "k", () => Expr.equal(scale, 2n).ifElse(() => "M", () => Expr.equal(scale, 3n).ifElse(() => "G", () => Expr.equal(scale, 4n).ifElse(() => "T", () => Expr.equal(scale, 5n).ifElse(() => "P", () => "E"))))));
140
+ $.if(Expr.greaterEqual(y, 100000n), $ => $.if(negative, $ => $.return(Expr.str `-${y.divide(1000n)}${suffix}`)).else($ => $.return(Expr.str `${y.divide(1000n)}${suffix}`)));
141
+ $.if(Expr.greaterEqual(y, 10000n), $ => {
142
+ const part = $.let(y.divide(100n).remainder(10n));
143
+ $.if(negative, $ => $.return(Expr.str `-${y.divide(1000n)}.${part}${suffix}`)).else($ => $.return(Expr.str `${y.divide(1000n)}.${part}${suffix}`));
144
+ });
145
+ const part = $.let(y.divide(10n).remainder(100n));
146
+ $.if(Expr.greaterEqual(part, 10n), $ => {
147
+ $.if(negative, $ => $.return(Expr.str `-${y.divide(1000n)}.${part}${suffix}`)).else($ => $.return(Expr.str `${y.divide(1000n)}.${part}${suffix}`));
148
+ }).else($ => {
149
+ $.if(negative, $ => $.return(Expr.str `-${y.divide(1000n)}.0${part}${suffix}`)).else($ => $.return(Expr.str `${y.divide(1000n)}.0${part}${suffix}`));
150
+ });
151
+ }),
152
+ /**
153
+ * Formats an integer in compact form with binary computing unit suffixes.
154
+ *
155
+ * Uses binary (base-1024) suffixes: ki (kibi, 1024), Mi (mebi, 1024²), Gi (gibi, 1024³),
156
+ * Ti (tebi, 1024⁴), Pi (pebi, 1024⁵), Ei (exbi, 1024⁶).
157
+ * Displays up to 3 significant digits. Commonly used for memory and storage sizes.
158
+ *
159
+ * @param x - The integer value to format
160
+ * @returns A compact formatted string with binary units (e.g., `"21.5ki"`, `"1.82Mi"`, `"314Gi"`)
161
+ *
162
+ * @example
163
+ * ```ts
164
+ * const formatComputing = East.function([IntegerType], StringType, ($, x) => {
165
+ * $.return(East.Integer.printCompactComputing(x));
166
+ * });
167
+ * const compiled = East.compile(formatComputing.toIR(), []);
168
+ * compiled(1536n); // "1.5ki" (1536 bytes = 1.5 KiB)
169
+ * compiled(2621440n); // "2.5Mi" (2.5 MiB)
170
+ * compiled(3221225472n); // "3Gi" (3 GiB)
171
+ * ```
172
+ */
173
+ printCompactComputing: Expr.function([IntegerType], StringType, ($, x) => {
174
+ const y = $.let(x);
175
+ const negative = $.let(false);
176
+ $.if(Expr.less(y, 0n), $ => {
177
+ $.if(Expr.equal(y, -9223372036854775808n), $ => $.return("-7.99Ei")); // cannot negate -2^63 as an i64
178
+ $.assign(negative, true);
179
+ $.assign(y, y.negate());
180
+ });
181
+ $.if(Expr.less(y, 1000n), $ => $.return(negative.ifElse(() => Expr.str `-${y}`, () => Expr.str `${y}`)));
182
+ const scale = $.let(1n);
183
+ $.while(Expr.greaterEqual(y, 1048576n), $ => {
184
+ $.assign(y, y.divide(1024n));
185
+ $.assign(scale, scale.add(1n));
186
+ });
187
+ const suffix = $.let(Expr.equal(scale, 1n).ifElse(() => "ki", () => Expr.equal(scale, 2n).ifElse(() => "Mi", () => Expr.equal(scale, 3n).ifElse(() => "Gi", () => Expr.equal(scale, 4n).ifElse(() => "Ti", () => Expr.equal(scale, 5n).ifElse(() => "Pi", () => "Ei"))))));
188
+ $.if(Expr.greaterEqual(y, 102400n), $ => $.if(negative, $ => $.return(Expr.str `-${y.divide(1024n)}${suffix}`)).else($ => $.return(Expr.str `${y.divide(1024n)}${suffix}`)));
189
+ $.if(Expr.greaterEqual(y, 10240n), $ => {
190
+ const part = $.let(y.multiply(10n).divide(1024n).remainder(10n));
191
+ $.if(negative, $ => $.return(Expr.str `-${y.divide(1024n)}.${part}${suffix}`)).else($ => $.return(Expr.str `${y.divide(1024n)}.${part}${suffix}`));
192
+ });
193
+ const part = $.let(y.multiply(100n).divide(1024n).remainder(100n));
194
+ $.if(Expr.greaterEqual(part, 10n), $ => {
195
+ $.if(negative, $ => $.return(Expr.str `-${y.divide(1024n)}.${part}${suffix}`)).else($ => $.return(Expr.str `${y.divide(1024n)}.${part}${suffix}`));
196
+ }).else($ => {
197
+ $.if(negative, $ => $.return(Expr.str `-${y.divide(1024n)}.0${part}${suffix}`)).else($ => $.return(Expr.str `${y.divide(1024n)}.0${part}${suffix}`));
198
+ });
199
+ }),
200
+ /**
201
+ * Formats an integer as an ordinal number.
202
+ *
203
+ * @param x - The integer value to format
204
+ * @returns An ordinal string (e.g., `"1st"`, `"2nd"`, `"3rd"`, `"4th"`)
205
+ *
206
+ * @example
207
+ * ```ts
208
+ * const formatOrdinal = East.function([IntegerType], StringType, ($, x) => {
209
+ * $.return(East.Integer.printOrdinal(x));
210
+ * });
211
+ * const compiled = East.compile(formatOrdinal.toIR(), []);
212
+ * compiled(1n); // "1st"
213
+ * compiled(2n); // "2nd"
214
+ * compiled(3n); // "3rd"
215
+ * compiled(11n); // "11th"
216
+ * compiled(21n); // "21st"
217
+ * compiled(112n); // "112th"
218
+ * ```
219
+ */
220
+ printOrdinal: Expr.function([IntegerType], StringType, ($, x) => {
221
+ const abs_x = $.let(x.abs());
222
+ const last_digit = $.let(abs_x.remainder(10n));
223
+ const last_two_digits = $.let(abs_x.remainder(100n));
224
+ // Special cases for 11th, 12th, 13th
225
+ $.if(Expr.greaterEqual(last_two_digits, 11n).bitAnd(Expr.lessEqual(last_two_digits, 13n)), $ => {
226
+ $.return(Expr.str `${x}th`);
227
+ });
228
+ $.if(Expr.equal(last_digit, 1n), $ => $.return(Expr.str `${x}st`)).else($ => {
229
+ $.if(Expr.equal(last_digit, 2n), $ => $.return(Expr.str `${x}nd`)).else($ => {
230
+ $.if(Expr.equal(last_digit, 3n), $ => $.return(Expr.str `${x}rd`)).else($ => $.return(Expr.str `${x}th`));
231
+ });
232
+ });
233
+ }),
234
+ /**
235
+ * Counts the number of decimal digits in an integer (excluding the sign).
236
+ *
237
+ * @param x - The integer value
238
+ * @returns The number of digits in the absolute value of `x`
239
+ *
240
+ * @example
241
+ * ```ts
242
+ * const countDigits = East.function([IntegerType], IntegerType, ($, x) => {
243
+ * $.return(East.Integer.digitCount(x));
244
+ * });
245
+ * const compiled = East.compile(countDigits.toIR(), []);
246
+ * compiled(0n); // 1n
247
+ * compiled(42n); // 2n
248
+ * compiled(-1234n); // 4n
249
+ * compiled(1000000n); // 7n
250
+ * ```
251
+ */
252
+ digitCount: Expr.function([IntegerType], IntegerType, ($, x) => {
253
+ $.if(Expr.equal(x, 0n), $ => $.return(1n));
254
+ $.return(x.abs().log(10n).add(1n));
255
+ }),
256
+ /**
257
+ * Rounds an integer to the nearest multiple of a step value.
258
+ *
259
+ * @param x - The integer value to round
260
+ * @param step - The step value to round to (uses absolute value)
261
+ * @returns The nearest multiple of `step`, with ties rounding away from zero
262
+ *
263
+ * @example
264
+ * ```ts
265
+ * const roundNearest = East.function([IntegerType, IntegerType], IntegerType, ($, x, step) => {
266
+ * $.return(East.Integer.roundNearest(x, step));
267
+ * });
268
+ * const compiled = East.compile(roundNearest.toIR(), []);
269
+ * compiled(17n, 5n); // 15n
270
+ * compiled(18n, 5n); // 20n
271
+ * compiled(-17n, 5n); // -15n
272
+ * ```
273
+ */
274
+ roundNearest: Expr.function([IntegerType, IntegerType], IntegerType, ($, x, step) => {
275
+ // For step = 0, return original value
276
+ $.if(Expr.equal(step, 0n), $ => $.return(x));
277
+ const abs_step = $.let(step.abs());
278
+ const abs_x = $.let(x.abs());
279
+ const remainder = $.let(abs_x.remainder(abs_step));
280
+ const half_step = $.let(abs_step.divide(2n));
281
+ $.if(Expr.equal(remainder, 0n), $ => $.return(x) // Already a multiple
282
+ ).else($ => {
283
+ const rounded_abs = $.let(Expr.less(remainder, half_step)
284
+ .ifElse(() => abs_x.subtract(remainder), // Round down
285
+ () => abs_x.add(abs_step.subtract(remainder)) // Round up
286
+ ));
287
+ $.if(Expr.greaterEqual(x, 0n), $ => $.return(rounded_abs)).else($ => $.return(rounded_abs.negate()));
288
+ });
289
+ }),
290
+ /**
291
+ * Rounds an integer up to the next multiple of a step value (ceiling).
292
+ *
293
+ * @param x - The integer value to round
294
+ * @param step - The step value to round to (uses absolute value)
295
+ * @returns The smallest multiple of `step` greater than or equal to `x`
296
+ *
297
+ * @example
298
+ * ```ts
299
+ * const roundUp = East.function([IntegerType, IntegerType], IntegerType, ($, x, step) => {
300
+ * $.return(East.Integer.roundUp(x, step));
301
+ * });
302
+ * const compiled = East.compile(roundUp.toIR(), []);
303
+ * compiled(17n, 5n); // 20n
304
+ * compiled(15n, 5n); // 15n (already exact)
305
+ * compiled(-17n, 5n); // -15n (towards zero for negatives)
306
+ * ```
307
+ */
308
+ roundUp: Expr.function([IntegerType, IntegerType], IntegerType, ($, x, step) => {
309
+ // For step = 0, return original value
310
+ $.if(Expr.equal(step, 0n), $ => $.return(x));
311
+ const abs_step = $.let(step.abs());
312
+ const remainder = $.let(x.remainder(abs_step));
313
+ $.if(Expr.equal(remainder, 0n), $ => $.return(x) // Already a multiple
314
+ ).else($ => {
315
+ $.if(Expr.greaterEqual(x, 0n), $ => $.return(x.add(abs_step.subtract(remainder))) // Positive: round up
316
+ ).else($ => $.return(x.subtract(remainder)) // Negative: round towards zero
317
+ );
318
+ });
319
+ }),
320
+ /**
321
+ * Rounds an integer down to the previous multiple of a step value (floor).
322
+ *
323
+ * @param x - The integer value to round
324
+ * @param step - The step value to round to (uses absolute value)
325
+ * @returns The largest multiple of `step` less than or equal to `x`
326
+ *
327
+ * @example
328
+ * ```ts
329
+ * const roundDown = East.function([IntegerType, IntegerType], IntegerType, ($, x, step) => {
330
+ * $.return(East.Integer.roundDown(x, step));
331
+ * });
332
+ * const compiled = East.compile(roundDown.toIR(), []);
333
+ * compiled(17n, 5n); // 15n
334
+ * compiled(15n, 5n); // 15n (already exact)
335
+ * compiled(-17n, 5n); // -20n (away from zero for negatives)
336
+ * ```
337
+ */
338
+ roundDown: Expr.function([IntegerType, IntegerType], IntegerType, ($, x, step) => {
339
+ // For step = 0, return original value
340
+ $.if(Expr.equal(step, 0n), $ => $.return(x));
341
+ const abs_step = $.let(step.abs());
342
+ const remainder = $.let(x.remainder(abs_step));
343
+ $.if(Expr.equal(remainder, 0n), $ => $.return(x) // Already a multiple
344
+ ).else($ => {
345
+ $.if(Expr.greaterEqual(x, 0n), $ => $.return(x.subtract(remainder)) // Positive: round down
346
+ ).else($ => $.return(x.subtract(abs_step.add(remainder))) // Negative: round away from zero
347
+ );
348
+ });
349
+ }),
350
+ /**
351
+ * Rounds an integer towards zero to the nearest multiple of a step value (truncate).
352
+ *
353
+ * @param x - The integer value to round
354
+ * @param step - The step value to round to (uses absolute value)
355
+ * @returns The multiple of `step` closest to zero that is between zero and `x`
356
+ *
357
+ * @example
358
+ * ```ts
359
+ * const roundTruncate = East.function([IntegerType, IntegerType], IntegerType, ($, x, step) => {
360
+ * $.return(East.Integer.roundTruncate(x, step));
361
+ * });
362
+ * const compiled = East.compile(roundTruncate.toIR(), []);
363
+ * compiled(17n, 5n); // 15n
364
+ * compiled(-17n, 5n); // -15n
365
+ * compiled(3n, 5n); // 0n
366
+ * ```
367
+ */
368
+ roundTruncate: Expr.function([IntegerType, IntegerType], IntegerType, ($, x, step) => {
369
+ // For step = 0, return original value
370
+ $.if(Expr.equal(step, 0n), $ => $.return(x));
371
+ const abs_step = $.let(step.abs());
372
+ const remainder = $.let(x.remainder(abs_step));
373
+ $.if(Expr.equal(remainder, 0n), $ => $.return(x) // Already a multiple
374
+ ).else($ => $.return(x.subtract(remainder)) // Always subtract remainder (towards zero)
375
+ );
376
+ }),
377
+ /**
378
+ * Formats an integer as a percentage.
379
+ *
380
+ * @param x - The integer value to format
381
+ * @returns A formatted percentage string (e.g., `"45%"`)
382
+ *
383
+ * @example
384
+ * ```ts
385
+ * const formatPercent = East.function([IntegerType], StringType, ($, x) => {
386
+ * $.return(East.Integer.printPercentage(x));
387
+ * });
388
+ * const compiled = East.compile(formatPercent.toIR(), []);
389
+ * compiled(45n); // "45%"
390
+ * compiled(100n); // "100%"
391
+ * compiled(-25n); // "-25%"
392
+ * ```
393
+ */
394
+ printPercentage: Expr.function([IntegerType], StringType, ($, x) => {
395
+ $.return(Expr.str `${x}%`);
396
+ }),
397
+ };
398
+ //# sourceMappingURL=integer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"integer.js","sourceRoot":"","sources":["../../../../src/expr/libs/integer.ts"],"names":[],"mappings":"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"}