UNPKG

@fink/loxia

Version:

A fink to JavaScript compiler.

184 lines (157 loc) 4.11 kB
const babel_traverse_0 = require("@babel/traverse"); const { transformFromAstSync: transformFromAstSync_0 } = require("@babel/core"); const { try_catch: try_catch_0 } = require("@fink/js-interop/errors.js"); const { set_props: set_props_0 } = require("@fink/js-interop/reflect.js"); const { ˆundefined: undefined_0 } = require("@fink/js-interop/nullish.js"); const { transform: transform_0 } = require("./ir/transform.js"); const { init_ctx: init_ctx_0 } = require("./ir/init.js"); const { optimize: optimize_0 } = require("./optimize/init.js"); const { transform_ir: transform_ir_0 } = require("./js/init.js"); const { module_transforms: module_transforms_0 } = require("./js/module/init.js"); const { transform_async: transform_async_0 } = require("./js/async/init.js"); const transform_file_0 = (fink_ast_0, code_0, filename_0, drec_1) => { const key_11 = `optimize`; const { optimize: _key_11, ...options_0 } = drec_1; const opts_0 = { ...options_0, optimize: { refs: true, tails: true, unused: true, ...drec_1.optimize } }; const ctx_0 = init_ctx_0(code_0, filename_0, opts_0); const dlst_0 = try_catch_0(() => { const dlst_1 = transform_0(fink_ast_0, `mod`, ctx_0); const dlst_2 = optimize_0(dlst_1[0], opts_0); const drec_2 = transform_ir_0(dlst_2[0], opts_0); return [drec_2.js]; }); const error_0 = dlst_0[0]; const hdm_0 = dlst_0[1]; const js_ast_0 = (undefined === hdm_0 ? [] : hdm_0)[0]; let ret_1; ret_1: { /* istanbul ignore else */ if (null != options_0) { /* istanbul ignore else */ if (options_0.module_type === `cjs`) { ret_1 = module_transforms_0; /* istanbul ignore next */ break ret_1; } } ret_1 = {}; /* istanbul ignore next */ break ret_1; } const extras_0 = ret_1; /* istanbul ignore else */ if (error_0 === false) { babel_traverse_0[`default`](js_ast_0, { ReturnStatement: path_0 => { /* istanbul ignore else */ if (null != path_0) { /* istanbul ignore else */ if (true === path_0.key > 0) { set_props_0(path_0.node, { leadingComments: [{ type: `CommentBlock`, value: ` istanbul ignore next ` }] }); return undefined_0; } } /* istanbul ignore next */ return; }, AwaitExpression: { enter: transform_async_0 }, ...extras_0 }); return { ...js_ast_0, errors: [] }; } return { errors: [error_0] }; }; const babel_generate_0 = (ast_0, filename_1, source_0, options_1) => { const hdm_1 = options_1.babel; const dlst_4 = try_catch_0(() => { const drec_4 = transformFromAstSync_0(ast_0, source_0, { filename: filename_1, sourceFileName: filename_1, sourceMaps: options_1.source_maps, ...(undefined === hdm_1 ? { babelrc: false, configFile: false } : hdm_1) }); return { code: drec_4.code, source_map: drec_4.map, errors: [] }; }); const error_1 = dlst_4[0]; /* istanbul ignore else */ if (error_1 === false) { return dlst_4[1]; } return { code: ``, source_map: ``, errors: [error_1] }; }; const generate_0 = (ast_1, filename_2, source_1, hdm_2) => { const options_2 = undefined === hdm_2 ? {} : hdm_2; const js_ast_1 = transform_file_0(ast_1, source_1, filename_2, options_2); /* istanbul ignore else */ if (null != js_ast_1) { const itm_2 = js_ast_1.errors; /* istanbul ignore else */ if (null != itm_2) { /* istanbul ignore else */ if (undefined !== itm_2[0]) { return { code: ``, source_map: ``, errors: js_ast_1.errors }; } } } const result_28 = babel_generate_0(js_ast_1, filename_2, source_1, options_2); return result_28; }; exports.transform_file = transform_file_0; exports.babel_generate = babel_generate_0; exports.generate = generate_0;