@alicloud/console-os-browser-vm 1.0.13 → 1.3.0-canary.5

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/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2019 Alibaba Cloud
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- !function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.aliOSBrowserVM=e():t.aliOSBrowserVM=e()}(window,function(){return n=[function(t,e,n){t.exports=n(2)},function(t,e,n){t.exports=n(3)},function(t,e,n){var r=function(a){"use strict";var u,t=Object.prototype,s=t.hasOwnProperty,e="function"==typeof Symbol?Symbol:{},r=e.iterator||"@@iterator",n=e.asyncIterator||"@@asyncIterator",o=e.toStringTag||"@@toStringTag";function i(t,e,n){return Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{i({},"")}catch(t){i=function(t,e,n){return t[e]=n}}function c(t,e,n,r){var o,i,a,c,e=e&&e.prototype instanceof v?e:v,e=Object.create(e.prototype),r=new L(r||[]);return e._invoke=(o=t,i=n,a=r,c=l,function(t,e){if(c===h)throw new Error("Generator is already running");if(c===d){if("throw"===t)throw e;return _()}for(a.method=t,a.arg=e;;){var n=a.delegate;if(n){var r=function t(e,n){var r=e.iterator[n.method];if(r===u){if(n.delegate=null,"throw"===n.method){if(e.iterator.return&&(n.method="return",n.arg=u,t(e,n),"throw"===n.method))return y;n.method="throw",n.arg=new TypeError("The iterator does not provide a 'throw' method")}return y}r=f(r,e.iterator,n.arg);if("throw"===r.type)return n.method="throw",n.arg=r.arg,n.delegate=null,y;var r=r.arg;if(!r)return n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,y;{if(!r.done)return r;n[e.resultName]=r.value,n.next=e.nextLoc,"return"!==n.method&&(n.method="next",n.arg=u)}n.delegate=null;return y}(n,a);if(r){if(r===y)continue;return r}}if("next"===a.method)a.sent=a._sent=a.arg;else if("throw"===a.method){if(c===l)throw c=d,a.arg;a.dispatchException(a.arg)}else"return"===a.method&&a.abrupt("return",a.arg);c=h;r=f(o,i,a);if("normal"===r.type){if(c=a.done?d:p,r.arg!==y)return{value:r.arg,done:a.done}}else"throw"===r.type&&(c=d,a.method="throw",a.arg=r.arg)}}),e}function f(t,e,n){try{return{type:"normal",arg:t.call(e,n)}}catch(t){return{type:"throw",arg:t}}}a.wrap=c;var l="suspendedStart",p="suspendedYield",h="executing",d="completed",y={};function v(){}function m(){}function w(){}var b={};b[r]=function(){return this};e=Object.getPrototypeOf,e=e&&e(e(S([])));e&&e!==t&&s.call(e,r)&&(b=e);var g=w.prototype=v.prototype=Object.create(b);function O(t){["next","throw","return"].forEach(function(e){i(t,e,function(t){return this._invoke(e,t)})})}function x(a,c){var e;this._invoke=function(n,r){function t(){return new c(function(t,e){!function e(t,n,r,o){t=f(a[t],a,n);if("throw"!==t.type){var i=t.arg,n=i.value;return n&&"object"==typeof n&&s.call(n,"__await")?c.resolve(n.__await).then(function(t){e("next",t,r,o)},function(t){e("throw",t,r,o)}):c.resolve(n).then(function(t){i.value=t,r(i)},function(t){return e("throw",t,r,o)})}o(t.arg)}(n,r,t,e)})}return e=e?e.then(t,t):t()}}function E(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function j(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function L(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(E,this),this.reset(!0)}function S(e){if(e){var t=e[r];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var n=-1,t=function t(){for(;++n<e.length;)if(s.call(e,n))return t.value=e[n],t.done=!1,t;return t.value=u,t.done=!0,t};return t.next=t}}return{next:_}}function _(){return{value:u,done:!0}}return m.prototype=g.constructor=w,w.constructor=m,m.displayName=i(w,o,"GeneratorFunction"),a.isGeneratorFunction=function(t){t="function"==typeof t&&t.constructor;return!!t&&(t===m||"GeneratorFunction"===(t.displayName||t.name))},a.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,w):(t.__proto__=w,i(t,o,"GeneratorFunction")),t.prototype=Object.create(g),t},a.awrap=function(t){return{__await:t}},O(x.prototype),x.prototype[n]=function(){return this},a.AsyncIterator=x,a.async=function(t,e,n,r,o){void 0===o&&(o=Promise);var i=new x(c(t,e,n,r),o);return a.isGeneratorFunction(e)?i:i.next().then(function(t){return t.done?t.value:i.next()})},O(g),i(g,o,"Generator"),g[r]=function(){return this},g.toString=function(){return"[object Generator]"},a.keys=function(n){var t,r=[];for(t in n)r.push(t);return r.reverse(),function t(){for(;r.length;){var e=r.pop();if(e in n)return t.value=e,t.done=!1,t}return t.done=!0,t}},a.values=S,L.prototype={constructor:L,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=u,this.done=!1,this.delegate=null,this.method="next",this.arg=u,this.tryEntries.forEach(j),!t)for(var e in this)"t"===e.charAt(0)&&s.call(this,e)&&!isNaN(+e.slice(1))&&(this[e]=u)},stop:function(){this.done=!0;var t=this.tryEntries[0],t=t.completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(n){if(this.done)throw n;var r=this;function t(t,e){return i.type="throw",i.arg=n,r.next=t,e&&(r.method="next",r.arg=u),!!e}for(var e=this.tryEntries.length-1;0<=e;--e){var o=this.tryEntries[e],i=o.completion;if("root"===o.tryLoc)return t("end");if(o.tryLoc<=this.prev){var a=s.call(o,"catchLoc"),c=s.call(o,"finallyLoc");if(a&&c){if(this.prev<o.catchLoc)return t(o.catchLoc,!0);if(this.prev<o.finallyLoc)return t(o.finallyLoc)}else if(a){if(this.prev<o.catchLoc)return t(o.catchLoc,!0)}else{if(!c)throw new Error("try statement without catch or finally");if(this.prev<o.finallyLoc)return t(o.finallyLoc)}}}},abrupt:function(t,e){for(var n=this.tryEntries.length-1;0<=n;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&s.call(r,"finallyLoc")&&this.prev<r.finallyLoc){var o=r;break}}o&&("break"===t||"continue"===t)&&o.tryLoc<=e&&e<=o.finallyLoc&&(o=null);var i=o?o.completion:{};return i.type=t,i.arg=e,o?(this.method="next",this.next=o.finallyLoc,y):this.complete(i)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),y},finish:function(t){for(var e=this.tryEntries.length-1;0<=e;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),j(n),y}},catch:function(t){for(var e=this.tryEntries.length-1;0<=e;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var r,o=n.completion;return"throw"===o.type&&(r=o.arg,j(n)),r}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,n){return this.delegate={iterator:S(t),resultName:e,nextLoc:n},"next"===this.method&&(this.arg=u),y}},a}(t.exports);try{regeneratorRuntime=r}catch(t){Function("r","regeneratorRuntime = r")(r)}},function(t,e,n){"use strict";function a(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function u(t,e,n,r,o,i,a){try{var c=t[i](a),u=c.value}catch(t){return void n(t)}c.done?e(u):Promise.resolve(u).then(r,o)}function c(c){return function(){var t=this,a=arguments;return new Promise(function(e,n){var r=c.apply(t,a);function o(t){u(r,e,n,o,i,"next",t)}function i(t){u(r,e,n,o,i,"throw",t)}o(void 0)})}}n.r(e),n.d(e,"createContext",function(){return k}),n.d(e,"removeContext",function(){return F}),n.d(e,"evalScripts",function(){return C});var e=n(0),s=n.n(e),i=function(o){setTimeout(function(){var t;if(o.src){try{t=new URL(o.src)}catch(t){return}var e,n=t.searchParams,r=o.ownerAppWindow;n&&(e=n.get("callback")||n.get("cb"),e&&"function"==typeof r[e]&&(window[e]=function(){var t=r[e].apply(r,arguments);return window[e]=null,t}))}},0)};if("function"==typeof window.Element)for(var r=0,o=["appendChild","insertBefore","append"];r<o.length;r++){var f=o[r],l=window.Element.prototype[f];window.Element.prototype[f]=function(o){return function(e){e&&"SCRIPT"===e.nodeName&&e.ownerAppWindow&&i(e);for(var t=arguments.length,n=new Array(1<t?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];try{return o.call.apply(o,[this,e].concat(n))}catch(t){return o.apply(this,[e].concat(n))}}}(l)}function p(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function h(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}function d(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n<e;n++)r[n]=t[n];return r}function y(t){return function(t){if(Array.isArray(t))return d(t)}(t)||function(t){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(t))return Array.from(t)}(t)||function(t,e){if(t){if("string"==typeof t)return d(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?d(t,e):void 0}}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}var v=window.addEventListener,m=window.removeEventListener,w=["mousedown","mouseup","touchcancel","touchend","touchstart","auxclick","dblclick","pointercancel","pointerdown","pointerup","dragend","dragstart","drop","compositionend","compositionstart","keydown","keypress","keyup","input","textInput","close","cancel","copy","cut","paste","click","change","contextmenu","reset","submit","resize","scroll","foucs","blur"],b=["setTimeout","setInterval","clearInterval","clearTimeout"],g=["requestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","oRequestAnimationFrame","msRequestAnimationFrame","cancelAnimationFrame","webkitCancelAnimationFrame","mozCancelAnimationFrame","oCancelAnimationFrame","msCancelAnimationFrame"],e=function t(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},n=1<arguments.length?arguments[1]:void 0,r=2<arguments.length?arguments[2]:void 0;p(this,t);var a=[].concat(g,y(e.externals||[])),c={};return b.forEach(function(t){a.includes(t)||(c[t]=r.contentWindow[t].bind(r.contentWindow))}),new Proxy(r.contentWindow,{set:function(t,e,n){return t[e]=n,c[e]=n,!0},get:function(t,e){if(a.includes(e))return"function"==typeof window[e]&&/^[a-z]/.test(e)?window[e].bind&&window[e].bind(window):window[e];switch(e){case"document":return n.document;case"location":return n.location;case"history":return n.history;case"__CONSOLE_OS_GLOBAL_VARS_":return c;case"addEventListener":return i=n,function(t,e,n){var r=i._listenerMap.get(t)||[];return i._listenerMap.set(t,[].concat(y(r),[e])),-1===w.indexOf(t)?i.baseFrame.addEventListener.apply(i.baseFrame.contentWindow,[t,e,n]):v.apply(window,[t,e,n])};case"removeEventListener":return o=n,function(t,e,n){var r=o._listenerMap.get(t);return r&&r.length&&-1!==r.indexOf(e)&&r.splice(r.indexOf(e),1),-1===w.indexOf(t)?o.baseFrame.removeEventListener.apply(o.baseFrame.contentWindow,[t,e,n]):m.apply(window,[t,e,n])}}var o,i;return c[e]||("function"==typeof t[e]&&/^[a-z]/.test(e)?t[e].bind&&t[e].bind(t):t[e])}})},O=e;function x(t,e){var n;if("undefined"==typeof Symbol||null==t[Symbol.iterator]){if(Array.isArray(t)||(n=function(t,e){if(!t)return;if("string"==typeof t)return E(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return E(t,e)}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0,e=function(){};return{s:e,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:e}}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 o,i=!0,a=!1;return{s:function(){n=t[Symbol.iterator]()},n:function(){var t=n.next();return i=t.done,t},e:function(t){a=!0,o=t},f:function(){try{i||null==n.return||n.return()}finally{if(a)throw o}}}}function E(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n<e;n++)r[n]=t[n];return r}var e=function t(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},n=1<arguments.length?arguments[1]:void 0;p(this,t);var o=[];return new Proxy(document,{set:function(t,e,n){return"cookie"===e?document.cookie=n:t[e]=n,!0},get:function(r,t){switch(t){case"body":return n.body;case"location":return n.location;case"defaultView":return n.window;case"write":case"writeln":return function(){};case"createElement":return function(){var t=(t=document).createElement.apply(t,arguments);return t.ownerAppWindow=n.window,t.appId=e.id,t};case"addEventListener":return function(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];return o.push(e),r.addEventListener.apply(r,e)};case"removeEventListeners":return function(){var e=x(o);try{for(e.s();!(t=e.n()).done;){var t=t.value;r.removeEventListener.apply(r,y(t))}}catch(t){e.e(t)}finally{e.f()}}}return"function"==typeof r[t]?r[t].bind&&r[t].bind(r):r[t]}})},j=e,e=function t(r){return p(this,t),new Proxy({},{set:function(t,e,n){return"href"===e||(r[e]=n),!0},get:function(t,e){switch(e){case"reload":case"replace":return function(){};case"toString":return function(){try{return r.toString()}catch(t){return r.href}}}return"function"==typeof r[e]?r[e].bind&&r[e].bind(t):r[e]}})},L=e,e=function t(e,o){if(p(this,t),!e)return o.history;function i(){o.postMessage({type:"".concat(e,":history-change"),data:JSON.parse(JSON.stringify(o.location))},"*")}var a=o.history.pushState,c=o.history.replaceState;return o.history.pushState=function(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];var r=a.apply(o.history,[].concat(e));return i(),r},o.history.replaceState=function(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];var r=c.apply(o.history,[].concat(e));return i(),r},o.history},S=e;function _(e,t){var n,r=Object.keys(e);return Object.getOwnPropertySymbols&&(n=Object.getOwnPropertySymbols(e),t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)),r}var e=function(){function r(t,e){p(this,r),this.location=new L(e.contentWindow.location),this.history=new S(t.id,e.contentWindow),this.window=new O(t,this,e,location);var n=t.body;t.disableBody?n=document.body:t.body||(n=document.createElement("body"),document.documentElement.appendChild(n)),this.body=n,this.document=new j(t,this,e,location),this.baseFrame=e,this._listenerMap=new Map,this.window.__IS_CONSOLE_OS_CONTEXT__=!0}var t,e,n,o,i;return t=r,e=[{key:"loadScripts",value:(i=c(s.a.mark(function t(e){var n;return s.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,fetch(e);case 2:return n=t.sent,t.next=5,n.text();case 5:n=t.sent,n=new Function("\n return function ({window, location, history, document}){ \n with(window.__CONSOLE_OS_GLOBAL_VARS_) {\n try {\n ".concat(n,"\n }\n catch(e) {\n console.log(e)\n }\n }\n }//@ sourceMappingURL=").concat(e)),n()(function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?_(Object(n),!0).forEach(function(t){a(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):_(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}({},this));case 8:case"end":return t.stop()}},t,this)})),function(t){return i.apply(this,arguments)})},{key:"updateBody",value:function(t){this.body=t}},{key:"remove",value:function(){this.document.removeEventListeners(),this.baseFrame&&(this.baseFrame.parentNode?this.baseFrame.parentNode.removeChild(this.baseFrame):this.baseFrame.setAttribute("src","about:blank"))}}],n=[{key:"create",value:function(n){var r=this;return new Promise(function(t){var e=document.createElement("iframe");if(e.setAttribute("src",n.url||"/api.json"),e.style.cssText="position: absolute; top: -20000px; width: 100%; height: 1px;",document.body.appendChild(e),"about:blank"===n.url)return t(new r(n,e));e.onload=function(){t(new r(n,e))}})}},{key:"remove",value:(o=c(s.a.mark(function t(e){return s.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:e.remove&&e.remove();case 1:case"end":return t.stop()}},t)})),function(t){return o.apply(this,arguments)})}],e&&h(t.prototype,e),n&&h(t,n),r}(),A=e;function P(e,t){var n,r=Object.keys(e);return Object.getOwnPropertySymbols&&(n=Object.getOwnPropertySymbols(e),t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)),r}var k=function(){var t=c(s.a.mark(function t(){var e,n=arguments;return s.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return e=0<n.length&&void 0!==n[0]?n[0]:{},t.next=3,A.create(e);case 3:return t.abrupt("return",t.sent);case 4:case"end":return t.stop()}},t)}));return function(){return t.apply(this,arguments)}}(),F=function(){var e=c(s.a.mark(function t(e){return s.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,A.remove(e);case 2:return t.abrupt("return",t.sent);case 3:case"end":return t.stop()}},t)}));return function(t){return e.apply(this,arguments)}}(),C=function(){var e=c(s.a.mark(function t(e){var n,r,o,i=arguments;return s.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return n=1<i.length&&void 0!==i[1]?i[1]:{},t.next=3,A.create(n);case 3:return r=t.sent,o=new Function("\n return function({window, location, history, document}){ \n with(window.__CONSOLE_OS_GLOBAL_VARS_) { \n ".concat(e,"\n }\n }//@sourceURL=").concat(n.name)),t.abrupt("return",o(function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?P(Object(n),!0).forEach(function(t){a(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):P(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}({},r)));case 6:case"end":return t.stop()}},t)}));return function(t){return e.apply(this,arguments)}}()}],r={},o.m=n,o.c=r,o.d=function(t,e,n){o.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},o.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},o.t=function(e,t){if(1&t&&(e=o(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(o.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)o.d(n,r,function(t){return e[t]}.bind(null,r));return n},o.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return o.d(e,"a",e),e},o.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},o.p="/",o(o.s=1);function o(t){if(r[t])return r[t].exports;var e=r[t]={i:t,l:!1,exports:{}};return n[t].call(e.exports,e,e.exports,o),e.l=!0,e.exports}var n,r});
1
+ !function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.aliOSBrowserVM=e():t.aliOSBrowserVM=e()}(window,function(){return n=[function(t,e,n){t.exports=n(2)},function(t,e,n){t.exports=n(3)},function(e,t,n){e=function(a){"use strict";var u,t=Object.prototype,s=t.hasOwnProperty,e="function"==typeof Symbol?Symbol:{},r=e.iterator||"@@iterator",n=e.asyncIterator||"@@asyncIterator",o=e.toStringTag||"@@toStringTag";function i(t,e,n){return Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{i({},"")}catch(t){i=function(t,e,n){return t[e]=n}}function c(t,e,n,r){var o,i,a,c,e=e&&e.prototype instanceof v?e:v,e=Object.create(e.prototype),r=new _(r||[]);return e._invoke=(o=t,i=n,a=r,c=f,function(t,e){if(c===h)throw new Error("Generator is already running");if(c===d){if("throw"===t)throw e;return j()}for(a.method=t,a.arg=e;;){var n=a.delegate;if(n){var r=function t(e,n){var r=e.iterator[n.method];if(r===u){if(n.delegate=null,"throw"===n.method){if(e.iterator.return&&(n.method="return",n.arg=u,t(e,n),"throw"===n.method))return y;n.method="throw",n.arg=new TypeError("The iterator does not provide a 'throw' method")}return y}var r=l(r,e.iterator,n.arg);if("throw"===r.type)return n.method="throw",n.arg=r.arg,n.delegate=null,y;r=r.arg;if(!r)return n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,y;{if(!r.done)return r;n[e.resultName]=r.value,n.next=e.nextLoc,"return"!==n.method&&(n.method="next",n.arg=u)}n.delegate=null;return y}(n,a);if(r){if(r===y)continue;return r}}if("next"===a.method)a.sent=a._sent=a.arg;else if("throw"===a.method){if(c===f)throw c=d,a.arg;a.dispatchException(a.arg)}else"return"===a.method&&a.abrupt("return",a.arg);c=h;r=l(o,i,a);if("normal"===r.type){if(c=a.done?d:p,r.arg!==y)return{value:r.arg,done:a.done}}else"throw"===r.type&&(c=d,a.method="throw",a.arg=r.arg)}}),e}function l(t,e,n){try{return{type:"normal",arg:t.call(e,n)}}catch(t){return{type:"throw",arg:t}}}a.wrap=c;var f="suspendedStart",p="suspendedYield",h="executing",d="completed",y={};function v(){}function m(){}function w(){}var b={};i(b,r,function(){return this});e=Object.getPrototypeOf,e=e&&e(e(L([])));e&&e!==t&&s.call(e,r)&&(b=e);var g=w.prototype=v.prototype=Object.create(b);function O(t){["next","throw","return"].forEach(function(e){i(t,e,function(t){return this._invoke(e,t)})})}function x(a,c){var e;this._invoke=function(n,r){function t(){return new c(function(t,e){!function e(t,n,r,o){t=l(a[t],a,n);if("throw"!==t.type){var i=t.arg,n=i.value;return n&&"object"==typeof n&&s.call(n,"__await")?c.resolve(n.__await).then(function(t){e("next",t,r,o)},function(t){e("throw",t,r,o)}):c.resolve(n).then(function(t){i.value=t,r(i)},function(t){return e("throw",t,r,o)})}o(t.arg)}(n,r,t,e)})}return e=e?e.then(t,t):t()}}function S(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function E(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function _(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(S,this),this.reset(!0)}function L(e){if(e){var t=e[r];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var n=-1,t=function t(){for(;++n<e.length;)if(s.call(e,n))return t.value=e[n],t.done=!1,t;return t.value=u,t.done=!0,t};return t.next=t}}return{next:j}}function j(){return{value:u,done:!0}}return m.prototype=w,i(g,"constructor",w),i(w,"constructor",m),m.displayName=i(w,o,"GeneratorFunction"),a.isGeneratorFunction=function(t){t="function"==typeof t&&t.constructor;return!!t&&(t===m||"GeneratorFunction"===(t.displayName||t.name))},a.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,w):(t.__proto__=w,i(t,o,"GeneratorFunction")),t.prototype=Object.create(g),t},a.awrap=function(t){return{__await:t}},O(x.prototype),i(x.prototype,n,function(){return this}),a.AsyncIterator=x,a.async=function(t,e,n,r,o){void 0===o&&(o=Promise);var i=new x(c(t,e,n,r),o);return a.isGeneratorFunction(e)?i:i.next().then(function(t){return t.done?t.value:i.next()})},O(g),i(g,o,"Generator"),i(g,r,function(){return this}),i(g,"toString",function(){return"[object Generator]"}),a.keys=function(n){var t,r=[];for(t in n)r.push(t);return r.reverse(),function t(){for(;r.length;){var e=r.pop();if(e in n)return t.value=e,t.done=!1,t}return t.done=!0,t}},a.values=L,_.prototype={constructor:_,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=u,this.done=!1,this.delegate=null,this.method="next",this.arg=u,this.tryEntries.forEach(E),!t)for(var e in this)"t"===e.charAt(0)&&s.call(this,e)&&!isNaN(+e.slice(1))&&(this[e]=u)},stop:function(){this.done=!0;var t=this.tryEntries[0],t=t.completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(n){if(this.done)throw n;var r=this;function t(t,e){return i.type="throw",i.arg=n,r.next=t,e&&(r.method="next",r.arg=u),!!e}for(var e=this.tryEntries.length-1;0<=e;--e){var o=this.tryEntries[e],i=o.completion;if("root"===o.tryLoc)return t("end");if(o.tryLoc<=this.prev){var a=s.call(o,"catchLoc"),c=s.call(o,"finallyLoc");if(a&&c){if(this.prev<o.catchLoc)return t(o.catchLoc,!0);if(this.prev<o.finallyLoc)return t(o.finallyLoc)}else if(a){if(this.prev<o.catchLoc)return t(o.catchLoc,!0)}else{if(!c)throw new Error("try statement without catch or finally");if(this.prev<o.finallyLoc)return t(o.finallyLoc)}}}},abrupt:function(t,e){for(var n=this.tryEntries.length-1;0<=n;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&s.call(r,"finallyLoc")&&this.prev<r.finallyLoc){var o=r;break}}o&&("break"===t||"continue"===t)&&o.tryLoc<=e&&e<=o.finallyLoc&&(o=null);var i=o?o.completion:{};return i.type=t,i.arg=e,o?(this.method="next",this.next=o.finallyLoc,y):this.complete(i)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),y},finish:function(t){for(var e=this.tryEntries.length-1;0<=e;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),E(n),y}},catch:function(t){for(var e=this.tryEntries.length-1;0<=e;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var r,o=n.completion;return"throw"===o.type&&(r=o.arg,E(n)),r}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,n){return this.delegate={iterator:L(t),resultName:e,nextLoc:n},"next"===this.method&&(this.arg=u),y}},a}(e.exports);try{regeneratorRuntime=e}catch(t){"object"==typeof globalThis?globalThis.regeneratorRuntime=e:Function("r","regeneratorRuntime = r")(e)}},function(t,e,n){"use strict";function a(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function u(t,e,n,r,o,i,a){try{var c=t[i](a),u=c.value}catch(t){return void n(t)}c.done?e(u):Promise.resolve(u).then(r,o)}function o(c){return function(){var t=this,a=arguments;return new Promise(function(e,n){var r=c.apply(t,a);function o(t){u(r,e,n,o,i,"next",t)}function i(t){u(r,e,n,o,i,"throw",t)}o(void 0)})}}n.r(e),n.d(e,"createContext",function(){return G}),n.d(e,"removeContext",function(){return B}),n.d(e,"evalScripts",function(){return D});function i(t){try{e=new URL(t)}catch(t){return}var e=e.searchParams;return e?e.get("callback")||e.get("cb"):null}function r(){return"undefined"==typeof document}var e=n(0),c=n.n(e),s=function(t){setTimeout(function(){var e,n;t.src&&(e=t.ownerContext.window,n=i(t.src),n&&"function"==typeof e[n]&&(window[n]=function(){var t=e[n].apply(e,arguments);return window[n]=null,t}))},0)};if(!r()&&"function"==typeof window.Element)for(var l=0,f=["appendChild","insertBefore","append"];l<f.length;l++){var p=f[l],h=window.Element.prototype[p];window.Element.prototype[p]=function(o){return function(n){if(n&&n._evalScriptInSandbox&&n.ownerContext&&"SCRIPT"===n.nodeName&&n.src&&-1===n.ownerContext.allowResources.indexOf(n.src)&&!i(n.src))return n.ownerContext.loadScripts(n.src).then(function(){var t=n._listenerMap.get("load");t&&t.forEach(function(t){t()}),n.onload&&n.onload()}).catch(function(e){console.error(e);var t=n._listenerMap.get("error");t&&t.forEach(function(t){t(e)}),n.onerror&&n.onerror(e)});n&&"SCRIPT"===n.nodeName&&n.ownerContext&&s(n),n&&n.scriptText&&n.ownerContext.evalScript(n.scriptText);for(var t=arguments.length,e=new Array(1<t?t-1:0),r=1;r<t;r++)e[r-1]=arguments[r];try{return o.call.apply(o,[this,n].concat(e))}catch(t){return o.apply(this,[n].concat(e))}}}(h)}function d(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function y(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}function v(t,e,n){return e&&y(t.prototype,e),n&&y(t,n),Object.defineProperty(t,"prototype",{writable:!1}),t}function m(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n<e;n++)r[n]=t[n];return r}function w(t){return function(t){if(Array.isArray(t))return m(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,e){if(t){if("string"==typeof t)return m(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?m(t,e):void 0}}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}var b=r()?function(){}:window.addEventListener,g=r()?function(){}:window.removeEventListener,O=["webkitmouseforcedown","webkitmouseforcewillbegin","visibilitychange","error","mousemove","mousedown","mouseup","touchcancel","touchend","touchstart","auxclick","dblclick","pointercancel","pointerdown","pointerup","dragend","dragstart","drop","compositionend","compositionstart","keydown","keypress","keyup","input","textInput","close","cancel","copy","cut","paste","click","change","contextmenu","reset","submit","resize","scroll","foucs","blur"];function x(t){t=t.prototype&&t.prototype.constructor===t&&1<Object.getOwnPropertyNames(t.prototype).length||/^class\b/.test(t.toString());return t}function S(t){t=0===t.name.indexOf("bound ")&&!t.hasOwnProperty("prototype");return t}function E(e){var o,i,a,c;e._listenerMap=new Map,e.addEventListener=(o=e,i=e.addEventListener,function(t,e,n){var r=o._listenerMap.get(t)||[];return o._listenerMap.set(t,[].concat(w(r),[e])),i.apply(o,[t,e,n])}),e.removeEventListener=(a=e,c=e.removeEventListener,function(t,e,n){var r=a._listenerMap.get(t);return r&&r.length&&-1!==r.indexOf(e)&&r.splice(r.indexOf(e),1),c.apply(a,[t,e,n])}),P.forEach(function(t){Object.defineProperty(e,t,{get:function(){return this.scriptText||""},set:function(t){this.scriptText=t,e.parentNode&&this.ownerContext.evalScript&&e.ownerContext.evalScript(t.toString())},enumerable:!1})})}var _=["setTimeout","setInterval","clearInterval","clearTimeout"],L=["requestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","oRequestAnimationFrame","msRequestAnimationFrame","cancelAnimationFrame","webkitCancelAnimationFrame","mozCancelAnimationFrame","oCancelAnimationFrame","msCancelAnimationFrame"],e=v(function t(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},c=1<arguments.length?arguments[1]:void 0,n=2<arguments.length?arguments[2]:void 0;d(this,t);var u=[].concat(L,w(e.externals||[])),s={};return _.forEach(function(t){u.includes(t)||(s[t]=n.contentWindow[t].bind(n.contentWindow))}),new Proxy(n.contentWindow,{set:function(t,e,n){return t[e]=n,s[e]=n,!0},get:function(t,e){if(u.includes(e)){var n=window[e];if("function"!=typeof n||S(n)||x(n))return n;var r,o=n.bind(window);for(r in n)o[r]=n[r];return o}switch(e){case"document":return c.document;case"location":return c.location;case"history":return c.history;case"__CONSOLE_OS_GLOBAL_VARS_":return s;case"addEventListener":return a=c,function(t,e,n){var r=a._listenerMap.get(t)||[];return a._listenerMap.set(t,[].concat(w(r),[e])),-1===O.indexOf(t)?a.baseFrame.addEventListener.apply(a.baseFrame.contentWindow,[t,e,n]):b.apply(window,[t,e,n])};case"removeEventListener":return i=c,function(t,e,n){var r=i._listenerMap.get(t);return r&&r.length&&-1!==r.indexOf(e)&&r.splice(r.indexOf(e),1),-1===O.indexOf(t)?i.baseFrame.removeEventListener.apply(i.baseFrame.contentWindow,[t,e,n]):g.apply(window,[t,e,n])}}var i,a;if(s[e])return s[e];e=t[e];return"function"!=typeof e||S(e)||x(e)?e:e.bind&&e.bind(t)}})}),j=e,P=["innerHTML","text","innerText"];function k(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=function(t,e){if(t){if("string"==typeof t)return A(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?A(t,e):void 0}}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0,e=function(){};return{s:e,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:e}}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 o,i=!0,a=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return i=t.done,t},e:function(t){a=!0,o=t},f:function(){try{i||null==n.return||n.return()}finally{if(a)throw o}}}}function A(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n<e;n++)r[n]=t[n];return r}var e=v(function t(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},n=1<arguments.length?arguments[1]:void 0;d(this,t);var o=[];return new Proxy(document,{set:function(t,e,n){return"cookie"===e?document.cookie=n:t[e]=n,!0},get:function(r,t){switch(t){case"body":return n.body;case"location":return n.location;case"defaultView":return n.window;case"write":case"writeln":return function(){};case"createElement":return function(){var t=(t=document).createElement.apply(t,arguments);return t.ownerContext=n,t.appId=e.id,"SCRIPT"!==t.tagName||e.enableScriptEscape||(t._evalScriptInSandbox=!0,E(t)),t};case"addEventListener":return function(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];return o.push(e),r.addEventListener.apply(r,e)};case"removeEventListeners":return function(){var t,e=k(o);try{for(e.s();!(t=e.n()).done;){var n=t.value;r.removeEventListener.apply(r,w(n))}}catch(t){e.e(t)}finally{e.f()}}}return"function"==typeof r[t]?r[t].bind&&r[t].bind(r):r[t]}})}),C=e,e=v(function t(r){return d(this,t),new Proxy({},{set:function(t,e,n){return"href"===e||(r[e]=n),!0},get:function(t,e){switch(e){case"reload":case"replace":return function(){};case"toString":return function(){try{return r.toString()}catch(t){return r.href}}}return"function"==typeof r[e]?r[e].bind&&r[e].bind(t):r[e]}})}),F=e,e=v(function t(e,o){if(d(this,t),!e)return o.history;function i(){o.postMessage({type:"".concat(e,":history-change"),data:JSON.parse(JSON.stringify(o.location))},"*")}var a=o.history.pushState,c=o.history.replaceState;return o.history.pushState=function(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];var r=a.apply(o.history,[].concat(e));return i(),r},o.history.replaceState=function(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];var r=c.apply(o.history,[].concat(e));return i(),r},o.history}),T=e;function M(e,t){var n,r=Object.keys(e);return Object.getOwnPropertySymbols&&(n=Object.getOwnPropertySymbols(e),t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)),r}function N(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?M(Object(n),!0).forEach(function(t){a(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):M(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}var e=function(){function r(t,e){d(this,r),this.location=new F(e.contentWindow.location),this.history=new T(t.id,e.contentWindow),this.window=new j(t,this,e,location),this.allowResources=t.allowResources||[];var n=t.body;t.disableBody?n=document.body:t.body||(n=document.createElement("body"),document.documentElement.appendChild(n)),this.body=n,this.document=new C(N({enableScriptEscape:!0},t),this,e,location),this.baseFrame=e,this._listenerMap=new Map,this.window.__IS_CONSOLE_OS_CONTEXT__=!0}var e,n;return v(r,[{key:"loadScripts",value:(n=o(c.a.mark(function t(n){var r;return c.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,fetch(n,{credentials:(e=n,e.includes("console.aliyun.com")?"include":"omit")});case 2:return r=t.sent,t.next=5,r.text();case 5:r=t.sent,this.evalScript(r,n);case 7:case"end":return t.stop()}var e},t,this)})),function(t){return n.apply(this,arguments)})},{key:"evalScript",value:function(t){var e=1<arguments.length&&void 0!==arguments[1]?arguments[1]:"",e=new Function("\n return function ({window, location, history, document}){ \n with(window.__CONSOLE_OS_GLOBAL_VARS_) {\n try {\n ".concat(t,"\n }\n catch(e) {\n console.log(e)\n }\n }\n }//@ sourceMappingURL=").concat(e));e().call(this.window,N({},this))}},{key:"updateBody",value:function(t){this.body=t}},{key:"remove",value:function(){this.document.removeEventListeners(),this.baseFrame&&(this.baseFrame.parentNode?this.baseFrame.parentNode.removeChild(this.baseFrame):this.baseFrame.setAttribute("src","about:blank"))}}],[{key:"create",value:function(n){var r=this;return new Promise(function(t){var e=document.createElement("iframe");if(e.setAttribute("src",n.url||"/api.json"),e.style.cssText="position: absolute; top: -20000px; width: 100%; height: 1px;",document.body.appendChild(e),"about:blank"===n.url)return t(new r(n,e));e.onload=function(){t(new r(n,e))}})}},{key:"remove",value:(e=o(c.a.mark(function t(e){return c.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:e.remove&&e.remove();case 1:case"end":return t.stop()}},t)})),function(t){return e.apply(this,arguments)})}]),r}(),I=e;function R(e,t){var n,r=Object.keys(e);return Object.getOwnPropertySymbols&&(n=Object.getOwnPropertySymbols(e),t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)),r}var G=function(){var t=o(c.a.mark(function t(){var e,n=arguments;return c.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return e=0<n.length&&void 0!==n[0]?n[0]:{},t.next=3,I.create(e);case 3:return t.abrupt("return",t.sent);case 4:case"end":return t.stop()}},t)}));return function(){return t.apply(this,arguments)}}(),B=function(){var e=o(c.a.mark(function t(e){return c.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,I.remove(e);case 2:return t.abrupt("return",t.sent);case 3:case"end":return t.stop()}},t)}));return function(t){return e.apply(this,arguments)}}(),D=function(){var e=o(c.a.mark(function t(e){var n,r,o,i=arguments;return c.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return n=1<i.length&&void 0!==i[1]?i[1]:{},t.next=3,I.create(n);case 3:return r=t.sent,o=new Function("\n return function({window, location, history, document}){ \n with(window.__CONSOLE_OS_GLOBAL_VARS_) { \n ".concat(e,"\n }\n }//@sourceURL=").concat(n.name)),t.abrupt("return",o(function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?R(Object(n),!0).forEach(function(t){a(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):R(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}({},r)));case 6:case"end":return t.stop()}},t)}));return function(t){return e.apply(this,arguments)}}()}],r={},o.m=n,o.c=r,o.d=function(t,e,n){o.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},o.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},o.t=function(e,t){if(1&t&&(e=o(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(o.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)o.d(n,r,function(t){return e[t]}.bind(null,r));return n},o.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return o.d(e,"a",e),e},o.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},o.p="/",o(o.s=1);function o(t){if(r[t])return r[t].exports;var e=r[t]={i:t,l:!1,exports:{}};return n[t].call(e.exports,e,e.exports,o),e.l=!0,e.exports}var n,r});
package/es/Context.js CHANGED
@@ -1,12 +1,12 @@
1
- import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
1
  import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator";
