@alicloud/console-os-browser-vm 1.4.42-beta.1 → 1.4.43-beta.1
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/Elements.js +59 -14
- package/lib/Elements.js +59 -14
- package/package.json +1 -1
package/es/Elements.js
CHANGED
|
@@ -1,6 +1,51 @@
|
|
|
1
1
|
import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
|
|
2
2
|
import injectScriptCallBack, { getJsonCallback } from './utils/injectScriptCallBack';
|
|
3
3
|
import { isSSR } from './utils/isSSR';
|
|
4
|
+
var DOM_GUARD_MARKER = '__CONSOLE_OS_STALE_CHILD_GUARD__';
|
|
5
|
+
|
|
6
|
+
// Keep removal/replacement separate from the script-insertion hooks below.
|
|
7
|
+
var makeStaleChildGuard = function makeStaleChildGuard(originMethod, methodName, childIndex) {
|
|
8
|
+
if (originMethod[DOM_GUARD_MARKER]) {
|
|
9
|
+
return originMethod;
|
|
10
|
+
}
|
|
11
|
+
var warned = false;
|
|
12
|
+
var guardedMethod = function guardedMethod() {
|
|
13
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
14
|
+
args[_key] = arguments[_key];
|
|
15
|
+
}
|
|
16
|
+
try {
|
|
17
|
+
return originMethod.apply(this, args);
|
|
18
|
+
} catch (error) {
|
|
19
|
+
var child = args[childIndex];
|
|
20
|
+
if (error && error.name === 'NotFoundError' && child && child.parentNode !== this) {
|
|
21
|
+
// Translators can detach or move nodes still referenced by React.
|
|
22
|
+
// Leave the current DOM untouched; its replacement cannot be inferred.
|
|
23
|
+
if (!warned) {
|
|
24
|
+
warned = true;
|
|
25
|
+
console.warn("[console-os-browser-vm] ".concat(methodName, " skipped: child no longer belongs to this parent."));
|
|
26
|
+
}
|
|
27
|
+
return child;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
// Preserve argument, receiver and hierarchy errors from the native API.
|
|
31
|
+
throw error;
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
Object.defineProperty(guardedMethod, DOM_GUARD_MARKER, {
|
|
35
|
+
value: true
|
|
36
|
+
});
|
|
37
|
+
return guardedMethod;
|
|
38
|
+
};
|
|
39
|
+
if (!isSSR() && typeof window.Node === 'function') {
|
|
40
|
+
var staleChildMethods = {
|
|
41
|
+
removeChild: 0,
|
|
42
|
+
replaceChild: 1
|
|
43
|
+
};
|
|
44
|
+
for (var _i = 0, _Object$keys = Object.keys(staleChildMethods); _i < _Object$keys.length; _i++) {
|
|
45
|
+
var method = _Object$keys[_i];
|
|
46
|
+
window.Node.prototype[method] = makeStaleChildGuard(window.Node.prototype[method], method, staleChildMethods[method]);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
4
49
|
var makeElInjector = function makeElInjector(originMethod, methodName) {
|
|
5
50
|
return function (el) {
|
|
6
51
|
var notAllowed = el && el.ownerContext && el.ownerContext.allowResources.indexOf(el.src) === -1 && el.ownerContext.allowResources !== '*';
|
|
@@ -39,8 +84,8 @@ var makeElInjector = function makeElInjector(originMethod, methodName) {
|
|
|
39
84
|
|
|
40
85
|
// fix: babel 会把 fn.call 转义成 fn.call.apply 造成 chrome 50 的几个版本报错
|
|
41
86
|
// 这里 尝试 try catch 如果报错 直接调用 fn.apply
|
|
42
|
-
for (var
|
|
43
|
-
args[
|
|
87
|
+
for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
|
|
88
|
+
args[_key2 - 1] = arguments[_key2];
|
|
44
89
|
}
|
|
45
90
|
var methodArgs = methodName === 'append' && el === undefined // 修复 append 的过程中 append() 为一个没参数的状态。应为 append 的函数签名为 append(param1, param2, /* ... ,*/ paramN)
|
|
46
91
|
? [].concat(args) : [el].concat(args);
|
|
@@ -57,19 +102,19 @@ var makeElInjector = function makeElInjector(originMethod, methodName) {
|
|
|
57
102
|
};
|
|
58
103
|
if (!isSSR() && typeof window.Element === 'function') {
|
|
59
104
|
var mountElementMethods = ['appendChild', 'insertBefore', 'append'];
|
|
60
|
-
for (var
|
|
61
|
-
var
|
|
62
|
-
var originMethod = window.HTMLHeadElement.prototype[
|
|
63
|
-
window.HTMLHeadElement.prototype[
|
|
105
|
+
for (var _i2 = 0, _mountElementMethods = mountElementMethods; _i2 < _mountElementMethods.length; _i2++) {
|
|
106
|
+
var _method = _mountElementMethods[_i2];
|
|
107
|
+
var originMethod = window.HTMLHeadElement.prototype[_method];
|
|
108
|
+
window.HTMLHeadElement.prototype[_method] = makeElInjector(originMethod, _method);
|
|
64
109
|
}
|
|
65
|
-
for (var
|
|
66
|
-
var
|
|
67
|
-
var _originMethod = window.HTMLBodyElement.prototype[
|
|
68
|
-
window.HTMLBodyElement.prototype[
|
|
110
|
+
for (var _i3 = 0, _mountElementMethods2 = mountElementMethods; _i3 < _mountElementMethods2.length; _i3++) {
|
|
111
|
+
var _method2 = _mountElementMethods2[_i3];
|
|
112
|
+
var _originMethod = window.HTMLBodyElement.prototype[_method2];
|
|
113
|
+
window.HTMLBodyElement.prototype[_method2] = makeElInjector(_originMethod, _method2);
|
|
69
114
|
}
|
|
70
|
-
for (var
|
|
71
|
-
var
|
|
72
|
-
var _originMethod2 = window.Element.prototype[
|
|
73
|
-
window.Element.prototype[
|
|
115
|
+
for (var _i4 = 0, _mountElementMethods3 = mountElementMethods; _i4 < _mountElementMethods3.length; _i4++) {
|
|
116
|
+
var _method3 = _mountElementMethods3[_i4];
|
|
117
|
+
var _originMethod2 = window.Element.prototype[_method3];
|
|
118
|
+
window.Element.prototype[_method3] = makeElInjector(_originMethod2, _method3);
|
|
74
119
|
}
|
|
75
120
|
}
|
package/lib/Elements.js
CHANGED
|
@@ -6,6 +6,51 @@ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers
|
|
|
6
6
|
var _injectScriptCallBack = _interopRequireWildcard(require("./utils/injectScriptCallBack"));
|
|
7
7
|
var _isSSR = require("./utils/isSSR");
|
|
8
8
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
|
|
9
|
+
var DOM_GUARD_MARKER = '__CONSOLE_OS_STALE_CHILD_GUARD__';
|
|
10
|
+
|
|
11
|
+
// Keep removal/replacement separate from the script-insertion hooks below.
|
|
12
|
+
var makeStaleChildGuard = function makeStaleChildGuard(originMethod, methodName, childIndex) {
|
|
13
|
+
if (originMethod[DOM_GUARD_MARKER]) {
|
|
14
|
+
return originMethod;
|
|
15
|
+
}
|
|
16
|
+
var warned = false;
|
|
17
|
+
var guardedMethod = function guardedMethod() {
|
|
18
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
19
|
+
args[_key] = arguments[_key];
|
|
20
|
+
}
|
|
21
|
+
try {
|
|
22
|
+
return originMethod.apply(this, args);
|
|
23
|
+
} catch (error) {
|
|
24
|
+
var child = args[childIndex];
|
|
25
|
+
if (error && error.name === 'NotFoundError' && child && child.parentNode !== this) {
|
|
26
|
+
// Translators can detach or move nodes still referenced by React.
|
|
27
|
+
// Leave the current DOM untouched; its replacement cannot be inferred.
|
|
28
|
+
if (!warned) {
|
|
29
|
+
warned = true;
|
|
30
|
+
console.warn("[console-os-browser-vm] ".concat(methodName, " skipped: child no longer belongs to this parent."));
|
|
31
|
+
}
|
|
32
|
+
return child;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
// Preserve argument, receiver and hierarchy errors from the native API.
|
|
36
|
+
throw error;
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
Object.defineProperty(guardedMethod, DOM_GUARD_MARKER, {
|
|
40
|
+
value: true
|
|
41
|
+
});
|
|
42
|
+
return guardedMethod;
|
|
43
|
+
};
|
|
44
|
+
if (!(0, _isSSR.isSSR)() && typeof window.Node === 'function') {
|
|
45
|
+
var staleChildMethods = {
|
|
46
|
+
removeChild: 0,
|
|
47
|
+
replaceChild: 1
|
|
48
|
+
};
|
|
49
|
+
for (var _i = 0, _Object$keys = Object.keys(staleChildMethods); _i < _Object$keys.length; _i++) {
|
|
50
|
+
var method = _Object$keys[_i];
|
|
51
|
+
window.Node.prototype[method] = makeStaleChildGuard(window.Node.prototype[method], method, staleChildMethods[method]);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
9
54
|
var makeElInjector = function makeElInjector(originMethod, methodName) {
|
|
10
55
|
return function (el) {
|
|
11
56
|
var notAllowed = el && el.ownerContext && el.ownerContext.allowResources.indexOf(el.src) === -1 && el.ownerContext.allowResources !== '*';
|
|
@@ -44,8 +89,8 @@ var makeElInjector = function makeElInjector(originMethod, methodName) {
|
|
|
44
89
|
|
|
45
90
|
// fix: babel 会把 fn.call 转义成 fn.call.apply 造成 chrome 50 的几个版本报错
|
|
46
91
|
// 这里 尝试 try catch 如果报错 直接调用 fn.apply
|
|
47
|
-
for (var
|
|
48
|
-
args[
|
|
92
|
+
for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
|
|
93
|
+
args[_key2 - 1] = arguments[_key2];
|
|
49
94
|
}
|
|
50
95
|
var methodArgs = methodName === 'append' && el === undefined // 修复 append 的过程中 append() 为一个没参数的状态。应为 append 的函数签名为 append(param1, param2, /* ... ,*/ paramN)
|
|
51
96
|
? [].concat(args) : [el].concat(args);
|
|
@@ -62,19 +107,19 @@ var makeElInjector = function makeElInjector(originMethod, methodName) {
|
|
|
62
107
|
};
|
|
63
108
|
if (!(0, _isSSR.isSSR)() && typeof window.Element === 'function') {
|
|
64
109
|
var mountElementMethods = ['appendChild', 'insertBefore', 'append'];
|
|
65
|
-
for (var
|
|
66
|
-
var
|
|
67
|
-
var originMethod = window.HTMLHeadElement.prototype[
|
|
68
|
-
window.HTMLHeadElement.prototype[
|
|
110
|
+
for (var _i2 = 0, _mountElementMethods = mountElementMethods; _i2 < _mountElementMethods.length; _i2++) {
|
|
111
|
+
var _method = _mountElementMethods[_i2];
|
|
112
|
+
var originMethod = window.HTMLHeadElement.prototype[_method];
|
|
113
|
+
window.HTMLHeadElement.prototype[_method] = makeElInjector(originMethod, _method);
|
|
69
114
|
}
|
|
70
|
-
for (var
|
|
71
|
-
var
|
|
72
|
-
var _originMethod = window.HTMLBodyElement.prototype[
|
|
73
|
-
window.HTMLBodyElement.prototype[
|
|
115
|
+
for (var _i3 = 0, _mountElementMethods2 = mountElementMethods; _i3 < _mountElementMethods2.length; _i3++) {
|
|
116
|
+
var _method2 = _mountElementMethods2[_i3];
|
|
117
|
+
var _originMethod = window.HTMLBodyElement.prototype[_method2];
|
|
118
|
+
window.HTMLBodyElement.prototype[_method2] = makeElInjector(_originMethod, _method2);
|
|
74
119
|
}
|
|
75
|
-
for (var
|
|
76
|
-
var
|
|
77
|
-
var _originMethod2 = window.Element.prototype[
|
|
78
|
-
window.Element.prototype[
|
|
120
|
+
for (var _i4 = 0, _mountElementMethods3 = mountElementMethods; _i4 < _mountElementMethods3.length; _i4++) {
|
|
121
|
+
var _method3 = _mountElementMethods3[_i4];
|
|
122
|
+
var _originMethod2 = window.Element.prototype[_method3];
|
|
123
|
+
window.Element.prototype[_method3] = makeElInjector(_originMethod2, _method3);
|
|
79
124
|
}
|
|
80
125
|
}
|