1.0.10 • Published 1 year ago

bonree-agent-utils v1.0.10

Weekly downloads
-
License
MIT
Repository
-
Last release
1 year ago

@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_FNfunction () {}无任何操作的函数

用法:

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方法添加兼容逻辑