2
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
3
3
  import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
4
4
  import _createClass from "@babel/runtime/helpers/esm/createClass";
5
5
  import _regeneratorRuntime from "@babel/runtime/regenerator";
6
6
 
7
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
7
+ 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; }
8
8
 
9
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
9
+ 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; }
10
10
 
11
11
  /**
12
12
  * Context
@@ -18,6 +18,7 @@ import Window from './Window';
18
18
  import Document from './Document';
19
19
  import Location from './Location';
20
20
  import History from './History';
21
+ import { getFetchCredentials } from './utils/credentials';
21
22
 
22
23
  var Context = /*#__PURE__*/function () {
23
24
  function Context(conf, frame) {
@@ -26,6 +27,7 @@ var Context = /*#__PURE__*/function () {
26
27
  this.location = new Location(frame.contentWindow.location);
27
28
  this.history = new History(conf.id, frame.contentWindow);
28
29
  this.window = new Window(conf, this, frame, location);
30
+ this.allowResources = conf.allowResources || [];
29
31
  var body = conf.body;
30
32
 
31
33
  if (conf.disableBody) {
@@ -36,7 +38,9 @@ var Context = /*#__PURE__*/function () {
36
38
  }
37
39
 
38
40
  this.body = body;
39
- this.document = new Document(conf, this, frame, location);
41
+ this.document = new Document(_objectSpread({
42
+ enableScriptEscape: true
43
+ }, conf), this, frame, location);
40
44
  this.baseFrame = frame;
41
45
  this._listenerMap = new Map();
42
46
  this.window.__IS_CONSOLE_OS_CONTEXT__ = true;
@@ -46,13 +50,15 @@ var Context = /*#__PURE__*/function () {
46
50
  key: "loadScripts",
47
51
  value: function () {
48
52
  var _loadScripts = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(url) {
49
- var resp, code, resolver;
53
+ var resp, code;
50
54
  return _regeneratorRuntime.wrap(function _callee$(_context) {
51
55
  while (1) {
52
56
  switch (_context.prev = _context.next) {
53
57
  case 0:
54
58
  _context.next = 2;
55
- return fetch(url);
59
+ return fetch(url, {
60
+ credentials: getFetchCredentials(url)
61
+ });
56
62
 
57
63
  case 2:
58
64
  resp = _context.sent;
@@ -61,10 +67,9 @@ var Context = /*#__PURE__*/function () {
61
67
 
62
68
  case 5:
63
69
  code = _context.sent;
64
- resolver = new Function("\n return function ({window, location, history, document}){ \n with(window.__CONSOLE_OS_GLOBAL_VARS_) {\n try {\n ".concat(code, "\n }\n catch(e) {\n console.log(e)\n }\n }\n }//@ sourceMappingURL=").concat(url));
65
- resolver()(_objectSpread({}, this));
70
+ this.evalScript(code, url);
66
71
 
67
- case 8:
72
+ case 7:
68
73
  case "end":
69
74
  return _context.stop();
70
75
  }
@@ -78,6 +83,13 @@ var Context = /*#__PURE__*/function () {
78
83
 
79
84
  return loadScripts;
80
85
  }()
86
+ }, {
87
+ key: "evalScript",
88
+ value: function evalScript(code) {
89
+ var url = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "";
90
+ var resolver = new Function("\n return function ({window, location, history, document}){ \n with(window.__CONSOLE_OS_GLOBAL_VARS_) {\n try {\n ".concat(code, "\n }\n catch(e) {\n console.log(e)\n }\n }\n }//@ sourceMappingURL=").concat(url));
91
+ resolver().call(this.window, _objectSpread({}, this));
92
+ }
81
93
  }, {
82
94
  key: "updateBody",
83
95
  value: function updateBody(dom) {
package/es/Document.js CHANGED
@@ -1,19 +1,22 @@
1
1
  import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
2
+ import _createClass from "@babel/runtime/helpers/esm/createClass";
2
3
  import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
3
4
 
4
- function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { 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 = o[Symbol.iterator](); }, 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; } } }; }
5
+ 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; } } }; }
5
6
 
6
7
  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); }
7
8
 
8
9
  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; }
9
10
 
10
11
  /**
11
- * Window.js
12
+ * Document.js
12
13
  * @lastModified 2019085
13
14
  * @forwardCompatibleTo 2019085
14
15
  * @createAt 2019085
15
16
  */
16
- var Document = function Document() {
17
+ import { injectHTMLScriptElement } from './utils/HTMLScriptElement';
18
+
19
+ var Document = /*#__PURE__*/_createClass(function Document() {
17
20
  var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
18
21
  var context = arguments.length > 1 ? arguments[1] : undefined;
19
22
  var frame = arguments.length > 2 ? arguments[2] : undefined;
@@ -55,8 +58,14 @@ var Document = function Document() {
55
58
 
56
59
  var el = (_document = document).createElement.apply(_document, arguments);
57
60
 
58
- el.ownerAppWindow = context.window;
59
- el.appId = options.id;
61
+ el.ownerContext = context;
62
+ el.appId = options.id; // 对于 script 标签如果开启防逃逸,就直接 hack script 标签
63
+
64
+ if (el.tagName === 'SCRIPT' && !options.enableScriptEscape) {
65
+ el._evalScriptInSandbox = true;
66
+ injectHTMLScriptElement(el);
67
+ }
68
+
60
69
  return el;
61
70
  };
62
71
 
@@ -95,6 +104,6 @@ var Document = function Document() {
95
104
  }
96
105
  }
97
106
  });
98
- };
107
+ });
99
108
 
