UNPKG

@fink/loxia

Version:

A fink to JavaScript compiler.

351 lines (295 loc) 9.68 kB
const types_0 = require("@babel/types"); const objectExpression_0 = types_0.objectExpression; const objectProperty_0 = types_0.objectProperty; const identifier_0 = types_0.identifier; const stringLiteral_0 = types_0.stringLiteral; const { map: map_0 } = require("@fink/std-lib/iter.js"); const { inc_ref: inc_ref_0 } = require("../../ir/context.js"); const { is_js_ident: is_js_ident_0 } = require("../identifier/init.js"); const { ident: ident_0 } = require("../identifier/init.js"); const { add: add_0 } = require("../context.js"); const { get_js: get_js_0 } = require("../context.js"); const { get_js_literal: get_js_literal_0 } = require("../context.js"); const { set_js2: set_js2_0 } = require("../context.js"); const { with_loc: with_loc_0 } = require("../context.js"); const transform_rec_0 = (expr_0, ctx_0) => { const js_0 = objectExpression_0([]); const result_1 = set_js2_0(expr_0, js_0, ctx_0); return result_1; }; const props_or_spread_0 = obj_0 => { /* istanbul ignore else */ if (null != obj_0) { /* istanbul ignore else */ if (obj_0.type === `ObjectExpression`) { return obj_0.properties; } } const arg_5 = types_0.spreadElement(obj_0); const item_0 = with_loc_0(obj_0, arg_5); return [item_0]; }; const transform_rec_set_0 = (expr_1, ctx_1) => { const val_1 = expr_1[0].args; const arg_7 = get_js_0(val_1[0], ctx_1); const props_0 = props_or_spread_0(arg_7); const key_24 = get_js_0(val_1[1], ctx_1); const val_2 = get_js_0(val_1[2], ctx_1); let ret_3; ret_3: { /* istanbul ignore else */ if (null != key_24) { /* istanbul ignore else */ if (key_24.type === `TemplateLiteral`) { const itm_8 = key_24.quasis; /* istanbul ignore else */ if (null != itm_8) { /* istanbul ignore else */ if (undefined !== itm_8[0]) { /* istanbul ignore else */ if (undefined !== itm_8[1]) { const result_15 = objectProperty_0(key_24, val_2, true); ret_3 = result_15; /* istanbul ignore next */ break ret_3; } } } } } /* istanbul ignore else */ if (null != key_24) { /* istanbul ignore else */ if (key_24.type === `TemplateLiteral`) { const itm_3 = key_24.quasis; /* istanbul ignore else */ if (null != itm_3) { const itm_4 = itm_3[0]; /* istanbul ignore else */ if (null != itm_4) { const itm_5 = itm_4.value; /* istanbul ignore else */ if (null != itm_5) { const val_7 = is_js_ident_0(itm_5.raw); /* istanbul ignore else */ if (true === val_7) { const arg_24 = identifier_0(key_24.quasis[0].value.raw); const arg_22 = with_loc_0(key_24, arg_24); const result_14 = objectProperty_0(arg_22, val_2); ret_3 = result_14; /* istanbul ignore next */ break ret_3; } } } } } } /* istanbul ignore else */ if (null != key_24) { /* istanbul ignore else */ if (key_24.type === `TemplateLiteral`) { const arg_19 = stringLiteral_0(key_24.quasis[0].value.raw); const arg_17 = with_loc_0(key_24, arg_19); const result_12 = objectProperty_0(arg_17, val_2); ret_3 = result_12; /* istanbul ignore next */ break ret_3; } } const result_10 = objectProperty_0(key_24, val_2, true); ret_3 = result_10; /* istanbul ignore next */ break ret_3; } const prop_0 = ret_3; const js_1 = objectExpression_0([...props_0, prop_0]); const result_17 = set_js2_0(expr_1, js_1, ctx_1); return result_17; }; const transform_rec_get_0 = (expr_2, ctx_2) => { const val_11 = expr_2[0].args; const key_id_1 = val_11[1]; const rec_js_0 = get_js_0(val_11[0], ctx_2); const key_40 = get_js_literal_0(key_id_1, ctx_2); let ret_5; ret_5: { /* istanbul ignore else */ if (null != key_40) { /* istanbul ignore else */ if (key_40.type === `TemplateLiteral`) { const itm_17 = key_40.quasis; /* istanbul ignore else */ if (null != itm_17) { /* istanbul ignore else */ if (undefined !== itm_17[0]) { /* istanbul ignore else */ if (undefined !== itm_17[1]) { ret_5 = [true, key_40]; /* istanbul ignore next */ break ret_5; } } } } } /* istanbul ignore else */ if (null != key_40) { /* istanbul ignore else */ if (key_40.type === `TemplateLiteral`) { const itm_12 = key_40.quasis; /* istanbul ignore else */ if (null != itm_12) { const itm_13 = itm_12[0]; /* istanbul ignore else */ if (null != itm_13) { const itm_14 = itm_13.value; /* istanbul ignore else */ if (null != itm_14) { const val_13 = is_js_ident_0(itm_14.raw); /* istanbul ignore else */ if (true === val_13) { const arg_41 = identifier_0(key_40.quasis[0].value.raw); const item_4 = with_loc_0(key_40, arg_41); ret_5 = [false, item_4]; /* istanbul ignore next */ break ret_5; } } } } } } const item_2 = get_js_0(key_id_1, ctx_2); ret_5 = [true, item_2]; /* istanbul ignore next */ break ret_5; } const dlst_2 = ret_5; const js_2 = types_0.memberExpression(rec_js_0, dlst_2[1], dlst_2[0]); const result_27 = set_js2_0(expr_2, js_2, ctx_2); return result_27; }; const transform_rec_del_keys_0 = (expr_3, ctx_3) => { const val_17 = expr_3[0].args; const result_id_0 = expr_3[1][0]; const rec_js_1 = get_js_0(val_17[0], ctx_3); const pfn_0 = map_0(key_id_2 => { const key_52 = get_js_literal_0(key_id_2, ctx_3); const val_18 = identifier_0(`_${key_id_2.i}`); /* istanbul ignore else */ if (null != key_52) { /* istanbul ignore else */ if (key_52.type === `TemplateLiteral`) { const itm_27 = key_52.quasis; /* istanbul ignore else */ if (null != itm_27) { /* istanbul ignore else */ if (undefined !== itm_27[0]) { /* istanbul ignore else */ if (undefined !== itm_27[1]) { const result_39 = objectProperty_0(key_52, val_18, true); return result_39; } } } } } /* istanbul ignore else */ if (null != key_52) { /* istanbul ignore else */ if (key_52.type === `TemplateLiteral`) { const itm_22 = key_52.quasis; /* istanbul ignore else */ if (null != itm_22) { const itm_23 = itm_22[0]; /* istanbul ignore else */ if (null != itm_23) { const itm_24 = itm_23.value; /* istanbul ignore else */ if (null != itm_24) { const val_23 = is_js_ident_0(itm_24.raw); /* istanbul ignore else */ if (true === val_23) { const arg_61 = identifier_0(key_52.quasis[0].value.raw); const result_38 = objectProperty_0(arg_61, val_18); return result_38; } } } } } } /* istanbul ignore else */ if (null != key_52) { /* istanbul ignore else */ if (key_52.type === `TemplateLiteral`) { const arg_58 = stringLiteral_0(key_52.quasis[0].value.raw); const result_36 = objectProperty_0(arg_58, val_18); return result_36; } } const result_34 = objectProperty_0(key_52, val_18, true); return result_34; }); const ppr_0 = pfn_0(val_17.slice(1)); const ppr_1 = (prtl_0 => { return [...prtl_0]; })(ppr_0); const arg_71 = ident_0(result_id_0); const item_9 = types_0.restElement(arg_71); const arg_69 = types_0.objectPattern([...ppr_1, item_9]); const item_8 = types_0.variableDeclarator(arg_69, rec_js_1); const js_3 = types_0.variableDeclaration(`const`, [item_8]); const next_ctx_0 = inc_ref_0(result_id_0, ctx_3); const result_42 = set_js2_0(expr_3, js_3, next_ctx_0); return result_42; }; const transform_rec_merge_0 = (expr_4, ctx_4) => { const val_27 = expr_4[0].args; const arg_79 = get_js_0(val_27[0], ctx_4); const props1_0 = props_or_spread_0(arg_79); const arg_82 = get_js_0(val_27[1], ctx_4); const props2_0 = props_or_spread_0(arg_82); const js_4 = objectExpression_0([...props1_0, ...props2_0]); const result_47 = set_js2_0(expr_4, js_4, ctx_4); return result_47; }; const add_record_0 = ctx_5 => { const pfn_3 = add_0(`rec`, transform_rec_0); const ppr_2 = pfn_3(ctx_5); const pfn_4 = add_0(`rec_g`, transform_rec_get_0); const ppr_3 = pfn_4(ppr_2); const pfn_5 = add_0(`rec_s`, transform_rec_set_0); const ppr_4 = pfn_5(ppr_3); const pfn_6 = add_0(`rec_d`, transform_rec_del_keys_0); const ppr_5 = pfn_6(ppr_4); const pfn_7 = add_0(`rec_m`, transform_rec_merge_0); const ppr_6 = pfn_7(ppr_5); return ppr_6; }; exports.transform_rec = transform_rec_0; exports.props_or_spread = props_or_spread_0; exports.transform_rec_set = transform_rec_set_0; exports.transform_rec_get = transform_rec_get_0; exports.transform_rec_del_keys = transform_rec_del_keys_0; exports.transform_rec_merge = transform_rec_merge_0; exports.add_record = add_record_0;