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