@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.
- package/CHANGELOG.md +40 -0
- package/README.md +112 -12
- package/dist/flux-cli.js +234 -112
- package/dist/flux.cjs.js +1 -1
- package/dist/flux.esm.js +1 -1
- package/dist/flux.min.js +1 -1
- package/package.json +1 -1
- package/src/self/bundler.js +7 -1
- package/src/self/checker.js +1 -1
- package/src/self/cli.flux +996 -0
- package/src/self/cli.js +1 -0
- package/src/self/codegen.js +11 -1
- package/src/self/config.flux +112 -0
- package/src/self/config.js +99 -0
- package/src/self/css-preprocessor.js +7 -1
- package/src/self/formatter.js +20 -1
- package/src/self/jsx.js +6 -0
- package/src/self/lexer.js +5 -1
- package/src/self/linter.js +5 -1
- package/src/self/mangler.js +2 -0
- package/src/self/parser.js +1 -1
- package/src/self/pkg.flux +301 -0
- package/src/self/pkg.js +288 -0
- package/src/self/sourcemap.js +1 -1
- package/src/self/stdlib.js +51 -36
- package/src/self/test-runner.js +7 -1
- package/src/self/transpiler.js +1 -1
- package/src/self/type-checker.js +9 -1
package/src/self/stdlib.js
CHANGED
|
@@ -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
|
|
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.
|
|
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"];
|
package/src/self/test-runner.js
CHANGED
|
@@ -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.
|
|
18
|
+
// Generated by Flux Transpiler v3.2.0
|
|
13
19
|
"use strict";
|
|
14
20
|
|
|
15
21
|
const Fs = require("fs");
|
package/src/self/transpiler.js
CHANGED
package/src/self/type-checker.js
CHANGED
|
@@ -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.
|
|
28
|
+
// Generated by Flux Transpiler v3.2.0
|
|
21
29
|
"use strict";
|
|
22
30
|
|
|
23
31
|
const T_ANY = Object.freeze({ kind: "any" });
|