Code coverage report for src/jsonp-request-message.js

Statements: 46.67% (28 / 60)      Branches: 8.33% (1 / 12)      Functions: 50% (9 / 18)      Lines: 46.55% (27 / 58)      Ignored: none     

All files » src/ » jsonp-request-message.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 1041     1   1   1   1 1     1   1   1   1 1     1 1   1 1 1 1 1 1     1   1 1       1           1                                                                                   1             1   1          
System.register(['./headers', './request-message-processor', './transformers'], function (_export) {
  'use strict';
 
  var Headers, RequestMessageProcessor, timeoutTransformer, callbackParameterNameTransformer, JSONPRequestMessage, JSONPXHR;
 
  _export('createJSONPRequestMessageProcessor', createJSONPRequestMessageProcessor);
 
  function _classCallCheck(instance, Constructor) { Iif (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }
 
  function createJSONPRequestMessageProcessor() {
    return new RequestMessageProcessor(JSONPXHR, [timeoutTransformer, callbackParameterNameTransformer]);
  }
 
  return {
    setters: [function (_headers) {
      Headers = _headers.Headers;
    }, function (_requestMessageProcessor) {
      RequestMessageProcessor = _requestMessageProcessor.RequestMessageProcessor;
    }, function (_transformers) {
      timeoutTransformer = _transformers.timeoutTransformer;
      callbackParameterNameTransformer = _transformers.callbackParameterNameTransformer;
    }],
    execute: function () {
      JSONPRequestMessage = function JSONPRequestMessage(url, callbackParameterName) {
        _classCallCheck(this, JSONPRequestMessage);
 
        this.method = 'JSONP';
        this.url = url;
        this.content = undefined;
        this.headers = new Headers();
        this.responseType = 'jsonp';
        this.callbackParameterName = callbackParameterName;
      };
 
      _export('JSONPRequestMessage', JSONPRequestMessage);
 
      JSONPXHR = (function () {
        function JSONPXHR() {
          _classCallCheck(this, JSONPXHR);
        }
 
        JSONPXHR.prototype.open = function open(method, url) {
          this.method = method;
          this.url = url;
          this.callbackName = 'jsonp_callback_' + Math.round(100000 * Math.random());
        };
 
        JSONPXHR.prototype.send = function send() {
          var _this = this;
 
          var url = this.url + (this.url.indexOf('?') >= 0 ? '&' : '?') + encodeURIComponent(this.callbackParameterName) + '=' + this.callbackName;
          var script = document.createElement('script');
 
          script.src = url;
          script.onerror = function (e) {
            cleanUp();
 
            _this.status = 0;
            _this.onerror(new Error('error'));
          };
 
          var cleanUp = function cleanUp() {
            delete window[_this.callbackName];
            document.body.removeChild(script);
          };
 
          window[this.callbackName] = function (data) {
            cleanUp();
 
            if (_this.status === undefined) {
              _this.status = 200;
              _this.statusText = 'OK';
              _this.response = data;
              _this.onload(_this);
            }
          };
 
          document.body.appendChild(script);
 
          if (this.timeout !== undefined) {
            setTimeout(function () {
              if (_this.status === undefined) {
                _this.status = 0;
                _this.ontimeout(new Error('timeout'));
              }
            }, this.timeout);
          }
        };
 
        JSONPXHR.prototype.abort = function abort() {
          if (this.status === undefined) {
            this.status = 0;
            this.onabort(new Error('abort'));
          }
        };
 
        JSONPXHR.prototype.setRequestHeader = function setRequestHeader() {};
 
        return JSONPXHR;
      })();
    }
  };
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9FaXNlbmJlcmdFZmZlY3QvRG9jdW1lbnRzL0dpdEh1Yi9UaGUgRHVyYW5kYWwgUHJvamVjdC9hdXJlbGlhL2h0dHAtY2xpZW50L3NyYy9qc29ucC1yZXF1ZXN0LW1lc3NhZ2UuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OzhGQU9hLG1CQUFtQixFQVcxQixRQUFROztnREF5REUsa0NBQWtDOzs7O0FBQTNDLFdBQVMsa0NBQWtDLEdBQUU7QUFDbEQsV0FBTyxJQUFJLHVCQUF1QixDQUFDLFFBQVEsRUFBRSxDQUMzQyxrQkFBa0IsRUFDbEIsZ0NBQWdDLENBQ2pDLENBQUMsQ0FBQztHQUNKOzs7O3lCQWhGTyxPQUFPOzt5REFDUCx1QkFBdUI7O3lDQUU3QixrQkFBa0I7dURBQ2xCLGdDQUFnQzs7O0FBR3JCLHlCQUFtQixHQUNuQixTQURBLG1CQUFtQixDQUNsQixHQUFHLEVBQUUscUJBQXFCLEVBQUM7OEJBRDVCLG1CQUFtQjs7QUFFNUIsWUFBSSxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUM7QUFDdEIsWUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7QUFDZixZQUFJLENBQUMsT0FBTyxHQUFHLFNBQVMsQ0FBQztBQUN6QixZQUFJLENBQUMsT0FBTyxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7QUFDN0IsWUFBSSxDQUFDLFlBQVksR0FBRyxPQUFPLENBQUM7QUFDNUIsWUFBSSxDQUFDLHFCQUFxQixHQUFHLHFCQUFxQixDQUFDO09BQ3BEOztxQ0FSVSxtQkFBbUI7O0FBVzFCLGNBQVE7aUJBQVIsUUFBUTtnQ0FBUixRQUFROzs7QUFBUixnQkFBUSxXQUNaLElBQUksR0FBQSxjQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUM7QUFDZixjQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztBQUNyQixjQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztBQUNmLGNBQUksQ0FBQyxZQUFZLEdBQUcsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7U0FDNUU7O0FBTEcsZ0JBQVEsV0FPWixJQUFJLEdBQUEsZ0JBQUU7OztBQUNKLGNBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxHQUFHLENBQUEsQUFBQyxHQUFHLGtCQUFrQixDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO0FBQ3pJLGNBQUksTUFBTSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7O0FBRTlDLGdCQUFNLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztBQUNqQixnQkFBTSxDQUFDLE9BQU8sR0FBRyxVQUFDLENBQUMsRUFBSztBQUN0QixtQkFBTyxFQUFFLENBQUM7O0FBRVYsa0JBQUssTUFBTSxHQUFHLENBQUMsQ0FBQztBQUNoQixrQkFBSyxPQUFPLENBQUMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQTtXQUNqQyxDQUFDOztBQUVGLGNBQUksT0FBTyxHQUFHLFNBQVYsT0FBTyxHQUFTO0FBQ2xCLG1CQUFPLE1BQU0sQ0FBQyxNQUFLLFlBQVksQ0FBQyxDQUFDO0FBQ2pDLG9CQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztXQUNuQyxDQUFDOztBQUVGLGdCQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLFVBQUMsSUFBSSxFQUFLO0FBQ3BDLG1CQUFPLEVBQUUsQ0FBQzs7QUFFVixnQkFBRyxNQUFLLE1BQU0sS0FBSyxTQUFTLEVBQUM7QUFDM0Isb0JBQUssTUFBTSxHQUFHLEdBQUcsQ0FBQztBQUNsQixvQkFBSyxVQUFVLEdBQUcsSUFBSSxDQUFDO0FBQ3ZCLG9CQUFLLFFBQVEsR0FBRyxJQUFJLENBQUM7QUFDckIsb0JBQUssTUFBTSxPQUFNLENBQUM7YUFDbkI7V0FDRixDQUFDOztBQUVGLGtCQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQzs7QUFFbEMsY0FBRyxJQUFJLENBQUMsT0FBTyxLQUFLLFNBQVMsRUFBQztBQUM1QixzQkFBVSxDQUFDLFlBQU07QUFDZixrQkFBRyxNQUFLLE1BQU0sS0FBSyxTQUFTLEVBQUM7QUFDM0Isc0JBQUssTUFBTSxHQUFHLENBQUMsQ0FBQztBQUNoQixzQkFBSyxTQUFTLENBQUMsSUFBSSxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztlQUN0QzthQUNGLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1dBQ2xCO1NBQ0Y7O0FBN0NHLGdCQUFRLFdBK0NaLEtBQUssR0FBQSxpQkFBRTtBQUNMLGNBQUcsSUFBSSxDQUFDLE1BQU0sS0FBSyxTQUFTLEVBQUM7QUFDM0IsZ0JBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0FBQ2hCLGdCQUFJLENBQUMsT0FBTyxDQUFDLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7V0FDbEM7U0FDRjs7QUFwREcsZ0JBQVEsV0FzRFosZ0JBQWdCLEdBQUEsNEJBQUUsRUFBRTs7ZUF0RGhCLFFBQVEiLCJmaWxlIjoiL1VzZXJzL0Vpc2VuYmVyZ0VmZmVjdC9Eb2N1bWVudHMvR2l0SHViL1RoZSBEdXJhbmRhbCBQcm9qZWN0L2F1cmVsaWEvaHR0cC1jbGllbnQvc3JjL2pzb25wLXJlcXVlc3QtbWVzc2FnZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SGVhZGVyc30gZnJvbSAnLi9oZWFkZXJzJztcbmltcG9ydCB7UmVxdWVzdE1lc3NhZ2VQcm9jZXNzb3J9IGZyb20gJy4vcmVxdWVzdC1tZXNzYWdlLXByb2Nlc3Nvcic7XG5pbXBvcnQge1xuICB0aW1lb3V0VHJhbnNmb3JtZXIsXG4gIGNhbGxiYWNrUGFyYW1ldGVyTmFtZVRyYW5zZm9ybWVyXG59IGZyb20gJy4vdHJhbnNmb3JtZXJzJztcblxuZXhwb3J0IGNsYXNzIEpTT05QUmVxdWVzdE1lc3NhZ2Uge1xuICBjb25zdHJ1Y3Rvcih1cmwsIGNhbGxiYWNrUGFyYW1ldGVyTmFtZSl7XG4gICAgdGhpcy5tZXRob2QgPSAnSlNPTlAnO1xuICAgIHRoaXMudXJsID0gdXJsO1xuICAgIHRoaXMuY29udGVudCA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmhlYWRlcnMgPSBuZXcgSGVhZGVycygpO1xuICAgIHRoaXMucmVzcG9uc2VUeXBlID0gJ2pzb25wJztcbiAgICB0aGlzLmNhbGxiYWNrUGFyYW1ldGVyTmFtZSA9IGNhbGxiYWNrUGFyYW1ldGVyTmFtZTtcbiAgfVxufVxuXG5jbGFzcyBKU09OUFhIUiB7XG4gIG9wZW4obWV0aG9kLCB1cmwpe1xuICAgIHRoaXMubWV0aG9kID0gbWV0aG9kO1xuICAgIHRoaXMudXJsID0gdXJsO1xuICAgIHRoaXMuY2FsbGJhY2tOYW1lID0gJ2pzb25wX2NhbGxiYWNrXycgKyBNYXRoLnJvdW5kKDEwMDAwMCAqIE1hdGgucmFuZG9tKCkpO1xuICB9XG5cbiAgc2VuZCgpe1xuICAgIGxldCB1cmwgPSB0aGlzLnVybCArICh0aGlzLnVybC5pbmRleE9mKCc/JykgPj0gMCA/ICcmJyA6ICc/JykgKyBlbmNvZGVVUklDb21wb25lbnQodGhpcy5jYWxsYmFja1BhcmFtZXRlck5hbWUpICsgJz0nICsgdGhpcy5jYWxsYmFja05hbWU7XG4gICAgbGV0IHNjcmlwdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO1xuXG4gICAgc2NyaXB0LnNyYyA9IHVybDtcbiAgICBzY3JpcHQub25lcnJvciA9IChlKSA9PiB7XG4gICAgICBjbGVhblVwKCk7XG5cbiAgICAgIHRoaXMuc3RhdHVzID0gMDtcbiAgICAgIHRoaXMub25lcnJvcihuZXcgRXJyb3IoJ2Vycm9yJykpXG4gICAgfTtcblxuICAgIGxldCBjbGVhblVwID0gKCkgPT4ge1xuICAgICAgZGVsZXRlIHdpbmRvd1t0aGlzLmNhbGxiYWNrTmFtZV07XG4gICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHNjcmlwdCk7XG4gICAgfTtcblxuICAgIHdpbmRvd1t0aGlzLmNhbGxiYWNrTmFtZV0gPSAoZGF0YSkgPT4ge1xuICAgICAgY2xlYW5VcCgpO1xuXG4gICAgICBpZih0aGlzLnN0YXR1cyA9PT0gdW5kZWZpbmVkKXtcbiAgICAgICAgdGhpcy5zdGF0dXMgPSAyMDA7XG4gICAgICAgIHRoaXMuc3RhdHVzVGV4dCA9ICdPSyc7XG4gICAgICAgIHRoaXMucmVzcG9uc2UgPSBkYXRhO1xuICAgICAgICB0aGlzLm9ubG9hZCh0aGlzKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChzY3JpcHQpO1xuXG4gICAgaWYodGhpcy50aW1lb3V0ICE9PSB1bmRlZmluZWQpe1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGlmKHRoaXMuc3RhdHVzID09PSB1bmRlZmluZWQpe1xuICAgICAgICAgIHRoaXMuc3RhdHVzID0gMDtcbiAgICAgICAgICB0aGlzLm9udGltZW91dChuZXcgRXJyb3IoJ3RpbWVvdXQnKSk7XG4gICAgICAgIH1cbiAgICAgIH0sIHRoaXMudGltZW91dCk7XG4gICAgfVxuICB9XG5cbiAgYWJvcnQoKXtcbiAgICBpZih0aGlzLnN0YXR1cyA9PT0gdW5kZWZpbmVkKXtcbiAgICAgIHRoaXMuc3RhdHVzID0gMDtcbiAgICAgIHRoaXMub25hYm9ydChuZXcgRXJyb3IoJ2Fib3J0JykpO1xuICAgIH1cbiAgfVxuXG4gIHNldFJlcXVlc3RIZWFkZXIoKXt9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVKU09OUFJlcXVlc3RNZXNzYWdlUHJvY2Vzc29yKCl7XG4gIHJldHVybiBuZXcgUmVxdWVzdE1lc3NhZ2VQcm9jZXNzb3IoSlNPTlBYSFIsIFtcbiAgICB0aW1lb3V0VHJhbnNmb3JtZXIsXG4gICAgY2FsbGJhY2tQYXJhbWV0ZXJOYW1lVHJhbnNmb3JtZXJcbiAgXSk7XG59XG4iXX0=