@alicloud/console-os-browser-vm 1.4.21-alpha.0 → 1.4.23

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.
package/es/index.js CHANGED
@@ -1,43 +1,35 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
2
  import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator";
3
-
4
3
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
5
-
6
4
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
7
-
8
5
  import _regeneratorRuntime from "@babel/runtime/regenerator";
9
-
10
6
  /**
11
7
  * index.js
12
8
  * @lastModified 2019085
13
9
  * @forwardCompatibleTo 2019085
14
10
  * @createAt 2019085
15
11
  */
12
+
16
13
  import './Elements';
17
14
  import Context from './Context';
18
15
  export var createContext = /*#__PURE__*/function () {
19
16
  var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
20
17
  var conf,
21
- _args = arguments;
18
+ _args = arguments;
22
19
  return _regeneratorRuntime.wrap(function _callee$(_context) {
23
- while (1) {
24
- switch (_context.prev = _context.next) {
25
- case 0:
26
- conf = _args.length > 0 && _args[0] !== undefined ? _args[0] : {};
27
- _context.next = 3;
28
- return Context.create(conf);
29
-
30
- case 3:
31
- return _context.abrupt("return", _context.sent);
32
-
33
- case 4:
34
- case "end":
35
- return _context.stop();
36
- }
20
+ while (1) switch (_context.prev = _context.next) {
21
+ case 0:
22
+ conf = _args.length > 0 && _args[0] !== undefined ? _args[0] : {};
23
+ _context.next = 3;
24
+ return Context.create(conf);
25
+ case 3:
26
+ return _context.abrupt("return", _context.sent);
27
+ case 4:
28
+ case "end":
29
+ return _context.stop();
37
30
  }
38
31
  }, _callee);
39
32
  }));
40
-
41
33
  return function createContext() {
42
34
  return _ref.apply(this, arguments);
43
35
  };
