plus-8.x-4.x-dev/js/Drupal.AsyncQueue.js

js/Drupal.AsyncQueue.js
/**
* DO NOT EDIT THIS FILE.
* THIS FILE IS COMPILED AUTOMATICALLY FROM ITS ES6 SOURCE.
* @preserve
**/'use strict';

var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };

var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();

function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }

function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }

(function (Drupal) {
  'use strict';

  var AsyncQueue = function () {
    function AsyncQueue(obj, callback) {
      _classCallCheck(this, AsyncQueue);

      this.callback = callback;
      this.errors = [];
      this.errorCallbacks = [];
      this.object = obj;
      this.processed = [];
    }

    _createClass(AsyncQueue, [{
      key: 'destroy',
      value: function destroy() {
        this.callback = null;
        this.errors = [];
        this.errorCallbacks = [];
        this.object = null;
        this.processed = [];
        return this;
      }
    }, {
      key: 'error',
      value: function error(callback) {
        this.errorCallbacks.push(callback);
        return this;
      }
    }, {
      key: 'getErrors',
      value: function getErrors(reset) {
        var errors = [].concat(_toConsumableArray(this.errors));
        if (reset === undefined || reset) {
          this.errors = [];
        }
        return errors;
      }
    }, {
      key: 'getItems',
      value: function getItems() {
        var obj = this.object;

        if (typeof obj === 'function') {
          obj = obj();
        }

        if (Array.isArray(obj)) {
          return obj.reduce(function (o, v, k) {
            o[k] = v;
            return o;
          }, {});
        }

        return obj;
      }
    }, {
      key: 'getNextItem',
      value: function getNextItem() {
        var items = this.getItems();

        if (typeof items === 'function') {
          items.__asyncQueueId__ = items.name || items.constructor.name || 'anonymous function';
          return items;
        }

        var itemKeys = Object.keys(items);
        for (var i = 0, l = itemKeys.length; i < l; i++) {
          var key = itemKeys[i];
          if (this.processed.indexOf(key) === -1) {
            var item = items[key];
            item.__asyncQueueId__ = key;
            return item;
          }
        }
      }
    }, {
      key: 'process',
      value: function process() {
        var _this = this;

        var item = this.getNextItem();

        var done = function done() {
          _this.processed = [];
          var errors = _this.getErrors();
          if (errors[0]) {
            _this.errorCallbacks.forEach(function (callback) {
              return callback(errors);
            });
          }
          return _this;
        };

        if (!item) {
          return done();
        }

        var fn = void 0;
        var method = void 0;

        for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
          args[_key] = arguments[_key];
        }

        var originalArgs = [].concat(args);
        if (typeof item === 'function') {
          fn = item;
        } else if ((typeof item === 'undefined' ? 'undefined' : _typeof(item)) === 'object') {
          method = args.shift();
          if (typeof method !== 'string') {
            this.errors.push(new Error(Drupal.t('The item being processed is an object. The first argument passed to AsyncQueue.process() must be a stringed method name to invoke on the item: @method', {
              '@method': method
            })));
            return done();
          }
          fn = item[method];
        }

        var async = false;

        var complete = function complete(success) {
          var error = null;

          if (typeof _this.callback === 'function') {
            success = _this.callback.call(item, success);
          }

          if (success === false) {
            error = new Error(Drupal.t('The processed item "@id" failed.', {
              '@id': item.__asyncQueueId__
            }));
          } else if (success instanceof Error || {}.toString.call(success) === '[object Error]') {
              error = success;
              success = false;
            } else {
                success = true;
              }

          if (!success && error) {
            _this.errors.push(error);
          }

          delete item.async;

          if (item.__asyncQueueAsync__ !== undefined) {
            item.async = item.__asyncQueueAsync__;
          }

          _this.processed.push(item.__asyncQueueId__);

          delete item.__asyncQueueAsync__;
          delete item.__asyncQueueId__;
          delete item.__asyncQueueMethod__;
          delete item.__asyncQueueArguments__;

          Drupal.tick(function () {
            return _this.process.apply(_this, _toConsumableArray(originalArgs));
          });
        };

        item.__asyncQueueAsync__ = item.async;
        item.__asyncQueueMethod__ = method;
        item.__asyncQueueArguments__ = args;

        item.async = function () {
          async = true;
          var once = 0;
          return function (success) {
            if (once === 0) {
              once = 1;
              Drupal.tick(function () {
                return complete(success);
              });
            }
          };
        };

        try {
          var success = void 0;
          if (typeof fn === 'function') {
            success = fn.apply(item, args);
          }
          if (!async) {
            complete(success);
          }
        } catch (err) {
          complete(err);
        }
      }
    }], [{
      key: 'create',
      value: function create(obj, callback) {
        return new this(obj, callback);
      }
    }]);

    return AsyncQueue;
  }();

  Drupal.AsyncQueue = AsyncQueue;
})(window.Drupal);

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc