@xuda.io/runtime-bundle 1.0.500 → 1.0.502

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.
@@ -10474,7 +10474,7 @@ func.events.invoke = async function (event_id) {
10474
10474
  };
10475
10475
  func.expression = {};
10476
10476
 
10477
- func.expression.get_org = async function (SESSION_ID, valP, dsSessionP, sourceP, rowIdP, sourceActionP, secondPassP, calling_fieldIdP, fieldsP, debug_infoP, iterate_info, js_script_callback, jobNo, api_output_type) {
10477
+ func.expression.get = async function (SESSION_ID, valP, dsSessionP, sourceP, rowIdP, sourceActionP, secondPassP, calling_fieldIdP, fieldsP, debug_infoP, iterate_info, js_script_callback, jobNo, api_output_type) {
10478
10478
  class xu_class {
10479
10479
  async get() {
10480
10480
  var ret;
@@ -10828,160 +10828,6 @@ func.expression.get_org = async function (SESSION_ID, valP, dsSessionP, sourceP,
10828
10828
  return new_class.get();
10829
10829
  };
10830
10830
 
10831
- func.expression.get = async function (SESSION_ID, valP, dsSessionP, sourceP, rowIdP, sourceActionP, secondPassP, calling_fieldIdP, fieldsP = {}, debug_infoP, iterate_info, js_script_callback, jobNo, api_output_type) {
10832
- class xu_class {
10833
- async get() {
10834
- let ret, error, warning, var_error_found;
10835
- const fields = { ...fieldsP };
10836
- const evalJson = (text) => eval(`(${text})`);
10837
-
10838
- // Initial value processing
10839
- ret = valP === null || typeof valP === 'undefined' ? '' : typeof valP === 'boolean' ? (valP ? 'Y' : 'N') : valP.toString();
10840
- ret = ret.replace(/\&/g, '&').replace(func.utils.replace_studio_drive_url(SESSION_ID, ret));
10841
-
10842
- const endResults = () => {
10843
- if (['update', 'javascript'].includes(sourceP) && typeof ret === 'string') {
10844
- for (const [key, val] of Object.entries(fields)) {
10845
- if (typeof val === 'string') ret = ret.replace(`"${val}"`, val.replace(/"/g, ''));
10846
- }
10847
- }
10848
- if (error && SESSION_OBJ[SESSION_ID]?.DS_GLB[dsSessionP]) {
10849
- func.utils.debug.log(SESSION_ID, SESSION_OBJ[SESSION_ID].DS_GLB[dsSessionP].nodeId, {
10850
- module: 'expression',
10851
- action: sourceP,
10852
- source: calling_fieldIdP,
10853
- prop: ret,
10854
- details: ret,
10855
- result: ret,
10856
- error,
10857
- warning,
10858
- fields: null,
10859
- type: 'exp',
10860
- prog_id: SESSION_OBJ[SESSION_ID].DS_GLB[dsSessionP].prog_id,
10861
- debug_info: debug_infoP,
10862
- });
10863
- }
10864
- return { result: ret, fields, error, warning, req: valP, var_error_found };
10865
- };
10866
-
10867
- const handleNonVariable = async () => {
10868
- try {
10869
- if (sourceP !== 'arguments') {
10870
- if (ret.startsWith('_DATE_')) ret = ret.slice(6);
10871
- else if (/^\d{4}-\d{2}-\d{2}$/.test(ret) || ret === 'self') return endResults();
10872
- else ret = await func.expression.secure_eval(SESSION_ID, sourceP, ret, jobNo, dsSessionP, js_script_callback);
10873
- } else {
10874
- ret = ret.replace(/_NULL/gi, '');
10875
- }
10876
- return endResults();
10877
- } catch (err) {
10878
- error = err.message;
10879
- return endResults();
10880
- }
10881
- };
10882
-
10883
- if (!func.expression.validate_variables(valP)) return await handleNonVariable();
10884
- if (glb.emailRegex.test(await func.expression.secure_eval(SESSION_ID, sourceP, valP, jobNo, dsSessionP, js_script_callback))) {
10885
- return await handleNonVariable();
10886
- }
10887
-
10888
- const var_Arr = await Promise.all(
10889
- (func.expression.parse(ret) || []).map(async (val, key) => {
10890
- const result = { value: val.value, fieldId: val.fieldId };
10891
- if (!val.fieldId) return result;
10892
-
10893
- if (val.fieldId.startsWith('_THIS') && calling_fieldIdP) {
10894
- result.fieldId = val.fieldId.length === 5 ? calling_fieldIdP : calling_fieldIdP + val.fieldId.slice(5);
10895
- }
10896
-
10897
- const { ret: fetchedValue, fieldIdP } = await func.datasource.get_value(SESSION_ID, result.fieldId, dsSessionP, rowIdP);
10898
- result.value = fetchedValue?.value ?? (sourceP === 'exp' ? fetchedValue?.value : '""');
10899
- result.type = fetchedValue?.type;
10900
-
10901
- if (iterate_info) {
10902
- if (iterate_info.iterator_key === fieldIdP) result.value = iterate_info._key;
10903
- if (iterate_info.iterator_val === fieldIdP) result.value = iterate_info._val;
10904
- }
10905
-
10906
- if (val.value.includes('[') || val.value.includes('.')) {
10907
- const { property1, property2 } = await func.expression.get_property(val.value);
10908
- const data = fetchedValue?.type === 'object' ? fetchedValue.value : fetchedValue?.prop;
10909
-
10910
- if (key > 0 && val.value.includes(']') && !val.value.includes('[') && var_Arr[key - 1]?.value) {
10911
- const prevData = var_Arr[key - 1].value;
10912
- result.value = prevData[fieldIdP] ?? '';
10913
- if (val.value.includes('.') && prevData[fieldIdP]) result.value = prevData[fieldIdP][property2] ?? '';
10914
- } else if (data) {
10915
- if (property1) result.value = data[property1] ?? '';
10916
- if (property2) result.value = (property1 ? data[property1]?.[property2] : data[property2]) ?? '';
10917
- }
10918
- }
10919
- fields[fieldIdP] = result.value;
10920
- return result;
10921
- }),
10922
- );
10923
-
10924
- try {
10925
- const res = var_Arr.map((val, key) => {
10926
- if (sourceP === 'UI Property EXP' || sourceP === 'UI Attr EXP') {
10927
- const { changed, value } = func.utils.get_drive_url(SESSION_ID, val.value, sourceP === 'UI Property EXP' || var_Arr.length > 1);
10928
- if (changed) return value;
10929
- }
10930
-
10931
- let value = val.value;
10932
- if (var_Arr.length > 1) {
10933
- if (!['DbQuery', 'alert', 'exp', 'api_rendered_output'].includes(sourceP) && ['string', 'date'].includes(val.type)) {
10934
- value = `\`${value}\``;
10935
- } else if (sourceP === 'api_rendered_output' && api_output_type === 'json' && ['string', 'date'].includes(val.type)) {
10936
- value = `"${value}"`;
10937
- }
10938
- }
10939
-
10940
- if (val.fieldId && typeof value === 'string') {
10941
- if (['query', 'condition', 'range', 'sort', 'locate'].includes(sourceP)) value = value.replace(/↵|\r\n|\n|\r/g, '');
10942
- if (['init', 'update', 'virtual'].includes(sourceP)) value = value.replace(/↵|\r\n|\n|\r/g, '\\n');
10943
- if (typeof IS_PROCESS_SERVER !== 'undefined') value = value.replace(/↵|\r\n|\n|\r/g, '<br>');
10944
- fields[val.fieldId] = value;
10945
- }
10946
-
10947
- if (typeof value === 'object' && var_Arr.length > 1) {
10948
- value = Array.isArray(value) || var_Arr[key + 1]?.value?.includes('.') ? JSON.stringify(value) : `(${JSON.stringify(value)})`;
10949
- }
10950
-
10951
- if (val.type !== 'exp' && sourceP !== 'exp' && typeof value === 'string' && value.startsWith('@')) {
10952
- warning = `Error encoding ${value}`;
10953
- var_error_found = true;
10954
- return '0';
10955
- }
10956
- return value;
10957
- });
10958
-
10959
- ret = res.length === 1 ? res[0] : res.join('');
10960
- if (var_Arr.some((v) => v.type === 'exp') && sourceP !== 'exp' && !secondPassP) {
10961
- const exp = await func.expression.get(SESSION_ID, ret, dsSessionP, sourceP, rowIdP, sourceActionP, true, calling_fieldIdP, fields, debug_infoP);
10962
- ret = exp.res?.[0] ?? exp.result;
10963
- Object.assign(fields, exp.fields);
10964
- } else if (!secondPassP && !['arguments', 'api_rendered_output', 'DbQuery'].includes(sourceP)) {
10965
- ret = await func.expression.secure_eval(SESSION_ID, sourceP, ret, jobNo, dsSessionP, js_script_callback);
10966
- } else if (sourceP === 'DbQuery') {
10967
- ret = JSON.stringify(evalJson(ret));
10968
- }
10969
-
10970
- if (typeof ret === 'string' && ret.startsWith('@')) {
10971
- error = 'Error encoding @ var';
10972
- var_error_found = true;
10973
- }
10974
- } catch (err) {
10975
- error = err.message;
10976
- }
10977
-
10978
- return endResults();
10979
- }
10980
- }
10981
-
10982
- return new xu_class().get();
10983
- };
10984
-
10985
10831
  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) {
10986
10832
  const evalJson = (text) => eval(`(${text})`);
10987
10833
  const replaceQuotes = (str) => {
@@ -12303,7 +12149,7 @@ func.UI.screen.refresh_screen = async function (SESSION_ID, fields_changed_arr,
12303
12149
  null,
12304
12150
  null,
12305
12151
  wrapper_data.xuData.key, // the wrapper key
12306
- null,
12152
+ panel_val._ds.dsSession, // the refreshed_ds
12307
12153
  wrapper_data.xuData.parent_node, // the wrapper parent node
12308
12154
  null,
12309
12155
  wrapper_data.xuData.$root_container, // the wrapper root container
@@ -13915,7 +13761,7 @@ func.UI.screen.screen_loading_done = async function (SESSION_ID, paramsP, $div,
13915
13761
  return $div;
13916
13762
  };
13917
13763
 
13918
- func.UI.screen.render_ui_tree = async function (SESSION_ID, $container, nodeP, parent_infoP, paramsP, jobNoP, is_skeleton, keyP, is_mainP, parent_nodeP, check_existP, $root_container) {
13764
+ func.UI.screen.render_ui_tree = async function (SESSION_ID, $container, nodeP, parent_infoP, paramsP, jobNoP, is_skeleton, keyP, refreshed_ds, parent_nodeP, check_existP, $root_container) {
13919
13765
  if (!is_skeleton) {
13920
13766
  var _session = SESSION_OBJ[SESSION_ID];
13921
13767
  var _ds = _session.DS_GLB[paramsP.dsSessionP];
@@ -9881,7 +9881,7 @@ func.UI.screen.refresh_screen = async function (SESSION_ID, fields_changed_arr,
9881
9881
  null,
9882
9882
  null,
9883
9883
  wrapper_data.xuData.key, // the wrapper key
9884
- null,
9884
+ panel_val._ds.dsSession, // the refreshed_ds
9885
9885
  wrapper_data.xuData.parent_node, // the wrapper parent node
9886
9886
  null,
9887
9887
  wrapper_data.xuData.$root_container, // the wrapper root container
@@ -11493,7 +11493,7 @@ func.UI.screen.screen_loading_done = async function (SESSION_ID, paramsP, $div,
11493
11493
  return $div;
11494
11494
  };
11495
11495
 
11496
- func.UI.screen.render_ui_tree = async function (SESSION_ID, $container, nodeP, parent_infoP, paramsP, jobNoP, is_skeleton, keyP, is_mainP, parent_nodeP, check_existP, $root_container) {
11496
+ func.UI.screen.render_ui_tree = async function (SESSION_ID, $container, nodeP, parent_infoP, paramsP, jobNoP, is_skeleton, keyP, refreshed_ds, parent_nodeP, check_existP, $root_container) {
11497
11497
  if (!is_skeleton) {
11498
11498
  var _session = SESSION_OBJ[SESSION_ID];
11499
11499
  var _ds = _session.DS_GLB[paramsP.dsSessionP];
@@ -14282,7 +14282,7 @@ func.events.invoke = async function (event_id) {
14282
14282
  };
14283
14283
  func.expression = {};
14284
14284
 
14285
- func.expression.get_org = async function (SESSION_ID, valP, dsSessionP, sourceP, rowIdP, sourceActionP, secondPassP, calling_fieldIdP, fieldsP, debug_infoP, iterate_info, js_script_callback, jobNo, api_output_type) {
14285
+ func.expression.get = async function (SESSION_ID, valP, dsSessionP, sourceP, rowIdP, sourceActionP, secondPassP, calling_fieldIdP, fieldsP, debug_infoP, iterate_info, js_script_callback, jobNo, api_output_type) {
14286
14286
  class xu_class {
14287
14287
  async get() {
14288
14288
  var ret;
@@ -14636,160 +14636,6 @@ func.expression.get_org = async function (SESSION_ID, valP, dsSessionP, sourceP,
14636
14636
  return new_class.get();
14637
14637
  };
14638
14638
 
14639
- func.expression.get = async function (SESSION_ID, valP, dsSessionP, sourceP, rowIdP, sourceActionP, secondPassP, calling_fieldIdP, fieldsP = {}, debug_infoP, iterate_info, js_script_callback, jobNo, api_output_type) {
14640
- class xu_class {
14641
- async get() {
14642
- let ret, error, warning, var_error_found;
14643
- const fields = { ...fieldsP };
14644
- const evalJson = (text) => eval(`(${text})`);
14645
-
14646
- // Initial value processing
14647
- ret = valP === null || typeof valP === 'undefined' ? '' : typeof valP === 'boolean' ? (valP ? 'Y' : 'N') : valP.toString();
14648
- ret = ret.replace(/\&/g, '&').replace(func.utils.replace_studio_drive_url(SESSION_ID, ret));
14649
-
14650
- const endResults = () => {
14651
- if (['update', 'javascript'].includes(sourceP) && typeof ret === 'string') {
14652
- for (const [key, val] of Object.entries(fields)) {
14653
- if (typeof val === 'string') ret = ret.replace(`"${val}"`, val.replace(/"/g, ''));
14654
- }
14655
- }
14656
- if (error && SESSION_OBJ[SESSION_ID]?.DS_GLB[dsSessionP]) {
14657
- func.utils.debug.log(SESSION_ID, SESSION_OBJ[SESSION_ID].DS_GLB[dsSessionP].nodeId, {
14658
- module: 'expression',
14659
- action: sourceP,
14660
- source: calling_fieldIdP,
14661
- prop: ret,
14662
- details: ret,
14663
- result: ret,
14664
- error,
14665
- warning,
14666
- fields: null,
14667
- type: 'exp',
14668
- prog_id: SESSION_OBJ[SESSION_ID].DS_GLB[dsSessionP].prog_id,
14669
- debug_info: debug_infoP,
14670
- });
14671
- }
14672
- return { result: ret, fields, error, warning, req: valP, var_error_found };
14673
- };
14674
-
14675
- const handleNonVariable = async () => {
14676
- try {
14677
- if (sourceP !== 'arguments') {
14678
- if (ret.startsWith('_DATE_')) ret = ret.slice(6);
14679
- else if (/^\d{4}-\d{2}-\d{2}$/.test(ret) || ret === 'self') return endResults();
14680
- else ret = await func.expression.secure_eval(SESSION_ID, sourceP, ret, jobNo, dsSessionP, js_script_callback);
14681
- } else {
14682
- ret = ret.replace(/_NULL/gi, '');
14683
- }
14684
- return endResults();
14685
- } catch (err) {
14686
- error = err.message;
14687
- return endResults();
14688
- }
14689
- };
14690
-
14691
- if (!func.expression.validate_variables(valP)) return await handleNonVariable();
14692
- if (glb.emailRegex.test(await func.expression.secure_eval(SESSION_ID, sourceP, valP, jobNo, dsSessionP, js_script_callback))) {
14693
- return await handleNonVariable();
14694
- }
14695
-
14696
- const var_Arr = await Promise.all(
14697
- (func.expression.parse(ret) || []).map(async (val, key) => {
14698
- const result = { value: val.value, fieldId: val.fieldId };
14699
- if (!val.fieldId) return result;
14700
-
14701
- if (val.fieldId.startsWith('_THIS') && calling_fieldIdP) {
14702
- result.fieldId = val.fieldId.length === 5 ? calling_fieldIdP : calling_fieldIdP + val.fieldId.slice(5);
14703
- }
14704
-
14705
- const { ret: fetchedValue, fieldIdP } = await func.datasource.get_value(SESSION_ID, result.fieldId, dsSessionP, rowIdP);
14706
- result.value = fetchedValue?.value ?? (sourceP === 'exp' ? fetchedValue?.value : '""');
14707
- result.type = fetchedValue?.type;
14708
-
14709
- if (iterate_info) {
14710
- if (iterate_info.iterator_key === fieldIdP) result.value = iterate_info._key;
14711
- if (iterate_info.iterator_val === fieldIdP) result.value = iterate_info._val;
14712
- }
14713
-
14714
- if (val.value.includes('[') || val.value.includes('.')) {
14715
- const { property1, property2 } = await func.expression.get_property(val.value);
14716
- const data = fetchedValue?.type === 'object' ? fetchedValue.value : fetchedValue?.prop;
14717
-
14718
- if (key > 0 && val.value.includes(']') && !val.value.includes('[') && var_Arr[key - 1]?.value) {
14719
- const prevData = var_Arr[key - 1].value;
14720
- result.value = prevData[fieldIdP] ?? '';
14721
- if (val.value.includes('.') && prevData[fieldIdP]) result.value = prevData[fieldIdP][property2] ?? '';
14722
- } else if (data) {
14723
- if (property1) result.value = data[property1] ?? '';
14724
- if (property2) result.value = (property1 ? data[property1]?.[property2] : data[property2]) ?? '';
14725
- }
14726
- }
14727
- fields[fieldIdP] = result.value;
14728
- return result;
14729
- }),
14730
- );
14731
-
14732
- try {
14733
- const res = var_Arr.map((val, key) => {
14734
- if (sourceP === 'UI Property EXP' || sourceP === 'UI Attr EXP') {
14735
- const { changed, value } = func.utils.get_drive_url(SESSION_ID, val.value, sourceP === 'UI Property EXP' || var_Arr.length > 1);
14736
- if (changed) return value;
14737
- }
14738
-
14739
- let value = val.value;
14740
- if (var_Arr.length > 1) {
14741
- if (!['DbQuery', 'alert', 'exp', 'api_rendered_output'].includes(sourceP) && ['string', 'date'].includes(val.type)) {
14742
- value = `\`${value}\``;
14743
- } else if (sourceP === 'api_rendered_output' && api_output_type === 'json' && ['string', 'date'].includes(val.type)) {
14744
- value = `"${value}"`;
14745
- }
14746
- }
14747
-
14748
- if (val.fieldId && typeof value === 'string') {
14749
- if (['query', 'condition', 'range', 'sort', 'locate'].includes(sourceP)) value = value.replace(/↵|\r\n|\n|\r/g, '');
14750
- if (['init', 'update', 'virtual'].includes(sourceP)) value = value.replace(/↵|\r\n|\n|\r/g, '\\n');
14751
- if (typeof IS_PROCESS_SERVER !== 'undefined') value = value.replace(/↵|\r\n|\n|\r/g, '<br>');
14752
- fields[val.fieldId] = value;
14753
- }
14754
-
14755
- if (typeof value === 'object' && var_Arr.length > 1) {
14756
- value = Array.isArray(value) || var_Arr[key + 1]?.value?.includes('.') ? JSON.stringify(value) : `(${JSON.stringify(value)})`;
14757
- }
14758
-
14759
- if (val.type !== 'exp' && sourceP !== 'exp' && typeof value === 'string' && value.startsWith('@')) {
14760
- warning = `Error encoding ${value}`;
14761
- var_error_found = true;
14762
- return '0';
14763
- }
14764
- return value;
14765
- });
14766
-
14767
- ret = res.length === 1 ? res[0] : res.join('');
14768
- if (var_Arr.some((v) => v.type === 'exp') && sourceP !== 'exp' && !secondPassP) {
14769
- const exp = await func.expression.get(SESSION_ID, ret, dsSessionP, sourceP, rowIdP, sourceActionP, true, calling_fieldIdP, fields, debug_infoP);
14770
- ret = exp.res?.[0] ?? exp.result;
14771
- Object.assign(fields, exp.fields);
14772
- } else if (!secondPassP && !['arguments', 'api_rendered_output', 'DbQuery'].includes(sourceP)) {
14773
- ret = await func.expression.secure_eval(SESSION_ID, sourceP, ret, jobNo, dsSessionP, js_script_callback);
14774
- } else if (sourceP === 'DbQuery') {
14775
- ret = JSON.stringify(evalJson(ret));
14776
- }
14777
-
14778
- if (typeof ret === 'string' && ret.startsWith('@')) {
14779
- error = 'Error encoding @ var';
14780
- var_error_found = true;
14781
- }
14782
- } catch (err) {
14783
- error = err.message;
14784
- }
14785
-
14786
- return endResults();
14787
- }
14788
- }
14789
-
14790
- return new xu_class().get();
14791
- };
14792
-
14793
14639
  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) {
14794
14640
  const evalJson = (text) => eval(`(${text})`);
14795
14641
  const replaceQuotes = (str) => {