@xnoxs/flux-lang 3.2.2 → 3.3.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.
- package/dist/flux-cli.js +158 -18
- package/dist/flux.cjs.js +63 -2
- package/dist/flux.esm.js +63 -2
- package/dist/flux.min.js +18 -16
- package/index.js +4 -0
- package/package.json +15 -13
- package/src/config.js +99 -0
package/dist/flux-cli.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
/*!
|
|
3
|
-
* flux-lang v3.
|
|
3
|
+
* flux-lang v3.3.0
|
|
4
4
|
* Flux — A modern language that transpiles to JavaScript. Python-clean syntax, TypeScript-level safety, Rust-inspired pattern matching.
|
|
5
5
|
* (c) 2026 Flux Lang Contributors
|
|
6
6
|
* Released under the MIT License
|
|
@@ -15,6 +15,63 @@ var __commonJS = (cb, mod) => function __require() {
|
|
|
15
15
|
}
|
|
16
16
|
};
|
|
17
17
|
|
|
18
|
+
// src/config.js
|
|
19
|
+
var require_config = __commonJS({
|
|
20
|
+
"src/config.js"(exports2, module2) {
|
|
21
|
+
"use strict";
|
|
22
|
+
var fs2 = require("fs");
|
|
23
|
+
var path2 = require("path");
|
|
24
|
+
var CONFIG_NAMES = [
|
|
25
|
+
"flux.config.js",
|
|
26
|
+
"flux.config.cjs",
|
|
27
|
+
".fluxrc.js"
|
|
28
|
+
];
|
|
29
|
+
function loadConfig2(cwd) {
|
|
30
|
+
const dir = cwd || process.cwd();
|
|
31
|
+
for (const name of CONFIG_NAMES) {
|
|
32
|
+
const configPath = path2.join(dir, name);
|
|
33
|
+
if (!fs2.existsSync(configPath)) continue;
|
|
34
|
+
delete require.cache[require.resolve(configPath)];
|
|
35
|
+
try {
|
|
36
|
+
const raw = require(configPath);
|
|
37
|
+
const cfg = raw && raw.default ? raw.default : raw;
|
|
38
|
+
if (typeof cfg !== "object" || cfg === null) {
|
|
39
|
+
process.stderr.write(
|
|
40
|
+
`[flux] warning: ${name} must export a plain object \u2014 ignoring
|
|
41
|
+
`
|
|
42
|
+
);
|
|
43
|
+
return {};
|
|
44
|
+
}
|
|
45
|
+
return cfg;
|
|
46
|
+
} catch (e) {
|
|
47
|
+
process.stderr.write(
|
|
48
|
+
`[flux] error loading ${name}: ${e.message}
|
|
49
|
+
`
|
|
50
|
+
);
|
|
51
|
+
return {};
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
return {};
|
|
55
|
+
}
|
|
56
|
+
function mergeConfig2(fileConfig, cliOpts) {
|
|
57
|
+
const cfg = fileConfig || {};
|
|
58
|
+
const cli = cliOpts || {};
|
|
59
|
+
return {
|
|
60
|
+
jsxTarget: cli.jsxTarget !== void 0 ? cli.jsxTarget : cfg.jsxTarget || "browser",
|
|
61
|
+
outDir: cli.outDir !== void 0 ? cli.outDir : cfg.outDir || null,
|
|
62
|
+
sourcemap: cli.sourcemap !== void 0 ? cli.sourcemap : cfg.sourcemap || false,
|
|
63
|
+
mangle: cli.mangle !== void 0 ? cli.mangle : cfg.mangle !== void 0 ? cfg.mangle : true,
|
|
64
|
+
ignore: cli.ignore !== void 0 ? cli.ignore : cfg.ignore || [],
|
|
65
|
+
entry: cli.entry !== void 0 ? cli.entry : cfg.entry || null
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
function defineConfig(config) {
|
|
69
|
+
return config;
|
|
70
|
+
}
|
|
71
|
+
module2.exports = { loadConfig: loadConfig2, mergeConfig: mergeConfig2, defineConfig };
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
|
|
18
75
|
// src/lexer.js
|
|
19
76
|
var require_lexer = __commonJS({
|
|
20
77
|
"src/lexer.js"(exports2, module2) {
|
|
@@ -7106,7 +7163,7 @@ var require_package = __commonJS({
|
|
|
7106
7163
|
"package.json"(exports2, module2) {
|
|
7107
7164
|
module2.exports = {
|
|
7108
7165
|
name: "@xnoxs/flux-lang",
|
|
7109
|
-
version: "3.
|
|
7166
|
+
version: "3.3.0",
|
|
7110
7167
|
description: "Flux \u2014 A modern language that transpiles to JavaScript. Python-clean syntax, TypeScript-level safety, Rust-inspired pattern matching.",
|
|
7111
7168
|
main: "dist/flux.cjs.js",
|
|
7112
7169
|
module: "dist/flux.esm.js",
|
|
@@ -7131,6 +7188,7 @@ var require_package = __commonJS({
|
|
|
7131
7188
|
require: "./dist/flux.cjs.js",
|
|
7132
7189
|
default: "./dist/flux.cjs.js"
|
|
7133
7190
|
},
|
|
7191
|
+
"./config": "./src/config.js",
|
|
7134
7192
|
"./dist/cjs": "./dist/flux.cjs.js",
|
|
7135
7193
|
"./dist/esm": "./dist/flux.esm.js",
|
|
7136
7194
|
"./dist/min": "./dist/flux.min.js",
|
|
@@ -7142,6 +7200,7 @@ var require_package = __commonJS({
|
|
|
7142
7200
|
"dist/",
|
|
7143
7201
|
"src/stdlib.js",
|
|
7144
7202
|
"src/formatter.js",
|
|
7203
|
+
"src/config.js",
|
|
7145
7204
|
"src/self/",
|
|
7146
7205
|
"scripts/build.js",
|
|
7147
7206
|
"index.js",
|
|
@@ -8117,6 +8176,9 @@ var require_test_runner = __commonJS({
|
|
|
8117
8176
|
var fs2 = require("fs");
|
|
8118
8177
|
var path2 = require("path");
|
|
8119
8178
|
var os = require("os");
|
|
8179
|
+
var CONFIG_PATH = JSON.stringify(path2.join(__dirname, "config.js"));
|
|
8180
|
+
var TRANSPILER_PATH = JSON.stringify(path2.join(__dirname, "transpiler.js"));
|
|
8181
|
+
var TEST_RUNNER_PATH = JSON.stringify(__filename);
|
|
8120
8182
|
var C2 = {
|
|
8121
8183
|
reset: "\x1B[0m",
|
|
8122
8184
|
bold: "\x1B[1m",
|
|
@@ -8228,8 +8290,19 @@ function __runAll(mod) {
|
|
|
8228
8290
|
while ((match = fnRe.exec(result.output)) !== null) {
|
|
8229
8291
|
fnNames.push(match[1]);
|
|
8230
8292
|
}
|
|
8293
|
+
const shimPreamble = [
|
|
8294
|
+
`// \u2500\u2500 shim globals for flux.config.js tests \u2500\u2500`,
|
|
8295
|
+
`const __configMod = require(${CONFIG_PATH});`,
|
|
8296
|
+
`const __transpilerMod= require(${TRANSPILER_PATH});`,
|
|
8297
|
+
`const __runnerMod = require(${TEST_RUNNER_PATH});`,
|
|
8298
|
+
`const mergeConfigShim = __configMod.mergeConfig;`,
|
|
8299
|
+
`const defineConfigShim = __configMod.defineConfig;`,
|
|
8300
|
+
`const transpileShim = __transpilerMod.transpile;`,
|
|
8301
|
+
`const matchIgnoreShim = __runnerMod.matchIgnore;`
|
|
8302
|
+
].join("\n");
|
|
8231
8303
|
const runner = [
|
|
8232
8304
|
TEST_HELPERS,
|
|
8305
|
+
shimPreamble,
|
|
8233
8306
|
result.output,
|
|
8234
8307
|
"",
|
|
8235
8308
|
"// \u2500\u2500 auto-generated test runner \u2500\u2500",
|
|
@@ -8261,7 +8334,21 @@ function __runAll(mod) {
|
|
|
8261
8334
|
}
|
|
8262
8335
|
}
|
|
8263
8336
|
}
|
|
8264
|
-
function
|
|
8337
|
+
function matchIgnore(filePath, patterns) {
|
|
8338
|
+
if (!patterns || patterns.length === 0) return false;
|
|
8339
|
+
const normalize = (p) => p.replace(/\\/g, "/");
|
|
8340
|
+
const fp = normalize(filePath);
|
|
8341
|
+
for (const pattern of patterns) {
|
|
8342
|
+
let re = normalize(pattern).replace(/\*\*/g, "\0DSTAR\0");
|
|
8343
|
+
re = re.replace(/[.+^${}()|[\]\\]/g, "\\$&");
|
|
8344
|
+
re = re.replace(/\*/g, "[^/]*");
|
|
8345
|
+
re = re.replace(/\x00DSTAR\x00\//g, "(.+/)?").replace(/\x00DSTAR\x00/g, ".*");
|
|
8346
|
+
if (new RegExp(`(^|/)${re}$`).test(fp)) return true;
|
|
8347
|
+
}
|
|
8348
|
+
return false;
|
|
8349
|
+
}
|
|
8350
|
+
function runTests(target, transpile2, opts) {
|
|
8351
|
+
const ignorePatterns = opts && opts.ignore || [];
|
|
8265
8352
|
let files;
|
|
8266
8353
|
try {
|
|
8267
8354
|
files = discoverTestFiles(target);
|
|
@@ -8269,6 +8356,13 @@ function __runAll(mod) {
|
|
|
8269
8356
|
console.error(clr2(C2.red, `\u2717 ${e.message}`));
|
|
8270
8357
|
process.exit(1);
|
|
8271
8358
|
}
|
|
8359
|
+
if (ignorePatterns.length > 0) {
|
|
8360
|
+
const before = files.length;
|
|
8361
|
+
files = files.filter((f) => !matchIgnore(f, ignorePatterns));
|
|
8362
|
+
const skipped = before - files.length;
|
|
8363
|
+
if (skipped > 0)
|
|
8364
|
+
console.log(clr2(C2.gray, ` (skipped ${skipped} file${skipped === 1 ? "" : "s"} via ignore patterns)`));
|
|
8365
|
+
}
|
|
8272
8366
|
if (files.length === 0) {
|
|
8273
8367
|
console.log(clr2(C2.yellow, `No *.test.flux files found in: ${target}`));
|
|
8274
8368
|
return;
|
|
@@ -8315,13 +8409,14 @@ function __runAll(mod) {
|
|
|
8315
8409
|
console.log();
|
|
8316
8410
|
if (totalFail > 0) process.exitCode = 1;
|
|
8317
8411
|
}
|
|
8318
|
-
module2.exports = { runTests, runTestFile, discoverTestFiles };
|
|
8412
|
+
module2.exports = { runTests, runTestFile, discoverTestFiles, matchIgnore };
|
|
8319
8413
|
}
|
|
8320
8414
|
});
|
|
8321
8415
|
|
|
8322
8416
|
// src/cli.js
|
|
8323
8417
|
var fs = require("fs");
|
|
8324
8418
|
var path = require("path");
|
|
8419
|
+
var { loadConfig, mergeConfig } = require_config();
|
|
8325
8420
|
var USE_SELF_HOSTED = process.argv.includes("--self-hosted") || process.env.FLUX_SELF_HOSTED === "1";
|
|
8326
8421
|
process.argv = process.argv.filter((a) => a !== "--self-hosted");
|
|
8327
8422
|
function loadTranspiler() {
|
|
@@ -8583,6 +8678,18 @@ function cmdInit(name) {
|
|
|
8583
8678
|
dependencies: {},
|
|
8584
8679
|
devDependencies: { "flux-lang": `^${VERSION}` }
|
|
8585
8680
|
}, null, 2), "utf8");
|
|
8681
|
+
fs.writeFileSync(path.join(dir, "flux.config.js"), [
|
|
8682
|
+
"// Flux Lang project configuration",
|
|
8683
|
+
"// All options are optional \u2014 CLI flags always override these values.",
|
|
8684
|
+
"module.exports = {",
|
|
8685
|
+
" // jsxTarget : 'browser', // 'browser' | 'server' | 'react'",
|
|
8686
|
+
" // outDir : './dist', // output directory for compiled files",
|
|
8687
|
+
" // sourcemap : false, // generate .js.map files",
|
|
8688
|
+
" // mangle : true, // obfuscate names in output",
|
|
8689
|
+
" // ignore : [], // glob patterns to skip in `flux test`",
|
|
8690
|
+
" // entry : 'src/main.flux', // default entry for `flux bundle`",
|
|
8691
|
+
"};"
|
|
8692
|
+
].join("\n"), "utf8");
|
|
8586
8693
|
fs.writeFileSync(path.join(dir, ".gitignore"), [
|
|
8587
8694
|
"node_modules/",
|
|
8588
8695
|
"dist/",
|
|
@@ -8616,6 +8723,7 @@ function cmdInit(name) {
|
|
|
8616
8723
|
console.log();
|
|
8617
8724
|
console.log(clr(C.gray, " Files created:"));
|
|
8618
8725
|
console.log(" " + clr(C.cyan, `${projectName}/src/main.flux`));
|
|
8726
|
+
console.log(" " + clr(C.cyan, `${projectName}/flux.config.js`));
|
|
8619
8727
|
console.log(" " + clr(C.cyan, `${projectName}/package.json`));
|
|
8620
8728
|
console.log(" " + clr(C.cyan, `${projectName}/.gitignore`));
|
|
8621
8729
|
console.log(" " + clr(C.cyan, `${projectName}/README.md`));
|
|
@@ -8628,12 +8736,22 @@ function cmdInit(name) {
|
|
|
8628
8736
|
}
|
|
8629
8737
|
function cmdCompile(filePath, opts) {
|
|
8630
8738
|
const { source, abs } = readFluxFile(filePath);
|
|
8631
|
-
|
|
8739
|
+
let outPath;
|
|
8740
|
+
if (opts.out) {
|
|
8741
|
+
outPath = path.resolve(opts.out);
|
|
8742
|
+
} else if (opts.outDir) {
|
|
8743
|
+
const dir = path.resolve(opts.outDir);
|
|
8744
|
+
if (!fs.existsSync(dir)) fs.mkdirSync(dir, { recursive: true });
|
|
8745
|
+
outPath = path.join(dir, path.basename(filePath, ".flux") + ".js");
|
|
8746
|
+
} else {
|
|
8747
|
+
outPath = deriveOutPath(filePath, null);
|
|
8748
|
+
}
|
|
8632
8749
|
const mapPath = outPath + ".map";
|
|
8633
8750
|
const t0 = Date.now();
|
|
8634
8751
|
const result = transpile(source, {
|
|
8635
8752
|
sourcemap: opts.sourcemap,
|
|
8636
8753
|
mangle: opts.mangle,
|
|
8754
|
+
jsxTarget: opts.jsxTarget,
|
|
8637
8755
|
sourceFile: path.relative(path.dirname(outPath), abs),
|
|
8638
8756
|
outputFile: path.basename(outPath)
|
|
8639
8757
|
});
|
|
@@ -8685,9 +8803,12 @@ function cmdBundle(entryPath, opts) {
|
|
|
8685
8803
|
clr(C.green, `\u2713 Bundle done`) + clr(C.gray, ` (${elapsed}ms)`) + ` ${path.basename(abs)} + ${result.modules - 1} module(s) \u2192 ` + clr(C.cyan, path.relative(process.cwd(), outFile)) + clr(C.gray, ` [${kb} KB]`)
|
|
8686
8804
|
);
|
|
8687
8805
|
}
|
|
8688
|
-
function cmdRun(filePath) {
|
|
8806
|
+
function cmdRun(filePath, opts) {
|
|
8689
8807
|
const { source, abs } = readFluxFile(filePath);
|
|
8690
|
-
const result = transpile(source
|
|
8808
|
+
const result = transpile(source, {
|
|
8809
|
+
jsxTarget: opts && opts.jsxTarget,
|
|
8810
|
+
mangle: opts && opts.mangle
|
|
8811
|
+
});
|
|
8691
8812
|
if (!result.success) {
|
|
8692
8813
|
console.error(clr(C.red, `
|
|
8693
8814
|
\u2717 Compile error`));
|
|
@@ -8885,10 +9006,10 @@ function cmdFmt(filePath, opts) {
|
|
|
8885
9006
|
const diff = Math.abs(output.split("\n").length - source.split("\n").length);
|
|
8886
9007
|
console.log(clr(C.green, `\u2713 ${path.basename(abs)} \u2014 formatted`) + (diff > 0 ? clr(C.gray, ` (${diff} line${diff === 1 ? "" : "s"} changed)`) : ""));
|
|
8887
9008
|
}
|
|
8888
|
-
function cmdTest(dirOrFile) {
|
|
9009
|
+
function cmdTest(dirOrFile, opts) {
|
|
8889
9010
|
const { runTests } = require_test_runner();
|
|
8890
9011
|
const target = dirOrFile || "tests";
|
|
8891
|
-
runTests(target, transpile);
|
|
9012
|
+
runTests(target, transpile, { ignore: opts && opts.ignore || [] });
|
|
8892
9013
|
}
|
|
8893
9014
|
function cmdTokens(filePath) {
|
|
8894
9015
|
const { source } = readFluxFile(filePath);
|
|
@@ -8925,13 +9046,26 @@ function cmdWatch(filePath, opts) {
|
|
|
8925
9046
|
function doCompile() {
|
|
8926
9047
|
try {
|
|
8927
9048
|
const source = fs.readFileSync(abs, "utf8");
|
|
8928
|
-
const result = transpile(source
|
|
9049
|
+
const result = transpile(source, {
|
|
9050
|
+
jsxTarget: opts.jsxTarget,
|
|
9051
|
+
sourcemap: opts.sourcemap,
|
|
9052
|
+
mangle: opts.mangle
|
|
9053
|
+
});
|
|
8929
9054
|
const ts = (/* @__PURE__ */ new Date()).toLocaleTimeString();
|
|
8930
9055
|
if (!result.success) {
|
|
8931
9056
|
console.error(clr(C.red, `[${ts}] \u2717 Error`));
|
|
8932
9057
|
printErrors(result.errors, source, abs);
|
|
8933
9058
|
} else {
|
|
8934
|
-
|
|
9059
|
+
let outPath;
|
|
9060
|
+
if (opts.out) {
|
|
9061
|
+
outPath = path.resolve(opts.out);
|
|
9062
|
+
} else if (opts.outDir) {
|
|
9063
|
+
const dir = path.resolve(opts.outDir);
|
|
9064
|
+
if (!fs.existsSync(dir)) fs.mkdirSync(dir, { recursive: true });
|
|
9065
|
+
outPath = path.join(dir, path.basename(filePath, ".flux") + ".js");
|
|
9066
|
+
} else {
|
|
9067
|
+
outPath = deriveOutPath(filePath, null);
|
|
9068
|
+
}
|
|
8935
9069
|
fs.writeFileSync(outPath, result.output, "utf8");
|
|
8936
9070
|
console.log(clr(C.gray, `[${ts}]`) + clr(C.green, ` \u2713 Compiled \u2192 ${path.relative(process.cwd(), outPath)}`));
|
|
8937
9071
|
}
|
|
@@ -9422,7 +9556,7 @@ function parseArgs(argv) {
|
|
|
9422
9556
|
const args = argv.slice(2);
|
|
9423
9557
|
const cmd = args[0];
|
|
9424
9558
|
const file = args[1] && !args[1].startsWith("-") ? args[1] : null;
|
|
9425
|
-
const opts = { stdout: false, out: null, sourcemap:
|
|
9559
|
+
const opts = { stdout: false, out: null, sourcemap: void 0, mangle: void 0, jsxTarget: void 0 };
|
|
9426
9560
|
const publishOpts = {
|
|
9427
9561
|
bump: "patch",
|
|
9428
9562
|
ver: null,
|
|
@@ -9439,6 +9573,8 @@ function parseArgs(argv) {
|
|
|
9439
9573
|
if (args[i] === "--no-mangle" || args[i] === "-nm") opts.mangle = false;
|
|
9440
9574
|
if ((args[i] === "-o" || args[i] === "--out") && args[i + 1]) opts.out = args[++i];
|
|
9441
9575
|
if (args[i] === "--no-color") process.env.NO_COLOR = "1";
|
|
9576
|
+
if ((args[i] === "--jsx-target" || args[i] === "--jsxTarget") && args[i + 1])
|
|
9577
|
+
opts.jsxTarget = args[++i];
|
|
9442
9578
|
if (args[i] === "--patch") publishOpts.bump = "patch";
|
|
9443
9579
|
if (args[i] === "--minor") publishOpts.bump = "minor";
|
|
9444
9580
|
if (args[i] === "--major") publishOpts.bump = "major";
|
|
@@ -9454,6 +9590,9 @@ function parseArgs(argv) {
|
|
|
9454
9590
|
}
|
|
9455
9591
|
function main() {
|
|
9456
9592
|
const { cmd, file, opts, publishOpts } = parseArgs(process.argv);
|
|
9593
|
+
const fileConfig = loadConfig();
|
|
9594
|
+
const merged = mergeConfig(fileConfig, opts);
|
|
9595
|
+
const finalOpts = { stdout: opts.stdout, out: opts.out, ...merged };
|
|
9457
9596
|
switch (cmd) {
|
|
9458
9597
|
case "init": {
|
|
9459
9598
|
const name = process.argv[3] && !process.argv[3].startsWith("-") ? process.argv[3] : null;
|
|
@@ -9465,15 +9604,16 @@ function main() {
|
|
|
9465
9604
|
console.error(clr(C.red, "Specify a file: flux compile <file.flux>"));
|
|
9466
9605
|
process.exit(1);
|
|
9467
9606
|
}
|
|
9468
|
-
cmdCompile(file,
|
|
9607
|
+
cmdCompile(file, finalOpts);
|
|
9469
9608
|
break;
|
|
9470
9609
|
}
|
|
9471
9610
|
case "bundle": {
|
|
9472
|
-
|
|
9611
|
+
const entryFile = file || finalOpts.entry;
|
|
9612
|
+
if (!entryFile) {
|
|
9473
9613
|
console.error(clr(C.red, "Specify a file: flux bundle <entry.flux>"));
|
|
9474
9614
|
process.exit(1);
|
|
9475
9615
|
}
|
|
9476
|
-
cmdBundle(
|
|
9616
|
+
cmdBundle(entryFile, finalOpts);
|
|
9477
9617
|
break;
|
|
9478
9618
|
}
|
|
9479
9619
|
case "run": {
|
|
@@ -9481,7 +9621,7 @@ function main() {
|
|
|
9481
9621
|
console.error(clr(C.red, "Specify a file: flux run <file.flux>"));
|
|
9482
9622
|
process.exit(1);
|
|
9483
9623
|
}
|
|
9484
|
-
cmdRun(file);
|
|
9624
|
+
cmdRun(file, finalOpts);
|
|
9485
9625
|
break;
|
|
9486
9626
|
}
|
|
9487
9627
|
case "check": {
|
|
@@ -9521,7 +9661,7 @@ function main() {
|
|
|
9521
9661
|
console.error(clr(C.red, "Specify a file: flux watch <file.flux>"));
|
|
9522
9662
|
process.exit(1);
|
|
9523
9663
|
}
|
|
9524
|
-
cmdWatch(file,
|
|
9664
|
+
cmdWatch(file, finalOpts);
|
|
9525
9665
|
break;
|
|
9526
9666
|
}
|
|
9527
9667
|
case "fmt": {
|
|
@@ -9533,7 +9673,7 @@ function main() {
|
|
|
9533
9673
|
break;
|
|
9534
9674
|
}
|
|
9535
9675
|
case "test": {
|
|
9536
|
-
cmdTest(file || process.argv[3]);
|
|
9676
|
+
cmdTest(file || process.argv[3], finalOpts);
|
|
9537
9677
|
break;
|
|
9538
9678
|
}
|
|
9539
9679
|
case "publish": {
|
package/dist/flux.cjs.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* flux-lang v3.
|
|
2
|
+
* flux-lang v3.3.0
|
|
3
3
|
* Flux — A modern language that transpiles to JavaScript. Python-clean syntax, TypeScript-level safety, Rust-inspired pattern matching.
|
|
4
4
|
* (c) 2026 Flux Lang Contributors
|
|
5
5
|
* Released under the MIT License
|
|
@@ -7192,6 +7192,63 @@ var require_bundler = __commonJS({
|
|
|
7192
7192
|
}
|
|
7193
7193
|
});
|
|
7194
7194
|
|
|
7195
|
+
// src/config.js
|
|
7196
|
+
var require_config = __commonJS({
|
|
7197
|
+
"src/config.js"(exports2, module2) {
|
|
7198
|
+
"use strict";
|
|
7199
|
+
var fs = require("fs");
|
|
7200
|
+
var path = require("path");
|
|
7201
|
+
var CONFIG_NAMES = [
|
|
7202
|
+
"flux.config.js",
|
|
7203
|
+
"flux.config.cjs",
|
|
7204
|
+
".fluxrc.js"
|
|
7205
|
+
];
|
|
7206
|
+
function loadConfig2(cwd) {
|
|
7207
|
+
const dir = cwd || process.cwd();
|
|
7208
|
+
for (const name of CONFIG_NAMES) {
|
|
7209
|
+
const configPath = path.join(dir, name);
|
|
7210
|
+
if (!fs.existsSync(configPath)) continue;
|
|
7211
|
+
delete require.cache[require.resolve(configPath)];
|
|
7212
|
+
try {
|
|
7213
|
+
const raw = require(configPath);
|
|
7214
|
+
const cfg = raw && raw.default ? raw.default : raw;
|
|
7215
|
+
if (typeof cfg !== "object" || cfg === null) {
|
|
7216
|
+
process.stderr.write(
|
|
7217
|
+
`[flux] warning: ${name} must export a plain object \u2014 ignoring
|
|
7218
|
+
`
|
|
7219
|
+
);
|
|
7220
|
+
return {};
|
|
7221
|
+
}
|
|
7222
|
+
return cfg;
|
|
7223
|
+
} catch (e) {
|
|
7224
|
+
process.stderr.write(
|
|
7225
|
+
`[flux] error loading ${name}: ${e.message}
|
|
7226
|
+
`
|
|
7227
|
+
);
|
|
7228
|
+
return {};
|
|
7229
|
+
}
|
|
7230
|
+
}
|
|
7231
|
+
return {};
|
|
7232
|
+
}
|
|
7233
|
+
function mergeConfig2(fileConfig, cliOpts) {
|
|
7234
|
+
const cfg = fileConfig || {};
|
|
7235
|
+
const cli = cliOpts || {};
|
|
7236
|
+
return {
|
|
7237
|
+
jsxTarget: cli.jsxTarget !== void 0 ? cli.jsxTarget : cfg.jsxTarget || "browser",
|
|
7238
|
+
outDir: cli.outDir !== void 0 ? cli.outDir : cfg.outDir || null,
|
|
7239
|
+
sourcemap: cli.sourcemap !== void 0 ? cli.sourcemap : cfg.sourcemap || false,
|
|
7240
|
+
mangle: cli.mangle !== void 0 ? cli.mangle : cfg.mangle !== void 0 ? cfg.mangle : true,
|
|
7241
|
+
ignore: cli.ignore !== void 0 ? cli.ignore : cfg.ignore || [],
|
|
7242
|
+
entry: cli.entry !== void 0 ? cli.entry : cfg.entry || null
|
|
7243
|
+
};
|
|
7244
|
+
}
|
|
7245
|
+
function defineConfig2(config) {
|
|
7246
|
+
return config;
|
|
7247
|
+
}
|
|
7248
|
+
module2.exports = { loadConfig: loadConfig2, mergeConfig: mergeConfig2, defineConfig: defineConfig2 };
|
|
7249
|
+
}
|
|
7250
|
+
});
|
|
7251
|
+
|
|
7195
7252
|
// index.js
|
|
7196
7253
|
var { transpile } = require_transpiler();
|
|
7197
7254
|
var { format } = require_formatter();
|
|
@@ -7199,6 +7256,7 @@ var { buildStdlib, detectUsedSymbols, STDLIB_SYMBOLS } = require_stdlib();
|
|
|
7199
7256
|
var { Lexer } = require_lexer();
|
|
7200
7257
|
var { Parser } = require_parser();
|
|
7201
7258
|
var { bundle } = require_bundler();
|
|
7259
|
+
var { loadConfig, mergeConfig, defineConfig } = require_config();
|
|
7202
7260
|
module.exports = {
|
|
7203
7261
|
transpile,
|
|
7204
7262
|
format,
|
|
@@ -7207,5 +7265,8 @@ module.exports = {
|
|
|
7207
7265
|
STDLIB_SYMBOLS,
|
|
7208
7266
|
Lexer,
|
|
7209
7267
|
Parser,
|
|
7210
|
-
bundle
|
|
7268
|
+
bundle,
|
|
7269
|
+
loadConfig,
|
|
7270
|
+
mergeConfig,
|
|
7271
|
+
defineConfig
|
|
7211
7272
|
};
|
package/dist/flux.esm.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* flux-lang v3.
|
|
2
|
+
* flux-lang v3.3.0
|
|
3
3
|
* Flux — A modern language that transpiles to JavaScript. Python-clean syntax, TypeScript-level safety, Rust-inspired pattern matching.
|
|
4
4
|
* (c) 2026 Flux Lang Contributors
|
|
5
5
|
* Released under the MIT License
|
|
@@ -7197,6 +7197,63 @@ var require_bundler = __commonJS({
|
|
|
7197
7197
|
}
|
|
7198
7198
|
});
|
|
7199
7199
|
|
|
7200
|
+
// src/config.js
|
|
7201
|
+
var require_config = __commonJS({
|
|
7202
|
+
"src/config.js"(exports, module) {
|
|
7203
|
+
"use strict";
|
|
7204
|
+
var fs = __require("fs");
|
|
7205
|
+
var path = __require("path");
|
|
7206
|
+
var CONFIG_NAMES = [
|
|
7207
|
+
"flux.config.js",
|
|
7208
|
+
"flux.config.cjs",
|
|
7209
|
+
".fluxrc.js"
|
|
7210
|
+
];
|
|
7211
|
+
function loadConfig(cwd) {
|
|
7212
|
+
const dir = cwd || process.cwd();
|
|
7213
|
+
for (const name of CONFIG_NAMES) {
|
|
7214
|
+
const configPath = path.join(dir, name);
|
|
7215
|
+
if (!fs.existsSync(configPath)) continue;
|
|
7216
|
+
delete __require.cache[__require.resolve(configPath)];
|
|
7217
|
+
try {
|
|
7218
|
+
const raw = __require(configPath);
|
|
7219
|
+
const cfg = raw && raw.default ? raw.default : raw;
|
|
7220
|
+
if (typeof cfg !== "object" || cfg === null) {
|
|
7221
|
+
process.stderr.write(
|
|
7222
|
+
`[flux] warning: ${name} must export a plain object \u2014 ignoring
|
|
7223
|
+
`
|
|
7224
|
+
);
|
|
7225
|
+
return {};
|
|
7226
|
+
}
|
|
7227
|
+
return cfg;
|
|
7228
|
+
} catch (e) {
|
|
7229
|
+
process.stderr.write(
|
|
7230
|
+
`[flux] error loading ${name}: ${e.message}
|
|
7231
|
+
`
|
|
7232
|
+
);
|
|
7233
|
+
return {};
|
|
7234
|
+
}
|
|
7235
|
+
}
|
|
7236
|
+
return {};
|
|
7237
|
+
}
|
|
7238
|
+
function mergeConfig(fileConfig, cliOpts) {
|
|
7239
|
+
const cfg = fileConfig || {};
|
|
7240
|
+
const cli = cliOpts || {};
|
|
7241
|
+
return {
|
|
7242
|
+
jsxTarget: cli.jsxTarget !== void 0 ? cli.jsxTarget : cfg.jsxTarget || "browser",
|
|
7243
|
+
outDir: cli.outDir !== void 0 ? cli.outDir : cfg.outDir || null,
|
|
7244
|
+
sourcemap: cli.sourcemap !== void 0 ? cli.sourcemap : cfg.sourcemap || false,
|
|
7245
|
+
mangle: cli.mangle !== void 0 ? cli.mangle : cfg.mangle !== void 0 ? cfg.mangle : true,
|
|
7246
|
+
ignore: cli.ignore !== void 0 ? cli.ignore : cfg.ignore || [],
|
|
7247
|
+
entry: cli.entry !== void 0 ? cli.entry : cfg.entry || null
|
|
7248
|
+
};
|
|
7249
|
+
}
|
|
7250
|
+
function defineConfig(config) {
|
|
7251
|
+
return config;
|
|
7252
|
+
}
|
|
7253
|
+
module.exports = { loadConfig, mergeConfig, defineConfig };
|
|
7254
|
+
}
|
|
7255
|
+
});
|
|
7256
|
+
|
|
7200
7257
|
// index.js
|
|
7201
7258
|
var require_index = __commonJS({
|
|
7202
7259
|
"index.js"(exports, module) {
|
|
@@ -7206,6 +7263,7 @@ var require_index = __commonJS({
|
|
|
7206
7263
|
var { Lexer } = require_lexer();
|
|
7207
7264
|
var { Parser } = require_parser();
|
|
7208
7265
|
var { bundle } = require_bundler();
|
|
7266
|
+
var { loadConfig, mergeConfig, defineConfig } = require_config();
|
|
7209
7267
|
module.exports = {
|
|
7210
7268
|
transpile,
|
|
7211
7269
|
format,
|
|
@@ -7214,7 +7272,10 @@ var require_index = __commonJS({
|
|
|
7214
7272
|
STDLIB_SYMBOLS,
|
|
7215
7273
|
Lexer,
|
|
7216
7274
|
Parser,
|
|
7217
|
-
bundle
|
|
7275
|
+
bundle,
|
|
7276
|
+
loadConfig,
|
|
7277
|
+
mergeConfig,
|
|
7278
|
+
defineConfig
|
|
7218
7279
|
};
|
|
7219
7280
|
}
|
|
7220
7281
|
});
|