@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.
@@ -24501,19 +24501,19 @@ func.api.call_javascript = async function (prog_id, params, evaluate) {
24501
24501
  return await api_utils.call_javascript(prog_id, params, evaluate);
24502
24502
  };
24503
24503
 
24504
- func.api.call_javascript = async function (prog_id, params, evaluate) {
24505
- const SESSION_ID = Object.keys(SESSION_OBJ)[0];
24506
- const api_utils = await func.common.get_module(SESSION_ID, 'xuda-api-library.mjs', {
24507
- func,
24508
- glb,
24509
- SESSION_OBJ,
24510
- SESSION_ID,
24511
- APP_OBJ,
24512
- dsSession: func.utils.get_last_datasource_no(SESSION_ID),
24513
- });
24504
+ // func.api.call_javascript = async function (prog_id, params, evaluate) {
24505
+ // const SESSION_ID = Object.keys(SESSION_OBJ)[0];
24506
+ // const api_utils = await func.common.get_module(SESSION_ID, 'xuda-api-library.mjs', {
24507
+ // func,
24508
+ // glb,
24509
+ // SESSION_OBJ,
24510
+ // SESSION_ID,
24511
+ // APP_OBJ,
24512
+ // dsSession: func.utils.get_last_datasource_no(SESSION_ID),
24513
+ // });
24514
24514
 
24515
- return await api_utils.call_javascript(prog_id, params, evaluate);
24516
- };
24515
+ // return await api_utils.call_javascript(prog_id, params, evaluate);
24516
+ // };
24517
24517
 
24518
24518
  glb.rpi_request_queue_num = 0;
