@xnoxs/flux-lang 3.3.4 → 3.4.1

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.
@@ -90,6 +90,18 @@ function product(arr) {
90
90
  return arr.reduce(function(a, b) { return a * b; }, 1);
91
91
  }
92
92
 
93
+ function min(arr) {
94
+ if (arguments.length > 1) return Math.min.apply(null, arguments);
95
+ return Math.min.apply(null, arr);
96
+ }
97
+
98
+ function max(arr) {
99
+ if (arguments.length > 1) return Math.max.apply(null, arguments);
100
+ return Math.max.apply(null, arr);
101
+ }
102
+
103
+ function floor(n) { return Math.floor(n); }
104
+
93
105
  function randInt(min, max) {
94
106
  return Math.floor(Math.random() * (max - min + 1)) + min;
95
107
  }
@@ -136,6 +148,8 @@ function fromEntries(entries) {
136
148
  return Object.fromEntries(entries);
137
149
  }
138
150
 
151
+ function keys(obj) { return Object.keys(obj); }
152
+
139
153
  function deepEqual(a, b) {
140
154
  return JSON.stringify(a) === JSON.stringify(b);
141
155
  }
@@ -144,6 +158,41 @@ function deepClone(v) {
144
158
  return JSON.parse(JSON.stringify(v));
145
159
  }
146
160
 
161
+ function capitalize(s) {
162
+ return s ? s[0].toUpperCase() + s.slice(1) : s;
163
+ }
164
+
165
+ function camelCase(s) {
166
+ return s.replace(/[-_\s]+(.)/g, function(_, c) { return c.toUpperCase(); }).replace(/^./, function(c) { return c.toLowerCase(); });
167
+ }
168
+
169
+ function snakeCase(s) {
170
+ return s.replace(/([A-Z])/g, function(c) { return '_' + c.toLowerCase(); }).replace(/[-\s]+/g, '_').replace(/^_/, '');
171
+ }
172
+
173
+ function kebabCase(s) {
174
+ return s.replace(/([A-Z])/g, function(c) { return '-' + c.toLowerCase(); }).replace(/[_\s]+/g, '-').replace(/^-/, '');
175
+ }
176
+
177
+ function truncate(s, len, suffix) {
178
+ suffix = suffix != null ? suffix : '...';
179
+ if (s.length <= len) return s;
180
+ var cut = len - suffix.length;
181
+ if (cut <= 0) return suffix.slice(0, len);
182
+ return s.slice(0, cut) + suffix;
183
+ }
184
+
185
+ function pad(s, len, char) {
186
+ char = char || ' ';
187
+ s = String(s);
188
+ var total = len - s.length;
189
+ if (total <= 0) return s;
190
+ var half = Math.floor(total / 2);
191
+ return char.repeat(half) + s + char.repeat(total - half);
192
+ }
193
+
194
+ function repeat(s, n) { return String(s).repeat(n); }
195
+
147
196
  function sleep(ms) {
148
197
  return new Promise(function(resolve) { setTimeout(resolve, ms); });
149
198
  }
@@ -154,7 +203,7 @@ async function retry(fn, attempts, delay) {
154
203
  for (var i = 0; i < attempts; i++) {
155
204
  try { return await fn(); } catch(e) {
156
205
  if (i === attempts - 1) throw e;
157
- await sleep(delay * Math.pow(2, i));
206
+ await new Promise(function(r) { setTimeout(r, delay * Math.pow(2, i)); });
158
207
  }
159
208
  }
160
209
  }
@@ -192,43 +241,9 @@ function curry(fn) {
192
241
  return function() { return curried.apply(this, args.concat(Array.from(arguments))); };
193
242
  };
194
243
  }
