提交 5d31610c 编写于 作者: J Johannes Rieken

fix #68498

上级 0445a477
...@@ -5,39 +5,26 @@ ...@@ -5,39 +5,26 @@
'use strict'; 'use strict';
/*global define*/ //@ts-check
// This module can be loaded in an amd and commonjs-context. function _factory(sharedObj) {
// Because we want both instances to use the same perf-data
// we store them globally
// stores data as: 'name','timestamp'
if (typeof define !== "function" && typeof module === "object" && typeof module.exports === "object") {
// this is commonjs, fake amd
global.define = function (_dep, callback) {
module.exports = callback();
global.define = undefined;
};
}
define([], function () { sharedObj._performanceEntries = sharedObj._performanceEntries || [];
global._performanceEntries = global._performanceEntries || [];
const _dataLen = 2; const _dataLen = 2;
const _timeStamp = typeof console.timeStamp === 'function' ? console.timeStamp.bind(console) : () => { }; const _timeStamp = typeof console.timeStamp === 'function' ? console.timeStamp.bind(console) : () => { };
function importEntries(entries) { function importEntries(entries) {
global._performanceEntries.splice(0, 0, ...entries); sharedObj._performanceEntries.splice(0, 0, ...entries);
} }
function exportEntries() { function exportEntries() {
return global._performanceEntries.slice(0); return sharedObj._performanceEntries.slice(0);
} }
function getEntries() { function getEntries() {
const result = []; const result = [];
const entries = global._performanceEntries; const entries = sharedObj._performanceEntries;
for (let i = 0; i < entries.length; i += _dataLen) { for (let i = 0; i < entries.length; i += _dataLen) {
result.push({ result.push({
name: entries[i], name: entries[i],
...@@ -48,7 +35,7 @@ define([], function () { ...@@ -48,7 +35,7 @@ define([], function () {
} }
function getEntry(name) { function getEntry(name) {
const entries = global._performanceEntries; const entries = sharedObj._performanceEntries;
for (let i = 0; i < entries.length; i += _dataLen) { for (let i = 0; i < entries.length; i += _dataLen) {
if (entries[i] === name) { if (entries[i] === name) {
return { return {
...@@ -60,7 +47,7 @@ define([], function () { ...@@ -60,7 +47,7 @@ define([], function () {
} }
function getDuration(from, to) { function getDuration(from, to) {
const entries = global._performanceEntries; const entries = sharedObj._performanceEntries;
let target = to; let target = to;
let endIndex = 0; let endIndex = 0;
for (let i = entries.length - _dataLen; i >= 0; i -= _dataLen) { for (let i = entries.length - _dataLen; i >= 0; i -= _dataLen) {
...@@ -79,11 +66,11 @@ define([], function () { ...@@ -79,11 +66,11 @@ define([], function () {
} }
function mark(name) { function mark(name) {
global._performanceEntries.push(name, Date.now()); sharedObj._performanceEntries.push(name, Date.now());
_timeStamp(name); _timeStamp(name);
} }
var exports = { const exports = {
mark: mark, mark: mark,
getEntries: getEntries, getEntries: getEntries,
getEntry: getEntry, getEntry: getEntry,
...@@ -93,4 +80,29 @@ define([], function () { ...@@ -93,4 +80,29 @@ define([], function () {
}; };
return exports; return exports;
}); }
// This module can be loaded in an amd and commonjs-context.
// Because we want both instances to use the same perf-data
// we store them globally
let sharedObj;
if (typeof global === 'object') {
// nodejs
sharedObj = global;
} else if (typeof self === 'object') {
// browser
sharedObj = self;
} else {
sharedObj = {};
}
if (typeof define === 'function') {
// amd
define([], function () { return _factory(sharedObj); });
} else if (typeof module === "object" && typeof module.exports === "object") {
// commonjs
module.exports = _factory(sharedObj);
} else {
// invalid context...
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册