@xuda.io/xuda-worker-bundle-min 1.3.143 → 1.3.145

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.
Files changed (2) hide show
  1. package/index.js +815 -406
  2. package/package.json +1 -1
package/index.js CHANGED
@@ -5888,29 +5888,7 @@ func.utils.alerts.invoke = async function (
5888
5888
 
5889
5889
  return;
5890
5890
  }
5891
- // if (!alert_type) {
5892
- // // none alert
5893
- // ALERT_IS_ACTIVE = false;
5894
- // return;
5895
- // }
5896
5891
 
5897
- // if (_ds) {
5898
- // if (alert_type === "error") {
5899
- // _ds.error = title + " " + sourceP;
5900
- // func.utils.debug_report(
5901
- // SESSION_ID,
5902
- // "func.datasource.callback",
5903
- // title + " " + sourceP,
5904
- // "E",
5905
- // "",
5906
- // _ds
5907
- // );
5908
- // }
5909
- // // if (typeof _session.DS_GLB[dsSessionP].import_rowno !== "undefined") {
5910
- // // ALERT_IS_ACTIVE = false;
5911
- // // return;
5912
- // // }
5913
- // }
5914
5892
  func.utils.alerts.execute(
5915
5893
  SESSION_ID,
5916
5894
  alert_type,
@@ -5932,6 +5910,9 @@ func.utils.alerts.execute = function (
5932
5910
  ) {
5933
5911
  if (!UI_FRAMEWORK_INSTALLED) {
5934
5912
  ALERT_IS_ACTIVE = false;
5913
+ if (alertDisplay !== "console") {
5914
+ return alert(title + "\n \n" + message);
5915
+ }
5935
5916
  return console[alert_type === "error" ? "error" : "log"](
5936
5917
  alert_type,
5937
5918
  title,
@@ -8306,434 +8287,862 @@ func.expression.get = async function (
8306
8287
  js_script_callback,
8307
8288
  jobNo
8308
8289
  ) {
8309
- var ret;
8310
- var fields = {};
8311
- var error;
8312
- var warning;
8290
+ class xu_class {
8291
+ async get() {
8292
+ var ret;
8293
+ var fields = {};
8294
+ var error;
8295
+ var warning;
8313
8296
 
8314
- function evalJson(text) {
8315
- return eval("(" + text + ")");
8316
- }
8317
-
8318
- //==============================
8319
- // check if str and convert
8320
-
8321
- // if (typeof valP === "string") {
8322
- // ret = valP;
8323
- // } else {
8324
- // ret = valP.toString(); //_.toString(valP);
8325
- // }
8326
-
8327
- if (valP === null) {
8328
- ret = "";
8329
- } else {
8330
- switch (typeof valP) {
8331
- case "string":
8332
- ret = valP;
8333
- break;
8297
+ function evalJson(text) {
8298
+ return eval("(" + text + ")");
8299
+ }
8334
8300
 
8335
- case "undefined":
8301
+ if (valP === null) {
8336
8302
  ret = "";
8337
- break;
8303
+ } else {
8304
+ switch (typeof valP) {
8305
+ case "string":
8306
+ ret = valP;
8307
+ break;
8338
8308
 
8339
- case "boolean":
8340
- ret = valP ? "Y" : "N";
8341
- break;
8309
+ case "undefined":
8310
+ ret = "";
8311
+ break;
8342
8312
 
8343
- default:
8344
- ret = valP.toString();
8345
- break;
8346
- }
8347
- }
8313
+ case "boolean":
8314
+ ret = valP ? "Y" : "N";
8315
+ break;
8348
8316
 
8349
- ret = ret.replace(/\&/g, "&");
8350
- const end_results = function () {
8351
- const replace_quotes = function (ret) {
8352
- for (const [key, val] of Object.entries(fields)) {
8353
- if (typeof val === "string")
8354
- ret = ret.replace('"' + val + '"', val.replace(/"/gi, ""));
8355
- }
8356
- return ret;
8357
- };
8358
- if (sourceP === "update" || sourceP === "javascript") {
8359
- if (typeof ret === "string") ret = replace_quotes(ret);
8360
- }
8361
- const log_error = function () {
8362
- if (SESSION_OBJ[SESSION_ID].DS_GLB[dsSessionP]) {
8363
- func.utils.debug.log(
8364
- SESSION_ID,
8365
- SESSION_OBJ[SESSION_ID].DS_GLB[dsSessionP].nodeId,
8366
- {
8367
- module: "expression",
8368
- action: sourceP,
8369
- source: calling_fieldIdP,
8370
- prop: ret,
8371
- details: ret,
8372
- result: ret,
8373
- error: error,
8374
- warning: warning,
8375
- fields: null,
8376
- type: "exp",
8377
- prog_id: SESSION_OBJ[SESSION_ID].DS_GLB[dsSessionP].prog_id,
8378
- debug_info: debug_infoP,
8379
- }
8380
- );
8381
- }
8382
- };
8383
- if (error) log_error();
8384
- // if (error || warning) log_error();
8385
- return {
8386
- result: ret,
8387
- fields: fields,
8388
- res: res,
8389
- explain: result,
8390
- error: error,
8391
- warning: warning,
8392
- req: valP,
8393
- var_error_found: var_error_found,
8394
- };
8395
- };
8396
- const variable_not_exist = async function () {
8397
- try {
8398
- if (sourceP !== "arguments") {
8399
- if (ret && ret.substr(0, 6) === "_DATE_") {
8400
- ret = ret.substr(6);
8401
- } else if (
8402
- (ret &&
8403
- ret.length === 10 &&
8404
- ret.substr(4, 1) === "-" &&
8405
- ret.substr(7, 1) === "-") ||
8406
- ret === "self" // bypass eval for date 2017-03-22
8407
- ) {
8408
- ret = ret;
8409
- } else {
8410
- // ret = secure_eval(ret); //eval(ret);
8411
- ret = await func.expression.secure_eval(
8412
- SESSION_ID,
8413
- sourceP,
8414
- ret,
8415
- jobNo,
8416
- dsSessionP,
8417
- js_script_callback
8418
- );
8419
- }
8420
- // console.log("AFTER OK", ret)
8421
- return end_results();
8422
- } else {
8423
- // do eval for arithmetic vals
8424
- ret = ret.replace(/_NULL/gi, "");
8425
- return end_results();
8426
- }
8427
- } catch (err) {
8428
- // console.error(err);
8429
- return end_results();
8430
- }
8431
- };
8432
- if (!func.expression.validate_variables(valP)) {
8433
- return await variable_not_exist();
8434
- }
8435
- var split = [];
8436
- var var_Arr = [];
8437
- split = func.expression.parse(ret);
8438
- for await (const [arr_key, val] of Object.entries(split)) {
8439
- // run each field
8440
- const key = Number(arr_key);
8441
- var_Arr[key] = {};
8442
- var_Arr[key].value = val.value;
8443
- //--------------
8444
- const replace_value_in_string = function (retP, fieldIdP) {
8445
- if (
8446
- iterate_info?.iterator_key === fieldIdP ||
8447
- iterate_info?.iterator_val === fieldIdP
8448
- ) {
8449
- if (iterate_info.iterator_key === fieldIdP) {
8450
- retP.value = iterate_info._key;
8451
- }
8452
- if (iterate_info.iterator_val === fieldIdP) {
8453
- retP.value = iterate_info._val;
8317
+ default:
8318
+ ret = valP.toString();
8319
+ break;
8454
8320
  }
8455
8321
  }
8456
8322
 
8457
- const set_value = function (valP) {
8458
- if (typeof valP !== "undefined") {
8459
- var_Arr[key].value = valP;
8460
- if (typeof valP === "string") var_Arr[key].type = "string";
8461
- } else {
8462
- if (retP.type === "object") {
8463
- var_Arr[key].value = "";
8464
- var_Arr[key].type = "string";
8323
+ ret = ret.replace(/\&/g, "&");
8324
+ const end_results = function () {
8325
+ const replace_quotes = function (ret) {
8326
+ for (const [key, val] of Object.entries(fields)) {
8327
+ if (typeof val === "string")
8328
+ ret = ret.replace('"' + val + '"', val.replace(/"/gi, ""));
8329
+ }
8330
+ return ret;
8331
+ };
8332
+ if (sourceP === "update" || sourceP === "javascript") {
8333
+ if (typeof ret === "string") ret = replace_quotes(ret);
8334
+ }
8335
+ const log_error = function () {
8336
+ if (SESSION_OBJ[SESSION_ID].DS_GLB[dsSessionP]) {
8337
+ func.utils.debug.log(
8338
+ SESSION_ID,
8339
+ SESSION_OBJ[SESSION_ID].DS_GLB[dsSessionP].nodeId,
8340
+ {
8341
+ module: "expression",
8342
+ action: sourceP,
8343
+ source: calling_fieldIdP,
8344
+ prop: ret,
8345
+ details: ret,
8346
+ result: ret,
8347
+ error: error,
8348
+ warning: warning,
8349
+ fields: null,
8350
+ type: "exp",
8351
+ prog_id: SESSION_OBJ[SESSION_ID].DS_GLB[dsSessionP].prog_id,
8352
+ debug_info: debug_infoP,
8353
+ }
8354
+ );
8465
8355
  }
8356
+ };
8357
+ if (error) log_error();
8358
+ // if (error || warning) log_error();
8359
+ return {
8360
+ result: ret,
8361
+ fields: fields,
8362
+ res: res,
8363
+ explain: result,
8364
+ error: error,
8365
+ warning: warning,
8366
+ req: valP,
8367
+ var_error_found: var_error_found,
8368
+ };
8369
+ };
8370
+ const variable_not_exist = async function () {
8371
+ try {
8372
+ if (sourceP !== "arguments") {
8373
+ if (ret && ret.substr(0, 6) === "_DATE_") {
8374
+ ret = ret.substr(6);
8375
+ } else if (
8376
+ (ret &&
8377
+ ret.length === 10 &&
8378
+ ret.substr(4, 1) === "-" &&
8379
+ ret.substr(7, 1) === "-") ||
8380
+ ret === "self" // bypass eval for date 2017-03-22
8381
+ ) {
8382
+ ret = ret;
8383
+ } else {
8384
+ // ret = secure_eval(ret); //eval(ret);
8385
+ ret = await func.expression.secure_eval(
8386
+ SESSION_ID,
8387
+ sourceP,
8388
+ ret,
8389
+ jobNo,
8390
+ dsSessionP,
8391
+ js_script_callback
8392
+ );
8393
+ }
8394
+ // console.log("AFTER OK", ret)
8395
+ return end_results();
8396
+ } else {
8397
+ // do eval for arithmetic vals
8398
+ ret = ret.replace(/_NULL/gi, "");
8399
+ return end_results();
8400
+ }
8401
+ } catch (err) {
8402
+ // console.error(err);
8403
+ return end_results();
8466
8404
  }
8467
8405
  };
8468
-
8469
- if (sourceP === "exp" && retP.type !== "exp") {
8470
- var_Arr[key].type = retP.type;
8471
- return;
8472
- }
8473
- if (typeof retP.value !== "undefined") {
8474
- var_Arr[key].type = retP.type;
8475
- var_Arr[key].value = retP.value;
8476
- if ((val.value.indexOf("[") > -1) | (val.value.indexOf(".") > -1)) {
8477
- //get values from array '@var==="sss" && @var_B==="sss" && @obj.property===5 && @objA["value"]===123 | @objB["value"].property===1234'
8478
- var data = retP.prop;
8479
- if (retP.type === "object") data = retP.value;
8480
- var property1, property2;
8481
- //check for split situation: @objB[@var].property 1: @objB[ 2:@var].property
8406
+ if (!func.expression.validate_variables(valP)) {
8407
+ return await variable_not_exist();
8408
+ }
8409
+ var split = [];
8410
+ var var_Arr = [];
8411
+ split = func.expression.parse(ret);
8412
+ for await (const [arr_key, val] of Object.entries(split)) {
8413
+ // run each field
8414
+ const key = Number(arr_key);
8415
+ var_Arr[key] = {};
8416
+ var_Arr[key].value = val.value;
8417
+ //--------------
8418
+ const replace_value_in_string = function (retP, fieldIdP) {
8482
8419
  if (
8483
- val.value.indexOf("[") === -1 &&
8484
- val.value.indexOf("]") > -1 &&
8485
- val.value.substr(0, 1) === "@"
8420
+ iterate_info?.iterator_key === fieldIdP ||
8421
+ iterate_info?.iterator_val === fieldIdP
8486
8422
  ) {
8487
- //check situation 2
8488
- var prevData = var_Arr[key - 1].value;
8489
- var_Arr[key].value = prevData[data]; // @objB[@var]
8490
- if (val.value.indexOf(".") > -1) {
8491
- property2 = func.expression.get_property(val.value).property2; //val.value.substr(val.value.indexOf(".") + 1, val.value.length); // get .
8492
- if (prevData[data]) set_value(prevData[data][property2]);
8493
- // var_Arr[key].value = prevData[data][property2]; //@objB[@var].property
8423
+ if (iterate_info.iterator_key === fieldIdP) {
8424
+ retP.value = iterate_info._key;
8494
8425
  }
8495
- delete var_Arr[key - 1];
8496
- } else {
8497
- property1 = func.expression.get_property(val.value).property1;
8498
- property2 = func.expression.get_property(val.value).property2;
8499
- if (property1) {
8500
- var_Arr[key].value = data[property1]; // @var["value"] or @var.property
8501
- if (property2) {
8502
- if (data[property1]) set_value(data[property1][property2]);
8426
+ if (iterate_info.iterator_val === fieldIdP) {
8427
+ retP.value = iterate_info._val;
8428
+ }
8429
+ }
8430
+
8431
+ const set_value = function (valP) {
8432
+ if (typeof valP !== "undefined") {
8433
+ var_Arr[key].value = valP;
8434
+ if (typeof valP === "string") var_Arr[key].type = "string";
8435
+ } else {
8436
+ if (retP.type === "object") {
8437
+ var_Arr[key].value = "";
8438
+ var_Arr[key].type = "string";
8503
8439
  }
8504
8440
  }
8505
- if (property2 && !property1) {
8441
+ };
8442
+
8443
+ if (sourceP === "exp" && retP.type !== "exp") {
8444
+ var_Arr[key].type = retP.type;
8445
+ return;
8446
+ }
8447
+ if (typeof retP.value !== "undefined") {
8448
+ var_Arr[key].type = retP.type;
8449
+ var_Arr[key].value = retP.value;
8450
+ if ((val.value.indexOf("[") > -1) | (val.value.indexOf(".") > -1)) {
8451
+ //get values from array '@var==="sss" && @var_B==="sss" && @obj.property===5 && @objA["value"]===123 | @objB["value"].property===1234'
8452
+ var data = retP.prop;
8453
+ if (retP.type === "object") data = retP.value;
8454
+ var property1, property2;
8455
+ //check for split situation: @objB[@var].property 1: @objB[ 2:@var].property
8506
8456
  if (
8507
- data //data[property2]
8457
+ val.value.indexOf("[") === -1 &&
8458
+ val.value.indexOf("]") > -1 &&
8459
+ val.value.substr(0, 1) === "@"
8508
8460
  ) {
8509
- set_value(data[property2]);
8461
+ //check situation 2
8462
+ var prevData = var_Arr[key - 1].value;
8463
+ var_Arr[key].value = prevData[data]; // @objB[@var]
8464
+ if (val.value.indexOf(".") > -1) {
8465
+ property2 = func.expression.get_property(val.value).property2; //val.value.substr(val.value.indexOf(".") + 1, val.value.length); // get .
8466
+ if (prevData[data]) set_value(prevData[data][property2]);
8467
+ // var_Arr[key].value = prevData[data][property2]; //@objB[@var].property
8468
+ }
8469
+ delete var_Arr[key - 1];
8470
+ } else {
8471
+ property1 = func.expression.get_property(val.value).property1;
8472
+ property2 = func.expression.get_property(val.value).property2;
8473
+ if (property1) {
8474
+ var_Arr[key].value = data[property1]; // @var["value"] or @var.property
8475
+ if (property2) {
8476
+ if (data[property1]) set_value(data[property1][property2]);
8477
+ }
8478
+ }
8479
+ if (property2 && !property1) {
8480
+ if (
8481
+ data //data[property2]
8482
+ ) {
8483
+ set_value(data[property2]);
8484
+ }
8485
+ }
8510
8486
  }
8487
+ fields[fieldIdP] = var_Arr[key].value; // added 051017 to allow @SYS_GLOBAL_OBJ_WIDGET_INFO.doc_id
8488
+ var_Arr[key].fieldId = fieldIdP;
8489
+ } else {
8490
+ fields[fieldIdP] = var_Arr[key].value; // update flat no warpers
8491
+ var_Arr[key].fieldId = fieldIdP;
8511
8492
  }
8512
8493
  }
8513
- fields[fieldIdP] = var_Arr[key].value; // added 051017 to allow @SYS_GLOBAL_OBJ_WIDGET_INFO.doc_id
8514
- var_Arr[key].fieldId = fieldIdP;
8515
- } else {
8516
- fields[fieldIdP] = var_Arr[key].value; // update flat no warpers
8517
- var_Arr[key].fieldId = fieldIdP;
8518
- }
8519
- }
8520
- };
8521
- //>>>>>>>>>>>>>>>>>>
8522
- //>>>> start here >>
8523
- //>>>>>>>>>>>>>>>>>>
8524
- if (val.fieldId) {
8525
- // @_THIS
8526
- if (
8527
- val.fieldId &&
8528
- val.fieldId.substr(0, 5) === "_THIS" &&
8529
- calling_fieldIdP &&
8530
- (val.fieldId.length === 5 ||
8531
- (val.fieldId.length > 5 && val.fieldId.substr(5, 1) === "."))
8532
- ) {
8533
- if (val.fieldId.length === 5) val.fieldId = calling_fieldIdP;
8534
- else
8535
- val.fieldId =
8536
- calling_fieldIdP + val.fieldId(5, val.fieldId.length - 1);
8537
- }
8538
- if (!sourceP === "exp") {
8539
- var_Arr[key].value = '""';
8540
- } // put default
8541
- fields[val.fieldId] = var_Arr[key].value;
8542
-
8543
- const ret = await func.datasource.get_value(
8544
- SESSION_ID,
8545
- val.fieldId,
8546
- dsSessionP,
8494
+ };
8495
+ //>>>>>>>>>>>>>>>>>>
8496
+ //>>>> start here >>
8497
+ //>>>>>>>>>>>>>>>>>>
8498
+ if (val.fieldId) {
8499
+ // @_THIS
8500
+ if (
8501
+ val.fieldId &&
8502
+ val.fieldId.substr(0, 5) === "_THIS" &&
8503
+ calling_fieldIdP &&
8504
+ (val.fieldId.length === 5 ||
8505
+ (val.fieldId.length > 5 && val.fieldId.substr(5, 1) === "."))
8506
+ ) {
8507
+ if (val.fieldId.length === 5) val.fieldId = calling_fieldIdP;
8508
+ else
8509
+ val.fieldId =
8510
+ calling_fieldIdP + val.fieldId(5, val.fieldId.length - 1);
8511
+ }
8512
+ if (!sourceP === "exp") {
8513
+ var_Arr[key].value = '""';
8514
+ } // put default
8515
+ fields[val.fieldId] = var_Arr[key].value;
8547
8516
 
8548
- rowIdP
8549
- ); // find field in dataSources
8517
+ const ret = await func.datasource.get_value(
8518
+ SESSION_ID,
8519
+ val.fieldId,
8520
+ dsSessionP,
8550
8521
 
8551
- replace_value_in_string(ret.ret, ret.fieldIdP);
8552
- }
8553
- }
8554
- try {
8555
- // eval the expression
8556
- var res = [];
8557
- var exp_exist;
8558
- var var_error_found;
8559
- // merge arr values
8560
- _.forEach(var_Arr, function (val, key) {
8561
- if (sourceP === "UI Property EXP") {
8562
- let ret = func.utils.get_drive_url(SESSION_ID, val.value, true);
8563
- if (ret.changed) {
8564
- res[key] = ret.value;
8565
- return true;
8566
- }
8567
- }
8522
+ rowIdP
8523
+ ); // find field in dataSources
8568
8524
 
8569
- if (sourceP === "UI Attr EXP") {
8570
- let ret = func.utils.get_drive_url(
8571
- SESSION_ID,
8572
- val.value,
8573
- var_Arr.length == 1 ? false : true
8574
- );
8575
- if (ret.changed) {
8576
- res[key] = ret.value;
8577
- return true;
8525
+ replace_value_in_string(ret.ret, ret.fieldIdP);
8578
8526
  }
8579
8527
  }
8580
-
8581
- if (val.type === "exp") {
8582
- exp_exist = true;
8583
- }
8584
- res[key] = val.value;
8585
- if (
8586
- sourceP !== "DbQuery" &&
8587
- sourceP !== "alert" &&
8588
- sourceP !== "exp" &&
8589
- sourceP !== "api_rendered_output" &&
8590
- (val.type === "string" || val.type === "date" || val.type === "time") &&
8591
- var_Arr.length > 1
8592
- ) {
8593
- res[key] = "`" + val.value + "`"; //res[key] = "'" + val.value + "'"; //
8594
- }
8595
- if (val.fieldId && val.value && typeof val.value === "string") {
8596
- if (
8597
- sourceP === "query" ||
8598
- sourceP === "condition" ||
8599
- sourceP === "range" ||
8600
- sourceP === "sort" ||
8601
- sourceP === "locate"
8602
- ) {
8603
- if (val.value.indexOf("↵") > -1) {
8604
- res[key] = val.value.split("↵").join("");
8528
+ try {
8529
+ // eval the expression
8530
+ var res = [];
8531
+ var exp_exist;
8532
+ var var_error_found;
8533
+ // merge arr values
8534
+ _.forEach(var_Arr, function (val, key) {
8535
+ if (sourceP === "UI Property EXP") {
8536
+ let ret = func.utils.get_drive_url(SESSION_ID, val.value, true);
8537
+ if (ret.changed) {
8538
+ res[key] = ret.value;
8539
+ return true;
8540
+ }
8605
8541
  }
8606
- res[key] = res[key].replace(/(\r\n|\n|\r)/gm, ""); //.replace(/"/g,'\"');//.replace(/'/g,"");
8607
- }
8608
8542
 
8609
- if (
8610
- sourceP === "init" ||
8611
- sourceP === "update" ||
8612
- sourceP === "virtual"
8613
- ) {
8614
- if (val.value.indexOf("↵") > -1)
8615
- res[key] = val.value.split("↵").join("\n");
8616
- res[key] = res[key].replace(/(\r\n|\n|\r)/gm, "\\n");
8617
- }
8543
+ if (sourceP === "UI Attr EXP") {
8544
+ let ret = func.utils.get_drive_url(
8545
+ SESSION_ID,
8546
+ val.value,
8547
+ var_Arr.length == 1 ? false : true
8548
+ );
8549
+ if (ret.changed) {
8550
+ res[key] = ret.value;
8551
+ return true;
8552
+ }
8553
+ }
8618
8554
 
8619
- if (typeof IS_PROCESS_SERVER !== "undefined") {
8620
- res[key] = res[key].replace(/(\r\n|\n|\r)/gm, "<br>");
8621
- }
8555
+ if (val.type === "exp") {
8556
+ exp_exist = true;
8557
+ }
8558
+ res[key] = val.value;
8559
+ if (
8560
+ sourceP !== "DbQuery" &&
8561
+ sourceP !== "alert" &&
8562
+ sourceP !== "exp" &&
8563
+ sourceP !== "api_rendered_output" &&
8564
+ (val.type === "string" ||
8565
+ val.type === "date" ||
8566
+ val.type === "time") &&
8567
+ var_Arr.length > 1
8568
+ ) {
8569
+ res[key] = "`" + val.value + "`"; //res[key] = "'" + val.value + "'"; //
8570
+ }
8571
+ if (val.fieldId && val.value && typeof val.value === "string") {
8572
+ if (
8573
+ sourceP === "query" ||
8574
+ sourceP === "condition" ||
8575
+ sourceP === "range" ||
8576
+ sourceP === "sort" ||
8577
+ sourceP === "locate"
8578
+ ) {
8579
+ if (val.value.indexOf("↵") > -1) {
8580
+ res[key] = val.value.split("↵").join("");
8581
+ }
8582
+ res[key] = res[key].replace(/(\r\n|\n|\r)/gm, ""); //.replace(/"/g,'\"');//.replace(/'/g,"");
8583
+ }
8622
8584
 
8623
- fields[val.fieldId] = res[key];
8624
- }
8625
- // extract object
8626
- if (typeof val.value === "object" && var_Arr.length > 1) {
8627
- if (
8628
- !Array.isArray(val.value) &&
8629
- !var_Arr[key + 1].value?.includes(".")
8630
- ) {
8631
- // prevent cast on single value expression
8632
- res[key] = "(" + JSON.stringify(val.value) + ")";
8633
- } else {
8634
- res[key] = JSON.stringify(val.value);
8635
- }
8636
- }
8585
+ if (
8586
+ sourceP === "init" ||
8587
+ sourceP === "update" ||
8588
+ sourceP === "virtual"
8589
+ ) {
8590
+ if (val.value.indexOf("↵") > -1)
8591
+ res[key] = val.value.split("↵").join("\n");
8592
+ res[key] = res[key].replace(/(\r\n|\n|\r)/gm, "\\n");
8593
+ }
8637
8594
 
8638
- if (
8639
- !exp_exist &&
8640
- sourceP !== "exp" &&
8641
- val.value &&
8642
- typeof val.value === "string" &&
8643
- val.value.substr(0, 1) === "@"
8644
- ) {
8645
- warning = "Error encoding " + val.value;
8646
- var_error_found = true;
8647
- res[key] = 0;
8648
- }
8649
- });
8650
- var join = function (arrP) {
8651
- return arrP.join("");
8652
- };
8653
- var exp = undefined;
8654
- if (exp_exist && sourceP !== "exp") {
8655
- exp = await func.expression.get(
8656
- SESSION_ID,
8657
- join(res),
8658
- dsSessionP,
8659
- sourceP,
8660
- rowIdP,
8661
- sourceActionP,
8662
- true,
8663
- calling_fieldIdP,
8664
- fields,
8665
- debug_infoP
8666
- );
8667
- if (exp.res) res = exp.res;
8668
- // do second pass when exp exist
8669
- else res = [exp.result];
8670
- fields = _.assignIn(exp.fields, fieldsP);
8671
- }
8672
- var result = join(res); //res.join("");
8595
+ if (typeof IS_PROCESS_SERVER !== "undefined") {
8596
+ res[key] = res[key].replace(/(\r\n|\n|\r)/gm, "<br>");
8597
+ }
8673
8598
 
8674
- if (res.length === 1) {
8675
- // bypass join for single value expression
8676
- result = res[0];
8677
- }
8599
+ fields[val.fieldId] = res[key];
8600
+ }
8601
+ // extract object
8602
+ if (typeof val.value === "object" && var_Arr.length > 1) {
8603
+ if (
8604
+ !Array.isArray(val.value) &&
8605
+ !var_Arr[key + 1].value?.includes(".")
8606
+ ) {
8607
+ // prevent cast on single value expression
8608
+ res[key] = "(" + JSON.stringify(val.value) + ")";
8609
+ } else {
8610
+ res[key] = JSON.stringify(val.value);
8611
+ }
8612
+ }
8678
8613
 
8679
- if (secondPassP) {
8680
- ret = result;
8681
- } else if (sourceP !== "exp") {
8682
- // no eval for second pass
8683
- // return single value
8684
- if (
8685
- res.length === 1 &&
8686
- typeof res[0] === "string" &&
8687
- typeof res[0] !== "object"
8688
- ) {
8689
- // avoid eval when query leading zeros problem
8690
- ret = join(res); // res.join("");
8691
- if (ret && ret.substr(0, 1) === "@") {
8692
- error = "Error encoding @ var";
8693
- var_error_found = true;
8694
- }
8695
- } else {
8696
- if (
8697
- sourceP !== "arguments" &&
8698
- sourceP !== "alert" &&
8699
- sourceP !== "api_rendered_output" &&
8700
- sourceP !== "DbQuery"
8701
- ) {
8702
- // ret = secure_eval(result); // eval(result);
8703
- ret = await func.expression.secure_eval(
8614
+ if (
8615
+ !exp_exist &&
8616
+ sourceP !== "exp" &&
8617
+ val.value &&
8618
+ typeof val.value === "string" &&
8619
+ val.value.substr(0, 1) === "@"
8620
+ ) {
8621
+ warning = "Error encoding " + val.value;
8622
+ var_error_found = true;
8623
+ res[key] = 0;
8624
+ }
8625
+ });
8626
+ var join = function (arrP) {
8627
+ return arrP.join("");
8628
+ };
8629
+ var exp = undefined;
8630
+ if (exp_exist && sourceP !== "exp") {
8631
+ exp = await func.expression.get(
8704
8632
  SESSION_ID,
8705
- sourceP,
8706
- result,
8707
- jobNo,
8633
+ join(res),
8708
8634
  dsSessionP,
8709
- js_script_callback
8635
+ sourceP,
8636
+ rowIdP,
8637
+ sourceActionP,
8638
+ true,
8639
+ calling_fieldIdP,
8640
+ fields,
8641
+ debug_infoP
8710
8642
  );
8711
- } else {
8712
- if (sourceP === "DbQuery") {
8713
- ret = JSON.stringify(evalJson(result));
8643
+ if (exp.res) res = exp.res;
8644
+ // do second pass when exp exist
8645
+ else res = [exp.result];
8646
+ fields = _.assignIn(exp.fields, fieldsP);
8647
+ }
8648
+ var result = join(res); //res.join("");
8649
+
8650
+ if (res.length === 1) {
8651
+ // bypass join for single value expression
8652
+ result = res[0];
8653
+ }
8654
+
8655
+ if (secondPassP) {
8656
+ ret = result;
8657
+ } else if (sourceP !== "exp") {
8658
+ // no eval for second pass
8659
+ // return single value
8660
+ if (
8661
+ res.length === 1 &&
8662
+ typeof res[0] === "string" &&
8663
+ typeof res[0] !== "object"
8664
+ ) {
8665
+ // avoid eval when query leading zeros problem
8666
+ ret = join(res); // res.join("");
8667
+ if (ret && ret.substr(0, 1) === "@") {
8668
+ error = "Error encoding @ var";
8669
+ var_error_found = true;
8670
+ }
8714
8671
  } else {
8715
- // try eval
8716
- ret = result;
8672
+ if (
8673
+ sourceP !== "arguments" &&
8674
+ sourceP !== "alert" &&
8675
+ sourceP !== "api_rendered_output" &&
8676
+ sourceP !== "DbQuery"
8677
+ ) {
8678
+ // ret = secure_eval(result); // eval(result);
8679
+ ret = await func.expression.secure_eval(
8680
+ SESSION_ID,
8681
+ sourceP,
8682
+ result,
8683
+ jobNo,
8684
+ dsSessionP,
8685
+ js_script_callback
8686
+ );
8687
+ } else {
8688
+ if (sourceP === "DbQuery") {
8689
+ ret = JSON.stringify(evalJson(result));
8690
+ } else {
8691
+ // try eval
8692
+ ret = result;
8693
+ }
8694
+ }
8717
8695
  }
8718
8696
  }
8697
+ // console.log("AAAA")
8698
+ return end_results();
8699
+ } catch (err) {
8700
+ ret = result; // skip eval on error
8701
+ error = err.message;
8702
+
8703
+ return end_results();
8719
8704
  }
8720
8705
  }
8721
- // console.log("AAAA")
8722
- return end_results();
8723
- } catch (err) {
8724
- ret = result; // skip eval on error
8725
- error = err.message;
8726
-
8727
- return end_results();
8728
8706
  }
8729
- // }
8730
- // else {
8731
- // return variable_not_exist();
8732
- // //===========================
8733
- // // variable not exist
8734
- // }
8735
- // >>>> return results <<<<<<<<<
8707
+
8708
+ const new_class = new xu_class();
8709
+ return new_class.get();
8736
8710
  };
8711
+
8712
+ // func.expression.get = async function (
8713
+ // SESSION_ID,
8714
+ // valP,
8715
+ // dsSessionP,
8716
+ // sourceP,
8717
+ // rowIdP,
8718
+ // sourceActionP,
8719
+ // secondPassP,
8720
+ // calling_fieldIdP,
8721
+ // fieldsP,
8722
+ // debug_infoP,
8723
+ // iterate_info,
8724
+ // js_script_callback,
8725
+ // jobNo
8726
+ // ) {
8727
+ // var ret;
8728
+ // var fields = {};
8729
+ // var error;
8730
+ // var warning;
8731
+
8732
+ // function evalJson(text) {
8733
+ // return eval("(" + text + ")");
8734
+ // }
8735
+
8736
+ // if (valP === null) {
8737
+ // ret = "";
8738
+ // } else {
8739
+ // switch (typeof valP) {
8740
+ // case "string":
8741
+ // ret = valP;
8742
+ // break;
8743
+
8744
+ // case "undefined":
8745
+ // ret = "";
8746
+ // break;
8747
+
8748
+ // case "boolean":
8749
+ // ret = valP ? "Y" : "N";
8750
+ // break;
8751
+
8752
+ // default:
8753
+ // ret = valP.toString();
8754
+ // break;
8755
+ // }
8756
+ // }
8757
+
8758
+ // ret = ret.replace(/\&amp;/g, "&");
8759
+ // const end_results = function () {
8760
+ // const replace_quotes = function (ret) {
8761
+ // for (const [key, val] of Object.entries(fields)) {
8762
+ // if (typeof val === "string")
8763
+ // ret = ret.replace('"' + val + '"', val.replace(/"/gi, ""));
8764
+ // }
8765
+ // return ret;
8766
+ // };
8767
+ // if (sourceP === "update" || sourceP === "javascript") {
8768
+ // if (typeof ret === "string") ret = replace_quotes(ret);
8769
+ // }
8770
+ // const log_error = function () {
8771
+ // if (SESSION_OBJ[SESSION_ID].DS_GLB[dsSessionP]) {
8772
+ // func.utils.debug.log(
8773
+ // SESSION_ID,
8774
+ // SESSION_OBJ[SESSION_ID].DS_GLB[dsSessionP].nodeId,
8775
+ // {
8776
+ // module: "expression",
8777
+ // action: sourceP,
8778
+ // source: calling_fieldIdP,
8779
+ // prop: ret,
8780
+ // details: ret,
8781
+ // result: ret,
8782
+ // error: error,
8783
+ // warning: warning,
8784
+ // fields: null,
8785
+ // type: "exp",
8786
+ // prog_id: SESSION_OBJ[SESSION_ID].DS_GLB[dsSessionP].prog_id,
8787
+ // debug_info: debug_infoP,
8788
+ // }
8789
+ // );
8790
+ // }
8791
+ // };
8792
+ // if (error) log_error();
8793
+ // // if (error || warning) log_error();
8794
+ // return {
8795
+ // result: ret,
8796
+ // fields: fields,
8797
+ // res: res,
8798
+ // explain: result,
8799
+ // error: error,
8800
+ // warning: warning,
8801
+ // req: valP,
8802
+ // var_error_found: var_error_found,
8803
+ // };
8804
+ // };
8805
+ // const variable_not_exist = async function () {
8806
+ // try {
8807
+ // if (sourceP !== "arguments") {
8808
+ // if (ret && ret.substr(0, 6) === "_DATE_") {
8809
+ // ret = ret.substr(6);
8810
+ // } else if (
8811
+ // (ret &&
8812
+ // ret.length === 10 &&
8813
+ // ret.substr(4, 1) === "-" &&
8814
+ // ret.substr(7, 1) === "-") ||
8815
+ // ret === "self" // bypass eval for date 2017-03-22
8816
+ // ) {
8817
+ // ret = ret;
8818
+ // } else {
8819
+ // // ret = secure_eval(ret); //eval(ret);
8820
+ // ret = await func.expression.secure_eval(
8821
+ // SESSION_ID,
8822
+ // sourceP,
8823
+ // ret,
8824
+ // jobNo,
8825
+ // dsSessionP,
8826
+ // js_script_callback
8827
+ // );
8828
+ // }
8829
+ // // console.log("AFTER OK", ret)
8830
+ // return end_results();
8831
+ // } else {
8832
+ // // do eval for arithmetic vals
8833
+ // ret = ret.replace(/_NULL/gi, "");
8834
+ // return end_results();
8835
+ // }
8836
+ // } catch (err) {
8837
+ // // console.error(err);
8838
+ // return end_results();
8839
+ // }
8840
+ // };
8841
+ // if (!func.expression.validate_variables(valP)) {
8842
+ // return await variable_not_exist();
8843
+ // }
8844
+ // var split = [];
8845
+ // var var_Arr = [];
8846
+ // split = func.expression.parse(ret);
8847
+ // for await (const [arr_key, val] of Object.entries(split)) {
8848
+ // // run each field
8849
+ // const key = Number(arr_key);
8850
+ // var_Arr[key] = {};
8851
+ // var_Arr[key].value = val.value;
8852
+ // //--------------
8853
+ // const replace_value_in_string = function (retP, fieldIdP) {
8854
+ // if (
8855
+ // iterate_info?.iterator_key === fieldIdP ||
8856
+ // iterate_info?.iterator_val === fieldIdP
8857
+ // ) {
8858
+ // if (iterate_info.iterator_key === fieldIdP) {
8859
+ // retP.value = iterate_info._key;
8860
+ // }
8861
+ // if (iterate_info.iterator_val === fieldIdP) {
8862
+ // retP.value = iterate_info._val;
8863
+ // }
8864
+ // }
8865
+
8866
+ // const set_value = function (valP) {
8867
+ // if (typeof valP !== "undefined") {
8868
+ // var_Arr[key].value = valP;
8869
+ // if (typeof valP === "string") var_Arr[key].type = "string";
8870
+ // } else {
8871
+ // if (retP.type === "object") {
8872
+ // var_Arr[key].value = "";
8873
+ // var_Arr[key].type = "string";
8874
+ // }
8875
+ // }
8876
+ // };
8877
+
8878
+ // if (sourceP === "exp" && retP.type !== "exp") {
8879
+ // var_Arr[key].type = retP.type;
8880
+ // return;
8881
+ // }
8882
+ // if (typeof retP.value !== "undefined") {
8883
+ // var_Arr[key].type = retP.type;
8884
+ // var_Arr[key].value = retP.value;
8885
+ // if ((val.value.indexOf("[") > -1) | (val.value.indexOf(".") > -1)) {
8886
+ // //get values from array '@var==="sss" && @var_B==="sss" && @obj.property===5 && @objA["value"]===123 | @objB["value"].property===1234'
8887
+ // var data = retP.prop;
8888
+ // if (retP.type === "object") data = retP.value;
8889
+ // var property1, property2;
8890
+ // //check for split situation: @objB[@var].property 1: @objB[ 2:@var].property
8891
+ // if (
8892
+ // val.value.indexOf("[") === -1 &&
8893
+ // val.value.indexOf("]") > -1 &&
8894
+ // val.value.substr(0, 1) === "@"
8895
+ // ) {
8896
+ // //check situation 2
8897
+ // var prevData = var_Arr[key - 1].value;
8898
+ // var_Arr[key].value = prevData[data]; // @objB[@var]
8899
+ // if (val.value.indexOf(".") > -1) {
8900
+ // property2 = func.expression.get_property(val.value).property2; //val.value.substr(val.value.indexOf(".") + 1, val.value.length); // get .
8901
+ // if (prevData[data]) set_value(prevData[data][property2]);
8902
+ // // var_Arr[key].value = prevData[data][property2]; //@objB[@var].property
8903
+ // }
8904
+ // delete var_Arr[key - 1];
8905
+ // } else {
8906
+ // property1 = func.expression.get_property(val.value).property1;
8907
+ // property2 = func.expression.get_property(val.value).property2;
8908
+ // if (property1) {
8909
+ // var_Arr[key].value = data[property1]; // @var["value"] or @var.property
8910
+ // if (property2) {
8911
+ // if (data[property1]) set_value(data[property1][property2]);
8912
+ // }
8913
+ // }
8914
+ // if (property2 && !property1) {
8915
+ // if (
8916
+ // data //data[property2]
8917
+ // ) {
8918
+ // set_value(data[property2]);
8919
+ // }
8920
+ // }
8921
+ // }
8922
+ // fields[fieldIdP] = var_Arr[key].value; // added 051017 to allow @SYS_GLOBAL_OBJ_WIDGET_INFO.doc_id
8923
+ // var_Arr[key].fieldId = fieldIdP;
8924
+ // } else {
8925
+ // fields[fieldIdP] = var_Arr[key].value; // update flat no warpers
8926
+ // var_Arr[key].fieldId = fieldIdP;
8927
+ // }
8928
+ // }
8929
+ // };
8930
+ // //>>>>>>>>>>>>>>>>>>
8931
+ // //>>>> start here >>
8932
+ // //>>>>>>>>>>>>>>>>>>
8933
+ // if (val.fieldId) {
8934
+ // // @_THIS
8935
+ // if (
8936
+ // val.fieldId &&
8937
+ // val.fieldId.substr(0, 5) === "_THIS" &&
8938
+ // calling_fieldIdP &&
8939
+ // (val.fieldId.length === 5 ||
8940
+ // (val.fieldId.length > 5 && val.fieldId.substr(5, 1) === "."))
8941
+ // ) {
8942
+ // if (val.fieldId.length === 5) val.fieldId = calling_fieldIdP;
8943
+ // else
8944
+ // val.fieldId =
8945
+ // calling_fieldIdP + val.fieldId(5, val.fieldId.length - 1);
8946
+ // }
8947
+ // if (!sourceP === "exp") {
8948
+ // var_Arr[key].value = '""';
8949
+ // } // put default
8950
+ // fields[val.fieldId] = var_Arr[key].value;
8951
+
8952
+ // const ret = await func.datasource.get_value(
8953
+ // SESSION_ID,
8954
+ // val.fieldId,
8955
+ // dsSessionP,
8956
+
8957
+ // rowIdP
8958
+ // ); // find field in dataSources
8959
+
8960
+ // replace_value_in_string(ret.ret, ret.fieldIdP);
8961
+ // }
8962
+ // }
8963
+ // try {
8964
+ // // eval the expression
8965
+ // var res = [];
8966
+ // var exp_exist;
8967
+ // var var_error_found;
8968
+ // // merge arr values
8969
+ // _.forEach(var_Arr, function (val, key) {
8970
+ // if (sourceP === "UI Property EXP") {
8971
+ // let ret = func.utils.get_drive_url(SESSION_ID, val.value, true);
8972
+ // if (ret.changed) {
8973
+ // res[key] = ret.value;
8974
+ // return true;
8975
+ // }
8976
+ // }
8977
+
8978
+ // if (sourceP === "UI Attr EXP") {
8979
+ // let ret = func.utils.get_drive_url(
8980
+ // SESSION_ID,
8981
+ // val.value,
8982
+ // var_Arr.length == 1 ? false : true
8983
+ // );
8984
+ // if (ret.changed) {
8985
+ // res[key] = ret.value;
8986
+ // return true;
8987
+ // }
8988
+ // }
8989
+
8990
+ // if (val.type === "exp") {
8991
+ // exp_exist = true;
8992
+ // }
8993
+ // res[key] = val.value;
8994
+ // if (
8995
+ // sourceP !== "DbQuery" &&
8996
+ // sourceP !== "alert" &&
8997
+ // sourceP !== "exp" &&
8998
+ // sourceP !== "api_rendered_output" &&
8999
+ // (val.type === "string" || val.type === "date" || val.type === "time") &&
9000
+ // var_Arr.length > 1
9001
+ // ) {
9002
+ // res[key] = "`" + val.value + "`"; //res[key] = "'" + val.value + "'"; //
9003
+ // }
9004
+ // if (val.fieldId && val.value && typeof val.value === "string") {
9005
+ // if (
9006
+ // sourceP === "query" ||
9007
+ // sourceP === "condition" ||
9008
+ // sourceP === "range" ||
9009
+ // sourceP === "sort" ||
9010
+ // sourceP === "locate"
9011
+ // ) {
9012
+ // if (val.value.indexOf("↵") > -1) {
9013
+ // res[key] = val.value.split("↵").join("");
9014
+ // }
9015
+ // res[key] = res[key].replace(/(\r\n|\n|\r)/gm, ""); //.replace(/"/g,'\"');//.replace(/'/g,"");
9016
+ // }
9017
+
9018
+ // if (
9019
+ // sourceP === "init" ||
9020
+ // sourceP === "update" ||
9021
+ // sourceP === "virtual"
9022
+ // ) {
9023
+ // if (val.value.indexOf("↵") > -1)
9024
+ // res[key] = val.value.split("↵").join("\n");
9025
+ // res[key] = res[key].replace(/(\r\n|\n|\r)/gm, "\\n");
9026
+ // }
9027
+
9028
+ // if (typeof IS_PROCESS_SERVER !== "undefined") {
9029
+ // res[key] = res[key].replace(/(\r\n|\n|\r)/gm, "<br>");
9030
+ // }
9031
+
9032
+ // fields[val.fieldId] = res[key];
9033
+ // }
9034
+ // // extract object
9035
+ // if (typeof val.value === "object" && var_Arr.length > 1) {
9036
+ // if (
9037
+ // !Array.isArray(val.value) &&
9038
+ // !var_Arr[key + 1].value?.includes(".")
9039
+ // ) {
9040
+ // // prevent cast on single value expression
9041
+ // res[key] = "(" + JSON.stringify(val.value) + ")";
9042
+ // } else {
9043
+ // res[key] = JSON.stringify(val.value);
9044
+ // }
9045
+ // }
9046
+
9047
+ // if (
9048
+ // !exp_exist &&
9049
+ // sourceP !== "exp" &&
9050
+ // val.value &&
9051
+ // typeof val.value === "string" &&
9052
+ // val.value.substr(0, 1) === "@"
9053
+ // ) {
9054
+ // warning = "Error encoding " + val.value;
9055
+ // var_error_found = true;
9056
+ // res[key] = 0;
9057
+ // }
9058
+ // });
9059
+ // var join = function (arrP) {
9060
+ // return arrP.join("");
9061
+ // };
9062
+ // var exp = undefined;
9063
+ // if (exp_exist && sourceP !== "exp") {
9064
+ // exp = await func.expression.get(
9065
+ // SESSION_ID,
9066
+ // join(res),
9067
+ // dsSessionP,
9068
+ // sourceP,
9069
+ // rowIdP,
9070
+ // sourceActionP,
9071
+ // true,
9072
+ // calling_fieldIdP,
9073
+ // fields,
9074
+ // debug_infoP
9075
+ // );
9076
+ // if (exp.res) res = exp.res;
9077
+ // // do second pass when exp exist
9078
+ // else res = [exp.result];
9079
+ // fields = _.assignIn(exp.fields, fieldsP);
9080
+ // }
9081
+ // var result = join(res); //res.join("");
9082
+
9083
+ // if (res.length === 1) {
9084
+ // // bypass join for single value expression
9085
+ // result = res[0];
9086
+ // }
9087
+
9088
+ // if (secondPassP) {
9089
+ // ret = result;
9090
+ // } else if (sourceP !== "exp") {
9091
+ // // no eval for second pass
9092
+ // // return single value
9093
+ // if (
9094
+ // res.length === 1 &&
9095
+ // typeof res[0] === "string" &&
9096
+ // typeof res[0] !== "object"
9097
+ // ) {
9098
+ // // avoid eval when query leading zeros problem
9099
+ // ret = join(res); // res.join("");
9100
+ // if (ret && ret.substr(0, 1) === "@") {
9101
+ // error = "Error encoding @ var";
9102
+ // var_error_found = true;
9103
+ // }
9104
+ // } else {
9105
+ // if (
9106
+ // sourceP !== "arguments" &&
9107
+ // sourceP !== "alert" &&
9108
+ // sourceP !== "api_rendered_output" &&
9109
+ // sourceP !== "DbQuery"
9110
+ // ) {
9111
+ // // ret = secure_eval(result); // eval(result);
9112
+ // ret = await func.expression.secure_eval(
9113
+ // SESSION_ID,
9114
+ // sourceP,
9115
+ // result,
9116
+ // jobNo,
9117
+ // dsSessionP,
9118
+ // js_script_callback
9119
+ // );
9120
+ // } else {
9121
+ // if (sourceP === "DbQuery") {
9122
+ // ret = JSON.stringify(evalJson(result));
9123
+ // } else {
9124
+ // // try eval
9125
+ // ret = result;
9126
+ // }
9127
+ // }
9128
+ // }
9129
+ // }
9130
+ // // console.log("AAAA")
9131
+ // return end_results();
9132
+ // } catch (err) {
9133
+ // ret = result; // skip eval on error
9134
+ // error = err.message;
9135
+
9136
+ // return end_results();
9137
+ // }
9138
+ // // }
9139
+ // // else {
9140
+ // // return variable_not_exist();
9141
+ // // //===========================
9142
+ // // // variable not exist
9143
+ // // }
9144
+ // // >>>> return results <<<<<<<<<
9145
+ // };
8737
9146
  func.expression.parse = function (strP) {
8738
9147
  var extract_str = function (strP, posP) {
8739
9148
  if (!posP) posP = 0;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xuda.io/xuda-worker-bundle-min",
3
- "version": "1.3.143",
3
+ "version": "1.3.145",
4
4
  "description": "xuda framework min",
5
5
  "main": "index.js",
6
6
  "scripts": {