@fink/loxia
Version:
A fink to JavaScript compiler.
351 lines (295 loc) • 9.68 kB
JavaScript
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;