100
109
  export default Document;
package/es/Elements.js CHANGED
@@ -4,12 +4,46 @@
4
4
  * @forwardCompatibleTo 2019085
5
5
  * @createAt 2019085
6
6
  */
7
- import injectScriptCallBack from './utils/injectScriptCallBack';
7
+ import injectScriptCallBack, { getJsonCallback } from './utils/injectScriptCallBack';
8
+ import { isSSR } from './utils/isSSR';
8
9
 
9
10
  var makeElInjector = function makeElInjector(originMethod) {
10
11
  return function (el) {
11
- if (el && el.nodeName === 'SCRIPT' && el.ownerAppWindow) {
12
+ // 如果不在 BrowserVM 的白名单内,尝试通过 context 的 load script 通过 xhr 获取脚本内容,并在沙箱中执行
13
+ if (el && el._evalScriptInSandbox && el.ownerContext && el.nodeName === 'SCRIPT' && el.src && el.ownerContext.allowResources.indexOf(el.src) === -1 && !getJsonCallback(el.src)) {
14
+ return el.ownerContext.loadScripts(el.src).then(function () {
15
+ var fns = el._listenerMap.get('load');
16
+
17
+ if (fns) {
18
+ fns.forEach(function (fn) {
19
+ fn();
20
+ });
21
+ }
22
+
23
+ el.onload && el.onload();
24
+ }).catch(function (e) {
25
+ console.error(e);
26
+
27
+ var fns = el._listenerMap.get('error');
28
+
29
+ if (fns) {
30
+ fns.forEach(function (fn) {
31
+ fn(e);
32
+ });
33
+ }
34
+
35
+ el.onerror && el.onerror(e);
36
+ });
37
+ }
38
+
39
+ if (el && el.nodeName === 'SCRIPT' && el.ownerContext) {
12
40
  injectScriptCallBack(el);
41
+ } // 如果有 scriptText, 证明在 append 之前被设置了 text
42
+ // 所以直接执行这个 script
43
+
44
+
45
+ if (el && el.scriptText) {
46
+ el.ownerContext.evalScript(el.scriptText);
13
47
  } // fix: babel 会把 fn.call 转义成 fn.call.apply 造成 chrome 50 的几个版本报错
14
48
  // 这里 尝试 try catch 如果报错 直接调用 fn.apply
15
49
 
@@ -26,7 +60,7 @@ var makeElInjector = function makeElInjector(originMethod) {
26
60
  };
27
61
  };
28
62
 
29
- if (typeof window.Element === 'function') {
63
+ if (!isSSR() && typeof window.Element === 'function') {
30
64
  var mountElementMethods = ['appendChild', 'insertBefore', 'append'];
31
65
 
32
66
  for (var _i = 0, _mountElementMethods = mountElementMethods; _i < _mountElementMethods.length; _i++) {
package/es/History.js CHANGED
@@ -1,6 +1,7 @@
1
+ import _createClass from "@babel/runtime/helpers/esm/createClass";
1
2
  import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
2
3
 
3
- var History = function History(id, frame) {
4
+ var History = /*#__PURE__*/_createClass(function History(id, frame) {
4
5
  _classCallCheck(this, History);
5
6
 
6
7
  if (!id) {
@@ -38,6 +39,6 @@ var History = function History(id, frame) {
38
39
  };
39
40
 
40
41
  return frame.history;
41
- };
42
+ });
42
43
 
43
44
  export default History;
package/es/Location.js CHANGED
@@ -1,6 +1,7 @@
1
+ import _createClass from "@babel/runtime/helpers/esm/createClass";
1
2
  import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
2
3
 
3
- var Location = function Location(location) {
4
+ var Location = /*#__PURE__*/_createClass(function Location(location) {
4
5
  _classCallCheck(this, Location);
5
6
 
6
7
  return new Proxy({}, {
@@ -43,6 +44,6 @@ var Location = function Location(location) {
43
44
  }
44
45
  }
45
46
  });
46
- };
47
+ });
47
48
 
48
49
  export default Location;
package/es/Window.js CHANGED
@@ -1,14 +1,16 @@
1
1
  import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
2
+ import _createClass from "@babel/runtime/helpers/esm/createClass";
2
3
  import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
3
4
 
4
5
  /**
5
6
  * Window.js
6
7
  */
7
8
  import { addEventListener, removeEventListener } from './events';
9
+ import { isConstructable, isBoundedFunction } from './utils/common';
8
10
  var globalFnName = ['setTimeout', 'setInterval', 'clearInterval', 'clearTimeout'];
9
11
  var defaultExternals = ['requestAnimationFrame', 'webkitRequestAnimationFrame', 'mozRequestAnimationFrame', 'oRequestAnimationFrame', 'msRequestAnimationFrame', 'cancelAnimationFrame', 'webkitCancelAnimationFrame', 'mozCancelAnimationFrame', 'oCancelAnimationFrame', 'msCancelAnimationFrame'];
10
12
 
11
- var Window = function Window() {
13
+ var Window = /*#__PURE__*/_createClass(function Window() {
12
14
  var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
13
15
  var context = arguments.length > 1 ? arguments[1] : undefined;
14
16
  var frame = arguments.length > 2 ? arguments[2] : undefined;
@@ -32,10 +34,18 @@ var Window = function Window() {
32
34
  },
33
35
  get: function get(target, name) {
34
36
  if (externals.includes(name)) {
35
- if (typeof window[name] === 'function' && /^[a-z]/.test(name)) {
36
- return window[name].bind && window[name].bind(window);
37
+ var windowValue = window[name];
38
+
39
+ if (typeof windowValue === 'function' && !isBoundedFunction(windowValue) && !isConstructable(windowValue)) {
40
+ var bindFn = windowValue.bind(window);
41
+
42
+ for (var key in windowValue) {
43
+ bindFn[key] = windowValue[key];
44
+ }
45
+
46
+ return bindFn;
37
47
  } else {
38
- return window[name];
48
+ return windowValue;
39
49
  }
40
50
  }
41
51
 
@@ -63,13 +73,15 @@ var Window = function Window() {
63
73
  return __CONSOLE_OS_GLOBAL_VARS_[name];
64
74
  }
65
75
 
66
- if (typeof target[name] === 'function' && /^[a-z]/.test(name)) {
67
- return target[name].bind && target[name].bind(target);
76
+ var value = target[name];
77
+
78
+ if (typeof value === 'function' && !isBoundedFunction(value) && !isConstructable(value)) {
79
+ return value.bind && value.bind(target);
68
80
  } else {
69
- return target[name];
81
+ return value;
70
82
  }
71
83
  }
72
84
  });
73
- };
85
+ });
74
86
 
75
87
  export default Window;
package/es/events.js CHANGED
@@ -1,7 +1,8 @@
1
1
  import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
2
- var rawAddEventListener = window.addEventListener;
3
- var rawRemoveEventListener = window.removeEventListener;
4
- export var domEventsListeningTo = ['mousedown', 'mouseup', 'touchcancel', 'touchend', 'touchstart', 'auxclick', 'dblclick', 'pointercancel', 'pointerdown', 'pointerup', 'dragend', 'dragstart', 'drop', 'compositionend', 'compositionstart', 'keydown', 'keypress', 'keyup', 'input', 'textInput', 'close', 'cancel', 'copy', 'cut', 'paste', 'click', 'change', 'contextmenu', 'reset', 'submit', 'resize', 'scroll', 'foucs', 'blur'];
2
+ import { isSSR } from './utils/isSSR';
3
+ var rawAddEventListener = !isSSR() ? window.addEventListener : function () {};
4
+ var rawRemoveEventListener = !isSSR() ? window.removeEventListener : function () {};
5
+ export var domEventsListeningTo = ['webkitmouseforcedown', 'webkitmouseforcewillbegin', 'visibilitychange', 'error', 'mousemove', 'mousedown', 'mouseup', 'touchcancel', 'touchend', 'touchstart', 'auxclick', 'dblclick', 'pointercancel', 'pointerdown', 'pointerup', 'dragend', 'dragstart', 'drop', 'compositionend', 'compositionstart', 'keydown', 'keypress', 'keyup', 'input', 'textInput', 'close', 'cancel', 'copy', 'cut', 'paste', 'click', 'change', 'contextmenu', 'reset', 'submit', 'resize', 'scroll', 'foucs', 'blur'];
5
6
  export var addEventListener = function addEventListener(context) {
6
7
  return function (type, listener, options) {
7
8
  var listeners = context._listenerMap.get(type) || [];
package/es/index.js CHANGED
@@ -1,9 +1,9 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
2
  import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator";
3
3
 
4
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
4
+ 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
5
 
6
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
6
+ 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
7
 
8
8
  import _regeneratorRuntime from "@babel/runtime/regenerator";
9
9
 
@@ -0,0 +1,42 @@
1
+ import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
2
+ export var addEventListener = function addEventListener(el, originEvent) {
3
+ return function (type, listener, options) {
4
+ var listeners = el._listenerMap.get(type) || [];
5
+
6
+ el._listenerMap.set(type, [].concat(_toConsumableArray(listeners), [listener]));
7
+
8
+ return originEvent.apply(el, [type, listener, options]);
9
+ };
10
+ };
11
+ export var removeEventListener = function removeEventListener(el, originEvent) {
12
+ return function (type, listener, options) {
13
+ var storedTypeListeners = el._listenerMap.get(type);
14
+
15
+ if (storedTypeListeners && storedTypeListeners.length && storedTypeListeners.indexOf(listener) !== -1) {
16
+ storedTypeListeners.splice(storedTypeListeners.indexOf(listener), 1);
17
+ }
18
+
19
+ return originEvent.apply(el, [type, listener, options]);
20
+ };
21
+ };
22
+ var elProperties = ['innerHTML', 'text', 'innerText'];
23
+ export var injectHTMLScriptElement = function injectHTMLScriptElement(el) {
24
+ el._listenerMap = new Map();
25
+ el.addEventListener = addEventListener(el, el.addEventListener);
26
+ el.removeEventListener = removeEventListener(el, el.removeEventListener);
27
+ elProperties.forEach(function (property) {
28
+ Object.defineProperty(el, property, {
29
+ get: function get() {
30
+ return this.scriptText || '';
31
+ },
32
+ set: function set(value) {
33
+ this.scriptText = value; // 如果是已经插入到 dom 树里面,则直接执行
34
+
35
+ if (el.parentNode) {
36
+ this.ownerContext.evalScript && el.ownerContext.evalScript(value.toString());
37
+ }
38
+ },
39
+ enumerable: false
40
+ });
41
+ });
42
+ };
@@ -0,0 +1,9 @@
1
+ export function isConstructable(fn) {
2
+ var classRegex = /^class\b/;
3
+ var constructable = fn.prototype && fn.prototype.constructor === fn && Object.getOwnPropertyNames(fn.prototype).length > 1 || classRegex.test(fn.toString());
4
+ return constructable;
5
+ }
6
+ export function isBoundedFunction(fn) {
7
+ var bounded = fn.name.indexOf('bound ') === 0 && !fn.hasOwnProperty('prototype');
8
+ return bounded;
9
+ }
@@ -0,0 +1,3 @@
1
+ export var getFetchCredentials = function getFetchCredentials(url) {
2
+ return url.includes('console.aliyun.com') ? 'include' : 'omit';
3
+ };
@@ -4,33 +4,39 @@
4
4
  * @forwardCompatibleTo 20190821
5
5
  * @createAt 20190821
6
6
  */
7
+ export var getJsonCallback = function getJsonCallback(src) {
8
+ var u;
9
+
10
+ try {
11
+ u = new URL(src);
12
+ } catch (error) {
13
+ return;
14
+ }
15
+
16
+ var sp = u.searchParams;
17
+
18
+ if (!sp) {
19
+ return null;
20
+ }
21
+
22
+ return sp.get('callback') || sp.get('cb');
23
+ };
24
+
7
25
  var injectScriptCallBack = function injectScriptCallBack(scriptEl) {
8
26
  setTimeout(function () {
9
- var u;
10
-
11
27
  if (!scriptEl.src) {
12
28
  return;
13
29
  }
14
30
 
15
- try {
16
- u = new URL(scriptEl.src);
17
- } catch (error) {
18
- return;
19
- }
20
-
21
- var sp = u.searchParams;
22
- var appWindow = scriptEl.ownerAppWindow;
23
-
24
- if (sp) {
25
- var callbackName = sp.get('callback') || sp.get('cb');
31
+ var appWindow = scriptEl.ownerContext.window;
32
+ var callbackName = getJsonCallback(scriptEl.src);
26
33
 
27
- if (callbackName && typeof appWindow[callbackName] === 'function') {
28
- window[callbackName] = function () {
29
- var result = appWindow[callbackName].apply(appWindow, arguments);
30
- window[callbackName] = null;
31
- return result;
32
- };
33
- }
34
+ if (callbackName && typeof appWindow[callbackName] === 'function') {
35
+ window[callbackName] = function () {
36
+ var result = appWindow[callbackName].apply(appWindow, arguments);
37
+ window[callbackName] = null;
38
+ return result;
39
+ };
34
40
  }
35
41
  }, 0);
36
42
  };
@@ -0,0 +1,3 @@
1
+ export var isSSR = function isSSR() {
2
+ return typeof document === 'undefined';
3
+ };
package/lib/Context.js CHANGED
@@ -9,10 +9,10 @@ exports.default = void 0;
9
9
 
10
10
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
11
11
 
12
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
13
-
14
12
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
15
13
 
14
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
15
+
16
16
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
17
17
 
18
18
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
@@ -25,9 +25,11 @@ var _Location = _interopRequireDefault(require("./Location"));
25
25
 
26
26
  var _History = _interopRequireDefault(require("./History"));
27
27
 
28
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
28
+ var _credentials = require("./utils/credentials");
29
29
 
30
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
30
+ 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; }
31
33
 
32
34
  var Context = /*#__PURE__*/function () {
33
35
  function Context(conf, frame) {
@@ -35,6 +37,7 @@ var Context = /*#__PURE__*/function () {
35
37
  this.location = new _Location.default(frame.contentWindow.location);
36
38
  this.history = new _History.default(conf.id, frame.contentWindow);
37
39
  this.window = new _Window.default(conf, this, frame, location);
40
+ this.allowResources = conf.allowResources || [];
38
41
  var body = conf.body;
39
42
 
40
43
  if (conf.disableBody) {
@@ -45,7 +48,9 @@ var Context = /*#__PURE__*/function () {
45
48
  }
46
49
 
47
50
  this.body = body;
48
- this.document = new _Document.default(conf, this, frame, location);
51
+ this.document = new _Document.default(_objectSpread({
52
+ enableScriptEscape: true
53
+ }, conf), this, frame, location);
49
54
  this.baseFrame = frame;
50
55
  this._listenerMap = new Map();
51
56
  this.window.__IS_CONSOLE_OS_CONTEXT__ = true;
@@ -55,13 +60,15 @@ var Context = /*#__PURE__*/function () {
55
60
  key: "loadScripts",
56
61
  value: function () {
57
62
  var _loadScripts = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(url) {
58
- var resp, code, resolver;
63
+ var resp, code;
59
64
  return _regenerator.default.wrap(function _callee$(_context) {
60
65
  while (1) {
61
66
  switch (_context.prev = _context.next) {
62
67
  case 0:
63
68
  _context.next = 2;
64
- return fetch(url);
69
+ return fetch(url, {
70
+ credentials: (0, _credentials.getFetchCredentials)(url)
71
+ });
65
72
 
66
73
  case 2:
67
74
  resp = _context.sent;
@@ -70,10 +77,9 @@ var Context = /*#__PURE__*/function () {
70
77
 
71
78
  case 5:
72
79
  code = _context.sent;
73
- resolver = new Function("\n return function ({window, location, history, document}){ \n with(window.__CONSOLE_OS_GLOBAL_VARS_) {\n try {\n ".concat(code, "\n }\n catch(e) {\n console.log(e)\n }\n }\n }//@ sourceMappingURL=").concat(url));
74
- resolver()(_objectSpread({}, this));
80
+ this.evalScript(code, url);
75
81
 
76
- case 8:
82
+ case 7:
77
83
  case "end":
78
84
  return _context.stop();
79
85
  }
@@ -87,6 +93,13 @@ var Context = /*#__PURE__*/function () {
87
93
 
88
94
  return loadScripts;
89
95
  }()
96
+ }, {
97
+ key: "evalScript",
98
+ value: function evalScript(code) {
99
+ var url = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "";
100
+ var resolver = new Function("\n return function ({window, location, history, document}){ \n with(window.__CONSOLE_OS_GLOBAL_VARS_) {\n try {\n ".concat(code, "\n }\n catch(e) {\n console.log(e)\n }\n }\n }//@ sourceMappingURL=").concat(url));
101
+ resolver().call(this.window, _objectSpread({}, this));
102
+ }
90
103
  }, {
91
104
  key: "updateBody",
92
105
  value: function updateBody(dom) {
package/lib/Document.js CHANGED
@@ -9,21 +9,19 @@ exports.default = void 0;
9
9
 
10
10
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
11
11
 
12
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
13
+
12
14
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
13
15
 
14
- function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { 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 = o[Symbol.iterator](); }, 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; } } }; }
16
+ 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; } } }; }
15
19
 
16
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); }
17
21
 
18
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; }
19
23
 
20
- /**
21
- * Window.js
22
- * @lastModified 2019085
23
- * @forwardCompatibleTo 2019085
24
- * @createAt 2019085
25
- */
26
- var Document = function Document() {
24
+ var Document = /*#__PURE__*/(0, _createClass2.default)(function Document() {
27
25
  var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
28
26
  var context = arguments.length > 1 ? arguments[1] : undefined;
29
27
  var frame = arguments.length > 2 ? arguments[2] : undefined;
@@ -63,8 +61,14 @@ var Document = function Document() {
63
61
 
64
62
  var el = (_document = document).createElement.apply(_document, arguments);
65
63
 
66
- el.ownerAppWindow = context.window;
67
- el.appId = options.id;
64
+ el.ownerContext = context;
65
+ el.appId = options.id; // 对于 script 标签如果开启防逃逸,就直接 hack script 标签
66
+
67
+ if (el.tagName === 'SCRIPT' && !options.enableScriptEscape) {
68
+ el._evalScriptInSandbox = true;
69
+ (0, _HTMLScriptElement.injectHTMLScriptElement)(el);
70
+ }
71
+
68
72
  return el;
69
73
  };
70
74
 
@@ -103,7 +107,6 @@ var Document = function Document() {
103
107
  }
104
108
  }
105
109
  });
106
- };
107
-
110
+ });
108
111
  var _default = Document;
109
112
  exports.default = _default;
package/lib/Elements.js CHANGED
@@ -1,8 +1,14 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
3
+ var _typeof = require("@babel/runtime/helpers/typeof");
4
4
 
5
- var _injectScriptCallBack = _interopRequireDefault(require("./utils/injectScriptCallBack"));
5
+ var _injectScriptCallBack = _interopRequireWildcard(require("./utils/injectScriptCallBack"));
6
+
7
+ var _isSSR = require("./utils/isSSR");
8
+
9
+ 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); }
10
+
11
+ 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; }
6
12
 
7
13
  /**
8
14
  * Elements.js
@@ -12,8 +18,41 @@ var _injectScriptCallBack = _interopRequireDefault(require("./utils/injectScript
12
18
  */
13
19
  var makeElInjector = function makeElInjector(originMethod) {
14
20
  return function (el) {
15
- if (el && el.nodeName === 'SCRIPT' && el.ownerAppWindow) {
21
+ // 如果不在 BrowserVM 的白名单内,尝试通过 context 的 load script 通过 xhr 获取脚本内容,并在沙箱中执行
22
+ if (el && el._evalScriptInSandbox && el.ownerContext && el.nodeName === 'SCRIPT' && el.src && el.ownerContext.allowResources.indexOf(el.src) === -1 && !(0, _injectScriptCallBack.getJsonCallback)(el.src)) {
23
+ return el.ownerContext.loadScripts(el.src).then(function () {
24
+ var fns = el._listenerMap.get('load');
25
+
26
+ if (fns) {
27
+ fns.forEach(function (fn) {
28
+ fn();
29
+ });
30
+ }
31
+
32
+ el.onload && el.onload();
33
+ }).catch(function (e) {
34
+ console.error(e);
35
+
36
+ var fns = el._listenerMap.get('error');
37
+
38
+ if (fns) {
39
+ fns.forEach(function (fn) {
40
+ fn(e);
41
+ });
42
+ }
43
+
44
+ el.onerror && el.onerror(e);
45
+ });
46
+ }
47
+
48
+ if (el && el.nodeName === 'SCRIPT' && el.ownerContext) {
16
49
  (0, _injectScriptCallBack.default)(el);
50
+ } // 如果有 scriptText, 证明在 append 之前被设置了 text
51
+ // 所以直接执行这个 script
52
+
53
+
54
+ if (el && el.scriptText) {
55
+ el.ownerContext.evalScript(el.scriptText);
17
56
  } // fix: babel 会把 fn.call 转义成 fn.call.apply 造成 chrome 50 的几个版本报错
18
57
  // 这里 尝试 try catch 如果报错 直接调用 fn.apply
19
58
 
@@ -30,7 +69,7 @@ var makeElInjector = function makeElInjector(originMethod) {
30
69
  };
31
70
  };
32
71
 
33
- if (typeof window.Element === 'function') {
72
+ if (!(0, _isSSR.isSSR)() && typeof window.Element === 'function') {
34
73
  var mountElementMethods = ['appendChild', 'insertBefore', 'append'];
35
74
 
36
75
  for (var _i = 0, _mountElementMethods = mountElementMethods; _i < _mountElementMethods.length; _i++) {
package/lib/History.js CHANGED
@@ -7,9 +7,11 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.default = void 0;
9
9
 
10
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
11
+
10
12
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
13
 
12
- var History = function History(id, frame) {
14
+ var History = /*#__PURE__*/(0, _createClass2.default)(function History(id, frame) {
13
15
  (0, _classCallCheck2.default)(this, History);
14
16
 
15
17
  if (!id) {
@@ -47,7 +49,6 @@ var History = function History(id, frame) {
47
49
  };
48
50
 
49
51
  return frame.history;
50
- };
51
-
52
+ });
52
53
  var _default = History;
53
54
  exports.default = _default;
package/lib/Location.js CHANGED
@@ -7,9 +7,11 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.default = void 0;
9
9
 
10
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
11
+
10
12
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
13
 
12
- var Location = function Location(location) {
14
+ var Location = /*#__PURE__*/(0, _createClass2.default)(function Location(location) {
13
15
  (0, _classCallCheck2.default)(this, Location);
14
16
  return new Proxy({}, {
15
17
  set: function set(target, name, value) {
@@ -51,7 +53,6 @@ var Location = function Location(location) {
51
53
  }
52
54
  }
53
55
  });
54
- };
55
-
56
+ });
56
57
  var _default = Location;
57
58
  exports.default = _default;
package/lib/Window.js CHANGED
@@ -9,17 +9,20 @@ exports.default = void 0;
9
9
 
10
10
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
11
11
 
12
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
13
+
12
14
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
13
15
 
14
16
  var _events = require("./events");
15
17
 
18
+ var _common = require("./utils/common");
19
+
16
20
  /**
17
21
  * Window.js
18
22
  */
19
23
  var globalFnName = ['setTimeout', 'setInterval', 'clearInterval', 'clearTimeout'];
20
24
  var defaultExternals = ['requestAnimationFrame', 'webkitRequestAnimationFrame', 'mozRequestAnimationFrame', 'oRequestAnimationFrame', 'msRequestAnimationFrame', 'cancelAnimationFrame', 'webkitCancelAnimationFrame', 'mozCancelAnimationFrame', 'oCancelAnimationFrame', 'msCancelAnimationFrame'];
21
-
22
- var Window = function Window() {
25
+ var Window = /*#__PURE__*/(0, _createClass2.default)(function Window() {
23
26
  var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
24
27
  var context = arguments.length > 1 ? arguments[1] : undefined;
25
28
  var frame = arguments.length > 2 ? arguments[2] : undefined;
@@ -41,10 +44,18 @@ var Window = function Window() {
41
44
  },
42
45
  get: function get(target, name) {
43
46
  if (externals.includes(name)) {
44
- if (typeof window[name] === 'function' && /^[a-z]/.test(name)) {
45
- return window[name].bind && window[name].bind(window);
47
+ var windowValue = window[name];
48
+
49
+ if (typeof windowValue === 'function' && !(0, _common.isBoundedFunction)(windowValue) && !(0, _common.isConstructable)(windowValue)) {
50
+ var bindFn = windowValue.bind(window);
51
+
52
+ for (var key in windowValue) {
53
+ bindFn[key] = windowValue[key];
54
+ }
55
+
56
+ return bindFn;
46
57
  } else {
47
- return window[name];
58
+ return windowValue;
48
59
  }
49
60
  }
50
61
 
@@ -72,14 +83,15 @@ var Window = function Window() {
72
83
  return __CONSOLE_OS_GLOBAL_VARS_[name];
73
84
  }
74
85
 
75
- if (typeof target[name] === 'function' && /^[a-z]/.test(name)) {
76
- return target[name].bind && target[name].bind(target);
86
+ var value = target[name];
87
+
88
+ if (typeof value === 'function' && !(0, _common.isBoundedFunction)(value) && !(0, _common.isConstructable)(value)) {
89
+ return value.bind && value.bind(target);
77
90
  } else {
78
- return target[name];
91
+ return value;
79
92
  }
80
93
  }
81
94
  });
82
- };
83
-
95
+ });
84
96
  var _default = Window;
85
97
  exports.default = _default;
package/lib/events.js CHANGED
@@ -5,13 +5,15 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.removeEventListener = exports.addEventListener = exports.domEventsListeningTo = void 0;
8
+ exports.removeEventListener = exports.domEventsListeningTo = exports.addEventListener = void 0;
9
9
 
10
10
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
11
11
 
12
- var rawAddEventListener = window.addEventListener;
13
- var rawRemoveEventListener = window.removeEventListener;
14
- var domEventsListeningTo = ['mousedown', 'mouseup', 'touchcancel', 'touchend', 'touchstart', 'auxclick', 'dblclick', 'pointercancel', 'pointerdown', 'pointerup', 'dragend', 'dragstart', 'drop', 'compositionend', 'compositionstart', 'keydown', 'keypress', 'keyup', 'input', 'textInput', 'close', 'cancel', 'copy', 'cut', 'paste', 'click', 'change', 'contextmenu', 'reset', 'submit', 'resize', 'scroll', 'foucs', 'blur'];
12
+ var _isSSR = require("./utils/isSSR");
13
+
14
+ var rawAddEventListener = !(0, _isSSR.isSSR)() ? window.addEventListener : function () {};
15
+ var rawRemoveEventListener = !(0, _isSSR.isSSR)() ? window.removeEventListener : function () {};
16
+ var domEventsListeningTo = ['webkitmouseforcedown', 'webkitmouseforcewillbegin', 'visibilitychange', 'error', 'mousemove', 'mousedown', 'mouseup', 'touchcancel', 'touchend', 'touchstart', 'auxclick', 'dblclick', 'pointercancel', 'pointerdown', 'pointerup', 'dragend', 'dragstart', 'drop', 'compositionend', 'compositionstart', 'keydown', 'keypress', 'keyup', 'input', 'textInput', 'close', 'cancel', 'copy', 'cut', 'paste', 'click', 'change', 'contextmenu', 'reset', 'submit', 'resize', 'scroll', 'foucs', 'blur'];
15
17
  exports.domEventsListeningTo = domEventsListeningTo;
16
18
 
17
19
  var addEventListener = function addEventListener(context) {
package/lib/index.js CHANGED
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.evalScripts = exports.removeContext = exports.createContext = void 0;
8
+ exports.removeContext = exports.evalScripts = exports.createContext = void 0;
9
9
 
10
10
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
11
11
 
@@ -17,9 +17,9 @@ require("./Elements");
17
17
 
18
18
  var _Context = _interopRequireDefault(require("./Context"));
19
19
 
20
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
20
+ 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; }
21
21
 
22
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
22
+ 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; }
23
23
 
24
24
  var createContext = /*#__PURE__*/function () {
25
25
  var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.removeEventListener = exports.injectHTMLScriptElement = exports.addEventListener = void 0;
9
+
10
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
11
+
12
+ var addEventListener = function addEventListener(el, originEvent) {
13
+ return function (type, listener, options) {
14
+ var listeners = el._listenerMap.get(type) || [];
15
+
16
+ el._listenerMap.set(type, [].concat((0, _toConsumableArray2.default)(listeners), [listener]));
17
+
18
+ return originEvent.apply(el, [type, listener, options]);
19
+ };
20
+ };
21
+
22
+ exports.addEventListener = addEventListener;
23
+
24
+ var removeEventListener = function removeEventListener(el, originEvent) {
25
+ return function (type, listener, options) {
26
+ var storedTypeListeners = el._listenerMap.get(type);
27
+
28
+ if (storedTypeListeners && storedTypeListeners.length && storedTypeListeners.indexOf(listener) !== -1) {
29
+ storedTypeListeners.splice(storedTypeListeners.indexOf(listener), 1);
30
+ }
31
+
32
+ return originEvent.apply(el, [type, listener, options]);
33
+ };
34
+ };
35
+
36
+ exports.removeEventListener = removeEventListener;
37
+ var elProperties = ['innerHTML', 'text', 'innerText'];
38
+
39
+ var injectHTMLScriptElement = function injectHTMLScriptElement(el) {
40
+ el._listenerMap = new Map();
41
+ el.addEventListener = addEventListener(el, el.addEventListener);
42
+ el.removeEventListener = removeEventListener(el, el.removeEventListener);
43
+ elProperties.forEach(function (property) {
44
+ Object.defineProperty(el, property, {
45
+ get: function get() {
46
+ return this.scriptText || '';
47
+ },
48
+ set: function set(value) {
49
+ this.scriptText = value; // 如果是已经插入到 dom 树里面,则直接执行
50
+
51
+ if (el.parentNode) {
52
+ this.ownerContext.evalScript && el.ownerContext.evalScript(value.toString());
53
+ }
54
+ },
55
+ enumerable: false
56
+ });
57
+ });
58
+ };
59
+
60
+ exports.injectHTMLScriptElement = injectHTMLScriptElement;
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.isBoundedFunction = isBoundedFunction;
7
+ exports.isConstructable = isConstructable;
8
+
9
+ function isConstructable(fn) {
10
+ var classRegex = /^class\b/;
11
+ var constructable = fn.prototype && fn.prototype.constructor === fn && Object.getOwnPropertyNames(fn.prototype).length > 1 || classRegex.test(fn.toString());
12
+ return constructable;
13
+ }
14
+
15
+ function isBoundedFunction(fn) {
16
+ var bounded = fn.name.indexOf('bound ') === 0 && !fn.hasOwnProperty('prototype');
17
+ return bounded;
18
+ }
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getFetchCredentials = void 0;
7
+
8
+ var getFetchCredentials = function getFetchCredentials(url) {
9
+ return url.includes('console.aliyun.com') ? 'include' : 'omit';
10
+ };
11
+
12
+ exports.getFetchCredentials = getFetchCredentials;
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.default = void 0;
6
+ exports.getJsonCallback = exports.default = void 0;
7
7
 
8
8
  /**
9
9
  * injectScriptCallBack
@@ -11,33 +11,41 @@ exports.default = void 0;
11
11
  * @forwardCompatibleTo 20190821
12
12
  * @createAt 20190821
13
13
  */
14
+ var getJsonCallback = function getJsonCallback(src) {
15
+ var u;
16
+
17
+ try {
18
+ u = new URL(src);
19
+ } catch (error) {
20
+ return;
21
+ }
22
+
23
+ var sp = u.searchParams;
24
+
25
+ if (!sp) {
26
+ return null;
27
+ }
28
+
29
+ return sp.get('callback') || sp.get('cb');
30
+ };
31
+
32
+ exports.getJsonCallback = getJsonCallback;
33
+
14
34
  var injectScriptCallBack = function injectScriptCallBack(scriptEl) {
15
35
  setTimeout(function () {
16
- var u;
17
-
18
36
  if (!scriptEl.src) {
19
37
  return;
20
38
  }
21
39
 
22
- try {
23
- u = new URL(scriptEl.src);
24
- } catch (error) {
25
- return;
26
- }
27
-
28
- var sp = u.searchParams;
29
- var appWindow = scriptEl.ownerAppWindow;
30
-
31
- if (sp) {
32
- var callbackName = sp.get('callback') || sp.get('cb');
40
+ var appWindow = scriptEl.ownerContext.window;
41
+ var callbackName = getJsonCallback(scriptEl.src);
33
42
 
34
- if (callbackName && typeof appWindow[callbackName] === 'function') {
35
- window[callbackName] = function () {
36
- var result = appWindow[callbackName].apply(appWindow, arguments);
37
- window[callbackName] = null;
38
- return result;
39
- };
40
- }
43
+ if (callbackName && typeof appWindow[callbackName] === 'function') {
44
+ window[callbackName] = function () {
45
+ var result = appWindow[callbackName].apply(appWindow, arguments);
46
+ window[callbackName] = null;
47
+ return result;
48
+ };
41
49
  }
42
50
  }, 0);
43
51
  };
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.isSSR = void 0;
7
+
8
+ var isSSR = function isSSR() {
9
+ return typeof document === 'undefined';
10
+ };
11
+
12
+ exports.isSSR = isSSR;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alicloud/console-os-browser-vm",
3
- "version": "1.0.13",
3
+ "version": "1.3.0-canary.5",
4
4
  "description": "browser virtual machine",
5
5
  "main": "lib/index.js",
6
6
  "module": "es/index.js",
@@ -30,5 +30,5 @@
30
30
  "js-beautify": "^1.10.1",
31
31
  "jsdom": "^16.2.2"
32
32
  },
33
- "gitHead": "43925181e0a3e489559b7ab1bb6c68e59e00d58e"
33
+ "gitHead": "02863a2388162a395d3e51f54d122745d10e2a75"
34
34
  }