hrsass-components 2.5.5 → 2.5.7

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.
@@ -65,7 +65,7 @@ var contentStyle = _interopDefault(require('!!raw-loader!tinymce/skins/content/d
65
65
  var SvgPanZoom = _interopDefault(require('svg-pan-zoom'));
66
66
  var saveSvgAsPng = require('save-svg-as-png');
67
67
 
68
- var version = "2.5.5";
68
+ var version = "2.5.7";
69
69
 
70
70
  /**
71
71
  * 版本号
@@ -495,29 +495,82 @@ var capitalizeUpper = function capitalizeUpper(word) {
495
495
 
496
496
  /**
497
497
  * 高阶包装函数,移除过期数据
498
- * @param {Function} fun 待包装函数
499
- * @return {Function} 包装后的函数
498
+ * @param {Function} fun 待包装函数
499
+ * @return {Function} 包装后的函数
500
500
  */
501
501
  var warpFun = function warpFun(fun) {
502
- var stack = [],
503
- self = _this;
502
+ // 参数验证和类型检查
503
+ if (typeof fun !== 'function') {
504
+ throw new TypeError('Expected a function as argument');
505
+ }
506
+ var stack = [];
507
+ // 使用弱引用避免内存泄漏
508
+ var self = _this;
504
509
  return function () {
510
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
511
+ args[_key] = arguments[_key];
512
+ }
513
+ // 验证函数调用上下文
514
+ if (!fun || typeof fun !== 'function') {
515
+ return Promise.reject(new Error('Wrapped function is invalid or has been corrupted'));
516
+ }
505
517
  var length = stack.length + 1;
506
- var arg = arguments;
507
- var p = new Promise(function (reslove, reject) {
508
- fun.apply(self, arg).then(function (res) {
509
- if (stack.length === length) {
510
- console.log('1', stack);
511
- stack = [];
512
- reslove(res);
513
- } else {
514
- console.log('0', stack);
518
+ return new Promise(function (resolve, reject) {
519
+ // 参数验证
520
+ if (!args || !Array.isArray(args)) {
521
+ reject(new Error('Invalid arguments provided'));
522
+ return;
523
+ }
524
+
525
+ // 修复点:在开始异步操作前,同步更新调用栈
526
+ // 推送一个代表本次调用的标识符,这里使用时间戳和随机数确保唯一性
527
+ var callIdentifier = {
528
+ id: Date.now() + Math.random(),
529
+ args: args
530
+ };
531
+ stack.push(callIdentifier);
532
+ try {
533
+ // 执行原函数并处理结果
534
+ var resultPromise = fun.apply(self, args);
535
+
536
+ // 验证返回的是否是Promise
537
+ if (!resultPromise || typeof resultPromise.then !== 'function') {
538
+ reject(new TypeError('Wrapped function must return a Promise'));
539
+ return;
515
540
  }
516
- });
541
+ resultPromise.then(function (res) {
542
+ try {
543
+ // 检查是否为最新调用
544
+ if (stack.length === length) {
545
+ console.log('Processing latest call', stack);
546
+ stack = []; // 清空栈
547
+ resolve(res);
548
+ } else {
549
+ console.log('Discarding stale data', stack);
550
+ // 静默处理过期数据,不抛出错误
551
+ resolve(null); // 或返回特定标识表示数据已过期
552
+ }
553
+ } catch (processingError) {
554
+ console.error('Error processing result:', processingError);
555
+ reject(new Error("Result processing failed: ".concat(processingError.message)));
556
+ }
557
+ })["catch"](function (error) {
558
+ console.error('Wrapped function execution failed:', error);
559
+
560
+ // 根据错误类型进行不同处理
561
+ if (error instanceof TypeError) {
562
+ reject(new Error("Type error in wrapped function: ".concat(error.message)));
563
+ } else if (error instanceof RangeError) {
564
+ reject(new Error("Range error in wrapped function: ".concat(error.message)));
565
+ } else {
566
+ reject(new Error("Execution failed: ".concat(error.message)));
567
+ }
568
+ });
569
+ } catch (syncError) {
570
+ console.error('Synchronous error in wrapped function:', syncError);
571
+ reject(new Error("Synchronous execution error: ".concat(syncError.message)));
572
+ }
517
573
  });
518
- stack.push(arguments[0].conditionList);
519
- // stack.length = length;
520
- return p;
521
574
  };
522
575
  };
523
576
 
@@ -8617,7 +8670,7 @@ var index = {
8617
8670
  loading: false
8618
8671
  });
8619
8672
  _this5.$emit("load");
8620
- })["finally"](function () {
8673
+ })["catch"](function () {
8621
8674
  _this5.setState({
8622
8675
  loading: false
8623
8676
  });