bonree-agent-utils

1.0.10 • Public • Published

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

Readme

Keywords

none

Package Sidebar

Install

npm i bonree-agent-utils

Weekly Downloads

1

Version

1.0.10

License

MIT

Unpacked Size

290 kB

Total Files

24

Last publish

Collaborators

  • bonreejsagent