@@ -45,23 +37,18 @@ export var createContext = /*#__PURE__*/function () {
45
37
  export var removeContext = /*#__PURE__*/function () {
46
38
  var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(context) {
47
39
  return _regeneratorRuntime.wrap(function _callee2$(_context2) {
48
- while (1) {
49
- switch (_context2.prev = _context2.next) {
50
- case 0:
51
- _context2.next = 2;
52
- return Context.remove(context);
53
-
54
- case 2:
55
- return _context2.abrupt("return", _context2.sent);
56
-
57
- case 3:
58
- case "end":
59
- return _context2.stop();
60
- }
40
+ while (1) switch (_context2.prev = _context2.next) {
41
+ case 0:
42
+ _context2.next = 2;
43
+ return Context.remove(context);
44
+ case 2:
45
+ return _context2.abrupt("return", _context2.sent);
46
+ case 3:
47
+ case "end":
48
+ return _context2.stop();
61
49
  }
62
50
  }, _callee2);
63
51
  }));
64
-
65
52
  return function removeContext(_x) {
66
53
  return _ref2.apply(this, arguments);
67
54
  };
@@ -69,30 +56,26 @@ export var removeContext = /*#__PURE__*/function () {
69
56
  export var evalScripts = /*#__PURE__*/function () {
70
57
  var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee3(code) {
71
58
  var conf,
72
- ctx,
73
- resolver,
74
- _args3 = arguments;
59
+ ctx,
60
+ resolver,
61
+ _args3 = arguments;
75
62
  return _regeneratorRuntime.wrap(function _callee3$(_context3) {
76
- while (1) {
77
- switch (_context3.prev = _context3.next) {
78
- case 0:
79
- conf = _args3.length > 1 && _args3[1] !== undefined ? _args3[1] : {};
80
- _context3.next = 3;
81
- return Context.create(conf);
82
-
83
- case 3:
84
- ctx = _context3.sent;
85
- resolver = new Function("\n return function({window, location, history, document}){ \n with(window.__CONSOLE_OS_GLOBAL_VARS_) { \n ".concat(code, "\n }\n }//@sourceURL=").concat(conf.name));
86
- return _context3.abrupt("return", resolver(_objectSpread({}, ctx)));
87
-
88
- case 6:
89
- case "end":
90
- return _context3.stop();
91
- }
63
+ while (1) switch (_context3.prev = _context3.next) {
64
+ case 0:
65
+ conf = _args3.length > 1 && _args3[1] !== undefined ? _args3[1] : {};
66
+ _context3.next = 3;
67
+ return Context.create(conf);
68
+ case 3:
69
+ ctx = _context3.sent;
70
+ // eslint-disable-next-line no-new-func
71
+ resolver = new Function("\n return function({window, location, history, document}){ \n with(window.__CONSOLE_OS_GLOBAL_VARS_) { \n ".concat(code, "\n }\n }//@sourceURL=").concat(conf.name));
72
+ return _context3.abrupt("return", resolver(_objectSpread({}, ctx)));
73
+ case 6:
74
+ case "end":
75
+ return _context3.stop();
92
76
  }
93
77
  }, _callee3);
94
78
  }));
95
-
96
79
  return function evalScripts(_x2) {
97
80
  return _ref3.apply(this, arguments);
98
81
  };
@@ -2,20 +2,16 @@ import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
2
2
  export var addEventListener = function addEventListener(el, originEvent) {
3
3
  return function (type, listener, options) {
4
4
  var listeners = el._listenerMap.get(type) || [];
5
-
6
5
  el._listenerMap.set(type, [].concat(_toConsumableArray(listeners), [listener]));
7
-
8
6
  return originEvent.apply(el, [type, listener, options]);
9
7
  };
10
8
  };
11
9
  export var removeEventListener = function removeEventListener(el, originEvent) {
12
10
  return function (type, listener, options) {
13
11
  var storedTypeListeners = el._listenerMap.get(type);
14
-
15
12
  if (storedTypeListeners && storedTypeListeners.length && storedTypeListeners.indexOf(listener) !== -1) {
16
13
  storedTypeListeners.splice(storedTypeListeners.indexOf(listener), 1);
17
14
  }
18
-
19
15
  return originEvent.apply(el, [type, listener, options]);
20
16
  };
21
17
  };
@@ -23,8 +19,9 @@ var elProperties = ['innerHTML', 'text', 'innerText'];
23
19
  export var injectHTMLScriptElement = function injectHTMLScriptElement(el) {
24
20
  el._listenerMap = new Map();
25
21
  el.addEventListener = addEventListener(el, el.addEventListener);
26
- el.removeEventListener = removeEventListener(el, el.removeEventListener); // do not redefine property in sandbox
22
+ el.removeEventListener = removeEventListener(el, el.removeEventListener);
27
23
 
24
+ // do not redefine property in sandbox
28
25
  if (!el._evalScriptInSandbox) {
29
26
  elProperties.forEach(function (property) {
30
27
  Object.defineProperty(el, property, {
@@ -32,8 +29,8 @@ export var injectHTMLScriptElement = function injectHTMLScriptElement(el) {
32
29
  return this.scriptText || '';
33
30
  },
34
31
  set: function set(value) {
35
- this.scriptText = value; // 如果是已经插入到 dom 树里面,则直接执行
36
-
32
+ this.scriptText = value;
33
+ // 如果是已经插入到 dom 树里面,则直接执行
37
34
  if (el.parentNode) {
38
35
  this.ownerContext.evalScript && el.ownerContext.evalScript(value.toString());
39
36
  }
@@ -1,30 +1,23 @@
1
1
  export var getJsonCallback = function getJsonCallback(src) {
2
2
  var u;
3
-
4
3
  try {
5
4
  u = new URL(src);
6
5
  } catch (error) {
7
6
  return;
8
7
  }
9
-
10
8
  var sp = u.searchParams;
11
-
12
9
  if (!sp) {
13
10
  return null;
14
11
  }
15
-
16
12
  return sp.get('callback') || sp.get('cb');
17
13
  };
18
-
19
14
  var injectScriptCallBack = function injectScriptCallBack(scriptEl) {
20
15
  setTimeout(function () {
21
16
  if (!scriptEl.src) {
22
17
  return;
23
18
  }
24
-
25
19
  var appWindow = scriptEl.ownerContext.window;
26
20
  var callbackName = getJsonCallback(scriptEl.src);
27
-
28
21
  if (callbackName && typeof appWindow[callbackName] === 'function') {
29
22
  window[callbackName] = function () {
30
23
  var result = appWindow[callbackName].apply(appWindow, arguments);
@@ -34,5 +27,4 @@ var injectScriptCallBack = function injectScriptCallBack(scriptEl) {
34
27
  }
35
28
  }, 0);
36
29
  };
37
-
38
30
  export default injectScriptCallBack;
package/lib/Context.js CHANGED
@@ -1,36 +1,27 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.default = void 0;
9
-
10
8
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
11
-
12
9
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
13
-
14
10
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
15
-
16
11
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
17
-
18
12
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
19
-
20
13
  var _Window = _interopRequireDefault(require("./Window"));
21
-
22
14
  var _Document = _interopRequireDefault(require("./Document"));
23
-
24
15
  var _Location = _interopRequireDefault(require("./Location"));
25
-
26
16
  var _History = _interopRequireDefault(require("./History"));
27
-
28
17
  var _credentials = require("./utils/credentials");
29
-
30
18
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
31
-
32
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
33
-
19
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } /**
20
+ * Context
21
+ * @lastModified 2019086
22
+ * @forwardCompatibleTo 2019086
23
+ * @createAt 2019086
24
+ */
34
25
  var Context = /*#__PURE__*/function () {
35
26
  function Context(conf, frame) {
36
27
  (0, _classCallCheck2.default)(this, Context);
@@ -39,14 +30,12 @@ var Context = /*#__PURE__*/function () {
39
30
  this.window = new _Window.default(conf, this, frame, location);
40
31
  this.allowResources = conf.allowResources || [];
41
32
  var body = conf.body;
42
-
43
33
  if (conf.disableBody) {
44
34
  body = document.body;
45
35
  } else if (!conf.body) {
46
36
  body = document.createElement('body');
47
37
  document.documentElement.appendChild(body);
48
38
  }
49
-
50
39
  this.body = body;
51
40
  this.document = new _Document.default(_objectSpread({
52
41
  enableScriptEscape: true
@@ -55,42 +44,34 @@ var Context = /*#__PURE__*/function () {
55
44
  this._listenerMap = new Map();
56
45
  this.window.__IS_CONSOLE_OS_CONTEXT__ = true;
57
46
  }
58
-
59
47
  (0, _createClass2.default)(Context, [{
60
48
  key: "loadScripts",
61
49
  value: function () {
62
50
  var _loadScripts = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(url) {
63
51
  var resp, code;
64
52
  return _regenerator.default.wrap(function _callee$(_context) {
65
- while (1) {
66
- switch (_context.prev = _context.next) {
67
- case 0:
68
- _context.next = 2;
69
- return fetch(url, {
70
- credentials: (0, _credentials.getFetchCredentials)(url)
71
- });
72
-
73
- case 2:
74
- resp = _context.sent;
75
- _context.next = 5;
76
- return resp.text();
77
-
78
- case 5:
79
- code = _context.sent;
80
- this.evalScript(code, url);
81
-
82
- case 7:
83
- case "end":
84
- return _context.stop();
85
- }
53
+ while (1) switch (_context.prev = _context.next) {
54
+ case 0:
55
+ _context.next = 2;
56
+ return fetch(url, {
57
+ credentials: (0, _credentials.getFetchCredentials)(url)
58
+ });
59
+ case 2:
60
+ resp = _context.sent;
61
+ _context.next = 5;
62
+ return resp.text();
63
+ case 5:
64
+ code = _context.sent;
65
+ this.evalScript(code, url);
66
+ case 7:
67
+ case "end":
68
+ return _context.stop();
86
69
  }
87
70
  }, _callee, this);
88
71
  }));
89
-
90
72
  function loadScripts(_x) {
91
73
  return _loadScripts.apply(this, arguments);
92
74
  }
93
-
94
75
  return loadScripts;
95
76
  }()
96
77
  }, {
@@ -111,7 +92,6 @@ var Context = /*#__PURE__*/function () {
111
92
  key: "remove",
112
93
  value: function remove() {
113
94
  this.document.removeEventListeners();
114
-
115
95
  if (this.baseFrame) {
116
96
  if (this.baseFrame.parentNode) {
117
97
  this.baseFrame.parentNode.removeChild(this.baseFrame);
@@ -124,23 +104,23 @@ var Context = /*#__PURE__*/function () {
124
104
  key: "create",
125
105
  value: function create(conf) {
126
106
  var _this = this;
127
-
128
107
  return new Promise(function (resolve) {
129
108
  var _document$documentEle;
109
+ var iframe = document.createElement('iframe');
130
110
 
131
- var iframe = document.createElement('iframe'); // TODO: change src to a reasonable value.
132
-
111
+ // TODO: change src to a reasonable value.
133
112
  iframe.setAttribute('src', conf.url ? conf.url : '/api.json');
134
113
  iframe.style.cssText = 'position: absolute; top: -20000px; width: 1px; height: 1px;';
135
- if (conf.id) iframe.setAttribute('data-id', conf.id); // body will be hijacked in sandbox, so get body from html
114
+ if (conf.id) iframe.setAttribute('data-id', conf.id);
136
115
 
116
+ // body will be hijacked in sandbox, so get body from html
137
117
  var topBody = ((_document$documentEle = document.documentElement) === null || _document$documentEle === void 0 ? void 0 : _document$documentEle.getElementsByTagName('body')[0]) || document.body;
138
- topBody.appendChild(iframe); // the onload will no trigger when src is about:blank
118
+ topBody.appendChild(iframe);
139
119
 
120
+ // the onload will no trigger when src is about:blank
140
121
  if (conf.url === 'about:blank') {
141
122
  return resolve(new _this(conf, iframe));
142
123
  }
143
-
144
124
  iframe.onload = function () {
145
125
  resolve(new _this(conf, iframe));
146
126
  };
@@ -151,30 +131,24 @@ var Context = /*#__PURE__*/function () {
151
131
  value: function () {
152
132
  var _remove = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(context) {
153
133
  return _regenerator.default.wrap(function _callee2$(_context2) {
154
- while (1) {
155
- switch (_context2.prev = _context2.next) {
156
- case 0:
157
- if (context.remove) {
158
- context.remove();
159
- }
160
-
161
- case 1:
162
- case "end":
163
- return _context2.stop();
164
- }
134
+ while (1) switch (_context2.prev = _context2.next) {
135
+ case 0:
136
+ if (context.remove) {
137
+ context.remove();
138
+ }
139
+ case 1:
140
+ case "end":
141
+ return _context2.stop();
165
142
  }
166
143
  }, _callee2);
167
144
  }));
168
-
169
145
  function remove(_x2) {
170
146
  return _remove.apply(this, arguments);
171
147
  }
172
-
173
148
  return remove;
174
149
  }()
175
150
  }]);
176
151
  return Context;
177
152
  }();
178
-
179
153
  var _default = Context;
180
154
  exports.default = _default;
package/lib/Document.js CHANGED
@@ -1,26 +1,20 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.default = void 0;
9
-
10
8
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
11
-
12
9
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
13
-
14
10
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
15
-
16
11
  var _HTMLScriptElement = require("./utils/HTMLScriptElement");
17
-
18
- function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
19
-
20
- function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
21
-
22
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
23
-
12
+ /**
13
+ * Document.js
14
+ * @lastModified 2019085
15
+ * @forwardCompatibleTo 2019085
16
+ * @createAt 2019085
17
+ */
24
18
  var Document = /*#__PURE__*/(0, _createClass2.default)(function Document() {
25
19
  var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
26
20
  var context = arguments.length > 1 ? arguments[1] : undefined;
@@ -33,75 +27,53 @@ var Document = /*#__PURE__*/(0, _createClass2.default)(function Document() {
33
27
  case 'cookie':
34
28
  document.cookie = value;
35
29
  break;
36
-
37
30
  default:
38
31
  target[name] = value;
39
32
  }
40
-
41
33
  return true;
42
34
  },
43
35
  get: function get(target, name) {
44
36
  switch (name) {
45
37
  case 'body':
46
38
  return context.body;
47
-
48
39
  case 'location':
49
40
  return context.location;
50
-
51
41
  case 'defaultView':
52
42
  return context.window;
53
-
54
43
  case 'write':
55
44
  case 'writeln':
56
45
  return function () {};
57
-
58
46
  case 'createElement':
59
47
  return function () {
60
48
  var _document;
61
-
62
49
  var el = (_document = document).createElement.apply(_document, arguments);
63
-
64
50
  el.ownerContext = context;
65
- el.appId = options.id; // 对于 script 标签如果开启防逃逸,就直接 hack script 标签
66
-
51
+ el.appId = options.id;
52
+ // 对于 script 标签如果开启防逃逸,就直接 hack script 标签
67
53
  if (el.tagName === 'SCRIPT' && !options.enableScriptEscape) {
68
54
  (0, _HTMLScriptElement.injectHTMLScriptElement)(el);
69
55
  }
70
-
71
56
  return el;
72
57
  };
73
-
74
58
  case 'addEventListener':
75
59
  return function () {
76
60
  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
77
61
  args[_key] = arguments[_key];
78
62
  }
79
-
80
63
  eventListeners.push(args);
81
64
  return target.addEventListener.apply(target, args);
82
65
  };
83
-
84
66
  case 'removeEventListeners':
85
67
  return function () {
86
- var _iterator = _createForOfIteratorHelper(eventListeners),
87
- _step;
88
-
89
- try {
90
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
91
- var args = _step.value;
92
- target.removeEventListener.apply(target, (0, _toConsumableArray2.default)(args));
93
- }
94
- } catch (err) {
95
- _iterator.e(err);
96
- } finally {
97
- _iterator.f();
68
+ for (var _i = 0, _eventListeners = eventListeners; _i < _eventListeners.length; _i++) {
69
+ var args = _eventListeners[_i];
70
+ target.removeEventListener.apply(target, (0, _toConsumableArray2.default)(args));
98
71
  }
99
72
  };
100
-
101
73
  default:
102
- } // TODO: hijack document.getElementsByTagName('body')
103
-
74
+ }
104
75
 
76
+ // TODO: hijack document.getElementsByTagName('body')
105
77
  if (typeof target[name] === 'function') {
106
78
  return target[name].bind && target[name].bind(target);
107
79
  } else {
package/lib/Elements.js CHANGED
@@ -1,69 +1,55 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  var _typeof = require("@babel/runtime/helpers/typeof");
6
-
7
5
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
8
-
9
6
  var _injectScriptCallBack = _interopRequireWildcard(require("./utils/injectScriptCallBack"));
10
-
11
7
  var _isSSR = require("./utils/isSSR");
12
-
13
8
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
14
-
15
9
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
16
-
17
10
  var makeElInjector = function makeElInjector(originMethod, methodName) {
18
11
  return function (el) {
19
- var notAllowed = el.ownerContext && el.ownerContext.allowResources.indexOf(el.src) === -1 && el.ownerContext.allowResources !== '*'; // 如果不在 BrowserVM 的白名单内,尝试通过 context 的 load script 通过 xhr 获取脚本内容,并在沙箱中执行
12
+ var notAllowed = el.ownerContext && el.ownerContext.allowResources.indexOf(el.src) === -1 && el.ownerContext.allowResources !== '*';
20
13
 
14
+ // 如果不在 BrowserVM 的白名单内,尝试通过 context 的 load script 通过 xhr 获取脚本内容,并在沙箱中执行
21
15
  if (el && el._evalScriptInSandbox && el.ownerContext && el.nodeName === 'SCRIPT' && el.src && notAllowed && !(0, _injectScriptCallBack.getJsonCallback)(el.src)) {
22
16
  return el.ownerContext.loadScripts(el.src).then(function () {
23
17
  var fns = el._listenerMap.get('load');
24
-
25
18
  if (fns) {
26
19
  fns.forEach(function (fn) {
27
20
  fn();
28
21
  });
29
22
  }
30
-
31
23
  var e = new Event('load');
32
24
  el.onload && el.onload(e);
33
25
  }).catch(function (e) {
34
26
  console.error(e);
35
-
36
27
  var fns = el._listenerMap.get('error');
37
-
38
28
  if (fns) {
39
29
  fns.forEach(function (fn) {
40
30
  fn(e);
41
31
  });
42
32
  }
43
-
44
33
  el.onerror && el.onerror(e);
45
34
  });
46
35
  }
47
-
48
36
  if (el && el.nodeName === 'SCRIPT' && el.ownerContext) {
49
37
  (0, _injectScriptCallBack.default)(el);
50
- } // 如果有 scriptText, 证明在 append 之前被设置了 text
51
- // 所以直接执行这个 script
52
-
38
+ }
53
39
 
40
+ // 如果有 scriptText, 证明在 append 之前被设置了 text
41
+ // 所以直接执行这个 script
54
42
  if (el && el.scriptText) {
55
43
  el.ownerContext.evalScript(el.scriptText);
56
- } // fix: babel 会把 fn.call 转义成 fn.call.apply 造成 chrome 50 的几个版本报错
57
- // 这里 尝试 try catch 如果报错 直接调用 fn.apply
58
-
44
+ }
59
45
 
46
+ // fix: babel 会把 fn.call 转义成 fn.call.apply 造成 chrome 50 的几个版本报错
47
+ // 这里 尝试 try catch 如果报错 直接调用 fn.apply
60
48
  for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
61
49
  args[_key - 1] = arguments[_key];
62
50
  }
63
-
64
51
  var methodArgs = methodName === 'append' && el === undefined // 修复 append 的过程中 append() 为一个没参数的状态。应为 append 的函数签名为 append(param1, param2, /* ... ,*/ paramN)
65
52
  ? [].concat(args) : [el].concat(args);
66
-
67
53
  try {
68
54
  return originMethod.call.apply(originMethod, [this].concat((0, _toConsumableArray2.default)(methodArgs)));
69
55
  } catch (_unused) {
@@ -71,10 +57,8 @@ var makeElInjector = function makeElInjector(originMethod, methodName) {
71
57
  }
72
58
  };
73
59
  };
74
-
75
60
  if (!(0, _isSSR.isSSR)() && typeof window.Element === 'function') {
76
61
  var mountElementMethods = ['appendChild', 'insertBefore', 'append'];
77
-
78
62
  for (var _i = 0, _mountElementMethods = mountElementMethods; _i < _mountElementMethods.length; _i++) {
79
63
  var method = _mountElementMethods[_i];
80
64
  var originMethod = window.Element.prototype[method];