@agent/utils
浏览服务环境探针项目工具类,基础依赖。
常量
导出变量 | 值 | 说明 |
---|---|---|
navigationStart | 'navigationStart' | 导航开始指标名 |
startTime | 'startTime' | 开始时间指标名 |
unloadEventStart | 'unloadEventStart' | unload开始指标名 |
unloadEventEnd | 'unloadEventEnd' | unload结束指标名 |
redirectStart | 'redirectStart' | redirect开始指标名 |
redirectEnd | 'redirectEnd' | redirect结束指标名 |
fetchStart | 'fetchStart' | 开始抓取指标名 |
domainLookupStart | 'domainLookupStart' | dns开始指标名 |
domainLookupEnd | 'domainLookupEnd' | dns结束指标名 |
connectStart | 'connectStart' | connect开始指标名 |
connectEnd | 'connectEnd' | connect结束指标名 |
secureConnectionStart | 'secureConnectionStart' | SSL开始指标名 |
requestStart | 'requestStart' | request开始指标名 |
responseStart | 'responseStart' | response开始指标名 |
responseEnd | 'responseEnd' | response结束指标名 |
domLoading | 'domLoading' | dom开始处理中指标名 |
domInteractive | 'domInteractive' | dom可交互指标名 |
domContentLoadedEventStart | 'domContentLoadedEventStart' | dom就绪开始指标名 |
domContentLoadedEventEnd | 'domContentLoadedEventEnd' | dom就绪结束指标名 |
domComplete | 'domComplete' | dom完成指标名 |
loadEventStart | 'loadEventStart' | load开始指标名 |
loadEventEnd | 'loadEventEnd' | load结束指标名 |
redirectCount | 'redirectCount' | redirect次数指标名 |
duration | 'duration' | 耗时指标名 |
workerStart | 'workerStart' | worker启动指标名 |
nextHopProtocol | 'nextHopProtocol' | 协议指标名 |
transferSize | 'transferSize' | 传输大小指标名 |
encodedBodySize | 'encodedBodySize' | 编码大小指标名 |
decodedBodySize | 'decodedBodySize' | 解码大小指标名 |
uploadBodySize | 'uploadBodySize' | 请求消息体指标名 |
requestHeader | 'requestHeader' | 请求头指标名 |
responseHeader | 'responseHeader' | 响应头指标名 |
callbackStart | 'callbackStart' | callback开始指标名 |
callbackEnd | 'callbackEnd' | callback结束指标名 |
userTime | 'userTime' | 会话时间指标名 |
timestamp | 'timestamp' | 时间戳指标名 |
initiatorType | 'initiatorType' | 资源类型指标名 |
xmlhttprequest | 'xmlhttprequest' | 类型:xhr |
fetch | 'fetch' | 类型:fetch |
PAGE_DATA | 'data/page' | 基础文档数据广播事件名 |
PAGE_READY | 'page/ready' | 页面ready广播事件名 |
PAGE_LOAD | 'page/load' | 页面完全加载广播事件名 |
PAGE_INVISIBLE | 'page/invisible' | 页面转入后台广播事件名 |
PAGE_VISIBLE | 'page/visible' | 页面转入前台广播事件名 |
RESOURCE_DATA | 'data/resource' | 资源数据广播事件名 |
RESOURCE_DUMP | 'resource/dump' | 资源数据转储广播事件名 |
FLUSH_DATA | 'data/flush' | 缓存flush广播事件名 |
ERROR_DATA | 'data/error' | 错误数据广播事件名 |
REQUEST_INIT | 'request/init' | 请求初始化广播事件名 |
REQUEST_DATA | 'data/request' | 请求数据广播事件名 |
ROUTE_DATA | 'data/route' | 路由数据广播事件名 |
LOG_DATA | 'data/log' | 用户记录日志广播事件名 |
METRIC_DATA | 'data/metric' | 用户记录指标广播事件名 |
SESSION_DATA | 'data/event' | 用户事件广播事件名 |
SESSION_CHANGE | 'session/change' | 会话切换广播事件名 |
USER_SET | 'user/set' | 设置用户广播事件名 |
NIL_FN | function () {} | 无任何操作的函数 |
用法:
import { navigationStart } from '@agent/utils'
console.log(navigationStart)
// expect
'navigationStart'
函数
isReadable
-
参数:
string str
检测字符串 -
返回值
boolean
-
用法:
判断字符串是否可读
// true isReadable('ok') // false isReadable('') // false isReadable()
isEmpty
-
参数:
any collection
检测对象 -
返回值
boolean
-
用法:
判断对象是否为空
// false isEmpty('not null') // true isEmpty([]) // true isEmpty({}) // true isEmpty('') // true isEmpty()
forEach
-
参数:
any[] dataset
集合function handler
处理函数 -
用法:
遍历数据集合
forEach([1, 2, 3], function (item, index) { console.log(item) }) // 1 // 2 // 3
first && last
-
参数:
any[] dataset
集合 -
返回值
any
数组第一个/最后一个元素 -
用法:
返回数组第一个/最后一个元素
// 1 const firstEgg = first([1, 2, 3]) // 3 const lastEgg = first([1, 2, 3])
extend
-
参数:
object dest
目标对象object src
合并对象 -
返回值
object
合并后的对象 -
用法:
合并对象
const origin = { a: 1 } const merged = extend(origin, { b: 2 }) // merged: { a: 1, b: 2 } // merged === origin
map
-
参数:
any[] dataset
数据集合function handler
处理函数 -
返回值
any[]
处理后的集合 -
用法:
同Array.prototype.map
const origin = [{ a: 1 }, { a: 2 }] const mapped = map(origin, function (item) { return item.a }) // mapped: [1, 2]
filter
-
参数:
any[] dataset
数据集合function handler
处理函数 -
返回值
any[]
处理后的集合 -
用法:
同Array.prototype.filter
const origin = [1, 2, 3] const filtered = filter(origin, function (item) { return item % 2 === 0 }) // filtered: [2]
getCookie
-
参数:
string key
cookie名 -
返回值
string
cookie值 -
用法:
获取cookie值
const guid = getCookie('br-resp-key')
setCookie
-
参数:
string key
cookie名any value
cookie值object cfg
设置项 -
用法:
设置cookie
setCookie('br-resp-key', 'd802-f2sdf', { path: '/home', domain: 'bonree.com', expires: new Date() })
removeCookie
-
参数:
string key
cookie名object cfg
设置项 -
用法:
删除cookie
removeCookie('br-resp-key', { path: '/home', domain: 'bonree.com' })
once
-
参数:
function fn
执行函数 -
返回值
function
处理后的函数 -
用法:
封装函数,确保函数最多运行一次
const write = once(function (content) { console.log(content) }) write(1) write(2) // 1
delay
-
参数:
function fn
执行函数number timeout
延迟时间,可缺省 -
返回值
number
delay timer,可调用clearTimeout
清除 -
用法:
延迟执行函数,
setTimeout
封装delay(function () { console.log(1) }, 1000) // print '1' after 1 second
bind
-
参数:
function fn
执行函数object ctx
绑定运行上下文 -
返回值
function
封装的函数 -
用法:
绑定函数运行上下文
const lemon = { name: 'jasper' } function sayName () { console.log(this.name) } const sayLemonName = bind(sayName, lemon) sayLemonName() // 'jasper'
hack
-
参数:
function fn
目标函数function before
目标函数执行前执行动作function after
目标函数执行后执行动作function errorHandler
目标函数执行错误处理函数 -
返回值
function
封装的函数 -
用法:
切入函数,在函数不同执行阶段进行特定操作,一般用于hack系统函数获取数据
function sayName (name) { console.log(name) } const hacked = hack(sayName, function (name) { console.log(`${name} came in ...`) }, function (name) { console.log('bye') }) hacked('jasper') // 'jasper came in ...' // 'jasper' // 'bye'
log
-
参数:
string | number code
业务码,可缺省string message
日志内容 -
用法:
记录日志
log(200, 'operation done.') // '200: operation done.'
configLogger
-
参数:
function logger
自定义日志实现,默认为console.log
-
用法:
配置日志实现
configLogger(console.error)
trim
-
参数:
string str
目标字符串 -
返回值
string
截取后的字符串 -
用法:
截取字符前后无意义字符
const quark = ' quark, quark ' console.log(trim(quark)) // 'quark, quark'
startWith && endWith
-
参数:
string str
目标字符串string match
匹配字符串 -
返回值
boolean
-
用法:
检测字符串是否以特定模式开头/结尾
// false startWith('welcome to miscity', 'well') // true endWith('welcome to miscity', 'city')
withLength
-
参数:
string str
目标字符串number len
最大长度 -
返回值
string
处理后的字符串 -
用法:
截取字符串
// 'welcome to miscity' withLength('welcome to miscity', 20) // 'welcome...' withLength('welcome to miscity', 10)
toUpper && toLower
-
参数:
string str
目标字符串 -
返回值
string
处理后的字符串 -
用法:
字符串转大写/小写
// 'WELCOME' toUpper('Welcome') // 'welcome' toLower('Welcome')
stringify
-
参数:
any dataset
目标对象 -
返回值
string
序列化json字符串 -
用法:
json序列化
// 'Welcome' stringify('Welcome') // 1 stringify(1) // '{"a":1}' stringify({ a: 1 }) // '[1,2]' toLower([1, 2])
now
-
返回值
number
时间戳 -
用法:
获取时间戳
console.log(now()) // 1598000352272
tillNow
-
返回值
number
页面导航开始到现在的时间毫秒数 -
用法:
获取相对于页面导航开始的偏移时间
console.log(tillNow()) // 319
nowtime
-
返回值
object
返回页面导航开始到现在的时间毫秒数及时间戳 -
用法:
获取相对于页面导航开始的偏移时间及时间戳
console.log(nowtime()) // { startTime: 319, timestamp: 1598000352272 }
isDefined
-
参数:
any dataset
目标对象 -
返回值
boolean
-
用法:
检测对象是否是已定义
// false isDefined(null) // false isDefined() // true isDefined({ a: 1 })
isFunction
-
参数:
any dataset
目标对象 -
返回值
boolean
-
用法:
检测对象是否是函数
// false isFunction('Welcome') // false isFunction(['Welcome']) // false isFunction({ a: 1 }) // true isFunction(NIL_FN)
isString
-
参数:
any dataset
目标对象 -
返回值
boolean
-
用法:
检测对象是否是字符串
// true isString('Welcome') // false isString(['Welcome']) // false isString({ a: 1 })
isArray
-
参数:
any dataset
目标对象 -
返回值
boolean
-
用法:
检测对象是否是数组
// false isArray('Welcome') // true isArray(['Welcome']) // false isArray({ a: 1 })
uuid
-
返回值
string
UUID -
用法:
生成UUID
const guid = uuid() // 'd22168fc-b965-45ad-bd6a-78ba30091a37'
变更记录
20220720
添加isEqual函数来实现两个对象的深度对比是否相同
20221017
修改logger方法,修复在谷歌43版中,客户调用setUser()报Illegal invocation问题
20230210
utils库 版本号:1.0.12 修改内容: 1.修改hack方法,解决browser探针在vue2框架中错误无法抛出,无jsError数据上报问题; 2.解决withLength中调用substr方法报错问题
20230328
版本号:1.0.13 修改内容:withlength方法添加兼容逻辑