@xnoxs/flux-lang 4.0.0 → 4.0.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/src/self/pkg.flux CHANGED
File without changes
File without changes
File without changes
File without changes
@@ -24,7 +24,7 @@ fn _readFluxVersion():
24
24
  val pkgPath = Path.resolve(__dirname, "../../package.json")
25
25
  return JSON.parse(Fs.readFileSync(pkgPath, "utf8")).version
26
26
  catch(e):
27
- return "4.0.0"
27
+ return "4.0.1"
28
28
 
29
29
  export val FLUX_VERSION = _readFluxVersion()
30
30
  export val FLUX_STAGE = "self-hosted"
@@ -1 +1,94 @@
1
- "use strict"; const { Lexer, lexerize, T } = require("./lexer"); const { Parser, makeParser } = require("./parser"); const { CodeGenerator, makeCodeGen } = require("./codegen"); const { transformCss } = require("./css-preprocessor"); const { transformJsx, FLUX_H_BROWSER, FLUX_H_SERVER, FLUX_CSS_BROWSER, FLUX_CSS_SERVER } = require("./jsx"); const { Checker } = require("./checker"); const { FluxTypeChecker } = require("./type-checker"); const Fs = require("fs"); const Path = require("path"); function _a() { try { const pkgPath = Path.resolve(__dirname, "../../package.json"); return JSON.parse(Fs.readFileSync(pkgPath, "utf8")).version; } catch (_b) { return "4.0.0"; } } const FLUX_VERSION = _a(); module.exports.FLUX_VERSION = FLUX_VERSION; const FLUX_STAGE = "self-hosted"; module.exports.FLUX_STAGE = FLUX_STAGE; function transpile(_c, _d) { const opts = (_d ?? { }); const result = { success: false, output: "", ast: null, tokens: null, errors: [], typeErrors: [], typeWarnings: [], stage: "" }; try { let src = _c; result.stage = "css"; if ((opts.css != false)) { src = transformCss(src); } result.stage = "jsx"; if (opts.jsx) { const jsxTarget = (opts.jsxTarget ?? "browser"); const jsxResult = transformJsx(src, { target: jsxTarget }); src = jsxResult.source; if (jsxResult.hasJsx) { opts._jsxHelpers = jsxResult.runtimeHelpers; } } result.stage = "lexer"; const lexer = lexerize(src); const tokens = lexer.tokenize(); result.tokens = tokens; result.stage = "parser"; const ast = makeParser(tokens).parse(); result.ast = ast; if ((opts.check != false)) { result.stage = "checker"; const checker = new Checker([], []); const checkResult = checker.check(ast); if ((checkResult.errors.length > 0)) { result.errors = checkResult.errors; result.stage = null; return result; } } if (opts.typecheck) { result.stage = "type-checker"; const tc = new FluxTypeChecker([], [], new Map(), new Map(), new Map(), new Map()); const tcResult = tc.check(ast); result.typeErrors = tcResult.errors; result.typeWarnings = tcResult.warnings; if ((opts.strict && (tcResult.errors.length > 0))) { result.errors = tcResult.errors; result.stage = null; return result; } } result.stage = "codegen"; const indent = (opts.mangle ? "" : " "); const cg = makeCodeGen({ indent, version: FLUX_VERSION }); const genResult = cg.generate(ast); let code = genResult.code; if (opts._jsxHelpers) { code = ((opts._jsxHelpers + "\n") + code); } result.output = code; result.success = true; result.stage = null; } catch (_b) { result.errors.push({ message: _b.message, name: _b.name, stage: result.stage }); } return result; } module.exports.transpile = transpile; function transpileFile(_c, _e) { return transpile(_c, { check: true, typecheck: (_e?.typecheck ?? false), jsx: (_e?.jsx ?? false), jsxTarget: (_e?.jsxTarget ?? "browser"), mangle: (_e?.mangle ?? false), strict: (_e?.strict ?? false), ...(_e ?? { }) }); } module.exports.transpileFile = transpileFile;
1
+ // Generated by Flux Transpiler v3.2.0
2
+ "use strict";
3
+
4
+ const { Lexer, lexerize, T } = require("./lexer");
5
+ const { Parser, makeParser } = require("./parser");
6
+ const { CodeGenerator, makeCodeGen } = require("./codegen");
7
+ const { transformCss } = require("./css-preprocessor");
8
+ const { transformJsx, FLUX_H_BROWSER, FLUX_H_SERVER, FLUX_CSS_BROWSER, FLUX_CSS_SERVER } = require("./jsx");
9
+ const { Checker } = require("./checker");
10
+ const { FluxTypeChecker } = require("./type-checker");
11
+ const Fs = require("fs");
12
+ const Path = require("path");
13
+ function _readFluxVersion() {
14
+ try {
15
+ const pkgPath = Path.resolve(__dirname, "../../package.json");
16
+ return JSON.parse(Fs.readFileSync(pkgPath, "utf8")).version;
17
+ }
18
+ catch (e) {
19
+ return "4.0.1";
20
+ }
21
+ }
22
+ const FLUX_VERSION = _readFluxVersion();
23
+ module.exports.FLUX_VERSION = FLUX_VERSION;
24
+ const FLUX_STAGE = "self-hosted";
25
+ module.exports.FLUX_STAGE = FLUX_STAGE;
26
+ function transpile(source, options) {
27
+ const opts = (options ?? { });
28
+ const result = { success: false, output: "", ast: null, tokens: null, errors: [], typeErrors: [], typeWarnings: [], stage: "" };
29
+ try {
30
+ let src = source;
31
+ result.stage = "css";
32
+ if ((opts.css != false)) {
33
+ src = transformCss(src);
34
+ }
35
+ result.stage = "jsx";
36
+ if (opts.jsx) {
37
+ const jsxTarget = (opts.jsxTarget ?? "browser");
38
+ const jsxResult = transformJsx(src, { target: jsxTarget });
39
+ src = jsxResult.source;
40
+ if (jsxResult.hasJsx) {
41
+ opts._jsxHelpers = jsxResult.runtimeHelpers;
42
+ }
43
+ }
44
+ result.stage = "lexer";
45
+ const lexer = lexerize(src);
46
+ const tokens = lexer.tokenize();
47
+ result.tokens = tokens;
48
+ result.stage = "parser";
49
+ const ast = makeParser(tokens).parse();
50
+ result.ast = ast;
51
+ if ((opts.check != false)) {
52
+ result.stage = "checker";
53
+ const checker = new Checker([], []);
54
+ const checkResult = checker.check(ast);
55
+ if ((checkResult.errors.length > 0)) {
56
+ result.errors = checkResult.errors;
57
+ result.stage = null;
58
+ return result;
59
+ }
60
+ }
61
+ if (opts.typecheck) {
62
+ result.stage = "type-checker";
63
+ const tc = new FluxTypeChecker([], [], new Map(), new Map(), new Map(), new Map());
64
+ const tcResult = tc.check(ast);
65
+ result.typeErrors = tcResult.errors;
66
+ result.typeWarnings = tcResult.warnings;
67
+ if ((opts.strict && (tcResult.errors.length > 0))) {
68
+ result.errors = tcResult.errors;
69
+ result.stage = null;
70
+ return result;
71
+ }
72
+ }
73
+ result.stage = "codegen";
74
+ const indent = (opts.mangle ? "" : " ");
75
+ const cg = makeCodeGen({ indent, version: FLUX_VERSION });
76
+ const genResult = cg.generate(ast);
77
+ let code = genResult.code;
78
+ if (opts._jsxHelpers) {
79
+ code = ((opts._jsxHelpers + "\n") + code);
80
+ }
81
+ result.output = code;
82
+ result.success = true;
83
+ result.stage = null;
84
+ }
85
+ catch (e) {
86
+ result.errors.push({ message: e.message, name: e.name, stage: result.stage });
87
+ }
88
+ return result;
89
+ }
90
+ module.exports.transpile = transpile;
91
+ function transpileFile(source, opts) {
92
+ return transpile(source, { check: true, typecheck: (opts?.typecheck ?? false), jsx: (opts?.jsx ?? false), jsxTarget: (opts?.jsxTarget ?? "browser"), mangle: (opts?.mangle ?? false), strict: (opts?.strict ?? false), ...(opts ?? { }) });
93
+ }
94
+ module.exports.transpileFile = transpileFile;
File without changes