@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.
@@ -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) {
@@ -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
- 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
- };
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
- let ret, error, warning, var_error_found;
10625
- const fields = { ...fieldsP };
10624
+ // let ret, error, warning, var_error_found;
10625
+ // const fields = { ...fieldsP };
10626
10626
 
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();
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
- ret = ret.replace(/\&/g, '&');
10633
- 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);
10634
10634
 
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
- };
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
- // 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
- };
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
- // 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
- }
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
- // 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 };
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
- if (!val.fieldId) return result;
10688
+ // if (!val.fieldId) return result;
10689
10689
 
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
- }
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
- // 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;
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
- // 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
- }
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
- // 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;
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
- 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
- }
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
- fields[fieldIdP] = result.value;
10724
- return result;
10725
- }),
10726
- );
10723
+ // fields[fieldIdP] = result.value;
10724
+ // return result;
10725
+ // }),
10726
+ // );
10727
10727
 
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
- }
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
- 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
- }
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
- 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
- }
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
- 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
- });
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
- 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
- }
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
- 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
- }
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
- return endResults();
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
- 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
- };
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
- 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 };
10950
10950
 
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
- };
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
- let property1, property2;
10977
- const bracketStart = valP.indexOf('[');
10978
- const bracketEnd = valP.indexOf(']');
10976
+ // let property1, property2;
10977
+ // const bracketStart = valP.indexOf('[');
10978
+ // const bracketEnd = valP.indexOf(']');
10979
10979
 
10980
- if (bracketStart > -1 && bracketEnd > bracketStart) {
10981
- const expr = valP.slice(bracketStart + 1, bracketEnd);
10982
- property1 = await secureEval(expr);
10983
- }
10980
+ // if (bracketStart > -1 && bracketEnd > bracketStart) {
10981
+ // const expr = valP.slice(bracketStart + 1, bracketEnd);
10982
+ // property1 = await secureEval(expr);
10983
+ // }
10984
10984
 
10985
- const dotIndex = valP.indexOf('.');
10986
- if (dotIndex > -1) {
10987
- property2 = valP.slice(dotIndex + 1);
10988
- }
10985
+ // const dotIndex = valP.indexOf('.');
10986
+ // if (dotIndex > -1) {
10987
+ // property2 = valP.slice(dotIndex + 1);
10988
+ // }
10989
10989
 
10990
- return { property1, property2 };
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
- 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
- });
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
- 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
- };
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;