NuclearDispersionSystem/ant-design-vue-jeecg/node_modules/import-html-entry/lib/utils.js
2023-09-14 14:47:11 +08:00

204 lines
5.6 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.defaultGetPublicPath = defaultGetPublicPath;
exports.evalCode = evalCode;
exports.getGlobalProp = getGlobalProp;
exports.getInlineCode = getInlineCode;
exports.isModuleScriptSupported = isModuleScriptSupported;
exports.noteGlobalProps = noteGlobalProps;
exports.readResAsString = readResAsString;
exports.requestIdleCallback = void 0;
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
/**
* @author Kuitos
* @homepage https://github.com/kuitos/
* @since 2019-02-25
* fork from https://github.com/systemjs/systemjs/blob/master/src/extras/global.js
*/
var isIE11 = typeof navigator !== 'undefined' && navigator.userAgent.indexOf('Trident') !== -1;
function shouldSkipProperty(global, p) {
if (!global.hasOwnProperty(p) || !isNaN(p) && p < global.length) return true;
if (isIE11) {
// https://github.com/kuitos/import-html-entry/pull/32最小化 try 范围
try {
return global[p] && typeof window !== 'undefined' && global[p].parent === window;
} catch (err) {
return true;
}
} else {
return false;
}
} // safari unpredictably lists some new globals first or second in object order
var firstGlobalProp, secondGlobalProp, lastGlobalProp;
function getGlobalProp(global) {
var cnt = 0;
var lastProp;
var hasIframe = false;
for (var p in global) {
if (shouldSkipProperty(global, p)) continue; // 遍历 iframe检查 window 上的属性值是否是 iframe是则跳过后面的 first 和 second 判断
for (var i = 0; i < window.frames.length && !hasIframe; i++) {
var frame = window.frames[i];
if (frame === global[p]) {
hasIframe = true;
break;
}
}
if (!hasIframe && (cnt === 0 && p !== firstGlobalProp || cnt === 1 && p !== secondGlobalProp)) return p;
cnt++;
lastProp = p;
}
if (lastProp !== lastGlobalProp) return lastProp;
}
function noteGlobalProps(global) {
// alternatively Object.keys(global).pop()
// but this may be faster (pending benchmarks)
firstGlobalProp = secondGlobalProp = undefined;
for (var p in global) {
if (shouldSkipProperty(global, p)) continue;
if (!firstGlobalProp) firstGlobalProp = p;else if (!secondGlobalProp) secondGlobalProp = p;
lastGlobalProp = p;
}
return lastGlobalProp;
}
function getInlineCode(match) {
var start = match.indexOf('>') + 1;
var end = match.lastIndexOf('<');
return match.substring(start, end);
}
function defaultGetPublicPath(entry) {
if ((0, _typeof2["default"])(entry) === 'object') {
return '/';
}
try {
var _URL = new URL(entry, location.href),
origin = _URL.origin,
pathname = _URL.pathname;
var paths = pathname.split('/'); // 移除最后一个元素
paths.pop();
return "".concat(origin).concat(paths.join('/'), "/");
} catch (e) {
console.warn(e);
return '';
}
} // Detect whether browser supports `<script type=module>` or not
function isModuleScriptSupported() {
var s = document.createElement('script');
return 'noModule' in s;
} // RIC and shim for browsers setTimeout() without it
var requestIdleCallback = window.requestIdleCallback || function requestIdleCallback(cb) {
var start = Date.now();
return setTimeout(function () {
cb({
didTimeout: false,
timeRemaining: function timeRemaining() {
return Math.max(0, 50 - (Date.now() - start));
}
});
}, 1);
};
exports.requestIdleCallback = requestIdleCallback;
function readResAsString(response, autoDetectCharset) {
// 未启用自动检测
if (!autoDetectCharset) {
return response.text();
} // 如果没headers发生在test环境下的mock数据为兼容原有测试用例
if (!response.headers) {
return response.text();
} // 如果没返回content-type走默认逻辑
var contentType = response.headers.get('Content-Type');
if (!contentType) {
return response.text();
} // 解析content-type内的charset
// Content-Type: text/html; charset=utf-8
// Content-Type: multipart/form-data; boundary=something
// GET请求下不会出现第二种content-type
var charset = 'utf-8';
var parts = contentType.split(';');
if (parts.length === 2) {
var _parts$1$split = parts[1].split('='),
_parts$1$split2 = (0, _slicedToArray2["default"])(_parts$1$split, 2),
value = _parts$1$split2[1];
var encoding = value && value.trim();
if (encoding) {
charset = encoding;
}
} // 如果还是utf-8那么走默认兼容原有逻辑这段代码删除也应该工作
if (charset.toUpperCase() === 'UTF-8') {
return response.text();
} // 走流读取编码可能是gbkgb2312等比如sofa 3默认是gbk编码
return response.blob().then(function (file) {
return new Promise(function (resolve, reject) {
var reader = new window.FileReader();
reader.onload = function () {
resolve(reader.result);
};
reader.onerror = reject;
reader.readAsText(file, charset);
});
});
}
var evalCache = {};
function evalCode(scriptSrc, code) {
var key = scriptSrc;
if (!evalCache[key]) {
var functionWrappedCode = "window.__TEMP_EVAL_FUNC__ = function(){".concat(code, "}");
(0, eval)(functionWrappedCode);
evalCache[key] = window.__TEMP_EVAL_FUNC__;
delete window.__TEMP_EVAL_FUNC__;
}
var evalFunc = evalCache[key];
evalFunc.call(window);
}