24519
24519
  func.common.perform_rpi_request = async function (SESSION_ID, serviceP, opt = {}, data) {
@@ -27848,7 +27848,6 @@ func.UI.worker.find_job_index = function (SESSION_ID, jobNoP) {
27848
27848
  };
27849
27849
 
27850
27850
  func.UI.ds_garbage_collector = function (SESSION_ID = Object.keys(SESSION_OBJ)[0], re_check) {
27851
- return;
27852
27851
  let _session = SESSION_OBJ[SESSION_ID];
27853
27852
 
27854
27853
  const _data_system = _session?.DS_GLB?.[0]?.data_system;
@@ -27902,7 +27901,6 @@ func.UI.ds_garbage_collector = function (SESSION_ID = Object.keys(SESSION_OBJ)[0
27902
27901
  }
27903
27902
  };
27904
27903
  func.UI.refs_garbage_collector = function (SESSION_ID = Object.keys(SESSION_OBJ)[0]) {
27905
- return;
27906
27904
  if (!_.isEmpty(SCREEN_BLOCKER_OBJ)) {
27907
27905
  // let dom to finish build
27908
27906
  return;
@@ -35377,271 +35375,271 @@ func.expression.get = async function (SESSION_ID, valP, dsSessionP, sourceP, row
35377
35375
  return new_class.get();
35378
35376
  };
35379
35377
 
35380
- 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) {
35381
- const evalJson = (text) => eval(`(${text})`);
35382
- const replaceQuotes = (str) => {
35383
- for (const [key, val] of Object.entries(fields)) {
35384
- if (typeof val === 'string') str = str.replace(`"${val}"`, val.replace(/"/g, ''));
35385
- }
35386
- return str;
35387
- };
35378
+ // 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) {
35379
+ // const evalJson = (text) => eval(`(${text})`);
35380
+ // const replaceQuotes = (str) => {
35381
+ // for (const [key, val] of Object.entries(fields)) {
35382
+ // if (typeof val === 'string') str = str.replace(`"${val}"`, val.replace(/"/g, ''));
35383
+ // }
35384
+ // return str;
35385
+ // };
35388
35386
 
35389
- let ret, error, warning, var_error_found;
35390
- const fields = { ...fieldsP };
35387
+ // let ret, error, warning, var_error_found;
35388
+ // const fields = { ...fieldsP };
35391
35389
 
35392
- // Initial value processing
35393
- if (valP === null || typeof valP === 'undefined') ret = '';
35394
- else if (typeof valP === 'boolean') ret = valP ? 'Y' : 'N';
35395
- else ret = valP.toString();
35390
+ // // Initial value processing
35391
+ // if (valP === null || typeof valP === 'undefined') ret = '';
35392
+ // else if (typeof valP === 'boolean') ret = valP ? 'Y' : 'N';
35393
+ // else ret = valP.toString();
35396
35394
 
35397
- ret = ret.replace(/\&/g, '&');
35398
- ret = func.utils.replace_studio_drive_url(SESSION_ID, ret);
35395
+ // ret = ret.replace(/\&/g, '&');
35396
+ // ret = func.utils.replace_studio_drive_url(SESSION_ID, ret);
35399
35397
 
35400
- // End results helper
35401
- const endResults = () => {
35402
- if (['update', 'javascript'].includes(sourceP) && typeof ret === 'string') {
35403
- ret = replaceQuotes(ret);
35404
- }
35405
- if ((error || warning) && SESSION_OBJ[SESSION_ID]?.DS_GLB[dsSessionP]) {
35406
- func.utils.debug.log(SESSION_ID, SESSION_OBJ[SESSION_ID].DS_GLB[dsSessionP].nodeId, {
35407
- module: 'expression',
35408
- action: sourceP,
35409
- source: calling_fieldIdP,
35410
- prop: ret,
35411
- details: ret,
35412
- result: ret,
35413
- error,
35414
- warning,
35415
- fields: null,
35416
- type: 'exp',
35417
- prog_id: SESSION_OBJ[SESSION_ID].DS_GLB[dsSessionP].prog_id,
35418
- debug_info: debug_infoP,
35419
- });
35420
- }
35421
- return { result: ret, fields, error, warning, req: valP, var_error_found };
35422
- };
35398
+ // // End results helper
35399
+ // const endResults = () => {
35400
+ // if (['update', 'javascript'].includes(sourceP) && typeof ret === 'string') {
35401
+ // ret = replaceQuotes(ret);
35402
+ // }
35403
+ // if ((error || warning) && SESSION_OBJ[SESSION_ID]?.DS_GLB[dsSessionP]) {
35404
+ // func.utils.debug.log(SESSION_ID, SESSION_OBJ[SESSION_ID].DS_GLB[dsSessionP].nodeId, {
35405
+ // module: 'expression',
35406
+ // action: sourceP,
35407
+ // source: calling_fieldIdP,
35408
+ // prop: ret,
35409
+ // details: ret,
35410
+ // result: ret,
35411
+ // error,
35412
+ // warning,
35413
+ // fields: null,
35414
+ // type: 'exp',
35415
+ // prog_id: SESSION_OBJ[SESSION_ID].DS_GLB[dsSessionP].prog_id,
35416
+ // debug_info: debug_infoP,
35417
+ // });
35418
+ // }
35419
+ // return { result: ret, fields, error, warning, req: valP, var_error_found };
35420
+ // };
35423
35421
 
35424
- // Handle non-variable cases
35425
- const handleNonVariable = async () => {
35426
- try {
35427
- if (sourceP !== 'arguments') {
35428
- if (ret.startsWith('_DATE_')) ret = ret.slice(6);
35429
- else if (/^\d{4}-\d{2}-\d{2}$/.test(ret) || ret === 'self') return endResults();
35430
- else ret = await func.expression.secure_eval(SESSION_ID, sourceP, ret, jobNo, dsSessionP, js_script_callback);
35431
- } else {
35432
- ret = ret.replace(/_NULL/gi, '');
35433
- }
35434
- return endResults();
35435
- } catch (err) {
35436
- error = err.message;
35437
- return endResults();
35438
- }
35439
- };
35422
+ // // Handle non-variable cases
35423
+ // const handleNonVariable = async () => {
35424
+ // try {
35425
+ // if (sourceP !== 'arguments') {
35426
+ // if (ret.startsWith('_DATE_')) ret = ret.slice(6);
35427
+ // else if (/^\d{4}-\d{2}-\d{2}$/.test(ret) || ret === 'self') return endResults();
35428
+ // else ret = await func.expression.secure_eval(SESSION_ID, sourceP, ret, jobNo, dsSessionP, js_script_callback);
35429
+ // } else {
35430
+ // ret = ret.replace(/_NULL/gi, '');
35431
+ // }
35432
+ // return endResults();
35433
+ // } catch (err) {
35434
+ // error = err.message;
35435
+ // return endResults();
35436
+ // }
35437
+ // };
35440
35438
 
35441
- // Early return for simple cases
35442
- if (!func.expression.validate_variables(valP)) return await handleNonVariable();
35443
- if (glb.emailRegex.test(await func.expression.secure_eval(SESSION_ID, sourceP, valP, jobNo, dsSessionP, js_script_callback))) {
35444
- return await handleNonVariable();
35445
- }
35439
+ // // Early return for simple cases
35440
+ // if (!func.expression.validate_variables(valP)) return await handleNonVariable();
35441
+ // if (glb.emailRegex.test(await func.expression.secure_eval(SESSION_ID, sourceP, valP, jobNo, dsSessionP, js_script_callback))) {
35442
+ // return await handleNonVariable();
35443
+ // }
35446
35444
 
35447
- // Parse and process variables
35448
- const split = func.expression.parse(ret) || [];
35449
- const var_Arr = await Promise.all(
35450
- split.map(async (val, key) => {
35451
- const result = { value: val.value, fieldId: val.fieldId };
35445
+ // // Parse and process variables
35446
+ // const split = func.expression.parse(ret) || [];
35447
+ // const var_Arr = await Promise.all(
35448
+ // split.map(async (val, key) => {
35449
+ // const result = { value: val.value, fieldId: val.fieldId };
35452
35450
 
35453
- if (!val.fieldId) return result;
35451
+ // if (!val.fieldId) return result;
35454
35452
 
35455
- // Handle _THIS substitution
35456
- if (val.fieldId.startsWith('_THIS') && calling_fieldIdP) {
35457
- result.fieldId = val.fieldId.length === 5 ? calling_fieldIdP : calling_fieldIdP + val.fieldId.slice(5);
35458
- }
35453
+ // // Handle _THIS substitution
35454
+ // if (val.fieldId.startsWith('_THIS') && calling_fieldIdP) {
35455
+ // result.fieldId = val.fieldId.length === 5 ? calling_fieldIdP : calling_fieldIdP + val.fieldId.slice(5);
35456
+ // }
35459
35457
 
35460
- // Fetch value from datasource
35461
- const { ret: fetchedValue, fieldIdP } = await func.datasource.get_value(SESSION_ID, result.fieldId, dsSessionP, rowIdP);
35462
- result.value = fetchedValue?.value ?? (sourceP === 'exp' ? fetchedValue?.value : '""');
35463
- result.type = fetchedValue?.type;
35458
+ // // Fetch value from datasource
35459
+ // const { ret: fetchedValue, fieldIdP } = await func.datasource.get_value(SESSION_ID, result.fieldId, dsSessionP, rowIdP);
35460
+ // result.value = fetchedValue?.value ?? (sourceP === 'exp' ? fetchedValue?.value : '""');
35461
+ // result.type = fetchedValue?.type;
35464
35462
 
35465
- // Handle iteration
35466
- if (iterate_info) {
35467
- if (iterate_info.iterator_key === fieldIdP) result.value = iterate_info._key;
35468
- if (iterate_info.iterator_val === fieldIdP) result.value = iterate_info._val;
35469
- }
35463
+ // // Handle iteration
35464
+ // if (iterate_info) {
35465
+ // if (iterate_info.iterator_key === fieldIdP) result.value = iterate_info._key;
35466
+ // if (iterate_info.iterator_val === fieldIdP) result.value = iterate_info._val;
35467
+ // }
35470
35468
 
35471
- // Process nested properties
35472
- if (val.value.includes('[') || val.value.includes('.')) {
35473
- const { property1, property2 } = await func.expression.get_property(val.value);
35474
- const data = fetchedValue?.type === 'object' ? fetchedValue.value : fetchedValue?.prop;
35469
+ // // Process nested properties
35470
+ // if (val.value.includes('[') || val.value.includes('.')) {
35471
+ // const { property1, property2 } = await func.expression.get_property(val.value);
35472
+ // const data = fetchedValue?.type === 'object' ? fetchedValue.value : fetchedValue?.prop;
35475
35473
 
35476
- if (key > 0 && val.value.includes(']') && !val.value.includes('[') && split[key - 1].value) {
35477
- const prevData = split[key - 1].value;
35478
- result.value = prevData[fieldIdP];
35479
- if (val.value.includes('.') && prevData[fieldIdP]) {
35480
- result.value = prevData[fieldIdP][property2] ?? '';
35481
- }
35482
- } else if (data) {
35483
- if (property1) result.value = data[property1] ?? '';
35484
- if (property2) result.value = (property1 ? data[property1]?.[property2] : data[property2]) ?? '';
35485
- }
35486
- }
35474
+ // if (key > 0 && val.value.includes(']') && !val.value.includes('[') && split[key - 1].value) {
35475
+ // const prevData = split[key - 1].value;
35476
+ // result.value = prevData[fieldIdP];
35477
+ // if (val.value.includes('.') && prevData[fieldIdP]) {
35478
+ // result.value = prevData[fieldIdP][property2] ?? '';
35479
+ // }
35480
+ // } else if (data) {
35481
+ // if (property1) result.value = data[property1] ?? '';
35482
+ // if (property2) result.value = (property1 ? data[property1]?.[property2] : data[property2]) ?? '';
35483
+ // }
35484
+ // }
35487
35485
 
35488
- fields[fieldIdP] = result.value;
35489
- return result;
35490
- }),
35491
- );
35486
+ // fields[fieldIdP] = result.value;
35487
+ // return result;
35488
+ // }),
35489
+ // );
35492
35490
 
35493
- // Final evaluation
35494
- try {
35495
- const res = var_Arr.map((val, key) => {
35496
- if (sourceP === 'UI Property EXP' || sourceP === 'UI Attr EXP') {
35497
- const { changed, value } = func.utils.get_drive_url(SESSION_ID, val.value, sourceP === 'UI Attr EXP' && var_Arr.length > 1);
35498
- if (changed) return value;
35499
- }
35491
+ // // Final evaluation
35492
+ // try {
35493
+ // const res = var_Arr.map((val, key) => {
35494
+ // if (sourceP === 'UI Property EXP' || sourceP === 'UI Attr EXP') {
35495
+ // const { changed, value } = func.utils.get_drive_url(SESSION_ID, val.value, sourceP === 'UI Attr EXP' && var_Arr.length > 1);
35496
+ // if (changed) return value;
35497
+ // }
35500
35498
 
35501
- let value = val.value;
35502
- if (var_Arr.length > 1) {
35503
- if (!['DbQuery', 'alert', 'exp', 'api_rendered_output'].includes(sourceP) && ['string', 'date'].includes(val.type)) {
35504
- value = `\`${value}\``;
35505
- } else if (sourceP === 'api_rendered_output' && api_output_type === 'json' && ['string', 'date'].includes(val.type)) {
35506
- value = `"${value}"`;
35507
- }
35508
- }
35499
+ // let value = val.value;
35500
+ // if (var_Arr.length > 1) {
35501
+ // if (!['DbQuery', 'alert', 'exp', 'api_rendered_output'].includes(sourceP) && ['string', 'date'].includes(val.type)) {
35502
+ // value = `\`${value}\``;
35503
+ // } else if (sourceP === 'api_rendered_output' && api_output_type === 'json' && ['string', 'date'].includes(val.type)) {
35504
+ // value = `"${value}"`;
35505
+ // }
35506
+ // }
35509
35507
 
35510
- if (val.fieldId && typeof value === 'string') {
35511
- if (['query', 'condition', 'range', 'sort', 'locate'].includes(sourceP)) value = value.replace(/↵|\r\n|\n|\r/g, '');
35512
- if (['init', 'update', 'virtual'].includes(sourceP)) value = value.replace(/↵|\r\n|\n|\r/g, '\\n');
35513
- if (typeof IS_PROCESS_SERVER !== 'undefined') value = value.replace(/↵|\r\n|\n|\r/g, '<br>');
35514
- fields[val.fieldId] = value;
35515
- }
35508
+ // if (val.fieldId && typeof value === 'string') {
35509
+ // if (['query', 'condition', 'range', 'sort', 'locate'].includes(sourceP)) value = value.replace(/↵|\r\n|\n|\r/g, '');
35510
+ // if (['init', 'update', 'virtual'].includes(sourceP)) value = value.replace(/↵|\r\n|\n|\r/g, '\\n');
35511
+ // if (typeof IS_PROCESS_SERVER !== 'undefined') value = value.replace(/↵|\r\n|\n|\r/g, '<br>');
35512
+ // fields[val.fieldId] = value;
35513
+ // }
35516
35514
 
35517
- if (typeof value === 'object' && var_Arr.length > 1) {
35518
- value = Array.isArray(value) || var_Arr[key + 1]?.value?.includes('.') ? JSON.stringify(value) : `(${JSON.stringify(value)})`;
35519
- }
35515
+ // if (typeof value === 'object' && var_Arr.length > 1) {
35516
+ // value = Array.isArray(value) || var_Arr[key + 1]?.value?.includes('.') ? JSON.stringify(value) : `(${JSON.stringify(value)})`;
35517
+ // }
35520
35518
 
35521
- if (!val.type === 'exp' && sourceP !== 'exp' && typeof value === 'string' && value.startsWith('@')) {
35522
- warning = `Error encoding ${value}`;
35523
- var_error_found = true;
35524
- return '0';
35525
- }
35526
- return value;
35527
- });
35519
+ // if (!val.type === 'exp' && sourceP !== 'exp' && typeof value === 'string' && value.startsWith('@')) {
35520
+ // warning = `Error encoding ${value}`;
35521
+ // var_error_found = true;
35522
+ // return '0';
35523
+ // }
35524
+ // return value;
35525
+ // });
35528
35526
 
35529
- ret = res.length === 1 ? res[0] : res.join('');
35530
- if (var_Arr.some((v) => v.type === 'exp') && sourceP !== 'exp' && !secondPassP) {
35531
- const exp = await func.expression.get(SESSION_ID, ret, dsSessionP, sourceP, rowIdP, sourceActionP, true, calling_fieldIdP, fields, debug_infoP);
35532
- ret = exp.res?.[0] ?? exp.result;
35533
- Object.assign(fields, exp.fields);
35534
- } else if (!secondPassP && !['arguments', 'api_rendered_output', 'DbQuery'].includes(sourceP)) {
35535
- ret = await func.expression.secure_eval(SESSION_ID, sourceP, ret, jobNo, dsSessionP, js_script_callback);
35536
- } else if (sourceP === 'DbQuery') {
35537
- ret = JSON.stringify(evalJson(ret));
35538
- }
35527
+ // ret = res.length === 1 ? res[0] : res.join('');
35528
+ // if (var_Arr.some((v) => v.type === 'exp') && sourceP !== 'exp' && !secondPassP) {
35529
+ // const exp = await func.expression.get(SESSION_ID, ret, dsSessionP, sourceP, rowIdP, sourceActionP, true, calling_fieldIdP, fields, debug_infoP);
35530
+ // ret = exp.res?.[0] ?? exp.result;
35531
+ // Object.assign(fields, exp.fields);
35532
+ // } else if (!secondPassP && !['arguments', 'api_rendered_output', 'DbQuery'].includes(sourceP)) {
35533
+ // ret = await func.expression.secure_eval(SESSION_ID, sourceP, ret, jobNo, dsSessionP, js_script_callback);
35534
+ // } else if (sourceP === 'DbQuery') {
35535
+ // ret = JSON.stringify(evalJson(ret));
35536
+ // }
35539
35537
 
35540
- if (typeof ret === 'string' && ret.startsWith('@')) {
35541
- error = 'Error encoding @ var';
35542
- var_error_found = true;
35543
- }
35544
- } catch (err) {
35545
- error = err.message;
35546
- }
35538
+ // if (typeof ret === 'string' && ret.startsWith('@')) {
35539
+ // error = 'Error encoding @ var';
35540
+ // var_error_found = true;
35541
+ // }
35542
+ // } catch (err) {
35543
+ // error = err.message;
35544
+ // }
35547
35545
 
35548
- return endResults();
35549
- };
35546
+ // return endResults();
35547
+ // };
35550
35548
 
35551
- func.expression.parse_org = function (strP) {
35552
- var extract_str = function (strP, posP) {
35553
- if (!posP) posP = 0;
35554
- var clean_split_str = function (arrP) {
35555
- var arr = [];
35556
- if (arrP && arrP.length > 1 && arrP[0] === '' && arrP[1].indexOf('@') > -1) {
35557
- for (var i = 1; i <= arrP.length; i++) {
35558
- arr.push(arrP[i]);
35559
- }
35560
- return arr;
35561
- } else return arrP;
35562
- };
35563
- var nonLettersPatt = /\W/; // non letters
35564
- var validSymbolsNoArray = /[^.@\[]/; //valid symbols no array /[^.@\[\]\]]/
35565
- var validSymbolsWithArray = /[^.@"'\[\]]/; //valid symbols with array
35566
- var validSymbols = validSymbolsNoArray;
35567
- var splitTmp = strP.replace(/@/g, '^^@').split('^^');
35568
- var split = clean_split_str(splitTmp);
35569
- var obj = [];
35570
- if (split) {
35571
- for (let val of split) {
35572
- // run on @ segments
35573
- if (val) {
35574
- var pos = strP.indexOf(val);
35575
- if (val && val.substr(0, 1) === '@') {
35576
- var tmpStr = '';
35577
- var word_start_pos = undefined;
35578
- var word_end_pos = undefined;
35579
- // run on @ segment string
35580
- for (var i = 0; i <= val.length; i++) {
35581
- var key1 = i;
35582
- var val1 = val.substr(i, 1);
35583
- if (
35584
- val1 === '.' &&
35585
- !word_start_pos // find first dot
35586
- )
35587
- word_start_pos = key1;
35588
- if (
35589
- word_start_pos &&
35590
- key1 > word_start_pos &&
35591
- nonLettersPatt.test(val1) // find any sign character to mark the end of word
35592
- )
35593
- word_end_pos = key1;
35594
- if (word_start_pos && word_start_pos >= 0 && word_end_pos && word_end_pos >= 0) {
35595
- // find the word
35596
- var word = val.substr(word_start_pos + 1, word_end_pos - word_start_pos - 1); // get the word
35597
- // if (glb.ALL_PROPERTIES_ARR.indexOf(word) === -1) {
35598
- // compare with internal properties
35599
- tmpStr = tmpStr.substr(0, word_start_pos) + '^^' + tmpStr.substr(word_start_pos, word_end_pos);
35600
- // }
35601
- if (val.substr(word_end_pos, 1) === '.') word_start_pos = word_end_pos;
35602
- else word_start_pos = null;
35603
- word_end_pos = null;
35604
- }
35605
- if (val1 === '[') validSymbols = validSymbolsWithArray;
35606
- if (nonLettersPatt.test(val1) && validSymbols.test(val1) && tmpStr.indexOf('^^') === -1) {
35607
- tmpStr += '^^' + val1;
35608
- } else tmpStr += val1;
35609
- }
35610
- // });
35611
- if (tmpStr.indexOf('^^') > -1) {
35612
- var obj1 = extract_str(tmpStr, pos);
35613
- obj = obj.concat(obj1);
35614
- } else {
35615
- // push clean @var
35616
- var fieldId = undefined;
35617
- if (val) {
35618
- fieldId = val.substr(1, val.length);
35619
- if (val.indexOf('.') > -1) fieldId = val.substr(1, val.indexOf('.') - 1);
35620
- if (val.indexOf('[') > -1) fieldId = val.substr(1, val.indexOf('[') - 1);
35621
- //
35622
- // if (val.indexOf("]") > -1)
35623
- // fieldId = val.substr(1, val.indexOf("]") - 1);
35624
- }
35625
- obj.push({
35626
- value: val,
35627
- fieldId: fieldId,
35628
- pos: pos + posP,
35629
- });
35630
- }
35631
- } else {
35632
- obj.push({
35633
- value: val,
35634
- pos: pos + posP,
35635
- });
35636
- }
35637
- }
35638
- }
35639
- return obj;
35640
- }
35641
- };
35642
- var res = extract_str(strP);
35643
- return res;
35644
- };
35549
+ // func.expression.parse_org = function (strP) {
35550
+ // var extract_str = function (strP, posP) {
35551
+ // if (!posP) posP = 0;
35552
+ // var clean_split_str = function (arrP) {
35553
+ // var arr = [];
35554
+ // if (arrP && arrP.length > 1 && arrP[0] === '' && arrP[1].indexOf('@') > -1) {
35555
+ // for (var i = 1; i <= arrP.length; i++) {
35556
+ // arr.push(arrP[i]);
35557
+ // }
35558
+ // return arr;
35559
+ // } else return arrP;
35560
+ // };
35561
+ // var nonLettersPatt = /\W/; // non letters
35562
+ // var validSymbolsNoArray = /[^.@\[]/; //valid symbols no array /[^.@\[\]\]]/
35563
+ // var validSymbolsWithArray = /[^.@"'\[\]]/; //valid symbols with array
35564
+ // var validSymbols = validSymbolsNoArray;
35565
+ // var splitTmp = strP.replace(/@/g, '^^@').split('^^');
35566
+ // var split = clean_split_str(splitTmp);
35567
+ // var obj = [];
35568
+ // if (split) {
35569
+ // for (let val of split) {
35570
+ // // run on @ segments
35571
+ // if (val) {
35572
+ // var pos = strP.indexOf(val);
35573
+ // if (val && val.substr(0, 1) === '@') {
35574
+ // var tmpStr = '';
35575
+ // var word_start_pos = undefined;
35576
+ // var word_end_pos = undefined;
35577
+ // // run on @ segment string
35578
+ // for (var i = 0; i <= val.length; i++) {
35579
+ // var key1 = i;
35580
+ // var val1 = val.substr(i, 1);
35581
+ // if (
35582
+ // val1 === '.' &&
35583
+ // !word_start_pos // find first dot
35584
+ // )
35585
+ // word_start_pos = key1;
35586
+ // if (
35587
+ // word_start_pos &&
35588
+ // key1 > word_start_pos &&
35589
+ // nonLettersPatt.test(val1) // find any sign character to mark the end of word
35590
+ // )
35591
+ // word_end_pos = key1;
35592
+ // if (word_start_pos && word_start_pos >= 0 && word_end_pos && word_end_pos >= 0) {
35593
+ // // find the word
35594
+ // var word = val.substr(word_start_pos + 1, word_end_pos - word_start_pos - 1); // get the word
35595
+ // // if (glb.ALL_PROPERTIES_ARR.indexOf(word) === -1) {
35596
+ // // compare with internal properties
35597
+ // tmpStr = tmpStr.substr(0, word_start_pos) + '^^' + tmpStr.substr(word_start_pos, word_end_pos);
35598
+ // // }
35599
+ // if (val.substr(word_end_pos, 1) === '.') word_start_pos = word_end_pos;
35600
+ // else word_start_pos = null;
35601
+ // word_end_pos = null;
35602
+ // }
35603
+ // if (val1 === '[') validSymbols = validSymbolsWithArray;
35604
+ // if (nonLettersPatt.test(val1) && validSymbols.test(val1) && tmpStr.indexOf('^^') === -1) {
35605
+ // tmpStr += '^^' + val1;
35606
+ // } else tmpStr += val1;
35607
+ // }
35608
+ // // });
35609
+ // if (tmpStr.indexOf('^^') > -1) {
35610
+ // var obj1 = extract_str(tmpStr, pos);
35611
+ // obj = obj.concat(obj1);
35612
+ // } else {
35613
+ // // push clean @var
35614
+ // var fieldId = undefined;
35615
+ // if (val) {
35616
+ // fieldId = val.substr(1, val.length);
35617
+ // if (val.indexOf('.') > -1) fieldId = val.substr(1, val.indexOf('.') - 1);
35618
+ // if (val.indexOf('[') > -1) fieldId = val.substr(1, val.indexOf('[') - 1);
35619
+ // //
35620
+ // // if (val.indexOf("]") > -1)
35621
+ // // fieldId = val.substr(1, val.indexOf("]") - 1);
35622
+ // }
35623
+ // obj.push({
35624
+ // value: val,
35625
+ // fieldId: fieldId,
35626
+ // pos: pos + posP,
35627
+ // });
35628
+ // }
35629
+ // } else {
35630
+ // obj.push({
35631
+ // value: val,
35632
+ // pos: pos + posP,
35633
+ // });
35634
+ // }
35635
+ // }
35636
+ // }
35637
+ // return obj;
35638
+ // }
35639
+ // };
35640
+ // var res = extract_str(strP);
35641
+ // return res;
35642
+ // };
35645
35643
 
35646
35644
  func.expression.parse = function (input) {
35647
35645
  if (typeof input !== 'string') return [];
@@ -35710,50 +35708,50 @@ func.expression.get_property = async function (valP) {
35710
35708
  };
35711
35709
  };
35712
35710
 
35713
- func.expression.get_property_bad = async function (valP) {
35714
- if (typeof valP !== 'string') return { property1: undefined, property2: undefined };
35711
+ // func.expression.get_property_bad = async function (valP) {
35712
+ // if (typeof valP !== 'string') return { property1: undefined, property2: undefined };
35715
35713
 
35716
- const secureEval = async (expr) => {
35717
- if (typeof IS_PROCESS_SERVER === 'undefined') {
35718
- try {
35719
- return eval(expr);
35720
- } catch (err) {
35721
- console.error(err);
35722
- return undefined;
35723
- }
35724
- }
35725
- try {
35726
- const vm = new VM.VM({
35727
- sandbox: {
35728
- func,
35729
- SESSION_ID,
35730
- SESSION_OBJ: { [SESSION_ID]: SESSION_OBJ[SESSION_ID] },
35731
- },
35732
- timeout: 1000,
35733
- allowAsync: false,
35734
- });
35735
- return await vm.run(expr);
35736
- } catch {
35737
- return undefined; // Simplified error handling
35738
- }
35739
- };
35714
+ // const secureEval = async (expr) => {
35715
+ // if (typeof IS_PROCESS_SERVER === 'undefined') {
35716
+ // try {
35717
+ // return eval(expr);
35718
+ // } catch (err) {
35719
+ // console.error(err);
35720
+ // return undefined;
35721
+ // }
35722
+ // }
35723
+ // try {
35724
+ // const vm = new VM.VM({
35725
+ // sandbox: {
35726
+ // func,
35727
+ // SESSION_ID,
35728
+ // SESSION_OBJ: { [SESSION_ID]: SESSION_OBJ[SESSION_ID] },
35729
+ // },
35730
+ // timeout: 1000,
35731
+ // allowAsync: false,
35732
+ // });
35733
+ // return await vm.run(expr);
35734
+ // } catch {
35735
+ // return undefined; // Simplified error handling
35736
+ // }
35737
+ // };
35740
35738
 
35741
- let property1, property2;
35742
- const bracketStart = valP.indexOf('[');
35743
- const bracketEnd = valP.indexOf(']');
35739
+ // let property1, property2;
35740
+ // const bracketStart = valP.indexOf('[');
35741
+ // const bracketEnd = valP.indexOf(']');
35744
35742
 
35745
- if (bracketStart > -1 && bracketEnd > bracketStart) {
35746
- const expr = valP.slice(bracketStart + 1, bracketEnd);
35747
- property1 = await secureEval(expr);
35748
- }
35743
+ // if (bracketStart > -1 && bracketEnd > bracketStart) {
35744
+ // const expr = valP.slice(bracketStart + 1, bracketEnd);
35745
+ // property1 = await secureEval(expr);
35746
+ // }
35749
35747
 
35750
- const dotIndex = valP.indexOf('.');
35751
- if (dotIndex > -1) {
35752
- property2 = valP.slice(dotIndex + 1);
35753
- }
35748
+ // const dotIndex = valP.indexOf('.');
35749
+ // if (dotIndex > -1) {
35750
+ // property2 = valP.slice(dotIndex + 1);
35751
+ // }
35754
35752
 
35755
- return { property1, property2 };
35756
- };
35753
+ // return { property1, property2 };
35754
+ // };
35757
35755
 
35758
35756
  func.expression.validate_constant = function (valP) {
35759
35757
  var patt = /["']/;
@@ -35781,107 +35779,107 @@ func.expression.remove_quotes = function (valP) {
35781
35779
  // func.expression.validate_constant(valP) && typeof valP === 'string' ? valP.slice(1, -1) : valP;
35782
35780
  // };
35783
35781
 
35784
- func.expression.secure_eval_org = async function (SESSION_ID, sourceP, val, job_id, dsSessionP, js_script_callback, evt) {
35785
- const api_utils = await func.common.get_module(SESSION_ID, 'xuda-api-library.mjs', {
35786
- func,
35787
- glb,
35788
- SESSION_OBJ,
35789
- SESSION_ID,
35790
- APP_OBJ,
35791
- dsSession: dsSessionP,
35792
- job_id,
35793
- });
35794
-
35795
- const xu = api_utils;
35796
-
35797
- if (typeof IS_PROCESS_SERVER === 'undefined' && typeof IS_DOCKER === 'undefined') {
35798
- try {
35799
- return eval(val);
35800
- } catch (err) {
35801
- try {
35802
- return JSON5.parse(val);
35803
- } catch (err) {
35804
- // console.error(err);
35805
- return val;
35806
- }
35807
- }
35808
- }
35809
- // server side execution
35810
- if (sourceP === 'javascript') {
35811
- process.on('uncaughtException', (err) => {
35812
- console.error('Asynchronous error caught.', err);
35782
+ // func.expression.secure_eval_org = async function (SESSION_ID, sourceP, val, job_id, dsSessionP, js_script_callback, evt) {
35783
+ // const api_utils = await func.common.get_module(SESSION_ID, 'xuda-api-library.mjs', {
35784
+ // func,
35785
+ // glb,
35786
+ // SESSION_OBJ,
35787
+ // SESSION_ID,
35788
+ // APP_OBJ,
35789
+ // dsSession: dsSessionP,
35790
+ // job_id,
35791
+ // });
35813
35792
 
35814
- func.events.delete_job(SESSION_ID, job_id);
35815
- if (typeof IS_PROCESS_SERVER !== 'undefined' || typeof IS_DOCKER !== 'undefined') {
35816
- if (SESSION_OBJ[SESSION_ID].crawler) return;
35817
- return __.rpi.write_log(SESSION_OBJ[SESSION_ID].app_id, 'error', 'worker', 'vm error', err, null, val, 'func.expression.get.secure_eval');
35818
- }
35819
- });
35820
- try {
35821
- const dir = path.join(_conf.studio_drive_path, SESSION_OBJ[SESSION_ID].app_id, 'node_modules', '/');
35822
- 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 });
35823
- let vm = new VM.NodeVM({
35824
- require: {
35825
- external: true,
35826
- },
35827
- sandbox: {
35828
- func,
35829
- xu,
35830
- SESSION_ID,
35831
- SESSION_OBJ: { [`${SESSION_ID}`]: SESSION_OBJ[SESSION_ID] },
35832
- callback: js_script_callback,
35833
- job_id,
35834
- axios,
35835
- got,
35836
- FormData,
35837
- },
35838
- timeout: 60000,
35839
- });
35840
- return await vm.run(script, {
35841
- filename: dir,
35842
- dirname: dir,
35843
- });
35844
- } catch (err) {
35845
- console.error('Failed to execute script.', err);
35793
+ // const xu = api_utils;
35794
+
35795
+ // if (typeof IS_PROCESS_SERVER === 'undefined' && typeof IS_DOCKER === 'undefined') {
35796
+ // try {
35797
+ // return eval(val);
35798
+ // } catch (err) {
35799
+ // try {
35800
+ // return JSON5.parse(val);
35801
+ // } catch (err) {
35802
+ // // console.error(err);
35803
+ // return val;
35804
+ // }
35805
+ // }
35806
+ // }
35807
+ // // server side execution
35808
+ // if (sourceP === 'javascript') {
35809
+ // process.on('uncaughtException', (err) => {
35810
+ // console.error('Asynchronous error caught.', err);
35811
+
35812
+ // func.events.delete_job(SESSION_ID, job_id);
35813
+ // if (typeof IS_PROCESS_SERVER !== 'undefined' || typeof IS_DOCKER !== 'undefined') {
35814
+ // if (SESSION_OBJ[SESSION_ID].crawler) return;
35815
+ // return __.rpi.write_log(SESSION_OBJ[SESSION_ID].app_id, 'error', 'worker', 'vm error', err, null, val, 'func.expression.get.secure_eval');
35816
+ // }
35817
+ // });
35818
+ // try {
35819
+ // const dir = path.join(_conf.studio_drive_path, SESSION_OBJ[SESSION_ID].app_id, 'node_modules', '/');
35820
+ // 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 });
35821
+ // let vm = new VM.NodeVM({
35822
+ // require: {
35823
+ // external: true,
35824
+ // },
35825
+ // sandbox: {
35826
+ // func,
35827
+ // xu,
35828
+ // SESSION_ID,
35829
+ // SESSION_OBJ: { [`${SESSION_ID}`]: SESSION_OBJ[SESSION_ID] },
35830
+ // callback: js_script_callback,
35831
+ // job_id,
35832
+ // axios,
35833
+ // got,
35834
+ // FormData,
35835
+ // },
35836
+ // timeout: 60000,
35837
+ // });
35838
+ // return await vm.run(script, {
35839
+ // filename: dir,
35840
+ // dirname: dir,
35841
+ // });
35842
+ // } catch (err) {
35843
+ // console.error('Failed to execute script.', err);
35846
35844
 
35847
- if (typeof IS_PROCESS_SERVER !== 'undefined') {
35848
- func.events.delete_job(SESSION_ID, jobNo);
35849
- return __.db.add_error_log(SESSION_OBJ[SESSION_ID].app_id, 'api', err);
35850
- }
35851
- }
35852
- } else {
35853
- try {
35854
- try {
35855
- let vm = new VM.VM({
35856
- sandbox: {
35857
- xu,
35858
- func,
35859
- SESSION_ID,
35860
- SESSION_OBJ: { [`${SESSION_ID}`]: SESSION_OBJ[SESSION_ID] },
35861
- callback: js_script_callback,
35862
- job_id,
35863
- },
35864
- timeout: 1000,
35865
- allowAsync: false,
35866
- });
35867
- let ret = val;
35868
- if (typeof val === 'string') {
35869
- ret = await vm.run(val);
35870
- }
35871
- return ret;
35872
- } catch (err) {
35873
- throw '';
35874
- }
35875
- } catch (err) {
35876
- try {
35877
- return JSON5.parse(val);
35878
- } catch (err) {
35879
- // console.error(err);
35880
- return val;
35881
- }
35882
- }
35883
- }
35884
- };
35845
+ // if (typeof IS_PROCESS_SERVER !== 'undefined') {
35846
+ // func.events.delete_job(SESSION_ID, jobNo);
35847
+ // return __.db.add_error_log(SESSION_OBJ[SESSION_ID].app_id, 'api', err);
35848
+ // }
35849
+ // }
35850
+ // } else {
35851
+ // try {
35852
+ // try {
35853
+ // let vm = new VM.VM({
35854
+ // sandbox: {
35855
+ // xu,
35856
+ // func,
35857
+ // SESSION_ID,
35858
+ // SESSION_OBJ: { [`${SESSION_ID}`]: SESSION_OBJ[SESSION_ID] },
35859
+ // callback: js_script_callback,
35860
+ // job_id,
35861
+ // },
35862
+ // timeout: 1000,
35863
+ // allowAsync: false,
35864
+ // });
35865
+ // let ret = val;
35866
+ // if (typeof val === 'string') {
35867
+ // ret = await vm.run(val);
35868
+ // }
35869
+ // return ret;
35870
+ // } catch (err) {
35871
+ // throw '';
35872
+ // }
35873
+ // } catch (err) {
35874
+ // try {
35875
+ // return JSON5.parse(val);
35876
+ // } catch (err) {
35877
+ // // console.error(err);
35878
+ // return val;
35879
+ // }
35880
+ // }
35881
+ // }
35882
+ // };
35885
35883
 
35886
35884
  func.expression.secure_eval = async function (SESSION_ID, sourceP, val, job_id, dsSessionP, js_script_callback, evt) {
35887
35885
  if (typeof val !== 'string') return val;
@@ -36708,14 +36706,14 @@ func.events.execute = async function (
36708
36706
 
36709
36707
  call_native_javascript: async function () {
36710
36708
  const module = await func.common.get_module(SESSION_ID, 'xuda-event-javascript-module.mjs');
36711
- const result = await module.call_javascript(SESSION_ID, jobNoP, refIdP, dsSession);
36709
+ const result = await module.call_javascript(SESSION_ID, jobNoP, refIdP, dsSession, false, $(containerP));
36712
36710
  await func.datasource.set_outputField(SESSION_ID, dsSessionP, result, args);
36713
36711
 
36714
36712
  return result;
36715
36713
  },
36716
36714
  call_evaluate_javascript: async function () {
36717
36715
  const module = await func.common.get_module(SESSION_ID, 'xuda-event-javascript-module.mjs');
36718
- const result = await module.call_javascript(SESSION_ID, jobNoP, refIdP, dsSession, true);
36716
+ const result = await module.call_javascript(SESSION_ID, jobNoP, refIdP, dsSession, true, $(containerP));
36719
36717
  await func.datasource.set_outputField(SESSION_ID, dsSessionP, result, args);
36720
36718
 
36721
36719
  return result;
@@ -36734,6 +36732,7 @@ func.events.execute = async function (
36734
36732
  null,
36735
36733
  null,
36736
36734
  evt,
36735
+ $(containerP),
36737
36736
  );
36738
36737
  await func.datasource.set_outputField(SESSION_ID, dsSessionP, result, args);
36739
36738
 
@@ -36753,6 +36752,7 @@ func.events.execute = async function (
36753
36752
  null,
36754
36753
  null,
36755
36754
  evt,
36755
+ $(containerP),
36756
36756
  );
36757
36757
  await func.datasource.set_outputField(SESSION_ID, dsSessionP, result, args);
36758
36758