@be-link/cls-logger 1.0.1-beta.24 → 1.0.1-beta.26
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/dist/index.esm.js +119 -70
- package/dist/index.js +119 -70
- package/dist/index.umd.js +123 -72
- package/dist/mini/performanceMonitor.d.ts.map +1 -1
- package/dist/mini.esm.js +1 -0
- package/dist/mini.js +1 -0
- package/dist/types.d.ts +3 -9
- package/dist/types.d.ts.map +1 -1
- package/dist/web/performanceMonitor.d.ts.map +1 -1
- package/dist/web.esm.js +118 -69
- package/dist/web.js +118 -69
- package/package.json +2 -3
package/dist/index.umd.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
(function (global, factory) {
|
|
2
|
-
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports
|
|
3
|
-
typeof define === 'function' && define.amd ? define(['exports'
|
|
4
|
-
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.BeLinkClsLogger = {}
|
|
5
|
-
})(this, (function (exports
|
|
2
|
+
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
|
|
3
|
+
typeof define === 'function' && define.amd ? define(['exports'], factory) :
|
|
4
|
+
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.BeLinkClsLogger = {}));
|
|
5
|
+
})(this, (function (exports) { 'use strict';
|
|
6
6
|
|
|
7
7
|
function isPlainObject(value) {
|
|
8
8
|
return Object.prototype.toString.call(value) === '[object Object]';
|
|
@@ -1995,10 +1995,14 @@
|
|
|
1995
1995
|
return '';
|
|
1996
1996
|
}
|
|
1997
1997
|
}
|
|
1998
|
-
|
|
1999
|
-
|
|
2000
|
-
|
|
2001
|
-
|
|
1998
|
+
function reportMetric(report, reportType, metric, value, extra = {}) {
|
|
1999
|
+
report(reportType, {
|
|
2000
|
+
pagePath: getPagePath(),
|
|
2001
|
+
metric,
|
|
2002
|
+
value,
|
|
2003
|
+
...extra,
|
|
2004
|
+
});
|
|
2005
|
+
}
|
|
2002
2006
|
function installBrowserPerformanceMonitor(report, options) {
|
|
2003
2007
|
if (typeof window === 'undefined')
|
|
2004
2008
|
return;
|
|
@@ -2007,100 +2011,145 @@
|
|
|
2007
2011
|
return;
|
|
2008
2012
|
w.__beLinkClsLoggerPerfInstalled__ = true;
|
|
2009
2013
|
const ignoreUrls = [...DEFAULT_IGNORE, ...(options.ignoreUrls ?? [])];
|
|
2010
|
-
//
|
|
2011
|
-
|
|
2012
|
-
// - LCP 在用户交互后停止观察
|
|
2013
|
-
// - firstHiddenTime 过滤(页面隐藏后的数据不计入)
|
|
2014
|
-
// - CLS 5秒会话窗口算法
|
|
2015
|
-
// - BFCache 恢复时自动重置指标
|
|
2016
|
-
if (options.webVitals) {
|
|
2017
|
-
// FCP
|
|
2014
|
+
// Navigation timing: TTFB 等
|
|
2015
|
+
if (options.navigationTiming) {
|
|
2018
2016
|
try {
|
|
2019
|
-
|
|
2020
|
-
|
|
2021
|
-
|
|
2022
|
-
|
|
2023
|
-
|
|
2024
|
-
|
|
2025
|
-
|
|
2026
|
-
|
|
2027
|
-
|
|
2028
|
-
});
|
|
2029
|
-
});
|
|
2017
|
+
const navEntries = performance.getEntriesByType?.('navigation');
|
|
2018
|
+
const nav = Array.isArray(navEntries) ? navEntries[0] : undefined;
|
|
2019
|
+
if (nav && typeof nav === 'object') {
|
|
2020
|
+
const ttfb = typeof nav.responseStart === 'number' && typeof nav.requestStart === 'number'
|
|
2021
|
+
? nav.responseStart - nav.requestStart
|
|
2022
|
+
: -1;
|
|
2023
|
+
if (ttfb >= 0 && sampleHit$1(options.sampleRate))
|
|
2024
|
+
reportMetric(report, options.reportType, 'TTFB', ttfb, { unit: 'ms' });
|
|
2025
|
+
}
|
|
2030
2026
|
}
|
|
2031
2027
|
catch {
|
|
2032
2028
|
// ignore
|
|
2033
2029
|
}
|
|
2034
|
-
|
|
2030
|
+
}
|
|
2031
|
+
// Web Vitals: FCP/LCP/CLS/FID
|
|
2032
|
+
if (options.webVitals && typeof globalThis.PerformanceObserver === 'function') {
|
|
2033
|
+
// FCP
|
|
2035
2034
|
try {
|
|
2036
|
-
|
|
2037
|
-
|
|
2038
|
-
|
|
2039
|
-
|
|
2040
|
-
|
|
2041
|
-
|
|
2042
|
-
|
|
2043
|
-
|
|
2044
|
-
|
|
2045
|
-
}
|
|
2035
|
+
const po = new PerformanceObserver((list) => {
|
|
2036
|
+
try {
|
|
2037
|
+
if (!sampleHit$1(options.sampleRate))
|
|
2038
|
+
return;
|
|
2039
|
+
for (const entry of list.getEntries()) {
|
|
2040
|
+
if (entry?.name === 'first-contentful-paint' && typeof entry.startTime === 'number') {
|
|
2041
|
+
reportMetric(report, options.reportType, 'FCP', entry.startTime, { unit: 'ms' });
|
|
2042
|
+
}
|
|
2043
|
+
}
|
|
2044
|
+
}
|
|
2045
|
+
catch {
|
|
2046
|
+
// ignore
|
|
2047
|
+
}
|
|
2046
2048
|
});
|
|
2049
|
+
po.observe({ type: 'paint', buffered: true });
|
|
2047
2050
|
}
|
|
2048
2051
|
catch {
|
|
2049
2052
|
// ignore
|
|
2050
2053
|
}
|
|
2051
|
-
//
|
|
2054
|
+
// LCP(最后一次为准)
|
|
2055
|
+
let lastLcp = null;
|
|
2052
2056
|
try {
|
|
2053
|
-
|
|
2054
|
-
|
|
2055
|
-
|
|
2056
|
-
|
|
2057
|
-
|
|
2058
|
-
|
|
2059
|
-
|
|
2060
|
-
|
|
2061
|
-
|
|
2062
|
-
});
|
|
2057
|
+
const po = new PerformanceObserver((list) => {
|
|
2058
|
+
try {
|
|
2059
|
+
const entries = list.getEntries();
|
|
2060
|
+
if (entries && entries.length)
|
|
2061
|
+
lastLcp = entries[entries.length - 1];
|
|
2062
|
+
}
|
|
2063
|
+
catch {
|
|
2064
|
+
// ignore
|
|
2065
|
+
}
|
|
2063
2066
|
});
|
|
2067
|
+
po.observe({ type: 'largest-contentful-paint', buffered: true });
|
|
2068
|
+
const flushLcp = () => {
|
|
2069
|
+
try {
|
|
2070
|
+
if (!lastLcp)
|
|
2071
|
+
return;
|
|
2072
|
+
if (!sampleHit$1(options.sampleRate))
|
|
2073
|
+
return;
|
|
2074
|
+
if (typeof lastLcp.startTime === 'number')
|
|
2075
|
+
reportMetric(report, options.reportType, 'LCP', lastLcp.startTime, { unit: 'ms' });
|
|
2076
|
+
lastLcp = null;
|
|
2077
|
+
}
|
|
2078
|
+
catch {
|
|
2079
|
+
// ignore
|
|
2080
|
+
}
|
|
2081
|
+
};
|
|
2082
|
+
window.addEventListener('pagehide', flushLcp, { once: true });
|
|
2083
|
+
document.addEventListener('visibilitychange', () => {
|
|
2084
|
+
if (document.visibilityState === 'hidden')
|
|
2085
|
+
flushLcp();
|
|
2086
|
+
}, { once: true });
|
|
2064
2087
|
}
|
|
2065
2088
|
catch {
|
|
2066
2089
|
// ignore
|
|
2067
2090
|
}
|
|
2068
|
-
//
|
|
2091
|
+
// CLS
|
|
2069
2092
|
try {
|
|
2070
|
-
|
|
2071
|
-
|
|
2072
|
-
|
|
2073
|
-
|
|
2074
|
-
|
|
2075
|
-
|
|
2076
|
-
|
|
2077
|
-
|
|
2078
|
-
|
|
2079
|
-
}
|
|
2093
|
+
let clsValue = 0;
|
|
2094
|
+
const po = new PerformanceObserver((list) => {
|
|
2095
|
+
try {
|
|
2096
|
+
for (const entry of list.getEntries()) {
|
|
2097
|
+
if (entry && entry.hadRecentInput)
|
|
2098
|
+
continue;
|
|
2099
|
+
if (typeof entry.value === 'number')
|
|
2100
|
+
clsValue += entry.value;
|
|
2101
|
+
}
|
|
2102
|
+
}
|
|
2103
|
+
catch {
|
|
2104
|
+
// ignore
|
|
2105
|
+
}
|
|
2080
2106
|
});
|
|
2107
|
+
po.observe({ type: 'layout-shift', buffered: true });
|
|
2108
|
+
const flushCls = () => {
|
|
2109
|
+
try {
|
|
2110
|
+
if (!sampleHit$1(options.sampleRate))
|
|
2111
|
+
return;
|
|
2112
|
+
reportMetric(report, options.reportType, 'CLS', clsValue, { unit: 'score' });
|
|
2113
|
+
}
|
|
2114
|
+
catch {
|
|
2115
|
+
// ignore
|
|
2116
|
+
}
|
|
2117
|
+
};
|
|
2118
|
+
window.addEventListener('pagehide', flushCls, { once: true });
|
|
2119
|
+
document.addEventListener('visibilitychange', () => {
|
|
2120
|
+
if (document.visibilityState === 'hidden')
|
|
2121
|
+
flushCls();
|
|
2122
|
+
}, { once: true });
|
|
2081
2123
|
}
|
|
2082
2124
|
catch {
|
|
2083
2125
|
// ignore
|
|
2084
2126
|
}
|
|
2085
|
-
//
|
|
2127
|
+
// FID
|
|
2086
2128
|
try {
|
|
2087
|
-
|
|
2088
|
-
|
|
2089
|
-
|
|
2090
|
-
|
|
2091
|
-
|
|
2092
|
-
|
|
2093
|
-
|
|
2094
|
-
|
|
2095
|
-
|
|
2096
|
-
|
|
2129
|
+
const po = new PerformanceObserver((list) => {
|
|
2130
|
+
try {
|
|
2131
|
+
if (!sampleHit$1(options.sampleRate))
|
|
2132
|
+
return;
|
|
2133
|
+
for (const entry of list.getEntries()) {
|
|
2134
|
+
const startTime = typeof entry.startTime === 'number' ? entry.startTime : -1;
|
|
2135
|
+
const processingStart = typeof entry.processingStart === 'number' ? entry.processingStart : -1;
|
|
2136
|
+
if (startTime >= 0 && processingStart >= 0) {
|
|
2137
|
+
reportMetric(report, options.reportType, 'FID', processingStart - startTime, { unit: 'ms' });
|
|
2138
|
+
break;
|
|
2139
|
+
}
|
|
2140
|
+
}
|
|
2141
|
+
}
|
|
2142
|
+
catch {
|
|
2143
|
+
// ignore
|
|
2144
|
+
}
|
|
2097
2145
|
});
|
|
2146
|
+
po.observe({ type: 'first-input', buffered: true });
|
|
2098
2147
|
}
|
|
2099
2148
|
catch {
|
|
2100
2149
|
// ignore
|
|
2101
2150
|
}
|
|
2102
2151
|
}
|
|
2103
|
-
// Resource timing
|
|
2152
|
+
// Resource timing:资源加载耗时
|
|
2104
2153
|
if (options.resourceTiming && typeof globalThis.PerformanceObserver === 'function') {
|
|
2105
2154
|
try {
|
|
2106
2155
|
const po = new PerformanceObserver((list) => {
|
|
@@ -2185,6 +2234,7 @@
|
|
|
2185
2234
|
sampleRate: raw.sampleRate ?? 1,
|
|
2186
2235
|
ignoreUrls: raw.ignoreUrls ?? [],
|
|
2187
2236
|
webVitals: raw.webVitals ?? true,
|
|
2237
|
+
navigationTiming: raw.navigationTiming ?? true,
|
|
2188
2238
|
resourceTiming: raw.resourceTiming ?? true,
|
|
2189
2239
|
maxTextLength: raw.maxTextLength ?? 2000,
|
|
2190
2240
|
};
|
|
@@ -2276,6 +2326,7 @@
|
|
|
2276
2326
|
sampleRate: raw.sampleRate ?? 1,
|
|
2277
2327
|
ignoreUrls: raw.ignoreUrls ?? [],
|
|
2278
2328
|
webVitals: raw.webVitals ?? true,
|
|
2329
|
+
navigationTiming: raw.navigationTiming ?? true,
|
|
2279
2330
|
resourceTiming: raw.resourceTiming ?? true,
|
|
2280
2331
|
maxTextLength: raw.maxTextLength ?? 2000,
|
|
2281
2332
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"performanceMonitor.d.ts","sourceRoot":"","sources":["../../src/mini/performanceMonitor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,yBAAyB,EAAE,MAAM,UAAU,CAAC;AAEtE,KAAK,QAAQ,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,KAAK,IAAI,CAAC;AA+EzD,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,QAAQ,EAChB,IAAI,GAAE,OAAO,GAAG,yBAAyB,GAAG,SAAc,GACzD,IAAI,
|
|
1
|
+
{"version":3,"file":"performanceMonitor.d.ts","sourceRoot":"","sources":["../../src/mini/performanceMonitor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,yBAAyB,EAAE,MAAM,UAAU,CAAC;AAEtE,KAAK,QAAQ,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,KAAK,IAAI,CAAC;AA+EzD,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,QAAQ,EAChB,IAAI,GAAE,OAAO,GAAG,yBAAyB,GAAG,SAAc,GACzD,IAAI,CAiBN"}
|
package/dist/mini.esm.js
CHANGED
|
@@ -1520,6 +1520,7 @@ function installMiniPerformanceMonitor(report, opts = {}) {
|
|
|
1520
1520
|
sampleRate: raw.sampleRate ?? 1,
|
|
1521
1521
|
ignoreUrls: raw.ignoreUrls ?? [],
|
|
1522
1522
|
webVitals: raw.webVitals ?? true,
|
|
1523
|
+
navigationTiming: raw.navigationTiming ?? true,
|
|
1523
1524
|
resourceTiming: raw.resourceTiming ?? true,
|
|
1524
1525
|
maxTextLength: raw.maxTextLength ?? 2000,
|
|
1525
1526
|
};
|
package/dist/mini.js
CHANGED
|
@@ -1543,6 +1543,7 @@ function installMiniPerformanceMonitor(report, opts = {}) {
|
|
|
1543
1543
|
sampleRate: raw.sampleRate ?? 1,
|
|
1544
1544
|
ignoreUrls: raw.ignoreUrls ?? [],
|
|
1545
1545
|
webVitals: raw.webVitals ?? true,
|
|
1546
|
+
navigationTiming: raw.navigationTiming ?? true,
|
|
1546
1547
|
resourceTiming: raw.resourceTiming ?? true,
|
|
1547
1548
|
maxTextLength: raw.maxTextLength ?? 2000,
|
|
1548
1549
|
};
|
package/dist/types.d.ts
CHANGED
|
@@ -251,16 +251,10 @@ export interface PerformanceMonitorOptions {
|
|
|
251
251
|
sampleRate?: number;
|
|
252
252
|
/** Web/H5:忽略的资源 url(防止递归/噪声) */
|
|
253
253
|
ignoreUrls?: Array<string | RegExp>;
|
|
254
|
-
/**
|
|
255
|
-
* Web/H5:是否采集 Web Vitals(FCP/LCP/CLS/INP/TTFB),默认 true
|
|
256
|
-
* - 使用 Google web-vitals 库实现
|
|
257
|
-
* - LCP 在用户交互后自动停止观察
|
|
258
|
-
* - CLS 使用 5 秒会话窗口算法
|
|
259
|
-
* - INP 替代 FID(2024年3月起成为核心指标)
|
|
260
|
-
* - 自动处理 BFCache 恢复时的指标重置
|
|
261
|
-
* - 上报数据包含 rating 字段:'good' | 'needs-improvement' | 'poor'
|
|
262
|
-
*/
|
|
254
|
+
/** Web/H5:是否采集 Web Vitals(FCP/LCP/CLS/FID),默认 true */
|
|
263
255
|
webVitals?: boolean;
|
|
256
|
+
/** Web/H5:是否采集导航指标(TTFB 等),默认 true */
|
|
257
|
+
navigationTiming?: boolean;
|
|
264
258
|
/** Web/H5:是否采集资源加载耗时(PerformanceResourceTiming),默认 true */
|
|
265
259
|
resourceTiming?: boolean;
|
|
266
260
|
/** 性能指标文本最大长度(超出截断),默认 2000 */
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"performanceMonitor.d.ts","sourceRoot":"","sources":["../../src/web/performanceMonitor.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"performanceMonitor.d.ts","sourceRoot":"","sources":["../../src/web/performanceMonitor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,yBAAyB,EAAE,MAAM,UAAU,CAAC;AAEtE,KAAK,QAAQ,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,KAAK,IAAI,CAAC;AA6QzD,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,QAAQ,EAChB,IAAI,GAAE,OAAO,GAAG,yBAAyB,GAAG,SAAc,GACzD,IAAI,CAiBN"}
|
package/dist/web.esm.js
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import * as tencentcloudClsSdkJsWeb from 'tencentcloud-cls-sdk-js-web';
|
|
2
|
-
import { onFCP, onLCP, onCLS, onINP, onTTFB } from 'web-vitals';
|
|
3
2
|
|
|
4
3
|
function isPlainObject(value) {
|
|
5
4
|
return Object.prototype.toString.call(value) === '[object Object]';
|
|
@@ -1465,10 +1464,14 @@ function getPagePath() {
|
|
|
1465
1464
|
return '';
|
|
1466
1465
|
}
|
|
1467
1466
|
}
|
|
1468
|
-
|
|
1469
|
-
|
|
1470
|
-
|
|
1471
|
-
|
|
1467
|
+
function reportMetric(report, reportType, metric, value, extra = {}) {
|
|
1468
|
+
report(reportType, {
|
|
1469
|
+
pagePath: getPagePath(),
|
|
1470
|
+
metric,
|
|
1471
|
+
value,
|
|
1472
|
+
...extra,
|
|
1473
|
+
});
|
|
1474
|
+
}
|
|
1472
1475
|
function installBrowserPerformanceMonitor(report, options) {
|
|
1473
1476
|
if (typeof window === 'undefined')
|
|
1474
1477
|
return;
|
|
@@ -1477,100 +1480,145 @@ function installBrowserPerformanceMonitor(report, options) {
|
|
|
1477
1480
|
return;
|
|
1478
1481
|
w.__beLinkClsLoggerPerfInstalled__ = true;
|
|
1479
1482
|
const ignoreUrls = [...DEFAULT_IGNORE, ...(options.ignoreUrls ?? [])];
|
|
1480
|
-
//
|
|
1481
|
-
|
|
1482
|
-
// - LCP 在用户交互后停止观察
|
|
1483
|
-
// - firstHiddenTime 过滤(页面隐藏后的数据不计入)
|
|
1484
|
-
// - CLS 5秒会话窗口算法
|
|
1485
|
-
// - BFCache 恢复时自动重置指标
|
|
1486
|
-
if (options.webVitals) {
|
|
1487
|
-
// FCP
|
|
1483
|
+
// Navigation timing: TTFB 等
|
|
1484
|
+
if (options.navigationTiming) {
|
|
1488
1485
|
try {
|
|
1489
|
-
|
|
1490
|
-
|
|
1491
|
-
|
|
1492
|
-
|
|
1493
|
-
|
|
1494
|
-
|
|
1495
|
-
|
|
1496
|
-
|
|
1497
|
-
|
|
1498
|
-
});
|
|
1499
|
-
});
|
|
1486
|
+
const navEntries = performance.getEntriesByType?.('navigation');
|
|
1487
|
+
const nav = Array.isArray(navEntries) ? navEntries[0] : undefined;
|
|
1488
|
+
if (nav && typeof nav === 'object') {
|
|
1489
|
+
const ttfb = typeof nav.responseStart === 'number' && typeof nav.requestStart === 'number'
|
|
1490
|
+
? nav.responseStart - nav.requestStart
|
|
1491
|
+
: -1;
|
|
1492
|
+
if (ttfb >= 0 && sampleHit(options.sampleRate))
|
|
1493
|
+
reportMetric(report, options.reportType, 'TTFB', ttfb, { unit: 'ms' });
|
|
1494
|
+
}
|
|
1500
1495
|
}
|
|
1501
1496
|
catch {
|
|
1502
1497
|
// ignore
|
|
1503
1498
|
}
|
|
1504
|
-
|
|
1499
|
+
}
|
|
1500
|
+
// Web Vitals: FCP/LCP/CLS/FID
|
|
1501
|
+
if (options.webVitals && typeof globalThis.PerformanceObserver === 'function') {
|
|
1502
|
+
// FCP
|
|
1505
1503
|
try {
|
|
1506
|
-
|
|
1507
|
-
|
|
1508
|
-
|
|
1509
|
-
|
|
1510
|
-
|
|
1511
|
-
|
|
1512
|
-
|
|
1513
|
-
|
|
1514
|
-
|
|
1515
|
-
}
|
|
1504
|
+
const po = new PerformanceObserver((list) => {
|
|
1505
|
+
try {
|
|
1506
|
+
if (!sampleHit(options.sampleRate))
|
|
1507
|
+
return;
|
|
1508
|
+
for (const entry of list.getEntries()) {
|
|
1509
|
+
if (entry?.name === 'first-contentful-paint' && typeof entry.startTime === 'number') {
|
|
1510
|
+
reportMetric(report, options.reportType, 'FCP', entry.startTime, { unit: 'ms' });
|
|
1511
|
+
}
|
|
1512
|
+
}
|
|
1513
|
+
}
|
|
1514
|
+
catch {
|
|
1515
|
+
// ignore
|
|
1516
|
+
}
|
|
1516
1517
|
});
|
|
1518
|
+
po.observe({ type: 'paint', buffered: true });
|
|
1517
1519
|
}
|
|
1518
1520
|
catch {
|
|
1519
1521
|
// ignore
|
|
1520
1522
|
}
|
|
1521
|
-
//
|
|
1523
|
+
// LCP(最后一次为准)
|
|
1524
|
+
let lastLcp = null;
|
|
1522
1525
|
try {
|
|
1523
|
-
|
|
1524
|
-
|
|
1525
|
-
|
|
1526
|
-
|
|
1527
|
-
|
|
1528
|
-
|
|
1529
|
-
|
|
1530
|
-
|
|
1531
|
-
|
|
1532
|
-
});
|
|
1526
|
+
const po = new PerformanceObserver((list) => {
|
|
1527
|
+
try {
|
|
1528
|
+
const entries = list.getEntries();
|
|
1529
|
+
if (entries && entries.length)
|
|
1530
|
+
lastLcp = entries[entries.length - 1];
|
|
1531
|
+
}
|
|
1532
|
+
catch {
|
|
1533
|
+
// ignore
|
|
1534
|
+
}
|
|
1533
1535
|
});
|
|
1536
|
+
po.observe({ type: 'largest-contentful-paint', buffered: true });
|
|
1537
|
+
const flushLcp = () => {
|
|
1538
|
+
try {
|
|
1539
|
+
if (!lastLcp)
|
|
1540
|
+
return;
|
|
1541
|
+
if (!sampleHit(options.sampleRate))
|
|
1542
|
+
return;
|
|
1543
|
+
if (typeof lastLcp.startTime === 'number')
|
|
1544
|
+
reportMetric(report, options.reportType, 'LCP', lastLcp.startTime, { unit: 'ms' });
|
|
1545
|
+
lastLcp = null;
|
|
1546
|
+
}
|
|
1547
|
+
catch {
|
|
1548
|
+
// ignore
|
|
1549
|
+
}
|
|
1550
|
+
};
|
|
1551
|
+
window.addEventListener('pagehide', flushLcp, { once: true });
|
|
1552
|
+
document.addEventListener('visibilitychange', () => {
|
|
1553
|
+
if (document.visibilityState === 'hidden')
|
|
1554
|
+
flushLcp();
|
|
1555
|
+
}, { once: true });
|
|
1534
1556
|
}
|
|
1535
1557
|
catch {
|
|
1536
1558
|
// ignore
|
|
1537
1559
|
}
|
|
1538
|
-
//
|
|
1560
|
+
// CLS
|
|
1539
1561
|
try {
|
|
1540
|
-
|
|
1541
|
-
|
|
1542
|
-
|
|
1543
|
-
|
|
1544
|
-
|
|
1545
|
-
|
|
1546
|
-
|
|
1547
|
-
|
|
1548
|
-
|
|
1549
|
-
}
|
|
1562
|
+
let clsValue = 0;
|
|
1563
|
+
const po = new PerformanceObserver((list) => {
|
|
1564
|
+
try {
|
|
1565
|
+
for (const entry of list.getEntries()) {
|
|
1566
|
+
if (entry && entry.hadRecentInput)
|
|
1567
|
+
continue;
|
|
1568
|
+
if (typeof entry.value === 'number')
|
|
1569
|
+
clsValue += entry.value;
|
|
1570
|
+
}
|
|
1571
|
+
}
|
|
1572
|
+
catch {
|
|
1573
|
+
// ignore
|
|
1574
|
+
}
|
|
1550
1575
|
});
|
|
1576
|
+
po.observe({ type: 'layout-shift', buffered: true });
|
|
1577
|
+
const flushCls = () => {
|
|
1578
|
+
try {
|
|
1579
|
+
if (!sampleHit(options.sampleRate))
|
|
1580
|
+
return;
|
|
1581
|
+
reportMetric(report, options.reportType, 'CLS', clsValue, { unit: 'score' });
|
|
1582
|
+
}
|
|
1583
|
+
catch {
|
|
1584
|
+
// ignore
|
|
1585
|
+
}
|
|
1586
|
+
};
|
|
1587
|
+
window.addEventListener('pagehide', flushCls, { once: true });
|
|
1588
|
+
document.addEventListener('visibilitychange', () => {
|
|
1589
|
+
if (document.visibilityState === 'hidden')
|
|
1590
|
+
flushCls();
|
|
1591
|
+
}, { once: true });
|
|
1551
1592
|
}
|
|
1552
1593
|
catch {
|
|
1553
1594
|
// ignore
|
|
1554
1595
|
}
|
|
1555
|
-
//
|
|
1596
|
+
// FID
|
|
1556
1597
|
try {
|
|
1557
|
-
|
|
1558
|
-
|
|
1559
|
-
|
|
1560
|
-
|
|
1561
|
-
|
|
1562
|
-
|
|
1563
|
-
|
|
1564
|
-
|
|
1565
|
-
|
|
1566
|
-
|
|
1598
|
+
const po = new PerformanceObserver((list) => {
|
|
1599
|
+
try {
|
|
1600
|
+
if (!sampleHit(options.sampleRate))
|
|
1601
|
+
return;
|
|
1602
|
+
for (const entry of list.getEntries()) {
|
|
1603
|
+
const startTime = typeof entry.startTime === 'number' ? entry.startTime : -1;
|
|
1604
|
+
const processingStart = typeof entry.processingStart === 'number' ? entry.processingStart : -1;
|
|
1605
|
+
if (startTime >= 0 && processingStart >= 0) {
|
|
1606
|
+
reportMetric(report, options.reportType, 'FID', processingStart - startTime, { unit: 'ms' });
|
|
1607
|
+
break;
|
|
1608
|
+
}
|
|
1609
|
+
}
|
|
1610
|
+
}
|
|
1611
|
+
catch {
|
|
1612
|
+
// ignore
|
|
1613
|
+
}
|
|
1567
1614
|
});
|
|
1615
|
+
po.observe({ type: 'first-input', buffered: true });
|
|
1568
1616
|
}
|
|
1569
1617
|
catch {
|
|
1570
1618
|
// ignore
|
|
1571
1619
|
}
|
|
1572
1620
|
}
|
|
1573
|
-
// Resource timing
|
|
1621
|
+
// Resource timing:资源加载耗时
|
|
1574
1622
|
if (options.resourceTiming && typeof globalThis.PerformanceObserver === 'function') {
|
|
1575
1623
|
try {
|
|
1576
1624
|
const po = new PerformanceObserver((list) => {
|
|
@@ -1655,6 +1703,7 @@ function installWebPerformanceMonitor(report, opts = {}) {
|
|
|
1655
1703
|
sampleRate: raw.sampleRate ?? 1,
|
|
1656
1704
|
ignoreUrls: raw.ignoreUrls ?? [],
|
|
1657
1705
|
webVitals: raw.webVitals ?? true,
|
|
1706
|
+
navigationTiming: raw.navigationTiming ?? true,
|
|
1658
1707
|
resourceTiming: raw.resourceTiming ?? true,
|
|
1659
1708
|
maxTextLength: raw.maxTextLength ?? 2000,
|
|
1660
1709
|
};
|