@xuda.io/runtime-bundle 1.0.778 → 1.0.780
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/js/modules/xuda-event-javascript-module.min.mjs +3 -3
- package/js/modules/xuda-event-javascript-module.mjs +5 -3
- package/js/xuda-runtime-bundle.js +396 -396
- package/js/xuda-runtime-bundle.min.js +3 -3
- package/js/xuda-runtime-slim.js +398 -398
- package/js/xuda-runtime-slim.min.es.js +398 -398
- package/js/xuda-runtime-slim.min.js +3 -3
- package/js/xuda-server-bundle.min.mjs +3 -3
- package/js/xuda-server-bundle.mjs +402 -400
- package/js/xuda-worker-bundle.js +402 -400
- package/js/xuda-worker-bundle.min.js +3 -3
- package/js/xuda_common-bundle.js +13 -13
- package/js/xuda_common-bundle.min.js +1 -1
- package/package.json +1 -1
package/js/xuda-runtime-slim.js
CHANGED
|
@@ -2541,19 +2541,19 @@ func.api.call_javascript = async function (prog_id, params, evaluate) {
|
|
|
2541
2541
|
return await api_utils.call_javascript(prog_id, params, evaluate);
|
|
2542
2542
|
};
|
|
2543
2543
|
|
|
2544
|
-
func.api.call_javascript = async function (prog_id, params, evaluate) {
|
|
2545
|
-
|
|
2546
|
-
|
|
2547
|
-
|
|
2548
|
-
|
|
2549
|
-
|
|
2550
|
-
|
|
2551
|
-
|
|
2552
|
-
|
|
2553
|
-
|
|
2544
|
+
// func.api.call_javascript = async function (prog_id, params, evaluate) {
|
|
2545
|
+
// const SESSION_ID = Object.keys(SESSION_OBJ)[0];
|
|
2546
|
+
// const api_utils = await func.common.get_module(SESSION_ID, 'xuda-api-library.mjs', {
|
|
2547
|
+
// func,
|
|
2548
|
+
// glb,
|
|
2549
|
+
// SESSION_OBJ,
|
|
2550
|
+
// SESSION_ID,
|
|
2551
|
+
// APP_OBJ,
|
|
2552
|
+
// dsSession: func.utils.get_last_datasource_no(SESSION_ID),
|
|
2553
|
+
// });
|
|
2554
2554
|
|
|
2555
|
-
|
|
2556
|
-
};
|
|
2555
|
+
// return await api_utils.call_javascript(prog_id, params, evaluate);
|
|
2556
|
+
// };
|
|
2557
2557
|
|
|
2558
2558
|
glb.rpi_request_queue_num = 0;
|
|
2559
2559
|
func.common.perform_rpi_request = async function (SESSION_ID, serviceP, opt = {}, data) {
|
|
@@ -8758,7 +8758,6 @@ func.UI.worker.find_job_index = function (SESSION_ID, jobNoP) {
|
|
|
8758
8758
|
};
|
|
8759
8759
|
|
|
8760
8760
|
func.UI.ds_garbage_collector = function (SESSION_ID = Object.keys(SESSION_OBJ)[0], re_check) {
|
|
8761
|
-
return;
|
|
8762
8761
|
let _session = SESSION_OBJ[SESSION_ID];
|
|
8763
8762
|
|
|
8764
8763
|
const _data_system = _session?.DS_GLB?.[0]?.data_system;
|
|
@@ -8812,7 +8811,6 @@ func.UI.ds_garbage_collector = function (SESSION_ID = Object.keys(SESSION_OBJ)[0
|
|
|
8812
8811
|
}
|
|
8813
8812
|
};
|
|
8814
8813
|
func.UI.refs_garbage_collector = function (SESSION_ID = Object.keys(SESSION_OBJ)[0]) {
|
|
8815
|
-
return;
|
|
8816
8814
|
if (!_.isEmpty(SCREEN_BLOCKER_OBJ)) {
|
|
8817
8815
|
// let dom to finish build
|
|
8818
8816
|
return;
|
|
@@ -9652,14 +9650,14 @@ func.events.execute = async function (
|
|
|
9652
9650
|
|
|
9653
9651
|
call_native_javascript: async function () {
|
|
9654
9652
|
const module = await func.common.get_module(SESSION_ID, 'xuda-event-javascript-module.mjs');
|
|
9655
|
-
const result = await module.call_javascript(SESSION_ID, jobNoP, refIdP, dsSession);
|
|
9653
|
+
const result = await module.call_javascript(SESSION_ID, jobNoP, refIdP, dsSession, false, $(containerP));
|
|
9656
9654
|
await func.datasource.set_outputField(SESSION_ID, dsSessionP, result, args);
|
|
9657
9655
|
|
|
9658
9656
|
return result;
|
|
9659
9657
|
},
|
|
9660
9658
|
call_evaluate_javascript: async function () {
|
|
9661
9659
|
const module = await func.common.get_module(SESSION_ID, 'xuda-event-javascript-module.mjs');
|
|
9662
|
-
const result = await module.call_javascript(SESSION_ID, jobNoP, refIdP, dsSession, true);
|
|
9660
|
+
const result = await module.call_javascript(SESSION_ID, jobNoP, refIdP, dsSession, true, $(containerP));
|
|
9663
9661
|
await func.datasource.set_outputField(SESSION_ID, dsSessionP, result, args);
|
|
9664
9662
|
|
|
9665
9663
|
return result;
|
|
@@ -9678,6 +9676,7 @@ func.events.execute = async function (
|
|
|
9678
9676
|
null,
|
|
9679
9677
|
null,
|
|
9680
9678
|
evt,
|
|
9679
|
+
$(containerP),
|
|
9681
9680
|
);
|
|
9682
9681
|
await func.datasource.set_outputField(SESSION_ID, dsSessionP, result, args);
|
|
9683
9682
|
|
|
@@ -9697,6 +9696,7 @@ func.events.execute = async function (
|
|
|
9697
9696
|
null,
|
|
9698
9697
|
null,
|
|
9699
9698
|
evt,
|
|
9699
|
+
$(containerP),
|
|
9700
9700
|
);
|
|
9701
9701
|
await func.datasource.set_outputField(SESSION_ID, dsSessionP, result, args);
|
|
9702
9702
|
|
|
@@ -10612,271 +10612,271 @@ func.expression.get = async function (SESSION_ID, valP, dsSessionP, sourceP, row
|
|
|
10612
10612
|
return new_class.get();
|
|
10613
10613
|
};
|
|
10614
10614
|
|
|
10615
|
-
func.expression.get_bad1 = async function (SESSION_ID, valP, dsSessionP, sourceP, rowIdP, sourceActionP, secondPassP, calling_fieldIdP, fieldsP = {}, debug_infoP, iterate_info, js_script_callback, jobNo, api_output_type) {
|
|
10616
|
-
|
|
10617
|
-
|
|
10618
|
-
|
|
10619
|
-
|
|
10620
|
-
|
|
10621
|
-
|
|
10622
|
-
|
|
10615
|
+
// func.expression.get_bad1 = async function (SESSION_ID, valP, dsSessionP, sourceP, rowIdP, sourceActionP, secondPassP, calling_fieldIdP, fieldsP = {}, debug_infoP, iterate_info, js_script_callback, jobNo, api_output_type) {
|
|
10616
|
+
// const evalJson = (text) => eval(`(${text})`);
|
|
10617
|
+
// const replaceQuotes = (str) => {
|
|
10618
|
+
// for (const [key, val] of Object.entries(fields)) {
|
|
10619
|
+
// if (typeof val === 'string') str = str.replace(`"${val}"`, val.replace(/"/g, ''));
|
|
10620
|
+
// }
|
|
10621
|
+
// return str;
|
|
10622
|
+
// };
|
|
10623
10623
|
|
|
10624
|
-
|
|
10625
|
-
|
|
10624
|
+
// let ret, error, warning, var_error_found;
|
|
10625
|
+
// const fields = { ...fieldsP };
|
|
10626
10626
|
|
|
10627
|
-
|
|
10628
|
-
|
|
10629
|
-
|
|
10630
|
-
|
|
10627
|
+
// // Initial value processing
|
|
10628
|
+
// if (valP === null || typeof valP === 'undefined') ret = '';
|
|
10629
|
+
// else if (typeof valP === 'boolean') ret = valP ? 'Y' : 'N';
|
|
10630
|
+
// else ret = valP.toString();
|
|
10631
10631
|
|
|
10632
|
-
|
|
10633
|
-
|
|
10632
|
+
// ret = ret.replace(/\&/g, '&');
|
|
10633
|
+
// ret = func.utils.replace_studio_drive_url(SESSION_ID, ret);
|
|
10634
10634
|
|
|
10635
|
-
|
|
10636
|
-
|
|
10637
|
-
|
|
10638
|
-
|
|
10639
|
-
|
|
10640
|
-
|
|
10641
|
-
|
|
10642
|
-
|
|
10643
|
-
|
|
10644
|
-
|
|
10645
|
-
|
|
10646
|
-
|
|
10647
|
-
|
|
10648
|
-
|
|
10649
|
-
|
|
10650
|
-
|
|
10651
|
-
|
|
10652
|
-
|
|
10653
|
-
|
|
10654
|
-
|
|
10655
|
-
|
|
10656
|
-
|
|
10657
|
-
|
|
10635
|
+
// // End results helper
|
|
10636
|
+
// const endResults = () => {
|
|
10637
|
+
// if (['update', 'javascript'].includes(sourceP) && typeof ret === 'string') {
|
|
10638
|
+
// ret = replaceQuotes(ret);
|
|
10639
|
+
// }
|
|
10640
|
+
// if ((error || warning) && SESSION_OBJ[SESSION_ID]?.DS_GLB[dsSessionP]) {
|
|
10641
|
+
// func.utils.debug.log(SESSION_ID, SESSION_OBJ[SESSION_ID].DS_GLB[dsSessionP].nodeId, {
|
|
10642
|
+
// module: 'expression',
|
|
10643
|
+
// action: sourceP,
|
|
10644
|
+
// source: calling_fieldIdP,
|
|
10645
|
+
// prop: ret,
|
|
10646
|
+
// details: ret,
|
|
10647
|
+
// result: ret,
|
|
10648
|
+
// error,
|
|
10649
|
+
// warning,
|
|
10650
|
+
// fields: null,
|
|
10651
|
+
// type: 'exp',
|
|
10652
|
+
// prog_id: SESSION_OBJ[SESSION_ID].DS_GLB[dsSessionP].prog_id,
|
|
10653
|
+
// debug_info: debug_infoP,
|
|
10654
|
+
// });
|
|
10655
|
+
// }
|
|
10656
|
+
// return { result: ret, fields, error, warning, req: valP, var_error_found };
|
|
10657
|
+
// };
|
|
10658
10658
|
|
|
10659
|
-
|
|
10660
|
-
|
|
10661
|
-
|
|
10662
|
-
|
|
10663
|
-
|
|
10664
|
-
|
|
10665
|
-
|
|
10666
|
-
|
|
10667
|
-
|
|
10668
|
-
|
|
10669
|
-
|
|
10670
|
-
|
|
10671
|
-
|
|
10672
|
-
|
|
10673
|
-
|
|
10674
|
-
|
|
10659
|
+
// // Handle non-variable cases
|
|
10660
|
+
// const handleNonVariable = async () => {
|
|
10661
|
+
// try {
|
|
10662
|
+
// if (sourceP !== 'arguments') {
|
|
10663
|
+
// if (ret.startsWith('_DATE_')) ret = ret.slice(6);
|
|
10664
|
+
// else if (/^\d{4}-\d{2}-\d{2}$/.test(ret) || ret === 'self') return endResults();
|
|
10665
|
+
// else ret = await func.expression.secure_eval(SESSION_ID, sourceP, ret, jobNo, dsSessionP, js_script_callback);
|
|
10666
|
+
// } else {
|
|
10667
|
+
// ret = ret.replace(/_NULL/gi, '');
|
|
10668
|
+
// }
|
|
10669
|
+
// return endResults();
|
|
10670
|
+
// } catch (err) {
|
|
10671
|
+
// error = err.message;
|
|
10672
|
+
// return endResults();
|
|
10673
|
+
// }
|
|
10674
|
+
// };
|
|
10675
10675
|
|
|
10676
|
-
|
|
10677
|
-
|
|
10678
|
-
|
|
10679
|
-
|
|
10680
|
-
|
|
10676
|
+
// // Early return for simple cases
|
|
10677
|
+
// if (!func.expression.validate_variables(valP)) return await handleNonVariable();
|
|
10678
|
+
// if (glb.emailRegex.test(await func.expression.secure_eval(SESSION_ID, sourceP, valP, jobNo, dsSessionP, js_script_callback))) {
|
|
10679
|
+
// return await handleNonVariable();
|
|
10680
|
+
// }
|
|
10681
10681
|
|
|
10682
|
-
|
|
10683
|
-
|
|
10684
|
-
|
|
10685
|
-
|
|
10686
|
-
|
|
10682
|
+
// // Parse and process variables
|
|
10683
|
+
// const split = func.expression.parse(ret) || [];
|
|
10684
|
+
// const var_Arr = await Promise.all(
|
|
10685
|
+
// split.map(async (val, key) => {
|
|
10686
|
+
// const result = { value: val.value, fieldId: val.fieldId };
|
|
10687
10687
|
|
|
10688
|
-
|
|
10688
|
+
// if (!val.fieldId) return result;
|
|
10689
10689
|
|
|
10690
|
-
|
|
10691
|
-
|
|
10692
|
-
|
|
10693
|
-
|
|
10690
|
+
// // Handle _THIS substitution
|
|
10691
|
+
// if (val.fieldId.startsWith('_THIS') && calling_fieldIdP) {
|
|
10692
|
+
// result.fieldId = val.fieldId.length === 5 ? calling_fieldIdP : calling_fieldIdP + val.fieldId.slice(5);
|
|
10693
|
+
// }
|
|
10694
10694
|
|
|
10695
|
-
|
|
10696
|
-
|
|
10697
|
-
|
|
10698
|
-
|
|
10695
|
+
// // Fetch value from datasource
|
|
10696
|
+
// const { ret: fetchedValue, fieldIdP } = await func.datasource.get_value(SESSION_ID, result.fieldId, dsSessionP, rowIdP);
|
|
10697
|
+
// result.value = fetchedValue?.value ?? (sourceP === 'exp' ? fetchedValue?.value : '""');
|
|
10698
|
+
// result.type = fetchedValue?.type;
|
|
10699
10699
|
|
|
10700
|
-
|
|
10701
|
-
|
|
10702
|
-
|
|
10703
|
-
|
|
10704
|
-
|
|
10700
|
+
// // Handle iteration
|
|
10701
|
+
// if (iterate_info) {
|
|
10702
|
+
// if (iterate_info.iterator_key === fieldIdP) result.value = iterate_info._key;
|
|
10703
|
+
// if (iterate_info.iterator_val === fieldIdP) result.value = iterate_info._val;
|
|
10704
|
+
// }
|
|
10705
10705
|
|
|
10706
|
-
|
|
10707
|
-
|
|
10708
|
-
|
|
10709
|
-
|
|
10706
|
+
// // Process nested properties
|
|
10707
|
+
// if (val.value.includes('[') || val.value.includes('.')) {
|
|
10708
|
+
// const { property1, property2 } = await func.expression.get_property(val.value);
|
|
10709
|
+
// const data = fetchedValue?.type === 'object' ? fetchedValue.value : fetchedValue?.prop;
|
|
10710
10710
|
|
|
10711
|
-
|
|
10712
|
-
|
|
10713
|
-
|
|
10714
|
-
|
|
10715
|
-
|
|
10716
|
-
|
|
10717
|
-
|
|
10718
|
-
|
|
10719
|
-
|
|
10720
|
-
|
|
10721
|
-
|
|
10711
|
+
// if (key > 0 && val.value.includes(']') && !val.value.includes('[') && split[key - 1].value) {
|
|
10712
|
+
// const prevData = split[key - 1].value;
|
|
10713
|
+
// result.value = prevData[fieldIdP];
|
|
10714
|
+
// if (val.value.includes('.') && prevData[fieldIdP]) {
|
|
10715
|
+
// result.value = prevData[fieldIdP][property2] ?? '';
|
|
10716
|
+
// }
|
|
10717
|
+
// } else if (data) {
|
|
10718
|
+
// if (property1) result.value = data[property1] ?? '';
|
|
10719
|
+
// if (property2) result.value = (property1 ? data[property1]?.[property2] : data[property2]) ?? '';
|
|
10720
|
+
// }
|
|
10721
|
+
// }
|
|
10722
10722
|
|
|
10723
|
-
|
|
10724
|
-
|
|
10725
|
-
|
|
10726
|
-
|
|
10723
|
+
// fields[fieldIdP] = result.value;
|
|
10724
|
+
// return result;
|
|
10725
|
+
// }),
|
|
10726
|
+
// );
|
|
10727
10727
|
|
|
10728
|
-
|
|
10729
|
-
|
|
10730
|
-
|
|
10731
|
-
|
|
10732
|
-
|
|
10733
|
-
|
|
10734
|
-
|
|
10735
|
-
|
|
10736
|
-
let value = val.value;
|
|
10737
|
-
if (var_Arr.length > 1) {
|
|
10738
|
-
if (!['DbQuery', 'alert', 'exp', 'api_rendered_output'].includes(sourceP) && ['string', 'date'].includes(val.type)) {
|
|
10739
|
-
value = `\`${value}\``;
|
|
10740
|
-
} else if (sourceP === 'api_rendered_output' && api_output_type === 'json' && ['string', 'date'].includes(val.type)) {
|
|
10741
|
-
value = `"${value}"`;
|
|
10742
|
-
}
|
|
10743
|
-
}
|
|
10728
|
+
// // Final evaluation
|
|
10729
|
+
// try {
|
|
10730
|
+
// const res = var_Arr.map((val, key) => {
|
|
10731
|
+
// if (sourceP === 'UI Property EXP' || sourceP === 'UI Attr EXP') {
|
|
10732
|
+
// const { changed, value } = func.utils.get_drive_url(SESSION_ID, val.value, sourceP === 'UI Attr EXP' && var_Arr.length > 1);
|
|
10733
|
+
// if (changed) return value;
|
|
10734
|
+
// }
|
|
10744
10735
|
|
|
10745
|
-
|
|
10746
|
-
|
|
10747
|
-
|
|
10748
|
-
|
|
10749
|
-
|
|
10750
|
-
|
|
10736
|
+
// let value = val.value;
|
|
10737
|
+
// if (var_Arr.length > 1) {
|
|
10738
|
+
// if (!['DbQuery', 'alert', 'exp', 'api_rendered_output'].includes(sourceP) && ['string', 'date'].includes(val.type)) {
|
|
10739
|
+
// value = `\`${value}\``;
|
|
10740
|
+
// } else if (sourceP === 'api_rendered_output' && api_output_type === 'json' && ['string', 'date'].includes(val.type)) {
|
|
10741
|
+
// value = `"${value}"`;
|
|
10742
|
+
// }
|
|
10743
|
+
// }
|
|
10751
10744
|
|
|
10752
|
-
|
|
10753
|
-
|
|
10754
|
-
|
|
10745
|
+
// if (val.fieldId && typeof value === 'string') {
|
|
10746
|
+
// if (['query', 'condition', 'range', 'sort', 'locate'].includes(sourceP)) value = value.replace(/↵|\r\n|\n|\r/g, '');
|
|
10747
|
+
// if (['init', 'update', 'virtual'].includes(sourceP)) value = value.replace(/↵|\r\n|\n|\r/g, '\\n');
|
|
10748
|
+
// if (typeof IS_PROCESS_SERVER !== 'undefined') value = value.replace(/↵|\r\n|\n|\r/g, '<br>');
|
|
10749
|
+
// fields[val.fieldId] = value;
|
|
10750
|
+
// }
|
|
10755
10751
|
|
|
10756
|
-
|
|
10757
|
-
|
|
10758
|
-
|
|
10759
|
-
return '0';
|
|
10760
|
-
}
|
|
10761
|
-
return value;
|
|
10762
|
-
});
|
|
10752
|
+
// if (typeof value === 'object' && var_Arr.length > 1) {
|
|
10753
|
+
// value = Array.isArray(value) || var_Arr[key + 1]?.value?.includes('.') ? JSON.stringify(value) : `(${JSON.stringify(value)})`;
|
|
10754
|
+
// }
|
|
10763
10755
|
|
|
10764
|
-
|
|
10765
|
-
|
|
10766
|
-
|
|
10767
|
-
|
|
10768
|
-
|
|
10769
|
-
|
|
10770
|
-
|
|
10771
|
-
} else if (sourceP === 'DbQuery') {
|
|
10772
|
-
ret = JSON.stringify(evalJson(ret));
|
|
10773
|
-
}
|
|
10756
|
+
// if (!val.type === 'exp' && sourceP !== 'exp' && typeof value === 'string' && value.startsWith('@')) {
|
|
10757
|
+
// warning = `Error encoding ${value}`;
|
|
10758
|
+
// var_error_found = true;
|
|
10759
|
+
// return '0';
|
|
10760
|
+
// }
|
|
10761
|
+
// return value;
|
|
10762
|
+
// });
|
|
10774
10763
|
|
|
10775
|
-
|
|
10776
|
-
|
|
10777
|
-
|
|
10778
|
-
|
|
10779
|
-
|
|
10780
|
-
|
|
10781
|
-
|
|
10764
|
+
// ret = res.length === 1 ? res[0] : res.join('');
|
|
10765
|
+
// if (var_Arr.some((v) => v.type === 'exp') && sourceP !== 'exp' && !secondPassP) {
|
|
10766
|
+
// const exp = await func.expression.get(SESSION_ID, ret, dsSessionP, sourceP, rowIdP, sourceActionP, true, calling_fieldIdP, fields, debug_infoP);
|
|
10767
|
+
// ret = exp.res?.[0] ?? exp.result;
|
|
10768
|
+
// Object.assign(fields, exp.fields);
|
|
10769
|
+
// } else if (!secondPassP && !['arguments', 'api_rendered_output', 'DbQuery'].includes(sourceP)) {
|
|
10770
|
+
// ret = await func.expression.secure_eval(SESSION_ID, sourceP, ret, jobNo, dsSessionP, js_script_callback);
|
|
10771
|
+
// } else if (sourceP === 'DbQuery') {
|
|
10772
|
+
// ret = JSON.stringify(evalJson(ret));
|
|
10773
|
+
// }
|
|
10782
10774
|
|
|
10783
|
-
|
|
10784
|
-
|
|
10775
|
+
// if (typeof ret === 'string' && ret.startsWith('@')) {
|
|
10776
|
+
// error = 'Error encoding @ var';
|
|
10777
|
+
// var_error_found = true;
|
|
10778
|
+
// }
|
|
10779
|
+
// } catch (err) {
|
|
10780
|
+
// error = err.message;
|
|
10781
|
+
// }
|
|
10785
10782
|
|
|
10786
|
-
|
|
10787
|
-
|
|
10788
|
-
|
|
10789
|
-
|
|
10790
|
-
|
|
10791
|
-
|
|
10792
|
-
|
|
10793
|
-
|
|
10794
|
-
|
|
10795
|
-
|
|
10796
|
-
|
|
10797
|
-
|
|
10798
|
-
|
|
10799
|
-
|
|
10800
|
-
|
|
10801
|
-
|
|
10802
|
-
|
|
10803
|
-
|
|
10804
|
-
|
|
10805
|
-
|
|
10806
|
-
|
|
10807
|
-
|
|
10808
|
-
|
|
10809
|
-
|
|
10810
|
-
|
|
10811
|
-
|
|
10812
|
-
|
|
10813
|
-
|
|
10814
|
-
|
|
10815
|
-
|
|
10816
|
-
|
|
10817
|
-
|
|
10818
|
-
|
|
10819
|
-
|
|
10820
|
-
|
|
10821
|
-
|
|
10822
|
-
|
|
10823
|
-
|
|
10824
|
-
|
|
10825
|
-
|
|
10826
|
-
|
|
10827
|
-
|
|
10828
|
-
|
|
10829
|
-
|
|
10830
|
-
|
|
10831
|
-
|
|
10832
|
-
|
|
10833
|
-
|
|
10834
|
-
|
|
10835
|
-
|
|
10836
|
-
|
|
10837
|
-
|
|
10838
|
-
|
|
10839
|
-
|
|
10840
|
-
|
|
10841
|
-
|
|
10842
|
-
|
|
10843
|
-
|
|
10844
|
-
|
|
10845
|
-
|
|
10846
|
-
|
|
10847
|
-
|
|
10848
|
-
|
|
10849
|
-
|
|
10850
|
-
|
|
10851
|
-
|
|
10852
|
-
|
|
10853
|
-
|
|
10854
|
-
|
|
10855
|
-
|
|
10856
|
-
|
|
10857
|
-
|
|
10858
|
-
|
|
10859
|
-
|
|
10860
|
-
|
|
10861
|
-
|
|
10862
|
-
|
|
10863
|
-
|
|
10864
|
-
|
|
10865
|
-
|
|
10866
|
-
|
|
10867
|
-
|
|
10868
|
-
|
|
10869
|
-
|
|
10870
|
-
|
|
10871
|
-
|
|
10872
|
-
|
|
10873
|
-
|
|
10874
|
-
|
|
10875
|
-
|
|
10876
|
-
|
|
10877
|
-
|
|
10878
|
-
|
|
10879
|
-
};
|
|
10783
|
+
// return endResults();
|
|
10784
|
+
// };
|
|
10785
|
+
|
|
10786
|
+
// func.expression.parse_org = function (strP) {
|
|
10787
|
+
// var extract_str = function (strP, posP) {
|
|
10788
|
+
// if (!posP) posP = 0;
|
|
10789
|
+
// var clean_split_str = function (arrP) {
|
|
10790
|
+
// var arr = [];
|
|
10791
|
+
// if (arrP && arrP.length > 1 && arrP[0] === '' && arrP[1].indexOf('@') > -1) {
|
|
10792
|
+
// for (var i = 1; i <= arrP.length; i++) {
|
|
10793
|
+
// arr.push(arrP[i]);
|
|
10794
|
+
// }
|
|
10795
|
+
// return arr;
|
|
10796
|
+
// } else return arrP;
|
|
10797
|
+
// };
|
|
10798
|
+
// var nonLettersPatt = /\W/; // non letters
|
|
10799
|
+
// var validSymbolsNoArray = /[^.@\[]/; //valid symbols no array /[^.@\[\]\]]/
|
|
10800
|
+
// var validSymbolsWithArray = /[^.@"'\[\]]/; //valid symbols with array
|
|
10801
|
+
// var validSymbols = validSymbolsNoArray;
|
|
10802
|
+
// var splitTmp = strP.replace(/@/g, '^^@').split('^^');
|
|
10803
|
+
// var split = clean_split_str(splitTmp);
|
|
10804
|
+
// var obj = [];
|
|
10805
|
+
// if (split) {
|
|
10806
|
+
// for (let val of split) {
|
|
10807
|
+
// // run on @ segments
|
|
10808
|
+
// if (val) {
|
|
10809
|
+
// var pos = strP.indexOf(val);
|
|
10810
|
+
// if (val && val.substr(0, 1) === '@') {
|
|
10811
|
+
// var tmpStr = '';
|
|
10812
|
+
// var word_start_pos = undefined;
|
|
10813
|
+
// var word_end_pos = undefined;
|
|
10814
|
+
// // run on @ segment string
|
|
10815
|
+
// for (var i = 0; i <= val.length; i++) {
|
|
10816
|
+
// var key1 = i;
|
|
10817
|
+
// var val1 = val.substr(i, 1);
|
|
10818
|
+
// if (
|
|
10819
|
+
// val1 === '.' &&
|
|
10820
|
+
// !word_start_pos // find first dot
|
|
10821
|
+
// )
|
|
10822
|
+
// word_start_pos = key1;
|
|
10823
|
+
// if (
|
|
10824
|
+
// word_start_pos &&
|
|
10825
|
+
// key1 > word_start_pos &&
|
|
10826
|
+
// nonLettersPatt.test(val1) // find any sign character to mark the end of word
|
|
10827
|
+
// )
|
|
10828
|
+
// word_end_pos = key1;
|
|
10829
|
+
// if (word_start_pos && word_start_pos >= 0 && word_end_pos && word_end_pos >= 0) {
|
|
10830
|
+
// // find the word
|
|
10831
|
+
// var word = val.substr(word_start_pos + 1, word_end_pos - word_start_pos - 1); // get the word
|
|
10832
|
+
// // if (glb.ALL_PROPERTIES_ARR.indexOf(word) === -1) {
|
|
10833
|
+
// // compare with internal properties
|
|
10834
|
+
// tmpStr = tmpStr.substr(0, word_start_pos) + '^^' + tmpStr.substr(word_start_pos, word_end_pos);
|
|
10835
|
+
// // }
|
|
10836
|
+
// if (val.substr(word_end_pos, 1) === '.') word_start_pos = word_end_pos;
|
|
10837
|
+
// else word_start_pos = null;
|
|
10838
|
+
// word_end_pos = null;
|
|
10839
|
+
// }
|
|
10840
|
+
// if (val1 === '[') validSymbols = validSymbolsWithArray;
|
|
10841
|
+
// if (nonLettersPatt.test(val1) && validSymbols.test(val1) && tmpStr.indexOf('^^') === -1) {
|
|
10842
|
+
// tmpStr += '^^' + val1;
|
|
10843
|
+
// } else tmpStr += val1;
|
|
10844
|
+
// }
|
|
10845
|
+
// // });
|
|
10846
|
+
// if (tmpStr.indexOf('^^') > -1) {
|
|
10847
|
+
// var obj1 = extract_str(tmpStr, pos);
|
|
10848
|
+
// obj = obj.concat(obj1);
|
|
10849
|
+
// } else {
|
|
10850
|
+
// // push clean @var
|
|
10851
|
+
// var fieldId = undefined;
|
|
10852
|
+
// if (val) {
|
|
10853
|
+
// fieldId = val.substr(1, val.length);
|
|
10854
|
+
// if (val.indexOf('.') > -1) fieldId = val.substr(1, val.indexOf('.') - 1);
|
|
10855
|
+
// if (val.indexOf('[') > -1) fieldId = val.substr(1, val.indexOf('[') - 1);
|
|
10856
|
+
// //
|
|
10857
|
+
// // if (val.indexOf("]") > -1)
|
|
10858
|
+
// // fieldId = val.substr(1, val.indexOf("]") - 1);
|
|
10859
|
+
// }
|
|
10860
|
+
// obj.push({
|
|
10861
|
+
// value: val,
|
|
10862
|
+
// fieldId: fieldId,
|
|
10863
|
+
// pos: pos + posP,
|
|
10864
|
+
// });
|
|
10865
|
+
// }
|
|
10866
|
+
// } else {
|
|
10867
|
+
// obj.push({
|
|
10868
|
+
// value: val,
|
|
10869
|
+
// pos: pos + posP,
|
|
10870
|
+
// });
|
|
10871
|
+
// }
|
|
10872
|
+
// }
|
|
10873
|
+
// }
|
|
10874
|
+
// return obj;
|
|
10875
|
+
// }
|
|
10876
|
+
// };
|
|
10877
|
+
// var res = extract_str(strP);
|
|
10878
|
+
// return res;
|
|
10879
|
+
// };
|
|
10880
10880
|
|
|
10881
10881
|
func.expression.parse = function (input) {
|
|
10882
10882
|
if (typeof input !== 'string') return [];
|
|
@@ -10945,50 +10945,50 @@ func.expression.get_property = async function (valP) {
|
|
|
10945
10945
|
};
|
|
10946
10946
|
};
|
|
10947
10947
|
|
|
10948
|
-
func.expression.get_property_bad = async function (valP) {
|
|
10949
|
-
|
|
10948
|
+
// func.expression.get_property_bad = async function (valP) {
|
|
10949
|
+
// if (typeof valP !== 'string') return { property1: undefined, property2: undefined };
|
|
10950
10950
|
|
|
10951
|
-
|
|
10952
|
-
|
|
10953
|
-
|
|
10954
|
-
|
|
10955
|
-
|
|
10956
|
-
|
|
10957
|
-
|
|
10958
|
-
|
|
10959
|
-
|
|
10960
|
-
|
|
10961
|
-
|
|
10962
|
-
|
|
10963
|
-
|
|
10964
|
-
|
|
10965
|
-
|
|
10966
|
-
|
|
10967
|
-
|
|
10968
|
-
|
|
10969
|
-
|
|
10970
|
-
|
|
10971
|
-
|
|
10972
|
-
|
|
10973
|
-
|
|
10974
|
-
|
|
10951
|
+
// const secureEval = async (expr) => {
|
|
10952
|
+
// if (typeof IS_PROCESS_SERVER === 'undefined') {
|
|
10953
|
+
// try {
|
|
10954
|
+
// return eval(expr);
|
|
10955
|
+
// } catch (err) {
|
|
10956
|
+
// console.error(err);
|
|
10957
|
+
// return undefined;
|
|
10958
|
+
// }
|
|
10959
|
+
// }
|
|
10960
|
+
// try {
|
|
10961
|
+
// const vm = new VM.VM({
|
|
10962
|
+
// sandbox: {
|
|
10963
|
+
// func,
|
|
10964
|
+
// SESSION_ID,
|
|
10965
|
+
// SESSION_OBJ: { [SESSION_ID]: SESSION_OBJ[SESSION_ID] },
|
|
10966
|
+
// },
|
|
10967
|
+
// timeout: 1000,
|
|
10968
|
+
// allowAsync: false,
|
|
10969
|
+
// });
|
|
10970
|
+
// return await vm.run(expr);
|
|
10971
|
+
// } catch {
|
|
10972
|
+
// return undefined; // Simplified error handling
|
|
10973
|
+
// }
|
|
10974
|
+
// };
|
|
10975
10975
|
|
|
10976
|
-
|
|
10977
|
-
|
|
10978
|
-
|
|
10976
|
+
// let property1, property2;
|
|
10977
|
+
// const bracketStart = valP.indexOf('[');
|
|
10978
|
+
// const bracketEnd = valP.indexOf(']');
|
|
10979
10979
|
|
|
10980
|
-
|
|
10981
|
-
|
|
10982
|
-
|
|
10983
|
-
|
|
10980
|
+
// if (bracketStart > -1 && bracketEnd > bracketStart) {
|
|
10981
|
+
// const expr = valP.slice(bracketStart + 1, bracketEnd);
|
|
10982
|
+
// property1 = await secureEval(expr);
|
|
10983
|
+
// }
|
|
10984
10984
|
|
|
10985
|
-
|
|
10986
|
-
|
|
10987
|
-
|
|
10988
|
-
|
|
10985
|
+
// const dotIndex = valP.indexOf('.');
|
|
10986
|
+
// if (dotIndex > -1) {
|
|
10987
|
+
// property2 = valP.slice(dotIndex + 1);
|
|
10988
|
+
// }
|
|
10989
10989
|
|
|
10990
|
-
|
|
10991
|
-
};
|
|
10990
|
+
// return { property1, property2 };
|
|
10991
|
+
// };
|
|
10992
10992
|
|
|
10993
10993
|
func.expression.validate_constant = function (valP) {
|
|
10994
10994
|
var patt = /["']/;
|
|
@@ -11016,107 +11016,107 @@ func.expression.remove_quotes = function (valP) {
|
|
|
11016
11016
|
// func.expression.validate_constant(valP) && typeof valP === 'string' ? valP.slice(1, -1) : valP;
|
|
11017
11017
|
// };
|
|
11018
11018
|
|
|
11019
|
-
func.expression.secure_eval_org = async function (SESSION_ID, sourceP, val, job_id, dsSessionP, js_script_callback, evt) {
|
|
11020
|
-
|
|
11021
|
-
|
|
11022
|
-
|
|
11023
|
-
|
|
11024
|
-
|
|
11025
|
-
|
|
11026
|
-
|
|
11027
|
-
|
|
11028
|
-
|
|
11029
|
-
|
|
11030
|
-
const xu = api_utils;
|
|
11031
|
-
|
|
11032
|
-
if (typeof IS_PROCESS_SERVER === 'undefined' && typeof IS_DOCKER === 'undefined') {
|
|
11033
|
-
try {
|
|
11034
|
-
return eval(val);
|
|
11035
|
-
} catch (err) {
|
|
11036
|
-
try {
|
|
11037
|
-
return JSON5.parse(val);
|
|
11038
|
-
} catch (err) {
|
|
11039
|
-
// console.error(err);
|
|
11040
|
-
return val;
|
|
11041
|
-
}
|
|
11042
|
-
}
|
|
11043
|
-
}
|
|
11044
|
-
// server side execution
|
|
11045
|
-
if (sourceP === 'javascript') {
|
|
11046
|
-
process.on('uncaughtException', (err) => {
|
|
11047
|
-
console.error('Asynchronous error caught.', err);
|
|
11048
|
-
|
|
11049
|
-
func.events.delete_job(SESSION_ID, job_id);
|
|
11050
|
-
if (typeof IS_PROCESS_SERVER !== 'undefined' || typeof IS_DOCKER !== 'undefined') {
|
|
11051
|
-
if (SESSION_OBJ[SESSION_ID].crawler) return;
|
|
11052
|
-
return __.rpi.write_log(SESSION_OBJ[SESSION_ID].app_id, 'error', 'worker', 'vm error', err, null, val, 'func.expression.get.secure_eval');
|
|
11053
|
-
}
|
|
11054
|
-
});
|
|
11055
|
-
try {
|
|
11056
|
-
const dir = path.join(_conf.studio_drive_path, SESSION_OBJ[SESSION_ID].app_id, 'node_modules', '/');
|
|
11057
|
-
const script = new VM.VMScript(`try{${val}}catch(e){func.api.error(SESSION_ID, "nodejs error", e); console.error(e); func.events.delete_job(SESSION_ID, job_id);}`, { filename: dir, dirname: dir });
|
|
11058
|
-
let vm = new VM.NodeVM({
|
|
11059
|
-
require: {
|
|
11060
|
-
external: true,
|
|
11061
|
-
},
|
|
11062
|
-
sandbox: {
|
|
11063
|
-
func,
|
|
11064
|
-
xu,
|
|
11065
|
-
SESSION_ID,
|
|
11066
|
-
SESSION_OBJ: { [`${SESSION_ID}`]: SESSION_OBJ[SESSION_ID] },
|
|
11067
|
-
callback: js_script_callback,
|
|
11068
|
-
job_id,
|
|
11069
|
-
axios,
|
|
11070
|
-
got,
|
|
11071
|
-
FormData,
|
|
11072
|
-
},
|
|
11073
|
-
timeout: 60000,
|
|
11074
|
-
});
|
|
11075
|
-
return await vm.run(script, {
|
|
11076
|
-
filename: dir,
|
|
11077
|
-
dirname: dir,
|
|
11078
|
-
});
|
|
11079
|
-
} catch (err) {
|
|
11080
|
-
console.error('Failed to execute script.', err);
|
|
11019
|
+
// func.expression.secure_eval_org = async function (SESSION_ID, sourceP, val, job_id, dsSessionP, js_script_callback, evt) {
|
|
11020
|
+
// const api_utils = await func.common.get_module(SESSION_ID, 'xuda-api-library.mjs', {
|
|
11021
|
+
// func,
|
|
11022
|
+
// glb,
|
|
11023
|
+
// SESSION_OBJ,
|
|
11024
|
+
// SESSION_ID,
|
|
11025
|
+
// APP_OBJ,
|
|
11026
|
+
// dsSession: dsSessionP,
|
|
11027
|
+
// job_id,
|
|
11028
|
+
// });
|
|
11081
11029
|
|
|
11082
|
-
|
|
11083
|
-
|
|
11084
|
-
|
|
11085
|
-
|
|
11086
|
-
|
|
11087
|
-
|
|
11088
|
-
|
|
11089
|
-
|
|
11090
|
-
|
|
11091
|
-
|
|
11092
|
-
|
|
11093
|
-
|
|
11094
|
-
|
|
11095
|
-
|
|
11096
|
-
|
|
11097
|
-
|
|
11098
|
-
|
|
11099
|
-
|
|
11100
|
-
|
|
11101
|
-
|
|
11102
|
-
|
|
11103
|
-
|
|
11104
|
-
|
|
11105
|
-
|
|
11106
|
-
|
|
11107
|
-
|
|
11108
|
-
|
|
11109
|
-
|
|
11110
|
-
|
|
11111
|
-
|
|
11112
|
-
|
|
11113
|
-
|
|
11114
|
-
|
|
11115
|
-
|
|
11116
|
-
|
|
11117
|
-
|
|
11118
|
-
|
|
11119
|
-
|
|
11030
|
+
// const xu = api_utils;
|
|
11031
|
+
|
|
11032
|
+
// if (typeof IS_PROCESS_SERVER === 'undefined' && typeof IS_DOCKER === 'undefined') {
|
|
11033
|
+
// try {
|
|
11034
|
+
// return eval(val);
|
|
11035
|
+
// } catch (err) {
|
|
11036
|
+
// try {
|
|
11037
|
+
// return JSON5.parse(val);
|
|
11038
|
+
// } catch (err) {
|
|
11039
|
+
// // console.error(err);
|
|
11040
|
+
// return val;
|
|
11041
|
+
// }
|
|
11042
|
+
// }
|
|
11043
|
+
// }
|
|
11044
|
+
// // server side execution
|
|
11045
|
+
// if (sourceP === 'javascript') {
|
|
11046
|
+
// process.on('uncaughtException', (err) => {
|
|
11047
|
+
// console.error('Asynchronous error caught.', err);
|
|
11048
|
+
|
|
11049
|
+
// func.events.delete_job(SESSION_ID, job_id);
|
|
11050
|
+
// if (typeof IS_PROCESS_SERVER !== 'undefined' || typeof IS_DOCKER !== 'undefined') {
|
|
11051
|
+
// if (SESSION_OBJ[SESSION_ID].crawler) return;
|
|
11052
|
+
// return __.rpi.write_log(SESSION_OBJ[SESSION_ID].app_id, 'error', 'worker', 'vm error', err, null, val, 'func.expression.get.secure_eval');
|
|
11053
|
+
// }
|
|
11054
|
+
// });
|
|
11055
|
+
// try {
|
|
11056
|
+
// const dir = path.join(_conf.studio_drive_path, SESSION_OBJ[SESSION_ID].app_id, 'node_modules', '/');
|
|
11057
|
+
// const script = new VM.VMScript(`try{${val}}catch(e){func.api.error(SESSION_ID, "nodejs error", e); console.error(e); func.events.delete_job(SESSION_ID, job_id);}`, { filename: dir, dirname: dir });
|
|
11058
|
+
// let vm = new VM.NodeVM({
|
|
11059
|
+
// require: {
|
|
11060
|
+
// external: true,
|
|
11061
|
+
// },
|
|
11062
|
+
// sandbox: {
|
|
11063
|
+
// func,
|
|
11064
|
+
// xu,
|
|
11065
|
+
// SESSION_ID,
|
|
11066
|
+
// SESSION_OBJ: { [`${SESSION_ID}`]: SESSION_OBJ[SESSION_ID] },
|
|
11067
|
+
// callback: js_script_callback,
|
|
11068
|
+
// job_id,
|
|
11069
|
+
// axios,
|
|
11070
|
+
// got,
|
|
11071
|
+
// FormData,
|
|
11072
|
+
// },
|
|
11073
|
+
// timeout: 60000,
|
|
11074
|
+
// });
|
|
11075
|
+
// return await vm.run(script, {
|
|
11076
|
+
// filename: dir,
|
|
11077
|
+
// dirname: dir,
|
|
11078
|
+
// });
|
|
11079
|
+
// } catch (err) {
|
|
11080
|
+
// console.error('Failed to execute script.', err);
|
|
11081
|
+
|
|
11082
|
+
// if (typeof IS_PROCESS_SERVER !== 'undefined') {
|
|
11083
|
+
// func.events.delete_job(SESSION_ID, jobNo);
|
|
11084
|
+
// return __.db.add_error_log(SESSION_OBJ[SESSION_ID].app_id, 'api', err);
|
|
11085
|
+
// }
|
|
11086
|
+
// }
|
|
11087
|
+
// } else {
|
|
11088
|
+
// try {
|
|
11089
|
+
// try {
|
|
11090
|
+
// let vm = new VM.VM({
|
|
11091
|
+
// sandbox: {
|
|
11092
|
+
// xu,
|
|
11093
|
+
// func,
|
|
11094
|
+
// SESSION_ID,
|
|
11095
|
+
// SESSION_OBJ: { [`${SESSION_ID}`]: SESSION_OBJ[SESSION_ID] },
|
|
11096
|
+
// callback: js_script_callback,
|
|
11097
|
+
// job_id,
|
|
11098
|
+
// },
|
|
11099
|
+
// timeout: 1000,
|
|
11100
|
+
// allowAsync: false,
|
|
11101
|
+
// });
|
|
11102
|
+
// let ret = val;
|
|
11103
|
+
// if (typeof val === 'string') {
|
|
11104
|
+
// ret = await vm.run(val);
|
|
11105
|
+
// }
|
|
11106
|
+
// return ret;
|
|
11107
|
+
// } catch (err) {
|
|
11108
|
+
// throw '';
|
|
11109
|
+
// }
|
|
11110
|
+
// } catch (err) {
|
|
11111
|
+
// try {
|
|
11112
|
+
// return JSON5.parse(val);
|
|
11113
|
+
// } catch (err) {
|
|
11114
|
+
// // console.error(err);
|
|
11115
|
+
// return val;
|
|
11116
|
+
// }
|
|
11117
|
+
// }
|
|
11118
|
+
// }
|
|
11119
|
+
// };
|
|
11120
11120
|
|
|
11121
11121
|
func.expression.secure_eval = async function (SESSION_ID, sourceP, val, job_id, dsSessionP, js_script_callback, evt) {
|
|
11122
11122
|
if (typeof val !== 'string') return val;
|