@fink/loxia
Version:
A fink to JavaScript compiler.
87 lines (76 loc) • 2.61 kB
JavaScript
import { is_empty as is_empty_0 } from "@fink/std-lib/iter.js";
import { obj_to_json as obj_to_json_0 } from "@fink/std-lib/json.js";
import { parse as parse_0 } from "@fink/larix/parser.js";
import { generate as generate_0 } from "../generate.js";
import { init_ctx as init_ctx_0 } from "../ir/init.js";
import { serialize as serialize_0 } from "../ir/serialize.js";
import { transform as transform_0 } from "../ir/transform.js";
import { optimize as optimize_0 } from "../optimize/init.js";
import { infer_types as infer_types_0 } from "../types/init.js";
const fink2lir_0 = (source_0, options_0) => {
const filename_0 = `test.fnk`;
const ast_0 = parse_0(source_0, filename_0);
const ctx_0 = init_ctx_0(source_0, filename_0, options_0);
const dlst_0 = transform_0(ast_0, `mod`, ctx_0);
const dlst_1 = optimize_0(dlst_0[0], options_0);
const result_5 = serialize_0(dlst_1[0]);
return result_5;
};
const fink2js_0 = (source_1, options_1) => {
const filename_1 = `test.fnk`;
const ast_1 = parse_0(source_1, filename_1);
/* istanbul ignore else */
if (null != ast_1) {
const val_1 = is_empty_0(ast_1.errors);
/* istanbul ignore else */
if (true === val_1) {
const drec_0 = generate_0(ast_1, filename_1, source_1, options_1);
const errors_0 = drec_0.errors;
const val_3 = is_empty_0(errors_0);
/* istanbul ignore else */
if (true === val_3) {
return drec_0.code;
}
return {
errors: errors_0
};
}
}
return {
errors: ast_1.errors
};
};
const fink2types_0 = (source_2, options_2) => {
const filename_2 = `test.fnk`;
const ast_2 = parse_0(source_2, filename_2);
const ctx_1 = init_ctx_0(source_2, filename_2, options_2);
const dlst_2 = transform_0(ast_2, `mod`, ctx_1);
const dlst_3 = infer_types_0(dlst_2[0], options_2);
const result_19 = serialize_0(dlst_3[0]);
return result_19;
};
const pretty_source_map_0 = drec_1 => {
const {
sourcesContent: _key_18,
...source_map_0
} = drec_1;
const result_20 = obj_to_json_0(source_map_0, undefined, 2);
return result_20;
};
const fink2js_sm_0 = source_3 => {
const filename_3 = `test.fnk`;
const ast_3 = parse_0(source_3, filename_3);
const drec_2 = generate_0(ast_3, filename_3, source_3, {
module_type: `mjs`,
source_maps: true
});
const sx_1 = pretty_source_map_0(drec_2.source_map);
return `${drec_2.code}
${sx_1}
`;
};
export const fink2lir = fink2lir_0,
fink2js = fink2js_0,
fink2types = fink2types_0,
pretty_source_map = pretty_source_map_0,
fink2js_sm = fink2js_sm_0;