195
-
196
- function capitalize(s) {
197
- return s ? s[0].toUpperCase() + s.slice(1) : s;
198
- }
199
-
200
- function camelCase(s) {
201
- return s.replace(/[-_\s]+(.)/g, function(_, c) { return c.toUpperCase(); }).replace(/^./, function(c) { return c.toLowerCase(); });
202
- }
203
-
204
- function snakeCase(s) {
205
- return s.replace(/([A-Z])/g, function(c) { return '_' + c.toLowerCase(); }).replace(/[-\s]+/g, '_').replace(/^_/, '');
206
- }
207
-
208
- function kebabCase(s) {
209
- return s.replace(/([A-Z])/g, function(c) { return '-' + c.toLowerCase(); }).replace(/[_\s]+/g, '-').replace(/^-/, '');
210
- }
211
-
212
- function truncate(s, len, suffix) {
213
- suffix = suffix != null ? suffix : '...';
214
- if (s.length <= len) return s;
215
- // FIX: guard against suffix longer than len to avoid negative slice index
216
- var cut = len - suffix.length;
217
- if (cut <= 0) return suffix.slice(0, len);
218
- return s.slice(0, cut) + suffix;
219
- }
220
-
221
- function pad(s, len, char) {
222
- char = char || ' ';
223
- s = String(s);
224
- var total = len - s.length;
225
- if (total <= 0) return s;
226
- var half = Math.floor(total / 2);
227
- return char.repeat(half) + s + char.repeat(total - half);
228
- }
229
244
  // ── end stdlib ──
230
245
 
231
- // Generated by Flux Transpiler v3.1.0
246
+ // Generated by Flux Transpiler v3.2.0
232
247
  "use strict";
233
248
 
234
249
  const STDLIB_SYMBOLS = ["range", "zip", "enumerate", "clamp", "sum", "product", "flatten", "chunk", "unique", "groupBy", "sortBy", "pick", "omit", "deepEqual", "deepClone", "sleep", "retry", "memoize", "pipe", "compose", "partial", "curry", "capitalize", "camelCase", "snakeCase", "kebabCase", "truncate", "pad", "randInt", "sample", "shuffle", "mapValues", "filterValues", "fromEntries", "map", "filter", "reduce", "forEach", "find", "findIndex", "some", "every", "join", "sort", "flat", "flatMap", "includes"];
@@ -7,9 +7,15 @@ function filter(arr, fn) { return arr.filter(fn); }
7
7
  function join(arr, sep) { return arr.join(sep != null ? sep : ','); }
8
8
 
9
9
  function sort(arr, fn) { return arr.slice().sort(fn); }
10
+
11
+ function abs(n) { return Math.abs(n); }
12
+
13
+ function endsWith(s, suffix) { return String(s).endsWith(suffix); }
14
+
15
+ function repeat(s, n) { return String(s).repeat(n); }
10
16
  // ── end stdlib ──
11
17
 
12
- // Generated by Flux Transpiler v3.1.0
18
+ // Generated by Flux Transpiler v3.2.0
13
19
  "use strict";
14
20
 
15
21
  const Fs = require("fs");
@@ -1,4 +1,4 @@
1
- // Generated by Flux Transpiler v3.1.0
1
+ // Generated by Flux Transpiler v3.2.0
2
2
  "use strict";
3
3
 
4
4
  const { Lexer, lexerize, T } = require("./lexer");
@@ -15,9 +15,17 @@ function every(arr, fn) { return arr.every(fn); }
15
15
  function join(arr, sep) { return arr.join(sep != null ? sep : ','); }
16
16
 
17
17
  function includes(arr, val) { return arr.includes(val); }
18
+
19
+ function entries(obj) { return Object.entries(obj); }
20
+
21
+ function trim(s) { return String(s).trim(); }
22
+
23
+ function startsWith(s, prefix) { return String(s).startsWith(prefix); }
24
+
25
+ function endsWith(s, suffix) { return String(s).endsWith(suffix); }
18
26
  // ── end stdlib ──
19
27
 
20
- // Generated by Flux Transpiler v3.1.0
28
+ // Generated by Flux Transpiler v3.2.0
21
29
  "use strict";
22
30
 
23
31
  const T_ANY = Object.freeze({ kind: "any" });